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

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 (41) hide show
  1. package/lib/shipload.d.ts +235 -39
  2. package/lib/shipload.js +1399 -157
  3. package/lib/shipload.js.map +1 -1
  4. package/lib/shipload.m.js +1385 -158
  5. package/lib/shipload.m.js.map +1 -1
  6. package/lib/testing.d.ts +81 -15
  7. package/lib/testing.js +374 -41
  8. package/lib/testing.js.map +1 -1
  9. package/lib/testing.m.js +375 -42
  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 +4 -0
  15. package/src/contracts/server.ts +242 -28
  16. package/src/data/entities.json +93 -19
  17. package/src/data/item-ids.ts +12 -0
  18. package/src/data/items.json +76 -2
  19. package/src/data/kind-registry.json +10 -0
  20. package/src/data/metadata.ts +68 -0
  21. package/src/data/recipes-runtime.ts +1 -0
  22. package/src/data/recipes.json +720 -0
  23. package/src/derivation/capabilities.test.ts +11 -11
  24. package/src/derivation/capabilities.ts +42 -27
  25. package/src/derivation/index.ts +2 -0
  26. package/src/derivation/recipe-usage.test.ts +11 -7
  27. package/src/derivation/stars.test.ts +16 -0
  28. package/src/derivation/stars.ts +10 -0
  29. package/src/derivation/stratum.ts +11 -4
  30. package/src/entities/makers.ts +8 -1
  31. package/src/index-module.ts +5 -1
  32. package/src/managers/actions.ts +10 -0
  33. package/src/nft/buildImmutableData.ts +1 -1
  34. package/src/nft/description.ts +20 -11
  35. package/src/resolution/describe-module.ts +21 -8
  36. package/src/resolution/resolve-item.ts +31 -33
  37. package/src/scheduling/projection.ts +8 -1
  38. package/src/subscriptions/manager.cluster.test.ts +7 -2
  39. package/src/subscriptions/types.ts +1 -0
  40. package/src/utils/cargo.test.ts +14 -0
  41. package/src/utils/cargo.ts +2 -0
@@ -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
  }
@@ -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 (T2)',
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,6 +341,18 @@ 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, generator, and gatherer 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> = {
@@ -298,6 +364,8 @@ export const entityMetadata: Record<number, EntityMetadata> = {
298
364
  10204: {moduleSlotLabels: ['Reactor', 'Fabricator']},
299
365
  10205: {moduleSlotLabels: ['Reactor', 'Drive Coil']},
300
366
  10206: {moduleSlotLabels: ['Cargo Hold', 'Cargo Hold', 'Cargo Hold']},
367
+ 20210: {moduleSlotLabels: ['Engine', 'Reactor', 'Limpet Bay', 'Limpet Bay', 'Flex Socket']},
368
+ 20211: {moduleSlotLabels: ['Engine', 'Reactor', '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 {