@pixerate/editor 0.43.0 → 0.45.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/README.md +27 -2
  2. package/THIRD_PARTY_NOTICES.md +4 -0
  3. package/dist/agent/index.cjs +548 -45
  4. package/dist/agent/index.cjs.map +1 -1
  5. package/dist/agent/index.d.cts +47 -17
  6. package/dist/agent/index.d.ts +47 -17
  7. package/dist/agent/index.js +536 -33
  8. package/dist/agent/index.js.map +1 -1
  9. package/dist/{builtins-BLud97fC.d.cts → builtins-CZW-aYKS.d.cts} +1 -1
  10. package/dist/{builtins-D0BDyAgw.d.ts → builtins-DghNQbT-.d.ts} +1 -1
  11. package/dist/{chunk-I6BZB5ZH.cjs → chunk-EFDCLENW.cjs} +73 -6
  12. package/dist/chunk-EFDCLENW.cjs.map +1 -0
  13. package/dist/chunk-HHQ4XJWT.js +826 -0
  14. package/dist/chunk-HHQ4XJWT.js.map +1 -0
  15. package/dist/chunk-J3R2OWOE.cjs +1465 -0
  16. package/dist/chunk-J3R2OWOE.cjs.map +1 -0
  17. package/dist/chunk-K2LVZ4FA.cjs +826 -0
  18. package/dist/chunk-K2LVZ4FA.cjs.map +1 -0
  19. package/dist/{chunk-6MDQKHRH.cjs → chunk-N4MLNJPO.cjs} +21 -899
  20. package/dist/chunk-N4MLNJPO.cjs.map +1 -0
  21. package/dist/chunk-PQM5W7ZN.js +168 -0
  22. package/dist/chunk-PQM5W7ZN.js.map +1 -0
  23. package/dist/{chunk-DDADOHJW.js → chunk-Q25ZS4F7.js} +5 -883
  24. package/dist/chunk-Q25ZS4F7.js.map +1 -0
  25. package/dist/chunk-TK2XZK6Z.js +1465 -0
  26. package/dist/chunk-TK2XZK6Z.js.map +1 -0
  27. package/dist/commands/index.cjs +3 -2
  28. package/dist/commands/index.cjs.map +1 -1
  29. package/dist/commands/index.d.cts +5 -5
  30. package/dist/commands/index.d.ts +5 -5
  31. package/dist/commands/index.js +2 -1
  32. package/dist/commands/index.js.map +1 -1
  33. package/dist/extensions/index.cjs +4 -4
  34. package/dist/extensions/index.cjs.map +1 -1
  35. package/dist/extensions/index.d.cts +3 -3
  36. package/dist/extensions/index.d.ts +3 -3
  37. package/dist/extensions/index.js +12 -12
  38. package/dist/generation/index.cjs +2 -2
  39. package/dist/generation/index.d.cts +4 -4
  40. package/dist/generation/index.d.ts +4 -4
  41. package/dist/generation/index.js +1 -1
  42. package/dist/image-editor/index.cjs +24 -24
  43. package/dist/image-editor/index.cjs.map +1 -1
  44. package/dist/image-editor/index.d.cts +2 -2
  45. package/dist/image-editor/index.d.ts +2 -2
  46. package/dist/image-editor/index.js +24 -24
  47. package/dist/image-editor/index.js.map +1 -1
  48. package/dist/{index-C6gaQRH0.d.cts → index-CfOQf70b.d.cts} +1 -1
  49. package/dist/{index-DXAv_R08.d.ts → index-jwJ_onWf.d.ts} +1 -1
  50. package/dist/index.cjs +9 -9
  51. package/dist/index.cjs.map +1 -1
  52. package/dist/index.d.cts +4 -4
  53. package/dist/index.d.ts +4 -4
  54. package/dist/index.js +12 -12
  55. package/dist/parameters/index.d.cts +2 -2
  56. package/dist/parameters/index.d.ts +2 -2
  57. package/dist/{registry-DnzpgY27.d.cts → registry-B4l-lYts.d.cts} +1 -1
  58. package/dist/{registry-DhVUZioj.d.ts → registry-BfVD-vVg.d.ts} +1 -1
  59. package/dist/{registry-BDe-vlv3.d.ts → registry-CSlH4iUn.d.ts} +1 -1
  60. package/dist/{registry-D0GADKc7.d.cts → registry-vz6HOiiy.d.cts} +1 -1
  61. package/dist/{schema-DYDGdYL9.d.cts → schema-Di0CS6Pe.d.cts} +26 -2
  62. package/dist/{schema-DYDGdYL9.d.ts → schema-Di0CS6Pe.d.ts} +26 -2
  63. package/dist/tools/index.cjs +37 -3
  64. package/dist/tools/index.cjs.map +1 -1
  65. package/dist/tools/index.d.cts +871 -11
  66. package/dist/tools/index.d.ts +871 -11
  67. package/dist/tools/index.js +36 -2
  68. package/dist/vector/index.cjs +1982 -301
  69. package/dist/vector/index.cjs.map +1 -1
  70. package/dist/vector/index.d.cts +624 -154
  71. package/dist/vector/index.d.ts +624 -154
  72. package/dist/vector/index.js +1755 -74
  73. package/dist/vector/index.js.map +1 -1
  74. package/package.json +1 -1
  75. package/dist/chunk-36BLROHV.js +0 -438
  76. package/dist/chunk-36BLROHV.js.map +0 -1
  77. package/dist/chunk-5H2OPMXZ.js +0 -586
  78. package/dist/chunk-5H2OPMXZ.js.map +0 -1
  79. package/dist/chunk-6MDQKHRH.cjs.map +0 -1
  80. package/dist/chunk-D6S5M7HV.js +0 -101
  81. package/dist/chunk-D6S5M7HV.js.map +0 -1
  82. package/dist/chunk-DDADOHJW.js.map +0 -1
  83. package/dist/chunk-I6BZB5ZH.cjs.map +0 -1
  84. package/dist/chunk-MC2LQN5S.cjs +0 -586
  85. package/dist/chunk-MC2LQN5S.cjs.map +0 -1
  86. package/dist/chunk-V7CC7RZ6.cjs +0 -438
  87. package/dist/chunk-V7CC7RZ6.cjs.map +0 -1
@@ -1,101 +0,0 @@
1
- // src/tools/schema.ts
2
- function typeOf(value) {
3
- if (value === null) return "null";
4
- if (Array.isArray(value)) return "array";
5
- if (typeof value === "number") return Number.isInteger(value) ? "integer" : "number";
6
- if (typeof value === "string" || typeof value === "boolean" || typeof value === "object") {
7
- return typeof value;
8
- }
9
- return "undefined";
10
- }
11
- function matchesType(value, type) {
12
- const actual = typeOf(value);
13
- if (type === "number") return actual === "number" || actual === "integer";
14
- return actual === type;
15
- }
16
- var isEqual = (a, b) => a === b || JSON.stringify(a) === JSON.stringify(b);
17
- function validateJsonSchema(value, schema, path = "") {
18
- if (!schema || typeof schema !== "object") return [];
19
- const errors = [];
20
- const at = path || "/";
21
- if (schema.type !== void 0) {
22
- const types = Array.isArray(schema.type) ? schema.type : [schema.type];
23
- if (!types.some((t) => matchesType(value, t))) {
24
- errors.push({ path: at, message: `Expected ${types.join(" | ")}, got ${typeOf(value)}.` });
25
- return errors;
26
- }
27
- }
28
- if (schema.const !== void 0 && !isEqual(value, schema.const)) {
29
- errors.push({ path: at, message: `Expected ${JSON.stringify(schema.const)}.` });
30
- }
31
- if (schema.enum && !schema.enum.some((option) => isEqual(value, option))) {
32
- errors.push({
33
- path: at,
34
- message: `Expected one of ${schema.enum.map((o) => JSON.stringify(o)).join(", ")}, got ${JSON.stringify(value)}.`
35
- });
36
- }
37
- if (typeof value === "string") {
38
- if (schema.minLength !== void 0 && value.length < schema.minLength) {
39
- errors.push({ path: at, message: `Must be at least ${schema.minLength} characters.` });
40
- }
41
- if (schema.maxLength !== void 0 && value.length > schema.maxLength) {
42
- errors.push({ path: at, message: `Must be at most ${schema.maxLength} characters.` });
43
- }
44
- if (schema.pattern !== void 0) {
45
- let regex = null;
46
- try {
47
- regex = new RegExp(schema.pattern, "u");
48
- } catch {
49
- }
50
- if (regex && !regex.test(value)) {
51
- errors.push({ path: at, message: `Must match pattern ${schema.pattern}.` });
52
- }
53
- }
54
- }
55
- if (typeof value === "number") {
56
- if (schema.minimum !== void 0 && value < schema.minimum) {
57
- errors.push({ path: at, message: `Must be >= ${schema.minimum}.` });
58
- }
59
- if (schema.maximum !== void 0 && value > schema.maximum) {
60
- errors.push({ path: at, message: `Must be <= ${schema.maximum}.` });
61
- }
62
- }
63
- if (Array.isArray(value)) {
64
- if (schema.minItems !== void 0 && value.length < schema.minItems) {
65
- errors.push({ path: at, message: `Must have at least ${schema.minItems} items.` });
66
- }
67
- if (schema.maxItems !== void 0 && value.length > schema.maxItems) {
68
- errors.push({ path: at, message: `Must have at most ${schema.maxItems} items.` });
69
- }
70
- if (schema.items) {
71
- value.forEach((item, index) => {
72
- errors.push(...validateJsonSchema(item, schema.items, `${path}/${index}`));
73
- });
74
- }
75
- }
76
- if (typeOf(value) === "object") {
77
- const obj = value;
78
- for (const key of schema.required ?? []) {
79
- if (obj[key] === void 0) {
80
- errors.push({ path: `${path}/${key}`, message: `Missing required property "${key}".` });
81
- }
82
- }
83
- const properties = schema.properties ?? {};
84
- for (const [key, child] of Object.entries(obj)) {
85
- if (child === void 0) continue;
86
- if (key in properties) {
87
- errors.push(...validateJsonSchema(child, properties[key], `${path}/${key}`));
88
- } else if (schema.additionalProperties === false) {
89
- errors.push({ path: `${path}/${key}`, message: `Unknown property "${key}".` });
90
- } else if (typeof schema.additionalProperties === "object") {
91
- errors.push(...validateJsonSchema(child, schema.additionalProperties, `${path}/${key}`));
92
- }
93
- }
94
- }
95
- return errors;
96
- }
97
-
98
- export {
99
- validateJsonSchema
100
- };
101
- //# sourceMappingURL=chunk-D6S5M7HV.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/tools/schema.ts"],"sourcesContent":["/**\n * JSON-Schema-lite: the subset of JSON Schema used by MCP tool `inputSchema`s,\n * plus a small validator for tool-call arguments. Unknown keywords are ignored.\n */\nexport type JsonSchemaType = 'string' | 'number' | 'integer' | 'boolean' | 'object' | 'array' | 'null';\n\nexport interface JsonSchema {\n\ttype?: JsonSchemaType | readonly JsonSchemaType[];\n\tdescription?: string;\n\ttitle?: string;\n\tenum?: readonly unknown[];\n\tconst?: unknown;\n\tdefault?: unknown;\n\tproperties?: { readonly [key: string]: JsonSchema };\n\trequired?: readonly string[];\n\tadditionalProperties?: boolean | JsonSchema;\n\titems?: JsonSchema;\n\tminItems?: number;\n\tmaxItems?: number;\n\tminimum?: number;\n\tmaximum?: number;\n\tminLength?: number;\n\tmaxLength?: number;\n\tpattern?: string;\n\t[keyword: string]: unknown;\n}\n\nexport interface SchemaValidationError {\n\t/** JSON-pointer-like path to the offending value, e.g. `/node/id` (`\"\"` is the root). */\n\tpath: string;\n\tmessage: string;\n}\n\nfunction typeOf(value: unknown): JsonSchemaType | 'undefined' {\n\tif (value === null) return 'null';\n\tif (Array.isArray(value)) return 'array';\n\tif (typeof value === 'number') return Number.isInteger(value) ? 'integer' : 'number';\n\tif (typeof value === 'string' || typeof value === 'boolean' || typeof value === 'object') {\n\t\treturn typeof value as JsonSchemaType;\n\t}\n\treturn 'undefined';\n}\n\nfunction matchesType(value: unknown, type: JsonSchemaType): boolean {\n\tconst actual = typeOf(value);\n\tif (type === 'number') return actual === 'number' || actual === 'integer';\n\treturn actual === type;\n}\n\nconst isEqual = (a: unknown, b: unknown) => a === b || JSON.stringify(a) === JSON.stringify(b);\n\n/**\n * Validates `value` against `schema` and returns every error found (an empty\n * array means valid). Supports `type` (incl. arrays of types), `enum`, `const`,\n * `properties`, `required`, `additionalProperties`, `items`, `minItems`,\n * `maxItems`, `minimum`, `maximum`, `minLength`, `maxLength` and `pattern`.\n */\nexport function validateJsonSchema(value: unknown, schema: JsonSchema | undefined, path = ''): SchemaValidationError[] {\n\tif (!schema || typeof schema !== 'object') return [];\n\tconst errors: SchemaValidationError[] = [];\n\tconst at = path || '/';\n\n\tif (schema.type !== undefined) {\n\t\tconst types = (Array.isArray(schema.type) ? schema.type : [schema.type]) as JsonSchemaType[];\n\t\tif (!types.some((t) => matchesType(value, t))) {\n\t\t\terrors.push({ path: at, message: `Expected ${types.join(' | ')}, got ${typeOf(value)}.` });\n\t\t\treturn errors;\n\t\t}\n\t}\n\tif (schema.const !== undefined && !isEqual(value, schema.const)) {\n\t\terrors.push({ path: at, message: `Expected ${JSON.stringify(schema.const)}.` });\n\t}\n\tif (schema.enum && !schema.enum.some((option) => isEqual(value, option))) {\n\t\terrors.push({\n\t\t\tpath: at,\n\t\t\tmessage: `Expected one of ${schema.enum.map((o) => JSON.stringify(o)).join(', ')}, got ${JSON.stringify(value)}.`\n\t\t});\n\t}\n\n\tif (typeof value === 'string') {\n\t\tif (schema.minLength !== undefined && value.length < schema.minLength) {\n\t\t\terrors.push({ path: at, message: `Must be at least ${schema.minLength} characters.` });\n\t\t}\n\t\tif (schema.maxLength !== undefined && value.length > schema.maxLength) {\n\t\t\terrors.push({ path: at, message: `Must be at most ${schema.maxLength} characters.` });\n\t\t}\n\t\tif (schema.pattern !== undefined) {\n\t\t\tlet regex: RegExp | null = null;\n\t\t\ttry {\n\t\t\t\tregex = new RegExp(schema.pattern, 'u');\n\t\t\t} catch {\n\t\t\t\t// An invalid pattern in the schema is not the caller's fault.\n\t\t\t}\n\t\t\tif (regex && !regex.test(value)) {\n\t\t\t\terrors.push({ path: at, message: `Must match pattern ${schema.pattern}.` });\n\t\t\t}\n\t\t}\n\t}\n\n\tif (typeof value === 'number') {\n\t\tif (schema.minimum !== undefined && value < schema.minimum) {\n\t\t\terrors.push({ path: at, message: `Must be >= ${schema.minimum}.` });\n\t\t}\n\t\tif (schema.maximum !== undefined && value > schema.maximum) {\n\t\t\terrors.push({ path: at, message: `Must be <= ${schema.maximum}.` });\n\t\t}\n\t}\n\n\tif (Array.isArray(value)) {\n\t\tif (schema.minItems !== undefined && value.length < schema.minItems) {\n\t\t\terrors.push({ path: at, message: `Must have at least ${schema.minItems} items.` });\n\t\t}\n\t\tif (schema.maxItems !== undefined && value.length > schema.maxItems) {\n\t\t\terrors.push({ path: at, message: `Must have at most ${schema.maxItems} items.` });\n\t\t}\n\t\tif (schema.items) {\n\t\t\tvalue.forEach((item, index) => {\n\t\t\t\terrors.push(...validateJsonSchema(item, schema.items, `${path}/${index}`));\n\t\t\t});\n\t\t}\n\t}\n\n\tif (typeOf(value) === 'object') {\n\t\tconst obj = value as Record<string, unknown>;\n\t\tfor (const key of schema.required ?? []) {\n\t\t\tif (obj[key] === undefined) {\n\t\t\t\terrors.push({ path: `${path}/${key}`, message: `Missing required property \"${key}\".` });\n\t\t\t}\n\t\t}\n\t\tconst properties = schema.properties ?? {};\n\t\tfor (const [key, child] of Object.entries(obj)) {\n\t\t\tif (child === undefined) continue;\n\t\t\tif (key in properties) {\n\t\t\t\terrors.push(...validateJsonSchema(child, properties[key], `${path}/${key}`));\n\t\t\t} else if (schema.additionalProperties === false) {\n\t\t\t\terrors.push({ path: `${path}/${key}`, message: `Unknown property \"${key}\".` });\n\t\t\t} else if (typeof schema.additionalProperties === 'object') {\n\t\t\t\terrors.push(...validateJsonSchema(child, schema.additionalProperties, `${path}/${key}`));\n\t\t\t}\n\t\t}\n\t}\n\n\treturn errors;\n}\n"],"mappings":"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","names":[]}