@flighthq/shape-formats 0.3.1-next.975.01aea94 → 0.4.0-edge.1908.751021c

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.
@@ -1 +1 @@
1
- {"version":3,"file":"shapeJson.d.ts","sourceRoot":"","sources":["../src/shapeJson.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,KAAK,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAQrG,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,sBAAsB,CAAC,GAAG,MAAM,CA+B1G;AASD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,qBAAqB,CAAC,GAAG,KAAK,GAAG,IAAI,CAsCpG"}
1
+ {"version":3,"file":"shapeJson.d.ts","sourceRoot":"","sources":["../src/shapeJson.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,KAAK,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAOrG,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,sBAAsB,CAAC,GAAG,MAAM,CAmC1G;AASD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,qBAAqB,CAAC,GAAG,KAAK,GAAG,IAAI,CAsCpG"}
package/dist/shapeJson.js CHANGED
@@ -1,11 +1,10 @@
1
1
  import { createMatrix } from '@flighthq/geometry/contract';
2
2
  import { appendShapeBeginTextureFill, appendShapeBeginFill, appendShapeBeginGradientFill, appendShapeCircle, appendShapeCubicCurveTo, appendShapeCurveTo, appendShapeDrawTriangles, appendShapeEllipse, appendShapeEndFill, appendShapeLineTextureStyle, appendShapeLineGradientStyle, appendShapeLineStyle, appendShapeLineTo, appendShapeMoveTo, appendShapePath, appendShapeRectangle, appendShapeRoundRectangle, createShape, } from '@flighthq/shape/contract';
3
3
  // Serializes a shape's full drawing-command stream to a native JSON string that `parseShapeJson`
4
- // restores. Every non-texture command round-trips exactly, with one exception the format cannot
5
- // represent: JSON has no NaN or Infinity literal, so a non-finite coordinate is written as `null` and
6
- // the document will not parse back. That is deliberate — the alternative is restoring a shape whose
7
- // geometry silently differs from the one serialized. `beginTextureFill`/`lineTextureStyle` textures
8
- // serialize as an ordinal `ShapeTextureReference` (see the type) rather than the live `Texture`.
4
+ // restores. Every stored command is checked against the same positional and finiteness predicates the
5
+ // reader uses before anything is emitted: a writer that can produce a document its own reader rejects
6
+ // has broken the format's round-trip contract. `beginTextureFill`/`lineTextureStyle` textures serialize
7
+ // as an ordinal `ShapeTextureReference` (see the type) rather than the live `Texture`.
9
8
  export function formatShapeJson(shape, options) {
10
9
  const commands = shape.data.commands;
11
10
  const entries = [];
@@ -15,9 +14,13 @@ export function formatShapeJson(shape, options) {
15
14
  const key = commands[i];
16
15
  const argCount = commands[i + 1];
17
16
  const base = i + 2;
17
+ const commandArgs = commands.slice(base, base + argCount);
18
+ if (!isValidShapeCommandArgs(key, commandArgs)) {
19
+ throw new TypeError(`Shape command "${key}" cannot be represented as shape JSON`);
20
+ }
18
21
  const args = [];
19
22
  for (let a = 0; a < argCount; a++) {
20
- const value = commands[base + a];
23
+ const value = commandArgs[a];
21
24
  if (value === null) {
22
25
  // An omitted fill/line matrix, or absent triangle indices/uv data.
23
26
  args.push(null);
@@ -111,12 +114,7 @@ function reconstructShapeCommandArg(value, resolveTexture) {
111
114
  const resolved = resolveTexture?.({ index: value.texture.index }) ?? null;
112
115
  return resolved === null ? DROP_COMMAND : resolved;
113
116
  }
114
- if (typeof value.a === 'number' &&
115
- typeof value.b === 'number' &&
116
- typeof value.c === 'number' &&
117
- typeof value.d === 'number' &&
118
- typeof value.tx === 'number' &&
119
- typeof value.ty === 'number') {
117
+ if (isMatrixValue(value)) {
120
118
  return createMatrix(value.a, value.b, value.c, value.d, value.tx, value.ty);
121
119
  }
122
120
  return MALFORMED_ARG;
@@ -176,6 +174,15 @@ function isFiniteNumberArray(value) {
176
174
  return true;
177
175
  }
178
176
  function isMatrixValue(value) {
177
+ return (isMatrixLike(value) &&
178
+ Number.isFinite(value.a) &&
179
+ Number.isFinite(value.b) &&
180
+ Number.isFinite(value.c) &&
181
+ Number.isFinite(value.d) &&
182
+ Number.isFinite(value.tx) &&
183
+ Number.isFinite(value.ty));
184
+ }
185
+ function isMatrixLike(value) {
179
186
  return (isPlainObject(value) &&
180
187
  typeof value.a === 'number' &&
181
188
  typeof value.b === 'number' &&
@@ -195,7 +202,7 @@ function isSerializableScalarOrArray(value) {
195
202
  const MALFORMED_ARG = Symbol('shapeFormats.malformedArg');
196
203
  // Sentinel returned when a texture reference cannot be resolved; the owning command is dropped.
197
204
  const DROP_COMMAND = Symbol('shapeFormats.dropCommand');
198
- const SHAPE_JSON_FORMAT = 2;
205
+ const SHAPE_JSON_FORMAT = 3;
199
206
  const GRADIENT_ARG_SPEC = {
200
207
  required: 4,
201
208
  types: ['string', 'numbers', 'numbers', 'numbers', 'matrixOrNull', 'string', 'string', 'number'],
@@ -1 +1 @@
1
- {"version":3,"file":"shapeJson.js","sourceRoot":"","sources":["../src/shapeJson.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shapeJson.js","sourceRoot":"","sources":["../src/shapeJson.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flighthq/shape-formats",
3
- "version": "0.3.1-next.975.01aea94",
3
+ "version": "0.4.0-edge.1908.751021c",
4
4
  "author": "Joshua Granick and other contributors",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -38,9 +38,9 @@
38
38
  "clean:dist": "tsx ../../scripts/clean-package-dist.ts"
39
39
  },
40
40
  "dependencies": {
41
- "@flighthq/geometry": "0.3.1-next.975.01aea94",
42
- "@flighthq/shape": "0.3.1-next.975.01aea94",
43
- "@flighthq/types": "0.3.1-next.975.01aea94"
41
+ "@flighthq/geometry": "0.4.0-edge.1908.751021c",
42
+ "@flighthq/shape": "0.4.0-edge.1908.751021c",
43
+ "@flighthq/types": "0.4.0-edge.1908.751021c"
44
44
  },
45
45
  "devDependencies": {
46
46
  "typescript": "^5.3.0"
@@ -76,18 +76,46 @@ describe('formatShapeJson', () => {
76
76
  const shape = createShape();
77
77
  appendShapeBeginFill(shape, 0x112233ff, 1);
78
78
  const parsed = JSON.parse(formatShapeJson(shape));
79
- expect(parsed.shapeFormat).toBe(2);
79
+ expect(parsed.shapeFormat).toBe(3);
80
80
  expect(Array.isArray(parsed.commands)).toBe(true);
81
81
  expect(parsed.commands[0]).toEqual({ key: 'beginFill', args: [0x112233ff, 1] });
82
82
  });
83
83
 
84
84
  it('serializes a matrix argument as its {a,b,c,d,tx,ty} fields', () => {
85
85
  const shape = createShape();
86
- appendShapeBeginGradientFill(shape, 'radial', [0], [1], [0], createMatrix(2, 0, 0, 3, 5, 7), 'pad', 'rgb', 0);
86
+ appendShapeBeginGradientFill(
87
+ shape,
88
+ 'radial',
89
+ [0x000000ff],
90
+ [1],
91
+ [0],
92
+ createMatrix(2, 0, 0, 3, 5, 7),
93
+ 'pad',
94
+ 'rgb',
95
+ 0,
96
+ );
87
97
  const parsed = JSON.parse(formatShapeJson(shape));
88
98
  expect(parsed.commands[0].args[4]).toEqual({ a: 2, b: 0, c: 0, d: 3, tx: 5, ty: 7 });
89
99
  });
90
100
 
101
+ it.each(['a', 'b', 'c', 'd', 'tx', 'ty'] as const)(
102
+ 'round-trips a large finite %s matrix field and refuses a non-finite one',
103
+ (field) => {
104
+ const shape = createShape();
105
+ const matrix = createMatrix(2, 0, 0, 3, 5, 7);
106
+ matrix[field] = 1e308;
107
+ appendShapeBeginGradientFill(shape, 'radial', [0x000000ff], [1], [0], matrix, 'pad', 'rgb', 0);
108
+
109
+ const text = formatShapeJson(shape);
110
+ const restored = parseShapeJson(text);
111
+ expect(restored).not.toBeNull();
112
+ expect(formatShapeJson(restored!)).toBe(text);
113
+
114
+ matrix[field] = Infinity;
115
+ expect(() => formatShapeJson(shape)).toThrow(TypeError);
116
+ },
117
+ );
118
+
91
119
  it('serializes a texture as an ordinal reference, never the texture', () => {
92
120
  const shape = createShape();
93
121
  appendShapeBeginTextureFill(shape, createFakeTexture(), null);
@@ -122,7 +150,7 @@ describe('parseShapeJson', () => {
122
150
  });
123
151
 
124
152
  it('returns null for a mismatched version tag', () => {
125
- expect(parseShapeJson(JSON.stringify({ shapeFormat: 3, commands: [] }))).toBeNull();
153
+ expect(parseShapeJson(JSON.stringify({ shapeFormat: 999, commands: [] }))).toBeNull();
126
154
  });
127
155
 
128
156
  it('returns null when the top level is not an object', () => {
@@ -130,12 +158,12 @@ describe('parseShapeJson', () => {
130
158
  });
131
159
 
132
160
  it('returns null for an unknown command key', () => {
133
- const json = JSON.stringify({ shapeFormat: 2, commands: [{ key: 'notACommand', args: [] }] });
161
+ const json = JSON.stringify({ shapeFormat: 3, commands: [{ key: 'notACommand', args: [] }] });
134
162
  expect(parseShapeJson(json)).toBeNull();
135
163
  });
136
164
 
137
165
  it('returns null for a malformed argument object', () => {
138
- const json = JSON.stringify({ shapeFormat: 2, commands: [{ key: 'beginFill', args: [{ nonsense: true }, 1] }] });
166
+ const json = JSON.stringify({ shapeFormat: 3, commands: [{ key: 'beginFill', args: [{ nonsense: true }, 1] }] });
139
167
  expect(parseShapeJson(json)).toBeNull();
140
168
  });
141
169
 
@@ -187,7 +215,7 @@ describe('parseShapeJson', () => {
187
215
 
188
216
  describe('parseShapeJson argument validation', () => {
189
217
  function document(commands: readonly unknown[]): string {
190
- return JSON.stringify({ shapeFormat: 2, commands });
218
+ return JSON.stringify({ shapeFormat: 3, commands });
191
219
  }
192
220
 
193
221
  // Every rejection below used to build a Shape instead. The parser checked that an entry looked like
@@ -259,6 +287,30 @@ describe('parseShapeJson argument validation', () => {
259
287
  ).toBeNull();
260
288
  });
261
289
 
290
+ it.each(['a', 'b', 'c', 'd', 'tx', 'ty'])('rejects a non-finite %s matrix field', (field) => {
291
+ const values: Record<string, string> = { a: '1', b: '0', c: '0', d: '1', tx: '2', ty: '3' };
292
+ values[field] = '1e999';
293
+ const matrix = `{${Object.entries(values)
294
+ .map(([key, value]) => `"${key}":${value}`)
295
+ .join(',')}}`;
296
+ const text =
297
+ `{"shapeFormat":2,"commands":[{"key":"beginGradientFill","args":` +
298
+ `["linear",[1],[1],[0],${matrix},"pad","rgb",0]}]}`;
299
+
300
+ expect(parseShapeJson(text)).toBeNull();
301
+ });
302
+
303
+ it('rejects a matrix field serialized from Infinity to null', () => {
304
+ const text = document([
305
+ {
306
+ key: 'beginGradientFill',
307
+ args: ['linear', [1], [1], [0], { a: Infinity, b: 0, c: 0, d: 1, tx: 2, ty: 3 }, 'pad', 'rgb', 0],
308
+ },
309
+ ]);
310
+ expect(text).toContain('"a":null');
311
+ expect(parseShapeJson(text)).toBeNull();
312
+ });
313
+
262
314
  // A texture command still drops rather than failing the parse: an unresolved reference is a missing
263
315
  // asset, not a malformed document, and that distinction predates this validation.
264
316
  it('drops rather than rejects a texture command whose reference does not resolve', () => {