@shipload/sdk 1.0.0-next.45 → 1.0.0-next.47

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 (43) hide show
  1. package/lib/shipload.d.ts +236 -39
  2. package/lib/shipload.js +1465 -191
  3. package/lib/shipload.js.map +1 -1
  4. package/lib/shipload.m.js +1450 -192
  5. package/lib/shipload.m.js.map +1 -1
  6. package/lib/testing.d.ts +81 -15
  7. package/lib/testing.js +377 -44
  8. package/lib/testing.js.map +1 -1
  9. package/lib/testing.m.js +378 -45
  10. package/lib/testing.m.js.map +1 -1
  11. package/package.json +1 -1
  12. package/src/capabilities/gathering.test.ts +14 -1
  13. package/src/capabilities/gathering.ts +6 -5
  14. package/src/capabilities/modules.ts +13 -0
  15. package/src/contracts/server.ts +242 -28
  16. package/src/data/capabilities.ts +1 -1
  17. package/src/data/entities.json +93 -19
  18. package/src/data/item-ids.ts +12 -0
  19. package/src/data/items.json +76 -2
  20. package/src/data/kind-registry.json +10 -0
  21. package/src/data/metadata.ts +75 -7
  22. package/src/data/recipes-runtime.ts +1 -0
  23. package/src/data/recipes.json +736 -0
  24. package/src/derivation/capabilities.test.ts +11 -11
  25. package/src/derivation/capabilities.ts +42 -27
  26. package/src/derivation/crafting.ts +13 -9
  27. package/src/derivation/index.ts +2 -0
  28. package/src/derivation/recipe-usage.test.ts +11 -7
  29. package/src/derivation/stars.test.ts +16 -0
  30. package/src/derivation/stars.ts +10 -0
  31. package/src/derivation/stratum.ts +11 -4
  32. package/src/entities/makers.ts +8 -1
  33. package/src/index-module.ts +5 -1
  34. package/src/managers/actions.ts +10 -0
  35. package/src/nft/buildImmutableData.ts +1 -1
  36. package/src/nft/description.ts +25 -12
  37. package/src/resolution/describe-module.ts +21 -8
  38. package/src/resolution/resolve-item.ts +31 -33
  39. package/src/scheduling/projection.ts +8 -1
  40. package/src/subscriptions/manager.cluster.test.ts +7 -2
  41. package/src/subscriptions/types.ts +1 -0
  42. package/src/utils/cargo.test.ts +14 -0
  43. package/src/utils/cargo.ts +2 -0
@@ -43,7 +43,7 @@ export const capabilityAttributes: CapabilityAttribute[] = [
43
43
  {
44
44
  capability: 'Energy',
45
45
  attribute: 'capacity',
46
- description: 'Energy capacity from Reactors and installed Battery Bank modules',
46
+ description: 'Energy capacity from Power Cores and installed Battery Bank modules',
47
47
  },
48
48
  {capability: 'Energy', attribute: 'recharge', description: 'Energy regeneration rate'},
49
49
  {capability: 'Loading', attribute: 'mass', description: 'Weight of the loader unit itself'},
@@ -8,23 +8,28 @@
8
8
  "slots": [
9
9
  {
10
10
  "type": "any",
11
- "outputPct": 100
11
+ "outputPct": 80,
12
+ "maxTier": 1
12
13
  },
13
14
  {
14
15
  "type": "any",
15
- "outputPct": 100
16
+ "outputPct": 80,
17
+ "maxTier": 1
16
18
  },
17
19
  {
18
20
  "type": "any",
19
- "outputPct": 100
21
+ "outputPct": 80,
22
+ "maxTier": 1
20
23
  },
21
24
  {
22
25
  "type": "any",
23
- "outputPct": 100
26
+ "outputPct": 80,
27
+ "maxTier": 1
24
28
  },
25
29
  {
26
30
  "type": "any",
27
- "outputPct": 100
31
+ "outputPct": 80,
32
+ "maxTier": 1
28
33
  }
29
34
  ]
30
35
  },
@@ -33,23 +38,28 @@
33
38
  "slots": [
34
39
  {
35
40
  "type": "loader",
36
- "outputPct": 100
41
+ "outputPct": 100,
42
+ "maxTier": 1
37
43
  },
38
44
  {
39
45
  "type": "storage",
40
- "outputPct": 100
46
+ "outputPct": 100,
47
+ "maxTier": 1
41
48
  },
42
49
  {
43
50
  "type": "storage",
44
- "outputPct": 100
51
+ "outputPct": 100,
52
+ "maxTier": 1
45
53
  },
46
54
  {
47
55
  "type": "storage",
48
- "outputPct": 100
56
+ "outputPct": 100,
57
+ "maxTier": 1
49
58
  },
50
59
  {
51
60
  "type": "storage",
52
- "outputPct": 100
61
+ "outputPct": 100,
62
+ "maxTier": 1
53
63
  }
54
64
  ]
55
65
  },
@@ -58,11 +68,13 @@
58
68
  "slots": [
59
69
  {
60
70
  "type": "generator",
61
- "outputPct": 200
71
+ "outputPct": 200,
72
+ "maxTier": 1
62
73
  },
63
74
  {
64
75
  "type": "gatherer",
65
- "outputPct": 200
76
+ "outputPct": 200,
77
+ "maxTier": 1
66
78
  }
67
79
  ]
68
80
  },
@@ -71,11 +83,13 @@
71
83
  "slots": [
72
84
  {
73
85
  "type": "generator",
74
- "outputPct": 200
86
+ "outputPct": 200,
87
+ "maxTier": 1
75
88
  },
76
89
  {
77
90
  "type": "crafter",
78
- "outputPct": 200
91
+ "outputPct": 200,
92
+ "maxTier": 1
79
93
  }
80
94
  ]
81
95
  },
@@ -84,11 +98,13 @@
84
98
  "slots": [
85
99
  {
86
100
  "type": "generator",
87
- "outputPct": 200
101
+ "outputPct": 200,
102
+ "maxTier": 1
88
103
  },
89
104
  {
90
105
  "type": "launcher",
91
- "outputPct": 200
106
+ "outputPct": 200,
107
+ "maxTier": 1
92
108
  }
93
109
  ]
94
110
  },
@@ -97,15 +113,18 @@
97
113
  "slots": [
98
114
  {
99
115
  "type": "storage",
100
- "outputPct": 100
116
+ "outputPct": 100,
117
+ "maxTier": 1
101
118
  },
102
119
  {
103
120
  "type": "storage",
104
- "outputPct": 100
121
+ "outputPct": 100,
122
+ "maxTier": 1
105
123
  },
106
124
  {
107
125
  "type": "storage",
108
- "outputPct": 100
126
+ "outputPct": 100,
127
+ "maxTier": 1
109
128
  }
110
129
  ]
111
130
  },
@@ -116,5 +135,60 @@
116
135
  {
117
136
  "entityItemId": 20200,
118
137
  "slots": []
138
+ },
139
+ {
140
+ "entityItemId": 20210,
141
+ "slots": [
142
+ {
143
+ "type": "engine",
144
+ "outputPct": 100,
145
+ "maxTier": 2
146
+ },
147
+ {
148
+ "type": "generator",
149
+ "outputPct": 100,
150
+ "maxTier": 2
151
+ },
152
+ {
153
+ "type": "gatherer",
154
+ "outputPct": 100,
155
+ "maxTier": 2
156
+ },
157
+ {
158
+ "type": "gatherer",
159
+ "outputPct": 100,
160
+ "maxTier": 2
161
+ },
162
+ {
163
+ "type": "any",
164
+ "outputPct": 80,
165
+ "maxTier": 1
166
+ }
167
+ ]
168
+ },
169
+ {
170
+ "entityItemId": 20211,
171
+ "slots": [
172
+ {
173
+ "type": "engine",
174
+ "outputPct": 100,
175
+ "maxTier": 2
176
+ },
177
+ {
178
+ "type": "generator",
179
+ "outputPct": 100,
180
+ "maxTier": 2
181
+ },
182
+ {
183
+ "type": "hauler",
184
+ "outputPct": 100,
185
+ "maxTier": 2
186
+ },
187
+ {
188
+ "type": "hauler",
189
+ "outputPct": 100,
190
+ "maxTier": 2
191
+ }
192
+ ]
119
193
  }
120
194
  ]
@@ -80,4 +80,16 @@ export const ITEM_MASS_CATCHER_T1_PACKED = 10206
80
80
  export const ITEM_HUB_T1_PACKED = 10207
81
81
  export const ITEM_PLATE_T2 = 20001
82
82
  export const ITEM_FRAME_T2 = 20002
83
+ export const ITEM_PLASMA_CELL_T2 = 20003
84
+ export const ITEM_RESONATOR_T2 = 20004
85
+ export const ITEM_BEAM_T2 = 20005
86
+ export const ITEM_SENSOR_T2 = 20006
87
+ export const ITEM_POLYMER_T2 = 20007
88
+ export const ITEM_CERAMIC_T2 = 20008
89
+ export const ITEM_REACTOR_T2 = 20009
90
+ export const ITEM_RESIN_T2 = 20010
91
+ export const ITEM_GATHERER_T2 = 20102
92
+ export const ITEM_HAULER_T2 = 20106
83
93
  export const ITEM_CONTAINER_T2_PACKED = 20200
94
+ export const ITEM_PROSPECTOR_T2_PACKED = 20210
95
+ export const ITEM_HAULER_SHIP_T2_PACKED = 20211
@@ -529,20 +529,94 @@
529
529
  },
530
530
  {
531
531
  "id": 20001,
532
- "mass": 500,
532
+ "mass": 6400,
533
533
  "type": "component",
534
534
  "tier": 2
535
535
  },
536
536
  {
537
537
  "id": 20002,
538
- "mass": 300,
538
+ "mass": 6400,
539
539
  "type": "component",
540
540
  "tier": 2
541
541
  },
542
+ {
543
+ "id": 20003,
544
+ "mass": 6400,
545
+ "type": "component",
546
+ "tier": 2
547
+ },
548
+ {
549
+ "id": 20004,
550
+ "mass": 6400,
551
+ "type": "component",
552
+ "tier": 2
553
+ },
554
+ {
555
+ "id": 20005,
556
+ "mass": 6400,
557
+ "type": "component",
558
+ "tier": 2
559
+ },
560
+ {
561
+ "id": 20006,
562
+ "mass": 6400,
563
+ "type": "component",
564
+ "tier": 2
565
+ },
566
+ {
567
+ "id": 20007,
568
+ "mass": 6400,
569
+ "type": "component",
570
+ "tier": 2
571
+ },
572
+ {
573
+ "id": 20008,
574
+ "mass": 6400,
575
+ "type": "component",
576
+ "tier": 2
577
+ },
578
+ {
579
+ "id": 20009,
580
+ "mass": 6400,
581
+ "type": "component",
582
+ "tier": 2
583
+ },
584
+ {
585
+ "id": 20010,
586
+ "mass": 6400,
587
+ "type": "component",
588
+ "tier": 2
589
+ },
590
+ {
591
+ "id": 20102,
592
+ "mass": 1536000,
593
+ "type": "module",
594
+ "tier": 2,
595
+ "subtype": "gatherer"
596
+ },
597
+ {
598
+ "id": 20106,
599
+ "mass": 1536000,
600
+ "type": "module",
601
+ "tier": 2,
602
+ "subtype": "hauler"
603
+ },
542
604
  {
543
605
  "id": 20200,
544
606
  "mass": 80000,
545
607
  "type": "entity",
546
608
  "tier": 2
609
+ },
610
+ {
611
+ "id": 20210,
612
+ "mass": 3840000,
613
+ "type": "entity",
614
+ "tier": 2
615
+ },
616
+ {
617
+ "id": 20211,
618
+ "mass": 3840000,
619
+ "type": "entity",
620
+ "tier": 2
547
621
  }
548
622
  ]
@@ -116,6 +116,16 @@
116
116
  "itemId": 10207,
117
117
  "kind": "hub",
118
118
  "displayLabel": ""
119
+ },
120
+ {
121
+ "itemId": 20210,
122
+ "kind": "ship",
123
+ "displayLabel": "Prospector"
124
+ },
125
+ {
126
+ "itemId": 20211,
127
+ "kind": "ship",
128
+ "displayLabel": "Hauler"
119
129
  }
120
130
  ]
121
131
  }
@@ -176,7 +176,7 @@ export const itemMetadata: Record<number, ItemMetadata> = {
176
176
  color: '#E86344',
177
177
  },
178
178
  10101: {
179
- name: 'Reactor',
179
+ name: 'Power Core',
180
180
  description: 'Basic energy system. Stores and recharges energy from resonant crystals.',
181
181
  color: '#4ADBFF',
182
182
  },
@@ -215,7 +215,7 @@ export const itemMetadata: Record<number, ItemMetadata> = {
215
215
  },
216
216
  10108: {
217
217
  name: 'Battery Bank',
218
- description: 'Stores additional charge produced by reactors.',
218
+ description: 'Stores additional charge produced by the power core.',
219
219
  color: '#4ADBFF',
220
220
  },
221
221
  10109: {
@@ -253,7 +253,7 @@ export const itemMetadata: Record<number, ItemMetadata> = {
253
253
  },
254
254
  10205: {
255
255
  name: 'Mass Driver',
256
- description: 'Planetary launch platform with generator and drive coil module slots.',
256
+ description: 'Planetary launch platform with power core and drive coil module slots.',
257
257
  color: '#E86344',
258
258
  },
259
259
  10206: {
@@ -280,6 +280,60 @@ export const itemMetadata: Record<number, ItemMetadata> = {
280
280
  'Advanced composite framing reinforced with tier 2 regolith and biomass polymer.',
281
281
  color: '#C4A57B',
282
282
  },
283
+ 20003: {
284
+ name: 'Plasma Cell',
285
+ description: 'Advanced high-energy gaseous storage cell reinforced with tier 2 gas.',
286
+ color: '#E86344',
287
+ },
288
+ 20004: {
289
+ name: 'Resonator',
290
+ description: 'Advanced crystalline resonance lattice reinforced with tier 2 crystal.',
291
+ color: '#4ADBFF',
292
+ },
293
+ 20005: {
294
+ name: 'Beam',
295
+ description: 'Advanced heavy-duty structural beam reinforced with tier 2 ore.',
296
+ color: '#7B8D9E',
297
+ },
298
+ 20006: {
299
+ name: 'Sensor',
300
+ description: 'Advanced crystal-lattice sensing element reinforced with tier 2 crystal.',
301
+ color: '#4ADBFF',
302
+ },
303
+ 20007: {
304
+ name: 'Polymer',
305
+ description: 'Advanced pliable biomass-derived polymer reinforced with tier 2 biomass.',
306
+ color: '#5A8B3E',
307
+ },
308
+ 20008: {
309
+ name: 'Ceramic',
310
+ description: 'Advanced hardened ceramic reinforced with tier 2 regolith.',
311
+ color: '#C4A57B',
312
+ },
313
+ 20009: {
314
+ name: 'Reactor',
315
+ description: 'Advanced gas-pressurized reaction vessel reinforced with tier 2 gas.',
316
+ color: '#B877FF',
317
+ },
318
+ 20010: {
319
+ name: 'Resin',
320
+ description: 'Advanced saturated organic binder reinforced with tier 2 biomass.',
321
+ color: '#5A8B3E',
322
+ },
323
+
324
+ // === Modules (T2) ===
325
+ 20102: {
326
+ name: 'Limpet Bay',
327
+ description: 'Advanced gathering system. Reinforced probes and conduits for deeper yield.',
328
+ color: '#7B8D9E',
329
+ },
330
+
331
+ 20106: {
332
+ name: 'Tractor Beam',
333
+ description:
334
+ 'Advanced haul beam projector reinforced with tier 2 components for greater towing capacity.',
335
+ color: '#4ADBFF',
336
+ },
283
337
 
284
338
  // === Entities (packed, T2) ===
285
339
  20200: {
@@ -287,17 +341,31 @@ export const itemMetadata: Record<number, ItemMetadata> = {
287
341
  description: 'Advanced cargo container with improved capacity formulas.',
288
342
  color: '#9BADB8',
289
343
  },
344
+ 20210: {
345
+ name: 'Prospector',
346
+ description:
347
+ 'Advanced exploration vessel with tiered engine, power core, and limpet bay slots.',
348
+ color: '#4AE898',
349
+ },
350
+ 20211: {
351
+ name: 'Hauler',
352
+ description:
353
+ 'Advanced towing vessel with tiered engine, generator, and tractor beam slots.',
354
+ color: '#4AE898',
355
+ },
290
356
  }
291
357
 
292
358
  export const entityMetadata: Record<number, EntityMetadata> = {
293
- 10201: {moduleSlotLabels: ['Engine', 'Reactor', 'Limpet Bay', 'Shuttle Bay', 'Cargo Hold']},
359
+ 10201: {moduleSlotLabels: ['Engine', 'Power Core', 'Limpet Bay', 'Shuttle Bay', 'Cargo Hold']},
294
360
  10202: {
295
361
  moduleSlotLabels: ['Shuttle Bay', 'Cargo Hold', 'Cargo Hold', 'Cargo Hold', 'Cargo Hold'],
296
362
  },
297
- 10203: {moduleSlotLabels: ['Reactor', 'Limpet Bay']},
298
- 10204: {moduleSlotLabels: ['Reactor', 'Fabricator']},
299
- 10205: {moduleSlotLabels: ['Reactor', 'Drive Coil']},
363
+ 10203: {moduleSlotLabels: ['Power Core', 'Limpet Bay']},
364
+ 10204: {moduleSlotLabels: ['Power Core', 'Fabricator']},
365
+ 10205: {moduleSlotLabels: ['Power Core', 'Drive Coil']},
300
366
  10206: {moduleSlotLabels: ['Cargo Hold', 'Cargo Hold', 'Cargo Hold']},
367
+ 20210: {moduleSlotLabels: ['Engine', 'Power Core', 'Limpet Bay', 'Limpet Bay', 'Flex Slot']},
368
+ 20211: {moduleSlotLabels: ['Engine', 'Power Core', 'Tractor Beam', 'Tractor Beam']},
301
369
  }
302
370
 
303
371
  for (const item of items as Array<{id: number}>) {
@@ -23,6 +23,7 @@ export interface Recipe {
23
23
  export interface EntitySlot {
24
24
  type: ModuleType
25
25
  outputPct: number
26
+ maxTier: number
26
27
  }
27
28
 
28
29
  export interface EntityLayout {