@skipruntime/helpers 0.0.2 → 0.0.4

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.
@@ -1,31 +1,45 @@
1
1
  import type { Entry, ExternalService, Json } from "@skipruntime/api";
2
2
  export interface ExternalResource {
3
- open(params: Record<string, string | number>, callbacks: {
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: Record<string, string | number>): void;
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: Record<string, ExternalResource>);
13
- subscribe(resourceName: string, params: Record<string, string | number>, callbacks: {
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: Record<string, string>): void;
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: Record<string, string | number>, callbacks: {
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: Record<string, string | number>): void;
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: Record<string, string | number>, callbacks: {
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: Record<string, string | number>): void;
57
+ close(params: {
58
+ [param: string]: string | number;
59
+ }): void;
42
60
  }
43
61
  //# sourceMappingURL=external.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"external.d.ts","sourceRoot":"","sources":["../src/external.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"external.d.ts","sourceRoot":"","sources":["../src/external.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"external.js","sourceRoot":"","sources":["../src/external.ts"],"names":[],"mappings":"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"}
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,SAA+C;QAA/C,cAAS,GAAT,SAAS,CAAsC;IAAG,CAAC;IAEvE,SAAS,CACP,YAAoB,EACpB,MAA4C,EAC5C,SAIC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAE/B,CAAC;QACd,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,2BAA2B,YAAY,GAAG,CAAC,CAAC;QAC9D,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACnC,CAAC;IAED,WAAW,CAAC,YAAoB,EAAE,MAAmC;QACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAE/B,CAAC;QACd,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,2BAA2B,YAAY,GAAG,CAAC,CAAC;QAC9D,CAAC;QACD,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC;IAED,QAAQ;QACN,OAAO;IACT,CAAC;CACF;AAID,MAAM,OAAO,aAAa;IAA1B;QACU,cAAS,GAAG,IAAI,GAAG,EAAuC,CAAC;IAsCrE,CAAC;IApCC,IAAI,CACF,MAA4C,EAC5C,SAIC;QAED,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;QAClC,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC;QACD,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/B,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QACxB,MAAM,SAAS,GAAgC,EAAE,CAAC;QAClD,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACtD,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC5B,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;gBACX,SAAS,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,GAAG,EAAE;oBACjC,MAAM,QAAQ,GAAsB,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;oBACnE,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;gBACrC,CAAC,EAAE,EAAE,CAAC,CAAC;YACT,CAAC;QACH,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,MAA4C;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACnD,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;YACtB,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;gBAChD,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAO,MAAM;IAKjB,YACU,GAAW,EACX,QAAgB,EAChB,IAAgC;QAFhC,QAAG,GAAH,GAAG,CAAQ;QACX,aAAQ,GAAR,QAAQ,CAAQ;QAChB,SAAI,GAAJ,IAAI,CAA4B;QALlC,cAAS,GAAG,IAAI,GAAG,EAAmB,CAAC;IAM5C,CAAC;IAEJ,IAAI,CACF,MAA4C,EAC5C,SAIC;QAED,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACnB,MAAM,WAAW,GAAgC,EAAE,CAAC;QACpD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAClD,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QACtC,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC9D,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,GAAG,EAAE;YAChB,SAAS,CAAC,OAAO,EAAE,CAAC;YACpB,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC;iBACtB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;gBACV,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAM,CAAC,EAAE,IAAI,CAAC,CAAC;YAC/C,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE;gBACpB,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACnB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;QACF,IAAI,EAAE,CAAC;QACP,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,MAA4C;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAClD,IAAI,QAAQ,EAAE,CAAC;YACb,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;CACF;AAED,SAAS,IAAI,CAAC,MAA4C;IACxD,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SACrC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;SACnD,IAAI,EAAE,CAAC;IACV,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACpC,CAAC"}
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, parseReactiveResponse, reactiveResponseHeader, } from "./utils.js";
4
- export { RESTWrapperOfSkipService } from "./rest.js";
3
+ export { Sum, Min, Max, CountMapper } from "./utils.js";
4
+ export { fetchJSON, RESTWrapperOfSkipService } from "./rest.js";
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -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,EACL,GAAG,EACH,GAAG,EACH,GAAG,EACH,WAAW,EACX,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC"}
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,SAAS,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, parseReactiveResponse, reactiveResponseHeader, } from "./utils.js";
4
- export { RESTWrapperOfSkipService } from "./rest.js";
3
+ export { Sum, Min, Max, CountMapper } from "./utils.js";
4
+ export { fetchJSON, 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,EACL,GAAG,EACH,GAAG,EACH,GAAG,EACH,WAAW,EACX,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC"}
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,SAAS,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: Record<string, string>, callbacks: {
9
- update: (updates: Entry<Json, Json>[], isInit: boolean) => void;
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: Record<string, string>): void;
16
+ unsubscribe(resource: string, params: {
17
+ [param: string]: string;
18
+ }): void;
14
19
  shutdown(): void;
15
20
  private toId;
16
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":"AAAA,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;IAG7C,OAAO,CAAC,GAAG;IAFvB,OAAO,CAAC,SAAS,CAA+B;gBAE5B,GAAG,EAAE,MAAM;IAE/B,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,mBAAmB;IAO1D,SAAS,CACP,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,SAAS,EAAE;QACT,MAAM,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QAEhE,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC;QAE7B,OAAO,EAAE,MAAM,IAAI,CAAC;KACrB,GACA,IAAI;IAmBP,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAK5D,QAAQ,IAAI,IAAI;IAMhB,OAAO,CAAC,IAAI;CAQb"}
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.port.toString()}`;
8
- if (entrypoint.secured)
9
- url = `https://${entrypoint.host}:${entrypoint.port.toString()}`;
10
- return new SkipExternalService(url);
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
- const evSource = new EventSource(`${this.url}?${new URLSearchParams(params)}`);
15
- evSource.addEventListener("init", (e) => {
16
- const updates = JSON.parse(e.data);
17
- callbacks.update(updates, true);
18
- });
19
- evSource.addEventListener("update", (e) => {
20
- const updates = JSON.parse(e.data);
21
- callbacks.update(updates, false);
22
- });
23
- evSource.onerror = (e) => {
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.text())
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));
@@ -1 +1 @@
1
- {"version":3,"file":"remote.js","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":"AAQA,MAAM,OAAO,mBAAmB;IAG9B,YAAoB,GAAW;QAAX,QAAG,GAAH,GAAG,CAAQ;QAFvB,cAAS,GAAG,IAAI,GAAG,EAAoB,CAAC;IAEd,CAAC;IAEnC,MAAM,CAAC,MAAM,CAAC,UAAsB;QAClC,IAAI,GAAG,GAAG,UAAU,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;QACpE,IAAI,UAAU,CAAC,OAAO;YACpB,GAAG,GAAG,WAAW,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;QACnE,OAAO,IAAI,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IAED,SAAS,CACP,QAAgB,EAChB,MAA8B,EAC9B,SAMC;QAED,qBAAqB;QACrB,MAAM,QAAQ,GAAG,IAAI,WAAW,CAC9B,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE,CAC7C,CAAC;QACF,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAuB,EAAE,EAAE;YAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAwB,CAAC;YAC1D,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAuB,EAAE,EAAE;YAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAwB,CAAC;YAC1D,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE;YACvB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAED,WAAW,CAAC,QAAgB,EAAE,MAA8B;QAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;QACjE,IAAI,QAAQ;YAAE,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjC,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;IAEO,IAAI,CAAC,QAAgB,EAAE,MAA8B;QAC3D,sEAAsE;QACtE,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YAC7C,SAAS,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,GAAG,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAC/C,CAAC;CACF"}
1
+ {"version":3,"file":"remote.js","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":"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"}
package/dist/rest.d.ts CHANGED
@@ -1,17 +1,27 @@
1
1
  import type { Json, Entry } from "@skipruntime/api";
2
2
  export type Entrypoint = {
3
3
  host: string;
4
- port: number;
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?: Record<string, string>, data?: Json): Promise<[V | null, 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: Record<string, string>): Promise<Entry<K, V>[]>;
12
- getArray<V extends Json>(resource: string, params: Record<string, string>, key: string): Promise<V[]>;
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>;
23
+ getStreamUUID(resource: string, params?: {
24
+ [param: string]: string;
25
+ }): Promise<string>;
16
26
  }
17
27
  //# sourceMappingURL=rest.d.ts.map
@@ -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,IAAI,EAAE,MAAM,CAAC;IACb,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,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EACpC,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,UAGX;IAKG,MAAM,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,SAAS,IAAI,EACzC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAUnB,QAAQ,CAAC,CAAC,SAAS,IAAI,EAC3B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,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;IAIV,SAAS,CAAC,CAAC,SAAS,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAG3E"}
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;IAIpE,aAAa,CACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;KAAO,GACvC,OAAO,CAAC,MAAM,CAAC;CAOnB"}
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.port}`;
4
- return `http://${entrypoint.host}:${entrypoint.port}`;
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,29 +27,37 @@ export async function fetchJSON(url, method = "GET", headers = {}, data) {
27
27
  export class RESTWrapperOfSkipService {
28
28
  constructor(entrypoint = {
29
29
  host: "localhost",
30
- port: 3587,
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, []]]);
53
54
  }
55
+ async getStreamUUID(resource, params = {}) {
56
+ return fetch(`${this.entrypoint}/v1/streams`, {
57
+ method: "POST",
58
+ headers: { "Content-Type": "application/json" },
59
+ body: JSON.stringify({ resource, params }),
60
+ }).then((res) => res.text());
61
+ }
54
62
  }
55
63
  //# sourceMappingURL=rest.js.map
package/dist/rest.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"rest.js","sourceRoot":"","sources":["../src/rest.ts"],"names":[],"mappings":"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"}
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, ReactiveResponse, Json } from "@skipruntime/api";
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
@@ -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,EACV,OAAO,EACP,gBAAgB,EAChB,gBAAgB,EAChB,IAAI,EACL,MAAM,kBAAkB,CAAC;AAE1B,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;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,OAAO,GAAG,MAAM,GACvB,gBAAgB,GAAG,SAAS,CAO9B;AAED,wBAAgB,sBAAsB,CACpC,gBAAgB,EAAE,gBAAgB,GACjC,CAAC,MAAM,EAAE,MAAM,CAAC,CAElB"}
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;AAQnD,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;AAED,MAAM,UAAU,qBAAqB,CACnC,MAAwB;IAExB,MAAM,mBAAmB,GACvB,OAAO,MAAM,IAAI,QAAQ;QACvB,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IACjD,IAAI,CAAC,mBAAmB;QAAE,OAAO,SAAS,CAAC;IAC3C,OAAO,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAqB,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,gBAAkC;IAElC,OAAO,CAAC,8BAA8B,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAC5E,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.2",
3
+ "version": "0.0.4",
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.2"
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: Record<string, string | number>,
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: Record<string, string | number>): void;
14
+ close(params: { [param: string]: string | number }): void;
15
15
  }
16
16
 
17
17
  export class GenericExternalService implements ExternalService {
18
- constructor(private resources: Record<string, ExternalResource>) {}
18
+ constructor(private resources: { [name: string]: ExternalResource }) {}
19
19
 
20
20
  subscribe(
21
21
  resourceName: string,
22
- params: Record<string, string | number>,
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: Record<string, string>) {
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, Record<string, Timeout>>();
56
+ private intervals = new Map<string, { [name: string]: Timeout }>();
57
57
 
58
58
  open(
59
- params: Record<string, string | number>,
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: Record<string, Timeout> = {};
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: Record<string, string | number>): void {
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: Record<string, string | number>,
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: Record<string, string> = {};
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: Record<string, string | number>): void {
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: Record<string, string | number>): string {
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";
15
- export { RESTWrapperOfSkipService } from "./rest.js";
7
+ export { Sum, Min, Max, CountMapper } from "./utils.js";
8
+ export { fetchJSON, 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(private url: string) {}
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.port.toString()}`;
16
- if (entrypoint.secured)
17
- url = `https://${entrypoint.host}:${entrypoint.port.toString()}`;
18
- return new SkipExternalService(url);
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: Record<string, string>,
34
+ params: { [param: string]: string },
24
35
  callbacks: {
25
- update: (updates: Entry<Json, Json>[], isInit: boolean) => void;
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
- const evSource = new EventSource(
34
- `${this.url}?${new URLSearchParams(params)}`,
35
- );
36
- evSource.addEventListener("init", (e: MessageEvent<string>) => {
37
- const updates = JSON.parse(e.data) as Entry<Json, Json>[];
38
- callbacks.update(updates, true);
39
- });
40
- evSource.addEventListener("update", (e: MessageEvent<string>) => {
41
- const updates = JSON.parse(e.data) as Entry<Json, Json>[];
42
- callbacks.update(updates, false);
43
- });
44
- evSource.onerror = (e) => {
45
- console.log(e);
46
- };
47
- this.resources.set(this.toId(resource, params), evSource);
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.text())
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: Record<string, string>) {
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: Record<string, string>): string {
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
- port: number;
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.port}`;
12
- return `http://${entrypoint.host}:${entrypoint.port}`;
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: Record<string, string> = {},
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
- port: 3587,
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: Record<string, string>,
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: Record<string, string>,
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,10 +92,26 @@ export class RESTWrapperOfSkipService {
90
92
  collection: string,
91
93
  values: Entry<K, V>[],
92
94
  ): Promise<void> {
93
- await fetchJSON(`${this.entrypoint}/v1/${collection}`, "PATCH", {}, values);
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> {
97
104
  return await this.patch(collection, [[key, []]]);
98
105
  }
106
+
107
+ async getStreamUUID(
108
+ resource: string,
109
+ params: { [param: string]: string } = {},
110
+ ): Promise<string> {
111
+ return fetch(`${this.entrypoint}/v1/streams`, {
112
+ method: "POST",
113
+ headers: { "Content-Type": "application/json" },
114
+ body: JSON.stringify({ resource, params }),
115
+ }).then((res) => res.text());
116
+ }
99
117
  }
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
- }