@metamesh/generator-sdk 0.8.0 → 0.10.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 (84) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +46 -277
  3. package/dist/contours.d.ts +36 -0
  4. package/dist/contours.d.ts.map +1 -0
  5. package/dist/contours.js +150 -0
  6. package/dist/contours.js.map +1 -0
  7. package/dist/contracts.d.ts +15 -8
  8. package/dist/contracts.d.ts.map +1 -1
  9. package/dist/curve-data.d.ts +11 -0
  10. package/dist/curve-data.d.ts.map +1 -0
  11. package/dist/curve-data.js +53 -0
  12. package/dist/curve-data.js.map +1 -0
  13. package/dist/generator-package/constants.d.ts +2 -2
  14. package/dist/generator-package/constants.js +2 -2
  15. package/dist/generator-package/errors.d.ts +19 -1
  16. package/dist/generator-package/errors.d.ts.map +1 -1
  17. package/dist/generator-package/errors.js +58 -11
  18. package/dist/generator-package/errors.js.map +1 -1
  19. package/dist/generator-package/index.d.ts +7 -2
  20. package/dist/generator-package/index.d.ts.map +1 -1
  21. package/dist/generator-package/index.js +52 -9
  22. package/dist/generator-package/index.js.map +1 -1
  23. package/dist/generator-package/portable-data.d.ts +12 -0
  24. package/dist/generator-package/portable-data.d.ts.map +1 -0
  25. package/dist/generator-package/portable-data.js +102 -0
  26. package/dist/generator-package/portable-data.js.map +1 -0
  27. package/dist/generator-package/schemas/common.schema.d.ts.map +1 -1
  28. package/dist/generator-package/schemas/common.schema.js +4 -2
  29. package/dist/generator-package/schemas/common.schema.js.map +1 -1
  30. package/dist/generator-package/schemas/definition.schema.d.ts +456 -45
  31. package/dist/generator-package/schemas/definition.schema.d.ts.map +1 -1
  32. package/dist/generator-package/schemas/definition.schema.js +5 -2
  33. package/dist/generator-package/schemas/definition.schema.js.map +1 -1
  34. package/dist/generator-package/schemas/manifest.schema.d.ts +183 -50
  35. package/dist/generator-package/schemas/manifest.schema.d.ts.map +1 -1
  36. package/dist/generator-package/schemas/manifest.schema.js.map +1 -1
  37. package/dist/generator-package/schemas/parameter-document-json-schema.d.ts +4 -0
  38. package/dist/generator-package/schemas/parameter-document-json-schema.d.ts.map +1 -0
  39. package/dist/generator-package/schemas/parameter-document-json-schema.js +17 -0
  40. package/dist/generator-package/schemas/parameter-document-json-schema.js.map +1 -0
  41. package/dist/generator-package/schemas/parameter.schema.d.ts +178 -242
  42. package/dist/generator-package/schemas/parameter.schema.d.ts.map +1 -1
  43. package/dist/generator-package/schemas/parameter.schema.js +171 -70
  44. package/dist/generator-package/schemas/parameter.schema.js.map +1 -1
  45. package/dist/generator-package/schemas/preset.schema.d.ts.map +1 -1
  46. package/dist/generator-package/schemas/preset.schema.js +4 -2
  47. package/dist/generator-package/schemas/preset.schema.js.map +1 -1
  48. package/dist/generator-package/validate-definition.d.ts +4 -7
  49. package/dist/generator-package/validate-definition.d.ts.map +1 -1
  50. package/dist/generator-package/validate-definition.js +210 -263
  51. package/dist/generator-package/validate-definition.js.map +1 -1
  52. package/dist/generator-package/validate-manifest.d.ts.map +1 -1
  53. package/dist/generator-package/validate-manifest.js +5 -5
  54. package/dist/generator-package/validate-manifest.js.map +1 -1
  55. package/dist/index.d.ts +5 -3
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +2 -1
  58. package/dist/index.js.map +1 -1
  59. package/dist/parameter-contracts.d.ts +63 -31
  60. package/dist/parameter-contracts.d.ts.map +1 -1
  61. package/dist/parameters/issues.d.ts.map +1 -1
  62. package/dist/parameters/issues.js +17 -11
  63. package/dist/parameters/issues.js.map +1 -1
  64. package/dist/parameters/recovery.d.ts.map +1 -1
  65. package/dist/parameters/recovery.js +12 -8
  66. package/dist/parameters/recovery.js.map +1 -1
  67. package/dist/parameters/strict.d.ts.map +1 -1
  68. package/dist/parameters/strict.js +8 -7
  69. package/dist/parameters/strict.js.map +1 -1
  70. package/dist/parameters/values.d.ts +1 -0
  71. package/dist/parameters/values.d.ts.map +1 -1
  72. package/dist/parameters/values.js +8 -3
  73. package/dist/parameters/values.js.map +1 -1
  74. package/dist/parameters.schema.json +1757 -0
  75. package/dist/parse-generator-module.d.ts +1 -1
  76. package/dist/parse-generator-module.js +1 -1
  77. package/dist/side-profiles.d.ts +36 -0
  78. package/dist/side-profiles.d.ts.map +1 -0
  79. package/dist/{profiles.js → side-profiles.js} +21 -66
  80. package/dist/side-profiles.js.map +1 -0
  81. package/package.json +4 -3
  82. package/dist/profiles.d.ts +0 -41
  83. package/dist/profiles.d.ts.map +0 -1
  84. package/dist/profiles.js.map +0 -1
@@ -23,7 +23,7 @@ export declare function capturePreparation<D extends GeneratorDefinition, P, Con
23
23
  readonly ok: false;
24
24
  readonly issues: readonly GeneratorIssue<D>[];
25
25
  };
26
- /** Captures the exact format-2 surface; unsupported formats fail before callback invocation. */
26
+ /** Captures the exact format-3 surface; unsupported formats fail before callback invocation. */
27
27
  export declare function parseGeneratorModule<D extends GeneratorDefinition, Context = unknown, Output = unknown>(value: unknown, definition: D): ParsedGeneratorModule<D, Context, Output>;
28
28
  export declare function isGeneratorModule<D extends GeneratorDefinition>(value: unknown, definition: D): boolean;
29
29
  //# sourceMappingURL=parse-generator-module.d.ts.map
@@ -83,7 +83,7 @@ export function capturePreparation(definition, result, build) {
83
83
  },
84
84
  });
85
85
  }
86
- /** Captures the exact format-2 surface; unsupported formats fail before callback invocation. */
86
+ /** Captures the exact format-3 surface; unsupported formats fail before callback invocation. */
87
87
  export function parseGeneratorModule(value, definition) {
88
88
  try {
89
89
  if (typeof value !== "object" || value === null || Array.isArray(value)) {
@@ -0,0 +1,36 @@
1
+ import { type CurveValueProblem } from "./curve-data.js";
2
+ /** Maximum number of straight or cubic segments in an editable side profile. */
3
+ export declare const MAX_SIDE_PROFILE_SEGMENTS = 31;
4
+ /** Normalized radius and upward height; both coordinates lie between zero and one. */
5
+ export interface SideProfilePoint {
6
+ readonly radius: number;
7
+ readonly height: number;
8
+ }
9
+ /** Editing intent is retained alongside the explicit curve controls. */
10
+ export interface SideProfileAnchor extends SideProfilePoint {
11
+ readonly mode: "auto" | "smooth" | "corner";
12
+ }
13
+ export type SideProfileSegment = {
14
+ readonly type: "line";
15
+ readonly end: SideProfileAnchor;
16
+ } | {
17
+ readonly type: "cubic";
18
+ readonly control1: SideProfilePoint;
19
+ readonly control2: SideProfilePoint;
20
+ readonly end: SideProfileAnchor;
21
+ };
22
+ /** An open, upward side silhouette. Generators own scaling and solid closure. */
23
+ export interface SideProfileValue {
24
+ readonly version: 1;
25
+ readonly start: SideProfileAnchor;
26
+ readonly segments: readonly SideProfileSegment[];
27
+ }
28
+ /** Internal diagnostics use the same accessor-safe reader as profile cloning and predicates. */
29
+ export declare function sideProfileValueProblem(value: unknown): CurveValueProblem | undefined;
30
+ /** Strictly checks portable profile data without evaluating getters or invoking curve libraries. */
31
+ export declare function isSideProfileValue(value: unknown): value is SideProfileValue;
32
+ /** Returns a fresh, deeply frozen portable profile, including its editing intent. */
33
+ export declare function cloneSideProfileValue(value: SideProfileValue): SideProfileValue;
34
+ /** Compares the serialized shape and editing intent rather than object identity. */
35
+ export declare function sideProfileValuesEqual(previous: SideProfileValue, next: SideProfileValue): boolean;
36
+ //# sourceMappingURL=side-profiles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"side-profiles.d.ts","sourceRoot":"","sources":["../src/side-profiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,iBAAiB,EAEvB,MAAM,iBAAiB,CAAC;AAEzB,gFAAgF;AAChF,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAE5C,sFAAsF;AACtF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,wEAAwE;AACxE,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;CAC7C;AAED,MAAM,MAAM,kBAAkB,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,iBAAiB,CAAA;CAAE,GAC1D;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,GAAG,EAAE,iBAAiB,CAAC;CACjC,CAAC;AAEN,iFAAiF;AACjF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAC;CAClD;AA8GD,gGAAgG;AAChG,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,GAAG,SAAS,CAMrF;AAED,oGAAoG;AACpG,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAE5E;AAED,qFAAqF;AACrF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,gBAAgB,GAAG,gBAAgB,CA0B/E;AAED,oFAAoF;AACpF,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,EAAE,gBAAgB,GACrB,OAAO,CA8BT"}
@@ -1,31 +1,8 @@
1
+ import { curveDataObject, curveSegmentCount, } from "./curve-data.js";
1
2
  /** Maximum number of straight or cubic segments in an editable side profile. */
2
- export const MAX_PROFILE_SEGMENTS = 31;
3
- function dataObject(value, expectedKeys, path, fail) {
4
- if (typeof value !== "object" || value === null || Array.isArray(value))
5
- return fail(path, "type");
6
- const prototype = Object.getPrototypeOf(value);
7
- if (prototype !== Object.prototype && prototype !== null)
8
- return fail(path, "structure");
9
- const keys = Reflect.ownKeys(value);
10
- const unknown = keys.find((key) => typeof key !== "string" || !expectedKeys.includes(key));
11
- if (unknown !== undefined) {
12
- return fail(typeof unknown === "string" && unknown.length > 0 && unknown.length <= 120
13
- ? [...path, unknown]
14
- : path, "unknown");
15
- }
16
- const entries = [];
17
- for (const key of expectedKeys) {
18
- const descriptor = Object.getOwnPropertyDescriptor(value, key);
19
- if (descriptor === undefined)
20
- return fail([...path, key], "missing");
21
- if (!("value" in descriptor) || !descriptor.enumerable)
22
- return fail([...path, key], "structure");
23
- entries.push([key, descriptor.value]);
24
- }
25
- return Object.fromEntries(entries);
26
- }
3
+ export const MAX_SIDE_PROFILE_SEGMENTS = 31;
27
4
  function point(value, anchor, path, fail) {
28
- const fields = dataObject(value, anchor ? ["radius", "height", "mode"] : ["radius", "height"], path, fail);
5
+ const fields = curveDataObject(value, anchor ? ["radius", "height", "mode"] : ["radius", "height"], path, fail);
29
6
  if (fields === undefined)
30
7
  return undefined;
31
8
  for (const coordinate of ["radius", "height"]) {
@@ -45,13 +22,13 @@ function point(value, anchor, path, fail) {
45
22
  }
46
23
  return { ...coordinates, mode: fields.mode };
47
24
  }
48
- function readProfileValue(value, report) {
25
+ function readSideProfileValue(value, report) {
49
26
  const fail = (path, code) => {
50
27
  report?.({ path, code });
51
28
  return undefined;
52
29
  };
53
30
  try {
54
- const fields = dataObject(value, ["version", "start", "segments"], [], fail);
31
+ const fields = curveDataObject(value, ["version", "start", "segments"], [], fail);
55
32
  if (fields === undefined)
56
33
  return undefined;
57
34
  if (fields.version !== 1)
@@ -64,29 +41,9 @@ function readProfileValue(value, report) {
64
41
  if (!Array.isArray(fields.segments))
65
42
  return fail(["segments"], "type");
66
43
  const segments = fields.segments;
67
- if (Object.getPrototypeOf(segments) !== Array.prototype)
68
- return fail(["segments"], "structure");
69
- const lengthDescriptor = Object.getOwnPropertyDescriptor(segments, "length");
70
- if (lengthDescriptor === undefined || !("value" in lengthDescriptor))
71
- return fail(["segments"], "structure");
72
- const length = lengthDescriptor.value;
73
- if (typeof length !== "number" ||
74
- !Number.isInteger(length) ||
75
- length < 1 ||
76
- length > MAX_PROFILE_SEGMENTS)
77
- return fail(["segments"], "length");
78
- const keys = Reflect.ownKeys(segments);
79
- if (keys.length !== length + 1 ||
80
- !keys.every((key) => key === "length"
81
- ? true
82
- : typeof key === "string" &&
83
- Number.isSafeInteger(Number(key)) &&
84
- Number(key) >= 0 &&
85
- Number(key) < length &&
86
- String(Number(key)) === key)) {
87
- const missingIndex = Array.from({ length }, (_, index) => index).find((index) => !Object.hasOwn(segments, String(index)));
88
- return fail(missingIndex === undefined ? ["segments"] : ["segments", missingIndex], missingIndex === undefined ? "structure" : "missing");
89
- }
44
+ const length = curveSegmentCount(segments, 1, MAX_SIDE_PROFILE_SEGMENTS, fail);
45
+ if (length === undefined)
46
+ return undefined;
90
47
  const parsedSegments = [];
91
48
  let previousHeight = start.height;
92
49
  for (let index = 0; index < length; index += 1) {
@@ -97,9 +54,7 @@ function readProfileValue(value, report) {
97
54
  const segment = descriptor.value;
98
55
  if (typeof segment !== "object" || segment === null || Array.isArray(segment))
99
56
  return fail(segmentPath, "type");
100
- const typeDescriptor = typeof segment === "object" && segment !== null
101
- ? Object.getOwnPropertyDescriptor(segment, "type")
102
- : undefined;
57
+ const typeDescriptor = Object.getOwnPropertyDescriptor(segment, "type");
103
58
  if (typeDescriptor === undefined)
104
59
  return fail([...segmentPath, "type"], "missing");
105
60
  if (!("value" in typeDescriptor))
@@ -107,7 +62,7 @@ function readProfileValue(value, report) {
107
62
  const type = typeDescriptor.value;
108
63
  if (type !== "line" && type !== "cubic")
109
64
  return fail([...segmentPath, "type"], "choice");
110
- const segmentFields = dataObject(segment, type === "line" ? ["type", "end"] : ["type", "end", "control1", "control2"], segmentPath, fail);
65
+ const segmentFields = curveDataObject(segment, type === "line" ? ["type", "end"] : ["type", "end", "control1", "control2"], segmentPath, fail);
111
66
  if (segmentFields === undefined)
112
67
  return undefined;
113
68
  if (segmentFields.type !== type)
@@ -144,22 +99,22 @@ function readProfileValue(value, report) {
144
99
  }
145
100
  }
146
101
  /** Internal diagnostics use the same accessor-safe reader as profile cloning and predicates. */
147
- export function profileValueProblem(value) {
102
+ export function sideProfileValueProblem(value) {
148
103
  let problem;
149
- const parsed = readProfileValue(value, (entry) => {
104
+ const parsed = readSideProfileValue(value, (entry) => {
150
105
  problem = entry;
151
106
  });
152
107
  return parsed === undefined ? (problem ?? { code: "structure", path: [] }) : undefined;
153
108
  }
154
109
  /** Strictly checks portable profile data without evaluating getters or invoking curve libraries. */
155
- export function isProfileValue(value) {
156
- return readProfileValue(value) !== undefined;
110
+ export function isSideProfileValue(value) {
111
+ return readSideProfileValue(value) !== undefined;
157
112
  }
158
113
  /** Returns a fresh, deeply frozen portable profile, including its editing intent. */
159
- export function cloneProfileValue(value) {
160
- const canonical = readProfileValue(value);
114
+ export function cloneSideProfileValue(value) {
115
+ const canonical = readSideProfileValue(value);
161
116
  if (canonical === undefined)
162
- throw new TypeError("Profile must be a bounded, normalized side outline.");
117
+ throw new TypeError("Side profile must be a bounded, normalized side outline.");
163
118
  const clonePoint = (entry) => Object.freeze({ radius: entry.radius, height: entry.height });
164
119
  const cloneAnchor = (entry) => Object.freeze({ radius: entry.radius, height: entry.height, mode: entry.mode });
165
120
  return Object.freeze({
@@ -176,11 +131,11 @@ export function cloneProfileValue(value) {
176
131
  });
177
132
  }
178
133
  /** Compares the serialized shape and editing intent rather than object identity. */
179
- export function profileValuesEqual(previous, next) {
134
+ export function sideProfileValuesEqual(previous, next) {
180
135
  if (Object.is(previous, next))
181
136
  return true;
182
- const previousData = readProfileValue(previous);
183
- const nextData = readProfileValue(next);
137
+ const previousData = readSideProfileValue(previous);
138
+ const nextData = readSideProfileValue(next);
184
139
  if (previousData === undefined || nextData === undefined)
185
140
  return false;
186
141
  const pointsEqual = (left, right) => Object.is(left.radius, right.radius) && Object.is(left.height, right.height);
@@ -202,4 +157,4 @@ export function profileValuesEqual(previous, next) {
202
157
  pointsEqual(segment.control2, other.control2));
203
158
  }));
204
159
  }
205
- //# sourceMappingURL=profiles.js.map
160
+ //# sourceMappingURL=side-profiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"side-profiles.js","sourceRoot":"","sources":["../src/side-profiles.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metamesh/generator-sdk",
3
- "version": "0.8.0",
3
+ "version": "0.10.0",
4
4
  "description": "Portable contracts and helpers for MetaMesh Generators.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -38,7 +38,8 @@
38
38
  "./fonts": {
39
39
  "types": "./dist/fonts.d.ts",
40
40
  "import": "./dist/fonts.js"
41
- }
41
+ },
42
+ "./parameters.schema.json": "./dist/parameters.schema.json"
42
43
  },
43
44
  "publishConfig": {
44
45
  "access": "public",
@@ -55,7 +56,7 @@
55
56
  "vitest": "^5.0.3"
56
57
  },
57
58
  "scripts": {
58
- "build": "node ../../scripts/clean-dist.mjs && tsc -p tsconfig.build.json",
59
+ "build": "node ../../scripts/clean-dist.mjs && tsc -p tsconfig.build.json && node scripts/emit-parameter-schema.mjs",
59
60
  "lint": "eslint .",
60
61
  "test": "vitest run src",
61
62
  "typecheck": "tsc --noEmit --pretty false"
@@ -1,41 +0,0 @@
1
- import type { ParameterIssueCode } from "./contracts.js";
2
- /** Maximum number of straight or cubic segments in an editable side profile. */
3
- export declare const MAX_PROFILE_SEGMENTS = 31;
4
- /** Normalized radius and upward height; both coordinates lie between zero and one. */
5
- export interface ProfilePoint {
6
- readonly radius: number;
7
- readonly height: number;
8
- }
9
- /** Editing intent is retained alongside the explicit curve controls. */
10
- export interface ProfileAnchor extends ProfilePoint {
11
- readonly mode: "auto" | "smooth" | "corner";
12
- }
13
- export type ProfileSegment = {
14
- readonly type: "line";
15
- readonly end: ProfileAnchor;
16
- } | {
17
- readonly type: "cubic";
18
- readonly control1: ProfilePoint;
19
- readonly control2: ProfilePoint;
20
- readonly end: ProfileAnchor;
21
- };
22
- /** An open, upward side silhouette. Generators own scaling and solid closure. */
23
- export interface ProfileValue {
24
- readonly version: 1;
25
- readonly start: ProfileAnchor;
26
- readonly segments: readonly ProfileSegment[];
27
- }
28
- interface ProfileValueProblem {
29
- readonly code: ParameterIssueCode;
30
- readonly path: readonly (number | string)[];
31
- }
32
- /** Internal diagnostics use the same accessor-safe reader as profile cloning and predicates. */
33
- export declare function profileValueProblem(value: unknown): ProfileValueProblem | undefined;
34
- /** Strictly checks portable profile data without evaluating getters or invoking curve libraries. */
35
- export declare function isProfileValue(value: unknown): value is ProfileValue;
36
- /** Returns a fresh, deeply frozen portable profile, including its editing intent. */
37
- export declare function cloneProfileValue(value: ProfileValue): ProfileValue;
38
- /** Compares the serialized shape and editing intent rather than object identity. */
39
- export declare function profileValuesEqual(previous: ProfileValue, next: ProfileValue): boolean;
40
- export {};
41
- //# sourceMappingURL=profiles.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../src/profiles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,gFAAgF;AAChF,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC,sFAAsF;AACtF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,wEAAwE;AACxE,MAAM,WAAW,aAAc,SAAQ,YAAY;IACjD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;CAC7C;AAED,MAAM,MAAM,cAAc,GACtB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAA;CAAE,GACtD;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC;CAC7B,CAAC;AAEN,iFAAiF;AACjF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;CAC9C;AAED,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;CAC7C;AAmLD,gGAAgG;AAChG,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,GAAG,SAAS,CAMnF;AAED,oGAAoG;AACpG,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAEpE;AAED,qFAAqF;AACrF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY,CA0BnE;AAED,oFAAoF;AACpF,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CA8BtF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"profiles.js","sourceRoot":"","sources":["../src/profiles.ts"],"names":[],"mappings":"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"}