@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
package/README.md CHANGED
@@ -1,223 +1,27 @@
1
- [![GitHub package.json version](https://img.shields.io/github/package-json/v/xpack/xpm-lib-ts)](https://github.com/xpack/xpm-lib-ts/blob/mater/package.json)
2
- [![license](https://img.shields.io/github/license/xpack/xpm-lib-ts.svg)](https://github.com/xpack/xpm-lib-ts/blob/xpack/LICENSE)
3
- [![npm (scoped)](https://img.shields.io/npm/v/@xpack/xpm-lib.svg)](https://www.npmjs.com/package/@xpack/xpm-lib/)
1
+ [![GitHub package.json version](https://img.shields.io/github/package-json/v/xpack/xpm-lib-ts)](https://github.com/xpack/xpm-lib-ts/blob/master/package.json)
2
+ [![GitHub release (latest by date)](https://img.shields.io/github/v/release/xpack/xpm-lib-ts)](https://github.com/xpack/xpm-lib-ts/releases)
3
+ [![NPM Version](https://img.shields.io/npm/v/@xpack/xpm-lib?color=blue)](https://www.npmjs.com/package/@xpack/xpm-lib/)
4
+ [![license](https://img.shields.io/github/license/xpack/xpm-lib-ts)](https://github.com/xpack/xpm-lib-ts/blob/master/LICENSE)
5
+ [![Website](https://img.shields.io/website?url=https%3A%2F%2Fxpack.github.io%2Fxpm-lib-ts%2F)](https://xpack.github.io/xpm-lib-ts/)
4
6
 
5
- # A Node.js CommonJS/ES6 module with the Liquid substitutions code used by xpm & relatives
7
+ # The xpm Core Library
6
8
 
7
- This project provides a **TypeScript** Node.js **CommonJS**/**ES6** module
8
- with the code used to perform the Liquid substitutions when parsing
9
- the xpm `package.json` file.
9
+ A TypeScript Node.js module with the common code for **xpm** and xpm
10
+ enabled projects.
10
11
 
11
- Note: Compatibility with legacy CommonJS is required until VS Code extensions
12
- will be updated to import ES6 modules.
12
+ ## Project documentation
13
13
 
14
- The project is open-source and hosted on GitHub as
15
- [xpack/xpm-lib-ts](https://github.com/xpack/xpm-lib-ts.git).
14
+ For information on how to install and use this project, please refer to the
15
+ [project website](https://xpack.github.io/xpm-lib-ts/).
16
16
 
17
- ## Maintainer & developer info
17
+ ## Project source
18
18
 
19
- This page documents how to use this module in an user application.
20
- For maintainer information, see the separate
21
- [README-MAINTAINER](https://github.com/xpack/xpm-lib-ts/blob/master/README-MAINTAINER.md)
22
- page.
23
-
24
- ## Prerequisites
25
-
26
- A recent [Node.js](https://nodejs.org) (>=20.0.0), since the TypeScript code
27
- is compiled into ECMAScript 2020 code, and the tests use ES6 modules.
28
-
29
- ## Install
30
-
31
- The module is available as
32
- [`@xpack/xpm-lib-ts`](https://www.npmjs.com/package/@xpack/xpm-lib-ts)
33
- from the public [`npmjs`](https://www.npmjs.com) repository;
34
- it can be added as a dependency to any TypeScript or JavaScript
35
- project with `npm install`:
36
-
37
- ```console
38
- npm install --save @xpack/xpm-libs@latest
39
- ```
40
-
41
- The module does not provide any executables, and generally there are no
42
- reasons to install it globally.
43
-
44
- ## User info
45
-
46
- This section is intended for those who want to use this module in their
47
- own projects.
48
-
49
- The `@xpack/xpm-lib` module can be imported into both TypeScript
50
- and JavaScript Node.js code.
51
-
52
- In TypeScript and ECMAScript modules, use `import`:
53
-
54
- ```typescript
55
- import { XpmLiquid } from '@xpack/xpm-lib'
56
- ```
57
-
58
- In JavaScript with CommonJS, use `require()`:
59
-
60
- ```javascript
61
- const { XpmLiquid } = require('@xpack/xpm-lib')
62
- ```
63
-
64
- To use the `XpmLiquid` class, create an instance of the engine, provide the
65
- `package.json` object, possibly the name of the configuration, and
66
- call `performSubstitutions()`:
67
-
68
- ```js
69
- const xpmLiquid = new XpmLiquid(log)
70
- const xpmLiquidMap = xpmLiquid.prepareMap(packageJson, 'Debug')
71
-
72
- const str = await xpmLiquid.performSubstitutions(
73
- '{{ "build" | path_join: configuration.name | to_filename }}',
74
- xpmLiquidMap)
75
- ```
76
-
77
- ### Available variables
78
-
79
- The entire project `package.json` is available as the `package` variable:
80
-
81
- - `package`
82
-
83
- All user defined properties (project and configuration) are grouped
84
- below the `properties` variable:
85
-
86
- - `properties`
87
-
88
- If the substitution refers to a certain build configuration, the configuration
89
- name and the entire configuration content are available separately below
90
- the `configuration` variable. Configuration properties are added to the
91
- `properties` variables, possibly overriding project properties.
92
-
93
- - `configuration.name`
94
- - `configuration.*`
95
-
96
- Variables based on the Node.js process
97
- [environment](https://nodejs.org/dist/latest-v18.x/docs/api/process.html#process_process_env):
98
-
99
- - `env`
100
-
101
- Variables based on the Node.js
102
- [os](https://nodejs.org/dist/latest-v16.x/docs/api/os.html) definitions:
103
-
104
- - `os.EOL`
105
- - `os.arch` (like 'arm', 'arm64', 'ia32', 'x64')
106
- - `os.constants`
107
- - `os.cpus`
108
- - `os.endianness`
109
- - `os.homedir`
110
- - `os.hostname`
111
- - `os.platform` (like 'darwin', 'linux', 'win32')
112
- - `os.release`
113
- - `os.tmpdir`
114
- - `os.type`
115
- - `os.version` (available since Node 12)
116
-
117
- Variables based on the Node.js
118
- [path](https://nodejs.org/dist/latest-v16.x/docs/api/path.html) definitions:
119
-
120
- - `path.delimiter` (`;` for Windows, `:` for POSIX)
121
- - `path.sep` (`\` on Windows, `/` on POSIX)
122
- - `path.win32.delimiter` (`;`)
123
- - `path.win32.sep` (`\`)
124
- - `path.posix.delimiter` (`:`)
125
- - `path.posix.sep` (`/`)
126
-
127
- Examples:
128
-
129
- - `"buildFolderRelativePath": "build{{ path.sep }}{{ configuration.name | to_filename }}"`
130
-
131
- ### Custom filters
132
-
133
- Filters based on Node.js
134
- [path](https://nodejs.org/dist/latest-v16.x/docs/api/path.html) functions:
135
-
136
- - `path_basename`
137
- - `path_dirname`
138
- - `path_normalize`
139
- - `path_join`
140
- - `path_relative`
141
- - `path_posix_basename`
142
- - `path_posix_dirname`
143
- - `path_posix_normalize`
144
- - `path_posix_join`
145
- - `path_posix_relative`
146
- - `path_win32_basename`
147
- - `path_win32_dirname`
148
- - `path_win32_normalize`
149
- - `path_win32_join`
150
- - `path_win32_relative`
151
-
152
- Filters based on Node.js
153
- [utils](https://nodejs.org/dist/latest-v16.x/docs/api/util.html) functions:
154
-
155
- - `util_format`
156
-
157
- Custom filter to convert generic names to names accepted
158
- as file names (letters, digits, dash):
159
-
160
- - `to_filename`
161
- - `to_posix_filename`
162
- - `to_win32_filename`
163
-
164
- Examples:
165
-
166
- - `"buildFolderRelativePath": "{{ "build" | path_join: configuration.name | to_filename | downcase }"`
167
-
168
- ### Lenient if's
169
-
170
- The undefined variables in tests do not trigger `undefined variable` messages
171
- and allow to use defaults, like:
172
-
173
- ```
174
- {{ env.OPTIMIZATION | default: '-O2' }}
175
- ```
176
-
177
- ### Reference
178
-
179
- For more details on the available class definitions, including all methods,
180
- accessors, properties, etc,
181
- please see the TypeDoc
182
- [reference pages](https://xpack.github.io/xpm-lib-ts/).
183
-
184
- ## Known problems
185
-
186
- - none
187
-
188
- ## Status
189
-
190
- The `@xpack/xpm-lib-ts` module is fully functional and stable.
191
-
192
- The main clients for this module is the `xpm` CLI application and the
193
- [VS Code xPack C/C++ Managed Build](https://github.com/xpack/vscode-xpack-extension-ts/)
194
- extension.
195
-
196
- ## Tests
197
-
198
- The module is tested
199
- with 100% coverage and CI tested on every push via GitHub
200
- [Actions](https://github.com/xpack/xpm-lib-ts/actions).
201
-
202
- ## Compatibility notices
203
-
204
- According to [semver](https://semver.org) rules:
205
-
206
- > Major version X (X.y.z | X > 0) MUST be incremented if any
207
- backwards incompatible changes are introduced to the public API.
208
-
209
- ### v3.0.0
210
-
211
- The API was greatly extended to use XpmPackage & XpmLiquid*.
212
- The project was renamed xpm-lib and updated to ESM only.
213
-
214
- ### v2.0.0
215
-
216
- The project was updated to dual ESM & CJS.
19
+ The source code of the current release is available on
20
+ [GitHub tag v4.0.0 tree](https://github.com/xpack/xpm-lib-ts/tree/v4.0.0).
217
21
 
218
22
  ## License
219
23
 
220
- The original content is released under the
221
- [MIT License](https://opensource.org/license/mit),
24
+ Unless otherwise stated, the original content is released under the terms of the
25
+ [MIT License](https://opensource.org/licenses/mit),
222
26
  with all rights reserved to
223
27
  [Liviu Ionescu](https://github.com/ilg-ul).
@@ -0,0 +1,58 @@
1
+ import { Logger } from '@xpack/logger';
2
+ import { LiquidSubstitutionsVariables, LiquidSubstitutionsStrings } from '../data/substitutions-variables.js';
3
+ import { JsonActionContent, JsonActions, JsonActionTemplate } from '../types/json.js';
4
+ import { BuildConfiguration } from './build-configurations.js';
5
+ import { LiquidEngine } from './liquid-engine.js';
6
+ export interface ActionsConstructorParameters {
7
+ engine: LiquidEngine;
8
+ substitutionsVariables: LiquidSubstitutionsVariables;
9
+ jsonActions: JsonActions | undefined;
10
+ inheritedActionsMap?: Map<string, Action>;
11
+ buildConfiguration?: BuildConfiguration;
12
+ log: Logger;
13
+ }
14
+ export declare class Actions {
15
+ readonly log: Logger;
16
+ readonly engine: LiquidEngine;
17
+ readonly substitutionsVariables: LiquidSubstitutionsVariables;
18
+ readonly jsonActions: JsonActions;
19
+ readonly buildConfiguration: BuildConfiguration | undefined;
20
+ protected readonly _actionsMap: Map<string, Action | undefined>;
21
+ protected readonly _namesSet: Set<string>;
22
+ protected readonly _jsonActionsNamesMap: Map<string, string>;
23
+ protected _isInitialised: boolean;
24
+ protected _names: string[];
25
+ constructor({ engine, substitutionsVariables, jsonActions, inheritedActionsMap, buildConfiguration, log, }: ActionsConstructorParameters);
26
+ initialise(): Promise<boolean>;
27
+ get size(): number;
28
+ get isEmpty(): boolean;
29
+ get names(): string[];
30
+ has(actionName: string): boolean;
31
+ get(actionName: string): Action;
32
+ protected _processTemplate({ actionName, jsonActionTemplate, }: {
33
+ actionName: string;
34
+ jsonActionTemplate: JsonActionTemplate;
35
+ }): Promise<void>;
36
+ protected _expandTemplateActions({ actionName, jsonActionTemplate, }: {
37
+ actionName: string;
38
+ jsonActionTemplate: JsonActionTemplate;
39
+ }): Promise<Map<string, Action>>;
40
+ }
41
+ export interface ActionConstructorParameters {
42
+ actionName: string;
43
+ jsonAction: JsonActionContent;
44
+ parentActions: Actions;
45
+ matrixParameters?: LiquidSubstitutionsStrings;
46
+ }
47
+ export declare class Action {
48
+ readonly name: string;
49
+ readonly jsonAction: JsonActionContent;
50
+ readonly parentActions: Actions;
51
+ protected readonly _matrixParameters?: LiquidSubstitutionsStrings;
52
+ protected _commands?: string[];
53
+ protected _isInitialised: boolean;
54
+ constructor({ actionName, jsonAction, parentActions, matrixParameters, }: ActionConstructorParameters);
55
+ initialise(): Promise<boolean>;
56
+ get commands(): string[];
57
+ }
58
+ //# sourceMappingURL=actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/classes/actions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,250 @@
1
+ import assert from 'node:assert';
2
+ import * as os from 'node:os';
3
+ import { isJsonObject, isString, isJsonArray, } from '../functions/is-something.js';
4
+ import { performSubstitutions } from '../functions/perform-substitutions.js';
5
+ import { getErrorMessage, hasLiquidSyntax } from '../functions/utils.js';
6
+ import { ConfigurationError } from './errors.js';
7
+ import { TemplateExpander } from './template-expander.js';
8
+ export class Actions {
9
+ log;
10
+ engine;
11
+ substitutionsVariables;
12
+ jsonActions;
13
+ buildConfiguration;
14
+ _actionsMap = new Map();
15
+ _namesSet = new Set();
16
+ _jsonActionsNamesMap = new Map();
17
+ _isInitialised = false;
18
+ _names = [];
19
+ constructor({ engine, substitutionsVariables, jsonActions, inheritedActionsMap, buildConfiguration, log, }) {
20
+ assert(log, 'log is required');
21
+ assert(engine, 'engine is required');
22
+ assert(substitutionsVariables, 'substitutionsVariables is required');
23
+ if (buildConfiguration !== undefined) {
24
+ log.trace(`${Actions.name}()` + ` @${buildConfiguration.name}`);
25
+ }
26
+ else {
27
+ log.trace(`${Actions.name}()`);
28
+ }
29
+ this.log = log;
30
+ this.engine = engine;
31
+ this.substitutionsVariables = substitutionsVariables;
32
+ this.jsonActions = jsonActions ?? {};
33
+ if (buildConfiguration !== undefined) {
34
+ this.buildConfiguration = buildConfiguration;
35
+ }
36
+ if (inheritedActionsMap !== undefined) {
37
+ for (const [inheritedActionName, inheritedAction,] of inheritedActionsMap) {
38
+ const action = new Action({
39
+ actionName: inheritedActionName,
40
+ jsonAction: inheritedAction.jsonAction,
41
+ parentActions: this,
42
+ });
43
+ this._actionsMap.set(inheritedActionName, action);
44
+ }
45
+ }
46
+ }
47
+ async initialise() {
48
+ const log = this.log;
49
+ if (this._isInitialised) {
50
+ if (this.buildConfiguration !== undefined) {
51
+ log.trace(`${Actions.name}.initialise()` +
52
+ ` @${this.buildConfiguration.name} again`);
53
+ }
54
+ else {
55
+ log.trace(`${Actions.name}.initialise() again`);
56
+ }
57
+ return false;
58
+ }
59
+ if (this.buildConfiguration !== undefined) {
60
+ log.trace(`${Actions.name}.initialise()` + ` @${this.buildConfiguration.name}`);
61
+ }
62
+ else {
63
+ log.trace(`${Actions.name}.initialise()`);
64
+ }
65
+ for (const [actionName, jsonAction] of Object.entries(this.jsonActions)) {
66
+ if (hasLiquidSyntax(actionName)) {
67
+ await this._processTemplate({
68
+ actionName,
69
+ jsonActionTemplate: jsonAction,
70
+ });
71
+ }
72
+ else {
73
+ if (this._namesSet.has(actionName)) {
74
+ throw new ConfigurationError(`action name "${actionName}" already defined`);
75
+ }
76
+ else {
77
+ this._actionsMap.set(actionName, undefined);
78
+ this._jsonActionsNamesMap.set(actionName, actionName);
79
+ this._namesSet.add(actionName);
80
+ }
81
+ }
82
+ }
83
+ const names = Array.from(this._actionsMap.keys());
84
+ this._names = names;
85
+ this.log.trace(`${Actions.name}.initialise() =>`, names);
86
+ this._isInitialised = true;
87
+ return true;
88
+ }
89
+ get size() {
90
+ assert(this._isInitialised, 'Actions collection must be initialised before accessing size');
91
+ return this._actionsMap.size;
92
+ }
93
+ get isEmpty() {
94
+ assert(this._isInitialised, 'Actions collection must be initialised before accessing isEmpty');
95
+ return this._actionsMap.size === 0;
96
+ }
97
+ get names() {
98
+ assert(this._isInitialised, 'Actions collection must be initialised before accessing names');
99
+ return this._names;
100
+ }
101
+ has(actionName) {
102
+ assert(this._isInitialised, 'Actions collection must be initialised before accessing has()');
103
+ return this._actionsMap.has(actionName);
104
+ }
105
+ get(actionName) {
106
+ assert(this._isInitialised, 'Actions collection must be initialised before accessing get()');
107
+ const log = this.log;
108
+ log.trace(`${Actions.name}.get(${actionName})`);
109
+ let action = this._actionsMap.get(actionName);
110
+ if (action === undefined) {
111
+ const jsonActionName = this._jsonActionsNamesMap.get(actionName);
112
+ if (jsonActionName === undefined) {
113
+ throw new ConfigurationError(`action "${actionName}" does not exist`);
114
+ }
115
+ const jsonAction = (this.jsonActions[jsonActionName] ??
116
+ '');
117
+ action = new Action({
118
+ actionName,
119
+ jsonAction,
120
+ parentActions: this,
121
+ });
122
+ this._actionsMap.set(actionName, action);
123
+ }
124
+ return action;
125
+ }
126
+ async _processTemplate({ actionName, jsonActionTemplate, }) {
127
+ try {
128
+ const expandedActionsMap = await this._expandTemplateActions({
129
+ actionName,
130
+ jsonActionTemplate,
131
+ });
132
+ for (const [expandedActionName, expandedAction] of expandedActionsMap) {
133
+ if (this._namesSet.has(expandedActionName)) {
134
+ throw new ConfigurationError(`duplicate action name "${expandedActionName}" ` +
135
+ `could not be generated from template.`);
136
+ }
137
+ else {
138
+ this._actionsMap.set(expandedActionName, expandedAction);
139
+ this._jsonActionsNamesMap.set(expandedActionName, actionName);
140
+ this._namesSet.add(expandedActionName);
141
+ }
142
+ }
143
+ }
144
+ catch (error) {
145
+ const message = getErrorMessage(error) + ` in action "${actionName}"`;
146
+ throw new ConfigurationError(message);
147
+ }
148
+ }
149
+ async _expandTemplateActions({ actionName, jsonActionTemplate, }) {
150
+ const log = this.log;
151
+ log.trace(`${Actions.name}.#expandTemplateActions(${actionName})`);
152
+ if (jsonActionTemplate.matrix == undefined) {
153
+ throw new ConfigurationError(`action "${actionName}" has no matrix`);
154
+ }
155
+ if (!isJsonObject(jsonActionTemplate.matrix)) {
156
+ throw new ConfigurationError(`action "${actionName}" matrix is not an object`);
157
+ }
158
+ if (jsonActionTemplate.template == undefined) {
159
+ throw new ConfigurationError(`action "${actionName}" has no template`);
160
+ }
161
+ if (!isString(jsonActionTemplate.template) &&
162
+ !isJsonArray(jsonActionTemplate.template)) {
163
+ throw new ConfigurationError(`action "${actionName}" template is not a string or array`);
164
+ }
165
+ const expander = new TemplateExpander({
166
+ engine: this.engine,
167
+ substitutionsVariables: this.substitutionsVariables,
168
+ log: this.log,
169
+ });
170
+ return await expander.expandTemplate({
171
+ templateName: actionName,
172
+ matrix: jsonActionTemplate.matrix,
173
+ templateContent: jsonActionTemplate.template,
174
+ templateType: 'action',
175
+ instanceFactory: (expandedName, combination, templateContent) => new Action({
176
+ actionName: expandedName,
177
+ jsonAction: templateContent,
178
+ parentActions: this,
179
+ matrixParameters: { ...combination },
180
+ }),
181
+ });
182
+ }
183
+ }
184
+ export class Action {
185
+ name;
186
+ jsonAction;
187
+ parentActions;
188
+ _matrixParameters;
189
+ _commands;
190
+ _isInitialised = false;
191
+ constructor({ actionName, jsonAction, parentActions, matrixParameters, }) {
192
+ assert(actionName, 'actionName is required');
193
+ assert(parentActions, 'parentActions is required');
194
+ const log = parentActions.log;
195
+ log.trace(`${Action.name}(${actionName})`);
196
+ this.name = actionName;
197
+ this.jsonAction = jsonAction;
198
+ this.parentActions = parentActions;
199
+ if (matrixParameters !== undefined) {
200
+ this._matrixParameters = matrixParameters;
201
+ }
202
+ }
203
+ async initialise() {
204
+ const log = this.parentActions.log;
205
+ if (this._isInitialised) {
206
+ log.trace(`${Action.name}.initialise(${this.name}) again`);
207
+ return false;
208
+ }
209
+ log.trace(`${Action.name}.initialise(${this.name})`);
210
+ const jsonAction = this.jsonAction;
211
+ const inputCommands = Array.isArray(jsonAction)
212
+ ? jsonAction.join(os.EOL)
213
+ : jsonAction;
214
+ let substitutedCommands;
215
+ if (hasLiquidSyntax(inputCommands)) {
216
+ try {
217
+ substitutedCommands = await performSubstitutions({
218
+ input: inputCommands,
219
+ engine: this.parentActions.engine,
220
+ substitutionsVariables: {
221
+ ...this.parentActions.substitutionsVariables,
222
+ matrix: this._matrixParameters ?? {},
223
+ },
224
+ log,
225
+ });
226
+ }
227
+ catch (error) {
228
+ const message = getErrorMessage(error) +
229
+ ` in action "${this.name}" commands substitution`;
230
+ throw new ConfigurationError(message);
231
+ }
232
+ }
233
+ else {
234
+ substitutedCommands = inputCommands;
235
+ }
236
+ this._commands = substitutedCommands
237
+ .replace(new RegExp(os.EOL + '$'), '')
238
+ .split(os.EOL);
239
+ log.trace(`${Action.name}.initialise() =>`, this.name);
240
+ log.trace(this.name, 'commands =>', this._commands);
241
+ this._isInitialised = true;
242
+ return true;
243
+ }
244
+ get commands() {
245
+ assert(this._isInitialised, 'Action must be initialised before accessing commands');
246
+ assert(this._commands, 'Action _commands not initialised');
247
+ return this._commands;
248
+ }
249
+ }
250
+ //# sourceMappingURL=actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/classes/actions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ import { Logger } from '@xpack/logger';
2
+ import { LiquidEngine } from './liquid-engine.js';
3
+ import { LiquidSubstitutionsVariables, LiquidSubstitutionsStrings } from '../data/substitutions-variables.js';
4
+ import { JsonBuildConfigurations, JsonBuildConfigurationTemplate, JsonBuildConfiguration, JsonBuildConfigurationContent, JsonDependencies } from '../types/json.js';
5
+ import { Actions, Action } from './actions.js';
6
+ export interface BuildConfigurationsConstructorParameters {
7
+ engine: LiquidEngine;
8
+ substitutionsVariables: LiquidSubstitutionsVariables;
9
+ jsonBuildConfigurations: JsonBuildConfigurations | undefined;
10
+ log: Logger;
11
+ }
12
+ export declare class BuildConfigurations {
13
+ readonly log: Logger;
14
+ readonly engine: LiquidEngine;
15
+ readonly substitutionsVariables: LiquidSubstitutionsVariables;
16
+ readonly jsonBuildConfigurations: JsonBuildConfigurations;
17
+ protected readonly _buildConfigurationsMap: Map<string, BuildConfiguration | undefined>;
18
+ protected readonly _jsonBuildConfigurationsNamesMap: Map<string, string>;
19
+ protected readonly _namesSet: Set<string>;
20
+ protected _isInitialised: boolean;
21
+ protected _names: string[];
22
+ constructor({ engine, substitutionsVariables, jsonBuildConfigurations, log, }: BuildConfigurationsConstructorParameters);
23
+ initialise(): Promise<boolean>;
24
+ get size(): number;
25
+ get isEmpty(): boolean;
26
+ get names(): string[];
27
+ getJsonName(buildConfigurationName: string): string;
28
+ hasJson(buildConfigurationName: string): boolean;
29
+ getJson(buildConfigurationName: string): JsonBuildConfiguration;
30
+ isHidden(buildConfigurationName: string): boolean;
31
+ has(buildConfigurationName: string): boolean;
32
+ get(buildConfigurationName: string): BuildConfiguration;
33
+ protected _processTemplate({ buildConfigurationName, jsonBuildConfigurationTemplate, }: {
34
+ buildConfigurationName: string;
35
+ jsonBuildConfigurationTemplate: JsonBuildConfigurationTemplate;
36
+ }): Promise<void>;
37
+ protected _expandTemplateBuildConfigurations({ buildConfigurationName, jsonBuildConfigurationTemplate, }: {
38
+ buildConfigurationName: string;
39
+ jsonBuildConfigurationTemplate: JsonBuildConfigurationTemplate;
40
+ }): Promise<Map<string, BuildConfiguration>>;
41
+ }
42
+ export interface BuildConfigurationConstructorParameters {
43
+ buildConfigurationName: string;
44
+ templateBuildConfigurationName?: string;
45
+ jsonBuildConfiguration: JsonBuildConfigurationContent;
46
+ parentBuildConfigurations: BuildConfigurations;
47
+ matrixParameters?: LiquidSubstitutionsStrings;
48
+ }
49
+ export declare class BuildConfiguration {
50
+ readonly name: string;
51
+ readonly templateName?: string;
52
+ readonly parentBuildConfigurations: BuildConfigurations;
53
+ inheritsNames: string[];
54
+ readonly isHidden: boolean;
55
+ properties: LiquidSubstitutionsStrings;
56
+ dependencies: JsonDependencies;
57
+ devDependencies: JsonDependencies;
58
+ jsonBuildConfiguration: JsonBuildConfigurationContent;
59
+ isTemplate: boolean;
60
+ protected readonly _log: Logger;
61
+ protected _substitutionsVariables: LiquidSubstitutionsVariables;
62
+ protected readonly matrixParameters?: LiquidSubstitutionsStrings;
63
+ protected _actions: Actions | undefined;
64
+ protected _buildFolderRelativePath?: string;
65
+ protected _inheritedNamesSet: Set<string>;
66
+ protected _isInitialised: boolean;
67
+ constructor({ buildConfigurationName, templateBuildConfigurationName, jsonBuildConfiguration, parentBuildConfigurations, matrixParameters, }: BuildConfigurationConstructorParameters);
68
+ initialise(): Promise<boolean>;
69
+ get actions(): Actions;
70
+ get buildFolderRelativePath(): string;
71
+ protected _substituteTemplate(): Promise<JsonBuildConfigurationContent>;
72
+ protected _substituteInherits(): Promise<JsonBuildConfigurationContent>;
73
+ private _parseInheritsField;
74
+ private _processInheritedConfiguration;
75
+ protected _processInherits(localJsonBuildConfiguration: JsonBuildConfigurationContent): Promise<Map<string, Action>>;
76
+ protected _getBuildFolderRelativePath(): Promise<string>;
77
+ }
78
+ //# sourceMappingURL=build-configurations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-configurations.d.ts","sourceRoot":"","sources":["../../src/classes/build-configurations.ts"],"names":[],"mappings":"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"}