callman-core 1.9.0 → 1.10.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.
- package/ai-packs/feature-policy.md +26 -0
- package/ai-packs/pm-api.md +213 -0
- package/ai-packs/sandbox-globals.md +20 -0
- package/ai-packs/templating.md +104 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/request/executeRequest.d.ts.map +1 -1
- package/dist/request/executeRequest.js +10 -2
- package/dist/request/executeRequest.js.map +1 -1
- package/dist/scenario-runner/adapters/helpers/request-helpers.d.ts.map +1 -1
- package/dist/scenario-runner/adapters/helpers/request-helpers.js +8 -2
- package/dist/scenario-runner/adapters/helpers/request-helpers.js.map +1 -1
- package/dist/scenario-runner/adapters/script-executor.js +3 -3
- package/dist/scenario-runner/adapters/script-executor.js.map +1 -1
- package/dist/script/features/log.d.ts.map +1 -1
- package/dist/script/features/log.js +23 -4
- package/dist/script/features/log.js.map +1 -1
- package/dist/script/isolated-runner.d.ts +11 -0
- package/dist/script/isolated-runner.d.ts.map +1 -0
- package/dist/script/isolated-runner.js +172 -0
- package/dist/script/isolated-runner.js.map +1 -0
- package/dist/script/pm-api-metadata.d.ts +19 -0
- package/dist/script/pm-api-metadata.d.ts.map +1 -0
- package/dist/script/pm-api-metadata.js +264 -0
- package/dist/script/pm-api-metadata.js.map +1 -0
- package/dist/script/scope.d.ts +2 -0
- package/dist/script/scope.d.ts.map +1 -1
- package/dist/script/scope.js +4 -0
- package/dist/script/scope.js.map +1 -1
- package/dist/script/worker-entry.d.ts +2 -0
- package/dist/script/worker-entry.d.ts.map +1 -0
- package/dist/script/worker-entry.js +79 -0
- package/dist/script/worker-entry.js.map +1 -0
- package/dist/utils/jsonc.d.ts +2 -0
- package/dist/utils/jsonc.d.ts.map +1 -0
- package/dist/utils/jsonc.js +101 -0
- package/dist/utils/jsonc.js.map +1 -0
- package/dist-cjs/index.js +11 -1
- package/dist-cjs/index.js.map +1 -1
- package/dist-cjs/request/executeRequest.js +10 -2
- package/dist-cjs/request/executeRequest.js.map +1 -1
- package/dist-cjs/scenario-runner/adapters/helpers/request-helpers.js +8 -2
- package/dist-cjs/scenario-runner/adapters/helpers/request-helpers.js.map +1 -1
- package/dist-cjs/scenario-runner/adapters/script-executor.js +3 -3
- package/dist-cjs/scenario-runner/adapters/script-executor.js.map +1 -1
- package/dist-cjs/script/features/log.js +23 -4
- package/dist-cjs/script/features/log.js.map +1 -1
- package/dist-cjs/script/isolated-runner.js +209 -0
- package/dist-cjs/script/isolated-runner.js.map +1 -0
- package/dist-cjs/script/pm-api-metadata.js +267 -0
- package/dist-cjs/script/pm-api-metadata.js.map +1 -0
- package/dist-cjs/script/scope.js +5 -1
- package/dist-cjs/script/scope.js.map +1 -1
- package/dist-cjs/script/worker-entry.js +81 -0
- package/dist-cjs/script/worker-entry.js.map +1 -0
- package/dist-cjs/utils/jsonc.js +105 -0
- package/dist-cjs/utils/jsonc.js.map +1 -0
- package/package.json +8 -3
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// JSONC → JSON sanitizer.
|
|
3
|
+
//
|
|
4
|
+
// Users write request bodies in the JSON editor with `//` line comments and
|
|
5
|
+
// `/* */` block comments (and sometimes leave a trailing comma after
|
|
6
|
+
// commenting out the last field). Those are convenient while editing but are
|
|
7
|
+
// NOT valid JSON, so they must be stripped before the body is sent or the
|
|
8
|
+
// server rejects the payload. `sanitizeJsonBody` removes both comment styles
|
|
9
|
+
// and any resulting trailing commas while preserving string contents
|
|
10
|
+
// verbatim (so a `//` or `,}` inside a string value — e.g. a URL — survives).
|
|
11
|
+
//
|
|
12
|
+
// The scan is string-literal- and escape-aware; it never uses regexes that
|
|
13
|
+
// could misfire inside string values.
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.sanitizeJsonBody = void 0;
|
|
16
|
+
const stripComments = (input) => {
|
|
17
|
+
let out = "";
|
|
18
|
+
let inString = false;
|
|
19
|
+
let escaped = false;
|
|
20
|
+
for (let i = 0; i < input.length; i += 1) {
|
|
21
|
+
const char = input[i];
|
|
22
|
+
const next = input[i + 1];
|
|
23
|
+
if (inString) {
|
|
24
|
+
out += char;
|
|
25
|
+
if (escaped) {
|
|
26
|
+
escaped = false;
|
|
27
|
+
}
|
|
28
|
+
else if (char === "\\") {
|
|
29
|
+
escaped = true;
|
|
30
|
+
}
|
|
31
|
+
else if (char === '"') {
|
|
32
|
+
inString = false;
|
|
33
|
+
}
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
if (char === '"') {
|
|
37
|
+
inString = true;
|
|
38
|
+
out += char;
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
// Line comment: skip until (but keep) the newline.
|
|
42
|
+
if (char === "/" && next === "/") {
|
|
43
|
+
i += 1;
|
|
44
|
+
while (i + 1 < input.length && input[i + 1] !== "\n") {
|
|
45
|
+
i += 1;
|
|
46
|
+
}
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
// Block comment: skip until the closing */.
|
|
50
|
+
if (char === "/" && next === "*") {
|
|
51
|
+
i += 2;
|
|
52
|
+
while (i < input.length && !(input[i] === "*" && input[i + 1] === "/")) {
|
|
53
|
+
i += 1;
|
|
54
|
+
}
|
|
55
|
+
i += 1; // land on the '/', loop's i+=1 moves past it
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
out += char;
|
|
59
|
+
}
|
|
60
|
+
return out;
|
|
61
|
+
};
|
|
62
|
+
const stripTrailingCommas = (input) => {
|
|
63
|
+
let out = "";
|
|
64
|
+
let inString = false;
|
|
65
|
+
let escaped = false;
|
|
66
|
+
for (let i = 0; i < input.length; i += 1) {
|
|
67
|
+
const char = input[i];
|
|
68
|
+
if (inString) {
|
|
69
|
+
out += char;
|
|
70
|
+
if (escaped) {
|
|
71
|
+
escaped = false;
|
|
72
|
+
}
|
|
73
|
+
else if (char === "\\") {
|
|
74
|
+
escaped = true;
|
|
75
|
+
}
|
|
76
|
+
else if (char === '"') {
|
|
77
|
+
inString = false;
|
|
78
|
+
}
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
if (char === '"') {
|
|
82
|
+
inString = true;
|
|
83
|
+
out += char;
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
if (char === ",") {
|
|
87
|
+
// Look ahead past whitespace; if the next meaningful char closes an
|
|
88
|
+
// object/array, this comma is trailing — drop it.
|
|
89
|
+
let j = i + 1;
|
|
90
|
+
while (j < input.length && /\s/.test(input[j])) {
|
|
91
|
+
j += 1;
|
|
92
|
+
}
|
|
93
|
+
if (input[j] === "}" || input[j] === "]") {
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
out += char;
|
|
98
|
+
}
|
|
99
|
+
return out;
|
|
100
|
+
};
|
|
101
|
+
// Strip JSON comments and trailing commas. Returns clean JSON text; a body
|
|
102
|
+
// with no comments/trailing commas is returned effectively unchanged.
|
|
103
|
+
const sanitizeJsonBody = (input) => stripTrailingCommas(stripComments(input));
|
|
104
|
+
exports.sanitizeJsonBody = sanitizeJsonBody;
|
|
105
|
+
//# sourceMappingURL=jsonc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonc.js","sourceRoot":"","sources":["../../src/utils/jsonc.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "callman-core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.10.0",
|
|
4
4
|
"main": "dist-cjs/index.js",
|
|
5
5
|
"module": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -10,11 +10,14 @@
|
|
|
10
10
|
"types": "./dist/index.d.ts",
|
|
11
11
|
"import": "./dist/index.js",
|
|
12
12
|
"require": "./dist-cjs/index.js"
|
|
13
|
-
}
|
|
13
|
+
},
|
|
14
|
+
"./package.json": "./package.json",
|
|
15
|
+
"./ai-packs/*": "./ai-packs/*"
|
|
14
16
|
},
|
|
15
17
|
"files": [
|
|
16
18
|
"dist",
|
|
17
|
-
"dist-cjs"
|
|
19
|
+
"dist-cjs",
|
|
20
|
+
"ai-packs"
|
|
18
21
|
],
|
|
19
22
|
"scripts": {
|
|
20
23
|
"build": "npm run build:esm && npm run build:cjs && npm run postbuild:cjs",
|
|
@@ -22,6 +25,8 @@
|
|
|
22
25
|
"build:cjs": "tsc -p tsconfig.cjs.json",
|
|
23
26
|
"postbuild:cjs": "node -e \"require('node:fs').writeFileSync('dist-cjs/package.json', '{\\\"type\\\":\\\"commonjs\\\"}\\n')\"",
|
|
24
27
|
"sample": "node samples/runSample.mjs",
|
|
28
|
+
"ai:packs": "npm run build && node scripts/generate-ai-packs.mjs",
|
|
29
|
+
"ai:packs:check": "npm run ai:packs && git diff --exit-code -- ai-packs",
|
|
25
30
|
"test": "npm run build && node --test tests/*.test.mjs"
|
|
26
31
|
},
|
|
27
32
|
"dependencies": {
|