parse-tmx 3.9.0 → 4.1.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.
package/README.md CHANGED
@@ -37,7 +37,13 @@ import map from "map.tmx";
37
37
  const translateFlips = true;
38
38
 
39
39
  const loadMap = async () => {
40
- const data = await parseTmx(map, translateFlips);
40
+ // parseTmx resolves to a neverthrow Result, so the map is taken from its Ok branch and an error is rethrown
41
+ const data = (await parseTmx(map, translateFlips)).match(
42
+ (tmxParsed) => tmxParsed.map,
43
+ (error) => {
44
+ throw error;
45
+ },
46
+ );
41
47
  ...
42
48
  };
43
49
  ```
package/dist/index.d.ts CHANGED
@@ -1,172 +1,127 @@
1
- //#region src/models/Compression.d.ts
2
- export declare enum Compression {
3
- Gzip = "gzip",
4
- Zlib = "zlib"
5
- }
6
- //#endregion
7
- //#region src/models/Encoding.d.ts
8
- export declare enum Encoding {
9
- Base64 = "base64",
10
- Csv = "csv"
11
- }
12
- //#endregion
13
- //#region src/models/Flipped.d.ts
14
- export declare enum Flipped {
15
- Diagonally = 536870912,
16
- Vertically = 1073741824,
17
- Horizontally = 2147483648
18
- }
19
- export declare const Flippeds: readonly Flipped[];
20
- //#endregion
1
+ import { Result, ResultAsync } from "neverthrow";
21
2
  //#region src/models/Shape.d.ts
22
3
  export declare enum Shape {
23
4
  Ellipse = "ellipse",
24
5
  Point = "point",
25
6
  Polygon = "polygon",
7
+ Polyline = "polyline",
26
8
  Rectangle = "rectangle"
27
9
  }
28
10
  //#endregion
29
- //#region src/models/tmx/node/TMXNodeType.d.ts
30
- export declare enum TMXNodeType {
31
- Data = "data",
32
- EditorSettings = "editorsettings",
33
- Export = "export",
34
- Group = "group",
35
- Image = "image",
36
- ImageLayer = "imagelayer",
37
- Layer = "layer",
38
- Object = "object",
39
- Objectgroup = "objectgroup",
40
- Properties = "properties",
41
- Property = "property",
42
- Tileset = "tileset"
11
+ //#region src/models/tmx/parsed/TMXAnimationFrameParsed.d.ts
12
+ interface TMXAnimationFrameParsed {
13
+ duration: number;
14
+ tileid: number;
43
15
  }
44
16
  //#endregion
45
- //#region src/models/tmx/node/BaseTMXNode.d.ts
46
- export declare class BaseTMXNode<T> {
47
- [key: string]: unknown;
48
- readonly "#name": TMXNodeType;
49
- $: T;
17
+ //#region src/models/tmx/parsed/TMXAnimationParsed.d.ts
18
+ interface TMXAnimationParsed {
19
+ frames: TMXAnimationFrameParsed[];
20
+ }
21
+ //#endregion
22
+ //#region src/models/tmx/parsed/TMXFlipsParsed.d.ts
23
+ interface TMXFlipsParsed {
24
+ Diagonal: boolean;
25
+ Horizontal: boolean;
26
+ Vertical: boolean;
50
27
  }
51
28
  //#endregion
52
- //#region src/models/tmx/node/TMXNode.d.ts
53
- export type TMXNode<T, TChildNode extends BaseTMXNode<unknown> | undefined = undefined> = BaseTMXNode<T> & {
54
- $$: TChildNode extends undefined ? undefined : TChildNode[];
55
- };
29
+ //#region src/models/tmx/parsed/TMXChunkParsed.d.ts
30
+ interface TMXChunkParsed {
31
+ data?: number[];
32
+ flips?: TMXFlipsParsed[];
33
+ height: number;
34
+ width: number;
35
+ x: number;
36
+ y: number;
37
+ }
56
38
  //#endregion
57
- //#region src/models/tmx/shared/TMXExportShared.d.ts
58
- export interface TMXExportShared {
39
+ //#region src/models/tmx/parsed/TMXExportParsed.d.ts
40
+ interface TMXExportParsed {
59
41
  format: string;
60
42
  target: string;
61
43
  }
62
44
  //#endregion
63
- //#region src/models/tmx/node/TMXExportNode.d.ts
64
- export interface TMXExportNode extends TMXNode<TMXExportShared> {}
65
- //#endregion
66
- //#region src/models/tmx/node/TMXEditorSettingsNode.d.ts
67
- export interface TMXEditorSettingsNode extends TMXNode<Record<string, never>, TMXExportNode> {}
68
- //#endregion
69
- //#region src/models/tmx/node/TMXDataNode.d.ts
70
- export interface TMXDataNode extends TMXNode<{
71
- compression?: Compression;
72
- encoding: Encoding;
73
- }> {
74
- _: string;
45
+ //#region src/models/tmx/parsed/TMXEditorSettingsParsed.d.ts
46
+ interface TMXEditorSettingsParsed {
47
+ export?: TMXExportParsed;
75
48
  }
76
49
  //#endregion
77
- //#region src/models/tmx/shared/TMXImageShared.d.ts
78
- export interface TMXImageShared {
50
+ //#region src/models/tmx/parsed/TMXImageParsed.d.ts
51
+ interface TMXImageParsed {
52
+ format?: string;
79
53
  height: number;
80
54
  source: string;
55
+ trans?: string;
81
56
  width: number;
82
57
  }
83
58
  //#endregion
84
- //#region src/models/tmx/node/TMXImageNode.d.ts
85
- export interface TMXImageNode extends TMXNode<TMXImageShared> {}
86
- //#endregion
87
- //#region src/models/tmx/node/TMXPropertyNode.d.ts
88
- export interface TMXPropertyNode extends TMXNode<{
59
+ //#region src/models/tmx/parsed/TMXPropertyParsed.d.ts
60
+ interface TMXPropertyParsed {
89
61
  name: string;
90
- value?: boolean | number | string;
91
- }> {
92
- _: string;
93
- }
94
- //#endregion
95
- //#region src/models/tmx/node/TMXPropertiesElement.d.ts
96
- export interface TMXPropertiesElement {
97
- property: TMXPropertyNode[];
62
+ properties?: TMXPropertiesParsed;
63
+ value: boolean | number | string;
98
64
  }
99
65
  //#endregion
100
- //#region src/models/tmx/node/TMXPropertiesNode.d.ts
101
- export interface TMXPropertiesNode extends TMXNode<Record<string, never>, TMXPropertyNode> {}
102
- //#endregion
103
- //#region src/models/tmx/node/TMXTextNode.d.ts
104
- export interface TMXTextNode extends TMXNode<Record<string, boolean | number | string> | undefined> {
105
- _: string;
106
- }
66
+ //#region src/models/tmx/parsed/TMXPropertiesParsed.d.ts
67
+ type TMXPropertiesParsed = TMXPropertyParsed[];
107
68
  //#endregion
108
- //#region src/models/tmx/shared/TMXObjectShared.d.ts
109
- export interface TMXObjectShared {
110
- gid: number;
69
+ //#region src/models/tmx/parsed/TMXObjectParsed.d.ts
70
+ interface TMXObjectParsed {
71
+ flips?: TMXFlipsParsed;
72
+ gid?: number;
111
73
  height: number;
112
74
  id: number;
75
+ name: string;
76
+ points?: [number, number][];
77
+ properties?: TMXPropertiesParsed;
78
+ rotation?: number;
79
+ shape: Shape;
80
+ template?: string;
81
+ text?: string;
113
82
  type: string;
83
+ visible?: number;
114
84
  width: number;
115
85
  x: number;
116
86
  y: number;
117
87
  }
118
88
  //#endregion
119
- //#region src/models/tmx/node/TMXObjectNode.d.ts
120
- export interface TMXObjectNode extends TMXNode<TMXObjectShared, TMXDataNode | TMXPropertiesNode> {
121
- polygon?: TMXNode<{
122
- points: string;
123
- }>[];
124
- properties?: TMXPropertiesElement[];
125
- text?: TMXTextNode[];
126
- }
127
- //#endregion
128
- //#region src/models/tmx/shared/TMXTileShared.d.ts
129
- export interface TMXTileShared {
130
- gid?: number;
89
+ //#region src/models/tmx/parsed/TMXTileParsed.d.ts
90
+ interface TMXTileParsed {
91
+ animation?: TMXAnimationParsed;
131
92
  id: number;
93
+ image?: TMXImageParsed;
94
+ objects?: TMXObjectParsed[];
132
95
  probability?: number;
96
+ properties?: TMXPropertiesParsed;
97
+ terrain?: string;
98
+ type?: string;
133
99
  }
134
100
  //#endregion
135
- //#region src/models/tmx/node/TMXTileNode.d.ts
136
- export interface TMXTileNode extends TMXNode<TMXTileShared, TMXPropertiesNode> {
137
- animation?: Record<string, TMXNode<number>[]>[];
138
- objectgroup?: Record<string, TMXObjectNode[]>[];
139
- properties?: TMXPropertiesElement[];
140
- }
141
- //#endregion
142
- //#region src/models/tmx/shared/TMXBaseTilesetShared.d.ts
143
- export interface TMXBaseTilesetShared {
144
- firstgid: number;
145
- }
146
- //#endregion
147
- //#region src/models/tmx/shared/TMXEmbeddedTilesetShared.d.ts
148
- export interface TMXEmbeddedTilesetShared extends TMXBaseTilesetShared {
101
+ //#region src/models/tmx/parsed/TMXEmbeddedTilesetParsed.d.ts
102
+ interface TMXEmbeddedTilesetParsed {
149
103
  columns: number;
150
- imageheight: number;
151
- imagewidth: number;
104
+ firstgid: number;
105
+ image?: TMXImageParsed;
152
106
  margin?: number;
153
107
  name: string;
154
108
  spacing?: number;
155
109
  tilecount: number;
156
110
  tileheight: number;
111
+ tiles: TMXTileParsed[];
157
112
  tilewidth: number;
158
113
  }
159
114
  //#endregion
160
- //#region src/models/tmx/node/TMXEmbeddedTilesetNode.d.ts
161
- export interface TMXEmbeddedTilesetNode extends TMXNode<TMXEmbeddedTilesetShared, TMXImageNode | TMXTileNode> {
162
- tile?: TMXTileNode[];
115
+ //#region src/models/tmx/parsed/TMXExternalTilesetParsed.d.ts
116
+ interface TMXExternalTilesetParsed {
117
+ firstgid: number;
118
+ source: string;
163
119
  }
164
120
  //#endregion
165
- //#region src/models/tmx/shared/TMXLayerShared.d.ts
166
- export interface TMXLayerShared {
167
- height: number;
121
+ //#region src/models/tmx/shared/TMXGroupLayerShared.d.ts
122
+ interface TMXGroupLayerShared {
123
+ class?: string;
168
124
  id: number;
169
- locked?: number;
170
125
  name: string;
171
126
  offsetx?: number;
172
127
  offsety?: number;
@@ -176,148 +131,58 @@ export interface TMXLayerShared {
176
131
  tintcolor?: string;
177
132
  type: string;
178
133
  visible?: number;
179
- width: number;
180
- x?: number;
181
- y?: number;
182
- }
183
- //#endregion
184
- //#region src/models/tmx/node/TMXLayerNode.d.ts
185
- export interface TMXLayerNode extends TMXNode<TMXLayerShared, TMXDataNode | TMXEmbeddedTilesetNode | TMXPropertiesNode> {
186
- data?: TMXDataNode[] | TMXEmbeddedTilesetNode[];
187
- image?: TMXImageNode[];
188
- object?: TMXObjectNode[];
189
- properties?: TMXPropertiesElement[];
190
134
  }
191
135
  //#endregion
192
- //#region src/models/tmx/shared/TMXGroupLayerShared.d.ts
193
- export interface TMXGroupLayerShared {
194
- id: number;
195
- name: string;
196
- type: string;
197
- }
198
- //#endregion
199
- //#region src/models/tmx/node/TMXGroupLayerNode.d.ts
200
- export interface TMXGroupLayerNode extends TMXNode<TMXGroupLayerShared, TMXLayerNode> {
201
- properties?: TMXPropertiesElement[];
202
- }
203
- //#endregion
204
- //#region src/models/tmx/shared/TMXExternalTilesetShared.d.ts
205
- export interface TMXExternalTilesetShared extends TMXBaseTilesetShared {
206
- source: string;
207
- }
208
- //#endregion
209
- //#region src/models/tmx/node/TMXExternalTilesetNode.d.ts
210
- export interface TMXExternalTilesetNode extends TMXNode<TMXExternalTilesetShared> {}
211
- //#endregion
212
- //#region src/models/tmx/node/TMXTilesetNode.d.ts
213
- export type TMXTilesetNode = TMXEmbeddedTilesetNode | TMXExternalTilesetNode;
214
- //#endregion
215
- //#region src/models/tmx/shared/TMXMapShared.d.ts
216
- export declare class TMXMapShared {
217
- height: number;
218
- infinite: number;
219
- nextlayerid: number;
220
- nextobjectid: number;
221
- orientation: string;
222
- renderorder: string;
223
- tiledversion: string;
224
- tileheight: number;
225
- tilewidth: number;
226
- version: number;
227
- width: number;
228
- }
229
- //#endregion
230
- //#region src/models/tmx/node/TMXMapNode.d.ts
231
- export interface TMXMapNode extends TMXNode<TMXMapShared, TMXEditorSettingsNode | TMXGroupLayerNode | TMXPropertiesNode | TMXTilesetNode> {}
232
- //#endregion
233
- //#region src/models/tmx/node/TMX.d.ts
234
- export interface TMX {
235
- map: TMXMapNode;
236
- }
237
- //#endregion
238
- //#region src/models/tmx/parsed/TMXExportParsed.d.ts
239
- export interface TMXExportParsed extends TMXExportShared {}
240
- //#endregion
241
- //#region src/models/tmx/parsed/TMXEditorSettingsParsed.d.ts
242
- export interface TMXEditorSettingsParsed {
243
- export?: TMXExportParsed;
244
- }
245
- //#endregion
246
- //#region src/models/tmx/parsed/TMXImageParsed.d.ts
247
- export interface TMXImageParsed extends TMXImageShared {}
248
- //#endregion
249
- //#region src/models/tmx/parsed/TMXFlipsParsed.d.ts
250
- export interface TMXFlipsParsed {
251
- Diagonal: boolean;
252
- Horizontal: boolean;
253
- Vertical: boolean;
254
- }
255
- //#endregion
256
- //#region src/models/tmx/parsed/TMXPropertyParsed.d.ts
257
- export interface TMXPropertyParsed {
258
- name: string;
259
- value: boolean | number | string;
260
- }
261
- //#endregion
262
- //#region src/models/tmx/parsed/TMXPropertiesParsed.d.ts
263
- export type TMXPropertiesParsed = TMXPropertyParsed[];
264
- //#endregion
265
- //#region src/models/tmx/parsed/TMXObjectParsed.d.ts
266
- export interface TMXObjectParsed extends TMXObjectShared {
267
- flips?: TMXFlipsParsed;
268
- name: string;
269
- points?: [number, number][];
270
- properties?: TMXPropertiesParsed;
271
- shape: Shape;
272
- text?: string;
273
- value: string;
274
- }
275
- //#endregion
276
- //#region src/models/tmx/parsed/TMXTileParsed.d.ts
277
- export interface TMXTileParsed extends TMXTileShared {
278
- animation?: {
279
- frames: number[];
280
- };
281
- id: number;
282
- objects?: TMXObjectParsed[];
283
- properties?: TMXPropertiesParsed;
284
- type: string;
285
- }
286
- //#endregion
287
- //#region src/models/tmx/parsed/TMXEmbeddedTilesetParsed.d.ts
288
- export interface TMXEmbeddedTilesetParsed extends TMXEmbeddedTilesetShared {
289
- image: TMXImageParsed;
290
- tiles: TMXTileParsed[];
291
- }
292
- //#endregion
293
- //#region src/models/tmx/parsed/TMXExternalTilesetParsed.d.ts
294
- export interface TMXExternalTilesetParsed extends TMXExternalTilesetShared {}
295
- //#endregion
296
136
  //#region src/models/tmx/parsed/TMXLayerParsed.d.ts
297
- export interface TMXLayerParsed extends TMXLayerShared {
137
+ interface TMXLayerParsed extends TMXGroupLayerShared {
138
+ chunks?: TMXChunkParsed[];
139
+ color?: string;
298
140
  data?: number[];
141
+ draworder?: string;
299
142
  flips?: TMXFlipsParsed[];
143
+ height?: number;
300
144
  image?: TMXImageParsed;
145
+ locked?: number;
301
146
  objects?: TMXObjectParsed[];
302
147
  properties?: TMXPropertiesParsed;
148
+ width?: number;
149
+ x?: number;
150
+ y?: number;
303
151
  }
304
152
  //#endregion
305
153
  //#region src/models/tmx/parsed/TMXGroupLayerParsed.d.ts
306
- export interface TMXGroupLayerParsed extends TMXGroupLayerShared {
307
- layers: TMXLayerParsed[];
154
+ interface TMXGroupLayerParsed extends TMXGroupLayerShared {
155
+ layers: (TMXGroupLayerParsed | TMXLayerParsed)[];
308
156
  properties?: TMXPropertiesParsed;
309
157
  }
310
158
  //#endregion
311
159
  //#region src/models/tmx/parsed/TMXTilesetParsed.d.ts
312
- export type TMXTilesetParsed = TMXEmbeddedTilesetParsed | TMXExternalTilesetParsed;
160
+ type TMXTilesetParsed = TMXEmbeddedTilesetParsed | TMXExternalTilesetParsed;
313
161
  //#endregion
314
162
  //#region src/models/tmx/parsed/TMXMapParsed.d.ts
315
- export declare class TMXMapParsed extends TMXMapShared {
163
+ export declare class TMXMapParsed {
164
+ backgroundcolor?: string;
165
+ compressionlevel?: number;
316
166
  editorsettings: TMXEditorSettingsParsed;
167
+ height: number;
168
+ hexsidelength?: number;
169
+ infinite: number;
317
170
  layers: (TMXGroupLayerParsed | TMXLayerParsed)[];
171
+ nextlayerid: number;
172
+ nextobjectid: number;
173
+ orientation: string;
174
+ parallaxoriginx?: number;
175
+ parallaxoriginy?: number;
318
176
  properties: TMXPropertiesParsed;
177
+ renderorder: string;
178
+ staggeraxis?: string;
179
+ staggerindex?: string;
180
+ tiledversion: string;
181
+ tileheight: number;
319
182
  tilesets: TMXTilesetParsed[];
320
- constructor(init?: Partial<TMXMapParsed>);
183
+ tilewidth: number;
184
+ version: number;
185
+ width: number;
321
186
  }
322
187
  //#endregion
323
188
  //#region src/models/tmx/parsed/TMXParsed.d.ts
@@ -327,59 +192,9 @@ export declare class TMXParsed {
327
192
  }
328
193
  //#endregion
329
194
  //#region src/parseTmx.d.ts
330
- export declare const parseTmx: (xmlString: string, translateFlips?: boolean) => Promise<TMXParsed>;
331
- //#endregion
332
- //#region src/services/checkIsExternalTileset.d.ts
333
- export declare const checkIsExternalTileset: (tileset: TMXEmbeddedTilesetShared | TMXExternalTilesetShared) => tileset is TMXExternalTilesetShared;
334
- //#endregion
335
- //#region src/services/checkIsTMXEmbeddedTilesetNode.d.ts
336
- export declare const checkIsTMXEmbeddedTilesetNode: (node: TMXDataNode | TMXEmbeddedTilesetNode) => node is TMXEmbeddedTilesetNode;
337
- //#endregion
338
- //#region src/services/cloneNodeWithType.d.ts
339
- export declare const cloneNodeWithType: <TParsed>(node: BaseTMXNode<unknown>) => TParsed;
340
- //#endregion
341
- //#region src/services/decodeTileData.d.ts
342
- export declare const decodeTileData: (nodeData: TMXDataNode | TMXEmbeddedTilesetNode) => Promise<number[]>;
343
- //#endregion
344
- //#region src/services/getDecompressedBytes.d.ts
345
- export declare const getDecompressedBytes: (bytes: Uint8Array<ArrayBuffer>, compression: Compression.Gzip | Compression.Zlib) => Promise<Uint8Array<ArrayBuffer>>;
346
- //#endregion
347
- //#region src/services/parseFlips.d.ts
348
- export declare const parseFlips: (gid: number) => TMXFlipsParsed;
349
- //#endregion
350
- //#region src/services/parseLayer.d.ts
351
- export declare const parseLayer: (node: TMXLayerNode) => TMXLayerParsed;
352
- //#endregion
353
- //#region src/services/parseNode.d.ts
354
- export declare const parseNode: <TNode extends TMXGroupLayerNode | TMXLayerNode, TParsedNode = TNode extends TMXLayerNode ? TMXLayerParsed : TMXGroupLayerParsed>(node: TNode, tileCount: number, translateFlips: boolean) => Promise<TParsedNode>;
355
- //#endregion
356
- //#region src/services/parseObject.d.ts
357
- export declare const parseObject: (node: TMXObjectNode) => TMXObjectParsed;
358
- //#endregion
359
- //#region src/services/parseObjectShape.d.ts
360
- export declare const parseObjectShape: (node: TMXObjectNode) => Shape;
361
- //#endregion
362
- //#region src/services/parseProperties.d.ts
363
- export declare const parseProperties: (properties: TMXPropertiesElement[]) => TMXPropertiesParsed;
364
- //#endregion
365
- //#region src/services/parseTile.d.ts
366
- export declare const parseTile: (node: TMXTileNode) => TMXTileParsed;
367
- //#endregion
368
- //#region src/services/parseTileId.d.ts
369
- export declare const parseTileId: (gid: number) => number;
370
- //#endregion
371
- //#region src/services/parseTileLayer.d.ts
372
- export declare const parseTileLayer: (node: TMXLayerNode, tileCount: number, translateFlips: boolean) => Promise<TMXLayerParsed>;
195
+ export declare const parseTmx: (xmlString: string, translateFlips?: boolean) => ResultAsync<TMXParsed, Error>;
373
196
  //#endregion
374
197
  //#region src/services/parseTileset.d.ts
375
- export declare const parseTileset: (node: TMXTilesetNode) => TMXTilesetParsed;
376
- //#endregion
377
- //#region src/services/parseXmlString.d.ts
378
- export declare const parseXmlString: <T extends object>(xmlString: string) => Promise<T>;
379
- //#endregion
380
- //#region src/services/parseXmlValue.d.ts
381
- export declare const parseXmlValue: (value: string) => boolean | number | string;
198
+ export declare const parseTileset: (xmlString: string) => Result<TMXEmbeddedTilesetParsed, Error>;
382
199
  //#endregion
383
- //#region src/services/unpackTileBytes.d.ts
384
- export declare const unpackTileBytes: (bytes: Uint8Array) => number[];
385
- //#endregion
200
+ export type { TMXAnimationFrameParsed, TMXAnimationParsed, TMXChunkParsed, TMXEditorSettingsParsed, TMXEmbeddedTilesetParsed, TMXExportParsed, TMXExternalTilesetParsed, TMXFlipsParsed, TMXGroupLayerParsed, TMXImageParsed, TMXLayerParsed, TMXObjectParsed, TMXPropertiesParsed, TMXPropertyParsed, TMXTileParsed, TMXTilesetParsed };