@skipruntime/helpers 0.0.2 → 0.0.3
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/dist/external.d.ts +27 -9
- package/dist/external.d.ts.map +1 -1
- package/dist/external.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/remote.d.ts +9 -4
- package/dist/remote.d.ts.map +1 -1
- package/dist/remote.js +41 -17
- package/dist/remote.js.map +1 -1
- package/dist/rest.d.ts +11 -4
- package/dist/rest.d.ts.map +1 -1
- package/dist/rest.js +7 -6
- package/dist/rest.js.map +1 -1
- package/dist/utils.d.ts +1 -3
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +0 -11
- package/dist/utils.js.map +1 -1
- package/package.json +6 -2
- package/src/external.ts +13 -13
- package/src/index.ts +1 -8
- package/src/remote.ts +49 -24
- package/src/rest.ts +17 -10
- package/src/utils.ts +1 -23
package/dist/external.d.ts
CHANGED
|
@@ -1,31 +1,45 @@
|
|
|
1
1
|
import type { Entry, ExternalService, Json } from "@skipruntime/api";
|
|
2
2
|
export interface ExternalResource {
|
|
3
|
-
open(params:
|
|
3
|
+
open(params: {
|
|
4
|
+
[param: string]: string | number;
|
|
5
|
+
}, callbacks: {
|
|
4
6
|
update: (updates: Entry<Json, Json>[], isInit: boolean) => void;
|
|
5
7
|
error: (error: Json) => void;
|
|
6
8
|
loading: () => void;
|
|
7
9
|
}): void;
|
|
8
|
-
close(params:
|
|
10
|
+
close(params: {
|
|
11
|
+
[param: string]: string | number;
|
|
12
|
+
}): void;
|
|
9
13
|
}
|
|
10
14
|
export declare class GenericExternalService implements ExternalService {
|
|
11
15
|
private resources;
|
|
12
|
-
constructor(resources:
|
|
13
|
-
|
|
16
|
+
constructor(resources: {
|
|
17
|
+
[name: string]: ExternalResource;
|
|
18
|
+
});
|
|
19
|
+
subscribe(resourceName: string, params: {
|
|
20
|
+
[param: string]: string | number;
|
|
21
|
+
}, callbacks: {
|
|
14
22
|
update: (updates: Entry<Json, Json>[], isInit: boolean) => void;
|
|
15
23
|
error: (error: Json) => void;
|
|
16
24
|
loading: () => void;
|
|
17
25
|
}): void;
|
|
18
|
-
unsubscribe(resourceName: string, params:
|
|
26
|
+
unsubscribe(resourceName: string, params: {
|
|
27
|
+
[param: string]: string;
|
|
28
|
+
}): void;
|
|
19
29
|
shutdown(): void;
|
|
20
30
|
}
|
|
21
31
|
export declare class TimerResource implements ExternalResource {
|
|
22
32
|
private intervals;
|
|
23
|
-
open(params:
|
|
33
|
+
open(params: {
|
|
34
|
+
[param: string]: string | number;
|
|
35
|
+
}, callbacks: {
|
|
24
36
|
update: (updates: Entry<Json, Json>[], isInit: boolean) => void;
|
|
25
37
|
error: (error: Json) => void;
|
|
26
38
|
loading: () => void;
|
|
27
39
|
}): void;
|
|
28
|
-
close(params:
|
|
40
|
+
close(params: {
|
|
41
|
+
[param: string]: string | number;
|
|
42
|
+
}): void;
|
|
29
43
|
}
|
|
30
44
|
export declare class Polled<S extends Json, K extends Json, V extends Json> implements ExternalResource {
|
|
31
45
|
private url;
|
|
@@ -33,11 +47,15 @@ export declare class Polled<S extends Json, K extends Json, V extends Json> impl
|
|
|
33
47
|
private conv;
|
|
34
48
|
private intervals;
|
|
35
49
|
constructor(url: string, duration: number, conv: (data: S) => Entry<K, V>[]);
|
|
36
|
-
open(params:
|
|
50
|
+
open(params: {
|
|
51
|
+
[param: string]: string | number;
|
|
52
|
+
}, callbacks: {
|
|
37
53
|
update: (updates: Entry<Json, Json>[], isInit: boolean) => void;
|
|
38
54
|
error: (error: Json) => void;
|
|
39
55
|
loading: () => void;
|
|
40
56
|
}): void;
|
|
41
|
-
close(params:
|
|
57
|
+
close(params: {
|
|
58
|
+
[param: string]: string | number;
|
|
59
|
+
}): void;
|
|
42
60
|
}
|
|
43
61
|
//# sourceMappingURL=external.d.ts.map
|
package/dist/external.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external.d.ts","sourceRoot":"","sources":["../src/external.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAGrE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CACF,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"external.d.ts","sourceRoot":"","sources":["../src/external.ts"],"names":[],"mappings":"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"}
|
package/dist/external.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external.js","sourceRoot":"","sources":["../src/external.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAetC,MAAM,OAAO,sBAAsB;IACjC,YAAoB,
|
|
1
|
+
{"version":3,"file":"external.js","sourceRoot":"","sources":["../src/external.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { SkipExternalService } from "./remote.js";
|
|
2
2
|
export { type ExternalResource, GenericExternalService, Polled, } from "./external.js";
|
|
3
|
-
export { Sum, Min, Max, CountMapper
|
|
3
|
+
export { Sum, Min, Max, CountMapper } from "./utils.js";
|
|
4
4
|
export { RESTWrapperOfSkipService } from "./rest.js";
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EACL,KAAK,gBAAgB,EACrB,sBAAsB,EACtB,MAAM,GACP,MAAM,eAAe,CAAC;AACvB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EACL,KAAK,gBAAgB,EACrB,sBAAsB,EACtB,MAAM,GACP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { SkipExternalService } from "./remote.js";
|
|
2
2
|
export { GenericExternalService, Polled, } from "./external.js";
|
|
3
|
-
export { Sum, Min, Max, CountMapper
|
|
3
|
+
export { Sum, Min, Max, CountMapper } from "./utils.js";
|
|
4
4
|
export { RESTWrapperOfSkipService } from "./rest.js";
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAEL,sBAAsB,EACtB,MAAM,GACP,MAAM,eAAe,CAAC;AACvB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAEL,sBAAsB,EACtB,MAAM,GACP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/remote.d.ts
CHANGED
|
@@ -2,15 +2,20 @@ import type { Entry, ExternalService, Json } from "@skipruntime/api";
|
|
|
2
2
|
import type { Entrypoint } from "./rest.js";
|
|
3
3
|
export declare class SkipExternalService implements ExternalService {
|
|
4
4
|
private url;
|
|
5
|
+
private control_url;
|
|
5
6
|
private resources;
|
|
6
|
-
constructor(url: string);
|
|
7
|
+
constructor(url: string, control_url: string);
|
|
7
8
|
static direct(entrypoint: Entrypoint): SkipExternalService;
|
|
8
|
-
subscribe(resource: string, params:
|
|
9
|
-
|
|
9
|
+
subscribe(resource: string, params: {
|
|
10
|
+
[param: string]: string;
|
|
11
|
+
}, callbacks: {
|
|
12
|
+
update: (updates: Entry<Json, Json>[], isInitial: boolean) => void;
|
|
10
13
|
error: (error: Json) => void;
|
|
11
14
|
loading: () => void;
|
|
12
15
|
}): void;
|
|
13
|
-
unsubscribe(resource: string, params:
|
|
16
|
+
unsubscribe(resource: string, params: {
|
|
17
|
+
[param: string]: string;
|
|
18
|
+
}): void;
|
|
14
19
|
shutdown(): void;
|
|
15
20
|
private toId;
|
|
16
21
|
}
|
package/dist/remote.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAErE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAM5C,qBAAa,mBAAoB,YAAW,eAAe;IAIvD,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,WAAW;IAJrB,OAAO,CAAC,SAAS,CAA+B;gBAGtC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM;IAI7B,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,mBAAmB;IAU1D,SAAS,CACP,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,EACnC,SAAS,EAAE;QACT,MAAM,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;QAEnE,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC;QAE7B,OAAO,EAAE,MAAM,IAAI,CAAC;KACrB,GACA,IAAI;IAiCP,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE;IAKjE,QAAQ,IAAI,IAAI;IAMhB,OAAO,CAAC,IAAI;CAQb"}
|
package/dist/remote.js
CHANGED
|
@@ -1,29 +1,53 @@
|
|
|
1
|
+
// TODO: Remove once global `EventSource` makes it out of experimental
|
|
2
|
+
// in nodejs LTS.
|
|
3
|
+
import EventSource from "eventsource";
|
|
1
4
|
export class SkipExternalService {
|
|
2
|
-
constructor(url) {
|
|
5
|
+
constructor(url, control_url) {
|
|
3
6
|
this.url = url;
|
|
7
|
+
this.control_url = control_url;
|
|
4
8
|
this.resources = new Map();
|
|
5
9
|
}
|
|
10
|
+
// TODO: Support Skip external services going through a gateway.
|
|
6
11
|
static direct(entrypoint) {
|
|
7
|
-
let url = `http://${entrypoint.host}:${entrypoint.
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
12
|
+
let url = `http://${entrypoint.host}:${entrypoint.streaming_port.toString()}`;
|
|
13
|
+
let control_url = `http://${entrypoint.host}:${entrypoint.control_port.toString()}`;
|
|
14
|
+
if (entrypoint.secured) {
|
|
15
|
+
url = `https://${entrypoint.host}:${entrypoint.streaming_port.toString()}`;
|
|
16
|
+
control_url = `https://${entrypoint.host}:${entrypoint.control_port.toString()}`;
|
|
17
|
+
}
|
|
18
|
+
return new SkipExternalService(url, control_url);
|
|
11
19
|
}
|
|
12
20
|
subscribe(resource, params, callbacks) {
|
|
13
21
|
// TODO Manage Status
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
fetch(`${this.control_url}/v1/streams`, {
|
|
23
|
+
method: "POST",
|
|
24
|
+
headers: {
|
|
25
|
+
"Content-Type": "application/json",
|
|
26
|
+
},
|
|
27
|
+
body: JSON.stringify({
|
|
28
|
+
resource,
|
|
29
|
+
params,
|
|
30
|
+
}),
|
|
31
|
+
})
|
|
32
|
+
.then((resp) => resp.json())
|
|
33
|
+
.then((uuid) => {
|
|
34
|
+
const evSource = new EventSource(`${this.url}/v1/streams/${uuid}`);
|
|
35
|
+
evSource.addEventListener("init", (e) => {
|
|
36
|
+
const updates = JSON.parse(e.data);
|
|
37
|
+
callbacks.update(updates, true);
|
|
38
|
+
});
|
|
39
|
+
evSource.addEventListener("update", (e) => {
|
|
40
|
+
const updates = JSON.parse(e.data);
|
|
41
|
+
callbacks.update(updates, false);
|
|
42
|
+
});
|
|
43
|
+
evSource.onerror = (e) => {
|
|
44
|
+
console.log(e);
|
|
45
|
+
};
|
|
46
|
+
this.resources.set(this.toId(resource, params), evSource);
|
|
47
|
+
})
|
|
48
|
+
.catch((e) => {
|
|
24
49
|
console.log(e);
|
|
25
|
-
};
|
|
26
|
-
this.resources.set(this.toId(resource, params), evSource);
|
|
50
|
+
});
|
|
27
51
|
}
|
|
28
52
|
unsubscribe(resource, params) {
|
|
29
53
|
const closable = this.resources.get(this.toId(resource, params));
|
package/dist/remote.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote.js","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"remote.js","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":"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"}
|
package/dist/rest.d.ts
CHANGED
|
@@ -1,15 +1,22 @@
|
|
|
1
1
|
import type { Json, Entry } from "@skipruntime/api";
|
|
2
2
|
export type Entrypoint = {
|
|
3
3
|
host: string;
|
|
4
|
-
|
|
4
|
+
streaming_port: number;
|
|
5
|
+
control_port: number;
|
|
5
6
|
secured?: boolean;
|
|
6
7
|
};
|
|
7
|
-
export declare function fetchJSON<V>(url: string, method?: "POST" | "GET" | "PUT" | "PATCH" | "HEAD" | "DELETE", headers?:
|
|
8
|
+
export declare function fetchJSON<V>(url: string, method?: "POST" | "GET" | "PUT" | "PATCH" | "HEAD" | "DELETE", headers?: {
|
|
9
|
+
[header: string]: string;
|
|
10
|
+
}, data?: Json): Promise<[V | null, Headers]>;
|
|
8
11
|
export declare class RESTWrapperOfSkipService {
|
|
9
12
|
private entrypoint;
|
|
10
13
|
constructor(entrypoint?: Entrypoint);
|
|
11
|
-
getAll<K extends Json, V extends Json>(resource: string, params:
|
|
12
|
-
|
|
14
|
+
getAll<K extends Json, V extends Json>(resource: string, params: {
|
|
15
|
+
[param: string]: string;
|
|
16
|
+
}): Promise<Entry<K, V>[]>;
|
|
17
|
+
getArray<V extends Json>(resource: string, params: {
|
|
18
|
+
[param: string]: string;
|
|
19
|
+
}, key: string): Promise<V[]>;
|
|
13
20
|
put<K extends Json, V extends Json>(collection: string, key: K, value: V[]): Promise<void>;
|
|
14
21
|
patch<K extends Json, V extends Json>(collection: string, values: Entry<K, V>[]): Promise<void>;
|
|
15
22
|
deleteKey<K extends Json>(collection: string, key: K): Promise<void>;
|
package/dist/rest.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rest.d.ts","sourceRoot":"","sources":["../src/rest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,
|
|
1
|
+
{"version":3,"file":"rest.d.ts","sourceRoot":"","sources":["../src/rest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAQF,wBAAsB,SAAS,CAAC,CAAC,EAC/B,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,QAAgB,EACpE,OAAO,GAAE;IAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;CAAO,EAC1C,IAAI,CAAC,EAAE,IAAI,GACV,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAqB9B;AAED,qBAAa,wBAAwB;IACnC,OAAO,CAAC,UAAU,CAAS;gBAGzB,UAAU,GAAE,UAIX;IAKG,MAAM,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,SAAS,IAAI,EACzC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAClC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAUnB,QAAQ,CAAC,CAAC,SAAS,IAAI,EAC3B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,EACnC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,CAAC,EAAE,CAAC;IAST,GAAG,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,SAAS,IAAI,EACtC,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,CAAC,EACN,KAAK,EAAE,CAAC,EAAE,GACT,OAAO,CAAC,IAAI,CAAC;IAIV,KAAK,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,SAAS,IAAI,EACxC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GACpB,OAAO,CAAC,IAAI,CAAC;IASV,SAAS,CAAC,CAAC,SAAS,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAG3E"}
|
package/dist/rest.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
function toHttp(entrypoint) {
|
|
2
2
|
if (entrypoint.secured)
|
|
3
|
-
return `https://${entrypoint.host}:${entrypoint.
|
|
4
|
-
return `http://${entrypoint.host}:${entrypoint.
|
|
3
|
+
return `https://${entrypoint.host}:${entrypoint.control_port}`;
|
|
4
|
+
return `http://${entrypoint.host}:${entrypoint.control_port}`;
|
|
5
5
|
}
|
|
6
6
|
export async function fetchJSON(url, method = "GET", headers = {}, data) {
|
|
7
7
|
const body = data ? JSON.stringify(data) : undefined;
|
|
@@ -27,26 +27,27 @@ export async function fetchJSON(url, method = "GET", headers = {}, data) {
|
|
|
27
27
|
export class RESTWrapperOfSkipService {
|
|
28
28
|
constructor(entrypoint = {
|
|
29
29
|
host: "localhost",
|
|
30
|
-
|
|
30
|
+
streaming_port: 8080,
|
|
31
|
+
control_port: 8081,
|
|
31
32
|
}) {
|
|
32
33
|
this.entrypoint = toHttp(entrypoint);
|
|
33
34
|
}
|
|
34
35
|
async getAll(resource, params) {
|
|
35
36
|
const qParams = new URLSearchParams(params).toString();
|
|
36
|
-
const [optValues, _headers] = await fetchJSON(`${this.entrypoint}/v1/${resource}?${qParams}`, "GET");
|
|
37
|
+
const [optValues, _headers] = await fetchJSON(`${this.entrypoint}/v1/resources/${resource}?${qParams}`, "GET");
|
|
37
38
|
const values = optValues ?? [];
|
|
38
39
|
return values;
|
|
39
40
|
}
|
|
40
41
|
async getArray(resource, params, key) {
|
|
41
42
|
const qParams = new URLSearchParams(params).toString();
|
|
42
|
-
const [data, _headers] = await fetchJSON(`${this.entrypoint}/v1/${resource}/${key}?${qParams}`, "GET");
|
|
43
|
+
const [data, _headers] = await fetchJSON(`${this.entrypoint}/v1/resources/${resource}/${key}?${qParams}`, "GET");
|
|
43
44
|
return data ?? [];
|
|
44
45
|
}
|
|
45
46
|
async put(collection, key, value) {
|
|
46
47
|
return await this.patch(collection, [[key, value]]);
|
|
47
48
|
}
|
|
48
49
|
async patch(collection, values) {
|
|
49
|
-
await fetchJSON(`${this.entrypoint}/v1/${collection}`, "PATCH", {}, values);
|
|
50
|
+
await fetchJSON(`${this.entrypoint}/v1/inputs/${collection}`, "PATCH", {}, values);
|
|
50
51
|
}
|
|
51
52
|
async deleteKey(collection, key) {
|
|
52
53
|
return await this.patch(collection, [[key, []]]);
|
package/dist/rest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rest.js","sourceRoot":"","sources":["../src/rest.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rest.js","sourceRoot":"","sources":["../src/rest.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Nullable } from "@skip-wasm/std";
|
|
2
2
|
import { ManyToOneMapper } from "@skipruntime/api";
|
|
3
|
-
import type { Reducer, NonEmptyIterator,
|
|
3
|
+
import type { Reducer, NonEmptyIterator, Json } from "@skipruntime/api";
|
|
4
4
|
export declare class Sum implements Reducer<number, number> {
|
|
5
5
|
default: number;
|
|
6
6
|
add(acc: number, value: number): number;
|
|
@@ -19,6 +19,4 @@ export declare class Max implements Reducer<number, number> {
|
|
|
19
19
|
export declare class CountMapper<K extends Json, V extends Json> extends ManyToOneMapper<K, V, number> {
|
|
20
20
|
mapValues(values: NonEmptyIterator<V>): number;
|
|
21
21
|
}
|
|
22
|
-
export declare function parseReactiveResponse(header: Headers | string): ReactiveResponse | undefined;
|
|
23
|
-
export declare function reactiveResponseHeader(reactiveResponse: ReactiveResponse): [string, string];
|
|
24
22
|
//# sourceMappingURL=utils.d.ts.map
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExE,qBAAa,GAAI,YAAW,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC;IACjD,OAAO,SAAK;IAEZ,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAIvC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;CAGrD;AAED,qBAAa,GAAI,YAAW,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC;IACjD,OAAO,OAAQ;IAEf,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAIjD,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;CAGrD;AAED,qBAAa,GAAI,YAAW,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC;IACjD,OAAO,OAAQ;IAEf,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAIjD,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;CAGrD;AAED,qBAAa,WAAW,CACtB,CAAC,SAAS,IAAI,EACd,CAAC,SAAS,IAAI,CACd,SAAQ,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrC,SAAS,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,MAAM;CAG/C"}
|
package/dist/utils.js
CHANGED
|
@@ -37,15 +37,4 @@ export class CountMapper extends ManyToOneMapper {
|
|
|
37
37
|
return values.toArray().length;
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
|
-
export function parseReactiveResponse(header) {
|
|
41
|
-
const strReactiveResponse = typeof header == "string"
|
|
42
|
-
? header
|
|
43
|
-
: header.get("Skip-Reactive-Response-Token");
|
|
44
|
-
if (!strReactiveResponse)
|
|
45
|
-
return undefined;
|
|
46
|
-
return JSON.parse(strReactiveResponse);
|
|
47
|
-
}
|
|
48
|
-
export function reactiveResponseHeader(reactiveResponse) {
|
|
49
|
-
return ["Skip-Reactive-Response-Token", JSON.stringify(reactiveResponse)];
|
|
50
|
-
}
|
|
51
40
|
//# sourceMappingURL=utils.js.map
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGnD,MAAM,OAAO,GAAG;IAAhB;QACE,YAAO,GAAG,CAAC,CAAC;IASd,CAAC;IAPC,GAAG,CAAC,GAAW,EAAE,KAAa;QAC5B,OAAO,GAAG,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,GAAW,EAAE,KAAa;QAC/B,OAAO,GAAG,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAED,MAAM,OAAO,GAAG;IAAhB;QACE,YAAO,GAAG,IAAI,CAAC;IASjB,CAAC;IAPC,GAAG,CAAC,GAAqB,EAAE,KAAa;QACtC,OAAO,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,CAAC,GAAW,EAAE,KAAa;QAC/B,OAAO,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAClC,CAAC;CACF;AAED,MAAM,OAAO,GAAG;IAAhB;QACE,YAAO,GAAG,IAAI,CAAC;IASjB,CAAC;IAPC,GAAG,CAAC,GAAqB,EAAE,KAAa;QACtC,OAAO,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,CAAC,GAAW,EAAE,KAAa;QAC/B,OAAO,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAClC,CAAC;CACF;AAED,MAAM,OAAO,WAGX,SAAQ,eAA6B;IACrC,SAAS,CAAC,MAA2B;QACnC,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC;IACjC,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skipruntime/helpers",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dist/index.js",
|
|
@@ -20,7 +20,11 @@
|
|
|
20
20
|
"node": ">=22.6.0 <23.0.0"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
+
"eventsource": "^2.0.2",
|
|
23
24
|
"express": "^4.21.0",
|
|
24
|
-
"@skipruntime/api": "^0.0.
|
|
25
|
+
"@skipruntime/api": "^0.0.3"
|
|
26
|
+
},
|
|
27
|
+
"devDependencies": {
|
|
28
|
+
"@types/eventsource": "^1.1.15"
|
|
25
29
|
}
|
|
26
30
|
}
|
package/src/external.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { fetchJSON } from "./rest.js";
|
|
|
3
3
|
|
|
4
4
|
export interface ExternalResource {
|
|
5
5
|
open(
|
|
6
|
-
params:
|
|
6
|
+
params: { [param: string]: string | number },
|
|
7
7
|
callbacks: {
|
|
8
8
|
update: (updates: Entry<Json, Json>[], isInit: boolean) => void;
|
|
9
9
|
error: (error: Json) => void;
|
|
@@ -11,15 +11,15 @@ export interface ExternalResource {
|
|
|
11
11
|
},
|
|
12
12
|
): void;
|
|
13
13
|
|
|
14
|
-
close(params:
|
|
14
|
+
close(params: { [param: string]: string | number }): void;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
export class GenericExternalService implements ExternalService {
|
|
18
|
-
constructor(private resources:
|
|
18
|
+
constructor(private resources: { [name: string]: ExternalResource }) {}
|
|
19
19
|
|
|
20
20
|
subscribe(
|
|
21
21
|
resourceName: string,
|
|
22
|
-
params:
|
|
22
|
+
params: { [param: string]: string | number },
|
|
23
23
|
callbacks: {
|
|
24
24
|
update: (updates: Entry<Json, Json>[], isInit: boolean) => void;
|
|
25
25
|
error: (error: Json) => void;
|
|
@@ -35,7 +35,7 @@ export class GenericExternalService implements ExternalService {
|
|
|
35
35
|
resource.open(params, callbacks);
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
unsubscribe(resourceName: string, params:
|
|
38
|
+
unsubscribe(resourceName: string, params: { [param: string]: string }) {
|
|
39
39
|
const resource = this.resources[resourceName] as
|
|
40
40
|
| ExternalResource
|
|
41
41
|
| undefined;
|
|
@@ -53,10 +53,10 @@ export class GenericExternalService implements ExternalService {
|
|
|
53
53
|
type Timeout = ReturnType<typeof setInterval>;
|
|
54
54
|
|
|
55
55
|
export class TimerResource implements ExternalResource {
|
|
56
|
-
private intervals = new Map<string,
|
|
56
|
+
private intervals = new Map<string, { [name: string]: Timeout }>();
|
|
57
57
|
|
|
58
58
|
open(
|
|
59
|
-
params:
|
|
59
|
+
params: { [param: string]: string | number },
|
|
60
60
|
callbacks: {
|
|
61
61
|
update: (updates: Entry<Json, Json>[], isInit: boolean) => void;
|
|
62
62
|
error: (error: Json) => void;
|
|
@@ -70,7 +70,7 @@ export class TimerResource implements ExternalResource {
|
|
|
70
70
|
}
|
|
71
71
|
callbacks.update(values, true);
|
|
72
72
|
const id = toId(params);
|
|
73
|
-
const intervals:
|
|
73
|
+
const intervals: { [name: string]: Timeout } = {};
|
|
74
74
|
for (const [name, duration] of Object.entries(params)) {
|
|
75
75
|
const ms = Number(duration);
|
|
76
76
|
if (ms > 0) {
|
|
@@ -83,7 +83,7 @@ export class TimerResource implements ExternalResource {
|
|
|
83
83
|
this.intervals.set(id, intervals);
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
-
close(params:
|
|
86
|
+
close(params: { [param: string]: string | number }): void {
|
|
87
87
|
const intervals = this.intervals.get(toId(params));
|
|
88
88
|
if (intervals != null) {
|
|
89
89
|
for (const interval of Object.values(intervals)) {
|
|
@@ -105,7 +105,7 @@ export class Polled<S extends Json, K extends Json, V extends Json>
|
|
|
105
105
|
) {}
|
|
106
106
|
|
|
107
107
|
open(
|
|
108
|
-
params:
|
|
108
|
+
params: { [param: string]: string | number },
|
|
109
109
|
callbacks: {
|
|
110
110
|
update: (updates: Entry<Json, Json>[], isInit: boolean) => void;
|
|
111
111
|
error: (error: Json) => void;
|
|
@@ -113,7 +113,7 @@ export class Polled<S extends Json, K extends Json, V extends Json>
|
|
|
113
113
|
},
|
|
114
114
|
): void {
|
|
115
115
|
this.close(params);
|
|
116
|
-
const queryParams:
|
|
116
|
+
const queryParams: { [param: string]: string } = {};
|
|
117
117
|
for (const [key, value] of Object.entries(params)) {
|
|
118
118
|
queryParams[key] = value.toString();
|
|
119
119
|
}
|
|
@@ -134,7 +134,7 @@ export class Polled<S extends Json, K extends Json, V extends Json>
|
|
|
134
134
|
this.intervals.set(toId(params), setInterval(call, this.duration));
|
|
135
135
|
}
|
|
136
136
|
|
|
137
|
-
close(params:
|
|
137
|
+
close(params: { [param: string]: string | number }): void {
|
|
138
138
|
const interval = this.intervals.get(toId(params));
|
|
139
139
|
if (interval) {
|
|
140
140
|
clearInterval(interval);
|
|
@@ -142,7 +142,7 @@ export class Polled<S extends Json, K extends Json, V extends Json>
|
|
|
142
142
|
}
|
|
143
143
|
}
|
|
144
144
|
|
|
145
|
-
function toId(params:
|
|
145
|
+
function toId(params: { [param: string]: string | number }): string {
|
|
146
146
|
const strparams = Object.entries(params)
|
|
147
147
|
.map(([key, value]) => `${key}:${value.toString()}`)
|
|
148
148
|
.sort();
|
package/src/index.ts
CHANGED
|
@@ -4,12 +4,5 @@ export {
|
|
|
4
4
|
GenericExternalService,
|
|
5
5
|
Polled,
|
|
6
6
|
} from "./external.js";
|
|
7
|
-
export {
|
|
8
|
-
Sum,
|
|
9
|
-
Min,
|
|
10
|
-
Max,
|
|
11
|
-
CountMapper,
|
|
12
|
-
parseReactiveResponse,
|
|
13
|
-
reactiveResponseHeader,
|
|
14
|
-
} from "./utils.js";
|
|
7
|
+
export { Sum, Min, Max, CountMapper } from "./utils.js";
|
|
15
8
|
export { RESTWrapperOfSkipService } from "./rest.js";
|
package/src/remote.ts
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
// TODO: Remove once global `EventSource` makes it out of experimental
|
|
2
|
+
// in nodejs LTS.
|
|
3
|
+
import EventSource from "eventsource";
|
|
4
|
+
|
|
1
5
|
import type { Entry, ExternalService, Json } from "@skipruntime/api";
|
|
2
6
|
|
|
3
7
|
import type { Entrypoint } from "./rest.js";
|
|
@@ -9,20 +13,27 @@ interface Closable {
|
|
|
9
13
|
export class SkipExternalService implements ExternalService {
|
|
10
14
|
private resources = new Map<string, Closable>();
|
|
11
15
|
|
|
12
|
-
constructor(
|
|
16
|
+
constructor(
|
|
17
|
+
private url: string,
|
|
18
|
+
private control_url: string,
|
|
19
|
+
) {}
|
|
13
20
|
|
|
21
|
+
// TODO: Support Skip external services going through a gateway.
|
|
14
22
|
static direct(entrypoint: Entrypoint): SkipExternalService {
|
|
15
|
-
let url = `http://${entrypoint.host}:${entrypoint.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
23
|
+
let url = `http://${entrypoint.host}:${entrypoint.streaming_port.toString()}`;
|
|
24
|
+
let control_url = `http://${entrypoint.host}:${entrypoint.control_port.toString()}`;
|
|
25
|
+
if (entrypoint.secured) {
|
|
26
|
+
url = `https://${entrypoint.host}:${entrypoint.streaming_port.toString()}`;
|
|
27
|
+
control_url = `https://${entrypoint.host}:${entrypoint.control_port.toString()}`;
|
|
28
|
+
}
|
|
29
|
+
return new SkipExternalService(url, control_url);
|
|
19
30
|
}
|
|
20
31
|
|
|
21
32
|
subscribe(
|
|
22
33
|
resource: string,
|
|
23
|
-
params:
|
|
34
|
+
params: { [param: string]: string },
|
|
24
35
|
callbacks: {
|
|
25
|
-
update: (updates: Entry<Json, Json>[],
|
|
36
|
+
update: (updates: Entry<Json, Json>[], isInitial: boolean) => void;
|
|
26
37
|
// FIXME: What is `error()` used for?
|
|
27
38
|
error: (error: Json) => void;
|
|
28
39
|
// FIXME: What is `loading()` used for?
|
|
@@ -30,24 +41,38 @@ export class SkipExternalService implements ExternalService {
|
|
|
30
41
|
},
|
|
31
42
|
): void {
|
|
32
43
|
// TODO Manage Status
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
44
|
+
fetch(`${this.control_url}/v1/streams`, {
|
|
45
|
+
method: "POST",
|
|
46
|
+
headers: {
|
|
47
|
+
"Content-Type": "application/json",
|
|
48
|
+
},
|
|
49
|
+
body: JSON.stringify({
|
|
50
|
+
resource,
|
|
51
|
+
params,
|
|
52
|
+
}),
|
|
53
|
+
})
|
|
54
|
+
.then((resp) => resp.json())
|
|
55
|
+
.then((uuid) => {
|
|
56
|
+
const evSource = new EventSource(`${this.url}/v1/streams/${uuid}`);
|
|
57
|
+
evSource.addEventListener("init", (e: MessageEvent<string>) => {
|
|
58
|
+
const updates = JSON.parse(e.data) as Entry<Json, Json>[];
|
|
59
|
+
callbacks.update(updates, true);
|
|
60
|
+
});
|
|
61
|
+
evSource.addEventListener("update", (e: MessageEvent<string>) => {
|
|
62
|
+
const updates = JSON.parse(e.data) as Entry<Json, Json>[];
|
|
63
|
+
callbacks.update(updates, false);
|
|
64
|
+
});
|
|
65
|
+
evSource.onerror = (e) => {
|
|
66
|
+
console.log(e);
|
|
67
|
+
};
|
|
68
|
+
this.resources.set(this.toId(resource, params), evSource);
|
|
69
|
+
})
|
|
70
|
+
.catch((e: unknown) => {
|
|
71
|
+
console.log(e);
|
|
72
|
+
});
|
|
48
73
|
}
|
|
49
74
|
|
|
50
|
-
unsubscribe(resource: string, params:
|
|
75
|
+
unsubscribe(resource: string, params: { [param: string]: string }) {
|
|
51
76
|
const closable = this.resources.get(this.toId(resource, params));
|
|
52
77
|
if (closable) closable.close();
|
|
53
78
|
}
|
|
@@ -58,7 +83,7 @@ export class SkipExternalService implements ExternalService {
|
|
|
58
83
|
}
|
|
59
84
|
}
|
|
60
85
|
|
|
61
|
-
private toId(resource: string, params:
|
|
86
|
+
private toId(resource: string, params: { [param: string]: string }): string {
|
|
62
87
|
// TODO: This is equivalent to `querystring.encode(params, ',', ':')`.
|
|
63
88
|
const strparams: string[] = [];
|
|
64
89
|
for (const key of Object.keys(params).sort()) {
|
package/src/rest.ts
CHANGED
|
@@ -2,20 +2,21 @@ import type { Json, Entry } from "@skipruntime/api";
|
|
|
2
2
|
|
|
3
3
|
export type Entrypoint = {
|
|
4
4
|
host: string;
|
|
5
|
-
|
|
5
|
+
streaming_port: number;
|
|
6
|
+
control_port: number;
|
|
6
7
|
secured?: boolean;
|
|
7
8
|
};
|
|
8
9
|
|
|
9
10
|
function toHttp(entrypoint: Entrypoint) {
|
|
10
11
|
if (entrypoint.secured)
|
|
11
|
-
return `https://${entrypoint.host}:${entrypoint.
|
|
12
|
-
return `http://${entrypoint.host}:${entrypoint.
|
|
12
|
+
return `https://${entrypoint.host}:${entrypoint.control_port}`;
|
|
13
|
+
return `http://${entrypoint.host}:${entrypoint.control_port}`;
|
|
13
14
|
}
|
|
14
15
|
|
|
15
16
|
export async function fetchJSON<V>(
|
|
16
17
|
url: string,
|
|
17
18
|
method: "POST" | "GET" | "PUT" | "PATCH" | "HEAD" | "DELETE" = "GET",
|
|
18
|
-
headers:
|
|
19
|
+
headers: { [header: string]: string } = {},
|
|
19
20
|
data?: Json,
|
|
20
21
|
): Promise<[V | null, Headers]> {
|
|
21
22
|
const body = data ? JSON.stringify(data) : undefined;
|
|
@@ -46,7 +47,8 @@ export class RESTWrapperOfSkipService {
|
|
|
46
47
|
constructor(
|
|
47
48
|
entrypoint: Entrypoint = {
|
|
48
49
|
host: "localhost",
|
|
49
|
-
|
|
50
|
+
streaming_port: 8080,
|
|
51
|
+
control_port: 8081,
|
|
50
52
|
},
|
|
51
53
|
) {
|
|
52
54
|
this.entrypoint = toHttp(entrypoint);
|
|
@@ -54,11 +56,11 @@ export class RESTWrapperOfSkipService {
|
|
|
54
56
|
|
|
55
57
|
async getAll<K extends Json, V extends Json>(
|
|
56
58
|
resource: string,
|
|
57
|
-
params:
|
|
59
|
+
params: { [param: string]: string },
|
|
58
60
|
): Promise<Entry<K, V>[]> {
|
|
59
61
|
const qParams = new URLSearchParams(params).toString();
|
|
60
62
|
const [optValues, _headers] = await fetchJSON<Entry<K, V>[]>(
|
|
61
|
-
`${this.entrypoint}/v1/${resource}?${qParams}`,
|
|
63
|
+
`${this.entrypoint}/v1/resources/${resource}?${qParams}`,
|
|
62
64
|
"GET",
|
|
63
65
|
);
|
|
64
66
|
const values = optValues ?? [];
|
|
@@ -67,12 +69,12 @@ export class RESTWrapperOfSkipService {
|
|
|
67
69
|
|
|
68
70
|
async getArray<V extends Json>(
|
|
69
71
|
resource: string,
|
|
70
|
-
params:
|
|
72
|
+
params: { [param: string]: string },
|
|
71
73
|
key: string,
|
|
72
74
|
): Promise<V[]> {
|
|
73
75
|
const qParams = new URLSearchParams(params).toString();
|
|
74
76
|
const [data, _headers] = await fetchJSON<V[]>(
|
|
75
|
-
`${this.entrypoint}/v1/${resource}/${key}?${qParams}`,
|
|
77
|
+
`${this.entrypoint}/v1/resources/${resource}/${key}?${qParams}`,
|
|
76
78
|
"GET",
|
|
77
79
|
);
|
|
78
80
|
return data ?? [];
|
|
@@ -90,7 +92,12 @@ export class RESTWrapperOfSkipService {
|
|
|
90
92
|
collection: string,
|
|
91
93
|
values: Entry<K, V>[],
|
|
92
94
|
): Promise<void> {
|
|
93
|
-
await fetchJSON(
|
|
95
|
+
await fetchJSON(
|
|
96
|
+
`${this.entrypoint}/v1/inputs/${collection}`,
|
|
97
|
+
"PATCH",
|
|
98
|
+
{},
|
|
99
|
+
values,
|
|
100
|
+
);
|
|
94
101
|
}
|
|
95
102
|
|
|
96
103
|
async deleteKey<K extends Json>(collection: string, key: K): Promise<void> {
|
package/src/utils.ts
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
import type { Nullable } from "@skip-wasm/std";
|
|
2
2
|
import { ManyToOneMapper } from "@skipruntime/api";
|
|
3
|
-
import type {
|
|
4
|
-
Reducer,
|
|
5
|
-
NonEmptyIterator,
|
|
6
|
-
ReactiveResponse,
|
|
7
|
-
Json,
|
|
8
|
-
} from "@skipruntime/api";
|
|
3
|
+
import type { Reducer, NonEmptyIterator, Json } from "@skipruntime/api";
|
|
9
4
|
|
|
10
5
|
export class Sum implements Reducer<number, number> {
|
|
11
6
|
default = 0;
|
|
@@ -51,20 +46,3 @@ export class CountMapper<
|
|
|
51
46
|
return values.toArray().length;
|
|
52
47
|
}
|
|
53
48
|
}
|
|
54
|
-
|
|
55
|
-
export function parseReactiveResponse(
|
|
56
|
-
header: Headers | string,
|
|
57
|
-
): ReactiveResponse | undefined {
|
|
58
|
-
const strReactiveResponse =
|
|
59
|
-
typeof header == "string"
|
|
60
|
-
? header
|
|
61
|
-
: header.get("Skip-Reactive-Response-Token");
|
|
62
|
-
if (!strReactiveResponse) return undefined;
|
|
63
|
-
return JSON.parse(strReactiveResponse) as ReactiveResponse;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
export function reactiveResponseHeader(
|
|
67
|
-
reactiveResponse: ReactiveResponse,
|
|
68
|
-
): [string, string] {
|
|
69
|
-
return ["Skip-Reactive-Response-Token", JSON.stringify(reactiveResponse)];
|
|
70
|
-
}
|