neuron-inspector 1.2.1 → 1.3.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 (85) hide show
  1. package/dist/collections/assertions.js +11 -0
  2. package/dist/collections/assertions.js.map +1 -1
  3. package/dist/collections/dynamic-vars-core.d.ts +79 -0
  4. package/dist/collections/dynamic-vars-core.js +214 -0
  5. package/dist/collections/dynamic-vars-core.js.map +1 -0
  6. package/dist/collections/dynamic-vars.d.ts +2 -61
  7. package/dist/collections/dynamic-vars.js +6 -146
  8. package/dist/collections/dynamic-vars.js.map +1 -1
  9. package/dist/collections/encoding.d.ts +3 -0
  10. package/dist/collections/encoding.js +20 -0
  11. package/dist/collections/encoding.js.map +1 -0
  12. package/dist/collections/executor.d.ts +114 -5
  13. package/dist/collections/executor.js +315 -91
  14. package/dist/collections/executor.js.map +1 -1
  15. package/dist/collections/index.d.ts +11 -3
  16. package/dist/collections/index.js +7 -1
  17. package/dist/collections/index.js.map +1 -1
  18. package/dist/collections/masking.d.ts +42 -0
  19. package/dist/collections/masking.js +188 -0
  20. package/dist/collections/masking.js.map +1 -0
  21. package/dist/collections/resolver-core.d.ts +74 -0
  22. package/dist/collections/resolver-core.js +309 -0
  23. package/dist/collections/resolver-core.js.map +1 -0
  24. package/dist/collections/resolver.d.ts +9 -62
  25. package/dist/collections/resolver.js +21 -281
  26. package/dist/collections/resolver.js.map +1 -1
  27. package/dist/collections/scenario-run.d.ts +33 -0
  28. package/dist/collections/scenario-run.js +68 -0
  29. package/dist/collections/scenario-run.js.map +1 -0
  30. package/dist/collections/script-api.d.ts +18 -0
  31. package/dist/collections/script-api.js +208 -0
  32. package/dist/collections/script-api.js.map +1 -0
  33. package/dist/collections/scripts.d.ts +1 -8
  34. package/dist/collections/scripts.js +6 -196
  35. package/dist/collections/scripts.js.map +1 -1
  36. package/dist/collections/slug.d.ts +2 -0
  37. package/dist/collections/slug.js +8 -0
  38. package/dist/collections/slug.js.map +1 -0
  39. package/dist/collections/store.d.ts +5 -2
  40. package/dist/collections/store.js +6 -6
  41. package/dist/collections/store.js.map +1 -1
  42. package/dist/collections/tools.d.ts +8 -1
  43. package/dist/collections/tools.js +253 -90
  44. package/dist/collections/tools.js.map +1 -1
  45. package/dist/collections/types.d.ts +42 -3
  46. package/dist/correlation.js +10 -0
  47. package/dist/correlation.js.map +1 -1
  48. package/dist/extension-slot.d.ts +45 -0
  49. package/dist/extension-slot.js +81 -0
  50. package/dist/extension-slot.js.map +1 -0
  51. package/dist/monitor.d.ts +5 -0
  52. package/dist/monitor.js +7 -2
  53. package/dist/monitor.js.map +1 -1
  54. package/dist/server.js +113 -25
  55. package/dist/server.js.map +1 -1
  56. package/dist/tools.js +1 -1
  57. package/dist/tools.js.map +1 -1
  58. package/package.json +3 -2
  59. package/dist/collections/__tests__/assertions.test.d.ts +0 -1
  60. package/dist/collections/__tests__/assertions.test.js +0 -203
  61. package/dist/collections/__tests__/assertions.test.js.map +0 -1
  62. package/dist/collections/__tests__/dynamic-vars.test.d.ts +0 -1
  63. package/dist/collections/__tests__/dynamic-vars.test.js +0 -169
  64. package/dist/collections/__tests__/dynamic-vars.test.js.map +0 -1
  65. package/dist/collections/__tests__/execution.test.d.ts +0 -1
  66. package/dist/collections/__tests__/execution.test.js +0 -271
  67. package/dist/collections/__tests__/execution.test.js.map +0 -1
  68. package/dist/collections/__tests__/integration.test.d.ts +0 -1
  69. package/dist/collections/__tests__/integration.test.js +0 -478
  70. package/dist/collections/__tests__/integration.test.js.map +0 -1
  71. package/dist/collections/__tests__/merge.test.d.ts +0 -1
  72. package/dist/collections/__tests__/merge.test.js +0 -411
  73. package/dist/collections/__tests__/merge.test.js.map +0 -1
  74. package/dist/collections/__tests__/resolver.test.d.ts +0 -1
  75. package/dist/collections/__tests__/resolver.test.js +0 -282
  76. package/dist/collections/__tests__/resolver.test.js.map +0 -1
  77. package/dist/collections/__tests__/scenario.test.d.ts +0 -1
  78. package/dist/collections/__tests__/scenario.test.js +0 -367
  79. package/dist/collections/__tests__/scenario.test.js.map +0 -1
  80. package/dist/collections/__tests__/scripts.test.d.ts +0 -1
  81. package/dist/collections/__tests__/scripts.test.js +0 -245
  82. package/dist/collections/__tests__/scripts.test.js.map +0 -1
  83. package/dist/collections/__tests__/store.test.d.ts +0 -1
  84. package/dist/collections/__tests__/store.test.js +0 -313
  85. package/dist/collections/__tests__/store.test.js.map +0 -1
@@ -64,7 +64,18 @@ const builtinOperators = {
64
64
  return typeof expected === "number" && len < expected;
65
65
  },
66
66
  type: (actual, expected) => typeof actual === expected,
67
+ /** expect is an array; passes when actual equals any member. */
68
+ in: (actual, expected) => Array.isArray(expected) && expected.some((e) => sameValue(actual, e)),
69
+ not_in: (actual, expected) => Array.isArray(expected) && !expected.some((e) => sameValue(actual, e)),
67
70
  };
71
+ function sameValue(a, b) {
72
+ if (a === b)
73
+ return true;
74
+ if (typeof a === "object" && a !== null && typeof b === "object" && b !== null) {
75
+ return JSON.stringify(a) === JSON.stringify(b);
76
+ }
77
+ return false;
78
+ }
68
79
  // ── OperatorRegistry ────────────────────────────────────────────
69
80
  export class OperatorRegistry {
70
81
  operators = {};
@@ -1 +1 @@
1
- {"version":3,"file":"assertions.js","sourceRoot":"","sources":["../../src/collections/assertions.ts"],"names":[],"mappings":"AAQA,mEAAmE;AAEnE,0FAA0F;AAC1F,MAAM,UAAU,MAAM,CAAC,GAAY,EAAE,IAAY;IAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,OAAO,GAAY,GAAG,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAChE,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QAClD,OAAO,GAAI,OAAmC,CAAC,GAAG,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAuB,EAAE,KAAa;IACtE,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC;IAC7C,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC;IACzC,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACrF,IAAI,KAAK,KAAK,cAAc;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC5D,IAAI,KAAK,KAAK,aAAa;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;IAC1D,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9E,+BAA+B;IAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACpC,CAAC;AAED,mEAAmE;AAEnE,MAAM,gBAAgB,GAAsC;IAC1D,MAAM,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,MAAM,KAAK,QAAQ;IAEjD,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI;IAE3D,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI;IAE/D,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAC7B,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAEzF,OAAO,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE;QAC5B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC7E,IAAI,CAAC;YACH,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,EAAE,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,MAAM,GAAG,QAAQ;IACzG,EAAE,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,MAAM,GAAG,QAAQ;IACzG,GAAG,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,MAAM,IAAI,QAAQ;IAC3G,GAAG,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,MAAM,IAAI,QAAQ;IAE3G,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;IAE1C,SAAS,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE;QAC9B,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpG,OAAO,OAAO,QAAQ,KAAK,QAAQ,IAAI,GAAG,GAAG,QAAQ,CAAC;IACxD,CAAC;IAED,SAAS,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE;QAC9B,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC1G,OAAO,OAAO,QAAQ,KAAK,QAAQ,IAAI,GAAG,GAAG,QAAQ,CAAC;IACxD,CAAC;IAED,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,OAAO,MAAM,KAAK,QAAQ;CACvD,CAAC;AAEF,mEAAmE;AAEnE,MAAM,OAAO,gBAAgB;IACnB,SAAS,GAAsC,EAAE,CAAC;IAE1D;QACE,kCAAkC;QAClC,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC1D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,EAAU,EAAE,EAAqB;QACxC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;IAC1B,CAAC;IAED,QAAQ,CAAC,SAAoB,EAAE,MAAuB;QACpD,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,IAAI,QAAQ,CAAC;QACpC,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;QAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAEtC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO;gBACL,MAAM,EAAE,KAAK;gBACb,KAAK,EAAE,SAAS,CAAC,KAAK;gBACtB,EAAE;gBACF,QAAQ,EAAE,SAAS,CAAC,MAAM;gBAC1B,MAAM;aACP,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;QACpD,OAAO;YACL,MAAM;YACN,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,EAAE;YACF,QAAQ,EAAE,SAAS,CAAC,MAAM;YAC1B,MAAM;SACP,CAAC;IACJ,CAAC;IAED,gDAAgD;IAChD,WAAW,CAAC,UAAuB,EAAE,MAAuB;QAC1D,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACzD,CAAC;CACF"}
1
+ {"version":3,"file":"assertions.js","sourceRoot":"","sources":["../../src/collections/assertions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ import type { DynamicVarProvider, ResolverContext } from "./types.js";
2
+ export declare class DynamicVarRegistry {
3
+ private providers;
4
+ register(provider: DynamicVarProvider): void;
5
+ resolve(ref: string, context: ResolverContext): string | undefined;
6
+ }
7
+ export declare function parseArgs(ref: string): {
8
+ name: string;
9
+ args: string[];
10
+ };
11
+ export declare class UuidProvider implements DynamicVarProvider {
12
+ canHandle(ref: string): boolean;
13
+ generate(_ref: string, _ctx: ResolverContext): string;
14
+ }
15
+ export declare class TimestampProvider implements DynamicVarProvider {
16
+ canHandle(ref: string): boolean;
17
+ generate(_ref: string, _ctx: ResolverContext): string;
18
+ }
19
+ export declare class IsoTimestampProvider implements DynamicVarProvider {
20
+ canHandle(ref: string): boolean;
21
+ generate(_ref: string, _ctx: ResolverContext): string;
22
+ }
23
+ export declare class RandomIntProvider implements DynamicVarProvider {
24
+ canHandle(ref: string): boolean;
25
+ generate(ref: string, _ctx: ResolverContext): string;
26
+ }
27
+ export declare class RandomEmailProvider implements DynamicVarProvider {
28
+ canHandle(ref: string): boolean;
29
+ generate(_ref: string, _ctx: ResolverContext): string;
30
+ }
31
+ export declare class RandomNameProvider implements DynamicVarProvider {
32
+ canHandle(ref: string): boolean;
33
+ generate(_ref: string, _ctx: ResolverContext): string;
34
+ }
35
+ export declare class RandomPhoneProvider implements DynamicVarProvider {
36
+ canHandle(ref: string): boolean;
37
+ generate(_ref: string, _ctx: ResolverContext): string;
38
+ }
39
+ export declare class RandomStringProvider implements DynamicVarProvider {
40
+ canHandle(ref: string): boolean;
41
+ generate(ref: string, _ctx: ResolverContext): string;
42
+ }
43
+ export declare class Base64Provider implements DynamicVarProvider {
44
+ canHandle(ref: string): boolean;
45
+ generate(ref: string, _ctx: ResolverContext): string;
46
+ }
47
+ /** Throws a clear error for anything Intl doesn't know. */
48
+ export declare function assertTimeZone(tz: string): void;
49
+ export declare function formatInZone(date: Date, format: string, tz?: string): string;
50
+ export declare function formatUtc(date: Date, format: string): string;
51
+ /** {{$now}} → ISO 8601 (UTC, unchanged by timezone). {{$now(+1h)}}, {{$now(,YYYY-MM-DD HH:mm)}} (in the zone). */
52
+ export declare class NowProvider implements DynamicVarProvider {
53
+ canHandle(ref: string): boolean;
54
+ generate(ref: string, ctx: ResolverContext): string;
55
+ }
56
+ /** {{$today}} → date YYYY-MM-DD in the zone (UTC unless set). {{$today(-1d)}}, {{$today(DD/MM/YYYY)}}, {{$today(,,Africa/Lagos)}}. */
57
+ export declare class TodayProvider implements DynamicVarProvider {
58
+ canHandle(ref: string): boolean;
59
+ generate(ref: string, ctx: ResolverContext): string;
60
+ }
61
+ export declare class AiPlaceholderProvider implements DynamicVarProvider {
62
+ canHandle(ref: string): boolean;
63
+ generate(ref: string, _ctx: ResolverContext): string;
64
+ }
65
+ export declare class FakerPlaceholderProvider implements DynamicVarProvider {
66
+ canHandle(ref: string): boolean;
67
+ generate(ref: string, _ctx: ResolverContext): string;
68
+ }
69
+ export declare class PreviousResponseProvider implements DynamicVarProvider {
70
+ canHandle(ref: string): boolean;
71
+ generate(_ref: string, _ctx: ResolverContext): string;
72
+ }
73
+ export declare class CollectionStatsProvider implements DynamicVarProvider {
74
+ canHandle(ref: string): boolean;
75
+ generate(_ref: string, _ctx: ResolverContext): string;
76
+ }
77
+ /** Same providers and order as the bridge's default registry, minus $hmac / $env / $file. */
78
+ export declare function buildCoreRegistry(): DynamicVarRegistry;
79
+ export declare function registerCoreProviders(registry: DynamicVarRegistry): void;
@@ -0,0 +1,214 @@
1
+ import { toBase64 } from "./encoding.js";
2
+ const randomUUID = () => globalThis.crypto.randomUUID();
3
+ // ── Provider registry ───────────────────────────────────────────
4
+ export class DynamicVarRegistry {
5
+ providers = [];
6
+ register(provider) {
7
+ this.providers.push(provider);
8
+ }
9
+ resolve(ref, context) {
10
+ for (const provider of this.providers) {
11
+ if (provider.canHandle(ref)) {
12
+ return provider.generate(ref, context);
13
+ }
14
+ }
15
+ return undefined;
16
+ }
17
+ }
18
+ // ── Helper: parse function-style refs like $randomInt(1,100) ────
19
+ export function parseArgs(ref) {
20
+ const parenIdx = ref.indexOf("(");
21
+ if (parenIdx < 0)
22
+ return { name: ref, args: [] };
23
+ const name = ref.slice(0, parenIdx);
24
+ const argsStr = ref.slice(parenIdx + 1, -1); // strip parens
25
+ return { name, args: argsStr.split(",").map((a) => a.trim()) };
26
+ }
27
+ // ── Built-in providers ──────────────────────────────────────────
28
+ export class UuidProvider {
29
+ canHandle(ref) { return ref === "$uuid"; }
30
+ generate(_ref, _ctx) { return randomUUID(); }
31
+ }
32
+ export class TimestampProvider {
33
+ canHandle(ref) { return ref === "$timestamp"; }
34
+ generate(_ref, _ctx) { return String(Math.floor(Date.now() / 1000)); }
35
+ }
36
+ export class IsoTimestampProvider {
37
+ canHandle(ref) { return ref === "$isoTimestamp"; }
38
+ generate(_ref, _ctx) { return new Date().toISOString(); }
39
+ }
40
+ export class RandomIntProvider {
41
+ canHandle(ref) { return ref.startsWith("$randomInt("); }
42
+ generate(ref, _ctx) {
43
+ const { args } = parseArgs(ref);
44
+ const min = parseInt(args[0] ?? "0", 10);
45
+ const max = parseInt(args[1] ?? "100", 10);
46
+ return String(Math.floor(Math.random() * (max - min + 1)) + min);
47
+ }
48
+ }
49
+ export class RandomEmailProvider {
50
+ canHandle(ref) { return ref === "$randomEmail"; }
51
+ generate(_ref, _ctx) {
52
+ const id = randomUUID().slice(0, 8);
53
+ const domains = ["example.com", "test.org", "mail.dev"];
54
+ return `user-${id}@${domains[Math.floor(Math.random() * domains.length)]}`;
55
+ }
56
+ }
57
+ export class RandomNameProvider {
58
+ canHandle(ref) { return ref === "$randomName"; }
59
+ generate(_ref, _ctx) {
60
+ const firsts = ["Ade", "Bola", "Chidi", "Dayo", "Emeka", "Funke", "Gbenga", "Halima", "Ikenna", "Jumoke"];
61
+ const lasts = ["Okafor", "Adeyemi", "Ibrahim", "Nwosu", "Bakare", "Olumide", "Chukwu", "Abubakar", "Obi", "Lawal"];
62
+ return `${firsts[Math.floor(Math.random() * firsts.length)]} ${lasts[Math.floor(Math.random() * lasts.length)]}`;
63
+ }
64
+ }
65
+ export class RandomPhoneProvider {
66
+ canHandle(ref) { return ref === "$randomPhone"; }
67
+ generate(_ref, _ctx) {
68
+ const prefix = "+234";
69
+ const number = String(Math.floor(Math.random() * 9_000_000_000) + 1_000_000_000);
70
+ return `${prefix}${number}`;
71
+ }
72
+ }
73
+ export class RandomStringProvider {
74
+ canHandle(ref) { return ref.startsWith("$randomString("); }
75
+ generate(ref, _ctx) {
76
+ const { args } = parseArgs(ref);
77
+ const len = parseInt(args[0] || "16", 10) || 16;
78
+ const chars = "abcdefghijklmnopqrstuvwxyz0123456789";
79
+ let result = "";
80
+ for (let i = 0; i < len; i++) {
81
+ result += chars[Math.floor(Math.random() * chars.length)];
82
+ }
83
+ return result;
84
+ }
85
+ }
86
+ export class Base64Provider {
87
+ canHandle(ref) { return ref.startsWith("$base64("); }
88
+ generate(ref, _ctx) {
89
+ const { args } = parseArgs(ref);
90
+ return toBase64(args[0] ?? "");
91
+ }
92
+ }
93
+ const OFFSET = /^([+-]?\d+)(ms|s|m|h|d)$/;
94
+ const OFFSET_MS = { ms: 1, s: 1000, m: 60_000, h: 3_600_000, d: 86_400_000 };
95
+ /** Throws a clear error for anything Intl doesn't know. */
96
+ export function assertTimeZone(tz) {
97
+ try {
98
+ new Intl.DateTimeFormat("en-US", { timeZone: tz });
99
+ }
100
+ catch {
101
+ throw new Error(`Unknown timezone '${tz}'. Use an IANA name like 'Africa/Lagos' or 'UTC'.`);
102
+ }
103
+ }
104
+ /**
105
+ * Args for the date providers: `(offset)`, `(offset, format)`, `(format)`, plus an
106
+ * optional third `timezone`. offset like +1d / -2h / 30m; format tokens
107
+ * YYYY MM DD HH mm ss SSS. The zone comes from the arg, else the environment's
108
+ * `timezone`, else `defaults.timezone`, else UTC.
109
+ */
110
+ function dateArgs(ref, ctx) {
111
+ const { args } = parseArgs(ref);
112
+ let date = new Date();
113
+ let format;
114
+ const [a0 = "", a1 = "", a2 = ""] = args;
115
+ const m = a0.match(OFFSET);
116
+ if (m)
117
+ date = new Date(date.getTime() + parseInt(m[1], 10) * (OFFSET_MS[m[2]] ?? 0));
118
+ else if (a0)
119
+ format = a0;
120
+ if (a1)
121
+ format = a1;
122
+ const tz = a2 || ctx.environment?.timezone || ctx.collection?.defaults?.timezone || "UTC";
123
+ assertTimeZone(tz);
124
+ return { date, format, tz };
125
+ }
126
+ export function formatInZone(date, format, tz = "UTC") {
127
+ const parts = Object.fromEntries(new Intl.DateTimeFormat("en-US", {
128
+ timeZone: tz,
129
+ hourCycle: "h23",
130
+ year: "numeric",
131
+ month: "2-digit",
132
+ day: "2-digit",
133
+ hour: "2-digit",
134
+ minute: "2-digit",
135
+ second: "2-digit",
136
+ }).formatToParts(date).map((p) => [p.type, p.value]));
137
+ const tokens = {
138
+ YYYY: parts.year,
139
+ MM: parts.month,
140
+ DD: parts.day,
141
+ HH: parts.hour,
142
+ mm: parts.minute,
143
+ ss: parts.second,
144
+ SSS: String(date.getUTCMilliseconds()).padStart(3, "0"),
145
+ };
146
+ return format.replace(/YYYY|SSS|MM|DD|HH|mm|ss/g, (t) => tokens[t]);
147
+ }
148
+ export function formatUtc(date, format) {
149
+ return formatInZone(date, format, "UTC");
150
+ }
151
+ /** {{$now}} → ISO 8601 (UTC, unchanged by timezone). {{$now(+1h)}}, {{$now(,YYYY-MM-DD HH:mm)}} (in the zone). */
152
+ export class NowProvider {
153
+ canHandle(ref) { return ref === "$now" || ref.startsWith("$now("); }
154
+ generate(ref, ctx) {
155
+ const { date, format, tz } = dateArgs(ref, ctx);
156
+ return format ? formatInZone(date, format, tz) : date.toISOString();
157
+ }
158
+ }
159
+ /** {{$today}} → date YYYY-MM-DD in the zone (UTC unless set). {{$today(-1d)}}, {{$today(DD/MM/YYYY)}}, {{$today(,,Africa/Lagos)}}. */
160
+ export class TodayProvider {
161
+ canHandle(ref) { return ref === "$today" || ref.startsWith("$today("); }
162
+ generate(ref, ctx) {
163
+ const { date, format, tz } = dateArgs(ref, ctx);
164
+ return formatInZone(date, format ?? "YYYY-MM-DD", tz);
165
+ }
166
+ }
167
+ // ── AI-native placeholders ──────────────────────────────────────
168
+ export class AiPlaceholderProvider {
169
+ canHandle(ref) { return ref.startsWith("$ai("); }
170
+ generate(ref, _ctx) {
171
+ const { args } = parseArgs(ref);
172
+ return `[AI not configured: ${args[0] ?? ref}]`;
173
+ }
174
+ }
175
+ export class FakerPlaceholderProvider {
176
+ canHandle(ref) { return ref.startsWith("$faker("); }
177
+ generate(ref, _ctx) {
178
+ const { args } = parseArgs(ref);
179
+ return `[faker not configured: ${args[0] ?? ref}]`;
180
+ }
181
+ }
182
+ export class PreviousResponseProvider {
183
+ canHandle(ref) { return ref === "$previous.response"; }
184
+ generate(_ref, _ctx) { return "[previous.response: use in scenario context]"; }
185
+ }
186
+ export class CollectionStatsProvider {
187
+ canHandle(ref) { return ref === "$collection.stats"; }
188
+ generate(_ref, _ctx) { return "[collection.stats: use in scenario context]"; }
189
+ }
190
+ // ── Factory (Node-free providers only) ─────────────────────────
191
+ /** Same providers and order as the bridge's default registry, minus $hmac / $env / $file. */
192
+ export function buildCoreRegistry() {
193
+ const registry = new DynamicVarRegistry();
194
+ registerCoreProviders(registry);
195
+ return registry;
196
+ }
197
+ export function registerCoreProviders(registry) {
198
+ registry.register(new UuidProvider());
199
+ registry.register(new TimestampProvider());
200
+ registry.register(new IsoTimestampProvider());
201
+ registry.register(new RandomIntProvider());
202
+ registry.register(new RandomEmailProvider());
203
+ registry.register(new RandomNameProvider());
204
+ registry.register(new RandomPhoneProvider());
205
+ registry.register(new RandomStringProvider());
206
+ registry.register(new Base64Provider());
207
+ registry.register(new NowProvider());
208
+ registry.register(new TodayProvider());
209
+ registry.register(new AiPlaceholderProvider());
210
+ registry.register(new FakerPlaceholderProvider());
211
+ registry.register(new PreviousResponseProvider());
212
+ registry.register(new CollectionStatsProvider());
213
+ }
214
+ //# sourceMappingURL=dynamic-vars-core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamic-vars-core.js","sourceRoot":"","sources":["../../src/collections/dynamic-vars-core.ts"],"names":[],"mappings":"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"}
@@ -1,53 +1,10 @@
1
1
  import type { DynamicVarProvider, ResolverContext } from "./types.js";
2
- export declare class DynamicVarRegistry {
3
- private providers;
4
- register(provider: DynamicVarProvider): void;
5
- resolve(ref: string, context: ResolverContext): string | undefined;
6
- }
7
- export declare class UuidProvider implements DynamicVarProvider {
8
- canHandle(ref: string): boolean;
9
- generate(_ref: string, _ctx: ResolverContext): string;
10
- }
11
- export declare class TimestampProvider implements DynamicVarProvider {
12
- canHandle(ref: string): boolean;
13
- generate(_ref: string, _ctx: ResolverContext): string;
14
- }
15
- export declare class IsoTimestampProvider implements DynamicVarProvider {
16
- canHandle(ref: string): boolean;
17
- generate(_ref: string, _ctx: ResolverContext): string;
18
- }
19
- export declare class RandomIntProvider implements DynamicVarProvider {
20
- canHandle(ref: string): boolean;
21
- generate(ref: string, _ctx: ResolverContext): string;
22
- }
23
- export declare class RandomEmailProvider implements DynamicVarProvider {
24
- canHandle(ref: string): boolean;
25
- generate(_ref: string, _ctx: ResolverContext): string;
26
- }
27
- export declare class RandomNameProvider implements DynamicVarProvider {
28
- canHandle(ref: string): boolean;
29
- generate(_ref: string, _ctx: ResolverContext): string;
30
- }
31
- export declare class RandomPhoneProvider implements DynamicVarProvider {
32
- canHandle(ref: string): boolean;
33
- generate(_ref: string, _ctx: ResolverContext): string;
34
- }
35
- export declare class RandomStringProvider implements DynamicVarProvider {
36
- canHandle(ref: string): boolean;
37
- generate(ref: string, _ctx: ResolverContext): string;
38
- }
2
+ import { DynamicVarRegistry } from "./dynamic-vars-core.js";
3
+ export * from "./dynamic-vars-core.js";
39
4
  export declare class HmacProvider implements DynamicVarProvider {
40
5
  canHandle(ref: string): boolean;
41
6
  generate(ref: string, context: ResolverContext): string;
42
7
  }
43
- export declare class Base64Provider implements DynamicVarProvider {
44
- canHandle(ref: string): boolean;
45
- generate(ref: string, _ctx: ResolverContext): string;
46
- }
47
- export declare class NowProvider implements DynamicVarProvider {
48
- canHandle(ref: string): boolean;
49
- generate(ref: string, _ctx: ResolverContext): string;
50
- }
51
8
  export declare class EnvProvider implements DynamicVarProvider {
52
9
  canHandle(ref: string): boolean;
53
10
  generate(ref: string, _ctx: ResolverContext): string;
@@ -56,20 +13,4 @@ export declare class FileProvider implements DynamicVarProvider {
56
13
  canHandle(ref: string): boolean;
57
14
  generate(ref: string, _ctx: ResolverContext): string;
58
15
  }
59
- export declare class AiPlaceholderProvider implements DynamicVarProvider {
60
- canHandle(ref: string): boolean;
61
- generate(ref: string, _ctx: ResolverContext): string;
62
- }
63
- export declare class FakerPlaceholderProvider implements DynamicVarProvider {
64
- canHandle(ref: string): boolean;
65
- generate(ref: string, _ctx: ResolverContext): string;
66
- }
67
- export declare class PreviousResponseProvider implements DynamicVarProvider {
68
- canHandle(ref: string): boolean;
69
- generate(_ref: string, _ctx: ResolverContext): string;
70
- }
71
- export declare class CollectionStatsProvider implements DynamicVarProvider {
72
- canHandle(ref: string): boolean;
73
- generate(_ref: string, _ctx: ResolverContext): string;
74
- }
75
16
  export declare function buildDefaultRegistry(): DynamicVarRegistry;
@@ -1,88 +1,9 @@
1
- import { randomUUID, createHmac } from "node:crypto";
1
+ import { createHmac } from "node:crypto";
2
2
  import { readFileSync } from "node:fs";
3
- // ── Provider registry ───────────────────────────────────────────
4
- export class DynamicVarRegistry {
5
- providers = [];
6
- register(provider) {
7
- this.providers.push(provider);
8
- }
9
- resolve(ref, context) {
10
- for (const provider of this.providers) {
11
- if (provider.canHandle(ref)) {
12
- return provider.generate(ref, context);
13
- }
14
- }
15
- return undefined;
16
- }
17
- }
18
- // ── Helper: parse function-style refs like $randomInt(1,100) ────
19
- function parseArgs(ref) {
20
- const parenIdx = ref.indexOf("(");
21
- if (parenIdx < 0)
22
- return { name: ref, args: [] };
23
- const name = ref.slice(0, parenIdx);
24
- const argsStr = ref.slice(parenIdx + 1, -1); // strip parens
25
- return { name, args: argsStr.split(",").map((a) => a.trim()) };
26
- }
27
- // ── Built-in providers ──────────────────────────────────────────
28
- export class UuidProvider {
29
- canHandle(ref) { return ref === "$uuid"; }
30
- generate(_ref, _ctx) { return randomUUID(); }
31
- }
32
- export class TimestampProvider {
33
- canHandle(ref) { return ref === "$timestamp"; }
34
- generate(_ref, _ctx) { return String(Math.floor(Date.now() / 1000)); }
35
- }
36
- export class IsoTimestampProvider {
37
- canHandle(ref) { return ref === "$isoTimestamp"; }
38
- generate(_ref, _ctx) { return new Date().toISOString(); }
39
- }
40
- export class RandomIntProvider {
41
- canHandle(ref) { return ref.startsWith("$randomInt("); }
42
- generate(ref, _ctx) {
43
- const { args } = parseArgs(ref);
44
- const min = parseInt(args[0] ?? "0", 10);
45
- const max = parseInt(args[1] ?? "100", 10);
46
- return String(Math.floor(Math.random() * (max - min + 1)) + min);
47
- }
48
- }
49
- export class RandomEmailProvider {
50
- canHandle(ref) { return ref === "$randomEmail"; }
51
- generate(_ref, _ctx) {
52
- const id = randomUUID().slice(0, 8);
53
- const domains = ["example.com", "test.org", "mail.dev"];
54
- return `user-${id}@${domains[Math.floor(Math.random() * domains.length)]}`;
55
- }
56
- }
57
- export class RandomNameProvider {
58
- canHandle(ref) { return ref === "$randomName"; }
59
- generate(_ref, _ctx) {
60
- const firsts = ["Ade", "Bola", "Chidi", "Dayo", "Emeka", "Funke", "Gbenga", "Halima", "Ikenna", "Jumoke"];
61
- const lasts = ["Okafor", "Adeyemi", "Ibrahim", "Nwosu", "Bakare", "Olumide", "Chukwu", "Abubakar", "Obi", "Lawal"];
62
- return `${firsts[Math.floor(Math.random() * firsts.length)]} ${lasts[Math.floor(Math.random() * lasts.length)]}`;
63
- }
64
- }
65
- export class RandomPhoneProvider {
66
- canHandle(ref) { return ref === "$randomPhone"; }
67
- generate(_ref, _ctx) {
68
- const prefix = "+234";
69
- const number = String(Math.floor(Math.random() * 9_000_000_000) + 1_000_000_000);
70
- return `${prefix}${number}`;
71
- }
72
- }
73
- export class RandomStringProvider {
74
- canHandle(ref) { return ref.startsWith("$randomString("); }
75
- generate(ref, _ctx) {
76
- const { args } = parseArgs(ref);
77
- const len = parseInt(args[0] || "16", 10) || 16;
78
- const chars = "abcdefghijklmnopqrstuvwxyz0123456789";
79
- let result = "";
80
- for (let i = 0; i < len; i++) {
81
- result += chars[Math.floor(Math.random() * chars.length)];
82
- }
83
- return result;
84
- }
85
- }
3
+ import { DynamicVarRegistry, parseArgs, registerCoreProviders } from "./dynamic-vars-core.js";
4
+ // Node-only providers ($hmac, $env, $file) + the bridge's default registry.
5
+ // The Node-free ones live in dynamic-vars-core.ts.
6
+ export * from "./dynamic-vars-core.js";
86
7
  export class HmacProvider {
87
8
  canHandle(ref) { return ref.startsWith("$hmac("); }
88
9
  generate(ref, context) {
@@ -94,31 +15,6 @@ export class HmacProvider {
94
15
  return createHmac("sha256", resolvedKey).update(data).digest("hex");
95
16
  }
96
17
  }
97
- export class Base64Provider {
98
- canHandle(ref) { return ref.startsWith("$base64("); }
99
- generate(ref, _ctx) {
100
- const { args } = parseArgs(ref);
101
- return Buffer.from(args[0] ?? "").toString("base64");
102
- }
103
- }
104
- export class NowProvider {
105
- canHandle(ref) { return ref === "$now" || ref.startsWith("$now("); }
106
- generate(ref, _ctx) {
107
- const { args } = parseArgs(ref);
108
- const offset = args[0] ?? "";
109
- let date = new Date();
110
- if (offset) {
111
- const match = offset.match(/^([+-]?\d+)(ms|s|m|h|d)$/);
112
- if (match) {
113
- const val = parseInt(match[1], 10);
114
- const unit = match[2];
115
- const ms = { ms: 1, s: 1000, m: 60_000, h: 3_600_000, d: 86_400_000 }[unit] ?? 0;
116
- date = new Date(date.getTime() + val * ms);
117
- }
118
- }
119
- return date.toISOString();
120
- }
121
- }
122
18
  export class EnvProvider {
123
19
  canHandle(ref) { return ref.startsWith("$env("); }
124
20
  generate(ref, _ctx) {
@@ -139,49 +35,13 @@ export class FileProvider {
139
35
  }
140
36
  }
141
37
  }
142
- // ── AI-native placeholders ──────────────────────────────────────
143
- export class AiPlaceholderProvider {
144
- canHandle(ref) { return ref.startsWith("$ai("); }
145
- generate(ref, _ctx) {
146
- const { args } = parseArgs(ref);
147
- return `[AI not configured: ${args[0] ?? ref}]`;
148
- }
149
- }
150
- export class FakerPlaceholderProvider {
151
- canHandle(ref) { return ref.startsWith("$faker("); }
152
- generate(ref, _ctx) {
153
- const { args } = parseArgs(ref);
154
- return `[faker not configured: ${args[0] ?? ref}]`;
155
- }
156
- }
157
- export class PreviousResponseProvider {
158
- canHandle(ref) { return ref === "$previous.response"; }
159
- generate(_ref, _ctx) { return "[previous.response: use in scenario context]"; }
160
- }
161
- export class CollectionStatsProvider {
162
- canHandle(ref) { return ref === "$collection.stats"; }
163
- generate(_ref, _ctx) { return "[collection.stats: use in scenario context]"; }
164
- }
165
38
  // ── Factory ─────────────────────────────────────────────────────
166
39
  export function buildDefaultRegistry() {
167
40
  const registry = new DynamicVarRegistry();
168
- registry.register(new UuidProvider());
169
- registry.register(new TimestampProvider());
170
- registry.register(new IsoTimestampProvider());
171
- registry.register(new RandomIntProvider());
172
- registry.register(new RandomEmailProvider());
173
- registry.register(new RandomNameProvider());
174
- registry.register(new RandomPhoneProvider());
175
- registry.register(new RandomStringProvider());
41
+ registerCoreProviders(registry);
176
42
  registry.register(new HmacProvider());
177
- registry.register(new Base64Provider());
178
- registry.register(new NowProvider());
179
43
  registry.register(new EnvProvider());
180
44
  registry.register(new FileProvider());
181
- registry.register(new AiPlaceholderProvider());
182
- registry.register(new FakerPlaceholderProvider());
183
- registry.register(new PreviousResponseProvider());
184
- registry.register(new CollectionStatsProvider());
185
45
  return registry;
186
46
  }
187
47
  //# sourceMappingURL=dynamic-vars.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic-vars.js","sourceRoot":"","sources":["../../src/collections/dynamic-vars.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dynamic-vars.js","sourceRoot":"","sources":["../../src/collections/dynamic-vars.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE9F,4EAA4E;AAC5E,mDAAmD;AACnD,cAAc,wBAAwB,CAAC;AAEvC,MAAM,OAAO,YAAY;IACvB,SAAS,CAAC,GAAW,IAAa,OAAO,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpE,QAAQ,CAAC,GAAW,EAAE,OAAwB;QAC5C,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1B,iEAAiE;QACjE,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;QACjF,OAAO,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtE,CAAC;CACF;AAED,MAAM,OAAO,WAAW;IACtB,SAAS,CAAC,GAAW,IAAa,OAAO,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACnE,QAAQ,CAAC,GAAW,EAAE,IAAqB;QACzC,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAChC,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;IAC1C,CAAC;CACF;AAED,MAAM,OAAO,YAAY;IACvB,SAAS,CAAC,GAAW,IAAa,OAAO,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpE,QAAQ,CAAC,GAAW,EAAE,IAAqB;QACzC,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,OAAO,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,oBAAoB,IAAI,GAAG,CAAC;QACrC,CAAC;IACH,CAAC;CACF;AAGD,mEAAmE;AAEnE,MAAM,UAAU,oBAAoB;IAClC,MAAM,QAAQ,GAAG,IAAI,kBAAkB,EAAE,CAAC;IAC1C,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAChC,QAAQ,CAAC,QAAQ,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC;IACtC,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function toBase64(text: string): string;
2
+ /** Lenient like Buffer: missing padding is fine. Throws on characters outside the alphabet. */
3
+ export declare function fromBase64(encoded: string): string;
@@ -0,0 +1,20 @@
1
+ // Base64 that works the same in Node and in the browser (no Buffer), UTF-8 safe.
2
+ export function toBase64(text) {
3
+ const bytes = new TextEncoder().encode(text);
4
+ let binary = "";
5
+ for (let i = 0; i < bytes.length; i += 0x8000) {
6
+ binary += String.fromCharCode(...bytes.subarray(i, i + 0x8000));
7
+ }
8
+ return btoa(binary);
9
+ }
10
+ /** Lenient like Buffer: missing padding is fine. Throws on characters outside the alphabet. */
11
+ export function fromBase64(encoded) {
12
+ const clean = encoded.replace(/\s+/g, "");
13
+ const padded = clean + "=".repeat((4 - (clean.length % 4)) % 4);
14
+ const binary = atob(padded);
15
+ const bytes = new Uint8Array(binary.length);
16
+ for (let i = 0; i < binary.length; i++)
17
+ bytes[i] = binary.charCodeAt(i);
18
+ return new TextDecoder().decode(bytes);
19
+ }
20
+ //# sourceMappingURL=encoding.js.map