scorecard-ai-mcp 2.5.0 → 2.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.
- package/code-tool-types.d.mts +2 -0
- package/code-tool-types.d.mts.map +1 -1
- package/code-tool-types.d.ts +2 -0
- package/code-tool-types.d.ts.map +1 -1
- package/code-tool.d.mts +44 -2
- package/code-tool.d.mts.map +1 -1
- package/code-tool.d.ts +44 -2
- package/code-tool.d.ts.map +1 -1
- package/code-tool.js +23 -129
- package/code-tool.js.map +1 -1
- package/code-tool.mjs +23 -96
- package/code-tool.mjs.map +1 -1
- package/docs-search-tool.d.mts +12 -6
- package/docs-search-tool.d.mts.map +1 -1
- package/docs-search-tool.d.ts +12 -6
- package/docs-search-tool.d.ts.map +1 -1
- package/docs-search-tool.js +10 -2
- package/docs-search-tool.js.map +1 -1
- package/docs-search-tool.mjs +10 -2
- package/docs-search-tool.mjs.map +1 -1
- package/package.json +3 -19
- package/server.js +1 -1
- package/server.mjs +1 -1
- package/src/code-tool-types.ts +5 -1
- package/src/code-tool.ts +33 -121
- package/src/docs-search-tool.ts +14 -3
- package/src/server.ts +1 -1
- package/src/tools/metrics/create-metrics.ts +9 -2
- package/src/tools/metrics/delete-metrics.ts +1 -1
- package/src/tools/metrics/get-metrics.ts +9 -2
- package/src/tools/metrics/list-metrics.ts +9 -2
- package/src/tools/metrics/update-metrics.ts +9 -2
- package/src/tools/projects/create-projects.ts +1 -1
- package/src/tools/projects/list-projects.ts +1 -1
- package/src/tools/records/create-records.ts +1 -1
- package/src/tools/records/delete-records.ts +1 -1
- package/src/tools/records/list-records.ts +1 -1
- package/src/tools/runs/create-runs.ts +1 -1
- package/src/tools/runs/get-runs.ts +1 -1
- package/src/tools/runs/list-runs.ts +1 -1
- package/src/tools/scores/upsert-scores.ts +1 -1
- package/src/tools/systems/delete-systems.ts +1 -1
- package/src/tools/systems/get-systems.ts +1 -1
- package/src/tools/systems/list-systems.ts +1 -1
- package/src/tools/systems/update-systems.ts +1 -1
- package/src/tools/systems/upsert-systems.ts +1 -1
- package/src/tools/systems/versions/get-systems-versions.ts +1 -1
- package/src/tools/systems/versions/upsert-systems-versions.ts +1 -1
- package/src/tools/testcases/create-testcases.ts +1 -1
- package/src/tools/testcases/delete-testcases.ts +1 -1
- package/src/tools/testcases/get-testcases.ts +1 -1
- package/src/tools/testcases/list-testcases.ts +1 -1
- package/src/tools/testcases/update-testcases.ts +1 -1
- package/src/tools/testsets/create-testsets.ts +1 -1
- package/src/tools/testsets/delete-testsets.ts +1 -1
- package/src/tools/testsets/get-testsets.ts +1 -1
- package/src/tools/testsets/list-testsets.ts +1 -1
- package/src/tools/testsets/update-testsets.ts +1 -1
- package/tools/metrics/create-metrics.d.mts +12 -6
- package/tools/metrics/create-metrics.d.mts.map +1 -1
- package/tools/metrics/create-metrics.d.ts +12 -6
- package/tools/metrics/create-metrics.d.ts.map +1 -1
- package/tools/metrics/create-metrics.js +13 -1
- package/tools/metrics/create-metrics.js.map +1 -1
- package/tools/metrics/create-metrics.mjs +11 -2
- package/tools/metrics/create-metrics.mjs.map +1 -1
- package/tools/metrics/delete-metrics.d.mts +12 -6
- package/tools/metrics/delete-metrics.d.mts.map +1 -1
- package/tools/metrics/delete-metrics.d.ts +12 -6
- package/tools/metrics/delete-metrics.d.ts.map +1 -1
- package/tools/metrics/delete-metrics.js +5 -1
- package/tools/metrics/delete-metrics.js.map +1 -1
- package/tools/metrics/delete-metrics.mjs +2 -1
- package/tools/metrics/delete-metrics.mjs.map +1 -1
- package/tools/metrics/get-metrics.d.mts +12 -6
- package/tools/metrics/get-metrics.d.mts.map +1 -1
- package/tools/metrics/get-metrics.d.ts +12 -6
- package/tools/metrics/get-metrics.d.ts.map +1 -1
- package/tools/metrics/get-metrics.js +13 -1
- package/tools/metrics/get-metrics.js.map +1 -1
- package/tools/metrics/get-metrics.mjs +11 -2
- package/tools/metrics/get-metrics.mjs.map +1 -1
- package/tools/metrics/list-metrics.d.mts +12 -6
- package/tools/metrics/list-metrics.d.mts.map +1 -1
- package/tools/metrics/list-metrics.d.ts +12 -6
- package/tools/metrics/list-metrics.d.ts.map +1 -1
- package/tools/metrics/list-metrics.js +13 -1
- package/tools/metrics/list-metrics.js.map +1 -1
- package/tools/metrics/list-metrics.mjs +11 -2
- package/tools/metrics/list-metrics.mjs.map +1 -1
- package/tools/metrics/update-metrics.d.mts +12 -6
- package/tools/metrics/update-metrics.d.mts.map +1 -1
- package/tools/metrics/update-metrics.d.ts +12 -6
- package/tools/metrics/update-metrics.d.ts.map +1 -1
- package/tools/metrics/update-metrics.js +13 -1
- package/tools/metrics/update-metrics.js.map +1 -1
- package/tools/metrics/update-metrics.mjs +11 -2
- package/tools/metrics/update-metrics.mjs.map +1 -1
- package/tools/projects/create-projects.d.mts +12 -6
- package/tools/projects/create-projects.d.mts.map +1 -1
- package/tools/projects/create-projects.d.ts +12 -6
- package/tools/projects/create-projects.d.ts.map +1 -1
- package/tools/projects/create-projects.js +5 -1
- package/tools/projects/create-projects.js.map +1 -1
- package/tools/projects/create-projects.mjs +2 -1
- package/tools/projects/create-projects.mjs.map +1 -1
- package/tools/projects/list-projects.d.mts +12 -6
- package/tools/projects/list-projects.d.mts.map +1 -1
- package/tools/projects/list-projects.d.ts +12 -6
- package/tools/projects/list-projects.d.ts.map +1 -1
- package/tools/projects/list-projects.js +5 -1
- package/tools/projects/list-projects.js.map +1 -1
- package/tools/projects/list-projects.mjs +2 -1
- package/tools/projects/list-projects.mjs.map +1 -1
- package/tools/records/create-records.d.mts +12 -6
- package/tools/records/create-records.d.mts.map +1 -1
- package/tools/records/create-records.d.ts +12 -6
- package/tools/records/create-records.d.ts.map +1 -1
- package/tools/records/create-records.js +5 -1
- package/tools/records/create-records.js.map +1 -1
- package/tools/records/create-records.mjs +2 -1
- package/tools/records/create-records.mjs.map +1 -1
- package/tools/records/delete-records.d.mts +12 -6
- package/tools/records/delete-records.d.mts.map +1 -1
- package/tools/records/delete-records.d.ts +12 -6
- package/tools/records/delete-records.d.ts.map +1 -1
- package/tools/records/delete-records.js +5 -1
- package/tools/records/delete-records.js.map +1 -1
- package/tools/records/delete-records.mjs +2 -1
- package/tools/records/delete-records.mjs.map +1 -1
- package/tools/records/list-records.d.mts +12 -6
- package/tools/records/list-records.d.mts.map +1 -1
- package/tools/records/list-records.d.ts +12 -6
- package/tools/records/list-records.d.ts.map +1 -1
- package/tools/records/list-records.js +5 -1
- package/tools/records/list-records.js.map +1 -1
- package/tools/records/list-records.mjs +2 -1
- package/tools/records/list-records.mjs.map +1 -1
- package/tools/runs/create-runs.d.mts +12 -6
- package/tools/runs/create-runs.d.mts.map +1 -1
- package/tools/runs/create-runs.d.ts +12 -6
- package/tools/runs/create-runs.d.ts.map +1 -1
- package/tools/runs/create-runs.js +5 -1
- package/tools/runs/create-runs.js.map +1 -1
- package/tools/runs/create-runs.mjs +2 -1
- package/tools/runs/create-runs.mjs.map +1 -1
- package/tools/runs/get-runs.d.mts +12 -6
- package/tools/runs/get-runs.d.mts.map +1 -1
- package/tools/runs/get-runs.d.ts +12 -6
- package/tools/runs/get-runs.d.ts.map +1 -1
- package/tools/runs/get-runs.js +5 -1
- package/tools/runs/get-runs.js.map +1 -1
- package/tools/runs/get-runs.mjs +2 -1
- package/tools/runs/get-runs.mjs.map +1 -1
- package/tools/runs/list-runs.d.mts +12 -6
- package/tools/runs/list-runs.d.mts.map +1 -1
- package/tools/runs/list-runs.d.ts +12 -6
- package/tools/runs/list-runs.d.ts.map +1 -1
- package/tools/runs/list-runs.js +5 -1
- package/tools/runs/list-runs.js.map +1 -1
- package/tools/runs/list-runs.mjs +2 -1
- package/tools/runs/list-runs.mjs.map +1 -1
- package/tools/scores/upsert-scores.d.mts +12 -6
- package/tools/scores/upsert-scores.d.mts.map +1 -1
- package/tools/scores/upsert-scores.d.ts +12 -6
- package/tools/scores/upsert-scores.d.ts.map +1 -1
- package/tools/scores/upsert-scores.js +5 -1
- package/tools/scores/upsert-scores.js.map +1 -1
- package/tools/scores/upsert-scores.mjs +2 -1
- package/tools/scores/upsert-scores.mjs.map +1 -1
- package/tools/systems/delete-systems.d.mts +12 -6
- package/tools/systems/delete-systems.d.mts.map +1 -1
- package/tools/systems/delete-systems.d.ts +12 -6
- package/tools/systems/delete-systems.d.ts.map +1 -1
- package/tools/systems/delete-systems.js +5 -1
- package/tools/systems/delete-systems.js.map +1 -1
- package/tools/systems/delete-systems.mjs +2 -1
- package/tools/systems/delete-systems.mjs.map +1 -1
- package/tools/systems/get-systems.d.mts +12 -6
- package/tools/systems/get-systems.d.mts.map +1 -1
- package/tools/systems/get-systems.d.ts +12 -6
- package/tools/systems/get-systems.d.ts.map +1 -1
- package/tools/systems/get-systems.js +5 -1
- package/tools/systems/get-systems.js.map +1 -1
- package/tools/systems/get-systems.mjs +2 -1
- package/tools/systems/get-systems.mjs.map +1 -1
- package/tools/systems/list-systems.d.mts +12 -6
- package/tools/systems/list-systems.d.mts.map +1 -1
- package/tools/systems/list-systems.d.ts +12 -6
- package/tools/systems/list-systems.d.ts.map +1 -1
- package/tools/systems/list-systems.js +5 -1
- package/tools/systems/list-systems.js.map +1 -1
- package/tools/systems/list-systems.mjs +2 -1
- package/tools/systems/list-systems.mjs.map +1 -1
- package/tools/systems/update-systems.d.mts +12 -6
- package/tools/systems/update-systems.d.mts.map +1 -1
- package/tools/systems/update-systems.d.ts +12 -6
- package/tools/systems/update-systems.d.ts.map +1 -1
- package/tools/systems/update-systems.js +5 -1
- package/tools/systems/update-systems.js.map +1 -1
- package/tools/systems/update-systems.mjs +2 -1
- package/tools/systems/update-systems.mjs.map +1 -1
- package/tools/systems/upsert-systems.d.mts +12 -6
- package/tools/systems/upsert-systems.d.mts.map +1 -1
- package/tools/systems/upsert-systems.d.ts +12 -6
- package/tools/systems/upsert-systems.d.ts.map +1 -1
- package/tools/systems/upsert-systems.js +5 -1
- package/tools/systems/upsert-systems.js.map +1 -1
- package/tools/systems/upsert-systems.mjs +2 -1
- package/tools/systems/upsert-systems.mjs.map +1 -1
- package/tools/systems/versions/get-systems-versions.d.mts +12 -6
- package/tools/systems/versions/get-systems-versions.d.mts.map +1 -1
- package/tools/systems/versions/get-systems-versions.d.ts +12 -6
- package/tools/systems/versions/get-systems-versions.d.ts.map +1 -1
- package/tools/systems/versions/get-systems-versions.js +5 -1
- package/tools/systems/versions/get-systems-versions.js.map +1 -1
- package/tools/systems/versions/get-systems-versions.mjs +2 -1
- package/tools/systems/versions/get-systems-versions.mjs.map +1 -1
- package/tools/systems/versions/upsert-systems-versions.d.mts +12 -6
- package/tools/systems/versions/upsert-systems-versions.d.mts.map +1 -1
- package/tools/systems/versions/upsert-systems-versions.d.ts +12 -6
- package/tools/systems/versions/upsert-systems-versions.d.ts.map +1 -1
- package/tools/systems/versions/upsert-systems-versions.js +5 -1
- package/tools/systems/versions/upsert-systems-versions.js.map +1 -1
- package/tools/systems/versions/upsert-systems-versions.mjs +2 -1
- package/tools/systems/versions/upsert-systems-versions.mjs.map +1 -1
- package/tools/testcases/create-testcases.d.mts +12 -6
- package/tools/testcases/create-testcases.d.mts.map +1 -1
- package/tools/testcases/create-testcases.d.ts +12 -6
- package/tools/testcases/create-testcases.d.ts.map +1 -1
- package/tools/testcases/create-testcases.js +5 -1
- package/tools/testcases/create-testcases.js.map +1 -1
- package/tools/testcases/create-testcases.mjs +2 -1
- package/tools/testcases/create-testcases.mjs.map +1 -1
- package/tools/testcases/delete-testcases.d.mts +12 -6
- package/tools/testcases/delete-testcases.d.mts.map +1 -1
- package/tools/testcases/delete-testcases.d.ts +12 -6
- package/tools/testcases/delete-testcases.d.ts.map +1 -1
- package/tools/testcases/delete-testcases.js +5 -1
- package/tools/testcases/delete-testcases.js.map +1 -1
- package/tools/testcases/delete-testcases.mjs +2 -1
- package/tools/testcases/delete-testcases.mjs.map +1 -1
- package/tools/testcases/get-testcases.d.mts +12 -6
- package/tools/testcases/get-testcases.d.mts.map +1 -1
- package/tools/testcases/get-testcases.d.ts +12 -6
- package/tools/testcases/get-testcases.d.ts.map +1 -1
- package/tools/testcases/get-testcases.js +5 -1
- package/tools/testcases/get-testcases.js.map +1 -1
- package/tools/testcases/get-testcases.mjs +2 -1
- package/tools/testcases/get-testcases.mjs.map +1 -1
- package/tools/testcases/list-testcases.d.mts +12 -6
- package/tools/testcases/list-testcases.d.mts.map +1 -1
- package/tools/testcases/list-testcases.d.ts +12 -6
- package/tools/testcases/list-testcases.d.ts.map +1 -1
- package/tools/testcases/list-testcases.js +5 -1
- package/tools/testcases/list-testcases.js.map +1 -1
- package/tools/testcases/list-testcases.mjs +2 -1
- package/tools/testcases/list-testcases.mjs.map +1 -1
- package/tools/testcases/update-testcases.d.mts +12 -6
- package/tools/testcases/update-testcases.d.mts.map +1 -1
- package/tools/testcases/update-testcases.d.ts +12 -6
- package/tools/testcases/update-testcases.d.ts.map +1 -1
- package/tools/testcases/update-testcases.js +5 -1
- package/tools/testcases/update-testcases.js.map +1 -1
- package/tools/testcases/update-testcases.mjs +2 -1
- package/tools/testcases/update-testcases.mjs.map +1 -1
- package/tools/testsets/create-testsets.d.mts +12 -6
- package/tools/testsets/create-testsets.d.mts.map +1 -1
- package/tools/testsets/create-testsets.d.ts +12 -6
- package/tools/testsets/create-testsets.d.ts.map +1 -1
- package/tools/testsets/create-testsets.js +5 -1
- package/tools/testsets/create-testsets.js.map +1 -1
- package/tools/testsets/create-testsets.mjs +2 -1
- package/tools/testsets/create-testsets.mjs.map +1 -1
- package/tools/testsets/delete-testsets.d.mts +12 -6
- package/tools/testsets/delete-testsets.d.mts.map +1 -1
- package/tools/testsets/delete-testsets.d.ts +12 -6
- package/tools/testsets/delete-testsets.d.ts.map +1 -1
- package/tools/testsets/delete-testsets.js +5 -1
- package/tools/testsets/delete-testsets.js.map +1 -1
- package/tools/testsets/delete-testsets.mjs +2 -1
- package/tools/testsets/delete-testsets.mjs.map +1 -1
- package/tools/testsets/get-testsets.d.mts +12 -6
- package/tools/testsets/get-testsets.d.mts.map +1 -1
- package/tools/testsets/get-testsets.d.ts +12 -6
- package/tools/testsets/get-testsets.d.ts.map +1 -1
- package/tools/testsets/get-testsets.js +5 -1
- package/tools/testsets/get-testsets.js.map +1 -1
- package/tools/testsets/get-testsets.mjs +2 -1
- package/tools/testsets/get-testsets.mjs.map +1 -1
- package/tools/testsets/list-testsets.d.mts +12 -6
- package/tools/testsets/list-testsets.d.mts.map +1 -1
- package/tools/testsets/list-testsets.d.ts +12 -6
- package/tools/testsets/list-testsets.d.ts.map +1 -1
- package/tools/testsets/list-testsets.js +5 -1
- package/tools/testsets/list-testsets.js.map +1 -1
- package/tools/testsets/list-testsets.mjs +2 -1
- package/tools/testsets/list-testsets.mjs.map +1 -1
- package/tools/testsets/update-testsets.d.mts +12 -6
- package/tools/testsets/update-testsets.d.mts.map +1 -1
- package/tools/testsets/update-testsets.d.ts +12 -6
- package/tools/testsets/update-testsets.d.ts.map +1 -1
- package/tools/testsets/update-testsets.js +5 -1
- package/tools/testsets/update-testsets.js.map +1 -1
- package/tools/testsets/update-testsets.mjs +2 -1
- package/tools/testsets/update-testsets.mjs.map +1 -1
- package/code-tool-paths.cjs +0 -6
- package/code-tool-paths.cjs.map +0 -1
- package/code-tool-paths.d.cts +0 -2
- package/code-tool-paths.d.cts.map +0 -1
- package/code-tool-worker.d.mts +0 -5
- package/code-tool-worker.d.mts.map +0 -1
- package/code-tool-worker.d.ts +0 -5
- package/code-tool-worker.d.ts.map +0 -1
- package/code-tool-worker.js +0 -179
- package/code-tool-worker.js.map +0 -1
- package/code-tool-worker.mjs +0 -174
- package/code-tool-worker.mjs.map +0 -1
- package/src/code-tool-paths.cts +0 -3
- package/src/code-tool-worker.ts +0 -225
package/src/code-tool-worker.ts
DELETED
|
@@ -1,225 +0,0 @@
|
|
|
1
|
-
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
-
|
|
3
|
-
import util from 'node:util';
|
|
4
|
-
|
|
5
|
-
import Fuse from 'fuse.js';
|
|
6
|
-
import ts from 'typescript';
|
|
7
|
-
|
|
8
|
-
import { WorkerInput, WorkerSuccess, WorkerError } from './code-tool-types';
|
|
9
|
-
import { Scorecard } from 'scorecard-ai';
|
|
10
|
-
|
|
11
|
-
function getRunFunctionNode(
|
|
12
|
-
code: string,
|
|
13
|
-
): ts.FunctionDeclaration | ts.FunctionExpression | ts.ArrowFunction | null {
|
|
14
|
-
const sourceFile = ts.createSourceFile('code.ts', code, ts.ScriptTarget.Latest, true);
|
|
15
|
-
|
|
16
|
-
for (const statement of sourceFile.statements) {
|
|
17
|
-
// Check for top-level function declarations
|
|
18
|
-
if (ts.isFunctionDeclaration(statement)) {
|
|
19
|
-
if (statement.name?.text === 'run') {
|
|
20
|
-
return statement;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
// Check for variable declarations: const run = () => {} or const run = function() {}
|
|
25
|
-
if (ts.isVariableStatement(statement)) {
|
|
26
|
-
for (const declaration of statement.declarationList.declarations) {
|
|
27
|
-
if (ts.isIdentifier(declaration.name) && declaration.name.text === 'run') {
|
|
28
|
-
// Check if it's initialized with a function
|
|
29
|
-
if (
|
|
30
|
-
declaration.initializer &&
|
|
31
|
-
(ts.isFunctionExpression(declaration.initializer) || ts.isArrowFunction(declaration.initializer))
|
|
32
|
-
) {
|
|
33
|
-
return declaration.initializer;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
return null;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
const fuse = new Fuse(
|
|
44
|
-
[
|
|
45
|
-
'client.projects.create',
|
|
46
|
-
'client.projects.list',
|
|
47
|
-
'client.testsets.create',
|
|
48
|
-
'client.testsets.delete',
|
|
49
|
-
'client.testsets.get',
|
|
50
|
-
'client.testsets.list',
|
|
51
|
-
'client.testsets.update',
|
|
52
|
-
'client.testcases.create',
|
|
53
|
-
'client.testcases.delete',
|
|
54
|
-
'client.testcases.get',
|
|
55
|
-
'client.testcases.list',
|
|
56
|
-
'client.testcases.update',
|
|
57
|
-
'client.runs.create',
|
|
58
|
-
'client.runs.get',
|
|
59
|
-
'client.runs.list',
|
|
60
|
-
'client.metrics.create',
|
|
61
|
-
'client.metrics.delete',
|
|
62
|
-
'client.metrics.get',
|
|
63
|
-
'client.metrics.list',
|
|
64
|
-
'client.metrics.update',
|
|
65
|
-
'client.records.create',
|
|
66
|
-
'client.records.delete',
|
|
67
|
-
'client.records.list',
|
|
68
|
-
'client.scores.upsert',
|
|
69
|
-
'client.systems.delete',
|
|
70
|
-
'client.systems.get',
|
|
71
|
-
'client.systems.list',
|
|
72
|
-
'client.systems.update',
|
|
73
|
-
'client.systems.upsert',
|
|
74
|
-
'client.systems.versions.get',
|
|
75
|
-
'client.systems.versions.upsert',
|
|
76
|
-
],
|
|
77
|
-
{ threshold: 1, shouldSort: true },
|
|
78
|
-
);
|
|
79
|
-
|
|
80
|
-
function getMethodSuggestions(fullyQualifiedMethodName: string): string[] {
|
|
81
|
-
return fuse
|
|
82
|
-
.search(fullyQualifiedMethodName)
|
|
83
|
-
.map(({ item }) => item)
|
|
84
|
-
.slice(0, 5);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
const proxyToObj = new WeakMap<any, any>();
|
|
88
|
-
const objToProxy = new WeakMap<any, any>();
|
|
89
|
-
|
|
90
|
-
type ClientProxyConfig = {
|
|
91
|
-
path: string[];
|
|
92
|
-
isBelievedBad?: boolean;
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
function makeSdkProxy<T extends object>(obj: T, { path, isBelievedBad = false }: ClientProxyConfig): T {
|
|
96
|
-
let proxy: T = objToProxy.get(obj);
|
|
97
|
-
|
|
98
|
-
if (!proxy) {
|
|
99
|
-
proxy = new Proxy(obj, {
|
|
100
|
-
get(target, prop, receiver) {
|
|
101
|
-
const propPath = [...path, String(prop)];
|
|
102
|
-
const value = Reflect.get(target, prop, receiver);
|
|
103
|
-
|
|
104
|
-
if (isBelievedBad || (!(prop in target) && value === undefined)) {
|
|
105
|
-
// If we're accessing a path that doesn't exist, it will probably eventually error.
|
|
106
|
-
// Let's proxy it and mark it bad so that we can control the error message.
|
|
107
|
-
// We proxy an empty class so that an invocation or construction attempt is possible.
|
|
108
|
-
return makeSdkProxy(class {}, { path: propPath, isBelievedBad: true });
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
if (value !== null && (typeof value === 'object' || typeof value === 'function')) {
|
|
112
|
-
return makeSdkProxy(value, { path: propPath, isBelievedBad });
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
return value;
|
|
116
|
-
},
|
|
117
|
-
|
|
118
|
-
apply(target, thisArg, args) {
|
|
119
|
-
if (isBelievedBad || typeof target !== 'function') {
|
|
120
|
-
const fullyQualifiedMethodName = path.join('.');
|
|
121
|
-
const suggestions = getMethodSuggestions(fullyQualifiedMethodName);
|
|
122
|
-
throw new Error(
|
|
123
|
-
`${fullyQualifiedMethodName} is not a function. Did you mean: ${suggestions.join(', ')}`,
|
|
124
|
-
);
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
return Reflect.apply(target, proxyToObj.get(thisArg) ?? thisArg, args);
|
|
128
|
-
},
|
|
129
|
-
|
|
130
|
-
construct(target, args, newTarget) {
|
|
131
|
-
if (isBelievedBad || typeof target !== 'function') {
|
|
132
|
-
const fullyQualifiedMethodName = path.join('.');
|
|
133
|
-
const suggestions = getMethodSuggestions(fullyQualifiedMethodName);
|
|
134
|
-
throw new Error(
|
|
135
|
-
`${fullyQualifiedMethodName} is not a constructor. Did you mean: ${suggestions.join(', ')}`,
|
|
136
|
-
);
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
return Reflect.construct(target, args, newTarget);
|
|
140
|
-
},
|
|
141
|
-
});
|
|
142
|
-
|
|
143
|
-
objToProxy.set(obj, proxy);
|
|
144
|
-
proxyToObj.set(proxy, obj);
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
return proxy;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
function parseError(code: string, error: unknown): string | undefined {
|
|
151
|
-
if (!(error instanceof Error)) return;
|
|
152
|
-
const message = error.name ? `${error.name}: ${error.message}` : error.message;
|
|
153
|
-
try {
|
|
154
|
-
// Deno uses V8; the first "<anonymous>:LINE:COLUMN" is the top of stack.
|
|
155
|
-
const lineNumber = error.stack?.match(/<anonymous>:([0-9]+):[0-9]+/)?.[1];
|
|
156
|
-
// -1 for the zero-based indexing
|
|
157
|
-
const line =
|
|
158
|
-
lineNumber &&
|
|
159
|
-
code
|
|
160
|
-
.split('\n')
|
|
161
|
-
.at(parseInt(lineNumber, 10) - 1)
|
|
162
|
-
?.trim();
|
|
163
|
-
return line ? `${message}\n at line ${lineNumber}\n ${line}` : message;
|
|
164
|
-
} catch {
|
|
165
|
-
return message;
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
const fetch = async (req: Request): Promise<Response> => {
|
|
170
|
-
const { opts, code } = (await req.json()) as WorkerInput;
|
|
171
|
-
if (code == null) {
|
|
172
|
-
return Response.json(
|
|
173
|
-
{
|
|
174
|
-
message:
|
|
175
|
-
'The code param is missing. Provide one containing a top-level `run` function. Write code within this template:\n\n```\nasync function run(client) {\n // Fill this out\n}\n```',
|
|
176
|
-
} satisfies WorkerError,
|
|
177
|
-
{ status: 400, statusText: 'Code execution error' },
|
|
178
|
-
);
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
const runFunctionNode = getRunFunctionNode(code);
|
|
182
|
-
if (!runFunctionNode) {
|
|
183
|
-
return Response.json(
|
|
184
|
-
{
|
|
185
|
-
message:
|
|
186
|
-
'The code is missing a top-level `run` function. Write code within this template:\n\n```\nasync function run(client) {\n // Fill this out\n}\n```',
|
|
187
|
-
} satisfies WorkerError,
|
|
188
|
-
{ status: 400, statusText: 'Code execution error' },
|
|
189
|
-
);
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
const client = new Scorecard({
|
|
193
|
-
...opts,
|
|
194
|
-
});
|
|
195
|
-
|
|
196
|
-
const logLines: string[] = [];
|
|
197
|
-
const errLines: string[] = [];
|
|
198
|
-
const console = {
|
|
199
|
-
log: (...args: unknown[]) => {
|
|
200
|
-
logLines.push(util.format(...args));
|
|
201
|
-
},
|
|
202
|
-
error: (...args: unknown[]) => {
|
|
203
|
-
errLines.push(util.format(...args));
|
|
204
|
-
},
|
|
205
|
-
};
|
|
206
|
-
try {
|
|
207
|
-
let run_ = async (client: any) => {};
|
|
208
|
-
eval(`${code}\nrun_ = run;`);
|
|
209
|
-
const result = await run_(makeSdkProxy(client, { path: ['client'] }));
|
|
210
|
-
return Response.json({
|
|
211
|
-
result,
|
|
212
|
-
logLines,
|
|
213
|
-
errLines,
|
|
214
|
-
} satisfies WorkerSuccess);
|
|
215
|
-
} catch (e) {
|
|
216
|
-
return Response.json(
|
|
217
|
-
{
|
|
218
|
-
message: parseError(code, e),
|
|
219
|
-
} satisfies WorkerError,
|
|
220
|
-
{ status: 400, statusText: 'Code execution error' },
|
|
221
|
-
);
|
|
222
|
-
}
|
|
223
|
-
};
|
|
224
|
-
|
|
225
|
-
export default { fetch };
|