@flighthq/spritesheet-formats 0.2.1-next.652.c550eaa → 0.2.1-next.701.409c279

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":"asepriteParse.d.ts","sourceRoot":"","sources":["../src/asepriteParse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA4B,eAAe,EAAwB,MAAM,uBAAuB,CAAC;AAQ7G,OAAO,KAAK,EAKV,cAAc,EAEf,MAAM,iBAAiB,CAAC;AAgFzB;;;;;;uDAMuD;AACvD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAEtE;AAED;wDACwD;AACxD,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAG7E"}
1
+ {"version":3,"file":"asepriteParse.d.ts","sourceRoot":"","sources":["../src/asepriteParse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA4B,eAAe,EAAwB,MAAM,uBAAuB,CAAC;AAQ7G,OAAO,KAAK,EAKV,cAAc,EAEf,MAAM,iBAAiB,CAAC;AAgFzB;;;;;;uDAMuD;AACvD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAWtE;AAED;wDACwD;AACxD,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAW7E"}
@@ -76,12 +76,45 @@ function documentToData(doc) {
76
76
  * Per-frame durations from Aseprite are preserved in `animation.frameDurations`
77
77
  * when frames within a tag have varying durations. */
78
78
  export function parseAsepriteSpritesheet(json) {
79
- return documentToData(JSON.parse(json));
79
+ let document;
80
+ try {
81
+ document = JSON.parse(json);
82
+ }
83
+ catch {
84
+ // Malformed JSON is an expected failure — return an empty SpritesheetData sentinel rather than
85
+ // throwing an uncaught SyntaxError, matching `parseSpritesheet`'s null-on-unrecognized philosophy and
86
+ // the never-throw importer policy (the XML path returns a data descriptor, never throws).
87
+ return createSpritesheetData();
88
+ }
89
+ return documentToData(document);
80
90
  }
81
91
  /** Parse an Aseprite JSON string and preserve the full document for round-trip
82
92
  * serialisation via `serializeAsepriteSpritesheet`. */
83
93
  export function parseAsepriteSpritesheetDocument(json) {
84
- const document = JSON.parse(json);
94
+ let document;
95
+ try {
96
+ document = JSON.parse(json);
97
+ }
98
+ catch {
99
+ // Malformed JSON is an expected failure — return an EMPTY RESULT (empty data + empty document), never
100
+ // throwing. Empty (not null) keeps this variant's return contract identical to the non-Document sibling
101
+ // parseAsepriteSpritesheet, and the empty document stays serialisable for round-trip.
102
+ return { data: createSpritesheetData(), document: createEmptyAsepriteDocument() };
103
+ }
85
104
  return { data: documentToData(document), document };
86
105
  }
106
+ // The frame-less Aseprite document used as the malformed-JSON sentinel — a valid array document so the
107
+ // result round-trips through serializeAsepriteSpritesheet.
108
+ function createEmptyAsepriteDocument() {
109
+ const meta = {
110
+ app: '',
111
+ format: '',
112
+ frameTags: [],
113
+ image: '',
114
+ scale: 1,
115
+ size: { h: 0, w: 0 },
116
+ version: '',
117
+ };
118
+ return { frames: [], meta };
119
+ }
87
120
  //# sourceMappingURL=asepriteParse.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"asepriteParse.js","sourceRoot":"","sources":["../src/asepriteParse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"asepriteParse.js","sourceRoot":"","sources":["../src/asepriteParse.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"texturePackerParse.d.ts","sourceRoot":"","sources":["../src/texturePackerParse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA4B,eAAe,EAAwB,MAAM,uBAAuB,CAAC;AAQ7G,OAAO,KAAK,EAKV,mBAAmB,EACpB,MAAM,iBAAiB,CAAC;AAgEzB;;;kGAGkG;AAClG,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAE3E;AAED;wEACwE;AACxE,wBAAgB,qCAAqC,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,CAGvF"}
1
+ {"version":3,"file":"texturePackerParse.d.ts","sourceRoot":"","sources":["../src/texturePackerParse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA4B,eAAe,EAAwB,MAAM,uBAAuB,CAAC;AAQ7G,OAAO,KAAK,EAKV,mBAAmB,EACpB,MAAM,iBAAiB,CAAC;AAgEzB;;;kGAGkG;AAClG,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAW3E;AAED;wEACwE;AACxE,wBAAgB,qCAAqC,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,CAUvF"}
@@ -59,12 +59,36 @@ function documentToData(doc) {
59
59
  * Single-pass: no intermediate document object is allocated.
60
60
  * Use `parseTexturePackerSpritesheetDocument` instead when you need round-trip serialisation. */
61
61
  export function parseTexturePackerSpritesheet(json) {
62
- return documentToData(JSON.parse(json));
62
+ let document;
63
+ try {
64
+ document = JSON.parse(json);
65
+ }
66
+ catch {
67
+ // Malformed JSON is an expected failure — return an empty SpritesheetData sentinel rather than
68
+ // throwing an uncaught SyntaxError, matching `parseSpritesheet`'s null-on-unrecognized philosophy and
69
+ // the never-throw importer policy.
70
+ return createSpritesheetData();
71
+ }
72
+ return documentToData(document);
63
73
  }
64
74
  /** Parse a Texture Packer JSON string and preserve the full document for
65
75
  * round-trip serialisation via `serializeTexturePackerSpritesheet`. */
66
76
  export function parseTexturePackerSpritesheetDocument(json) {
67
- const document = JSON.parse(json);
77
+ let document;
78
+ try {
79
+ document = JSON.parse(json);
80
+ }
81
+ catch {
82
+ // Malformed JSON is an expected failure — return an EMPTY RESULT (empty data + empty document), never
83
+ // throwing; empty (not null) matches the non-Document sibling parseTexturePackerSpritesheet.
84
+ return { data: createSpritesheetData(), document: createEmptyTexturePackerDocument() };
85
+ }
68
86
  return { data: documentToData(document), document };
69
87
  }
88
+ // The frame-less TexturePacker document used as the malformed-JSON sentinel — a valid array document so the
89
+ // result round-trips through serializeTexturePackerSpritesheet.
90
+ function createEmptyTexturePackerDocument() {
91
+ const meta = { app: '', format: '', image: '', scale: 1, size: { h: 0, w: 0 }, version: '' };
92
+ return { frames: [], meta };
93
+ }
70
94
  //# sourceMappingURL=texturePackerParse.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"texturePackerParse.js","sourceRoot":"","sources":["../src/texturePackerParse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"texturePackerParse.js","sourceRoot":"","sources":["../src/texturePackerParse.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flighthq/spritesheet-formats",
3
- "version": "0.2.1-next.652.c550eaa",
3
+ "version": "0.2.1-next.701.409c279",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/flighthq/flight.git",
@@ -32,11 +32,11 @@
32
32
  "clean:dist": "tsx ../../scripts/clean-package-dist.ts"
33
33
  },
34
34
  "dependencies": {
35
- "@flighthq/textureatlas": "0.2.1-next.652.c550eaa",
36
- "@flighthq/textureatlas-formats": "0.2.1-next.652.c550eaa",
37
- "@flighthq/spritesheet": "0.2.1-next.652.c550eaa",
38
- "@flighthq/types": "0.2.1-next.652.c550eaa",
39
- "@flighthq/xml": "0.2.1-next.652.c550eaa"
35
+ "@flighthq/textureatlas": "0.2.1-next.701.409c279",
36
+ "@flighthq/textureatlas-formats": "0.2.1-next.701.409c279",
37
+ "@flighthq/spritesheet": "0.2.1-next.701.409c279",
38
+ "@flighthq/types": "0.2.1-next.701.409c279",
39
+ "@flighthq/xml": "0.2.1-next.701.409c279"
40
40
  },
41
41
  "devDependencies": {
42
42
  "typescript": "^5.3.0"
@@ -107,6 +107,13 @@ const NO_TAGS_JSON = JSON.stringify({
107
107
  });
108
108
 
109
109
  describe('parseAsepriteSpritesheet', () => {
110
+ it('returns an empty SpritesheetData (no throw) on malformed JSON', () => {
111
+ // Malformed JSON must yield the empty-data sentinel, not an uncaught SyntaxError — matching the
112
+ // never-throw importer policy and parseSpritesheet's null-on-unrecognized philosophy.
113
+ expect(() => parseAsepriteSpritesheet('{ not valid json')).not.toThrow();
114
+ expect(parseAsepriteSpritesheet('{ not valid json').frames).toHaveLength(0);
115
+ });
116
+
110
117
  it('returns a SpritesheetData (not a Parsed object)', () => {
111
118
  const result = parseAsepriteSpritesheet(HASH_JSON);
112
119
  expect(typeof result.frames).toBe('object');
@@ -209,6 +216,15 @@ describe('parseAsepriteSpritesheet', () => {
209
216
  });
210
217
 
211
218
  describe('parseAsepriteSpritesheetDocument', () => {
219
+ it('returns an empty result (no throw) on malformed JSON', () => {
220
+ // Malformed JSON yields an empty result — empty data AND an empty (frame-less) document — not an
221
+ // uncaught throw and not null, matching the non-Document sibling.
222
+ expect(() => parseAsepriteSpritesheetDocument('{ not valid json')).not.toThrow();
223
+ const { data, document } = parseAsepriteSpritesheetDocument('{ not valid json');
224
+ expect(data.frames).toHaveLength(0);
225
+ expect((document as { frames: unknown[] }).frames).toHaveLength(0);
226
+ });
227
+
212
228
  it('returns the same data as parseAsepriteSpritesheet', () => {
213
229
  const parsed = parseAsepriteSpritesheet(HASH_JSON);
214
230
  const { data } = parseAsepriteSpritesheetDocument(HASH_JSON);
@@ -90,6 +90,11 @@ const MINIMAL_HASH_JSON = JSON.stringify({
90
90
  });
91
91
 
92
92
  describe('parseTexturePackerSpritesheet', () => {
93
+ it('returns an empty SpritesheetData (no throw) on malformed JSON', () => {
94
+ expect(() => parseTexturePackerSpritesheet('not json')).not.toThrow();
95
+ expect(parseTexturePackerSpritesheet('not json').frames).toHaveLength(0);
96
+ });
97
+
93
98
  it('returns a SpritesheetData (not a Parsed object)', () => {
94
99
  const result = parseTexturePackerSpritesheet(HASH_JSON);
95
100
  expect(typeof result.frames).toBe('object');
@@ -207,6 +212,13 @@ describe('parseTexturePackerSpritesheet', () => {
207
212
  });
208
213
 
209
214
  describe('parseTexturePackerSpritesheetDocument', () => {
215
+ it('returns an empty result (no throw) on malformed JSON', () => {
216
+ expect(() => parseTexturePackerSpritesheetDocument('not json')).not.toThrow();
217
+ const { data, document } = parseTexturePackerSpritesheetDocument('not json');
218
+ expect(data.frames).toHaveLength(0);
219
+ expect((document as { frames: unknown[] }).frames).toHaveLength(0);
220
+ });
221
+
210
222
  it('returns the same data as parseTexturePackerSpritesheet', () => {
211
223
  const parsed = parseTexturePackerSpritesheet(HASH_JSON);
212
224
  const { data } = parseTexturePackerSpritesheetDocument(HASH_JSON);