@blokjs/helper 0.2.1 → 0.6.0

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 (46) hide show
  1. package/dist/components/AddElse.d.ts +15 -0
  2. package/dist/components/AddIf.d.ts +15 -0
  3. package/dist/components/StepNode.d.ts +6 -0
  4. package/dist/components/StepNode.js +8 -0
  5. package/dist/components/StepNode.js.map +1 -1
  6. package/dist/components/Trigger.d.ts +10 -2
  7. package/dist/components/Trigger.js +16 -5
  8. package/dist/components/Trigger.js.map +1 -1
  9. package/dist/components/branch.d.ts +44 -0
  10. package/dist/components/branch.js +57 -0
  11. package/dist/components/branch.js.map +1 -0
  12. package/dist/components/forEach.d.ts +53 -0
  13. package/dist/components/forEach.js +64 -0
  14. package/dist/components/forEach.js.map +1 -0
  15. package/dist/components/loop.d.ts +52 -0
  16. package/dist/components/loop.js +54 -0
  17. package/dist/components/loop.js.map +1 -0
  18. package/dist/components/switchOn.d.ts +68 -0
  19. package/dist/components/switchOn.js +76 -0
  20. package/dist/components/switchOn.js.map +1 -0
  21. package/dist/components/tryCatch.d.ts +63 -0
  22. package/dist/components/tryCatch.js +68 -0
  23. package/dist/components/tryCatch.js.map +1 -0
  24. package/dist/components/workflowV2.d.ts +83 -0
  25. package/dist/components/workflowV2.js +84 -0
  26. package/dist/components/workflowV2.js.map +1 -0
  27. package/dist/index.d.ts +12 -3
  28. package/dist/index.js +25 -4
  29. package/dist/index.js.map +1 -1
  30. package/dist/proxy/$.d.ts +102 -0
  31. package/dist/proxy/$.js +130 -0
  32. package/dist/proxy/$.js.map +1 -0
  33. package/dist/types/StepOpts.d.ts +723 -3
  34. package/dist/types/StepOpts.js +702 -3
  35. package/dist/types/StepOpts.js.map +1 -1
  36. package/dist/types/TriggerOpts.d.ts +1600 -35
  37. package/dist/types/TriggerOpts.js +601 -29
  38. package/dist/types/TriggerOpts.js.map +1 -1
  39. package/dist/types/WorkflowOpts.d.ts +478 -28
  40. package/dist/types/WorkflowOpts.js +66 -3
  41. package/dist/types/WorkflowOpts.js.map +1 -1
  42. package/dist/utils/parseDuration.d.ts +33 -0
  43. package/dist/utils/parseDuration.js +78 -0
  44. package/dist/utils/parseDuration.js.map +1 -0
  45. package/dist/workflow.schema.json +662 -0
  46. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"WorkflowOpts.js","sourceRoot":"","sources":["../../src/types/WorkflowOpts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAElE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,IAAI,EAAE,CAAC;SACL,MAAM,CAAC;QACP,cAAc,EAAE,kBAAkB;QAClC,kBAAkB,EAAE,uBAAuB;KAC3C,CAAC;SACD,GAAG,CAAC,CAAC,CAAC;IACR,OAAO,EAAE,CAAC;SACR,MAAM,CAAC;QACP,cAAc,EAAE,qBAAqB;QACrC,kBAAkB,EAAE,0BAA0B;KAC9C,CAAC;SACD,GAAG,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC;IAC9C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE;IACzC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC,QAAQ,EAAE;IACxD,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC,QAAQ,EAAE;CAC/D,CAAC,CAAC"}
1
+ {"version":3,"file":"WorkflowOpts.js","sourceRoot":"","sources":["../../src/types/WorkflowOpts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,IAAI,EAAE,CAAC;SACL,MAAM,CAAC;QACP,cAAc,EAAE,kBAAkB;QAClC,kBAAkB,EAAE,uBAAuB;KAC3C,CAAC;SACD,GAAG,CAAC,CAAC,CAAC;IACR,OAAO,EAAE,CAAC;SACR,MAAM,CAAC;QACP,cAAc,EAAE,qBAAqB;QACrC,kBAAkB,EAAE,0BAA0B;KAC9C,CAAC;SACD,GAAG,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC;IAC9C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE;IACzC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC,QAAQ,EAAE;IACxD,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;CACzD,CAAC,CAAC;AAIH,gFAAgF;AAChF,iCAAiC;AACjC,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,2DAA2D,CAAC;IAC7F,OAAO,EAAE,CAAC;SACR,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC;SAC5C,QAAQ,CAAC,+DAA+D,CAAC;IAC3E,WAAW,EAAE,CAAC;SACZ,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,iFAAiF,CAAC;IAC7F,OAAO,EAAE,CAAC;SACR,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;SACnC,QAAQ,EAAE;SACV,QAAQ,CACR,yEAAyE;QACxE,2EAA2E;QAC3E,6EAA6E;QAC7E,sFAAsF,CACvF;IACF,UAAU,EAAE,CAAC;SACX,OAAO,CAAC,IAAI,CAAC;SACb,QAAQ,EAAE;SACV,QAAQ,CACR,sFAAsF;QACrF,sFAAsF;QACtF,uFAAuF;QACvF,uFAAuF;QACvF,uEAAuE,CACxE;IACF,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,oEAAoE,CAAC;CAClH,CAAC,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Parse a duration value to milliseconds.
3
+ *
4
+ * Accepts:
5
+ * - A non-negative finite number (interpreted as milliseconds)
6
+ * - A single-unit string: `"500ms"`, `"30s"`, `"5m"`, `"2h"`, `"1d"`
7
+ *
8
+ * Rejects:
9
+ * - Negative numbers, NaN, Infinity
10
+ * - Empty strings, whitespace-only strings
11
+ * - Multi-unit strings (`"1h30m"`) — split into separate fields if needed
12
+ * - Fractional values (`"1.5h"`) — express as a smaller unit (`"90m"`)
13
+ * - Unknown units (`"5y"`)
14
+ *
15
+ * The narrow grammar is deliberate: it makes parsing predictable and
16
+ * round-trippable. For arbitrarily complex schedules, use the cron trigger.
17
+ *
18
+ * @example
19
+ * parseDuration(5000) // → 5000
20
+ * parseDuration("500ms") // → 500
21
+ * parseDuration("30s") // → 30000
22
+ * parseDuration("5m") // → 300000
23
+ * parseDuration("2h") // → 7200000
24
+ * parseDuration("1d") // → 86400000
25
+ *
26
+ * @throws Error with a helpful message identifying the offending input.
27
+ */
28
+ export declare function parseDuration(input: number | string): number;
29
+ /**
30
+ * Same as {@link parseDuration} but returns null instead of throwing on
31
+ * invalid input. Useful when validating user-supplied config defensively.
32
+ */
33
+ export declare function tryParseDuration(input: unknown): number | null;
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Parse a duration value to milliseconds.
3
+ *
4
+ * Accepts:
5
+ * - A non-negative finite number (interpreted as milliseconds)
6
+ * - A single-unit string: `"500ms"`, `"30s"`, `"5m"`, `"2h"`, `"1d"`
7
+ *
8
+ * Rejects:
9
+ * - Negative numbers, NaN, Infinity
10
+ * - Empty strings, whitespace-only strings
11
+ * - Multi-unit strings (`"1h30m"`) — split into separate fields if needed
12
+ * - Fractional values (`"1.5h"`) — express as a smaller unit (`"90m"`)
13
+ * - Unknown units (`"5y"`)
14
+ *
15
+ * The narrow grammar is deliberate: it makes parsing predictable and
16
+ * round-trippable. For arbitrarily complex schedules, use the cron trigger.
17
+ *
18
+ * @example
19
+ * parseDuration(5000) // → 5000
20
+ * parseDuration("500ms") // → 500
21
+ * parseDuration("30s") // → 30000
22
+ * parseDuration("5m") // → 300000
23
+ * parseDuration("2h") // → 7200000
24
+ * parseDuration("1d") // → 86400000
25
+ *
26
+ * @throws Error with a helpful message identifying the offending input.
27
+ */
28
+ export function parseDuration(input) {
29
+ if (typeof input === "number") {
30
+ if (!Number.isFinite(input)) {
31
+ throw new Error(`Invalid duration: ${input} (must be a finite number).`);
32
+ }
33
+ if (input < 0) {
34
+ throw new Error(`Invalid duration: ${input} (must be >= 0).`);
35
+ }
36
+ // Allow fractional ms for raw numbers (e.g. precise jitter math).
37
+ // Floor to integer ms — sub-ms scheduling is meaningless for setTimeout.
38
+ return Math.floor(input);
39
+ }
40
+ if (typeof input !== "string") {
41
+ throw new Error(`Invalid duration: ${typeof input} (must be a number or string).`);
42
+ }
43
+ const trimmed = input.trim();
44
+ if (trimmed.length === 0) {
45
+ throw new Error("Invalid duration: empty string.");
46
+ }
47
+ // Single-unit grammar: <integer><unit>
48
+ // Units: ms (milliseconds), s (seconds), m (minutes), h (hours), d (days)
49
+ const match = /^(\d+)(ms|s|m|h|d)$/.exec(trimmed);
50
+ if (!match) {
51
+ throw new Error(`Invalid duration: ${JSON.stringify(input)}. Expected a non-negative integer followed by a unit (ms, s, m, h, d), e.g. "500ms", "30s", "5m", "2h", "1d". Multi-unit strings ("1h30m") and fractional values ("1.5h") are not supported.`);
52
+ }
53
+ const value = Number.parseInt(match[1], 10);
54
+ const unit = match[2];
55
+ const multipliers = {
56
+ ms: 1,
57
+ s: 1000,
58
+ m: 60_000,
59
+ h: 3_600_000,
60
+ d: 86_400_000,
61
+ };
62
+ return value * multipliers[unit];
63
+ }
64
+ /**
65
+ * Same as {@link parseDuration} but returns null instead of throwing on
66
+ * invalid input. Useful when validating user-supplied config defensively.
67
+ */
68
+ export function tryParseDuration(input) {
69
+ if (typeof input !== "number" && typeof input !== "string")
70
+ return null;
71
+ try {
72
+ return parseDuration(input);
73
+ }
74
+ catch {
75
+ return null;
76
+ }
77
+ }
78
+ //# sourceMappingURL=parseDuration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseDuration.js","sourceRoot":"","sources":["../../src/utils/parseDuration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,aAAa,CAAC,KAAsB;IACnD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,qBAAqB,KAAK,6BAA6B,CAAC,CAAC;QAC1E,CAAC;QACD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,qBAAqB,KAAK,kBAAkB,CAAC,CAAC;QAC/D,CAAC;QACD,kEAAkE;QAClE,yEAAyE;QACzE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,qBAAqB,OAAO,KAAK,gCAAgC,CAAC,CAAC;IACpF,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACpD,CAAC;IAED,uCAAuC;IACvC,0EAA0E;IAC1E,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACd,qBAAqB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,8LAA8L,CACxO,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAEtB,MAAM,WAAW,GAA2B;QAC3C,EAAE,EAAE,CAAC;QACL,CAAC,EAAE,IAAI;QACP,CAAC,EAAE,MAAM;QACT,CAAC,EAAE,SAAS;QACZ,CAAC,EAAE,UAAU;KACb,CAAC;IAEF,OAAO,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACxE,IAAI,CAAC;QACJ,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC"}