@metamesh/generator-sdk 0.3.0 → 0.5.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 (47) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +140 -38
  3. package/dist/contracts.d.ts +9 -4
  4. package/dist/contracts.d.ts.map +1 -1
  5. package/dist/execute-generator.d.ts +46 -0
  6. package/dist/execute-generator.d.ts.map +1 -0
  7. package/dist/execute-generator.js +41 -0
  8. package/dist/execute-generator.js.map +1 -0
  9. package/dist/generator-package/constants.d.ts +1 -1
  10. package/dist/generator-package/constants.js +1 -1
  11. package/dist/generator-package/schemas/definition.schema.d.ts +19 -0
  12. package/dist/generator-package/schemas/definition.schema.d.ts.map +1 -1
  13. package/dist/generator-package/schemas/manifest.schema.d.ts +908 -59
  14. package/dist/generator-package/schemas/manifest.schema.d.ts.map +1 -1
  15. package/dist/generator-package/schemas/parameter.schema.d.ts +46 -0
  16. package/dist/generator-package/schemas/parameter.schema.d.ts.map +1 -1
  17. package/dist/generator-package/schemas/parameter.schema.js +17 -0
  18. package/dist/generator-package/schemas/parameter.schema.js.map +1 -1
  19. package/dist/generator-package/schemas/preset.schema.d.ts.map +1 -1
  20. package/dist/generator-package/schemas/preset.schema.js +2 -0
  21. package/dist/generator-package/schemas/preset.schema.js.map +1 -1
  22. package/dist/generator-package/validate-definition.d.ts.map +1 -1
  23. package/dist/generator-package/validate-definition.js +56 -1
  24. package/dist/generator-package/validate-definition.js.map +1 -1
  25. package/dist/generator-package/validate-manifest.d.ts.map +1 -1
  26. package/dist/generator-package/validate-manifest.js +9 -0
  27. package/dist/generator-package/validate-manifest.js.map +1 -1
  28. package/dist/index.d.ts +7 -2
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +3 -1
  31. package/dist/index.js.map +1 -1
  32. package/dist/parameters.d.ts.map +1 -1
  33. package/dist/parameters.js +16 -1
  34. package/dist/parameters.js.map +1 -1
  35. package/dist/prepared-generator-module.d.ts +24 -0
  36. package/dist/prepared-generator-module.d.ts.map +1 -0
  37. package/dist/prepared-generator-module.js +124 -0
  38. package/dist/prepared-generator-module.js.map +1 -0
  39. package/dist/profiles.d.ts +33 -0
  40. package/dist/profiles.d.ts.map +1 -0
  41. package/dist/profiles.js +167 -0
  42. package/dist/profiles.js.map +1 -0
  43. package/package.json +6 -5
  44. package/dist/url-state.d.ts +0 -13
  45. package/dist/url-state.d.ts.map +0 -1
  46. package/dist/url-state.js +0 -149
  47. package/dist/url-state.js.map +0 -1
package/dist/url-state.js DELETED
@@ -1,149 +0,0 @@
1
- import { isFontSelection } from "./fonts.js";
2
- import { getDefaultParameters, normalizeParameters, parameterValueEquals } from "./parameters.js";
3
- export const PARAMETER_URL_VERSION = 1;
4
- function serializeValue(value) {
5
- if (Array.isArray(value) || isFontSelection(value))
6
- return JSON.stringify(value);
7
- if (typeof value === "boolean") {
8
- return value ? "1" : "0";
9
- }
10
- return String(value);
11
- }
12
- function parseValue(parameter, value) {
13
- switch (parameter.type) {
14
- case "font": {
15
- if (value.length > 512)
16
- return undefined;
17
- try {
18
- const parsed = JSON.parse(value);
19
- return isFontSelection(parsed) ? parsed : undefined;
20
- }
21
- catch {
22
- return undefined;
23
- }
24
- }
25
- case "number":
26
- case "slider": {
27
- if (value.trim() === "") {
28
- return undefined;
29
- }
30
- const parsed = Number(value);
31
- return Number.isFinite(parsed) ? parsed : undefined;
32
- }
33
- case "boolean":
34
- if (value === "1" || value === "true") {
35
- return true;
36
- }
37
- if (value === "0" || value === "false") {
38
- return false;
39
- }
40
- return undefined;
41
- case "select":
42
- case "color":
43
- case "text":
44
- return value;
45
- case "svg":
46
- return undefined;
47
- case "choice-set":
48
- case "array": {
49
- try {
50
- const parsed = JSON.parse(value);
51
- if (!Array.isArray(parsed))
52
- return undefined;
53
- const entries = parsed;
54
- if (parameter.type === "choice-set") {
55
- return entries.every((item) => typeof item === "string") ? entries.slice() : undefined;
56
- }
57
- if (parameter.items.type === "string") {
58
- return entries.every((item) => typeof item === "string") ? entries.slice() : undefined;
59
- }
60
- return entries.every((item) => typeof item === "number" && Number.isFinite(item))
61
- ? entries.slice()
62
- : undefined;
63
- }
64
- catch {
65
- return undefined;
66
- }
67
- }
68
- }
69
- }
70
- function decodeComponent(value) {
71
- try {
72
- return decodeURIComponent(value.replace(/\+/g, " "));
73
- }
74
- catch {
75
- return undefined;
76
- }
77
- }
78
- function queryEntries(query) {
79
- const questionMark = query.indexOf("?");
80
- const queryStart = questionMark >= 0 ? questionMark + 1 : query.startsWith("?") ? 1 : 0;
81
- const hashMark = query.indexOf("#", queryStart);
82
- const body = query.slice(queryStart, hashMark >= 0 ? hashMark : undefined);
83
- const entries = [];
84
- for (const pair of body.split("&")) {
85
- if (pair === "") {
86
- continue;
87
- }
88
- const separator = pair.indexOf("=");
89
- const encodedKey = separator >= 0 ? pair.slice(0, separator) : pair;
90
- const encodedValue = separator >= 0 ? pair.slice(separator + 1) : "";
91
- const key = decodeComponent(encodedKey);
92
- const value = decodeComponent(encodedValue);
93
- if (key !== undefined && value !== undefined) {
94
- entries.push([key, value]);
95
- }
96
- }
97
- return entries;
98
- }
99
- /**
100
- * Encodes declared, non-default parameters in definition order. The returned
101
- * value is a query string without a leading `?`.
102
- */
103
- export function encodeParameterState(definition, parameters) {
104
- const normalized = normalizeParameters(definition, parameters);
105
- const defaults = getDefaultParameters(definition);
106
- const pairs = [`v=${PARAMETER_URL_VERSION}`];
107
- for (const parameter of definition.parameters) {
108
- // SVG bodies are local project data. URLs stay bounded and never replace a
109
- // device's persisted SVG with a definition default.
110
- if (parameter.type === "svg")
111
- continue;
112
- const value = normalized[parameter.id];
113
- if (value !== undefined && !parameterValueEquals(value, defaults[parameter.id])) {
114
- pairs.push(`${encodeURIComponent(parameter.id)}=${encodeURIComponent(serializeValue(value))}`);
115
- }
116
- }
117
- return pairs.join("&");
118
- }
119
- /**
120
- * Restores known values from a query string or URL. Malformed, unknown, and
121
- * invalid entries are ignored. Unsupported explicit versions return defaults.
122
- */
123
- export function decodeParameterState(definition, query, base) {
124
- const entries = queryEntries(query);
125
- const versionEntry = entries.find(([key]) => key === "v");
126
- if (versionEntry !== undefined && versionEntry[1] !== String(PARAMETER_URL_VERSION)) {
127
- return normalizeParameters(definition, base ?? getDefaultParameters(definition));
128
- }
129
- const definitions = new Map(definition.parameters.map((parameter) => [parameter.id, parameter]));
130
- const decoded = [];
131
- for (const [key, encodedValue] of entries) {
132
- const parameter = definitions.get(key);
133
- if (parameter === undefined || parameter.type === "svg") {
134
- continue;
135
- }
136
- const value = parseValue(parameter, encodedValue);
137
- if (value !== undefined) {
138
- const previousIndex = decoded.findIndex(([decodedKey]) => decodedKey === key);
139
- if (previousIndex >= 0)
140
- decoded.splice(previousIndex, 1);
141
- decoded.push([key, value]);
142
- }
143
- }
144
- return normalizeParameters(definition, {
145
- ...normalizeParameters(definition, base ?? getDefaultParameters(definition)),
146
- ...Object.fromEntries(decoded),
147
- });
148
- }
149
- //# sourceMappingURL=url-state.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"url-state.js","sourceRoot":"","sources":["../src/url-state.ts"],"names":[],"mappings":"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"}