@rdfc/js-runner 3.0.2 → 3.0.4-remote

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.
Files changed (84) hide show
  1. package/.claude/settings.local.json +12 -0
  2. package/README.md +41 -1
  3. package/__tests__/echoProcessor.test.ts +11 -12
  4. package/bin/runner.js +7 -1
  5. package/bin/server.js +13 -0
  6. package/bun.lock +820 -0
  7. package/examples/echo/.idea/echo.iml +9 -0
  8. package/examples/echo/.idea/misc.xml +6 -0
  9. package/{.idea → examples/echo/.idea}/modules.xml +1 -1
  10. package/examples/echo/.idea/vcs.xml +7 -0
  11. package/examples/echo/.swls/config.json +1 -0
  12. package/examples/echo/package-lock.json +27 -29
  13. package/examples/echo/pipeline.ttl +0 -1
  14. package/examples/echo/processors.ttl +1 -1
  15. package/examples/echo/remote_pipeline.ttl +18 -0
  16. package/examples/echo/server.ttl +5 -0
  17. package/examples/echo/untitled:/types/MyType.ttl +0 -0
  18. package/file:/home/silvius/Projects/mumo-pipeline/ldes/http_3A_2F_2Fdata.mumo.be_2Fstreams_2Fnodes_2Fdefault/root/index.trig +3 -0
  19. package/ldes/http_3A_2F_2Fdata.mumo.be_2Fstreams_2Fnodes_2Fdefault/root/index.trig +3 -0
  20. package/lib/client.d.ts +2 -1
  21. package/lib/client.js +70 -22
  22. package/lib/index.d.ts +2 -0
  23. package/lib/index.js +3 -1
  24. package/lib/jsonld.d.ts +17 -0
  25. package/lib/jsonld.js +135 -0
  26. package/lib/logger.d.ts +1 -0
  27. package/lib/logger.js +19 -9
  28. package/lib/reader.d.ts +4 -1
  29. package/lib/reader.js +11 -3
  30. package/lib/runner.d.ts +6 -1
  31. package/lib/runner.js +43 -15
  32. package/lib/server.d.ts +9 -0
  33. package/lib/server.js +459 -0
  34. package/lib/state.d.ts +32 -0
  35. package/lib/state.js +71 -0
  36. package/lib/testUtils/duplex.js +1 -1
  37. package/lib/testUtils/index.d.ts +9 -9
  38. package/lib/testUtils/index.js +9 -9
  39. package/lib/testUtils.d.ts +24 -0
  40. package/lib/testUtils.js +150 -0
  41. package/lib/tsconfig.tsbuildinfo +1 -1
  42. package/lib/writer.d.ts +5 -1
  43. package/lib/writer.js +26 -10
  44. package/minimal.ttl +99 -0
  45. package/package.json +21 -19
  46. package/src/client.ts +99 -24
  47. package/src/index.ts +2 -0
  48. package/src/logger.ts +15 -7
  49. package/src/reader.ts +19 -9
  50. package/src/runner.ts +61 -12
  51. package/src/server.ts +545 -0
  52. package/src/state.ts +105 -0
  53. package/src/testUtils/duplex.ts +1 -4
  54. package/src/testUtils/index.ts +25 -21
  55. package/src/writer.ts +36 -12
  56. package/.idea/LNKD.tech Editor.xml +0 -194
  57. package/.idea/codeStyles/Project.xml +0 -52
  58. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  59. package/.idea/copilot.data.migration.agent.xml +0 -6
  60. package/.idea/copilot.data.migration.ask.xml +0 -6
  61. package/.idea/copilot.data.migration.ask2agent.xml +0 -6
  62. package/.idea/copilot.data.migration.edit.xml +0 -6
  63. package/.idea/inspectionProfiles/Project_Default.xml +0 -6
  64. package/.idea/js-runner.iml +0 -12
  65. package/.idea/vcs.xml +0 -6
  66. package/dist/args.d.ts +0 -4
  67. package/dist/args.js +0 -58
  68. package/dist/connectors/file.d.ts +0 -15
  69. package/dist/connectors/file.js +0 -89
  70. package/dist/connectors/http.d.ts +0 -14
  71. package/dist/connectors/http.js +0 -82
  72. package/dist/connectors/kafka.d.ts +0 -48
  73. package/dist/connectors/kafka.js +0 -68
  74. package/dist/connectors/ws.d.ts +0 -10
  75. package/dist/connectors/ws.js +0 -72
  76. package/dist/connectors.d.ts +0 -73
  77. package/dist/connectors.js +0 -168
  78. package/dist/index.cjs +0 -732
  79. package/dist/index.d.ts +0 -42
  80. package/dist/index.js +0 -83
  81. package/dist/tsconfig.tsbuildinfo +0 -1
  82. package/dist/util.d.ts +0 -71
  83. package/dist/util.js +0 -92
  84. package/jest.config.js +0 -2
@@ -0,0 +1,9 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <module type="JAVA_MODULE" version="4">
3
+ <component name="NewModuleRootManager" inherit-compiler-output="true">
4
+ <exclude-output />
5
+ <content url="file://$MODULE_DIR$" />
6
+ <orderEntry type="inheritedJdk" />
7
+ <orderEntry type="sourceFolder" forTests="false" />
8
+ </component>
9
+ </module>
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectRootManager" version="2" languageLevel="JDK_23" project-jdk-name="24" project-jdk-type="JavaSDK">
4
+ <output url="file://$PROJECT_DIR$/out" />
5
+ </component>
6
+ </project>
@@ -2,7 +2,7 @@
2
2
  <project version="4">
3
3
  <component name="ProjectModuleManager">
4
4
  <modules>
5
- <module fileurl="file://$PROJECT_DIR$/.idea/js-runner.iml" filepath="$PROJECT_DIR$/.idea/js-runner.iml" />
5
+ <module fileurl="file://$PROJECT_DIR$/.idea/echo.iml" filepath="$PROJECT_DIR$/.idea/echo.iml" />
6
6
  </modules>
7
7
  </component>
8
8
  </project>
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
5
+ <mapping directory="$PROJECT_DIR$/node_modules/@rdfc/js-runner" vcs="Git" />
6
+ </component>
7
+ </project>
@@ -0,0 +1 @@
1
+ { "disabled": ["shapes"] }
@@ -17,45 +17,43 @@
17
17
  },
18
18
  "../..": {
19
19
  "name": "@rdfc/js-runner",
20
- "version": "1.0.0",
21
- "license": "ISC",
20
+ "version": "3.0.3",
21
+ "license": "MIT",
22
22
  "dependencies": {
23
- "@grpc/grpc-js": "^1.12.6",
24
- "@rdfc/proto": "^0.1.1",
23
+ "@grpc/grpc-js": "^1.14.3",
24
+ "@rdfc/proto": "^0.1.2",
25
25
  "@treecg/types": "^0.4.6",
26
- "jsonld": "^8.3.3",
27
- "jsonld-streaming-parser": "^5.0.0",
28
- "n3": "^1.23.1",
29
- "rdf-lens": "^1.3.5",
30
- "winston": "^3.17.0",
26
+ "jsonld": "^9.0.0",
27
+ "jsonld-streaming-parser": "^5.0.1",
28
+ "n3": "^2.0.3",
29
+ "rdf-lens": "^1.3.6",
30
+ "winston": "^3.19.0",
31
31
  "winston-transport": "^4.9.0"
32
32
  },
33
33
  "bin": {
34
- "js-runner": "bin/runner.js"
34
+ "js-runner": "bin/runner.js",
35
+ "js-runner-server": "bin/server.js"
35
36
  },
36
37
  "devDependencies": {
37
- "@eslint/js": "^9.21.0",
38
+ "@eslint/js": "^10.0.1",
38
39
  "@rdfjs/types": "^2.0.1",
39
- "@types/jest": "^29.5.14",
40
40
  "@types/jsonld": "^1.5.15",
41
- "@types/n3": "^1.21.1",
42
- "@types/node": "^22.13.5",
43
- "@typescript-eslint/eslint-plugin": "^8.25.0",
44
- "@typescript-eslint/parser": "^8.25.0",
45
- "@vitest/coverage-v8": "^3.0.7",
46
- "eslint": "^9.21.0",
47
- "eslint-config-prettier": "^10.0.1",
48
- "eslint-plugin-prettier": "^5.2.3",
49
- "globals": "^16.0.0",
41
+ "@types/n3": "^1.26.1",
42
+ "@types/node": "^25.5.0",
43
+ "@typescript-eslint/eslint-plugin": "^8.57.1",
44
+ "@typescript-eslint/parser": "^8.57.1",
45
+ "@vitest/coverage-v8": "^4.1.0",
46
+ "eslint": "^10.0.2",
47
+ "eslint-config-prettier": "^10.1.8",
48
+ "eslint-plugin-prettier": "^5.5.5",
49
+ "globals": "^17.4.0",
50
50
  "husky": "^9.1.7",
51
- "jest": "^29.7.0",
52
- "lint-staged": "^15.4.3",
53
- "prettier": "^3.5.2",
54
- "ts-jest": "^29.2.6",
55
- "tsc-alias": "^1.8.10",
56
- "typescript": "^5.7.3",
57
- "typescript-eslint": "^8.25.0",
58
- "vitest": "^3.0.7"
51
+ "lint-staged": "^16.4.0",
52
+ "prettier": "^3.8.1",
53
+ "tsc-alias": "^1.8.16",
54
+ "typescript": "^5.9.3",
55
+ "typescript-eslint": "^8.57.1",
56
+ "vitest": "^4.1.0"
59
57
  }
60
58
  },
61
59
  "node_modules/@rdfc/js-runner": {
@@ -26,7 +26,6 @@
26
26
  <1> a rdfc:Writer, rdfc:Reader.
27
27
 
28
28
  <2> a rdfc:Writer, rdfc:Reader.
29
- #
30
29
  <sender> a rdfc:SendProcessor;
31
30
  rdfc:writer <1>;
32
31
  rdfc:msg "hallo", "world".
@@ -7,7 +7,7 @@
7
7
  @prefix sh: <http://www.w3.org/ns/shacl#>.
8
8
  @prefix rdfc: <https://w3id.org/rdf-connect#>.
9
9
 
10
- <> owl:imports <../../index.ttl>.
10
+ # <> owl:imports <../../index.ttl>.
11
11
  rdfc:Test rdfc:jsImplementationOf rdfc:Processor;
12
12
  rdfc:entrypoint <./>;
13
13
  rdfc:file <./lib/processors.js>;
@@ -0,0 +1,18 @@
1
+ @prefix owl: <http://www.w3.org/2002/07/owl#>.
2
+ @prefix rdfc: <https://w3id.org/rdf-connect#>.
3
+ @prefix runner: <http://localhost:3000/>.
4
+
5
+ <> owl:imports runner:, runner:processors.ttl.
6
+ <> a rdfc:Pipeline;
7
+ rdfc:consistsOf [
8
+ rdfc:processor <logProc>, <sendProc>;
9
+ rdfc:instantiates runner:runner;
10
+ ].
11
+
12
+ <sendProc> a rdfc:SendProcessor;
13
+ rdfc:msg " Hello", " World";
14
+ rdfc:writer <data>.
15
+
16
+ <logProc> a rdfc:LogProcessor;
17
+ rdfc:reader <data>.
18
+
@@ -0,0 +1,5 @@
1
+ @prefix rdfc: <https://w3id.org/rdf-connect#>.
2
+ <> a rdfc:JsRunnerServer;
3
+ rdfc:port 3000;
4
+ rdfc:processorConfig <./processors.ttl>.
5
+
File without changes
@@ -0,0 +1,3 @@
1
+ <../../index.trig> a <https://w3id.org/ldes#EventStream>.
2
+ <index.trig> a <https://w3id.org/tree#Node>;
3
+ <http://purl.org/dc/terms/isPartOf> <../../index.trig>.
@@ -0,0 +1,3 @@
1
+ <../../index.trig> a <https://w3id.org/ldes#EventStream>.
2
+ <index.trig> a <https://w3id.org/tree#Node>;
3
+ <http://purl.org/dc/terms/isPartOf> <../../index.trig>.
package/lib/client.d.ts CHANGED
@@ -1 +1,2 @@
1
- export declare function start(addr: string, uri: string): Promise<void>;
1
+ import { State } from './state.js';
2
+ export declare function start(addr: string, uri: string, configPath?: string, signal?: AbortSignal, state?: State, runnerId?: string): Promise<void>;
package/lib/client.js CHANGED
@@ -4,37 +4,85 @@ import { RunnerClient } from '@rdfc/proto';
4
4
  import { createLogger } from 'winston';
5
5
  import { RpcTransport } from './logger.js';
6
6
  import { Runner } from './runner.js';
7
- export async function start(addr, uri) {
7
+ const GRPC_STATE_NAMES = [
8
+ 'IDLE',
9
+ 'CONNECTING',
10
+ 'READY',
11
+ 'TRANSIENT_FAILURE',
12
+ 'SHUTDOWN',
13
+ ];
14
+ function watchGrpcState(client, state, runnerId, signal) {
15
+ const ch = client.getChannel();
16
+ const update = () => {
17
+ if (signal.aborted)
18
+ return;
19
+ const s = ch.getConnectivityState(false);
20
+ state.setGrpcState(runnerId, GRPC_STATE_NAMES[s] ?? String(s));
21
+ if (s === grpc.connectivityState.SHUTDOWN)
22
+ return;
23
+ ch.watchConnectivityState(s, new Date(Date.now() + 3_600_000), update);
24
+ };
25
+ update();
26
+ }
27
+ export async function start(addr, uri, configPath, signal, state, runnerId) {
8
28
  const client = new RunnerClient(addr, grpc.credentials.createInsecure());
29
+ const logStream = client.logStream(() => { });
9
30
  const logger = createLogger({
10
31
  transports: [
11
32
  new RpcTransport({
12
33
  entities: [uri, 'cli'],
13
- stream: client.logStream(() => { }),
34
+ stream: logStream,
14
35
  }),
15
36
  ],
16
37
  });
17
38
  const stream = client.connect();
18
- logger.info('Connected with server ' + addr);
19
- const writable = promisify(stream.write.bind(stream));
20
- const runner = new Runner(client, writable, uri, logger);
21
- await writable({ identify: { uri } });
22
- await new Promise(async (res) => {
23
- for await (const chunk of stream) {
24
- const msg = chunk;
25
- if (msg.proc) {
26
- await runner.addProcessor(msg.proc);
39
+ const closeConnection = () => {
40
+ stream.end();
41
+ logStream.end();
42
+ client.close();
43
+ };
44
+ const abortCtrl = signal ?? new AbortController().signal;
45
+ abortCtrl.addEventListener('abort', closeConnection, { once: true });
46
+ if (state && runnerId) {
47
+ watchGrpcState(client, state, runnerId, abortCtrl);
48
+ }
49
+ try {
50
+ logger.info('Connected with server ' + addr);
51
+ const writable = promisify(stream.write.bind(stream));
52
+ const runner = new Runner(client, writable, uri, logger, configPath, state, runnerId);
53
+ await writable({ identify: { uri } });
54
+ let runnerDone = false;
55
+ await new Promise(async (res, rej) => {
56
+ try {
57
+ for await (const chunk of stream) {
58
+ const msg = chunk;
59
+ if (msg.proc) {
60
+ await runner.addProcessor(msg.proc);
61
+ }
62
+ if (msg.start) {
63
+ if (state && runnerId)
64
+ state.setStatus(runnerId, 'running');
65
+ runner.start().then(() => {
66
+ runnerDone = true;
67
+ res(undefined);
68
+ });
69
+ }
70
+ await runner.handleOrchMessage(msg);
71
+ }
72
+ logger.error('Stream ended');
27
73
  }
28
- if (msg.start) {
29
- runner.start().then(res);
74
+ catch (err) {
75
+ if (runnerDone) {
76
+ return;
77
+ }
78
+ rej(err);
30
79
  }
31
- await runner.handleOrchMessage(msg);
32
- }
33
- logger.error('Stream ended');
34
- });
35
- logger.info('All processors are finished');
36
- stream.end();
37
- client.close();
38
- setTimeout(() => process.exit(0), 500);
80
+ });
81
+ logger.info('All processors are finished');
82
+ }
83
+ finally {
84
+ abortCtrl.removeEventListener('abort', closeConnection);
85
+ closeConnection();
86
+ }
39
87
  }
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQTtBQUNyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ2hDLE9BQU8sRUFBRSxZQUFZLEVBQVksTUFBTSxhQUFhLENBQUE7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUN0QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFFakMsTUFBTSxDQUFDLEtBQUssVUFBVSxLQUFLLENBQUMsSUFBWSxFQUFFLEdBQVc7SUFDbkQsTUFBTSxNQUFNLEdBQUcsSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQTtJQUV4RSxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUM7UUFDMUIsVUFBVSxFQUFFO1lBQ1YsSUFBSSxZQUFZLENBQUM7Z0JBQ2YsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQztnQkFDdEIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO2FBQ25DLENBQUM7U0FDSDtLQUNGLENBQUMsQ0FBQTtJQUVGLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUUvQixNQUFNLENBQUMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyxDQUFBO0lBQzVDLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBO0lBQ3JELE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBRXhELE1BQU0sUUFBUSxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBR3JDLE1BQU0sSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQzlCLElBQUksS0FBSyxFQUFFLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ2pDLE1BQU0sR0FBRyxHQUFhLEtBQUssQ0FBQTtZQUMzQixJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDYixNQUFNLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQ3JDLENBQUM7WUFDRCxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDZCxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQzFCLENBQUM7WUFFRCxNQUFNLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNyQyxDQUFDO1FBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUM5QixDQUFDLENBQUMsQ0FBQTtJQUVGLE1BQU0sQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsQ0FBQTtJQUMxQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUE7SUFDWixNQUFNLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDZCxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQTtBQUN4QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZ3JwYyBmcm9tICdAZ3JwYy9ncnBjLWpzJ1xuaW1wb3J0IHsgcHJvbWlzaWZ5IH0gZnJvbSAndXRpbCdcbmltcG9ydCB7IFJ1bm5lckNsaWVudCwgVG9SdW5uZXIgfSBmcm9tICdAcmRmYy9wcm90bydcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gJ3dpbnN0b24nXG5pbXBvcnQgeyBScGNUcmFuc3BvcnQgfSBmcm9tICcuL2xvZ2dlcidcbmltcG9ydCB7IFJ1bm5lciB9IGZyb20gJy4vcnVubmVyJ1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3RhcnQoYWRkcjogc3RyaW5nLCB1cmk6IHN0cmluZykge1xuICBjb25zdCBjbGllbnQgPSBuZXcgUnVubmVyQ2xpZW50KGFkZHIsIGdycGMuY3JlZGVudGlhbHMuY3JlYXRlSW5zZWN1cmUoKSlcblxuICBjb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoe1xuICAgIHRyYW5zcG9ydHM6IFtcbiAgICAgIG5ldyBScGNUcmFuc3BvcnQoe1xuICAgICAgICBlbnRpdGllczogW3VyaSwgJ2NsaSddLFxuICAgICAgICBzdHJlYW06IGNsaWVudC5sb2dTdHJlYW0oKCkgPT4ge30pLFxuICAgICAgfSksXG4gICAgXSxcbiAgfSlcblxuICBjb25zdCBzdHJlYW0gPSBjbGllbnQuY29ubmVjdCgpXG5cbiAgbG9nZ2VyLmluZm8oJ0Nvbm5lY3RlZCB3aXRoIHNlcnZlciAnICsgYWRkcilcbiAgY29uc3Qgd3JpdGFibGUgPSBwcm9taXNpZnkoc3RyZWFtLndyaXRlLmJpbmQoc3RyZWFtKSlcbiAgY29uc3QgcnVubmVyID0gbmV3IFJ1bm5lcihjbGllbnQsIHdyaXRhYmxlLCB1cmksIGxvZ2dlcilcblxuICBhd2FpdCB3cml0YWJsZSh7IGlkZW50aWZ5OiB7IHVyaSB9IH0pXG5cbiAgLyogZXNsaW50LWRpc2FibGUgbm8tYXN5bmMtcHJvbWlzZS1leGVjdXRvciAqL1xuICBhd2FpdCBuZXcgUHJvbWlzZShhc3luYyAocmVzKSA9PiB7XG4gICAgZm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiBzdHJlYW0pIHtcbiAgICAgIGNvbnN0IG1zZzogVG9SdW5uZXIgPSBjaHVua1xuICAgICAgaWYgKG1zZy5wcm9jKSB7XG4gICAgICAgIGF3YWl0IHJ1bm5lci5hZGRQcm9jZXNzb3IobXNnLnByb2MpXG4gICAgICB9XG4gICAgICBpZiAobXNnLnN0YXJ0KSB7XG4gICAgICAgIHJ1bm5lci5zdGFydCgpLnRoZW4ocmVzKVxuICAgICAgfVxuXG4gICAgICBhd2FpdCBydW5uZXIuaGFuZGxlT3JjaE1lc3NhZ2UobXNnKVxuICAgIH1cblxuICAgIGxvZ2dlci5lcnJvcignU3RyZWFtIGVuZGVkJylcbiAgfSlcblxuICBsb2dnZXIuaW5mbygnQWxsIHByb2Nlc3NvcnMgYXJlIGZpbmlzaGVkJylcbiAgc3RyZWFtLmVuZCgpXG4gIGNsaWVudC5jbG9zZSgpXG4gIHNldFRpbWVvdXQoKCkgPT4gcHJvY2Vzcy5leGl0KDApLCA1MDApXG59XG4iXX0=
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQTtBQUNyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ2hDLE9BQU8sRUFBRSxZQUFZLEVBQVksTUFBTSxhQUFhLENBQUE7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUN0QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFHakMsTUFBTSxnQkFBZ0IsR0FBRztJQUN2QixNQUFNO0lBQ04sWUFBWTtJQUNaLE9BQU87SUFDUCxtQkFBbUI7SUFDbkIsVUFBVTtDQUNGLENBQUE7QUFFVixTQUFTLGNBQWMsQ0FDckIsTUFBb0IsRUFDcEIsS0FBWSxFQUNaLFFBQWdCLEVBQ2hCLE1BQW1CO0lBR25CLE1BQU0sRUFBRSxHQUFJLE1BQWMsQ0FBQyxVQUFVLEVBQWtCLENBQUE7SUFFdkQsTUFBTSxNQUFNLEdBQUcsR0FBRyxFQUFFO1FBQ2xCLElBQUksTUFBTSxDQUFDLE9BQU87WUFBRSxPQUFNO1FBQzFCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN4QyxLQUFLLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUM5RCxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUTtZQUFFLE9BQU07UUFFakQsRUFBRSxDQUFDLHNCQUFzQixDQUFDLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsU0FBUyxDQUFD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QUFNLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQTtnQkFDckMsQ0FBQztnQkFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFBO1lBQzlCLENBQUM7WUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUNiLElBQUksVUFBVSxFQUFFLENBQUM7b0JBRWYsT0FBTTtnQkFDUixDQUFDO2dCQUNELEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUNWLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQTtRQUVGLE1BQU0sQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsQ0FBQTtJQUM1QyxDQUFDO1lBQVMsQ0FBQztRQUNULFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUE7UUFDdkQsZUFBZSxFQUFFLENBQUE7SUFDbkIsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBncnBjIGZyb20gJ0BncnBjL2dycGMtanMnXG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tICd1dGlsJ1xuaW1wb3J0IHsgUnVubmVyQ2xpZW50LCBUb1J1bm5lciB9IGZyb20gJ0ByZGZjL3Byb3RvJ1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSAnd2luc3RvbidcbmltcG9ydCB7IFJwY1RyYW5zcG9ydCB9IGZyb20gJy4vbG9nZ2VyJ1xuaW1wb3J0IHsgUnVubmVyIH0gZnJvbSAnLi9ydW5uZXInXG5pbXBvcnQgeyBTdGF0ZSB9IGZyb20gJy4vc3RhdGUnXG5cbmNvbnN0IEdSUENfU1RBVEVfTkFNRVMgPSBbXG4gICdJRExFJyxcbiAgJ0NPTk5FQ1RJTkcnLFxuICAnUkVBRFknLFxuICAnVFJBTlNJRU5UX0ZBSUxVUkUnLFxuICAnU0hVVERPV04nLFxuXSBhcyBjb25zdFxuXG5mdW5jdGlvbiB3YXRjaEdycGNTdGF0ZShcbiAgY2xpZW50OiBSdW5uZXJDbGllbnQsXG4gIHN0YXRlOiBTdGF0ZSxcbiAgcnVubmVySWQ6IHN0cmluZyxcbiAgc2lnbmFsOiBBYm9ydFNpZ25hbCxcbik6IHZvaWQge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBjb25zdCBjaCA9IChjbGllbnQgYXMgYW55KS5nZXRDaGFubmVsKCkgYXMgZ3JwYy5DaGFubmVsXG5cbiAgY29uc3QgdXBkYXRlID0gKCkgPT4ge1xuICAgIGlmIChzaWduYWwuYWJvcnRlZCkgcmV0dXJuXG4gICAgY29uc3QgcyA9IGNoLmdldENvbm5lY3Rpdml0eVN0YXRlKGZhbHNlKVxuICAgIHN0YXRlLnNldEdycGNTdGF0ZShydW5uZXJJZCwgR1JQQ19TVEFURV9OQU1FU1tzXSA/PyBTdHJpbmcocykpXG4gICAgaWYgKHMgPT09IGdycGMuY29ubmVjdGl2aXR5U3RhdGUuU0hVVERPV04pIHJldHVyblxuICAgIC8vIFdhdGNoIGZvciB0aGUgbmV4dCBzdGF0ZSBjaGFuZ2UgKDEtaG91ciBkZWFkbGluZSlcbiAgICBjaC53YXRjaENvbm5lY3Rpdml0eVN0YXRlKHMsIG5ldyBEYXRlKERhdGUubm93KCkgKyAzXzYwMF8wMDApLCB1cGRhdGUpXG4gIH1cblxuICB1cGRhdGUoKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3RhcnQoXG4gIGFkZHI6IHN0cmluZyxcbiAgdXJpOiBzdHJpbmcsXG4gIGNvbmZpZ1BhdGg/OiBzdHJpbmcsXG4gIHNpZ25hbD86IEFib3J0U2lnbmFsLFxuICBzdGF0ZT86IFN0YXRlLFxuICBydW5uZXJJZD86IHN0cmluZyxcbikge1xuICBjb25zdCBjbGllbnQgPSBuZXcgUnVubmVyQ2xpZW50KGFkZHIsIGdycGMuY3JlZGVudGlhbHMuY3JlYXRlSW5zZWN1cmUoKSlcblxuICBjb25zdCBsb2dTdHJlYW0gPSBjbGllbnQubG9nU3RyZWFtKCgpID0+IHt9KVxuXG4gIGNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcih7XG4gICAgdHJhbnNwb3J0czogW1xuICAgICAgbmV3IFJwY1RyYW5zcG9ydCh7XG4gICAgICAgIGVudGl0aWVzOiBbdXJpLCAnY2xpJ10sXG4gICAgICAgIHN0cmVhbTogbG9nU3RyZWFtLFxuICAgICAgfSksXG4gICAgXSxcbiAgfSlcblxuICBjb25zdCBzdHJlYW0gPSBjbGllbnQuY29ubmVjdCgpXG5cbiAgY29uc3QgY2xvc2VDb25uZWN0aW9uID0gKCkgPT4ge1xuICAgIHN0cmVhbS5lbmQoKVxuICAgIGxvZ1N0cmVhbS5lbmQoKVxuICAgIGNsaWVudC5jbG9zZSgpXG4gIH1cblxuICBjb25zdCBhYm9ydEN0cmwgPSBzaWduYWwgPz8gbmV3IEFib3J0Q29udHJvbGxlcigpLnNpZ25hbFxuICBhYm9ydEN0cmwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBjbG9zZUNvbm5lY3Rpb24sIHsgb25jZTogdHJ1ZSB9KVxuXG4gIGlmIChzdGF0ZSAmJiBydW5uZXJJZCkge1xuICAgIHdhdGNoR3JwY1N0YXRlKGNsaWVudCwgc3RhdGUsIHJ1bm5lcklkLCBhYm9ydEN0cmwpXG4gIH1cblxuICB0cnkge1xuICAgIGxvZ2dlci5pbmZvKCdDb25uZWN0ZWQgd2l0aCBzZXJ2ZXIgJyArIGFkZHIpXG4gICAgY29uc3Qgd3JpdGFibGUgPSBwcm9taXNpZnkoc3RyZWFtLndyaXRlLmJpbmQoc3RyZWFtKSlcbiAgICBjb25zdCBydW5uZXIgPSBuZXcgUnVubmVyKFxuICAgICAgY2xpZW50LFxuICAgICAgd3JpdGFibGUsXG4gICAgICB1cmksXG4gICAgICBsb2dnZXIsXG4gICAgICBjb25maWdQYXRoLFxuICAgICAgc3RhdGUsXG4gICAgICBydW5uZXJJZCxcbiAgICApXG5cbiAgICBhd2FpdCB3cml0YWJsZSh7IGlkZW50aWZ5OiB7IHVyaSB9IH0pXG5cbiAgICBsZXQgcnVubmVyRG9uZSA9IGZhbHNlXG4gICAgLyogZXNsaW50LWRpc2FibGUgbm8tYXN5bmMtcHJvbWlzZS1leGVjdXRvciAqL1xuICAgIGF3YWl0IG5ldyBQcm9taXNlKGFzeW5jIChyZXMsIHJlaikgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiBzdHJlYW0pIHtcbiAgICAgICAgICBjb25zdCBtc2c6IFRvUnVubmVyID0gY2h1bmtcbiAgICAgICAgICBpZiAobXNnLnByb2MpIHtcbiAgICAgICAgICAgIGF3YWl0IHJ1bm5lci5hZGRQcm9jZXNzb3IobXNnLnByb2MpXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChtc2cuc3RhcnQpIHtcbiAgICAgICAgICAgIGlmIChzdGF0ZSAmJiBydW5uZXJJZCkgc3RhdGUuc2V0U3RhdHVzKHJ1bm5lcklkLCAncnVubmluZycpXG4gICAgICAgICAgICBydW5uZXIuc3RhcnQoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgcnVubmVyRG9uZSA9IHRydWVcbiAgICAgICAgICAgICAgcmVzKHVuZGVmaW5lZClcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYXdhaXQgcnVubmVyLmhhbmRsZU9yY2hNZXNzYWdlKG1zZylcbiAgICAgICAgfVxuXG4gICAgICAgIGxvZ2dlci5lcnJvcignU3RyZWFtIGVuZGVkJylcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBpZiAocnVubmVyRG9uZSkge1xuICAgICAgICAgIC8vIFN0cmVhbSBlcnJvciBhZnRlciBydW5uZXIgZmluaXNoZWQgKGUuZy4gY29ubmVjdGlvbiBkcm9wcGVkIGR1cmluZyBjbGVhbnVwKSDigJQgc2FmZSB0byBpZ25vcmVcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICByZWooZXJyKVxuICAgICAgfVxuICAgIH0pXG5cbiAgICBsb2dnZXIuaW5mbygnQWxsIHByb2Nlc3NvcnMgYXJlIGZpbmlzaGVkJylcbiAgfSBmaW5hbGx5IHtcbiAgICBhYm9ydEN0cmwucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBjbG9zZUNvbm5lY3Rpb24pXG4gICAgY2xvc2VDb25uZWN0aW9uKClcbiAgfVxufVxuIl19
package/lib/index.d.ts CHANGED
@@ -4,4 +4,6 @@ export * from './reader.js';
4
4
  export * from './processor.js';
5
5
  export * from './runner.js';
6
6
  export * from './logger.js';
7
+ export * from './state.js';
7
8
  export * as reexports from './reexports.js';
9
+ export * from './server.js';
package/lib/index.js CHANGED
@@ -4,5 +4,7 @@ export * from './reader.js';
4
4
  export * from './processor.js';
5
5
  export * from './runner.js';
6
6
  export * from './logger.js';
7
+ export * from './state.js';
7
8
  export * as reexports from './reexports.js';
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxhQUFhLENBQUE7QUFDM0IsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxVQUFVLENBQUE7QUFFeEIsT0FBTyxLQUFLLFNBQVMsTUFBTSxhQUFhLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NsaWVudCdcbmV4cG9ydCAqIGZyb20gJy4vd3JpdGVyJ1xuZXhwb3J0ICogZnJvbSAnLi9yZWFkZXInXG5leHBvcnQgKiBmcm9tICcuL3Byb2Nlc3NvcidcbmV4cG9ydCAqIGZyb20gJy4vcnVubmVyJ1xuZXhwb3J0ICogZnJvbSAnLi9sb2dnZXInXG5cbmV4cG9ydCAqIGFzIHJlZXhwb3J0cyBmcm9tICcuL3JlZXhwb3J0cydcbiJdfQ==
9
+ export * from './server.js';
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxhQUFhLENBQUE7QUFDM0IsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxTQUFTLENBQUE7QUFFdkIsT0FBTyxLQUFLLFNBQVMsTUFBTSxhQUFhLENBQUE7QUFDeEMsY0FBYyxVQUFVLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NsaWVudCdcbmV4cG9ydCAqIGZyb20gJy4vd3JpdGVyJ1xuZXhwb3J0ICogZnJvbSAnLi9yZWFkZXInXG5leHBvcnQgKiBmcm9tICcuL3Byb2Nlc3NvcidcbmV4cG9ydCAqIGZyb20gJy4vcnVubmVyJ1xuZXhwb3J0ICogZnJvbSAnLi9sb2dnZXInXG5leHBvcnQgKiBmcm9tICcuL3N0YXRlJ1xuXG5leHBvcnQgKiBhcyByZWV4cG9ydHMgZnJvbSAnLi9yZWV4cG9ydHMnXG5leHBvcnQgKiBmcm9tICcuL3NlcnZlcidcbiJdfQ==
@@ -0,0 +1,17 @@
1
+ import { OrchestratorMessage, RunnerClient } from '@rdfc/proto';
2
+ import { ReaderInstance } from './reader.js';
3
+ import { WriterInstance } from './writer.js';
4
+ import { Logger } from 'winston';
5
+ export type RunnerItems = {
6
+ readers: {
7
+ [uri: string]: ReaderInstance[];
8
+ };
9
+ writers: {
10
+ [uri: string]: WriterInstance[];
11
+ };
12
+ client: RunnerClient;
13
+ write: Writable;
14
+ };
15
+ type Writable = (msg: OrchestratorMessage) => Promise<unknown>;
16
+ export declare function parse_jsonld(args: string, logger: Logger, items: RunnerItems): Promise<unknown>;
17
+ export {};
package/lib/jsonld.js ADDED
@@ -0,0 +1,135 @@
1
+ import { createNamespace, createUriAndTermNamespace } from '@treecg/types';
2
+ import { ReaderInstance } from './reader.js';
3
+ import { WriterInstance } from './writer.js';
4
+ import { JsonLdParser } from 'jsonld-streaming-parser';
5
+ import { pred, ShaclPath } from 'rdf-lens';
6
+ import { NamedNode } from 'n3';
7
+ const RDFL = createUriAndTermNamespace('https://w3id.org/rdf-lens/ontology#', 'CBD', 'Path', 'PathLens', 'Context', 'TypedExtract', 'EnvVariable', 'envKey', 'envDefault', 'datatype');
8
+ const RDFC = createNamespace('https://w3id.org/rdf-connect#', (x) => x, 'Reader', 'Writer');
9
+ function as_string_array(obj) {
10
+ const out = Array.isArray(obj) ? obj : [obj];
11
+ return out.filter((x) => typeof x === 'string');
12
+ }
13
+ function cbdToQuads(value) {
14
+ const quads = [];
15
+ const parser = new JsonLdParser();
16
+ const promise = new Promise((res, rej) => parser
17
+ .on('end', () => res({ value: quads }))
18
+ .on('error', (e) => rej(e))
19
+ .on('data', (q) => {
20
+ quads.push(q);
21
+ }));
22
+ if (value instanceof Object && '@type' in value) {
23
+ delete value['@type'];
24
+ }
25
+ parser.write(JSON.stringify(value));
26
+ parser.end();
27
+ return promise;
28
+ }
29
+ async function cbdToPath(value) {
30
+ const qs = (await cbdToQuads({
31
+ '@id': 'http://example.com/ns#me1234',
32
+ 'http://example.com/ns#innerPred': value,
33
+ })).value;
34
+ const path = pred(new NamedNode('http://example.com/ns#innerPred'))
35
+ .one()
36
+ .then(ShaclPath)
37
+ .execute({
38
+ quads: qs,
39
+ id: new NamedNode('http://example.com/ns#me1234'),
40
+ });
41
+ return { value: path };
42
+ }
43
+ async function jsonldToQuads(value) {
44
+ const qs = (await cbdToQuads({
45
+ '@id': 'http://example.com/ns#me1234',
46
+ 'http://example.com/ns#innerPred': value,
47
+ })).value;
48
+ const idx = qs.findIndex((x) => x.predicate.equals(new NamedNode('http://example.com/ns#innerPred')) &&
49
+ x.subject.equals(new NamedNode('http://example.com/ns#me1234')));
50
+ if (idx < 0)
51
+ throw 'This cannot happen';
52
+ const id = qs[idx].object;
53
+ qs.splice(idx, 1);
54
+ return {
55
+ quads: qs,
56
+ id,
57
+ };
58
+ }
59
+ function revive(_key, value, logger, promises, runnerItems) {
60
+ if (typeof value === 'object') {
61
+ const types = as_string_array(value['@type'] || []);
62
+ const ids = as_string_array(value['@id'] || [])[0] || '';
63
+ if (types.includes(RDFC.Reader)) {
64
+ if (runnerItems.readers[ids] === undefined) {
65
+ runnerItems.readers[ids] = [];
66
+ }
67
+ const reader = new ReaderInstance(ids, runnerItems.client, logger);
68
+ runnerItems.readers[ids].push(reader);
69
+ return reader;
70
+ }
71
+ if (types.includes(RDFC.Writer)) {
72
+ if (runnerItems.writers[ids] === undefined) {
73
+ runnerItems.writers[ids] = [];
74
+ }
75
+ const writer = new WriterInstance(ids, runnerItems.client, runnerItems.write, logger);
76
+ runnerItems.writers[ids].push(writer);
77
+ return writer;
78
+ }
79
+ if (types.includes(RDFL.CBD)) {
80
+ return cbdToQuads(value);
81
+ }
82
+ if (types.includes(RDFL.Path)) {
83
+ return cbdToPath(value);
84
+ }
85
+ }
86
+ Object.entries(value).forEach(([k, v]) => {
87
+ if (v instanceof Promise) {
88
+ logger.info('Found promise');
89
+ promises.push(v.then((x) => {
90
+ logger.info('Setting field ' + k);
91
+ value[k] = x.value;
92
+ }));
93
+ }
94
+ });
95
+ return value;
96
+ }
97
+ function expandArgs(args, cont, logger) {
98
+ const context = args['@context'];
99
+ if (!context)
100
+ return;
101
+ for (const key of Object.keys(args)) {
102
+ if (key == '@context')
103
+ continue;
104
+ const ctxObj = context[key];
105
+ if (!ctxObj) {
106
+ logger.debug("Didn't find ctx things for " + key);
107
+ continue;
108
+ }
109
+ logger.debug('Did find ctx things for ' +
110
+ key +
111
+ ' ' +
112
+ JSON.stringify(ctxObj) +
113
+ ': ' +
114
+ JSON.stringify(Object.entries(args[key]).map(([k, v]) => {
115
+ let x = 'object';
116
+ try {
117
+ x = JSON.stringify(v);
118
+ }
119
+ catch (_e) {
120
+ }
121
+ return k + ': ' + x;
122
+ })));
123
+ expandArgs(args[key], cont, logger);
124
+ }
125
+ }
126
+ export async function parse_jsonld(args, logger, items) {
127
+ const promises = [];
128
+ logger.info(args);
129
+ const cont = await jsonldToQuads(JSON.parse(args));
130
+ const out = JSON.parse(args, (k, v) => revive(k, v, logger, promises, items));
131
+ await Promise.all(promises);
132
+ expandArgs(out, cont, logger);
133
+ return out;
134
+ }
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbmxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2pzb25sZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZUFBZSxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUV6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDdEQsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFFMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLElBQUksQ0FBQTtBQVM5QixNQUFNLElBQUksR0FBRyx5QkFBeUIsQ0FDcEMscUNBQXFDLEVBQ3JDLEtBQUssRUFDTCxNQUFNLEVBQ04sVUFBVSxFQUNWLFNBQVMsRUFDVCxjQUFjLEVBQ2QsYUFBYSxFQUNiLFFBQVEsRUFDUixZQUFZLEVBQ1osVUFBVSxDQUNYLENBQUE7QUFHRCxNQUFNLElBQUksR0FBRyxlQUFlLENBQzFCLCtCQUErQixFQUMvQixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUNSLFFBQVEsRUFDUixRQUFRLENBQ1QsQ0FBQTtBQUVELFNBQVMsZUFBZSxDQUFDLEdBQVk7SUFDbkMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzVDLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUE7QUFDakQsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLEtBQWM7SUFDaEMsTUFBTSxLQUFLLEdBQVcsRUFBRSxDQUFB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USxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUE7SUFFN0UsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBRTNCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBQzdCLE9BQU8sR0FBRyxDQUFBO0FBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9yY2hlc3RyYXRvck1lc3NhZ2UsIFJ1bm5lckNsaWVudCB9IGZyb20gJ0ByZGZjL3Byb3RvJ1xuaW1wb3J0IHsgY3JlYXRlTmFtZXNwYWNlLCBjcmVhdGVVcmlBbmRUZXJtTmFtZXNwYWNlIH0gZnJvbSAnQHRyZWVjZy90eXBlcydcbmltcG9ydCB7IFJlYWRlckluc3RhbmNlIH0gZnJvbSAnLi9yZWFkZXInXG5pbXBvcnQgeyBXcml0ZXJJbnN0YW5jZSB9IGZyb20gJy4vd3JpdGVyJ1xuaW1wb3J0IHsgTG9nZ2VyIH0gZnJvbSAnd2luc3RvbidcbmltcG9ydCB7IEpzb25MZFBhcnNlciB9IGZyb20gJ2pzb25sZC1zdHJlYW1pbmctcGFyc2VyJ1xuaW1wb3J0IHsgcHJlZCwgU2hhY2xQYXRoIH0gZnJvbSAncmRmLWxlbnMnXG5pbXBvcnQgeyBRdWFkLCBUZXJtIH0gZnJvbSAnQHJkZmpzL3R5cGVzJ1xuaW1wb3J0IHsgTmFtZWROb2RlIH0gZnJvbSAnbjMnXG5cbmV4cG9ydCB0eXBlIFJ1bm5lckl0ZW1zID0ge1xuICByZWFkZXJzOiB7IFt1cmk6IHN0cmluZ106IFJlYWRlckluc3RhbmNlW10gfVxuICB3cml0ZXJzOiB7IFt1cmk6IHN0cmluZ106IFdyaXRlckluc3RhbmNlW10gfVxuICBjbGllbnQ6IFJ1bm5lckNsaWVudFxuICB3cml0ZTogV3JpdGFibGVcbn1cblxuY29uc3QgUkRGTCA9IGNyZWF0ZVVyaUFuZFRlcm1OYW1lc3BhY2UoXG4gICdodHRwczovL3czaWQub3JnL3JkZi1sZW5zL29udG9sb2d5IycsXG4gICdDQkQnLFxuICAnUGF0aCcsXG4gICdQYXRoTGVucycsXG4gICdDb250ZXh0JyxcbiAgJ1R5cGVkRXh0cmFjdCcsXG4gICdFbnZWYXJpYWJsZScsXG4gICdlbnZLZXknLFxuICAnZW52RGVmYXVsdCcsXG4gICdkYXRhdHlwZScsXG4pXG5cbnR5cGUgV3JpdGFibGUgPSAobXNnOiBPcmNoZXN0cmF0b3JNZXNzYWdlKSA9PiBQcm9taXNlPHVua25vd24+XG5jb25zdCBSREZDID0gY3JlYXRlTmFtZXNwYWNlKFxuICAnaHR0cHM6Ly93M2lkLm9yZy9yZGYtY29ubmVjdCMnLFxuICAoeCkgPT4geCxcbiAgJ1JlYWRlcicsXG4gICdXcml0ZXInLFxuKVxuXG5mdW5jdGlvbiBhc19zdHJpbmdfYXJyYXkob2JqOiB1bmtub3duKTogc3RyaW5nW10ge1xuICBjb25zdCBvdXQgPSBBcnJheS5pc0FycmF5KG9iaikgPyBvYmogOiBbb2JqXVxuICByZXR1cm4gb3V0LmZpbHRlcigoeCkgPT4gdHlwZW9mIHggPT09ICdzdHJpbmcnKVxufVxuXG5mdW5jdGlvbiBjYmRUb1F1YWRzKHZhbHVlOiB1bmtub3duKSB7XG4gIGNvbnN0IHF1YWRzOiBRdWFkW10gPSBbXVxuICBjb25zdCBwYXJzZXIgPSBuZXcgSnNvbkxkUGFyc2VyKClcbiAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlPHsgdmFsdWU6IFF1YWRbXSB9PigocmVzLCByZWopID0+XG4gICAgcGFyc2VyXG4gICAgICAub24oJ2VuZCcsICgpID0+IHJlcyh7IHZhbHVlOiBxdWFkcyB9KSlcbiAgICAgIC5vbignZXJyb3InLCAoZSkgPT4gcmVqKGUpKVxuICAgICAgLm9uKCdkYXRhJywgKHEpID0+IHtcbiAgICAgICAgcXVhZHMucHVzaChxKVxuICAgICAgfSksXG4gIClcblxuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBPYmplY3QgJiYgJ0B0eXBlJyBpbiB2YWx1ZSkge1xuICAgIGRlbGV0ZSB2YWx1ZVsnQHR5cGUnXVxuICB9XG4gIHBhcnNlci53cml0ZShKU09OLnN0cmluZ2lmeSh2YWx1ZSkpXG4gIHBhcnNlci5lbmQoKVxuICByZXR1cm4gcHJvbWlzZVxufVxuXG5hc3luYyBmdW5jdGlvbiBjYmRUb1BhdGgodmFsdWU6IHVua25vd24pOiBQcm9taXNlPHsgdmFsdWU6IHVua25vd24gfT4ge1xuICBjb25zdCBxcyA9IChcbiAgICBhd2FpdCBjYmRUb1F1YWRzKHtcbiAgICAgICdAaWQnOiAnaHR0cDovL2V4YW1wbGUuY29tL25zI21lMTIzNCcsXG4gICAgICAnaHR0cDovL2V4YW1wbGUuY29tL25zI2lubmVyUHJlZCc6IHZhbHVlLFxuICAgIH0pXG4gICkudmFsdWVcblxuICBjb25zdCBwYXRoID0gcHJlZChuZXcgTmFtZWROb2RlKCdodHRwOi8vZXhhbXBsZS5jb20vbnMjaW5uZXJQcmVkJykpXG4gICAgLm9uZSgpXG4gICAgLnRoZW4oU2hhY2xQYXRoKVxuICAgIC5leGVjdXRlKHtcbiAgICAgIHF1YWRzOiBxcyxcbiAgICAgIGlkOiBuZXcgTmFtZWROb2RlKCdodHRwOi8vZXhhbXBsZS5jb20vbnMjbWUxMjM0JyksXG4gICAgfSlcbiAgcmV0dXJuIHsgdmFsdWU6IHBhdGggfVxufVxuXG50eXBlIENvbnQgPSB7IHF1YWRzOiBRdWFkW107IGlkOiBUZXJtIH1cbmFzeW5jIGZ1bmN0aW9uIGpzb25sZFRvUXVhZHModmFsdWU6IHVua25vd24pOiBQcm9taXNlPENvbnQ+IHtcbiAgY29uc3QgcXMgPSAoXG4gICAgYXdhaXQgY2JkVG9RdWFkcyh7XG4gICAgICAnQGlkJzogJ2h0dHA6Ly9leGFtcGxlLmNvbS9ucyNtZTEyMzQnLFxuICAgICAgJ2h0dHA6Ly9leGFtcGxlLmNvbS9ucyNpbm5lclByZWQnOiB2YWx1ZSxcbiAgICB9KVxuICApLnZhbHVlXG5cbiAgY29uc3QgaWR4ID0gcXMuZmluZEluZGV4KFxuICAgICh4KSA9PlxuICAgICAgeC5wcmVkaWNhdGUuZXF1YWxzKG5ldyBOYW1lZE5vZGUoJ2h0dHA6Ly9leGFtcGxlLmNvbS9ucyNpbm5lclByZWQnKSkgJiZcbiAgICAgIHguc3ViamVjdC5lcXVhbHMobmV3IE5hbWVkTm9kZSgnaHR0cDovL2V4YW1wbGUuY29tL25zI21lMTIzNCcpKSxcbiAgKVxuICBpZiAoaWR4IDwgMCkgdGhyb3cgJ1RoaXMgY2Fubm90IGhhcHBlbidcbiAgY29uc3QgaWQgPSBxc1tpZHhdLm9iamVjdFxuXG4gIHFzLnNwbGljZShpZHgsIDEpXG5cbiAgcmV0dXJuIHtcbiAgICBxdWFkczogcXMsXG4gICAgaWQsXG4gIH1cbn1cblxuLyogZXNsaW50LWRpc2FibGUgIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmZ1bmN0aW9uIHJldml2ZShcbiAgX2tleTogc3RyaW5nLFxuICB2YWx1ZTogYW55LFxuICBsb2dnZXI6IExvZ2dlcixcbiAgcHJvbWlzZXM6IFByb21pc2U8dW5rbm93bj5bXSxcbiAgcnVubmVySXRlbXM6IFJ1bm5lckl0ZW1zLFxuKTogYW55IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICBjb25zdCB0eXBlcyA9IGFzX3N0cmluZ19hcnJheSh2YWx1ZVsnQHR5cGUnXSB8fCBbXSlcbiAgICBjb25zdCBpZHMgPSBhc19zdHJpbmdfYXJyYXkodmFsdWVbJ0BpZCddIHx8IFtdKVswXSB8fCAnJ1xuXG4gICAgaWYgKHR5cGVzLmluY2x1ZGVzKFJERkMuUmVhZGVyKSkge1xuICAgICAgaWYgKHJ1bm5lckl0ZW1zLnJlYWRlcnNbaWRzXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJ1bm5lckl0ZW1zLnJlYWRlcnNbaWRzXSA9IFtdXG4gICAgICB9XG4gICAgICBjb25zdCByZWFkZXIgPSBuZXcgUmVhZGVySW5zdGFuY2UoaWRzLCBydW5uZXJJdGVtcy5jbGllbnQsIGxvZ2dlcilcbiAgICAgIHJ1bm5lckl0ZW1zLnJlYWRlcnNbaWRzXS5wdXNoKHJlYWRlcilcbiAgICAgIHJldHVybiByZWFkZXJcbiAgICB9XG5cbiAgICBpZiAodHlwZXMuaW5jbHVkZXMoUkRGQy5Xcml0ZXIpKSB7XG4gICAgICBpZiAocnVubmVySXRlbXMud3JpdGVyc1tpZHNdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcnVubmVySXRlbXMud3JpdGVyc1tpZHNdID0gW11cbiAgICAgIH1cbiAgICAgIGNvbnN0IHdyaXRlciA9IG5ldyBXcml0ZXJJbnN0YW5jZShcbiAgICAgICAgaWRzLFxuICAgICAgICBydW5uZXJJdGVtcy5jbGllbnQsXG4gICAgICAgIHJ1bm5lckl0ZW1zLndyaXRlLFxuICAgICAgICBsb2dnZXIsXG4gICAgICApXG4gICAgICBydW5uZXJJdGVtcy53cml0ZXJzW2lkc10ucHVzaCh3cml0ZXIpXG4gICAgICByZXR1cm4gd3JpdGVyXG4gICAgfVxuXG4gICAgaWYgKHR5cGVzLmluY2x1ZGVzKFJERkwuQ0JEKSkge1xuICAgICAgcmV0dXJuIGNiZFRvUXVhZHModmFsdWUpXG4gICAgfVxuXG4gICAgaWYgKHR5cGVzLmluY2x1ZGVzKFJERkwuUGF0aCkpIHtcbiAgICAgIHJldHVybiBjYmRUb1BhdGgodmFsdWUpXG4gICAgfVxuICB9XG5cbiAgT2JqZWN0LmVudHJpZXModmFsdWUpLmZvckVhY2goKFtrLCB2XSkgPT4ge1xuICAgIGlmICh2IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgbG9nZ2VyLmluZm8oJ0ZvdW5kIHByb21pc2UnKVxuICAgICAgcHJvbWlzZXMucHVzaChcbiAgICAgICAgdi50aGVuKCh4KSA9PiB7XG4gICAgICAgICAgbG9nZ2VyLmluZm8oJ1NldHRpbmcgZmllbGQgJyArIGspXG4gICAgICAgICAgdmFsdWVba10gPSB4LnZhbHVlXG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgIH1cbiAgfSlcblxuICByZXR1cm4gdmFsdWVcbn1cblxudHlwZSBBcmcgPSB7XG4gIFtpZDogc3RyaW5nXTogYW55XG59XG5mdW5jdGlvbiBleHBhbmRBcmdzKGFyZ3M6IEFyZywgY29udDogQ29udCwgbG9nZ2VyOiBMb2dnZXIpIHtcbiAgY29uc3QgY29udGV4dCA9IGFyZ3NbJ0Bjb250ZXh0J11cbiAgaWYgKCFjb250ZXh0KSByZXR1cm5cblxuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhhcmdzKSkge1xuICAgIGlmIChrZXkgPT0gJ0Bjb250ZXh0JykgY29udGludWVcbiAgICBjb25zdCBjdHhPYmogPSBjb250ZXh0W2tleV1cbiAgICBpZiAoIWN0eE9iaikge1xuICAgICAgbG9nZ2VyLmRlYnVnKFwiRGlkbid0IGZpbmQgY3R4IHRoaW5ncyBmb3IgXCIgKyBrZXkpXG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgICdEaWQgZmluZCBjdHggdGhpbmdzIGZvciAnICtcbiAgICAgICAga2V5ICtcbiAgICAgICAgJyAnICtcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoY3R4T2JqKSArXG4gICAgICAgICc6ICcgK1xuICAgICAgICBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICBPYmplY3QuZW50cmllcyhhcmdzW2tleV0pLm1hcCgoW2ssIHZdKSA9PiB7XG4gICAgICAgICAgICBsZXQgeCA9ICdvYmplY3QnXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICB4ID0gSlNPTi5zdHJpbmdpZnkodilcbiAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICAgICAgfSBjYXRjaCAoX2U6IHVua25vd24pIHtcbiAgICAgICAgICAgICAgLy8gZGVmYXVsdCBpcyBzZXRcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGsgKyAnOiAnICsgeFxuICAgICAgICAgIH0pLFxuICAgICAgICApLFxuICAgIClcblxuICAgIGV4cGFuZEFyZ3MoYXJnc1trZXldLCBjb250LCBsb2dnZXIpXG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBhcnNlX2pzb25sZChcbiAgYXJnczogc3RyaW5nLFxuICBsb2dnZXI6IExvZ2dlcixcbiAgaXRlbXM6IFJ1bm5lckl0ZW1zLFxuKTogUHJvbWlzZTx1bmtub3duPiB7XG4gIGNvbnN0IHByb21pc2VzOiBQcm9taXNlPHVua25vd24+W10gPSBbXVxuICBsb2dnZXIuaW5mbyhhcmdzKVxuICBjb25zdCBjb250ID0gYXdhaXQganNvbmxkVG9RdWFkcyhKU09OLnBhcnNlKGFyZ3MpKVxuICBjb25zdCBvdXQgPSBKU09OLnBhcnNlKGFyZ3MsIChrLCB2KSA9PiByZXZpdmUoaywgdiwgbG9nZ2VyLCBwcm9taXNlcywgaXRlbXMpKVxuXG4gIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKVxuXG4gIGV4cGFuZEFyZ3Mob3V0LCBjb250LCBsb2dnZXIpXG4gIHJldHVybiBvdXRcbn1cbiJdfQ==
package/lib/logger.d.ts CHANGED
@@ -6,6 +6,7 @@ export declare class RpcTransport extends Transport {
6
6
  private readonly stream;
7
7
  private readonly entities;
8
8
  private readonly aliases;
9
+ private draining;
9
10
  constructor(opts: {
10
11
  stream: grpc.ClientWritableStream<LogMessage>;
11
12
  entities: string[];
package/lib/logger.js CHANGED
@@ -4,25 +4,35 @@ export class RpcTransport extends Transport {
4
4
  stream;
5
5
  entities;
6
6
  aliases;
7
+ draining;
7
8
  constructor(opts) {
8
9
  super({ level: 'debug' });
9
10
  this.stream = opts.stream;
10
11
  this.entities = opts.entities;
11
12
  this.aliases = opts.aliases || [];
13
+ this.draining = true;
14
+ this.stream.on('drain', () => {
15
+ this.draining = true;
16
+ });
12
17
  }
13
18
  log(info, callback) {
14
- if (!this.stream.closed) {
15
- this.stream.write({
16
- msg: info.message,
17
- level: info.level,
18
- entities: this.entities,
19
- aliases: this.aliases,
20
- }, callback);
19
+ if (!this.stream.closed && !this.stream.destroyed && this.stream.writable) {
20
+ if (this.draining) {
21
+ const ok = this.stream.write({
22
+ msg: info.message,
23
+ level: info.level,
24
+ entities: this.entities,
25
+ aliases: this.aliases,
26
+ });
27
+ if (!ok) {
28
+ this.draining = false;
29
+ }
30
+ }
21
31
  }
22
32
  else {
23
33
  console.log('Output stream closed');
24
- callback();
25
34
  }
35
+ callback();
26
36
  }
27
37
  withEntity(entity) {
28
38
  return new RpcTransport({
@@ -46,4 +56,4 @@ export function extendLogger(baseLogger, newEntity) {
46
56
  transports: newTransports,
47
57
  });
48
58
  }
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFvQixNQUFNLFNBQVMsQ0FBQTtBQUN4RCxPQUFPLFNBQVMsTUFBTSxtQkFBbUIsQ0FBQTtBQUt6QyxNQUFNLE9BQU8sWUFBYSxTQUFRLFNBQVM7SUFDeEIsTUFBTSxDQUF1QztJQUM3QyxRQUFRLENBQVU7SUFDbEIsT0FBTyxDQUFVO0lBRWxDLFlBQVksSUFJWDtRQUNDLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFBO1FBRXpCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQTtRQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUE7UUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQTtJQUNuQyxDQUFDO0lBRUQsR0FBRyxDQUFDLElBQWMsRUFBRSxRQUFvQjtRQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZjtnQkFDRSxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU87Z0JBQ2pCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUN2QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87YUFDdEIsRUFDRCxRQUFRLENBQ1QsQ0FBQTtRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBO1lBQ25DLFFBQVEsRUFBRSxDQUFBO1FBQ1osQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsTUFBYztRQUN2QixPQUFPLElBQUksWUFBWSxDQUFDO1lBQ3RCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixRQUFRLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDO1lBQ3BDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztTQUN0QixDQUFDLENBQUE7SUFDSixDQUFDO0NBQ0Y7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLFVBQWtCLEVBQUUsU0FBaUI7SUFDaEUsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUNwRCxJQUFJLENBQUMsWUFBWSxZQUFZLEVBQUUsQ0FBQztZQUM5QixPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDaEMsQ0FBQztRQUNELE9BQU8sQ0FBQyxDQUFBO0lBQ1YsQ0FBQyxDQUFDLENBQUE7SUFFRixPQUFPLFlBQVksQ0FBQztRQUNsQixLQUFLLEVBQUUsVUFBVSxDQUFDLEtBQUs7UUFDdkIsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNO1FBQ3pCLFdBQVcsRUFBRSxVQUFVLENBQUMsV0FBVztRQUNuQyxVQUFVLEVBQUUsYUFBYTtLQUMxQixDQUFDLENBQUE7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlTG9nZ2VyLCBMb2dFbnRyeSwgTG9nZ2VyIH0gZnJvbSAnd2luc3RvbidcbmltcG9ydCBUcmFuc3BvcnQgZnJvbSAnd2luc3Rvbi10cmFuc3BvcnQnXG5cbmltcG9ydCAqIGFzIGdycGMgZnJvbSAnQGdycGMvZ3JwYy1qcydcbmltcG9ydCB7IExvZ01lc3NhZ2UgfSBmcm9tICdAcmRmYy9wcm90bydcblxuZXhwb3J0IGNsYXNzIFJwY1RyYW5zcG9ydCBleHRlbmRzIFRyYW5zcG9ydCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3RyZWFtOiBncnBjLkNsaWVudFdyaXRhYmxlU3RyZWFtPExvZ01lc3NhZ2U+XG4gIHByaXZhdGUgcmVhZG9ubHkgZW50aXRpZXM6IHN0cmluZ1tdXG4gIHByaXZhdGUgcmVhZG9ubHkgYWxpYXNlczogc3RyaW5nW11cblxuICBjb25zdHJ1Y3RvcihvcHRzOiB7XG4gICAgc3RyZWFtOiBncnBjLkNsaWVudFdyaXRhYmxlU3RyZWFtPExvZ01lc3NhZ2U+XG4gICAgZW50aXRpZXM6IHN0cmluZ1tdXG4gICAgYWxpYXNlcz86IHN0cmluZ1tdXG4gIH0pIHtcbiAgICBzdXBlcih7IGxldmVsOiAnZGVidWcnIH0pXG5cbiAgICB0aGlzLnN0cmVhbSA9IG9wdHMuc3RyZWFtXG4gICAgdGhpcy5lbnRpdGllcyA9IG9wdHMuZW50aXRpZXNcbiAgICB0aGlzLmFsaWFzZXMgPSBvcHRzLmFsaWFzZXMgfHwgW11cbiAgfVxuXG4gIGxvZyhpbmZvOiBMb2dFbnRyeSwgY2FsbGJhY2s6ICgpID0+IHZvaWQpIHtcbiAgICBpZiAoIXRoaXMuc3RyZWFtLmNsb3NlZCkge1xuICAgICAgdGhpcy5zdHJlYW0ud3JpdGUoXG4gICAgICAgIHtcbiAgICAgICAgICBtc2c6IGluZm8ubWVzc2FnZSxcbiAgICAgICAgICBsZXZlbDogaW5mby5sZXZlbCxcbiAgICAgICAgICBlbnRpdGllczogdGhpcy5lbnRpdGllcyxcbiAgICAgICAgICBhbGlhc2VzOiB0aGlzLmFsaWFzZXMsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGxiYWNrLFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZygnT3V0cHV0IHN0cmVhbSBjbG9zZWQnKVxuICAgICAgY2FsbGJhY2soKVxuICAgIH1cbiAgfVxuXG4gIHdpdGhFbnRpdHkoZW50aXR5OiBzdHJpbmcpOiBScGNUcmFuc3BvcnQge1xuICAgIHJldHVybiBuZXcgUnBjVHJhbnNwb3J0KHtcbiAgICAgIHN0cmVhbTogdGhpcy5zdHJlYW0sXG4gICAgICBlbnRpdGllczogWy4uLnRoaXMuZW50aXRpZXMsIGVudGl0eV0sXG4gICAgICBhbGlhc2VzOiB0aGlzLmFsaWFzZXMsXG4gICAgfSlcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kTG9nZ2VyKGJhc2VMb2dnZXI6IExvZ2dlciwgbmV3RW50aXR5OiBzdHJpbmcpOiBMb2dnZXIge1xuICBjb25zdCBuZXdUcmFuc3BvcnRzID0gYmFzZUxvZ2dlci50cmFuc3BvcnRzLm1hcCgodCkgPT4ge1xuICAgIGlmICh0IGluc3RhbmNlb2YgUnBjVHJhbnNwb3J0KSB7XG4gICAgICByZXR1cm4gdC53aXRoRW50aXR5KG5ld0VudGl0eSlcbiAgICB9XG4gICAgcmV0dXJuIHRcbiAgfSlcblxuICByZXR1cm4gY3JlYXRlTG9nZ2VyKHtcbiAgICBsZXZlbDogYmFzZUxvZ2dlci5sZXZlbCxcbiAgICBmb3JtYXQ6IGJhc2VMb2dnZXIuZm9ybWF0LFxuICAgIGRlZmF1bHRNZXRhOiBiYXNlTG9nZ2VyLmRlZmF1bHRNZXRhLFxuICAgIHRyYW5zcG9ydHM6IG5ld1RyYW5zcG9ydHMsXG4gIH0pXG59XG4iXX0=
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFvQixNQUFNLFNBQVMsQ0FBQTtBQUN4RCxPQUFPLFNBQVMsTUFBTSxtQkFBbUIsQ0FBQTtBQUt6QyxNQUFNLE9BQU8sWUFBYSxTQUFRLFNBQVM7SUFDeEIsTUFBTSxDQUF1QztJQUM3QyxRQUFRLENBQVU7SUFDbEIsT0FBTyxDQUFVO0lBQzFCLFFBQVEsQ0FBUztJQUV6QixZQUFZLElBSVg7UUFDQyxLQUFLLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQTtRQUV6QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUE7UUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFBO1FBQzdCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUE7UUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUE7UUFFcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRTtZQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQTtRQUN0QixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxHQUFHLENBQUMsSUFBYyxFQUFFLFFBQW9CO1FBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDMUUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2xCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO29CQUMzQixHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU87b0JBQ2pCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztvQkFDakIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO29CQUN2QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87aUJBQ3RCLENBQUMsQ0FBQTtnQkFDRixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7b0JBQ1IsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUE7Z0JBQ3ZCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDLENBQUE7UUFDckMsQ0FBQztRQUNELFFBQVEsRUFBRSxDQUFBO0lBQ1osQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUFjO1FBQ3ZCLE9BQU8sSUFBSSxZQUFZLENBQUM7WUFDdEIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLFFBQVEsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUM7WUFDcEMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1NBQ3RCLENBQUMsQ0FBQTtJQUNKLENBQUM7Q0FDRjtBQUVELE1BQU0sVUFBVSxZQUFZLENBQUMsVUFBa0IsRUFBRSxTQUFpQjtJQUNoRSxNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQ3BELElBQUksQ0FBQyxZQUFZLFlBQVksRUFBRSxDQUFDO1lBQzlCLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNoQyxDQUFDO1FBQ0QsT0FBTyxDQUFDLENBQUE7SUFDVixDQUFDLENBQUMsQ0FBQTtJQUVGLE9BQU8sWUFBWSxDQUFDO1FBQ2xCLEtBQUssRUFBRSxVQUFVLENBQUMsS0FBSztRQUN2QixNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU07UUFDekIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxXQUFXO1FBQ25DLFVBQVUsRUFBRSxhQUFhO0tBQzFCLENBQUMsQ0FBQTtBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVMb2dnZXIsIExvZ0VudHJ5LCBMb2dnZXIgfSBmcm9tICd3aW5zdG9uJ1xuaW1wb3J0IFRyYW5zcG9ydCBmcm9tICd3aW5zdG9uLXRyYW5zcG9ydCdcblxuaW1wb3J0ICogYXMgZ3JwYyBmcm9tICdAZ3JwYy9ncnBjLWpzJ1xuaW1wb3J0IHsgTG9nTWVzc2FnZSB9IGZyb20gJ0ByZGZjL3Byb3RvJ1xuXG5leHBvcnQgY2xhc3MgUnBjVHJhbnNwb3J0IGV4dGVuZHMgVHJhbnNwb3J0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBzdHJlYW06IGdycGMuQ2xpZW50V3JpdGFibGVTdHJlYW08TG9nTWVzc2FnZT5cbiAgcHJpdmF0ZSByZWFkb25seSBlbnRpdGllczogc3RyaW5nW11cbiAgcHJpdmF0ZSByZWFkb25seSBhbGlhc2VzOiBzdHJpbmdbXVxuICBwcml2YXRlIGRyYWluaW5nOiBib29sZWFuXG5cbiAgY29uc3RydWN0b3Iob3B0czoge1xuICAgIHN0cmVhbTogZ3JwYy5DbGllbnRXcml0YWJsZVN0cmVhbTxMb2dNZXNzYWdlPlxuICAgIGVudGl0aWVzOiBzdHJpbmdbXVxuICAgIGFsaWFzZXM/OiBzdHJpbmdbXVxuICB9KSB7XG4gICAgc3VwZXIoeyBsZXZlbDogJ2RlYnVnJyB9KVxuXG4gICAgdGhpcy5zdHJlYW0gPSBvcHRzLnN0cmVhbVxuICAgIHRoaXMuZW50aXRpZXMgPSBvcHRzLmVudGl0aWVzXG4gICAgdGhpcy5hbGlhc2VzID0gb3B0cy5hbGlhc2VzIHx8IFtdXG4gICAgdGhpcy5kcmFpbmluZyA9IHRydWVcblxuICAgIHRoaXMuc3RyZWFtLm9uKCdkcmFpbicsICgpID0+IHtcbiAgICAgIHRoaXMuZHJhaW5pbmcgPSB0cnVlXG4gICAgfSlcbiAgfVxuXG4gIGxvZyhpbmZvOiBMb2dFbnRyeSwgY2FsbGJhY2s6ICgpID0+IHZvaWQpIHtcbiAgICBpZiAoIXRoaXMuc3RyZWFtLmNsb3NlZCAmJiAhdGhpcy5zdHJlYW0uZGVzdHJveWVkICYmIHRoaXMuc3RyZWFtLndyaXRhYmxlKSB7XG4gICAgICBpZiAodGhpcy5kcmFpbmluZykge1xuICAgICAgICBjb25zdCBvayA9IHRoaXMuc3RyZWFtLndyaXRlKHtcbiAgICAgICAgICBtc2c6IGluZm8ubWVzc2FnZSxcbiAgICAgICAgICBsZXZlbDogaW5mby5sZXZlbCxcbiAgICAgICAgICBlbnRpdGllczogdGhpcy5lbnRpdGllcyxcbiAgICAgICAgICBhbGlhc2VzOiB0aGlzLmFsaWFzZXMsXG4gICAgICAgIH0pXG4gICAgICAgIGlmICghb2spIHtcbiAgICAgICAgICB0aGlzLmRyYWluaW5nID0gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZygnT3V0cHV0IHN0cmVhbSBjbG9zZWQnKVxuICAgIH1cbiAgICBjYWxsYmFjaygpXG4gIH1cblxuICB3aXRoRW50aXR5KGVudGl0eTogc3RyaW5nKTogUnBjVHJhbnNwb3J0IHtcbiAgICByZXR1cm4gbmV3IFJwY1RyYW5zcG9ydCh7XG4gICAgICBzdHJlYW06IHRoaXMuc3RyZWFtLFxuICAgICAgZW50aXRpZXM6IFsuLi50aGlzLmVudGl0aWVzLCBlbnRpdHldLFxuICAgICAgYWxpYXNlczogdGhpcy5hbGlhc2VzLFxuICAgIH0pXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dGVuZExvZ2dlcihiYXNlTG9nZ2VyOiBMb2dnZXIsIG5ld0VudGl0eTogc3RyaW5nKTogTG9nZ2VyIHtcbiAgY29uc3QgbmV3VHJhbnNwb3J0cyA9IGJhc2VMb2dnZXIudHJhbnNwb3J0cy5tYXAoKHQpID0+IHtcbiAgICBpZiAodCBpbnN0YW5jZW9mIFJwY1RyYW5zcG9ydCkge1xuICAgICAgcmV0dXJuIHQud2l0aEVudGl0eShuZXdFbnRpdHkpXG4gICAgfVxuICAgIHJldHVybiB0XG4gIH0pXG5cbiAgcmV0dXJuIGNyZWF0ZUxvZ2dlcih7XG4gICAgbGV2ZWw6IGJhc2VMb2dnZXIubGV2ZWwsXG4gICAgZm9ybWF0OiBiYXNlTG9nZ2VyLmZvcm1hdCxcbiAgICBkZWZhdWx0TWV0YTogYmFzZUxvZ2dlci5kZWZhdWx0TWV0YSxcbiAgICB0cmFuc3BvcnRzOiBuZXdUcmFuc3BvcnRzLFxuICB9KVxufVxuIl19
package/lib/reader.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { ReceivingMessage, ReceivingStreamMessage, RunnerClient } from '@rdfc/proto';
2
2
  import { Logger } from 'winston';
3
3
  import { Writable } from './runner.js';
4
+ import { ChannelTracker } from './state.js';
4
5
  export type Any = {
5
6
  string: string;
6
7
  } | {
@@ -20,13 +21,15 @@ export declare class ReaderInstance implements Reader {
20
21
  readonly uri: string;
21
22
  private logger;
22
23
  private readonly notifyOrchestrator;
24
+ private readonly tracker;
23
25
  private consumers;
24
- constructor(uri: string, client: RunnerClient, notifyOrchestrator: Writable, logger: Logger);
26
+ constructor(uri: string, client: RunnerClient, notifyOrchestrator: Writable, logger: Logger, tracker?: ChannelTracker);
25
27
  anys(): AsyncIterable<Any>;
26
28
  strings(): AsyncIterable<string>;
27
29
  buffers(): AsyncIterable<Uint8Array>;
28
30
  streams(): AsyncIterable<AsyncGenerator<Uint8Array>>;
29
31
  handleMsg(msg: ReceivingMessage): void;
32
+ private hasClosed;
30
33
  close(): void;
31
34
  handleStreamingMessage({ channel, globalSequenceNumber, }: ReceivingStreamMessage): Promise<void>;
32
35
  }