rocket-launch-live-client 0.2.0 → 0.3.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/README.md +182 -1
- package/lib/cjs/Client.js +36 -16
- package/lib/cjs/Watcher.js +171 -0
- package/lib/cjs/fetcher.js +18 -10
- package/lib/cjs/index.js +3 -1
- package/lib/cjs/types/Client.d.ts +19 -7
- package/lib/cjs/types/Client.d.ts.map +1 -1
- package/lib/cjs/types/Watcher.d.ts +92 -0
- package/lib/cjs/types/Watcher.d.ts.map +1 -0
- package/lib/cjs/types/fetcher.d.ts.map +1 -1
- package/lib/cjs/types/index.d.ts +2 -1
- package/lib/cjs/types/index.d.ts.map +1 -1
- package/lib/cjs/types/types/application.d.ts +33 -14
- package/lib/cjs/types/types/application.d.ts.map +1 -1
- package/lib/cjs/types/utils.d.ts +3 -2
- package/lib/cjs/types/utils.d.ts.map +1 -1
- package/lib/cjs/utils.js +101 -103
- package/lib/esm/Client.js +36 -16
- package/lib/esm/Watcher.js +169 -0
- package/lib/esm/fetcher.js +17 -10
- package/lib/esm/index.mjs +1 -0
- package/lib/esm/types/Client.d.ts +19 -7
- package/lib/esm/types/Client.d.ts.map +1 -1
- package/lib/esm/types/Watcher.d.ts +92 -0
- package/lib/esm/types/Watcher.d.ts.map +1 -0
- package/lib/esm/types/fetcher.d.ts.map +1 -1
- package/lib/esm/types/index.d.ts +2 -1
- package/lib/esm/types/index.d.ts.map +1 -1
- package/lib/esm/types/types/application.d.ts +33 -14
- package/lib/esm/types/types/application.d.ts.map +1 -1
- package/lib/esm/types/utils.d.ts +3 -2
- package/lib/esm/types/utils.d.ts.map +1 -1
- package/lib/esm/utils.js +99 -102
- package/package.json +1 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../../../src/types/application.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,oBAAY,WAAW;IACrB,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,QAAQ,aAAa;CACtB;AAED,yBAAiB,SAAS,CAAC;IACzB,UAAU,SAAS;QACjB,EAAE,EAAE,MAAM,CAAC;KACZ;IAED,MAAM,WAAW,OAAO;QACtB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,aAAa,CAAC,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../../../src/types/application.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/types/utils.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { RLLEndPoint, RLLQueryConfig } from "./types/application";
|
|
2
|
-
export declare const
|
|
2
|
+
export declare const formatToRLLISODate: (date: Date) => string;
|
|
3
|
+
export declare const apiKeyValidator: (apiKey: any) => string;
|
|
3
4
|
export declare const optionsValidator: (options: {
|
|
4
5
|
[key: string]: any;
|
|
5
6
|
[key: number]: any;
|
|
6
7
|
[key: symbol]: any;
|
|
7
8
|
}) => void;
|
|
8
|
-
export declare const queryOptionsValidator: (resource: RLLEndPoint, options?: RLLQueryConfig.Companies | RLLQueryConfig.Launches | RLLQueryConfig.Locations | RLLQueryConfig.Missions | RLLQueryConfig.Pads | RLLQueryConfig.Tags | RLLQueryConfig.Vehicles) =>
|
|
9
|
+
export declare const queryOptionsValidator: (resource: RLLEndPoint, options?: RLLQueryConfig.Companies | RLLQueryConfig.Launches | RLLQueryConfig.Locations | RLLQueryConfig.Missions | RLLQueryConfig.Pads | RLLQueryConfig.Tags | RLLQueryConfig.Vehicles) => URLSearchParams;
|
|
9
10
|
export declare const warn: (msg: string) => void;
|
|
10
11
|
export declare const error: (msg: string, type?: "type" | "range" | "error") => void;
|
|
11
12
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAQlE,eAAO,MAAM,eAAe,WAAY,GAAG,KAAG,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAQlE,eAAO,MAAM,kBAAkB,SAAU,IAAI,KAAG,MAE/C,CAAC;AAEF,eAAO,MAAM,eAAe,WAAY,GAAG,KAAG,MA2B7C,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;;MAEzB,IAeH,CAAC;AA6JF,eAAO,MAAM,qBAAqB,aACtB,WAAW,YAEjB,eAAe,SAAS,GACxB,eAAe,QAAQ,GACvB,eAAe,SAAS,GACxB,eAAe,QAAQ,GACvB,eAAe,IAAI,GACnB,eAAe,IAAI,GACnB,eAAe,QAAQ,KAC1B,eAwDF,CAAC;AAEF,eAAO,MAAM,IAAI,QAAS,MAAM,SAAyC,CAAC;AAE1E,eAAO,MAAM,KAAK,QACX,MAAM,SACL,MAAM,GAAG,OAAO,GAAG,OAAO,KAC/B,IAYF,CAAC"}
|
package/lib/esm/utils.js
CHANGED
|
@@ -3,6 +3,9 @@ const getLeadingZero = (month, offset = 0) => {
|
|
|
3
3
|
const str = "0".concat((month + offset).toString());
|
|
4
4
|
return str.slice(-2);
|
|
5
5
|
};
|
|
6
|
+
export const formatToRLLISODate = (date) => {
|
|
7
|
+
return date.toISOString().slice(0, 19).concat("Z");
|
|
8
|
+
};
|
|
6
9
|
export const apiKeyValidator = (apiKey) => {
|
|
7
10
|
if (apiKey === undefined) {
|
|
8
11
|
error("RLL Client requires API Key", "type");
|
|
@@ -10,13 +13,15 @@ export const apiKeyValidator = (apiKey) => {
|
|
|
10
13
|
if (typeof apiKey !== "string") {
|
|
11
14
|
error("RLL Client API Key must be a string", "type");
|
|
12
15
|
}
|
|
13
|
-
|
|
16
|
+
const trimmedKey = apiKey.trim();
|
|
17
|
+
if (trimmedKey === "") {
|
|
14
18
|
error("RLL Client API Key cannot be an empty string", "type");
|
|
15
19
|
}
|
|
16
|
-
const validator =
|
|
20
|
+
const validator = trimmedKey.match(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/i);
|
|
17
21
|
if (validator === null) {
|
|
18
22
|
error("RLL Client API Key appears malformed. RLL Client API Keys are in UUID format.", "type");
|
|
19
23
|
}
|
|
24
|
+
return trimmedKey;
|
|
20
25
|
};
|
|
21
26
|
export const optionsValidator = (options) => {
|
|
22
27
|
for (const option in options) {
|
|
@@ -32,112 +37,94 @@ export const optionsValidator = (options) => {
|
|
|
32
37
|
};
|
|
33
38
|
const validators = {
|
|
34
39
|
string: (option) => {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
resolve(option);
|
|
46
|
-
});
|
|
40
|
+
if (typeof option === "number") {
|
|
41
|
+
return option.toString();
|
|
42
|
+
}
|
|
43
|
+
if (typeof option !== "string") {
|
|
44
|
+
throw "Must be a string";
|
|
45
|
+
}
|
|
46
|
+
if (option.length <= 0) {
|
|
47
|
+
throw "String must have length greater than 0";
|
|
48
|
+
}
|
|
49
|
+
return option;
|
|
47
50
|
},
|
|
48
51
|
boolean: (option) => {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
resolve(option === true ? 1 : 0);
|
|
54
|
-
});
|
|
52
|
+
if (typeof option !== "boolean") {
|
|
53
|
+
throw "Must be a boolean";
|
|
54
|
+
}
|
|
55
|
+
return option === true ? 1 : 0;
|
|
55
56
|
},
|
|
56
57
|
number: (option) => {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
else {
|
|
67
|
-
resolve(Number(option));
|
|
68
|
-
}
|
|
69
|
-
});
|
|
58
|
+
if (typeof option === "number") {
|
|
59
|
+
return option;
|
|
60
|
+
}
|
|
61
|
+
if (typeof option !== "string" || option === "" || isNaN(Number(option))) {
|
|
62
|
+
throw "Must be a number";
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
return Number(option);
|
|
66
|
+
}
|
|
70
67
|
},
|
|
71
68
|
countryCode: (option) => {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
resolve(option);
|
|
80
|
-
});
|
|
69
|
+
if (typeof option !== "string") {
|
|
70
|
+
throw "Must be a string";
|
|
71
|
+
}
|
|
72
|
+
if (!isValidCountryCode(option)) {
|
|
73
|
+
throw "Invalid country code. Country codes should follow ISO 3166-1 A2 convention, like 'US'.";
|
|
74
|
+
}
|
|
75
|
+
return option;
|
|
81
76
|
},
|
|
82
77
|
stateCode: (option) => {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
resolve(option);
|
|
91
|
-
});
|
|
78
|
+
if (typeof option !== "string") {
|
|
79
|
+
throw "Must be a string";
|
|
80
|
+
}
|
|
81
|
+
if (!isValidStateCode(option)) {
|
|
82
|
+
throw "Invalid United States State Code. State Codes should follow ISO 3166-2 convention, like 'FL'.";
|
|
83
|
+
}
|
|
84
|
+
return option;
|
|
92
85
|
},
|
|
93
86
|
cosparId: (option) => {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
resolve(option);
|
|
102
|
-
});
|
|
87
|
+
if (typeof option !== "string") {
|
|
88
|
+
throw "Must be a string";
|
|
89
|
+
}
|
|
90
|
+
if (!option.match(/^\d{4}\-\d{3}$/g)) {
|
|
91
|
+
throw "Cospar IDs must be in the format of YYYY-NNN (eg. 2023-123)";
|
|
92
|
+
}
|
|
93
|
+
return option;
|
|
103
94
|
},
|
|
104
95
|
shortDate: (option) => {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
date = new Date(parsed);
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
date = option;
|
|
117
|
-
}
|
|
118
|
-
resolve(`${date.getUTCFullYear()}-${getLeadingZero(date.getUTCMonth(), 1)}-${getLeadingZero(date.getUTCDate())}`);
|
|
96
|
+
if (typeof option !== "string" && !(option instanceof Date)) {
|
|
97
|
+
throw "Must be a JavaScript Date Object or ISO 8601 Date String";
|
|
98
|
+
}
|
|
99
|
+
let date;
|
|
100
|
+
if (typeof option === "string") {
|
|
101
|
+
const parsed = Date.parse(option);
|
|
102
|
+
if (isNaN(parsed)) {
|
|
103
|
+
throw "Must be an ISO 8601 Date String";
|
|
119
104
|
}
|
|
120
|
-
|
|
121
|
-
}
|
|
105
|
+
date = new Date(parsed);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
date = option;
|
|
109
|
+
}
|
|
110
|
+
return `${date.getUTCFullYear()}-${getLeadingZero(date.getUTCMonth(), 1)}-${getLeadingZero(date.getUTCDate())}`;
|
|
122
111
|
},
|
|
123
112
|
isoDate: (option) => {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
date = new Date(parsed);
|
|
133
|
-
}
|
|
134
|
-
else {
|
|
135
|
-
date = option;
|
|
136
|
-
}
|
|
137
|
-
resolve(date.toISOString().slice(0, 19).concat("Z"));
|
|
113
|
+
if (typeof option !== "string" && !(option instanceof Date)) {
|
|
114
|
+
throw "Must be a JavaScript Date Object or ISO 8601 Date String";
|
|
115
|
+
}
|
|
116
|
+
let date;
|
|
117
|
+
if (typeof option === "string") {
|
|
118
|
+
const parsed = Date.parse(option);
|
|
119
|
+
if (isNaN(parsed)) {
|
|
120
|
+
throw "Must be an ISO 8601 Date String";
|
|
138
121
|
}
|
|
139
|
-
|
|
140
|
-
}
|
|
122
|
+
date = new Date(parsed);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
date = option;
|
|
126
|
+
}
|
|
127
|
+
return formatToRLLISODate(date);
|
|
141
128
|
},
|
|
142
129
|
};
|
|
143
130
|
const optionsMap = {
|
|
@@ -197,9 +184,18 @@ const optionsMap = {
|
|
|
197
184
|
};
|
|
198
185
|
export const queryOptionsValidator = (resource, options) => {
|
|
199
186
|
const params = new URLSearchParams();
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
187
|
+
if (options === undefined) {
|
|
188
|
+
return params;
|
|
189
|
+
}
|
|
190
|
+
if (typeof options === "string" ||
|
|
191
|
+
typeof options === "number" ||
|
|
192
|
+
typeof options === "boolean" ||
|
|
193
|
+
typeof options === "bigint" ||
|
|
194
|
+
typeof options === "symbol" ||
|
|
195
|
+
typeof options === "function" ||
|
|
196
|
+
options === null ||
|
|
197
|
+
Array.isArray(options)) {
|
|
198
|
+
error("Invalid type for query options. Must be an object.");
|
|
203
199
|
}
|
|
204
200
|
if ((options.id || "slug" in options || "cospar_id" in options) &&
|
|
205
201
|
Object.keys(options).length > 1) {
|
|
@@ -214,14 +210,15 @@ export const queryOptionsValidator = (resource, options) => {
|
|
|
214
210
|
warn(`Parameter "${option}" is undefined and will be ignored.`);
|
|
215
211
|
continue;
|
|
216
212
|
}
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
.
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
213
|
+
try {
|
|
214
|
+
const o = optionsMap[resource][option](options[option]);
|
|
215
|
+
params.set(option, o);
|
|
216
|
+
}
|
|
217
|
+
catch (err) {
|
|
218
|
+
error(`Malformed query parameter for resource "${resource}" and parameter: "${option}": ${err}.`, "type");
|
|
219
|
+
}
|
|
223
220
|
}
|
|
224
|
-
return
|
|
221
|
+
return params;
|
|
225
222
|
};
|
|
226
223
|
export const warn = (msg) => console.warn(`[RLL Client]: ${msg}`);
|
|
227
224
|
export const error = (msg, type = "error") => {
|
package/package.json
CHANGED
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rocket-launch-live-client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "A Node.JS client for interacting with the RocketLaunch.Live API",
|
|
5
5
|
"types": "./lib/cjs/types/index.d.ts",
|
|
6
6
|
"main": "./lib/cjs/index.js",
|
|
7
7
|
"scripts": {
|
|
8
8
|
"clear": "rm -rf ./lib",
|
|
9
|
-
"dev": "nodemon ./lib/test.js --ignore 'lib/**' -e ts --exec \"npm run compile\"",
|
|
10
|
-
"compile": "npm run clear && tsc && node ./lib/test.js",
|
|
11
9
|
"build": "npm run clear && npm run build:esm && npm run build:cjs",
|
|
12
10
|
"build:esm": "tsc -p ./configs/tsconfig.esm.json && mv lib/esm/index.js lib/esm/index.mjs",
|
|
13
11
|
"build:cjs": "tsc -p ./configs/tsconfig.cjs.json",
|
|
14
|
-
"start": "node ./lib/test.js",
|
|
15
12
|
"prepublish": "npm run build",
|
|
16
13
|
"test": "mocha",
|
|
17
14
|
"test:watch": "mocha --watch"
|