parse-tmx 2.34.0 → 2.34.2

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
@@ -144,13 +144,14 @@ declare enum Flipped {
144
144
  Horizontally = 2147483648
145
145
  }
146
146
  declare const Flippeds: ReadonlySet<Flipped>;
147
- declare const getDecompressedBytes: (bytes: Uint8Array, compression: Compression.Gzip | Compression.Zlib) => Promise<Uint8Array>;
148
- declare const isExternalTileset: (tileset: TMXEmbeddedTilesetShared | TMXExternalTilesetShared) => tileset is TMXExternalTilesetShared;
149
147
  declare class BaseTMXNode<T> {
150
148
  #private;
151
149
  [key: string]: unknown;
152
150
  $: T;
153
151
  }
152
+ declare const cloneNodeWithType: <TParsed>(node: BaseTMXNode<unknown>) => TParsed;
153
+ declare const getDecompressedBytes: (bytes: Uint8Array, compression: Compression.Gzip | Compression.Zlib) => Promise<Uint8Array>;
154
+ declare const isExternalTileset: (tileset: TMXEmbeddedTilesetShared | TMXExternalTilesetShared) => tileset is TMXExternalTilesetShared;
154
155
  type TMXNode<T, TChildNode extends BaseTMXNode<unknown> | undefined = undefined> = BaseTMXNode<T> & {
155
156
  $$: TChildNode extends undefined ? undefined : TChildNode[];
156
157
  };
@@ -244,4 +245,4 @@ declare enum TMXNodeType {
244
245
  Tileset = "tileset"
245
246
  }
246
247
  interface TMXExportParsed extends TMXExportShared {}
247
- export { BaseTMXNode, Compression, Encoding, Flipped, Flippeds, Shape, TMX, TMXBaseTilesetShared, TMXDataNode, TMXEditorSettingsNode, TMXEditorSettingsParsed, TMXEmbeddedTilesetNode, TMXEmbeddedTilesetParsed, TMXEmbeddedTilesetShared, TMXExportNode, TMXExportParsed, TMXExportShared, TMXExternalTilesetNode, TMXExternalTilesetParsed, TMXExternalTilesetShared, TMXFlipsParsed, TMXGroupLayerNode, TMXGroupLayerParsed, TMXGroupLayerShared, TMXImageNode, TMXImageParsed, TMXImageShared, TMXLayerNode, TMXLayerParsed, TMXLayerShared, TMXMapNode, TMXMapParsed, TMXMapShared, TMXNode, TMXNodeType, TMXObjectNode, TMXObjectParsed, TMXObjectShared, TMXParsed, TMXPropertiesNode, TMXPropertiesParsed, TMXPropertyNode, TMXTileNode, TMXTileParsed, TMXTileShared, TMXTilesetNode, TMXTilesetParsed, getDecompressedBytes, isExternalTileset, isTMXEmbeddedTilesetNode, parseFlips, parseGroup, parseLayer, parseNode, parseObject, parseObjectShape, parseProperties, parseTile, parseTileId, parseTileLayer, parseTileset, parseTmx, parseXmlString, parseXmlValue, unpackTileBytes };
248
+ export { BaseTMXNode, Compression, Encoding, Flipped, Flippeds, Shape, TMX, TMXBaseTilesetShared, TMXDataNode, TMXEditorSettingsNode, TMXEditorSettingsParsed, TMXEmbeddedTilesetNode, TMXEmbeddedTilesetParsed, TMXEmbeddedTilesetShared, TMXExportNode, TMXExportParsed, TMXExportShared, TMXExternalTilesetNode, TMXExternalTilesetParsed, TMXExternalTilesetShared, TMXFlipsParsed, TMXGroupLayerNode, TMXGroupLayerParsed, TMXGroupLayerShared, TMXImageNode, TMXImageParsed, TMXImageShared, TMXLayerNode, TMXLayerParsed, TMXLayerShared, TMXMapNode, TMXMapParsed, TMXMapShared, TMXNode, TMXNodeType, TMXObjectNode, TMXObjectParsed, TMXObjectShared, TMXParsed, TMXPropertiesNode, TMXPropertiesParsed, TMXPropertyNode, TMXTileNode, TMXTileParsed, TMXTileShared, TMXTilesetNode, TMXTilesetParsed, cloneNodeWithType, getDecompressedBytes, isExternalTileset, isTMXEmbeddedTilesetNode, parseFlips, parseGroup, parseLayer, parseNode, parseObject, parseObjectShape, parseProperties, parseTile, parseTileId, parseTileLayer, parseTileset, parseTmx, parseXmlString, parseXmlValue, unpackTileBytes };
package/dist/index.js CHANGED
@@ -83,10 +83,14 @@ var TMXParsed = class {
83
83
  if (map) this.map = map;
84
84
  }
85
85
  };
86
+ const cloneNodeWithType = (node) => {
87
+ const parsed = structuredClone(node.$);
88
+ parsed.type = node["#name"];
89
+ return parsed;
90
+ };
86
91
  const parseGroup = async (node, expectedCount, translateFlips) => {
87
- const { $, $$ } = node;
88
- const group = structuredClone($);
89
- group.type = node["#name"];
92
+ const { $$ } = node;
93
+ const group = cloneNodeWithType(node);
90
94
  group.layers = await Promise.all($$.map((l) => parseNode(l, expectedCount, translateFlips)));
91
95
  return group;
92
96
  };
@@ -148,9 +152,8 @@ const parseObject = (node) => {
148
152
  return object;
149
153
  };
150
154
  const parseLayer = (node) => {
151
- const { $, image, object, properties } = node;
152
- const layer = structuredClone($);
153
- layer.type = node["#name"];
155
+ const { image, object, properties } = node;
156
+ const layer = cloneNodeWithType(node);
154
157
  layer.visible = 1;
155
158
  if (image) layer.image = structuredClone(takeOne(image).$);
156
159
  if (object) layer.objects = object.map((o) => parseObject(o));
@@ -185,8 +188,7 @@ const unpackTileBytes = (bytes, expectedCount) => {
185
188
  const parseTileLayer = async (node, expectedCount, translateFlips) => {
186
189
  const { data, properties } = node;
187
190
  if (!data) throw new Error("TMXLayer data corrupted!");
188
- const layer = structuredClone(node.$);
189
- layer.type = node["#name"];
191
+ const layer = cloneNodeWithType(node);
190
192
  if (properties) layer.properties = parseProperties(properties);
191
193
  const nodeData = takeOne(data);
192
194
  if (isTMXEmbeddedTilesetNode(nodeData)) layer.data = nodeData.tile?.map(({ $ }) => $.gid ?? 0) ?? [];
@@ -216,12 +218,9 @@ const parseTileLayer = async (node, expectedCount, translateFlips) => {
216
218
  }
217
219
  }
218
220
  if (translateFlips) {
219
- layer.flips = [];
220
221
  layer.data ??= [];
221
- for (const gid of layer.data) {
222
- layer.flips.push(parseFlips(gid));
223
- layer.data.push(parseTileId(gid));
224
- }
222
+ layer.flips = layer.data.map((gid) => parseFlips(gid));
223
+ layer.data = layer.data.map((gid) => parseTileId(gid));
225
224
  }
226
225
  return layer;
227
226
  };
@@ -62139,4 +62138,4 @@ var BaseTMXNode = class {
62139
62138
  $;
62140
62139
  #name;
62141
62140
  };
62142
- export { BaseTMXNode, Compression, Encoding, Flipped, Flippeds, Shape, TMXMapParsed, TMXMapShared, TMXNodeType, TMXParsed, getDecompressedBytes, isExternalTileset, isTMXEmbeddedTilesetNode, parseFlips, parseGroup, parseLayer, parseNode, parseObject, parseObjectShape, parseProperties, parseTile, parseTileId, parseTileLayer, parseTileset, parseTmx, parseXmlString, parseXmlValue, unpackTileBytes };
62141
+ export { BaseTMXNode, Compression, Encoding, Flipped, Flippeds, Shape, TMXMapParsed, TMXMapShared, TMXNodeType, TMXParsed, cloneNodeWithType, getDecompressedBytes, isExternalTileset, isTMXEmbeddedTilesetNode, parseFlips, parseGroup, parseLayer, parseNode, parseObject, parseObjectShape, parseProperties, parseTile, parseTileId, parseTileLayer, parseTileset, parseTmx, parseXmlString, parseXmlValue, unpackTileBytes };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "parse-tmx",
3
- "version": "2.34.0",
3
+ "version": "2.34.2",
4
4
  "description": "A parser for tmx.",
5
5
  "keywords": [
6
6
  "game-development",
@@ -45,19 +45,19 @@
45
45
  "typecheck": "tsgo"
46
46
  },
47
47
  "dependencies": {
48
- "@esposter/shared": "2.34.0",
49
- "@esposter/xml2js": "2.34.0",
48
+ "@esposter/shared": "2.34.2",
49
+ "@esposter/xml2js": "2.34.2",
50
50
  "data-urls": "^7.0.0",
51
51
  "dayjs": "^1.11.21"
52
52
  },
53
53
  "devDependencies": {
54
- "@esposter/configuration": "2.34.0",
54
+ "@esposter/configuration": "2.34.2",
55
55
  "@types/data-urls": "^3.0.5",
56
56
  "@types/xml2js": "^0.4.14",
57
57
  "ctix": "^2.8.1",
58
58
  "rolldown": "^1.1.4",
59
- "type-fest": "^5.7.0",
59
+ "type-fest": "^5.8.0",
60
60
  "vitest": "^4.1.9"
61
61
  },
62
- "gitHead": "12065cf1c592019d37d715d3c48774d45cbb5456"
62
+ "gitHead": "70032635c47bdf1e55414c7d84c955350f991055"
63
63
  }