@aephia/atlas-kit 0.0.0
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 +202 -0
- package/README.md +124 -0
- package/dist/bindings.d.ts +11 -0
- package/dist/bindings.d.ts.map +1 -0
- package/dist/bindings.js +11 -0
- package/dist/bindings.js.map +1 -0
- package/dist/cargo/actions/index.d.ts +122 -0
- package/dist/cargo/actions/index.d.ts.map +1 -0
- package/dist/cargo/actions/index.js +526 -0
- package/dist/cargo/actions/index.js.map +1 -0
- package/dist/cargo/index.d.ts +77 -0
- package/dist/cargo/index.d.ts.map +1 -0
- package/dist/cargo/index.js +102 -0
- package/dist/cargo/index.js.map +1 -0
- package/dist/claim-stakes/index.d.ts +64 -0
- package/dist/claim-stakes/index.d.ts.map +1 -0
- package/dist/claim-stakes/index.js +97 -0
- package/dist/claim-stakes/index.js.map +1 -0
- package/dist/client/context.d.ts +21 -0
- package/dist/client/context.d.ts.map +1 -0
- package/dist/client/context.js +1374 -0
- package/dist/client/context.js.map +1 -0
- package/dist/client/contracts.d.ts +671 -0
- package/dist/client/contracts.d.ts.map +1 -0
- package/dist/client/contracts.js +2 -0
- package/dist/client/contracts.js.map +1 -0
- package/dist/client/deployments.d.ts +3 -0
- package/dist/client/deployments.d.ts.map +1 -0
- package/dist/client/deployments.js +2 -0
- package/dist/client/deployments.js.map +1 -0
- package/dist/client/errors.d.ts +227 -0
- package/dist/client/errors.d.ts.map +1 -0
- package/dist/client/errors.js +288 -0
- package/dist/client/errors.js.map +1 -0
- package/dist/client/index.d.ts +7 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +5 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/lifecycle.d.ts +4 -0
- package/dist/client/lifecycle.d.ts.map +1 -0
- package/dist/client/lifecycle.js +10 -0
- package/dist/client/lifecycle.js.map +1 -0
- package/dist/client/provider-errors.d.ts +9 -0
- package/dist/client/provider-errors.d.ts.map +1 -0
- package/dist/client/provider-errors.js +12 -0
- package/dist/client/provider-errors.js.map +1 -0
- package/dist/client/reconciliation.d.ts +10 -0
- package/dist/client/reconciliation.d.ts.map +1 -0
- package/dist/client/reconciliation.js +9 -0
- package/dist/client/reconciliation.js.map +1 -0
- package/dist/client/refs.d.ts +23 -0
- package/dist/client/refs.d.ts.map +1 -0
- package/dist/client/refs.js +12 -0
- package/dist/client/refs.js.map +1 -0
- package/dist/combat/index.d.ts +256 -0
- package/dist/combat/index.d.ts.map +1 -0
- package/dist/combat/index.js +222 -0
- package/dist/combat/index.js.map +1 -0
- package/dist/crafting/index.d.ts +308 -0
- package/dist/crafting/index.d.ts.map +1 -0
- package/dist/crafting/index.js +400 -0
- package/dist/crafting/index.js.map +1 -0
- package/dist/factions/index.d.ts +292 -0
- package/dist/factions/index.d.ts.map +1 -0
- package/dist/factions/index.js +334 -0
- package/dist/factions/index.js.map +1 -0
- package/dist/fleets/actions/index.d.ts +200 -0
- package/dist/fleets/actions/index.d.ts.map +1 -0
- package/dist/fleets/actions/index.js +854 -0
- package/dist/fleets/actions/index.js.map +1 -0
- package/dist/fleets/index.d.ts +100 -0
- package/dist/fleets/index.d.ts.map +1 -0
- package/dist/fleets/index.js +124 -0
- package/dist/fleets/index.js.map +1 -0
- package/dist/identity/index.d.ts +225 -0
- package/dist/identity/index.d.ts.map +1 -0
- package/dist/identity/index.js +341 -0
- package/dist/identity/index.js.map +1 -0
- package/dist/index.d.ts +401 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +519 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/c4/adapter.d.ts +6 -0
- package/dist/internal/c4/adapter.d.ts.map +1 -0
- package/dist/internal/c4/adapter.js +2 -0
- package/dist/internal/c4/adapter.js.map +1 -0
- package/dist/internal/c4/bindings.d.ts +4 -0
- package/dist/internal/c4/bindings.d.ts.map +1 -0
- package/dist/internal/c4/bindings.js +4 -0
- package/dist/internal/c4/bindings.js.map +1 -0
- package/dist/internal/c4/character-modifier.d.ts +5 -0
- package/dist/internal/c4/character-modifier.d.ts.map +1 -0
- package/dist/internal/c4/character-modifier.js +100 -0
- package/dist/internal/c4/character-modifier.js.map +1 -0
- package/dist/internal/c4/claim-stake.d.ts +140 -0
- package/dist/internal/c4/claim-stake.d.ts.map +1 -0
- package/dist/internal/c4/claim-stake.js +205 -0
- package/dist/internal/c4/claim-stake.js.map +1 -0
- package/dist/internal/c4/combat.d.ts +98 -0
- package/dist/internal/c4/combat.d.ts.map +1 -0
- package/dist/internal/c4/combat.js +232 -0
- package/dist/internal/c4/combat.js.map +1 -0
- package/dist/internal/c4/crafting.d.ts +170 -0
- package/dist/internal/c4/crafting.d.ts.map +1 -0
- package/dist/internal/c4/crafting.js +387 -0
- package/dist/internal/c4/crafting.js.map +1 -0
- package/dist/internal/c4/factions.d.ts +248 -0
- package/dist/internal/c4/factions.d.ts.map +1 -0
- package/dist/internal/c4/factions.js +589 -0
- package/dist/internal/c4/factions.js.map +1 -0
- package/dist/internal/c4/fleet-crew-binding.d.ts +12 -0
- package/dist/internal/c4/fleet-crew-binding.d.ts.map +1 -0
- package/dist/internal/c4/fleet-crew-binding.js +51 -0
- package/dist/internal/c4/fleet-crew-binding.js.map +1 -0
- package/dist/internal/c4/fleet.d.ts +310 -0
- package/dist/internal/c4/fleet.d.ts.map +1 -0
- package/dist/internal/c4/fleet.js +393 -0
- package/dist/internal/c4/fleet.js.map +1 -0
- package/dist/internal/c4/game.d.ts +192 -0
- package/dist/internal/c4/game.d.ts.map +1 -0
- package/dist/internal/c4/game.js +396 -0
- package/dist/internal/c4/game.js.map +1 -0
- package/dist/internal/c4/identity.d.ts +193 -0
- package/dist/internal/c4/identity.d.ts.map +1 -0
- package/dist/internal/c4/identity.js +180 -0
- package/dist/internal/c4/identity.js.map +1 -0
- package/dist/internal/c4/loot-layout.d.ts +20 -0
- package/dist/internal/c4/loot-layout.d.ts.map +1 -0
- package/dist/internal/c4/loot-layout.js +29 -0
- package/dist/internal/c4/loot-layout.js.map +1 -0
- package/dist/internal/c4/loyalty.d.ts +102 -0
- package/dist/internal/c4/loyalty.d.ts.map +1 -0
- package/dist/internal/c4/loyalty.js +318 -0
- package/dist/internal/c4/loyalty.js.map +1 -0
- package/dist/internal/c4/market.d.ts +112 -0
- package/dist/internal/c4/market.d.ts.map +1 -0
- package/dist/internal/c4/market.js +247 -0
- package/dist/internal/c4/market.js.map +1 -0
- package/dist/internal/c4/pda.d.ts +6 -0
- package/dist/internal/c4/pda.d.ts.map +1 -0
- package/dist/internal/c4/pda.js +45 -0
- package/dist/internal/c4/pda.js.map +1 -0
- package/dist/internal/c4/profile-faction.d.ts +14 -0
- package/dist/internal/c4/profile-faction.d.ts.map +1 -0
- package/dist/internal/c4/profile-faction.js +69 -0
- package/dist/internal/c4/profile-faction.js.map +1 -0
- package/dist/internal/c4/rewards.d.ts +135 -0
- package/dist/internal/c4/rewards.d.ts.map +1 -0
- package/dist/internal/c4/rewards.js +305 -0
- package/dist/internal/c4/rewards.js.map +1 -0
- package/dist/internal/c4/scanning.d.ts +85 -0
- package/dist/internal/c4/scanning.d.ts.map +1 -0
- package/dist/internal/c4/scanning.js +180 -0
- package/dist/internal/c4/scanning.js.map +1 -0
- package/dist/internal/c4/starbase.d.ts +186 -0
- package/dist/internal/c4/starbase.d.ts.map +1 -0
- package/dist/internal/c4/starbase.js +259 -0
- package/dist/internal/c4/starbase.js.map +1 -0
- package/dist/internal/c4/world.d.ts +294 -0
- package/dist/internal/c4/world.d.ts.map +1 -0
- package/dist/internal/c4/world.js +417 -0
- package/dist/internal/c4/world.js.map +1 -0
- package/dist/internal/cargo.d.ts +65 -0
- package/dist/internal/cargo.d.ts.map +1 -0
- package/dist/internal/cargo.js +46 -0
- package/dist/internal/cargo.js.map +1 -0
- package/dist/internal/claim-stake.d.ts +31 -0
- package/dist/internal/claim-stake.d.ts.map +1 -0
- package/dist/internal/claim-stake.js +20 -0
- package/dist/internal/claim-stake.js.map +1 -0
- package/dist/internal/fleet.d.ts +165 -0
- package/dist/internal/fleet.d.ts.map +1 -0
- package/dist/internal/fleet.js +179 -0
- package/dist/internal/fleet.js.map +1 -0
- package/dist/internal/game-context.d.ts +4 -0
- package/dist/internal/game-context.d.ts.map +1 -0
- package/dist/internal/game-context.js +9 -0
- package/dist/internal/game-context.js.map +1 -0
- package/dist/internal/immutable-tree.d.ts +5 -0
- package/dist/internal/immutable-tree.d.ts.map +1 -0
- package/dist/internal/immutable-tree.js +47 -0
- package/dist/internal/immutable-tree.js.map +1 -0
- package/dist/internal/json.d.ts +7 -0
- package/dist/internal/json.d.ts.map +1 -0
- package/dist/internal/json.js +33 -0
- package/dist/internal/json.js.map +1 -0
- package/dist/internal/planning/authorization-adapter.d.ts +63 -0
- package/dist/internal/planning/authorization-adapter.d.ts.map +1 -0
- package/dist/internal/planning/authorization-adapter.js +222 -0
- package/dist/internal/planning/authorization-adapter.js.map +1 -0
- package/dist/internal/read-meta.d.ts +84 -0
- package/dist/internal/read-meta.d.ts.map +1 -0
- package/dist/internal/read-meta.js +28 -0
- package/dist/internal/read-meta.js.map +1 -0
- package/dist/internal/resolved-snapshot.d.ts +3 -0
- package/dist/internal/resolved-snapshot.d.ts.map +1 -0
- package/dist/internal/resolved-snapshot.js +11 -0
- package/dist/internal/resolved-snapshot.js.map +1 -0
- package/dist/internal/zink/provider.d.ts +9 -0
- package/dist/internal/zink/provider.d.ts.map +1 -0
- package/dist/internal/zink/provider.js +213 -0
- package/dist/internal/zink/provider.js.map +1 -0
- package/dist/loyalty/index.d.ts +195 -0
- package/dist/loyalty/index.d.ts.map +1 -0
- package/dist/loyalty/index.js +289 -0
- package/dist/loyalty/index.js.map +1 -0
- package/dist/markets/index.d.ts +195 -0
- package/dist/markets/index.d.ts.map +1 -0
- package/dist/markets/index.js +232 -0
- package/dist/markets/index.js.map +1 -0
- package/dist/mining/index.d.ts +156 -0
- package/dist/mining/index.d.ts.map +1 -0
- package/dist/mining/index.js +236 -0
- package/dist/mining/index.js.map +1 -0
- package/dist/planning/assembly.d.ts +42 -0
- package/dist/planning/assembly.d.ts.map +1 -0
- package/dist/planning/assembly.js +141 -0
- package/dist/planning/assembly.js.map +1 -0
- package/dist/planning/composition.d.ts +4 -0
- package/dist/planning/composition.d.ts.map +1 -0
- package/dist/planning/composition.js +76 -0
- package/dist/planning/composition.js.map +1 -0
- package/dist/planning/execution.d.ts +93 -0
- package/dist/planning/execution.d.ts.map +1 -0
- package/dist/planning/execution.js +549 -0
- package/dist/planning/execution.js.map +1 -0
- package/dist/planning/index.d.ts +219 -0
- package/dist/planning/index.d.ts.map +1 -0
- package/dist/planning/index.js +375 -0
- package/dist/planning/index.js.map +1 -0
- package/dist/planning/plan-instances.d.ts +3 -0
- package/dist/planning/plan-instances.d.ts.map +1 -0
- package/dist/planning/plan-instances.js +8 -0
- package/dist/planning/plan-instances.js.map +1 -0
- package/dist/planning/plan-sequence-checkpoint.d.ts +154 -0
- package/dist/planning/plan-sequence-checkpoint.d.ts.map +1 -0
- package/dist/planning/plan-sequence-checkpoint.js +449 -0
- package/dist/planning/plan-sequence-checkpoint.js.map +1 -0
- package/dist/planning/plan-sequence-execution.d.ts +72 -0
- package/dist/planning/plan-sequence-execution.d.ts.map +1 -0
- package/dist/planning/plan-sequence-execution.js +410 -0
- package/dist/planning/plan-sequence-execution.js.map +1 -0
- package/dist/planning/plan-sequence.d.ts +244 -0
- package/dist/planning/plan-sequence.d.ts.map +1 -0
- package/dist/planning/plan-sequence.js +264 -0
- package/dist/planning/plan-sequence.js.map +1 -0
- package/dist/planning/simulation.d.ts +50 -0
- package/dist/planning/simulation.d.ts.map +1 -0
- package/dist/planning/simulation.js +69 -0
- package/dist/planning/simulation.js.map +1 -0
- package/dist/registry/combat.d.ts +5 -0
- package/dist/registry/combat.d.ts.map +1 -0
- package/dist/registry/combat.js +7 -0
- package/dist/registry/combat.js.map +1 -0
- package/dist/registry/index.d.ts +138 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +397 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/rewards/index.d.ts +202 -0
- package/dist/rewards/index.d.ts.map +1 -0
- package/dist/rewards/index.js +290 -0
- package/dist/rewards/index.js.map +1 -0
- package/dist/scanning/index.d.ts +185 -0
- package/dist/scanning/index.d.ts.map +1 -0
- package/dist/scanning/index.js +207 -0
- package/dist/scanning/index.js.map +1 -0
- package/dist/starbases/actions/index.d.ts +60 -0
- package/dist/starbases/actions/index.d.ts.map +1 -0
- package/dist/starbases/actions/index.js +245 -0
- package/dist/starbases/actions/index.js.map +1 -0
- package/dist/starbases/index.d.ts +165 -0
- package/dist/starbases/index.d.ts.map +1 -0
- package/dist/starbases/index.js +213 -0
- package/dist/starbases/index.js.map +1 -0
- package/dist/world/index.d.ts +180 -0
- package/dist/world/index.d.ts.map +1 -0
- package/dist/world/index.js +265 -0
- package/dist/world/index.js.map +1 -0
- package/package.json +140 -0
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import type { SageContext } from '../client/contracts.js';
|
|
2
|
+
import { entityRef } from '../client/refs.js';
|
|
3
|
+
import type { CargoDefinitionSummary, ShipDefinitionSummary } from '../registry/index.js';
|
|
4
|
+
import type { FleetAccountData, FleetStateData } from './c4/fleet.js';
|
|
5
|
+
import type { WorldCoordinates } from './c4/world.js';
|
|
6
|
+
/** Used/total Fleet capacity in the units of its on-chain capacity axis.
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* declare const capacity: CapacitySummary;
|
|
10
|
+
* const remaining = capacity.remaining;
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
export interface CapacitySummary {
|
|
14
|
+
readonly used: bigint;
|
|
15
|
+
readonly total: bigint;
|
|
16
|
+
readonly remaining: bigint;
|
|
17
|
+
readonly overCapacity: bigint;
|
|
18
|
+
}
|
|
19
|
+
/** Summarizes capacity without reporting negative remaining space. */
|
|
20
|
+
export declare function capacitySummary(used: bigint, total: bigint): CapacitySummary;
|
|
21
|
+
interface ResolvedCargoAmount extends CargoDefinitionSummary {
|
|
22
|
+
readonly amount: bigint;
|
|
23
|
+
}
|
|
24
|
+
interface ResolvedShipAmount extends ShipDefinitionSummary {
|
|
25
|
+
readonly quantity: bigint;
|
|
26
|
+
}
|
|
27
|
+
type ResolvedFleetState = Exclude<FleetStateData, {
|
|
28
|
+
readonly kind: 'idle' | 'docked' | 'mining' | 'claimStakeTransfer';
|
|
29
|
+
}> | {
|
|
30
|
+
readonly kind: 'idle';
|
|
31
|
+
readonly coordinates: WorldCoordinates;
|
|
32
|
+
} | (Omit<Extract<FleetStateData, {
|
|
33
|
+
readonly kind: 'docked';
|
|
34
|
+
}>, 'system'> & {
|
|
35
|
+
readonly system: ReturnType<typeof entityRef<'starSystem'>>;
|
|
36
|
+
}) | (Omit<Extract<FleetStateData, {
|
|
37
|
+
readonly kind: 'mining';
|
|
38
|
+
}>, 'asteroid' | 'resourceIds'> & {
|
|
39
|
+
readonly asteroid: ReturnType<typeof entityRef<'celestialBody'>>;
|
|
40
|
+
readonly resources: readonly CargoDefinitionSummary[];
|
|
41
|
+
}) | (Omit<Extract<FleetStateData, {
|
|
42
|
+
readonly kind: 'claimStakeTransfer';
|
|
43
|
+
}>, 'planet' | 'claimStake' | 'load' | 'unload'> & {
|
|
44
|
+
readonly planet: ReturnType<typeof entityRef<'celestialBody'>>;
|
|
45
|
+
readonly claimStake: ReturnType<typeof entityRef<'claimStakeInstance'>>;
|
|
46
|
+
readonly load: readonly ResolvedCargoAmount[];
|
|
47
|
+
readonly unload: readonly ResolvedCargoAmount[];
|
|
48
|
+
});
|
|
49
|
+
/** Fleet data after joining account ids against the lazy definitions registry.
|
|
50
|
+
* @example
|
|
51
|
+
* ```ts
|
|
52
|
+
* declare const fleet: ResolvedFleetAccountData;
|
|
53
|
+
* const shipName = fleet.ships[0]?.name;
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export interface ResolvedFleetAccountData extends Omit<FleetAccountData, 'fleetShips' | 'fuelTank' | 'ammoBank' | 'cargoHold' | 'components' | 'respawningCargo' | 'state' | 'subProfile' | 'subProfileInvalidator'> {
|
|
57
|
+
readonly subProfile?: FleetAccountData['subProfile'];
|
|
58
|
+
readonly subProfileInvalidator?: FleetAccountData['subProfileInvalidator'];
|
|
59
|
+
readonly ships: readonly ResolvedShipAmount[];
|
|
60
|
+
readonly fuel: ResolvedCargoAmount;
|
|
61
|
+
readonly ammo: ResolvedCargoAmount;
|
|
62
|
+
readonly cargoHold: {
|
|
63
|
+
readonly seqId: number;
|
|
64
|
+
readonly storageCost: bigint;
|
|
65
|
+
readonly items: readonly ResolvedCargoAmount[];
|
|
66
|
+
};
|
|
67
|
+
readonly components: {
|
|
68
|
+
readonly seqId: number;
|
|
69
|
+
readonly storageCost: bigint;
|
|
70
|
+
readonly items: readonly ResolvedCargoAmount[];
|
|
71
|
+
};
|
|
72
|
+
readonly respawningCargo: {
|
|
73
|
+
readonly seqId: number;
|
|
74
|
+
readonly storageCost: bigint;
|
|
75
|
+
readonly items: readonly ResolvedCargoAmount[];
|
|
76
|
+
};
|
|
77
|
+
readonly capacities: {
|
|
78
|
+
readonly cargo: CapacitySummary;
|
|
79
|
+
readonly fuel: CapacitySummary;
|
|
80
|
+
readonly ammo: CapacitySummary;
|
|
81
|
+
};
|
|
82
|
+
readonly state: ResolvedFleetState;
|
|
83
|
+
}
|
|
84
|
+
/** Resolves every ship/cargo id and computes Fleet storage capacities. */
|
|
85
|
+
export declare function resolveFleetAccount(context: SageContext, fleet: FleetAccountData): Promise<ResolvedFleetAccountData>;
|
|
86
|
+
/** Date-valued timers derived from Fleet account sentinels and lifecycle state.
|
|
87
|
+
*
|
|
88
|
+
* Fleet snapshots retain their exact bigint unix-second fields; these values
|
|
89
|
+
* are an ergonomic projection for UI scheduling and display.
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* ```ts
|
|
93
|
+
* declare const timers: FleetTimers;
|
|
94
|
+
* console.log(
|
|
95
|
+
* timers.arrivesAt?.toISOString(),
|
|
96
|
+
* timers.transferEndsAt?.toISOString(),
|
|
97
|
+
* );
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
export interface FleetTimers {
|
|
101
|
+
readonly warpCooldownEndsAt?: Date;
|
|
102
|
+
readonly scanCooldownEndsAt?: Date;
|
|
103
|
+
readonly abilityPowerReloadsAt?: Date;
|
|
104
|
+
readonly shieldRegenerationResumesAt?: Date;
|
|
105
|
+
readonly arrivesAt?: Date;
|
|
106
|
+
readonly recoversAt?: Date;
|
|
107
|
+
readonly transferEndsAt?: Date;
|
|
108
|
+
}
|
|
109
|
+
type FleetTimerState = {
|
|
110
|
+
readonly kind: 'warp' | 'subwarp';
|
|
111
|
+
readonly arrivesAtUnixSeconds: bigint;
|
|
112
|
+
} | {
|
|
113
|
+
readonly kind: 'respawn';
|
|
114
|
+
readonly recoversAtUnixSeconds: bigint;
|
|
115
|
+
} | {
|
|
116
|
+
readonly kind: 'claimStakeTransfer';
|
|
117
|
+
readonly endAtUnixSeconds: bigint;
|
|
118
|
+
} | {
|
|
119
|
+
readonly kind: Exclude<FleetStateData['kind'], 'warp' | 'subwarp' | 'respawn' | 'claimStakeTransfer'>;
|
|
120
|
+
};
|
|
121
|
+
/** Derives only active Fleet timers; non-positive sentinels and values outside
|
|
122
|
+
* JavaScript's supported Date range stay absent.
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* ```ts
|
|
126
|
+
* declare const fleet: FleetSnapshot;
|
|
127
|
+
* const timers = deriveFleetTimers(fleet);
|
|
128
|
+
* console.log(
|
|
129
|
+
* timers.warpCooldownEndsAt?.toISOString(),
|
|
130
|
+
* timers.transferEndsAt?.toISOString(),
|
|
131
|
+
* );
|
|
132
|
+
* ```
|
|
133
|
+
*/
|
|
134
|
+
export declare function deriveFleetTimers<TState extends FleetTimerState>(fleet: Pick<FleetAccountData, 'warpCooldownExpiresAt' | 'scanCooldownExpiresAt' | 'apReloadExpiresAt' | 'shieldBreakDelayExpiresAt'> & {
|
|
135
|
+
readonly state: TState;
|
|
136
|
+
}): FleetTimers;
|
|
137
|
+
/** Display-only interpolation matching incremental on-chain subwarp settlement.
|
|
138
|
+
*
|
|
139
|
+
* @example
|
|
140
|
+
* ```ts
|
|
141
|
+
* declare const subwarp: SubwarpPosition;
|
|
142
|
+
* if (subwarp.displayOnly) console.log(subwarp.position, subwarp.progress);
|
|
143
|
+
* ```
|
|
144
|
+
*/
|
|
145
|
+
export interface SubwarpPosition {
|
|
146
|
+
readonly displayOnly: true;
|
|
147
|
+
readonly position: WorldCoordinates;
|
|
148
|
+
readonly progress: number;
|
|
149
|
+
}
|
|
150
|
+
/** Interpolates a display-only subwarp position, clamped to both endpoints.
|
|
151
|
+
*
|
|
152
|
+
* The result must not be used as authoritative on-chain position state.
|
|
153
|
+
*
|
|
154
|
+
* @example
|
|
155
|
+
* ```ts
|
|
156
|
+
* declare const state: Extract<FleetStateData, { readonly kind: 'subwarp' }>;
|
|
157
|
+
* const position = interpolateSubwarpPosition(state, 1_700_000_000n);
|
|
158
|
+
* console.log(position.position, position.progress);
|
|
159
|
+
* ```
|
|
160
|
+
*/
|
|
161
|
+
export declare function interpolateSubwarpPosition(state: Extract<FleetStateData, {
|
|
162
|
+
readonly kind: 'subwarp';
|
|
163
|
+
}>, atUnixSeconds: bigint): SubwarpPosition;
|
|
164
|
+
export {};
|
|
165
|
+
//# sourceMappingURL=fleet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fleet.d.ts","sourceRoot":"","sources":["../../src/internal/fleet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EACV,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EACV,gBAAgB,EAEhB,cAAc,EACf,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGtD;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,sEAAsE;AACtE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,eAAe,CAO5E;AAED,UAAU,mBAAoB,SAAQ,sBAAsB;IAC1D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,UAAU,kBAAmB,SAAQ,qBAAqB;IACxD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,KAAK,kBAAkB,GACnB,OAAO,CACL,cAAc,EACd;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,oBAAoB,CAAC;CACpE,CACF,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC;CACxC,GACD,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,EAAE,QAAQ,CAAC,GAAG;IACtE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;CAC7D,CAAC,GACF,CAAC,IAAI,CACH,OAAO,CAAC,cAAc,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,EACpD,UAAU,GAAG,aAAa,CAC3B,GAAG;IACF,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC;IACjE,QAAQ,CAAC,SAAS,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACvD,CAAC,GACF,CAAC,IAAI,CACH,OAAO,CAAC,cAAc,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAA;CAAE,CAAC,EAChE,QAAQ,GAAG,YAAY,GAAG,MAAM,GAAG,QAAQ,CAC5C,GAAG;IACF,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC;IAC/D,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC;IACxE,QAAQ,CAAC,IAAI,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC9C,QAAQ,CAAC,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAC;CACjD,CAAC,CAAC;AAEP;;;;;;GAMG;AACH,MAAM,WAAW,wBAAyB,SAAQ,IAAI,CACpD,gBAAgB,EACd,YAAY,GACZ,UAAU,GACV,UAAU,GACV,WAAW,GACX,YAAY,GACZ,iBAAiB,GACjB,OAAO,GACP,YAAY,GACZ,uBAAuB,CAC1B;IACC,QAAQ,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC;IACrD,QAAQ,CAAC,qBAAqB,CAAC,EAAE,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;IAC3E,QAAQ,CAAC,KAAK,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC9C,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE;QAClB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS,mBAAmB,EAAE,CAAC;KAChD,CAAC;IACF,QAAQ,CAAC,UAAU,EAAE;QACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS,mBAAmB,EAAE,CAAC;KAChD,CAAC;IACF,QAAQ,CAAC,eAAe,EAAE;QACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS,mBAAmB,EAAE,CAAC;KAChD,CAAC;IACF,QAAQ,CAAC,UAAU,EAAE;QACnB,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;QAChC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;QAC/B,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;KAChC,CAAC;IACF,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;CACpC;AA8DD,0EAA0E;AAC1E,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,wBAAwB,CAAC,CA0EnC;AAUD;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAC;IACnC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAC;IACnC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,IAAI,CAAC;IACtC,QAAQ,CAAC,2BAA2B,CAAC,EAAE,IAAI,CAAC;IAC5C,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC;IAC3B,QAAQ,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC;CAChC;AAED,KAAK,eAAe,GAChB;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;CACvC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;CACxC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CACpB,cAAc,CAAC,MAAM,CAAC,EACtB,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,oBAAoB,CACtD,CAAC;CACH,CAAC;AAEN;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,SAAS,eAAe,EAC9D,KAAK,EAAE,IAAI,CACT,gBAAgB,EACd,uBAAuB,GACvB,uBAAuB,GACvB,mBAAmB,GACnB,2BAA2B,CAC9B,GAAG;IACF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,GACA,WAAW,CA8Bb;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,CAAC,cAAc,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC,EAC5D,aAAa,EAAE,MAAM,GACpB,eAAe,CAsBjB"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { entityRef } from '../client/refs.js';
|
|
2
|
+
import { resolveCargo, resolveShip } from '../registry/index.js';
|
|
3
|
+
import { isAbsentFleetAddress } from './c4/fleet.js';
|
|
4
|
+
/** Summarizes capacity without reporting negative remaining space. */
|
|
5
|
+
export function capacitySummary(used, total) {
|
|
6
|
+
return {
|
|
7
|
+
overCapacity: used > total ? used - total : 0n,
|
|
8
|
+
remaining: used < total ? total - used : 0n,
|
|
9
|
+
total,
|
|
10
|
+
used,
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
async function resolveCargoAmounts(context, amounts) {
|
|
14
|
+
return Promise.all(amounts.map(async ({ amount, cargoId }) => ({
|
|
15
|
+
...(await resolveCargo(context, cargoId)),
|
|
16
|
+
amount,
|
|
17
|
+
})));
|
|
18
|
+
}
|
|
19
|
+
async function resolveState(context, state, location) {
|
|
20
|
+
switch (state.kind) {
|
|
21
|
+
case 'idle':
|
|
22
|
+
return { coordinates: location, kind: 'idle' };
|
|
23
|
+
case 'docked':
|
|
24
|
+
return {
|
|
25
|
+
...state,
|
|
26
|
+
system: entityRef('starSystem', state.system),
|
|
27
|
+
};
|
|
28
|
+
case 'mining': {
|
|
29
|
+
const { asteroid, resourceIds, ...rest } = state;
|
|
30
|
+
return {
|
|
31
|
+
...rest,
|
|
32
|
+
asteroid: entityRef('celestialBody', asteroid),
|
|
33
|
+
resources: await Promise.all(resourceIds.map((resourceId) => resolveCargo(context, resourceId))),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
case 'claimStakeTransfer': {
|
|
37
|
+
const { claimStake, load, planet, unload, ...rest } = state;
|
|
38
|
+
return {
|
|
39
|
+
...rest,
|
|
40
|
+
claimStake: entityRef('claimStakeInstance', claimStake),
|
|
41
|
+
load: await resolveCargoAmounts(context, load),
|
|
42
|
+
planet: entityRef('celestialBody', planet),
|
|
43
|
+
unload: await resolveCargoAmounts(context, unload),
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
case 'destroyed':
|
|
47
|
+
case 'warp':
|
|
48
|
+
case 'subwarp':
|
|
49
|
+
case 'respawn':
|
|
50
|
+
return state;
|
|
51
|
+
/* v8 ignore next -- assigning a new FleetStateData variant fails compilation here. */
|
|
52
|
+
default: {
|
|
53
|
+
const exhaustive = state;
|
|
54
|
+
throw new RangeError(`Unsupported resolved Fleet state variant ${String(exhaustive)}.`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/** Resolves every ship/cargo id and computes Fleet storage capacities. */
|
|
59
|
+
export async function resolveFleetAccount(context, fleet) {
|
|
60
|
+
const [ships, fuelDefinition, ammoDefinition, cargoItems, components, respawningCargo, state,] = await Promise.all([
|
|
61
|
+
Promise.all(fleet.fleetShips.map(async ({ quantity, shipId }) => ({
|
|
62
|
+
...(await resolveShip(context, shipId, {
|
|
63
|
+
expectedSequenceId: fleet.shipDefinitionsSeqId,
|
|
64
|
+
})),
|
|
65
|
+
quantity,
|
|
66
|
+
}))),
|
|
67
|
+
resolveCargo(context, fleet.fuelTank.cargoId),
|
|
68
|
+
resolveCargo(context, fleet.ammoBank.cargoId),
|
|
69
|
+
resolveCargoAmounts(context, fleet.cargoHold.amounts),
|
|
70
|
+
resolveCargoAmounts(context, fleet.components.amounts),
|
|
71
|
+
resolveCargoAmounts(context, fleet.respawningCargo.amounts),
|
|
72
|
+
resolveState(context, fleet.state, fleet.location),
|
|
73
|
+
]);
|
|
74
|
+
const { ammoBank: _ammoBank, fleetShips: _fleetShips, fuelTank: _fuelTank, subProfile, subProfileInvalidator, ...account } = fleet;
|
|
75
|
+
return {
|
|
76
|
+
...account,
|
|
77
|
+
ammo: { ...ammoDefinition, amount: fleet.ammoBank.amount },
|
|
78
|
+
capacities: {
|
|
79
|
+
ammo: capacitySummary(fleet.ammoBank.amount, fleet.stats.cargo.ammoCapacity),
|
|
80
|
+
cargo: capacitySummary(fleet.cargoHold.storageCost, fleet.stats.cargo.cargoCapacity),
|
|
81
|
+
fuel: capacitySummary(fleet.fuelTank.amount, fleet.stats.cargo.fuelCapacity),
|
|
82
|
+
},
|
|
83
|
+
cargoHold: {
|
|
84
|
+
items: cargoItems,
|
|
85
|
+
seqId: fleet.cargoHold.seqId,
|
|
86
|
+
storageCost: fleet.cargoHold.storageCost,
|
|
87
|
+
},
|
|
88
|
+
components: {
|
|
89
|
+
items: components,
|
|
90
|
+
seqId: fleet.components.seqId,
|
|
91
|
+
storageCost: fleet.components.storageCost,
|
|
92
|
+
},
|
|
93
|
+
fuel: { ...fuelDefinition, amount: fleet.fuelTank.amount },
|
|
94
|
+
respawningCargo: {
|
|
95
|
+
items: respawningCargo,
|
|
96
|
+
seqId: fleet.respawningCargo.seqId,
|
|
97
|
+
storageCost: fleet.respawningCargo.storageCost,
|
|
98
|
+
},
|
|
99
|
+
ships,
|
|
100
|
+
state,
|
|
101
|
+
...(isAbsentFleetAddress(subProfile) ? {} : { subProfile }),
|
|
102
|
+
...(isAbsentFleetAddress(subProfileInvalidator)
|
|
103
|
+
? {}
|
|
104
|
+
: { subProfileInvalidator }),
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
const MAXIMUM_DATE_UNIX_SECONDS = 8640000000000n;
|
|
108
|
+
function dateFromUnixSeconds(value) {
|
|
109
|
+
return value > 0n && value <= MAXIMUM_DATE_UNIX_SECONDS
|
|
110
|
+
? new Date(Number(value) * 1_000)
|
|
111
|
+
: undefined;
|
|
112
|
+
}
|
|
113
|
+
/** Derives only active Fleet timers; non-positive sentinels and values outside
|
|
114
|
+
* JavaScript's supported Date range stay absent.
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* ```ts
|
|
118
|
+
* declare const fleet: FleetSnapshot;
|
|
119
|
+
* const timers = deriveFleetTimers(fleet);
|
|
120
|
+
* console.log(
|
|
121
|
+
* timers.warpCooldownEndsAt?.toISOString(),
|
|
122
|
+
* timers.transferEndsAt?.toISOString(),
|
|
123
|
+
* );
|
|
124
|
+
* ```
|
|
125
|
+
*/
|
|
126
|
+
export function deriveFleetTimers(fleet) {
|
|
127
|
+
const warpCooldownEndsAt = dateFromUnixSeconds(fleet.warpCooldownExpiresAt);
|
|
128
|
+
const scanCooldownEndsAt = dateFromUnixSeconds(fleet.scanCooldownExpiresAt);
|
|
129
|
+
const abilityPowerReloadsAt = dateFromUnixSeconds(fleet.apReloadExpiresAt);
|
|
130
|
+
const shieldRegenerationResumesAt = dateFromUnixSeconds(fleet.shieldBreakDelayExpiresAt);
|
|
131
|
+
const arrivesAt = fleet.state.kind === 'warp' || fleet.state.kind === 'subwarp'
|
|
132
|
+
? dateFromUnixSeconds(fleet.state.arrivesAtUnixSeconds)
|
|
133
|
+
: undefined;
|
|
134
|
+
const recoversAt = fleet.state.kind === 'respawn'
|
|
135
|
+
? dateFromUnixSeconds(fleet.state.recoversAtUnixSeconds)
|
|
136
|
+
: undefined;
|
|
137
|
+
const transferEndsAt = fleet.state.kind === 'claimStakeTransfer'
|
|
138
|
+
? dateFromUnixSeconds(fleet.state.endAtUnixSeconds)
|
|
139
|
+
: undefined;
|
|
140
|
+
return {
|
|
141
|
+
...(abilityPowerReloadsAt === undefined ? {} : { abilityPowerReloadsAt }),
|
|
142
|
+
...(arrivesAt === undefined ? {} : { arrivesAt }),
|
|
143
|
+
...(recoversAt === undefined ? {} : { recoversAt }),
|
|
144
|
+
...(scanCooldownEndsAt === undefined ? {} : { scanCooldownEndsAt }),
|
|
145
|
+
...(shieldRegenerationResumesAt === undefined
|
|
146
|
+
? {}
|
|
147
|
+
: { shieldRegenerationResumesAt }),
|
|
148
|
+
...(transferEndsAt === undefined ? {} : { transferEndsAt }),
|
|
149
|
+
...(warpCooldownEndsAt === undefined ? {} : { warpCooldownEndsAt }),
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
/** Interpolates a display-only subwarp position, clamped to both endpoints.
|
|
153
|
+
*
|
|
154
|
+
* The result must not be used as authoritative on-chain position state.
|
|
155
|
+
*
|
|
156
|
+
* @example
|
|
157
|
+
* ```ts
|
|
158
|
+
* declare const state: Extract<FleetStateData, { readonly kind: 'subwarp' }>;
|
|
159
|
+
* const position = interpolateSubwarpPosition(state, 1_700_000_000n);
|
|
160
|
+
* console.log(position.position, position.progress);
|
|
161
|
+
* ```
|
|
162
|
+
*/
|
|
163
|
+
export function interpolateSubwarpPosition(state, atUnixSeconds) {
|
|
164
|
+
const duration = state.durationSeconds;
|
|
165
|
+
const progress = duration <= 0
|
|
166
|
+
? atUnixSeconds < state.departsAtUnixSeconds
|
|
167
|
+
? 0
|
|
168
|
+
: 1
|
|
169
|
+
: Math.min(1, Math.max(0, Number(atUnixSeconds - state.departsAtUnixSeconds) / duration));
|
|
170
|
+
return {
|
|
171
|
+
displayOnly: true,
|
|
172
|
+
position: {
|
|
173
|
+
x: state.from.x + (state.to.x - state.from.x) * progress,
|
|
174
|
+
y: state.from.y + (state.to.y - state.from.y) * progress,
|
|
175
|
+
},
|
|
176
|
+
progress,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=fleet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fleet.js","sourceRoot":"","sources":["../../src/internal/fleet.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAK9C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAOjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAgBrD,sEAAsE;AACtE,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,KAAa;IACzD,OAAO;QACL,YAAY,EAAE,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE;QAC9C,SAAS,EAAE,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE;QAC3C,KAAK;QACL,IAAI;KACL,CAAC;AACJ,CAAC;AAwFD,KAAK,UAAU,mBAAmB,CAChC,OAAoB,EACpB,OAAwC;IAExC,OAAO,OAAO,CAAC,GAAG,CAChB,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1C,GAAG,CAAC,MAAM,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACzC,MAAM;KACP,CAAC,CAAC,CACJ,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,OAAoB,EACpB,KAAqB,EACrB,QAA0B;IAE1B,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,MAAM;YACT,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACjD,KAAK,QAAQ;YACX,OAAO;gBACL,GAAG,KAAK;gBACR,MAAM,EAAE,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC;aAC9C,CAAC;QACJ,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;YACjD,OAAO;gBACL,GAAG,IAAI;gBACP,QAAQ,EAAE,SAAS,CAAC,eAAe,EAAE,QAAQ,CAAC;gBAC9C,SAAS,EAAE,MAAM,OAAO,CAAC,GAAG,CAC1B,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CACnE;aACF,CAAC;QACJ,CAAC;QACD,KAAK,oBAAoB,CAAC,CAAC,CAAC;YAC1B,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;YAC5D,OAAO;gBACL,GAAG,IAAI;gBACP,UAAU,EAAE,SAAS,CAAC,oBAAoB,EAAE,UAAU,CAAC;gBACvD,IAAI,EAAE,MAAM,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC;gBAC9C,MAAM,EAAE,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC;gBAC1C,MAAM,EAAE,MAAM,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC;aACnD,CAAC;QACJ,CAAC;QACD,KAAK,WAAW,CAAC;QACjB,KAAK,MAAM,CAAC;QACZ,KAAK,SAAS,CAAC;QACf,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC;QACf,sFAAsF;QACtF,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,UAAU,GAAU,KAAK,CAAC;YAChC,MAAM,IAAI,UAAU,CAClB,4CAA4C,MAAM,CAAC,UAAU,CAAC,GAAG,CAClE,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAoB,EACpB,KAAuB;IAEvB,MAAM,CACJ,KAAK,EACL,cAAc,EACd,cAAc,EACd,UAAU,EACV,UAAU,EACV,eAAe,EACf,KAAK,EACN,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACpB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;YACpD,GAAG,CAAC,MAAM,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE;gBACrC,kBAAkB,EAAE,KAAK,CAAC,oBAAoB;aAC/C,CAAC,CAAC;YACH,QAAQ;SACT,CAAC,CAAC,CACJ;QACD,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC7C,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC7C,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC;QACrD,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;QACtD,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC;QAC3D,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC;KACnD,CAAC,CAAC;IACH,MAAM,EACJ,QAAQ,EAAE,SAAS,EACnB,UAAU,EAAE,WAAW,EACvB,QAAQ,EAAE,SAAS,EACnB,UAAU,EACV,qBAAqB,EACrB,GAAG,OAAO,EACX,GAAG,KAAK,CAAC;IAEV,OAAO;QACL,GAAG,OAAO;QACV,IAAI,EAAE,EAAE,GAAG,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE;QAC1D,UAAU,EAAE;YACV,IAAI,EAAE,eAAe,CACnB,KAAK,CAAC,QAAQ,CAAC,MAAM,EACrB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAC/B;YACD,KAAK,EAAE,eAAe,CACpB,KAAK,CAAC,SAAS,CAAC,WAAW,EAC3B,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAChC;YACD,IAAI,EAAE,eAAe,CACnB,KAAK,CAAC,QAAQ,CAAC,MAAM,EACrB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAC/B;SACF;QACD,SAAS,EAAE;YACT,KAAK,EAAE,UAAU;YACjB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK;YAC5B,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW;SACzC;QACD,UAAU,EAAE;YACV,KAAK,EAAE,UAAU;YACjB,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,KAAK;YAC7B,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW;SAC1C;QACD,IAAI,EAAE,EAAE,GAAG,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE;QAC1D,eAAe,EAAE;YACf,KAAK,EAAE,eAAe;YACtB,KAAK,EAAE,KAAK,CAAC,eAAe,CAAC,KAAK;YAClC,WAAW,EAAE,KAAK,CAAC,eAAe,CAAC,WAAW;SAC/C;QACD,KAAK;QACL,KAAK;QACL,GAAG,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC;QAC3D,GAAG,CAAC,oBAAoB,CAAC,qBAAqB,CAAC;YAC7C,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,qBAAqB,EAAE,CAAC;KAC/B,CAAC;AACJ,CAAC;AAED,MAAM,yBAAyB,GAAG,cAAkB,CAAC;AAErD,SAAS,mBAAmB,CAAC,KAAa;IACxC,OAAO,KAAK,GAAG,EAAE,IAAI,KAAK,IAAI,yBAAyB;QACrD,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;QACjC,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AA8CD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAQC;IAED,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC5E,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC5E,MAAM,qBAAqB,GAAG,mBAAmB,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC3E,MAAM,2BAA2B,GAAG,mBAAmB,CACrD,KAAK,CAAC,yBAAyB,CAChC,CAAC;IACF,MAAM,SAAS,GACb,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS;QAC3D,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC;QACvD,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,UAAU,GACd,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS;QAC5B,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC;QACxD,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,cAAc,GAClB,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,oBAAoB;QACvC,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC;QACnD,CAAC,CAAC,SAAS,CAAC;IAChB,OAAO;QACL,GAAG,CAAC,qBAAqB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,CAAC;QACzE,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;QACjD,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC;QACnD,GAAG,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC;QACnE,GAAG,CAAC,2BAA2B,KAAK,SAAS;YAC3C,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,2BAA2B,EAAE,CAAC;QACpC,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC;QAC3D,GAAG,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC;KACpE,CAAC;AACJ,CAAC;AAgBD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAA4D,EAC5D,aAAqB;IAErB,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC;IACvC,MAAM,QAAQ,GACZ,QAAQ,IAAI,CAAC;QACX,CAAC,CAAC,aAAa,GAAG,KAAK,CAAC,oBAAoB;YAC1C,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,IAAI,CAAC,GAAG,CACN,CAAC,EACD,IAAI,CAAC,GAAG,CACN,CAAC,EACD,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC,oBAAoB,CAAC,GAAG,QAAQ,CAC9D,CACF,CAAC;IACR,OAAO;QACL,WAAW,EAAE,IAAI;QACjB,QAAQ,EAAE;YACR,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ;YACxD,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ;SACzD;QACD,QAAQ;KACT,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Address, SageContext } from '../client/contracts.js';
|
|
2
|
+
/** Returns the configured Game address before a Game-dependent operation starts I/O. */
|
|
3
|
+
export declare function requireGameAddress(ctx: SageContext): Address;
|
|
4
|
+
//# sourceMappingURL=game-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"game-context.d.ts","sourceRoot":"","sources":["../../src/internal/game-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAEnE,wFAAwF;AACxF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAK5D"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { MissingGameContextError } from '../client/errors.js';
|
|
2
|
+
/** Returns the configured Game address before a Game-dependent operation starts I/O. */
|
|
3
|
+
export function requireGameAddress(ctx) {
|
|
4
|
+
if (ctx.game === undefined) {
|
|
5
|
+
throw new MissingGameContextError();
|
|
6
|
+
}
|
|
7
|
+
return ctx.game;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=game-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"game-context.js","sourceRoot":"","sources":["../../src/internal/game-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAG9D,wFAAwF;AACxF,MAAM,UAAU,kBAAkB,CAAC,GAAgB;IACjD,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,uBAAuB,EAAE,CAAC;IACtC,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Validates that a value is an acyclic JSON-safe tree of plain data. */
|
|
2
|
+
export declare function validateImmutableTree(value: unknown): void;
|
|
3
|
+
/** Validates and recursively freezes an immutable plain-data tree. */
|
|
4
|
+
export declare function deepFreeze<T>(value: T): Readonly<T>;
|
|
5
|
+
//# sourceMappingURL=immutable-tree.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"immutable-tree.d.ts","sourceRoot":"","sources":["../../src/internal/immutable-tree.ts"],"names":[],"mappings":"AA4DA,yEAAyE;AACzE,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAE1D;AAED,sEAAsE;AACtE,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAUnD"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
function collectImmutableTree(value, ancestors, validated, valuesToFreeze) {
|
|
2
|
+
if (value === undefined ||
|
|
3
|
+
typeof value === 'function' ||
|
|
4
|
+
typeof value === 'symbol') {
|
|
5
|
+
throw new TypeError('Decoded snapshots must be JSON-safe and may contain only serializable primitives, arrays, and plain objects. Convert undefined, symbols, and functions to explicit immutable domain values before returning them.');
|
|
6
|
+
}
|
|
7
|
+
if (value === null || typeof value !== 'object')
|
|
8
|
+
return;
|
|
9
|
+
if (ancestors.has(value)) {
|
|
10
|
+
throw new TypeError('Decoded snapshots must be JSON-safe and cannot contain cyclic object references. Return an acyclic immutable value tree.');
|
|
11
|
+
}
|
|
12
|
+
if (validated.has(value))
|
|
13
|
+
return;
|
|
14
|
+
const prototype = Object.getPrototypeOf(value);
|
|
15
|
+
if (!Array.isArray(value) &&
|
|
16
|
+
prototype !== Object.prototype &&
|
|
17
|
+
prototype !== null) {
|
|
18
|
+
throw new TypeError('Decoded snapshots may contain only primitives, arrays, and plain objects. Convert mutable built-in values to immutable domain values before returning them.');
|
|
19
|
+
}
|
|
20
|
+
ancestors.add(value);
|
|
21
|
+
for (const key of Reflect.ownKeys(value)) {
|
|
22
|
+
if (typeof key === 'symbol') {
|
|
23
|
+
throw new TypeError('Decoded snapshots must be JSON-safe and cannot contain symbol-keyed properties. Convert them to string-keyed immutable domain values.');
|
|
24
|
+
}
|
|
25
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
26
|
+
if (!('value' in descriptor)) {
|
|
27
|
+
throw new TypeError('Decoded snapshots may contain only data properties. Convert accessor properties to plain immutable domain values before returning them.');
|
|
28
|
+
}
|
|
29
|
+
collectImmutableTree(descriptor.value, ancestors, validated, valuesToFreeze);
|
|
30
|
+
}
|
|
31
|
+
ancestors.delete(value);
|
|
32
|
+
validated.add(value);
|
|
33
|
+
valuesToFreeze.push(value);
|
|
34
|
+
}
|
|
35
|
+
/** Validates that a value is an acyclic JSON-safe tree of plain data. */
|
|
36
|
+
export function validateImmutableTree(value) {
|
|
37
|
+
collectImmutableTree(value, new WeakSet(), new WeakSet(), []);
|
|
38
|
+
}
|
|
39
|
+
/** Validates and recursively freezes an immutable plain-data tree. */
|
|
40
|
+
export function deepFreeze(value) {
|
|
41
|
+
const valuesToFreeze = [];
|
|
42
|
+
collectImmutableTree(value, new WeakSet(), new WeakSet(), valuesToFreeze);
|
|
43
|
+
for (const accepted of valuesToFreeze)
|
|
44
|
+
Object.freeze(accepted);
|
|
45
|
+
return value;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=immutable-tree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"immutable-tree.js","sourceRoot":"","sources":["../../src/internal/immutable-tree.ts"],"names":[],"mappings":"AAAA,SAAS,oBAAoB,CAC3B,KAAc,EACd,SAA0B,EAC1B,SAA0B,EAC1B,cAAwB;IAExB,IACE,KAAK,KAAK,SAAS;QACnB,OAAO,KAAK,KAAK,UAAU;QAC3B,OAAO,KAAK,KAAK,QAAQ,EACzB,CAAC;QACD,MAAM,IAAI,SAAS,CACjB,mNAAmN,CACpN,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO;IACxD,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,SAAS,CACjB,0HAA0H,CAC3H,CAAC;IACJ,CAAC;IACD,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO;IAEjC,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAkB,CAAC;IAChE,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACrB,SAAS,KAAK,MAAM,CAAC,SAAS;QAC9B,SAAS,KAAK,IAAI,EAClB,CAAC;QACD,MAAM,IAAI,SAAS,CACjB,6JAA6J,CAC9J,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACrB,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,SAAS,CACjB,uIAAuI,CACxI,CAAC;QACJ,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAE,CAAC;QAChE,IAAI,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,SAAS,CACjB,yIAAyI,CAC1I,CAAC;QACJ,CAAC;QACD,oBAAoB,CAClB,UAAU,CAAC,KAAK,EAChB,SAAS,EACT,SAAS,EACT,cAAc,CACf,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACxB,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACrB,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,oBAAoB,CAAC,KAAK,EAAE,IAAI,OAAO,EAAU,EAAE,IAAI,OAAO,EAAU,EAAE,EAAE,CAAC,CAAC;AAChF,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,UAAU,CAAI,KAAQ;IACpC,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,oBAAoB,CAClB,KAAK,EACL,IAAI,OAAO,EAAU,EACrB,IAAI,OAAO,EAAU,EACrB,cAAc,CACf,CAAC;IACF,KAAK,MAAM,QAAQ,IAAI,cAAc;QAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/D,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
interface JsonSerializable {
|
|
2
|
+
toJSON(): unknown;
|
|
3
|
+
}
|
|
4
|
+
export declare function toJsonSafeValue(value: unknown, ancestors?: WeakSet<object>): unknown;
|
|
5
|
+
export declare function attachJsonSerialization<T extends object>(value: T): T & JsonSerializable;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=json.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/internal/json.ts"],"names":[],"mappings":"AAAA,UAAU,gBAAgB;IACxB,MAAM,IAAI,OAAO,CAAC;CACnB;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,OAAO,EACd,SAAS,kBAAwB,GAChC,OAAO,CA2BT;AAED,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,MAAM,EACtD,KAAK,EAAE,CAAC,GACP,CAAC,GAAG,gBAAgB,CAQtB"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export function toJsonSafeValue(value, ancestors = new WeakSet()) {
|
|
2
|
+
if (typeof value === 'bigint') {
|
|
3
|
+
return value.toString();
|
|
4
|
+
}
|
|
5
|
+
if (value instanceof Uint8Array) {
|
|
6
|
+
return [...value];
|
|
7
|
+
}
|
|
8
|
+
if (value === null || typeof value !== 'object') {
|
|
9
|
+
return value;
|
|
10
|
+
}
|
|
11
|
+
if (ancestors.has(value)) {
|
|
12
|
+
throw new TypeError('JSON-safe values cannot contain cyclic object references.');
|
|
13
|
+
}
|
|
14
|
+
ancestors.add(value);
|
|
15
|
+
const serialized = Array.isArray(value)
|
|
16
|
+
? value.map((item) => toJsonSafeValue(item, ancestors))
|
|
17
|
+
: Object.fromEntries(Object.entries(value).map(([key, item]) => [
|
|
18
|
+
key,
|
|
19
|
+
toJsonSafeValue(item, ancestors),
|
|
20
|
+
]));
|
|
21
|
+
ancestors.delete(value);
|
|
22
|
+
return serialized;
|
|
23
|
+
}
|
|
24
|
+
export function attachJsonSerialization(value) {
|
|
25
|
+
Object.defineProperty(value, 'toJSON', {
|
|
26
|
+
configurable: false,
|
|
27
|
+
enumerable: false,
|
|
28
|
+
value: () => toJsonSafeValue(value),
|
|
29
|
+
writable: false,
|
|
30
|
+
});
|
|
31
|
+
return value;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/internal/json.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,eAAe,CAC7B,KAAc,EACd,YAAY,IAAI,OAAO,EAAU;IAEjC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IACD,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;IACpB,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,SAAS,CACjB,2DAA2D,CAC5D,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACrB,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACrC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACvD,CAAC,CAAC,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;YACzC,GAAG;YACH,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC;SACjC,CAAC,CACH,CAAC;IACN,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACxB,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,KAAQ;IAER,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE;QACrC,YAAY,EAAE,KAAK;QACnB,UAAU,EAAE,KAAK;QACjB,KAAK,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC;QACnC,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;IACH,OAAO,KAA6B,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { type AccountMeta, type Address, type Instruction, type InstructionWithAccounts, type InstructionWithData, type ReadonlyUint8Array } from '@solana/kit';
|
|
2
|
+
import { sage } from '../c4/bindings.js';
|
|
3
|
+
/** Address-only authorization retained by planning before execution binds signers.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* declare const profile: Address;
|
|
8
|
+
* declare const authority: Address;
|
|
9
|
+
* const authorization: PlanAuthorization = {
|
|
10
|
+
* profile,
|
|
11
|
+
* authority,
|
|
12
|
+
* keyIndex: 0,
|
|
13
|
+
* };
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export interface PlanAuthorization {
|
|
17
|
+
readonly profile: Address;
|
|
18
|
+
readonly authority: Address;
|
|
19
|
+
readonly keyIndex: number;
|
|
20
|
+
readonly certificate?: Address;
|
|
21
|
+
}
|
|
22
|
+
type GeneratedAuthorizationFields = 'keyIndex' | 'profileValidationCertificate' | 'profileValidationProfile' | 'profileValidationSigner';
|
|
23
|
+
type AddressOnlyInput<T> = Omit<T, GeneratedAuthorizationFields> & {
|
|
24
|
+
readonly authorization: PlanAuthorization;
|
|
25
|
+
};
|
|
26
|
+
export type AddressOnlyDockedToIdleInput = AddressOnlyInput<sage.DockedToIdleInput>;
|
|
27
|
+
export type AddressOnlyIdleToDockedInput = AddressOnlyInput<sage.IdleToDockedInput>;
|
|
28
|
+
export type AddressOnlyStartSubwarpInput = AddressOnlyInput<sage.StartSubwarpInput>;
|
|
29
|
+
export type AddressOnlyStopSubwarpInput = AddressOnlyInput<sage.StopSubwarpInput>;
|
|
30
|
+
export type AddressOnlyWarpToCoordinateInput = AddressOnlyInput<sage.WarpToCoordinateInput>;
|
|
31
|
+
export type AddressOnlyWarpLaneInput = AddressOnlyInput<sage.WarpLaneInput>;
|
|
32
|
+
export type AddressOnlyTransferCargoToFleetInput = AddressOnlyInput<sage.TransferCargoToFleetInput>;
|
|
33
|
+
export type AddressOnlyTransferCargoWithinFleetInput = AddressOnlyInput<sage.TransferCargoWithinFleetInput>;
|
|
34
|
+
export type AddressOnlyRegisterStarbasePlayerInput = Omit<sage.RegisterStarbasePlayerInput, 'funder'> & {
|
|
35
|
+
readonly funder: Address;
|
|
36
|
+
};
|
|
37
|
+
export type AddressOnlyFleetSettleArrivalInput = Omit<sage.TheOneFleetStateHandlerInput, 'asteroid' | 'character' | 'funder' | 'system'> & {
|
|
38
|
+
readonly character: Address;
|
|
39
|
+
readonly funder: Address;
|
|
40
|
+
};
|
|
41
|
+
export interface AddressOnlyInstructionConfig {
|
|
42
|
+
readonly programAddress?: Address;
|
|
43
|
+
}
|
|
44
|
+
/** A Kit instruction whose signer roles carry addresses but no signer implementations. */
|
|
45
|
+
export type AddressOnlyInstruction = Instruction & InstructionWithAccounts<readonly AccountMeta[]> & InstructionWithData<ReadonlyUint8Array>;
|
|
46
|
+
/** Validates planning authorization before any instruction encoding or I/O. */
|
|
47
|
+
export declare function validatePlanAuthorization(authorization: PlanAuthorization): void;
|
|
48
|
+
export declare function adaptDockedToIdleInstruction(input: AddressOnlyDockedToIdleInput, config?: AddressOnlyInstructionConfig): AddressOnlyInstruction;
|
|
49
|
+
export declare function adaptIdleToDockedInstruction(input: AddressOnlyIdleToDockedInput, config?: AddressOnlyInstructionConfig): AddressOnlyInstruction;
|
|
50
|
+
/** Adapts the generated bidirectional Fleet/Starbase cargo instruction without retaining a signer. */
|
|
51
|
+
export declare function adaptTransferCargoToFleetInstruction(input: AddressOnlyTransferCargoToFleetInput, config?: AddressOnlyInstructionConfig): AddressOnlyInstruction;
|
|
52
|
+
/** Adapts the generated within-Fleet cargo instruction without retaining a signer. */
|
|
53
|
+
export declare function adaptTransferCargoWithinFleetInstruction(input: AddressOnlyTransferCargoWithinFleetInput, config?: AddressOnlyInstructionConfig): AddressOnlyInstruction;
|
|
54
|
+
/** Adapts StarbasePlayer registration with an address-only rent funder. */
|
|
55
|
+
export declare function adaptRegisterStarbasePlayerInstruction(input: AddressOnlyRegisterStarbasePlayerInput, config?: AddressOnlyInstructionConfig): AddressOnlyInstruction;
|
|
56
|
+
/** Adapts movement arrival settlement with an address-only rent funder. */
|
|
57
|
+
export declare function adaptFleetSettleArrivalInstruction(input: AddressOnlyFleetSettleArrivalInput, config?: AddressOnlyInstructionConfig): AddressOnlyInstruction;
|
|
58
|
+
export declare function adaptStartSubwarpInstruction(input: AddressOnlyStartSubwarpInput, config?: AddressOnlyInstructionConfig): AddressOnlyInstruction;
|
|
59
|
+
export declare function adaptStopSubwarpInstruction(input: AddressOnlyStopSubwarpInput, config?: AddressOnlyInstructionConfig): AddressOnlyInstruction;
|
|
60
|
+
export declare function adaptWarpToCoordinateInstruction(input: AddressOnlyWarpToCoordinateInput, config?: AddressOnlyInstructionConfig): AddressOnlyInstruction;
|
|
61
|
+
export declare function adaptWarpLaneInstruction(input: AddressOnlyWarpLaneInput, config?: AddressOnlyInstructionConfig): AddressOnlyInstruction;
|
|
62
|
+
export {};
|
|
63
|
+
//# sourceMappingURL=authorization-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authorization-adapter.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/authorization-adapter.ts"],"names":[],"mappings":"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"}
|