callman-core 1.0.6 → 1.1.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 (151) hide show
  1. package/dist/index.d.ts +4 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +3 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/script/errors.d.ts +3 -0
  6. package/dist/script/errors.d.ts.map +1 -0
  7. package/dist/script/errors.js +68 -0
  8. package/dist/script/errors.js.map +1 -0
  9. package/dist/script/executor.d.ts +5 -0
  10. package/dist/script/executor.d.ts.map +1 -0
  11. package/dist/script/executor.js +192 -0
  12. package/dist/script/executor.js.map +1 -0
  13. package/dist/script/features/assertions.d.ts +46 -0
  14. package/dist/script/features/assertions.d.ts.map +1 -0
  15. package/dist/script/features/assertions.js +264 -0
  16. package/dist/script/features/assertions.js.map +1 -0
  17. package/dist/script/features/environment.d.ts +11 -0
  18. package/dist/script/features/environment.d.ts.map +1 -0
  19. package/dist/script/features/environment.js +61 -0
  20. package/dist/script/features/environment.js.map +1 -0
  21. package/dist/script/features/log.d.ts +15 -0
  22. package/dist/script/features/log.d.ts.map +1 -0
  23. package/dist/script/features/log.js +59 -0
  24. package/dist/script/features/log.js.map +1 -0
  25. package/dist/script/features/node.d.ts +14 -0
  26. package/dist/script/features/node.d.ts.map +1 -0
  27. package/dist/script/features/node.js +82 -0
  28. package/dist/script/features/node.js.map +1 -0
  29. package/dist/script/features/request.d.ts +23 -0
  30. package/dist/script/features/request.d.ts.map +1 -0
  31. package/dist/script/features/request.js +105 -0
  32. package/dist/script/features/request.js.map +1 -0
  33. package/dist/script/features/response.d.ts +25 -0
  34. package/dist/script/features/response.d.ts.map +1 -0
  35. package/dist/script/features/response.js +43 -0
  36. package/dist/script/features/response.js.map +1 -0
  37. package/dist/script/features/tests.d.ts +9 -0
  38. package/dist/script/features/tests.d.ts.map +1 -0
  39. package/dist/script/features/tests.js +62 -0
  40. package/dist/script/features/tests.js.map +1 -0
  41. package/dist/script/legacy.d.ts +4 -0
  42. package/dist/script/legacy.d.ts.map +1 -0
  43. package/dist/script/legacy.js +128 -0
  44. package/dist/script/legacy.js.map +1 -0
  45. package/dist/script/sandbox.d.ts +16 -0
  46. package/dist/script/sandbox.d.ts.map +1 -0
  47. package/dist/script/sandbox.js +51 -0
  48. package/dist/script/sandbox.js.map +1 -0
  49. package/dist/script/scope.d.ts +16 -0
  50. package/dist/script/scope.d.ts.map +1 -0
  51. package/dist/script/scope.js +151 -0
  52. package/dist/script/scope.js.map +1 -0
  53. package/dist/script/scriptEngine.d.ts +2 -2
  54. package/dist/script/scriptEngine.d.ts.map +1 -1
  55. package/dist/script/scriptEngine.js +7 -105
  56. package/dist/script/scriptEngine.js.map +1 -1
  57. package/dist/script/timeout.d.ts +3 -0
  58. package/dist/script/timeout.d.ts.map +1 -0
  59. package/dist/script/timeout.js +38 -0
  60. package/dist/script/timeout.js.map +1 -0
  61. package/dist/script/types.d.ts +94 -0
  62. package/dist/script/types.d.ts.map +1 -0
  63. package/dist/script/types.js +7 -0
  64. package/dist/script/types.js.map +1 -0
  65. package/dist-cjs/contract/contractValidator.js +236 -0
  66. package/dist-cjs/contract/contractValidator.js.map +1 -0
  67. package/dist-cjs/index.js +41 -0
  68. package/dist-cjs/index.js.map +1 -0
  69. package/dist-cjs/package.json +1 -0
  70. package/dist-cjs/request/executeRequest.js +33 -0
  71. package/dist-cjs/request/executeRequest.js.map +1 -0
  72. package/dist-cjs/runner/requestRunner.js +102 -0
  73. package/dist-cjs/runner/requestRunner.js.map +1 -0
  74. package/dist-cjs/runner/runCollection.js +53 -0
  75. package/dist-cjs/runner/runCollection.js.map +1 -0
  76. package/dist-cjs/scenario-runner/condition.js +1735 -0
  77. package/dist-cjs/scenario-runner/condition.js.map +1 -0
  78. package/dist-cjs/scenario-runner/conditionTypes.js +3 -0
  79. package/dist-cjs/scenario-runner/conditionTypes.js.map +1 -0
  80. package/dist-cjs/scenario-runner/executionPolicyRunner.js +53 -0
  81. package/dist-cjs/scenario-runner/executionPolicyRunner.js.map +1 -0
  82. package/dist-cjs/scenario-runner/graphTraversal.js +27 -0
  83. package/dist-cjs/scenario-runner/graphTraversal.js.map +1 -0
  84. package/dist-cjs/scenario-runner/index.js +39 -0
  85. package/dist-cjs/scenario-runner/index.js.map +1 -0
  86. package/dist-cjs/scenario-runner/nodePolicy.js +127 -0
  87. package/dist-cjs/scenario-runner/nodePolicy.js.map +1 -0
  88. package/dist-cjs/scenario-runner/notification/index.js +18 -0
  89. package/dist-cjs/scenario-runner/notification/index.js.map +1 -0
  90. package/dist-cjs/scenario-runner/notification/providers/provider.interface.js +3 -0
  91. package/dist-cjs/scenario-runner/notification/providers/provider.interface.js.map +1 -0
  92. package/dist-cjs/scenario-runner/notification/providers/slack.provider.js +88 -0
  93. package/dist-cjs/scenario-runner/notification/providers/slack.provider.js.map +1 -0
  94. package/dist-cjs/scenario-runner/notification/template.js +13 -0
  95. package/dist-cjs/scenario-runner/notification/template.js.map +1 -0
  96. package/dist-cjs/scenario-runner/retryExecutor.js +57 -0
  97. package/dist-cjs/scenario-runner/retryExecutor.js.map +1 -0
  98. package/dist-cjs/scenario-runner/runScenario.js +1545 -0
  99. package/dist-cjs/scenario-runner/runScenario.js.map +1 -0
  100. package/dist-cjs/scenario-runner/templateResolver.js +468 -0
  101. package/dist-cjs/scenario-runner/templateResolver.js.map +1 -0
  102. package/dist-cjs/scenario-runner/types.js +3 -0
  103. package/dist-cjs/scenario-runner/types.js.map +1 -0
  104. package/dist-cjs/scenario-runner/waitNodeExecutor.js +71 -0
  105. package/dist-cjs/scenario-runner/waitNodeExecutor.js.map +1 -0
  106. package/dist-cjs/script/errors.js +72 -0
  107. package/dist-cjs/script/errors.js.map +1 -0
  108. package/dist-cjs/script/executor.js +197 -0
  109. package/dist-cjs/script/executor.js.map +1 -0
  110. package/dist-cjs/script/features/assertions.js +269 -0
  111. package/dist-cjs/script/features/assertions.js.map +1 -0
  112. package/dist-cjs/script/features/environment.js +65 -0
  113. package/dist-cjs/script/features/environment.js.map +1 -0
  114. package/dist-cjs/script/features/log.js +64 -0
  115. package/dist-cjs/script/features/log.js.map +1 -0
  116. package/dist-cjs/script/features/node.js +89 -0
  117. package/dist-cjs/script/features/node.js.map +1 -0
  118. package/dist-cjs/script/features/request.js +109 -0
  119. package/dist-cjs/script/features/request.js.map +1 -0
  120. package/dist-cjs/script/features/response.js +47 -0
  121. package/dist-cjs/script/features/response.js.map +1 -0
  122. package/dist-cjs/script/features/tests.js +66 -0
  123. package/dist-cjs/script/features/tests.js.map +1 -0
  124. package/dist-cjs/script/legacy.js +132 -0
  125. package/dist-cjs/script/legacy.js.map +1 -0
  126. package/dist-cjs/script/pmApi.js +353 -0
  127. package/dist-cjs/script/pmApi.js.map +1 -0
  128. package/dist-cjs/script/sandbox.js +91 -0
  129. package/dist-cjs/script/sandbox.js.map +1 -0
  130. package/dist-cjs/script/scope.js +156 -0
  131. package/dist-cjs/script/scope.js.map +1 -0
  132. package/dist-cjs/script/scriptEngine.js +12 -0
  133. package/dist-cjs/script/scriptEngine.js.map +1 -0
  134. package/dist-cjs/script/timeout.js +43 -0
  135. package/dist-cjs/script/timeout.js.map +1 -0
  136. package/dist-cjs/script/types.js +8 -0
  137. package/dist-cjs/script/types.js.map +1 -0
  138. package/dist-cjs/types/index.js +3 -0
  139. package/dist-cjs/types/index.js.map +1 -0
  140. package/dist-cjs/utils/get.js +52 -0
  141. package/dist-cjs/utils/get.js.map +1 -0
  142. package/dist-cjs/utils/random.js +87 -0
  143. package/dist-cjs/utils/random.js.map +1 -0
  144. package/dist-cjs/variables/envStore.js +24 -0
  145. package/dist-cjs/variables/envStore.js.map +1 -0
  146. package/dist-cjs/variables/resolver.js +95 -0
  147. package/dist-cjs/variables/resolver.js.map +1 -0
  148. package/package.json +19 -3
  149. package/samples/runSample.mjs +0 -128
  150. package/tests/waitNode.test.mjs +0 -311
  151. package/tsconfig.json +0 -18
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assertions.js","sourceRoot":"","sources":["../../../src/script/features/assertions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { ScriptVariableMutation } from "../types.js";
2
+ export interface EnvironmentApi {
3
+ values: Record<string, string>;
4
+ get: (key: string) => string | undefined;
5
+ set: (key: string, value: unknown) => void;
6
+ unset: (key: string) => void;
7
+ has: (key: string) => boolean;
8
+ toObject: () => Record<string, string>;
9
+ }
10
+ export declare const buildEnvironmentApi: (initial: Record<string, string>, mutations: ScriptVariableMutation[] | null, scope: ScriptVariableMutation["scope"]) => EnvironmentApi;
11
+ //# sourceMappingURL=environment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../../src/script/features/environment.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAE1D,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACzC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9B,QAAQ,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AASD,eAAO,MAAM,mBAAmB,GAC9B,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,WAAW,sBAAsB,EAAE,GAAG,IAAI,EAC1C,OAAO,sBAAsB,CAAC,OAAO,CAAC,KACrC,cA8CF,CAAC"}
@@ -0,0 +1,61 @@
1
+ // pm.environment / pm.globals — variable-scoped key/value API.
2
+ //
3
+ // Two operating modes:
4
+ // - emitMutations=true: every set/unset is recorded into the shared
5
+ // mutation log. Callers (backend/electron scenario runner) replay this
6
+ // log onto persistent state outside the sandbox.
7
+ // - emitMutations=false: the API mutates the in-memory `values` record
8
+ // directly without producing a log. Used by callman-core's legacy
9
+ // `runScript` shim where EnvStore is the source of truth.
10
+ const coerceToString = (value) => {
11
+ if (value === undefined || value === null) {
12
+ return "";
13
+ }
14
+ return String(value);
15
+ };
16
+ export const buildEnvironmentApi = (initial, mutations, scope) => {
17
+ // Copy so the caller's record is never mutated in-place when the
18
+ // sandbox is configured to emit mutations.
19
+ const values = { ...initial };
20
+ const recordMutation = (mutation) => {
21
+ if (mutations) {
22
+ mutations.push(mutation);
23
+ }
24
+ };
25
+ return {
26
+ values,
27
+ get: (key) => values[String(key ?? "").trim()],
28
+ set: (key, value) => {
29
+ const normalizedKey = String(key ?? "").trim();
30
+ if (!normalizedKey) {
31
+ return;
32
+ }
33
+ const normalizedValue = coerceToString(value);
34
+ values[normalizedKey] = normalizedValue;
35
+ recordMutation({
36
+ scope,
37
+ type: "set",
38
+ key: normalizedKey,
39
+ value: normalizedValue,
40
+ });
41
+ },
42
+ unset: (key) => {
43
+ const normalizedKey = String(key ?? "").trim();
44
+ if (!normalizedKey || !(normalizedKey in values)) {
45
+ return;
46
+ }
47
+ delete values[normalizedKey];
48
+ recordMutation({
49
+ scope,
50
+ type: "unset",
51
+ key: normalizedKey,
52
+ });
53
+ },
54
+ has: (key) => {
55
+ const normalizedKey = String(key ?? "").trim();
56
+ return Boolean(normalizedKey) && normalizedKey in values;
57
+ },
58
+ toObject: () => ({ ...values }),
59
+ };
60
+ };
61
+ //# sourceMappingURL=environment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.js","sourceRoot":"","sources":["../../../src/script/features/environment.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,EAAE;AACF,uBAAuB;AACvB,sEAAsE;AACtE,2EAA2E;AAC3E,qDAAqD;AACrD,yEAAyE;AACzE,sEAAsE;AACtE,8DAA8D;AAa9D,MAAM,cAAc,GAAG,CAAC,KAAc,EAAU,EAAE;IAChD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,OAA+B,EAC/B,SAA0C,EAC1C,KAAsC,EACtB,EAAE;IAClB,iEAAiE;IACjE,2CAA2C;IAC3C,MAAM,MAAM,GAA2B,EAAE,GAAG,OAAO,EAAE,CAAC;IAEtD,MAAM,cAAc,GAAG,CAAC,QAAgC,EAAQ,EAAE;QAChE,IAAI,SAAS,EAAE,CAAC;YACd,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC;IAEF,OAAO;QACL,MAAM;QACN,GAAG,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACtD,GAAG,EAAE,CAAC,GAAW,EAAE,KAAc,EAAE,EAAE;YACnC,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/C,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YACD,MAAM,eAAe,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;YAC9C,MAAM,CAAC,aAAa,CAAC,GAAG,eAAe,CAAC;YACxC,cAAc,CAAC;gBACb,KAAK;gBACL,IAAI,EAAE,KAAK;gBACX,GAAG,EAAE,aAAa;gBAClB,KAAK,EAAE,eAAe;aACvB,CAAC,CAAC;QACL,CAAC;QACD,KAAK,EAAE,CAAC,GAAW,EAAE,EAAE;YACrB,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/C,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,aAAa,IAAI,MAAM,CAAC,EAAE,CAAC;gBACjD,OAAO;YACT,CAAC;YACD,OAAO,MAAM,CAAC,aAAa,CAAC,CAAC;YAC7B,cAAc,CAAC;gBACb,KAAK;gBACL,IAAI,EAAE,OAAO;gBACb,GAAG,EAAE,aAAa;aACnB,CAAC,CAAC;QACL,CAAC;QACD,GAAG,EAAE,CAAC,GAAW,EAAE,EAAE;YACnB,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/C,OAAO,OAAO,CAAC,aAAa,CAAC,IAAI,aAAa,IAAI,MAAM,CAAC;QAC3D,CAAC;QACD,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC;KAChC,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { ScriptLogEntry } from "../types.js";
2
+ export interface LogCollector {
3
+ pmLog: (...args: unknown[]) => void;
4
+ consoleApi: {
5
+ log: (...args: unknown[]) => void;
6
+ info: (...args: unknown[]) => void;
7
+ warn: (...args: unknown[]) => void;
8
+ error: (...args: unknown[]) => void;
9
+ debug: (...args: unknown[]) => void;
10
+ };
11
+ logs: ScriptLogEntry[];
12
+ }
13
+ export declare const createLogCollector: () => LogCollector;
14
+ export declare const createSilentLogCollector: () => LogCollector;
15
+ //# sourceMappingURL=log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../../src/script/features/log.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAsBlD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACpC,UAAU,EAAE;QACV,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;QAClC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;QACnC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;QACnC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;QACpC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;KACrC,CAAC;IACF,IAAI,EAAE,cAAc,EAAE,CAAC;CACxB;AAED,eAAO,MAAM,kBAAkB,QAAO,YAqBrC,CAAC;AAKF,eAAO,MAAM,wBAAwB,QAAO,YAU1C,CAAC"}
@@ -0,0 +1,59 @@
1
+ // Log collector for pm.log + console.{log,info,warn,error,debug}.
2
+ // Captures user-script output as structured entries so callers can render
3
+ // them in scenario UIs / CLI reports without granting the script real
4
+ // access to the host's stdio.
5
+ const stringifyArgument = (value) => {
6
+ if (typeof value === "string") {
7
+ return value;
8
+ }
9
+ if (typeof value === "number" || typeof value === "boolean" || value === null) {
10
+ return String(value);
11
+ }
12
+ if (typeof value === "undefined") {
13
+ return "undefined";
14
+ }
15
+ if (value instanceof Error) {
16
+ return value.stack ?? value.message;
17
+ }
18
+ try {
19
+ return JSON.stringify(value, null, 2);
20
+ }
21
+ catch {
22
+ return String(value);
23
+ }
24
+ };
25
+ export const createLogCollector = () => {
26
+ const logs = [];
27
+ const append = (level, args) => {
28
+ logs.push({
29
+ level,
30
+ message: args.map((entry) => stringifyArgument(entry)).join(" "),
31
+ });
32
+ };
33
+ return {
34
+ pmLog: (...args) => append("log", args),
35
+ consoleApi: {
36
+ log: (...args) => append("log", args),
37
+ info: (...args) => append("info", args),
38
+ warn: (...args) => append("warn", args),
39
+ error: (...args) => append("error", args),
40
+ debug: (...args) => append("debug", args),
41
+ },
42
+ logs,
43
+ };
44
+ };
45
+ // Silent collector — used when the caller did not enable the `log` extension.
46
+ // pm.log and console.* still need to exist on the scope (so user scripts
47
+ // don't throw ReferenceError); they just become no-ops with no output.
48
+ export const createSilentLogCollector = () => ({
49
+ pmLog: () => undefined,
50
+ consoleApi: {
51
+ log: () => undefined,
52
+ info: () => undefined,
53
+ warn: () => undefined,
54
+ error: () => undefined,
55
+ debug: () => undefined,
56
+ },
57
+ logs: [],
58
+ });
59
+ //# sourceMappingURL=log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.js","sourceRoot":"","sources":["../../../src/script/features/log.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,0EAA0E;AAC1E,sEAAsE;AACtE,8BAA8B;AAI9B,MAAM,iBAAiB,GAAG,CAAC,KAAc,EAAU,EAAE;IACnD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC9E,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE,CAAC;QACjC,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC;IACtC,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;AACH,CAAC,CAAC;AAcF,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAiB,EAAE;IACnD,MAAM,IAAI,GAAqB,EAAE,CAAC;IAElC,MAAM,MAAM,GAAG,CAAC,KAA8B,EAAE,IAAe,EAAQ,EAAE;QACvE,IAAI,CAAC,IAAI,CAAC;YACR,KAAK;YACL,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;SACjE,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,OAAO;QACL,KAAK,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC;QAClD,UAAU,EAAE;YACV,GAAG,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC;YAChD,IAAI,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;YAClD,IAAI,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;YAClD,KAAK,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC;YACpD,KAAK,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC;SACrD;QACD,IAAI;KACL,CAAC;AACJ,CAAC,CAAC;AAEF,8EAA8E;AAC9E,yEAAyE;AACzE,uEAAuE;AACvE,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAiB,EAAE,CAAC,CAAC;IAC3D,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS;IACtB,UAAU,EAAE;QACV,GAAG,EAAE,GAAG,EAAE,CAAC,SAAS;QACpB,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS;QACrB,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS;QACrB,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS;QACtB,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS;KACvB;IACD,IAAI,EAAE,EAAE;CACT,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { ScenarioNodeExecutionMeta } from "../../scenario-runner/types.js";
2
+ export declare const attachMetaToScriptValue: (value: unknown, meta: ScenarioNodeExecutionMeta | undefined) => unknown;
3
+ export declare const canExposeLabelAsGlobal: (label: string) => boolean;
4
+ export interface BuildLabelGlobalsInput {
5
+ workflowContext: Record<string, unknown>;
6
+ nodeMetaByLabel?: Record<string, ScenarioNodeExecutionMeta>;
7
+ }
8
+ export declare const buildLabelGlobals: ({ workflowContext, nodeMetaByLabel, }: BuildLabelGlobalsInput) => Record<string, unknown>;
9
+ export interface BuildNodeApiInput {
10
+ workflowContext: Record<string, unknown>;
11
+ nodeMetaByLabel?: Record<string, ScenarioNodeExecutionMeta>;
12
+ }
13
+ export declare const buildNodeApi: ({ workflowContext, nodeMetaByLabel, }: BuildNodeApiInput) => ((label: string) => unknown);
14
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/script/features/node.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAmBhF,eAAO,MAAM,uBAAuB,GAClC,OAAO,OAAO,EACd,MAAM,yBAAyB,GAAG,SAAS,KAC1C,OAmCF,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,OAAO,MAAM,KAAG,OAOtD,CAAC;AAEF,MAAM,WAAW,sBAAsB;IACrC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;CAC7D;AAED,eAAO,MAAM,iBAAiB,GAAI,uCAG/B,sBAAsB,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAYjD,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;CAC7D;AAED,eAAO,MAAM,YAAY,GAAI,uCAG1B,iBAAiB,KAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAWjD,CAAC"}
@@ -0,0 +1,82 @@
1
+ // pm.node + label-as-global helpers for scenario scripts.
2
+ //
3
+ // In a scenario, each prior node's output is available under its label.
4
+ // Two access paths are exposed to the user script:
5
+ // 1. pm.node("Login") — explicit, never collides
6
+ // 2. Login.token — top-level binding (only when the label
7
+ // is a valid JS identifier and not
8
+ // reserved by the sandbox)
9
+ //
10
+ // Both paths attach `__meta` to the returned value (status/timing) when the
11
+ // caller supplies nodeMetaByLabel — this lets scripts inspect the upstream
12
+ // node's execution metadata directly (e.g., login.__meta.status === "success").
13
+ import { RESERVED_LABEL_NAMES, VALID_LABEL_IDENTIFIER_PATTERN, } from "../scope.js";
14
+ const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
15
+ const cloneMeta = (meta) => meta
16
+ ? {
17
+ ...meta,
18
+ ...(meta.error ? { error: { ...meta.error } } : {}),
19
+ }
20
+ : undefined;
21
+ export const attachMetaToScriptValue = (value, meta) => {
22
+ if (!meta) {
23
+ return value;
24
+ }
25
+ const normalizedMeta = cloneMeta(meta);
26
+ if (Array.isArray(value)) {
27
+ const nextValue = [...value];
28
+ nextValue.__meta = normalizedMeta;
29
+ return nextValue;
30
+ }
31
+ if (isRecord(value)) {
32
+ return { ...value, __meta: normalizedMeta };
33
+ }
34
+ if (value === null || typeof value === "undefined") {
35
+ return { __meta: normalizedMeta };
36
+ }
37
+ if (typeof value === "string") {
38
+ const boxed = new String(value);
39
+ boxed.__meta = normalizedMeta;
40
+ return boxed;
41
+ }
42
+ if (typeof value === "number") {
43
+ const boxed = new Number(value);
44
+ boxed.__meta = normalizedMeta;
45
+ return boxed;
46
+ }
47
+ if (typeof value === "boolean") {
48
+ const boxed = new Boolean(value);
49
+ boxed.__meta = normalizedMeta;
50
+ return boxed;
51
+ }
52
+ return { value, __meta: normalizedMeta };
53
+ };
54
+ export const canExposeLabelAsGlobal = (label) => {
55
+ const trimmed = label.trim();
56
+ return (Boolean(trimmed) &&
57
+ VALID_LABEL_IDENTIFIER_PATTERN.test(trimmed) &&
58
+ !RESERVED_LABEL_NAMES.has(trimmed));
59
+ };
60
+ export const buildLabelGlobals = ({ workflowContext, nodeMetaByLabel, }) => {
61
+ const labelGlobals = {};
62
+ for (const [label, value] of Object.entries(workflowContext)) {
63
+ if (!canExposeLabelAsGlobal(label)) {
64
+ continue;
65
+ }
66
+ labelGlobals[label] = attachMetaToScriptValue(value, nodeMetaByLabel?.[label]);
67
+ }
68
+ // The reserved key `workflow` is forwarded as-is when present (without
69
+ // __meta attachment) — backend/electron both expose this.
70
+ labelGlobals.workflow = workflowContext.workflow ?? null;
71
+ return labelGlobals;
72
+ };
73
+ export const buildNodeApi = ({ workflowContext, nodeMetaByLabel, }) => {
74
+ return (label) => {
75
+ const normalizedLabel = String(label ?? "").trim();
76
+ if (!normalizedLabel) {
77
+ return null;
78
+ }
79
+ return attachMetaToScriptValue(workflowContext[normalizedLabel] ?? null, nodeMetaByLabel?.[normalizedLabel]);
80
+ };
81
+ };
82
+ //# sourceMappingURL=node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../../src/script/features/node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { ScriptRequestBodyState, ScriptRequestState } from "../types.js";
2
+ export interface RequestApi {
3
+ method: string;
4
+ url: string;
5
+ headers: Record<string, string>;
6
+ query: Record<string, string>;
7
+ body: ScriptRequestBodyState;
8
+ getHeader: (key: string) => string | undefined;
9
+ setHeader: (key: string, value: unknown) => void;
10
+ unsetHeader: (key: string) => void;
11
+ getQueryParam: (key: string) => string | undefined;
12
+ setQueryParam: (key: string, value: unknown) => void;
13
+ unsetQueryParam: (key: string) => void;
14
+ setMethod: (nextMethod: unknown) => void;
15
+ setUrl: (nextUrl: unknown) => void;
16
+ setRawBody: (value: unknown) => void;
17
+ }
18
+ export interface RequestApiBundle {
19
+ api: RequestApi;
20
+ toRequestState: () => ScriptRequestState;
21
+ }
22
+ export declare const buildRequestApi: (request: ScriptRequestState) => RequestApiBundle;
23
+ //# sourceMappingURL=request.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../../src/script/features/request.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAEV,sBAAsB,EACtB,kBAAkB,EACnB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,IAAI,EAAE,sBAAsB,CAAC;IAC7B,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC/C,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACnD,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACrD,eAAe,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,SAAS,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,UAAU,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACtC;AAqCD,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,UAAU,CAAC;IAChB,cAAc,EAAE,MAAM,kBAAkB,CAAC;CAC1C;AAED,eAAO,MAAM,eAAe,GAAI,SAAS,kBAAkB,KAAG,gBAqE7D,CAAC"}
@@ -0,0 +1,105 @@
1
+ // pm.request — read + mutate request state for pre-request and tests stages.
2
+ //
3
+ // The API mirrors the backend's surface: getHeader/setHeader/unsetHeader,
4
+ // getQueryParam/setQueryParam/unsetQueryParam, setMethod/setUrl/setRawBody.
5
+ // Mutations are applied to a working copy; callers retrieve the final
6
+ // state via `toRequestState()` after the script completes.
7
+ const cloneBody = (body) => ({
8
+ mode: body.mode,
9
+ raw: body.raw,
10
+ formEntries: body.formEntries.map((entry) => ({ ...entry })),
11
+ });
12
+ const toRecord = (entries) => {
13
+ const record = {};
14
+ for (const entry of entries) {
15
+ if (entry.enabled === false) {
16
+ continue;
17
+ }
18
+ const key = entry.key.trim();
19
+ if (!key) {
20
+ continue;
21
+ }
22
+ record[key] = entry.value;
23
+ }
24
+ return record;
25
+ };
26
+ const toEntries = (record) => Object.entries(record).map(([key, value]) => ({
27
+ key,
28
+ value,
29
+ enabled: true,
30
+ }));
31
+ const stringifyHeaderValue = (value) => {
32
+ if (value === undefined || value === null) {
33
+ return "";
34
+ }
35
+ return String(value);
36
+ };
37
+ export const buildRequestApi = (request) => {
38
+ const headers = toRecord(request.headers);
39
+ const query = toRecord(request.query);
40
+ const body = cloneBody(request.body);
41
+ const api = {
42
+ method: request.method,
43
+ url: request.url,
44
+ headers,
45
+ query,
46
+ body,
47
+ getHeader: (key) => headers[String(key ?? "").trim()],
48
+ setHeader: (key, value) => {
49
+ const normalizedKey = String(key ?? "").trim();
50
+ if (!normalizedKey) {
51
+ return;
52
+ }
53
+ headers[normalizedKey] = stringifyHeaderValue(value);
54
+ },
55
+ unsetHeader: (key) => {
56
+ const normalizedKey = String(key ?? "").trim();
57
+ if (!normalizedKey) {
58
+ return;
59
+ }
60
+ delete headers[normalizedKey];
61
+ },
62
+ getQueryParam: (key) => query[String(key ?? "").trim()],
63
+ setQueryParam: (key, value) => {
64
+ const normalizedKey = String(key ?? "").trim();
65
+ if (!normalizedKey) {
66
+ return;
67
+ }
68
+ query[normalizedKey] = stringifyHeaderValue(value);
69
+ },
70
+ unsetQueryParam: (key) => {
71
+ const normalizedKey = String(key ?? "").trim();
72
+ if (!normalizedKey) {
73
+ return;
74
+ }
75
+ delete query[normalizedKey];
76
+ },
77
+ setMethod(nextMethod) {
78
+ const normalizedValue = String(nextMethod ?? "")
79
+ .trim()
80
+ .toUpperCase();
81
+ if (normalizedValue) {
82
+ this.method = normalizedValue;
83
+ }
84
+ },
85
+ setUrl(nextUrl) {
86
+ this.url = String(nextUrl ?? "");
87
+ },
88
+ setRawBody(value) {
89
+ this.body.mode = "raw";
90
+ this.body.raw = value === undefined || value === null ? "" : String(value);
91
+ this.body.formEntries = [];
92
+ },
93
+ };
94
+ return {
95
+ api,
96
+ toRequestState: () => ({
97
+ method: api.method,
98
+ url: api.url,
99
+ headers: toEntries(api.headers),
100
+ query: toEntries(api.query),
101
+ body: cloneBody(api.body),
102
+ }),
103
+ };
104
+ };
105
+ //# sourceMappingURL=request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/script/features/request.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { PmAssertion } from "./assertions.js";
2
+ import type { ScriptResponseState } from "../types.js";
3
+ export interface ResponseApi {
4
+ ok: boolean;
5
+ status: number;
6
+ code: number;
7
+ statusText: string;
8
+ headers: Record<string, string>;
9
+ data: unknown;
10
+ body: unknown;
11
+ rawBody: string;
12
+ raw: string;
13
+ contentType: string;
14
+ durationMs: number;
15
+ responseTime: number;
16
+ sizeBytes: number;
17
+ cookies: string[];
18
+ json: () => unknown;
19
+ text: () => string;
20
+ to?: PmAssertion;
21
+ be?: PmAssertion;
22
+ have?: PmAssertion;
23
+ }
24
+ export declare const buildResponseApi: (response: ScriptResponseState | null) => ResponseApi | null;
25
+ //# sourceMappingURL=response.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../../src/script/features/response.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAIhC,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,MAAM,OAAO,CAAC;IACpB,IAAI,EAAE,MAAM,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,WAAW,CAAC;IACjB,EAAE,CAAC,EAAE,WAAW,CAAC;IACjB,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAED,eAAO,MAAM,gBAAgB,GAAI,UAAU,mBAAmB,GAAG,IAAI,KAAG,WAAW,GAAG,IAqCrF,CAAC"}
@@ -0,0 +1,43 @@
1
+ // pm.response — read-only view of the captured response, plus the classic
2
+ // Postman fluent assertion entry points (.to / .be / .have).
3
+ //
4
+ // We return a plain object with the assertion getters spliced on so user
5
+ // scripts can write `pm.response.to.have.status(200)` exactly like Postman.
6
+ // The PmAssertion is a fresh instance bound to the response itself so the
7
+ // chain can drill into headers / status / body via .property() etc.
8
+ import { PmAssertion } from "./assertions.js";
9
+ export const buildResponseApi = (response) => {
10
+ if (!response) {
11
+ return null;
12
+ }
13
+ // Legacy callman-core stored the parsed body under `data`. Newer
14
+ // scenario-runner uses `body` (parsed) + `rawBody` (string). Pick whichever
15
+ // upstream gave us, preferring the parsed JSON body when available.
16
+ const parsedBody = response.jsonBody ?? response.body;
17
+ const api = {
18
+ ok: response.ok,
19
+ status: response.status,
20
+ code: response.status,
21
+ statusText: response.statusText,
22
+ headers: response.headers,
23
+ data: parsedBody,
24
+ body: parsedBody,
25
+ rawBody: response.rawBody,
26
+ raw: response.rawBody,
27
+ contentType: response.contentType,
28
+ durationMs: response.durationMs,
29
+ responseTime: response.durationMs,
30
+ sizeBytes: response.sizeBytes,
31
+ cookies: [...response.cookies],
32
+ json: () => response.jsonBody,
33
+ text: () => response.rawBody,
34
+ };
35
+ // Splice fluent assertion getters onto the same object so chains like
36
+ // `pm.response.to.have.status(200)` work without a helper wrapper.
37
+ const assertion = new PmAssertion(api);
38
+ api.to = assertion;
39
+ api.be = assertion;
40
+ api.have = assertion;
41
+ return api;
42
+ };
43
+ //# sourceMappingURL=response.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response.js","sourceRoot":"","sources":["../../../src/script/features/response.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,6DAA6D;AAC7D,EAAE;AACF,yEAAyE;AACzE,4EAA4E;AAC5E,0EAA0E;AAC1E,oEAAoE;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AA4B9C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,QAAoC,EAAsB,EAAE;IAC3F,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iEAAiE;IACjE,4EAA4E;IAC5E,oEAAoE;IACpE,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC;IAEtD,MAAM,GAAG,GAAgB;QACvB,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,IAAI,EAAE,QAAQ,CAAC,MAAM;QACrB,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,GAAG,EAAE,QAAQ,CAAC,OAAO;QACrB,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,YAAY,EAAE,QAAQ,CAAC,UAAU;QACjC,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,OAAO,EAAE,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC;QAC9B,IAAI,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ;QAC7B,IAAI,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO;KAC7B,CAAC;IAEF,sEAAsE;IACtE,mEAAmE;IACnE,MAAM,SAAS,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;IACvC,GAAG,CAAC,EAAE,GAAG,SAAS,CAAC;IACnB,GAAG,CAAC,EAAE,GAAG,SAAS,CAAC;IACnB,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC;IAErB,OAAO,GAAG,CAAC;AACb,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { ScriptStage, ScriptTestResult } from "../types.js";
2
+ export interface TestCollector {
3
+ test: (name: string, fn: ((() => unknown | Promise<unknown>) | undefined)) => Promise<void>;
4
+ skip: (name: string, reason?: string) => void;
5
+ testResults: ScriptTestResult[];
6
+ flush: () => Promise<void>;
7
+ }
8
+ export declare const buildTestCollector: (_stage: ScriptStage) => TestCollector;
9
+ //# sourceMappingURL=tests.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tests.d.ts","sourceRoot":"","sources":["../../../src/script/features/tests.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAqBjE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,CACJ,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,CAAC,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,KACjD,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAOD,eAAO,MAAM,kBAAkB,GAAI,QAAQ,WAAW,KAAG,aAyCxD,CAAC"}
@@ -0,0 +1,62 @@
1
+ // pm.test collector — runs each callback as a fire-and-forget Promise that
2
+ // resolves to PASS/FAIL/SKIP and surfaces the result via `flush()`.
3
+ //
4
+ // The collector is shared by the script's `pm.test` and the script-level
5
+ // SKIP path. Errors thrown synchronously inside the callback or rejected
6
+ // from an async callback land in the FAIL branch with the error message.
7
+ // Errors thrown inside the vm context cross a realm boundary, which means
8
+ // `error instanceof Error` from the host's perspective is FALSE even when
9
+ // the value has a real .message property. Read the message structurally
10
+ // to keep the recorded text identical to what user scripts see.
11
+ const extractErrorMessage = (error) => {
12
+ if (error instanceof Error) {
13
+ return error.message;
14
+ }
15
+ if (error &&
16
+ typeof error === "object" &&
17
+ "message" in error &&
18
+ typeof error.message === "string") {
19
+ return error.message;
20
+ }
21
+ return String(error);
22
+ };
23
+ const normalizeName = (name) => {
24
+ const trimmed = String(name ?? "").trim();
25
+ return trimmed || "Unnamed test";
26
+ };
27
+ export const buildTestCollector = (_stage) => {
28
+ const testResults = [];
29
+ const pending = [];
30
+ const test = (name, fn) => {
31
+ const normalizedName = normalizeName(name);
32
+ const task = Promise.resolve()
33
+ .then(async () => {
34
+ if (typeof fn !== "function") {
35
+ throw new Error("pm.test requires a callback function");
36
+ }
37
+ await fn();
38
+ testResults.push({ name: normalizedName, status: "PASS" });
39
+ })
40
+ .catch((error) => {
41
+ testResults.push({
42
+ name: normalizedName,
43
+ status: "FAIL",
44
+ error: extractErrorMessage(error),
45
+ });
46
+ });
47
+ pending.push(task);
48
+ return task;
49
+ };
50
+ const skip = (name, reason) => {
51
+ testResults.push({
52
+ name: normalizeName(name),
53
+ status: "SKIP",
54
+ ...(reason ? { error: reason } : {}),
55
+ });
56
+ };
57
+ const flush = async () => {
58
+ await Promise.allSettled(pending);
59
+ };
60
+ return { test, skip, testResults, flush };
61
+ };
62
+ //# sourceMappingURL=tests.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tests.js","sourceRoot":"","sources":["../../../src/script/features/tests.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,oEAAoE;AACpE,EAAE;AACF,yEAAyE;AACzE,yEAAyE;AACzE,yEAAyE;AAIzE,0EAA0E;AAC1E,0EAA0E;AAC1E,wEAAwE;AACxE,gEAAgE;AAChE,MAAM,mBAAmB,GAAG,CAAC,KAAc,EAAU,EAAE;IACrD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IACD,IACE,KAAK;QACL,OAAO,KAAK,KAAK,QAAQ;QACzB,SAAS,IAAI,KAAK;QAClB,OAAQ,KAA8B,CAAC,OAAO,KAAK,QAAQ,EAC3D,CAAC;QACD,OAAQ,KAA6B,CAAC,OAAO,CAAC;IAChD,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC,CAAC;AAYF,MAAM,aAAa,GAAG,CAAC,IAAa,EAAU,EAAE;IAC9C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1C,OAAO,OAAO,IAAI,cAAc,CAAC;AACnC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAmB,EAAiB,EAAE;IACvE,MAAM,WAAW,GAAuB,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAoB,EAAE,CAAC;IAEpC,MAAM,IAAI,GAAG,CACX,IAAY,EACZ,EAAoD,EACrC,EAAE;QACjB,MAAM,cAAc,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE;aAC3B,IAAI,CAAC,KAAK,IAAI,EAAE;YACf,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;YAC1D,CAAC;YACD,MAAM,EAAE,EAAE,CAAC;YACX,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7D,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACxB,WAAW,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,cAAc;gBACpB,MAAM,EAAE,MAAM;gBACd,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC;aAClC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACL,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,MAAe,EAAQ,EAAE;QACnD,WAAW,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC;YACzB,MAAM,EAAE,MAAM;YACd,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACrC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,KAAK,IAAmB,EAAE;QACtC,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC,CAAC;IAEF,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AAC5C,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ScriptRunContext, TestResult } from "../types/index.js";
2
+ export type { ScriptRunContext };
3
+ export declare const runScript: (script: string | undefined, context: ScriptRunContext) => Promise<TestResult[]>;
4
+ //# sourceMappingURL=legacy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy.d.ts","sourceRoot":"","sources":["../../src/script/legacy.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAGV,gBAAgB,EAChB,UAAU,EACX,MAAM,mBAAmB,CAAC;AAS3B,YAAY,EAAE,gBAAgB,EAAE,CAAC;AA0FjC,eAAO,MAAM,SAAS,GACpB,QAAQ,MAAM,GAAG,SAAS,EAC1B,SAAS,gBAAgB,KACxB,OAAO,CAAC,UAAU,EAAE,CA0CtB,CAAC"}