@empire-builder-kit/nx 1.0.0-beta.4

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 (185) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +5 -0
  3. package/README.md +25 -0
  4. package/executors.json +54 -0
  5. package/generators.json +35 -0
  6. package/migrations/standard-pre-v1-to-v1.md +11 -0
  7. package/package.json +66 -0
  8. package/src/blueprints/execution.d.ts +31 -0
  9. package/src/blueprints/execution.js +166 -0
  10. package/src/blueprints/execution.js.map +1 -0
  11. package/src/blueprints/index.d.ts +5 -0
  12. package/src/blueprints/index.js +9 -0
  13. package/src/blueprints/index.js.map +1 -0
  14. package/src/blueprints/inputs.d.ts +43 -0
  15. package/src/blueprints/inputs.js +103 -0
  16. package/src/blueprints/inputs.js.map +1 -0
  17. package/src/blueprints/manifest.d.ts +241 -0
  18. package/src/blueprints/manifest.js +369 -0
  19. package/src/blueprints/manifest.js.map +1 -0
  20. package/src/blueprints/resolver.d.ts +28 -0
  21. package/src/blueprints/resolver.js +214 -0
  22. package/src/blueprints/resolver.js.map +1 -0
  23. package/src/blueprints/transitions.d.ts +20 -0
  24. package/src/blueprints/transitions.js +61 -0
  25. package/src/blueprints/transitions.js.map +1 -0
  26. package/src/executors/deploy/deploy.d.ts +4 -0
  27. package/src/executors/deploy/deploy.js +6 -0
  28. package/src/executors/deploy/deploy.js.map +1 -0
  29. package/src/executors/dev/dev.d.ts +4 -0
  30. package/src/executors/dev/dev.js +6 -0
  31. package/src/executors/dev/dev.js.map +1 -0
  32. package/src/executors/dev-doctor/dev-doctor.d.ts +18 -0
  33. package/src/executors/dev-doctor/dev-doctor.js +145 -0
  34. package/src/executors/dev-doctor/dev-doctor.js.map +1 -0
  35. package/src/executors/dev-doctor/schema.json +17 -0
  36. package/src/executors/dev-setup/dev-setup.d.ts +11 -0
  37. package/src/executors/dev-setup/dev-setup.js +454 -0
  38. package/src/executors/dev-setup/dev-setup.js.map +1 -0
  39. package/src/executors/dev-setup/schema.json +16 -0
  40. package/src/executors/fleet/fleet.d.ts +51 -0
  41. package/src/executors/fleet/fleet.js +529 -0
  42. package/src/executors/fleet/fleet.js.map +1 -0
  43. package/src/executors/fleet/schema.json +25 -0
  44. package/src/executors/foundation-preflight/foundation-preflight.d.ts +15 -0
  45. package/src/executors/foundation-preflight/foundation-preflight.js +94 -0
  46. package/src/executors/foundation-preflight/foundation-preflight.js.map +1 -0
  47. package/src/executors/foundation-preflight/schema.json +31 -0
  48. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.d.ts +13 -0
  49. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js +69 -0
  50. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js.map +1 -0
  51. package/src/executors/foundation-remove-preflight/schema.json +17 -0
  52. package/src/executors/refresh/refresh.d.ts +4 -0
  53. package/src/executors/refresh/refresh.js +6 -0
  54. package/src/executors/refresh/refresh.js.map +1 -0
  55. package/src/executors/remove/remove.d.ts +4 -0
  56. package/src/executors/remove/remove.js +6 -0
  57. package/src/executors/remove/remove.js.map +1 -0
  58. package/src/executors/sst-lifecycle/run-sst-command.d.ts +28 -0
  59. package/src/executors/sst-lifecycle/run-sst-command.js +154 -0
  60. package/src/executors/sst-lifecycle/run-sst-command.js.map +1 -0
  61. package/src/executors/sst-lifecycle/schema.json +45 -0
  62. package/src/executors/unlock/unlock.d.ts +4 -0
  63. package/src/executors/unlock/unlock.js +6 -0
  64. package/src/executors/unlock/unlock.js.map +1 -0
  65. package/src/foundation/aurora-logical-database.d.ts +76 -0
  66. package/src/foundation/aurora-logical-database.js +419 -0
  67. package/src/foundation/aurora-logical-database.js.map +1 -0
  68. package/src/foundation/discovery.d.ts +55 -0
  69. package/src/foundation/discovery.js +55 -0
  70. package/src/foundation/discovery.js.map +1 -0
  71. package/src/foundation/index.d.ts +6 -0
  72. package/src/foundation/index.js +10 -0
  73. package/src/foundation/index.js.map +1 -0
  74. package/src/foundation/local-database-contract.d.ts +30 -0
  75. package/src/foundation/local-database-contract.js +75 -0
  76. package/src/foundation/local-database-contract.js.map +1 -0
  77. package/src/foundation/preflight.d.ts +31 -0
  78. package/src/foundation/preflight.js +114 -0
  79. package/src/foundation/preflight.js.map +1 -0
  80. package/src/foundation/provision-database-bindings.d.ts +30 -0
  81. package/src/foundation/provision-database-bindings.js +113 -0
  82. package/src/foundation/provision-database-bindings.js.map +1 -0
  83. package/src/foundation/provision-logical-database.d.ts +26 -0
  84. package/src/foundation/provision-logical-database.js +162 -0
  85. package/src/foundation/provision-logical-database.js.map +1 -0
  86. package/src/foundation/requirements.d.ts +37 -0
  87. package/src/foundation/requirements.js +141 -0
  88. package/src/foundation/requirements.js.map +1 -0
  89. package/src/foundation/stages.d.ts +14 -0
  90. package/src/foundation/stages.js +51 -0
  91. package/src/foundation/stages.js.map +1 -0
  92. package/src/generators/function/function.d.ts +13 -0
  93. package/src/generators/function/function.js +71 -0
  94. package/src/generators/function/function.js.map +1 -0
  95. package/src/generators/function/schema.d.ts +5 -0
  96. package/src/generators/function/schema.json +20 -0
  97. package/src/generators/job/job.d.ts +4 -0
  98. package/src/generators/job/job.js +5 -0
  99. package/src/generators/job/job.js.map +1 -0
  100. package/src/generators/preset/generator.d.ts +5 -0
  101. package/src/generators/preset/generator.js +41 -0
  102. package/src/generators/preset/generator.js.map +1 -0
  103. package/src/generators/preset/schema.d.ts +4 -0
  104. package/src/generators/preset/schema.json +22 -0
  105. package/src/generators/preset/workspace-files.d.ts +18 -0
  106. package/src/generators/preset/workspace-files.js +895 -0
  107. package/src/generators/preset/workspace-files.js.map +1 -0
  108. package/src/generators/service/service.d.ts +4 -0
  109. package/src/generators/service/service.js +5 -0
  110. package/src/generators/service/service.js.map +1 -0
  111. package/src/generators/slice/schema.d.ts +7 -0
  112. package/src/generators/slice/schema.json +38 -0
  113. package/src/generators/slice/slice.d.ts +26 -0
  114. package/src/generators/slice/slice.js +1676 -0
  115. package/src/generators/slice/slice.js.map +1 -0
  116. package/src/generators/upgrade/schema.d.ts +8 -0
  117. package/src/generators/upgrade/schema.json +31 -0
  118. package/src/generators/upgrade/upgrade.d.ts +27 -0
  119. package/src/generators/upgrade/upgrade.js +666 -0
  120. package/src/generators/upgrade/upgrade.js.map +1 -0
  121. package/src/generators/workload/schema.d.ts +6 -0
  122. package/src/generators/workload/schema.json +21 -0
  123. package/src/generators/workload/workload.d.ts +16 -0
  124. package/src/generators/workload/workload.js +157 -0
  125. package/src/generators/workload/workload.js.map +1 -0
  126. package/src/index.d.ts +5 -0
  127. package/src/index.js +9 -0
  128. package/src/index.js.map +1 -0
  129. package/src/local-dev/contracts.d.ts +31 -0
  130. package/src/local-dev/contracts.js +126 -0
  131. package/src/local-dev/contracts.js.map +1 -0
  132. package/src/local-dev/gateway-daemon.d.ts +4 -0
  133. package/src/local-dev/gateway-daemon.js +39 -0
  134. package/src/local-dev/gateway-daemon.js.map +1 -0
  135. package/src/local-dev/gateway.d.ts +60 -0
  136. package/src/local-dev/gateway.js +368 -0
  137. package/src/local-dev/gateway.js.map +1 -0
  138. package/src/local-dev/identity.d.ts +16 -0
  139. package/src/local-dev/identity.js +101 -0
  140. package/src/local-dev/identity.js.map +1 -0
  141. package/src/local-dev/index.d.ts +7 -0
  142. package/src/local-dev/index.js +11 -0
  143. package/src/local-dev/index.js.map +1 -0
  144. package/src/local-dev/portless.d.ts +15 -0
  145. package/src/local-dev/portless.js +115 -0
  146. package/src/local-dev/portless.js.map +1 -0
  147. package/src/local-dev/ports.d.ts +10 -0
  148. package/src/local-dev/ports.js +39 -0
  149. package/src/local-dev/ports.js.map +1 -0
  150. package/src/local-dev/proxy.d.ts +37 -0
  151. package/src/local-dev/proxy.js +271 -0
  152. package/src/local-dev/proxy.js.map +1 -0
  153. package/src/local-dev/tls.d.ts +24 -0
  154. package/src/local-dev/tls.js +294 -0
  155. package/src/local-dev/tls.js.map +1 -0
  156. package/src/ownership/composition.d.ts +16 -0
  157. package/src/ownership/composition.js +125 -0
  158. package/src/ownership/composition.js.map +1 -0
  159. package/src/ownership/foundation-record.d.ts +66 -0
  160. package/src/ownership/foundation-record.js +108 -0
  161. package/src/ownership/foundation-record.js.map +1 -0
  162. package/src/ownership/hash.d.ts +2 -0
  163. package/src/ownership/hash.js +10 -0
  164. package/src/ownership/hash.js.map +1 -0
  165. package/src/ownership/index.d.ts +6 -0
  166. package/src/ownership/index.js +10 -0
  167. package/src/ownership/index.js.map +1 -0
  168. package/src/ownership/json-ownership.d.ts +13 -0
  169. package/src/ownership/json-ownership.js +147 -0
  170. package/src/ownership/json-ownership.js.map +1 -0
  171. package/src/ownership/record.d.ts +186 -0
  172. package/src/ownership/record.js +336 -0
  173. package/src/ownership/record.js.map +1 -0
  174. package/src/ownership/workspace-record.d.ts +66 -0
  175. package/src/ownership/workspace-record.js +108 -0
  176. package/src/ownership/workspace-record.js.map +1 -0
  177. package/src/schemas/blueprint-input-schema-v1.json +23 -0
  178. package/src/schemas/blueprint-v1.json +170 -0
  179. package/src/schemas/foundation-ownership-v2.json +42 -0
  180. package/src/schemas/foundation-requirement-v1.json +32 -0
  181. package/src/schemas/generated-ownership-v2.json +117 -0
  182. package/src/schemas/workspace-ownership-v2.json +42 -0
  183. package/src/validation.d.ts +14 -0
  184. package/src/validation.js +14 -0
  185. package/src/validation.js.map +1 -0
@@ -0,0 +1,369 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.blueprintManifestSchema = exports.BLUEPRINT_DATABASE_CHANGE_KINDS = exports.BLUEPRINT_MIGRATION_PLAN_SCHEMA_VERSION = exports.BLUEPRINT_PACKAGE_TYPE = exports.BLUEPRINT_MANIFEST_VERSION = void 0;
4
+ exports.isExactSemanticVersion = isExactSemanticVersion;
5
+ exports.validateBlueprintManifest = validateBlueprintManifest;
6
+ const index_js_1 = require("../foundation/index.js");
7
+ const validation_js_1 = require("../validation.js");
8
+ const semver_1 = require("semver");
9
+ exports.BLUEPRINT_MANIFEST_VERSION = 1;
10
+ exports.BLUEPRINT_PACKAGE_TYPE = 'empire-builder-kit-blueprint';
11
+ exports.BLUEPRINT_MIGRATION_PLAN_SCHEMA_VERSION = 1;
12
+ exports.BLUEPRINT_DATABASE_CHANGE_KINDS = [
13
+ 'none',
14
+ 'ordered',
15
+ 'replacement',
16
+ 'manual',
17
+ ];
18
+ const packageNamePattern = /^(?:@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*$/;
19
+ const semanticVersionPattern = /^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/;
20
+ function isExactSemanticVersion(value) {
21
+ return typeof value === 'string' && semanticVersionPattern.test(value);
22
+ }
23
+ function requireNonEmptyString(value, path, issues) {
24
+ if (typeof value !== 'string' || value.trim() === '') {
25
+ issues.push({ message: 'must be a non-empty string', path });
26
+ }
27
+ }
28
+ function requireRelativePackagePath(value, path, issues) {
29
+ requireNonEmptyString(value, path, issues);
30
+ if (typeof value === 'string' && !value.startsWith('./')) {
31
+ issues.push({
32
+ message: 'must be a relative package path beginning with ./',
33
+ path,
34
+ });
35
+ }
36
+ }
37
+ function rejectUnexpectedProperties(value, allowed, path, issues) {
38
+ for (const key of Object.keys(value)) {
39
+ if (!allowed.includes(key)) {
40
+ issues.push({
41
+ message: 'is not an allowed property',
42
+ path: `${path}.${key}`,
43
+ });
44
+ }
45
+ }
46
+ }
47
+ function validateUniqueStringArray(value, path, issues, options = {}) {
48
+ if (!Array.isArray(value) || (!options.allowEmpty && value.length === 0)) {
49
+ issues.push({
50
+ message: options.allowEmpty
51
+ ? 'must be an array'
52
+ : 'must contain at least one non-empty string',
53
+ path,
54
+ });
55
+ return;
56
+ }
57
+ value.forEach((entry, index) => requireNonEmptyString(entry, `${path}[${index}]`, issues));
58
+ if (new Set(value).size !== value.length) {
59
+ issues.push({ message: 'must not contain duplicates', path });
60
+ }
61
+ }
62
+ function validateMigrationDeclaration(value, index, manifestVersion, issues) {
63
+ const path = `manifest.migrations[${index}]`;
64
+ if (!(0, validation_js_1.isRecord)(value)) {
65
+ issues.push({ message: 'must be an object', path });
66
+ return;
67
+ }
68
+ rejectUnexpectedProperties(value, [
69
+ 'affectedManagedSurfaces',
70
+ 'contracts',
71
+ 'databaseChange',
72
+ 'dependencyChanges',
73
+ 'executor',
74
+ 'from',
75
+ 'id',
76
+ 'infrastructureChanges',
77
+ 'maintenanceWindowRequired',
78
+ 'manualSuccession',
79
+ 'planSchemaVersion',
80
+ 'preflight',
81
+ 'rollback',
82
+ 'to',
83
+ 'verification',
84
+ ], path, issues);
85
+ requireNonEmptyString(value.id, `${path}.id`, issues);
86
+ if (typeof value.from !== 'string' || (0, semver_1.validRange)(value.from) === null) {
87
+ issues.push({
88
+ message: 'must be a valid semantic-version range',
89
+ path: `${path}.from`,
90
+ });
91
+ }
92
+ if (!isExactSemanticVersion(value.to)) {
93
+ issues.push({
94
+ message: 'must be an exact semantic version',
95
+ path: `${path}.to`,
96
+ });
97
+ }
98
+ else if (value.to !== manifestVersion) {
99
+ issues.push({
100
+ message: 'must equal the containing Blueprint version',
101
+ path: `${path}.to`,
102
+ });
103
+ }
104
+ if (value.planSchemaVersion !== exports.BLUEPRINT_MIGRATION_PLAN_SCHEMA_VERSION) {
105
+ issues.push({ message: 'must equal 1', path: `${path}.planSchemaVersion` });
106
+ }
107
+ validateUniqueStringArray(value.affectedManagedSurfaces, `${path}.affectedManagedSurfaces`, issues);
108
+ if (!(0, validation_js_1.isRecord)(value.contracts)) {
109
+ issues.push({ message: 'must be an object', path: `${path}.contracts` });
110
+ }
111
+ else {
112
+ rejectUnexpectedProperties(value.contracts, ['consumes', 'publishes'], `${path}.contracts`, issues);
113
+ validateUniqueStringArray(value.contracts.consumes, `${path}.contracts.consumes`, issues, { allowEmpty: true });
114
+ validateUniqueStringArray(value.contracts.publishes, `${path}.contracts.publishes`, issues, { allowEmpty: true });
115
+ }
116
+ validateUniqueStringArray(value.dependencyChanges, `${path}.dependencyChanges`, issues, { allowEmpty: true });
117
+ validateUniqueStringArray(value.infrastructureChanges, `${path}.infrastructureChanges`, issues, { allowEmpty: true });
118
+ if (typeof value.maintenanceWindowRequired !== 'boolean') {
119
+ issues.push({
120
+ message: 'must be a boolean',
121
+ path: `${path}.maintenanceWindowRequired`,
122
+ });
123
+ }
124
+ if (!exports.BLUEPRINT_DATABASE_CHANGE_KINDS.includes(value.databaseChange)) {
125
+ issues.push({
126
+ message: `must equal ${exports.BLUEPRINT_DATABASE_CHANGE_KINDS.join(', ')}`,
127
+ path: `${path}.databaseChange`,
128
+ });
129
+ }
130
+ validateUniqueStringArray(value.preflight, `${path}.preflight`, issues);
131
+ validateUniqueStringArray(value.verification, `${path}.verification`, issues);
132
+ if (!(0, validation_js_1.isRecord)(value.rollback)) {
133
+ issues.push({ message: 'must be an object', path: `${path}.rollback` });
134
+ }
135
+ else {
136
+ rejectUnexpectedProperties(value.rollback, ['afterPointOfNoReturn', 'beforePointOfNoReturn', 'pointOfNoReturn'], `${path}.rollback`, issues);
137
+ for (const member of [
138
+ 'afterPointOfNoReturn',
139
+ 'beforePointOfNoReturn',
140
+ 'pointOfNoReturn',
141
+ ]) {
142
+ requireNonEmptyString(value.rollback[member], `${path}.rollback.${member}`, issues);
143
+ }
144
+ }
145
+ requireRelativePackagePath(value.manualSuccession, `${path}.manualSuccession`, issues);
146
+ if (value.executor !== undefined) {
147
+ requireRelativePackagePath(value.executor, `${path}.executor`, issues);
148
+ }
149
+ }
150
+ function validateBlueprintManifest(value) {
151
+ if (!(0, validation_js_1.isRecord)(value)) {
152
+ return {
153
+ valid: false,
154
+ issues: [{ message: 'must be an object', path: 'manifest' }],
155
+ };
156
+ }
157
+ const issues = [];
158
+ if (value.type !== exports.BLUEPRINT_PACKAGE_TYPE) {
159
+ issues.push({
160
+ message: `must equal ${exports.BLUEPRINT_PACKAGE_TYPE}`,
161
+ path: 'manifest.type',
162
+ });
163
+ }
164
+ if (value.kind !== 'slice') {
165
+ issues.push({ message: 'must equal slice', path: 'manifest.kind' });
166
+ }
167
+ if (typeof value.name !== 'string' || !packageNamePattern.test(value.name)) {
168
+ issues.push({
169
+ message: 'must be a valid npm package name',
170
+ path: 'manifest.name',
171
+ });
172
+ }
173
+ if (!isExactSemanticVersion(value.version)) {
174
+ issues.push({
175
+ message: 'must be an exact semantic version',
176
+ path: 'manifest.version',
177
+ });
178
+ }
179
+ if (typeof value.engine !== 'string' || (0, semver_1.validRange)(value.engine) === null) {
180
+ issues.push({
181
+ message: 'must be a valid semantic-version range',
182
+ path: 'manifest.engine',
183
+ });
184
+ }
185
+ requireRelativePackagePath(value.generator, 'manifest.generator', issues);
186
+ requireRelativePackagePath(value.inputs, 'manifest.inputs', issues);
187
+ if (value.migrations !== undefined) {
188
+ if (!Array.isArray(value.migrations) || value.migrations.length === 0) {
189
+ issues.push({
190
+ message: 'must contain at least one migration declaration',
191
+ path: 'manifest.migrations',
192
+ });
193
+ }
194
+ else {
195
+ value.migrations.forEach((migration, index) => validateMigrationDeclaration(migration, index, value.version, issues));
196
+ const ids = value.migrations
197
+ .filter(validation_js_1.isRecord)
198
+ .map((migration) => migration.id);
199
+ if (new Set(ids).size !== ids.length) {
200
+ issues.push({
201
+ message: 'must not contain duplicate migration identifiers',
202
+ path: 'manifest.migrations',
203
+ });
204
+ }
205
+ }
206
+ }
207
+ const foundation = (0, index_js_1.validateFoundationRequirement)(value.foundation, 'manifest.foundation');
208
+ if (!foundation.valid) {
209
+ issues.push(...foundation.issues);
210
+ }
211
+ if (!Array.isArray(value.verification) || value.verification.length === 0) {
212
+ issues.push({
213
+ message: 'must contain at least one verification target',
214
+ path: 'manifest.verification',
215
+ });
216
+ }
217
+ else {
218
+ const seen = new Set();
219
+ value.verification.forEach((target, index) => {
220
+ if (typeof target !== 'string' || target.trim() === '') {
221
+ issues.push({
222
+ message: 'must be a non-empty target name',
223
+ path: `manifest.verification[${index}]`,
224
+ });
225
+ }
226
+ else if (seen.has(target)) {
227
+ issues.push({
228
+ message: 'must not contain duplicate targets',
229
+ path: `manifest.verification[${index}]`,
230
+ });
231
+ }
232
+ if (typeof target === 'string') {
233
+ seen.add(target);
234
+ }
235
+ });
236
+ }
237
+ return (0, validation_js_1.validationResult)(value, issues);
238
+ }
239
+ exports.blueprintManifestSchema = {
240
+ $id: 'https://empirebuilderkit.dev/schemas/blueprint-v1.json',
241
+ $schema: 'https://json-schema.org/draft/2020-12/schema',
242
+ additionalProperties: false,
243
+ properties: {
244
+ $schema: { type: 'string' },
245
+ engine: { minLength: 1, type: 'string' },
246
+ foundation: index_js_1.foundationRequirementSchema,
247
+ generator: { pattern: '^\\./', type: 'string' },
248
+ inputs: { pattern: '^\\./', type: 'string' },
249
+ kind: { const: 'slice' },
250
+ migrations: {
251
+ items: {
252
+ additionalProperties: false,
253
+ properties: {
254
+ affectedManagedSurfaces: {
255
+ items: { minLength: 1, type: 'string' },
256
+ minItems: 1,
257
+ type: 'array',
258
+ uniqueItems: true,
259
+ },
260
+ contracts: {
261
+ additionalProperties: false,
262
+ properties: {
263
+ consumes: {
264
+ items: { minLength: 1, type: 'string' },
265
+ type: 'array',
266
+ uniqueItems: true,
267
+ },
268
+ publishes: {
269
+ items: { minLength: 1, type: 'string' },
270
+ type: 'array',
271
+ uniqueItems: true,
272
+ },
273
+ },
274
+ required: ['consumes', 'publishes'],
275
+ type: 'object',
276
+ },
277
+ databaseChange: { enum: [...exports.BLUEPRINT_DATABASE_CHANGE_KINDS] },
278
+ dependencyChanges: {
279
+ items: { minLength: 1, type: 'string' },
280
+ type: 'array',
281
+ uniqueItems: true,
282
+ },
283
+ executor: { pattern: '^\\./', type: 'string' },
284
+ from: { minLength: 1, type: 'string' },
285
+ id: { minLength: 1, type: 'string' },
286
+ infrastructureChanges: {
287
+ items: { minLength: 1, type: 'string' },
288
+ type: 'array',
289
+ uniqueItems: true,
290
+ },
291
+ maintenanceWindowRequired: { type: 'boolean' },
292
+ manualSuccession: { pattern: '^\\./', type: 'string' },
293
+ planSchemaVersion: {
294
+ const: exports.BLUEPRINT_MIGRATION_PLAN_SCHEMA_VERSION,
295
+ },
296
+ preflight: {
297
+ items: { minLength: 1, type: 'string' },
298
+ minItems: 1,
299
+ type: 'array',
300
+ uniqueItems: true,
301
+ },
302
+ rollback: {
303
+ additionalProperties: false,
304
+ properties: {
305
+ afterPointOfNoReturn: { minLength: 1, type: 'string' },
306
+ beforePointOfNoReturn: { minLength: 1, type: 'string' },
307
+ pointOfNoReturn: { minLength: 1, type: 'string' },
308
+ },
309
+ required: [
310
+ 'beforePointOfNoReturn',
311
+ 'pointOfNoReturn',
312
+ 'afterPointOfNoReturn',
313
+ ],
314
+ type: 'object',
315
+ },
316
+ to: { pattern: semanticVersionPattern.source, type: 'string' },
317
+ verification: {
318
+ items: { minLength: 1, type: 'string' },
319
+ minItems: 1,
320
+ type: 'array',
321
+ uniqueItems: true,
322
+ },
323
+ },
324
+ required: [
325
+ 'id',
326
+ 'from',
327
+ 'to',
328
+ 'planSchemaVersion',
329
+ 'affectedManagedSurfaces',
330
+ 'contracts',
331
+ 'dependencyChanges',
332
+ 'infrastructureChanges',
333
+ 'maintenanceWindowRequired',
334
+ 'databaseChange',
335
+ 'preflight',
336
+ 'verification',
337
+ 'rollback',
338
+ 'manualSuccession',
339
+ ],
340
+ type: 'object',
341
+ },
342
+ minItems: 1,
343
+ type: 'array',
344
+ },
345
+ name: { pattern: packageNamePattern.source, type: 'string' },
346
+ type: { const: exports.BLUEPRINT_PACKAGE_TYPE },
347
+ verification: {
348
+ items: { minLength: 1, type: 'string' },
349
+ minItems: 1,
350
+ type: 'array',
351
+ uniqueItems: true,
352
+ },
353
+ version: { pattern: semanticVersionPattern.source, type: 'string' },
354
+ },
355
+ required: [
356
+ 'type',
357
+ 'name',
358
+ 'version',
359
+ 'engine',
360
+ 'kind',
361
+ 'generator',
362
+ 'inputs',
363
+ 'foundation',
364
+ 'verification',
365
+ ],
366
+ title: 'Empire Builder Kit Blueprint Manifest v1',
367
+ type: 'object',
368
+ };
369
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../../../packages/nx/src/blueprints/manifest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { type BlueprintInputSchema } from './inputs.js';
2
+ import { type BlueprintManifest } from './manifest.js';
3
+ export declare const BUILTIN_BLUEPRINT_REFERENCE: "standard";
4
+ export declare const BUILTIN_BLUEPRINT_NAME: "@empire-builder-kit/blueprint-standard";
5
+ export interface BlueprintPackageReference {
6
+ name: string;
7
+ version: string;
8
+ }
9
+ export interface BlueprintTrustPolicy {
10
+ /** Exact package names or scoped wildcards such as `@vendor/*`. */
11
+ packages: readonly string[];
12
+ }
13
+ export interface ResolveBlueprintOptions {
14
+ engineVersion?: string;
15
+ localPackages?: Readonly<Record<string, string>>;
16
+ reference?: string;
17
+ trust?: BlueprintTrustPolicy;
18
+ workspaceRoot: string;
19
+ }
20
+ export interface ResolvedBlueprint {
21
+ generatorPath?: string;
22
+ inputSchema: BlueprintInputSchema;
23
+ manifest: BlueprintManifest;
24
+ packageRoot?: string;
25
+ source: 'built-in' | 'installed' | 'local';
26
+ }
27
+ export declare function parseBlueprintPackageReference(reference: string): BlueprintPackageReference;
28
+ export declare function resolveBlueprint({ engineVersion, localPackages, reference, trust, workspaceRoot, }: ResolveBlueprintOptions): ResolvedBlueprint;
@@ -0,0 +1,214 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BUILTIN_BLUEPRINT_NAME = exports.BUILTIN_BLUEPRINT_REFERENCE = void 0;
4
+ exports.parseBlueprintPackageReference = parseBlueprintPackageReference;
5
+ exports.resolveBlueprint = resolveBlueprint;
6
+ const node_fs_1 = require("node:fs");
7
+ const node_path_1 = require("node:path");
8
+ const semver_1 = require("semver");
9
+ const inputs_js_1 = require("./inputs.js");
10
+ const manifest_js_1 = require("./manifest.js");
11
+ exports.BUILTIN_BLUEPRINT_REFERENCE = 'standard';
12
+ exports.BUILTIN_BLUEPRINT_NAME = '@empire-builder-kit/blueprint-standard';
13
+ const builtInInputSchema = {
14
+ $schema: 'https://json-schema.org/draft/2020-12/schema',
15
+ additionalProperties: false,
16
+ properties: {},
17
+ type: 'object',
18
+ };
19
+ function readEngineVersion() {
20
+ const packageJsonPath = (0, node_path_1.join)(__dirname, '../../package.json');
21
+ const packageJson = readJson(packageJsonPath, '@empire-builder-kit/nx package.json');
22
+ if (typeof packageJson !== 'object' ||
23
+ packageJson === null ||
24
+ !('version' in packageJson) ||
25
+ !(0, manifest_js_1.isExactSemanticVersion)(packageJson.version)) {
26
+ throw new Error(`Unable to resolve the installed @empire-builder-kit/nx version from ${packageJsonPath}.`);
27
+ }
28
+ return packageJson.version;
29
+ }
30
+ function createBuiltInManifest(engineVersion) {
31
+ const engine = (0, semver_1.parse)(engineVersion);
32
+ if (!engine) {
33
+ throw new Error(`EBK engine version ${engineVersion} is not valid SemVer.`);
34
+ }
35
+ return {
36
+ $schema: 'https://empirebuilderkit.dev/schemas/blueprint-v1.json',
37
+ engine: engineVersion,
38
+ foundation: {
39
+ capabilities: [
40
+ 'network',
41
+ 'routing',
42
+ 'postgres',
43
+ 'identity',
44
+ 'events',
45
+ 'observability',
46
+ 'configuration',
47
+ 'deployment',
48
+ ],
49
+ contract: '^1',
50
+ },
51
+ generator: './built-in/standard.js',
52
+ inputs: './built-in/standard-inputs.json',
53
+ kind: 'slice',
54
+ ...(engine.major === 1
55
+ ? {
56
+ migrations: [
57
+ {
58
+ affectedManagedSurfaces: ['standard-product-slice'],
59
+ contracts: { consumes: [], publishes: [] },
60
+ databaseChange: 'manual',
61
+ dependencyChanges: [
62
+ 'Reinstall the v1 framework and adopter dependencies in a clean workspace.',
63
+ ],
64
+ from: '>=0.0.0-0 <1.0.0-0',
65
+ id: 'standard-pre-v1-to-v1',
66
+ infrastructureChanges: [
67
+ 'Deploy a replacement v1 Product Slice before retiring the pre-v1 deployment.',
68
+ ],
69
+ maintenanceWindowRequired: false,
70
+ manualSuccession: './migrations/standard-pre-v1-to-v1.md',
71
+ planSchemaVersion: 1,
72
+ preflight: ['workspace-health', 'foundation:verify'],
73
+ rollback: {
74
+ afterPointOfNoReturn: 'Restore from the retained source deployment and database backup.',
75
+ beforePointOfNoReturn: 'Route traffic back to the retained pre-v1 deployment.',
76
+ pointOfNoReturn: 'Writes resume after traffic moves to the v1 replacement.',
77
+ },
78
+ to: engineVersion,
79
+ verification: ['verify'],
80
+ },
81
+ ],
82
+ }
83
+ : {}),
84
+ name: exports.BUILTIN_BLUEPRINT_NAME,
85
+ type: manifest_js_1.BLUEPRINT_PACKAGE_TYPE,
86
+ verification: ['verify'],
87
+ version: engineVersion,
88
+ };
89
+ }
90
+ function readJson(filePath, label) {
91
+ try {
92
+ return JSON.parse((0, node_fs_1.readFileSync)(filePath, 'utf8'));
93
+ }
94
+ catch (error) {
95
+ throw new Error(`Unable to read ${label} at ${filePath}: ${error instanceof Error ? error.message : String(error)}`);
96
+ }
97
+ }
98
+ function resolvePackageFile(packageRoot, packagePath) {
99
+ const resolvedRoot = (0, node_path_1.resolve)(packageRoot);
100
+ const resolvedPath = (0, node_path_1.resolve)(resolvedRoot, packagePath);
101
+ const relativePath = (0, node_path_1.relative)(resolvedRoot, resolvedPath);
102
+ if (relativePath === '' ||
103
+ relativePath.startsWith('..') ||
104
+ (0, node_path_1.isAbsolute)(relativePath)) {
105
+ throw new Error(`Blueprint package path ${packagePath} escapes package root ${resolvedRoot}.`);
106
+ }
107
+ if (!(0, node_fs_1.existsSync)(resolvedPath)) {
108
+ throw new Error(`Blueprint package file does not exist: ${resolvedPath}`);
109
+ }
110
+ return resolvedPath;
111
+ }
112
+ function isTrusted(name, policy) {
113
+ return (policy?.packages ?? []).some((entry) => {
114
+ if (entry.endsWith('/*')) {
115
+ return name.startsWith(`${entry.slice(0, -1)}`);
116
+ }
117
+ return entry === name;
118
+ });
119
+ }
120
+ function parseBlueprintPackageReference(reference) {
121
+ const versionSeparator = reference.lastIndexOf('@');
122
+ if (versionSeparator <= 0) {
123
+ throw new Error(`Blueprint reference ${reference} must pin an exact version (for example @vendor/ebk-blueprint-billing@1.2.0).`);
124
+ }
125
+ const name = reference.slice(0, versionSeparator);
126
+ const version = reference.slice(versionSeparator + 1);
127
+ if (!name || !(0, manifest_js_1.isExactSemanticVersion)(version)) {
128
+ throw new Error(`Blueprint reference ${reference} must contain a valid package name and exact semantic version.`);
129
+ }
130
+ return { name, version };
131
+ }
132
+ function resolveBlueprint({ engineVersion, localPackages = {}, reference = exports.BUILTIN_BLUEPRINT_REFERENCE, trust, workspaceRoot, }) {
133
+ const resolvedEngineVersion = engineVersion ?? readEngineVersion();
134
+ if (reference === exports.BUILTIN_BLUEPRINT_REFERENCE) {
135
+ const packageRoot = (0, node_path_1.resolve)(__dirname, '../..');
136
+ const manifestResult = (0, manifest_js_1.validateBlueprintManifest)(createBuiltInManifest(resolvedEngineVersion));
137
+ if (!manifestResult.valid) {
138
+ throw new Error(`Invalid built-in Blueprint manifest:\n${manifestResult.issues
139
+ .map((issue) => `- ${issue.path}: ${issue.message}`)
140
+ .join('\n')}`);
141
+ }
142
+ const manifest = manifestResult.value;
143
+ for (const migration of manifest.migrations ?? []) {
144
+ resolvePackageFile(packageRoot, migration.manualSuccession);
145
+ if (migration.executor) {
146
+ resolvePackageFile(packageRoot, migration.executor);
147
+ }
148
+ }
149
+ return {
150
+ inputSchema: builtInInputSchema,
151
+ manifest,
152
+ packageRoot,
153
+ source: 'built-in',
154
+ };
155
+ }
156
+ const parsed = parseBlueprintPackageReference(reference);
157
+ if (!isTrusted(parsed.name, trust)) {
158
+ throw new Error(`Blueprint package ${parsed.name} is not trusted. Add its exact name or scope wildcard to the workspace Blueprint trust policy before generation.`);
159
+ }
160
+ const localRoot = localPackages[parsed.name];
161
+ const packageRoot = localRoot
162
+ ? (0, node_path_1.resolve)(workspaceRoot, localRoot)
163
+ : (0, node_path_1.join)(workspaceRoot, 'node_modules', ...parsed.name.split('/'));
164
+ const packageJsonPath = (0, node_path_1.join)(packageRoot, 'package.json');
165
+ if (!(0, node_fs_1.existsSync)(packageJsonPath)) {
166
+ throw new Error(`Blueprint package ${parsed.name}@${parsed.version} is not installed in the workspace and was not provided as a local package.`);
167
+ }
168
+ const packageJson = readJson(packageJsonPath, 'Blueprint package.json');
169
+ if (typeof packageJson !== 'object' ||
170
+ packageJson === null ||
171
+ !('name' in packageJson) ||
172
+ !('version' in packageJson)) {
173
+ throw new Error(`Blueprint package metadata is malformed: ${packageJsonPath}`);
174
+ }
175
+ if (packageJson.name !== parsed.name ||
176
+ packageJson.version !== parsed.version) {
177
+ throw new Error(`Resolved Blueprint package identity ${String(packageJson.name)}@${String(packageJson.version)} does not match requested ${parsed.name}@${parsed.version}.`);
178
+ }
179
+ const manifestPath = (0, node_path_1.join)((0, node_path_1.dirname)(packageJsonPath), 'ebk-blueprint.json');
180
+ const manifestResult = (0, manifest_js_1.validateBlueprintManifest)(readJson(manifestPath, 'Blueprint manifest'));
181
+ if (!manifestResult.valid) {
182
+ throw new Error(`Invalid Blueprint manifest:\n${manifestResult.issues
183
+ .map((issue) => `- ${issue.path}: ${issue.message}`)
184
+ .join('\n')}`);
185
+ }
186
+ if (manifestResult.value.name !== parsed.name ||
187
+ manifestResult.value.version !== parsed.version) {
188
+ throw new Error(`Blueprint manifest identity ${manifestResult.value.name}@${manifestResult.value.version} does not match requested ${parsed.name}@${parsed.version}.`);
189
+ }
190
+ if (!(0, semver_1.satisfies)(resolvedEngineVersion, manifestResult.value.engine)) {
191
+ throw new Error(`Blueprint ${parsed.name}@${parsed.version} requires EBK engine ${manifestResult.value.engine}, but this workspace provides ${resolvedEngineVersion}.`);
192
+ }
193
+ for (const migration of manifestResult.value.migrations ?? []) {
194
+ resolvePackageFile(packageRoot, migration.manualSuccession);
195
+ if (migration.executor) {
196
+ resolvePackageFile(packageRoot, migration.executor);
197
+ }
198
+ }
199
+ const inputSchemaPath = resolvePackageFile(packageRoot, manifestResult.value.inputs);
200
+ const inputSchemaResult = (0, inputs_js_1.validateBlueprintInputSchema)(readJson(inputSchemaPath, 'Blueprint input schema'));
201
+ if (!inputSchemaResult.valid) {
202
+ throw new Error(`Invalid Blueprint input schema:\n${inputSchemaResult.issues
203
+ .map((issue) => `- ${issue.path}: ${issue.message}`)
204
+ .join('\n')}`);
205
+ }
206
+ return {
207
+ generatorPath: resolvePackageFile(packageRoot, manifestResult.value.generator),
208
+ inputSchema: inputSchemaResult.value,
209
+ manifest: manifestResult.value,
210
+ packageRoot,
211
+ source: localRoot ? 'local' : 'installed',
212
+ };
213
+ }
214
+ //# sourceMappingURL=resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../../../packages/nx/src/blueprints/resolver.ts"],"names":[],"mappings":"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"}