@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,108 @@
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
+
12
+ /* eslint max-len: [ "error", 80, { "ignoreUrls": true } ] */
13
+
14
+ // ----------------------------------------------------------------------------
15
+
16
+ import assert from 'node:assert'
17
+ import * as os from 'node:os'
18
+
19
+ import { Liquid } from 'liquidjs'
20
+
21
+ import { Logger } from '@xpack/logger'
22
+
23
+ import { isJsonObject } from './functions/utils.js'
24
+ import {
25
+ xpmLiquidSubstitutionsVariablesBase,
26
+ XpmLiquidSubstitutionsVariables,
27
+ } from './substitutions-variables.js'
28
+ import { XpmLiquidEngine } from './liquid-engine.js'
29
+ import { XpmLiquidActions } from './liquid-actions.js'
30
+ import { XpmLiquidBuildConfigurations } from './liquid-build-configurations.js'
31
+ import { JsonXpmPackage } from './types.js'
32
+
33
+ // ----------------------------------------------------------------------------
34
+
35
+ export const buildFolderRelativePathPropertyName = 'buildFolderRelativePath'
36
+
37
+ // ----------------------------------------------------------------------------
38
+
39
+ export class XpmLiquidPackage {
40
+ // --------------------------------------------------------------------------
41
+ // Members.
42
+
43
+ readonly #log: Logger
44
+ readonly #engine: Liquid
45
+ readonly #jsonPackage: JsonXpmPackage
46
+
47
+ readonly topLiquidSubstitutionsVariables: XpmLiquidSubstitutionsVariables
48
+
49
+ readonly topActions: XpmLiquidActions
50
+ readonly buildConfigurations: XpmLiquidBuildConfigurations
51
+
52
+ // --------------------------------------------------------------------------
53
+ // Constructor and async initialiser.
54
+
55
+ constructor({
56
+ log,
57
+ jsonPackage,
58
+ }: {
59
+ log: Logger
60
+ jsonPackage: JsonXpmPackage
61
+ }) {
62
+ log.trace(`${XpmLiquidPackage.name}()`)
63
+
64
+ this.#log = log
65
+ this.#engine = new XpmLiquidEngine()
66
+
67
+ assert(isJsonObject(jsonPackage.xpack))
68
+ this.#jsonPackage = jsonPackage
69
+
70
+ // os.version() available since 12.x
71
+ assert(
72
+ typeof os.version === 'function',
73
+ 'Mandatory os.version available only since 12.x'
74
+ )
75
+
76
+ this.topLiquidSubstitutionsVariables = {
77
+ ...xpmLiquidSubstitutionsVariablesBase,
78
+ package: jsonPackage,
79
+ }
80
+
81
+ if (isJsonObject(jsonPackage.xpack.properties)) {
82
+ this.topLiquidSubstitutionsVariables.properties = {
83
+ ...jsonPackage.xpack.properties,
84
+ }
85
+ }
86
+
87
+ // Prevent adding/removing properties.
88
+ Object.seal(this.topLiquidSubstitutionsVariables)
89
+
90
+ // Empty actions.
91
+ this.topActions = new XpmLiquidActions({
92
+ log: this.#log,
93
+ engine: this.#engine,
94
+ substitutionsVariables: this.topLiquidSubstitutionsVariables,
95
+ jsonActions: this.#jsonPackage.xpack.actions,
96
+ })
97
+
98
+ // Empty build configurations.
99
+ this.buildConfigurations = new XpmLiquidBuildConfigurations({
100
+ log: this.#log,
101
+ engine: this.#engine,
102
+ substitutionsVariables: this.topLiquidSubstitutionsVariables,
103
+ jsonBuildConfigurations: this.#jsonPackage.xpack.buildConfigurations,
104
+ })
105
+ }
106
+ }
107
+
108
+ // ----------------------------------------------------------------------------