@orkestrel/scaffold 0.0.26 → 0.0.28

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.
@@ -200,6 +200,12 @@ var GLOBAL_SETUP_PATH = "tests/setupGlobal.ts";
200
200
  var GUIDES_TEST_PATH = "tests/guides.test.ts";
201
201
  /** The installed-package proof whose presence makes a workspace `integration`. */
202
202
  var INTEGRATION_TEST_PATH = "tests/integration.test.ts";
203
+ /** The official-tooling drift proof whose presence makes a workspace `conformance`. */
204
+ var CONFORMANCE_TEST_PATH = "tests/conformance.test.ts";
205
+ /** The live-service readiness module whose presence makes a workspace `service`. */
206
+ var SERVICE_SETUP_PATH = "tests/setupService.ts";
207
+ /** The include the live-service project covers, which is a directory rather than one proof. */
208
+ var SERVICE_TEST_INCLUDE = "tests/service/**/*.test.ts";
203
209
  /** The Vite wrapper whose presence makes a workspace `showcase`. */
204
210
  var SHOWCASE_CONFIG_PATH = "configs/app/vite.showcase.config.ts";
205
211
  /** The bare workspace name syntax: lowercase alphanumeric with hyphens, letter first. */
@@ -282,8 +288,8 @@ var DEFAULT_ENGINES = `>=${MINIMUM_NODE_VERSION}`;
282
288
  /** The tooling versions scaffold and every generated workspace share. */
283
289
  var BASE_DEV_DEPENDENCIES = Object.freeze({
284
290
  "@microsoft/api-extractor": "^7.58.12",
285
- "@orkestrel/guide": "^0.0.9",
286
- "@orkestrel/scaffold": "^0.0.26",
291
+ "@orkestrel/guide": "^0.0.10",
292
+ "@orkestrel/scaffold": "^0.0.28",
287
293
  "@types/node": "^26.2.0",
288
294
  oxfmt: "^0.62.0",
289
295
  oxlint: "^1.77.0",
@@ -298,11 +304,11 @@ var SOURCE_BROWSER_DEV_DEPENDENCIES = Object.freeze({
298
304
  playwright: "^1.62.1"
299
305
  });
300
306
  /** The development dependency every private `app` environment adds. */
301
- var APP_DEV_DEPENDENCIES = Object.freeze({ "@orkestrel/contract": "^0.0.10" });
307
+ var APP_DEV_DEPENDENCIES = Object.freeze({ "@orkestrel/contract": "^0.0.11" });
302
308
  /** The development dependencies a private Vue browser application adds. */
303
309
  var APP_BROWSER_DEV_DEPENDENCIES = Object.freeze({
304
310
  ...SOURCE_BROWSER_DEV_DEPENDENCIES,
305
- "@orkestrel/html": "^0.0.2",
311
+ "@orkestrel/html": "^0.0.3",
306
312
  "@vitejs/plugin-vue": "^6.0.8",
307
313
  vue: "^3.5.40",
308
314
  "vue-tsc": "^3.3.7"
@@ -320,10 +326,10 @@ var APP_BROWSER_DEV_DEPENDENCIES = Object.freeze({
320
326
  var SHOWCASE_DEV_DEPENDENCIES = Object.freeze({ "vite-plugin-singlefile": "^2.3.3" });
321
327
  /** The development dependencies a private server application adds. */
322
328
  var APP_SERVER_DEV_DEPENDENCIES = Object.freeze({
323
- "@orkestrel/emitter": "^0.0.5",
324
- "@orkestrel/middleware": "^0.0.9",
325
- "@orkestrel/router": "^0.0.8",
326
- "@orkestrel/server": "^0.0.10"
329
+ "@orkestrel/emitter": "^0.0.6",
330
+ "@orkestrel/middleware": "^0.0.10",
331
+ "@orkestrel/router": "^0.0.9",
332
+ "@orkestrel/server": "^0.0.11"
327
333
  });
328
334
  //#endregion
329
335
  //#region src/core/templates.ts
@@ -675,6 +681,44 @@ export function appBrowser(...options: never[]): UserConfig {
675
681
  },
676
682
  options ?? {},
677
683
  )
684
+ `,
685
+ conformance: `// Where this package drifts from the official tooling it stays compatible with.
686
+ // The subject is this package, so the proof is hermetic and stays in \`npm test\`.
687
+ export const conformance = (options?: UserConfig): UserConfig =>
688
+ mergeConfig(
689
+ {
690
+ resolve,
691
+ test: {
692
+ name: { label: 'conformance', color: 'magenta' },
693
+ include: ['${CONFORMANCE_TEST_PATH}'],
694
+ setupFiles: ['./tests/setup.ts'],
695
+ environment: 'node',
696
+ browser: { enabled: false },
697
+ },
698
+ },
699
+ options ?? {},
700
+ )
701
+ `,
702
+ service: `// The live external services this package drives. It starts nothing itself:
703
+ // \`scripts/service.sh\` provisions, \`tests/setupService.ts\` proves readiness, and
704
+ // the project stays out of \`npm test\` because a real service answers it.
705
+ export const service = (options?: UserConfig): UserConfig =>
706
+ mergeConfig(
707
+ {
708
+ resolve,
709
+ test: {
710
+ name: { label: 'service', color: 'red' },
711
+ include: ['${SERVICE_TEST_INCLUDE}'],
712
+ setupFiles: ['./tests/setup.ts', './tests/setupService.ts'],
713
+ environment: 'node',
714
+ browser: { enabled: false },
715
+ testTimeout: 120_000,
716
+ hookTimeout: 120_000,
717
+ fileParallelism: false,
718
+ },
719
+ },
720
+ options ?? {},
721
+ )
678
722
  `,
679
723
  probe: `// A workbench, not a proof. No gate selects this project.
680
724
  export const probe = (options?: UserConfig): UserConfig =>
@@ -1149,7 +1193,7 @@ npm test
1149
1193
  set -eu
1150
1194
 
1151
1195
  printf '%s\\n' \\
1152
- {{services}}
1196
+ {{vendors}}
1153
1197
  ` })
1154
1198
  });
1155
1199
  //#endregion
@@ -1436,7 +1480,9 @@ var isBlueprint = recordOf({
1436
1480
  overrides: andOf(isCollection, arrayOf(isOverride)),
1437
1481
  bin: isBoolean,
1438
1482
  integration: isBoolean,
1439
- services: andOf(isCollection, arrayOf(isString)),
1483
+ conformance: isBoolean,
1484
+ service: isBoolean,
1485
+ vendors: andOf(isCollection, arrayOf(isString)),
1440
1486
  global: isBoolean,
1441
1487
  showcase: isBoolean
1442
1488
  }, ["description"]);
@@ -1590,7 +1636,8 @@ var isMirror = unionOf(recordOf({
1590
1636
  var isCatalogEntry = unionOf(recordOf({
1591
1637
  name: isDependencyName,
1592
1638
  lookup: literalOf("found"),
1593
- version: isString
1639
+ version: isString,
1640
+ dependencies: andOf(isCollection, arrayOf(isDependency))
1594
1641
  }), recordOf({
1595
1642
  name: isDependencyName,
1596
1643
  lookup: literalOf("missing", "failed"),
@@ -2163,6 +2210,54 @@ function matchesDriftReachability(ownership, finding) {
2163
2210
  return finding.drift === "stale" && ownership === "content";
2164
2211
  }
2165
2212
  /**
2213
+ * Project a catalog into the layers it publishes in.
2214
+ *
2215
+ * @param entries - The catalog rows to order.
2216
+ * @returns One layer per round, each holding the names publishable together,
2217
+ * sorted within the layer; a name whose edges never resolve is omitted.
2218
+ *
2219
+ * @remarks
2220
+ * A layer is a deterministic function of the catalog's own edges, so it is
2221
+ * computed here rather than stored on a row that could disagree with them.
2222
+ * Only RUNTIME edges between catalogued packages count: a development
2223
+ * dependency reaches no consumer, so it constrains nothing about publish order,
2224
+ * and an edge leaving the fleet is a package this catalog does not publish.
2225
+ *
2226
+ * The order matters because these packages are `0.0.x`, where a caret pins one
2227
+ * exact release. Publishing a dependent before its dependency leaves the
2228
+ * dependent pinned to the older release, and two ranges that disagree install
2229
+ * two copies of one package that the compiler reads as two distinct types.
2230
+ *
2231
+ * A cycle cannot be published in rounds, so its members are omitted rather than
2232
+ * placed in an order that would be wrong. An absent name is the report: compare
2233
+ * the returned names against the catalog to find one.
2234
+ *
2235
+ * @example
2236
+ * ```ts
2237
+ * import { catalogToLayers } from '@orkestrel/scaffold'
2238
+ *
2239
+ * catalogToLayers(entries)[0] // the names that depend on nothing in the fleet
2240
+ * ```
2241
+ */
2242
+ function catalogToLayers(entries) {
2243
+ const published = new Set(entries.filter((entry) => entry.lookup === "found").map((entry) => entry.name));
2244
+ const pending = /* @__PURE__ */ new Map();
2245
+ for (const entry of entries) {
2246
+ if (entry.lookup !== "found") continue;
2247
+ const edges = entry.dependencies.map((dependency) => dependency.name);
2248
+ pending.set(entry.name, new Set(edges.filter((name) => published.has(name))));
2249
+ }
2250
+ const layers = [];
2251
+ while (pending.size > 0) {
2252
+ const ready = [...pending].filter(([, edges]) => edges.size === 0).map(([name]) => name);
2253
+ if (ready.length === 0) break;
2254
+ for (const name of ready) pending.delete(name);
2255
+ for (const edges of pending.values()) for (const name of ready) edges.delete(name);
2256
+ layers.push(ready.sort());
2257
+ }
2258
+ return layers;
2259
+ }
2260
+ /**
2166
2261
  * Project a plan into its tally by artifact origin.
2167
2262
  *
2168
2263
  * @param plan - The plan to summarize.
@@ -2623,8 +2718,14 @@ function blueprintToDevDependencies(blueprint) {
2623
2718
  * to the axes the blueprint declares: a check and a test script per declared
2624
2719
  * environment, an aggregate over each axis, the policy and configuration
2625
2720
  * proofs every workspace can pass before it has a public API, and one build per
2626
- * target that actually builds. The isolated installed-package integration
2627
- * proof stays out of `test` and runs from `prepublishOnly` instead.
2721
+ * target that actually builds.
2722
+ *
2723
+ * A proof leaves `test` when a real service or a real install answers it. The
2724
+ * installed-package integration proof and the live-service proof therefore run
2725
+ * from `prepublishOnly` instead. The conformance proof stays in `test`, because
2726
+ * it measures this package against official tooling and drives nothing external:
2727
+ * a conformance run may start a server, but it starts its own and reaches it
2728
+ * over loopback, so the run stays hermetic.
2628
2729
  *
2629
2730
  * The configuration paths interpolated here are the same ones `SRC_MATRIX` and
2630
2731
  * `APP_MATRIX` list as each environment's configuration files, so a rename in
@@ -2671,7 +2772,8 @@ function blueprintToScripts(blueprint) {
2671
2772
  ...compiles ? ["npm run test:src"] : [],
2672
2773
  ...blueprint.app.length > 0 ? ["npm run test:app"] : [],
2673
2774
  "npm run test:policy",
2674
- "npm run test:config"
2775
+ "npm run test:config",
2776
+ ...blueprint.conformance ? ["npm run test:conformance"] : []
2675
2777
  ].join(" && ");
2676
2778
  if (compiles) {
2677
2779
  scripts["test:src"] = [
@@ -2688,8 +2790,10 @@ function blueprintToScripts(blueprint) {
2688
2790
  }
2689
2791
  scripts["test:policy"] = `${vitest} --project policy`;
2690
2792
  scripts["test:config"] = `${vitest} --project config`;
2793
+ if (blueprint.conformance) scripts["test:conformance"] = `${vitest} --project conformance`;
2691
2794
  scripts["test:probe"] = "vitest run --config vite.config.ts --no-cache --reporter=verbose --project probe";
2692
2795
  if (integrates) scripts["test:integration"] = `${vitest} --project integration`;
2796
+ if (blueprint.service) scripts["test:service"] = `${vitest} --project service`;
2693
2797
  scripts.build = [
2694
2798
  "npm run clean",
2695
2799
  ...compiles ? ["npm run build:src"] : [],
@@ -2719,7 +2823,11 @@ function blueprintToScripts(blueprint) {
2719
2823
  scripts.serve = "node dist/app/server/main.cjs";
2720
2824
  scripts["serve:build"] = "npm run build:app:server && npm run serve";
2721
2825
  }
2722
- scripts.prepublishOnly = ["npm run format:check && npm run lint:check && npm run check && npm run build && npm test", ...integrates ? ["npm run test:integration"] : []].join(" && ");
2826
+ scripts.prepublishOnly = [
2827
+ "npm run format:check && npm run lint:check && npm run check && npm run build && npm test",
2828
+ ...integrates ? ["npm run test:integration"] : [],
2829
+ ...blueprint.service ? ["npm run test:service"] : []
2830
+ ].join(" && ");
2723
2831
  return scripts;
2724
2832
  }
2725
2833
  /**
@@ -3001,6 +3109,14 @@ export function appShowcase(...options: never[]): UserConfig {
3001
3109
  projects.push("config");
3002
3110
  factories.push(CONFIG_TEMPLATES.factories.guides);
3003
3111
  projects.push(`...(isExactCaseFile(resolveWorkspacePath('${GUIDES_TEST_PATH}')) ? [guides] : [])`);
3112
+ if (blueprint.conformance) {
3113
+ factories.push(CONFIG_TEMPLATES.factories.conformance);
3114
+ projects.push("conformance");
3115
+ }
3116
+ if (blueprint.service) {
3117
+ factories.push(CONFIG_TEMPLATES.factories.service);
3118
+ projects.push("service");
3119
+ }
3004
3120
  if (blueprint.src.length > 0 && blueprint.integration) {
3005
3121
  factories.push(fillTemplate(CONFIG_TEMPLATES.factories.integration, { global: blueprint.global ? " globalSetup: ['./tests/setupGlobal.ts'],\n" : "" }));
3006
3122
  projects.push("integration");
@@ -3221,6 +3337,12 @@ function blueprintToSourceArtifacts(blueprint) {
3221
3337
  * workspace and therefore follows the `src` axis as well as its structural
3222
3338
  * flag.
3223
3339
  *
3340
+ * The conformance proof is not emitted either, for the reason the guide proof
3341
+ * is not: it names an official artifact only the package knows, so a generated
3342
+ * placeholder would read as a proof while measuring nothing. `service` emits its
3343
+ * readiness setup alone, because the root configuration names that module by
3344
+ * path.
3345
+ *
3224
3346
  * @example
3225
3347
  * ```ts
3226
3348
  * import { blueprintToTestArtifacts, createBlueprint } from '@orkestrel/scaffold'
@@ -3254,6 +3376,13 @@ function blueprintToTestArtifacts(blueprint) {
3254
3376
  environment: "server",
3255
3377
  content: ARTIFACT_TEMPLATES.tests.setup
3256
3378
  });
3379
+ if (blueprint.service) artifacts.push({
3380
+ path: SERVICE_SETUP_PATH,
3381
+ group: "tests",
3382
+ ownership: "birth",
3383
+ origin: "template",
3384
+ content: ARTIFACT_TEMPLATES.tests.setup
3385
+ });
3257
3386
  if (blueprint.global) artifacts.push({
3258
3387
  path: GLOBAL_SETUP_PATH,
3259
3388
  group: "tests",
@@ -3367,22 +3496,22 @@ function blueprintToDocumentArtifacts(blueprint) {
3367
3496
  * Compile the blueprint-dependent orchestration artifacts.
3368
3497
  *
3369
3498
  * @param blueprint - The workspace specification.
3370
- * @returns A service inventory script when services are declared, otherwise none.
3499
+ * @returns A vendor inventory script when vendors are declared, otherwise none.
3371
3500
  *
3372
3501
  * @remarks
3373
- * A service name does not describe startup, readiness, or cleanup. The script
3502
+ * A vendor name does not describe startup, readiness, or cleanup. The script
3374
3503
  * therefore records only the declared inventory and does not invent a service
3375
3504
  * runner or test project.
3376
3505
  */
3377
3506
  function blueprintToOrchestrationArtifacts(blueprint) {
3378
- if (blueprint.services.length === 0) return [];
3379
- const services = blueprint.services.map((service, index) => `\t'${service}'${index === blueprint.services.length - 1 ? "" : " \\"}`).join("\n");
3507
+ if (blueprint.vendors.length === 0) return [];
3508
+ const vendors = blueprint.vendors.map((vendor, index) => `\t'${vendor}'${index === blueprint.vendors.length - 1 ? "" : " \\"}`).join("\n");
3380
3509
  return [{
3381
3510
  path: SERVICE_SCRIPT_PATH,
3382
3511
  group: "orchestration",
3383
3512
  ownership: "birth",
3384
3513
  origin: "template",
3385
- content: fillTemplate(ARTIFACT_TEMPLATES.orchestration.service, { services })
3514
+ content: fillTemplate(ARTIFACT_TEMPLATES.orchestration.service, { vendors })
3386
3515
  }];
3387
3516
  }
3388
3517
  /**
@@ -3738,19 +3867,19 @@ function blueprintToQuestions(blueprint) {
3738
3867
  message: "integration projects a published src, and this workspace declares none, so it emits nothing.",
3739
3868
  blocking: false
3740
3869
  });
3741
- const services = /* @__PURE__ */ new Set();
3742
- for (const service of blueprint.services) {
3743
- if (!NAME_PATTERN.test(service)) questions.push({
3744
- field: "services",
3745
- message: `${service} is not a lowercase alphanumeric service name starting with a letter.`,
3870
+ const vendors = /* @__PURE__ */ new Set();
3871
+ for (const vendor of blueprint.vendors) {
3872
+ if (!NAME_PATTERN.test(vendor)) questions.push({
3873
+ field: "vendors",
3874
+ message: `${vendor} is not a lowercase alphanumeric vendor name starting with a letter.`,
3746
3875
  blocking: true
3747
3876
  });
3748
- else if (services.has(service)) questions.push({
3749
- field: "services",
3750
- message: `${service} is declared more than once on services.`,
3877
+ else if (vendors.has(vendor)) questions.push({
3878
+ field: "vendors",
3879
+ message: `${vendor} is declared more than once on vendors.`,
3751
3880
  blocking: true
3752
3881
  });
3753
- services.add(service);
3882
+ vendors.add(vendor);
3754
3883
  }
3755
3884
  if (blueprint.showcase && !blueprint.app.includes("browser")) questions.push({
3756
3885
  field: "showcase",
@@ -4218,8 +4347,8 @@ var Compiler = class {
4218
4347
  * blueprint.
4219
4348
  *
4220
4349
  * @remarks
4221
- * A blueprint is a closed record of sixteen fields, and most of them have one
4222
- * sensible starting value: an empty list, a cleared flag, `DEFAULT_VERSION`, and
4350
+ * A blueprint is a closed record, and most of its fields have one sensible
4351
+ * starting value: an empty list, a cleared flag, `DEFAULT_VERSION`, and
4223
4352
  * `DEFAULT_ENGINES`. Filling them here is what lets a caller state only what its
4224
4353
  * workspace actually declares.
4225
4354
  *
@@ -4260,7 +4389,9 @@ function createBlueprint(name, input) {
4260
4389
  overrides: input?.overrides ?? [],
4261
4390
  bin: input?.bin ?? false,
4262
4391
  integration: input?.integration ?? false,
4263
- services: input?.services ?? [],
4392
+ conformance: input?.conformance ?? false,
4393
+ service: input?.service ?? false,
4394
+ vendors: input?.vendors ?? [],
4264
4395
  global: input?.global ?? false,
4265
4396
  showcase: input?.showcase ?? false
4266
4397
  }));
@@ -4287,6 +4418,6 @@ function createCompiler(options) {
4287
4418
  return new Compiler(options);
4288
4419
  }
4289
4420
  //#endregion
4290
- export { APP_BROWSER_DEV_DEPENDENCIES, APP_DEV_DEPENDENCIES, APP_MATRIX, APP_SERVER_DEV_DEPENDENCIES, ARTIFACT_TEMPLATES, BASE_DEV_DEPENDENCIES, BIN_CONFIGS, BIN_ENTRY_PATH, CATALOG_AGENT_PATH, CONFIG_TEMPLATES, CONTROL_CHARACTER_PATTERN, Compiler, DEFAULT_ENGINES, DEFAULT_VERSION, DEPENDENCY_NAME_PATTERN, ENGINES_PATTERN, ENVIRONMENTS, EXECUTABLE_PATHS, EXTRA_NAME_PATTERN, EXTRA_RANGE_PATTERN, GLOBAL_SETUP_PATH, GROUPS, GUIDES_TEST_PATH, HEX_PATTERN, HOST_PATHS, INTEGRATION_TEST_PATH, INVALID_PATH_CHARACTER_PATTERN, MAX_ARTIFACT_BYTES, MAX_ARTIFACT_HEX_LENGTH, MAX_AUDIT_FINDINGS, MAX_COLLECTION_ITEMS, MAX_DEPENDENCY_NAME_LENGTH, MAX_MANIFEST_BYTES, MAX_NAME_LENGTH, MAX_PATH_LENGTH, MAX_RANGE_LENGTH, MAX_TOTAL_ARTIFACT_BYTES, MINIMUM_NODE_VERSION, NAME_PATTERN, ORCHESTRATION_PATH_NAMES, ORCHESTRATION_PATH_PREFIXES, ORKESTREL_RANGE_PATTERN, SERVICE_SCRIPT_PATH, SHOWCASE_CONFIG_PATH, SHOWCASE_DEV_DEPENDENCIES, SOURCE_BROWSER_DEV_DEPENDENCIES, SRC_MATRIX, ScaffoldError, VERSION_PATTERN, applyOverrides, artifactToFinding, artifactToHex, artifactsToQuestions, blueprintToConfigArtifacts, blueprintToDevDependencies, blueprintToDocumentArtifacts, blueprintToGuideArtifacts, blueprintToMachinery, blueprintToManifest, blueprintToOrchestrationArtifacts, blueprintToQuestions, blueprintToRootTsconfig, blueprintToRootVite, blueprintToScripts, blueprintToSourceArtifacts, blueprintToTestArtifacts, bytesToHex, cloneValue, compareVersions, computeBytes, computeHash, contentToHex, createBlueprint, createCompiler, dependenciesToQuestions, extractVersion, inferDrift, inferGroup, isArtifact, isAudit, isBlueprint, isCatalogEntry, isCollection, isCompilerHooks, isCompilerOptions, isContent, isDependency, isDependencyName, isEnvironment, isFinding, isGroup, isGroups, isHex, isMirror, isOverride, isPath, isPlan, isQuestion, isScaffoldError, isSnapshot, manifestToDependencies, manifestToName, matchesDriftReachability, matchesEngines, matchesOrchestrationPath, matchesRange, nameToGuide, nameToHostArtifacts, overridesToQuestions, parseBlueprint, parseCompilerOptions, parseGroups, parseSnapshot, pathToCondition, planToFindings, planToHash, planToSummary, selectGroups, selectHostPaths, serializeTypeScriptString, srcToEntry, srcToExports, srcToRoot };
4421
+ export { APP_BROWSER_DEV_DEPENDENCIES, APP_DEV_DEPENDENCIES, APP_MATRIX, APP_SERVER_DEV_DEPENDENCIES, ARTIFACT_TEMPLATES, BASE_DEV_DEPENDENCIES, BIN_CONFIGS, BIN_ENTRY_PATH, CATALOG_AGENT_PATH, CONFIG_TEMPLATES, CONFORMANCE_TEST_PATH, CONTROL_CHARACTER_PATTERN, Compiler, DEFAULT_ENGINES, DEFAULT_VERSION, DEPENDENCY_NAME_PATTERN, ENGINES_PATTERN, ENVIRONMENTS, EXECUTABLE_PATHS, EXTRA_NAME_PATTERN, EXTRA_RANGE_PATTERN, GLOBAL_SETUP_PATH, GROUPS, GUIDES_TEST_PATH, HEX_PATTERN, HOST_PATHS, INTEGRATION_TEST_PATH, INVALID_PATH_CHARACTER_PATTERN, MAX_ARTIFACT_BYTES, MAX_ARTIFACT_HEX_LENGTH, MAX_AUDIT_FINDINGS, MAX_COLLECTION_ITEMS, MAX_DEPENDENCY_NAME_LENGTH, MAX_MANIFEST_BYTES, MAX_NAME_LENGTH, MAX_PATH_LENGTH, MAX_RANGE_LENGTH, MAX_TOTAL_ARTIFACT_BYTES, MINIMUM_NODE_VERSION, NAME_PATTERN, ORCHESTRATION_PATH_NAMES, ORCHESTRATION_PATH_PREFIXES, ORKESTREL_RANGE_PATTERN, SERVICE_SCRIPT_PATH, SERVICE_SETUP_PATH, SERVICE_TEST_INCLUDE, SHOWCASE_CONFIG_PATH, SHOWCASE_DEV_DEPENDENCIES, SOURCE_BROWSER_DEV_DEPENDENCIES, SRC_MATRIX, ScaffoldError, VERSION_PATTERN, applyOverrides, artifactToFinding, artifactToHex, artifactsToQuestions, blueprintToConfigArtifacts, blueprintToDevDependencies, blueprintToDocumentArtifacts, blueprintToGuideArtifacts, blueprintToMachinery, blueprintToManifest, blueprintToOrchestrationArtifacts, blueprintToQuestions, blueprintToRootTsconfig, blueprintToRootVite, blueprintToScripts, blueprintToSourceArtifacts, blueprintToTestArtifacts, bytesToHex, catalogToLayers, cloneValue, compareVersions, computeBytes, computeHash, contentToHex, createBlueprint, createCompiler, dependenciesToQuestions, extractVersion, inferDrift, inferGroup, isArtifact, isAudit, isBlueprint, isCatalogEntry, isCollection, isCompilerHooks, isCompilerOptions, isContent, isDependency, isDependencyName, isEnvironment, isFinding, isGroup, isGroups, isHex, isMirror, isOverride, isPath, isPlan, isQuestion, isScaffoldError, isSnapshot, manifestToDependencies, manifestToName, matchesDriftReachability, matchesEngines, matchesOrchestrationPath, matchesRange, nameToGuide, nameToHostArtifacts, overridesToQuestions, parseBlueprint, parseCompilerOptions, parseGroups, parseSnapshot, pathToCondition, planToFindings, planToHash, planToSummary, selectGroups, selectHostPaths, serializeTypeScriptString, srcToEntry, srcToExports, srcToRoot };
4291
4422
 
4292
4423
  //# sourceMappingURL=index.js.map