diff --git a/.github/workflows/codeowners-merge.yml b/.github/workflows/codeowners-merge.yml index f20acebfe3b..eb5c2f9acca 100644 --- a/.github/workflows/codeowners-merge.yml +++ b/.github/workflows/codeowners-merge.yml @@ -12,7 +12,7 @@ jobs: steps: - uses: 'actions/checkout@v4' - name: 'Run Codeowners check' - uses: 'OSS-Docs-Tools/code-owner-self-merge@d085674edba4207f478ff08ff91c7ecf9cbaf767' + uses: 'fox-forks/code-owner-self-merge@hyperupcall-hyperupcall-review-comments-errors' env: GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}' with: diff --git a/src/api/json/catalog.json b/src/api/json/catalog.json index ead74115510..66a930074a7 100644 --- a/src/api/json/catalog.json +++ b/src/api/json/catalog.json @@ -234,6 +234,18 @@ "fileMatch": ["appsettings.StormPetrel.json"], "url": "https://raw.githubusercontent.com/Scandltd/storm-petrel/main/generator/assets/appsettings.StormPetrel.Schema.json" }, + { + "name": "aqua.yaml", + "description": "aqua configuration file", + "fileMatch": [".aqua.yaml", ".aqua.yml", "aqua.yaml", "aqua.yml"], + "url": "https://raw.githubusercontent.com/aquaproj/aqua/main/json-schema/aqua-yaml.json" + }, + { + "name": "aqua-policy.yaml", + "description": "aqua policy configuration file", + "fileMatch": [".aqua-policy.yaml", "aqua-policy.yaml"], + "url": "https://raw.githubusercontent.com/aquaproj/aqua/main/json-schema/policy.json" + }, { "name": "arb.json", "description": "Application Resource Bundle", @@ -307,10 +319,11 @@ "name": "Aurora Agile Meta-Framework", "description": "Yaml for Aurora Agile Meta-Framework", "fileMatch": ["*.aurora.yaml", "*.aurora.yml"], - "url": "https://json.schemastore.org/aurora-1.1.json", + "url": "https://json.schemastore.org/aurora-1.2.json", "versions": { "1.0": "https://json.schemastore.org/aurora-1.0.json", - "1.1": "https://json.schemastore.org/aurora-1.1.json" + "1.1": "https://json.schemastore.org/aurora-1.1.json", + "1.2": "https://json.schemastore.org/aurora-1.2.json" } }, { @@ -1634,6 +1647,12 @@ "fileMatch": ["coffeelint.json"], "url": "https://json.schemastore.org/coffeelint.json" }, + { + "name": "committed.toml", + "description": "committed configuration file", + "fileMatch": ["committed.toml"], + "url": "https://raw.githubusercontent.com/crate-ci/committed/master/config.schema.json" + }, { "name": "composer.json", "description": "PHP Composer configuration file", @@ -4594,6 +4613,18 @@ ], "url": "https://json.schemastore.org/rehyperc.json" }, + { + "name": "release-please-config.json", + "description": "Release Please manifest configuration file", + "fileMatch": ["release-please-config.json"], + "url": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json" + }, + { + "name": "release-please-manifest.json", + "description": "Release Please manifest versions file", + "fileMatch": [".release-please-manifest.json"], + "url": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/manifest.json" + }, { "name": "release-plz.toml", "description": "Release-plz configuration file", @@ -5463,6 +5494,12 @@ "fileMatch": ["**/sites/*/config.yaml", "**/sites/*/config.yml"], "url": "https://json.schemastore.org/typo3.json" }, + { + "name": "typos.toml", + "description": "typos configuration file", + "fileMatch": ["typos.toml", "_typos.toml", ".typos.toml"], + "url": "https://raw.githubusercontent.com/crate-ci/typos/master/config.schema.json" + }, { "name": "typings.json", "description": "Typings TypeScript definitions manager definition file", diff --git a/src/schema-validation.jsonc b/src/schema-validation.jsonc index 606f62cd94d..444001e413c 100644 --- a/src/schema-validation.jsonc +++ b/src/schema-validation.jsonc @@ -9,6 +9,7 @@ "asmdef.json", "aurora-1.0.json", "aurora-1.1.json", + "aurora-1.2.json", "azure-deviceupdate-update-manifest-4.json", "azure-deviceupdate-update-manifest-5.json", "azure-deviceupdate-import-manifest-4.0.json", diff --git a/src/schemas/json/aurora-1.2.json b/src/schemas/json/aurora-1.2.json new file mode 100644 index 00000000000..845a9747e31 --- /dev/null +++ b/src/schemas/json/aurora-1.2.json @@ -0,0 +1,474 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://json.schemastore.org/aurora-1.1.json", + "$comment": "https://docs.aurorajs.dev/", + "additionalProperties": false, + "definitions": { + "property": { + "type": "object", + "required": ["name", "type"], + "additionalProperties": false, + "properties": { + "name": { + "type": "string", + "description": "The name of property, in camelCase", + "minLength": 2 + }, + "type": { + "type": "string", + "description": "The type of property", + "enum": [ + "array", + "bigint", + "blob.long", + "blob.medium", + "blob.tiny", + "blob", + "boolean", + "char", + "date", + "decimal", + "enum", + "float", + "id", + "int", + "json", + "jsonb", + "manyToMany", + "password", + "relationship", + "smallint", + "text", + "timestamp", + "varchar" + ] + }, + "arrayOptions": { + "type": "object", + "description": "Options to define array property", + "required": ["type"], + "properties": { + "type": { + "type": "string", + "description": "The type of property", + "enum": [ + "char", + "date", + "decimal", + "enum", + "id", + "int", + "timestamp", + "varchar" + ] + }, + "length": { + "type": "number", + "description": "Set max length to property", + "minimum": 1 + }, + "maxLength": { + "type": "number", + "description": "Set max length to property", + "minimum": 1 + }, + "enumOptions": { + "type": "array", + "description": "Values for enum type", + "items": { + "type": "string", + "minLength": 1 + } + } + } + }, + "length": { + "type": "number", + "description": "Set max length to property", + "minimum": 1 + }, + "maxLength": { + "type": "number", + "description": "Set max length to property", + "minimum": 1 + }, + "nullable": { + "type": "boolean", + "description": "Set property to nullable" + }, + "unsigned": { + "type": "boolean", + "description": "Set property like unsigned" + }, + "primaryKey": { + "type": "boolean", + "description": "Set property to primary key" + }, + "index": { + "type": "string", + "description": "To define property like a index", + "enum": ["index", "unique"] + }, + "indexFields": { + "type": "array", + "description": "Fields to do composite unique index", + "items": { + "type": "string", + "minLength": 1 + } + }, + "indexName": { + "type": "string", + "description": "The name of index, if there are various indexes with the same name, they will be grouped", + "minLength": 2 + }, + "isI18n": { + "type": "boolean", + "description": "Set property as i18n, this property will be used to translate the entity in the translation table" + }, + "enumOptions": { + "type": "array", + "description": "Values for enum type", + "items": { + "type": "string", + "minLength": 1 + } + }, + "defaultValue": { + "oneOf": [ + { "type": "string" }, + { "type": "number" }, + { "type": "boolean" } + ], + "description": "Default value for property" + }, + "example": { + "type": ["number", "string", "boolean", "array"], + "description": "Example value for property, this value will be used in swagger documentation" + }, + "decimals": { + "type": "array", + "description": "Total digits of the number and length of the decimal places in the back of the number, example: [10, 2].", + "items": { + "type": "number", + "minimum": 1 + } + }, + "autoIncrement": { + "type": "boolean", + "description": "Set number property as auto increment" + }, + "relationship": { + "$ref": "#/definitions/relationship" + }, + "webComponent": { + "$ref": "#/definitions/webComponent" + } + } + }, + "apiDefinition": { + "type": "object", + "required": ["path", "resolverType", "httpMethod"], + "properties": { + "path": { + "type": "string", + "description": "Path to access api", + "minLength": 2 + }, + "resolverType": { + "type": "string", + "description": "Type of resolver, query or mutation", + "enum": ["query", "mutation"] + }, + "httpMethod": { + "type": "string", + "description": "Verb of api rest", + "enum": ["get", "post", "put", "delete", "patch"] + } + } + }, + "relationship": { + "type": "object", + "additionalProperties": false, + "description": "Relationship definition for this property", + "properties": { + "type": { + "type": "string", + "description": "The type of web component", + "enum": [ + "many-to-many", + "many-to-one", + "none", + "one-to-many", + "one-to-one" + ] + }, + "singularName": { + "type": "string", + "description": "Singular name of the property referred to in the relationship, only for one-to-many and many-to-many relationship, example: book", + "minLength": 2 + }, + "aggregateName": { + "type": "string", + "description": "Aggregate referring to this relationship, example: LibraryAuthor", + "minLength": 2 + }, + "modulePath": { + "type": "string", + "description": "Path to the module that refers to this relationship, example: library/author", + "minLength": 2 + }, + "key": { + "type": "string", + "description": "Property key that refers to this relationship, only for many-to-one relationship, example: id", + "minLength": 2 + }, + "field": { + "type": "string", + "description": "Field to obtain the relationship data, example: author", + "minLength": 2 + }, + "avoidConstraint": { + "type": "boolean", + "description": "Avoid constraint rules for this relationship" + }, + "packageName": { + "type": "string", + "description": "Path to packageName where is the relationship, example: @aurora-ts/core", + "minLength": 2 + }, + "isDenormalized": { + "type": "boolean", + "description": "Set many-to-many relationship as denormalized, creating a field to store the selected ids" + }, + "pivot": { + "$ref": "#/definitions/pivotTable" + } + } + }, + "webComponent": { + "type": "object", + "additionalProperties": false, + "description": "Web Component that wil be rendered for this property", + "properties": { + "type": { + "type": "string", + "description": "The type of web component", + "enum": [ + "async-search-multiple-select", + "async-search-select", + "grid-elements-manager", + "grid-select-element", + "grid-select-multiple-elements", + "multiple-select", + "search-multiple-select", + "search-select", + "select" + ] + }, + "className": { + "type": "string", + "description": "CSS class for web component", + "minLength": 2 + }, + "detailSort": { + "type": "number", + "description": "Web component order on detail view", + "minimum": 1 + }, + "listSort": { + "type": "number", + "description": "Web component order on list view", + "minimum": 1 + }, + "isListHidden": { + "type": "boolean", + "description": "Set hidden web component on list view" + }, + "isDetailHidden": { + "type": "boolean", + "description": "Set hidden web component on detail view" + } + } + }, + "excludedOperationValues": { + "type": "array", + "items": { + "enum": [ + "count", + "create", + "createBatch", + "deleteById", + "delete", + "findById", + "find", + "get", + "max", + "min", + "paginate", + "rawSql", + "sum", + "updateAndIncrement", + "updateById", + "update", + "upsert" + ] + } + }, + "front": { + "type": "object", + "additionalProperties": false, + "description": "Appearance properties for front application", + "properties": { + "outlineFontSetIcon": { + "type": "string", + "description": "Font set outline icon to be used in the front application, example: material-symbols-outlined", + "minLength": 2 + }, + "outlineIcon": { + "type": "string", + "description": "Outline icon to be used in the front application, example: heroicons_solid:tag", + "minLength": 2 + }, + "solidFontSetIcon": { + "type": "string", + "description": "Font set solid icon to be used in the front application, example: material-symbols-outlined", + "minLength": 2 + }, + "solidIcon": { + "type": "string", + "description": "Solid icon to be used in the front application, example: heroicons_solid:tag", + "minLength": 2 + } + } + }, + "pivotTable": { + "type": "object", + "additionalProperties": false, + "description": "Relationship pivot table definition for this relationship", + "properties": { + "boundedContextName": { + "type": "string", + "description": "The name of the package, singular in kebab-case", + "minLength": 2 + }, + "moduleName": { + "type": "string", + "description": "The name of the module, singular in kebab-case", + "minLength": 2 + }, + "moduleNames": { + "type": "string", + "description": "The name of the module, plural in kebab-case", + "minLength": 2 + }, + "aggregateName": { + "type": "string", + "description": "The name of the aggregateName, singular in PascalCase", + "minLength": 2 + }, + "hasOAuth": { + "type": "boolean", + "description": "Enabled authentication for this pivot table", + "default": false + }, + "hasAuditing": { + "type": "boolean", + "description": "Enabled auditing for pivot table", + "default": false + }, + "aggregateProperties": { + "type": "array", + "items": { + "$ref": "#/definitions/property" + } + }, + "excludedFiles": { + "type": "array", + "items": { + "type": "string" + } + }, + "excludedOperations": { + "$ref": "#/definitions/excludedOperationValues" + } + } + } + }, + "description": "Make agile applications without technical debt", + "properties": { + "version": { + "type": "string", + "description": "Schema version", + "default": "0.0.1", + "minLength": 2 + }, + "boundedContextName": { + "type": "string", + "description": "The name of the package, singular in kebab-case", + "minLength": 2 + }, + "moduleName": { + "type": "string", + "description": "The name of the module, singular in kebab-case", + "minLength": 2 + }, + "moduleNames": { + "type": "string", + "description": "The name of the module, plural in kebab-case", + "minLength": 2 + }, + "aggregateName": { + "type": "string", + "description": "The name of the aggregateName, singular in PascalCase", + "minLength": 2 + }, + "hasOAuth": { + "type": "boolean", + "description": "Enabled authentication for this module", + "default": false + }, + "hasTenant": { + "type": "boolean", + "description": "Enabled tenant for this module", + "default": false + }, + "hasAuditing": { + "type": "boolean", + "description": "Enabled auditing for this module", + "default": false + }, + "front": { + "$ref": "#/definitions/front" + }, + "aggregateProperties": { + "type": "array", + "items": { + "$ref": "#/definitions/property" + } + }, + "additionalApis": { + "type": "array", + "items": { + "$ref": "#/definitions/apiDefinition" + } + }, + "excludedFiles": { + "type": "array", + "items": { + "type": "string" + } + }, + "excludedOperations": { + "$ref": "#/definitions/excludedOperationValues" + } + }, + "required": [ + "boundedContextName", + "moduleName", + "moduleNames", + "aggregateName" + ], + "title": "Aurora Agile Meta Framework", + "type": "object" +} diff --git a/src/test/aurora-1.2/author.aurora.yaml b/src/test/aurora-1.2/author.aurora.yaml new file mode 100644 index 00000000000..4528d6f8bfd --- /dev/null +++ b/src/test/aurora-1.2/author.aurora.yaml @@ -0,0 +1,39 @@ +# yaml-language-server: $schema=../../schemas/json/aurora-1.2.json +version: 0.0.1 +boundedContextName: library +moduleName: author +moduleNames: authors +aggregateName: LibraryAuthor +hasOAuth: true +hasTenant: false +hasAuditing: false +aggregateProperties: + - name: id + type: id + primaryKey: true + length: 36 + nullable: false + - name: name + type: varchar + maxLength: 50 + nullable: false + - name: books + type: relationship + nullable: true + relationship: + type: one-to-many + singularName: book + aggregateName: LibraryBook + modulePath: library/book + webComponent: + type: grid-elements-manager + - name: createdAt + type: timestamp + nullable: true + - name: updatedAt + type: timestamp + nullable: true + - name: deletedAt + type: timestamp + nullable: true +additionalApis: [] diff --git a/src/test/aurora-1.2/book.aurora.yaml b/src/test/aurora-1.2/book.aurora.yaml new file mode 100644 index 00000000000..2f22ba477e9 --- /dev/null +++ b/src/test/aurora-1.2/book.aurora.yaml @@ -0,0 +1,50 @@ +# yaml-language-server: $schema=../../schemas/json/aurora-1.2.json +version: 0.0.1 +boundedContextName: library +moduleName: book +moduleNames: books +aggregateName: LibraryBook +hasOAuth: true +hasTenant: false +hasAuditing: false +aggregateProperties: + - name: id + type: id + primaryKey: true + length: 36 + nullable: false + - name: title + type: varchar + maxLength: 50 + nullable: false + - name: publishedAt + type: date + nullable: false + - name: price + type: int + maxLength: 10 + nullable: false + - name: authorId + type: id + length: 36 + nullable: false + relationship: + type: many-to-one + aggregateName: LibraryAuthor + modulePath: library/author + key: id + field: author + avoidConstraint: true + - name: authorName + type: varchar + maxLength: 50 + nullable: false + - name: createdAt + type: timestamp + nullable: true + - name: updatedAt + type: timestamp + nullable: true + - name: deletedAt + type: timestamp + nullable: true diff --git a/src/test/aurora-1.2/country.aurora.yaml b/src/test/aurora-1.2/country.aurora.yaml new file mode 100644 index 00000000000..9eaf497099d --- /dev/null +++ b/src/test/aurora-1.2/country.aurora.yaml @@ -0,0 +1,166 @@ +# yaml-language-server: $schema=../../schemas/json/aurora-1.2.json +version: 0.0.1 +boundedContextName: common +moduleName: country +moduleNames: countries +aggregateName: CommonCountry +hasOAuth: true +hasTenant: false +hasAuditing: true +front: + solidIcon: mat_solid:flag + outlineIcon: mat_outline:flag +aggregateProperties: + - name: id + type: id + primaryKey: true + length: 36 + nullable: false + - name: iso3166Alpha2 + type: char + length: 2 + nullable: false + index: index + - name: iso3166Alpha3 + type: char + length: 3 + nullable: false + index: index + - name: iso3166Numeric + type: char + length: 3 + nullable: false + index: index + - name: customCode + type: varchar + maxLength: 63 + nullable: true + index: index + - name: prefix + type: varchar + maxLength: 5 + nullable: true + - name: image + type: varchar + maxLength: 1022 + nullable: true + - name: sort + type: smallint + unsigned: true + nullable: true + - name: administrativeAreas + type: json + nullable: true + - name: latitude + type: decimal + decimals: + - 16 + - 14 + nullable: true + - name: longitude + type: decimal + decimals: + - 17 + - 14 + nullable: true + - name: zoom + type: smallint + unsigned: true + nullable: true + - name: mapType + type: enum + enumOptions: + - ROADMAP + - SATELLITE + - HYBRID + - TERRAIN + nullable: true + example: CommonCountryMapType.TERRAIN + - name: availableLangs + type: json + nullable: true + - name: createdAt + type: timestamp + nullable: true + - name: updatedAt + type: timestamp + nullable: true + - name: deletedAt + type: timestamp + nullable: true + - name: id + isI18n: true + type: id + primaryKey: true + length: 36 + nullable: false + - name: countryId + isI18n: true + type: id + length: 36 + nullable: false + relationship: + type: many-to-one + aggregateName: CommonCountry + modulePath: common/country + key: id + field: country + index: unique + indexName: uniqueCountryIdLangId + - name: langId + isI18n: true + type: id + length: 36 + nullable: false + relationship: + type: many-to-one + aggregateName: CommonLang + modulePath: common/lang + key: id + field: lang + avoidConstraint: true + index: unique + indexName: uniqueCountryIdLangId + - name: name + isI18n: true + type: varchar + maxLength: 127 + nullable: false + index: index + - name: slug + isI18n: true + type: varchar + maxLength: 127 + nullable: false + index: index + - name: administrativeAreaLevel1 + isI18n: true + type: varchar + maxLength: 63 + nullable: true + - name: administrativeAreaLevel2 + isI18n: true + type: varchar + maxLength: 63 + nullable: true + - name: administrativeAreaLevel3 + isI18n: true + type: varchar + maxLength: 63 + nullable: true + - name: createdAt + isI18n: true + type: timestamp + nullable: true + - name: updatedAt + isI18n: true + type: timestamp + nullable: true + - name: deletedAt + isI18n: true + type: timestamp + nullable: true +additionalApis: + - path: common/country/administrative-areas + resolverType: query + httpMethod: post diff --git a/src/test/aurora-1.2/lang.aurora.yaml b/src/test/aurora-1.2/lang.aurora.yaml new file mode 100644 index 00000000000..1968dffb3d4 --- /dev/null +++ b/src/test/aurora-1.2/lang.aurora.yaml @@ -0,0 +1,68 @@ +# yaml-language-server: $schema=../../schemas/json/aurora-1.2.json +version: 0.0.1 +boundedContextName: common +moduleName: lang +moduleNames: langs +aggregateName: CommonLang +hasOAuth: true +hasTenant: false +hasAuditing: true +front: + solidIcon: mat_solid:language + outlineIcon: mat_outline:language +aggregateProperties: + - name: id + type: id + primaryKey: true + length: 36 + nullable: false + - name: name + type: varchar + maxLength: 127 + nullable: false + - name: image + type: varchar + maxLength: 1022 + nullable: true + - name: iso6392 + type: char + length: 2 + nullable: false + index: index + - name: iso6393 + type: char + length: 3 + nullable: false + index: index + - name: ietf + type: char + length: 5 + nullable: false + index: index + - name: customCode + type: varchar + maxLength: 63 + nullable: true + index: index + - name: dir + type: enum + enumOptions: + - LTR + - RTL + nullable: false + - name: sort + type: smallint + unsigned: true + nullable: true + - name: isActive + type: boolean + nullable: false + - name: createdAt + type: timestamp + nullable: true + - name: updatedAt + type: timestamp + nullable: true + - name: deletedAt + type: timestamp + nullable: true