@metamesh/generator-sdk 0.9.0 → 0.11.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.
- package/CHANGELOG.md +30 -0
- package/README.md +71 -336
- package/dist/authoring.d.ts +1 -52
- package/dist/authoring.d.ts.map +1 -1
- package/dist/authoring.js +0 -24
- package/dist/authoring.js.map +1 -1
- package/dist/contours.d.ts +36 -0
- package/dist/contours.d.ts.map +1 -0
- package/dist/{cross-sections.js → contours.js} +19 -61
- package/dist/contours.js.map +1 -0
- package/dist/contracts.d.ts +30 -11
- package/dist/contracts.d.ts.map +1 -1
- package/dist/curve-data.d.ts +11 -0
- package/dist/curve-data.d.ts.map +1 -0
- package/dist/curve-data.js +53 -0
- package/dist/curve-data.js.map +1 -0
- package/dist/execute-generator.d.ts +14 -23
- package/dist/execute-generator.d.ts.map +1 -1
- package/dist/execute-generator.js +33 -32
- package/dist/execute-generator.js.map +1 -1
- package/dist/generated-parts.d.ts +16 -0
- package/dist/generated-parts.d.ts.map +1 -1
- package/dist/generated-parts.js +155 -67
- package/dist/generated-parts.js.map +1 -1
- package/dist/generator-module.d.ts +20 -17
- package/dist/generator-module.d.ts.map +1 -1
- package/dist/generator-module.js +3 -4
- package/dist/generator-module.js.map +1 -1
- package/dist/generator-package/constants.d.ts +2 -2
- package/dist/generator-package/constants.js +2 -2
- package/dist/generator-package/errors.d.ts +19 -1
- package/dist/generator-package/errors.d.ts.map +1 -1
- package/dist/generator-package/errors.js +58 -11
- package/dist/generator-package/errors.js.map +1 -1
- package/dist/generator-package/index.d.ts +7 -2
- package/dist/generator-package/index.d.ts.map +1 -1
- package/dist/generator-package/index.js +52 -9
- package/dist/generator-package/index.js.map +1 -1
- package/dist/generator-package/portable-data.d.ts +12 -0
- package/dist/generator-package/portable-data.d.ts.map +1 -0
- package/dist/generator-package/portable-data.js +102 -0
- package/dist/generator-package/portable-data.js.map +1 -0
- package/dist/generator-package/schemas/common.schema.d.ts.map +1 -1
- package/dist/generator-package/schemas/common.schema.js +4 -2
- package/dist/generator-package/schemas/common.schema.js.map +1 -1
- package/dist/generator-package/schemas/definition.schema.d.ts +451 -57
- package/dist/generator-package/schemas/definition.schema.d.ts.map +1 -1
- package/dist/generator-package/schemas/definition.schema.js +5 -2
- package/dist/generator-package/schemas/definition.schema.js.map +1 -1
- package/dist/generator-package/schemas/manifest.schema.d.ts +178 -62
- package/dist/generator-package/schemas/manifest.schema.d.ts.map +1 -1
- package/dist/generator-package/schemas/manifest.schema.js.map +1 -1
- package/dist/generator-package/schemas/parameter-document-json-schema.d.ts +4 -0
- package/dist/generator-package/schemas/parameter-document-json-schema.d.ts.map +1 -0
- package/dist/generator-package/schemas/parameter-document-json-schema.js +17 -0
- package/dist/generator-package/schemas/parameter-document-json-schema.js.map +1 -0
- package/dist/generator-package/schemas/parameter.schema.d.ts +173 -275
- package/dist/generator-package/schemas/parameter.schema.d.ts.map +1 -1
- package/dist/generator-package/schemas/parameter.schema.js +169 -79
- package/dist/generator-package/schemas/parameter.schema.js.map +1 -1
- package/dist/generator-package/schemas/preset.schema.d.ts.map +1 -1
- package/dist/generator-package/schemas/preset.schema.js +4 -4
- package/dist/generator-package/schemas/preset.schema.js.map +1 -1
- package/dist/generator-package/validate-definition.d.ts +4 -7
- package/dist/generator-package/validate-definition.d.ts.map +1 -1
- package/dist/generator-package/validate-definition.js +210 -272
- package/dist/generator-package/validate-definition.js.map +1 -1
- package/dist/generator-package/validate-manifest.d.ts.map +1 -1
- package/dist/generator-package/validate-manifest.js +5 -10
- package/dist/generator-package/validate-manifest.js.map +1 -1
- package/dist/index.d.ts +7 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/parameter-contracts.d.ts +62 -39
- package/dist/parameter-contracts.d.ts.map +1 -1
- package/dist/parameters/issues.d.ts.map +1 -1
- package/dist/parameters/issues.js +9 -10
- package/dist/parameters/issues.js.map +1 -1
- package/dist/parameters/preparation.d.ts +8 -6
- package/dist/parameters/preparation.d.ts.map +1 -1
- package/dist/parameters/preparation.js +21 -10
- package/dist/parameters/preparation.js.map +1 -1
- package/dist/parameters/recovery.d.ts.map +1 -1
- package/dist/parameters/recovery.js +11 -12
- package/dist/parameters/recovery.js.map +1 -1
- package/dist/parameters/strict.d.ts.map +1 -1
- package/dist/parameters/strict.js +7 -10
- package/dist/parameters/strict.js.map +1 -1
- package/dist/parameters/values.d.ts +1 -0
- package/dist/parameters/values.d.ts.map +1 -1
- package/dist/parameters/values.js +7 -6
- package/dist/parameters/values.js.map +1 -1
- package/dist/parameters.d.ts +1 -1
- package/dist/parameters.d.ts.map +1 -1
- package/dist/parameters.js +1 -1
- package/dist/parameters.js.map +1 -1
- package/dist/parameters.schema.json +1757 -0
- package/dist/parse-generator-module.d.ts +5 -27
- package/dist/parse-generator-module.d.ts.map +1 -1
- package/dist/parse-generator-module.js +29 -96
- package/dist/parse-generator-module.js.map +1 -1
- package/dist/runtime.d.ts +6 -6
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +3 -3
- package/dist/runtime.js.map +1 -1
- package/dist/side-profiles.d.ts +36 -0
- package/dist/side-profiles.d.ts.map +1 -0
- package/dist/{profiles.js → side-profiles.js} +21 -66
- package/dist/side-profiles.js.map +1 -0
- package/dist/worker-contracts.d.ts +2 -2
- package/dist/worker-contracts.d.ts.map +1 -1
- package/dist/worker-contracts.js.map +1 -1
- package/package.json +7 -7
- package/dist/cross-sections.d.ts +0 -41
- package/dist/cross-sections.d.ts.map +0 -1
- package/dist/cross-sections.js.map +0 -1
- package/dist/profiles.d.ts +0 -41
- package/dist/profiles.d.ts.map +0 -1
- package/dist/profiles.js.map +0 -1
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
import { cloneContourValue } from "../contours.js";
|
|
3
|
+
import { cloneSideProfileValue } from "../side-profiles.js";
|
|
2
4
|
import { GENERATOR_PACKAGE_FORMAT_VERSION } from "./constants.js";
|
|
3
|
-
import { GeneratorPackageValidationError, validationErrorFromZod } from "./errors.js";
|
|
4
|
-
import {
|
|
5
|
+
import { definitionIssuesFromZod, GeneratorPackageValidationError, validationErrorFromIssues, validationErrorFromZod, } from "./errors.js";
|
|
6
|
+
import { capturePortableData } from "./portable-data.js";
|
|
7
|
+
import { generatorDefinitionSchema, parameterDefinitionDocumentSchema, } from "./schemas/definition.schema.js";
|
|
5
8
|
import { generatorDescriptorSchema, } from "./schemas/descriptor.schema.js";
|
|
6
9
|
import { generatorPackageManifestSchema, } from "./schemas/manifest.schema.js";
|
|
7
|
-
import {
|
|
10
|
+
import { collectDefinitionIssues } from "./validate-definition.js";
|
|
8
11
|
import { validateManifestIdentity } from "./validate-manifest.js";
|
|
9
12
|
export * from "./constants.js";
|
|
10
13
|
export * from "./errors.js";
|
|
@@ -20,13 +23,53 @@ function parseWithPublicError(context, schema, value) {
|
|
|
20
23
|
throw error;
|
|
21
24
|
}
|
|
22
25
|
}
|
|
23
|
-
|
|
26
|
+
function safeParseDefinition(schema, value) {
|
|
27
|
+
const captured = capturePortableData(value);
|
|
28
|
+
if (!captured.success)
|
|
29
|
+
return captured;
|
|
30
|
+
const parsed = schema.safeParse(captured.data);
|
|
31
|
+
if (!parsed.success)
|
|
32
|
+
return { success: false, issues: definitionIssuesFromZod(parsed.error) };
|
|
33
|
+
const issues = collectDefinitionIssues(parsed.data);
|
|
34
|
+
if (issues.length > 0)
|
|
35
|
+
return { success: false, issues };
|
|
36
|
+
return {
|
|
37
|
+
success: true,
|
|
38
|
+
data: {
|
|
39
|
+
...parsed.data,
|
|
40
|
+
parameters: parsed.data.parameters.map((parameter) => parameter.type === "side-profile"
|
|
41
|
+
? { ...parameter, default: cloneSideProfileValue(parameter.default) }
|
|
42
|
+
: parameter.type === "contour"
|
|
43
|
+
? { ...parameter, default: cloneContourValue(parameter.default) }
|
|
44
|
+
: parameter),
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/** Validates the editable groups/parameters document; issue paths are relative to its root. */
|
|
49
|
+
export function safeParseParameterDefinitionDocument(value) {
|
|
50
|
+
return safeParseDefinition(parameterDefinitionDocumentSchema, value);
|
|
51
|
+
}
|
|
52
|
+
export function parseParameterDefinitionDocument(value) {
|
|
53
|
+
const result = safeParseParameterDefinitionDocument(value);
|
|
54
|
+
if (!result.success)
|
|
55
|
+
throw validationErrorFromIssues("parameters document", result.issues);
|
|
56
|
+
return result.data;
|
|
57
|
+
}
|
|
58
|
+
/** Validates untrusted Generator metadata, collecting independent semantic issues. */
|
|
59
|
+
export function safeParseGeneratorDefinition(value) {
|
|
60
|
+
return safeParseDefinition(generatorDefinitionSchema, value);
|
|
61
|
+
}
|
|
24
62
|
export function parseGeneratorDefinition(value) {
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
63
|
+
const result = safeParseGeneratorDefinition(value);
|
|
64
|
+
if (!result.success)
|
|
65
|
+
throw validationErrorFromIssues("definition", result.issues);
|
|
66
|
+
return result.data;
|
|
28
67
|
}
|
|
29
68
|
export function parseGeneratorPackageManifest(value) {
|
|
69
|
+
const captured = capturePortableData(value);
|
|
70
|
+
if (!captured.success)
|
|
71
|
+
throw validationErrorFromIssues("manifest", captured.issues);
|
|
72
|
+
value = captured.data;
|
|
30
73
|
if (typeof value === "object" &&
|
|
31
74
|
value !== null &&
|
|
32
75
|
!Array.isArray(value) &&
|
|
@@ -34,9 +77,9 @@ export function parseGeneratorPackageManifest(value) {
|
|
|
34
77
|
throw new GeneratorPackageValidationError(`Unsupported generator package format "${String(value.formatVersion)}".`);
|
|
35
78
|
}
|
|
36
79
|
const manifest = parseWithPublicError("manifest", generatorPackageManifestSchema, value);
|
|
37
|
-
|
|
80
|
+
const definition = parseGeneratorDefinition(manifest.definition);
|
|
38
81
|
validateManifestIdentity(manifest);
|
|
39
|
-
return manifest;
|
|
82
|
+
return { ...manifest, definition };
|
|
40
83
|
}
|
|
41
84
|
export function parseGeneratorDescriptor(value) {
|
|
42
85
|
return parseWithPublicError("descriptor", generatorDescriptorSchema, value);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generator-package/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gCAAgC,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generator-package/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { GeneratorDefinitionIssue } from "./errors.js";
|
|
2
|
+
type PortableDataResult = {
|
|
3
|
+
readonly success: true;
|
|
4
|
+
readonly data: unknown;
|
|
5
|
+
} | {
|
|
6
|
+
readonly success: false;
|
|
7
|
+
readonly issues: readonly GeneratorDefinitionIssue[];
|
|
8
|
+
};
|
|
9
|
+
/** Captures own data before Zod reads it; shape and value validation remain with the schemas. */
|
|
10
|
+
export declare function capturePortableData(value: unknown): PortableDataResult;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=portable-data.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portable-data.d.ts","sourceRoot":"","sources":["../../src/generator-package/portable-data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAG5D,KAAK,kBAAkB,GACnB;IAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAClD;IAAE,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,wBAAwB,EAAE,CAAA;CAAE,CAAC;AAqCtF,iGAAiG;AACjG,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,kBAAkB,CAsEtE"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
function isNativePrototype(value, constructor) {
|
|
2
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, "constructor");
|
|
3
|
+
const candidate = descriptor !== undefined && "value" in descriptor ? descriptor.value : undefined;
|
|
4
|
+
if (typeof candidate !== "function")
|
|
5
|
+
return false;
|
|
6
|
+
return (Function.prototype.toString.call(candidate) === Function.prototype.toString.call(constructor) &&
|
|
7
|
+
Object.getOwnPropertyDescriptor(candidate, "prototype")?.value === value);
|
|
8
|
+
}
|
|
9
|
+
function isPlainObjectPrototype(value) {
|
|
10
|
+
return (value === null ||
|
|
11
|
+
value === Object.prototype ||
|
|
12
|
+
(typeof value === "object" &&
|
|
13
|
+
Object.getPrototypeOf(value) === null &&
|
|
14
|
+
isNativePrototype(value, Object)));
|
|
15
|
+
}
|
|
16
|
+
function hasPlainPrototype(value, array) {
|
|
17
|
+
const prototype = Object.getPrototypeOf(value);
|
|
18
|
+
return array
|
|
19
|
+
? prototype === Array.prototype ||
|
|
20
|
+
(prototype !== null &&
|
|
21
|
+
Array.isArray(prototype) &&
|
|
22
|
+
isNativePrototype(prototype, Array) &&
|
|
23
|
+
isPlainObjectPrototype(Object.getPrototypeOf(prototype)))
|
|
24
|
+
: isPlainObjectPrototype(prototype);
|
|
25
|
+
}
|
|
26
|
+
/** Captures own data before Zod reads it; shape and value validation remain with the schemas. */
|
|
27
|
+
export function capturePortableData(value) {
|
|
28
|
+
const ancestors = new Set();
|
|
29
|
+
const snapshots = new Map();
|
|
30
|
+
let inspecting = [];
|
|
31
|
+
let failure;
|
|
32
|
+
const fail = (path, message) => {
|
|
33
|
+
failure = { kind: "structural", path, code: "structure", message };
|
|
34
|
+
throw new Error(message);
|
|
35
|
+
};
|
|
36
|
+
const capture = (entry, path) => {
|
|
37
|
+
inspecting = path;
|
|
38
|
+
if (typeof entry !== "object" || entry === null)
|
|
39
|
+
return entry;
|
|
40
|
+
if (path.length > 64 || ancestors.has(entry))
|
|
41
|
+
return fail(path, "must be bounded, acyclic portable data");
|
|
42
|
+
const previous = snapshots.get(entry);
|
|
43
|
+
if (previous !== undefined)
|
|
44
|
+
return previous;
|
|
45
|
+
const array = Array.isArray(entry);
|
|
46
|
+
if (!hasPlainPrototype(entry, array))
|
|
47
|
+
return fail(path, "must use a plain data object or array");
|
|
48
|
+
ancestors.add(entry);
|
|
49
|
+
const keys = Reflect.ownKeys(entry);
|
|
50
|
+
const captured = [];
|
|
51
|
+
for (const key of keys) {
|
|
52
|
+
if (array && key === "length")
|
|
53
|
+
continue;
|
|
54
|
+
if (typeof key !== "string")
|
|
55
|
+
return fail(path, "must not contain symbol properties");
|
|
56
|
+
const segment = array ? Number(key) : key;
|
|
57
|
+
const fieldPath = [...path, segment];
|
|
58
|
+
inspecting = fieldPath;
|
|
59
|
+
if (array &&
|
|
60
|
+
(!Number.isSafeInteger(segment) || Number(segment) < 0 || String(segment) !== key))
|
|
61
|
+
return fail(path, "arrays must contain only indexed data properties");
|
|
62
|
+
const descriptor = Object.getOwnPropertyDescriptor(entry, key);
|
|
63
|
+
if (descriptor === undefined || !("value" in descriptor) || !descriptor.enumerable)
|
|
64
|
+
return fail(fieldPath, "must be an own enumerable data property");
|
|
65
|
+
captured.push([key, capture(descriptor.value, fieldPath)]);
|
|
66
|
+
}
|
|
67
|
+
inspecting = path;
|
|
68
|
+
ancestors.delete(entry);
|
|
69
|
+
if (!array) {
|
|
70
|
+
const result = Object.fromEntries(captured);
|
|
71
|
+
snapshots.set(entry, result);
|
|
72
|
+
return result;
|
|
73
|
+
}
|
|
74
|
+
const length = Object.getOwnPropertyDescriptor(entry, "length")?.value;
|
|
75
|
+
if (typeof length !== "number" || captured.length !== length)
|
|
76
|
+
return fail(path, "arrays must contain a value at every index");
|
|
77
|
+
const result = [];
|
|
78
|
+
for (const [key, item] of captured)
|
|
79
|
+
result[Number(key)] = item;
|
|
80
|
+
snapshots.set(entry, result);
|
|
81
|
+
return result;
|
|
82
|
+
};
|
|
83
|
+
try {
|
|
84
|
+
return { success: true, data: capture(value, []) };
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
return {
|
|
88
|
+
success: false,
|
|
89
|
+
issues: [
|
|
90
|
+
failure !== undefined
|
|
91
|
+
? failure
|
|
92
|
+
: {
|
|
93
|
+
kind: "structural",
|
|
94
|
+
path: inspecting,
|
|
95
|
+
code: "structure",
|
|
96
|
+
message: "must be readable portable data",
|
|
97
|
+
},
|
|
98
|
+
],
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=portable-data.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portable-data.js","sourceRoot":"","sources":["../../src/generator-package/portable-data.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.schema.d.ts","sourceRoot":"","sources":["../../../src/generator-package/schemas/common.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,eAAO,MAAM,mBAAmB,aAA2C,CAAC;AAC5E,eAAO,MAAM,yBAAyB,aAA4C,CAAC;AACnF,eAAO,MAAM,oBAAoB,
|
|
1
|
+
{"version":3,"file":"common.schema.d.ts","sourceRoot":"","sources":["../../../src/generator-package/schemas/common.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,eAAO,MAAM,mBAAmB,aAA2C,CAAC;AAC5E,eAAO,MAAM,yBAAyB,aAA4C,CAAC;AACnF,eAAO,MAAM,oBAAoB,aAGwB,CAAC;AAC1D,eAAO,MAAM,YAAY,aAK2D,CAAC;AACrF,eAAO,MAAM,YAAY,aAG8C,CAAC;AACxE,eAAO,MAAM,kBAAkB,aAAsB,CAAC;AACtD,eAAO,MAAM,cAAc,wDAGiB,CAAC;AAC7C,eAAO,MAAM,wBAAwB,aAAiC,CAAC;AACvE,eAAO,MAAM,eAAe,aAAgD,CAAC;AAC7E,eAAO,MAAM,iBAAiB,aAAsD,CAAC;AACrF,eAAO,MAAM,aAAa,wDAI4B,CAAC"}
|
|
@@ -5,10 +5,12 @@ const SAFE_ID_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._/-]*$/;
|
|
|
5
5
|
const RESERVED_RECORD_KEYS = new Set(["__proto__", "constructor", "prototype"]);
|
|
6
6
|
export const boundedStringSchema = z.string().max(MAX_METADATA_TEXT_LENGTH);
|
|
7
7
|
export const textParameterStringSchema = z.string().max(MAX_TEXT_PARAMETER_LENGTH);
|
|
8
|
-
export const nonEmptyStringSchema = boundedStringSchema
|
|
8
|
+
export const nonEmptyStringSchema = boundedStringSchema
|
|
9
|
+
.trim()
|
|
10
|
+
.min(1)
|
|
11
|
+
.regex(/\S/, "must contain a non-whitespace character");
|
|
9
12
|
export const safeIdSchema = z
|
|
10
13
|
.string()
|
|
11
|
-
.trim()
|
|
12
14
|
.min(1)
|
|
13
15
|
.max(MAX_GENERATOR_ID_LENGTH)
|
|
14
16
|
.regex(SAFE_ID_PATTERN, "must use letters, numbers, '.', '_', '/', or '-'")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.schema.js","sourceRoot":"","sources":["../../../src/generator-package/schemas/common.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,MAAM,eAAe,GAAG,+BAA+B,CAAC;AACxD,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;AAEhF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AAC5E,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AACnF,MAAM,CAAC,MAAM,oBAAoB,GAAG,mBAAmB,
|
|
1
|
+
{"version":3,"file":"common.schema.js","sourceRoot":"","sources":["../../../src/generator-package/schemas/common.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,MAAM,eAAe,GAAG,+BAA+B,CAAC;AACxD,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;AAEhF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AAC5E,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AACnF,MAAM,CAAC,MAAM,oBAAoB,GAAG,mBAAmB;KACpD,IAAI,EAAE;KACN,GAAG,CAAC,CAAC,CAAC;KACN,KAAK,CAAC,IAAI,EAAE,yCAAyC,CAAC,CAAC;AAC1D,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC;KAC1B,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,GAAG,CAAC,uBAAuB,CAAC;KAC5B,KAAK,CAAC,eAAe,EAAE,kDAAkD,CAAC;KAC1E,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,4BAA4B,CAAC,CAAC;AACrF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC;KAC1B,MAAM,EAAE;KACR,GAAG,CAAC,GAAG,CAAC;KACR,KAAK,CAAC,sBAAsB,EAAE,qCAAqC,CAAC,CAAC;AACxE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC;AACtD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC;KAC5B,MAAM,EAAE;KACR,KAAK,CAAC,gBAAgB,EAAE,+BAA+B,CAAC;KACxD,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;AAC7C,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;AACvE,MAAM,CAAC,MAAM,eAAe,GAAG,wBAAwB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAC7E,MAAM,CAAC,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AACrF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC;KAC3B,MAAM,EAAE;KACR,GAAG,CAAC,EAAE,CAAC;KACP,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;KAC1B,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC"}
|