summaryrefslogtreecommitdiff
path: root/nodejs/model
diff options
context:
space:
mode:
authorJulien Dessaux2024-03-21 17:08:37 +0100
committerJulien Dessaux2024-03-27 15:21:00 +0100
commitd668eac4a63a9aa98c3efff395faa23cfcea1c1b (patch)
tree691e3bb471bcacadb975f581f73e09b84287b4a5 /nodejs/model
parent[javascript] fixed mining loop (diff)
downloadspacetraders-d668eac4a63a9aa98c3efff395faa23cfcea1c1b.tar.gz
spacetraders-d668eac4a63a9aa98c3efff395faa23cfcea1c1b.tar.bz2
spacetraders-d668eac4a63a9aa98c3efff395faa23cfcea1c1b.zip
[node] begin the great typescript rewrite
Diffstat (limited to 'nodejs/model')
-rw-r--r--nodejs/model/agent.ts8
-rw-r--r--nodejs/model/api.ts32
-rw-r--r--nodejs/model/cargo.ts17
-rw-r--r--nodejs/model/contract.ts22
-rw-r--r--nodejs/model/ship.ts56
5 files changed, 135 insertions, 0 deletions
diff --git a/nodejs/model/agent.ts b/nodejs/model/agent.ts
new file mode 100644
index 0000000..dce6424
--- /dev/null
+++ b/nodejs/model/agent.ts
@@ -0,0 +1,8 @@
+export type Agent = {
+ accountId: string;
+ credits: number;
+ headquarters: string;
+ shipCount: number;
+ startingFaction: string;
+ symbol: string;
+};
diff --git a/nodejs/model/api.ts b/nodejs/model/api.ts
new file mode 100644
index 0000000..5092157
--- /dev/null
+++ b/nodejs/model/api.ts
@@ -0,0 +1,32 @@
+export type APIError = {
+ apiError: 'APIError';
+ error: string;
+ code: number;
+ data: any; // TODO
+};
+
+export type Meta = {
+ limit: number;
+ page: number;
+ total: number;
+}
+
+export type Request = {
+ endpoint: string; // the path part of the url to call
+ method?: string; // HTTP method for `fetch` call, defaults to 'GET'
+ page?: number; // run a paginated request starting from this page until all the following pages are fetched
+ payload?: { [key:string]: any}; // optional json object that will be sent along the request
+ priority?: number; // optional priority value, defaults to 10. lower than 10 means the message will be sent faster
+};
+
+export type RequestPromise<T> = {
+ reject: (reason?: any) => void;
+ request: Request;
+ resolve: (value: Response<T> | PromiseLike<Response<T>>) => void;
+};
+
+export type Response<T> = {
+ data: T;
+ error?: APIError;
+ meta?: Meta;
+}
diff --git a/nodejs/model/cargo.ts b/nodejs/model/cargo.ts
new file mode 100644
index 0000000..869fa49
--- /dev/null
+++ b/nodejs/model/cargo.ts
@@ -0,0 +1,17 @@
+export type Inventory = {
+ description: string;
+ name: string;
+ symbol: string;
+ units: number;
+};
+
+export type Cargo = {
+ "capacity": number;
+ "units": number;
+ "inventory": Array<Inventory>;
+};
+
+// Custom type, not from space traders api
+export type CargoManifest = {
+ [key: string]: number;
+};
diff --git a/nodejs/model/contract.ts b/nodejs/model/contract.ts
new file mode 100644
index 0000000..eb7add4
--- /dev/null
+++ b/nodejs/model/contract.ts
@@ -0,0 +1,22 @@
+export type Contract = {
+ id: string;
+ factionSymbol: string;
+ type: string;
+ terms: {
+ deadline: Date;
+ payment: {
+ onAccepted: number;
+ onFulfilled: number;
+ },
+ deliver: Array<{
+ tradeSymbol: string;
+ destinationSymbol: string;
+ unitsRequired: number;
+ unitsFulfilled: number;
+ }>;
+ };
+ accepted: boolean;
+ fulfilled: boolean;
+ expiration: Date;
+ deadlineToAccept: Date;
+};
diff --git a/nodejs/model/ship.ts b/nodejs/model/ship.ts
new file mode 100644
index 0000000..9aaf601
--- /dev/null
+++ b/nodejs/model/ship.ts
@@ -0,0 +1,56 @@
+import { Cargo } from './cargo.ts';
+
+export type Cooldown = {
+ shipSymbol: string;
+ totalSeconds: number;
+ remainingSeconds: number;
+};
+
+export type Consummed = {
+ amount: number;
+ timestamp: Date;
+};
+
+export type Fuel = {
+ capacity: number;
+ consummed: Consummed;
+ current: number;
+};
+
+export type Nav = {
+ flightMode: string;
+ route: Route;
+ status: string;
+ systemSymbol: string;
+ waypointSymbol: string;
+};
+
+export type Route = {
+ arrival: Date;
+ departureTime: Date;
+ destination: RouteEndpoint;
+ origin: RouteEndpoint;
+};
+
+export type RouteEndpoint = {
+ type: string;
+ symbol: string;
+ systemSymbol: string;
+ x: number;
+ y: number;
+};
+
+export type Ship = {
+ cargo: Cargo;
+ cooldown: Cooldown;
+ // crew
+ // engine
+ // frame
+ fuel: Fuel;
+ // modules
+ // mounts
+ nav: Nav;
+ // reactor
+ // registration
+ symbol: string;
+};