@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.
- package/.claude/settings.local.json +12 -0
- package/README.md +41 -1
- package/__tests__/echoProcessor.test.ts +11 -12
- package/bin/runner.js +7 -1
- package/bin/server.js +13 -0
- package/bun.lock +820 -0
- package/examples/echo/.idea/echo.iml +9 -0
- package/examples/echo/.idea/misc.xml +6 -0
- package/{.idea → examples/echo/.idea}/modules.xml +1 -1
- package/examples/echo/.idea/vcs.xml +7 -0
- package/examples/echo/.swls/config.json +1 -0
- package/examples/echo/package-lock.json +27 -29
- package/examples/echo/pipeline.ttl +0 -1
- package/examples/echo/processors.ttl +1 -1
- package/examples/echo/remote_pipeline.ttl +18 -0
- package/examples/echo/server.ttl +5 -0
- package/examples/echo/untitled:/types/MyType.ttl +0 -0
- package/file:/home/silvius/Projects/mumo-pipeline/ldes/http_3A_2F_2Fdata.mumo.be_2Fstreams_2Fnodes_2Fdefault/root/index.trig +3 -0
- package/ldes/http_3A_2F_2Fdata.mumo.be_2Fstreams_2Fnodes_2Fdefault/root/index.trig +3 -0
- package/lib/client.d.ts +2 -1
- package/lib/client.js +70 -22
- package/lib/index.d.ts +2 -0
- package/lib/index.js +3 -1
- package/lib/jsonld.d.ts +17 -0
- package/lib/jsonld.js +135 -0
- package/lib/logger.d.ts +1 -0
- package/lib/logger.js +19 -9
- package/lib/reader.d.ts +4 -1
- package/lib/reader.js +11 -3
- package/lib/runner.d.ts +6 -1
- package/lib/runner.js +43 -15
- package/lib/server.d.ts +9 -0
- package/lib/server.js +459 -0
- package/lib/state.d.ts +32 -0
- package/lib/state.js +71 -0
- package/lib/testUtils/duplex.js +1 -1
- package/lib/testUtils/index.d.ts +9 -9
- package/lib/testUtils/index.js +9 -9
- package/lib/testUtils.d.ts +24 -0
- package/lib/testUtils.js +150 -0
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/writer.d.ts +5 -1
- package/lib/writer.js +26 -10
- package/minimal.ttl +99 -0
- package/package.json +21 -19
- package/src/client.ts +99 -24
- package/src/index.ts +2 -0
- package/src/logger.ts +15 -7
- package/src/reader.ts +19 -9
- package/src/runner.ts +61 -12
- package/src/server.ts +545 -0
- package/src/state.ts +105 -0
- package/src/testUtils/duplex.ts +1 -4
- package/src/testUtils/index.ts +25 -21
- package/src/writer.ts +36 -12
- package/.idea/LNKD.tech Editor.xml +0 -194
- package/.idea/codeStyles/Project.xml +0 -52
- package/.idea/codeStyles/codeStyleConfig.xml +0 -5
- package/.idea/copilot.data.migration.agent.xml +0 -6
- package/.idea/copilot.data.migration.ask.xml +0 -6
- package/.idea/copilot.data.migration.ask2agent.xml +0 -6
- package/.idea/copilot.data.migration.edit.xml +0 -6
- package/.idea/inspectionProfiles/Project_Default.xml +0 -6
- package/.idea/js-runner.iml +0 -12
- package/.idea/vcs.xml +0 -6
- package/dist/args.d.ts +0 -4
- package/dist/args.js +0 -58
- package/dist/connectors/file.d.ts +0 -15
- package/dist/connectors/file.js +0 -89
- package/dist/connectors/http.d.ts +0 -14
- package/dist/connectors/http.js +0 -82
- package/dist/connectors/kafka.d.ts +0 -48
- package/dist/connectors/kafka.js +0 -68
- package/dist/connectors/ws.d.ts +0 -10
- package/dist/connectors/ws.js +0 -72
- package/dist/connectors.d.ts +0 -73
- package/dist/connectors.js +0 -168
- package/dist/index.cjs +0 -732
- package/dist/index.d.ts +0 -42
- package/dist/index.js +0 -83
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/dist/util.d.ts +0 -71
- package/dist/util.js +0 -92
- 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
|
+
}
|
package/src/testUtils/duplex.ts
CHANGED
|
@@ -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
|
package/src/testUtils/index.ts
CHANGED
|
@@ -1,22 +1,28 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
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
|
|
16
|
-
import { MockClientDuplexStream } from
|
|
17
|
-
import { promisify } from
|
|
18
|
-
import { Reader } from
|
|
19
|
-
import { Writer } from
|
|
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
|
-
|
|
358
|
-
|
|
359
|
-
|
|
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<
|
|
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
|
-
|
|
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
|
|
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:
|
|
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
|
-
* -
|
|
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
|
-
|
|
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:
|
|
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 (!
|
|
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>
|
package/.idea/js-runner.iml
DELETED
|
@@ -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
package/dist/args.d.ts
DELETED