@metamesh/testkit 0.17.0 → 0.18.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 (87) hide show
  1. package/CHANGELOG.md +159 -0
  2. package/README.md +120 -112
  3. package/dist/assertions.d.ts +8 -15
  4. package/dist/assertions.d.ts.map +1 -1
  5. package/dist/assertions.js +24 -70
  6. package/dist/assertions.js.map +1 -1
  7. package/dist/content-assertions.d.ts +28 -0
  8. package/dist/content-assertions.d.ts.map +1 -0
  9. package/dist/content-assertions.js +75 -0
  10. package/dist/content-assertions.js.map +1 -0
  11. package/dist/content-matchers.d.ts +12 -0
  12. package/dist/content-matchers.d.ts.map +1 -0
  13. package/dist/content-matchers.js +22 -0
  14. package/dist/content-matchers.js.map +1 -0
  15. package/dist/docs/guides/package.md +120 -112
  16. package/dist/docs/manifest.json +157 -45
  17. package/dist/docs/reference/font-fixtures/LoadedFontFixtures.md +1 -1
  18. package/dist/docs/reference/font-fixtures/loadFontFixtureServices.md +1 -1
  19. package/dist/docs/reference/font-fixtures/loadFontFixtures.md +1 -1
  20. package/dist/docs/reference/fonts/FontTestFixture.md +1 -1
  21. package/dist/docs/reference/fonts/prepareFontTestServices.md +1 -1
  22. package/dist/docs/reference/index/BufferContent.md +13 -0
  23. package/dist/docs/reference/index/ContentMismatchError.md +12 -0
  24. package/dist/docs/reference/index/GeneratorModelTestInput.md +13 -0
  25. package/dist/docs/reference/index/GeneratorModelTestOptions.md +10 -0
  26. package/dist/docs/reference/index/GeneratorTestResult.md +18 -0
  27. package/dist/docs/reference/index/GeneratorTestRunner.md +9 -11
  28. package/dist/docs/reference/index/GeneratorTestRunnerOptions.md +2 -3
  29. package/dist/docs/reference/index/MeshContent.md +13 -0
  30. package/dist/docs/reference/index/MeshMeasurementExpectation.md +3 -3
  31. package/dist/docs/reference/index/MeshMeasurementTolerances.md +1 -1
  32. package/dist/docs/reference/index/RunModelOptions.md +13 -0
  33. package/dist/docs/reference/index/assertEqualBuffer.md +15 -0
  34. package/dist/docs/reference/index/assertEqualMesh.md +14 -0
  35. package/dist/docs/reference/index/{expectMeshMeasurements.md → assertMeshMeasurements.md} +3 -3
  36. package/dist/docs/reference/index/{expectValidDefaults.md → assertValidDefaults.md} +3 -3
  37. package/dist/docs/reference/index/assertValidDefinition.md +10 -0
  38. package/dist/docs/reference/index/assertValidParts.md +12 -0
  39. package/dist/docs/reference/index/{expectValidPresets.md → assertValidPresets.md} +3 -3
  40. package/dist/docs/reference/index/contentMatchers.md +12 -0
  41. package/dist/docs/reference/index/createGeneratorTestRunner.md +2 -4
  42. package/dist/docs/reference/index/getTestEngine.md +1 -1
  43. package/dist/docs/reference/index/runModel.md +13 -0
  44. package/dist/generator-execution.d.ts +6 -0
  45. package/dist/generator-execution.d.ts.map +1 -0
  46. package/dist/generator-execution.js +20 -0
  47. package/dist/generator-execution.js.map +1 -0
  48. package/dist/generator-test-runner.d.ts +32 -0
  49. package/dist/generator-test-runner.d.ts.map +1 -0
  50. package/dist/generator-test-runner.js +109 -0
  51. package/dist/generator-test-runner.js.map +1 -0
  52. package/dist/index.d.ts +10 -7
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +7 -5
  55. package/dist/index.js.map +1 -1
  56. package/dist/measurements.d.ts +4 -4
  57. package/dist/measurements.d.ts.map +1 -1
  58. package/dist/measurements.js +10 -9
  59. package/dist/measurements.js.map +1 -1
  60. package/dist/run-model.d.ts +21 -0
  61. package/dist/run-model.d.ts.map +1 -0
  62. package/dist/run-model.js +39 -0
  63. package/dist/run-model.js.map +1 -0
  64. package/dist/{engine.d.ts → test-engine.d.ts} +1 -1
  65. package/dist/test-engine.d.ts.map +1 -0
  66. package/dist/{engine.js → test-engine.js} +1 -1
  67. package/dist/test-engine.js.map +1 -0
  68. package/package.json +8 -5
  69. package/dist/docs/reference/index/GeneratorTestExecution.md +0 -19
  70. package/dist/docs/reference/index/ModelTestOptions.md +0 -13
  71. package/dist/docs/reference/index/expectSerializableDefinition.md +0 -10
  72. package/dist/docs/reference/index/expectValidParts.md +0 -19
  73. package/dist/docs/reference/index/withModel.md +0 -17
  74. package/dist/engine.d.ts.map +0 -1
  75. package/dist/engine.js.map +0 -1
  76. package/dist/model.d.ts +0 -17
  77. package/dist/model.d.ts.map +0 -1
  78. package/dist/model.js +0 -22
  79. package/dist/model.js.map +0 -1
  80. package/dist/runner.d.ts +0 -38
  81. package/dist/runner.d.ts.map +0 -1
  82. package/dist/runner.js +0 -130
  83. package/dist/runner.js.map +0 -1
  84. package/dist/snapshot-scope.d.ts +0 -4
  85. package/dist/snapshot-scope.d.ts.map +0 -1
  86. package/dist/snapshot-scope.js +0 -10
  87. package/dist/snapshot-scope.js.map +0 -1
@@ -1,19 +0,0 @@
1
- # expectValidParts
2
-
3
- Checks finalized parts without measurement facts, retaining shared snapshot resources and placement. Runs mesh reconstruction/finalization synchronously using the supplied engine. Strictly checks unknown wire data and reconstructs its meshes using the supplied engine. Initializes the shared test engine lazily, then applies the same wire and mesh checks.
4
-
5
- Import from `@metamesh/testkit` (@metamesh/testkit@0.17.0).
6
-
7
- ```ts
8
- /**
9
- * Checks finalized parts without measurement facts, retaining shared snapshot resources and placement.
10
- * Runs mesh reconstruction/finalization synchronously using the supplied engine.
11
- */
12
- export declare function expectValidParts(value: readonly FinalizedPart[], engine: ModelEngine): readonly GeneratedPart[];
13
-
14
- /** Strictly checks unknown wire data and reconstructs its meshes using the supplied engine. */
15
- export declare function expectValidParts(value: unknown, engine: ModelEngine): readonly GeneratedPart[];
16
-
17
- /** Initializes the shared test engine lazily, then applies the same wire and mesh checks. */
18
- export declare function expectValidParts(value: unknown): Promise<readonly GeneratedPart[]>;
19
- ```
@@ -1,17 +0,0 @@
1
- # withModel
2
-
3
- Runs a plain model once and releases its snapshot and temporary session after assertions finish. Prepared services are required when the model declares them. Parameters are passed directly, without Generator normalization. Previously obtained parts remain usable after disposal. The supplied or shared engine is never disposed by this helper.
4
-
5
- Import from `@metamesh/testkit` (@metamesh/testkit@0.17.0).
6
-
7
- ```ts
8
- /**
9
- * Runs a plain model once and releases its snapshot and temporary session after assertions finish.
10
- * Prepared services are required when the model declares them. Parameters are passed directly,
11
- * without Generator normalization. Previously obtained parts remain usable after disposal.
12
- * The supplied or shared engine is never disposed by this helper.
13
- */
14
- export declare function withModel<P, S, Result>(program: ModelProgram<P, S>, parameters: Readonly<NoInfer<P>>, inspect: (model: ModelSnapshot) => Result | PromiseLike<Result>, ...[options]: keyof S extends never ? [options?: ModelTestOptions<S>] : [options: ModelTestOptions<S> & {
15
- readonly services: S;
16
- }]): Promise<Result>;
17
- ```
@@ -1 +0,0 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAIhF;;;GAGG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAAC,WAAW,CAAC,CAGpD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAoB,MAAM,2BAA2B,CAAC;AAEhF,IAAI,UAA4C,CAAC;AAEjD;;;GAGG;AACH,MAAM,UAAU,aAAa;IAC3B,UAAU,KAAK,iBAAiB,EAAE,CAAC;IACnC,OAAO,UAAU,CAAC;AACpB,CAAC"}
package/dist/model.d.ts DELETED
@@ -1,17 +0,0 @@
1
- import type { ModelProgram } from "@metamesh/modeling";
2
- import type { ModelEngine, ModelSnapshot, SessionOptions } from "@metamesh/modeling/engine";
3
- /** Session policy and prepared capabilities for one scoped model test. The engine stays host-owned. */
4
- export interface ModelTestOptions<S = Record<never, never>> extends SessionOptions<S> {
5
- /** Reuse a test-owned engine; omitted uses the lazy shared test engine. */
6
- readonly engine?: ModelEngine;
7
- }
8
- /**
9
- * Runs a plain model once and releases its snapshot and temporary session after assertions finish.
10
- * Prepared services are required when the model declares them. Parameters are passed directly,
11
- * without Generator normalization. Previously obtained parts remain usable after disposal.
12
- * The supplied or shared engine is never disposed by this helper.
13
- */
14
- export declare function withModel<P, S, Result>(program: ModelProgram<P, S>, parameters: Readonly<NoInfer<P>>, inspect: (model: ModelSnapshot) => Result | PromiseLike<Result>, ...[options]: keyof S extends never ? [options?: ModelTestOptions<S>] : [options: ModelTestOptions<S> & {
15
- readonly services: S;
16
- }]): Promise<Result>;
17
- //# sourceMappingURL=model.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAK5F,uGAAuG;AACvG,MAAM,WAAW,gBAAgB,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;IACnF,2EAA2E;IAC3E,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAC1C,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EAC3B,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAChC,OAAO,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,EAC/D,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,SAAS,KAAK,GAC/B,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAC/B,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG;IAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;CAAE,CAAC,GAC5D,OAAO,CAAC,MAAM,CAAC,CAgBjB"}
package/dist/model.js DELETED
@@ -1,22 +0,0 @@
1
- import { getTestEngine } from "./engine.js";
2
- import { withSnapshot } from "./snapshot-scope.js";
3
- /**
4
- * Runs a plain model once and releases its snapshot and temporary session after assertions finish.
5
- * Prepared services are required when the model declares them. Parameters are passed directly,
6
- * without Generator normalization. Previously obtained parts remain usable after disposal.
7
- * The supplied or shared engine is never disposed by this helper.
8
- */
9
- export async function withModel(program, parameters, inspect, ...[options]) {
10
- const settings = options ?? {};
11
- const { engine: providedEngine, ...sessionOptions } = settings;
12
- const engine = providedEngine ?? (await getTestEngine());
13
- // The public conditional tuple already requires services for nonempty capabilities.
14
- const session = engine.createSession(program, ...[sessionOptions]);
15
- try {
16
- return await withSnapshot(session.run(parameters), inspect);
17
- }
18
- finally {
19
- session.dispose();
20
- }
21
- }
22
- //# sourceMappingURL=model.js.map
package/dist/model.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAQnD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,OAA2B,EAC3B,UAAgC,EAChC,OAA+D,EAC/D,GAAG,CAAC,OAAO,CAEkD;IAE7D,MAAM,QAAQ,GAAwB,OAAO,IAAI,EAAE,CAAC;IACpD,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,GAAG,QAAQ,CAAC;IAC/D,MAAM,MAAM,GAAG,cAAc,IAAI,CAAC,MAAM,aAAa,EAAE,CAAC,CAAC;IACzD,oFAAoF;IACpF,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAClC,OAAO,EACP,GAAI,CAAC,cAAc,CAEyC,CAC7D,CAAC;IACF,IAAI,CAAC;QACH,OAAO,MAAM,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,OAAO,EAAE,CAAC;IACpB,CAAC;AACH,CAAC"}
package/dist/runner.d.ts DELETED
@@ -1,38 +0,0 @@
1
- import { type GeneratorDefinition, type GeneratorParams, type GeneratorServices, type ParameterValidationResult } from "@metamesh/generator-sdk";
2
- import { type ModelingLimits, type ModelProgram } from "@metamesh/modeling";
3
- import { type ModelEngine, type ModelSnapshot } from "@metamesh/modeling/engine";
4
- /** Fixed host resources and optional asynchronous asset preparation. */
5
- export interface GeneratorTestRunnerOptions<D extends GeneratorDefinition> {
6
- readonly prepareServices?: (definition: D, parameters: GeneratorParams<D>) => GeneratorServices | Promise<GeneratorServices>;
7
- readonly engine?: ModelEngine;
8
- readonly limits?: Partial<ModelingLimits>;
9
- }
10
- /** Parameter or assertion failure, or a generated snapshot owned separately from its runner. */
11
- export type GeneratorTestExecution<D extends GeneratorDefinition> = {
12
- readonly type: "invalid";
13
- readonly parameters: GeneratorParams<D>;
14
- readonly validation: ParameterValidationResult;
15
- } | {
16
- readonly type: "generated";
17
- readonly parameters: GeneratorParams<D>;
18
- readonly validation: ParameterValidationResult;
19
- readonly model: ModelSnapshot;
20
- };
21
- /** A lazy reusable Generator test session; dispose the runner and every returned snapshot separately. */
22
- export interface GeneratorTestRunner<D extends GeneratorDefinition> {
23
- /** Checks declarations and assertions only. Set `normalize: false` to probe deliberately invalid typed values. */
24
- readonly validate: (parameters: GeneratorParams<D>, options?: {
25
- readonly normalize?: boolean;
26
- }) => Promise<ParameterValidationResult>;
27
- /** Normalizes once, prepares assets, and executes the same persistent session used by production hosts. */
28
- readonly execute: (parameters: Readonly<Record<string, unknown>>) => Promise<GeneratorTestExecution<D>>;
29
- /** Executes once and disposes the snapshot after awaited assertions; invalid output throws its diagnostics. */
30
- readonly withModel: <Result>(parameters: Readonly<Record<string, unknown>>, inspect: (model: ModelSnapshot) => Result | PromiseLike<Result>) => Promise<Result>;
31
- /** Releases runner caches; separately owned snapshots remain valid. */
32
- readonly dispose: () => void;
33
- }
34
- /** Creates a lazy runner for one generation program without loading assets or an engine. */
35
- export declare function createGeneratorTestRunner<const D extends GeneratorDefinition>(definition: D, runtime: {
36
- readonly generate: ModelProgram<GeneratorParams<D>, GeneratorServices>;
37
- }, options?: GeneratorTestRunnerOptions<NoInfer<D>>): GeneratorTestRunner<D>;
38
- //# sourceMappingURL=runner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAC/B,MAAM,yBAAyB,CAAC;AAQjC,OAAO,EAAmB,KAAK,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7F,OAAO,EAEL,KAAK,WAAW,EAEhB,KAAK,aAAa,EACnB,MAAM,2BAA2B,CAAC;AAMnC,wEAAwE;AACxE,MAAM,WAAW,0BAA0B,CAAC,CAAC,SAAS,mBAAmB;IACvE,QAAQ,CAAC,eAAe,CAAC,EAAE,CACzB,UAAU,EAAE,CAAC,EACb,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,KAC3B,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACpD,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;CAC3C;AAED,gGAAgG;AAChG,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,mBAAmB,IAC5D;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,yBAAyB,CAAC;CAChD,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,yBAAyB,CAAC;IAC/C,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;CAC/B,CAAC;AAEN,yGAAyG;AACzG,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,mBAAmB;IAChE,kHAAkH;IAClH,QAAQ,CAAC,QAAQ,EAAE,CACjB,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,EAC9B,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,KACvC,OAAO,CAAC,yBAAyB,CAAC,CAAC;IACxC,2GAA2G;IAC3G,QAAQ,CAAC,OAAO,EAAE,CAChB,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KAC1C,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,+GAA+G;IAC/G,QAAQ,CAAC,SAAS,EAAE,CAAC,MAAM,EACzB,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAC7C,OAAO,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,KAC5D,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,4FAA4F;AAC5F,wBAAgB,yBAAyB,CAAC,KAAK,CAAC,CAAC,SAAS,mBAAmB,EAC3E,UAAU,EAAE,CAAC,EACb,OAAO,EAAE;IAAE,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAA;CAAE,EACnF,OAAO,GAAE,0BAA0B,CAAC,OAAO,CAAC,CAAC,CAAC,CAAM,GACnD,mBAAmB,CAAC,CAAC,CAAC,CAyIxB"}
package/dist/runner.js DELETED
@@ -1,130 +0,0 @@
1
- import { UNPREPARED_GENERATOR_SERVICES, } from "@metamesh/generator-sdk";
2
- import { aggregateParameterIssues, canonicalizeParameters, parseParameterIssues, prepareParameters, } from "@metamesh/generator-sdk/parameters";
3
- import { generationIssues } from "@metamesh/generator-sdk/runtime";
4
- import { GenerationError } from "@metamesh/modeling";
5
- import { validateModel, } from "@metamesh/modeling/engine";
6
- import { isGeometryError } from "@metamesh/modeling/geometry";
7
- import { getTestEngine } from "./engine.js";
8
- import { withSnapshot } from "./snapshot-scope.js";
9
- /** Creates a lazy runner for one generation program without loading assets or an engine. */
10
- export function createGeneratorTestRunner(definition, runtime, options = {}) {
11
- let session;
12
- let sessionServices;
13
- let assetKey;
14
- let previous;
15
- let disposed = false;
16
- const assertActive = () => {
17
- if (disposed)
18
- throw new Error("Generator test runner has been disposed.");
19
- };
20
- async function services(parameters) {
21
- if (options.prepareServices)
22
- return options.prepareServices(definition, parameters);
23
- if (definition.parameters.some((parameter) => parameter.type === "font")) {
24
- throw new Error(`Generator "${definition.id}" declares Font parameters. Pass a prepareServices fixture provider to createGeneratorTestRunner().`);
25
- }
26
- return UNPREPARED_GENERATOR_SERVICES;
27
- }
28
- async function withSession(parameters, capabilities, execute) {
29
- assertActive();
30
- const engine = options.engine ?? (await getTestEngine());
31
- assertActive();
32
- const key = JSON.stringify(definition.parameters
33
- .filter((parameter) => parameter.type === "font")
34
- .map(({ id }) => parameters[id]));
35
- if (session === undefined || assetKey !== key || sessionServices !== capabilities) {
36
- session?.dispose();
37
- session = undefined;
38
- session = engine.createSession(runtime.generate, {
39
- services: capabilities,
40
- ...(options.limits === undefined ? {} : { limits: options.limits }),
41
- });
42
- assetKey = key;
43
- sessionServices = capabilities;
44
- }
45
- // Selection and execution stay synchronous: another prepared request may replace this session.
46
- return execute(session);
47
- }
48
- function canonical(parameters) {
49
- const result = canonicalizeParameters(definition, parameters, previous);
50
- previous = result;
51
- return result;
52
- }
53
- async function execute(parameters) {
54
- assertActive();
55
- const state = prepareParameters(definition, parameters);
56
- if (!state.validation.isValid)
57
- return Object.freeze({ type: "invalid", ...state });
58
- const params = canonical(state.parameters);
59
- try {
60
- const capabilities = await services(params);
61
- const model = await withSession(params, capabilities, (active) => active.run(params));
62
- const validation = aggregateParameterIssues(state.validation.issues, parseParameterIssues(definition, model.diagnostics));
63
- return Object.freeze({ type: "generated", parameters: params, validation, model });
64
- }
65
- catch (error) {
66
- const issues = generationIssues(definition, error);
67
- if (issues === undefined || !issues.some(({ severity }) => severity === "error"))
68
- throw error;
69
- return Object.freeze({
70
- type: "invalid",
71
- parameters: params,
72
- validation: aggregateParameterIssues(state.validation.issues, issues),
73
- });
74
- }
75
- }
76
- return Object.freeze({
77
- async validate(parameters, probe = {}) {
78
- assertActive();
79
- const state = probe.normalize === false
80
- ? { parameters, validation: aggregateParameterIssues() }
81
- : prepareParameters(definition, parameters);
82
- if (!state.validation.isValid)
83
- return state.validation;
84
- try {
85
- const params = canonical(state.parameters);
86
- const capabilities = await services(params);
87
- assertActive();
88
- let issues;
89
- try {
90
- issues =
91
- options.engine === undefined
92
- ? validateModel(runtime.generate, params, {
93
- services: capabilities,
94
- ...(options.limits === undefined ? {} : { limits: options.limits }),
95
- })
96
- : await withSession(params, capabilities, (active) => active.validate(params));
97
- }
98
- catch (error) {
99
- if (!isGeometryError(error) ||
100
- error.context?.operation !== "validateModel" ||
101
- error.context.details?.["requiresKernel"] !== true)
102
- throw error;
103
- issues = await withSession(params, capabilities, (active) => active.validate(params));
104
- }
105
- return aggregateParameterIssues(state.validation.issues, parseParameterIssues(definition, issues));
106
- }
107
- catch (error) {
108
- const issues = generationIssues(definition, error);
109
- if (issues === undefined || !issues.some(({ severity }) => severity === "error"))
110
- throw error;
111
- return aggregateParameterIssues(state.validation.issues, issues);
112
- }
113
- },
114
- execute,
115
- async withModel(parameters, inspect) {
116
- const result = await execute(parameters);
117
- if (result.type === "invalid")
118
- throw new GenerationError(result.validation.issues);
119
- return withSnapshot(result.model, inspect);
120
- },
121
- dispose() {
122
- disposed = true;
123
- session?.dispose();
124
- session = undefined;
125
- sessionServices = undefined;
126
- previous = undefined;
127
- },
128
- });
129
- }
130
- //# sourceMappingURL=runner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import type { ModelSnapshot } from "@metamesh/modeling/engine";
2
- /** @internal Retains a revision until synchronous or asynchronous assertions finish. */
3
- export declare function withSnapshot<Result>(model: ModelSnapshot, inspect: (model: ModelSnapshot) => Result | PromiseLike<Result>): Promise<Result>;
4
- //# sourceMappingURL=snapshot-scope.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"snapshot-scope.d.ts","sourceRoot":"","sources":["../src/snapshot-scope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE/D,wFAAwF;AACxF,wBAAsB,YAAY,CAAC,MAAM,EACvC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,GAC9D,OAAO,CAAC,MAAM,CAAC,CAMjB"}
@@ -1,10 +0,0 @@
1
- /** @internal Retains a revision until synchronous or asynchronous assertions finish. */
2
- export async function withSnapshot(model, inspect) {
3
- try {
4
- return await inspect(model);
5
- }
6
- finally {
7
- model.dispose();
8
- }
9
- }
10
- //# sourceMappingURL=snapshot-scope.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"snapshot-scope.js","sourceRoot":"","sources":["../src/snapshot-scope.ts"],"names":[],"mappings":"AAEA,wFAAwF;AACxF,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAAoB,EACpB,OAA+D;IAE/D,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;YAAS,CAAC;QACT,KAAK,CAAC,OAAO,EAAE,CAAC;IAClB,CAAC;AACH,CAAC"}