skygame-data 0.0.1 → 0.0.4

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.
Files changed (144) hide show
  1. package/README.md +147 -1
  2. package/assets/areas.json +1 -0
  3. package/assets/candles.json +1 -0
  4. package/assets/constellations.json +1 -0
  5. package/assets/event-instance-spirits.json +1 -0
  6. package/assets/event-instances.json +1 -0
  7. package/assets/events.json +1 -0
  8. package/assets/everything.json +1 -1
  9. package/assets/iaps.json +1 -0
  10. package/assets/item-lists.json +1 -0
  11. package/assets/items.json +1 -0
  12. package/assets/map-shrines.json +1 -0
  13. package/assets/nodes.json +1 -0
  14. package/assets/realms.json +1 -0
  15. package/assets/seasons.json +1 -0
  16. package/assets/shops.json +1 -0
  17. package/assets/special-visit-spirits.json +1 -0
  18. package/assets/special-visits.json +1 -0
  19. package/assets/spirit-tree-tiers.json +1 -0
  20. package/assets/spirit-trees.json +1 -0
  21. package/assets/spirits.json +1 -0
  22. package/assets/traveling-spirits.json +1 -0
  23. package/assets/winged-lights.json +1 -0
  24. package/dist/helpers/date-helper.d.ts +6 -0
  25. package/dist/helpers/date-helper.d.ts.map +1 -0
  26. package/dist/helpers/date-helper.js +8 -0
  27. package/dist/helpers/date-helper.js.map +1 -0
  28. package/dist/helpers/node-helper.d.ts +39 -0
  29. package/dist/helpers/node-helper.d.ts.map +1 -0
  30. package/dist/helpers/node-helper.js +115 -0
  31. package/dist/helpers/node-helper.js.map +1 -0
  32. package/dist/helpers/spirit-tree-helper.d.ts +9 -0
  33. package/dist/helpers/spirit-tree-helper.d.ts.map +1 -0
  34. package/dist/helpers/spirit-tree-helper.js +37 -0
  35. package/dist/helpers/spirit-tree-helper.js.map +1 -0
  36. package/dist/index.d.ts +25 -1
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +6 -1
  39. package/dist/index.js.map +1 -1
  40. package/dist/interfaces/area.interface.d.ts +26 -0
  41. package/dist/interfaces/area.interface.d.ts.map +1 -0
  42. package/dist/interfaces/area.interface.js +2 -0
  43. package/dist/interfaces/area.interface.js.map +1 -0
  44. package/dist/interfaces/base.interface.d.ts +9 -0
  45. package/dist/interfaces/base.interface.d.ts.map +1 -0
  46. package/dist/interfaces/base.interface.js +2 -0
  47. package/dist/interfaces/base.interface.js.map +1 -0
  48. package/dist/interfaces/calculator-data.interface.d.ts +13 -0
  49. package/dist/interfaces/calculator-data.interface.d.ts.map +1 -0
  50. package/dist/interfaces/calculator-data.interface.js +3 -0
  51. package/dist/interfaces/calculator-data.interface.js.map +1 -0
  52. package/dist/interfaces/cost.interface.d.ts +15 -0
  53. package/dist/interfaces/cost.interface.d.ts.map +1 -0
  54. package/dist/interfaces/cost.interface.js +2 -0
  55. package/dist/interfaces/cost.interface.js.map +1 -0
  56. package/dist/interfaces/event.interface.d.ts +41 -0
  57. package/dist/interfaces/event.interface.d.ts.map +1 -0
  58. package/dist/interfaces/event.interface.js +2 -0
  59. package/dist/interfaces/event.interface.js.map +1 -0
  60. package/dist/interfaces/iap.interface.d.ts +22 -0
  61. package/dist/interfaces/iap.interface.d.ts.map +1 -0
  62. package/dist/interfaces/iap.interface.js +2 -0
  63. package/dist/interfaces/iap.interface.js.map +1 -0
  64. package/dist/interfaces/item-list.interface.d.ts +18 -0
  65. package/dist/interfaces/item-list.interface.d.ts.map +1 -0
  66. package/dist/interfaces/item-list.interface.js +2 -0
  67. package/dist/interfaces/item-list.interface.js.map +1 -0
  68. package/dist/interfaces/item.interface.d.ts +136 -0
  69. package/dist/interfaces/item.interface.d.ts.map +1 -0
  70. package/dist/interfaces/item.interface.js +53 -0
  71. package/dist/interfaces/item.interface.js.map +1 -0
  72. package/dist/interfaces/map-data.interface.d.ts +11 -0
  73. package/dist/interfaces/map-data.interface.d.ts.map +1 -0
  74. package/dist/interfaces/map-data.interface.js +2 -0
  75. package/dist/interfaces/map-data.interface.js.map +1 -0
  76. package/dist/interfaces/map-shrine.interface.d.ts +12 -0
  77. package/dist/interfaces/map-shrine.interface.d.ts.map +1 -0
  78. package/dist/interfaces/map-shrine.interface.js +2 -0
  79. package/dist/interfaces/map-shrine.interface.js.map +1 -0
  80. package/dist/interfaces/node.interface.d.ts +37 -0
  81. package/dist/interfaces/node.interface.d.ts.map +1 -0
  82. package/dist/interfaces/node.interface.js +2 -0
  83. package/dist/interfaces/node.interface.js.map +1 -0
  84. package/dist/interfaces/outfit-request.interface.d.ts +21 -0
  85. package/dist/interfaces/outfit-request.interface.d.ts.map +1 -0
  86. package/dist/interfaces/outfit-request.interface.js +2 -0
  87. package/dist/interfaces/outfit-request.interface.js.map +1 -0
  88. package/dist/interfaces/quest.interface.d.ts +6 -0
  89. package/dist/interfaces/quest.interface.d.ts.map +1 -0
  90. package/dist/interfaces/quest.interface.js +2 -0
  91. package/dist/interfaces/quest.interface.js.map +1 -0
  92. package/dist/interfaces/realm.interface.d.ts +30 -0
  93. package/dist/interfaces/realm.interface.d.ts.map +1 -0
  94. package/dist/interfaces/realm.interface.js +2 -0
  95. package/dist/interfaces/realm.interface.js.map +1 -0
  96. package/dist/interfaces/returning-spirits.interface.d.ts +25 -0
  97. package/dist/interfaces/returning-spirits.interface.d.ts.map +1 -0
  98. package/dist/interfaces/returning-spirits.interface.js +2 -0
  99. package/dist/interfaces/returning-spirits.interface.js.map +1 -0
  100. package/dist/interfaces/season.interface.d.ts +39 -0
  101. package/dist/interfaces/season.interface.d.ts.map +1 -0
  102. package/dist/interfaces/season.interface.js +2 -0
  103. package/dist/interfaces/season.interface.js.map +1 -0
  104. package/dist/interfaces/shop.interface.d.ts +23 -0
  105. package/dist/interfaces/shop.interface.d.ts.map +1 -0
  106. package/dist/interfaces/shop.interface.js +2 -0
  107. package/dist/interfaces/shop.interface.js.map +1 -0
  108. package/dist/interfaces/sky-data.interface.d.ts +43 -0
  109. package/dist/interfaces/sky-data.interface.d.ts.map +1 -0
  110. package/dist/interfaces/sky-data.interface.js +2 -0
  111. package/dist/interfaces/sky-data.interface.js.map +1 -0
  112. package/dist/interfaces/special-visit-spirit.interface.d.ts +10 -0
  113. package/dist/interfaces/special-visit-spirit.interface.d.ts.map +1 -0
  114. package/dist/interfaces/special-visit-spirit.interface.js +2 -0
  115. package/dist/interfaces/special-visit-spirit.interface.js.map +1 -0
  116. package/dist/interfaces/special-visit.interface.d.ts +17 -0
  117. package/dist/interfaces/special-visit.interface.d.ts.map +1 -0
  118. package/dist/interfaces/special-visit.interface.js +2 -0
  119. package/dist/interfaces/special-visit.interface.js.map +1 -0
  120. package/dist/interfaces/spirit-tree.interface.d.ts +29 -0
  121. package/dist/interfaces/spirit-tree.interface.d.ts.map +1 -0
  122. package/dist/interfaces/spirit-tree.interface.js +2 -0
  123. package/dist/interfaces/spirit-tree.interface.js.map +1 -0
  124. package/dist/interfaces/spirit.interface.d.ts +43 -0
  125. package/dist/interfaces/spirit.interface.d.ts.map +1 -0
  126. package/dist/interfaces/spirit.interface.js +2 -0
  127. package/dist/interfaces/spirit.interface.js.map +1 -0
  128. package/dist/interfaces/traveling-spirit.interface.d.ts +12 -0
  129. package/dist/interfaces/traveling-spirit.interface.d.ts.map +1 -0
  130. package/dist/interfaces/traveling-spirit.interface.js +2 -0
  131. package/dist/interfaces/traveling-spirit.interface.js.map +1 -0
  132. package/dist/interfaces/wiki.interface.d.ts +7 -0
  133. package/dist/interfaces/wiki.interface.d.ts.map +1 -0
  134. package/dist/interfaces/wiki.interface.js +2 -0
  135. package/dist/interfaces/wiki.interface.js.map +1 -0
  136. package/dist/interfaces/winged-light.interface.d.ts +13 -0
  137. package/dist/interfaces/winged-light.interface.d.ts.map +1 -0
  138. package/dist/interfaces/winged-light.interface.js +2 -0
  139. package/dist/interfaces/winged-light.interface.js.map +1 -0
  140. package/dist/parser.d.ts +38 -0
  141. package/dist/parser.d.ts.map +1 -0
  142. package/dist/parser.js +479 -0
  143. package/dist/parser.js.map +1 -0
  144. package/package.json +27 -10
package/dist/parser.js ADDED
@@ -0,0 +1,479 @@
1
+ import { parse } from 'jsonc-parser';
2
+ import { ItemType } from './index.js';
3
+ import { SkyDateHelper } from './helpers/date-helper.js';
4
+ import { SpiritTreeHelper } from './helpers/spirit-tree-helper.js';
5
+ export class SkyDataResolver {
6
+ data;
7
+ guids = new Map();
8
+ ids = new Map();
9
+ constructor(data) {
10
+ this.data = data;
11
+ }
12
+ /**
13
+ * Parses Sky data from a JSONC string.
14
+ * To resolve references, use `resolveSkyData` after parsing.
15
+ * @param json - The contents of `/assets/everything.json`.
16
+ */
17
+ static parse(json) {
18
+ return parse(json, undefined, {
19
+ disallowComments: false,
20
+ allowEmptyContent: false,
21
+ allowTrailingComma: true
22
+ });
23
+ }
24
+ /**
25
+ * Resolves all references in the Sky data object.
26
+ * The object is modified in-place.
27
+ * @param data - The Sky data object to resolve.
28
+ */
29
+ static resolve(data) {
30
+ const resolver = new SkyDataResolver(data);
31
+ resolver.resolve();
32
+ return resolver.data;
33
+ }
34
+ resolve() {
35
+ Object.values(this.data).forEach(c => this.registerGuids(c));
36
+ this.resolveRealms();
37
+ this.resolveAreas();
38
+ this.resolveSeasons();
39
+ this.resolveSpirits();
40
+ this.resolveTravelingSpirits();
41
+ this.resolveSpecialVisits();
42
+ this.resolveSpiritTreeTiers();
43
+ this.resolveSpiritTrees();
44
+ this.resolveEvents();
45
+ this.resolveShops();
46
+ this.resolveItems();
47
+ this.resolveItemLists();
48
+ this.resolveSeasonItems();
49
+ }
50
+ registerGuids(config) {
51
+ if (!Array.isArray(config.items)) {
52
+ return;
53
+ }
54
+ for (const item of config.items) {
55
+ this.registerGuid(item);
56
+ }
57
+ }
58
+ registerGuid(obj) {
59
+ if (!obj.guid) {
60
+ throw new Error('Missing GUID');
61
+ }
62
+ if (obj.guid?.length !== 10) {
63
+ throw new Error(`Invalid GUID: ${obj.guid}`);
64
+ }
65
+ if (this.guids.has(obj.guid)) {
66
+ throw new Error(`Duplicate GUID: ${obj.guid}`);
67
+ }
68
+ this.guids.set(obj.guid, obj);
69
+ }
70
+ resolveRealms() {
71
+ this.data.realms.items.forEach(realm => {
72
+ // Map areas to realms.
73
+ realm.areas?.forEach((area, i) => {
74
+ area = this.guids.get(area);
75
+ realm.areas[i] = area;
76
+ area.realm = realm;
77
+ });
78
+ // Map constellation spirits.
79
+ realm.constellation?.icons?.forEach((icon, i) => {
80
+ const spirit = this.guids.get(icon.spirit);
81
+ realm.constellation.icons[i].spirit = spirit;
82
+ });
83
+ // Map elders
84
+ if (realm.elder) {
85
+ realm.elder = this.guids.get(realm.elder);
86
+ }
87
+ });
88
+ }
89
+ resolveAreas() {
90
+ this.data.areas.items.forEach(area => {
91
+ // Map Spirit to Areas.
92
+ area.spirits?.forEach((spirit, i) => {
93
+ spirit = this.guids.get(spirit);
94
+ area.spirits[i] = spirit;
95
+ spirit.area = area;
96
+ });
97
+ // Map Winged Light to Area.
98
+ area.wingedLights?.forEach((wl, i) => {
99
+ wl = this.guids.get(wl);
100
+ area.wingedLights[i] = wl;
101
+ wl.area = area;
102
+ });
103
+ // Map connected areas.
104
+ area.connections?.forEach((c, i) => {
105
+ c.area = this.guids.get(c.area);
106
+ });
107
+ // Map.. Map Shrine to Area.
108
+ area.mapShrines?.forEach((ms, i) => {
109
+ const mapShrine = this.guids.get(ms);
110
+ area.mapShrines[i] = mapShrine;
111
+ mapShrine.area = area;
112
+ });
113
+ });
114
+ }
115
+ resolveSeasons() {
116
+ this.data.seasons.items.forEach((season, i) => {
117
+ season.number = i + 1;
118
+ if (typeof season.date === 'string') {
119
+ season.date = SkyDateHelper.fromStringSky(season.date);
120
+ }
121
+ if (typeof season.endDate === 'string') {
122
+ season.endDate = SkyDateHelper.fromStringSky(season.endDate).endOf('day');
123
+ }
124
+ // Map Spirits to Season.
125
+ season.spirits?.forEach((spirit, si) => {
126
+ spirit = this.guids.get(spirit);
127
+ season.spirits[si] = spirit;
128
+ spirit.season = season;
129
+ });
130
+ // Map Shops to Season
131
+ season.shops?.forEach((shop, si) => {
132
+ shop = this.guids.get(shop);
133
+ season.shops[si] = shop;
134
+ shop.season = season;
135
+ });
136
+ // Map included trees (one-way).
137
+ season.includedTrees?.forEach((tree, ti) => {
138
+ tree = this.guids.get(tree);
139
+ season.includedTrees[ti] = tree;
140
+ });
141
+ });
142
+ }
143
+ resolveSpirits() {
144
+ this.data.spirits.items.forEach((spirit, i) => {
145
+ spirit._index = i;
146
+ // Map spirits to spirit tree.
147
+ if (spirit.tree) {
148
+ const tree = this.guids.get(spirit.tree);
149
+ tree.spirit = spirit;
150
+ spirit.tree = tree;
151
+ }
152
+ // Map past versions of spirit tree.
153
+ if (spirit.treeRevisions) {
154
+ spirit.treeRevisions.forEach((pt, i) => {
155
+ const tree = this.guids.get(pt);
156
+ tree.spirit = spirit;
157
+ spirit.treeRevisions[i] = tree;
158
+ });
159
+ }
160
+ });
161
+ }
162
+ resolveTravelingSpirits() {
163
+ const tsCounts = {};
164
+ this.data.travelingSpirits.items.forEach((ts, i) => {
165
+ // Initialize dates
166
+ if (typeof ts.date === 'string') {
167
+ ts.date = SkyDateHelper.fromStringSky(ts.date);
168
+ }
169
+ ts.endDate = typeof ts.endDate === 'string'
170
+ ? SkyDateHelper.fromStringSky(ts.endDate)?.endOf('day')
171
+ : ts.date.plus({ days: 3 }).endOf('day');
172
+ // Map TS to Spirit.
173
+ const spirit = this.guids.get(ts.spirit);
174
+ ts.spirit = spirit;
175
+ spirit.ts ??= [];
176
+ spirit.ts.push(ts);
177
+ tsCounts[spirit.name] ??= 0;
178
+ tsCounts[spirit.name]++;
179
+ ts.number = i + 1;
180
+ ts.visit = tsCounts[spirit.name];
181
+ // Map TS to Spirit Tree.
182
+ const tree = this.guids.get(ts.tree);
183
+ ts.tree = tree;
184
+ tree.ts = ts;
185
+ });
186
+ }
187
+ resolveSpecialVisits() {
188
+ this.data.specialVisits.items.forEach((sv, i) => {
189
+ // Initialize dates
190
+ if (typeof sv.date === 'string') {
191
+ sv.date = SkyDateHelper.fromStringSky(sv.date);
192
+ }
193
+ if (typeof sv.endDate === 'string') {
194
+ sv.endDate = SkyDateHelper.fromStringSky(sv.endDate).endOf('day');
195
+ }
196
+ // Map SV to Area.
197
+ if (sv.area) {
198
+ const area = this.guids.get(sv.area);
199
+ sv.area = area;
200
+ area.rs ??= [];
201
+ area.rs.push(sv);
202
+ }
203
+ // Map Visits.
204
+ sv.spirits?.forEach((visit, si) => {
205
+ visit = this.guids.get(visit);
206
+ sv.spirits[si] = visit;
207
+ visit.visit = sv;
208
+ // Map Visit to Spirit.
209
+ const spirit = this.guids.get(visit.spirit);
210
+ sv.spirits[si].spirit = spirit;
211
+ spirit.visits ??= [];
212
+ spirit.visits.push(visit);
213
+ // Map Visit to Spirit Tree.
214
+ const tree = this.guids.get(visit.tree);
215
+ sv.spirits[si].tree = tree;
216
+ tree.visit = visit;
217
+ });
218
+ });
219
+ }
220
+ resolveSpiritTrees() {
221
+ this.data.spiritTrees.items.forEach(spiritTree => {
222
+ // Map Spirit Tree to Node.
223
+ if (spiritTree.node) {
224
+ const node = this.guids.get(spiritTree.node);
225
+ if (!node) {
226
+ console.error('Node not found', spiritTree.node);
227
+ }
228
+ spiritTree.node = node;
229
+ node.spiritTree = spiritTree;
230
+ this.resolveNode(node);
231
+ }
232
+ // Map Spirit tree tier.
233
+ if (typeof spiritTree.tier === 'string') {
234
+ const tier = this.guids.get(spiritTree.tier);
235
+ if (!tier) {
236
+ console.error('Spirit tree tier not found', spiritTree.tier);
237
+ }
238
+ spiritTree.tier = tier;
239
+ tier.spiritTree = spiritTree;
240
+ SpiritTreeHelper.getNodes(spiritTree).forEach(n => n.spiritTree = spiritTree);
241
+ }
242
+ });
243
+ }
244
+ resolveSpiritTreeTiers() {
245
+ this.data.spiritTreeTiers.items.forEach(tier => {
246
+ // Map tier nodes.
247
+ tier.rows?.forEach(row => {
248
+ row.forEach((node, ni) => {
249
+ if (!node) {
250
+ return;
251
+ }
252
+ const n = this.guids.get(node);
253
+ if (!n) {
254
+ console.error('Node not found', node);
255
+ }
256
+ row[ni] = n;
257
+ n.root = n;
258
+ this.resolveNode(n);
259
+ });
260
+ });
261
+ if (!tier.prev) {
262
+ tier.root = tier;
263
+ }
264
+ // Map next tier.
265
+ if (typeof tier.next === 'string') {
266
+ const nextTier = this.guids.get(tier.next);
267
+ if (!nextTier) {
268
+ console.error('Next spirit tree tier not found', tier.next);
269
+ }
270
+ tier.next = nextTier;
271
+ nextTier.prev = tier;
272
+ nextTier.root = tier.root;
273
+ }
274
+ });
275
+ }
276
+ resolveEvents() {
277
+ this.data.events.items.forEach(event => {
278
+ event.instances?.forEach((eventInstance, iInstance) => {
279
+ eventInstance = this.guids.get(eventInstance);
280
+ event.instances[iInstance] = eventInstance;
281
+ eventInstance.event = event;
282
+ eventInstance.number = iInstance + 1;
283
+ // Initialize dates
284
+ if (typeof eventInstance.date === 'string') {
285
+ eventInstance.date = SkyDateHelper.fromStringSky(eventInstance.date);
286
+ }
287
+ if (typeof eventInstance.endDate === 'string') {
288
+ SkyDateHelper.fromStringSky(eventInstance.endDate).endOf('day');
289
+ }
290
+ // Map shops to instance.
291
+ eventInstance.shops?.forEach((shop, iShop) => {
292
+ shop = this.guids.get(shop);
293
+ eventInstance.shops[iShop] = shop;
294
+ shop.event = eventInstance;
295
+ });
296
+ // Initialize event spirits.
297
+ eventInstance.spirits?.forEach((eventSpirit, ies) => {
298
+ eventSpirit = this.guids.get(eventSpirit);
299
+ eventInstance.spirits[ies] = eventSpirit;
300
+ eventSpirit.eventInstance = eventInstance;
301
+ const spirit = this.guids.get(eventSpirit.spirit);
302
+ if (!spirit) {
303
+ console.error('Spirit not found', eventSpirit.spirit);
304
+ }
305
+ eventSpirit.spirit = spirit;
306
+ eventSpirit.spirit.events = [];
307
+ eventSpirit.spirit.events.push(eventSpirit);
308
+ const tree = this.guids.get(eventSpirit.tree);
309
+ if (!tree) {
310
+ console.error('Tree not found', eventSpirit.tree);
311
+ }
312
+ eventSpirit.tree = tree;
313
+ tree.eventInstanceSpirit = eventSpirit;
314
+ });
315
+ });
316
+ });
317
+ }
318
+ resolveShops() {
319
+ this.data.shops.items.forEach(shop => {
320
+ // Map Shop to Spirit.
321
+ if (shop.spirit) {
322
+ const spirit = this.guids.get(shop.spirit);
323
+ shop.spirit = spirit;
324
+ spirit.shops ??= [];
325
+ spirit.shops.push(shop);
326
+ }
327
+ shop.iaps?.forEach((iap, iIap) => {
328
+ iap = this.guids.get(iap);
329
+ shop.iaps[iIap] = iap;
330
+ iap.shop = shop;
331
+ iap.items?.forEach((itemGuid, iItem) => {
332
+ const item = this.guids.get(itemGuid);
333
+ if (!item) {
334
+ console.error('Item not found', itemGuid);
335
+ }
336
+ iap.items[iItem] = item;
337
+ item.iaps ??= [];
338
+ item.iaps.push(iap);
339
+ if (iap.bought) {
340
+ item.unlocked = true;
341
+ }
342
+ });
343
+ });
344
+ if (shop.itemList) {
345
+ const itemList = this.guids.get(shop.itemList);
346
+ shop.itemList = itemList;
347
+ itemList.shop = shop;
348
+ }
349
+ });
350
+ }
351
+ resolveItems() {
352
+ const ids = new Set();
353
+ const types = new Set();
354
+ for (const type in ItemType) {
355
+ types.add(type);
356
+ }
357
+ let shouldWarn = false;
358
+ const emoteOrders = {};
359
+ const emotes = [];
360
+ this.data.items.items.forEach(item => {
361
+ if (typeof (item.id) === 'number') {
362
+ if (ids.has(item.id)) {
363
+ console.error('Duplicate item ID.', item.id, item);
364
+ shouldWarn = true;
365
+ }
366
+ else {
367
+ ids.add(item.id);
368
+ this.ids.set(item.id, item);
369
+ }
370
+ }
371
+ else {
372
+ console.error('Item ID not defined', item);
373
+ shouldWarn = true;
374
+ }
375
+ if (!item.type || !types.has(item.type)) {
376
+ console.error('Item type not defined.', item);
377
+ shouldWarn = true;
378
+ }
379
+ if (item.type === 'Emote') {
380
+ if (item.level === 1) {
381
+ emoteOrders[item.name] = item.order ?? 999999;
382
+ }
383
+ else {
384
+ emotes.push(item);
385
+ }
386
+ }
387
+ if (!item.unlocked && item.autoUnlocked) {
388
+ item.unlocked = true;
389
+ }
390
+ item.order ??= 999999;
391
+ });
392
+ emotes.forEach(emote => emote.order = emoteOrders[emote.name] ?? emote.order);
393
+ shouldWarn && alert('Misconfigured items. Please report this issue.');
394
+ }
395
+ resolveItemLists() {
396
+ this.data.itemLists.items.forEach(itemList => {
397
+ itemList.items.forEach(itemNode => {
398
+ itemNode.itemList = itemList;
399
+ if (typeof itemNode.item === 'string') {
400
+ const item = this.guids.get(itemNode.item);
401
+ itemNode.item = item;
402
+ item.listNodes ??= [];
403
+ item.listNodes.push(itemNode);
404
+ }
405
+ });
406
+ });
407
+ }
408
+ resolveSeasonItems() {
409
+ for (const season of this.data.seasons.items) {
410
+ // Spirit items
411
+ for (const spirit of season.spirits ?? []) {
412
+ const items = SpiritTreeHelper.getItems(spirit.tree, true);
413
+ for (const item of items) {
414
+ item.season = season;
415
+ }
416
+ }
417
+ // IAP items
418
+ for (const shop of season.shops ?? []) {
419
+ for (const iap of shop.iaps ?? []) {
420
+ for (const item of iap.items ?? []) {
421
+ item.season = season;
422
+ }
423
+ }
424
+ }
425
+ }
426
+ }
427
+ resolveNode(node, prev, root) {
428
+ root ??= node;
429
+ const getNode = (guid) => {
430
+ const v = this.guids.get(guid);
431
+ return this.resolveNode(v, node, root ?? node);
432
+ };
433
+ node.root = root;
434
+ if (prev) {
435
+ node.prev = prev;
436
+ }
437
+ if (typeof node.n === 'string') {
438
+ node.n = getNode(node.n);
439
+ }
440
+ if (typeof node.nw === 'string') {
441
+ node.nw = getNode(node.nw);
442
+ }
443
+ if (typeof node.ne === 'string') {
444
+ node.ne = getNode(node.ne);
445
+ }
446
+ if (typeof node.item === 'string') {
447
+ const item = this.guids.get(node.item);
448
+ if (!item) {
449
+ console.error('Node item not found', node, node.item);
450
+ }
451
+ node.item = item;
452
+ item.nodes ??= [];
453
+ item.nodes.push(node);
454
+ }
455
+ else if (node.item) {
456
+ node.item.nodes ??= [];
457
+ node.item.nodes.push(node);
458
+ }
459
+ if (node.hiddenItems?.length) {
460
+ node.hiddenItems.forEach((itemGuid, i) => {
461
+ if (typeof itemGuid !== 'string')
462
+ return;
463
+ const item = this.guids.get(itemGuid);
464
+ if (!item) {
465
+ console.error('Node hidden item not found', node, itemGuid);
466
+ }
467
+ node.hiddenItems[i] = item;
468
+ item.hiddenNodes ??= [];
469
+ item.hiddenNodes.push(node);
470
+ // Mark hidden item as unlocked.
471
+ if (node.unlocked) {
472
+ item.unlocked = true;
473
+ }
474
+ });
475
+ }
476
+ return node;
477
+ }
478
+ }
479
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,30 +1,47 @@
1
1
  {
2
2
  "name": "skygame-data",
3
- "version": "0.0.1",
3
+ "version": "0.0.4",
4
4
  "description": "Data repository for SkyGame-Planner.",
5
- "main": "index.js",
5
+ "scripts": {
6
+ "json-build": "node ./src/scripts/json-build.cjs",
7
+ "build": "npm run json-build && tsc",
8
+ "test": "tsx tests/try-parse.ts"
9
+ },
10
+ "main": "dist/index.js",
11
+ "types": "dist/index.d.ts",
12
+ "type": "module",
13
+ "exports": {
14
+ ".": {
15
+ "types": "./dist/index.d.ts",
16
+ "import": "./dist/index.js"
17
+ },
18
+ "./interfaces/*": {
19
+ "types": "./dist/interfaces/*.d.ts"
20
+ }
21
+ },
6
22
  "files": [
7
23
  "dist",
8
24
  "assets"
9
25
  ],
10
- "scripts": {
11
- "build": "tsc"
12
- },
26
+ "author": "Silverfeelin",
27
+ "license": "MIT",
28
+ "homepage": "https://github.com/Silverfeelin/SkyGame-Data#readme",
13
29
  "repository": {
14
30
  "type": "git",
15
31
  "url": "git+https://github.com/Silverfeelin/SkyGame-Data.git"
16
32
  },
17
- "keywords": [],
18
- "author": "",
19
- "license": "MIT",
20
- "type": "module",
21
33
  "bugs": {
22
34
  "url": "https://github.com/Silverfeelin/SkyGame-Data/issues"
23
35
  },
24
- "homepage": "https://github.com/Silverfeelin/SkyGame-Data#readme",
25
36
  "devDependencies": {
37
+ "@types/luxon": "^3.7.1",
26
38
  "@types/node": "^24.10.1",
27
39
  "ts-node": "^10.9.2",
40
+ "tsx": "^4.20.6",
28
41
  "typescript": "^5.9.3"
42
+ },
43
+ "dependencies": {
44
+ "jsonc-parser": "^3.3.1",
45
+ "luxon": "^3.7.2"
29
46
  }
30
47
  }