@rdfc/js-runner 1.0.0-alpha.7 → 2.0.0-alpha.1

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 (80) hide show
  1. package/.husky/pre-commit +6 -0
  2. package/.prettierrc +4 -0
  3. package/README.md +3 -38
  4. package/__tests__/channels.test.ts +133 -0
  5. package/bin/runner.js +8 -0
  6. package/eslint.config.mjs +21 -0
  7. package/examples/echo/package-lock.json +80 -0
  8. package/examples/echo/package.json +18 -0
  9. package/examples/echo/pipeline.ttl +30 -0
  10. package/examples/echo/processors.ttl +84 -0
  11. package/examples/echo/src/processors.ts +75 -0
  12. package/examples/echo/test.ttl +14 -0
  13. package/examples/echo/tsconfig.json +114 -0
  14. package/examples/echo/untitled:/types/MyType.ttl +0 -0
  15. package/index.ttl +63 -0
  16. package/jest.config.js +2 -0
  17. package/lib/client.d.ts +1 -0
  18. package/lib/client.js +43 -0
  19. package/lib/convertor.d.ts +9 -0
  20. package/lib/convertor.js +51 -0
  21. package/lib/index.d.ts +4 -0
  22. package/lib/index.js +5 -0
  23. package/lib/jsonld.d.ts +17 -0
  24. package/lib/jsonld.js +134 -0
  25. package/lib/logger.d.ts +15 -0
  26. package/lib/logger.js +27 -0
  27. package/lib/processor.d.ts +19 -0
  28. package/lib/processor.js +13 -0
  29. package/lib/reader.d.ts +29 -0
  30. package/lib/reader.js +110 -0
  31. package/lib/runner.d.ts +25 -0
  32. package/lib/runner.js +111 -0
  33. package/lib/tsconfig.tsbuildinfo +1 -0
  34. package/lib/util_processors.d.ts +11 -0
  35. package/lib/util_processors.js +13 -0
  36. package/lib/writer.d.ts +25 -0
  37. package/lib/writer.js +57 -0
  38. package/package.json +53 -59
  39. package/src/client.ts +52 -0
  40. package/src/convertor.ts +59 -0
  41. package/src/index.ts +4 -0
  42. package/src/jsonld.ts +217 -0
  43. package/src/logger.ts +38 -0
  44. package/src/processor.ts +39 -0
  45. package/src/reader.ts +148 -0
  46. package/src/runner.ts +186 -0
  47. package/src/util_processors.ts +20 -0
  48. package/src/writer.ts +89 -0
  49. package/tsconfig.json +33 -0
  50. package/vite.config.ts +10 -0
  51. package/LICENSE +0 -21
  52. package/bin/js-runner.js +0 -4
  53. package/channels/file.ttl +0 -37
  54. package/channels/http.ttl +0 -59
  55. package/channels/kafka.ttl +0 -98
  56. package/channels/ws.ttl +0 -33
  57. package/dist/args.d.ts +0 -4
  58. package/dist/args.js +0 -59
  59. package/dist/connectors/file.d.ts +0 -15
  60. package/dist/connectors/file.js +0 -89
  61. package/dist/connectors/http.d.ts +0 -14
  62. package/dist/connectors/http.js +0 -82
  63. package/dist/connectors/kafka.d.ts +0 -48
  64. package/dist/connectors/kafka.js +0 -64
  65. package/dist/connectors/ws.d.ts +0 -10
  66. package/dist/connectors/ws.js +0 -69
  67. package/dist/connectors.d.ts +0 -57
  68. package/dist/connectors.js +0 -174
  69. package/dist/index.d.ts +0 -39
  70. package/dist/index.js +0 -88
  71. package/dist/profiling.d.ts +0 -6
  72. package/dist/profiling.js +0 -79
  73. package/dist/tsconfig.tsbuildinfo +0 -1
  74. package/dist/util.d.ts +0 -43
  75. package/dist/util.js +0 -75
  76. package/ontology.ttl +0 -196
  77. package/processor/echo.ttl +0 -38
  78. package/processor/resc.ttl +0 -34
  79. package/processor/send.ttl +0 -40
  80. package/processor/test.js +0 -35
package/index.ttl ADDED
@@ -0,0 +1,63 @@
1
+ @prefix prov: <http://www.w3.org/ns/prov#>.
2
+ @prefix sds: <https://w3id.org/sds#>.
3
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
4
+ @prefix owl: <http://www.w3.org/2002/07/owl#>.
5
+ @prefix rdfl: <https://w3id.org/rdf-lens/ontology#>.
6
+ @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
7
+ @prefix xsd: <http://www.w3.org/2001/XMLSchema#>.
8
+ @prefix sh: <http://www.w3.org/ns/shacl#>.
9
+ @prefix rdfc: <https://w3id.org/rdf-connect/ontology#>.
10
+
11
+ # rdfc:JsRunner a rdfc:CommandRunner;
12
+ # rdfc:command "npx js-runner";
13
+ # rdfc:processor_definition <JsProcessorShape>.
14
+ #
15
+ rdfc:JsRunner a rdfc:CommandRunner;
16
+ rdfc:handles rdfc:JsProcessor;
17
+ rdfc:handlesSubjectsOf rdfc:jsImplementationOf;
18
+ rdfc:command "npx js-runner";
19
+ rdfc:processor_definition <JsProcessorShape>.
20
+
21
+ sds:Activity rdfs:subClassOf prov:Activity.
22
+ rdfc:Processor rdfs:subClassOf sds:Activity.
23
+ sds:implementationOf rdfs:subPropertyOf rdfs:subClassOf.
24
+ rdfc:jsImplementationOf rdfs:subPropertyOf sds:implementationOf.
25
+
26
+ # rdfc:LogProcessor sds:jsImplementationOf rdfc:Processor;
27
+ # rdfs:label "Simple Log Processor";
28
+ # rdfs:comment "Logs incoming messages";
29
+ # rdfc:entrypoint <./>;
30
+ # rdfc:file <./lib/util_processors.js>;
31
+ # rdfc:class "LogProcessor".
32
+ #
33
+ # [ ] a sh:NodeShape;
34
+ # sh:targetClass rdfc:LogProcessor;
35
+ # sh:property [
36
+ # sh:path rdfc:reader;
37
+ # sh:name "reader";
38
+ # sh:minCount 1;
39
+ # sh:maxCount 1;
40
+ # sh:class rdfc:Reader;
41
+ # ].
42
+
43
+ [ ] a sh:NodeShape;
44
+ sh:targetClass <JsProcessorShape>;
45
+ sh:property [
46
+ sh:path rdfc:entrypoint;
47
+ sh:name "location";
48
+ sh:minCount 1;
49
+ sh:maxCount 1;
50
+ sh:datatype xsd:iri;
51
+ ], [
52
+ sh:path rdfc:file;
53
+ sh:name "file";
54
+ sh:minCount 1;
55
+ sh:maxCount 1;
56
+ sh:datatype xsd:string;
57
+ ], [
58
+ sh:path rdfc:class;
59
+ sh:name "clazz";
60
+ sh:maxCount 1;
61
+ sh:datatype xsd:string;
62
+ ].
63
+
package/jest.config.js ADDED
@@ -0,0 +1,2 @@
1
+ export const preset = 'ts-jest'
2
+ export const testEnvironment = 'node'
@@ -0,0 +1 @@
1
+ export declare function start(addr: string, uri: string): Promise<void>;
package/lib/client.js ADDED
@@ -0,0 +1,43 @@
1
+ import * as grpc from '@grpc/grpc-js';
2
+ import { promisify } from 'util';
3
+ import { RunnerClient } from '@rdfc/proto';
4
+ import winston from 'winston';
5
+ import { RpcTransport } from './logger.js';
6
+ import { Runner } from './runner.js';
7
+ export async function start(addr, uri) {
8
+ const client = new RunnerClient(addr, grpc.credentials.createInsecure());
9
+ const logger = winston.createLogger({
10
+ transports: [
11
+ new RpcTransport({
12
+ entities: [uri, 'cli'],
13
+ stream: client.logStream(() => { }),
14
+ }),
15
+ ],
16
+ });
17
+ 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
+ let processorsEnd;
23
+ const processorsEnded = new Promise((res) => (processorsEnd = res));
24
+ (async () => {
25
+ for await (const chunk of stream) {
26
+ const msg = chunk;
27
+ if (msg.proc) {
28
+ await runner.addProcessor(msg.proc);
29
+ }
30
+ if (msg.start) {
31
+ runner.start().then(processorsEnd);
32
+ }
33
+ await runner.handleOrchMessage(msg);
34
+ }
35
+ logger.error('Stream ended');
36
+ })();
37
+ await processorsEnded;
38
+ logger.info('All processors are finished');
39
+ stream.end();
40
+ client.close();
41
+ process.exit(0);
42
+ }
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQTtBQUNyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ2hDLE9BQU8sRUFBRSxZQUFZLEVBQWlCLE1BQU0sYUFBYSxDQUFBO0FBQ3pELE9BQU8sT0FBTyxNQUFNLFNBQVMsQ0FBQTtBQUM3QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFFakMsTUFBTSxDQUFDLEtBQUssVUFBVSxLQUFLLENBQUMsSUFBWSxFQUFFLEdBQVc7SUFDbkQsTUFBTSxNQUFNLEdBQUcsSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQTtJQUV4RSxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDO1FBQ2xDLFVBQVUsRUFBRTtZQUNWLElBQUksWUFBWSxDQUFDO2dCQUNmLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUM7Z0JBQ3RCLE1BQU0sRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQzthQUNuQyxDQUFDO1NBQ0g7S0FDRixDQUFDLENBQUE7SUFFRixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUE7SUFFL0IsTUFBTSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsQ0FBQTtJQUM1QyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtJQUNyRCxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUV4RCxNQUFNLFFBQVEsQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUVyQyxJQUFJLGFBQXVDLENBQUE7SUFDM0MsTUFBTSxlQUFlLEdBQUcsSUFBSSxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQ2xFO0lBQUEsQ0FBQyxLQUFLLElBQUksRUFBRTtRQUNYLElBQUksS0FBSyxFQUFFLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ2pDLE1BQU0sR0FBRyxHQUFrQixLQUFLLENBQUE7WUFDaEMsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2IsTUFBTSxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNyQyxDQUFDO1lBQ0QsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2QsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQTtZQUNwQyxDQUFDO1lBRUQsTUFBTSxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDckMsQ0FBQztRQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUE7SUFDOUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUVKLE1BQU0sZUFBZSxDQUFBO0lBRXJCLE1BQU0sQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsQ0FBQTtJQUMxQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUE7SUFDWixNQUFNLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDZCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBncnBjIGZyb20gJ0BncnBjL2dycGMtanMnXG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tICd1dGlsJ1xuaW1wb3J0IHsgUnVubmVyQ2xpZW50LCBSdW5uZXJNZXNzYWdlIH0gZnJvbSAnQHJkZmMvcHJvdG8nXG5pbXBvcnQgd2luc3RvbiBmcm9tICd3aW5zdG9uJ1xuaW1wb3J0IHsgUnBjVHJhbnNwb3J0IH0gZnJvbSAnLi9sb2dnZXInXG5pbXBvcnQgeyBSdW5uZXIgfSBmcm9tICcuL3J1bm5lcidcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGFkZHI6IHN0cmluZywgdXJpOiBzdHJpbmcpIHtcbiAgY29uc3QgY2xpZW50ID0gbmV3IFJ1bm5lckNsaWVudChhZGRyLCBncnBjLmNyZWRlbnRpYWxzLmNyZWF0ZUluc2VjdXJlKCkpXG5cbiAgY29uc3QgbG9nZ2VyID0gd2luc3Rvbi5jcmVhdGVMb2dnZXIoe1xuICAgIHRyYW5zcG9ydHM6IFtcbiAgICAgIG5ldyBScGNUcmFuc3BvcnQoe1xuICAgICAgICBlbnRpdGllczogW3VyaSwgJ2NsaSddLFxuICAgICAgICBzdHJlYW06IGNsaWVudC5sb2dTdHJlYW0oKCkgPT4ge30pLFxuICAgICAgfSksXG4gICAgXSxcbiAgfSlcblxuICBjb25zdCBzdHJlYW0gPSBjbGllbnQuY29ubmVjdCgpXG5cbiAgbG9nZ2VyLmluZm8oJ0Nvbm5lY3RlZCB3aXRoIHNlcnZlciAnICsgYWRkcilcbiAgY29uc3Qgd3JpdGFibGUgPSBwcm9taXNpZnkoc3RyZWFtLndyaXRlLmJpbmQoc3RyZWFtKSlcbiAgY29uc3QgcnVubmVyID0gbmV3IFJ1bm5lcihjbGllbnQsIHdyaXRhYmxlLCB1cmksIGxvZ2dlcilcblxuICBhd2FpdCB3cml0YWJsZSh7IGlkZW50aWZ5OiB7IHVyaSB9IH0pXG5cbiAgbGV0IHByb2Nlc3NvcnNFbmQhOiAodjogdW5rbm93bikgPT4gdW5rbm93blxuICBjb25zdCBwcm9jZXNzb3JzRW5kZWQgPSBuZXcgUHJvbWlzZSgocmVzKSA9PiAocHJvY2Vzc29yc0VuZCA9IHJlcykpXG4gIDsoYXN5bmMgKCkgPT4ge1xuICAgIGZvciBhd2FpdCAoY29uc3QgY2h1bmsgb2Ygc3RyZWFtKSB7XG4gICAgICBjb25zdCBtc2c6IFJ1bm5lck1lc3NhZ2UgPSBjaHVua1xuICAgICAgaWYgKG1zZy5wcm9jKSB7XG4gICAgICAgIGF3YWl0IHJ1bm5lci5hZGRQcm9jZXNzb3IobXNnLnByb2MpXG4gICAgICB9XG4gICAgICBpZiAobXNnLnN0YXJ0KSB7XG4gICAgICAgIHJ1bm5lci5zdGFydCgpLnRoZW4ocHJvY2Vzc29yc0VuZClcbiAgICAgIH1cblxuICAgICAgYXdhaXQgcnVubmVyLmhhbmRsZU9yY2hNZXNzYWdlKG1zZylcbiAgICB9XG5cbiAgICBsb2dnZXIuZXJyb3IoJ1N0cmVhbSBlbmRlZCcpXG4gIH0pKClcblxuICBhd2FpdCBwcm9jZXNzb3JzRW5kZWRcblxuICBsb2dnZXIuaW5mbygnQWxsIHByb2Nlc3NvcnMgYXJlIGZpbmlzaGVkJylcbiAgc3RyZWFtLmVuZCgpXG4gIGNsaWVudC5jbG9zZSgpXG4gIHByb2Nlc3MuZXhpdCgwKVxufVxuIl19
@@ -0,0 +1,9 @@
1
+ import { Any } from './reader.js';
2
+ export interface Convertor<T> {
3
+ from(buffer: Uint8Array): T;
4
+ fromStream(stream: AsyncIterable<Uint8Array>): Promise<T>;
5
+ }
6
+ export declare const AnyConvertor: Convertor<Any>;
7
+ export declare const StringConvertor: Convertor<string>;
8
+ export declare const StreamConvertor: Convertor<AsyncGenerator<Uint8Array>>;
9
+ export declare const NoConvertor: Convertor<Uint8Array>;
@@ -0,0 +1,51 @@
1
+ const decoder = new TextDecoder();
2
+ export const AnyConvertor = {
3
+ from: function (buffer) {
4
+ return {
5
+ buffer,
6
+ };
7
+ },
8
+ fromStream: async function (inp) {
9
+ const stream = (async function* () {
10
+ yield* inp;
11
+ })();
12
+ return { stream };
13
+ },
14
+ };
15
+ export const StringConvertor = {
16
+ from(buffer) {
17
+ return decoder.decode(buffer);
18
+ },
19
+ async fromStream(stream) {
20
+ const chunks = [];
21
+ for await (const chunk of stream) {
22
+ chunks.push(chunk);
23
+ }
24
+ return decoder.decode(Buffer.concat(chunks));
25
+ },
26
+ };
27
+ export const StreamConvertor = {
28
+ from(buffer) {
29
+ return (async function* () {
30
+ yield buffer;
31
+ })();
32
+ },
33
+ async fromStream(stream) {
34
+ return (async function* () {
35
+ yield* stream;
36
+ })();
37
+ },
38
+ };
39
+ export const NoConvertor = {
40
+ from(buffer) {
41
+ return buffer;
42
+ },
43
+ async fromStream(stream) {
44
+ const chunks = [];
45
+ for await (const chunk of stream) {
46
+ chunks.push(chunk);
47
+ }
48
+ return Buffer.concat(chunks);
49
+ },
50
+ };
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbnZlcnRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFBO0FBTWpDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBbUI7SUFDMUMsSUFBSSxFQUFFLFVBQVUsTUFBa0I7UUFDaEMsT0FBTztZQUNMLE1BQU07U0FDUCxDQUFBO0lBQ0gsQ0FBQztJQUNELFVBQVUsRUFBRSxLQUFLLFdBQVcsR0FBOEI7UUFDeEQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxLQUFLLFNBQVMsQ0FBQztZQUM3QixLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUE7UUFDWixDQUFDLENBQUMsRUFBRSxDQUFBO1FBQ0osT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFBO0lBQ25CLENBQUM7Q0FDRixDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFzQjtJQUNoRCxJQUFJLENBQUMsTUFBTTtRQUNULE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUMvQixDQUFDO0lBQ0QsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNO1FBQ3JCLE1BQU0sTUFBTSxHQUFpQixFQUFFLENBQUE7UUFDL0IsSUFBSSxLQUFLLEVBQUUsTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFLENBQUM7WUFDakMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNwQixDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtJQUM5QyxDQUFDO0NBQ0YsQ0FBQTtBQUNELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBMEM7SUFDcEUsSUFBSSxDQUFDLE1BQU07UUFDVCxPQUFPLENBQUMsS0FBSyxTQUFTLENBQUM7WUFDckIsTUFBTSxNQUFNLENBQUE7UUFDZCxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQ04sQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTTtRQUNyQixPQUFPLENBQUMsS0FBSyxTQUFTLENBQUM7WUFDckIsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFBO1FBQ2YsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUNOLENBQUM7Q0FDRixDQUFBO0FBQ0QsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUEwQjtJQUNoRCxJQUFJLENBQUMsTUFBTTtRQUNULE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQztJQUNELEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTTtRQUNyQixNQUFNLE1BQU0sR0FBaUIsRUFBRSxDQUFBO1FBQy9CLElBQUksS0FBSyxFQUFFLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ2pDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDcEIsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUM5QixDQUFDO0NBQ0YsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFueSB9IGZyb20gJy4vcmVhZGVyJ1xuXG5jb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKClcbmV4cG9ydCBpbnRlcmZhY2UgQ29udmVydG9yPFQ+IHtcbiAgZnJvbShidWZmZXI6IFVpbnQ4QXJyYXkpOiBUXG4gIGZyb21TdHJlYW0oc3RyZWFtOiBBc3luY0l0ZXJhYmxlPFVpbnQ4QXJyYXk+KTogUHJvbWlzZTxUPlxufVxuXG5leHBvcnQgY29uc3QgQW55Q29udmVydG9yOiBDb252ZXJ0b3I8QW55PiA9IHtcbiAgZnJvbTogZnVuY3Rpb24gKGJ1ZmZlcjogVWludDhBcnJheSk6IEFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJ1ZmZlcixcbiAgICB9XG4gIH0sXG4gIGZyb21TdHJlYW06IGFzeW5jIGZ1bmN0aW9uIChpbnA6IEFzeW5jSXRlcmFibGU8VWludDhBcnJheT4pOiBQcm9taXNlPEFueT4ge1xuICAgIGNvbnN0IHN0cmVhbSA9IChhc3luYyBmdW5jdGlvbiogKCkge1xuICAgICAgeWllbGQqIGlucFxuICAgIH0pKClcbiAgICByZXR1cm4geyBzdHJlYW0gfVxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgU3RyaW5nQ29udmVydG9yOiBDb252ZXJ0b3I8c3RyaW5nPiA9IHtcbiAgZnJvbShidWZmZXIpIHtcbiAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGUoYnVmZmVyKVxuICB9LFxuICBhc3luYyBmcm9tU3RyZWFtKHN0cmVhbSkge1xuICAgIGNvbnN0IGNodW5rczogVWludDhBcnJheVtdID0gW11cbiAgICBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIHN0cmVhbSkge1xuICAgICAgY2h1bmtzLnB1c2goY2h1bmspXG4gICAgfVxuICAgIHJldHVybiBkZWNvZGVyLmRlY29kZShCdWZmZXIuY29uY2F0KGNodW5rcykpXG4gIH0sXG59XG5leHBvcnQgY29uc3QgU3RyZWFtQ29udmVydG9yOiBDb252ZXJ0b3I8QXN5bmNHZW5lcmF0b3I8VWludDhBcnJheT4+ID0ge1xuICBmcm9tKGJ1ZmZlcikge1xuICAgIHJldHVybiAoYXN5bmMgZnVuY3Rpb24qICgpIHtcbiAgICAgIHlpZWxkIGJ1ZmZlclxuICAgIH0pKClcbiAgfSxcblxuICBhc3luYyBmcm9tU3RyZWFtKHN0cmVhbSkge1xuICAgIHJldHVybiAoYXN5bmMgZnVuY3Rpb24qICgpIHtcbiAgICAgIHlpZWxkKiBzdHJlYW1cbiAgICB9KSgpXG4gIH0sXG59XG5leHBvcnQgY29uc3QgTm9Db252ZXJ0b3I6IENvbnZlcnRvcjxVaW50OEFycmF5PiA9IHtcbiAgZnJvbShidWZmZXIpIHtcbiAgICByZXR1cm4gYnVmZmVyXG4gIH0sXG4gIGFzeW5jIGZyb21TdHJlYW0oc3RyZWFtKSB7XG4gICAgY29uc3QgY2h1bmtzOiBVaW50OEFycmF5W10gPSBbXVxuICAgIGZvciBhd2FpdCAoY29uc3QgY2h1bmsgb2Ygc3RyZWFtKSB7XG4gICAgICBjaHVua3MucHVzaChjaHVuaylcbiAgICB9XG4gICAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoY2h1bmtzKVxuICB9LFxufVxuIl19
package/lib/index.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ export * from './client.js';
2
+ export * from './writer.js';
3
+ export * from './reader.js';
4
+ export * from './processor.js';
package/lib/index.js ADDED
@@ -0,0 +1,5 @@
1
+ export * from './client.js';
2
+ export * from './writer.js';
3
+ export * from './reader.js';
4
+ export * from './processor.js';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxhQUFhLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NsaWVudCdcbmV4cG9ydCAqIGZyb20gJy4vd3JpdGVyJ1xuZXhwb3J0ICogZnJvbSAnLi9yZWFkZXInXG5leHBvcnQgKiBmcm9tICcuL3Byb2Nlc3NvcidcbiJdfQ==
@@ -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,134 @@
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/ontology#', (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
+ return k + ': ' + x;
121
+ })));
122
+ expandArgs(args[key], cont, logger);
123
+ }
124
+ }
125
+ export async function parse_jsonld(args, logger, items) {
126
+ const promises = [];
127
+ logger.info(args);
128
+ const cont = await jsonldToQuads(JSON.parse(args));
129
+ const out = JSON.parse(args, (k, v) => revive(k, v, logger, promises, items));
130
+ await Promise.all(promises);
131
+ expandArgs(out, cont, logger);
132
+ return out;
133
+ }
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbmxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2pzb25sZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZUFBZSxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUV6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDdEQsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFFMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLElBQUksQ0FBQTtBQVM5QixNQUFNLElBQUksR0FBRyx5QkFBeUIsQ0FDcEMscUNBQXFDLEVBQ3JDLEtBQUssRUFDTCxNQUFNLEVBQ04sVUFBVSxFQUNWLFNBQVMsRUFDVCxjQUFjLEVBQ2QsYUFBYSxFQUNiLFFBQVEsRUFDUixZQUFZLEVBQ1osVUFBVSxDQUNYLENBQUE7QUFHRCxNQUFNLElBQUksR0FBRyxlQUFlLENBQzFCLHdDQUF3QyxFQUN4QyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUNSLFFBQVEsRUFDUixRQUFRLENBQ1QsQ0FBQTtBQUVELFNBQVMsZUFBZSxDQUFDLEdBQVk7SUFDbkMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzVDLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUE7QUFDakQsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLEtBQWM7SUFDaEMsTUFBTSxLQUFLLEdBQVcsRUFBRSxDQUFBO0lBQ3hCLE1BQU0sTUFBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUE7SUFDakMsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQW9CLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQzFELE1BQU07U0FDSCxFQUFFLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQ3RDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMxQixFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDaEIsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNmLENBQUMsQ0FBQyxDQUNMLENBQUE7SUFFRCxJQUFJLEtBQUssWUFBWSxNQUFNLElBQUksT0FBTyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ2hELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3ZCLENBQUM7SUFDRCxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtJQUNuQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUE7SUFDWixPQUFPLE9BQU8sQ0FBQTtBQUNoQixDQUFDO0FBRUQsS0FBSyxVQUFVLFNBQVMsQ0FBQyxLQUFjO0lBQ3JDLE1BQU0sRUFBRSxHQUFHLENBQ1QsTUFBTSxVQUFVLENBQUM7UUFDZixLQUFLLEVBQUUsOEJBQThCO1FBQ3JDLGlDQUFpQyxFQUFFLEtBQUs7S0FDekMsQ0FBQyxDQUNILENBQUMsS0FBSyxDQUFBO0lBRVAsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksU0FBUyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7U0FDaEUsR0FBRyxFQUFFO1NBQ0wsSUFBSSxDQUFDLFNBQVMsQ0FBQztTQUNmLE9BQU8sQ0FBQztRQUNQLEtBQUssRUFBRSxFQUFFO1FBQ1QsRUFBRSxFQUFFLElBQUksU0FBUyxDQUFDLDhCQUE4QixDQUFDO0tBQ2xELENBQUMsQ0FBQTtJQUNKLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUE7QUFDeEIsQ0FBQztBQUdELEtBQUssVUFBVSxhQUFhLENBQUMsS0FBYztJQUN6QyxNQUFNLEVBQUUsR0FBRyxDQUNULE1BQU0sVUFBVSxDQUFDO1FBQ2YsS0FBSyxFQUFFLDhCQUE4QjtRQUNyQyxpQ0FBaUMsRUFBRSxLQUFLO0tBQ3pDLENBQUMsQ0FDSCxDQUFDLEtBQUssQ0FBQTtJQUVQLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQ3RCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDSixDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLFNBQVMsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1FBQ3BFLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksU0FBUyxDQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FDbEUsQ0FBQTtJQUNELElBQUksR0FBRyxHQUFHLENBQUM7UUFBRSxNQUFNLG9CQUFvQixDQUFBO0lBQ3ZDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUE7SUFFekIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFFakIsT0FBTztRQUNMLEtBQUssRUFBRSxFQUFFO1FBQ1QsRUFBRTtLQUNILENBQUE7QUFDSCxDQUFDO0FBR0QsU0FBUyxNQUFNLENBQ2IsSUFBWSxFQUNaLEtBQVUsRUFDVixNQUFjLEVBQ2QsUUFBNEIsRUFDNUIsV0FBd0I7SUFFeEIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM5QixNQUFNLEtBQUssR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQ25ELE1BQU0sR0FBRyxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBO1FBRXhELElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNoQyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQzNDLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFBO1lBQy9CLENBQUM7WUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLGNBQWMsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQTtZQUNsRSxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUNyQyxPQUFPLE1BQU0sQ0FBQTtRQUNmLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDaEMsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUMzQyxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQTtZQUMvQixDQUFDO1lBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxjQUFjLENBQy9CLEdBQUcsRUFDSCxXQUFXLENBQUMsTUFBTSxFQUNsQixXQUFXLENBQUMsS0FBSyxFQUNqQixNQUFNLENBQ1AsQ0FBQTtZQUNELFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ3JDLE9BQU8sTUFBTSxDQUFBO1FBQ2YsQ0FBQztRQUVELElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM3QixPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUMxQixDQUFDO1FBRUQsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzlCLE9BQU8sU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQ3ZDLElBQUksQ0FBQyxZQUFZLE9BQU8sRUFBRSxDQUFDO1lBQ3pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUE7WUFDNUIsUUFBUSxDQUFDLElBQUksQ0FDWCxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ1gsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQTtnQkFDakMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUE7WUFDcEIsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtRQUNILENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQTtJQUVGLE9BQU8sS0FBSyxDQUFBO0FBQ2QsQ0FBQztBQUtELFNBQVMsVUFBVSxDQUFDLElBQVMsRUFBRSxJQUFVLEVBQUUsTUFBYztJQUN2RCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDaEMsSUFBSSxDQUFDLE9BQU87UUFBRSxPQUFNO0lBRXBCLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3BDLElBQUksR0FBRyxJQUFJLFVBQVU7WUFBRSxTQUFRO1FBQy9CLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUMzQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixNQUFNLENBQUMsS0FBSyxDQUFDLDZCQUE2QixHQUFHLEdBQUcsQ0FBQyxDQUFBO1lBQ2pELFNBQVE7UUFDVixDQUFDO1FBRUQsTUFBTSxDQUFDLEtBQUssQ0FDViwwQkFBMEI7WUFDeEIsR0FBRztZQUNILEdBQUc7WUFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztZQUN0QixJQUFJO1lBQ0osSUFBSSxDQUFDLFNBQVMsQ0FDWixNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3ZDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQTtnQkFDaEIsSUFBSSxDQUFDO29CQUNILENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFBO2dCQUN2QixDQUFDO2dCQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFDO2dCQUVkLE9BQU8sQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUE7WUFDckIsQ0FBQyxDQUFDLENBQ0gsQ0FDSixDQUFBO1FBRUQsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDckMsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLFlBQVksQ0FDaEMsSUFBWSxFQUNaLE1BQWMsRUFDZCxLQUFrQjtJQUVsQixNQUFNLFFBQVEsR0FBdUIsRUFBRSxDQUFBO0lBQ3ZDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDakIsTUFBTSxJQUFJLEdBQUcsTUFBTSxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFBO0lBRTdFLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUUzQixVQUFVLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUM3QixPQUFPLEdBQUcsQ0FBQTtBQUNaLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcmNoZXN0cmF0b3JNZXNzYWdlLCBSdW5uZXJDbGllbnQgfSBmcm9tICdAcmRmYy9wcm90bydcbmltcG9ydCB7IGNyZWF0ZU5hbWVzcGFjZSwgY3JlYXRlVXJpQW5kVGVybU5hbWVzcGFjZSB9IGZyb20gJ0B0cmVlY2cvdHlwZXMnXG5pbXBvcnQgeyBSZWFkZXJJbnN0YW5jZSB9IGZyb20gJy4vcmVhZGVyJ1xuaW1wb3J0IHsgV3JpdGVySW5zdGFuY2UgfSBmcm9tICcuL3dyaXRlcidcbmltcG9ydCB7IExvZ2dlciB9IGZyb20gJ3dpbnN0b24nXG5pbXBvcnQgeyBKc29uTGRQYXJzZXIgfSBmcm9tICdqc29ubGQtc3RyZWFtaW5nLXBhcnNlcidcbmltcG9ydCB7IHByZWQsIFNoYWNsUGF0aCB9IGZyb20gJ3JkZi1sZW5zJ1xuaW1wb3J0IHsgUXVhZCwgVGVybSB9IGZyb20gJ0ByZGZqcy90eXBlcydcbmltcG9ydCB7IE5hbWVkTm9kZSB9IGZyb20gJ24zJ1xuXG5leHBvcnQgdHlwZSBSdW5uZXJJdGVtcyA9IHtcbiAgcmVhZGVyczogeyBbdXJpOiBzdHJpbmddOiBSZWFkZXJJbnN0YW5jZVtdIH1cbiAgd3JpdGVyczogeyBbdXJpOiBzdHJpbmddOiBXcml0ZXJJbnN0YW5jZVtdIH1cbiAgY2xpZW50OiBSdW5uZXJDbGllbnRcbiAgd3JpdGU6IFdyaXRhYmxlXG59XG5cbmNvbnN0IFJERkwgPSBjcmVhdGVVcmlBbmRUZXJtTmFtZXNwYWNlKFxuICAnaHR0cHM6Ly93M2lkLm9yZy9yZGYtbGVucy9vbnRvbG9neSMnLFxuICAnQ0JEJyxcbiAgJ1BhdGgnLFxuICAnUGF0aExlbnMnLFxuICAnQ29udGV4dCcsXG4gICdUeXBlZEV4dHJhY3QnLFxuICAnRW52VmFyaWFibGUnLFxuICAnZW52S2V5JyxcbiAgJ2VudkRlZmF1bHQnLFxuICAnZGF0YXR5cGUnLFxuKVxuXG50eXBlIFdyaXRhYmxlID0gKG1zZzogT3JjaGVzdHJhdG9yTWVzc2FnZSkgPT4gUHJvbWlzZTx1bmtub3duPlxuY29uc3QgUkRGQyA9IGNyZWF0ZU5hbWVzcGFjZShcbiAgJ2h0dHBzOi8vdzNpZC5vcmcvcmRmLWNvbm5lY3Qvb250b2xvZ3kjJyxcbiAgKHgpID0+IHgsXG4gICdSZWFkZXInLFxuICAnV3JpdGVyJyxcbilcblxuZnVuY3Rpb24gYXNfc3RyaW5nX2FycmF5KG9iajogdW5rbm93bik6IHN0cmluZ1tdIHtcbiAgY29uc3Qgb3V0ID0gQXJyYXkuaXNBcnJheShvYmopID8gb2JqIDogW29ial1cbiAgcmV0dXJuIG91dC5maWx0ZXIoKHgpID0+IHR5cGVvZiB4ID09PSAnc3RyaW5nJylcbn1cblxuZnVuY3Rpb24gY2JkVG9RdWFkcyh2YWx1ZTogdW5rbm93bikge1xuICBjb25zdCBxdWFkczogUXVhZFtdID0gW11cbiAgY29uc3QgcGFyc2VyID0gbmV3IEpzb25MZFBhcnNlcigpXG4gIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZTx7IHZhbHVlOiBRdWFkW10gfT4oKHJlcywgcmVqKSA9PlxuICAgIHBhcnNlclxuICAgICAgLm9uKCdlbmQnLCAoKSA9PiByZXMoeyB2YWx1ZTogcXVhZHMgfSkpXG4gICAgICAub24oJ2Vycm9yJywgKGUpID0+IHJlaihlKSlcbiAgICAgIC5vbignZGF0YScsIChxKSA9PiB7XG4gICAgICAgIHF1YWRzLnB1c2gocSlcbiAgICAgIH0pLFxuICApXG5cbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0ICYmICdAdHlwZScgaW4gdmFsdWUpIHtcbiAgICBkZWxldGUgdmFsdWVbJ0B0eXBlJ11cbiAgfVxuICBwYXJzZXIud3JpdGUoSlNPTi5zdHJpbmdpZnkodmFsdWUpKVxuICBwYXJzZXIuZW5kKClcbiAgcmV0dXJuIHByb21pc2Vcbn1cblxuYXN5bmMgZnVuY3Rpb24gY2JkVG9QYXRoKHZhbHVlOiB1bmtub3duKTogUHJvbWlzZTx7IHZhbHVlOiB1bmtub3duIH0+IHtcbiAgY29uc3QgcXMgPSAoXG4gICAgYXdhaXQgY2JkVG9RdWFkcyh7XG4gICAgICAnQGlkJzogJ2h0dHA6Ly9leGFtcGxlLmNvbS9ucyNtZTEyMzQnLFxuICAgICAgJ2h0dHA6Ly9leGFtcGxlLmNvbS9ucyNpbm5lclByZWQnOiB2YWx1ZSxcbiAgICB9KVxuICApLnZhbHVlXG5cbiAgY29uc3QgcGF0aCA9IHByZWQobmV3IE5hbWVkTm9kZSgnaHR0cDovL2V4YW1wbGUuY29tL25zI2lubmVyUHJlZCcpKVxuICAgIC5vbmUoKVxuICAgIC50aGVuKFNoYWNsUGF0aClcbiAgICAuZXhlY3V0ZSh7XG4gICAgICBxdWFkczogcXMsXG4gICAgICBpZDogbmV3IE5hbWVkTm9kZSgnaHR0cDovL2V4YW1wbGUuY29tL25zI21lMTIzNCcpLFxuICAgIH0pXG4gIHJldHVybiB7IHZhbHVlOiBwYXRoIH1cbn1cblxudHlwZSBDb250ID0geyBxdWFkczogUXVhZFtdOyBpZDogVGVybSB9XG5hc3luYyBmdW5jdGlvbiBqc29ubGRUb1F1YWRzKHZhbHVlOiB1bmtub3duKTogUHJvbWlzZTxDb250PiB7XG4gIGNvbnN0IHFzID0gKFxuICAgIGF3YWl0IGNiZFRvUXVhZHMoe1xuICAgICAgJ0BpZCc6ICdodHRwOi8vZXhhbXBsZS5jb20vbnMjbWUxMjM0JyxcbiAgICAgICdodHRwOi8vZXhhbXBsZS5jb20vbnMjaW5uZXJQcmVkJzogdmFsdWUsXG4gICAgfSlcbiAgKS52YWx1ZVxuXG4gIGNvbnN0IGlkeCA9IHFzLmZpbmRJbmRleChcbiAgICAoeCkgPT5cbiAgICAgIHgucHJlZGljYXRlLmVxdWFscyhuZXcgTmFtZWROb2RlKCdodHRwOi8vZXhhbXBsZS5jb20vbnMjaW5uZXJQcmVkJykpICYmXG4gICAgICB4LnN1YmplY3QuZXF1YWxzKG5ldyBOYW1lZE5vZGUoJ2h0dHA6Ly9leGFtcGxlLmNvbS9ucyNtZTEyMzQnKSksXG4gIClcbiAgaWYgKGlkeCA8IDApIHRocm93ICdUaGlzIGNhbm5vdCBoYXBwZW4nXG4gIGNvbnN0IGlkID0gcXNbaWR4XS5vYmplY3RcblxuICBxcy5zcGxpY2UoaWR4LCAxKVxuXG4gIHJldHVybiB7XG4gICAgcXVhZHM6IHFzLFxuICAgIGlkLFxuICB9XG59XG5cbi8qIGVzbGludC1kaXNhYmxlICBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5mdW5jdGlvbiByZXZpdmUoXG4gIF9rZXk6IHN0cmluZyxcbiAgdmFsdWU6IGFueSxcbiAgbG9nZ2VyOiBMb2dnZXIsXG4gIHByb21pc2VzOiBQcm9taXNlPHVua25vd24+W10sXG4gIHJ1bm5lckl0ZW1zOiBSdW5uZXJJdGVtcyxcbik6IGFueSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgY29uc3QgdHlwZXMgPSBhc19zdHJpbmdfYXJyYXkodmFsdWVbJ0B0eXBlJ10gfHwgW10pXG4gICAgY29uc3QgaWRzID0gYXNfc3RyaW5nX2FycmF5KHZhbHVlWydAaWQnXSB8fCBbXSlbMF0gfHwgJydcblxuICAgIGlmICh0eXBlcy5pbmNsdWRlcyhSREZDLlJlYWRlcikpIHtcbiAgICAgIGlmIChydW5uZXJJdGVtcy5yZWFkZXJzW2lkc10gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBydW5uZXJJdGVtcy5yZWFkZXJzW2lkc10gPSBbXVxuICAgICAgfVxuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IFJlYWRlckluc3RhbmNlKGlkcywgcnVubmVySXRlbXMuY2xpZW50LCBsb2dnZXIpXG4gICAgICBydW5uZXJJdGVtcy5yZWFkZXJzW2lkc10ucHVzaChyZWFkZXIpXG4gICAgICByZXR1cm4gcmVhZGVyXG4gICAgfVxuXG4gICAgaWYgKHR5cGVzLmluY2x1ZGVzKFJERkMuV3JpdGVyKSkge1xuICAgICAgaWYgKHJ1bm5lckl0ZW1zLndyaXRlcnNbaWRzXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJ1bm5lckl0ZW1zLndyaXRlcnNbaWRzXSA9IFtdXG4gICAgICB9XG4gICAgICBjb25zdCB3cml0ZXIgPSBuZXcgV3JpdGVySW5zdGFuY2UoXG4gICAgICAgIGlkcyxcbiAgICAgICAgcnVubmVySXRlbXMuY2xpZW50LFxuICAgICAgICBydW5uZXJJdGVtcy53cml0ZSxcbiAgICAgICAgbG9nZ2VyLFxuICAgICAgKVxuICAgICAgcnVubmVySXRlbXMud3JpdGVyc1tpZHNdLnB1c2god3JpdGVyKVxuICAgICAgcmV0dXJuIHdyaXRlclxuICAgIH1cblxuICAgIGlmICh0eXBlcy5pbmNsdWRlcyhSREZMLkNCRCkpIHtcbiAgICAgIHJldHVybiBjYmRUb1F1YWRzKHZhbHVlKVxuICAgIH1cblxuICAgIGlmICh0eXBlcy5pbmNsdWRlcyhSREZMLlBhdGgpKSB7XG4gICAgICByZXR1cm4gY2JkVG9QYXRoKHZhbHVlKVxuICAgIH1cbiAgfVxuXG4gIE9iamVjdC5lbnRyaWVzKHZhbHVlKS5mb3JFYWNoKChbaywgdl0pID0+IHtcbiAgICBpZiAodiBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgIGxvZ2dlci5pbmZvKCdGb3VuZCBwcm9taXNlJylcbiAgICAgIHByb21pc2VzLnB1c2goXG4gICAgICAgIHYudGhlbigoeCkgPT4ge1xuICAgICAgICAgIGxvZ2dlci5pbmZvKCdTZXR0aW5nIGZpZWxkICcgKyBrKVxuICAgICAgICAgIHZhbHVlW2tdID0geC52YWx1ZVxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIHZhbHVlXG59XG5cbnR5cGUgQXJnID0ge1xuICBbaWQ6IHN0cmluZ106IGFueVxufVxuZnVuY3Rpb24gZXhwYW5kQXJncyhhcmdzOiBBcmcsIGNvbnQ6IENvbnQsIGxvZ2dlcjogTG9nZ2VyKSB7XG4gIGNvbnN0IGNvbnRleHQgPSBhcmdzWydAY29udGV4dCddXG4gIGlmICghY29udGV4dCkgcmV0dXJuXG5cbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoYXJncykpIHtcbiAgICBpZiAoa2V5ID09ICdAY29udGV4dCcpIGNvbnRpbnVlXG4gICAgY29uc3QgY3R4T2JqID0gY29udGV4dFtrZXldXG4gICAgaWYgKCFjdHhPYmopIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhcIkRpZG4ndCBmaW5kIGN0eCB0aGluZ3MgZm9yIFwiICsga2V5KVxuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBsb2dnZXIuZGVidWcoXG4gICAgICAnRGlkIGZpbmQgY3R4IHRoaW5ncyBmb3IgJyArXG4gICAgICAgIGtleSArXG4gICAgICAgICcgJyArXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KGN0eE9iaikgK1xuICAgICAgICAnOiAnICtcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgT2JqZWN0LmVudHJpZXMoYXJnc1trZXldKS5tYXAoKFtrLCB2XSkgPT4ge1xuICAgICAgICAgICAgbGV0IHggPSAnb2JqZWN0J1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgeCA9IEpTT04uc3RyaW5naWZ5KHYpXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuXG4gICAgICAgICAgICByZXR1cm4gayArICc6ICcgKyB4XG4gICAgICAgICAgfSksXG4gICAgICAgICksXG4gICAgKVxuXG4gICAgZXhwYW5kQXJncyhhcmdzW2tleV0sIGNvbnQsIGxvZ2dlcilcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGFyc2VfanNvbmxkKFxuICBhcmdzOiBzdHJpbmcsXG4gIGxvZ2dlcjogTG9nZ2VyLFxuICBpdGVtczogUnVubmVySXRlbXMsXG4pOiBQcm9taXNlPHVua25vd24+IHtcbiAgY29uc3QgcHJvbWlzZXM6IFByb21pc2U8dW5rbm93bj5bXSA9IFtdXG4gIGxvZ2dlci5pbmZvKGFyZ3MpXG4gIGNvbnN0IGNvbnQgPSBhd2FpdCBqc29ubGRUb1F1YWRzKEpTT04ucGFyc2UoYXJncykpXG4gIGNvbnN0IG91dCA9IEpTT04ucGFyc2UoYXJncywgKGssIHYpID0+IHJldml2ZShrLCB2LCBsb2dnZXIsIHByb21pc2VzLCBpdGVtcykpXG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpXG5cbiAgZXhwYW5kQXJncyhvdXQsIGNvbnQsIGxvZ2dlcilcbiAgcmV0dXJuIG91dFxufVxuIl19
@@ -0,0 +1,15 @@
1
+ import winston from 'winston';
2
+ import Transport from 'winston-transport';
3
+ import * as grpc from '@grpc/grpc-js';
4
+ import { LogMessage } from '@rdfc/proto';
5
+ export declare class RpcTransport extends Transport {
6
+ private readonly stream;
7
+ private readonly entities;
8
+ private readonly aliases;
9
+ constructor(opts: {
10
+ stream: grpc.ClientWritableStream<LogMessage>;
11
+ entities: string[];
12
+ aliases?: string[];
13
+ });
14
+ log(info: winston.LogEntry, callback: () => void): void;
15
+ }
package/lib/logger.js ADDED
@@ -0,0 +1,27 @@
1
+ import Transport from 'winston-transport';
2
+ export class RpcTransport extends Transport {
3
+ stream;
4
+ entities;
5
+ aliases;
6
+ constructor(opts) {
7
+ super({ level: 'debug' });
8
+ this.stream = opts.stream;
9
+ this.entities = opts.entities;
10
+ this.aliases = opts.aliases || [];
11
+ }
12
+ log(info, callback) {
13
+ if (!this.stream.closed) {
14
+ this.stream.write({
15
+ msg: info.message,
16
+ level: info.level,
17
+ entities: this.entities,
18
+ aliases: this.aliases,
19
+ }, callback);
20
+ }
21
+ else {
22
+ console.log('Output stream closed');
23
+ callback();
24
+ }
25
+ }
26
+ }
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLFNBQVMsTUFBTSxtQkFBbUIsQ0FBQTtBQUl6QyxNQUFNLE9BQU8sWUFBYSxTQUFRLFNBQVM7SUFDeEIsTUFBTSxDQUF1QztJQUM3QyxRQUFRLENBQVU7SUFDbEIsT0FBTyxDQUFVO0lBQ2xDLFlBQVksSUFJWDtRQUNDLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFBO1FBRXpCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQTtRQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUE7UUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQTtJQUNuQyxDQUFDO0lBRUQsR0FBRyxDQUFDLElBQXNCLEVBQUUsUUFBb0I7UUFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ2Y7Z0JBQ0UsR0FBRyxFQUFFLElBQUksQ0FBQyxPQUFPO2dCQUNqQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0JBQ2pCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtnQkFDdkIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO2FBQ3RCLEVBQ0QsUUFBUSxDQUNULENBQUE7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtZQUNuQyxRQUFRLEVBQUUsQ0FBQTtRQUNaLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgd2luc3RvbiBmcm9tICd3aW5zdG9uJ1xuaW1wb3J0IFRyYW5zcG9ydCBmcm9tICd3aW5zdG9uLXRyYW5zcG9ydCdcblxuaW1wb3J0ICogYXMgZ3JwYyBmcm9tICdAZ3JwYy9ncnBjLWpzJ1xuaW1wb3J0IHsgTG9nTWVzc2FnZSB9IGZyb20gJ0ByZGZjL3Byb3RvJ1xuZXhwb3J0IGNsYXNzIFJwY1RyYW5zcG9ydCBleHRlbmRzIFRyYW5zcG9ydCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3RyZWFtOiBncnBjLkNsaWVudFdyaXRhYmxlU3RyZWFtPExvZ01lc3NhZ2U+XG4gIHByaXZhdGUgcmVhZG9ubHkgZW50aXRpZXM6IHN0cmluZ1tdXG4gIHByaXZhdGUgcmVhZG9ubHkgYWxpYXNlczogc3RyaW5nW11cbiAgY29uc3RydWN0b3Iob3B0czoge1xuICAgIHN0cmVhbTogZ3JwYy5DbGllbnRXcml0YWJsZVN0cmVhbTxMb2dNZXNzYWdlPlxuICAgIGVudGl0aWVzOiBzdHJpbmdbXVxuICAgIGFsaWFzZXM/OiBzdHJpbmdbXVxuICB9KSB7XG4gICAgc3VwZXIoeyBsZXZlbDogJ2RlYnVnJyB9KVxuXG4gICAgdGhpcy5zdHJlYW0gPSBvcHRzLnN0cmVhbVxuICAgIHRoaXMuZW50aXRpZXMgPSBvcHRzLmVudGl0aWVzXG4gICAgdGhpcy5hbGlhc2VzID0gb3B0cy5hbGlhc2VzIHx8IFtdXG4gIH1cblxuICBsb2coaW5mbzogd2luc3Rvbi5Mb2dFbnRyeSwgY2FsbGJhY2s6ICgpID0+IHZvaWQpIHtcbiAgICBpZiAoIXRoaXMuc3RyZWFtLmNsb3NlZCkge1xuICAgICAgdGhpcy5zdHJlYW0ud3JpdGUoXG4gICAgICAgIHtcbiAgICAgICAgICBtc2c6IGluZm8ubWVzc2FnZSxcbiAgICAgICAgICBsZXZlbDogaW5mby5sZXZlbCxcbiAgICAgICAgICBlbnRpdGllczogdGhpcy5lbnRpdGllcyxcbiAgICAgICAgICBhbGlhc2VzOiB0aGlzLmFsaWFzZXMsXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGxiYWNrLFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZygnT3V0cHV0IHN0cmVhbSBjbG9zZWQnKVxuICAgICAgY2FsbGJhY2soKVxuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,19 @@
1
+ import { Logger } from 'winston';
2
+ import { Reader } from './reader.js';
3
+ import { Writer } from './writer.js';
4
+ export type Primitive = string | number | Writer | Reader | ProcessorArgs;
5
+ export type ProcessorArgs = {
6
+ [id: string]: Primitive | Primitive[];
7
+ };
8
+ export type BGetter<T> = {
9
+ [K in keyof T]: T[K];
10
+ };
11
+ export declare abstract class Processor<T> {
12
+ protected readonly args: T;
13
+ protected readonly logger: Logger;
14
+ constructor(args: T, logger: Logger);
15
+ protected get<K extends keyof T>(key: K): T[K];
16
+ abstract init(this: T & this): Promise<void>;
17
+ abstract transform(this: T & this): Promise<void>;
18
+ abstract produce(this: T & this): Promise<void>;
19
+ }
@@ -0,0 +1,13 @@
1
+ export class Processor {
2
+ args;
3
+ logger;
4
+ constructor(args, logger) {
5
+ Object.assign(this, args);
6
+ this.args = args;
7
+ this.logger = logger;
8
+ }
9
+ get(key) {
10
+ return this.args[key];
11
+ }
12
+ }
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Byb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFhQSxNQUFNLE9BQWdCLFNBQVM7SUFDVixJQUFJLENBQUc7SUFDUCxNQUFNLENBQVE7SUFFakMsWUFBWSxJQUFPLEVBQUUsTUFBYztRQUNqQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUN6QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtRQUNoQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtJQUN0QixDQUFDO0lBRVMsR0FBRyxDQUFvQixHQUFNO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUN2QixDQUFDO0NBYUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2dnZXIgfSBmcm9tICd3aW5zdG9uJ1xuaW1wb3J0IHsgUmVhZGVyIH0gZnJvbSAnLi9yZWFkZXInXG5pbXBvcnQgeyBXcml0ZXIgfSBmcm9tICcuL3dyaXRlcidcblxuZXhwb3J0IHR5cGUgUHJpbWl0aXZlID0gc3RyaW5nIHwgbnVtYmVyIHwgV3JpdGVyIHwgUmVhZGVyIHwgUHJvY2Vzc29yQXJnc1xuXG5leHBvcnQgdHlwZSBQcm9jZXNzb3JBcmdzID0ge1xuICBbaWQ6IHN0cmluZ106IFByaW1pdGl2ZSB8IFByaW1pdGl2ZVtdXG59XG5leHBvcnQgdHlwZSBCR2V0dGVyPFQ+ID0ge1xuICBbSyBpbiBrZXlvZiBUXTogVFtLXVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUHJvY2Vzc29yPFQ+IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFyZ3M6IFQgLy8gU3RvcmUgYXJncyBzYWZlbHlcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGxvZ2dlcjogTG9nZ2VyXG5cbiAgY29uc3RydWN0b3IoYXJnczogVCwgbG9nZ2VyOiBMb2dnZXIpIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIGFyZ3MpXG4gICAgdGhpcy5hcmdzID0gYXJnc1xuICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyXG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0PEsgZXh0ZW5kcyBrZXlvZiBUPihrZXk6IEspOiBUW0tdIHtcbiAgICByZXR1cm4gdGhpcy5hcmdzW2tleV1cbiAgfVxuXG4gIC8vIFRoaXMgaXMgdGhlIGZpcnN0IGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIChhbmQgYXdhaXRlZCksIHdoZW4gY3JlYXRpbmcgYSBwcm9jZXNzb3JcbiAgLy8gVGhpcyBpcyB0aGUgcGVyZmVjdCBsb2NhdGlvbiB0byBzdGFydCB0aGluZ3MgbGlrZSBkYXRhYmFzZSBjb25uZWN0aW9uc1xuICBhYnN0cmFjdCBpbml0KHRoaXM6IFQgJiB0aGlzKTogUHJvbWlzZTx2b2lkPlxuXG4gIC8vIEZ1bmN0aW9uIHRvIHN0YXJ0IHJlYWRpbmcgY2hhbm5lbHNcbiAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZm9yIGVhY2ggcHJvY2Vzc29yIGJlZm9yZSBfcHJvZHVjZV8gaXMgY2FsbGVkXG4gIGFic3RyYWN0IHRyYW5zZm9ybSh0aGlzOiBUICYgdGhpcyk6IFByb21pc2U8dm9pZD5cblxuICAvLyBGdW5jdGlvbiB0byBzdGFydCB0aGUgcHJvZHVjdGlvbiBvZiBkYXRhLCBzdGFydGluZyB0aGUgcGlwZWxpbmVcbiAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYWZ0ZXIgYWxsIHByb2Nlc3NvcnMgYXJlIGNvbXBsZXRlbHkgc2V0dXBcbiAgYWJzdHJhY3QgcHJvZHVjZSh0aGlzOiBUICYgdGhpcyk6IFByb21pc2U8dm9pZD5cbn1cbiJdfQ==
@@ -0,0 +1,29 @@
1
+ import { Message, RunnerClient, StreamMessage } from '@rdfc/proto';
2
+ import winston from 'winston';
3
+ export type Any = {
4
+ string: string;
5
+ } | {
6
+ stream: AsyncGenerator<Uint8Array>;
7
+ } | {
8
+ buffer: Uint8Array;
9
+ };
10
+ export interface Reader {
11
+ strings(): AsyncIterable<string>;
12
+ streams(): AsyncIterable<AsyncGenerator<Uint8Array>>;
13
+ buffers(): AsyncIterable<Uint8Array>;
14
+ anys(): AsyncIterable<Any>;
15
+ }
16
+ export declare class ReaderInstance implements Reader {
17
+ private client;
18
+ private uri;
19
+ private logger;
20
+ private iterators;
21
+ constructor(uri: string, client: RunnerClient, logger: winston.Logger);
22
+ anys(): AsyncIterable<Any>;
23
+ strings(): AsyncIterable<string>;
24
+ buffers(): AsyncIterable<Uint8Array>;
25
+ streams(): AsyncIterable<AsyncGenerator<Uint8Array>>;
26
+ handleMsg(msg: Message): void;
27
+ close(): void;
28
+ handleStreamingMessage(msg: StreamMessage): void;
29
+ }
package/lib/reader.js ADDED
@@ -0,0 +1,110 @@
1
+ import { AnyConvertor, NoConvertor, StreamConvertor, StringConvertor, } from './convertor.js';
2
+ class MyIter {
3
+ convertor;
4
+ queue = [];
5
+ resolveNext = null;
6
+ constructor(convertor) {
7
+ this.convertor = convertor;
8
+ }
9
+ push(buffer) {
10
+ const item = this.convertor.from(buffer);
11
+ if (this.resolveNext) {
12
+ this.resolveNext(item);
13
+ this.resolveNext = null;
14
+ }
15
+ else {
16
+ this.queue.push(item);
17
+ }
18
+ }
19
+ close() {
20
+ if (this.resolveNext) {
21
+ this.resolveNext(undefined);
22
+ this.resolveNext = null;
23
+ }
24
+ else {
25
+ this.queue.push(undefined);
26
+ }
27
+ }
28
+ async pushStream(chunks) {
29
+ const stream = (async function* (stream) {
30
+ for await (const c of stream) {
31
+ const chunk = c;
32
+ yield chunk.data;
33
+ }
34
+ })(chunks);
35
+ const item = await this.convertor.fromStream(stream);
36
+ if (this.resolveNext) {
37
+ this.resolveNext(item);
38
+ this.resolveNext = null;
39
+ }
40
+ else {
41
+ this.queue.push(item);
42
+ }
43
+ }
44
+ async *[Symbol.asyncIterator]() {
45
+ while (true) {
46
+ if (this.queue.length > 0) {
47
+ const item = this.queue.shift();
48
+ if (item === undefined)
49
+ break;
50
+ yield item;
51
+ }
52
+ else {
53
+ const item = await new Promise((resolve) => (this.resolveNext = resolve));
54
+ if (item === undefined)
55
+ break;
56
+ yield item;
57
+ }
58
+ }
59
+ }
60
+ }
61
+ export class ReaderInstance {
62
+ client;
63
+ uri;
64
+ logger;
65
+ iterators = [];
66
+ constructor(uri, client, logger) {
67
+ this.uri = uri;
68
+ this.client = client;
69
+ this.logger = logger;
70
+ }
71
+ anys() {
72
+ const iter = new MyIter(AnyConvertor);
73
+ this.iterators.push(iter);
74
+ return iter;
75
+ }
76
+ strings() {
77
+ const iter = new MyIter(StringConvertor);
78
+ this.iterators.push(iter);
79
+ return iter;
80
+ }
81
+ buffers() {
82
+ const iter = new MyIter(NoConvertor);
83
+ this.iterators.push(iter);
84
+ return iter;
85
+ }
86
+ streams() {
87
+ const iter = new MyIter(StreamConvertor);
88
+ this.iterators.push(iter);
89
+ return iter;
90
+ }
91
+ handleMsg(msg) {
92
+ this.logger.debug(`${this.uri} handling message`);
93
+ for (const iter of this.iterators) {
94
+ iter.push(msg.data);
95
+ }
96
+ }
97
+ close() {
98
+ for (const iter of this.iterators) {
99
+ iter.close();
100
+ }
101
+ }
102
+ handleStreamingMessage(msg) {
103
+ this.logger.debug(`${this.uri} handling streaming message`);
104
+ const chunks = this.client.receiveStreamMessage(msg.id);
105
+ for (const iter of this.iterators) {
106
+ iter.pushStream(chunks);
107
+ }
108
+ }
109
+ }
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3JlYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQ0wsWUFBWSxFQUVaLFdBQVcsRUFDWCxlQUFlLEVBQ2YsZUFBZSxHQUNoQixNQUFNLGFBQWEsQ0FBQTtBQW9CcEIsTUFBTSxNQUFNO0lBQ0YsU0FBUyxDQUFjO0lBQ3ZCLEtBQUssR0FBc0IsRUFBRSxDQUFBO0lBQzdCLFdBQVcsR0FBNEMsSUFBSSxDQUFBO0lBRW5FLFlBQVksU0FBdUI7UUFDakMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUE7SUFDNUIsQ0FBQztJQUVELElBQUksQ0FBQyxNQUFrQjtRQUNyQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUN4QyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQ3RCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFBO1FBQ3pCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQTtZQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQTtRQUN6QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUF1QztRQUN0RCxNQUFNLE1BQU0sR0FBRyxDQUFDLEtBQUssU0FBUyxDQUFD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QUksQ0FBQyxHQUFHLG1CQUFtQixDQUFDLENBQUE7UUFDakQsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDckIsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLO1FBQ0gsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFBO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxHQUFrQjtRQUN2QyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLDZCQUE2QixDQUFDLENBQUE7UUFDM0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsRUFBRyxDQUFDLENBQUE7UUFDeEQsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUN6QixDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2xpZW50UmVhZGFibGVTdHJlYW0gfSBmcm9tICdAZ3JwYy9ncnBjLWpzJ1xuaW1wb3J0IHsgRGF0YUNodW5rLCBNZXNzYWdlLCBSdW5uZXJDbGllbnQsIFN0cmVhbU1lc3NhZ2UgfSBmcm9tICdAcmRmYy9wcm90bydcbmltcG9ydCB3aW5zdG9uIGZyb20gJ3dpbnN0b24nXG5pbXBvcnQge1xuICBBbnlDb252ZXJ0b3IsXG4gIENvbnZlcnRvcixcbiAgTm9Db252ZXJ0b3IsXG4gIFN0cmVhbUNvbnZlcnRvcixcbiAgU3RyaW5nQ29udmVydG9yLFxufSBmcm9tICcuL2NvbnZlcnRvcidcblxuZXhwb3J0IHR5cGUgQW55ID1cbiAgfCB7XG4gICAgICBzdHJpbmc6IHN0cmluZ1xuICAgIH1cbiAgfCB7XG4gICAgICBzdHJlYW06IEFzeW5jR2VuZXJhdG9yPFVpbnQ4QXJyYXk+XG4gICAgfVxuICB8IHtcbiAgICAgIGJ1ZmZlcjogVWludDhBcnJheVxuICAgIH1cblxuZXhwb3J0IGludGVyZmFjZSBSZWFkZXIge1xuICBzdHJpbmdzKCk6IEFzeW5jSXRlcmFibGU8c3RyaW5nPlxuICBzdHJlYW1zKCk6IEFzeW5jSXRlcmFibGU8QXN5bmNHZW5lcmF0b3I8VWludDhBcnJheT4+XG4gIGJ1ZmZlcnMoKTogQXN5bmNJdGVyYWJsZTxVaW50OEFycmF5PlxuICBhbnlzKCk6IEFzeW5jSXRlcmFibGU8QW55PlxufVxuXG5jbGFzcyBNeUl0ZXI8VD4gaW1wbGVtZW50cyBBc3luY0l0ZXJhYmxlPFQ+IHtcbiAgcHJpdmF0ZSBjb252ZXJ0b3I6IENvbnZlcnRvcjxUPlxuICBwcml2YXRlIHF1ZXVlOiAoVCB8IHVuZGVmaW5lZClbXSA9IFtdXG4gIHByaXZhdGUgcmVzb2x2ZU5leHQ6ICgodmFsdWU6IFQgfCB1bmRlZmluZWQpID0+IHZvaWQpIHwgbnVsbCA9IG51bGxcblxuICBjb25zdHJ1Y3Rvcihjb252ZXJ0b3I6IENvbnZlcnRvcjxUPikge1xuICAgIHRoaXMuY29udmVydG9yID0gY29udmVydG9yXG4gIH1cblxuICBwdXNoKGJ1ZmZlcjogVWludDhBcnJheSkge1xuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmNvbnZlcnRvci5mcm9tKGJ1ZmZlcilcbiAgICBpZiAodGhpcy5yZXNvbHZlTmV4dCkge1xuICAgICAgdGhpcy5yZXNvbHZlTmV4dChpdGVtKVxuICAgICAgdGhpcy5yZXNvbHZlTmV4dCA9IG51bGxcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5xdWV1ZS5wdXNoKGl0ZW0pXG4gICAgfVxuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgaWYgKHRoaXMucmVzb2x2ZU5leHQpIHtcbiAgICAgIHRoaXMucmVzb2x2ZU5leHQodW5kZWZpbmVkKVxuICAgICAgdGhpcy5yZXNvbHZlTmV4dCA9IG51bGxcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5xdWV1ZS5wdXNoKHVuZGVmaW5lZClcbiAgICB9XG4gIH1cblxuICBhc3luYyBwdXNoU3RyZWFtKGNodW5rczogQ2xpZW50UmVhZGFibGVTdHJlYW08RGF0YUNodW5rPikge1xuICAgIGNvbnN0IHN0cmVhbSA9IChhc3luYyBmdW5jdGlvbiogKHN0cmVhbSkge1xuICAgICAgZm9yIGF3YWl0IChjb25zdCBjIG9mIHN0cmVhbSkge1xuICAgICAgICBjb25zdCBjaHVuazogRGF0YUNodW5rID0gY1xuICAgICAgICB5aWVsZCBjaHVuay5kYXRhXG4gICAgICB9XG4gICAgfSkoY2h1bmtzKVxuICAgIGNvbnN0IGl0ZW0gPSBhd2FpdCB0aGlzLmNvbnZlcnRvci5mcm9tU3RyZWFtKHN0cmVhbSlcbiAgICBpZiAodGhpcy5yZXNvbHZlTmV4dCkge1xuICAgICAgdGhpcy5yZXNvbHZlTmV4dChpdGVtKVxuICAgICAgdGhpcy5yZXNvbHZlTmV4dCA9IG51bGxcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5xdWV1ZS5wdXNoKGl0ZW0pXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgKltTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKSB7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGlmICh0aGlzLnF1ZXVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMucXVldWUuc2hpZnQoKSFcbiAgICAgICAgaWYgKGl0ZW0gPT09IHVuZGVmaW5lZCkgYnJlYWtcbiAgICAgICAgeWllbGQgaXRlbVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IGF3YWl0IG5ldyBQcm9taXNlPFQgfCB1bmRlZmluZWQ+KFxuICAgICAgICAgIChyZXNvbHZlKSA9PiAodGhpcy5yZXNvbHZlTmV4dCA9IHJlc29sdmUpLFxuICAgICAgICApXG4gICAgICAgIGlmIChpdGVtID09PSB1bmRlZmluZWQpIGJyZWFrXG4gICAgICAgIHlpZWxkIGl0ZW1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlYWRlckluc3RhbmNlIGltcGxlbWVudHMgUmVhZGVyIHtcbiAgcHJpdmF0ZSBjbGllbnQ6IFJ1bm5lckNsaWVudFxuICBwcml2YXRlIHVyaTogc3RyaW5nXG4gIHByaXZhdGUgbG9nZ2VyOiB3aW5zdG9uLkxvZ2dlclxuXG4gIHByaXZhdGUgaXRlcmF0b3JzOiBNeUl0ZXI8dW5rbm93bj5bXSA9IFtdXG5cbiAgY29uc3RydWN0b3IodXJpOiBzdHJpbmcsIGNsaWVudDogUnVubmVyQ2xpZW50LCBsb2dnZXI6IHdpbnN0b24uTG9nZ2VyKSB7XG4gICAgdGhpcy51cmkgPSB1cmlcbiAgICB0aGlzLmNsaWVudCA9IGNsaWVudFxuICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyXG4gIH1cblxuICBhbnlzKCk6IEFzeW5jSXRlcmFibGU8QW55PiB7XG4gICAgY29uc3QgaXRlciA9IG5ldyBNeUl0ZXIoQW55Q29udmVydG9yKVxuICAgIHRoaXMuaXRlcmF0b3JzLnB1c2goaXRlcilcbiAgICByZXR1cm4gaXRlclxuICB9XG5cbiAgc3RyaW5ncygpOiBBc3luY0l0ZXJhYmxlPHN0cmluZz4ge1xuICAgIGNvbnN0IGl0ZXIgPSBuZXcgTXlJdGVyKFN0cmluZ0NvbnZlcnRvcilcbiAgICB0aGlzLml0ZXJhdG9ycy5wdXNoKGl0ZXIpXG4gICAgcmV0dXJuIGl0ZXJcbiAgfVxuXG4gIGJ1ZmZlcnMoKTogQXN5bmNJdGVyYWJsZTxVaW50OEFycmF5PiB7XG4gICAgY29uc3QgaXRlciA9IG5ldyBNeUl0ZXIoTm9Db252ZXJ0b3IpXG4gICAgdGhpcy5pdGVyYXRvcnMucHVzaChpdGVyKVxuICAgIHJldHVybiBpdGVyXG4gIH1cblxuICBzdHJlYW1zKCk6IEFzeW5jSXRlcmFibGU8QXN5bmNHZW5lcmF0b3I8VWludDhBcnJheT4+IHtcbiAgICBjb25zdCBpdGVyID0gbmV3IE15SXRlcihTdHJlYW1Db252ZXJ0b3IpXG4gICAgdGhpcy5pdGVyYXRvcnMucHVzaChpdGVyKVxuICAgIHJldHVybiBpdGVyXG4gIH1cblxuICBoYW5kbGVNc2cobXNnOiBNZXNzYWdlKSB7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoYCR7dGhpcy51cml9IGhhbmRsaW5nIG1lc3NhZ2VgKVxuICAgIGZvciAoY29uc3QgaXRlciBvZiB0aGlzLml0ZXJhdG9ycykge1xuICAgICAgaXRlci5wdXNoKG1zZy5kYXRhKVxuICAgIH1cbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIGZvciAoY29uc3QgaXRlciBvZiB0aGlzLml0ZXJhdG9ycykge1xuICAgICAgaXRlci5jbG9zZSgpXG4gICAgfVxuICB9XG5cbiAgaGFuZGxlU3RyZWFtaW5nTWVzc2FnZShtc2c6IFN0cmVhbU1lc3NhZ2UpIHtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgJHt0aGlzLnVyaX0gaGFuZGxpbmcgc3RyZWFtaW5nIG1lc3NhZ2VgKVxuICAgIGNvbnN0IGNodW5rcyA9IHRoaXMuY2xpZW50LnJlY2VpdmVTdHJlYW1NZXNzYWdlKG1zZy5pZCEpXG4gICAgZm9yIChjb25zdCBpdGVyIG9mIHRoaXMuaXRlcmF0b3JzKSB7XG4gICAgICBpdGVyLnB1c2hTdHJlYW0oY2h1bmtzKVxuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,25 @@
1
+ import { OrchestratorMessage, Processor, RunnerClient, RunnerMessage } from '@rdfc/proto';
2
+ import { Reader } from './reader.js';
3
+ import { Writer } from './writer.js';
4
+ import { Logger } from 'winston';
5
+ import { Term } from '@rdfjs/types';
6
+ type Writable = (msg: OrchestratorMessage) => Promise<unknown>;
7
+ export declare class Runner {
8
+ private readonly readers;
9
+ private readonly writers;
10
+ private readonly client;
11
+ private readonly write;
12
+ private readonly logger;
13
+ private shapes;
14
+ private quads;
15
+ private readonly uri;
16
+ private readonly processors;
17
+ private readonly processorTransforms;
18
+ constructor(client: RunnerClient, write: Writable, uri: string, logger: Logger);
19
+ addProcessor(proc: Processor): Promise<void>;
20
+ start(): Promise<void>;
21
+ createWriter(uri: Term): Writer;
22
+ createReader(uri: Term): Reader;
23
+ handleOrchMessage(msg: RunnerMessage): Promise<void>;
24
+ }
25
+ export {};