@ama-openapi/core 0.0.0-placeholder.1 → 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 +10 -9
  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,57 +1,157 @@
1
- /* eslint-disable @typescript-eslint/no-unsafe-argument -- due to unknown object structure */
2
- /* eslint-disable @typescript-eslint/no-unsafe-member-access -- due to unknown object structure */
3
- /* eslint-disable @typescript-eslint/no-unsafe-assignment -- due to unknown object structure */
1
+ import { existsSync, promises as fs, } from 'node:fs';
2
+ import { basename, dirname, posix, relative, resolve, sep, } from 'node:path';
3
+ import { GENERATED_REF_PROPERTY_KEY, SUB_MASK_DIRECTORY, } from '../../constants.mjs';
4
+ import { isRelativePath, } from '../file-system/relative-path.mjs';
5
+ import { extractDependencyModelsObject, } from '../manifest/extract-dependency-models.mjs';
4
6
  /**
5
- * Recursively apply the mask to model properties
6
- * @param modelProperties
7
- * @param maskProperties
7
+ * Determine the sub-mask file name for a given $ref and parent keys
8
+ * @param ref
9
+ * @param parents
8
10
  */
9
- const maskModelProperties = (modelProperties, maskProperties) => {
10
- return Object.fromEntries(Object.entries(modelProperties)
11
- .filter(([key]) => !!maskProperties && key in maskProperties && maskProperties[key] !== false)
12
- .map(([key, value]) => typeof maskProperties[key] === 'object' ? [key, maskModelProperties(value, maskProperties[key])] : [key, value]));
13
- };
11
+ const determineSubMaskFileName = (ref, parents) => `${parents.map((parent) => parent.charAt(0)?.toLocaleUpperCase() + parent.substring(1)).join('')}_${basename(ref)}`;
14
12
  /**
15
- * Recursively apply the sub-mask to the specification
16
- * @param specification
17
- * @param mask
13
+ * Determine the sub-mask path for a given retrieved model and mask file name
14
+ * @param retrievedModel
18
15
  */
19
- const applySubMask = (specification, mask) => {
20
- const result = { ...specification };
21
- if (!mask || typeof mask !== 'object') {
22
- return result;
23
- }
24
- if ('properties' in mask && 'properties' in result) {
25
- result.properties = maskModelProperties(result.properties, mask.properties);
16
+ const determineSubMaskPath = (retrievedModel) => {
17
+ return resolve(dirname(retrievedModel.outputFilePath), SUB_MASK_DIRECTORY, basename(retrievedModel.outputFilePath).replace(/\.[^.]+$/, ''));
18
+ };
19
+ const splitArtifactModelPaths = async (modelPath, context) => {
20
+ const { logger } = context;
21
+ let projectRoot = modelPath;
22
+ let artifactName = '';
23
+ while (!artifactName && projectRoot !== dirname(projectRoot)) {
24
+ projectRoot = dirname(projectRoot);
25
+ const packageJsonPath = resolve(projectRoot, 'package.json');
26
+ if (existsSync(packageJsonPath)) {
27
+ artifactName = JSON.parse(await fs.readFile(packageJsonPath, { encoding: 'utf8' })).name;
28
+ logger?.debug?.(`Found artifact named ${artifactName} for ${modelPath} sub reference`);
29
+ }
26
30
  }
27
- const maskAdditionalProperties = Object.entries(mask)
28
- .filter(([key]) => key !== 'properties');
29
- if (maskAdditionalProperties.length > 0) {
30
- delete result.type;
31
- delete result.properties;
32
- for (const [key, value] of maskAdditionalProperties) {
33
- if (typeof value === 'object') {
34
- result[key] = Array.isArray(value)
35
- ? value.map((subMask) => applyMask(result[key], subMask))
36
- : value && Object.fromEntries(Object.entries(value).map(([maskKey, subMask]) => ([maskKey, applyMask(result[key][maskKey], subMask)])));
31
+ return {
32
+ artifactName,
33
+ path: relative(projectRoot, modelPath)
34
+ };
35
+ };
36
+ /**
37
+ * Create the function to apply mask to a given model
38
+ * @param retrievedModel
39
+ * @param context
40
+ */
41
+ const createMaskApplier = (retrievedModel, context) => {
42
+ const { logger } = context;
43
+ /**
44
+ * Handle a $ref in the specification during mask application when the mask needs to be applied to the referenced model
45
+ * @param node
46
+ * @param mask
47
+ * @param parents
48
+ */
49
+ const handleReference = async (node, mask, parents) => {
50
+ if (!isRelativePath(node.$ref)) {
51
+ logger?.debug?.(`Skipping $ref "${node.$ref}" from mask application as it is not a relative path`);
52
+ return node;
53
+ }
54
+ if (node.$ref.startsWith('#')) {
55
+ logger?.debug?.(`Skipping $ref "${node.$ref}" from mask application as it is local reference`);
56
+ return node;
57
+ }
58
+ const modelPath = resolve(dirname(retrievedModel.modelPath), node.$ref);
59
+ const maskFileName = determineSubMaskFileName(node.$ref, parents);
60
+ const outputFileDirectory = determineSubMaskPath(retrievedModel);
61
+ const transform = {
62
+ fileRename: maskFileName,
63
+ mask
64
+ };
65
+ const { artifactName, path } = await splitArtifactModelPaths(modelPath, context);
66
+ const model = {
67
+ path,
68
+ transform
69
+ };
70
+ const extractedModel = await extractDependencyModelsObject(artifactName, model, Promise.resolve(transform), context, outputFileDirectory);
71
+ const { processModel } = await import('../process.mjs');
72
+ await Promise.all(processModel([Promise.resolve(extractedModel)], context));
73
+ return {
74
+ ...node,
75
+ $ref: relative(dirname(retrievedModel.outputFilePath), extractedModel.outputFilePath).replaceAll(sep, posix.sep),
76
+ [GENERATED_REF_PROPERTY_KEY]: true
77
+ };
78
+ };
79
+ /**
80
+ * Apply the property field mask to the specification
81
+ * @param node
82
+ * @param mask
83
+ * @param parents
84
+ */
85
+ const applyPropertyFieldMask = async (node, mask, parents) => {
86
+ if (node === null || node === undefined) {
87
+ return node;
88
+ }
89
+ if (typeof mask !== 'object') {
90
+ return node;
91
+ }
92
+ if (typeof node !== 'object') {
93
+ return undefined;
94
+ }
95
+ return Object.fromEntries(await Promise.all(Object.entries(mask)
96
+ .filter(([key]) => key in node)
97
+ .map(async ([key, subMask]) => ([key, await applySubMask(node[key], subMask, [...parents, key])]))));
98
+ };
99
+ /**
100
+ * Recursively apply the sub-mask to the specification
101
+ * @param node
102
+ * @param mask
103
+ * @param parents
104
+ */
105
+ const applySubMask = async (node, mask, parents) => {
106
+ if (node === null || node === undefined) {
107
+ return node;
108
+ }
109
+ if (typeof node !== 'object') {
110
+ return typeof mask === 'object' ? node : mask;
111
+ }
112
+ else if (Array.isArray(node)) {
113
+ if (Array.isArray(mask)) {
114
+ return (await Promise.all(node
115
+ .map((item, index) => applySubMask(item, mask[index] ?? {}, parents)))).filter((item) => item !== undefined);
37
116
  }
38
- else {
39
- result[key] = value;
117
+ }
118
+ else {
119
+ if ('$ref' in node && typeof node.$ref === 'string' && mask && typeof mask === 'object' && 'properties' in mask) {
120
+ return handleReference(node, mask, parents);
40
121
  }
122
+ return typeof mask === 'object'
123
+ ? {
124
+ ...node,
125
+ ...Object.fromEntries(await Promise.all(Object.entries(mask)
126
+ .filter(([key]) => key in node)
127
+ .map(async ([key, subMask]) => {
128
+ const newParents = [...parents, key];
129
+ return [
130
+ key,
131
+ key === 'properties'
132
+ ? await applyPropertyFieldMask(node[key], subMask, parents)
133
+ : await applySubMask(node[key], subMask, newParents)
134
+ ];
135
+ })))
136
+ }
137
+ : (mask ? node : undefined);
41
138
  }
42
- }
43
- return result;
139
+ };
140
+ return applySubMask;
44
141
  };
45
142
  /**
46
143
  * Apply the mask to the model
47
144
  * @param specification
48
145
  * @param retrievedModel
49
- * @param _logger
146
+ * @param context
50
147
  */
51
- export const applyMask = (specification, retrievedModel, _logger) => {
52
- if (!retrievedModel.transform) {
148
+ export const applyMask = (specification, retrievedModel, context) => {
149
+ const { logger } = context;
150
+ if (!retrievedModel.transform || !retrievedModel.transform.mask) {
151
+ logger?.debug?.(`No mask found for model from ${retrievedModel.artifactName} at ${retrievedModel.model.path}, skipping mask application`);
53
152
  return specification;
54
153
  }
55
- return applySubMask(specification, retrievedModel.transform.mask);
154
+ const maskApplier = createMaskApplier(retrievedModel, context);
155
+ return maskApplier(specification, retrievedModel.transform.mask, []);
56
156
  };
57
157
  //# sourceMappingURL=apply-mask.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"apply-mask.mjs","sourceRoot":"","sources":["../../../../src/core/transforms/apply-mask.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apply-mask.mjs","sourceRoot":"","sources":["../../../../src/core/transforms/apply-mask.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,QAAQ,IAAI,EAAE,GACf,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,QAAQ,EACR,OAAO,EACP,KAAK,EACL,QAAQ,EACR,OAAO,EACP,GAAG,GACJ,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EACL,cAAc,GACf,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,6BAA6B,GAE9B,MAAM,2CAA2C,CAAC;AAUnD;;;;GAIG;AACH,MAAM,wBAAwB,GAAG,CAAC,GAAW,EAAE,OAAiB,EAAU,EAAE,CAC1E,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;AAEtH;;;GAGG;AACH,MAAM,oBAAoB,GAAG,CAAC,cAAwC,EAAU,EAAE;IAChF,OAAO,OAAO,CACZ,OAAO,CAAC,cAAc,CAAC,cAAc,CAAC,EACtC,kBAAkB,EAClB,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAChE,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,uBAAuB,GAAG,KAAK,EAAE,SAAiB,EAAE,OAAgB,EAAmD,EAAE;IAC7H,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC3B,IAAI,WAAW,GAAG,SAAS,CAAC;IAC5B,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,OAAO,CAAC,YAAY,IAAI,WAAW,KAAK,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7D,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;QACnC,MAAM,eAAe,GAAG,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAC7D,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YAChC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACzF,MAAM,EAAE,KAAK,EAAE,CAAC,wBAAwB,YAAY,QAAQ,SAAS,gBAAgB,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;IACD,OAAO;QACL,YAAY;QACZ,IAAI,EAAE,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC;KACvC,CAAC;AACJ,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,iBAAiB,GAAG,CAAC,cAAwC,EAAE,OAAgB,EAAE,EAAE;IACvF,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAE3B;;;;;OAKG;IACH,MAAM,eAAe,GAAG,KAAK,EAAoC,IAAO,EAAE,IAAS,EAAE,OAAiB,EAAc,EAAE;QACpH,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,MAAM,EAAE,KAAK,EAAE,CAAC,kBAAkB,IAAI,CAAC,IAAI,sDAAsD,CAAC,CAAC;YACnG,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,EAAE,KAAK,EAAE,CAAC,kBAAkB,IAAI,CAAC,IAAI,kDAAkD,CAAC,CAAC;YAC/F,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACxE,MAAM,YAAY,GAAG,wBAAwB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAClE,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAC;QACjE,MAAM,SAAS,GAAG;YAChB,UAAU,EAAE,YAAY;YACxB,IAAI;SACL,CAAC;QAEF,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,MAAM,uBAAuB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACjF,MAAM,KAAK,GAAG;YACZ,IAAI;YACJ,SAAS;SACM,CAAC;QAElB,MAAM,cAAc,GAAG,MAAM,6BAA6B,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;QAC1I,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACxD,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QAE5E,OAAO;YACL,GAAG,IAAI;YACP,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;YAChH,CAAC,0BAA0B,CAAC,EAAE,IAAI;SACnC,CAAC;IACJ,CAAC,CAAC;IAEF;;;;;OAKG;IACH,MAAM,sBAAsB,GAAG,KAAK,EAAE,IAAS,EAAE,IAAS,EAAE,OAAiB,EAAgB,EAAE;QAC7F,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;aACjB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC;aAC9B,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CACrG,CACF,CAAC;IACJ,CAAC,CAAC;IAEF;;;;;OAKG;IACH,MAAM,YAAY,GAAG,KAAK,EAAE,IAAS,EAAE,IAAS,EAAE,OAAiB,EAAgB,EAAE;QACnF,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAChD,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxB,OAAO,CAAC,MAAM,OAAO,CAAC,GAAG,CACvB,IAAI;qBACD,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,CACxE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,MAAM,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;gBAChH,OAAO,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAC9C,CAAC;YACD,OAAO,OAAO,IAAI,KAAK,QAAQ;gBAC7B,CAAC,CAAC;oBACA,GAAG,IAAI;oBACP,GAAG,MAAM,CAAC,WAAW,CACnB,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;yBACjB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC;yBAC9B,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE;wBAC5B,MAAM,UAAU,GAAG,CAAC,GAAG,OAAO,EAAE,GAAG,CAAC,CAAC;wBACrC,OAAO;4BACL,GAAG;4BACH,GAAG,KAAK,YAAY;gCAClB,CAAC,CAAC,MAAM,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC;gCAC3D,CAAC,CAAC,MAAM,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC;yBACvD,CAAC;oBACJ,CAAC,CAAC,CACL,CACF;iBACF;gBACD,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAA8B,aAAgB,EAAE,cAAwC,EAAE,OAAgB,EAAkB,EAAE;IACrJ,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC3B,IAAI,CAAC,cAAc,CAAC,SAAS,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAChE,MAAM,EAAE,KAAK,EAAE,CAAC,gCAAgC,cAAc,CAAC,YAAY,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,6BAA6B,CAAC,CAAC;QAC1I,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,MAAM,WAAW,GAAG,iBAAiB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAC/D,OAAO,WAAW,CAAC,aAAa,EAAE,cAAc,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAe,CAAC;AACrF,CAAC,CAAC"}
@@ -1,10 +1,13 @@
1
- import type { Logger } from '../../logger.mjs';
1
+ import type { Context } from '../../context.mjs';
2
2
  import type { RetrievedDependencyModel } from '../manifest/extract-dependency-models.mjs';
3
+ import type { SpecificationFile } from './transform.mjs';
3
4
  /**
4
5
  * Rename the title of the specification
5
6
  * @param specification
6
7
  * @param retrievedModel
7
- * @param _logger
8
+ * @param context
8
9
  */
9
- export declare const renameTitle: <S extends object>(specification: S, retrievedModel: RetrievedDependencyModel, _logger?: Logger) => S;
10
+ export declare const renameTitle: <S extends SpecificationFile>(specification: S, retrievedModel: RetrievedDependencyModel, context: Context) => S & {
11
+ title?: string;
12
+ };
10
13
  //# sourceMappingURL=rename.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rename.d.mts","sourceRoot":"","sources":["../../../../src/core/transforms/rename.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EACP,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACV,wBAAwB,EACzB,MAAM,2CAA2C,CAAC;AAEnD;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,MAAM,EAAE,eAAe,CAAC,EAAE,gBAAgB,wBAAwB,EAAE,UAAU,MAAM,KAAG,CAU5H,CAAC"}
1
+ {"version":3,"file":"rename.d.mts","sourceRoot":"","sources":["../../../../src/core/transforms/rename.mts"],"names":[],"mappings":"AAAA,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;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,iBAAiB,EAAE,eAAe,CAAC,EAAE,gBAAgB,wBAAwB,EAAE,SAAS,OAAO,KAAG,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAY3J,CAAC"}
@@ -2,12 +2,14 @@
2
2
  * Rename the title of the specification
3
3
  * @param specification
4
4
  * @param retrievedModel
5
- * @param _logger
5
+ * @param context
6
6
  */
7
- export const renameTitle = (specification, retrievedModel, _logger) => {
7
+ export const renameTitle = (specification, retrievedModel, context) => {
8
+ const { logger } = context;
8
9
  if (retrievedModel.transform?.titleRename) {
9
- let title = 'title' in specification ? specification.title : undefined;
10
- title = title && title.replace(new RegExp(`^(${title})$`), retrievedModel.transform.titleRename);
10
+ logger?.debug?.(`Renaming title in model from ${retrievedModel.artifactName} at ${retrievedModel.modelPath}`);
11
+ let title = specification.title ?? undefined;
12
+ title = title?.replace(/^(.*)$/, retrievedModel.transform.titleRename);
11
13
  specification = {
12
14
  ...specification,
13
15
  title
@@ -1 +1 @@
1
- {"version":3,"file":"rename.mjs","sourceRoot":"","sources":["../../../../src/core/transforms/rename.mts"],"names":[],"mappings":"AAOA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAmB,aAAgB,EAAE,cAAwC,EAAE,OAAgB,EAAK,EAAE;IAC/H,IAAI,cAAc,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC;QAC1C,IAAI,KAAK,GAAuB,OAAO,IAAI,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,KAAe,CAAC,CAAC,CAAC,SAAS,CAAC;QACrG,KAAK,GAAG,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACjG,aAAa,GAAG;YACd,GAAG,aAAa;YAChB,KAAK;SACN,CAAC;IACJ,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC"}
1
+ {"version":3,"file":"rename.mjs","sourceRoot":"","sources":["../../../../src/core/transforms/rename.mts"],"names":[],"mappings":"AAUA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAA8B,aAAgB,EAAE,cAAwC,EAAE,OAAgB,EAA0B,EAAE;IAC/J,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC3B,IAAI,cAAc,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC;QAC1C,MAAM,EAAE,KAAK,EAAE,CAAC,gCAAgC,cAAc,CAAC,YAAY,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC;QAC9G,IAAI,KAAK,GAAuB,aAAa,CAAC,KAAK,IAAI,SAAS,CAAC;QACjE,KAAK,GAAG,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACvE,aAAa,GAAG;YACd,GAAG,aAAa;YAChB,KAAK;SACN,CAAC;IACJ,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC"}
@@ -1,7 +1,10 @@
1
- import type { Logger } from '../../logger.mjs';
1
+ import { GENERATED_REF_PROPERTY_KEY } from '../../constants.mjs';
2
+ import type { Context } from '../../context.mjs';
2
3
  import type { RetrievedDependencyModel } from '../manifest/extract-dependency-models.mjs';
4
+ import type { SpecificationFile } from './transform.mjs';
3
5
  type ReferenceSpecification = {
4
6
  $ref: string;
7
+ [GENERATED_REF_PROPERTY_KEY]: boolean;
5
8
  [x: string]: any;
6
9
  };
7
10
  /**
@@ -9,8 +12,8 @@ type ReferenceSpecification = {
9
12
  * The process will keep the x-vendor properties from the retrieved model
10
13
  * @param specification
11
14
  * @param retrievedModel
12
- * @param logger
15
+ * @param context
13
16
  */
14
- export declare const toReference: <S extends object>(specification: S, retrievedModel: RetrievedDependencyModel, logger?: Logger) => S | ReferenceSpecification;
17
+ export declare const toReference: <S extends SpecificationFile>(specification: S, retrievedModel: RetrievedDependencyModel, context: Context) => S | ReferenceSpecification;
15
18
  export {};
16
19
  //# sourceMappingURL=to-reference.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"to-reference.d.mts","sourceRoot":"","sources":["../../../../src/core/transforms/to-reference.mts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,MAAM,EACP,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACV,wBAAwB,EACzB,MAAM,2CAA2C,CAAC;AAEnD,KAAK,sBAAsB,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,MAAM,EAAE,eAAe,CAAC,EAAE,gBAAgB,wBAAwB,EAAE,SAAS,MAAM,KAAG,CAAC,GAAG,sBAU/H,CAAC"}
1
+ {"version":3,"file":"to-reference.d.mts","sourceRoot":"","sources":["../../../../src/core/transforms/to-reference.mts"],"names":[],"mappings":"AAMA,OAAO,EACL,0BAA0B,EAC3B,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,sBAAsB,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACtC,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,iBAAiB,EAAE,eAAe,CAAC,EAAE,gBAAgB,wBAAwB,EAAE,SAAS,OAAO,KAAG,CAAC,GAAG,sBAa3I,CAAC"}
@@ -1,19 +1,23 @@
1
- import { relative, } from 'node:path';
1
+ import { dirname, posix, relative, sep, } from 'node:path';
2
+ import { GENERATED_REF_PROPERTY_KEY, } from '../../constants.mjs';
2
3
  /**
3
4
  * Transform the specification to a single reference if no transformation required
4
5
  * The process will keep the x-vendor properties from the retrieved model
5
6
  * @param specification
6
7
  * @param retrievedModel
7
- * @param logger
8
+ * @param context
8
9
  */
9
- export const toReference = (specification, retrievedModel, logger) => {
10
+ export const toReference = (specification, retrievedModel, context) => {
11
+ const { logger } = context;
10
12
  if (retrievedModel.transform) {
11
13
  logger?.debug?.(`The specification ${retrievedModel.modelPath} has transform, the conversion to reference will be ignored`);
12
14
  return specification;
13
15
  }
16
+ logger?.debug?.(`Converting specification ${retrievedModel.modelPath} to a $ref`);
14
17
  return {
15
- $ref: relative(retrievedModel.outputFilePath, retrievedModel.modelPath),
16
- ...Object.fromEntries(Object.entries(retrievedModel).filter(([key]) => key.startsWith('x-')))
18
+ ...Object.fromEntries(Object.entries(retrievedModel).filter(([key]) => key.startsWith('x-'))),
19
+ [GENERATED_REF_PROPERTY_KEY]: true,
20
+ $ref: relative(dirname(retrievedModel.outputFilePath), retrievedModel.modelPath).replaceAll(sep, posix.sep)
17
21
  };
18
22
  };
19
23
  //# sourceMappingURL=to-reference.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"to-reference.mjs","sourceRoot":"","sources":["../../../../src/core/transforms/to-reference.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,GACT,MAAM,WAAW,CAAC;AAanB;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAmB,aAAgB,EAAE,cAAwC,EAAE,MAAe,EAA8B,EAAE;IACvJ,IAAI,cAAc,CAAC,SAAS,EAAE,CAAC;QAC7B,MAAM,EAAE,KAAK,EAAE,CAAC,qBAAqB,cAAc,CAAC,SAAS,6DAA6D,CAAC,CAAC;QAC5H,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC,cAAc,EAAE,cAAc,CAAC,SAAS,CAAC;QACvE,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;KAC9F,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"to-reference.mjs","sourceRoot":"","sources":["../../../../src/core/transforms/to-reference.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,KAAK,EACL,QAAQ,EACR,GAAG,GACJ,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,0BAA0B,GAC3B,MAAM,qBAAqB,CAAC;AAiB7B;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAA8B,aAAgB,EAAE,cAAwC,EAAE,OAAgB,EAA8B,EAAE;IACnK,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC3B,IAAI,cAAc,CAAC,SAAS,EAAE,CAAC;QAC7B,MAAM,EAAE,KAAK,EAAE,CAAC,qBAAqB,cAAc,CAAC,SAAS,6DAA6D,CAAC,CAAC;QAC5H,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,CAAC,4BAA4B,cAAc,CAAC,SAAS,YAAY,CAAC,CAAC;IAClF,OAAO;QACL,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7F,CAAC,0BAA0B,CAAC,EAAE,IAAI;QAClC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;KAC5G,CAAC;AACJ,CAAC,CAAC"}
@@ -1,7 +1,11 @@
1
- import type { Logger } from '../../logger.mjs';
1
+ import type { Context } from '../../context.mjs';
2
2
  import type { RetrievedDependencyModel } from '../manifest/extract-dependency-models.mjs';
3
+ /**
4
+ * Specification file as supported by {@link https://redocly.com/| Redocly}
5
+ */
6
+ export type SpecificationFile = Record<string, any>;
3
7
  /**
4
8
  * Transform a specification with specified transformation function
5
9
  */
6
- export type Transform<S extends object = object, T = any> = (specification: S, retrievedModel: RetrievedDependencyModel, logger?: Logger) => T | Promise<T>;
10
+ export type Transform<S extends SpecificationFile = SpecificationFile, T = any> = (specification: S, retrievedModel: RetrievedDependencyModel, context: Context) => T | Promise<T>;
7
11
  //# sourceMappingURL=transform.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transform.d.mts","sourceRoot":"","sources":["../../../../src/core/transforms/transform.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EACP,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACV,wBAAwB,EACzB,MAAM,2CAA2C,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"transform.d.mts","sourceRoot":"","sources":["../../../../src/core/transforms/transform.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACR,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EACV,wBAAwB,EACzB,MAAM,2CAA2C,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEpD;;GAEG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,cAAc,EAAE,wBAAwB,EAAE,OAAO,EAAE,OAAO,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC"}
@@ -1,15 +1,11 @@
1
- import { REF_REWRITE_PROPERTY_KEY } from '../../constants.mjs';
2
- import type { Logger } from '../../logger.mjs';
1
+ import type { Context } from '../../context.mjs';
3
2
  import type { RetrievedDependencyModel } from '../manifest/extract-dependency-models.mjs';
4
- type AdditionalAnnotation = {
5
- [REF_REWRITE_PROPERTY_KEY]: boolean;
6
- };
3
+ import type { SpecificationFile } from './transform.mjs';
7
4
  /**
8
5
  * Update the $ref references in the specification to be relative to the model path
9
6
  * @param specification
10
7
  * @param receivedModel
11
- * @param _logger
8
+ * @param context
12
9
  */
13
- export declare const updateReferences: <S extends object>(specification: S, receivedModel: RetrievedDependencyModel, _logger?: Logger) => S & AdditionalAnnotation;
14
- export {};
10
+ export declare const updateReferences: <S extends SpecificationFile>(specification: S, receivedModel: RetrievedDependencyModel, context: Context) => S;
15
11
  //# sourceMappingURL=update-references.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"update-references.d.mts","sourceRoot":"","sources":["../../../../src/core/transforms/update-references.mts"],"names":[],"mappings":"AAQA,OAAO,EACL,wBAAwB,EACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,MAAM,EACP,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACV,wBAAwB,EACzB,MAAM,2CAA2C,CAAC;AAMnD,KAAK,oBAAoB,GAAG;IAC1B,CAAC,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACrC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,MAAM,EAAE,eAAe,CAAC,EAAE,eAAe,wBAAwB,EAAE,UAAU,MAAM,KAAG,CAAC,GAAG,oBA4BpI,CAAC"}
1
+ {"version":3,"file":"update-references.d.mts","sourceRoot":"","sources":["../../../../src/core/transforms/update-references.mts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,OAAO,EACR,MAAM,mBAAmB,CAAC;AAI3B,OAAO,KAAK,EACV,wBAAwB,EACzB,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,EACV,iBAAiB,EAClB,MAAM,iBAAiB,CAAC;AAEzB;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,iBAAiB,EAAE,eAAe,CAAC,EAAE,eAAe,wBAAwB,EAAE,SAAS,OAAO,KAAG,CAoD3I,CAAC"}
@@ -1,17 +1,14 @@
1
- import { isAbsolute, resolve, } from 'node:path';
2
- import { dirname, relative, } from 'node:path/posix';
3
- import { REF_REWRITE_PROPERTY_KEY, } from '../../constants.mjs';
4
- const isRelativePath = (path) => {
5
- return !URL.canParse(path) && !isAbsolute(path);
6
- };
1
+ import { basename, dirname, posix, relative, resolve, sep, } from 'node:path';
2
+ import { GENERATED_REF_PROPERTY_KEY, REF_REWRITTEN_PROPERTY_KEY, } from '../../constants.mjs';
3
+ import { isRelativePath, } from '../file-system/relative-path.mjs';
7
4
  /**
8
5
  * Update the $ref references in the specification to be relative to the model path
9
6
  * @param specification
10
7
  * @param receivedModel
11
- * @param _logger
8
+ * @param context
12
9
  */
13
- export const updateReferences = (specification, receivedModel, _logger) => {
14
- let hasTouchedReference = false;
10
+ export const updateReferences = (specification, receivedModel, context) => {
11
+ const { logger } = context;
15
12
  const walkSpecification = (specItem) => {
16
13
  if (typeof specItem === 'object') {
17
14
  if (specItem === null) {
@@ -21,19 +18,40 @@ export const updateReferences = (specification, receivedModel, _logger) => {
21
18
  // eslint-disable-next-line @typescript-eslint/no-unsafe-return -- due to unknown object structure
22
19
  return specItem.map((item) => walkSpecification(item));
23
20
  }
24
- return Object.fromEntries(Object.entries(specItem).map(([key, value]) => {
21
+ let hasTouchedReference = false;
22
+ const newSpecItem = Object.fromEntries(Object.entries(specItem).map(([key, value]) => {
25
23
  if (key === '$ref' && typeof value === 'string' && isRelativePath(value)) {
26
- value = relative(dirname(receivedModel.outputFilePath), resolve(dirname(receivedModel.modelPath), value));
27
- hasTouchedReference = true;
24
+ if (GENERATED_REF_PROPERTY_KEY in specItem && !!specItem[GENERATED_REF_PROPERTY_KEY]) {
25
+ logger?.debug?.(`Skipping the rewriting of the generated $ref reference "${value}" in model from ${receivedModel.artifactName} at ${receivedModel.modelPath}`);
26
+ }
27
+ else {
28
+ if (value.startsWith('#')) {
29
+ const localRefItem = value.slice(1).split('/').reduce((acc, part) => part ? acc?.[part] : acc, specification);
30
+ if (localRefItem) {
31
+ logger?.debug?.(`The local reference "${value}" in model from ${receivedModel.artifactName} at ${receivedModel.modelPath} `
32
+ + 'is still valid, no rewriting needed');
33
+ return [key, value];
34
+ }
35
+ logger?.debug?.(`The local reference "${value}" in model from ${receivedModel.artifactName} at ${receivedModel.modelPath} `
36
+ + 'is not valid anymore, the original model will be used as base for rewriting');
37
+ value = basename(receivedModel.modelPath) + value;
38
+ }
39
+ const rewrittenReference = relative(dirname(receivedModel.outputFilePath), resolve(dirname(receivedModel.modelPath), value)).replaceAll(sep, posix.sep);
40
+ logger?.debug?.(`Rewriting $ref reference "${value}" to "${rewrittenReference}" in model from ${receivedModel.artifactName} at ${receivedModel.modelPath}`);
41
+ value = rewrittenReference;
42
+ hasTouchedReference = true;
43
+ }
44
+ return [key, value];
28
45
  }
29
46
  return [key, walkSpecification(value)];
30
47
  }));
48
+ return {
49
+ ...newSpecItem,
50
+ ...(hasTouchedReference ? { [REF_REWRITTEN_PROPERTY_KEY]: true } : {})
51
+ };
31
52
  }
32
53
  return specItem;
33
54
  };
34
- return {
35
- ...walkSpecification(specification),
36
- [REF_REWRITE_PROPERTY_KEY]: hasTouchedReference
37
- };
55
+ return walkSpecification(specification);
38
56
  };
39
57
  //# sourceMappingURL=update-references.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"update-references.mjs","sourceRoot":"","sources":["../../../../src/core/transforms/update-references.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,OAAO,GACR,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,OAAO,EACP,QAAQ,GACT,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAQ7B,MAAM,cAAc,GAAG,CAAC,IAAY,EAAW,EAAE;IAC/C,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAClD,CAAC,CAAC;AAMF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAmB,aAAgB,EAAE,aAAuC,EAAE,OAAgB,EAA4B,EAAE;IAC1J,IAAI,mBAAmB,GAAG,KAAK,CAAC;IAChC,MAAM,iBAAiB,GAAG,CAAK,QAAW,EAAK,EAAE;QAC/C,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACtB,OAAO,QAAQ,CAAC;YAClB,CAAC;YAED,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5B,kGAAkG;gBAClG,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAM,CAAC;YAC9D,CAAC;YAED,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,QAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBAChF,IAAI,GAAG,KAAK,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzE,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;oBAC1G,mBAAmB,GAAG,IAAI,CAAC;gBAC7B,CAAC;gBACD,OAAO,CAAC,GAAG,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;YACzC,CAAC,CAAC,CAAM,CAAC;QACX,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO;QACL,GAAG,iBAAiB,CAAC,aAAa,CAAC;QACnC,CAAC,wBAAwB,CAAC,EAAE,mBAAmB;KAChD,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"update-references.mjs","sourceRoot":"","sources":["../../../../src/core/transforms/update-references.mts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.mts","sourceRoot":"","sources":["../../src/main.mts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EACV,MAAM,EACP,MAAM,cAAc,CAAC;AAEtB,uCAAuC;AACvC,MAAM,WAAW,0BAA0B;IACzC,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAU,yBAAwB,EAAE,UAAU,0BAA0B,KAAG,OAAO,CAAC,IAAI,CA2CtH,CAAC"}
1
+ {"version":3,"file":"main.d.mts","sourceRoot":"","sources":["../../src/main.mts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EACV,MAAM,EACP,MAAM,cAAc,CAAC;AAEtB,uCAAuC;AACvC,MAAM,WAAW,0BAA0B;IACzC,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAU,yBAAwB,EAAE,UAAU,0BAA0B,KAAG,OAAO,CAAC,IAAI,CA6BtH,CAAC"}
package/src/main.mjs CHANGED
@@ -1,14 +1,8 @@
1
1
  import { cwd, } from 'node:process';
2
2
  import { cleanOutputDirectory, } from './core/file-system/cleaner.mjs';
3
- import { writeModelFile, } from './core/file-system/write-model.mjs';
4
3
  import { extractDependencyModels, } from './core/manifest/extract-dependency-models.mjs';
5
4
  import { retrieveManifest, } from './core/manifest/manifest.mjs';
6
- import { deserialize, serialize, } from './core/serialization.mjs';
7
- import { addAnnotation, } from './core/transforms/add-annotation.mjs';
8
- import { applyMask, } from './core/transforms/apply-mask.mjs';
9
- import { renameTitle, } from './core/transforms/rename.mjs';
10
- import { toReference, } from './core/transforms/to-reference.mjs';
11
- import { updateReferences, } from './core/transforms/update-references.mjs';
5
+ import { processModel, } from './core/process.mjs';
12
6
  /**
13
7
  * Run the process to download and write dependency models
14
8
  * @param workingDirectory
@@ -17,33 +11,23 @@ import { updateReferences, } from './core/transforms/update-references.mjs';
17
11
  export const installDependencies = async (workingDirectory = cwd(), options) => {
18
12
  const { logger = console } = options || {};
19
13
  const manifest = await retrieveManifest(workingDirectory, logger);
14
+ const context = {
15
+ cwd: workingDirectory,
16
+ logger
17
+ };
20
18
  if (!manifest) {
21
19
  logger?.info('No Manifest file discovered');
22
20
  return;
23
21
  }
24
- await cleanOutputDirectory(workingDirectory);
25
- const models = extractDependencyModels(workingDirectory, manifest, logger);
26
- await cleanOutputDirectory(workingDirectory);
27
- const results = await Promise.allSettled(models
28
- .map(async (retrievedModelPromise) => {
29
- const retrievedModel = await retrievedModelPromise;
30
- logger?.debug?.(`Retrieving model from ${retrievedModel.artifactName} at ${retrievedModel.modelPath}`);
31
- const modelObj = deserialize(retrievedModel.content, retrievedModel);
32
- const transforms = [toReference, addAnnotation, applyMask, updateReferences, renameTitle];
33
- transforms.reduce((acc, transform) => transform(acc, retrievedModel, logger), deserialize(retrievedModel.content, retrievedModel));
34
- return {
35
- ...retrievedModel,
36
- content: serialize(modelObj, retrievedModel)
37
- };
38
- })
39
- .map(async (processedModel) => {
40
- await writeModelFile(await processedModel);
41
- }));
22
+ await cleanOutputDirectory(context);
23
+ const models = extractDependencyModels(manifest, context);
24
+ const results = await Promise.allSettled(processModel(models, context));
42
25
  const rejected = results
43
26
  .filter((result) => result.status === 'rejected');
44
27
  if (rejected.length > 0) {
45
28
  logger?.error(`Failed to retrieve some models:`);
46
29
  rejected.forEach((result) => logger?.error(result.reason));
30
+ await cleanOutputDirectory(context);
47
31
  throw new Error('Failed to retrieve some models');
48
32
  }
49
33
  logger?.info(`Successfully retrieved all models`);
package/src/main.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.mjs","sourceRoot":"","sources":["../../src/main.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main.mjs","sourceRoot":"","sources":["../../src/main.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,GAAG,GACJ,MAAM,cAAc,CAAC;AAItB,OAAO,EACL,oBAAoB,GACrB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,uBAAuB,GACxB,MAAM,+CAA+C,CAAC;AACvD,OAAO,EACL,gBAAgB,GACjB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,YAAY,GACb,MAAM,oBAAoB,CAAC;AAW5B;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAE,gBAAgB,GAAG,GAAG,EAAE,EAAE,OAAoC,EAAiB,EAAE;IACzH,MAAM,EAAE,MAAM,GAAG,OAAO,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAC3C,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAClE,MAAM,OAAO,GAAG;QACd,GAAG,EAAE,gBAAgB;QACrB,MAAM;KACW,CAAC;IAEpB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,EAAE,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC5C,OAAO;IACT,CAAC;IAED,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,uBAAuB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAE1D,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAExE,MAAM,QAAQ,GAAG,OAAO;SACrB,MAAM,CAAC,CAAC,MAAM,EAAmC,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC;IAErF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,EAAE,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACjD,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3D,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,EAAE,IAAI,CAAC,mCAAmC,CAAC,CAAC;AACpD,CAAC,CAAC"}