@skipruntime/helpers 0.0.7 → 0.0.9
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 +10 -9
- package/dist/external.d.ts.map +1 -1
- package/dist/external.js +19 -27
- package/dist/external.js.map +1 -1
- package/dist/remote.d.ts +3 -4
- package/dist/remote.d.ts.map +1 -1
- package/dist/remote.js +7 -15
- package/dist/remote.js.map +1 -1
- package/dist/rest.d.ts +2 -13
- package/dist/rest.d.ts.map +1 -1
- package/dist/rest.js +3 -16
- package/dist/rest.js.map +1 -1
- package/package.json +2 -3
- package/src/external.ts +27 -30
- package/src/remote.ts +9 -14
- package/src/rest.ts +4 -22
package/dist/external.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import type { Entry, ExternalService, Json } from "@skipruntime/
|
|
1
|
+
import type { Entry, ExternalService, Json } from "@skipruntime/core";
|
|
2
2
|
/**
|
|
3
3
|
* Interface required by `GenericExternalService` for external resources.
|
|
4
4
|
*/
|
|
5
5
|
export interface ExternalResource {
|
|
6
|
-
open(params: Json, callbacks: {
|
|
6
|
+
open(instance: string, params: Json, callbacks: {
|
|
7
7
|
update: (updates: Entry<Json, Json>[], isInit: boolean) => void;
|
|
8
8
|
error: (error: Json) => void;
|
|
9
9
|
loading: () => void;
|
|
10
10
|
}): void;
|
|
11
|
-
close(
|
|
11
|
+
close(instance: string): void;
|
|
12
12
|
}
|
|
13
13
|
/**
|
|
14
14
|
* A generic external service providing external resources.
|
|
@@ -17,28 +17,29 @@ export interface ExternalResource {
|
|
|
17
17
|
*/
|
|
18
18
|
export declare class GenericExternalService implements ExternalService {
|
|
19
19
|
private readonly resources;
|
|
20
|
+
private readonly instances;
|
|
20
21
|
/**
|
|
21
22
|
* @param resources - Association of resource names to `ExternalResource`s.
|
|
22
23
|
*/
|
|
23
24
|
constructor(resources: {
|
|
24
25
|
[name: string]: ExternalResource;
|
|
25
26
|
});
|
|
26
|
-
subscribe(resourceName: string, params: Json, callbacks: {
|
|
27
|
+
subscribe(instance: string, resourceName: string, params: Json, callbacks: {
|
|
27
28
|
update: (updates: Entry<Json, Json>[], isInit: boolean) => void;
|
|
28
29
|
error: (error: Json) => void;
|
|
29
30
|
loading: () => void;
|
|
30
31
|
}): void;
|
|
31
|
-
unsubscribe(
|
|
32
|
+
unsubscribe(instance: string): void;
|
|
32
33
|
shutdown(): void;
|
|
33
34
|
}
|
|
34
35
|
export declare class TimerResource implements ExternalResource {
|
|
35
36
|
private readonly intervals;
|
|
36
|
-
open(params: Json, callbacks: {
|
|
37
|
+
open(instance: string, params: Json, callbacks: {
|
|
37
38
|
update: (updates: Entry<Json, Json>[], isInit: boolean) => void;
|
|
38
39
|
error: (error: Json) => void;
|
|
39
40
|
loading: () => void;
|
|
40
41
|
}): void;
|
|
41
|
-
close(
|
|
42
|
+
close(instance: string): void;
|
|
42
43
|
}
|
|
43
44
|
/**
|
|
44
45
|
* An external resource that is refreshed at some polling interval.
|
|
@@ -60,11 +61,11 @@ export declare class Polled<S extends Json, K extends Json, V extends Json> impl
|
|
|
60
61
|
* @param encodeParams - Function to use to encode params of type `Json` for external resource request.
|
|
61
62
|
*/
|
|
62
63
|
constructor(url: string, duration: number, conv: (data: S) => Entry<K, V>[], encodeParams?: (params: Json) => string);
|
|
63
|
-
open(params: Json, callbacks: {
|
|
64
|
+
open(instance: string, params: Json, callbacks: {
|
|
64
65
|
update: (updates: Entry<Json, Json>[], isInit: boolean) => void;
|
|
65
66
|
error: (error: Json) => void;
|
|
66
67
|
loading: () => void;
|
|
67
68
|
}): void;
|
|
68
|
-
close(
|
|
69
|
+
close(instance: string): void;
|
|
69
70
|
}
|
|
70
71
|
//# 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,
|
|
1
|
+
{"version":3,"file":"external.d.ts","sourceRoot":"","sources":["../src/external.ts"],"names":[],"mappings":"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"}
|
package/dist/external.js
CHANGED
|
@@ -10,20 +10,22 @@ export class GenericExternalService {
|
|
|
10
10
|
*/
|
|
11
11
|
constructor(resources) {
|
|
12
12
|
this.resources = resources;
|
|
13
|
+
this.instances = new Map();
|
|
13
14
|
}
|
|
14
|
-
subscribe(resourceName, params, callbacks) {
|
|
15
|
+
subscribe(instance, resourceName, params, callbacks) {
|
|
15
16
|
const resource = this.resources[resourceName];
|
|
16
17
|
if (!resource) {
|
|
17
18
|
throw new Error(`Unkonwn resource named '${resourceName}'`);
|
|
18
19
|
}
|
|
19
|
-
|
|
20
|
+
this.instances.set(instance, resource);
|
|
21
|
+
resource.open(instance, params, callbacks);
|
|
20
22
|
}
|
|
21
|
-
unsubscribe(
|
|
22
|
-
const resource = this.
|
|
23
|
-
if (
|
|
24
|
-
|
|
23
|
+
unsubscribe(instance) {
|
|
24
|
+
const resource = this.instances.get(instance);
|
|
25
|
+
if (resource) {
|
|
26
|
+
resource.close(instance);
|
|
27
|
+
this.instances.delete(instance);
|
|
25
28
|
}
|
|
26
|
-
resource.close(params);
|
|
27
29
|
}
|
|
28
30
|
shutdown() {
|
|
29
31
|
return;
|
|
@@ -33,14 +35,13 @@ export class TimerResource {
|
|
|
33
35
|
constructor() {
|
|
34
36
|
this.intervals = new Map();
|
|
35
37
|
}
|
|
36
|
-
open(params, callbacks) {
|
|
38
|
+
open(instance, params, callbacks) {
|
|
37
39
|
const time = new Date().getTime();
|
|
38
40
|
const values = [];
|
|
39
41
|
for (const name of Object.keys(params)) {
|
|
40
42
|
values.push([name, [time]]);
|
|
41
43
|
}
|
|
42
44
|
callbacks.update(values, true);
|
|
43
|
-
const id = toId(params);
|
|
44
45
|
const intervals = {};
|
|
45
46
|
for (const [name, duration] of Object.entries(params)) {
|
|
46
47
|
const ms = Number(duration);
|
|
@@ -51,14 +52,15 @@ export class TimerResource {
|
|
|
51
52
|
}, ms);
|
|
52
53
|
}
|
|
53
54
|
}
|
|
54
|
-
this.intervals.set(
|
|
55
|
+
this.intervals.set(instance, intervals);
|
|
55
56
|
}
|
|
56
|
-
close(
|
|
57
|
-
const intervals = this.intervals.get(
|
|
57
|
+
close(instance) {
|
|
58
|
+
const intervals = this.intervals.get(instance);
|
|
58
59
|
if (intervals != null) {
|
|
59
60
|
for (const interval of Object.values(intervals)) {
|
|
60
61
|
clearInterval(interval);
|
|
61
62
|
}
|
|
63
|
+
this.intervals.delete(instance);
|
|
62
64
|
}
|
|
63
65
|
}
|
|
64
66
|
}
|
|
@@ -97,8 +99,7 @@ export class Polled {
|
|
|
97
99
|
this.encodeParams = encodeParams;
|
|
98
100
|
this.intervals = new Map();
|
|
99
101
|
}
|
|
100
|
-
open(params, callbacks) {
|
|
101
|
-
this.close(params);
|
|
102
|
+
open(instance, params, callbacks) {
|
|
102
103
|
const url = `${this.url}?${this.encodeParams(params)}`;
|
|
103
104
|
const call = () => {
|
|
104
105
|
callbacks.loading();
|
|
@@ -112,23 +113,14 @@ export class Polled {
|
|
|
112
113
|
});
|
|
113
114
|
};
|
|
114
115
|
call();
|
|
115
|
-
this.intervals.set(
|
|
116
|
+
this.intervals.set(instance, setInterval(call, this.duration));
|
|
116
117
|
}
|
|
117
|
-
close(
|
|
118
|
-
const interval = this.intervals.get(
|
|
118
|
+
close(instance) {
|
|
119
|
+
const interval = this.intervals.get(instance);
|
|
119
120
|
if (interval) {
|
|
120
121
|
clearInterval(interval);
|
|
122
|
+
this.intervals.delete(instance);
|
|
121
123
|
}
|
|
122
124
|
}
|
|
123
125
|
}
|
|
124
|
-
function toId(params) {
|
|
125
|
-
if (typeof params == "object") {
|
|
126
|
-
const strparams = Object.entries(params)
|
|
127
|
-
.map(([key, value]) => `${key}:${btoa(JSON.stringify(value))}`)
|
|
128
|
-
.sort();
|
|
129
|
-
return `[${strparams.join(",")}]`;
|
|
130
|
-
}
|
|
131
|
-
else
|
|
132
|
-
return btoa(JSON.stringify(params));
|
|
133
|
-
}
|
|
134
126
|
//# sourceMappingURL=external.js.map
|
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;
|
|
1
|
+
{"version":3,"file":"external.js","sourceRoot":"","sources":["../src/external.ts"],"names":[],"mappings":"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"}
|
package/dist/remote.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Entry, ExternalService, Json } from "@skipruntime/
|
|
1
|
+
import type { Entry, ExternalService, Json } from "@skipruntime/core";
|
|
2
2
|
import type { Entrypoint } from "./rest.js";
|
|
3
3
|
/**
|
|
4
4
|
* An external Skip reactive service.
|
|
@@ -21,13 +21,12 @@ export declare class SkipExternalService implements ExternalService {
|
|
|
21
21
|
* @returns An `ExternalService` to interact with the service running at `entrypoint`.
|
|
22
22
|
*/
|
|
23
23
|
static direct(entrypoint: Entrypoint): SkipExternalService;
|
|
24
|
-
subscribe(resource: string, params: Json, callbacks: {
|
|
24
|
+
subscribe(instance: string, resource: string, params: Json, callbacks: {
|
|
25
25
|
update: (updates: Entry<Json, Json>[], isInitial: boolean) => void;
|
|
26
26
|
error: (error: Json) => void;
|
|
27
27
|
loading: () => void;
|
|
28
28
|
}): void;
|
|
29
|
-
unsubscribe(
|
|
29
|
+
unsubscribe(instance: string): void;
|
|
30
30
|
shutdown(): void;
|
|
31
|
-
private toId;
|
|
32
31
|
}
|
|
33
32
|
//# sourceMappingURL=remote.d.ts.map
|
package/dist/remote.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,mBAAmB,CAAC;AAEtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAM5C;;;;GAIG;AACH,qBAAa,mBAAoB,YAAW,eAAe;IAQvD,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAR9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA+B;IAEzD;;;OAGG;gBAEgB,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM;IAGtC;;;;;OAKG;IAEH,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,mBAAmB;IAU1D,SAAS,CACP,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,IAAI,EACZ,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;IAQ5B,QAAQ,IAAI,IAAI;CAKjB"}
|
package/dist/remote.js
CHANGED
|
@@ -32,7 +32,7 @@ export class SkipExternalService {
|
|
|
32
32
|
}
|
|
33
33
|
return new SkipExternalService(url, control_url);
|
|
34
34
|
}
|
|
35
|
-
subscribe(resource, params, callbacks) {
|
|
35
|
+
subscribe(instance, resource, params, callbacks) {
|
|
36
36
|
// TODO Manage Status
|
|
37
37
|
fetch(`${this.control_url}/v1/streams`, {
|
|
38
38
|
method: "POST",
|
|
@@ -58,31 +58,23 @@ export class SkipExternalService {
|
|
|
58
58
|
evSource.onerror = (e) => {
|
|
59
59
|
console.log(e);
|
|
60
60
|
};
|
|
61
|
-
this.resources.set(
|
|
61
|
+
this.resources.set(instance, evSource);
|
|
62
62
|
})
|
|
63
63
|
.catch((e) => {
|
|
64
64
|
console.log(e);
|
|
65
65
|
});
|
|
66
66
|
}
|
|
67
|
-
unsubscribe(
|
|
68
|
-
const closable = this.resources.get(
|
|
69
|
-
if (closable)
|
|
67
|
+
unsubscribe(instance) {
|
|
68
|
+
const closable = this.resources.get(instance);
|
|
69
|
+
if (closable) {
|
|
70
70
|
closable.close();
|
|
71
|
+
this.resources.delete(instance);
|
|
72
|
+
}
|
|
71
73
|
}
|
|
72
74
|
shutdown() {
|
|
73
75
|
for (const res of this.resources.values()) {
|
|
74
76
|
res.close();
|
|
75
77
|
}
|
|
76
78
|
}
|
|
77
|
-
toId(resource, params) {
|
|
78
|
-
if (typeof params == "object") {
|
|
79
|
-
const strparams = Object.entries(params)
|
|
80
|
-
.map(([key, value]) => `${key}:${btoa(JSON.stringify(value))}`)
|
|
81
|
-
.sort();
|
|
82
|
-
return `${resource}[${strparams.join(",")}]`;
|
|
83
|
-
}
|
|
84
|
-
else
|
|
85
|
-
return `${resource}[${btoa(JSON.stringify(params))}]`;
|
|
86
|
-
}
|
|
87
79
|
}
|
|
88
80
|
//# sourceMappingURL=remote.js.map
|
package/dist/remote.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote.js","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,iBAAiB;AACjB,OAAO,WAAW,MAAM,aAAa,CAAC;AAUtC;;;;GAIG;AACH,MAAM,OAAO,mBAAmB;IAG9B;;;OAGG;IACH,YACmB,GAAW,EACX,WAAmB;QADnB,QAAG,GAAH,GAAG,CAAQ;QACX,gBAAW,GAAX,WAAW,CAAQ;QARrB,cAAS,GAAG,IAAI,GAAG,EAAoB,CAAC;IAStD,CAAC;IAEJ;;;;;OAKG;IACH,gEAAgE;IAChE,MAAM,CAAC,MAAM,CAAC,UAAsB;QAClC,IAAI,GAAG,GAAG,UAAU,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,CAAC;QAC9E,IAAI,WAAW,GAAG,UAAU,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC;QACpF,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,GAAG,GAAG,WAAW,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC3E,WAAW,GAAG,WAAW,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC;QACnF,CAAC;QACD,OAAO,IAAI,mBAAmB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IACnD,CAAC;IAED,SAAS,CACP,QAAgB,EAChB,MAAY,EACZ,SAMC;QAED,qBAAqB;QACrB,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,aAAa,EAAE;YACtC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,QAAQ;gBACR,MAAM;aACP,CAAC;SACH,CAAC;aACC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aAC3B,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YACb,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,GAAG,IAAI,CAAC,GAAG,eAAe,IAAI,EAAE,CAAC,CAAC;YACnE,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAuB,EAAE,EAAE;gBAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAwB,CAAC;gBAC1D,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAClC,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAuB,EAAE,EAAE;gBAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAwB,CAAC;gBAC1D,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE;gBACvB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC,CAAC;YACF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"remote.js","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,iBAAiB;AACjB,OAAO,WAAW,MAAM,aAAa,CAAC;AAUtC;;;;GAIG;AACH,MAAM,OAAO,mBAAmB;IAG9B;;;OAGG;IACH,YACmB,GAAW,EACX,WAAmB;QADnB,QAAG,GAAH,GAAG,CAAQ;QACX,gBAAW,GAAX,WAAW,CAAQ;QARrB,cAAS,GAAG,IAAI,GAAG,EAAoB,CAAC;IAStD,CAAC;IAEJ;;;;;OAKG;IACH,gEAAgE;IAChE,MAAM,CAAC,MAAM,CAAC,UAAsB;QAClC,IAAI,GAAG,GAAG,UAAU,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,CAAC;QAC9E,IAAI,WAAW,GAAG,UAAU,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC;QACpF,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,GAAG,GAAG,WAAW,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC3E,WAAW,GAAG,WAAW,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC;QACnF,CAAC;QACD,OAAO,IAAI,mBAAmB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IACnD,CAAC;IAED,SAAS,CACP,QAAgB,EAChB,QAAgB,EAChB,MAAY,EACZ,SAMC;QAED,qBAAqB;QACrB,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,aAAa,EAAE;YACtC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,QAAQ;gBACR,MAAM;aACP,CAAC;SACH,CAAC;aACC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aAC3B,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YACb,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,GAAG,IAAI,CAAC,GAAG,eAAe,IAAI,EAAE,CAAC,CAAC;YACnE,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAuB,EAAE,EAAE;gBAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAwB,CAAC;gBAC1D,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAClC,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAuB,EAAE,EAAE;gBAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAwB,CAAC;gBAC1D,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE;gBACvB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC,CAAC;YACF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACzC,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE;YACpB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;IACP,CAAC;IAED,WAAW,CAAC,QAAgB;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,QAAQ;QACN,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1C,GAAG,CAAC,KAAK,EAAE,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
|
package/dist/rest.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Json, Entry } from "@skipruntime/
|
|
1
|
+
import type { Json, Entry } from "@skipruntime/core";
|
|
2
2
|
/**
|
|
3
3
|
* An entry point of a Skip reactive service.
|
|
4
4
|
*
|
|
@@ -89,17 +89,6 @@ export declare class SkipServiceBroker {
|
|
|
89
89
|
* @throws `NonUniqueValueException` when the key is associated to either zero or multiple values.
|
|
90
90
|
*/
|
|
91
91
|
getUnique<K extends Json, V extends Json>(resource: string, params: Json, key: K): Promise<V>;
|
|
92
|
-
/**
|
|
93
|
-
* Write the values for a single key in a collection.
|
|
94
|
-
*
|
|
95
|
-
* @typeParam K - Type of keys.
|
|
96
|
-
* @typeParam V - Type of values.
|
|
97
|
-
* @param collection - Name of the input collection to update, must be a key of the `Inputs` type parameter of the `SkipService` running at `entrypoint`.
|
|
98
|
-
* @param key - Key of entry to write.
|
|
99
|
-
* @param values - Values of entry to write.
|
|
100
|
-
* @returns {void}
|
|
101
|
-
*/
|
|
102
|
-
put<K extends Json, V extends Json>(collection: string, key: K, values: V[]): Promise<void>;
|
|
103
92
|
/**
|
|
104
93
|
* Write multiple entries to a collection.
|
|
105
94
|
*
|
|
@@ -109,7 +98,7 @@ export declare class SkipServiceBroker {
|
|
|
109
98
|
* @param entries - Entries to write.
|
|
110
99
|
* @returns {void}
|
|
111
100
|
*/
|
|
112
|
-
|
|
101
|
+
update<K extends Json, V extends Json>(collection: string, entries: Entry<K, V>[]): Promise<void>;
|
|
113
102
|
/**
|
|
114
103
|
* Remove all values associated with a key in a collection.
|
|
115
104
|
*
|
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,
|
|
1
|
+
{"version":3,"file":"rest.d.ts","sourceRoot":"","sources":["../src/rest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAGrD;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAQF;;;;;;;;;;;GAWG;AACH,wBAAsB,SAAS,CAAC,CAAC,SAAS,IAAI,EAC5C,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,QAAgB,EACpE,OAAO,GAAE;IACP,OAAO,CAAC,EAAE;QAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACvC,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;CAIlB,GACA,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAqB9B;AAED;;;;;GAKG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC;;;;;OAKG;gBAED,UAAU,GAAE,UAIX;IAKH;;;;;;;;OAQG;IACG,MAAM,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,SAAS,IAAI,EACzC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,IAAI,GACX,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IASzB;;;;;;;;;OASG;IACG,QAAQ,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,SAAS,IAAI,EAC3C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,IAAI,EACZ,GAAG,EAAE,CAAC,GACL,OAAO,CAAC,CAAC,EAAE,CAAC;IASf;;;;;;;;;;OAUG;IACG,SAAS,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,SAAS,IAAI,EAC5C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,IAAI,EACZ,GAAG,EAAE,CAAC,GACL,OAAO,CAAC,CAAC,CAAC;IAQb;;;;;;;;OAQG;IACG,MAAM,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,SAAS,IAAI,EACzC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GACrB,OAAO,CAAC,IAAI,CAAC;IAMhB;;;;;;;OAOG;IACG,SAAS,CAAC,CAAC,SAAS,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1E;;;;;;;;OAQG;IACG,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAE,IAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IAQzE;;;;;;;OAOG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG9C"}
|
package/dist/rest.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { NonUniqueValueException } from "@skipruntime/
|
|
1
|
+
import { NonUniqueValueException } from "@skipruntime/core";
|
|
2
2
|
function toHttp(entrypoint) {
|
|
3
3
|
if (entrypoint.secured)
|
|
4
4
|
return `https://${entrypoint.host}:${entrypoint.control_port}`;
|
|
@@ -105,19 +105,6 @@ export class SkipServiceBroker {
|
|
|
105
105
|
return values[0];
|
|
106
106
|
});
|
|
107
107
|
}
|
|
108
|
-
/**
|
|
109
|
-
* Write the values for a single key in a collection.
|
|
110
|
-
*
|
|
111
|
-
* @typeParam K - Type of keys.
|
|
112
|
-
* @typeParam V - Type of values.
|
|
113
|
-
* @param collection - Name of the input collection to update, must be a key of the `Inputs` type parameter of the `SkipService` running at `entrypoint`.
|
|
114
|
-
* @param key - Key of entry to write.
|
|
115
|
-
* @param values - Values of entry to write.
|
|
116
|
-
* @returns {void}
|
|
117
|
-
*/
|
|
118
|
-
async put(collection, key, values) {
|
|
119
|
-
return await this.patch(collection, [[key, values]]);
|
|
120
|
-
}
|
|
121
108
|
/**
|
|
122
109
|
* Write multiple entries to a collection.
|
|
123
110
|
*
|
|
@@ -127,7 +114,7 @@ export class SkipServiceBroker {
|
|
|
127
114
|
* @param entries - Entries to write.
|
|
128
115
|
* @returns {void}
|
|
129
116
|
*/
|
|
130
|
-
async
|
|
117
|
+
async update(collection, entries) {
|
|
131
118
|
await fetchJSON(`${this.entrypoint}/v1/inputs/${collection}`, "PATCH", {
|
|
132
119
|
body: entries,
|
|
133
120
|
});
|
|
@@ -141,7 +128,7 @@ export class SkipServiceBroker {
|
|
|
141
128
|
* @returns {void}
|
|
142
129
|
*/
|
|
143
130
|
async deleteKey(collection, key) {
|
|
144
|
-
return await this.
|
|
131
|
+
return await this.update(collection, [[key, []]]);
|
|
145
132
|
}
|
|
146
133
|
/**
|
|
147
134
|
* Create a resource instance UUID.
|
package/dist/rest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rest.js","sourceRoot":"","sources":["../src/rest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"rest.js","sourceRoot":"","sources":["../src/rest.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skipruntime/helpers",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.9",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dist/index.js",
|
|
@@ -21,8 +21,7 @@
|
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"eventsource": "^2.0.2",
|
|
23
23
|
"express": "^4.21.1",
|
|
24
|
-
"@skipruntime/core": "
|
|
25
|
-
"@skipruntime/api": "^0.0.5"
|
|
24
|
+
"@skipruntime/core": "0.0.6"
|
|
26
25
|
},
|
|
27
26
|
"devDependencies": {
|
|
28
27
|
"@types/eventsource": "^1.1.15"
|
package/src/external.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Entry, ExternalService, Json } from "@skipruntime/
|
|
1
|
+
import type { Entry, ExternalService, Json } from "@skipruntime/core";
|
|
2
2
|
import { fetchJSON } from "./rest.js";
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -6,6 +6,7 @@ import { fetchJSON } from "./rest.js";
|
|
|
6
6
|
*/
|
|
7
7
|
export interface ExternalResource {
|
|
8
8
|
open(
|
|
9
|
+
instance: string,
|
|
9
10
|
params: Json,
|
|
10
11
|
callbacks: {
|
|
11
12
|
update: (updates: Entry<Json, Json>[], isInit: boolean) => void;
|
|
@@ -14,7 +15,7 @@ export interface ExternalResource {
|
|
|
14
15
|
},
|
|
15
16
|
): void;
|
|
16
17
|
|
|
17
|
-
close(
|
|
18
|
+
close(instance: string): void;
|
|
18
19
|
}
|
|
19
20
|
|
|
20
21
|
/**
|
|
@@ -23,6 +24,8 @@ export interface ExternalResource {
|
|
|
23
24
|
* `GenericExternalService` provides an implementation of `ExternalService` for external resources by lifting the `open` and `close` operations from `ExternalResource` to the `subscribe` and `unsubscribe` operations required by `ExternalService`.
|
|
24
25
|
*/
|
|
25
26
|
export class GenericExternalService implements ExternalService {
|
|
27
|
+
private readonly instances = new Map<string, ExternalResource>();
|
|
28
|
+
|
|
26
29
|
/**
|
|
27
30
|
* @param resources - Association of resource names to `ExternalResource`s.
|
|
28
31
|
*/
|
|
@@ -31,6 +34,7 @@ export class GenericExternalService implements ExternalService {
|
|
|
31
34
|
) {}
|
|
32
35
|
|
|
33
36
|
subscribe(
|
|
37
|
+
instance: string,
|
|
34
38
|
resourceName: string,
|
|
35
39
|
params: Json,
|
|
36
40
|
callbacks: {
|
|
@@ -38,24 +42,23 @@ export class GenericExternalService implements ExternalService {
|
|
|
38
42
|
error: (error: Json) => void;
|
|
39
43
|
loading: () => void;
|
|
40
44
|
},
|
|
41
|
-
)
|
|
45
|
+
) {
|
|
42
46
|
const resource = this.resources[resourceName] as
|
|
43
47
|
| ExternalResource
|
|
44
48
|
| undefined;
|
|
45
49
|
if (!resource) {
|
|
46
50
|
throw new Error(`Unkonwn resource named '${resourceName}'`);
|
|
47
51
|
}
|
|
48
|
-
|
|
52
|
+
this.instances.set(instance, resource);
|
|
53
|
+
resource.open(instance, params, callbacks);
|
|
49
54
|
}
|
|
50
55
|
|
|
51
|
-
unsubscribe(
|
|
52
|
-
const resource = this.
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
throw new Error(`Unkonwn resource named '${resourceName}'`);
|
|
56
|
+
unsubscribe(instance: string) {
|
|
57
|
+
const resource = this.instances.get(instance);
|
|
58
|
+
if (resource) {
|
|
59
|
+
resource.close(instance);
|
|
60
|
+
this.instances.delete(instance);
|
|
57
61
|
}
|
|
58
|
-
resource.close(params);
|
|
59
62
|
}
|
|
60
63
|
|
|
61
64
|
shutdown(): void {
|
|
@@ -64,11 +67,13 @@ export class GenericExternalService implements ExternalService {
|
|
|
64
67
|
}
|
|
65
68
|
|
|
66
69
|
type Timeout = ReturnType<typeof setInterval>;
|
|
70
|
+
type Timeouts = { [name: string]: Timeout };
|
|
67
71
|
|
|
68
72
|
export class TimerResource implements ExternalResource {
|
|
69
73
|
private readonly intervals = new Map<string, { [name: string]: Timeout }>();
|
|
70
74
|
|
|
71
75
|
open(
|
|
76
|
+
instance: string,
|
|
72
77
|
params: Json,
|
|
73
78
|
callbacks: {
|
|
74
79
|
update: (updates: Entry<Json, Json>[], isInit: boolean) => void;
|
|
@@ -82,8 +87,7 @@ export class TimerResource implements ExternalResource {
|
|
|
82
87
|
values.push([name, [time]]);
|
|
83
88
|
}
|
|
84
89
|
callbacks.update(values, true);
|
|
85
|
-
const
|
|
86
|
-
const intervals: { [name: string]: Timeout } = {};
|
|
90
|
+
const intervals: Timeouts = {};
|
|
87
91
|
for (const [name, duration] of Object.entries(params)) {
|
|
88
92
|
const ms = Number(duration);
|
|
89
93
|
if (ms > 0) {
|
|
@@ -93,15 +97,16 @@ export class TimerResource implements ExternalResource {
|
|
|
93
97
|
}, ms);
|
|
94
98
|
}
|
|
95
99
|
}
|
|
96
|
-
this.intervals.set(
|
|
100
|
+
this.intervals.set(instance, intervals);
|
|
97
101
|
}
|
|
98
102
|
|
|
99
|
-
close(
|
|
100
|
-
const intervals = this.intervals.get(
|
|
103
|
+
close(instance: string): void {
|
|
104
|
+
const intervals = this.intervals.get(instance);
|
|
101
105
|
if (intervals != null) {
|
|
102
106
|
for (const interval of Object.values(intervals)) {
|
|
103
107
|
clearInterval(interval);
|
|
104
108
|
}
|
|
109
|
+
this.intervals.delete(instance);
|
|
105
110
|
}
|
|
106
111
|
}
|
|
107
112
|
}
|
|
@@ -145,14 +150,14 @@ export class Polled<S extends Json, K extends Json, V extends Json>
|
|
|
145
150
|
) {}
|
|
146
151
|
|
|
147
152
|
open(
|
|
153
|
+
instance: string,
|
|
148
154
|
params: Json,
|
|
149
155
|
callbacks: {
|
|
150
156
|
update: (updates: Entry<Json, Json>[], isInit: boolean) => void;
|
|
151
157
|
error: (error: Json) => void;
|
|
152
158
|
loading: () => void;
|
|
153
159
|
},
|
|
154
|
-
)
|
|
155
|
-
this.close(params);
|
|
160
|
+
) {
|
|
156
161
|
const url = `${this.url}?${this.encodeParams(params)}`;
|
|
157
162
|
const call = () => {
|
|
158
163
|
callbacks.loading();
|
|
@@ -166,22 +171,14 @@ export class Polled<S extends Json, K extends Json, V extends Json>
|
|
|
166
171
|
});
|
|
167
172
|
};
|
|
168
173
|
call();
|
|
169
|
-
this.intervals.set(
|
|
174
|
+
this.intervals.set(instance, setInterval(call, this.duration));
|
|
170
175
|
}
|
|
171
176
|
|
|
172
|
-
close(
|
|
173
|
-
const interval = this.intervals.get(
|
|
177
|
+
close(instance: string): void {
|
|
178
|
+
const interval = this.intervals.get(instance);
|
|
174
179
|
if (interval) {
|
|
175
180
|
clearInterval(interval);
|
|
181
|
+
this.intervals.delete(instance);
|
|
176
182
|
}
|
|
177
183
|
}
|
|
178
184
|
}
|
|
179
|
-
|
|
180
|
-
function toId(params: Json): string {
|
|
181
|
-
if (typeof params == "object") {
|
|
182
|
-
const strparams = Object.entries(params)
|
|
183
|
-
.map(([key, value]) => `${key}:${btoa(JSON.stringify(value))}`)
|
|
184
|
-
.sort();
|
|
185
|
-
return `[${strparams.join(",")}]`;
|
|
186
|
-
} else return btoa(JSON.stringify(params));
|
|
187
|
-
}
|
package/src/remote.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// in nodejs LTS.
|
|
3
3
|
import EventSource from "eventsource";
|
|
4
4
|
|
|
5
|
-
import type { Entry, ExternalService, Json } from "@skipruntime/
|
|
5
|
+
import type { Entry, ExternalService, Json } from "@skipruntime/core";
|
|
6
6
|
|
|
7
7
|
import type { Entrypoint } from "./rest.js";
|
|
8
8
|
|
|
@@ -45,6 +45,7 @@ export class SkipExternalService implements ExternalService {
|
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
subscribe(
|
|
48
|
+
instance: string,
|
|
48
49
|
resource: string,
|
|
49
50
|
params: Json,
|
|
50
51
|
callbacks: {
|
|
@@ -80,16 +81,19 @@ export class SkipExternalService implements ExternalService {
|
|
|
80
81
|
evSource.onerror = (e) => {
|
|
81
82
|
console.log(e);
|
|
82
83
|
};
|
|
83
|
-
this.resources.set(
|
|
84
|
+
this.resources.set(instance, evSource);
|
|
84
85
|
})
|
|
85
86
|
.catch((e: unknown) => {
|
|
86
87
|
console.log(e);
|
|
87
88
|
});
|
|
88
89
|
}
|
|
89
90
|
|
|
90
|
-
unsubscribe(
|
|
91
|
-
const closable = this.resources.get(
|
|
92
|
-
if (closable)
|
|
91
|
+
unsubscribe(instance: string) {
|
|
92
|
+
const closable = this.resources.get(instance);
|
|
93
|
+
if (closable) {
|
|
94
|
+
closable.close();
|
|
95
|
+
this.resources.delete(instance);
|
|
96
|
+
}
|
|
93
97
|
}
|
|
94
98
|
|
|
95
99
|
shutdown(): void {
|
|
@@ -97,13 +101,4 @@ export class SkipExternalService implements ExternalService {
|
|
|
97
101
|
res.close();
|
|
98
102
|
}
|
|
99
103
|
}
|
|
100
|
-
|
|
101
|
-
private toId(resource: string, params: Json): string {
|
|
102
|
-
if (typeof params == "object") {
|
|
103
|
-
const strparams = Object.entries(params)
|
|
104
|
-
.map(([key, value]) => `${key}:${btoa(JSON.stringify(value))}`)
|
|
105
|
-
.sort();
|
|
106
|
-
return `${resource}[${strparams.join(",")}]`;
|
|
107
|
-
} else return `${resource}[${btoa(JSON.stringify(params))}]`;
|
|
108
|
-
}
|
|
109
104
|
}
|
package/src/rest.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Json, Entry } from "@skipruntime/
|
|
2
|
-
import { NonUniqueValueException } from "@skipruntime/
|
|
1
|
+
import type { Json, Entry } from "@skipruntime/core";
|
|
2
|
+
import { NonUniqueValueException } from "@skipruntime/core";
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* An entry point of a Skip reactive service.
|
|
@@ -172,24 +172,6 @@ export class SkipServiceBroker {
|
|
|
172
172
|
});
|
|
173
173
|
}
|
|
174
174
|
|
|
175
|
-
/**
|
|
176
|
-
* Write the values for a single key in a collection.
|
|
177
|
-
*
|
|
178
|
-
* @typeParam K - Type of keys.
|
|
179
|
-
* @typeParam V - Type of values.
|
|
180
|
-
* @param collection - Name of the input collection to update, must be a key of the `Inputs` type parameter of the `SkipService` running at `entrypoint`.
|
|
181
|
-
* @param key - Key of entry to write.
|
|
182
|
-
* @param values - Values of entry to write.
|
|
183
|
-
* @returns {void}
|
|
184
|
-
*/
|
|
185
|
-
async put<K extends Json, V extends Json>(
|
|
186
|
-
collection: string,
|
|
187
|
-
key: K,
|
|
188
|
-
values: V[],
|
|
189
|
-
): Promise<void> {
|
|
190
|
-
return await this.patch(collection, [[key, values]]);
|
|
191
|
-
}
|
|
192
|
-
|
|
193
175
|
/**
|
|
194
176
|
* Write multiple entries to a collection.
|
|
195
177
|
*
|
|
@@ -199,7 +181,7 @@ export class SkipServiceBroker {
|
|
|
199
181
|
* @param entries - Entries to write.
|
|
200
182
|
* @returns {void}
|
|
201
183
|
*/
|
|
202
|
-
async
|
|
184
|
+
async update<K extends Json, V extends Json>(
|
|
203
185
|
collection: string,
|
|
204
186
|
entries: Entry<K, V>[],
|
|
205
187
|
): Promise<void> {
|
|
@@ -217,7 +199,7 @@ export class SkipServiceBroker {
|
|
|
217
199
|
* @returns {void}
|
|
218
200
|
*/
|
|
219
201
|
async deleteKey<K extends Json>(collection: string, key: K): Promise<void> {
|
|
220
|
-
return await this.
|
|
202
|
+
return await this.update(collection, [[key, []]]);
|
|
221
203
|
}
|
|
222
204
|
|
|
223
205
|
/**
|