@ama-openapi/core 14.0.0-prerelease.9 → 14.0.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +5 -5
- package/src/constants.d.mts +2 -2
- package/src/constants.d.mts.map +1 -1
- package/src/constants.mjs +2 -2
- package/src/constants.mjs.map +1 -1
- package/src/core/file-system/write-model.d.mts +1 -1
- package/src/core/file-system/write-model.d.mts.map +1 -1
- package/src/core/file-system/write-model.mjs.map +1 -1
- package/src/core/serialization.d.mts +2 -2
- package/src/core/serialization.d.mts.map +1 -1
- package/src/core/serialization.mjs.map +1 -1
- package/src/generate-schemas.d.mts.map +1 -1
- package/src/generate-schemas.mjs +4 -2
- package/src/generate-schemas.mjs.map +1 -1
- package/src/schema/configurations/manifest-model-properties.d.mts +7 -0
- package/src/schema/configurations/manifest-model-properties.d.mts.map +1 -0
- package/src/schema/configurations/manifest-model-properties.mjs +28 -0
- package/src/schema/configurations/manifest-model-properties.mjs.map +1 -0
- package/src/schema/configurations/model-definitions.d.mts +43 -0
- package/src/schema/configurations/model-definitions.d.mts.map +1 -0
- package/src/schema/configurations/model-definitions.mjs +51 -0
- package/src/schema/configurations/model-definitions.mjs.map +1 -0
- package/src/schema/configurations/transform-definitions.d.mts +23 -0
- package/src/schema/configurations/transform-definitions.d.mts.map +1 -0
- package/src/schema/configurations/transform-definitions.mjs +36 -0
- package/src/schema/configurations/transform-definitions.mjs.map +1 -0
- package/src/schema/generate-model-name.d.mts +12 -0
- package/src/schema/generate-model-name.d.mts.map +1 -0
- package/src/schema/generate-model-name.mjs +23 -0
- package/src/schema/generate-model-name.mjs.map +1 -0
- package/src/schema/generate-schema.d.mts +42 -31
- package/src/schema/generate-schema.d.mts.map +1 -1
- package/src/schema/generate-schema.mjs +42 -121
- package/src/schema/generate-schema.mjs.map +1 -1
- package/src/schema/list-artifacts.d.mts +20 -9
- package/src/schema/list-artifacts.d.mts.map +1 -1
- package/src/schema/list-artifacts.mjs.map +1 -1
- package/src/schema/mask/dependencies-masks.d.mts +30 -0
- package/src/schema/mask/dependencies-masks.d.mts.map +1 -0
- package/src/schema/mask/dependencies-masks.mjs +41 -0
- package/src/schema/mask/dependencies-masks.mjs.map +1 -0
- package/src/schema/mask/field-schema.constants.d.mts +20 -0
- package/src/schema/mask/field-schema.constants.d.mts.map +1 -0
- package/src/schema/mask/field-schema.constants.mjs +15 -0
- package/src/schema/mask/field-schema.constants.mjs.map +1 -0
- package/src/schema/mask/generate-mask-from-model.d.mts +27 -0
- package/src/schema/mask/generate-mask-from-model.d.mts.map +1 -0
- package/src/schema/mask/generate-mask-from-model.mjs +122 -0
- package/src/schema/mask/generate-mask-from-model.mjs.map +1 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ama-openapi/core",
|
|
3
|
-
"version": "14.0.0-
|
|
3
|
+
"version": "14.0.0-rc.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -63,10 +63,10 @@
|
|
|
63
63
|
"@nx/eslint-plugin": "~22.3.3",
|
|
64
64
|
"@nx/jest": "~22.3.3",
|
|
65
65
|
"@nx/js": "~22.3.3",
|
|
66
|
-
"@o3r/build-helpers": "~14.0.0-
|
|
67
|
-
"@o3r/eslint-plugin": "~14.0.0-
|
|
68
|
-
"@o3r/telemetry": "~14.0.0-
|
|
69
|
-
"@o3r/test-helpers": "~14.0.0-
|
|
66
|
+
"@o3r/build-helpers": "~14.0.0-rc.2",
|
|
67
|
+
"@o3r/eslint-plugin": "~14.0.0-rc.2",
|
|
68
|
+
"@o3r/telemetry": "~14.0.0-rc.2",
|
|
69
|
+
"@o3r/test-helpers": "~14.0.0-rc.2",
|
|
70
70
|
"@stylistic/eslint-plugin": "~5.6.0",
|
|
71
71
|
"@types/jest": "~30.0.0",
|
|
72
72
|
"@types/js-yaml": "^4.0.5",
|
package/src/constants.d.mts
CHANGED
|
@@ -4,11 +4,11 @@ export declare const OUTPUT_DIRECTORY = "models_external";
|
|
|
4
4
|
export declare const SUB_MASK_DIRECTORY = "sub-masks";
|
|
5
5
|
/** Default manifest filenames to look for */
|
|
6
6
|
export declare const DEFAULT_MANIFEST_FILENAMES: readonly ["ama-openapi.manifest.json", "ama-openapi.manifest.yaml", "ama-openapi.manifest.yml", "openapi.manifest.json", "openapi.manifest.yaml", "openapi.manifest.yml", "package.json"];
|
|
7
|
-
/** Default directory where generate the JSON Schemas */
|
|
7
|
+
/** Default directory where to generate the JSON Schemas */
|
|
8
8
|
export declare const DEFAULT_SCHEMA_OUTPUT_DIRECTORY = "schemas";
|
|
9
9
|
/** NPM keywords to identify a specification package */
|
|
10
10
|
export declare const OPENAPI_NPM_KEYWORDS: readonly ["openapi"];
|
|
11
|
-
/** Name of the
|
|
11
|
+
/** Name of the JSON schema validating the manifest file */
|
|
12
12
|
export declare const MANIFEST_SCHEMA_FILE = "manifest.schema.json";
|
|
13
13
|
/** Key to mark masked properties */
|
|
14
14
|
export declare const MASKED_PROPERTY_KEY = "x-internal-masked";
|
package/src/constants.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../../src/constants.mts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,eAAO,MAAM,gBAAgB,oBAAoB,CAAC;AAElD,sFAAsF;AACtF,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAE9C,6CAA6C;AAC7C,eAAO,MAAM,0BAA0B,2LAQ7B,CAAC;AAEX,
|
|
1
|
+
{"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../../src/constants.mts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,eAAO,MAAM,gBAAgB,oBAAoB,CAAC;AAElD,sFAAsF;AACtF,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAE9C,6CAA6C;AAC7C,eAAO,MAAM,0BAA0B,2LAQ7B,CAAC;AAEX,2DAA2D;AAC3D,eAAO,MAAM,+BAA+B,YAAY,CAAC;AAEzD,uDAAuD;AACvD,eAAO,MAAM,oBAAoB,sBAAuB,CAAC;AAEzD,2DAA2D;AAC3D,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAI3D,oCAAoC;AACpC,eAAO,MAAM,mBAAmB,sBAAsB,CAAC;AACvD,qCAAqC;AACrC,eAAO,MAAM,oBAAoB,uBAAuB,CAAC;AACzD,8EAA8E;AAC9E,eAAO,MAAM,mBAAmB,sBAAsB,CAAC;AACvD,+CAA+C;AAC/C,eAAO,MAAM,oBAAoB,uBAAuB,CAAC;AACzD,iDAAiD;AACjD,eAAO,MAAM,0BAA0B,mCAAmC,CAAC;AAC3E,gDAAgD;AAChD,eAAO,MAAM,0BAA0B,mCAAmC,CAAC"}
|
package/src/constants.mjs
CHANGED
|
@@ -12,11 +12,11 @@ export const DEFAULT_MANIFEST_FILENAMES = [
|
|
|
12
12
|
'openapi.manifest.yml',
|
|
13
13
|
'package.json'
|
|
14
14
|
];
|
|
15
|
-
/** Default directory where generate the JSON Schemas */
|
|
15
|
+
/** Default directory where to generate the JSON Schemas */
|
|
16
16
|
export const DEFAULT_SCHEMA_OUTPUT_DIRECTORY = 'schemas';
|
|
17
17
|
/** NPM keywords to identify a specification package */
|
|
18
18
|
export const OPENAPI_NPM_KEYWORDS = ['openapi'];
|
|
19
|
-
/** Name of the
|
|
19
|
+
/** Name of the JSON schema validating the manifest file */
|
|
20
20
|
export const MANIFEST_SCHEMA_FILE = 'manifest.schema.json';
|
|
21
21
|
// Internal property keys :
|
|
22
22
|
/** Key to mark masked properties */
|
package/src/constants.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.mjs","sourceRoot":"","sources":["../../src/constants.mts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,MAAM,CAAC,MAAM,gBAAgB,GAAG,iBAAiB,CAAC;AAElD,sFAAsF;AACtF,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC;AAE9C,6CAA6C;AAC7C,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,2BAA2B;IAC3B,2BAA2B;IAC3B,0BAA0B;IAC1B,uBAAuB;IACvB,uBAAuB;IACvB,sBAAsB;IACtB,cAAc;CACN,CAAC;AAEX,
|
|
1
|
+
{"version":3,"file":"constants.mjs","sourceRoot":"","sources":["../../src/constants.mts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,MAAM,CAAC,MAAM,gBAAgB,GAAG,iBAAiB,CAAC;AAElD,sFAAsF;AACtF,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC;AAE9C,6CAA6C;AAC7C,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,2BAA2B;IAC3B,2BAA2B;IAC3B,0BAA0B;IAC1B,uBAAuB;IACvB,uBAAuB;IACvB,sBAAsB;IACtB,cAAc;CACN,CAAC;AAEX,2DAA2D;AAC3D,MAAM,CAAC,MAAM,+BAA+B,GAAG,SAAS,CAAC;AAEzD,uDAAuD;AACvD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,SAAS,CAAU,CAAC;AAEzD,2DAA2D;AAC3D,MAAM,CAAC,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;AAE3D,2BAA2B;AAE3B,oCAAoC;AACpC,MAAM,CAAC,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AACvD,qCAAqC;AACrC,MAAM,CAAC,MAAM,oBAAoB,GAAG,oBAAoB,CAAC;AACzD,8EAA8E;AAC9E,MAAM,CAAC,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AACvD,+CAA+C;AAC/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,oBAAoB,CAAC;AACzD,iDAAiD;AACjD,MAAM,CAAC,MAAM,0BAA0B,GAAG,gCAAgC,CAAC;AAC3E,gDAAgD;AAChD,MAAM,CAAC,MAAM,0BAA0B,GAAG,gCAAgC,CAAC"}
|
|
@@ -5,5 +5,5 @@ import type { RetrievedDependencyModel } from '../manifest/extract-dependency-mo
|
|
|
5
5
|
* @param retrievedModel
|
|
6
6
|
* @param context
|
|
7
7
|
*/
|
|
8
|
-
export declare const writeModelFile: (retrievedModel: RetrievedDependencyModel, context: Context) => Promise<void>;
|
|
8
|
+
export declare const writeModelFile: (retrievedModel: Pick<RetrievedDependencyModel, "outputFilePath" | "content">, context: Context) => Promise<void>;
|
|
9
9
|
//# sourceMappingURL=write-model.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write-model.d.mts","sourceRoot":"","sources":["../../../../src/core/file-system/write-model.mts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,OAAO,EACR,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EACV,wBAAwB,EACzB,MAAM,2CAA2C,CAAC;AAEnD;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAU,gBAAgB,wBAAwB,EAAE,SAAS,OAAO,
|
|
1
|
+
{"version":3,"file":"write-model.d.mts","sourceRoot":"","sources":["../../../../src/core/file-system/write-model.mts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,OAAO,EACR,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EACV,wBAAwB,EACzB,MAAM,2CAA2C,CAAC;AAEnD;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAU,gBAAgB,IAAI,CAAC,wBAAwB,EAAE,gBAAgB,GAAG,SAAS,CAAC,EAAE,SAAS,OAAO,kBAiBlI,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write-model.mjs","sourceRoot":"","sources":["../../../../src/core/file-system/write-model.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,QAAQ,IAAI,EAAE,GACf,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,GAAG,GACJ,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,OAAO,GACR,MAAM,WAAW,CAAC;AAQnB;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"write-model.mjs","sourceRoot":"","sources":["../../../../src/core/file-system/write-model.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,QAAQ,IAAI,EAAE,GACf,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,GAAG,GACJ,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,OAAO,GACR,MAAM,WAAW,CAAC;AAQnB;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,cAA4E,EAAE,OAAgB,EAAE,EAAE;IACrI,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,cAAc,CAAC;IACnD,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC3B,MAAM,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,EAAE,KAAK,EAAE,CAAC,wCAAwC,SAAS,EAAE,CAAC,CAAC;QACrE,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,EAAE,KAAK,EAAE,CAAC,aAAa,SAAS,mCAAmC,CAAC,CAAC;IAC7E,CAAC;IAED,IAAI,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QAC/B,MAAM,EAAE,IAAI,CAAC,YAAY,cAAc,sCAAsC;cACzE,GAAG,GAAG,sHAAsH,CAAC,CAAC;IACpI,CAAC;IAED,MAAM,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;AACpE,CAAC,CAAC"}
|
|
@@ -4,11 +4,11 @@ import type { RetrievedDependencyModel } from './manifest/extract-dependency-mod
|
|
|
4
4
|
* @param specification
|
|
5
5
|
* @param model
|
|
6
6
|
*/
|
|
7
|
-
export declare const deserialize: (specification: string, model: RetrievedDependencyModel) => any;
|
|
7
|
+
export declare const deserialize: (specification: string, model: Pick<RetrievedDependencyModel, "isInputJson">) => any;
|
|
8
8
|
/**
|
|
9
9
|
* Serialize an object into a model file content
|
|
10
10
|
* @param specification
|
|
11
11
|
* @param model
|
|
12
12
|
*/
|
|
13
|
-
export declare const serialize: (specification: any, model: RetrievedDependencyModel) => string;
|
|
13
|
+
export declare const serialize: (specification: any, model: Pick<RetrievedDependencyModel, "isOutputJson">) => string;
|
|
14
14
|
//# sourceMappingURL=serialization.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialization.d.mts","sourceRoot":"","sources":["../../../src/core/serialization.mts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,wBAAwB,EACzB,MAAM,0CAA0C,CAAC;AAElD;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,eAAe,MAAM,EAAE,OAAO,wBAAwB,KAAG,
|
|
1
|
+
{"version":3,"file":"serialization.d.mts","sourceRoot":"","sources":["../../../src/core/serialization.mts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,wBAAwB,EACzB,MAAM,0CAA0C,CAAC;AAElD;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,eAAe,MAAM,EAAE,OAAO,IAAI,CAAC,wBAAwB,EAAE,aAAa,CAAC,KAAG,GAKzG,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,SAAS,GAAI,eAAe,GAAG,EAAE,OAAO,IAAI,CAAC,wBAAwB,EAAE,cAAc,CAAC,KAAG,MAKrG,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialization.mjs","sourceRoot":"","sources":["../../../src/core/serialization.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,IAAI,GACL,MAAM,SAAS,CAAC;AAKjB;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,aAAqB,EAAE,
|
|
1
|
+
{"version":3,"file":"serialization.mjs","sourceRoot":"","sources":["../../../src/core/serialization.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,IAAI,GACL,MAAM,SAAS,CAAC;AAKjB;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,aAAqB,EAAE,KAAoD,EAAO,EAAE;IAC9G,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC;AAC7B,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,aAAkB,EAAE,KAAqD,EAAU,EAAE;IAC7G,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,IAAI,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAChD,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-schemas.d.mts","sourceRoot":"","sources":["../../src/generate-schemas.mts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generate-schemas.d.mts","sourceRoot":"","sources":["../../src/generate-schemas.mts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACV,MAAM,EACP,MAAM,cAAc,CAAC;AACtB,OAAO,EAEL,KAAK,oCAAoC,EAC1C,MAAM,8BAA8B,CAAC;AAEtC,8CAA8C;AAC9C,MAAM,WAAW,gCAAiC,SAAQ,oCAAoC;IAC5F,aAAa;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uBAAuB;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,GAAU,YAAmB,EAAE,UAAU,gCAAgC,kBAiBlH,CAAC"}
|
package/src/generate-schemas.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { existsSync, promises as fs, } from 'node:fs';
|
|
2
|
-
import { resolve, } from 'node:path';
|
|
2
|
+
import { dirname, resolve, } from 'node:path';
|
|
3
3
|
import * as process from 'node:process';
|
|
4
4
|
import { DEFAULT_SCHEMA_OUTPUT_DIRECTORY, MANIFEST_SCHEMA_FILE, } from './constants.mjs';
|
|
5
5
|
import { generateOpenApiManifestSchema, } from './schema/generate-schema.mjs';
|
|
@@ -19,6 +19,8 @@ export const generateValidationSchemaFiles = async (cwd = process.cwd(), options
|
|
|
19
19
|
if (!existsSync(directory)) {
|
|
20
20
|
await fs.mkdir(directory, { recursive: true });
|
|
21
21
|
}
|
|
22
|
-
await fs.writeFile(resolve(outputDirectory, MANIFEST_SCHEMA_FILE), JSON.stringify(manifestSchemaObj), { encoding: 'utf8' });
|
|
22
|
+
await fs.writeFile(resolve(outputDirectory, MANIFEST_SCHEMA_FILE), JSON.stringify(manifestSchemaObj.manifest), { encoding: 'utf8' });
|
|
23
|
+
await Promise.all(manifestSchemaObj.masks
|
|
24
|
+
.map(({ mask, fileName }) => fs.writeFile(resolve(outputDirectory, dirname(MANIFEST_SCHEMA_FILE), fileName), JSON.stringify(mask), { encoding: 'utf8' })));
|
|
23
25
|
};
|
|
24
26
|
//# sourceMappingURL=generate-schemas.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-schemas.mjs","sourceRoot":"","sources":["../../src/generate-schemas.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,QAAQ,IAAI,EAAE,GACf,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,OAAO,GACR,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,EACL,+BAA+B,EAC/B,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EACL,6BAA6B,GAE9B,MAAM,8BAA8B,CAAC;AAUtC;;;;GAIG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,OAA0C,EAAE,EAAE;IACrH,MAAM,eAAe,GAAG,OAAO,EAAE,eAAe,IAAI,+BAA+B,CAAC;IACpF,MAAM,IAAI,GAAG;QACX,GAAG,OAAO;QACV,GAAG;KACuB,CAAC;IAC7B,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IAChD,MAAM,iBAAiB,GAAG,MAAM,6BAA6B,CAAC,IAAI,CAAC,CAAC;IAEpE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,EAAE,oBAAoB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"generate-schemas.mjs","sourceRoot":"","sources":["../../src/generate-schemas.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,QAAQ,IAAI,EAAE,GACf,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,OAAO,EACP,OAAO,GACR,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,EACL,+BAA+B,EAC/B,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EACL,6BAA6B,GAE9B,MAAM,8BAA8B,CAAC;AAUtC;;;;GAIG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,OAA0C,EAAE,EAAE;IACrH,MAAM,eAAe,GAAG,OAAO,EAAE,eAAe,IAAI,+BAA+B,CAAC;IACpF,MAAM,IAAI,GAAG;QACX,GAAG,OAAO;QACV,GAAG;KACuB,CAAC;IAC7B,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IAChD,MAAM,iBAAiB,GAAG,MAAM,6BAA6B,CAAC,IAAI,CAAC,CAAC;IAEpE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,EAAE,oBAAoB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACrI,MAAM,OAAO,CAAC,GAAG,CACf,iBAAiB,CAAC,KAAK;SACpB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,oBAAoB,CAAC,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAC5J,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { SpecificationArtifact } from '../list-artifacts.mjs';
|
|
2
|
+
/**
|
|
3
|
+
* Generate manifest models properties for the given artifacts
|
|
4
|
+
* @param artifacts
|
|
5
|
+
*/
|
|
6
|
+
export declare const getManifestModelsProperties: (artifacts: SpecificationArtifact[]) => any;
|
|
7
|
+
//# sourceMappingURL=manifest-model-properties.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest-model-properties.d.mts","sourceRoot":"","sources":["../../../../src/schema/configurations/manifest-model-properties.mts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,qBAAqB,EACtB,MAAM,uBAAuB,CAAC;AAE/B;;;GAGG;AACH,eAAO,MAAM,2BAA2B,GAAI,WAAW,qBAAqB,EAAE,QAsB7E,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { basename, } from 'node:path/posix';
|
|
2
|
+
import { generateModelNameRef, } from '../generate-model-name.mjs';
|
|
3
|
+
/**
|
|
4
|
+
* Generate manifest models properties for the given artifacts
|
|
5
|
+
* @param artifacts
|
|
6
|
+
*/
|
|
7
|
+
export const getManifestModelsProperties = (artifacts) => {
|
|
8
|
+
return Object.fromEntries(artifacts.map(({ packageManifest, models, baseDirectory }) => {
|
|
9
|
+
const packageManifestName = packageManifest.name || basename(baseDirectory);
|
|
10
|
+
const refModels = models
|
|
11
|
+
.filter((modelObj) => !!modelObj)
|
|
12
|
+
.map(({ model }) => `model-${generateModelNameRef(packageManifestName, model)}`);
|
|
13
|
+
if (refModels.length === 0) {
|
|
14
|
+
return [];
|
|
15
|
+
}
|
|
16
|
+
return [
|
|
17
|
+
packageManifestName,
|
|
18
|
+
{
|
|
19
|
+
oneOf: [
|
|
20
|
+
...refModels.map((modelName) => ({ $ref: `#/definitions/${modelName}` })),
|
|
21
|
+
{ type: 'array', items: { oneOf: refModels.map((modelName) => ({ $ref: `#/definitions/${modelName}` })) } }
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
];
|
|
25
|
+
})
|
|
26
|
+
.filter(([key]) => key !== undefined));
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=manifest-model-properties.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest-model-properties.mjs","sourceRoot":"","sources":["../../../../src/schema/configurations/manifest-model-properties.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,GACT,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,oBAAoB,GACrB,MAAM,4BAA4B,CAAC;AAKpC;;;GAGG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,SAAkC,EAAE,EAAE;IAChF,OAAO,MAAM,CAAC,WAAW,CACvB,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE;QAC3D,MAAM,mBAAmB,GAAG,eAAe,CAAC,IAAI,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC5E,MAAM,SAAS,GAAG,MAAM;aACrB,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;aAChC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,SAAS,oBAAoB,CAAC,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;QACnF,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO;YACL,mBAAmB;YACnB;gBACE,KAAK,EAAE;oBACL,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,iBAAiB,SAAS,EAAE,EAAE,CAAC,CAAC;oBACzE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,iBAAiB,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE;iBAC5G;aACF;SACF,CAAC;IACJ,CAAC,CAAC;SACC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC,CACxC,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { SpecificationArtifact } from '../list-artifacts.mjs';
|
|
2
|
+
/**
|
|
3
|
+
* Generate model definitions for the given artifacts
|
|
4
|
+
* @param artifacts
|
|
5
|
+
*/
|
|
6
|
+
export declare const getModelDefinitions: (artifacts: SpecificationArtifact[]) => {
|
|
7
|
+
[k: string]: {
|
|
8
|
+
oneOf: ({
|
|
9
|
+
type: string;
|
|
10
|
+
default: boolean;
|
|
11
|
+
description: string;
|
|
12
|
+
const?: undefined;
|
|
13
|
+
properties?: undefined;
|
|
14
|
+
required?: undefined;
|
|
15
|
+
additionalProperties?: undefined;
|
|
16
|
+
} | {
|
|
17
|
+
const: string;
|
|
18
|
+
type?: undefined;
|
|
19
|
+
default?: undefined;
|
|
20
|
+
description?: undefined;
|
|
21
|
+
properties?: undefined;
|
|
22
|
+
required?: undefined;
|
|
23
|
+
additionalProperties?: undefined;
|
|
24
|
+
} | {
|
|
25
|
+
type: string;
|
|
26
|
+
description: string;
|
|
27
|
+
properties: {
|
|
28
|
+
path: {
|
|
29
|
+
const: string;
|
|
30
|
+
description: string;
|
|
31
|
+
};
|
|
32
|
+
transform: {
|
|
33
|
+
$ref: string;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
required: string[];
|
|
37
|
+
additionalProperties: boolean;
|
|
38
|
+
default?: undefined;
|
|
39
|
+
const?: undefined;
|
|
40
|
+
})[];
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=model-definitions.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-definitions.d.mts","sourceRoot":"","sources":["../../../../src/schema/configurations/model-definitions.mts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,qBAAqB,EACtB,MAAM,uBAAuB,CAAC;AAE/B;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAI,WAAW,qBAAqB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6CrE,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { basename, } from 'node:path';
|
|
2
|
+
import { generateModelNameRef, } from '../generate-model-name.mjs';
|
|
3
|
+
/**
|
|
4
|
+
* Generate model definitions for the given artifacts
|
|
5
|
+
* @param artifacts
|
|
6
|
+
*/
|
|
7
|
+
export const getModelDefinitions = (artifacts) => {
|
|
8
|
+
return Object.fromEntries(artifacts.flatMap(({ packageManifest, models, baseDirectory }) => {
|
|
9
|
+
const packageManifestName = packageManifest.name || basename(baseDirectory);
|
|
10
|
+
return models
|
|
11
|
+
.filter((modelObj) => !!modelObj)
|
|
12
|
+
.map(({ model }) => {
|
|
13
|
+
const modelRef = generateModelNameRef(packageManifestName, model);
|
|
14
|
+
return [
|
|
15
|
+
`model-${modelRef}`,
|
|
16
|
+
{
|
|
17
|
+
oneOf: [
|
|
18
|
+
...packageManifest.main
|
|
19
|
+
? [{
|
|
20
|
+
type: 'boolean',
|
|
21
|
+
default: true,
|
|
22
|
+
description: 'Include the default model exposed by the artifact'
|
|
23
|
+
}]
|
|
24
|
+
: [],
|
|
25
|
+
{
|
|
26
|
+
const: model
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
type: 'object',
|
|
30
|
+
description: 'Detailed model inclusion with optional transformations to apply',
|
|
31
|
+
properties: {
|
|
32
|
+
path: {
|
|
33
|
+
const: model,
|
|
34
|
+
description: "Path to the specific model to include as is. The path is relative to the artifact root (e.g., 'models/ExampleModel.v1.yaml')"
|
|
35
|
+
},
|
|
36
|
+
transform: {
|
|
37
|
+
$ref: `#/definitions/transform-${modelRef}`
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
required: [
|
|
41
|
+
'path'
|
|
42
|
+
],
|
|
43
|
+
additionalProperties: false
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
];
|
|
48
|
+
});
|
|
49
|
+
}));
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=model-definitions.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-definitions.mjs","sourceRoot":"","sources":["../../../../src/schema/configurations/model-definitions.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,GACT,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,oBAAoB,GACrB,MAAM,4BAA4B,CAAC;AAKpC;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,SAAkC,EAAE,EAAE;IACxE,OAAO,MAAM,CAAC,WAAW,CACvB,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE;QAC/D,MAAM,mBAAmB,GAAG,eAAe,CAAC,IAAI,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC5E,OAAO,MAAM;aACV,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;aAChC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;YACjB,MAAM,QAAQ,GAAG,oBAAoB,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;YAClE,OAAO;gBACL,SAAS,QAAQ,EAAE;gBACnB;oBACE,KAAK,EAAE;wBACL,GAAG,eAAe,CAAC,IAAI;4BACrB,CAAC,CAAC,CAAC;oCACD,IAAI,EAAE,SAAS;oCACf,OAAO,EAAE,IAAI;oCACb,WAAW,EAAE,mDAAmD;iCACjE,CAAC;4BACF,CAAC,CAAC,EAAE;wBACN;4BACE,KAAK,EAAE,KAAK;yBACb;wBACD;4BACE,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,iEAAiE;4BAC9E,UAAU,EAAE;gCACV,IAAI,EAAE;oCACJ,KAAK,EAAE,KAAK;oCACZ,WAAW,EAAE,8HAA8H;iCAC5I;gCACD,SAAS,EAAE;oCACT,IAAI,EAAE,2BAA2B,QAAQ,EAAE;iCAC5C;6BACF;4BACD,QAAQ,EAAE;gCACR,MAAM;6BACP;4BACD,oBAAoB,EAAE,KAAK;yBAC5B;qBACF;iBACF;aACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CACH,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { SpecificationArtifact } from '../list-artifacts.mjs';
|
|
2
|
+
/**
|
|
3
|
+
* Generate transform definitions for the given artifacts
|
|
4
|
+
* @param artifacts
|
|
5
|
+
*/
|
|
6
|
+
export declare const getTransformDefinitions: (artifacts: SpecificationArtifact[]) => {
|
|
7
|
+
[k: string]: {
|
|
8
|
+
allOf: ({
|
|
9
|
+
$ref: string;
|
|
10
|
+
type?: undefined;
|
|
11
|
+
properties?: undefined;
|
|
12
|
+
} | {
|
|
13
|
+
type: string;
|
|
14
|
+
properties: {
|
|
15
|
+
mask: {
|
|
16
|
+
$ref: string;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
$ref?: undefined;
|
|
20
|
+
})[];
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=transform-definitions.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform-definitions.d.mts","sourceRoot":"","sources":["../../../../src/schema/configurations/transform-definitions.mts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,qBAAqB,EACtB,MAAM,uBAAuB,CAAC;AAE/B;;;GAGG;AACH,eAAO,MAAM,uBAAuB,GAAI,WAAW,qBAAqB,EAAE;;;;;;;;;;;;;;;;CA8BzE,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { basename, } from 'node:path';
|
|
2
|
+
import { generateModelNameRef, getMaskFileName, } from '../generate-model-name.mjs';
|
|
3
|
+
/**
|
|
4
|
+
* Generate transform definitions for the given artifacts
|
|
5
|
+
* @param artifacts
|
|
6
|
+
*/
|
|
7
|
+
export const getTransformDefinitions = (artifacts) => {
|
|
8
|
+
return Object.fromEntries(artifacts.flatMap(({ packageManifest, models, baseDirectory }) => {
|
|
9
|
+
return models
|
|
10
|
+
.filter((modelObj) => !!modelObj)
|
|
11
|
+
.map(({ model }) => {
|
|
12
|
+
const packageManifestName = packageManifest.name || basename(baseDirectory);
|
|
13
|
+
const modelRef = generateModelNameRef(packageManifestName, model);
|
|
14
|
+
const maskSchemaFileName = getMaskFileName(modelRef);
|
|
15
|
+
return [
|
|
16
|
+
`transform-${modelRef}`,
|
|
17
|
+
{
|
|
18
|
+
allOf: [
|
|
19
|
+
{
|
|
20
|
+
$ref: '#/definitions/baseTransform'
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
type: 'object',
|
|
24
|
+
properties: {
|
|
25
|
+
mask: {
|
|
26
|
+
$ref: `./${maskSchemaFileName}`
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
}
|
|
32
|
+
];
|
|
33
|
+
});
|
|
34
|
+
}));
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=transform-definitions.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform-definitions.mjs","sourceRoot":"","sources":["../../../../src/schema/configurations/transform-definitions.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,GACT,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,oBAAoB,EACpB,eAAe,GAChB,MAAM,4BAA4B,CAAC;AAKpC;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,SAAkC,EAAE,EAAE;IAC5E,OAAO,MAAM,CAAC,WAAW,CACvB,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE;QAC/D,OAAO,MAAM;aACV,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;aAChC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;YACjB,MAAM,mBAAmB,GAAG,eAAe,CAAC,IAAI,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC;YAC5E,MAAM,QAAQ,GAAG,oBAAoB,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;YAClE,MAAM,kBAAkB,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;YACrD,OAAO;gBACL,aAAa,QAAQ,EAAE;gBACvB;oBACE,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,6BAA6B;yBACpC;wBACD;4BACE,IAAI,EAAE,QAAQ;4BACd,UAAU,EAAE;gCACV,IAAI,EAAE;oCACJ,IAAI,EAAE,KAAK,kBAAkB,EAAE;iCAChC;6BACF;yBACF;qBACF;iBACF;aACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CACH,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate a reference name from a model definition
|
|
3
|
+
* @param artifactName
|
|
4
|
+
* @param modelPath
|
|
5
|
+
*/
|
|
6
|
+
export declare const generateModelNameRef: (artifactName: string, modelPath: string) => string;
|
|
7
|
+
/**
|
|
8
|
+
* Generate a mask schema file name from a model definition
|
|
9
|
+
* @param modelNameRef
|
|
10
|
+
*/
|
|
11
|
+
export declare const getMaskFileName: (modelNameRef: string) => string;
|
|
12
|
+
//# sourceMappingURL=generate-model-name.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-model-name.d.mts","sourceRoot":"","sources":["../../../src/schema/generate-model-name.mts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAAI,cAAc,MAAM,EAAE,WAAW,MAAM,KAAG,MAQ9E,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,cAAc,MAAM,WAEnD,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { sanitizePackagePath, } from '../core/manifest/extract-dependency-models.mjs';
|
|
2
|
+
/**
|
|
3
|
+
* Generate a reference name from a model definition
|
|
4
|
+
* @param artifactName
|
|
5
|
+
* @param modelPath
|
|
6
|
+
*/
|
|
7
|
+
export const generateModelNameRef = (artifactName, modelPath) => {
|
|
8
|
+
const sanitizedArtifactName = sanitizePackagePath(artifactName);
|
|
9
|
+
const [filePath, innerPath] = modelPath.split('#/');
|
|
10
|
+
const modelName = (filePath.replace(/\.(json|ya?ml)$/, '') + (innerPath ?? ''))
|
|
11
|
+
.replace(/^\.+\//, '')
|
|
12
|
+
.replace(/-/g, '_')
|
|
13
|
+
.replace(/\//g, '-');
|
|
14
|
+
return `${sanitizedArtifactName}-${modelName}`;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Generate a mask schema file name from a model definition
|
|
18
|
+
* @param modelNameRef
|
|
19
|
+
*/
|
|
20
|
+
export const getMaskFileName = (modelNameRef) => {
|
|
21
|
+
return `mask-${modelNameRef}.json`;
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=generate-model-name.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-model-name.mjs","sourceRoot":"","sources":["../../../src/schema/generate-model-name.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,GACpB,MAAM,gDAAgD,CAAC;AAExD;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,YAAoB,EAAE,SAAiB,EAAU,EAAE;IACtF,MAAM,qBAAqB,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAChE,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;SAC5E,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;SAClB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACvB,OAAO,GAAG,qBAAqB,IAAI,SAAS,EAAE,CAAC;AACjD,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,YAAoB,EAAE,EAAE;IACtD,OAAO,QAAQ,YAAY,OAAO,CAAC;AACrC,CAAC,CAAC"}
|
|
@@ -4,46 +4,57 @@ import { type ListDependenciesOptions } from './list-artifacts.mjs';
|
|
|
4
4
|
export interface GenerateOpenApiManifestSchemaOptions extends ListDependenciesOptions {
|
|
5
5
|
}
|
|
6
6
|
/**
|
|
7
|
-
* Generate Ama-openapi Manifest schema to provide autocompletion and structure validation
|
|
7
|
+
* Generate Ama-openapi Manifest schema to provide autocompletion and structure validation for the Specification manifest files
|
|
8
8
|
* @param options
|
|
9
9
|
*/
|
|
10
10
|
export declare const generateOpenApiManifestSchema: (options: GenerateOpenApiManifestSchemaOptions & Context) => Promise<{
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
properties: {
|
|
16
|
-
models: {
|
|
17
|
-
type: string;
|
|
18
|
-
description: string;
|
|
19
|
-
properties: {
|
|
20
|
-
[k: string]: {
|
|
11
|
+
masks: {
|
|
12
|
+
mask: {
|
|
13
|
+
definitions: {
|
|
14
|
+
baseMaskField: {
|
|
21
15
|
oneOf: ({
|
|
22
|
-
$ref: string;
|
|
23
|
-
} | {
|
|
24
16
|
type: string;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
17
|
+
const?: undefined;
|
|
18
|
+
} | {
|
|
19
|
+
const: {};
|
|
20
|
+
type?: undefined;
|
|
21
|
+
} | {
|
|
22
|
+
const: null;
|
|
23
|
+
type?: undefined;
|
|
30
24
|
})[];
|
|
31
25
|
};
|
|
32
26
|
};
|
|
27
|
+
$schema: string;
|
|
28
|
+
title: string;
|
|
29
|
+
$id: string;
|
|
33
30
|
};
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
31
|
+
fileName: string;
|
|
32
|
+
}[];
|
|
33
|
+
manifest: {
|
|
34
|
+
$schema: string;
|
|
35
|
+
title: string;
|
|
36
|
+
$id: string;
|
|
37
|
+
type: string;
|
|
38
|
+
properties: {
|
|
39
|
+
models: {
|
|
40
|
+
type: string;
|
|
41
|
+
description: string;
|
|
42
|
+
properties: any;
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
additionalProperties: boolean;
|
|
46
|
+
definitions: {
|
|
47
|
+
baseTransform: {
|
|
48
|
+
type: string;
|
|
49
|
+
examples: {
|
|
50
|
+
rename: string;
|
|
51
|
+
}[];
|
|
52
|
+
properties: {
|
|
53
|
+
rename: {
|
|
54
|
+
type: string;
|
|
55
|
+
description: string;
|
|
56
|
+
examples: string[];
|
|
57
|
+
};
|
|
47
58
|
};
|
|
48
59
|
};
|
|
49
60
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-schema.d.mts","sourceRoot":"","sources":["../../../src/schema/generate-schema.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACR,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"generate-schema.d.mts","sourceRoot":"","sources":["../../../src/schema/generate-schema.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACR,MAAM,gBAAgB,CAAC;AAUxB,OAAO,EACL,KAAK,uBAAuB,EAE7B,MAAM,sBAAsB,CAAC;AAK9B,4DAA4D;AAC5D,MAAM,WAAW,oCAAqC,SAAQ,uBAAuB;CACpF;AAED;;;GAGG;AACH,eAAO,MAAM,6BAA6B,GAAU,SAAS,oCAAoC,GAAG,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+C1G,CAAC"}
|
|
@@ -1,134 +1,55 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getManifestModelsProperties, } from './configurations/manifest-model-properties.mjs';
|
|
2
|
+
import { getModelDefinitions, } from './configurations/model-definitions.mjs';
|
|
3
|
+
import { getTransformDefinitions, } from './configurations/transform-definitions.mjs';
|
|
2
4
|
import { listSpecificationArtifacts, } from './list-artifacts.mjs';
|
|
3
|
-
|
|
4
|
-
const sanitizedArtifactName = sanitizePackagePath(artifactName);
|
|
5
|
-
const modelName = modelPath
|
|
6
|
-
.replace(/\.(json|ya?ml)$/, '')
|
|
7
|
-
.replace(/^\.+\//, '')
|
|
8
|
-
.replace(/\//g, '-')
|
|
9
|
-
.replace(/-/g, '_');
|
|
10
|
-
return `${sanitizedArtifactName}-${modelName}`;
|
|
11
|
-
};
|
|
5
|
+
import { getDependencyModelMasks, } from './mask/dependencies-masks.mjs';
|
|
12
6
|
/**
|
|
13
|
-
* Generate Ama-openapi Manifest schema to provide autocompletion and structure validation
|
|
7
|
+
* Generate Ama-openapi Manifest schema to provide autocompletion and structure validation for the Specification manifest files
|
|
14
8
|
* @param options
|
|
15
9
|
*/
|
|
16
10
|
export const generateOpenApiManifestSchema = async (options) => {
|
|
17
11
|
const artifacts = await listSpecificationArtifacts(options);
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
.filter((modelObj) => !!modelObj)
|
|
35
|
-
.map(({ model }) => {
|
|
36
|
-
const modelRef = generateModelNameRef(packageManifest.name, model);
|
|
37
|
-
return [
|
|
38
|
-
`model-${modelRef}`,
|
|
39
|
-
{
|
|
40
|
-
oneOf: [
|
|
41
|
-
...packageManifest.main
|
|
42
|
-
? [{
|
|
43
|
-
type: 'boolean',
|
|
44
|
-
default: true,
|
|
45
|
-
description: 'Include the default model exposed by the artifact'
|
|
46
|
-
}]
|
|
47
|
-
: [],
|
|
48
|
-
{
|
|
49
|
-
type: 'string',
|
|
50
|
-
const: model
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
type: 'object',
|
|
54
|
-
description: 'Detailed model inclusion with optional transformations to apply',
|
|
55
|
-
properties: {
|
|
56
|
-
path: {
|
|
57
|
-
type: 'string',
|
|
58
|
-
const: model,
|
|
59
|
-
description: "Path to the specific model to include as is. The path is relative to the artifact root (e.g., 'models/ExampleModel.v1.yaml')"
|
|
60
|
-
},
|
|
61
|
-
transform: {
|
|
62
|
-
$ref: `#/definitions/transform-${modelRef}`
|
|
63
|
-
}
|
|
64
|
-
},
|
|
65
|
-
required: [
|
|
66
|
-
'path'
|
|
67
|
-
],
|
|
68
|
-
additionalProperties: false
|
|
69
|
-
}
|
|
70
|
-
]
|
|
12
|
+
const manifestModelsProperties = getManifestModelsProperties(artifacts);
|
|
13
|
+
const modelDefinitions = getModelDefinitions(artifacts);
|
|
14
|
+
const transformDefinitions = getTransformDefinitions(artifacts);
|
|
15
|
+
const masks = await getDependencyModelMasks(artifacts, options);
|
|
16
|
+
return {
|
|
17
|
+
masks,
|
|
18
|
+
manifest: {
|
|
19
|
+
$schema: 'http://json-schema.org/draft-07/schema#',
|
|
20
|
+
title: 'OpenApi specification package manifest',
|
|
21
|
+
$id: '@ama-openapi/core/schemas/manifest.schema.json',
|
|
22
|
+
type: 'object',
|
|
23
|
+
properties: {
|
|
24
|
+
models: {
|
|
25
|
+
type: 'object',
|
|
26
|
+
description: 'Dependency package containing the specification to include',
|
|
27
|
+
properties: manifestModelsProperties
|
|
71
28
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
.map(({ model }) => {
|
|
79
|
-
const modelRef = generateModelNameRef(packageManifest.name, model);
|
|
80
|
-
return [
|
|
81
|
-
`transform-${modelRef}`,
|
|
82
|
-
{
|
|
83
|
-
allOf: [
|
|
84
|
-
{
|
|
85
|
-
$ref: '#/definitions/baseTransform'
|
|
86
|
-
},
|
|
29
|
+
},
|
|
30
|
+
additionalProperties: true,
|
|
31
|
+
definitions: {
|
|
32
|
+
baseTransform: {
|
|
33
|
+
type: 'object',
|
|
34
|
+
examples: [
|
|
87
35
|
{
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
36
|
+
rename: 'MyPrefix_$1'
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
properties: {
|
|
40
|
+
rename: {
|
|
41
|
+
type: 'string',
|
|
42
|
+
description: 'Rename the outputted file. The keyword `$1` can be used to refer to the original name (ex: a prefix would be `my-prefix-$1`)',
|
|
43
|
+
examples: [
|
|
44
|
+
'my-prefix-$1',
|
|
45
|
+
'myModel.v1.yaml'
|
|
46
|
+
]
|
|
92
47
|
}
|
|
93
|
-
]
|
|
94
|
-
}
|
|
95
|
-
];
|
|
96
|
-
});
|
|
97
|
-
}));
|
|
98
|
-
return {
|
|
99
|
-
$schema: 'http://json-schema.org/draft-07/schema#',
|
|
100
|
-
title: 'OpenApi specification package manifest',
|
|
101
|
-
$id: '@ama-openapi/core/schemas/manifest.schema.json',
|
|
102
|
-
type: 'object',
|
|
103
|
-
properties: {
|
|
104
|
-
models: {
|
|
105
|
-
type: 'object',
|
|
106
|
-
description: 'Dependency package containing the specification to include',
|
|
107
|
-
properties: modelsProperties
|
|
108
|
-
}
|
|
109
|
-
},
|
|
110
|
-
additionalProperties: true,
|
|
111
|
-
definitions: {
|
|
112
|
-
baseTransform: {
|
|
113
|
-
type: 'object',
|
|
114
|
-
examples: [
|
|
115
|
-
{
|
|
116
|
-
rename: 'MyPrefix_$1'
|
|
117
|
-
}
|
|
118
|
-
],
|
|
119
|
-
properties: {
|
|
120
|
-
rename: {
|
|
121
|
-
type: 'string',
|
|
122
|
-
description: 'Rename the outputted file. The keyword `$1` can be used to refer to the original name (ex: a prefix would be `my-prefix-$1`)',
|
|
123
|
-
examples: [
|
|
124
|
-
'my-prefix-$1',
|
|
125
|
-
'myModel.v1.yaml'
|
|
126
|
-
]
|
|
127
48
|
}
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
49
|
+
},
|
|
50
|
+
...modelDefinitions,
|
|
51
|
+
...transformDefinitions
|
|
52
|
+
}
|
|
132
53
|
}
|
|
133
54
|
};
|
|
134
55
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-schema.mjs","sourceRoot":"","sources":["../../../src/schema/generate-schema.mts"],"names":[],"mappings":"AAGA,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"generate-schema.mjs","sourceRoot":"","sources":["../../../src/schema/generate-schema.mts"],"names":[],"mappings":"AAGA,OAAO,EACL,2BAA2B,GAC5B,MAAM,gDAAgD,CAAC;AACxD,OAAO,EACL,mBAAmB,GACpB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,uBAAuB,GACxB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAEL,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,uBAAuB,GACxB,MAAM,+BAA+B,CAAC;AAMvC;;;GAGG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,KAAK,EAAE,OAAuD,EAAE,EAAE;IAC7G,MAAM,SAAS,GAAG,MAAM,0BAA0B,CAAC,OAAO,CAAC,CAAC;IAE5D,MAAM,wBAAwB,GAAG,2BAA2B,CAAC,SAAS,CAAC,CAAC;IACxE,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACxD,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC;IAChE,MAAM,KAAK,GAAG,MAAM,uBAAuB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAEhE,OAAO;QACL,KAAK;QACL,QAAQ,EAAE;YACR,OAAO,EAAE,yCAAyC;YAClD,KAAK,EAAE,wCAAwC;YAC/C,GAAG,EAAE,gDAAgD;YACrD,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,4DAA4D;oBACzE,UAAU,EAAE,wBAAwB;iBACrC;aACF;YACD,oBAAoB,EAAE,IAAI;YAC1B,WAAW,EAAE;gBACX,aAAa,EAAE;oBACb,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE;wBACR;4BACE,MAAM,EAAE,aAAa;yBACtB;qBACF;oBACD,UAAU,EAAE;wBACV,MAAM,EAAE;4BACN,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,8HAA8H;4BAC3I,QAAQ,EAAE;gCACR,cAAc;gCACd,iBAAiB;6BAClB;yBACF;qBACF;iBACF;gBACD,GAAG,gBAAgB;gBACnB,GAAG,oBAAoB;aACxB;SACF;KACF,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -4,7 +4,11 @@ import type { Context } from '../context.mjs';
|
|
|
4
4
|
* Options controlling how dependencies are listed for a package or project.
|
|
5
5
|
*/
|
|
6
6
|
export interface ListDependenciesOptions {
|
|
7
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* List of NPM Keywords to use when searching for packages exposing OpenAPI specifications
|
|
9
|
+
* The whitelisted packages should includes at least one of the listed keywords
|
|
10
|
+
* @default [OPENAPI_NPM_KEYWORDS]
|
|
11
|
+
*/
|
|
8
12
|
keywordsWhitelist?: string[];
|
|
9
13
|
/**
|
|
10
14
|
* List of ignored models file which will not be part of the suggestion
|
|
@@ -17,16 +21,23 @@ export interface ListDependenciesOptions {
|
|
|
17
21
|
*/
|
|
18
22
|
moduleResolve?: NodeJS.RequireResolve;
|
|
19
23
|
}
|
|
20
|
-
/**
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
*/
|
|
24
|
-
export declare const listSpecificationArtifacts: (options: ListDependenciesOptions & Context) => Promise<{
|
|
24
|
+
/** Specification Artifact representing a package and its exposed models */
|
|
25
|
+
export interface SpecificationArtifact {
|
|
26
|
+
/** Package manifest */
|
|
25
27
|
packageManifest: PackageJson;
|
|
28
|
+
/** Base directory of the package */
|
|
26
29
|
baseDirectory: string;
|
|
27
|
-
models
|
|
30
|
+
/** List of exposed models */
|
|
31
|
+
models: {
|
|
32
|
+
/** Model path */
|
|
28
33
|
model: string;
|
|
34
|
+
/** Resolved model path */
|
|
29
35
|
modelPath: string;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
36
|
+
}[];
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* List the artifacts and their exposed models for the declared dependencies
|
|
40
|
+
* @param options
|
|
41
|
+
*/
|
|
42
|
+
export declare const listSpecificationArtifacts: (options: ListDependenciesOptions & Context) => Promise<SpecificationArtifact[]>;
|
|
32
43
|
//# sourceMappingURL=list-artifacts.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-artifacts.d.mts","sourceRoot":"","sources":["../../../src/schema/list-artifacts.mts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EACV,WAAW,EACZ,MAAM,WAAW,CAAC;AAInB,OAAO,KAAK,EACV,OAAO,EACR,MAAM,gBAAgB,CAAC;AAExB;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC
|
|
1
|
+
{"version":3,"file":"list-artifacts.d.mts","sourceRoot":"","sources":["../../../src/schema/list-artifacts.mts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EACV,WAAW,EACZ,MAAM,WAAW,CAAC;AAInB,OAAO,KAAK,EACV,OAAO,EACR,MAAM,gBAAgB,CAAC;AAExB;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE7B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;CACvC;AAED,2EAA2E;AAC3E,MAAM,WAAW,qBAAqB;IACpC,uBAAuB;IACvB,eAAe,EAAE,WAAW,CAAC;IAC7B,oCAAoC;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,6BAA6B;IAC7B,MAAM,EAAE;QACN,iBAAiB;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,0BAA0B;QAC1B,SAAS,EAAE,MAAM,CAAC;KACnB,EAAE,CAAC;CACL;AAED;;;GAGG;AACH,eAAO,MAAM,0BAA0B,GAAU,SAAS,uBAAuB,GAAG,OAAO,KAAG,OAAO,CAAC,qBAAqB,EAAE,CAyD5H,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-artifacts.mjs","sourceRoot":"","sources":["../../../src/schema/list-artifacts.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,GAEL,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,QAAQ,IAAI,EAAE,GACf,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,OAAO,EACP,KAAK,EACL,OAAO,GACR,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,SAAS,GACV,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,MAAM,GACP,MAAM,QAAQ,CAAC;AAIhB,OAAO,EACL,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"list-artifacts.mjs","sourceRoot":"","sources":["../../../src/schema/list-artifacts.mts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Context } from '../../context.mjs';
|
|
2
|
+
import type { SpecificationArtifact } from '../list-artifacts.mjs';
|
|
3
|
+
/**
|
|
4
|
+
* Generate masks schema for the dependency models from the given artifacts
|
|
5
|
+
* @param artifacts List of specification artifacts
|
|
6
|
+
* @param options
|
|
7
|
+
*/
|
|
8
|
+
export declare const getDependencyModelMasks: (artifacts: SpecificationArtifact[], options: Context) => Promise<{
|
|
9
|
+
mask: {
|
|
10
|
+
definitions: {
|
|
11
|
+
baseMaskField: {
|
|
12
|
+
oneOf: ({
|
|
13
|
+
type: string;
|
|
14
|
+
const?: undefined;
|
|
15
|
+
} | {
|
|
16
|
+
const: {};
|
|
17
|
+
type?: undefined;
|
|
18
|
+
} | {
|
|
19
|
+
const: null;
|
|
20
|
+
type?: undefined;
|
|
21
|
+
})[];
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
$schema: string;
|
|
25
|
+
title: string;
|
|
26
|
+
$id: string;
|
|
27
|
+
};
|
|
28
|
+
fileName: string;
|
|
29
|
+
}[]>;
|
|
30
|
+
//# sourceMappingURL=dependencies-masks.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependencies-masks.d.mts","sourceRoot":"","sources":["../../../../src/schema/mask/dependencies-masks.mts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,OAAO,EACR,MAAM,mBAAmB,CAAC;AAK3B,OAAO,KAAK,EACV,qBAAqB,EACtB,MAAM,uBAAuB,CAAC;AAQ/B;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,GAAU,WAAW,qBAAqB,EAAE,EAAE,SAAS,OAAO;;;;;;;;;;;;;;;;;;;;;IAiCjG,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { basename, } from 'node:path/posix';
|
|
2
|
+
import { generateModelNameRef, getMaskFileName, } from '../generate-model-name.mjs';
|
|
3
|
+
import { FIELD_SCHEMA_DEFINITION, } from './field-schema.constants.mjs';
|
|
4
|
+
import { generateMaskSchemaModelAt, } from './generate-mask-from-model.mjs';
|
|
5
|
+
/**
|
|
6
|
+
* Generate masks schema for the dependency models from the given artifacts
|
|
7
|
+
* @param artifacts List of specification artifacts
|
|
8
|
+
* @param options
|
|
9
|
+
*/
|
|
10
|
+
export const getDependencyModelMasks = async (artifacts, options) => {
|
|
11
|
+
const maskModelList = await Promise.all(artifacts.map(({ packageManifest, models, baseDirectory }) => {
|
|
12
|
+
const filteredModels = models
|
|
13
|
+
.filter((modelObj) => !!modelObj);
|
|
14
|
+
const modelPaths = Object.fromEntries(filteredModels.map((m) => ([m.modelPath, m.model])));
|
|
15
|
+
return Promise.all(filteredModels
|
|
16
|
+
.map(async ({ model, modelPath }) => {
|
|
17
|
+
const packageManifestName = packageManifest.name || basename(baseDirectory);
|
|
18
|
+
const modelRef = generateModelNameRef(packageManifestName, model);
|
|
19
|
+
const fileName = getMaskFileName(modelRef);
|
|
20
|
+
const ctx = {
|
|
21
|
+
...options,
|
|
22
|
+
modelPaths,
|
|
23
|
+
packageName: packageManifestName
|
|
24
|
+
};
|
|
25
|
+
return {
|
|
26
|
+
mask: {
|
|
27
|
+
$schema: 'http://json-schema.org/draft-07/schema#',
|
|
28
|
+
title: `OpenApi specification mask ${modelRef}`,
|
|
29
|
+
$id: `@ama-openapi/core/schemas/${fileName}`,
|
|
30
|
+
...await generateMaskSchemaModelAt(modelPath, ctx),
|
|
31
|
+
definitions: {
|
|
32
|
+
...FIELD_SCHEMA_DEFINITION
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
fileName
|
|
36
|
+
};
|
|
37
|
+
}));
|
|
38
|
+
}));
|
|
39
|
+
return maskModelList.flat();
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=dependencies-masks.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependencies-masks.mjs","sourceRoot":"","sources":["../../../../src/schema/mask/dependencies-masks.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,GACT,MAAM,iBAAiB,CAAC;AAIzB,OAAO,EACL,oBAAoB,EACpB,eAAe,GAChB,MAAM,4BAA4B,CAAC;AAIpC,OAAO,EACL,uBAAuB,GACxB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,yBAAyB,GAC1B,MAAM,gCAAgC,CAAC;AAExC;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,EAAE,SAAkC,EAAE,OAAgB,EAAE,EAAE;IACpG,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CACrC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE;QAC3D,MAAM,cAAc,GAAG,MAAM;aAC1B,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACpC,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3F,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc;aAC9B,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE;YAClC,MAAM,mBAAmB,GAAG,eAAe,CAAC,IAAI,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC;YAC5E,MAAM,QAAQ,GAAG,oBAAoB,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;YAClE,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC3C,MAAM,GAAG,GAAG;gBACV,GAAG,OAAO;gBACV,UAAU;gBACV,WAAW,EAAE,mBAAmB;aACjC,CAAC;YACF,OAAO;gBACL,IAAI,EAAE;oBACJ,OAAO,EAAE,yCAAyC;oBAClD,KAAK,EAAE,8BAA8B,QAAQ,EAAE;oBAC/C,GAAG,EAAE,6BAA6B,QAAQ,EAAE;oBAC5C,GAAG,MAAM,yBAAyB,CAAC,SAAS,EAAE,GAAG,CAAC;oBAClD,WAAW,EAAE;wBACX,GAAG,uBAAuB;qBAC3B;iBACF;gBACD,QAAQ;aACT,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;IACF,OAAO,aAAa,CAAC,IAAI,EAAE,CAAC;AAC9B,CAAC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** Name of the schema for a mask applied to a specification field */
|
|
2
|
+
export declare const FIELD_SCHEMA_NAME = "baseMaskField";
|
|
3
|
+
/** Inner path of the schema for a mask applied to a specification field */
|
|
4
|
+
export declare const FIELD_SCHEMA_REF = "#/definitions/baseMaskField";
|
|
5
|
+
/** Basic mask which can be applied to a specification field */
|
|
6
|
+
export declare const FIELD_SCHEMA_DEFINITION: {
|
|
7
|
+
baseMaskField: {
|
|
8
|
+
oneOf: ({
|
|
9
|
+
type: string;
|
|
10
|
+
const?: undefined;
|
|
11
|
+
} | {
|
|
12
|
+
const: {};
|
|
13
|
+
type?: undefined;
|
|
14
|
+
} | {
|
|
15
|
+
const: null;
|
|
16
|
+
type?: undefined;
|
|
17
|
+
})[];
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=field-schema.constants.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-schema.constants.d.mts","sourceRoot":"","sources":["../../../../src/schema/mask/field-schema.constants.mts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,eAAO,MAAM,iBAAiB,kBAAkB,CAAC;AAEjD,2EAA2E;AAC3E,eAAO,MAAM,gBAAgB,gCAAuC,CAAC;AAErE,+DAA+D;AAC/D,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;CAQnC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** Name of the schema for a mask applied to a specification field */
|
|
2
|
+
export const FIELD_SCHEMA_NAME = 'baseMaskField';
|
|
3
|
+
/** Inner path of the schema for a mask applied to a specification field */
|
|
4
|
+
export const FIELD_SCHEMA_REF = `#/definitions/${FIELD_SCHEMA_NAME}`;
|
|
5
|
+
/** Basic mask which can be applied to a specification field */
|
|
6
|
+
export const FIELD_SCHEMA_DEFINITION = {
|
|
7
|
+
[FIELD_SCHEMA_NAME]: {
|
|
8
|
+
oneOf: [
|
|
9
|
+
{ type: 'boolean' },
|
|
10
|
+
{ const: {} },
|
|
11
|
+
{ const: null }
|
|
12
|
+
]
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=field-schema.constants.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-schema.constants.mjs","sourceRoot":"","sources":["../../../../src/schema/mask/field-schema.constants.mts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,MAAM,CAAC,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAEjD,2EAA2E;AAC3E,MAAM,CAAC,MAAM,gBAAgB,GAAG,iBAAiB,iBAAiB,EAAE,CAAC;AAErE,+DAA+D;AAC/D,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,CAAC,iBAAiB,CAAC,EAAE;QACnB,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,SAAS,EAAE;YACnB,EAAE,KAAK,EAAE,EAAE,EAAE;YACb,EAAE,KAAK,EAAE,IAAI,EAAE;SAChB;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Context } from '../../context.mjs';
|
|
2
|
+
/** Mask context */
|
|
3
|
+
export interface MaskContext extends Context {
|
|
4
|
+
/** Path to the current file being parsed */
|
|
5
|
+
filePath?: string;
|
|
6
|
+
/** List of files already parsed */
|
|
7
|
+
parsedFiles?: string[];
|
|
8
|
+
/** List of model paths to be resolved for the current package */
|
|
9
|
+
modelPaths: Record<string, string>;
|
|
10
|
+
/** Package name */
|
|
11
|
+
packageName: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Generate a JSON Schema of a mask which can be applied to the provided model path
|
|
15
|
+
* @param modelPath Path to the model
|
|
16
|
+
* @param ctx Mask context
|
|
17
|
+
*/
|
|
18
|
+
export declare const generateMaskSchemaModelAt: (modelPath: string, ctx: MaskContext) => Promise<Record<string, any>>;
|
|
19
|
+
/**
|
|
20
|
+
* Recursive function to generate a JSON Schema of a mask which can be applied to the provided model object and its children
|
|
21
|
+
* Note: this function is recursive and exported only for testing purposes
|
|
22
|
+
* @access private
|
|
23
|
+
* @param model Model object
|
|
24
|
+
* @param ctx Mask context
|
|
25
|
+
*/
|
|
26
|
+
export declare const generateMaskSchemaFromModel: (model: any, ctx: MaskContext) => Promise<Record<string, any>>;
|
|
27
|
+
//# sourceMappingURL=generate-mask-from-model.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-mask-from-model.d.mts","sourceRoot":"","sources":["../../../../src/schema/mask/generate-mask-from-model.mts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,OAAO,EACR,MAAM,mBAAmB,CAAC;AAY3B,mBAAmB;AACnB,MAAM,WAAW,WAAY,SAAQ,OAAO;IAC1C,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,GAAU,WAAW,MAAM,EAAE,KAAK,WAAW,iCAyDlF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,GAAU,OAAO,GAAG,EAAE,KAAK,WAAW,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAmE3G,CAAC"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { dirname, posix, sep, } from 'node:path';
|
|
2
|
+
import { parseFile, } from '../../core/file-system/parse-file.mjs';
|
|
3
|
+
import { generateModelNameRef, getMaskFileName, } from '../generate-model-name.mjs';
|
|
4
|
+
import { FIELD_SCHEMA_REF, } from './field-schema.constants.mjs';
|
|
5
|
+
/**
|
|
6
|
+
* Generate a JSON Schema of a mask which can be applied to the provided model path
|
|
7
|
+
* @param modelPath Path to the model
|
|
8
|
+
* @param ctx Mask context
|
|
9
|
+
*/
|
|
10
|
+
export const generateMaskSchemaModelAt = async (modelPath, ctx) => {
|
|
11
|
+
const { logger } = ctx;
|
|
12
|
+
modelPath = modelPath.replaceAll(sep, '/');
|
|
13
|
+
if (ctx.filePath) {
|
|
14
|
+
modelPath = posix.resolve(dirname(ctx.filePath).replaceAll(sep, '/'), modelPath);
|
|
15
|
+
}
|
|
16
|
+
if (ctx.parsedFiles?.includes(modelPath)) {
|
|
17
|
+
logger?.warn(`The reference ${modelPath} is circular, it will be resolve to "any"`);
|
|
18
|
+
return {};
|
|
19
|
+
}
|
|
20
|
+
const [filePath, innerPath] = modelPath.split('#/');
|
|
21
|
+
let model = await parseFile(filePath);
|
|
22
|
+
if (ctx.filePath && ctx.modelPaths[filePath]) {
|
|
23
|
+
const schemaInnerPath = innerPath?.replaceAll('/', '/properties/');
|
|
24
|
+
return {
|
|
25
|
+
description: model.description,
|
|
26
|
+
oneOf: [
|
|
27
|
+
{
|
|
28
|
+
$ref: FIELD_SCHEMA_REF
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
$ref: `./${getMaskFileName(generateModelNameRef(ctx.packageName, ctx.modelPaths[filePath]))}${schemaInnerPath ? `#/${schemaInnerPath}` : ''}`
|
|
32
|
+
}
|
|
33
|
+
]
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
// Convert model inner path to properties in the generated Mask schema
|
|
37
|
+
if (!filePath && innerPath) {
|
|
38
|
+
const schemaInnerPath = innerPath?.replaceAll('/', '/properties/');
|
|
39
|
+
return {
|
|
40
|
+
description: model.description,
|
|
41
|
+
oneOf: [
|
|
42
|
+
{
|
|
43
|
+
$ref: FIELD_SCHEMA_REF
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
$ref: schemaInnerPath ? `#/${schemaInnerPath}` : ''
|
|
47
|
+
}
|
|
48
|
+
]
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
if (innerPath) {
|
|
52
|
+
model = innerPath.split('/').reduce((acc, pathItem) => acc?.[pathItem], model);
|
|
53
|
+
}
|
|
54
|
+
return generateMaskSchemaFromModel(model, {
|
|
55
|
+
...ctx,
|
|
56
|
+
filePath,
|
|
57
|
+
parsedFiles: [...(ctx.parsedFiles ?? []), modelPath]
|
|
58
|
+
});
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Recursive function to generate a JSON Schema of a mask which can be applied to the provided model object and its children
|
|
62
|
+
* Note: this function is recursive and exported only for testing purposes
|
|
63
|
+
* @access private
|
|
64
|
+
* @param model Model object
|
|
65
|
+
* @param ctx Mask context
|
|
66
|
+
*/
|
|
67
|
+
export const generateMaskSchemaFromModel = async (model, ctx) => {
|
|
68
|
+
// Primitive types
|
|
69
|
+
if (typeof model !== 'object' || !model) {
|
|
70
|
+
return {
|
|
71
|
+
default: model,
|
|
72
|
+
oneOf: [
|
|
73
|
+
{ $ref: FIELD_SCHEMA_REF },
|
|
74
|
+
...(typeof model === 'object' ? [] : [{ type: typeof model }])
|
|
75
|
+
]
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
// Arrays
|
|
79
|
+
if (Array.isArray(model)) {
|
|
80
|
+
return {
|
|
81
|
+
type: 'array',
|
|
82
|
+
prefixItems: await Promise.all(model.map((item) => generateMaskSchemaFromModel(item, ctx)))
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
// Is referencing another model
|
|
86
|
+
if (model.$ref) {
|
|
87
|
+
return generateMaskSchemaModelAt(model.$ref, ctx);
|
|
88
|
+
// Objects
|
|
89
|
+
}
|
|
90
|
+
else if (model.type === 'object') {
|
|
91
|
+
return {
|
|
92
|
+
type: 'object',
|
|
93
|
+
...(model.description === undefined ? {} : { description: model.description }),
|
|
94
|
+
default: model.properties ? { properties: Object.fromEntries(Object.keys(model.properties).map((key) => [key, true])) } : {},
|
|
95
|
+
properties: {
|
|
96
|
+
...model.properties
|
|
97
|
+
? {
|
|
98
|
+
properties: {
|
|
99
|
+
type: 'object',
|
|
100
|
+
properties: Object.fromEntries(await Promise.all(Object.entries(model.properties).map(async ([key, value]) => ([key, await generateMaskSchemaFromModel(value, ctx)]))))
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
: {},
|
|
104
|
+
...Object.fromEntries(await Promise.all(Object.entries(model)
|
|
105
|
+
.filter(([key]) => !['properties', 'type', '$ref'].includes(key))
|
|
106
|
+
.map(async ([key, value]) => ([key, await generateMaskSchemaFromModel(value, ctx)]))))
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
return {
|
|
111
|
+
description: model.description,
|
|
112
|
+
oneOf: [
|
|
113
|
+
{
|
|
114
|
+
$ref: FIELD_SCHEMA_REF
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
type: model.type
|
|
118
|
+
}
|
|
119
|
+
]
|
|
120
|
+
};
|
|
121
|
+
};
|
|
122
|
+
//# sourceMappingURL=generate-mask-from-model.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-mask-from-model.mjs","sourceRoot":"","sources":["../../../../src/schema/mask/generate-mask-from-model.mts"],"names":[],"mappings":"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"}
|