@ama-openapi/core 0.0.0-placeholder → 0.0.0-placeholder.10

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.
Files changed (65) hide show
  1. package/package.json +11 -10
  2. package/renovate/default.json +10 -0
  3. package/schemas/manifest.schema.json +8 -41
  4. package/schemas/transform.schema.json +45 -0
  5. package/src/constants.d.mts +8 -4
  6. package/src/constants.d.mts.map +1 -1
  7. package/src/constants.mjs +11 -5
  8. package/src/constants.mjs.map +1 -1
  9. package/src/context.d.mts +11 -0
  10. package/src/context.d.mts.map +1 -0
  11. package/src/context.mjs +2 -0
  12. package/src/context.mjs.map +1 -0
  13. package/src/core/file-system/cleaner.d.mts +3 -2
  14. package/src/core/file-system/cleaner.d.mts.map +1 -1
  15. package/src/core/file-system/cleaner.mjs +6 -3
  16. package/src/core/file-system/cleaner.mjs.map +1 -1
  17. package/src/core/file-system/parse-file.d.mts +2 -2
  18. package/src/core/file-system/parse-file.mjs +2 -2
  19. package/src/core/file-system/relative-path.d.mts +6 -0
  20. package/src/core/file-system/relative-path.d.mts.map +1 -0
  21. package/src/core/file-system/relative-path.mjs +9 -0
  22. package/src/core/file-system/relative-path.mjs.map +1 -0
  23. package/src/core/file-system/write-model.d.mts +3 -1
  24. package/src/core/file-system/write-model.d.mts.map +1 -1
  25. package/src/core/file-system/write-model.mjs +13 -4
  26. package/src/core/file-system/write-model.mjs.map +1 -1
  27. package/src/core/manifest/extract-dependency-models.d.mts +17 -9
  28. package/src/core/manifest/extract-dependency-models.d.mts.map +1 -1
  29. package/src/core/manifest/extract-dependency-models.mjs +45 -38
  30. package/src/core/manifest/extract-dependency-models.mjs.map +1 -1
  31. package/src/core/manifest/manifest.d.mts +3 -4
  32. package/src/core/manifest/manifest.d.mts.map +1 -1
  33. package/src/core/manifest/manifest.mjs +15 -16
  34. package/src/core/manifest/manifest.mjs.map +1 -1
  35. package/src/core/process.d.mts +9 -0
  36. package/src/core/process.d.mts.map +1 -0
  37. package/src/core/process.mjs +30 -0
  38. package/src/core/process.mjs.map +1 -0
  39. package/src/core/serialization.mjs +3 -3
  40. package/src/core/serialization.mjs.map +1 -1
  41. package/src/core/transforms/add-annotation.d.mts +4 -3
  42. package/src/core/transforms/add-annotation.d.mts.map +1 -1
  43. package/src/core/transforms/add-annotation.mjs +4 -2
  44. package/src/core/transforms/add-annotation.mjs.map +1 -1
  45. package/src/core/transforms/apply-mask.d.mts +5 -4
  46. package/src/core/transforms/apply-mask.d.mts.map +1 -1
  47. package/src/core/transforms/apply-mask.mjs +139 -39
  48. package/src/core/transforms/apply-mask.mjs.map +1 -1
  49. package/src/core/transforms/rename.d.mts +6 -3
  50. package/src/core/transforms/rename.d.mts.map +1 -1
  51. package/src/core/transforms/rename.mjs +6 -4
  52. package/src/core/transforms/rename.mjs.map +1 -1
  53. package/src/core/transforms/to-reference.d.mts +6 -3
  54. package/src/core/transforms/to-reference.d.mts.map +1 -1
  55. package/src/core/transforms/to-reference.mjs +9 -5
  56. package/src/core/transforms/to-reference.mjs.map +1 -1
  57. package/src/core/transforms/transform.d.mts +6 -2
  58. package/src/core/transforms/transform.d.mts.map +1 -1
  59. package/src/core/transforms/update-references.d.mts +4 -8
  60. package/src/core/transforms/update-references.d.mts.map +1 -1
  61. package/src/core/transforms/update-references.mjs +34 -16
  62. package/src/core/transforms/update-references.mjs.map +1 -1
  63. package/src/main.d.mts.map +1 -1
  64. package/src/main.mjs +9 -25
  65. package/src/main.mjs.map +1 -1
@@ -1,10 +1,8 @@
1
1
  import { promises as fs, } from 'node:fs';
2
2
  import { createRequire, } from 'node:module';
3
- import { basename, dirname, extname, join, resolve, } from 'node:path';
4
- import { load, } from 'js-yaml';
3
+ import { basename, dirname, join, resolve, } from 'node:path';
5
4
  import { OUTPUT_DIRECTORY, } from '../../constants.mjs';
6
- import { isJsonFile, } from '../file-system/parse-file.mjs';
7
- const require = createRequire(import.meta.url);
5
+ import { isJsonFile, parseFile, } from '../file-system/parse-file.mjs';
8
6
  /**
9
7
  * Sanitize the package path to be used in file system
10
8
  * @param artifactName
@@ -22,28 +20,39 @@ const sanitizePackagePath = (artifactName) => {
22
20
  const retrieveTransform = async (cwd, transform) => {
23
21
  if (typeof transform === 'string') {
24
22
  const transformPath = resolve(cwd, transform);
25
- const fileContent = await fs.readFile(transformPath, { encoding: 'utf8' });
26
- return extname(transformPath).toLowerCase() === '.json'
27
- ? JSON.parse(fileContent)
28
- : load(fileContent);
23
+ return parseFile(transformPath);
29
24
  }
30
25
  return transform;
31
26
  };
27
+ /**
28
+ * Get information for artifactory manifest file
29
+ * @param require
30
+ * @param artifactName
31
+ */
32
+ const getArtifactInfo = async (require, artifactName) => {
33
+ const artifactPackageJson = require.resolve(`${artifactName}/package.json`);
34
+ const artifactBasePath = dirname(artifactPackageJson);
35
+ const packageJsonContent = await fs.readFile(artifactPackageJson, { encoding: 'utf8' });
36
+ const version = JSON.parse(packageJsonContent).version || 'latest';
37
+ return { artifactBasePath, version };
38
+ };
32
39
  /**
33
40
  * Extract dependency model given simple model definition (as string or boolean)
34
41
  * @param cwd
35
42
  * @param artifactName
36
43
  * @param modelName
44
+ * @param logger
45
+ * @param outputDirectory
37
46
  */
38
- const extractDependencyModelsSimple = async (cwd, artifactName, modelName) => {
39
- const artifactPackageJson = require.resolve(`${artifactName}/package.json`);
40
- const artifactBasePath = dirname(artifactPackageJson);
47
+ const extractDependencyModelsSimple = async (cwd, artifactName, modelName, logger, outputDirectory = OUTPUT_DIRECTORY) => {
48
+ logger?.debug?.(`extracting model ${modelName} from ${outputDirectory}`);
49
+ const require = createRequire(resolve(cwd, 'package.json'));
50
+ const { artifactBasePath, version } = await getArtifactInfo(require, artifactName);
41
51
  const modelPath = typeof modelName === 'string' ? join(artifactBasePath, modelName) : require.resolve(artifactName);
42
- const version = await fs.readFile(artifactPackageJson, { encoding: 'utf8' }).then((data) => JSON.parse(data).version || 'latest');
43
52
  const content = await fs.readFile(modelPath, { encoding: 'utf8' });
44
53
  const path = typeof modelName === 'string' ? modelName : artifactName;
45
54
  const model = { path };
46
- const outputFilePath = resolve(cwd, OUTPUT_DIRECTORY, sanitizePackagePath(artifactName), model.path);
55
+ const outputFilePath = resolve(cwd, outputDirectory, sanitizePackagePath(artifactName), model.path);
47
56
  return {
48
57
  outputFilePath,
49
58
  artifactBasePath,
@@ -54,29 +63,29 @@ const extractDependencyModelsSimple = async (cwd, artifactName, modelName) => {
54
63
  model: {
55
64
  path
56
65
  },
57
- isJson: isJsonFile(modelPath)
66
+ isInputJson: isJsonFile(modelPath),
67
+ isOutputJson: isJsonFile(outputFilePath)
58
68
  };
59
69
  };
60
70
  /**
61
71
  * Extract dependency model given full model definition
62
- * @param cwd
63
72
  * @param artifactName
64
73
  * @param model
65
74
  * @param transformPromise
75
+ * @param context
76
+ * @param outputDirectory
66
77
  */
67
- const extractDependencyModelsObject = async (cwd, artifactName, model, transformPromise) => {
78
+ export const extractDependencyModelsObject = async (artifactName, model, transformPromise, context, outputDirectory = OUTPUT_DIRECTORY) => {
79
+ const { cwd, logger } = context;
80
+ const require = createRequire(resolve(cwd, 'package.json'));
68
81
  const transform = await transformPromise;
69
- const artifactPackageJson = require.resolve(`${artifactName}/package.json`);
70
- const artifactBasePath = dirname(artifactPackageJson);
82
+ const { artifactBasePath, version } = await getArtifactInfo(require, artifactName);
71
83
  const modelPath = model.path ? join(artifactBasePath, model.path) : require.resolve(artifactName);
72
- const version = await fs.readFile(artifactPackageJson, { encoding: 'utf8' }).then((data) => JSON.parse(data).version || 'latest');
73
84
  const content = await fs.readFile(modelPath, { encoding: 'utf8' });
74
- const defaultSpec = require.resolve(artifactName).split(artifactName)[1];
75
- const path = model.path || defaultSpec;
76
- const fileExtension = extname(path);
77
- const replaceName = transform?.fileRename && path.replace(new RegExp(`(${basename(path, fileExtension)})${fileExtension}$`), transform.fileRename + fileExtension);
78
- const fileNameOutput = replaceName || path;
79
- const outputFilePath = resolve(cwd, OUTPUT_DIRECTORY, sanitizePackagePath(artifactName), fileNameOutput);
85
+ logger?.debug?.(`extracting model ${modelPath} from ${outputDirectory}`);
86
+ const path = model.path || require.resolve(artifactName).split(artifactName)[1];
87
+ const fileNameOutput = transform?.fileRename ? path.replace(new RegExp(`(${basename(path).replaceAll('.', '\\.')})$`), transform.fileRename) : path;
88
+ const outputFilePath = resolve(cwd, outputDirectory, sanitizePackagePath(artifactName), fileNameOutput);
80
89
  return {
81
90
  transform,
82
91
  outputFilePath,
@@ -89,24 +98,22 @@ const extractDependencyModelsObject = async (cwd, artifactName, model, transform
89
98
  ...model,
90
99
  path
91
100
  },
92
- isJson: isJsonFile(modelPath)
101
+ isInputJson: isJsonFile(modelPath),
102
+ isOutputJson: isJsonFile(outputFilePath)
93
103
  };
94
104
  };
95
105
  /**
96
106
  * Extract dependency models from the manifest
97
- * @param cwd
98
107
  * @param manifest
99
- * @param _logger
108
+ * @param context
100
109
  */
101
- export const extractDependencyModels = (cwd, manifest, _logger) => {
102
- return Object.entries(manifest.models).flatMap(([dependencyName, modelDefinition]) => {
103
- const models = Array.isArray(modelDefinition) ? modelDefinition : [modelDefinition];
104
- return models
105
- .flatMap((model) => typeof model === 'string' || typeof model === 'boolean'
106
- ? [extractDependencyModelsSimple(cwd, dependencyName, model)]
107
- : (Array.isArray(model.transform)
108
- ? (model.transform.length > 0 ? model.transform : [undefined]).map((transform) => extractDependencyModelsObject(cwd, dependencyName, model, retrieveTransform(cwd, transform)))
109
- : [extractDependencyModelsObject(cwd, dependencyName, model, retrieveTransform(cwd, model.transform))]));
110
- });
110
+ export const extractDependencyModels = (manifest, context) => {
111
+ const { logger, cwd } = context;
112
+ logger?.info(`${Object.keys(manifest.models).length} dependencies models found in the manifest`);
113
+ logger?.debug?.('Extracting information from the manifest configuration: ', manifest);
114
+ return Object.entries(manifest.models).flatMap(([dependencyName, modelDefinition]) => (Array.isArray(modelDefinition) ? modelDefinition : [modelDefinition])
115
+ .map((model) => (typeof model === 'string' || typeof model === 'boolean')
116
+ ? extractDependencyModelsSimple(cwd, dependencyName, model, logger)
117
+ : extractDependencyModelsObject(dependencyName, model, retrieveTransform(cwd, model.transform), context)));
111
118
  };
112
119
  //# sourceMappingURL=extract-dependency-models.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"extract-dependency-models.mjs","sourceRoot":"","sources":["../../../../src/core/manifest/extract-dependency-models.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extract-dependency-models.mjs","sourceRoot":"","sources":["../../../../src/core/manifest/extract-dependency-models.mts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- import type { PackageJson } from 'type-fest';
2
1
  import type { Logger } from '../../logger.mjs';
3
2
  /**
4
3
  * Mask object for filtering properties
@@ -13,7 +12,7 @@ export interface Transform {
13
12
  /** Rename the model */
14
13
  titleRename?: string;
15
14
  /** Rename the outputted file (without extension) */
16
- fileRename: string;
15
+ fileRename?: string;
17
16
  }
18
17
  type TransformOrReference = Transform | string;
19
18
  /**
@@ -26,14 +25,14 @@ export interface Model {
26
25
  * Transforms to apply to the model
27
26
  * Note that for each transform object, a new definition will be generated
28
27
  */
29
- transform?: TransformOrReference | TransformOrReference[];
28
+ transform?: TransformOrReference;
30
29
  }
31
30
  /** List of supported types for an Model */
32
31
  export type SupportedModelTypes = string | Model | boolean;
33
32
  /** Models dependencies */
34
33
  export type Models = Record<string, SupportedModelTypes | SupportedModelTypes[]>;
35
34
  /** Manifest file structure */
36
- export type Manifest = PackageJson & {
35
+ export type Manifest = {
37
36
  models: Models;
38
37
  };
39
38
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.d.mts","sourceRoot":"","sources":["../../../../src/core/manifest/manifest.mts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EACV,WAAW,EACZ,MAAM,WAAW,CAAC;AAInB,OAAO,KAAK,EACV,MAAM,EACP,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,oBAAoB;IACpB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,KAAK,oBAAoB,GAAG,SAAS,GAAG,MAAM,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,SAAS,CAAC,EAAE,oBAAoB,GAAG,oBAAoB,EAAE,CAAC;CAC3D;AAED,2CAA2C;AAC3C,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC;AAE3D,0BAA0B;AAC1B,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,mBAAmB,GAAG,mBAAmB,EAAE,CAAC,CAAC;AAEjF,8BAA8B;AAC9B,MAAM,MAAM,QAAQ,GAAG,WAAW,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AA2BxD;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAU,oBAAoB,MAAM,EAAE,SAAQ,MAAgB,KAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAoBzH,CAAC"}
1
+ {"version":3,"file":"manifest.d.mts","sourceRoot":"","sources":["../../../../src/core/manifest/manifest.mts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACV,MAAM,EACP,MAAM,kBAAkB,CAAC;AAK1B;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,oBAAoB;IACpB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,KAAK,oBAAoB,GAAG,SAAS,GAAG,MAAM,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,SAAS,CAAC,EAAE,oBAAoB,CAAC;CAClC;AAED,2CAA2C;AAC3C,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC;AAE3D,0BAA0B;AAC1B,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,mBAAmB,GAAG,mBAAmB,EAAE,CAAC,CAAC;AAEjF,8BAA8B;AAC9B,MAAM,MAAM,QAAQ,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AA6B1C;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAU,oBAAoB,MAAM,EAAE,SAAS,MAAM,KAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAiBhH,CAAC"}
@@ -1,9 +1,9 @@
1
1
  import { existsSync, promises as fs, } from 'node:fs';
2
- import { extname, resolve, } from 'node:path';
2
+ import { resolve, } from 'node:path';
3
3
  import { fileURLToPath, } from 'node:url';
4
4
  import { Ajv, } from 'ajv';
5
- import { load, } from 'js-yaml';
6
5
  import { DEFAULT_MANIFEST_FILENAMES, } from '../../constants.mjs';
6
+ import { parseFile, } from '../file-system/parse-file.mjs';
7
7
  /**
8
8
  * Validate the manifest file
9
9
  * @param manifest
@@ -14,15 +14,17 @@ const isValidManifest = async (manifest, manifestPath, logger) => {
14
14
  if (!manifest || (typeof manifest === 'object' && !('models' in manifest))) {
15
15
  return false;
16
16
  }
17
+ const schemaManifestPath = resolve(fileURLToPath(new URL('.', import.meta.url)), '..', '..', '..', 'schemas', 'manifest.schema.json');
18
+ const schemaTransformPath = resolve(fileURLToPath(new URL('.', import.meta.url)), '..', '..', '..', 'schemas', 'transform.schema.json');
19
+ const schemaManifest = JSON.parse(await fs.readFile(schemaManifestPath, { encoding: 'utf8' }));
20
+ const schemaTransform = JSON.parse(await fs.readFile(schemaTransformPath, { encoding: 'utf8' }));
17
21
  const ajv = new Ajv();
18
- const schemaPath = resolve(fileURLToPath(new URL('.', import.meta.url)), '..', '..', 'schemas', 'manifest.schema.json');
19
- const schema = JSON.parse(await fs.readFile(schemaPath, { encoding: 'utf8' }));
20
- const validate = ajv.compile(schema);
22
+ const validate = ajv.addSchema(schemaTransform).compile(schemaManifest);
21
23
  const isValid = validate(manifest);
22
24
  if (!isValid) {
23
- logger.error(`${manifestPath} is invalid. Errors:`);
24
- logger.error(validate.errors);
25
- throw new Error('Invalid models definitions');
25
+ logger?.error(`${manifestPath} is invalid. Errors:`);
26
+ logger?.error(validate.errors);
27
+ throw new Error('Invalid Manifest');
26
28
  }
27
29
  return true;
28
30
  };
@@ -31,23 +33,20 @@ const isValidManifest = async (manifest, manifestPath, logger) => {
31
33
  * @param workspaceDirectory
32
34
  * @param logger
33
35
  */
34
- export const retrieveManifest = async (workspaceDirectory, logger = console) => {
36
+ export const retrieveManifest = async (workspaceDirectory, logger) => {
35
37
  for (const manifestFileName of DEFAULT_MANIFEST_FILENAMES) {
36
38
  const manifestPath = resolve(workspaceDirectory, manifestFileName);
37
39
  if (!existsSync(manifestPath)) {
38
- logger.debug?.(`Manifest file not found at ${manifestPath}`);
40
+ logger?.debug?.(`Manifest file not found at ${manifestPath}`);
39
41
  continue;
40
42
  }
41
- const content = await fs.readFile(manifestPath, { encoding: 'utf8' });
42
- const manifest = (extname(manifestPath).toLowerCase() === '.json'
43
- ? JSON.parse(content)
44
- : load(content));
43
+ const manifest = await parseFile(manifestPath);
45
44
  if (await isValidManifest(manifest, manifestPath, logger)) {
46
- logger.info?.(`Manifest file found at ${manifestPath}`);
45
+ logger?.info?.(`Manifest file found at ${manifestPath}`);
47
46
  return manifest;
48
47
  }
49
48
  else {
50
- logger.debug?.(`Manifest file at ${manifestPath} is not conform to the expected schema`);
49
+ logger?.debug?.(`Manifest file at ${manifestPath} is not conform to the expected schema`);
51
50
  }
52
51
  }
53
52
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.mjs","sourceRoot":"","sources":["../../../../src/core/manifest/manifest.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,EACL,aAAa,GACd,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,GAAG,GACJ,MAAM,KAAK,CAAC;AACb,OAAO,EACL,IAAI,GACL,MAAM,SAAS,CAAC;AAIjB,OAAO,EACL,0BAA0B,GAC3B,MAAM,qBAAqB,CAAC;AA+C7B;;;;;GAKG;AACH,MAAM,eAAe,GAAG,KAAK,EAAE,QAAa,EAAE,YAAoB,EAAE,MAAc,EAAoB,EAAE;IACtG,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC;QAC3E,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;IACtB,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,sBAAsB,CAAC,CAAC;IACxH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAW,CAAC;IACzF,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEnC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,sBAAsB,CAAC,CAAC;QACpD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,kBAA0B,EAAE,SAAiB,OAAO,EAAiC,EAAE;IAC5H,KAAK,MAAM,gBAAgB,IAAI,0BAA0B,EAAE,CAAC;QAC1D,MAAM,YAAY,GAAG,OAAO,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;QACnE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC9B,MAAM,CAAC,KAAK,EAAE,CAAC,8BAA8B,YAAY,EAAE,CAAC,CAAC;YAC7D,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QACtE,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,KAAK,OAAO;YAC/D,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YACrB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAa,CAAC;QAC/B,IAAI,MAAM,eAAe,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC;YAC1D,MAAM,CAAC,IAAI,EAAE,CAAC,0BAA0B,YAAY,EAAE,CAAC,CAAC;YACxD,OAAO,QAAQ,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,EAAE,CAAC,oBAAoB,YAAY,wCAAwC,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC"}
1
+ {"version":3,"file":"manifest.mjs","sourceRoot":"","sources":["../../../../src/core/manifest/manifest.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { Context } from '../context.mjs';
2
+ import type { RetrievedDependencyModel } from './manifest/extract-dependency-models.mjs';
3
+ /**
4
+ * Process a set of retrieved dependency models to apply transformations and write them to files
5
+ * @param models
6
+ * @param context
7
+ */
8
+ export declare const processModel: (models: Promise<RetrievedDependencyModel>[], context: Context) => Promise<void>[];
9
+ //# sourceMappingURL=process.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process.d.mts","sourceRoot":"","sources":["../../../src/core/process.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACR,MAAM,gBAAgB,CAAC;AAIxB,OAAO,KAAK,EACV,wBAAwB,EACzB,MAAM,0CAA0C,CAAC;AAwBlD;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,QAAQ,OAAO,CAAC,wBAAwB,CAAC,EAAE,EAAE,SAAS,OAAO,oBAkBzF,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { writeModelFile, } from './file-system/write-model.mjs';
2
+ import { deserialize, serialize, } from './serialization.mjs';
3
+ import { addAnnotation, } from './transforms/add-annotation.mjs';
4
+ import { applyMask, } from './transforms/apply-mask.mjs';
5
+ import { renameTitle, } from './transforms/rename.mjs';
6
+ import { toReference, } from './transforms/to-reference.mjs';
7
+ import { updateReferences, } from './transforms/update-references.mjs';
8
+ /**
9
+ * Process a set of retrieved dependency models to apply transformations and write them to files
10
+ * @param models
11
+ * @param context
12
+ */
13
+ export const processModel = (models, context) => {
14
+ const { logger } = context;
15
+ return models
16
+ .map(async (retrievedModelPromise) => {
17
+ const retrievedModel = await retrievedModelPromise;
18
+ logger?.debug?.(`Retrieved model from ${retrievedModel.artifactName} at ${retrievedModel.modelPath}`);
19
+ const transforms = [toReference, addAnnotation, applyMask, updateReferences, renameTitle];
20
+ const modelObj = await transforms.reduce(async (acc, transform) => transform(await acc, retrievedModel, context), Promise.resolve(deserialize(retrievedModel.content, retrievedModel)));
21
+ return {
22
+ ...retrievedModel,
23
+ content: serialize(modelObj, retrievedModel)
24
+ };
25
+ })
26
+ .map(async (processedModel) => {
27
+ await writeModelFile(await processedModel, context);
28
+ });
29
+ };
30
+ //# sourceMappingURL=process.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process.mjs","sourceRoot":"","sources":["../../../src/core/process.mts"],"names":[],"mappings":"AAGA,OAAO,EACL,cAAc,GACf,MAAM,+BAA+B,CAAC;AAIvC,OAAO,EACL,WAAW,EACX,SAAS,GACV,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,aAAa,GACd,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,SAAS,GACV,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,WAAW,GACZ,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,WAAW,GACZ,MAAM,+BAA+B,CAAC;AAIvC,OAAO,EACL,gBAAgB,GACjB,MAAM,oCAAoC,CAAC;AAE5C;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAA2C,EAAE,OAAgB,EAAE,EAAE;IAC5F,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC3B,OAAO,MAAM;SACV,GAAG,CAAC,KAAK,EAAE,qBAAqB,EAAE,EAAE;QACnC,MAAM,cAAc,GAAG,MAAM,qBAAqB,CAAC;QACnD,MAAM,EAAE,KAAK,EAAE,CAAC,wBAAwB,cAAc,CAAC,YAAY,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC;QAEtG,MAAM,UAAU,GAAG,CAAC,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAAC;QAC1F,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,CAChE,SAAS,CAAC,MAAM,GAAG,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAoB,WAAW,CAAC,cAAc,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;QAC1I,OAAO;YACL,GAAG,cAAc;YACjB,OAAO,EAAE,SAAS,CAAC,QAAQ,EAAE,cAAc,CAAC;SAC7C,CAAC;IACJ,CAAC,CAAC;SACD,GAAG,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE;QAC5B,MAAM,cAAc,CAAC,MAAM,cAAc,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC"}
@@ -5,7 +5,7 @@ import { dump, load, } from 'js-yaml';
5
5
  * @param model
6
6
  */
7
7
  export const deserialize = (specification, model) => {
8
- if (model.isJson) {
8
+ if (model.isInputJson) {
9
9
  return JSON.parse(specification);
10
10
  }
11
11
  return load(specification);
@@ -16,9 +16,9 @@ export const deserialize = (specification, model) => {
16
16
  * @param model
17
17
  */
18
18
  export const serialize = (specification, model) => {
19
- if (model.isJson) {
19
+ if (model.isOutputJson) {
20
20
  return JSON.stringify(specification, null, 2);
21
21
  }
22
- return dump(specification);
22
+ return dump(specification, { lineWidth: -1 });
23
23
  };
24
24
  //# sourceMappingURL=serialization.mjs.map
@@ -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,KAA+B,EAAO,EAAE;IACzF,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,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,KAA+B,EAAU,EAAE;IACvF,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC;AAC7B,CAAC,CAAC"}
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,KAA+B,EAAO,EAAE;IACzF,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,KAA+B,EAAU,EAAE;IACvF,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,6 +1,7 @@
1
1
  import { MASKED_PROPERTY_KEY, SOURCE_PROPERTY_KEY, TOUCHED_PROPERTY_KEY, VERSION_PROPERTY_KEY } from '../../constants.mjs';
2
- import type { Logger } from '../../logger.mjs';
2
+ import type { Context } from '../../context.mjs';
3
3
  import type { RetrievedDependencyModel } from '../manifest/extract-dependency-models.mjs';
4
+ import type { SpecificationFile } from './transform.mjs';
4
5
  type AdditionalAnnotation = {
5
6
  [MASKED_PROPERTY_KEY]: boolean;
6
7
  [TOUCHED_PROPERTY_KEY]: boolean;
@@ -11,8 +12,8 @@ type AdditionalAnnotation = {
11
12
  * Add annotation to the specification indicating its source, version, and if it was masked
12
13
  * @param specification
13
14
  * @param retrievedModel
14
- * @param _logger
15
+ * @param context
15
16
  */
16
- export declare const addAnnotation: <S extends object>(specification: S, retrievedModel: RetrievedDependencyModel, _logger?: Logger) => S & AdditionalAnnotation;
17
+ export declare const addAnnotation: <S extends SpecificationFile>(specification: S, retrievedModel: RetrievedDependencyModel, context: Context) => S & AdditionalAnnotation;
17
18
  export {};
18
19
  //# sourceMappingURL=add-annotation.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"add-annotation.d.mts","sourceRoot":"","sources":["../../../../src/core/transforms/add-annotation.mts"],"names":[],"mappings":"AAGA,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,MAAM,EACP,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACV,wBAAwB,EACzB,MAAM,2CAA2C,CAAC;AAEnD,KAAK,oBAAoB,GAAG;IAC1B,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC/B,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAChC,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC9B,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,MAAM,EAAE,eAAe,CAAC,EAAE,gBAAgB,wBAAwB,EAAE,UAAU,MAAM,KAAG,CAAC,GAAG,oBASlI,CAAC"}
1
+ {"version":3,"file":"add-annotation.d.mts","sourceRoot":"","sources":["../../../../src/core/transforms/add-annotation.mts"],"names":[],"mappings":"AAGA,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,OAAO,EACR,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EACV,wBAAwB,EACzB,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,EACV,iBAAiB,EAClB,MAAM,iBAAiB,CAAC;AAEzB,KAAK,oBAAoB,GAAG;IAC1B,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC/B,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAChC,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC9B,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,iBAAiB,EAAE,eAAe,CAAC,EAAE,gBAAgB,wBAAwB,EAAE,SAAS,OAAO,KAAG,CAAC,GAAG,oBAW7I,CAAC"}
@@ -4,10 +4,12 @@ import { MASKED_PROPERTY_KEY, SOURCE_PROPERTY_KEY, TOUCHED_PROPERTY_KEY, VERSION
4
4
  * Add annotation to the specification indicating its source, version, and if it was masked
5
5
  * @param specification
6
6
  * @param retrievedModel
7
- * @param _logger
7
+ * @param context
8
8
  */
9
- export const addAnnotation = (specification, retrievedModel, _logger) => {
9
+ export const addAnnotation = (specification, retrievedModel, context) => {
10
+ const { logger } = context;
10
11
  const { artifactName, version, transform } = retrievedModel;
12
+ logger?.debug?.(`Adding annotation to model from ${artifactName} at ${retrievedModel.model.path}`);
11
13
  return {
12
14
  ...specification,
13
15
  [SOURCE_PROPERTY_KEY]: posix.join(artifactName, retrievedModel.model.path),
@@ -1 +1 @@
1
- {"version":3,"file":"add-annotation.mjs","sourceRoot":"","sources":["../../../../src/core/transforms/add-annotation.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,GACN,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAe7B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAmB,aAAgB,EAAE,cAAwC,EAAE,OAAgB,EAA4B,EAAE;IACxJ,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,cAAc,CAAC;IAC5D,OAAO;QACL,GAAG,aAAa;QAChB,CAAC,mBAAmB,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC;QAC1E,CAAC,oBAAoB,CAAC,EAAE,OAAO;QAC/B,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,IAAI;QACxC,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,SAAS;KACpC,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"add-annotation.mjs","sourceRoot":"","sources":["../../../../src/core/transforms/add-annotation.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,GACN,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAkB7B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAA8B,aAAgB,EAAE,cAAwC,EAAE,OAAgB,EAA4B,EAAE;IACnK,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC3B,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,cAAc,CAAC;IAC5D,MAAM,EAAE,KAAK,EAAE,CAAC,mCAAmC,YAAY,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACnG,OAAO;QACL,GAAG,aAAa;QAChB,CAAC,mBAAmB,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC;QAC1E,CAAC,oBAAoB,CAAC,EAAE,OAAO;QAC/B,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,IAAI;QACxC,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,SAAS;KACpC,CAAC;AACJ,CAAC,CAAC"}
@@ -1,10 +1,11 @@
1
- import type { Logger } from '../../logger.mjs';
2
- import type { RetrievedDependencyModel } from '../manifest/extract-dependency-models.mjs';
1
+ import type { Context } from '../../context.mjs';
2
+ import { type RetrievedDependencyModel } from '../manifest/extract-dependency-models.mjs';
3
+ import type { SpecificationFile } from './transform.mjs';
3
4
  /**
4
5
  * Apply the mask to the model
5
6
  * @param specification
6
7
  * @param retrievedModel
7
- * @param _logger
8
+ * @param context
8
9
  */
9
- export declare const applyMask: <S extends object>(specification: S, retrievedModel: RetrievedDependencyModel, _logger?: Logger) => S;
10
+ export declare const applyMask: <S extends SpecificationFile>(specification: S, retrievedModel: RetrievedDependencyModel, context: Context) => S | Promise<S>;
10
11
  //# sourceMappingURL=apply-mask.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"apply-mask.d.mts","sourceRoot":"","sources":["../../../../src/core/transforms/apply-mask.mts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,MAAM,EACP,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACV,wBAAwB,EACzB,MAAM,2CAA2C,CAAC;AAqDnD;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,MAAM,EAAE,eAAe,CAAC,EAAE,gBAAgB,wBAAwB,EAAE,UAAU,MAAM,KAAG,CAK1H,CAAC"}
1
+ {"version":3,"file":"apply-mask.d.mts","sourceRoot":"","sources":["../../../../src/core/transforms/apply-mask.mts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACV,OAAO,EACR,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,2CAA2C,CAAC;AAInD,OAAO,KAAK,EACV,iBAAiB,EAClB,MAAM,iBAAiB,CAAC;AAsKzB;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,iBAAiB,EAAE,eAAe,CAAC,EAAE,gBAAgB,wBAAwB,EAAE,SAAS,OAAO,KAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CASlJ,CAAC"}