@blokjs/runner 0.2.0 → 0.2.2
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/dist/Blok.js +11 -11
- package/dist/Blok.js.map +1 -1
- package/dist/Configuration.d.ts +21 -2
- package/dist/Configuration.js +188 -26
- package/dist/Configuration.js.map +1 -1
- package/dist/ConfigurationResolver.d.ts +9 -0
- package/dist/ConfigurationResolver.js +17 -1
- package/dist/ConfigurationResolver.js.map +1 -1
- package/dist/RunnerSteps.js +52 -9
- package/dist/RunnerSteps.js.map +1 -1
- package/dist/RuntimeAdapterNode.d.ts +32 -2
- package/dist/RuntimeAdapterNode.js +122 -27
- package/dist/RuntimeAdapterNode.js.map +1 -1
- package/dist/TriggerBase.js +35 -2
- package/dist/TriggerBase.js.map +1 -1
- package/dist/adapters/BunRuntimeAdapter.d.ts +1 -0
- package/dist/adapters/BunRuntimeAdapter.js +1 -0
- package/dist/adapters/BunRuntimeAdapter.js.map +1 -1
- package/dist/adapters/DockerRuntimeAdapter.d.ts +2 -1
- package/dist/adapters/DockerRuntimeAdapter.js +10 -1
- package/dist/adapters/DockerRuntimeAdapter.js.map +1 -1
- package/dist/adapters/HttpRuntimeAdapter.d.ts +26 -5
- package/dist/adapters/HttpRuntimeAdapter.js +97 -16
- package/dist/adapters/HttpRuntimeAdapter.js.map +1 -1
- package/dist/adapters/NodeJsRuntimeAdapter.d.ts +1 -0
- package/dist/adapters/NodeJsRuntimeAdapter.js +1 -0
- package/dist/adapters/NodeJsRuntimeAdapter.js.map +1 -1
- package/dist/adapters/RuntimeAdapter.d.ts +17 -0
- package/dist/adapters/WasmRuntimeAdapter.d.ts +1 -0
- package/dist/adapters/WasmRuntimeAdapter.js +1 -0
- package/dist/adapters/WasmRuntimeAdapter.js.map +1 -1
- package/dist/adapters/grpc/GrpcChannelOptions.d.ts +31 -0
- package/dist/adapters/grpc/GrpcChannelOptions.js +68 -0
- package/dist/adapters/grpc/GrpcChannelOptions.js.map +1 -0
- package/dist/adapters/grpc/GrpcClientPool.d.ts +43 -0
- package/dist/adapters/grpc/GrpcClientPool.js +89 -0
- package/dist/adapters/grpc/GrpcClientPool.js.map +1 -0
- package/dist/adapters/grpc/GrpcCodec.d.ts +226 -0
- package/dist/adapters/grpc/GrpcCodec.js +275 -0
- package/dist/adapters/grpc/GrpcCodec.js.map +1 -0
- package/dist/adapters/grpc/GrpcErrors.d.ts +59 -0
- package/dist/adapters/grpc/GrpcErrors.js +190 -0
- package/dist/adapters/grpc/GrpcErrors.js.map +1 -0
- package/dist/adapters/grpc/GrpcHealthChecker.d.ts +69 -0
- package/dist/adapters/grpc/GrpcHealthChecker.js +96 -0
- package/dist/adapters/grpc/GrpcHealthChecker.js.map +1 -0
- package/dist/adapters/grpc/GrpcRuntimeAdapter.d.ts +98 -0
- package/dist/adapters/grpc/GrpcRuntimeAdapter.js +478 -0
- package/dist/adapters/grpc/GrpcRuntimeAdapter.js.map +1 -0
- package/dist/adapters/grpc/index.d.ts +13 -0
- package/dist/adapters/grpc/index.js +14 -0
- package/dist/adapters/grpc/index.js.map +1 -0
- package/dist/adapters/grpc/proto/blok/runtime/v1/runtime.proto +302 -0
- package/dist/adapters/grpc/types.d.ts +97 -0
- package/dist/adapters/grpc/types.js +41 -0
- package/dist/adapters/grpc/types.js.map +1 -0
- package/dist/adapters/transport.d.ts +108 -0
- package/dist/adapters/transport.js +196 -0
- package/dist/adapters/transport.js.map +1 -0
- package/dist/index.d.ts +13 -1
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -1
- package/dist/testing/WorkflowTestRunner.js +12 -0
- package/dist/testing/WorkflowTestRunner.js.map +1 -1
- package/dist/tracing/RunTracker.d.ts +23 -2
- package/dist/tracing/RunTracker.js +120 -10
- package/dist/tracing/RunTracker.js.map +1 -1
- package/dist/tracing/SqliteRunStore.js +19 -3
- package/dist/tracing/SqliteRunStore.js.map +1 -1
- package/dist/tracing/TraceRouter.js +245 -4
- package/dist/tracing/TraceRouter.js.map +1 -1
- package/dist/tracing/types.d.ts +82 -10
- package/dist/types/GlobalOptions.d.ts +9 -2
- package/dist/workflow/PersistenceHelper.d.ts +46 -0
- package/dist/workflow/PersistenceHelper.js +57 -0
- package/dist/workflow/PersistenceHelper.js.map +1 -0
- package/dist/workflow/WorkflowNormalizer.d.ts +91 -0
- package/dist/workflow/WorkflowNormalizer.js +304 -0
- package/dist/workflow/WorkflowNormalizer.js.map +1 -0
- package/package.json +10 -7
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WorkflowNormalizer — accepts v1 or v2 workflow shapes and projects both
|
|
3
|
+
* to the single canonical internal shape that `Configuration.getSteps` /
|
|
4
|
+
* `Configuration.getNodes` already consume.
|
|
5
|
+
*
|
|
6
|
+
* **Input shapes accepted**
|
|
7
|
+
*
|
|
8
|
+
* v1 (legacy):
|
|
9
|
+
* ```
|
|
10
|
+
* {
|
|
11
|
+
* name, version, trigger,
|
|
12
|
+
* steps: [{ name, node, type, active?, stop?, set_var? }],
|
|
13
|
+
* nodes: { [stepName]: { inputs?, conditions? } }
|
|
14
|
+
* }
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* v2 (canonical):
|
|
18
|
+
* ```
|
|
19
|
+
* {
|
|
20
|
+
* name, version, trigger,
|
|
21
|
+
* steps: [
|
|
22
|
+
* { id, use, type?, inputs?, as?, spread?, ephemeral?, active?, stop? }
|
|
23
|
+
* | { id, branch: { when, then, else? } }
|
|
24
|
+
* ]
|
|
25
|
+
* }
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* **Output shape** (always v1-compatible internal):
|
|
29
|
+
* ```
|
|
30
|
+
* {
|
|
31
|
+
* name, version, trigger, // method "*" normalized to "ANY"
|
|
32
|
+
* steps: [{ name, node, type, active, stop, set_var, as, spread, ephemeral, ... }],
|
|
33
|
+
* nodes: { [stepName]: { inputs?, conditions? } }
|
|
34
|
+
* }
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
37
|
+
* **Why a single internal shape?** The runner core (RunnerSteps,
|
|
38
|
+
* Configuration, Blok.run, etc.) is unchanged. Normalization is purely
|
|
39
|
+
* an authoring-layer concern. Old workflows keep running; new authoring
|
|
40
|
+
* shapes get translated transparently.
|
|
41
|
+
*/
|
|
42
|
+
const IF_ELSE_NODE_REF = "@blokjs/if-else";
|
|
43
|
+
let _wildcardWarnedFiles = new Set();
|
|
44
|
+
/**
|
|
45
|
+
* Convert any accepted workflow shape into the canonical internal shape.
|
|
46
|
+
*
|
|
47
|
+
* Mutates a deep copy — the caller's object is never modified.
|
|
48
|
+
*
|
|
49
|
+
* @param raw - parsed workflow object (from JSON.parse, dynamic import,
|
|
50
|
+
* or the v1 builder pipeline)
|
|
51
|
+
* @param sourcePath - optional path used in deprecation warnings
|
|
52
|
+
*/
|
|
53
|
+
export function normalizeWorkflow(raw, sourcePath) {
|
|
54
|
+
if (!isPlainObject(raw)) {
|
|
55
|
+
const suffix = sourcePath ? ` (file: ${sourcePath})` : "";
|
|
56
|
+
throw new Error(`[blok] WorkflowNormalizer: expected an object, got ${typeof raw}${suffix}`);
|
|
57
|
+
}
|
|
58
|
+
// Unwrap v2 builder envelopes — `workflow()` returns `{_blokV2: true, _config: {...}}`.
|
|
59
|
+
// The legacy `Workflow()` builder also produces a `_config` field; both shapes
|
|
60
|
+
// carry their workflow definition under that key.
|
|
61
|
+
let wf = raw;
|
|
62
|
+
if (wf._blokV2 === true && isPlainObject(wf._config)) {
|
|
63
|
+
wf = wf._config;
|
|
64
|
+
}
|
|
65
|
+
else if (isPlainObject(wf._config) && wf.name === undefined && wf.steps === undefined) {
|
|
66
|
+
// Legacy builder shape — same unwrap.
|
|
67
|
+
wf = wf._config;
|
|
68
|
+
}
|
|
69
|
+
const name = typeof wf.name === "string" ? wf.name : "";
|
|
70
|
+
const version = typeof wf.version === "string" ? wf.version : "1.0.0";
|
|
71
|
+
const description = typeof wf.description === "string" ? wf.description : undefined;
|
|
72
|
+
// --- Trigger normalization (method "*" → "ANY") ---
|
|
73
|
+
const trigger = normalizeTrigger(wf.trigger, sourcePath);
|
|
74
|
+
// --- Steps normalization ---
|
|
75
|
+
const stepsInput = Array.isArray(wf.steps) ? wf.steps : [];
|
|
76
|
+
const nodesInput = isPlainObject(wf.nodes) ? wf.nodes : {};
|
|
77
|
+
const internalSteps = [];
|
|
78
|
+
const internalNodes = {};
|
|
79
|
+
for (let i = 0; i < stepsInput.length; i++) {
|
|
80
|
+
const rawStep = stepsInput[i];
|
|
81
|
+
if (!isPlainObject(rawStep))
|
|
82
|
+
continue;
|
|
83
|
+
const step = rawStep;
|
|
84
|
+
// v2 branch — { id, branch: { when, then, else? } }
|
|
85
|
+
if (isPlainObject(step.branch)) {
|
|
86
|
+
const { internalStep, nodeConfig } = normalizeBranchStep(step, i);
|
|
87
|
+
internalSteps.push(internalStep);
|
|
88
|
+
internalNodes[internalStep.name] = nodeConfig;
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
// v2 regular — { id, use, inputs?, as?, spread?, ephemeral?, ... }
|
|
92
|
+
// or v1 regular — { name, node, type } + nodes[name].inputs
|
|
93
|
+
const { internalStep, nodeConfig } = normalizeRegularStep(step, nodesInput, i);
|
|
94
|
+
internalSteps.push(internalStep);
|
|
95
|
+
if (nodeConfig)
|
|
96
|
+
internalNodes[internalStep.name] = nodeConfig;
|
|
97
|
+
}
|
|
98
|
+
// --- Carry over any v1 nodes that didn't have a matching step ---
|
|
99
|
+
// (rare, but possible for legacy workflows with helper sub-flows
|
|
100
|
+
// declared at the top level)
|
|
101
|
+
for (const key of Object.keys(nodesInput)) {
|
|
102
|
+
if (internalNodes[key] !== undefined)
|
|
103
|
+
continue;
|
|
104
|
+
const value = nodesInput[key];
|
|
105
|
+
if (isPlainObject(value)) {
|
|
106
|
+
internalNodes[key] = value;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return {
|
|
110
|
+
name,
|
|
111
|
+
version,
|
|
112
|
+
description,
|
|
113
|
+
trigger,
|
|
114
|
+
steps: internalSteps,
|
|
115
|
+
nodes: internalNodes,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
// =============================================================================
|
|
119
|
+
// Internals
|
|
120
|
+
// =============================================================================
|
|
121
|
+
function normalizeRegularStep(step, nodesInput, index) {
|
|
122
|
+
// Identity — `id` (v2) wins, fallback to `name` (v1).
|
|
123
|
+
const id = pickString(step.id) ?? pickString(step.name);
|
|
124
|
+
if (!id) {
|
|
125
|
+
throw new Error(`[blok] WorkflowNormalizer: step at index ${index} has neither \`id\` (v2) nor \`name\` (v1).`);
|
|
126
|
+
}
|
|
127
|
+
// Node reference — `use` (v2) wins, fallback to `node` (v1).
|
|
128
|
+
const nodeRef = pickString(step.use) ?? pickString(step.node);
|
|
129
|
+
if (!nodeRef) {
|
|
130
|
+
throw new Error(`[blok] WorkflowNormalizer: step "${id}" has neither \`use\` (v2) nor \`node\` (v1).`);
|
|
131
|
+
}
|
|
132
|
+
// Type — explicit `type` wins; otherwise inferred from the node ref.
|
|
133
|
+
const explicitType = pickString(step.type);
|
|
134
|
+
const type = explicitType ?? inferStepType(nodeRef);
|
|
135
|
+
// Inputs — v2 inlines on the step; v1 lives at workflow.nodes[name].inputs.
|
|
136
|
+
const inlineInputs = isPlainObject(step.inputs) ? step.inputs : null;
|
|
137
|
+
const v1NodeConfig = isPlainObject(nodesInput[id]) ? nodesInput[id] : null;
|
|
138
|
+
const v1Inputs = v1NodeConfig?.inputs && isPlainObject(v1NodeConfig.inputs) ? v1NodeConfig.inputs : null;
|
|
139
|
+
const inputs = inlineInputs ?? v1Inputs;
|
|
140
|
+
// Persistence knobs — v2 first, legacy `set_var` mapped second.
|
|
141
|
+
const ephemeralExplicit = step.ephemeral === true;
|
|
142
|
+
const ephemeralFromLegacy = step.set_var === false;
|
|
143
|
+
const ephemeral = ephemeralExplicit || ephemeralFromLegacy;
|
|
144
|
+
const as = pickString(step.as);
|
|
145
|
+
const spread = step.spread === true;
|
|
146
|
+
// `as` and `spread` are mutually exclusive — caught at schema level too,
|
|
147
|
+
// repeated here so JSON workflows that bypass Zod still fail loudly.
|
|
148
|
+
if (as && spread) {
|
|
149
|
+
throw new Error(`[blok] WorkflowNormalizer: step "${id}" sets both \`as\` and \`spread\` — they are mutually exclusive.`);
|
|
150
|
+
}
|
|
151
|
+
const internalStep = {
|
|
152
|
+
name: id,
|
|
153
|
+
node: nodeRef,
|
|
154
|
+
type,
|
|
155
|
+
active: step.active === undefined ? true : Boolean(step.active),
|
|
156
|
+
stop: step.stop === true,
|
|
157
|
+
set_var: typeof step.set_var === "boolean" ? step.set_var : undefined,
|
|
158
|
+
as,
|
|
159
|
+
spread,
|
|
160
|
+
ephemeral,
|
|
161
|
+
};
|
|
162
|
+
if (typeof step.stream_logs === "boolean")
|
|
163
|
+
internalStep.stream_logs = step.stream_logs;
|
|
164
|
+
// Build node config — only include `inputs` if present.
|
|
165
|
+
let nodeConfig = null;
|
|
166
|
+
if (inputs) {
|
|
167
|
+
nodeConfig = { inputs };
|
|
168
|
+
// Carry over any legacy v1 node-config fields that aren't `inputs`
|
|
169
|
+
// (some workflows attach `outputs`, `mapper`, etc.).
|
|
170
|
+
if (v1NodeConfig) {
|
|
171
|
+
for (const k of Object.keys(v1NodeConfig)) {
|
|
172
|
+
if (k === "inputs")
|
|
173
|
+
continue;
|
|
174
|
+
nodeConfig[k] = v1NodeConfig[k];
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
else if (v1NodeConfig) {
|
|
179
|
+
nodeConfig = { ...v1NodeConfig };
|
|
180
|
+
}
|
|
181
|
+
return { internalStep, nodeConfig };
|
|
182
|
+
}
|
|
183
|
+
function normalizeBranchStep(step, index) {
|
|
184
|
+
const id = pickString(step.id);
|
|
185
|
+
if (!id) {
|
|
186
|
+
throw new Error(`[blok] WorkflowNormalizer: branch step at index ${index} is missing \`id\`.`);
|
|
187
|
+
}
|
|
188
|
+
const branch = step.branch;
|
|
189
|
+
const when = pickString(branch.when);
|
|
190
|
+
if (!when) {
|
|
191
|
+
throw new Error(`[blok] WorkflowNormalizer: branch step "${id}" is missing \`when\` (must be a non-empty string).`);
|
|
192
|
+
}
|
|
193
|
+
const thenSteps = Array.isArray(branch.then) ? branch.then : [];
|
|
194
|
+
const elseSteps = Array.isArray(branch.else) ? branch.else : [];
|
|
195
|
+
// Normalize each branch's nested steps recursively. Use empty
|
|
196
|
+
// `nodesInput` because v2 branches inline `inputs` on each nested step.
|
|
197
|
+
const thenInternal = [];
|
|
198
|
+
const elseInternal = [];
|
|
199
|
+
for (let i = 0; i < thenSteps.length; i++) {
|
|
200
|
+
const s = thenSteps[i];
|
|
201
|
+
if (!isPlainObject(s))
|
|
202
|
+
continue;
|
|
203
|
+
if (isPlainObject(s.branch)) {
|
|
204
|
+
const { internalStep } = normalizeBranchStep(s, i);
|
|
205
|
+
thenInternal.push(internalStep);
|
|
206
|
+
continue;
|
|
207
|
+
}
|
|
208
|
+
const { internalStep, nodeConfig } = normalizeRegularStep(s, {}, i);
|
|
209
|
+
// Inline inputs on the step itself so nested-flow execution finds them.
|
|
210
|
+
// (RunnerSteps recursively executes flow nodes' inner steps.)
|
|
211
|
+
if (nodeConfig?.inputs) {
|
|
212
|
+
internalStep.inputs = nodeConfig.inputs;
|
|
213
|
+
}
|
|
214
|
+
thenInternal.push(internalStep);
|
|
215
|
+
}
|
|
216
|
+
for (let i = 0; i < elseSteps.length; i++) {
|
|
217
|
+
const s = elseSteps[i];
|
|
218
|
+
if (!isPlainObject(s))
|
|
219
|
+
continue;
|
|
220
|
+
if (isPlainObject(s.branch)) {
|
|
221
|
+
const { internalStep } = normalizeBranchStep(s, i);
|
|
222
|
+
elseInternal.push(internalStep);
|
|
223
|
+
continue;
|
|
224
|
+
}
|
|
225
|
+
const { internalStep, nodeConfig } = normalizeRegularStep(s, {}, i);
|
|
226
|
+
if (nodeConfig?.inputs) {
|
|
227
|
+
internalStep.inputs = nodeConfig.inputs;
|
|
228
|
+
}
|
|
229
|
+
elseInternal.push(internalStep);
|
|
230
|
+
}
|
|
231
|
+
const conditions = [{ type: "if", condition: when, steps: thenInternal }];
|
|
232
|
+
if (elseInternal.length > 0) {
|
|
233
|
+
conditions.push({ type: "else", steps: elseInternal });
|
|
234
|
+
}
|
|
235
|
+
const internalStep = {
|
|
236
|
+
name: id,
|
|
237
|
+
node: IF_ELSE_NODE_REF,
|
|
238
|
+
type: "module",
|
|
239
|
+
active: step.active === undefined ? true : Boolean(step.active),
|
|
240
|
+
stop: step.stop === true,
|
|
241
|
+
flow: true,
|
|
242
|
+
};
|
|
243
|
+
const nodeConfig = { conditions };
|
|
244
|
+
return { internalStep, nodeConfig };
|
|
245
|
+
}
|
|
246
|
+
function normalizeTrigger(rawTrigger, sourcePath) {
|
|
247
|
+
if (!isPlainObject(rawTrigger))
|
|
248
|
+
return {};
|
|
249
|
+
const out = {};
|
|
250
|
+
for (const [kind, cfg] of Object.entries(rawTrigger)) {
|
|
251
|
+
if (kind === "http" && isPlainObject(cfg)) {
|
|
252
|
+
const httpCfg = { ...cfg };
|
|
253
|
+
if (httpCfg.method === "*") {
|
|
254
|
+
httpCfg.method = "ANY";
|
|
255
|
+
warnWildcardOnce(sourcePath);
|
|
256
|
+
}
|
|
257
|
+
out[kind] = httpCfg;
|
|
258
|
+
}
|
|
259
|
+
else {
|
|
260
|
+
out[kind] = cfg;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
return out;
|
|
264
|
+
}
|
|
265
|
+
function inferStepType(nodeRef) {
|
|
266
|
+
// Explicit runtime prefixes — `runtime.python3:my-node` style.
|
|
267
|
+
if (nodeRef.startsWith("runtime.")) {
|
|
268
|
+
const dotIdx = nodeRef.indexOf(":");
|
|
269
|
+
if (dotIdx > 0)
|
|
270
|
+
return nodeRef.slice(0, dotIdx);
|
|
271
|
+
return nodeRef;
|
|
272
|
+
}
|
|
273
|
+
// Default to module — covers `@blokjs/*` and most user-defined nodes.
|
|
274
|
+
return "module";
|
|
275
|
+
}
|
|
276
|
+
function warnWildcardOnce(sourcePath) {
|
|
277
|
+
const key = sourcePath ?? "<unknown>";
|
|
278
|
+
if (_wildcardWarnedFiles.has(key))
|
|
279
|
+
return;
|
|
280
|
+
_wildcardWarnedFiles.add(key);
|
|
281
|
+
console.warn(`[blok] trigger.http.method "*" is deprecated; use "ANY" instead. (workflow: ${key}). Run \`blokctl migrate workflows\` to update.`);
|
|
282
|
+
}
|
|
283
|
+
function isPlainObject(value) {
|
|
284
|
+
if (value === null || value === undefined)
|
|
285
|
+
return false;
|
|
286
|
+
if (typeof value !== "object")
|
|
287
|
+
return false;
|
|
288
|
+
if (Array.isArray(value))
|
|
289
|
+
return false;
|
|
290
|
+
const proto = Object.getPrototypeOf(value);
|
|
291
|
+
return proto === null || proto === Object.prototype;
|
|
292
|
+
}
|
|
293
|
+
function pickString(value) {
|
|
294
|
+
return typeof value === "string" && value.length > 0 ? value : undefined;
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Test-only — reset the per-process wildcard warning cache.
|
|
298
|
+
*
|
|
299
|
+
* @internal
|
|
300
|
+
*/
|
|
301
|
+
export function _resetWildcardWarningCache() {
|
|
302
|
+
_wildcardWarnedFiles = new Set();
|
|
303
|
+
}
|
|
304
|
+
//# sourceMappingURL=WorkflowNormalizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkflowNormalizer.js","sourceRoot":"","sources":["../../src/workflow/WorkflowNormalizer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blokjs/runner",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "",
|
|
5
5
|
"engines": {
|
|
6
6
|
"node": ">=18.0.0"
|
|
@@ -8,19 +8,20 @@
|
|
|
8
8
|
"type": "module",
|
|
9
9
|
"main": "dist/index.js",
|
|
10
10
|
"types": "dist/index.d.ts",
|
|
11
|
-
"files": [
|
|
12
|
-
"dist"
|
|
13
|
-
],
|
|
11
|
+
"files": ["dist"],
|
|
14
12
|
"author": "Marco A. Castillo Della Sera",
|
|
15
13
|
"license": "MIT",
|
|
16
14
|
"scripts": {
|
|
17
|
-
"build": "rm -rf dist && bun run tsc",
|
|
15
|
+
"build": "rm -rf dist && bun run tsc && bun run sync:proto",
|
|
18
16
|
"build:dev": "bun run build && tsc --watch",
|
|
17
|
+
"sync:proto": "mkdir -p dist/adapters/grpc/proto/blok/runtime/v1 && cp src/adapters/grpc/proto/blok/runtime/v1/runtime.proto dist/adapters/grpc/proto/blok/runtime/v1/runtime.proto",
|
|
18
|
+
"sync:proto:fromroot": "mkdir -p src/adapters/grpc/proto/blok/runtime/v1 && cp ../../proto/blok/runtime/v1/runtime.proto src/adapters/grpc/proto/blok/runtime/v1/runtime.proto",
|
|
19
19
|
"test:dev": "vitest",
|
|
20
20
|
"test": "vitest run",
|
|
21
21
|
"test:integration": "vitest run --config vitest.integration.config.ts",
|
|
22
22
|
"test:integration:dev": "vitest --config vitest.integration.config.ts",
|
|
23
23
|
"test:integration:coverage": "vitest run --config vitest.integration.config.ts --coverage",
|
|
24
|
+
"test:parity": "vitest run --config vitest.integration.config.ts __tests__/integration/parity",
|
|
24
25
|
"test:all": "vitest run && vitest run --config vitest.integration.config.ts",
|
|
25
26
|
"typecheck": "tsc --noEmit --incremental"
|
|
26
27
|
},
|
|
@@ -37,8 +38,10 @@
|
|
|
37
38
|
"vitest": "^4.0.18"
|
|
38
39
|
},
|
|
39
40
|
"dependencies": {
|
|
40
|
-
"@blokjs/helper": "
|
|
41
|
-
"@blokjs/shared": "
|
|
41
|
+
"@blokjs/helper": "^0.2.0",
|
|
42
|
+
"@blokjs/shared": "^0.2.0",
|
|
43
|
+
"@grpc/grpc-js": "^1.12.0",
|
|
44
|
+
"@grpc/proto-loader": "^0.7.13",
|
|
42
45
|
"@opentelemetry/api": "^1.9.0",
|
|
43
46
|
"fast-xml-parser": "^5.3.4",
|
|
44
47
|
"jsonschema": "^1.5.0",
|