@xpack/xpm-lib 3.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 (94) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +223 -0
  3. package/dist/index.d.ts +16 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +30 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/lib/chmod-recursive.d.ts +7 -0
  8. package/dist/lib/chmod-recursive.d.ts.map +1 -0
  9. package/dist/lib/chmod-recursive.js +81 -0
  10. package/dist/lib/chmod-recursive.js.map +1 -0
  11. package/dist/lib/errors.d.ts +11 -0
  12. package/dist/lib/errors.d.ts.map +1 -0
  13. package/dist/lib/errors.js +26 -0
  14. package/dist/lib/errors.js.map +1 -0
  15. package/dist/lib/functions/chmod-recursive.d.ts +7 -0
  16. package/dist/lib/functions/chmod-recursive.d.ts.map +1 -0
  17. package/dist/lib/functions/chmod-recursive.js +81 -0
  18. package/dist/lib/functions/chmod-recursive.js.map +1 -0
  19. package/dist/lib/functions/perform-substitutions.d.ts +20 -0
  20. package/dist/lib/functions/perform-substitutions.d.ts.map +1 -0
  21. package/dist/lib/functions/perform-substitutions.js +85 -0
  22. package/dist/lib/functions/perform-substitutions.js.map +1 -0
  23. package/dist/lib/functions/utils.d.ts +30 -0
  24. package/dist/lib/functions/utils.d.ts.map +1 -0
  25. package/dist/lib/functions/utils.js +70 -0
  26. package/dist/lib/functions/utils.js.map +1 -0
  27. package/dist/lib/init-template-base.d.ts +46 -0
  28. package/dist/lib/init-template-base.d.ts.map +1 -0
  29. package/dist/lib/init-template-base.js +275 -0
  30. package/dist/lib/init-template-base.js.map +1 -0
  31. package/dist/lib/liquid-actions.d.ts +32 -0
  32. package/dist/lib/liquid-actions.d.ts.map +1 -0
  33. package/dist/lib/liquid-actions.js +113 -0
  34. package/dist/lib/liquid-actions.js.map +1 -0
  35. package/dist/lib/liquid-build-configurations.d.ts +49 -0
  36. package/dist/lib/liquid-build-configurations.d.ts.map +1 -0
  37. package/dist/lib/liquid-build-configurations.js +267 -0
  38. package/dist/lib/liquid-build-configurations.js.map +1 -0
  39. package/dist/lib/liquid-drop.d.ts +13 -0
  40. package/dist/lib/liquid-drop.d.ts.map +1 -0
  41. package/dist/lib/liquid-drop.js +56 -0
  42. package/dist/lib/liquid-drop.js.map +1 -0
  43. package/dist/lib/liquid-engine.d.ts +5 -0
  44. package/dist/lib/liquid-engine.d.ts.map +1 -0
  45. package/dist/lib/liquid-engine.js +85 -0
  46. package/dist/lib/liquid-engine.js.map +1 -0
  47. package/dist/lib/liquid-package.d.ts +17 -0
  48. package/dist/lib/liquid-package.d.ts.map +1 -0
  49. package/dist/lib/liquid-package.js +70 -0
  50. package/dist/lib/liquid-package.js.map +1 -0
  51. package/dist/lib/package.d.ts +66 -0
  52. package/dist/lib/package.d.ts.map +1 -0
  53. package/dist/lib/package.js +700 -0
  54. package/dist/lib/package.js.map +1 -0
  55. package/dist/lib/perform-substitutions.d.ts +20 -0
  56. package/dist/lib/perform-substitutions.d.ts.map +1 -0
  57. package/dist/lib/perform-substitutions.js +85 -0
  58. package/dist/lib/perform-substitutions.js.map +1 -0
  59. package/dist/lib/policies.d.ts +13 -0
  60. package/dist/lib/policies.d.ts.map +1 -0
  61. package/dist/lib/policies.js +31 -0
  62. package/dist/lib/policies.js.map +1 -0
  63. package/dist/lib/substitutions-variables.d.ts +117 -0
  64. package/dist/lib/substitutions-variables.d.ts.map +1 -0
  65. package/dist/lib/substitutions-variables.js +51 -0
  66. package/dist/lib/substitutions-variables.js.map +1 -0
  67. package/dist/lib/types.d.ts +70 -0
  68. package/dist/lib/types.d.ts.map +1 -0
  69. package/dist/lib/types.js +13 -0
  70. package/dist/lib/types.js.map +1 -0
  71. package/dist/lib/utils.d.ts +30 -0
  72. package/dist/lib/utils.d.ts.map +1 -0
  73. package/dist/lib/utils.js +70 -0
  74. package/dist/lib/utils.js.map +1 -0
  75. package/dist/tsconfig.tsbuildinfo +1 -0
  76. package/package.json +102 -0
  77. package/src/README.md +10 -0
  78. package/src/index.ts +35 -0
  79. package/src/lib/errors.ts +29 -0
  80. package/src/lib/functions/chmod-recursive.ts +103 -0
  81. package/src/lib/functions/perform-substitutions.ts +116 -0
  82. package/src/lib/functions/utils.ts +88 -0
  83. package/src/lib/init-template-base.ts +401 -0
  84. package/src/lib/liquid-actions.ts +179 -0
  85. package/src/lib/liquid-build-configurations.ts +410 -0
  86. package/src/lib/liquid-drop.ts +99 -0
  87. package/src/lib/liquid-engine.ts +135 -0
  88. package/src/lib/liquid-package.ts +108 -0
  89. package/src/lib/package.ts +946 -0
  90. package/src/lib/policies.ts +49 -0
  91. package/src/lib/substitutions-variables.ts +177 -0
  92. package/src/lib/types.ts +109 -0
  93. package/src/package.json +3 -0
  94. package/src/tsconfig.json +10 -0
@@ -0,0 +1,49 @@
1
+ import { Logger } from '@xpack/logger';
2
+ import { XpmLiquidEngine } from './liquid-engine.js';
3
+ import { XpmLiquidSubstitutionsVariables, XpmLiquidSubstitutionsStrings } from './substitutions-variables.js';
4
+ import { JsonBuildConfiguration, JsonBuildConfigurations, JsonDependencies } from './types.js';
5
+ import { XpmLiquidActions } from './liquid-actions.js';
6
+ export declare class XpmLiquidBuildConfigurations {
7
+ #private;
8
+ readonly log: Logger;
9
+ readonly engine: XpmLiquidEngine;
10
+ readonly substitutionsVariables: XpmLiquidSubstitutionsVariables;
11
+ readonly jsonBuildConfigurations: JsonBuildConfigurations;
12
+ constructor({ log, engine, substitutionsVariables, jsonBuildConfigurations, }: {
13
+ log: Logger;
14
+ engine: XpmLiquidEngine;
15
+ substitutionsVariables: XpmLiquidSubstitutionsVariables;
16
+ jsonBuildConfigurations: JsonBuildConfigurations | undefined;
17
+ });
18
+ initialise(): Promise<void>;
19
+ empty(): boolean;
20
+ names(): string[];
21
+ hasJson(buildConfigurationName: string): boolean;
22
+ getJson(buildConfigurationName: string): JsonBuildConfiguration;
23
+ isHidden(buildConfigurationName: string): boolean;
24
+ has(buildConfigurationName: string): boolean;
25
+ get(buildConfigurationName: string): Promise<XpmLiquidBuildConfiguration>;
26
+ getJsonName(buildConfigurationName: string): string;
27
+ }
28
+ export declare class XpmLiquidBuildConfiguration {
29
+ #private;
30
+ readonly hidden: boolean;
31
+ readonly jsonBuildConfigurationName: string;
32
+ readonly jsonBuildConfiguration: JsonBuildConfiguration;
33
+ substitutionsVariables: XpmLiquidSubstitutionsVariables;
34
+ properties: XpmLiquidSubstitutionsStrings;
35
+ jsonDependencies: JsonDependencies;
36
+ jsonDevDependencies: JsonDependencies;
37
+ matrixParameters?: XpmLiquidSubstitutionsStrings;
38
+ constructor({ buildConfigurationName, // The Liquid-processed name.
39
+ jsonBuildConfigurationName, // The raw name from package.json.
40
+ parentBuildConfigurations, }: {
41
+ buildConfigurationName: string;
42
+ jsonBuildConfigurationName: string;
43
+ parentBuildConfigurations: XpmLiquidBuildConfigurations;
44
+ });
45
+ initialise(): Promise<void>;
46
+ get actions(): XpmLiquidActions;
47
+ getBuildFolderRelativePath(): Promise<string>;
48
+ }
49
+ //# sourceMappingURL=liquid-build-configurations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"liquid-build-configurations.d.ts","sourceRoot":"","sources":["../../src/lib/liquid-build-configurations.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAEtC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EACL,+BAA+B,EAC/B,6BAA6B,EAC9B,MAAM,8BAA8B,CAAA;AAErC,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,gBAAgB,EACjB,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAOtD,qBAAa,4BAA4B;;IAIvC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAA;IAChC,QAAQ,CAAC,sBAAsB,EAAE,+BAA+B,CAAA;IAChE,QAAQ,CAAC,uBAAuB,EAAE,uBAAuB,CAAA;gBAa7C,EACV,GAAG,EACH,MAAM,EACN,sBAAsB,EACtB,uBAAuB,GACxB,EAAE;QACD,GAAG,EAAE,MAAM,CAAA;QACX,MAAM,EAAE,eAAe,CAAA;QACvB,sBAAsB,EAAE,+BAA+B,CAAA;QACvD,uBAAuB,EAAE,uBAAuB,GAAG,SAAS,CAAA;KAC7D;IAkBK,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA8BjC,KAAK,IAAI,OAAO;IAIhB,KAAK,IAAI,MAAM,EAAE;IAYjB,OAAO,CAAC,sBAAsB,EAAE,MAAM,GAAG,OAAO;IAIhD,OAAO,CAAC,sBAAsB,EAAE,MAAM,GAAG,sBAAsB;IAM/D,QAAQ,CAAC,sBAAsB,EAAE,MAAM,GAAG,OAAO;IAOjD,GAAG,CAAC,sBAAsB,EAAE,MAAM,GAAG,OAAO;IAItC,GAAG,CACP,sBAAsB,EAAE,MAAM,GAC7B,OAAO,CAAC,2BAA2B,CAAC;IAwBvC,WAAW,CAAC,sBAAsB,EAAE,MAAM,GAAG,MAAM;CAIpD;AAKD,qBAAa,2BAA2B;;IAItC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IAGxB,QAAQ,CAAC,0BAA0B,EAAE,MAAM,CAAA;IAE3C,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB,CAAA;IAEvD,sBAAsB,EAAE,+BAA+B,CAAA;IAEvD,UAAU,EAAE,6BAA6B,CAAK;IAE9C,gBAAgB,EAAE,gBAAgB,CAAK;IACvC,mBAAmB,EAAE,gBAAgB,CAAK;IAG1C,gBAAgB,CAAC,EAAE,6BAA6B,CAAA;gBAgBpC,EACV,sBAAsB,EAAE,6BAA6B;IACrD,0BAA0B,EAAE,kCAAkC;IAC9D,yBAAyB,GAC1B,EAAE;QACD,sBAAsB,EAAE,MAAM,CAAA;QAC9B,0BAA0B,EAAE,MAAM,CAAA;QAClC,yBAAyB,EAAE,4BAA4B,CAAA;KACxD;IAuBK,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAkHjC,IAAI,OAAO,IAAI,gBAAgB,CAG9B;IAEK,0BAA0B,IAAI,OAAO,CAAC,MAAM,CAAC;CAiCpD"}
@@ -0,0 +1,267 @@
1
+ /*
2
+ * This file is part of the xPack project (http://xpack.github.io).
3
+ * Copyright (c) 2021-2026 Liviu Ionescu. All rights reserved.
4
+ *
5
+ * Permission to use, copy, modify, and/or distribute this software
6
+ * for any purpose is hereby granted, under the terms of the MIT license.
7
+ *
8
+ * If a copy of the license was not distributed with this file, it can
9
+ * be obtained from https://opensource.org/license/mit.
10
+ */
11
+ /* eslint max-len: [ "error", 80, { "ignoreUrls": true } ] */
12
+ // ----------------------------------------------------------------------------
13
+ import assert from 'node:assert';
14
+ import path from 'node:path';
15
+ import { buildFolderRelativePathPropertyName } from './liquid-package.js';
16
+ import { performSubstitutions } from './functions/perform-substitutions.js';
17
+ import { XpmLiquidActions } from './liquid-actions.js';
18
+ import { isString } from './functions/utils.js';
19
+ import { filterPath } from './functions/utils.js';
20
+ // ----------------------------------------------------------------------------
21
+ // A collection of build configurations.
22
+ export class XpmLiquidBuildConfigurations {
23
+ // --------------------------------------------------------------------------
24
+ // Members.
25
+ log;
26
+ engine;
27
+ substitutionsVariables;
28
+ jsonBuildConfigurations;
29
+ #buildConfigurationsMap;
30
+ #jsonBuildConfigurationsNamesMap;
31
+ #isInitialised = false;
32
+ // --------------------------------------------------------------------------
33
+ // Constructor and async initialiser.
34
+ constructor({ log, engine, substitutionsVariables, jsonBuildConfigurations, }) {
35
+ log.trace(`${XpmLiquidBuildConfigurations.name}()`);
36
+ this.log = log;
37
+ this.engine = engine;
38
+ this.substitutionsVariables = substitutionsVariables;
39
+ this.jsonBuildConfigurations = jsonBuildConfigurations ?? {};
40
+ // Possibly empty if there are no build configurations.
41
+ this.#buildConfigurationsMap = new Map();
42
+ this.#jsonBuildConfigurationsNamesMap = new Map();
43
+ // log.trace('substitutionsVariables => ', this.substitutionsVariables)
44
+ }
45
+ // eslint-disable-next-line @typescript-eslint/require-await
46
+ async initialise() {
47
+ if (this.#isInitialised) {
48
+ return;
49
+ }
50
+ for (const buildConfigurationName of Object.keys(this.jsonBuildConfigurations)) {
51
+ if (buildConfigurationName.includes('{{')) {
52
+ // TODO: expand templates and generate multiple build configurations.
53
+ }
54
+ else {
55
+ this.#buildConfigurationsMap.set(buildConfigurationName, undefined);
56
+ this.#jsonBuildConfigurationsNamesMap.set(buildConfigurationName, buildConfigurationName);
57
+ }
58
+ }
59
+ this.log.trace(`${XpmLiquidBuildConfigurations.name}.initialise() =>`, Array.from(this.#buildConfigurationsMap.keys()));
60
+ this.#isInitialised = true;
61
+ }
62
+ // --------------------------------------------------------------------------
63
+ // Methods.
64
+ empty() {
65
+ return this.#buildConfigurationsMap.size === 0;
66
+ }
67
+ names() {
68
+ const buildConfigurationsNames = Array.from(this.#buildConfigurationsMap.keys());
69
+ this.log.trace(`${XpmLiquidBuildConfigurations.name}.names() =>`, buildConfigurationsNames);
70
+ return buildConfigurationsNames;
71
+ }
72
+ hasJson(buildConfigurationName) {
73
+ return this.#jsonBuildConfigurationsNamesMap.has(buildConfigurationName);
74
+ }
75
+ getJson(buildConfigurationName) {
76
+ return this.jsonBuildConfigurations[this.getJsonName(buildConfigurationName)];
77
+ }
78
+ isHidden(buildConfigurationName) {
79
+ return (this.jsonBuildConfigurations[this.getJsonName(buildConfigurationName)]
80
+ .hidden ?? false);
81
+ }
82
+ has(buildConfigurationName) {
83
+ return this.#buildConfigurationsMap.has(buildConfigurationName);
84
+ }
85
+ async get(buildConfigurationName) {
86
+ let buildConfiguration = this.#buildConfigurationsMap.get(buildConfigurationName);
87
+ if (buildConfiguration === undefined) {
88
+ const jsonBuildConfigurationName =
89
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
90
+ this.#jsonBuildConfigurationsNamesMap.get(buildConfigurationName);
91
+ buildConfiguration = new XpmLiquidBuildConfiguration({
92
+ buildConfigurationName,
93
+ jsonBuildConfigurationName,
94
+ parentBuildConfigurations: this,
95
+ });
96
+ await buildConfiguration.initialise();
97
+ this.#buildConfigurationsMap.set(buildConfigurationName, buildConfiguration);
98
+ }
99
+ return buildConfiguration;
100
+ }
101
+ getJsonName(buildConfigurationName) {
102
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
103
+ return this.#jsonBuildConfigurationsNamesMap.get(buildConfigurationName);
104
+ }
105
+ }
106
+ // ----------------------------------------------------------------------------
107
+ // An individual build configuration.
108
+ export class XpmLiquidBuildConfiguration {
109
+ // --------------------------------------------------------------------------
110
+ // Members.
111
+ hidden;
112
+ // The actual (un-substituted) name from package.json.
113
+ jsonBuildConfigurationName;
114
+ // Points to the actual buildConfiguration in package.json.
115
+ jsonBuildConfiguration;
116
+ substitutionsVariables;
117
+ properties = {};
118
+ jsonDependencies = {};
119
+ jsonDevDependencies = {};
120
+ // For templates, the actual values.
121
+ matrixParameters;
122
+ // The name after performing the substitutions.
123
+ #buildConfigurationName;
124
+ #parentBuildConfigurations;
125
+ #actions;
126
+ #buildFolderRelativePath;
127
+ #isInitialised = false;
128
+ // --------------------------------------------------------------------------
129
+ // Constructor and async initialiser.
130
+ constructor({ buildConfigurationName, // The Liquid-processed name.
131
+ jsonBuildConfigurationName, // The raw name from package.json.
132
+ parentBuildConfigurations, }) {
133
+ parentBuildConfigurations.log.trace(`${XpmLiquidBuildConfiguration.name}(${buildConfigurationName})`);
134
+ this.#buildConfigurationName = buildConfigurationName;
135
+ this.jsonBuildConfigurationName = jsonBuildConfigurationName;
136
+ this.#parentBuildConfigurations = parentBuildConfigurations;
137
+ this.jsonBuildConfiguration =
138
+ parentBuildConfigurations.jsonBuildConfigurations[jsonBuildConfigurationName] ?? {};
139
+ this.substitutionsVariables = {
140
+ ...this.#parentBuildConfigurations.substitutionsVariables,
141
+ };
142
+ this.hidden = this.jsonBuildConfiguration.hidden ?? false;
143
+ // The rest of the initialisation is done in the async initialiser.
144
+ }
145
+ async initialise() {
146
+ if (this.#isInitialised) {
147
+ return;
148
+ }
149
+ const log = this.#parentBuildConfigurations.log;
150
+ const jsonBuildConfiguration = this.jsonBuildConfiguration;
151
+ // TODO: add matrixParameters
152
+ // Process both the new 'inherits' and the deprecated 'inherit'.
153
+ let inherits = [];
154
+ if (isString(jsonBuildConfiguration.inherits)) {
155
+ inherits = [jsonBuildConfiguration.inherits];
156
+ }
157
+ else if (Array.isArray(jsonBuildConfiguration.inherits)) {
158
+ inherits = jsonBuildConfiguration.inherit;
159
+ }
160
+ else if (isString(jsonBuildConfiguration.inherit)) {
161
+ inherits = [jsonBuildConfiguration.inherit];
162
+ }
163
+ else if (Array.isArray(jsonBuildConfiguration.inherit)) {
164
+ inherits = jsonBuildConfiguration.inherit;
165
+ }
166
+ // Add inherited configuration properties.
167
+ // TODO: detect circular references.
168
+ for (const inheritedBuildConfigurationName of inherits) {
169
+ if (this.#parentBuildConfigurations.hasJson(inheritedBuildConfigurationName)) {
170
+ const inheritedBuildConfiguration = await this.#parentBuildConfigurations.get(inheritedBuildConfigurationName);
171
+ this.properties = {
172
+ ...this.properties,
173
+ ...inheritedBuildConfiguration.properties,
174
+ };
175
+ this.jsonDependencies = {
176
+ ...this.jsonDependencies,
177
+ ...inheritedBuildConfiguration.jsonDependencies,
178
+ };
179
+ this.jsonDevDependencies = {
180
+ ...this.jsonDevDependencies,
181
+ ...inheritedBuildConfiguration.jsonDevDependencies,
182
+ };
183
+ }
184
+ else {
185
+ log.warn('buildConfiguration', this.#buildConfigurationName, 'inherits from missing', inheritedBuildConfigurationName, '(ignored)');
186
+ }
187
+ }
188
+ this.properties = {
189
+ ...this.properties,
190
+ ...jsonBuildConfiguration.properties,
191
+ };
192
+ this.jsonDependencies = {
193
+ ...this.jsonDependencies,
194
+ ...jsonBuildConfiguration.dependencies,
195
+ };
196
+ this.jsonDevDependencies = {
197
+ ...this.jsonDevDependencies,
198
+ ...jsonBuildConfiguration.devDependencies,
199
+ };
200
+ this.substitutionsVariables = {
201
+ ...this.#parentBuildConfigurations.substitutionsVariables,
202
+ properties: {
203
+ ...this.substitutionsVariables.properties,
204
+ ...this.properties,
205
+ },
206
+ configuration: {
207
+ ...jsonBuildConfiguration,
208
+ name: this.#buildConfigurationName,
209
+ },
210
+ };
211
+ // Add the buildFolderRelativePath property.
212
+ // Note: the async initialiser was needed due to this async operation.
213
+ const properties = this.substitutionsVariables.properties;
214
+ properties.buildFolderRelativePath = await this.getBuildFolderRelativePath();
215
+ // Please note that substitutionsVariables is not fully set at this point;
216
+ // it will be in the async initialiser after the constructor returns.
217
+ this.#actions = new XpmLiquidActions({
218
+ log: this.#parentBuildConfigurations.log,
219
+ engine: this.#parentBuildConfigurations.engine,
220
+ substitutionsVariables: this.substitutionsVariables,
221
+ jsonActions: this.jsonBuildConfiguration.actions,
222
+ });
223
+ // Note: this must be done manually by the application.
224
+ // await this.#actions.initialise()
225
+ log.trace(`${XpmLiquidBuildConfiguration.name}.initialise() =>`, this.#buildConfigurationName);
226
+ log.trace('properties => ', this.properties);
227
+ log.trace('dependencies => ', this.jsonDependencies);
228
+ log.trace('devDependencies => ', this.jsonDevDependencies);
229
+ // log.trace('substitutionsVariables => ', this.substitutionsVariables)
230
+ this.#isInitialised = true;
231
+ }
232
+ // --------------------------------------------------------------------------
233
+ // Methods.
234
+ get actions() {
235
+ assert(this.#actions !== undefined);
236
+ return this.#actions;
237
+ }
238
+ async getBuildFolderRelativePath() {
239
+ this.#buildFolderRelativePath ??= await this.#getBuildFolderRelativePath();
240
+ return this.#buildFolderRelativePath;
241
+ }
242
+ async #getBuildFolderRelativePath() {
243
+ const log = this.#parentBuildConfigurations.log;
244
+ let folderPath;
245
+ if (buildFolderRelativePathPropertyName in
246
+ this.substitutionsVariables.properties) {
247
+ folderPath = this.substitutionsVariables.properties[buildFolderRelativePathPropertyName];
248
+ if (folderPath !== '') {
249
+ try {
250
+ return await performSubstitutions({
251
+ log,
252
+ engine: this.#parentBuildConfigurations.engine,
253
+ input: folderPath,
254
+ substitutionsVariables: this.substitutionsVariables,
255
+ });
256
+ }
257
+ catch (err) {
258
+ log.trace(err);
259
+ }
260
+ }
261
+ }
262
+ // Provide a default value, based on the name.
263
+ return path.join('build', filterPath(this.#buildConfigurationName));
264
+ }
265
+ }
266
+ // ----------------------------------------------------------------------------
267
+ //# sourceMappingURL=liquid-build-configurations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"liquid-build-configurations.js","sourceRoot":"","sources":["../../src/lib/liquid-build-configurations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { Liquid, Context, Drop } from 'liquidjs';
2
+ import { Logger } from '@xpack/logger';
3
+ import { XpmLiquidSubstitutionsStrings } from './substitutions-variables.js';
4
+ export declare class XpmLiquidPropertiesDrop extends Drop {
5
+ #private;
6
+ constructor({ log, engine, properties, }: {
7
+ log: Logger;
8
+ engine: Liquid;
9
+ properties: XpmLiquidSubstitutionsStrings;
10
+ });
11
+ liquidMethodMissing(key: string, context: Context): Promise<string | string[]>;
12
+ }
13
+ //# sourceMappingURL=liquid-drop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"liquid-drop.d.ts","sourceRoot":"","sources":["../../src/lib/liquid-drop.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAGhD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAEtC,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAA;AAM5E,qBAAa,uBAAwB,SAAQ,IAAI;;gBAWnC,EACV,GAAG,EACH,MAAM,EACN,UAAU,GACX,EAAE;QACD,GAAG,EAAE,MAAM,CAAA;QACX,MAAM,EAAE,MAAM,CAAA;QACd,UAAU,EAAE,6BAA6B,CAAA;KAC1C;IAac,mBAAmB,CAChC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;CAkC9B"}
@@ -0,0 +1,56 @@
1
+ /*
2
+ * This file is part of the xPack project (http://xpack.github.io).
3
+ * Copyright (c) 2021-2026 Liviu Ionescu. All rights reserved.
4
+ *
5
+ * Permission to use, copy, modify, and/or distribute this software
6
+ * for any purpose is hereby granted, under the terms of the MIT license.
7
+ *
8
+ * If a copy of the license was not distributed with this file, it can
9
+ * be obtained from https://opensource.org/license/mit.
10
+ */
11
+ /* eslint max-len: [ "error", 80, { "ignoreUrls": true } ] */
12
+ // ----------------------------------------------------------------------------
13
+ // https://www.npmjs.com/package/liquidjs
14
+ import { Drop } from 'liquidjs';
15
+ // ----------------------------------------------------------------------------
16
+ // https://liquidjs.com/
17
+ export class XpmLiquidPropertiesDrop extends Drop {
18
+ // --------------------------------------------------------------------------
19
+ // Members.
20
+ #log;
21
+ #properties;
22
+ #engine;
23
+ // --------------------------------------------------------------------------
24
+ // Constructor.
25
+ constructor({ log, engine, properties, }) {
26
+ super();
27
+ log.trace(`${XpmLiquidPropertiesDrop.name}()`);
28
+ this.#log = log;
29
+ this.#engine = engine;
30
+ this.#properties = properties;
31
+ }
32
+ // --------------------------------------------------------------------------
33
+ // Methods.
34
+ async liquidMethodMissing(key, context) {
35
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
36
+ if (this.#properties[key] === undefined) {
37
+ throw new Error(`properties have no ${key} key`);
38
+ }
39
+ const log = this.#log;
40
+ const value = this.#properties[key] ?? '';
41
+ log.trace(`${XpmLiquidPropertiesDrop.name}.liquidMethodMissing('${key}') value = |`, value, '|');
42
+ let result;
43
+ const valueString = Array.isArray(value) ? value.join('') : value;
44
+ if (valueString.includes('{{') || valueString.includes('{%')) {
45
+ result = (await this.#engine.parseAndRender(valueString, context));
46
+ }
47
+ else {
48
+ result = value;
49
+ }
50
+ log.trace(`${XpmLiquidPropertiesDrop.name}.liquidMethodMissing('${key}') ` +
51
+ `result = |`, result, '|');
52
+ return result;
53
+ }
54
+ }
55
+ // ----------------------------------------------------------------------------
56
+ //# sourceMappingURL=liquid-drop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"liquid-drop.js","sourceRoot":"","sources":["../../src/lib/liquid-drop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,6DAA6D;AAE7D,+EAA+E;AAE/E,yCAAyC;AACzC,OAAO,EAAmB,IAAI,EAAE,MAAM,UAAU,CAAA;AAOhD,+EAA+E;AAE/E,wBAAwB;AAExB,MAAM,OAAO,uBAAwB,SAAQ,IAAI;IAC/C,6EAA6E;IAC7E,WAAW;IAEF,IAAI,CAAQ;IACZ,WAAW,CAA+B;IAC1C,OAAO,CAAQ;IAExB,6EAA6E;IAC7E,eAAe;IAEf,YAAY,EACV,GAAG,EACH,MAAM,EACN,UAAU,GAKX;QACC,KAAK,EAAE,CAAA;QAEP,GAAG,CAAC,KAAK,CAAC,GAAG,uBAAuB,CAAC,IAAI,IAAI,CAAC,CAAA;QAE9C,IAAI,CAAC,IAAI,GAAG,GAAG,CAAA;QACf,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;QACrB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAA;IAC/B,CAAC;IAED,6EAA6E;IAC7E,WAAW;IAEF,KAAK,CAAC,mBAAmB,CAChC,GAAW,EACX,OAAgB;QAEhB,uEAAuE;QACvE,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,MAAM,CAAC,CAAA;QAClD,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAA;QAErB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;QACzC,GAAG,CAAC,KAAK,CACP,GAAG,uBAAuB,CAAC,IAAI,yBAAyB,GAAG,cAAc,EACzE,KAAK,EACL,GAAG,CACJ,CAAA;QAED,IAAI,MAAyB,CAAA;QAE7B,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;QACjE,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7D,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CACzC,WAAW,EACX,OAAO,CACR,CAAW,CAAA;QACd,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,KAAK,CAAA;QAChB,CAAC;QACD,GAAG,CAAC,KAAK,CACP,GAAG,uBAAuB,CAAC,IAAI,yBAAyB,GAAG,KAAK;YAC9D,YAAY,EACd,MAAM,EACN,GAAG,CACJ,CAAA;QACD,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAED,+EAA+E"}
@@ -0,0 +1,5 @@
1
+ import { Liquid } from 'liquidjs';
2
+ export declare class XpmLiquidEngine extends Liquid {
3
+ constructor();
4
+ }
5
+ //# sourceMappingURL=liquid-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"liquid-engine.d.ts","sourceRoot":"","sources":["../../src/lib/liquid-engine.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAIjC,qBAAa,eAAgB,SAAQ,MAAM;;CA4G1C"}
@@ -0,0 +1,85 @@
1
+ /*
2
+ * This file is part of the xPack project (http://xpack.github.io).
3
+ * Copyright (c) 2021-2026 Liviu Ionescu. All rights reserved.
4
+ *
5
+ * Permission to use, copy, modify, and/or distribute this software
6
+ * for any purpose is hereby granted, under the terms of the MIT license.
7
+ *
8
+ * If a copy of the license was not distributed with this file, it can
9
+ * be obtained from https://opensource.org/license/mit.
10
+ */
11
+ /* eslint max-len: [ "error", 80, { "ignoreUrls": true } ] */
12
+ // ----------------------------------------------------------------------------
13
+ import * as os from 'node:os';
14
+ import * as path from 'node:path';
15
+ import * as util from 'node:util';
16
+ // https://www.npmjs.com/package/liquidjs
17
+ import { Liquid } from 'liquidjs';
18
+ // ----------------------------------------------------------------------------
19
+ export class XpmLiquidEngine extends Liquid {
20
+ // --------------------------------------------------------------------------
21
+ // Members.
22
+ // --------------------------------------------------------------------------
23
+ // Constructor.
24
+ constructor() {
25
+ super({
26
+ strictFilters: true,
27
+ strictVariables: true,
28
+ trimTagLeft: false,
29
+ trimTagRight: false,
30
+ trimOutputLeft: false,
31
+ trimOutputRight: false,
32
+ greedy: false,
33
+ lenientIf: true,
34
+ });
35
+ // https://liquidjs.com/api/classes/liquid_.liquid.html#registerFilter
36
+ // https://nodejs.org/dist/latest-v16.x/docs/api/path.html
37
+ // Add the main path manipulation functions.
38
+ this.registerFilter('path_basename', (p, ...arg) =>
39
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
40
+ path.basename(p, ...arg));
41
+ this.registerFilter('path_dirname', (p) => path.dirname(p));
42
+ this.registerFilter('path_normalize', (p) => path.normalize(p));
43
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
44
+ this.registerFilter('path_join', (p, ...args) => path.join(p, ...args));
45
+ this.registerFilter('path_relative', (from, to) => path.relative(from, to));
46
+ this.registerFilter('path_posix_basename', (p, ...arg) =>
47
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
48
+ path.posix.basename(p, ...arg));
49
+ this.registerFilter('path_posix_dirname', (p) => path.posix.dirname(p));
50
+ this.registerFilter('path_posix_normalize', (p) => path.posix.normalize(p));
51
+ this.registerFilter('path_posix_join', (p, ...args) =>
52
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
53
+ path.posix.join(p, ...args));
54
+ this.registerFilter('path_posix_relative', (from, to) => path.posix.relative(from, to));
55
+ this.registerFilter('path_win32_basename', (p, ...arg) =>
56
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
57
+ path.win32.basename(p, ...arg));
58
+ this.registerFilter('path_win32_dirname', (p) => path.win32.dirname(p));
59
+ this.registerFilter('path_win32_normalize', (p) => path.win32.normalize(p));
60
+ this.registerFilter('path_win32_join', (p, ...args) =>
61
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
62
+ path.win32.join(p, ...args));
63
+ this.registerFilter('path_win32_relative', (from, to) => path.win32.relative(from, to));
64
+ // https://nodejs.org/dist/latest-v16.x/docs/api/util.html
65
+ this.registerFilter('util_format', (format, ...args) => {
66
+ // console.log([...args])
67
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
68
+ return util.format(format, ...args);
69
+ });
70
+ // Custom action.
71
+ this.registerFilter('to_filename',
72
+ // Replace non alphanumeric chars with dashes to make the paths
73
+ // comply with filesystem names.
74
+ (input) => {
75
+ /* c8 ignore start */ /* istanbul ignore next */
76
+ const fixed = os.platform() === 'win32'
77
+ ? input.replace(/[^a-zA-Z0-9\\:]+/g, '-')
78
+ : input.replace(/[^a-zA-Z0-9/]+/g, '-');
79
+ /* c8 ignore stop */
80
+ return fixed.replace(/--/g, '-');
81
+ });
82
+ }
83
+ }
84
+ // ----------------------------------------------------------------------------
85
+ //# sourceMappingURL=liquid-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"liquid-engine.js","sourceRoot":"","sources":["../../src/lib/liquid-engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { Logger } from '@xpack/logger';
2
+ import { XpmLiquidSubstitutionsVariables } from './substitutions-variables.js';
3
+ import { XpmLiquidActions } from './liquid-actions.js';
4
+ import { XpmLiquidBuildConfigurations } from './liquid-build-configurations.js';
5
+ import { JsonXpmPackage } from './types.js';
6
+ export declare const buildFolderRelativePathPropertyName = "buildFolderRelativePath";
7
+ export declare class XpmLiquidPackage {
8
+ #private;
9
+ readonly topLiquidSubstitutionsVariables: XpmLiquidSubstitutionsVariables;
10
+ readonly topActions: XpmLiquidActions;
11
+ readonly buildConfigurations: XpmLiquidBuildConfigurations;
12
+ constructor({ log, jsonPackage, }: {
13
+ log: Logger;
14
+ jsonPackage: JsonXpmPackage;
15
+ });
16
+ }
17
+ //# sourceMappingURL=liquid-package.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"liquid-package.d.ts","sourceRoot":"","sources":["../../src/lib/liquid-package.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAGtC,OAAO,EAEL,+BAA+B,EAChC,MAAM,8BAA8B,CAAA;AAErC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAA;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAI3C,eAAO,MAAM,mCAAmC,4BAA4B,CAAA;AAI5E,qBAAa,gBAAgB;;IAQ3B,QAAQ,CAAC,+BAA+B,EAAE,+BAA+B,CAAA;IAEzE,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAA;IACrC,QAAQ,CAAC,mBAAmB,EAAE,4BAA4B,CAAA;gBAK9C,EACV,GAAG,EACH,WAAW,GACZ,EAAE;QACD,GAAG,EAAE,MAAM,CAAA;QACX,WAAW,EAAE,cAAc,CAAA;KAC5B;CA6CF"}
@@ -0,0 +1,70 @@
1
+ /*
2
+ * This file is part of the xPack project (http://xpack.github.io).
3
+ * Copyright (c) 2021-2026 Liviu Ionescu. All rights reserved.
4
+ *
5
+ * Permission to use, copy, modify, and/or distribute this software
6
+ * for any purpose is hereby granted, under the terms of the MIT license.
7
+ *
8
+ * If a copy of the license was not distributed with this file, it can
9
+ * be obtained from https://opensource.org/license/mit.
10
+ */
11
+ /* eslint max-len: [ "error", 80, { "ignoreUrls": true } ] */
12
+ // ----------------------------------------------------------------------------
13
+ import assert from 'node:assert';
14
+ import * as os from 'node:os';
15
+ import { isJsonObject } from './functions/utils.js';
16
+ import { xpmLiquidSubstitutionsVariablesBase, } from './substitutions-variables.js';
17
+ import { XpmLiquidEngine } from './liquid-engine.js';
18
+ import { XpmLiquidActions } from './liquid-actions.js';
19
+ import { XpmLiquidBuildConfigurations } from './liquid-build-configurations.js';
20
+ // ----------------------------------------------------------------------------
21
+ export const buildFolderRelativePathPropertyName = 'buildFolderRelativePath';
22
+ // ----------------------------------------------------------------------------
23
+ export class XpmLiquidPackage {
24
+ // --------------------------------------------------------------------------
25
+ // Members.
26
+ #log;
27
+ #engine;
28
+ #jsonPackage;
29
+ topLiquidSubstitutionsVariables;
30
+ topActions;
31
+ buildConfigurations;
32
+ // --------------------------------------------------------------------------
33
+ // Constructor and async initialiser.
34
+ constructor({ log, jsonPackage, }) {
35
+ log.trace(`${XpmLiquidPackage.name}()`);
36
+ this.#log = log;
37
+ this.#engine = new XpmLiquidEngine();
38
+ assert(isJsonObject(jsonPackage.xpack));
39
+ this.#jsonPackage = jsonPackage;
40
+ // os.version() available since 12.x
41
+ assert(typeof os.version === 'function', 'Mandatory os.version available only since 12.x');
42
+ this.topLiquidSubstitutionsVariables = {
43
+ ...xpmLiquidSubstitutionsVariablesBase,
44
+ package: jsonPackage,
45
+ };
46
+ if (isJsonObject(jsonPackage.xpack.properties)) {
47
+ this.topLiquidSubstitutionsVariables.properties = {
48
+ ...jsonPackage.xpack.properties,
49
+ };
50
+ }
51
+ // Prevent adding/removing properties.
52
+ Object.seal(this.topLiquidSubstitutionsVariables);
53
+ // Empty actions.
54
+ this.topActions = new XpmLiquidActions({
55
+ log: this.#log,
56
+ engine: this.#engine,
57
+ substitutionsVariables: this.topLiquidSubstitutionsVariables,
58
+ jsonActions: this.#jsonPackage.xpack.actions,
59
+ });
60
+ // Empty build configurations.
61
+ this.buildConfigurations = new XpmLiquidBuildConfigurations({
62
+ log: this.#log,
63
+ engine: this.#engine,
64
+ substitutionsVariables: this.topLiquidSubstitutionsVariables,
65
+ jsonBuildConfigurations: this.#jsonPackage.xpack.buildConfigurations,
66
+ });
67
+ }
68
+ }
69
+ // ----------------------------------------------------------------------------
70
+ //# sourceMappingURL=liquid-package.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"liquid-package.js","sourceRoot":"","sources":["../../src/lib/liquid-package.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,6DAA6D;AAE7D,+EAA+E;AAE/E,OAAO,MAAM,MAAM,aAAa,CAAA;AAChC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAM7B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EACL,mCAAmC,GAEpC,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAA;AAG/E,+EAA+E;AAE/E,MAAM,CAAC,MAAM,mCAAmC,GAAG,yBAAyB,CAAA;AAE5E,+EAA+E;AAE/E,MAAM,OAAO,gBAAgB;IAC3B,6EAA6E;IAC7E,WAAW;IAEF,IAAI,CAAQ;IACZ,OAAO,CAAQ;IACf,YAAY,CAAgB;IAE5B,+BAA+B,CAAiC;IAEhE,UAAU,CAAkB;IAC5B,mBAAmB,CAA8B;IAE1D,6EAA6E;IAC7E,qCAAqC;IAErC,YAAY,EACV,GAAG,EACH,WAAW,GAIZ;QACC,GAAG,CAAC,KAAK,CAAC,GAAG,gBAAgB,CAAC,IAAI,IAAI,CAAC,CAAA;QAEvC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAA;QACf,IAAI,CAAC,OAAO,GAAG,IAAI,eAAe,EAAE,CAAA;QAEpC,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAA;QACvC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAA;QAE/B,oCAAoC;QACpC,MAAM,CACJ,OAAO,EAAE,CAAC,OAAO,KAAK,UAAU,EAChC,gDAAgD,CACjD,CAAA;QAED,IAAI,CAAC,+BAA+B,GAAG;YACrC,GAAG,mCAAmC;YACtC,OAAO,EAAE,WAAW;SACrB,CAAA;QAED,IAAI,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/C,IAAI,CAAC,+BAA+B,CAAC,UAAU,GAAG;gBAChD,GAAG,WAAW,CAAC,KAAK,CAAC,UAAU;aAChC,CAAA;QACH,CAAC;QAED,sCAAsC;QACtC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAA;QAEjD,iBAAiB;QACjB,IAAI,CAAC,UAAU,GAAG,IAAI,gBAAgB,CAAC;YACrC,GAAG,EAAE,IAAI,CAAC,IAAI;YACd,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,sBAAsB,EAAE,IAAI,CAAC,+BAA+B;YAC5D,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO;SAC7C,CAAC,CAAA;QAEF,8BAA8B;QAC9B,IAAI,CAAC,mBAAmB,GAAG,IAAI,4BAA4B,CAAC;YAC1D,GAAG,EAAE,IAAI,CAAC,IAAI;YACd,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,sBAAsB,EAAE,IAAI,CAAC,+BAA+B;YAC5D,uBAAuB,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,mBAAmB;SACrE,CAAC,CAAA;IACJ,CAAC;CACF;AAED,+EAA+E"}