@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
package/src/state.ts ADDED
@@ -0,0 +1,105 @@
1
+ export type RunnerStatus = 'connecting' | 'running' | 'done' | 'error'
2
+
3
+ export interface ChannelStats {
4
+ uri: string
5
+ role: 'reader' | 'writer'
6
+ messageCount: number
7
+ bytesTotal: number
8
+ lastMessageAt: number | null
9
+ /** Last N round-trip latencies in ms (writers only) */
10
+ latenciesMs: number[]
11
+ }
12
+
13
+ export interface RunnerStats {
14
+ id: string
15
+ host: string
16
+ uri: string
17
+ connectedAt: number
18
+ status: RunnerStatus
19
+ grpcState: string
20
+ channels: Record<string, ChannelStats>
21
+ }
22
+
23
+ export interface ChannelTracker {
24
+ recordMessage(bytes: number, latencyMs?: number): void
25
+ }
26
+
27
+ const MAX_LATENCY_SAMPLES = 100
28
+
29
+ export class State {
30
+ private readonly runners: Map<string, RunnerStats> = new Map()
31
+ private nextId = 1
32
+
33
+ registerRunner(host: string, uri: string): string {
34
+ const id = String(this.nextId++)
35
+ this.runners.set(id, {
36
+ id,
37
+ host,
38
+ uri,
39
+ connectedAt: Date.now(),
40
+ status: 'connecting',
41
+ grpcState: 'IDLE',
42
+ channels: {},
43
+ })
44
+ return id
45
+ }
46
+
47
+ setStatus(id: string, status: RunnerStatus): void {
48
+ const r = this.runners.get(id)
49
+ if (r) r.status = status
50
+ }
51
+
52
+ setGrpcState(id: string, state: string): void {
53
+ const r = this.runners.get(id)
54
+ if (r) r.grpcState = state
55
+ }
56
+
57
+ deregisterRunner(id: string): void {
58
+ const r = this.runners.get(id)
59
+ if (r && r.status !== 'error') r.status = 'done'
60
+ }
61
+
62
+ markError(id: string): void {
63
+ const r = this.runners.get(id)
64
+ if (r) r.status = 'error'
65
+ }
66
+
67
+ trackChannel(
68
+ runnerId: string,
69
+ uri: string,
70
+ role: 'reader' | 'writer',
71
+ ): ChannelTracker {
72
+ const runner = this.runners.get(runnerId)
73
+ if (!runner) return { recordMessage() {} }
74
+
75
+ if (!runner.channels[uri]) {
76
+ runner.channels[uri] = {
77
+ uri,
78
+ role,
79
+ messageCount: 0,
80
+ bytesTotal: 0,
81
+ lastMessageAt: null,
82
+ latenciesMs: [],
83
+ }
84
+ }
85
+
86
+ const channel = runner.channels[uri]
87
+ return {
88
+ recordMessage(bytes: number, latencyMs?: number): void {
89
+ channel.messageCount++
90
+ channel.bytesTotal += bytes
91
+ channel.lastMessageAt = Date.now()
92
+ if (latencyMs !== undefined) {
93
+ channel.latenciesMs.push(latencyMs)
94
+ if (channel.latenciesMs.length > MAX_LATENCY_SAMPLES) {
95
+ channel.latenciesMs.shift()
96
+ }
97
+ }
98
+ },
99
+ }
100
+ }
101
+
102
+ snapshot(): RunnerStats[] {
103
+ return [...this.runners.values()]
104
+ }
105
+ }
@@ -1,8 +1,5 @@
1
1
  import { Duplex } from 'stream'
2
- import type {
3
- ClientDuplexStream,
4
- InterceptingCall,
5
- } from '@grpc/grpc-js'
2
+ import type { ClientDuplexStream, InterceptingCall } from '@grpc/grpc-js'
6
3
  import { AuthContext } from '@grpc/grpc-js/build/src/auth-context'
7
4
 
8
5
  type Matcher<Req, T> = (req: Req) => T | undefined
@@ -1,22 +1,28 @@
1
- import { DataChunk, FromRunner, LogMessage, Processor as ProcConfig, ToRunner } from "@rdfc/proto";
2
- import { extractShapes } from "rdf-lens";
3
- import { NamedNode, Parser, Writer as N3Writer } from "n3";
4
- import { readFile } from "fs/promises";
5
- import winston, { createLogger } from "winston";
6
- import { Processor } from "../processor";
7
- import { FullProc, Runner, Writable } from "../runner";
8
- import { Quad } from "@rdfjs/types";
9
- import { createTermNamespace } from "@treecg/types";
1
+ import {
2
+ DataChunk,
3
+ FromRunner,
4
+ LogMessage,
5
+ Processor as ProcConfig,
6
+ ToRunner,
7
+ } from '@rdfc/proto'
8
+ import { extractShapes } from 'rdf-lens'
9
+ import { NamedNode, Parser, Writer as N3Writer } from 'n3'
10
+ import { readFile } from 'fs/promises'
11
+ import winston, { createLogger } from 'winston'
12
+ import { Processor } from '../processor'
13
+ import { FullProc, Runner, Writable } from '../runner'
14
+ import { Quad } from '@rdfjs/types'
15
+ import { createTermNamespace } from '@treecg/types'
10
16
  import {
11
17
  ReceivingStreamControl,
12
18
  SendingStreamControl,
13
19
  StreamChunk,
14
20
  StreamIdentify,
15
- } from "@rdfc/proto/lib/generated/common";
16
- import { MockClientDuplexStream } from "./duplex";
17
- import { promisify } from "util";
18
- import { Reader } from "../reader";
19
- import { Writer } from "../writer";
21
+ } from '@rdfc/proto/lib/generated/common'
22
+ import { MockClientDuplexStream } from './duplex'
23
+ import { promisify } from 'util'
24
+ import { Reader } from '../reader'
25
+ import { Writer } from '../writer'
20
26
 
21
27
  export function channel(runner: Runner, name: string): [Writer, Reader] {
22
28
  const n = new NamedNode(name)
@@ -352,13 +358,11 @@ export class ProcHelper<T extends Processor<unknown>> {
352
358
  pipeline: new N3Writer().quadsToString(this.quads),
353
359
  })
354
360
 
355
- return await this.runner.createProcessor<T>(
356
- {
357
- config: JSON.stringify(this.config),
358
- arguments: '',
359
- uri,
360
- },
361
- )
361
+ return await this.runner.createProcessor<T>({
362
+ config: JSON.stringify(this.config),
363
+ arguments: '',
364
+ uri,
365
+ })
362
366
  }
363
367
  }
364
368
 
package/src/writer.ts CHANGED
@@ -2,6 +2,7 @@ import { FromRunner, RunnerClient } from '@rdfc/proto'
2
2
  import { promisify } from 'util'
3
3
  import { Logger } from 'winston'
4
4
  import { Any } from './reader'
5
+ import { ChannelTracker } from './state'
5
6
 
6
7
  type Writable = (msg: FromRunner) => Promise<unknown>
7
8
  export interface Writer {
@@ -26,12 +27,19 @@ export class WriterInstance implements Writer {
26
27
  private readonly notifyOrchestrator: Writable
27
28
  private readonly logger: Logger
28
29
 
29
- private awaitingProcessed: Array<() => void> = []
30
+ private awaitingProcessed: Array<{
31
+ resolve: () => void
32
+ startMs: number
33
+ bytes: number
34
+ }> = []
30
35
 
31
36
  private openStreams: number = 0
32
37
  private shouldClose: Array<() => void> = []
38
+ private hasClosed = false
39
+ private remoteCloseReceived = false
33
40
 
34
41
  private readonly runnerId: string
42
+ private readonly tracker: ChannelTracker | undefined
35
43
 
36
44
  constructor(
37
45
  uri: string,
@@ -39,16 +47,21 @@ export class WriterInstance implements Writer {
39
47
  notifyOrchestrator: Writable,
40
48
  runnerId: string,
41
49
  logger: Logger,
50
+ tracker?: ChannelTracker,
42
51
  ) {
43
52
  this.client = client
44
53
  this.notifyOrchestrator = notifyOrchestrator
45
54
  this.uri = uri
46
55
  this.logger = logger
47
56
  this.runnerId = runnerId
57
+ this.tracker = tracker
48
58
  }
49
59
 
50
- private awaitProcessed(): Promise<void> {
51
- return new Promise((res) => this.awaitingProcessed.push(res))
60
+ private awaitProcessed(bytes: number): Promise<void> {
61
+ const startMs = Date.now()
62
+ return new Promise<void>((resolve) => {
63
+ this.awaitingProcessed.push({ resolve, startMs, bytes })
64
+ })
52
65
  }
53
66
 
54
67
  async any(any: Any): Promise<void> {
@@ -66,7 +79,7 @@ export class WriterInstance implements Writer {
66
79
  async buffer(buffer: Uint8Array): Promise<void> {
67
80
  this.logger.debug(`${this.uri} sends buffer ${buffer.length} bytes`)
68
81
  const localSequenceNumber = this.localSequenceNumber++
69
- const handledPromise = this.awaitProcessed()
82
+ const handledPromise = this.awaitProcessed(buffer.length)
70
83
 
71
84
  await this.notifyOrchestrator({
72
85
  msg: { data: buffer, channel: this.uri, localSequenceNumber },
@@ -82,7 +95,7 @@ export class WriterInstance implements Writer {
82
95
  const t = transform || ((x: unknown) => <Uint8Array>x)
83
96
  const stream = this.client.sendStreamMessage()
84
97
 
85
- const handledPromise = this.awaitProcessed()
98
+ const handledPromise = this.awaitProcessed(0) // bytes unknown for streams
86
99
  const writeStreamMessageChunk = promisify(stream.write.bind(stream))
87
100
  const localSequenceNumber = this.localSequenceNumber++
88
101
  await writeStreamMessageChunk({
@@ -118,11 +131,12 @@ export class WriterInstance implements Writer {
118
131
  async string(msg: string): Promise<void> {
119
132
  this.logger.debug(`${this.uri} sends string ${msg.length} characters`)
120
133
  const localSequenceNumber = this.localSequenceNumber++
121
- const handledPromise = this.awaitProcessed()
134
+ const encoded = encoder.encode(msg)
135
+ const handledPromise = this.awaitProcessed(encoded.length)
122
136
 
123
137
  await this.notifyOrchestrator({
124
138
  msg: {
125
- data: encoder.encode(msg),
139
+ data: encoded,
126
140
  channel: this.uri,
127
141
  localSequenceNumber,
128
142
  },
@@ -138,20 +152,27 @@ export class WriterInstance implements Writer {
138
152
  * - If there are still active streams, closing is deferred until they complete.
139
153
  * - If multiple callers invoke `close()` while waiting, their Promises are queued and
140
154
  * resolved once the channel actually closes.
141
- * - If this side initiated the close (`issued = false`), a close message is sent to the remote.
155
+ * - A close message is sent to the remote only if the close was locally initiated and
156
+ * the remote has not already sent a close.
142
157
  *
143
158
  * @param issued - If true, indicates the close request originated remotely
144
159
  */
145
160
  async close(issued = false): Promise<void> {
146
- // Case 1: Active streams still running → wait until they finish
161
+ if (issued) this.remoteCloseReceived = true
162
+
163
+ // Case 1: Active streams still running → defer until they finish
147
164
  if (this.openStreams !== 0) {
148
165
  await new Promise<void>((resolve) => this.shouldClose.push(resolve))
149
166
  return
150
167
  }
151
168
 
152
- // Case 2: No active streams perform actual close
169
+ // Case 2: Already closed nothing to do
170
+ if (this.hasClosed) return
171
+ this.hasClosed = true
172
+
173
+ // Case 3: No active streams → perform actual close
153
174
  this.logger.debug(`${this.uri} closes stream`)
154
- if (!issued) {
175
+ if (!this.remoteCloseReceived) {
155
176
  await this.notifyOrchestrator({
156
177
  close: { channel: this.uri },
157
178
  })
@@ -169,7 +190,10 @@ export class WriterInstance implements Writer {
169
190
  */
170
191
  handled(): void {
171
192
  if (this.awaitingProcessed.length > 0) {
172
- this.awaitingProcessed.shift()!()
193
+ const { resolve, startMs, bytes } = this.awaitingProcessed.shift()!
194
+ const latencyMs = Date.now() - startMs
195
+ this.tracker?.recordMessage(bytes, latencyMs)
196
+ resolve()
173
197
  } else {
174
198
  this.logger.error(
175
199
  'Expected to be waiting for a message to be processed, but this is not the case ' +
@@ -1,194 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="http://lnkd.tech/editor#BuiltinGlobalGraphs">
4
- <option name="disabled">
5
- <set>
6
- <option value="DC_AM" />
7
- <option value="DC_E" />
8
- <option value="DC_T" />
9
- <option value="DC_TYPE" />
10
- <option value="FOAF" />
11
- <option value="FOAF_ORG" />
12
- <option value="ML_XS" />
13
- <option value="OWL2" />
14
- <option value="RDF" />
15
- <option value="RDFS" />
16
- <option value="SHACL" />
17
- <option value="SHACL_SHACL" />
18
- <option value="SKOS" />
19
- <option value="SKOS_ORG" />
20
- <option value="SPIN_MODELING" />
21
- <option value="SPIN_MODELING_ORG" />
22
- <option value="SPIN_SPARQL" />
23
- <option value="SPIN_SPARQL_ORG" />
24
- <option value="SPIN_STD" />
25
- <option value="SPIN_STD_ORG" />
26
- <option value="VANN" />
27
- <option value="VOAF" />
28
- <option value="schemaorg_all_http" />
29
- <option value="schemaorg_all_https" />
30
- </set>
31
- </option>
32
- </component>
33
- <component name="http://lnkd.tech/editor#GlobalGraphsAssignments">
34
- <option name="assignments">
35
- <map>
36
- <entry key="urn:tag:lnslr.eu,2018:java:eu.lunisolar.lava.rdfvocab.get.lava.LavaCatalog">
37
- <value>
38
- <map>
39
- <entry key="http://purl.org/dc/dcam">
40
- <value>
41
- <set>
42
- <option value="urn:tag:lnkd.tech,2023:digest:sha-256/58ABCE836B2D0022BF4C4C921A8C34C6E2F4B4AB015C4649FCAFD9572ED4DB47" />
43
- </set>
44
- </value>
45
- </entry>
46
- <entry key="http://purl.org/dc/dcmitype">
47
- <value>
48
- <set>
49
- <option value="urn:tag:lnkd.tech,2023:digest:sha-256/F987B11D556E556FEF95D7E9410C1C561FC1B7AC05CCD457128DC8962641B01E" />
50
- </set>
51
- </value>
52
- </entry>
53
- <entry key="http://purl.org/dc/elements/1.1">
54
- <value>
55
- <set>
56
- <option value="urn:tag:lnkd.tech,2023:digest:sha-256/FFB46B7A21E40344B93BC4AD2E6808B24DD53E261995EC3A926DF6BCD87BBFA5" />
57
- </set>
58
- </value>
59
- </entry>
60
- <entry key="http://purl.org/dc/terms">
61
- <value>
62
- <set>
63
- <option value="urn:tag:lnkd.tech,2023:digest:sha-256/13DF401072DD7015BF9D75162F3E41C8138075304B7B9CC1AA1E9C16DB976797" />
64
- </set>
65
- </value>
66
- </entry>
67
- <entry key="http://purl.org/vocab/vann">
68
- <value>
69
- <set>
70
- <option value="urn:tag:lnkd.tech,2023:digest:sha-256/96DE3675A0EAE0C2979D58A21FB808417E0C75DA18EFB9FEB050135BBAC790CA" />
71
- </set>
72
- </value>
73
- </entry>
74
- <entry key="http://purl.org/vocommons/voaf">
75
- <value>
76
- <set>
77
- <option value="urn:tag:lnkd.tech,2023:digest:sha-256/8FF39E5D8A3A8DBE88C790E499F2DAA0FC520CD825EBBE59E79A388361839150" />
78
- </set>
79
- </value>
80
- </entry>
81
- <entry key="http://schema.org">
82
- <value>
83
- <set>
84
- <option value="urn:tag:lnkd.tech,2023:digest:sha-256/62854C817CF24454C9FC1D9DDB605C7B6A4FDE0FF574960D40B0E150166997B6" />
85
- </set>
86
- </value>
87
- </entry>
88
- <entry key="http://spinrdf.org/sp">
89
- <value>
90
- <set>
91
- <option value="urn:tag:lnkd.tech,2023:digest:sha-256/FD2A599D1CE5D78A65896D5CE0A34553533715EE61388AD5F6E2AC75CF36FE94" />
92
- </set>
93
- </value>
94
- </entry>
95
- <entry key="http://spinrdf.org/spin">
96
- <value>
97
- <set>
98
- <option value="urn:tag:lnkd.tech,2023:digest:sha-256/CC3E56C1F2BC6D4213BAF662C0A1FEB97ED968FA21D6C0ED7E44887747C74BC3" />
99
- </set>
100
- </value>
101
- </entry>
102
- <entry key="http://spinrdf.org/spl">
103
- <value>
104
- <set>
105
- <option value="urn:tag:lnkd.tech,2023:digest:sha-256/EAD726323D0CC38A6FD1D332E1781E2601C32537102E82A0995E7FBA87BEF306" />
106
- </set>
107
- </value>
108
- </entry>
109
- <entry key="http://www.w3.org/1999/02/22-rdf-syntax-ns">
110
- <value>
111
- <set>
112
- <option value="urn:tag:lnkd.tech,2023:digest:sha-256/93D52B1A5824C7DD6504CA79C16205C0B740A0BA68B7A14952780F52561186A2" />
113
- </set>
114
- </value>
115
- </entry>
116
- <entry key="http://www.w3.org/2000/01/rdf-schema">
117
- <value>
118
- <set>
119
- <option value="urn:tag:lnkd.tech,2023:digest:sha-256/164A70B28D9AC4B828EEC7D9E4B548A9465A5E2C154D53A142CC5E18566E04EC" />
120
- </set>
121
- </value>
122
- </entry>
123
- <entry key="http://www.w3.org/2002/07/owl">
124
- <value>
125
- <set>
126
- <option value="urn:tag:lnkd.tech,2023:digest:sha-256/718FA1DB7840D3315BFCE94398543F91437EF6FE933054FD93F5471D19262FC5" />
127
- </set>
128
- </value>
129
- </entry>
130
- <entry key="http://www.w3.org/2004/02/skos/core">
131
- <value>
132
- <set>
133
- <option value="urn:tag:lnkd.tech,2023:digest:sha-256/2D0AC9174D7C53393C546802A19669534B44590EA00D807F4C149C6FFB4CF6BB" />
134
- </set>
135
- </value>
136
- </entry>
137
- <entry key="http://www.w3.org/ns/shacl">
138
- <value>
139
- <set>
140
- <option value="urn:tag:lnkd.tech,2023:digest:sha-256/0E5D8AEA0EAB98A072D4A02FAAEE1EE914EC99EAB2CA473429726FAED4A13F69" />
141
- </set>
142
- </value>
143
- </entry>
144
- <entry key="http://www.w3.org/ns/shacl-shacl">
145
- <value>
146
- <set>
147
- <option value="urn:tag:lnkd.tech,2023:digest:sha-256/250D6274CADC8FA5359D5DBC28BC943F1DE01ADB7FFC3369681216B583122E4A" />
148
- </set>
149
- </value>
150
- </entry>
151
- <entry key="http://xmlns.com/foaf/0.1">
152
- <value>
153
- <set>
154
- <option value="urn:tag:lnkd.tech,2023:digest:sha-256/630DAF410F3C34ED9FE7302E4A8A5439488B68375789E7CF5DD137892DAC6789" />
155
- </set>
156
- </value>
157
- </entry>
158
- <entry key="https://schema.org">
159
- <value>
160
- <set>
161
- <option value="urn:tag:lnkd.tech,2023:digest:sha-256/24D9BBA4119AA8C8708767B12B3BCACBC8BB8750CDB111F573996899AA29F089" />
162
- </set>
163
- </value>
164
- </entry>
165
- <entry key="urn:tag:lnkd.tech,2020:MissingLink:XMLDataTypes">
166
- <value>
167
- <set>
168
- <option value="urn:tag:lnkd.tech,2023:digest:sha-256/E7430AD6C9345DEC6A8C7E0665607B34D1F6B6FDC47A30FAC3FB146179213174" />
169
- </set>
170
- </value>
171
- </entry>
172
- </map>
173
- </value>
174
- </entry>
175
- </map>
176
- </option>
177
- </component>
178
- <component name="http://lnkd.tech/editor#GraphVisibilityConfig">
179
- <option name="visibility">
180
- <map>
181
- <entry key="DOCUMENTATION">
182
- <value>
183
- <Visibility />
184
- </value>
185
- </entry>
186
- <entry key="GENERAL">
187
- <value>
188
- <Visibility />
189
- </value>
190
- </entry>
191
- </map>
192
- </option>
193
- </component>
194
- </project>
@@ -1,52 +0,0 @@
1
- <component name="ProjectCodeStyleConfiguration">
2
- <code_scheme name="Project" version="173">
3
- <HTMLCodeStyleSettings>
4
- <option name="HTML_SPACE_INSIDE_EMPTY_TAG" value="true" />
5
- </HTMLCodeStyleSettings>
6
- <JSCodeStyleSettings version="0">
7
- <option name="FORCE_SEMICOLON_STYLE" value="true" />
8
- <option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
9
- <option name="FORCE_QUOTE_STYlE" value="true" />
10
- <option name="ENFORCE_TRAILING_COMMA" value="WhenMultiline" />
11
- <option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
12
- <option name="SPACES_WITHIN_IMPORTS" value="true" />
13
- </JSCodeStyleSettings>
14
- <TypeScriptCodeStyleSettings version="0">
15
- <option name="FORCE_SEMICOLON_STYLE" value="true" />
16
- <option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
17
- <option name="FORCE_QUOTE_STYlE" value="true" />
18
- <option name="ENFORCE_TRAILING_COMMA" value="WhenMultiline" />
19
- <option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
20
- <option name="SPACES_WITHIN_IMPORTS" value="true" />
21
- </TypeScriptCodeStyleSettings>
22
- <VueCodeStyleSettings>
23
- <option name="INTERPOLATION_NEW_LINE_AFTER_START_DELIMITER" value="false" />
24
- <option name="INTERPOLATION_NEW_LINE_BEFORE_END_DELIMITER" value="false" />
25
- </VueCodeStyleSettings>
26
- <codeStyleSettings language="HTML">
27
- <option name="SOFT_MARGINS" value="80" />
28
- <indentOptions>
29
- <option name="CONTINUATION_INDENT_SIZE" value="4" />
30
- </indentOptions>
31
- </codeStyleSettings>
32
- <codeStyleSettings language="JavaScript">
33
- <option name="INDENT_CASE_FROM_SWITCH" value="false" />
34
- <option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
35
- <option name="ALIGN_MULTILINE_FOR" value="false" />
36
- <option name="SOFT_MARGINS" value="80" />
37
- </codeStyleSettings>
38
- <codeStyleSettings language="TypeScript">
39
- <option name="INDENT_CASE_FROM_SWITCH" value="false" />
40
- <option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
41
- <option name="ALIGN_MULTILINE_FOR" value="false" />
42
- <option name="SOFT_MARGINS" value="80" />
43
- </codeStyleSettings>
44
- <codeStyleSettings language="Vue">
45
- <option name="SOFT_MARGINS" value="80" />
46
- <indentOptions>
47
- <option name="INDENT_SIZE" value="4" />
48
- <option name="TAB_SIZE" value="4" />
49
- </indentOptions>
50
- </codeStyleSettings>
51
- </code_scheme>
52
- </component>
@@ -1,5 +0,0 @@
1
- <component name="ProjectCodeStyleConfiguration">
2
- <state>
3
- <option name="USE_PER_PROJECT_SETTINGS" value="true" />
4
- </state>
5
- </component>
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="AgentMigrationStateService">
4
- <option name="migrationStatus" value="COMPLETED" />
5
- </component>
6
- </project>
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="AskMigrationStateService">
4
- <option name="migrationStatus" value="COMPLETED" />
5
- </component>
6
- </project>
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="Ask2AgentMigrationStateService">
4
- <option name="migrationStatus" value="COMPLETED" />
5
- </component>
6
- </project>
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="EditMigrationStateService">
4
- <option name="migrationStatus" value="COMPLETED" />
5
- </component>
6
- </project>
@@ -1,6 +0,0 @@
1
- <component name="InspectionProjectProfileManager">
2
- <profile version="1.0">
3
- <option name="myName" value="Project Default" />
4
- <inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
5
- </profile>
6
- </component>
@@ -1,12 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <module type="WEB_MODULE" version="4">
3
- <component name="NewModuleRootManager">
4
- <content url="file://$MODULE_DIR$">
5
- <excludeFolder url="file://$MODULE_DIR$/.tmp" />
6
- <excludeFolder url="file://$MODULE_DIR$/temp" />
7
- <excludeFolder url="file://$MODULE_DIR$/tmp" />
8
- </content>
9
- <orderEntry type="inheritedJdk" />
10
- <orderEntry type="sourceFolder" forTests="false" />
11
- </component>
12
- </module>
package/.idea/vcs.xml DELETED
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="VcsDirectoryMappings">
4
- <mapping directory="" vcs="Git" />
5
- </component>
6
- </project>
package/dist/args.d.ts DELETED
@@ -1,4 +0,0 @@
1
- export type Args = {
2
- input: string
3
- }
4
- export declare function getArgs(): Args