@flighthq/shape-formats 0.2.1-next.841.373388f → 0.3.0-next.1032.e2b99fc

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.
@@ -0,0 +1,2 @@
1
+ export * from './shapeJson';
2
+ //# sourceMappingURL=contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './shapeJson';
2
+ //# sourceMappingURL=contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export * from './shapeJson';
1
+ export { formatShapeJson, parseShapeJson } from './contract';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export * from './shapeJson';
1
+ export { formatShapeJson, parseShapeJson } from './contract';
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { Shape, ShapeJsonFormatOptions, ShapeJsonParseOptions } from '@flighthq/types';
1
+ import type { Shape, ShapeJsonFormatOptions, ShapeJsonParseOptions } from '@flighthq/types/contract';
2
2
  export declare function formatShapeJson(shape: Readonly<Shape>, options?: Readonly<ShapeJsonFormatOptions>): string;
3
3
  export declare function parseShapeJson(text: string, options?: Readonly<ShapeJsonParseOptions>): Shape | null;
4
4
  //# sourceMappingURL=shapeJson.d.ts.map
@@ -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,iBAAiB,CAAC;AAM5F,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,sBAAsB,CAAC,GAAG,MAAM,CA+B1G;AAMD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,qBAAqB,CAAC,GAAG,KAAK,GAAG,IAAI,CAqCpG"}
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;AAMrG,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,sBAAsB,CAAC,GAAG,MAAM,CA+B1G;AAMD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,qBAAqB,CAAC,GAAG,KAAK,GAAG,IAAI,CAqCpG"}
package/dist/shapeJson.js CHANGED
@@ -1,13 +1,13 @@
1
- import { createMatrix } from '@flighthq/geometry';
2
- import { appendShapeBeginBitmapFill, appendShapeBeginFill, appendShapeBeginGradientFill, appendShapeCircle, appendShapeCubicCurveTo, appendShapeCurveTo, appendShapeDrawTriangles, appendShapeEllipse, appendShapeEndFill, appendShapeLineBitmapStyle, appendShapeLineGradientStyle, appendShapeLineStyle, appendShapeLineTo, appendShapeMoveTo, appendShapePath, appendShapeRectangle, appendShapeRoundRectangle, createShape, } from '@flighthq/shape';
1
+ import { createMatrix } from '@flighthq/geometry/contract';
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 losslessly. Every non-bitmap command round-trips exactly; `beginBitmapFill`/
5
- // `lineBitmapStyle` resources serialize as an ordinal `ShapeBitmapReference` (see the type) rather
6
- // than the live `ImageResource`.
4
+ // restores losslessly. Every non-texture command round-trips exactly; `beginTextureFill`/
5
+ // `lineTextureStyle` textures serialize as an ordinal `ShapeTextureReference` (see the type) rather
6
+ // than the live `Texture`.
7
7
  export function formatShapeJson(shape, options) {
8
8
  const commands = shape.data.commands;
9
9
  const entries = [];
10
- let bitmapOrdinal = 0;
10
+ let textureOrdinal = 0;
11
11
  let i = 0;
12
12
  while (i < commands.length) {
13
13
  const key = commands[i];
@@ -29,9 +29,9 @@ export function formatShapeJson(shape, options) {
29
29
  args.push(value);
30
30
  }
31
31
  else {
32
- // The only remaining object arg in the command registry is a live `ImageResource` bitmap;
32
+ // The only remaining object arg in the command registry is a live Texture;
33
33
  // it has no serializable id, so it becomes an ordinal reference resolved on parse.
34
- args.push({ bitmap: { index: bitmapOrdinal++ } });
34
+ args.push({ texture: { index: textureOrdinal++ } });
35
35
  }
36
36
  }
37
37
  entries.push({ key, args });
@@ -42,7 +42,7 @@ export function formatShapeJson(shape, options) {
42
42
  // Restores a `Shape` from a `formatShapeJson` string by replaying each command through the matching
43
43
  // `appendShape*` builder. Returns `null` for malformed JSON, a missing/mismatched `shapeFormat`
44
44
  // version tag, a non-array `commands` field, a malformed command entry, an unknown command key, or a
45
- // malformed argument. Bitmap-bearing commands whose reference cannot be resolved are dropped.
45
+ // malformed argument. Texture-bearing commands whose reference cannot be resolved are dropped.
46
46
  export function parseShapeJson(text, options) {
47
47
  let root;
48
48
  try {
@@ -58,7 +58,7 @@ export function parseShapeJson(text, options) {
58
58
  const rawCommands = root.commands;
59
59
  if (!Array.isArray(rawCommands))
60
60
  return null;
61
- const resolveBitmap = options?.resolveBitmap;
61
+ const resolveTexture = options?.resolveTexture;
62
62
  const shape = createShape();
63
63
  for (const entry of rawCommands) {
64
64
  if (!isPlainObject(entry))
@@ -73,7 +73,7 @@ export function parseShapeJson(text, options) {
73
73
  const args = [];
74
74
  let drop = false;
75
75
  for (const raw of rawArgs) {
76
- const reconstructed = reconstructShapeCommandArg(raw, resolveBitmap);
76
+ const reconstructed = reconstructShapeCommandArg(raw, resolveTexture);
77
77
  if (reconstructed === MALFORMED_ARG)
78
78
  return null;
79
79
  if (reconstructed === DROP_COMMAND) {
@@ -89,8 +89,8 @@ export function parseShapeJson(text, options) {
89
89
  return shape;
90
90
  }
91
91
  // Rebuilds a single command argument from its serialized form. Returns `MALFORMED_ARG` for an
92
- // unrecognized object shape and `DROP_COMMAND` when a bitmap reference cannot be resolved.
93
- function reconstructShapeCommandArg(value, resolveBitmap) {
92
+ // unrecognized object shape and `DROP_COMMAND` when a texture reference cannot be resolved.
93
+ function reconstructShapeCommandArg(value, resolveTexture) {
94
94
  if (value === null)
95
95
  return null;
96
96
  const type = typeof value;
@@ -100,8 +100,8 @@ function reconstructShapeCommandArg(value, resolveBitmap) {
100
100
  return value;
101
101
  if (!isPlainObject(value))
102
102
  return MALFORMED_ARG;
103
- if (isPlainObject(value.bitmap) && typeof value.bitmap.index === 'number') {
104
- const resolved = resolveBitmap?.({ index: value.bitmap.index }) ?? null;
103
+ if (isPlainObject(value.texture) && typeof value.texture.index === 'number') {
104
+ const resolved = resolveTexture?.({ index: value.texture.index }) ?? null;
105
105
  return resolved === null ? DROP_COMMAND : resolved;
106
106
  }
107
107
  if (typeof value.a === 'number' &&
@@ -132,11 +132,11 @@ function isSerializableScalarOrArray(value) {
132
132
  }
133
133
  // Sentinel returned when a command argument is structurally invalid; parse aborts to `null`.
134
134
  const MALFORMED_ARG = Symbol('shapeFormats.malformedArg');
135
- // Sentinel returned when a bitmap reference cannot be resolved; the owning command is dropped.
135
+ // Sentinel returned when a texture reference cannot be resolved; the owning command is dropped.
136
136
  const DROP_COMMAND = Symbol('shapeFormats.dropCommand');
137
- const SHAPE_JSON_FORMAT = 1;
137
+ const SHAPE_JSON_FORMAT = 2;
138
138
  const SHAPE_COMMAND_APPENDERS = {
139
- beginBitmapFill: appendShapeBeginBitmapFill,
139
+ beginTextureFill: appendShapeBeginTextureFill,
140
140
  beginFill: appendShapeBeginFill,
141
141
  beginGradientFill: appendShapeBeginGradientFill,
142
142
  cubicCurveTo: appendShapeCubicCurveTo,
@@ -148,7 +148,7 @@ const SHAPE_COMMAND_APPENDERS = {
148
148
  drawRoundRectangle: appendShapeRoundRectangle,
149
149
  drawTriangles: appendShapeDrawTriangles,
150
150
  endFill: appendShapeEndFill,
151
- lineBitmapStyle: appendShapeLineBitmapStyle,
151
+ lineTextureStyle: appendShapeLineTextureStyle,
152
152
  lineGradientStyle: appendShapeLineGradientStyle,
153
153
  lineStyle: appendShapeLineStyle,
154
154
  lineTo: appendShapeLineTo,
@@ -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":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,4BAA4B,EAC5B,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,EAClB,kBAAkB,EAClB,2BAA2B,EAC3B,4BAA4B,EAC5B,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,yBAAyB,EACzB,WAAW,GACZ,MAAM,0BAA0B,CAAC;AAGlC,iGAAiG;AACjG,0FAA0F;AAC1F,oGAAoG;AACpG,2BAA2B;AAC3B,MAAM,UAAU,eAAe,CAAC,KAAsB,EAAE,OAA0C;IAChG,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;IACrC,MAAM,OAAO,GAA6B,EAAE,CAAC;IAC7C,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAW,CAAC;QAClC,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAW,CAAC;QAC3C,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACnB,MAAM,IAAI,GAAc,EAAE,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;YACjC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACnB,mEAAmE;gBACnE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;iBAAM,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5F,CAAC;iBAAM,IAAI,2BAA2B,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9C,sFAAsF;gBACtF,qEAAqE;gBACrE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACN,2EAA2E;gBAC3E,mFAAmF;gBACnF,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5B,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACrG,CAAC;AAED,oGAAoG;AACpG,gGAAgG;AAChG,qGAAqG;AACrG,+FAA+F;AAC/F,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,OAAyC;IACpF,IAAI,IAAa,CAAC;IAClB,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,IAAI,IAAI,CAAC,WAAW,KAAK,iBAAiB;QAAE,OAAO,IAAI,CAAC;IACxD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC;IAClC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC;IAE7C,MAAM,cAAc,GAAG,OAAO,EAAE,cAAc,CAAC;IAC/C,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC;IAC5B,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACvC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;QACtB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC;QAC3B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;QACpE,MAAM,QAAQ,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QAExC,MAAM,IAAI,GAAc,EAAE,CAAC;QAC3B,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,MAAM,aAAa,GAAG,0BAA0B,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YACtE,IAAI,aAAa,KAAK,aAAa;gBAAE,OAAO,IAAI,CAAC;YACjD,IAAI,aAAa,KAAK,YAAY,EAAE,CAAC;gBACnC,IAAI,GAAG,IAAI,CAAC;gBACZ,MAAM;YACR,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI,IAAI;YAAE,SAAS;QACnB,QAAQ,CAAC,KAAK,EAAE,GAAI,IAAgB,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8FAA8F;AAC9F,4FAA4F;AAC5F,SAAS,0BAA0B,CAAC,KAAc,EAAE,cAAuD;IACzG,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC;IAC1B,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC/E,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAAE,OAAO,aAAa,CAAC;IAChD,IAAI,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5E,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC;QAC1E,OAAO,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC;IACrD,CAAC;IACD,IACE,OAAO,KAAK,CAAC,CAAC,KAAK,QAAQ;QAC3B,OAAO,KAAK,CAAC,CAAC,KAAK,QAAQ;QAC3B,OAAO,KAAK,CAAC,CAAC,KAAK,QAAQ;QAC3B,OAAO,KAAK,CAAC,CAAC,KAAK,QAAQ;QAC3B,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ;QAC5B,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,EAC5B,CAAC;QACD,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,aAAa,CACpB,KAAc;IAEd,OAAO,CACL,aAAa,CAAC,KAAK,CAAC;QACpB,OAAO,KAAK,CAAC,CAAC,KAAK,QAAQ;QAC3B,OAAO,KAAK,CAAC,CAAC,KAAK,QAAQ;QAC3B,OAAO,KAAK,CAAC,CAAC,KAAK,QAAQ;QAC3B,OAAO,KAAK,CAAC,CAAC,KAAK,QAAQ;QAC3B,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ;QAC5B,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,CAC7B,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,2BAA2B,CAAC,KAAc;IACjD,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC;IAC1B,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9F,CAAC;AAYD,6FAA6F;AAC7F,MAAM,aAAa,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC;AAE1D,gGAAgG;AAChG,MAAM,YAAY,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC;AAExD,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAE5B,MAAM,uBAAuB,GAAmD;IAC9E,gBAAgB,EAAE,2BAA2B;IAC7C,SAAS,EAAE,oBAAoB;IAC/B,iBAAiB,EAAE,4BAA4B;IAC/C,YAAY,EAAE,uBAAuB;IACrC,OAAO,EAAE,kBAAkB;IAC3B,UAAU,EAAE,iBAAiB;IAC7B,WAAW,EAAE,kBAAkB;IAC/B,QAAQ,EAAE,eAAe;IACzB,aAAa,EAAE,oBAAoB;IACnC,kBAAkB,EAAE,yBAAyB;IAC7C,aAAa,EAAE,wBAAwB;IACvC,OAAO,EAAE,kBAAkB;IAC3B,gBAAgB,EAAE,2BAA2B;IAC7C,iBAAiB,EAAE,4BAA4B;IAC/C,SAAS,EAAE,oBAAoB;IAC/B,MAAM,EAAE,iBAAiB;IACzB,MAAM,EAAE,iBAAiB;CAC1B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flighthq/shape-formats",
3
- "version": "0.2.1-next.841.373388f",
3
+ "version": "0.3.0-next.1032.e2b99fc",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/flighthq/flight.git",
@@ -13,6 +13,10 @@
13
13
  ".": {
14
14
  "types": "./dist/index.d.ts",
15
15
  "default": "./dist/index.js"
16
+ },
17
+ "./contract": {
18
+ "types": "./dist/contract.d.ts",
19
+ "default": "./dist/contract.js"
16
20
  }
17
21
  },
18
22
  "files": [
@@ -32,9 +36,9 @@
32
36
  "clean:dist": "tsx ../../scripts/clean-package-dist.ts"
33
37
  },
34
38
  "dependencies": {
35
- "@flighthq/geometry": "0.2.1-next.841.373388f",
36
- "@flighthq/shape": "0.2.1-next.841.373388f",
37
- "@flighthq/types": "0.2.1-next.841.373388f"
39
+ "@flighthq/geometry": "0.3.0-next.1032.e2b99fc",
40
+ "@flighthq/shape": "0.3.0-next.1032.e2b99fc",
41
+ "@flighthq/types": "0.3.0-next.1032.e2b99fc"
38
42
  },
39
43
  "devDependencies": {
40
44
  "typescript": "^5.3.0"
@@ -1,6 +1,6 @@
1
- import { createMatrix } from '@flighthq/geometry';
1
+ import { createMatrix } from '@flighthq/geometry/contract';
2
2
  import {
3
- appendShapeBeginBitmapFill,
3
+ appendShapeBeginTextureFill,
4
4
  appendShapeBeginFill,
5
5
  appendShapeBeginGradientFill,
6
6
  appendShapeCubicCurveTo,
@@ -12,8 +12,8 @@ import {
12
12
  appendShapePath,
13
13
  createShape,
14
14
  getShapeCommandCount,
15
- } from '@flighthq/shape';
16
- import type { ImageResource } from '@flighthq/types';
15
+ } from '@flighthq/shape/contract';
16
+ import type { Texture } from '@flighthq/types/contract';
17
17
 
18
18
  import { formatShapeJson, parseShapeJson } from './shapeJson';
19
19
 
@@ -41,10 +41,10 @@ function createEveryNonBitmapCommandShape() {
41
41
  return shape;
42
42
  }
43
43
 
44
- // A minimal stand-in for a live ImageResource; the codec never inspects resource internals, only
44
+ // A minimal stand-in for a live Texture; the codec never inspects texture internals, only
45
45
  // swaps the object for an ordinal reference and back.
46
- function createFakeBitmap(): ImageResource {
47
- return { width: 4, height: 4 } as unknown as ImageResource;
46
+ function createFakeTexture(): Texture {
47
+ return {} as Texture;
48
48
  }
49
49
 
50
50
  describe('formatShapeJson', () => {
@@ -52,7 +52,7 @@ describe('formatShapeJson', () => {
52
52
  const shape = createShape();
53
53
  appendShapeBeginFill(shape, 0x112233ff, 1);
54
54
  const parsed = JSON.parse(formatShapeJson(shape));
55
- expect(parsed.shapeFormat).toBe(1);
55
+ expect(parsed.shapeFormat).toBe(2);
56
56
  expect(Array.isArray(parsed.commands)).toBe(true);
57
57
  expect(parsed.commands[0]).toEqual({ key: 'beginFill', args: [0x112233ff, 1] });
58
58
  });
@@ -64,14 +64,12 @@ describe('formatShapeJson', () => {
64
64
  expect(parsed.commands[0].args[4]).toEqual({ a: 2, b: 0, c: 0, d: 3, tx: 5, ty: 7 });
65
65
  });
66
66
 
67
- it('serializes a bitmap resource as an ordinal reference, never the resource', () => {
67
+ it('serializes a texture as an ordinal reference, never the texture', () => {
68
68
  const shape = createShape();
69
- appendShapeBeginBitmapFill(shape, createFakeBitmap(), null, true, false);
69
+ appendShapeBeginTextureFill(shape, createFakeTexture(), null);
70
70
  const parsed = JSON.parse(formatShapeJson(shape));
71
- expect(parsed.commands[0].args[0]).toEqual({ bitmap: { index: 0 } });
71
+ expect(parsed.commands[0].args[0]).toEqual({ texture: { index: 0 } });
72
72
  expect(parsed.commands[0].args[1]).toBeNull();
73
- expect(parsed.commands[0].args[2]).toBe(true);
74
- expect(parsed.commands[0].args[3]).toBe(false);
75
73
  });
76
74
 
77
75
  it('honors the space option for pretty-printing', () => {
@@ -82,7 +80,7 @@ describe('formatShapeJson', () => {
82
80
  });
83
81
 
84
82
  describe('parseShapeJson', () => {
85
- it('round-trips every non-bitmap command losslessly', () => {
83
+ it('round-trips every non-texture command losslessly', () => {
86
84
  const shape = createEveryNonBitmapCommandShape();
87
85
  const json = formatShapeJson(shape);
88
86
  const restored = parseShapeJson(json);
@@ -100,7 +98,7 @@ describe('parseShapeJson', () => {
100
98
  });
101
99
 
102
100
  it('returns null for a mismatched version tag', () => {
103
- expect(parseShapeJson(JSON.stringify({ shapeFormat: 2, commands: [] }))).toBeNull();
101
+ expect(parseShapeJson(JSON.stringify({ shapeFormat: 3, commands: [] }))).toBeNull();
104
102
  });
105
103
 
106
104
  it('returns null when the top level is not an object', () => {
@@ -108,40 +106,40 @@ describe('parseShapeJson', () => {
108
106
  });
109
107
 
110
108
  it('returns null for an unknown command key', () => {
111
- const json = JSON.stringify({ shapeFormat: 1, commands: [{ key: 'notACommand', args: [] }] });
109
+ const json = JSON.stringify({ shapeFormat: 2, commands: [{ key: 'notACommand', args: [] }] });
112
110
  expect(parseShapeJson(json)).toBeNull();
113
111
  });
114
112
 
115
113
  it('returns null for a malformed argument object', () => {
116
- const json = JSON.stringify({ shapeFormat: 1, commands: [{ key: 'beginFill', args: [{ nonsense: true }, 1] }] });
114
+ const json = JSON.stringify({ shapeFormat: 2, commands: [{ key: 'beginFill', args: [{ nonsense: true }, 1] }] });
117
115
  expect(parseShapeJson(json)).toBeNull();
118
116
  });
119
117
 
120
- it('round-trips a bitmap fill through the resolver', () => {
121
- const bitmap = createFakeBitmap();
118
+ it('round-trips a bitmap fill through the texture resolver', () => {
119
+ const texture = createFakeTexture();
122
120
  const shape = createShape();
123
- appendShapeBeginBitmapFill(shape, bitmap, createMatrix(1, 0, 0, 1, 3, 4), true, false);
121
+ appendShapeBeginTextureFill(shape, texture, createMatrix(1, 0, 0, 1, 3, 4));
124
122
  appendShapeMoveTo(shape, 5, 6);
125
123
 
126
124
  const seen: number[] = [];
127
125
  const restored = parseShapeJson(formatShapeJson(shape), {
128
- resolveBitmap: (reference) => {
126
+ resolveTexture: (reference) => {
129
127
  seen.push(reference.index);
130
- return bitmap;
128
+ return texture;
131
129
  },
132
130
  });
133
131
 
134
132
  expect(restored).not.toBeNull();
135
133
  expect(seen).toEqual([0]);
136
134
  expect(getShapeCommandCount(restored!)).toBe(2);
137
- expect(restored!.data.commands[0]).toBe('beginBitmapFill');
138
- expect(restored!.data.commands[2]).toBe(bitmap);
135
+ expect(restored!.data.commands[0]).toBe('beginTextureFill');
136
+ expect(restored!.data.commands[2]).toBe(texture);
139
137
  });
140
138
 
141
139
  it('drops a bitmap fill when no resolver is supplied and keeps the rest intact', () => {
142
140
  const shape = createShape();
143
141
  appendShapeBeginFill(shape, 0xffffffff, 1);
144
- appendShapeBeginBitmapFill(shape, createFakeBitmap(), null, true, false);
142
+ appendShapeBeginTextureFill(shape, createFakeTexture(), null);
145
143
  appendShapeLineTo(shape, 9, 9);
146
144
 
147
145
  const restored = parseShapeJson(formatShapeJson(shape));
@@ -153,10 +151,10 @@ describe('parseShapeJson', () => {
153
151
 
154
152
  it('drops a bitmap fill when the resolver returns null', () => {
155
153
  const shape = createShape();
156
- appendShapeBeginBitmapFill(shape, createFakeBitmap(), null, true, false);
154
+ appendShapeBeginTextureFill(shape, createFakeTexture(), null);
157
155
  appendShapeEndFill(shape);
158
156
 
159
- const restored = parseShapeJson(formatShapeJson(shape), { resolveBitmap: () => null });
157
+ const restored = parseShapeJson(formatShapeJson(shape), { resolveTexture: () => null });
160
158
  expect(restored).not.toBeNull();
161
159
  expect(getShapeCommandCount(restored!)).toBe(1);
162
160
  expect(restored!.data.commands[0]).toBe('endFill');