@oxygen-agent/cli 1.46.0 → 1.50.37
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/README.md +13 -1
- package/dist/credentials.js +114 -43
- package/dist/index.js +371 -91
- package/dist/local-custom-http-column.js +1 -1
- package/dist/update.d.ts +31 -0
- package/dist/update.js +116 -0
- package/node_modules/@oxygen/shared/dist/billing.d.ts +2 -1
- package/node_modules/@oxygen/shared/dist/billing.js +2 -1
- package/node_modules/@oxygen/shared/dist/cell-format.d.ts +60 -0
- package/node_modules/@oxygen/shared/dist/cell-format.js +278 -0
- package/node_modules/@oxygen/shared/dist/column-types.d.ts +2 -1
- package/node_modules/@oxygen/shared/dist/column-types.js +3 -2
- package/node_modules/@oxygen/shared/dist/file-import.js +1 -1
- package/node_modules/@oxygen/shared/dist/index.d.ts +1 -0
- package/node_modules/@oxygen/shared/dist/index.js +1 -0
- package/node_modules/@oxygen/shared/dist/log.js +1 -1
- package/node_modules/@oxygen/shared/dist/version.d.ts +1 -1
- package/node_modules/@oxygen/shared/dist/version.js +1 -1
- package/node_modules/@oxygen/workflows/dist/index.d.ts +145 -143
- package/node_modules/@oxygen/workflows/dist/index.js +30 -26
- package/package.json +1 -1
|
@@ -223,8 +223,10 @@ export declare function buildRecipeManifest(input: {
|
|
|
223
223
|
sourceHash?: string;
|
|
224
224
|
createdAt?: Date;
|
|
225
225
|
}): RecipeManifest;
|
|
226
|
-
export declare function lintWorkflowManifest(
|
|
227
|
-
|
|
226
|
+
export declare function lintWorkflowManifest(// skipcq: JS-R1005
|
|
227
|
+
value: unknown, options?: WorkflowManifestValidationOptions): WorkflowLintResult;
|
|
228
|
+
export declare function lintRecipeManifest(// skipcq: JS-R1005
|
|
229
|
+
value: unknown, options?: WorkflowManifestValidationOptions): WorkflowLintResult;
|
|
228
230
|
export declare function assertRecipeManifest(value: unknown, options?: WorkflowManifestValidationOptions): asserts value is RecipeManifest;
|
|
229
231
|
export declare function assertWorkflowManifest(value: unknown, options?: WorkflowManifestValidationOptions): asserts value is WorkflowManifest;
|
|
230
232
|
export declare function validateJsonSchemaValue(value: unknown, schema: JsonSchema | undefined, path?: string): JsonSchemaValidationIssue[];
|
|
@@ -236,6 +238,147 @@ export declare function runPureWorkflowFunction(input: {
|
|
|
236
238
|
timeoutMs?: number;
|
|
237
239
|
maxOutputBytes?: number;
|
|
238
240
|
}): Promise<unknown>;
|
|
241
|
+
export declare const workflowApplySchema: {
|
|
242
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
243
|
+
readonly title: "OXYGEN Workflow Apply Input";
|
|
244
|
+
readonly type: "object";
|
|
245
|
+
readonly additionalProperties: false;
|
|
246
|
+
readonly properties: {
|
|
247
|
+
readonly manifest: {
|
|
248
|
+
readonly $ref: "#/$defs/manifest";
|
|
249
|
+
};
|
|
250
|
+
};
|
|
251
|
+
readonly required: readonly ["manifest"];
|
|
252
|
+
readonly $defs: {
|
|
253
|
+
readonly manifest: {
|
|
254
|
+
readonly type: "object";
|
|
255
|
+
readonly additionalProperties: true;
|
|
256
|
+
};
|
|
257
|
+
};
|
|
258
|
+
};
|
|
259
|
+
export declare const workflowCallSchema: {
|
|
260
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
261
|
+
readonly title: "OXYGEN Workflow Call Input";
|
|
262
|
+
readonly type: "object";
|
|
263
|
+
readonly additionalProperties: false;
|
|
264
|
+
readonly properties: {
|
|
265
|
+
readonly workflow_id: {
|
|
266
|
+
readonly type: "string";
|
|
267
|
+
};
|
|
268
|
+
readonly workflow_name: {
|
|
269
|
+
readonly type: "string";
|
|
270
|
+
};
|
|
271
|
+
readonly input: {
|
|
272
|
+
readonly type: "object";
|
|
273
|
+
readonly additionalProperties: true;
|
|
274
|
+
};
|
|
275
|
+
readonly mode: {
|
|
276
|
+
readonly enum: readonly ["dry_run", "live", "smoke_test"];
|
|
277
|
+
};
|
|
278
|
+
readonly idempotency_key: {
|
|
279
|
+
readonly type: "string";
|
|
280
|
+
};
|
|
281
|
+
};
|
|
282
|
+
};
|
|
283
|
+
export declare const workflowEventEmitSchema: {
|
|
284
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
285
|
+
readonly title: "OXYGEN Workflow Event Emit Input";
|
|
286
|
+
readonly type: "object";
|
|
287
|
+
readonly additionalProperties: false;
|
|
288
|
+
readonly properties: {
|
|
289
|
+
readonly source: {
|
|
290
|
+
readonly type: "string";
|
|
291
|
+
};
|
|
292
|
+
readonly event: {
|
|
293
|
+
readonly type: "string";
|
|
294
|
+
};
|
|
295
|
+
readonly payload: {
|
|
296
|
+
readonly type: "object";
|
|
297
|
+
readonly additionalProperties: true;
|
|
298
|
+
};
|
|
299
|
+
readonly raw_payload: {
|
|
300
|
+
readonly type: "object";
|
|
301
|
+
readonly additionalProperties: true;
|
|
302
|
+
};
|
|
303
|
+
readonly headers: {
|
|
304
|
+
readonly type: "object";
|
|
305
|
+
readonly additionalProperties: true;
|
|
306
|
+
};
|
|
307
|
+
readonly external_event_id: {
|
|
308
|
+
readonly type: "string";
|
|
309
|
+
};
|
|
310
|
+
readonly idempotency_key: {
|
|
311
|
+
readonly type: "string";
|
|
312
|
+
};
|
|
313
|
+
readonly mode: {
|
|
314
|
+
readonly enum: readonly ["dry_run", "live", "smoke_test"];
|
|
315
|
+
};
|
|
316
|
+
};
|
|
317
|
+
readonly required: readonly ["source", "event", "payload"];
|
|
318
|
+
};
|
|
319
|
+
export declare const workflowTriggerSchema: {
|
|
320
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
321
|
+
readonly title: "OXYGEN Workflow Trigger";
|
|
322
|
+
readonly type: "object";
|
|
323
|
+
readonly additionalProperties: false;
|
|
324
|
+
readonly properties: {
|
|
325
|
+
readonly type: {
|
|
326
|
+
readonly enum: readonly ["api", "webhook", "cron"];
|
|
327
|
+
};
|
|
328
|
+
readonly trigger_id: {
|
|
329
|
+
readonly type: "string";
|
|
330
|
+
};
|
|
331
|
+
readonly trigger_name: {
|
|
332
|
+
readonly type: readonly ["string", "null"];
|
|
333
|
+
};
|
|
334
|
+
readonly secret_required: {
|
|
335
|
+
readonly type: "boolean";
|
|
336
|
+
};
|
|
337
|
+
readonly idempotency_key_path: {
|
|
338
|
+
readonly type: readonly ["string", "null"];
|
|
339
|
+
};
|
|
340
|
+
readonly cron: {
|
|
341
|
+
readonly type: "string";
|
|
342
|
+
};
|
|
343
|
+
readonly timezone: {
|
|
344
|
+
readonly type: readonly ["string", "null"];
|
|
345
|
+
};
|
|
346
|
+
readonly source: {
|
|
347
|
+
readonly type: "string";
|
|
348
|
+
};
|
|
349
|
+
readonly event: {
|
|
350
|
+
readonly type: "string";
|
|
351
|
+
};
|
|
352
|
+
readonly filters: {
|
|
353
|
+
readonly type: "array";
|
|
354
|
+
readonly items: {
|
|
355
|
+
readonly type: "object";
|
|
356
|
+
readonly additionalProperties: false;
|
|
357
|
+
readonly properties: {
|
|
358
|
+
readonly path: {
|
|
359
|
+
readonly type: "string";
|
|
360
|
+
};
|
|
361
|
+
readonly op: {
|
|
362
|
+
readonly enum: readonly ["eq", "neq", "exists", "not_exists"];
|
|
363
|
+
};
|
|
364
|
+
readonly value: {};
|
|
365
|
+
};
|
|
366
|
+
readonly required: readonly ["path", "op"];
|
|
367
|
+
};
|
|
368
|
+
};
|
|
369
|
+
readonly status: {
|
|
370
|
+
readonly enum: readonly ["active", "disabled"];
|
|
371
|
+
};
|
|
372
|
+
};
|
|
373
|
+
readonly required: readonly ["type"];
|
|
374
|
+
};
|
|
375
|
+
export declare const workflowManifestSchema: {
|
|
376
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
377
|
+
readonly title: "OXYGEN Workflow Manifest";
|
|
378
|
+
readonly type: "object";
|
|
379
|
+
readonly additionalProperties: true;
|
|
380
|
+
readonly required: readonly ["manifest_version", "workflow", "steps", "source_hash", "compiler_version"];
|
|
381
|
+
};
|
|
239
382
|
export declare function getWorkflowApplySchema(): {
|
|
240
383
|
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
241
384
|
readonly title: "OXYGEN Workflow Apply Input";
|
|
@@ -535,145 +678,4 @@ export declare function getWorkflowSchema(subject?: "apply" | "call" | "event" |
|
|
|
535
678
|
};
|
|
536
679
|
};
|
|
537
680
|
};
|
|
538
|
-
export declare const workflowApplySchema: {
|
|
539
|
-
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
540
|
-
readonly title: "OXYGEN Workflow Apply Input";
|
|
541
|
-
readonly type: "object";
|
|
542
|
-
readonly additionalProperties: false;
|
|
543
|
-
readonly properties: {
|
|
544
|
-
readonly manifest: {
|
|
545
|
-
readonly $ref: "#/$defs/manifest";
|
|
546
|
-
};
|
|
547
|
-
};
|
|
548
|
-
readonly required: readonly ["manifest"];
|
|
549
|
-
readonly $defs: {
|
|
550
|
-
readonly manifest: {
|
|
551
|
-
readonly type: "object";
|
|
552
|
-
readonly additionalProperties: true;
|
|
553
|
-
};
|
|
554
|
-
};
|
|
555
|
-
};
|
|
556
|
-
export declare const workflowCallSchema: {
|
|
557
|
-
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
558
|
-
readonly title: "OXYGEN Workflow Call Input";
|
|
559
|
-
readonly type: "object";
|
|
560
|
-
readonly additionalProperties: false;
|
|
561
|
-
readonly properties: {
|
|
562
|
-
readonly workflow_id: {
|
|
563
|
-
readonly type: "string";
|
|
564
|
-
};
|
|
565
|
-
readonly workflow_name: {
|
|
566
|
-
readonly type: "string";
|
|
567
|
-
};
|
|
568
|
-
readonly input: {
|
|
569
|
-
readonly type: "object";
|
|
570
|
-
readonly additionalProperties: true;
|
|
571
|
-
};
|
|
572
|
-
readonly mode: {
|
|
573
|
-
readonly enum: readonly ["dry_run", "live", "smoke_test"];
|
|
574
|
-
};
|
|
575
|
-
readonly idempotency_key: {
|
|
576
|
-
readonly type: "string";
|
|
577
|
-
};
|
|
578
|
-
};
|
|
579
|
-
};
|
|
580
|
-
export declare const workflowEventEmitSchema: {
|
|
581
|
-
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
582
|
-
readonly title: "OXYGEN Workflow Event Emit Input";
|
|
583
|
-
readonly type: "object";
|
|
584
|
-
readonly additionalProperties: false;
|
|
585
|
-
readonly properties: {
|
|
586
|
-
readonly source: {
|
|
587
|
-
readonly type: "string";
|
|
588
|
-
};
|
|
589
|
-
readonly event: {
|
|
590
|
-
readonly type: "string";
|
|
591
|
-
};
|
|
592
|
-
readonly payload: {
|
|
593
|
-
readonly type: "object";
|
|
594
|
-
readonly additionalProperties: true;
|
|
595
|
-
};
|
|
596
|
-
readonly raw_payload: {
|
|
597
|
-
readonly type: "object";
|
|
598
|
-
readonly additionalProperties: true;
|
|
599
|
-
};
|
|
600
|
-
readonly headers: {
|
|
601
|
-
readonly type: "object";
|
|
602
|
-
readonly additionalProperties: true;
|
|
603
|
-
};
|
|
604
|
-
readonly external_event_id: {
|
|
605
|
-
readonly type: "string";
|
|
606
|
-
};
|
|
607
|
-
readonly idempotency_key: {
|
|
608
|
-
readonly type: "string";
|
|
609
|
-
};
|
|
610
|
-
readonly mode: {
|
|
611
|
-
readonly enum: readonly ["dry_run", "live", "smoke_test"];
|
|
612
|
-
};
|
|
613
|
-
};
|
|
614
|
-
readonly required: readonly ["source", "event", "payload"];
|
|
615
|
-
};
|
|
616
|
-
export declare const workflowTriggerSchema: {
|
|
617
|
-
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
618
|
-
readonly title: "OXYGEN Workflow Trigger";
|
|
619
|
-
readonly type: "object";
|
|
620
|
-
readonly additionalProperties: false;
|
|
621
|
-
readonly properties: {
|
|
622
|
-
readonly type: {
|
|
623
|
-
readonly enum: readonly ["api", "webhook", "cron"];
|
|
624
|
-
};
|
|
625
|
-
readonly trigger_id: {
|
|
626
|
-
readonly type: "string";
|
|
627
|
-
};
|
|
628
|
-
readonly trigger_name: {
|
|
629
|
-
readonly type: readonly ["string", "null"];
|
|
630
|
-
};
|
|
631
|
-
readonly secret_required: {
|
|
632
|
-
readonly type: "boolean";
|
|
633
|
-
};
|
|
634
|
-
readonly idempotency_key_path: {
|
|
635
|
-
readonly type: readonly ["string", "null"];
|
|
636
|
-
};
|
|
637
|
-
readonly cron: {
|
|
638
|
-
readonly type: "string";
|
|
639
|
-
};
|
|
640
|
-
readonly timezone: {
|
|
641
|
-
readonly type: readonly ["string", "null"];
|
|
642
|
-
};
|
|
643
|
-
readonly source: {
|
|
644
|
-
readonly type: "string";
|
|
645
|
-
};
|
|
646
|
-
readonly event: {
|
|
647
|
-
readonly type: "string";
|
|
648
|
-
};
|
|
649
|
-
readonly filters: {
|
|
650
|
-
readonly type: "array";
|
|
651
|
-
readonly items: {
|
|
652
|
-
readonly type: "object";
|
|
653
|
-
readonly additionalProperties: false;
|
|
654
|
-
readonly properties: {
|
|
655
|
-
readonly path: {
|
|
656
|
-
readonly type: "string";
|
|
657
|
-
};
|
|
658
|
-
readonly op: {
|
|
659
|
-
readonly enum: readonly ["eq", "neq", "exists", "not_exists"];
|
|
660
|
-
};
|
|
661
|
-
readonly value: {};
|
|
662
|
-
};
|
|
663
|
-
readonly required: readonly ["path", "op"];
|
|
664
|
-
};
|
|
665
|
-
};
|
|
666
|
-
readonly status: {
|
|
667
|
-
readonly enum: readonly ["active", "disabled"];
|
|
668
|
-
};
|
|
669
|
-
};
|
|
670
|
-
readonly required: readonly ["type"];
|
|
671
|
-
};
|
|
672
|
-
export declare const workflowManifestSchema: {
|
|
673
|
-
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
674
|
-
readonly title: "OXYGEN Workflow Manifest";
|
|
675
|
-
readonly type: "object";
|
|
676
|
-
readonly additionalProperties: true;
|
|
677
|
-
readonly required: readonly ["manifest_version", "workflow", "steps", "source_hash", "compiler_version"];
|
|
678
|
-
};
|
|
679
681
|
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
|
-
import * as vm from "node:vm";
|
|
2
|
+
import * as vm from "node:vm"; // skipcq: JS-C1003
|
|
3
3
|
export const WORKFLOW_MANIFEST_VERSION = 1;
|
|
4
4
|
export const WORKFLOW_COMPILER_VERSION = "oxygen-workflows-v1";
|
|
5
5
|
export const DURABLE_RECIPE_COMPILER_VERSION = "oxygen-recipes-v2";
|
|
@@ -8,16 +8,16 @@ export const DEFAULT_WORKFLOW_CRON_TIMEZONE = "UTC";
|
|
|
8
8
|
// Compatibility and determinism lint only. The Vercel sandbox process,
|
|
9
9
|
// denied network policy, and runtime global guards are the security boundary.
|
|
10
10
|
const UNSAFE_RECIPE_BUNDLE_PATTERNS = [
|
|
11
|
-
{ token: "globalThis", pattern: /\bglobalThis\b/ },
|
|
11
|
+
{ token: "globalThis", pattern: /\bglobalThis\b/ }, // skipcq: SCT-A000
|
|
12
12
|
{ token: "global", pattern: /\bglobal\b/ },
|
|
13
13
|
{ token: "process", pattern: /\bprocess\b/ },
|
|
14
14
|
{ token: "fetch", pattern: /\bfetch\b/ },
|
|
15
|
-
{ token: "XMLHttpRequest", pattern: /\bXMLHttpRequest\b/ },
|
|
15
|
+
{ token: "XMLHttpRequest", pattern: /\bXMLHttpRequest\b/ }, // skipcq: SCT-A000
|
|
16
16
|
{ token: "WebSocket", pattern: /\bWebSocket\b/ },
|
|
17
|
-
{ token: "EventSource", pattern: /\bEventSource\b/ },
|
|
17
|
+
{ token: "EventSource", pattern: /\bEventSource\b/ }, // skipcq: SCT-A000
|
|
18
18
|
{ token: "require", pattern: /\brequire\b/ },
|
|
19
|
-
{ token: "dynamic import", pattern: /\bimport(?:\s|\/\*[\s\S]*?\*\/)*\(/ },
|
|
20
|
-
{ token: "node module import", pattern: /\b(?:node:)?(?:fs|child_process|net|tls|http|https|dns|dgram|worker_threads)\b/ },
|
|
19
|
+
{ token: "dynamic import", pattern: /\bimport(?:\s|\/\*[\s\S]*?\*\/)*\(/ }, // skipcq: SCT-A000
|
|
20
|
+
{ token: "node module import", pattern: /\b(?:node:)?(?:fs|child_process|net|tls|http|https|dns|dgram|worker_threads)\b/ }, // skipcq: SCT-A000
|
|
21
21
|
{ token: "eval", pattern: /\beval\b/ },
|
|
22
22
|
{ token: "Function", pattern: /\bFunction\b/ },
|
|
23
23
|
{ token: "constructor", pattern: /\bconstructor\b/ },
|
|
@@ -26,7 +26,7 @@ const UNSAFE_RECIPE_BUNDLE_PATTERNS = [
|
|
|
26
26
|
{ token: "Math.random", pattern: /\bMath\s*\.\s*random\b/ },
|
|
27
27
|
{ token: "crypto.randomUUID", pattern: /\bcrypto\s*\.\s*randomUUID\b/ },
|
|
28
28
|
{ token: "setTimeout", pattern: /\bsetTimeout\b/ },
|
|
29
|
-
{ token: "setInterval", pattern: /\bsetInterval\b/ },
|
|
29
|
+
{ token: "setInterval", pattern: /\bsetInterval\b/ }, // skipcq: SCT-A000
|
|
30
30
|
];
|
|
31
31
|
export function defineWorkflow(input) {
|
|
32
32
|
return {
|
|
@@ -195,7 +195,8 @@ export function buildRecipeManifest(input) {
|
|
|
195
195
|
};
|
|
196
196
|
return manifest;
|
|
197
197
|
}
|
|
198
|
-
export function lintWorkflowManifest(
|
|
198
|
+
export function lintWorkflowManifest(// skipcq: JS-R1005
|
|
199
|
+
value, options = {}) {
|
|
199
200
|
if (isRecord(value)
|
|
200
201
|
&& typeof value.compiler_version === "string"
|
|
201
202
|
&& value.compiler_version.startsWith("oxygen-recipes-")) {
|
|
@@ -294,7 +295,8 @@ export function lintWorkflowManifest(value, options = {}) {
|
|
|
294
295
|
}
|
|
295
296
|
return { ok: issues.length === 0, issues };
|
|
296
297
|
}
|
|
297
|
-
export function lintRecipeManifest(
|
|
298
|
+
export function lintRecipeManifest(// skipcq: JS-R1005
|
|
299
|
+
value, options = {}) {
|
|
298
300
|
const issues = [];
|
|
299
301
|
const add = (path, code, message) => issues.push({ path, code, message });
|
|
300
302
|
if (!isRecord(value)) {
|
|
@@ -419,21 +421,6 @@ export async function runPureWorkflowFunction(input) {
|
|
|
419
421
|
: result;
|
|
420
422
|
return enforceJsonOutput(resolved, maxOutputBytes);
|
|
421
423
|
}
|
|
422
|
-
export function getWorkflowApplySchema() {
|
|
423
|
-
return workflowApplySchema;
|
|
424
|
-
}
|
|
425
|
-
export function getWorkflowSchema(subject = "apply") {
|
|
426
|
-
const schemas = {
|
|
427
|
-
apply: workflowApplySchema,
|
|
428
|
-
call: workflowCallSchema,
|
|
429
|
-
event: workflowEventEmitSchema,
|
|
430
|
-
trigger: workflowTriggerSchema,
|
|
431
|
-
manifest: workflowManifestSchema,
|
|
432
|
-
};
|
|
433
|
-
if (subject === "all")
|
|
434
|
-
return { schemas };
|
|
435
|
-
return schemas[subject];
|
|
436
|
-
}
|
|
437
424
|
export const workflowApplySchema = {
|
|
438
425
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
439
426
|
title: "OXYGEN Workflow Apply Input",
|
|
@@ -516,7 +503,23 @@ export const workflowManifestSchema = {
|
|
|
516
503
|
additionalProperties: true,
|
|
517
504
|
required: ["manifest_version", "workflow", "steps", "source_hash", "compiler_version"],
|
|
518
505
|
};
|
|
519
|
-
function
|
|
506
|
+
export function getWorkflowApplySchema() {
|
|
507
|
+
return workflowApplySchema;
|
|
508
|
+
}
|
|
509
|
+
export function getWorkflowSchema(subject = "apply") {
|
|
510
|
+
const schemas = {
|
|
511
|
+
apply: workflowApplySchema,
|
|
512
|
+
call: workflowCallSchema,
|
|
513
|
+
event: workflowEventEmitSchema,
|
|
514
|
+
trigger: workflowTriggerSchema,
|
|
515
|
+
manifest: workflowManifestSchema,
|
|
516
|
+
};
|
|
517
|
+
if (subject === "all")
|
|
518
|
+
return { schemas };
|
|
519
|
+
return schemas[subject];
|
|
520
|
+
}
|
|
521
|
+
function validateJsonSchemaValueInto(// skipcq: JS-R1005
|
|
522
|
+
value, schema, path, issues) {
|
|
520
523
|
const startCount = issues.length;
|
|
521
524
|
if (schema.const !== undefined && !jsonEqual(value, schema.const)) {
|
|
522
525
|
issues.push({
|
|
@@ -638,7 +641,8 @@ function formatSchemaTypes(types) {
|
|
|
638
641
|
function jsonEqual(left, right) {
|
|
639
642
|
return JSON.stringify(left) === JSON.stringify(right);
|
|
640
643
|
}
|
|
641
|
-
function validateTrigger(
|
|
644
|
+
function validateTrigger(// skipcq: JS-R1005
|
|
645
|
+
value, path, add) {
|
|
642
646
|
if (!isRecord(value)) {
|
|
643
647
|
add(path, "invalid_trigger", "Workflow trigger must be an object.");
|
|
644
648
|
return;
|