@xpack/xpm-lib 3.1.2 → 4.0.0

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 (202) hide show
  1. package/README.md +16 -212
  2. package/dist/classes/actions.d.ts +58 -0
  3. package/dist/classes/actions.d.ts.map +1 -0
  4. package/dist/classes/actions.js +250 -0
  5. package/dist/classes/actions.js.map +1 -0
  6. package/dist/classes/build-configurations.d.ts +78 -0
  7. package/dist/classes/build-configurations.d.ts.map +1 -0
  8. package/dist/classes/build-configurations.js +489 -0
  9. package/dist/classes/build-configurations.js.map +1 -0
  10. package/dist/classes/combinations-generator.d.ts +19 -0
  11. package/dist/classes/combinations-generator.d.ts.map +1 -0
  12. package/dist/classes/combinations-generator.js +48 -0
  13. package/dist/classes/combinations-generator.js.map +1 -0
  14. package/dist/classes/data-model.d.ts +21 -0
  15. package/dist/classes/data-model.d.ts.map +1 -0
  16. package/dist/classes/data-model.js +47 -0
  17. package/dist/classes/data-model.js.map +1 -0
  18. package/dist/classes/errors.d.ts +13 -0
  19. package/dist/classes/errors.d.ts.map +1 -0
  20. package/dist/classes/errors.js +13 -0
  21. package/dist/classes/errors.js.map +1 -0
  22. package/dist/classes/init-template-base.d.ts +47 -0
  23. package/dist/classes/init-template-base.d.ts.map +1 -0
  24. package/dist/classes/init-template-base.js +358 -0
  25. package/dist/classes/init-template-base.js.map +1 -0
  26. package/dist/classes/liquid-drop.d.ts +28 -0
  27. package/dist/classes/liquid-drop.d.ts.map +1 -0
  28. package/dist/classes/liquid-drop.js +70 -0
  29. package/dist/classes/liquid-drop.js.map +1 -0
  30. package/dist/classes/liquid-engine.d.ts +7 -0
  31. package/dist/classes/liquid-engine.d.ts.map +1 -0
  32. package/dist/classes/liquid-engine.js +72 -0
  33. package/dist/classes/liquid-engine.js.map +1 -0
  34. package/dist/classes/package.d.ts +31 -0
  35. package/dist/classes/package.d.ts.map +1 -0
  36. package/dist/classes/package.js +268 -0
  37. package/dist/classes/package.js.map +1 -0
  38. package/dist/classes/platform-detector.d.ts +14 -0
  39. package/dist/classes/platform-detector.d.ts.map +1 -0
  40. package/dist/classes/platform-detector.js +26 -0
  41. package/dist/classes/platform-detector.js.map +1 -0
  42. package/dist/classes/policies.d.ts +14 -0
  43. package/dist/classes/policies.d.ts.map +1 -0
  44. package/dist/classes/policies.js +20 -0
  45. package/dist/classes/policies.js.map +1 -0
  46. package/dist/classes/template-expander.d.ts +29 -0
  47. package/dist/classes/template-expander.d.ts.map +1 -0
  48. package/dist/classes/template-expander.js +62 -0
  49. package/dist/classes/template-expander.js.map +1 -0
  50. package/dist/data/substitutions-variables.d.ts +43 -0
  51. package/dist/data/substitutions-variables.d.ts.map +1 -0
  52. package/dist/{lib → data}/substitutions-variables.js +1 -16
  53. package/dist/data/substitutions-variables.js.map +1 -0
  54. package/dist/functions/chmod-recursively.d.ts +9 -0
  55. package/dist/functions/chmod-recursively.d.ts.map +1 -0
  56. package/dist/functions/chmod-recursively.js +66 -0
  57. package/dist/functions/chmod-recursively.js.map +1 -0
  58. package/dist/functions/filter-paths.d.ts +5 -0
  59. package/dist/functions/filter-paths.d.ts.map +1 -0
  60. package/dist/functions/filter-paths.js +16 -0
  61. package/dist/functions/filter-paths.js.map +1 -0
  62. package/dist/functions/is-something.d.ts +9 -0
  63. package/dist/functions/is-something.d.ts.map +1 -0
  64. package/dist/functions/is-something.js +25 -0
  65. package/dist/functions/is-something.js.map +1 -0
  66. package/dist/functions/matrix-expander.d.ts +17 -0
  67. package/dist/functions/matrix-expander.d.ts.map +1 -0
  68. package/dist/functions/matrix-expander.js +52 -0
  69. package/dist/functions/matrix-expander.js.map +1 -0
  70. package/dist/functions/perform-substitutions.d.ts +12 -0
  71. package/dist/functions/perform-substitutions.d.ts.map +1 -0
  72. package/dist/functions/perform-substitutions.js +76 -0
  73. package/dist/functions/perform-substitutions.js.map +1 -0
  74. package/dist/functions/utils.d.ts +8 -0
  75. package/dist/functions/utils.d.ts.map +1 -0
  76. package/dist/functions/utils.js +16 -0
  77. package/dist/functions/utils.js.map +1 -0
  78. package/dist/index.d.ts +22 -15
  79. package/dist/index.d.ts.map +1 -1
  80. package/dist/index.js +22 -29
  81. package/dist/index.js.map +1 -1
  82. package/dist/{lib/types.d.ts → types/json.d.ts} +31 -22
  83. package/dist/types/json.d.ts.map +1 -0
  84. package/dist/types/json.js +2 -0
  85. package/dist/types/json.js.map +1 -0
  86. package/dist/types/xpm-init-template.d.ts +21 -0
  87. package/dist/types/xpm-init-template.d.ts.map +1 -0
  88. package/dist/types/xpm-init-template.js +2 -0
  89. package/dist/types/xpm-init-template.js.map +1 -0
  90. package/dist/types/xpm.d.ts +16 -0
  91. package/dist/types/xpm.d.ts.map +1 -0
  92. package/dist/types/xpm.js +2 -0
  93. package/dist/types/xpm.js.map +1 -0
  94. package/package.json +53 -44
  95. package/src/CODE-REVIEW.md +2167 -0
  96. package/src/README.md +393 -6
  97. package/src/classes/actions.ts +1157 -0
  98. package/src/classes/build-configurations.ts +2127 -0
  99. package/src/classes/combinations-generator.ts +331 -0
  100. package/src/classes/data-model.ts +337 -0
  101. package/src/classes/errors.ts +105 -0
  102. package/src/classes/init-template-base.ts +1028 -0
  103. package/src/classes/liquid-drop.ts +376 -0
  104. package/src/classes/liquid-engine.ts +249 -0
  105. package/src/classes/package.ts +765 -0
  106. package/src/classes/platform-detector.ts +237 -0
  107. package/src/classes/policies.ts +200 -0
  108. package/src/classes/template-expander.ts +330 -0
  109. package/src/data/substitutions-variables.ts +390 -0
  110. package/src/functions/chmod-recursively.ts +195 -0
  111. package/src/functions/filter-paths.ts +126 -0
  112. package/src/functions/is-something.ts +223 -0
  113. package/src/functions/matrix-expander.ts +172 -0
  114. package/src/functions/perform-substitutions.ts +253 -0
  115. package/src/functions/utils.ts +151 -0
  116. package/src/index.ts +72 -19
  117. package/src/types/json.ts +519 -0
  118. package/src/types/xpm-init-template.ts +282 -0
  119. package/src/types/xpm.ts +162 -0
  120. package/dist/lib/chmod-recursive.d.ts +0 -7
  121. package/dist/lib/chmod-recursive.d.ts.map +0 -1
  122. package/dist/lib/chmod-recursive.js +0 -81
  123. package/dist/lib/chmod-recursive.js.map +0 -1
  124. package/dist/lib/errors.d.ts +0 -11
  125. package/dist/lib/errors.d.ts.map +0 -1
  126. package/dist/lib/errors.js +0 -26
  127. package/dist/lib/errors.js.map +0 -1
  128. package/dist/lib/functions/chmod-recursive.d.ts +0 -7
  129. package/dist/lib/functions/chmod-recursive.d.ts.map +0 -1
  130. package/dist/lib/functions/chmod-recursive.js +0 -81
  131. package/dist/lib/functions/chmod-recursive.js.map +0 -1
  132. package/dist/lib/functions/perform-substitutions.d.ts +0 -20
  133. package/dist/lib/functions/perform-substitutions.d.ts.map +0 -1
  134. package/dist/lib/functions/perform-substitutions.js +0 -85
  135. package/dist/lib/functions/perform-substitutions.js.map +0 -1
  136. package/dist/lib/functions/utils.d.ts +0 -30
  137. package/dist/lib/functions/utils.d.ts.map +0 -1
  138. package/dist/lib/functions/utils.js +0 -70
  139. package/dist/lib/functions/utils.js.map +0 -1
  140. package/dist/lib/init-template-base.d.ts +0 -46
  141. package/dist/lib/init-template-base.d.ts.map +0 -1
  142. package/dist/lib/init-template-base.js +0 -281
  143. package/dist/lib/init-template-base.js.map +0 -1
  144. package/dist/lib/liquid-actions.d.ts +0 -37
  145. package/dist/lib/liquid-actions.d.ts.map +0 -1
  146. package/dist/lib/liquid-actions.js +0 -148
  147. package/dist/lib/liquid-actions.js.map +0 -1
  148. package/dist/lib/liquid-build-configurations.d.ts +0 -47
  149. package/dist/lib/liquid-build-configurations.d.ts.map +0 -1
  150. package/dist/lib/liquid-build-configurations.js +0 -282
  151. package/dist/lib/liquid-build-configurations.js.map +0 -1
  152. package/dist/lib/liquid-drop.d.ts +0 -13
  153. package/dist/lib/liquid-drop.d.ts.map +0 -1
  154. package/dist/lib/liquid-drop.js +0 -56
  155. package/dist/lib/liquid-drop.js.map +0 -1
  156. package/dist/lib/liquid-engine.d.ts +0 -5
  157. package/dist/lib/liquid-engine.d.ts.map +0 -1
  158. package/dist/lib/liquid-engine.js +0 -85
  159. package/dist/lib/liquid-engine.js.map +0 -1
  160. package/dist/lib/liquid-package.d.ts +0 -17
  161. package/dist/lib/liquid-package.d.ts.map +0 -1
  162. package/dist/lib/liquid-package.js +0 -70
  163. package/dist/lib/liquid-package.js.map +0 -1
  164. package/dist/lib/package.d.ts +0 -66
  165. package/dist/lib/package.d.ts.map +0 -1
  166. package/dist/lib/package.js +0 -700
  167. package/dist/lib/package.js.map +0 -1
  168. package/dist/lib/perform-substitutions.d.ts +0 -20
  169. package/dist/lib/perform-substitutions.d.ts.map +0 -1
  170. package/dist/lib/perform-substitutions.js +0 -85
  171. package/dist/lib/perform-substitutions.js.map +0 -1
  172. package/dist/lib/policies.d.ts +0 -14
  173. package/dist/lib/policies.d.ts.map +0 -1
  174. package/dist/lib/policies.js +0 -33
  175. package/dist/lib/policies.js.map +0 -1
  176. package/dist/lib/substitutions-variables.d.ts +0 -117
  177. package/dist/lib/substitutions-variables.d.ts.map +0 -1
  178. package/dist/lib/substitutions-variables.js.map +0 -1
  179. package/dist/lib/types.d.ts.map +0 -1
  180. package/dist/lib/types.js +0 -13
  181. package/dist/lib/types.js.map +0 -1
  182. package/dist/lib/utils.d.ts +0 -30
  183. package/dist/lib/utils.d.ts.map +0 -1
  184. package/dist/lib/utils.js +0 -70
  185. package/dist/lib/utils.js.map +0 -1
  186. package/dist/tsconfig.tsbuildinfo +0 -1
  187. package/src/lib/errors.ts +0 -29
  188. package/src/lib/functions/chmod-recursive.ts +0 -103
  189. package/src/lib/functions/perform-substitutions.ts +0 -116
  190. package/src/lib/functions/utils.ts +0 -88
  191. package/src/lib/init-template-base.ts +0 -408
  192. package/src/lib/liquid-actions.ts +0 -223
  193. package/src/lib/liquid-build-configurations.ts +0 -433
  194. package/src/lib/liquid-drop.ts +0 -99
  195. package/src/lib/liquid-engine.ts +0 -135
  196. package/src/lib/liquid-package.ts +0 -108
  197. package/src/lib/package.ts +0 -947
  198. package/src/lib/policies.ts +0 -51
  199. package/src/lib/substitutions-variables.ts +0 -177
  200. package/src/lib/types.ts +0 -109
  201. package/src/package.json +0 -3
  202. package/src/tsconfig.json +0 -10
@@ -0,0 +1,489 @@
1
+ import assert from 'node:assert';
2
+ import * as path from 'node:path';
3
+ import * as os from 'node:os';
4
+ import { filterPath } from '../functions/filter-paths.js';
5
+ import { isJsonObject, isString } from '../functions/is-something.js';
6
+ import { getErrorMessage, hasLiquidSyntax } from '../functions/utils.js';
7
+ import { performSubstitutions } from '../functions/perform-substitutions.js';
8
+ import { Actions } from './actions.js';
9
+ import { buildFolderRelativePathPropertyName } from './data-model.js';
10
+ import { ConfigurationError } from './errors.js';
11
+ import { TemplateExpander } from './template-expander.js';
12
+ export class BuildConfigurations {
13
+ log;
14
+ engine;
15
+ substitutionsVariables;
16
+ jsonBuildConfigurations;
17
+ _buildConfigurationsMap = new Map();
18
+ _jsonBuildConfigurationsNamesMap = new Map();
19
+ _namesSet = new Set();
20
+ _isInitialised = false;
21
+ _names = [];
22
+ constructor({ engine, substitutionsVariables, jsonBuildConfigurations, log, }) {
23
+ assert(log, 'log is required');
24
+ assert(engine, 'engine is required');
25
+ assert(substitutionsVariables, 'substitutionsVariables is required');
26
+ log.trace(`${BuildConfigurations.name}()`);
27
+ this.log = log;
28
+ this.engine = engine;
29
+ this.substitutionsVariables = substitutionsVariables;
30
+ this.jsonBuildConfigurations = jsonBuildConfigurations ?? {};
31
+ }
32
+ async initialise() {
33
+ const log = this.log;
34
+ if (this._isInitialised) {
35
+ log.trace(`${BuildConfigurations.name}.initialise() again`);
36
+ return false;
37
+ }
38
+ log.trace(`${BuildConfigurations.name}.initialise()`);
39
+ for (const [buildConfigurationName, jsonBuildConfiguration,] of Object.entries(this.jsonBuildConfigurations)) {
40
+ if (hasLiquidSyntax(buildConfigurationName)) {
41
+ await this._processTemplate({
42
+ buildConfigurationName,
43
+ jsonBuildConfigurationTemplate: jsonBuildConfiguration,
44
+ });
45
+ }
46
+ else {
47
+ if (this._namesSet.has(buildConfigurationName)) {
48
+ throw new ConfigurationError(`build configuration name ` +
49
+ `"${buildConfigurationName}" already defined`);
50
+ }
51
+ else {
52
+ this._buildConfigurationsMap.set(buildConfigurationName, undefined);
53
+ this._jsonBuildConfigurationsNamesMap.set(buildConfigurationName, buildConfigurationName);
54
+ this._namesSet.add(buildConfigurationName);
55
+ }
56
+ }
57
+ }
58
+ const names = Array.from(this._buildConfigurationsMap.keys());
59
+ this._names = names;
60
+ log.trace(`${BuildConfigurations.name}.initialise() =>`, names);
61
+ this._isInitialised = true;
62
+ return true;
63
+ }
64
+ get size() {
65
+ assert(this._isInitialised, 'BuildConfigurations collection must be initialised before ' +
66
+ 'accessing size');
67
+ return this._buildConfigurationsMap.size;
68
+ }
69
+ get isEmpty() {
70
+ assert(this._isInitialised, 'BuildConfigurations collection must be initialised before ' +
71
+ 'accessing isEmpty');
72
+ return this._buildConfigurationsMap.size === 0;
73
+ }
74
+ get names() {
75
+ assert(this._isInitialised, 'BuildConfigurations collection must be initialised before ' +
76
+ 'accessing names');
77
+ return this._names;
78
+ }
79
+ getJsonName(buildConfigurationName) {
80
+ assert(this._isInitialised, 'BuildConfigurations collection must be initialised before ' +
81
+ 'accessing getJsonName()');
82
+ const name = this._jsonBuildConfigurationsNamesMap.get(buildConfigurationName);
83
+ if (name === undefined) {
84
+ throw new ConfigurationError(`build configuration "${buildConfigurationName}" does not exist`);
85
+ }
86
+ return name;
87
+ }
88
+ hasJson(buildConfigurationName) {
89
+ assert(this._isInitialised, 'BuildConfigurations collection must be initialised before ' +
90
+ 'accessing hasJson()');
91
+ return this._jsonBuildConfigurationsNamesMap.has(buildConfigurationName);
92
+ }
93
+ getJson(buildConfigurationName) {
94
+ assert(this._isInitialised, 'BuildConfigurations collection must be initialised before ' +
95
+ 'accessing getJson()');
96
+ return this.jsonBuildConfigurations[this.getJsonName(buildConfigurationName)];
97
+ }
98
+ isHidden(buildConfigurationName) {
99
+ assert(this._isInitialised, 'BuildConfigurations collection must be initialised before ' +
100
+ 'accessing isHidden()');
101
+ const jsonBuildConfigurationName = this.getJsonName(buildConfigurationName);
102
+ if (jsonBuildConfigurationName.includes('{{')) {
103
+ const jsonBuildConfigurationTemplate = this.jsonBuildConfigurations[jsonBuildConfigurationName];
104
+ return jsonBuildConfigurationTemplate.template.hidden ?? false;
105
+ }
106
+ const jsonBuildConfigurationContent = this
107
+ .jsonBuildConfigurations[jsonBuildConfigurationName];
108
+ return jsonBuildConfigurationContent.hidden ?? false;
109
+ }
110
+ has(buildConfigurationName) {
111
+ assert(this._isInitialised, 'BuildConfigurations collection must be initialised before ' +
112
+ 'accessing has()');
113
+ return this._buildConfigurationsMap.has(buildConfigurationName);
114
+ }
115
+ get(buildConfigurationName) {
116
+ assert(this._isInitialised, 'BuildConfigurations collection must be initialised before ' +
117
+ 'accessing get()');
118
+ const log = this.log;
119
+ log.trace(`${BuildConfigurations.name}.get(${buildConfigurationName})`);
120
+ let buildConfiguration = this._buildConfigurationsMap.get(buildConfigurationName);
121
+ if (buildConfiguration === undefined) {
122
+ const jsonBuildConfigurationName = this.getJsonName(buildConfigurationName);
123
+ const jsonBuildConfiguration = (this
124
+ .jsonBuildConfigurations[jsonBuildConfigurationName] ??
125
+ {});
126
+ buildConfiguration = new BuildConfiguration({
127
+ buildConfigurationName,
128
+ jsonBuildConfiguration,
129
+ parentBuildConfigurations: this,
130
+ });
131
+ this._buildConfigurationsMap.set(buildConfigurationName, buildConfiguration);
132
+ }
133
+ return buildConfiguration;
134
+ }
135
+ async _processTemplate({ buildConfigurationName, jsonBuildConfigurationTemplate, }) {
136
+ try {
137
+ const expandedBuildConfigurationsMap = await this._expandTemplateBuildConfigurations({
138
+ buildConfigurationName,
139
+ jsonBuildConfigurationTemplate,
140
+ });
141
+ for (const [expandedBuildConfigurationName, expandedBuildConfiguration,] of expandedBuildConfigurationsMap) {
142
+ if (this._namesSet.has(expandedBuildConfigurationName)) {
143
+ throw new ConfigurationError(`duplicate build configuration name ` +
144
+ `"${expandedBuildConfigurationName}" ` +
145
+ `could not be generated from template.`);
146
+ }
147
+ else {
148
+ this._buildConfigurationsMap.set(expandedBuildConfigurationName, expandedBuildConfiguration);
149
+ this._jsonBuildConfigurationsNamesMap.set(expandedBuildConfigurationName, buildConfigurationName);
150
+ this._namesSet.add(expandedBuildConfigurationName);
151
+ }
152
+ }
153
+ }
154
+ catch (error) {
155
+ const message = getErrorMessage(error) +
156
+ ` in buildConfiguration "${buildConfigurationName}"`;
157
+ throw new ConfigurationError(message);
158
+ }
159
+ }
160
+ async _expandTemplateBuildConfigurations({ buildConfigurationName, jsonBuildConfigurationTemplate, }) {
161
+ const log = this.log;
162
+ log.trace(`${BuildConfigurations.name}.` +
163
+ `#expandTemplateBuildConfigurations(${buildConfigurationName})`);
164
+ if (!isJsonObject(jsonBuildConfigurationTemplate.matrix)) {
165
+ throw new ConfigurationError(`buildConfiguration "${buildConfigurationName}" ` +
166
+ `matrix is not an object`);
167
+ }
168
+ if (!isJsonObject(jsonBuildConfigurationTemplate.template)) {
169
+ throw new ConfigurationError(`buildConfiguration "${buildConfigurationName}" ` +
170
+ `template is not a JSON object`);
171
+ }
172
+ const expander = new TemplateExpander({
173
+ engine: this.engine,
174
+ substitutionsVariables: this.substitutionsVariables,
175
+ log: this.log,
176
+ });
177
+ return await expander.expandTemplate({
178
+ templateName: buildConfigurationName,
179
+ matrix: jsonBuildConfigurationTemplate.matrix,
180
+ templateContent: jsonBuildConfigurationTemplate.template,
181
+ templateType: 'buildConfiguration',
182
+ instanceFactory: (expandedName, combination, templateContent, originalTemplateName) => new BuildConfiguration({
183
+ buildConfigurationName: expandedName,
184
+ templateBuildConfigurationName: originalTemplateName,
185
+ jsonBuildConfiguration: templateContent,
186
+ parentBuildConfigurations: this,
187
+ matrixParameters: { ...combination },
188
+ }),
189
+ });
190
+ }
191
+ }
192
+ export class BuildConfiguration {
193
+ name;
194
+ templateName;
195
+ parentBuildConfigurations;
196
+ inheritsNames = [];
197
+ isHidden;
198
+ properties = {};
199
+ dependencies = {};
200
+ devDependencies = {};
201
+ jsonBuildConfiguration;
202
+ isTemplate;
203
+ _log;
204
+ _substitutionsVariables;
205
+ matrixParameters;
206
+ _actions;
207
+ _buildFolderRelativePath;
208
+ _inheritedNamesSet = new Set();
209
+ _isInitialised = false;
210
+ constructor({ buildConfigurationName, templateBuildConfigurationName, jsonBuildConfiguration, parentBuildConfigurations, matrixParameters, }) {
211
+ assert(buildConfigurationName, 'buildConfigurationName is required');
212
+ assert(jsonBuildConfiguration, 'jsonBuildConfiguration is required');
213
+ assert(parentBuildConfigurations, 'parentBuildConfigurations is required');
214
+ const log = parentBuildConfigurations.log;
215
+ this._log = log;
216
+ log.trace(`${BuildConfiguration.name}(${buildConfigurationName})`);
217
+ this.name = buildConfigurationName;
218
+ this.jsonBuildConfiguration = jsonBuildConfiguration;
219
+ this.parentBuildConfigurations = parentBuildConfigurations;
220
+ if (matrixParameters !== undefined) {
221
+ this.matrixParameters = matrixParameters;
222
+ }
223
+ if (templateBuildConfigurationName !== undefined) {
224
+ this.templateName = templateBuildConfigurationName;
225
+ }
226
+ this._substitutionsVariables = {
227
+ ...this.parentBuildConfigurations.substitutionsVariables,
228
+ };
229
+ this.isHidden = this.jsonBuildConfiguration.hidden ?? false;
230
+ this.isTemplate = this.templateName !== undefined;
231
+ }
232
+ async initialise() {
233
+ const log = this._log;
234
+ log.trace(`${BuildConfiguration.name}.initialise()` + ` @${this.name}`);
235
+ if (this._isInitialised) {
236
+ log.trace(`${BuildConfiguration.name}.initialise()` + ` @${this.name} again`);
237
+ return false;
238
+ }
239
+ log.trace(`${BuildConfiguration.name}.initialise()` + ` @${this.name}`);
240
+ let localJsonBuildConfiguration;
241
+ if (this.isTemplate) {
242
+ localJsonBuildConfiguration = await this._substituteTemplate();
243
+ }
244
+ else {
245
+ localJsonBuildConfiguration = await this._substituteInherits();
246
+ }
247
+ const inheritedActionsMap = await this._processInherits(localJsonBuildConfiguration);
248
+ this.properties = {
249
+ ...this.properties,
250
+ ...localJsonBuildConfiguration.properties,
251
+ };
252
+ assert(this.name, 'buildConfigurationName missing');
253
+ this._substitutionsVariables = {
254
+ ...this.parentBuildConfigurations.substitutionsVariables,
255
+ properties: {
256
+ ...this._substitutionsVariables.properties,
257
+ ...this.properties,
258
+ },
259
+ matrix: this.matrixParameters ?? {},
260
+ configuration: {
261
+ ...localJsonBuildConfiguration,
262
+ name: this.name,
263
+ },
264
+ };
265
+ if (!this.isHidden) {
266
+ this._buildFolderRelativePath = await this._getBuildFolderRelativePath();
267
+ const properties = this._substitutionsVariables.properties;
268
+ properties.buildFolderRelativePath = this._buildFolderRelativePath;
269
+ }
270
+ this.dependencies = {
271
+ ...this.dependencies,
272
+ ...localJsonBuildConfiguration.dependencies,
273
+ };
274
+ this.devDependencies = {
275
+ ...this.devDependencies,
276
+ ...localJsonBuildConfiguration.devDependencies,
277
+ };
278
+ const unsubstitutedDependencies = {
279
+ dependencies: this.dependencies,
280
+ devDependencies: this.devDependencies,
281
+ };
282
+ const stringifiedDependencies = JSON.stringify(unsubstitutedDependencies);
283
+ if (hasLiquidSyntax(stringifiedDependencies)) {
284
+ let substitutedDependencies;
285
+ try {
286
+ substitutedDependencies = await performSubstitutions({
287
+ log,
288
+ engine: this.parentBuildConfigurations.engine,
289
+ input: stringifiedDependencies,
290
+ substitutionsVariables: this._substitutionsVariables,
291
+ });
292
+ }
293
+ catch (error) {
294
+ const message = getErrorMessage(error) +
295
+ ` in buildConfiguration "${this.name}" dependencies`;
296
+ throw new ConfigurationError(message);
297
+ }
298
+ const parsedDependencies = JSON.parse(substitutedDependencies);
299
+ this.dependencies = parsedDependencies.dependencies ?? {};
300
+ this.devDependencies = parsedDependencies.devDependencies ?? {};
301
+ }
302
+ this._actions = new Actions({
303
+ log: this._log,
304
+ engine: this.parentBuildConfigurations.engine,
305
+ substitutionsVariables: this._substitutionsVariables,
306
+ inheritedActionsMap,
307
+ jsonActions: localJsonBuildConfiguration.actions,
308
+ buildConfiguration: this,
309
+ });
310
+ log.trace(`${BuildConfiguration.name}.initialise() `, `@{this.buildConfigurationName}`);
311
+ if (!this.isHidden) {
312
+ log.trace(this.name, 'buildFolderRelativePath =>', this._buildFolderRelativePath);
313
+ }
314
+ log.trace(this.name, 'properties => ', this.properties);
315
+ log.trace(this.name, 'dependencies => ', this.dependencies);
316
+ log.trace(this.name, 'devDependencies => ', this.devDependencies);
317
+ this._isInitialised = true;
318
+ return true;
319
+ }
320
+ get actions() {
321
+ assert(this._isInitialised, 'BuildConfiguration must be initialised before ' + 'accessing actions');
322
+ assert(this._actions !== undefined, 'Actions not initialised');
323
+ return this._actions;
324
+ }
325
+ get buildFolderRelativePath() {
326
+ assert(this._isInitialised, 'BuildConfiguration must be initialised before ' +
327
+ 'accessing buildFolderRelativePath');
328
+ assert(this._buildFolderRelativePath !== undefined, 'BuildConfiguration _buildFolderRelativePath not initialised');
329
+ return this._buildFolderRelativePath;
330
+ }
331
+ async _substituteTemplate() {
332
+ const log = this._log;
333
+ let localJsonBuildConfiguration;
334
+ const stringifiedJsonBuildConfiguration = JSON.stringify(this.jsonBuildConfiguration);
335
+ if (hasLiquidSyntax(stringifiedJsonBuildConfiguration)) {
336
+ let substitutedJsonBuildConfiguration;
337
+ try {
338
+ substitutedJsonBuildConfiguration = await performSubstitutions({
339
+ log,
340
+ engine: this.parentBuildConfigurations.engine,
341
+ input: stringifiedJsonBuildConfiguration,
342
+ substitutionsVariables: {
343
+ ...this._substitutionsVariables,
344
+ matrix: this.matrixParameters ?? {},
345
+ configuration: {
346
+ ...this.jsonBuildConfiguration,
347
+ name: this.name,
348
+ },
349
+ },
350
+ });
351
+ }
352
+ catch (error) {
353
+ const message = getErrorMessage(error) + ` in buildConfiguration "${this.name}"`;
354
+ throw new ConfigurationError(message);
355
+ }
356
+ localJsonBuildConfiguration = JSON.parse(substitutedJsonBuildConfiguration);
357
+ }
358
+ else {
359
+ localJsonBuildConfiguration = this.jsonBuildConfiguration;
360
+ }
361
+ return localJsonBuildConfiguration;
362
+ }
363
+ async _substituteInherits() {
364
+ const log = this._log;
365
+ let localJsonBuildConfiguration;
366
+ const stringifiedJsonInherits = JSON.stringify(this.jsonBuildConfiguration.inherits ?? {});
367
+ if (hasLiquidSyntax(stringifiedJsonInherits)) {
368
+ let substitutedJsonInherits;
369
+ try {
370
+ substitutedJsonInherits = await performSubstitutions({
371
+ log,
372
+ engine: this.parentBuildConfigurations.engine,
373
+ input: stringifiedJsonInherits,
374
+ substitutionsVariables: {
375
+ ...this._substitutionsVariables,
376
+ configuration: {
377
+ ...this.jsonBuildConfiguration,
378
+ name: this.name,
379
+ },
380
+ },
381
+ });
382
+ }
383
+ catch (error) {
384
+ const message = getErrorMessage(error) +
385
+ ` in buildConfiguration "${this.name}" inherits`;
386
+ throw new ConfigurationError(message);
387
+ }
388
+ localJsonBuildConfiguration = {
389
+ ...this.jsonBuildConfiguration,
390
+ inherits: JSON.parse(substitutedJsonInherits),
391
+ };
392
+ }
393
+ else {
394
+ localJsonBuildConfiguration = this.jsonBuildConfiguration;
395
+ }
396
+ return localJsonBuildConfiguration;
397
+ }
398
+ _parseInheritsField(localJsonBuildConfiguration) {
399
+ let jsonInherits = [];
400
+ if (isString(localJsonBuildConfiguration.inherits)) {
401
+ jsonInherits = [localJsonBuildConfiguration.inherits];
402
+ }
403
+ else if (Array.isArray(localJsonBuildConfiguration.inherits)) {
404
+ jsonInherits = localJsonBuildConfiguration.inherits;
405
+ }
406
+ else if (isString(localJsonBuildConfiguration.inherit)) {
407
+ jsonInherits = [localJsonBuildConfiguration.inherit];
408
+ }
409
+ else if (Array.isArray(localJsonBuildConfiguration.inherit)) {
410
+ jsonInherits = localJsonBuildConfiguration.inherit;
411
+ }
412
+ if (jsonInherits.length > 0) {
413
+ const joinedInherits = jsonInherits.join(os.EOL);
414
+ return joinedInherits.split(os.EOL);
415
+ }
416
+ return jsonInherits;
417
+ }
418
+ async _processInheritedConfiguration(inheritedBuildConfigurationName, inheritedActionsMap) {
419
+ if (inheritedBuildConfigurationName.trim() === '') {
420
+ return;
421
+ }
422
+ if (!this.parentBuildConfigurations.hasJson(inheritedBuildConfigurationName)) {
423
+ throw new ConfigurationError(`buildConfiguration "${this.name}" ` +
424
+ `inherits from missing "${inheritedBuildConfigurationName}"`);
425
+ }
426
+ if (this._inheritedNamesSet.has(inheritedBuildConfigurationName)) {
427
+ throw new ConfigurationError(`buildConfiguration "${this.name}" ` +
428
+ `inherits from circular reference ` +
429
+ `"${inheritedBuildConfigurationName}"`);
430
+ }
431
+ this._inheritedNamesSet.add(inheritedBuildConfigurationName);
432
+ const inheritedBuildConfiguration = this.parentBuildConfigurations.get(inheritedBuildConfigurationName);
433
+ await inheritedBuildConfiguration.initialise();
434
+ this.properties = {
435
+ ...this.properties,
436
+ ...inheritedBuildConfiguration.properties,
437
+ };
438
+ this.dependencies = {
439
+ ...this.dependencies,
440
+ ...inheritedBuildConfiguration.dependencies,
441
+ };
442
+ this.devDependencies = {
443
+ ...this.devDependencies,
444
+ ...inheritedBuildConfiguration.devDependencies,
445
+ };
446
+ await inheritedBuildConfiguration.actions.initialise();
447
+ for (const actionName of inheritedBuildConfiguration.actions.names) {
448
+ const action = inheritedBuildConfiguration.actions.get(actionName);
449
+ inheritedActionsMap.set(actionName, action);
450
+ }
451
+ }
452
+ async _processInherits(localJsonBuildConfiguration) {
453
+ const log = this._log;
454
+ const inheritsNames = this._parseInheritsField(localJsonBuildConfiguration);
455
+ this.inheritsNames = inheritsNames;
456
+ log.trace(this.name, 'inherits from', this.inheritsNames);
457
+ const inheritedActionsMap = new Map();
458
+ for (const inheritedBuildConfigurationName of inheritsNames) {
459
+ await this._processInheritedConfiguration(inheritedBuildConfigurationName, inheritedActionsMap);
460
+ }
461
+ return inheritedActionsMap;
462
+ }
463
+ async _getBuildFolderRelativePath() {
464
+ const log = this._log;
465
+ let folderPath;
466
+ if (buildFolderRelativePathPropertyName in
467
+ this._substitutionsVariables.properties) {
468
+ folderPath = this._substitutionsVariables.properties[buildFolderRelativePathPropertyName];
469
+ if (folderPath !== '') {
470
+ try {
471
+ const substitutedFolderPath = await performSubstitutions({
472
+ log,
473
+ engine: this.parentBuildConfigurations.engine,
474
+ input: folderPath,
475
+ substitutionsVariables: this._substitutionsVariables,
476
+ });
477
+ return substitutedFolderPath;
478
+ }
479
+ catch (error) {
480
+ const message = getErrorMessage(error) + ` in buildConfiguration "${this.name}"`;
481
+ throw new ConfigurationError(message);
482
+ }
483
+ }
484
+ }
485
+ const defaultFolderPath = path.join('build', filterPath(this.name));
486
+ return defaultFolderPath;
487
+ }
488
+ }
489
+ //# sourceMappingURL=build-configurations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-configurations.js","sourceRoot":"","sources":["../../src/classes/build-configurations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { Logger } from '@xpack/logger';
2
+ export declare const COMBINATIONS_GENERATOR_MAX_COMBINATIONS_LIMIT: number;
3
+ export type MatrixCombination = Record<string, string>;
4
+ export interface CombinationsGeneratorConstructorParameters {
5
+ matrixKeys: string[];
6
+ matrixValues: string[][];
7
+ log: Logger;
8
+ maxCombinations?: number;
9
+ }
10
+ export declare class CombinationsGenerator {
11
+ protected readonly _log: Logger;
12
+ protected readonly _matrixKeys: string[];
13
+ protected readonly _matrixValues: string[][];
14
+ protected readonly _maxCombinations: number;
15
+ constructor({ matrixKeys, matrixValues, maxCombinations, log, }: CombinationsGeneratorConstructorParameters);
16
+ generate(): Generator<MatrixCombination>;
17
+ protected _generateRecursively(index: number, combination: Record<string, string>): Generator<MatrixCombination>;
18
+ }
19
+ //# sourceMappingURL=combinations-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"combinations-generator.d.ts","sourceRoot":"","sources":["../../src/classes/combinations-generator.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAmBtC,eAAO,MAAM,6CAA6C,QAAU,CAAA;AAYpE,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAetD,MAAM,WAAW,0CAA0C;IAIzD,UAAU,EAAE,MAAM,EAAE,CAAA;IAKpB,YAAY,EAAE,MAAM,EAAE,EAAE,CAAA;IAKxB,GAAG,EAAE,MAAM,CAAA;IAWX,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAyCD,qBAAa,qBAAqB;IAYhC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAW/B,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,CAAA;IAcxC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,EAAE,CAAA;IAS5C,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;gBAiB/B,EACV,UAAU,EACV,YAAY,EACZ,eAA+D,EAC/D,GAAG,GACJ,EAAE,0CAA0C;IA6C5C,QAAQ,IAAI,SAAS,CAAC,iBAAiB,CAAC;IA6DzC,SAAS,CAAE,oBAAoB,CAC7B,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAClC,SAAS,CAAC,iBAAiB,CAAC;CAyBhC"}
@@ -0,0 +1,48 @@
1
+ import { ConfigurationError } from './errors.js';
2
+ export const COMBINATIONS_GENERATOR_MAX_COMBINATIONS_LIMIT = 42 * 10;
3
+ export class CombinationsGenerator {
4
+ _log;
5
+ _matrixKeys;
6
+ _matrixValues;
7
+ _maxCombinations;
8
+ constructor({ matrixKeys, matrixValues, maxCombinations = COMBINATIONS_GENERATOR_MAX_COMBINATIONS_LIMIT, log, }) {
9
+ this._log = log;
10
+ this._matrixKeys = matrixKeys;
11
+ this._matrixValues = matrixValues;
12
+ this._maxCombinations = maxCombinations;
13
+ log.trace(`${CombinationsGenerator.name}.constructor: ` +
14
+ `matrixKeys=${JSON.stringify(this._matrixKeys)} ` +
15
+ `matrixValues=${JSON.stringify(this._matrixValues)}`);
16
+ }
17
+ *generate() {
18
+ if (this._matrixKeys.length === 0) {
19
+ return;
20
+ }
21
+ const totalCombinations = this._matrixValues.reduce((product, values) => product * values.length, 1);
22
+ if (totalCombinations > this._maxCombinations) {
23
+ throw new ConfigurationError(`Matrix would generate ${String(totalCombinations)} combinations, ` +
24
+ `exceeding limit of ${String(this._maxCombinations)}. ` +
25
+ `Consider using fewer parameters or values.`);
26
+ }
27
+ yield* this._generateRecursively(0, {});
28
+ }
29
+ *_generateRecursively(index, combination) {
30
+ const log = this._log;
31
+ log.trace(`${CombinationsGenerator.name}.` +
32
+ `_generateRecursively(${String(index)},` +
33
+ `${JSON.stringify(combination)})`);
34
+ if (index === this._matrixKeys.length) {
35
+ log.trace('combination complete =>', combination);
36
+ yield { ...combination };
37
+ return;
38
+ }
39
+ const key = this._matrixKeys[index];
40
+ const values = this._matrixValues[index];
41
+ for (const value of values) {
42
+ combination[key] = value;
43
+ yield* this._generateRecursively(index + 1, combination);
44
+ delete combination[key];
45
+ }
46
+ }
47
+ }
48
+ //# sourceMappingURL=combinations-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"combinations-generator.js","sourceRoot":"","sources":["../../src/classes/combinations-generator.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAkBhD,MAAM,CAAC,MAAM,6CAA6C,GAAG,EAAE,GAAG,EAAE,CAAA;AA8FpE,MAAM,OAAO,qBAAqB;IAYb,IAAI,CAAQ;IAWZ,WAAW,CAAU;IAcrB,aAAa,CAAY;IASzB,gBAAgB,CAAQ;IAiB3C,YAAY,EACV,UAAU,EACV,YAAY,EACZ,eAAe,GAAG,6CAA6C,EAC/D,GAAG,GACwC;QAC3C,IAAI,CAAC,IAAI,GAAG,GAAG,CAAA;QACf,IAAI,CAAC,WAAW,GAAG,UAAU,CAAA;QAC7B,IAAI,CAAC,aAAa,GAAG,YAAY,CAAA;QACjC,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAA;QAEvC,GAAG,CAAC,KAAK,CACP,GAAG,qBAAqB,CAAC,IAAI,gBAAgB;YAC3C,cAAc,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG;YACjD,gBAAgB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CACvD,CAAA;IACH,CAAC;IAkCD,CAAC,QAAQ;QAEP,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,OAAM;QACR,CAAC;QAGD,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CACjD,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,EAC5C,CAAC,CACF,CAAA;QAED,IAAI,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC9C,MAAM,IAAI,kBAAkB,CAC1B,yBAAyB,MAAM,CAAC,iBAAiB,CAAC,iBAAiB;gBACjE,sBAAsB,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI;gBACvD,4CAA4C,CAC/C,CAAA;QACH,CAAC;QAED,KAAK,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IACzC,CAAC;IAwCS,CAAC,oBAAoB,CAC7B,KAAa,EACb,WAAmC;QAEnC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAA;QACrB,GAAG,CAAC,KAAK,CACP,GAAG,qBAAqB,CAAC,IAAI,GAAG;YAC9B,wBAAwB,MAAM,CAAC,KAAK,CAAC,GAAG;YACxC,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CACpC,CAAA;QAED,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;YACtC,GAAG,CAAC,KAAK,CAAC,yBAAyB,EAAE,WAAW,CAAC,CAAA;YACjD,MAAM,EAAE,GAAG,WAAW,EAAE,CAAA;YAExB,OAAM;QACR,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QAExC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;YACxB,KAAK,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,GAAG,CAAC,EAAE,WAAW,CAAC,CAAA;YAExD,OAAO,WAAW,CAAC,GAAG,CAAC,CAAA;QACzB,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,21 @@
1
+ import { Logger } from '@xpack/logger';
2
+ import { LiquidSubstitutionsVariables } from '../data/substitutions-variables.js';
3
+ import { Actions } from './actions.js';
4
+ import { BuildConfigurations } from './build-configurations.js';
5
+ import { LiquidEngine } from './liquid-engine.js';
6
+ import { JsonXpmPackage } from '../types/json.js';
7
+ export declare const buildFolderRelativePathPropertyName = "buildFolderRelativePath";
8
+ export interface DataModelConstructorParameters {
9
+ jsonPackage: JsonXpmPackage;
10
+ log: Logger;
11
+ }
12
+ export declare class DataModel {
13
+ readonly substitutionsVariables: LiquidSubstitutionsVariables;
14
+ readonly actions: Actions;
15
+ readonly buildConfigurations: BuildConfigurations;
16
+ protected readonly _log: Logger;
17
+ protected readonly _engine: LiquidEngine;
18
+ protected readonly _jsonPackage: JsonXpmPackage;
19
+ constructor({ jsonPackage, log }: DataModelConstructorParameters);
20
+ }
21
+ //# sourceMappingURL=data-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-model.d.ts","sourceRoot":"","sources":["../../src/classes/data-model.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAItC,OAAO,EACL,4BAA4B,EAE7B,MAAM,oCAAoC,CAAA;AAE3C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAOjD,eAAO,MAAM,mCAAmC,4BAA4B,CAAA;AAgB5E,MAAM,WAAW,8BAA8B;IAI7C,WAAW,EAAE,cAAc,CAAA;IAK3B,GAAG,EAAE,MAAM,CAAA;CACZ;AA6BD,qBAAa,SAAS;IA0CpB,QAAQ,CAAC,sBAAsB,EAAE,4BAA4B,CAAA;IAwB7D,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IA0BzB,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,CAAA;IAajD,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IA2B/B,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;IA0BxC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,cAAc,CAAA;gBAsCnC,EAAE,WAAW,EAAE,GAAG,EAAE,EAAE,8BAA8B;CAgDjE"}