adofai-lib 1.0.5 → 1.0.7

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/LICENSE ADDED
@@ -0,0 +1,9 @@
1
+ MIT License
2
+
3
+ Copyright (c) V0W4N <vowan.denisov[at]gmail.com> (sindresorhus.com)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6
+
7
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/README.md CHANGED
@@ -12,7 +12,7 @@ npm install adofai-lib
12
12
  ## Usage
13
13
 
14
14
  ```typescript
15
- import { LevelDict } from 'adofai-lib';
15
+ import LevelDict, {LevelJSON, Action} from 'adofai-lib';
16
16
 
17
17
  // Load an ADOFAI level file
18
18
  const level = new LevelDict('path/to/level.adofai');
@@ -26,8 +26,23 @@ const relativeAngles = level.getAnglesRelative();
26
26
  // Get all actions in the level
27
27
  const actions = level.getActions();
28
28
 
29
- // Get all decorations in the level
30
- const decorations = level.getDecorations();
29
+ // Get actions with a filter condition
30
+ const twirlActions = level.getActions(action => action.eventType === 'Twirl');
31
+
32
+ // Get all floor decorations
33
+ const floorDecorations = level.getDecorations();
34
+
35
+ // Get all decorations including non-floor decorations
36
+ const allDecorations = level.getDecorations(() => true, true);
37
+
38
+ // Get decorations with a filter condition
39
+ const backgroundDecos = level.getDecorations(deco => deco.decorationType === 'Background');
40
+
41
+ // Get tiles in a range
42
+ const tilesInRange = level.getTiles(1, 4);
43
+
44
+ // Get tiles at specific indices
45
+ const specificTiles = level.getTiles([0, 2, 4]);
31
46
 
32
47
  // Modify the level...
33
48
 
@@ -42,6 +57,7 @@ level.writeToFile('path/to/output.adofai');
42
57
  - Get relative angles between tiles
43
58
  - Manage actions and decorations
44
59
  - Support for both angle-based and path-based level formats
60
+ - Flexible tile, action, and decoration retrieval with filtering options
45
61
 
46
62
  ## API Reference
47
63
 
@@ -60,12 +76,46 @@ new LevelDict(filename?: string, encoding?: string)
60
76
 
61
77
  #### Methods
62
78
 
79
+ ##### Tile Management
63
80
  - `getAngles()`: Returns an array of all tile angles
64
81
  - `setAngles(angles: number[])`: Sets the angles for all tiles
65
82
  - `getAnglesRelative(ignoreTwirls?: boolean, padMidspins?: boolean)`: Returns relative angles between tiles
66
- - `getActions(condition?: (action: Action) => boolean)`: Returns all actions matching the condition
67
- - `getDecorations(condition?: (decoration: Decoration) => boolean)`: Returns all decorations matching the condition
83
+ - `getTiles(start: number, end: number)`: Returns tiles in the specified range
84
+ - `getTiles(indices: number[])`: Returns tiles at the specified indices
85
+
86
+ ##### Action Management
87
+ - `getActions(condition?: (action: Action) => boolean)`: Returns actions matching the condition
88
+ - `setActions(actions: Action[])`: Sets all actions in the level
89
+ - `insertAction(floor: number, action: Action)`: Inserts an action at the specified floor
90
+ - `removeAction(floor: number, actionIndex: number)`: Removes an action at the specified floor and index
91
+ - `updateAction(floor: number, actionIndex: number, newAction: Partial<Action>)`: Updates an action
92
+ - `insertActionAt(floor: number, actionIndex: number, action: Action)`: Inserts an action at a specific position
93
+
94
+ ##### Decoration Management
95
+ - `getDecorations(condition?: (decoration: Decoration) => boolean, includeNonFloor?: boolean)`: Returns decorations matching the condition
96
+ - `setDecorations(decorations: Decoration[])`: Sets all decorations in the level
97
+ - `insertDecoration(floor: number | undefined, decoration: Decoration)`: Inserts a decoration
98
+ - `removeDecoration(floor: number | undefined, decorationIndex: number)`: Removes a decoration
99
+ - `updateDecoration(floor: number | undefined, decorationIndex: number, newDecoration: Partial<Decoration>)`: Updates a decoration
100
+ - `insertDecorationAt(floor: number | undefined, decorationIndex: number, decoration: Decoration)`: Inserts a decoration at a specific position
101
+
102
+ ##### File Operations
68
103
  - `writeToFile(filename?: string)`: Saves the level to a file
104
+ - `toJSON()`: Returns the level data as a JSON object
105
+ - `static fromJSON(json: string)`: Creates a LevelDict instance from JSON data
106
+
107
+ ##### Utility Methods
108
+ - `copy()`: Creates a deep copy of the level
109
+ - `compareWith(other: LevelDict)`: Compares two levels and returns differences
110
+
111
+ ## Error Handling
112
+
113
+ The library includes comprehensive error handling for invalid operations:
114
+ - Invalid tile indices
115
+ - Invalid floor indices
116
+ - Invalid action/decoration indices
117
+ - Invalid range selections
118
+ - Invalid file operations
69
119
 
70
120
  ## License
71
121
 
@@ -1,4 +1,4 @@
1
- import { Action, Decoration } from './types';
1
+ import { Action, Decoration, Settings, Tile, LevelJSON } from './types/index.js';
2
2
  export default class LevelDict {
3
3
  private filename;
4
4
  private encoding;
@@ -11,8 +11,150 @@ export default class LevelDict {
11
11
  getAngles(): number[];
12
12
  setAngles(angles: number[]): void;
13
13
  getAnglesRelative(ignoreTwirls?: boolean, padMidspins?: boolean): number[];
14
+ /**
15
+ * Gets actions from the level
16
+ * @param condition Filter condition for actions
17
+ * @returns Array of actions
18
+ */
14
19
  getActions(condition?: (action: Action) => boolean): Action[];
15
- getDecorations(condition?: (decoration: Decoration) => boolean): Decoration[];
20
+ /**
21
+ * Gets decorations from the level
22
+ * @param condition Filter condition for decorations
23
+ * @param includeNonFloor Whether to include non-floor decorations
24
+ * @returns Array of decorations
25
+ */
26
+ getDecorations(condition?: (decoration: Decoration) => boolean, includeNonFloor?: boolean): Decoration[];
27
+ /**
28
+ * Gets tiles from the level
29
+ * @param start Start index for range selection, or array of specific indices
30
+ * @param end End index for range selection (exclusive)
31
+ * @returns Array of tiles at the specified indices
32
+ * @throws Error if any index is invalid
33
+ */
34
+ getTiles(start: number, end: number): Tile[];
35
+ /**
36
+ * Gets tiles from the level
37
+ * @param indices Array of specific indices
38
+ * @returns Array of tiles at the specified indices
39
+ * @throws Error if any index is invalid
40
+ */
41
+ getTiles(indices: number[]): Tile[];
16
42
  writeToFile(filename?: string): void;
43
+ toJSON(): LevelJSON;
44
+ static fromJSON(json: string): LevelDict;
45
+ compareWith(other: LevelDict): {
46
+ differentTiles: number[];
47
+ differentActions: number[];
48
+ differentDecorations: number[];
49
+ };
50
+ /**
51
+ * Inserts a new tile at the specified index. The new tile will be inserted BEFORE the specified index,
52
+ * pushing all existing tiles at and after that index forward.
53
+ * @param index The index where the new tile will be inserted (before this index)
54
+ * @param angle The angle of the new tile
55
+ * @throws Error if index is invalid (negative or greater than tiles.length)
56
+ */
57
+ insertTile(index: number, angle: number): void;
58
+ removeTile(index: number): void;
59
+ copy(): LevelDict;
60
+ setActions(actions: Action[]): void;
61
+ /**
62
+ * Inserts a new action at the specified floor. The new action will be added to the end of the actions array
63
+ * for that floor.
64
+ * @param floor The floor index where the action will be added
65
+ * @param action The action to insert
66
+ * @throws Error if floor index is invalid
67
+ */
68
+ insertAction(floor: number, action: Action): void;
69
+ removeAction(floor: number, actionIndex: number): void;
70
+ updateAction(floor: number, actionIndex: number, newAction: Partial<Action>): void;
71
+ setDecorations(decorations: Decoration[]): void;
72
+ /**
73
+ * Inserts a new decoration. If floor is specified, the decoration will be added to the end of the decorations array
74
+ * for that floor. If floor is undefined, it will be added to the non-floor decorations.
75
+ * @param floor The floor index where the decoration will be added, or undefined for non-floor decoration
76
+ * @param decoration The decoration to insert
77
+ * @throws Error if floor index is invalid
78
+ */
79
+ insertDecoration(floor: number | undefined, decoration: Decoration): void;
80
+ removeDecoration(floor: number | undefined, decorationIndex: number): void;
81
+ updateDecoration(floor: number | undefined, decorationIndex: number, newDecoration: Partial<Decoration>): void;
82
+ /**
83
+ * Inserts a new action at a specific position in the actions array for a floor.
84
+ * The new action will be inserted BEFORE the specified index.
85
+ * @param floor The floor index
86
+ * @param actionIndex The index where the action will be inserted (before this index)
87
+ * @param action The action to insert
88
+ * @throws Error if floor or action index is invalid
89
+ */
90
+ insertActionAt(floor: number, actionIndex: number, action: Action): void;
91
+ /**
92
+ * Inserts a new decoration at a specific position in the decorations array for a floor.
93
+ * The new decoration will be inserted BEFORE the specified index.
94
+ * @param floor The floor index, or undefined for non-floor decoration
95
+ * @param decorationIndex The index where the decoration will be inserted (before this index)
96
+ * @param decoration The decoration to insert
97
+ * @throws Error if floor or decoration index is invalid
98
+ */
99
+ insertDecorationAt(floor: number | undefined, decorationIndex: number, decoration: Decoration): void;
100
+ /**
101
+ * Gets the current settings object
102
+ * @returns A copy of the current settings
103
+ */
104
+ getSettings(): Settings;
105
+ /**
106
+ * Sets all settings at once
107
+ * @param settings The new settings object
108
+ */
109
+ setSettings(settings: Settings): void;
110
+ /**
111
+ * Updates specific settings while preserving others
112
+ * @param settings Partial settings object containing only the properties to update
113
+ */
114
+ updateSettings(settings: Partial<Settings>): void;
115
+ /**
116
+ * Gets a specific setting value
117
+ * @param key The setting key to retrieve
118
+ * @returns The value of the setting, or undefined if not found
119
+ */
120
+ getSetting<K extends keyof Settings>(key: K): Settings[K] | undefined;
121
+ /**
122
+ * Sets a specific setting value
123
+ * @param key The setting key to set
124
+ * @param value The new value for the setting
125
+ */
126
+ setSetting<K extends keyof Settings>(key: K, value: Settings[K]): void;
127
+ /**
128
+ * Removes a specific setting
129
+ * @param key The setting key to remove
130
+ * @returns true if the setting was removed, false if it didn't exist
131
+ */
132
+ removeSetting<K extends keyof Settings>(key: K): boolean;
133
+ /**
134
+ * Checks if a specific setting exists
135
+ * @param key The setting key to check
136
+ * @returns true if the setting exists, false otherwise
137
+ */
138
+ hasSetting<K extends keyof Settings>(key: K): boolean;
139
+ /**
140
+ * Gets all setting keys
141
+ * @returns Array of all setting keys
142
+ */
143
+ getSettingKeys(): (keyof Settings)[];
144
+ /**
145
+ * Resets all settings to their default values
146
+ */
147
+ resetSettings(): void;
148
+ /**
149
+ * Merges new settings with existing ones
150
+ * @param settings Settings to merge
151
+ * @param deep Whether to perform a deep merge (default: false)
152
+ */
153
+ mergeSettings(settings: Settings, deep?: boolean): void;
154
+ /**
155
+ * Helper method for deep merging objects
156
+ * @private
157
+ */
158
+ private deepMerge;
17
159
  }
18
160
  //# sourceMappingURL=LevelDict.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LevelDict.d.ts","sourceRoot":"","sources":["../src/LevelDict.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,UAAU,EAA6C,MAAM,SAAS,CAAC;AAGxF,MAAM,CAAC,OAAO,OAAO,SAAS;IAC5B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,QAAQ,CAAW;gBAEf,QAAQ,GAAE,MAAW,EAAE,QAAQ,GAAE,cAAwB;IAuDrE,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,WAAW;IAcZ,SAAS,IAAI,MAAM,EAAE;IAIrB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAcjC,iBAAiB,CAAC,YAAY,GAAE,OAAe,EAAE,WAAW,GAAE,OAAe,GAAG,MAAM,EAAE;IAuCxF,UAAU,CAAC,SAAS,GAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAoB,GAAG,MAAM,EAAE;IAIzE,cAAc,CAAC,SAAS,GAAE,CAAC,UAAU,EAAE,UAAU,KAAK,OAAoB,GAAG,UAAU,EAAE;IAKzF,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;CAU5C"}
1
+ {"version":3,"file":"LevelDict.d.ts","sourceRoot":"","sources":["../src/LevelDict.ts"],"names":[],"mappings":"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"}
package/dist/LevelDict.js CHANGED
@@ -1,13 +1,13 @@
1
1
  import * as fs from 'fs';
2
- import * as utils from './utils/levelUtils';
3
- import { InvalidLevelDictException } from './types';
2
+ import * as utils from './utils/levelUtils.js';
3
+ import { InvalidLevelDictException } from './types/index.js';
4
4
  export default class LevelDict {
5
5
  constructor(filename = '', encoding = 'utf-8') {
6
- this.filename = filename;
7
- this.encoding = encoding;
8
6
  this.tiles = [];
9
7
  this.nonFloorDecos = [];
10
8
  this.settings = {};
9
+ this.filename = filename;
10
+ this.encoding = encoding;
11
11
  const leveldict = this.getFileDict(filename);
12
12
  if (!leveldict.actions || !leveldict.settings || (!leveldict.angleData && !leveldict.pathData)) {
13
13
  throw new InvalidLevelDictException(`The provided .adofai file is invalid. (missing: ${!leveldict.actions ? 'actions' : ''} ${!leveldict.settings ? 'settings' : ''} ${!leveldict.angleData && !leveldict.pathData ? 'angleData or pathData' : ''})`);
@@ -89,7 +89,7 @@ export default class LevelDict {
89
89
  getAnglesRelative(ignoreTwirls = false, padMidspins = false) {
90
90
  const absangles = this.getAngles();
91
91
  if (!ignoreTwirls) {
92
- const twirls = this.getActions(action => action.eventType === 'Twirl')
92
+ const twirls = this.getActions((action) => action.eventType === 'Twirl')
93
93
  .map(event => event.floor);
94
94
  for (const twirl of twirls.reverse()) {
95
95
  absangles.splice(twirl, absangles.length - twirl, ...absangles.slice(twirl).map(angle => angle !== 999 ? (2 * absangles[twirl - 1] - angle) % 360 : 999));
@@ -113,12 +113,40 @@ export default class LevelDict {
113
113
  return ((absangles[idx - 1] - angle + 180 - 1) % 360) + 1;
114
114
  });
115
115
  }
116
+ /**
117
+ * Gets actions from the level
118
+ * @param condition Filter condition for actions
119
+ * @returns Array of actions
120
+ */
116
121
  getActions(condition = () => true) {
117
- return this.tiles.flatMap(tile => tile.actions.filter(condition));
122
+ return this.tiles.flatMap(tile => tile.actions).filter(condition);
118
123
  }
119
- getDecorations(condition = () => true) {
120
- return this.tiles.flatMap(tile => tile.decorations.filter(condition))
121
- .concat(this.nonFloorDecos.filter(condition));
124
+ /**
125
+ * Gets decorations from the level
126
+ * @param condition Filter condition for decorations
127
+ * @param includeNonFloor Whether to include non-floor decorations
128
+ * @returns Array of decorations
129
+ */
130
+ getDecorations(condition = () => true, includeNonFloor = false) {
131
+ return includeNonFloor ?
132
+ this.tiles.flatMap(tile => tile.decorations).filter(condition)
133
+ .concat(this.nonFloorDecos.filter(condition))
134
+ : this.tiles.flatMap(tile => tile.decorations).filter(condition);
135
+ }
136
+ getTiles(startOrIndices, end) {
137
+ // Handle range selection
138
+ if (typeof startOrIndices === 'number' && end !== undefined) {
139
+ if (startOrIndices < 0 || end > this.tiles.length || startOrIndices >= end) {
140
+ throw new Error('Invalid range indices');
141
+ }
142
+ return this.tiles.slice(startOrIndices, end);
143
+ }
144
+ // Handle specific indices selection
145
+ const indices = startOrIndices;
146
+ if (!indices.every(i => i >= 0 && i < this.tiles.length)) {
147
+ throw new Error('Invalid tile index');
148
+ }
149
+ return indices.map(i => this.tiles[i]);
122
150
  }
123
151
  writeToFile(filename) {
124
152
  const final = {
@@ -130,5 +158,393 @@ export default class LevelDict {
130
158
  const outputFile = filename || this.filename;
131
159
  fs.writeFileSync(outputFile, JSON.stringify(final, null, 4), { encoding: this.encoding });
132
160
  }
161
+ toJSON() {
162
+ return {
163
+ angleData: this.getAngles(),
164
+ settings: this.settings,
165
+ actions: this.getActions(),
166
+ decorations: this.getDecorations()
167
+ };
168
+ }
169
+ static fromJSON(json) {
170
+ const data = JSON.parse(json);
171
+ const level = new LevelDict();
172
+ level.tiles = data.angleData.map((angle) => ({
173
+ angle,
174
+ actions: [],
175
+ decorations: []
176
+ }));
177
+ level.settings = data.settings;
178
+ level.setActions(data.actions);
179
+ level.setDecorations(data.decorations);
180
+ return level;
181
+ }
182
+ compareWith(other) {
183
+ var _a, _b;
184
+ const result = {
185
+ differentTiles: [],
186
+ differentActions: [],
187
+ differentDecorations: []
188
+ };
189
+ // Compare tiles
190
+ const maxTiles = Math.max(this.tiles.length, other.tiles.length);
191
+ for (let i = 0; i < maxTiles; i++) {
192
+ if (((_a = this.tiles[i]) === null || _a === void 0 ? void 0 : _a.angle) !== ((_b = other.tiles[i]) === null || _b === void 0 ? void 0 : _b.angle)) {
193
+ result.differentTiles.push(i);
194
+ }
195
+ }
196
+ // Compare actions
197
+ const thisActions = JSON.stringify(this.getActions());
198
+ const otherActions = JSON.stringify(other.getActions());
199
+ if (thisActions !== otherActions) {
200
+ result.differentActions = this.getActions()
201
+ .map((action, i) => other.getActions()[i] !== action ? i : -1)
202
+ .filter(i => i !== -1);
203
+ }
204
+ // Compare decorations
205
+ const thisDecos = JSON.stringify(this.getDecorations());
206
+ const otherDecos = JSON.stringify(other.getDecorations());
207
+ if (thisDecos !== otherDecos) {
208
+ result.differentDecorations = this.getDecorations()
209
+ .map((deco, i) => other.getDecorations()[i] !== deco ? i : -1)
210
+ .filter(i => i !== -1);
211
+ }
212
+ return result;
213
+ }
214
+ /**
215
+ * Inserts a new tile at the specified index. The new tile will be inserted BEFORE the specified index,
216
+ * pushing all existing tiles at and after that index forward.
217
+ * @param index The index where the new tile will be inserted (before this index)
218
+ * @param angle The angle of the new tile
219
+ * @throws Error if index is invalid (negative or greater than tiles.length)
220
+ */
221
+ insertTile(index, angle) {
222
+ if (index < 0 || index > this.tiles.length) {
223
+ throw new Error('Invalid tile index');
224
+ }
225
+ this.tiles.splice(index, 0, {
226
+ angle,
227
+ actions: [],
228
+ decorations: []
229
+ });
230
+ // Shift all actions and decorations after the inserted tile
231
+ this.tiles.forEach(tile => {
232
+ tile.actions = tile.actions.map(action => {
233
+ if (action.floor && action.floor >= index) {
234
+ return { ...action, floor: action.floor + 1 };
235
+ }
236
+ return action;
237
+ });
238
+ tile.decorations = tile.decorations.map(deco => {
239
+ if (deco.floor && deco.floor >= index) {
240
+ return { ...deco, floor: deco.floor + 1 };
241
+ }
242
+ return deco;
243
+ });
244
+ });
245
+ }
246
+ removeTile(index) {
247
+ if (index < 0 || index >= this.tiles.length) {
248
+ throw new Error('Invalid tile index');
249
+ }
250
+ this.tiles.splice(index, 1);
251
+ // Remove actions and decorations on the deleted tile
252
+ this.tiles.forEach(tile => {
253
+ tile.actions = tile.actions.filter(action => action.floor !== index);
254
+ tile.decorations = tile.decorations.filter(deco => !('floor' in deco) || deco.floor !== index);
255
+ });
256
+ // Shift all actions and decorations after the removed tile
257
+ this.tiles.forEach(tile => {
258
+ tile.actions = tile.actions.map(action => {
259
+ if (action.floor && action.floor > index) {
260
+ return { ...action, floor: action.floor - 1 };
261
+ }
262
+ return action;
263
+ });
264
+ tile.decorations = tile.decorations.map((deco) => {
265
+ if (deco.floor && deco.floor > index) {
266
+ return { ...deco, floor: deco.floor - 1 };
267
+ }
268
+ return deco;
269
+ });
270
+ });
271
+ }
272
+ copy() {
273
+ const copy = new LevelDict();
274
+ copy.filename = this.filename;
275
+ copy.encoding = this.encoding;
276
+ copy.tiles = this.tiles.map(tile => ({
277
+ angle: tile.angle,
278
+ actions: tile.actions.map(action => ({ ...action })),
279
+ decorations: tile.decorations.map(deco => ({ ...deco }))
280
+ }));
281
+ copy.nonFloorDecos = this.nonFloorDecos.map(deco => ({ ...deco }));
282
+ copy.settings = { ...this.settings };
283
+ return copy;
284
+ }
285
+ // Action manipulation methods
286
+ setActions(actions) {
287
+ // Clear existing actions
288
+ this.tiles.forEach(tile => tile.actions = []);
289
+ // Add new actions
290
+ actions.forEach(action => {
291
+ if (action.floor !== undefined && action.floor < this.tiles.length) {
292
+ this.tiles[action.floor].actions.push({ ...action });
293
+ }
294
+ });
295
+ }
296
+ /**
297
+ * Inserts a new action at the specified floor. The new action will be added to the end of the actions array
298
+ * for that floor.
299
+ * @param floor The floor index where the action will be added
300
+ * @param action The action to insert
301
+ * @throws Error if floor index is invalid
302
+ */
303
+ insertAction(floor, action) {
304
+ if (floor < 0 || floor >= this.tiles.length) {
305
+ throw new Error('Invalid floor index');
306
+ }
307
+ this.tiles[floor].actions.push({ ...action, floor });
308
+ }
309
+ removeAction(floor, actionIndex) {
310
+ if (floor < 0 || floor >= this.tiles.length) {
311
+ throw new Error('Invalid floor index');
312
+ }
313
+ if (actionIndex < 0 || actionIndex >= this.tiles[floor].actions.length) {
314
+ throw new Error('Invalid action index');
315
+ }
316
+ this.tiles[floor].actions.splice(actionIndex, 1);
317
+ }
318
+ updateAction(floor, actionIndex, newAction) {
319
+ if (floor < 0 || floor >= this.tiles.length) {
320
+ throw new Error('Invalid floor index');
321
+ }
322
+ if (actionIndex < 0 || actionIndex >= this.tiles[floor].actions.length) {
323
+ throw new Error('Invalid action index');
324
+ }
325
+ this.tiles[floor].actions[actionIndex] = {
326
+ ...this.tiles[floor].actions[actionIndex],
327
+ ...newAction
328
+ };
329
+ }
330
+ // Decoration manipulation methods
331
+ setDecorations(decorations) {
332
+ // Clear existing decorations
333
+ this.tiles.forEach(tile => tile.decorations = []);
334
+ this.nonFloorDecos = [];
335
+ // Add new decorations
336
+ decorations.forEach(deco => {
337
+ if ('floor' in deco) {
338
+ if (deco.floor >= this.tiles.length) {
339
+ this.tiles[this.tiles.length - 1].decorations.push({ ...deco });
340
+ }
341
+ else {
342
+ this.tiles[deco.floor].decorations.push({ ...deco });
343
+ }
344
+ }
345
+ else {
346
+ this.nonFloorDecos.push({ ...deco });
347
+ }
348
+ });
349
+ }
350
+ /**
351
+ * Inserts a new decoration. If floor is specified, the decoration will be added to the end of the decorations array
352
+ * for that floor. If floor is undefined, it will be added to the non-floor decorations.
353
+ * @param floor The floor index where the decoration will be added, or undefined for non-floor decoration
354
+ * @param decoration The decoration to insert
355
+ * @throws Error if floor index is invalid
356
+ */
357
+ insertDecoration(floor, decoration) {
358
+ if (floor !== undefined) {
359
+ if (floor < 0 || floor >= this.tiles.length) {
360
+ throw new Error('Invalid floor index');
361
+ }
362
+ this.tiles[floor].decorations.push({ ...decoration, floor });
363
+ }
364
+ else {
365
+ this.nonFloorDecos.push({ ...decoration });
366
+ }
367
+ }
368
+ removeDecoration(floor, decorationIndex) {
369
+ if (floor !== undefined) {
370
+ if (floor < 0 || floor >= this.tiles.length) {
371
+ throw new Error('Invalid floor index');
372
+ }
373
+ if (decorationIndex < 0 || decorationIndex >= this.tiles[floor].decorations.length) {
374
+ throw new Error('Invalid decoration index');
375
+ }
376
+ this.tiles[floor].decorations.splice(decorationIndex, 1);
377
+ }
378
+ else {
379
+ if (decorationIndex < 0 || decorationIndex >= this.nonFloorDecos.length) {
380
+ throw new Error('Invalid decoration index');
381
+ }
382
+ this.nonFloorDecos.splice(decorationIndex, 1);
383
+ }
384
+ }
385
+ updateDecoration(floor, decorationIndex, newDecoration) {
386
+ if (floor !== undefined) {
387
+ if (floor < 0 || floor >= this.tiles.length) {
388
+ throw new Error('Invalid floor index');
389
+ }
390
+ if (decorationIndex < 0 || decorationIndex >= this.tiles[floor].decorations.length) {
391
+ throw new Error('Invalid decoration index');
392
+ }
393
+ this.tiles[floor].decorations[decorationIndex] = {
394
+ ...this.tiles[floor].decorations[decorationIndex],
395
+ ...newDecoration
396
+ };
397
+ }
398
+ else {
399
+ if (decorationIndex < 0 || decorationIndex >= this.nonFloorDecos.length) {
400
+ throw new Error('Invalid decoration index');
401
+ }
402
+ this.nonFloorDecos[decorationIndex] = {
403
+ ...this.nonFloorDecos[decorationIndex],
404
+ ...newDecoration
405
+ };
406
+ }
407
+ }
408
+ /**
409
+ * Inserts a new action at a specific position in the actions array for a floor.
410
+ * The new action will be inserted BEFORE the specified index.
411
+ * @param floor The floor index
412
+ * @param actionIndex The index where the action will be inserted (before this index)
413
+ * @param action The action to insert
414
+ * @throws Error if floor or action index is invalid
415
+ */
416
+ insertActionAt(floor, actionIndex, action) {
417
+ if (floor < 0 || floor >= this.tiles.length) {
418
+ throw new Error('Invalid floor index');
419
+ }
420
+ if (actionIndex < 0 || actionIndex > this.tiles[floor].actions.length) {
421
+ throw new Error('Invalid action index');
422
+ }
423
+ this.tiles[floor].actions.splice(actionIndex, 0, { ...action, floor });
424
+ }
425
+ /**
426
+ * Inserts a new decoration at a specific position in the decorations array for a floor.
427
+ * The new decoration will be inserted BEFORE the specified index.
428
+ * @param floor The floor index, or undefined for non-floor decoration
429
+ * @param decorationIndex The index where the decoration will be inserted (before this index)
430
+ * @param decoration The decoration to insert
431
+ * @throws Error if floor or decoration index is invalid
432
+ */
433
+ insertDecorationAt(floor, decorationIndex, decoration) {
434
+ if (floor !== undefined) {
435
+ if (floor < 0 || floor >= this.tiles.length) {
436
+ throw new Error('Invalid floor index');
437
+ }
438
+ if (decorationIndex < 0 || decorationIndex > this.tiles[floor].decorations.length) {
439
+ throw new Error('Invalid decoration index');
440
+ }
441
+ this.tiles[floor].decorations.splice(decorationIndex, 0, { ...decoration, floor });
442
+ }
443
+ else {
444
+ if (decorationIndex < 0 || decorationIndex > this.nonFloorDecos.length) {
445
+ throw new Error('Invalid decoration index');
446
+ }
447
+ this.nonFloorDecos.splice(decorationIndex, 0, { ...decoration });
448
+ }
449
+ }
450
+ /**
451
+ * Gets the current settings object
452
+ * @returns A copy of the current settings
453
+ */
454
+ getSettings() {
455
+ return { ...this.settings };
456
+ }
457
+ /**
458
+ * Sets all settings at once
459
+ * @param settings The new settings object
460
+ */
461
+ setSettings(settings) {
462
+ this.settings = { ...settings };
463
+ }
464
+ /**
465
+ * Updates specific settings while preserving others
466
+ * @param settings Partial settings object containing only the properties to update
467
+ */
468
+ updateSettings(settings) {
469
+ this.settings = { ...this.settings, ...settings };
470
+ }
471
+ /**
472
+ * Gets a specific setting value
473
+ * @param key The setting key to retrieve
474
+ * @returns The value of the setting, or undefined if not found
475
+ */
476
+ getSetting(key) {
477
+ return this.settings[key];
478
+ }
479
+ /**
480
+ * Sets a specific setting value
481
+ * @param key The setting key to set
482
+ * @param value The new value for the setting
483
+ */
484
+ setSetting(key, value) {
485
+ this.settings[key] = value;
486
+ }
487
+ /**
488
+ * Removes a specific setting
489
+ * @param key The setting key to remove
490
+ * @returns true if the setting was removed, false if it didn't exist
491
+ */
492
+ removeSetting(key) {
493
+ if (key in this.settings) {
494
+ delete this.settings[key];
495
+ return true;
496
+ }
497
+ return false;
498
+ }
499
+ /**
500
+ * Checks if a specific setting exists
501
+ * @param key The setting key to check
502
+ * @returns true if the setting exists, false otherwise
503
+ */
504
+ hasSetting(key) {
505
+ return key in this.settings;
506
+ }
507
+ /**
508
+ * Gets all setting keys
509
+ * @returns Array of all setting keys
510
+ */
511
+ getSettingKeys() {
512
+ return Object.keys(this.settings);
513
+ }
514
+ /**
515
+ * Resets all settings to their default values
516
+ */
517
+ resetSettings() {
518
+ this.settings = {};
519
+ }
520
+ /**
521
+ * Merges new settings with existing ones
522
+ * @param settings Settings to merge
523
+ * @param deep Whether to perform a deep merge (default: false)
524
+ */
525
+ mergeSettings(settings, deep = false) {
526
+ if (deep) {
527
+ this.settings = this.deepMerge(this.settings, settings);
528
+ }
529
+ else {
530
+ this.settings = { ...this.settings, ...settings };
531
+ }
532
+ }
533
+ /**
534
+ * Helper method for deep merging objects
535
+ * @private
536
+ */
537
+ deepMerge(target, source) {
538
+ const output = { ...target };
539
+ for (const key in source) {
540
+ if (source[key] instanceof Object && key in target) {
541
+ output[key] = this.deepMerge(target[key], source[key]);
542
+ }
543
+ else {
544
+ output[key] = source[key];
545
+ }
546
+ }
547
+ return output;
548
+ }
133
549
  }
134
550
  //# sourceMappingURL=LevelDict.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LevelDict.js","sourceRoot":"","sources":["../src/LevelDict.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LevelDict.js","sourceRoot":"","sources":["../src/LevelDict.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import LevelDict from '../LevelDict';
1
+ import LevelDict from '../LevelDict.js';
2
2
  import * as fs from 'fs';
3
3
  // Mock fs module
4
4
  jest.mock('fs');
@@ -69,5 +69,316 @@ describe('LevelDict', () => {
69
69
  const level = new LevelDict('test.adofai');
70
70
  expect(level.getAngles()).toEqual([0, 90, 0, 90]);
71
71
  });
72
+ describe('Level manipulation', () => {
73
+ let level;
74
+ beforeEach(() => {
75
+ const mockLevelData = {
76
+ angleData: [0, 90, 180],
77
+ settings: { bpm: 120 },
78
+ actions: [
79
+ { floor: 1, eventType: 'Twirl' },
80
+ { floor: 2, eventType: 'Pause' }
81
+ ],
82
+ decorations: [
83
+ { floor: 0, decorationType: 'Background' },
84
+ { floor: 1, decorationType: 'Foreground' }
85
+ ]
86
+ };
87
+ fs.readFileSync.mockReturnValue(JSON.stringify(mockLevelData));
88
+ level = new LevelDict('test.adofai');
89
+ });
90
+ it('should create a deep copy of the level', () => {
91
+ const copy = level.copy();
92
+ // Test that it's a new instance
93
+ expect(copy).not.toBe(level);
94
+ // Test that all properties are copied correctly
95
+ expect(copy.getAngles()).toEqual(level.getAngles());
96
+ expect(copy.getActions()).toEqual(level.getActions());
97
+ expect(copy.getDecorations()).toEqual(level.getDecorations());
98
+ // Test that modifications to copy don't affect original
99
+ copy.setAngles([45, 90, 135]);
100
+ expect(level.getAngles()).toEqual([0, 90, 180]);
101
+ });
102
+ it('should insert a tile at specified index', () => {
103
+ level.insertTile(1, 45);
104
+ expect(level.getAngles()).toEqual([0, 45, 90, 180]);
105
+ // Test that actions and decorations are shifted correctly
106
+ const actions = level.getActions();
107
+ expect(actions[0].floor).toBe(2);
108
+ expect(actions[1].floor).toBe(3);
109
+ const decorations = level.getDecorations();
110
+ expect(decorations[0].floor).toBe(0);
111
+ expect(decorations[1].floor).toBe(2);
112
+ });
113
+ it('should throw error when inserting tile at invalid index', () => {
114
+ expect(() => level.insertTile(-1, 45)).toThrow('Invalid tile index');
115
+ expect(() => level.insertTile(4, 45)).toThrow('Invalid tile index');
116
+ });
117
+ it('should remove a tile at specified index', () => {
118
+ level.removeTile(1);
119
+ expect(level.getAngles()).toEqual([0, 180]);
120
+ const actions = level.getActions();
121
+ expect(actions[0].floor).toBe(1);
122
+ const decorations = level.getDecorations();
123
+ expect(decorations[0].floor).toBe(0);
124
+ expect(decorations[1]).toBeUndefined();
125
+ });
126
+ it('should throw error when removing tile at invalid index', () => {
127
+ expect(() => level.removeTile(-1)).toThrow('Invalid tile index');
128
+ expect(() => level.removeTile(3)).toThrow('Invalid tile index');
129
+ });
130
+ });
131
+ describe('Level comparison', () => {
132
+ let level1;
133
+ let level2;
134
+ beforeEach(() => {
135
+ const mockLevelData1 = {
136
+ angleData: [0, 90, 180],
137
+ settings: { bpm: 120 },
138
+ actions: [{ floor: 1, eventType: 'Twirl' }],
139
+ decorations: [{ floor: 0, decorationType: 'Background' }]
140
+ };
141
+ const mockLevelData2 = {
142
+ angleData: [0, 45, 180],
143
+ settings: { bpm: 120 },
144
+ actions: [{ floor: 1, eventType: 'Pause' }],
145
+ decorations: [{ floor: 0, decorationType: 'Foreground' }]
146
+ };
147
+ fs.readFileSync
148
+ .mockReturnValueOnce(JSON.stringify(mockLevelData1))
149
+ .mockReturnValueOnce(JSON.stringify(mockLevelData2));
150
+ level1 = new LevelDict('test1.adofai');
151
+ level2 = new LevelDict('test2.adofai');
152
+ });
153
+ it('should compare two levels and identify differences', () => {
154
+ const diff = level1.compareWith(level2);
155
+ expect(diff.differentTiles).toEqual([1]); // Different angle at index 1
156
+ expect(diff.differentActions).toEqual([0]); // Different action at index 0
157
+ expect(diff.differentDecorations).toEqual([0]); // Different decoration at index 0
158
+ });
159
+ it('should return empty arrays when comparing identical levels', () => {
160
+ const diff = level1.compareWith(level1);
161
+ expect(diff.differentTiles).toEqual([]);
162
+ expect(diff.differentActions).toEqual([]);
163
+ expect(diff.differentDecorations).toEqual([]);
164
+ });
165
+ it('should handle levels with different lengths', () => {
166
+ level1.setAngles([0, 90, 180, 270]);
167
+ const diff = level1.compareWith(level2);
168
+ expect(diff.differentTiles).toEqual([1, 3]); // Different at index 1 and extra tile at 3
169
+ });
170
+ });
171
+ describe('Action and Decoration manipulation', () => {
172
+ let level;
173
+ beforeEach(() => {
174
+ const mockLevelData = {
175
+ angleData: [0, 90, 180],
176
+ settings: { bpm: 120 },
177
+ actions: [
178
+ { floor: 1, eventType: 'Twirl' },
179
+ { floor: 2, eventType: 'Pause', duration: 2 }
180
+ ],
181
+ decorations: [
182
+ { floor: 0, decorationType: 'Background', color: '#000000' },
183
+ { floor: 1, decorationType: 'Foreground', color: '#FFFFFF' },
184
+ { decorationType: 'Global', color: '#FF0000' }
185
+ ]
186
+ };
187
+ fs.readFileSync.mockReturnValue(JSON.stringify(mockLevelData));
188
+ level = new LevelDict('test.adofai');
189
+ });
190
+ describe('Action manipulation', () => {
191
+ it('should set all actions', () => {
192
+ const newActions = [
193
+ { floor: 0, eventType: 'Twirl' },
194
+ { floor: 2, eventType: 'Pause', duration: 2 }
195
+ ];
196
+ level.setActions(newActions);
197
+ const actions = level.getActions();
198
+ expect(actions).toHaveLength(2);
199
+ expect(actions[0]).toEqual(newActions[0]);
200
+ expect(actions[1]).toEqual(newActions[1]);
201
+ });
202
+ it('should insert a new action', () => {
203
+ const newAction = { eventType: 'SetSpeed', bpm: 250 };
204
+ level.insertAction(0, newAction);
205
+ const actions = level.getActions();
206
+ expect(actions).toHaveLength(3);
207
+ expect(actions[0]).toEqual({ ...newAction, floor: 0 });
208
+ });
209
+ it('should remove an action', () => {
210
+ level.removeAction(1, 0);
211
+ const actions = level.getActions();
212
+ expect(actions).toHaveLength(1);
213
+ expect(actions[0].eventType).toBe('Pause');
214
+ });
215
+ it('should update an action', () => {
216
+ level.updateAction(1, 0, { duration: 3 });
217
+ const actions = level.getActions();
218
+ expect(actions[0].duration).toBe(3);
219
+ expect(actions[0].eventType).toBe('Twirl'); // Other properties should remain unchanged
220
+ });
221
+ it('should throw error when inserting action at invalid floor', () => {
222
+ expect(() => level.insertAction(-1, { eventType: 'Twirl' }))
223
+ .toThrow('Invalid floor index');
224
+ expect(() => level.insertAction(3, { eventType: 'Twirl' }))
225
+ .toThrow('Invalid floor index');
226
+ });
227
+ it('should throw error when removing action at invalid index', () => {
228
+ expect(() => level.removeAction(1, -1))
229
+ .toThrow('Invalid action index');
230
+ expect(() => level.removeAction(1, 2))
231
+ .toThrow('Invalid action index');
232
+ });
233
+ });
234
+ describe('Decoration manipulation', () => {
235
+ it('should set all decorations', () => {
236
+ const newDecorations = [
237
+ { floor: 0, decorationType: 'Background', color: '#111111' },
238
+ { decorationType: 'Global', color: '#222222' }
239
+ ];
240
+ level.setDecorations(newDecorations);
241
+ const decorations = level.getDecorations();
242
+ const nonFloorDecos = level.getDecorations(deco => deco.floor === undefined, true);
243
+ expect(decorations).toHaveLength(1);
244
+ expect(nonFloorDecos).toHaveLength(1);
245
+ expect(decorations[0]).toEqual(newDecorations[0]);
246
+ expect(nonFloorDecos[0]).toEqual(newDecorations[1]);
247
+ });
248
+ it('should insert a floor decoration', () => {
249
+ const newDecoration = { decorationType: 'Background', color: '#333333' };
250
+ level.insertDecoration(2, newDecoration);
251
+ const decorations = level.getDecorations();
252
+ expect(decorations).toHaveLength(3);
253
+ expect(decorations[2]).toEqual({ ...newDecoration, floor: 2 });
254
+ });
255
+ it('should insert a non-floor decoration', () => {
256
+ const newDecoration = { decorationType: 'Global', color: '#444444' };
257
+ level.insertDecoration(undefined, newDecoration);
258
+ const nonFloorDecos = level.getDecorations(deco => deco.floor === undefined, true);
259
+ expect(nonFloorDecos).toHaveLength(2);
260
+ expect(nonFloorDecos[1]).toEqual(newDecoration);
261
+ });
262
+ it('should remove a floor decoration', () => {
263
+ level.removeDecoration(1, 0);
264
+ const decorations = level.getDecorations();
265
+ expect(decorations).toHaveLength(1);
266
+ expect(decorations[0].floor).toBe(0);
267
+ });
268
+ it('should remove a non-floor decoration', () => {
269
+ level.removeDecoration(undefined, 0);
270
+ const nonFloorDecos = level.getDecorations(deco => deco.floor === undefined, true);
271
+ expect(nonFloorDecos).toHaveLength(0);
272
+ });
273
+ it('should update a floor decoration', () => {
274
+ level.updateDecoration(1, 0, { color: '#555555' });
275
+ const decorations = level.getDecorations();
276
+ expect(decorations[1].color).toBe('#555555');
277
+ expect(decorations[1].decorationType).toBe('Foreground'); // Other properties should remain unchanged
278
+ });
279
+ it('should update a non-floor decoration', () => {
280
+ level.updateDecoration(undefined, 0, { color: '#666666' });
281
+ const nonFloorDecos = level.getDecorations(deco => deco.floor === undefined, true);
282
+ expect(nonFloorDecos[0].color).toBe('#666666');
283
+ expect(nonFloorDecos[0].decorationType).toBe('Global'); // Other properties should remain unchanged
284
+ });
285
+ it('should throw error when inserting decoration at invalid floor', () => {
286
+ expect(() => level.insertDecoration(-1, { decorationType: 'Background' }))
287
+ .toThrow('Invalid floor index');
288
+ expect(() => level.insertDecoration(3, { decorationType: 'Background' }))
289
+ .toThrow('Invalid floor index');
290
+ });
291
+ it('should throw error when removing decoration at invalid index', () => {
292
+ expect(() => level.removeDecoration(1, -1))
293
+ .toThrow('Invalid decoration index');
294
+ expect(() => level.removeDecoration(1, 2))
295
+ .toThrow('Invalid decoration index');
296
+ expect(() => level.removeDecoration(undefined, -1))
297
+ .toThrow('Invalid decoration index');
298
+ expect(() => level.removeDecoration(undefined, 2))
299
+ .toThrow('Invalid decoration index');
300
+ });
301
+ });
302
+ });
303
+ describe('Tile and Item retrieval', () => {
304
+ let level;
305
+ beforeEach(() => {
306
+ const mockLevelData = {
307
+ angleData: [0, 90, 180, 270, 360],
308
+ settings: { bpm: 120 },
309
+ actions: [
310
+ { floor: 1, eventType: 'Twirl' },
311
+ { floor: 2, eventType: 'Pause', duration: 2 },
312
+ { floor: 3, eventType: 'SetSpeed', bpm: 150 }
313
+ ],
314
+ decorations: [
315
+ { floor: 0, decorationType: 'Background', color: '#000000' },
316
+ { floor: 1, decorationType: 'Foreground', color: '#FFFFFF' },
317
+ { decorationType: 'Global', color: '#FF0000' }
318
+ ]
319
+ };
320
+ fs.readFileSync.mockReturnValue(JSON.stringify(mockLevelData));
321
+ level = new LevelDict('test.adofai');
322
+ });
323
+ describe('getTiles', () => {
324
+ it('should get tiles in a range', () => {
325
+ const tiles = level.getTiles(1, 4);
326
+ expect(tiles).toHaveLength(3);
327
+ expect(tiles.map(t => t.angle)).toEqual([90, 180, 270]);
328
+ });
329
+ it('should get tiles at specific indices', () => {
330
+ const tiles = level.getTiles([0, 2, 4]);
331
+ expect(tiles).toHaveLength(3);
332
+ expect(tiles.map(t => t.angle)).toEqual([0, 180, 360]);
333
+ });
334
+ it('should throw error for invalid range', () => {
335
+ expect(() => level.getTiles(-1, 3)).toThrow('Invalid range indices');
336
+ expect(() => level.getTiles(3, 2)).toThrow('Invalid range indices');
337
+ expect(() => level.getTiles(0, 6)).toThrow('Invalid range indices');
338
+ });
339
+ it('should throw error for invalid indices', () => {
340
+ expect(() => level.getTiles([-1, 2])).toThrow('Invalid tile index');
341
+ expect(() => level.getTiles([0, 5])).toThrow('Invalid tile index');
342
+ });
343
+ });
344
+ describe('getActions', () => {
345
+ it('should get all actions', () => {
346
+ const actions = level.getActions();
347
+ expect(actions).toHaveLength(3);
348
+ expect(actions[0].eventType).toBe('Twirl');
349
+ expect(actions[1].eventType).toBe('Pause');
350
+ expect(actions[2].eventType).toBe('SetSpeed');
351
+ });
352
+ it('should filter actions by condition', () => {
353
+ const twirlActions = level.getActions(action => action.eventType === 'Twirl');
354
+ expect(twirlActions).toHaveLength(1);
355
+ expect(twirlActions[0].floor).toBe(1);
356
+ const speedActions = level.getActions(action => action.eventType === 'SetSpeed');
357
+ expect(speedActions).toHaveLength(1);
358
+ expect(speedActions[0].bpm).toBe(150);
359
+ });
360
+ });
361
+ describe('getDecorations', () => {
362
+ it('should get floor decorations by default', () => {
363
+ const decorations = level.getDecorations();
364
+ expect(decorations).toHaveLength(2);
365
+ expect(decorations[0].decorationType).toBe('Background');
366
+ expect(decorations[1].decorationType).toBe('Foreground');
367
+ });
368
+ it('should include non-floor decorations when specified', () => {
369
+ const allDecorations = level.getDecorations(() => true, true);
370
+ expect(allDecorations).toHaveLength(3);
371
+ expect(allDecorations[2].decorationType).toBe('Global');
372
+ });
373
+ it('should filter decorations by condition', () => {
374
+ const backgroundDecos = level.getDecorations(deco => deco.decorationType === 'Background');
375
+ expect(backgroundDecos).toHaveLength(1);
376
+ expect(backgroundDecos[0].color).toBe('#000000');
377
+ const globalDecos = level.getDecorations(deco => deco.decorationType === 'Global', true);
378
+ expect(globalDecos).toHaveLength(1);
379
+ expect(globalDecos[0].color).toBe('#FF0000');
380
+ });
381
+ });
382
+ });
72
383
  });
73
384
  //# sourceMappingURL=LevelFile.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LevelFile.test.js","sourceRoot":"","sources":["../../src/__tests__/LevelFile.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LevelFile.test.js","sourceRoot":"","sources":["../../src/__tests__/LevelFile.test.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import LevelDict from './LevelDict';
2
- import { Action, Decoration, InvalidLevelDictException, Settings, Tile } from './types';
1
+ import LevelDict from './LevelDict.js';
2
+ import { Action, Decoration, InvalidLevelDictException, Settings, Tile, LevelJSON } from './types/index.js';
3
3
  export default LevelDict;
4
- export { Action, Decoration, Settings, Tile, InvalidLevelDictException };
4
+ export { Action, Decoration, Settings, Tile, LevelJSON, InvalidLevelDictException };
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,yBAAyB,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAExF,eAAe,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,yBAAyB,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE5G,eAAe,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,yBAAyB,EAAE,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- import LevelDict from './LevelDict';
2
- import { InvalidLevelDictException } from './types';
1
+ import LevelDict from './LevelDict.js';
2
+ import { InvalidLevelDictException } from './types/index.js';
3
3
  export default LevelDict;
4
4
  export { InvalidLevelDictException };
5
5
  //# 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,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,EAAsB,yBAAyB,EAAkB,MAAM,SAAS,CAAC;AAExF,eAAe,SAAS,CAAC;AACzB,OAAO,EAAsC,yBAAyB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAsB,yBAAyB,EAA6B,MAAM,kBAAkB,CAAC;AAE5G,eAAe,SAAS,CAAC;AACzB,OAAO,EAAiD,yBAAyB,EAAE,CAAC"}
@@ -1,6 +1,3 @@
1
- import { LevelJSON } from '../types/level';
2
- /**
3
- * Ensure bad comma handling
4
- */
1
+ import { LevelJSON } from '../types/index.js';
5
2
  export declare function safeParseJSON(str: string): LevelJSON;
6
3
  //# sourceMappingURL=levelUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"levelUtils.d.ts","sourceRoot":"","sources":["../../src/utils/levelUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAWhD"}
1
+ {"version":3,"file":"levelUtils.d.ts","sourceRoot":"","sources":["../../src/utils/levelUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAWpD"}
@@ -1,13 +1,11 @@
1
1
  import JSON5 from 'json5';
2
- /**
3
- * Ensure bad comma handling
4
- */
5
2
  export function safeParseJSON(str) {
6
3
  try {
7
4
  const cleaned = str
8
5
  .replace(/,(\s*[}\]])/g, '$1') // Remove trailing commas before closing brackets
9
6
  .replace(/([}\]])[\s\n]*([}\]])/g, '$1,$2') // Ensure comma between closing brackets
10
- .replace(/([}\]])[\s\n]*("decorations"|"actions"|"settings")/g, '$1,$2'); // Ensure comma before main sections
7
+ .replace(/([}\]])[\s\n]*("decorations"|"actions"|"settings")/g, '$1,$2')
8
+ .replace(/\r/g, ''); // Remove all carriage returns
11
9
  return JSON5.parse(cleaned);
12
10
  }
13
11
  catch (e) {
@@ -1 +1 @@
1
- {"version":3,"file":"levelUtils.js","sourceRoot":"","sources":["../../src/utils/levelUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IACjC,IAAI,CAAC;QACD,MAAM,OAAO,GAAG,GAAG;aACd,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,iDAAiD;aAC/E,OAAO,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAC,wCAAwC;aACnF,OAAO,CAAC,qDAAqD,EAAE,OAAO,CAAC,CAAC,CAAC,oCAAoC;QAElH,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAClD,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"levelUtils.js","sourceRoot":"","sources":["../../src/utils/levelUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,UAAU,aAAa,CAAC,GAAW;IACrC,IAAI,CAAC;QACD,MAAM,OAAO,GAAG,GAAG;aACd,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,iDAAiD;aAC/E,OAAO,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAC,wCAAwC;aACnF,OAAO,CAAC,qDAAqD,EAAE,OAAO,CAAC;aACvE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,8BAA8B;QACvD,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAClD,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "adofai-lib",
3
- "version": "1.0.5",
3
+ "version": "1.0.7",
4
4
  "description": "A TypeScript library for working with ADOFAI level files. Original by M1n3c4rt",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",