package Rewire::Ruleset;
{
"\$id" => "https://raw.githubusercontent.com/cpanery/rewire/master/ruleset.yaml",
"\$schema" => "https://json-schema.org/draft/2019-09/schema",
definitions => {
Argument => {
anyOf => [
{
"\$ref" => "#/definitions/ArgumentNumber",
},
{
"\$ref" => "#/definitions/ArgumentString",
},
{
"\$ref" => "#/definitions/ArgumentObject",
},
{
"\$ref" => "#/definitions/ArgumentArray",
},
{
"\$ref" => "#/definitions/ArgumentBoolean",
},
{
"\$ref" => "#/definitions/ArgumentNull",
},
],
},
ArgumentArray => {
items => {
"\$ref" => "#/definitions/Argument",
},
minItems => 1,
type => "array",
},
ArgumentAs => {
enum => [
"array",
"hashmap",
"list",
],
},
ArgumentBoolean => {
type => "boolean",
},
ArgumentNull => {
type => undef,
},
ArgumentNumber => {
minLength => 1,
type => "number",
},
ArgumentObject => {
additionalProperties => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ),
minProperties => 1,
patternProperties => {
"^\\\$[A-Za-z_][A-Za-z0-9_]*\$" => {
"\$ref" => "#/definitions/Argument",
},
},
type => "object",
},
ArgumentString => {
minLength => 1,
type => "string",
},
Service => {
additionalProperties => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ),
minProperties => 1,
not => {
anyOf => [
{
required => [
"function",
"method",
],
},
{
required => [
"function",
"routine",
],
},
{
required => [
"method",
"routine",
],
},
],
},
properties => {
argument => {
"\$ref" => "#/definitions/Argument",
},
argument_as => {
"\$ref" => "#/definitions/ArgumentAs",
},
builder => {
items => {
additionalProperties => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ),
anyOf => [
{
required => [
"function",
],
},
{
required => [
"method",
],
},
{
required => [
"routine",
],
},
],
minProperties => 1,
properties => {
argument => {
"\$ref" => "#/definitions/Argument",
},
argument_as => {
"\$ref" => "#/definitions/ArgumentAs",
},
function => {
type => "string",
},
method => {
type => "string",
},
return => {
enum => [
"class",
"none",
"result",
"self",
],
},
routine => {
type => "string",
},
},
required => [
"return",
],
type => "object",
},
minItems => 1,
type => "array",
},
constructor => {
type => "string",
},
extends => {
type => "string",
},
function => {
type => "string",
},
lifecycle => {
enum => [
"eager",
"factory",
"singleton",
],
},
method => {
type => "string",
},
package => {
type => "string",
},
routine => {
type => "string",
},
},
required => [
"package",
],
type => "object",
},
},
properties => {
metadata => {
patternProperties => {
"^[A-Za-z_][A-Za-z0-9_]*\$" => {
"\$ref" => "#/definitions/Argument",
},
},
type => "object",
},
services => {
patternProperties => {
"^[A-Za-z_][A-Za-z0-9_]*\$" => {
"\$ref" => "#/definitions/Service",
},
},
type => "object",
},
},
required => [
"services",
],
type => "object",
}