parse-tmx 4.3.1 → 4.3.3

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/dist/index.d.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  import { Result, ResultAsync } from "neverthrow";
2
- //#region src/models/Shape.d.ts
3
2
  export declare enum Shape {
4
3
  Ellipse = "ellipse",
5
4
  Point = "point",
@@ -7,26 +6,18 @@ export declare enum Shape {
7
6
  Polyline = "polyline",
8
7
  Rectangle = "rectangle"
9
8
  }
10
- //#endregion
11
- //#region src/models/tmx/parsed/TMXAnimationFrameParsed.d.ts
12
9
  interface TMXAnimationFrameParsed {
13
10
  duration: number;
14
11
  tileid: number;
15
12
  }
16
- //#endregion
17
- //#region src/models/tmx/parsed/TMXAnimationParsed.d.ts
18
13
  interface TMXAnimationParsed {
19
14
  frames: TMXAnimationFrameParsed[];
20
15
  }
21
- //#endregion
22
- //#region src/models/tmx/parsed/TMXFlipsParsed.d.ts
23
16
  interface TMXFlipsParsed {
24
17
  Diagonal: boolean;
25
18
  Horizontal: boolean;
26
19
  Vertical: boolean;
27
20
  }
28
- //#endregion
29
- //#region src/models/tmx/parsed/TMXChunkParsed.d.ts
30
21
  interface TMXChunkParsed {
31
22
  data?: number[];
32
23
  flips?: TMXFlipsParsed[];
@@ -35,19 +26,13 @@ interface TMXChunkParsed {
35
26
  x: number;
36
27
  y: number;
37
28
  }
38
- //#endregion
39
- //#region src/models/tmx/parsed/TMXExportParsed.d.ts
40
29
  interface TMXExportParsed {
41
30
  format: string;
42
31
  target: string;
43
32
  }
44
- //#endregion
45
- //#region src/models/tmx/parsed/TMXEditorSettingsParsed.d.ts
46
33
  interface TMXEditorSettingsParsed {
47
34
  export?: TMXExportParsed;
48
35
  }
49
- //#endregion
50
- //#region src/models/tmx/parsed/TMXImageParsed.d.ts
51
36
  interface TMXImageParsed {
52
37
  format?: string;
53
38
  height: number;
@@ -55,18 +40,12 @@ interface TMXImageParsed {
55
40
  trans?: string;
56
41
  width: number;
57
42
  }
58
- //#endregion
59
- //#region src/models/tmx/parsed/TMXPropertyParsed.d.ts
60
43
  interface TMXPropertyParsed {
61
44
  name: string;
62
45
  properties?: TMXPropertiesParsed;
63
46
  value: boolean | number | string;
64
47
  }
65
- //#endregion
66
- //#region src/models/tmx/parsed/TMXPropertiesParsed.d.ts
67
48
  type TMXPropertiesParsed = TMXPropertyParsed[];
68
- //#endregion
69
- //#region src/models/tmx/parsed/TMXObjectParsed.d.ts
70
49
  interface TMXObjectParsed {
71
50
  flips?: TMXFlipsParsed;
72
51
  gid?: number;
@@ -85,8 +64,6 @@ interface TMXObjectParsed {
85
64
  x: number;
86
65
  y: number;
87
66
  }
88
- //#endregion
89
- //#region src/models/tmx/parsed/TMXTileParsed.d.ts
90
67
  interface TMXTileParsed {
91
68
  animation?: TMXAnimationParsed;
92
69
  id: number;
@@ -97,8 +74,6 @@ interface TMXTileParsed {
97
74
  terrain?: string;
98
75
  type?: string;
99
76
  }
100
- //#endregion
101
- //#region src/models/tmx/parsed/TMXEmbeddedTilesetParsed.d.ts
102
77
  interface TMXEmbeddedTilesetParsed {
103
78
  columns: number;
104
79
  firstgid: number;
@@ -111,14 +86,10 @@ interface TMXEmbeddedTilesetParsed {
111
86
  tiles: TMXTileParsed[];
112
87
  tilewidth: number;
113
88
  }
114
- //#endregion
115
- //#region src/models/tmx/parsed/TMXExternalTilesetParsed.d.ts
116
89
  interface TMXExternalTilesetParsed {
117
90
  firstgid: number;
118
91
  source: string;
119
92
  }
120
- //#endregion
121
- //#region src/models/tmx/shared/TMXGroupLayerShared.d.ts
122
93
  interface TMXGroupLayerShared {
123
94
  class?: string;
124
95
  id: number;
@@ -132,8 +103,6 @@ interface TMXGroupLayerShared {
132
103
  type: string;
133
104
  visible?: number;
134
105
  }
135
- //#endregion
136
- //#region src/models/tmx/parsed/TMXLayerParsed.d.ts
137
106
  interface TMXLayerParsed extends TMXGroupLayerShared {
138
107
  chunks?: TMXChunkParsed[];
139
108
  color?: string;
@@ -149,17 +118,11 @@ interface TMXLayerParsed extends TMXGroupLayerShared {
149
118
  x?: number;
150
119
  y?: number;
151
120
  }
152
- //#endregion
153
- //#region src/models/tmx/parsed/TMXGroupLayerParsed.d.ts
154
121
  interface TMXGroupLayerParsed extends TMXGroupLayerShared {
155
122
  layers: (TMXGroupLayerParsed | TMXLayerParsed)[];
156
123
  properties?: TMXPropertiesParsed;
157
124
  }
158
- //#endregion
159
- //#region src/models/tmx/parsed/TMXTilesetParsed.d.ts
160
125
  type TMXTilesetParsed = TMXEmbeddedTilesetParsed | TMXExternalTilesetParsed;
161
- //#endregion
162
- //#region src/models/tmx/parsed/TMXMapParsed.d.ts
163
126
  export declare class TMXMapParsed {
164
127
  backgroundcolor?: string;
165
128
  compressionlevel?: number;
@@ -184,17 +147,10 @@ export declare class TMXMapParsed {
184
147
  version: number;
185
148
  width: number;
186
149
  }
187
- //#endregion
188
- //#region src/models/tmx/parsed/TMXParsed.d.ts
189
150
  export declare class TMXParsed {
190
151
  map: TMXMapParsed;
191
152
  constructor(map?: TMXMapParsed);
192
153
  }
193
- //#endregion
194
- //#region src/parseTmx.d.ts
195
154
  export declare const parseTmx: (xmlString: string, translateFlips?: boolean) => ResultAsync<TMXParsed, Error>;
196
- //#endregion
197
- //#region src/services/parseTileset.d.ts
198
155
  export declare const parseTileset: (xmlString: string) => Result<TMXEmbeddedTilesetParsed, Error>;
199
- //#endregion
200
156
  export type { TMXAnimationFrameParsed, TMXAnimationParsed, TMXChunkParsed, TMXEditorSettingsParsed, TMXEmbeddedTilesetParsed, TMXExportParsed, TMXExternalTilesetParsed, TMXFlipsParsed, TMXGroupLayerParsed, TMXImageParsed, TMXLayerParsed, TMXObjectParsed, TMXPropertiesParsed, TMXPropertyParsed, TMXTileParsed, TMXTilesetParsed };
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { InvalidOperationError, Operation, exhaustiveGuard, getResult, getResultAsync, normalizeString } from "@esposter/shared";
2
2
  import sax from "sax";
3
- //#region src/models/Shape.ts
3
+ // src/models/Shape.ts
4
4
  let Shape = /* @__PURE__ */ function(Shape) {
5
5
  Shape["Ellipse"] = "ellipse";
6
6
  Shape["Point"] = "point";
@@ -9,8 +9,7 @@ let Shape = /* @__PURE__ */ function(Shape) {
9
9
  Shape["Rectangle"] = "rectangle";
10
10
  return Shape;
11
11
  }({});
12
- //#endregion
13
- //#region src/models/tmx/parsed/TMXMapParsed.ts
12
+ // src/models/tmx/parsed/TMXMapParsed.ts
14
13
  var TMXMapParsed = class {
15
14
  editorsettings = {};
16
15
  height = 0;
@@ -28,16 +27,14 @@ var TMXMapParsed = class {
28
27
  version = 0;
29
28
  width = 0;
30
29
  };
31
- //#endregion
32
- //#region src/models/tmx/parsed/TMXParsed.ts
30
+ // src/models/tmx/parsed/TMXParsed.ts
33
31
  var TMXParsed = class {
34
32
  map;
35
33
  constructor(map = new TMXMapParsed()) {
36
34
  this.map = map;
37
35
  }
38
36
  };
39
- //#endregion
40
- //#region src/models/tmx/TMXTagName.ts
37
+ // src/models/tmx/TMXTagName.ts
41
38
  let TMXTagName = /* @__PURE__ */ function(TMXTagName) {
42
39
  TMXTagName["Animation"] = "animation";
43
40
  TMXTagName["Chunk"] = "chunk";
@@ -63,29 +60,25 @@ let TMXTagName = /* @__PURE__ */ function(TMXTagName) {
63
60
  TMXTagName["Tileset"] = "tileset";
64
61
  return TMXTagName;
65
62
  }({});
66
- //#endregion
67
- //#region src/models/Compression.ts
63
+ // src/models/Compression.ts
68
64
  let Compression = /* @__PURE__ */ function(Compression) {
69
65
  Compression["Gzip"] = "gzip";
70
66
  Compression["Zlib"] = "zlib";
71
67
  return Compression;
72
68
  }({});
73
- //#endregion
74
- //#region src/models/Encoding.ts
69
+ // src/models/Encoding.ts
75
70
  let Encoding = /* @__PURE__ */ function(Encoding) {
76
71
  Encoding["Base64"] = "base64";
77
72
  Encoding["Csv"] = "csv";
78
73
  return Encoding;
79
74
  }({});
80
- //#endregion
81
- //#region src/services/getDecompressedBytes.ts
75
+ // src/services/getDecompressedBytes.ts
82
76
  const getDecompressedBytes = async (bytes, compression) => {
83
77
  const format = compression === "gzip" ? "gzip" : "deflate";
84
78
  const decompressedTileStream = new Blob([bytes]).stream().pipeThrough(new DecompressionStream(format));
85
79
  return new Uint8Array(await new Response(decompressedTileStream).arrayBuffer());
86
80
  };
87
- //#endregion
88
- //#region src/services/unpackTileBytes.ts
81
+ // src/services/unpackTileBytes.ts
89
82
  const unpackTileBytes = (bytes) => {
90
83
  if (bytes.byteLength % Uint32Array.BYTES_PER_ELEMENT !== 0) throw new InvalidOperationError(Operation.Read, "TMXLayer", `expected whole ${Uint32Array.BYTES_PER_ELEMENT}-byte tiles, received ${bytes.byteLength} bytes`);
91
84
  const dataView = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
@@ -93,8 +86,7 @@ const unpackTileBytes = (bytes) => {
93
86
  for (let index = 0; index < tiles.length; index++) tiles[index] = dataView.getUint32(index * Uint32Array.BYTES_PER_ELEMENT, true);
94
87
  return [...tiles];
95
88
  };
96
- //#endregion
97
- //#region src/services/decodeTileData.ts
89
+ // src/services/decodeTileData.ts
98
90
  const CSV_SEPARATOR_CODE_POINT = ",".codePointAt(0) ?? 0;
99
91
  const ZERO_CODE_POINT = "0".codePointAt(0) ?? 0;
100
92
  const NINE_CODE_POINT = "9".codePointAt(0) ?? 0;
@@ -144,19 +136,16 @@ const Flippeds = Object.values(/* @__PURE__ */ function(Flipped) {
144
136
  Flipped[Flipped["Horizontally"] = 2147483648] = "Horizontally";
145
137
  return Flipped;
146
138
  }({})).filter((value) => typeof value === "number");
147
- //#endregion
148
- //#region src/services/parseFlips.ts
139
+ // src/services/parseFlips.ts
149
140
  const parseFlips = (gid) => ({
150
141
  Diagonal: Boolean(gid & 536870912),
151
142
  Horizontal: Boolean(gid & 2147483648),
152
143
  Vertical: Boolean(gid & 1073741824)
153
144
  });
154
- //#endregion
155
- //#region src/services/parseTileId.ts
145
+ // src/services/parseTileId.ts
156
146
  const FLIPPED_MASK = ~Flippeds.reduce((accumulator, flipped) => accumulator | flipped, 0);
157
147
  const parseTileId = (gid) => gid & FLIPPED_MASK;
158
- //#endregion
159
- //#region src/services/assignTileData.ts
148
+ // src/services/assignTileData.ts
160
149
  const assignTileData = async (pending, translateFlips) => {
161
150
  await Promise.all(pending.map(async ({ expectedCount, owner, source }) => {
162
151
  if (source.chunked) return;
@@ -168,8 +157,7 @@ const assignTileData = async (pending, translateFlips) => {
168
157
  } else owner.data = tiles;
169
158
  }));
170
159
  };
171
- //#endregion
172
- //#region src/models/PropertyType.ts
160
+ // src/models/PropertyType.ts
173
161
  let PropertyType = /* @__PURE__ */ function(PropertyType) {
174
162
  PropertyType["Bool"] = "bool";
175
163
  PropertyType["Class"] = "class";
@@ -181,8 +169,7 @@ let PropertyType = /* @__PURE__ */ function(PropertyType) {
181
169
  PropertyType["String"] = "string";
182
170
  return PropertyType;
183
171
  }({});
184
- //#endregion
185
- //#region src/services/closeTmxFrame.ts
172
+ // src/services/closeTmxFrame.ts
186
173
  const parsePropertyValue = (propertyType, value) => {
187
174
  switch (propertyType) {
188
175
  case "bool": return value === "true";
@@ -210,8 +197,7 @@ const closeTmxFrame = (frame) => {
210
197
  default: return;
211
198
  }
212
199
  };
213
- //#endregion
214
- //#region src/services/readTmxAttributes.ts
200
+ // src/services/readTmxAttributes.ts
215
201
  const readTmxAttributes = (attributes, table) => {
216
202
  const values = {};
217
203
  for (const [name, kind] of Object.entries(table)) {
@@ -228,8 +214,7 @@ const readTmxAttributes = (attributes, table) => {
228
214
  }
229
215
  return values;
230
216
  };
231
- //#endregion
232
- //#region src/services/createTmxImage.ts
217
+ // src/services/createTmxImage.ts
233
218
  const imageAttributeKindMap = {
234
219
  format: "string",
235
220
  height: "requiredNumber",
@@ -238,8 +223,7 @@ const imageAttributeKindMap = {
238
223
  width: "requiredNumber"
239
224
  };
240
225
  const createTmxImage = (attributes) => readTmxAttributes(attributes, imageAttributeKindMap);
241
- //#endregion
242
- //#region src/services/openTmxLayer.ts
226
+ // src/services/openTmxLayer.ts
243
227
  const groupAttributeKindMap = {
244
228
  class: "string",
245
229
  id: "requiredNumber",
@@ -287,8 +271,7 @@ const openTmxLayer = (layers, tag, attributes) => {
287
271
  text: ""
288
272
  };
289
273
  };
290
- //#endregion
291
- //#region src/services/openTmxProperties.ts
274
+ // src/services/openTmxProperties.ts
292
275
  const openTmxProperties = (target) => {
293
276
  target.properties ??= [];
294
277
  return {
@@ -297,16 +280,14 @@ const openTmxProperties = (target) => {
297
280
  text: ""
298
281
  };
299
282
  };
300
- //#endregion
301
- //#region src/services/parseEnumAttribute.ts
283
+ // src/services/parseEnumAttribute.ts
302
284
  const parseEnumAttribute = (operation, label, enumObject, value) => {
303
285
  if (value === void 0) return void 0;
304
286
  const enumValue = Object.values(enumObject).find((member) => member === value);
305
287
  if (enumValue !== void 0) return enumValue;
306
288
  throw new InvalidOperationError(Operation.Read, operation, `${value} is not a supported ${label}`);
307
289
  };
308
- //#endregion
309
- //#region src/services/openTmxLayerChild.ts
290
+ // src/services/openTmxLayerChild.ts
310
291
  const gidAttributeKindMap = { gid: "requiredNumber" };
311
292
  const chunkAttributeKindMap = {
312
293
  height: "requiredNumber",
@@ -387,8 +368,7 @@ const openTmxLayerChild = (parent, tag, attributes, context) => {
387
368
  default: return;
388
369
  }
389
370
  };
390
- //#endregion
391
- //#region src/services/openTmxObjectChild.ts
371
+ // src/services/openTmxObjectChild.ts
392
372
  const NUMBER_REGEX = /^[+-]?\d+(?:\.\d+)?$/u;
393
373
  const objectAttributeKindMap = {
394
374
  gid: "number",
@@ -476,8 +456,7 @@ const openTmxObjectChild = (parent, tag, attributes) => {
476
456
  default: return;
477
457
  }
478
458
  };
479
- //#endregion
480
- //#region src/services/openTmxFrame.ts
459
+ // src/services/openTmxFrame.ts
481
460
  const mapAttributeKindMap = {
482
461
  backgroundcolor: "string",
483
462
  compressionlevel: "number",
@@ -699,8 +678,7 @@ const openTmxFrame = (parent, name, attributes, context) => {
699
678
  default: return;
700
679
  }
701
680
  };
702
- //#endregion
703
- //#region src/services/readTmxDocument.ts
681
+ // src/services/readTmxDocument.ts
704
682
  const BYTE_ORDER_MARK_REGEX = /^\uFEFF/u;
705
683
  const toTmxAttributes = (attributes) => Object.fromEntries(Object.entries(attributes).map(([name, attribute]) => [name, typeof attribute === "string" ? attribute : attribute.value]));
706
684
  const readTmxDocument = (xmlString, context) => {
@@ -735,8 +713,7 @@ const readTmxDocument = (xmlString, context) => {
735
713
  parser.write(xmlString.replace(BYTE_ORDER_MARK_REGEX, "")).close();
736
714
  return root;
737
715
  };
738
- //#endregion
739
- //#region src/parseTmx.ts
716
+ // src/parseTmx.ts
740
717
  const parseTmx = (xmlString, translateFlips = false) => {
741
718
  const context = {
742
719
  pending: [],
@@ -748,8 +725,7 @@ const parseTmx = (xmlString, translateFlips = false) => {
748
725
  return new TMXParsed(root.target);
749
726
  }));
750
727
  };
751
- //#endregion
752
- //#region src/services/parseTileset.ts
728
+ // src/services/parseTileset.ts
753
729
  const parseTileset = (xmlString) => getResult(() => readTmxDocument(xmlString, {
754
730
  pending: [],
755
731
  tileCount: 0
@@ -757,5 +733,4 @@ const parseTileset = (xmlString) => getResult(() => readTmxDocument(xmlString, {
757
733
  if (root?.tag !== "tileset") throw new InvalidOperationError(Operation.Read, parseTileset.name, "has no embedded tileset root element");
758
734
  return root.target;
759
735
  }));
760
- //#endregion
761
736
  export { Shape, TMXMapParsed, TMXParsed, parseTileset, parseTmx };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "parse-tmx",
3
- "version": "4.3.1",
3
+ "version": "4.3.3",
4
4
  "description": "A parser for tmx.",
5
5
  "keywords": [
6
6
  "game-development",
@@ -50,15 +50,15 @@
50
50
  "typecheck": "tsc"
51
51
  },
52
52
  "dependencies": {
53
- "@esposter/shared": "4.3.1",
53
+ "@esposter/shared": "4.3.3",
54
54
  "neverthrow": "^8.2.0",
55
55
  "sax": "^1.6.1"
56
56
  },
57
57
  "devDependencies": {
58
- "@esposter/configuration": "4.3.1",
59
- "@esposter/shared-node": "4.3.1",
58
+ "@esposter/configuration": "4.3.3",
59
+ "@esposter/shared-node": "4.3.3",
60
60
  "@types/sax": "^1.2.7",
61
61
  "tsdown": "^0.23.1"
62
62
  },
63
- "gitHead": "777a39636b789c13af33ed13370246ccf6dbaf31"
63
+ "gitHead": "955bbc130ad9b28877fd4ae8efc73a045141ce01"
64
64
  }