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.
Files changed (320) hide show
  1. package/code-tool-types.d.mts +2 -0
  2. package/code-tool-types.d.mts.map +1 -1
  3. package/code-tool-types.d.ts +2 -0
  4. package/code-tool-types.d.ts.map +1 -1
  5. package/code-tool.d.mts +44 -2
  6. package/code-tool.d.mts.map +1 -1
  7. package/code-tool.d.ts +44 -2
  8. package/code-tool.d.ts.map +1 -1
  9. package/code-tool.js +23 -129
  10. package/code-tool.js.map +1 -1
  11. package/code-tool.mjs +23 -96
  12. package/code-tool.mjs.map +1 -1
  13. package/docs-search-tool.d.mts +12 -6
  14. package/docs-search-tool.d.mts.map +1 -1
  15. package/docs-search-tool.d.ts +12 -6
  16. package/docs-search-tool.d.ts.map +1 -1
  17. package/docs-search-tool.js +10 -2
  18. package/docs-search-tool.js.map +1 -1
  19. package/docs-search-tool.mjs +10 -2
  20. package/docs-search-tool.mjs.map +1 -1
  21. package/package.json +3 -19
  22. package/server.js +1 -1
  23. package/server.mjs +1 -1
  24. package/src/code-tool-types.ts +5 -1
  25. package/src/code-tool.ts +33 -121
  26. package/src/docs-search-tool.ts +14 -3
  27. package/src/server.ts +1 -1
  28. package/src/tools/metrics/create-metrics.ts +9 -2
  29. package/src/tools/metrics/delete-metrics.ts +1 -1
  30. package/src/tools/metrics/get-metrics.ts +9 -2
  31. package/src/tools/metrics/list-metrics.ts +9 -2
  32. package/src/tools/metrics/update-metrics.ts +9 -2
  33. package/src/tools/projects/create-projects.ts +1 -1
  34. package/src/tools/projects/list-projects.ts +1 -1
  35. package/src/tools/records/create-records.ts +1 -1
  36. package/src/tools/records/delete-records.ts +1 -1
  37. package/src/tools/records/list-records.ts +1 -1
  38. package/src/tools/runs/create-runs.ts +1 -1
  39. package/src/tools/runs/get-runs.ts +1 -1
  40. package/src/tools/runs/list-runs.ts +1 -1
  41. package/src/tools/scores/upsert-scores.ts +1 -1
  42. package/src/tools/systems/delete-systems.ts +1 -1
  43. package/src/tools/systems/get-systems.ts +1 -1
  44. package/src/tools/systems/list-systems.ts +1 -1
  45. package/src/tools/systems/update-systems.ts +1 -1
  46. package/src/tools/systems/upsert-systems.ts +1 -1
  47. package/src/tools/systems/versions/get-systems-versions.ts +1 -1
  48. package/src/tools/systems/versions/upsert-systems-versions.ts +1 -1
  49. package/src/tools/testcases/create-testcases.ts +1 -1
  50. package/src/tools/testcases/delete-testcases.ts +1 -1
  51. package/src/tools/testcases/get-testcases.ts +1 -1
  52. package/src/tools/testcases/list-testcases.ts +1 -1
  53. package/src/tools/testcases/update-testcases.ts +1 -1
  54. package/src/tools/testsets/create-testsets.ts +1 -1
  55. package/src/tools/testsets/delete-testsets.ts +1 -1
  56. package/src/tools/testsets/get-testsets.ts +1 -1
  57. package/src/tools/testsets/list-testsets.ts +1 -1
  58. package/src/tools/testsets/update-testsets.ts +1 -1
  59. package/tools/metrics/create-metrics.d.mts +12 -6
  60. package/tools/metrics/create-metrics.d.mts.map +1 -1
  61. package/tools/metrics/create-metrics.d.ts +12 -6
  62. package/tools/metrics/create-metrics.d.ts.map +1 -1
  63. package/tools/metrics/create-metrics.js +13 -1
  64. package/tools/metrics/create-metrics.js.map +1 -1
  65. package/tools/metrics/create-metrics.mjs +11 -2
  66. package/tools/metrics/create-metrics.mjs.map +1 -1
  67. package/tools/metrics/delete-metrics.d.mts +12 -6
  68. package/tools/metrics/delete-metrics.d.mts.map +1 -1
  69. package/tools/metrics/delete-metrics.d.ts +12 -6
  70. package/tools/metrics/delete-metrics.d.ts.map +1 -1
  71. package/tools/metrics/delete-metrics.js +5 -1
  72. package/tools/metrics/delete-metrics.js.map +1 -1
  73. package/tools/metrics/delete-metrics.mjs +2 -1
  74. package/tools/metrics/delete-metrics.mjs.map +1 -1
  75. package/tools/metrics/get-metrics.d.mts +12 -6
  76. package/tools/metrics/get-metrics.d.mts.map +1 -1
  77. package/tools/metrics/get-metrics.d.ts +12 -6
  78. package/tools/metrics/get-metrics.d.ts.map +1 -1
  79. package/tools/metrics/get-metrics.js +13 -1
  80. package/tools/metrics/get-metrics.js.map +1 -1
  81. package/tools/metrics/get-metrics.mjs +11 -2
  82. package/tools/metrics/get-metrics.mjs.map +1 -1
  83. package/tools/metrics/list-metrics.d.mts +12 -6
  84. package/tools/metrics/list-metrics.d.mts.map +1 -1
  85. package/tools/metrics/list-metrics.d.ts +12 -6
  86. package/tools/metrics/list-metrics.d.ts.map +1 -1
  87. package/tools/metrics/list-metrics.js +13 -1
  88. package/tools/metrics/list-metrics.js.map +1 -1
  89. package/tools/metrics/list-metrics.mjs +11 -2
  90. package/tools/metrics/list-metrics.mjs.map +1 -1
  91. package/tools/metrics/update-metrics.d.mts +12 -6
  92. package/tools/metrics/update-metrics.d.mts.map +1 -1
  93. package/tools/metrics/update-metrics.d.ts +12 -6
  94. package/tools/metrics/update-metrics.d.ts.map +1 -1
  95. package/tools/metrics/update-metrics.js +13 -1
  96. package/tools/metrics/update-metrics.js.map +1 -1
  97. package/tools/metrics/update-metrics.mjs +11 -2
  98. package/tools/metrics/update-metrics.mjs.map +1 -1
  99. package/tools/projects/create-projects.d.mts +12 -6
  100. package/tools/projects/create-projects.d.mts.map +1 -1
  101. package/tools/projects/create-projects.d.ts +12 -6
  102. package/tools/projects/create-projects.d.ts.map +1 -1
  103. package/tools/projects/create-projects.js +5 -1
  104. package/tools/projects/create-projects.js.map +1 -1
  105. package/tools/projects/create-projects.mjs +2 -1
  106. package/tools/projects/create-projects.mjs.map +1 -1
  107. package/tools/projects/list-projects.d.mts +12 -6
  108. package/tools/projects/list-projects.d.mts.map +1 -1
  109. package/tools/projects/list-projects.d.ts +12 -6
  110. package/tools/projects/list-projects.d.ts.map +1 -1
  111. package/tools/projects/list-projects.js +5 -1
  112. package/tools/projects/list-projects.js.map +1 -1
  113. package/tools/projects/list-projects.mjs +2 -1
  114. package/tools/projects/list-projects.mjs.map +1 -1
  115. package/tools/records/create-records.d.mts +12 -6
  116. package/tools/records/create-records.d.mts.map +1 -1
  117. package/tools/records/create-records.d.ts +12 -6
  118. package/tools/records/create-records.d.ts.map +1 -1
  119. package/tools/records/create-records.js +5 -1
  120. package/tools/records/create-records.js.map +1 -1
  121. package/tools/records/create-records.mjs +2 -1
  122. package/tools/records/create-records.mjs.map +1 -1
  123. package/tools/records/delete-records.d.mts +12 -6
  124. package/tools/records/delete-records.d.mts.map +1 -1
  125. package/tools/records/delete-records.d.ts +12 -6
  126. package/tools/records/delete-records.d.ts.map +1 -1
  127. package/tools/records/delete-records.js +5 -1
  128. package/tools/records/delete-records.js.map +1 -1
  129. package/tools/records/delete-records.mjs +2 -1
  130. package/tools/records/delete-records.mjs.map +1 -1
  131. package/tools/records/list-records.d.mts +12 -6
  132. package/tools/records/list-records.d.mts.map +1 -1
  133. package/tools/records/list-records.d.ts +12 -6
  134. package/tools/records/list-records.d.ts.map +1 -1
  135. package/tools/records/list-records.js +5 -1
  136. package/tools/records/list-records.js.map +1 -1
  137. package/tools/records/list-records.mjs +2 -1
  138. package/tools/records/list-records.mjs.map +1 -1
  139. package/tools/runs/create-runs.d.mts +12 -6
  140. package/tools/runs/create-runs.d.mts.map +1 -1
  141. package/tools/runs/create-runs.d.ts +12 -6
  142. package/tools/runs/create-runs.d.ts.map +1 -1
  143. package/tools/runs/create-runs.js +5 -1
  144. package/tools/runs/create-runs.js.map +1 -1
  145. package/tools/runs/create-runs.mjs +2 -1
  146. package/tools/runs/create-runs.mjs.map +1 -1
  147. package/tools/runs/get-runs.d.mts +12 -6
  148. package/tools/runs/get-runs.d.mts.map +1 -1
  149. package/tools/runs/get-runs.d.ts +12 -6
  150. package/tools/runs/get-runs.d.ts.map +1 -1
  151. package/tools/runs/get-runs.js +5 -1
  152. package/tools/runs/get-runs.js.map +1 -1
  153. package/tools/runs/get-runs.mjs +2 -1
  154. package/tools/runs/get-runs.mjs.map +1 -1
  155. package/tools/runs/list-runs.d.mts +12 -6
  156. package/tools/runs/list-runs.d.mts.map +1 -1
  157. package/tools/runs/list-runs.d.ts +12 -6
  158. package/tools/runs/list-runs.d.ts.map +1 -1
  159. package/tools/runs/list-runs.js +5 -1
  160. package/tools/runs/list-runs.js.map +1 -1
  161. package/tools/runs/list-runs.mjs +2 -1
  162. package/tools/runs/list-runs.mjs.map +1 -1
  163. package/tools/scores/upsert-scores.d.mts +12 -6
  164. package/tools/scores/upsert-scores.d.mts.map +1 -1
  165. package/tools/scores/upsert-scores.d.ts +12 -6
  166. package/tools/scores/upsert-scores.d.ts.map +1 -1
  167. package/tools/scores/upsert-scores.js +5 -1
  168. package/tools/scores/upsert-scores.js.map +1 -1
  169. package/tools/scores/upsert-scores.mjs +2 -1
  170. package/tools/scores/upsert-scores.mjs.map +1 -1
  171. package/tools/systems/delete-systems.d.mts +12 -6
  172. package/tools/systems/delete-systems.d.mts.map +1 -1
  173. package/tools/systems/delete-systems.d.ts +12 -6
  174. package/tools/systems/delete-systems.d.ts.map +1 -1
  175. package/tools/systems/delete-systems.js +5 -1
  176. package/tools/systems/delete-systems.js.map +1 -1
  177. package/tools/systems/delete-systems.mjs +2 -1
  178. package/tools/systems/delete-systems.mjs.map +1 -1
  179. package/tools/systems/get-systems.d.mts +12 -6
  180. package/tools/systems/get-systems.d.mts.map +1 -1
  181. package/tools/systems/get-systems.d.ts +12 -6
  182. package/tools/systems/get-systems.d.ts.map +1 -1
  183. package/tools/systems/get-systems.js +5 -1
  184. package/tools/systems/get-systems.js.map +1 -1
  185. package/tools/systems/get-systems.mjs +2 -1
  186. package/tools/systems/get-systems.mjs.map +1 -1
  187. package/tools/systems/list-systems.d.mts +12 -6
  188. package/tools/systems/list-systems.d.mts.map +1 -1
  189. package/tools/systems/list-systems.d.ts +12 -6
  190. package/tools/systems/list-systems.d.ts.map +1 -1
  191. package/tools/systems/list-systems.js +5 -1
  192. package/tools/systems/list-systems.js.map +1 -1
  193. package/tools/systems/list-systems.mjs +2 -1
  194. package/tools/systems/list-systems.mjs.map +1 -1
  195. package/tools/systems/update-systems.d.mts +12 -6
  196. package/tools/systems/update-systems.d.mts.map +1 -1
  197. package/tools/systems/update-systems.d.ts +12 -6
  198. package/tools/systems/update-systems.d.ts.map +1 -1
  199. package/tools/systems/update-systems.js +5 -1
  200. package/tools/systems/update-systems.js.map +1 -1
  201. package/tools/systems/update-systems.mjs +2 -1
  202. package/tools/systems/update-systems.mjs.map +1 -1
  203. package/tools/systems/upsert-systems.d.mts +12 -6
  204. package/tools/systems/upsert-systems.d.mts.map +1 -1
  205. package/tools/systems/upsert-systems.d.ts +12 -6
  206. package/tools/systems/upsert-systems.d.ts.map +1 -1
  207. package/tools/systems/upsert-systems.js +5 -1
  208. package/tools/systems/upsert-systems.js.map +1 -1
  209. package/tools/systems/upsert-systems.mjs +2 -1
  210. package/tools/systems/upsert-systems.mjs.map +1 -1
  211. package/tools/systems/versions/get-systems-versions.d.mts +12 -6
  212. package/tools/systems/versions/get-systems-versions.d.mts.map +1 -1
  213. package/tools/systems/versions/get-systems-versions.d.ts +12 -6
  214. package/tools/systems/versions/get-systems-versions.d.ts.map +1 -1
  215. package/tools/systems/versions/get-systems-versions.js +5 -1
  216. package/tools/systems/versions/get-systems-versions.js.map +1 -1
  217. package/tools/systems/versions/get-systems-versions.mjs +2 -1
  218. package/tools/systems/versions/get-systems-versions.mjs.map +1 -1
  219. package/tools/systems/versions/upsert-systems-versions.d.mts +12 -6
  220. package/tools/systems/versions/upsert-systems-versions.d.mts.map +1 -1
  221. package/tools/systems/versions/upsert-systems-versions.d.ts +12 -6
  222. package/tools/systems/versions/upsert-systems-versions.d.ts.map +1 -1
  223. package/tools/systems/versions/upsert-systems-versions.js +5 -1
  224. package/tools/systems/versions/upsert-systems-versions.js.map +1 -1
  225. package/tools/systems/versions/upsert-systems-versions.mjs +2 -1
  226. package/tools/systems/versions/upsert-systems-versions.mjs.map +1 -1
  227. package/tools/testcases/create-testcases.d.mts +12 -6
  228. package/tools/testcases/create-testcases.d.mts.map +1 -1
  229. package/tools/testcases/create-testcases.d.ts +12 -6
  230. package/tools/testcases/create-testcases.d.ts.map +1 -1
  231. package/tools/testcases/create-testcases.js +5 -1
  232. package/tools/testcases/create-testcases.js.map +1 -1
  233. package/tools/testcases/create-testcases.mjs +2 -1
  234. package/tools/testcases/create-testcases.mjs.map +1 -1
  235. package/tools/testcases/delete-testcases.d.mts +12 -6
  236. package/tools/testcases/delete-testcases.d.mts.map +1 -1
  237. package/tools/testcases/delete-testcases.d.ts +12 -6
  238. package/tools/testcases/delete-testcases.d.ts.map +1 -1
  239. package/tools/testcases/delete-testcases.js +5 -1
  240. package/tools/testcases/delete-testcases.js.map +1 -1
  241. package/tools/testcases/delete-testcases.mjs +2 -1
  242. package/tools/testcases/delete-testcases.mjs.map +1 -1
  243. package/tools/testcases/get-testcases.d.mts +12 -6
  244. package/tools/testcases/get-testcases.d.mts.map +1 -1
  245. package/tools/testcases/get-testcases.d.ts +12 -6
  246. package/tools/testcases/get-testcases.d.ts.map +1 -1
  247. package/tools/testcases/get-testcases.js +5 -1
  248. package/tools/testcases/get-testcases.js.map +1 -1
  249. package/tools/testcases/get-testcases.mjs +2 -1
  250. package/tools/testcases/get-testcases.mjs.map +1 -1
  251. package/tools/testcases/list-testcases.d.mts +12 -6
  252. package/tools/testcases/list-testcases.d.mts.map +1 -1
  253. package/tools/testcases/list-testcases.d.ts +12 -6
  254. package/tools/testcases/list-testcases.d.ts.map +1 -1
  255. package/tools/testcases/list-testcases.js +5 -1
  256. package/tools/testcases/list-testcases.js.map +1 -1
  257. package/tools/testcases/list-testcases.mjs +2 -1
  258. package/tools/testcases/list-testcases.mjs.map +1 -1
  259. package/tools/testcases/update-testcases.d.mts +12 -6
  260. package/tools/testcases/update-testcases.d.mts.map +1 -1
  261. package/tools/testcases/update-testcases.d.ts +12 -6
  262. package/tools/testcases/update-testcases.d.ts.map +1 -1
  263. package/tools/testcases/update-testcases.js +5 -1
  264. package/tools/testcases/update-testcases.js.map +1 -1
  265. package/tools/testcases/update-testcases.mjs +2 -1
  266. package/tools/testcases/update-testcases.mjs.map +1 -1
  267. package/tools/testsets/create-testsets.d.mts +12 -6
  268. package/tools/testsets/create-testsets.d.mts.map +1 -1
  269. package/tools/testsets/create-testsets.d.ts +12 -6
  270. package/tools/testsets/create-testsets.d.ts.map +1 -1
  271. package/tools/testsets/create-testsets.js +5 -1
  272. package/tools/testsets/create-testsets.js.map +1 -1
  273. package/tools/testsets/create-testsets.mjs +2 -1
  274. package/tools/testsets/create-testsets.mjs.map +1 -1
  275. package/tools/testsets/delete-testsets.d.mts +12 -6
  276. package/tools/testsets/delete-testsets.d.mts.map +1 -1
  277. package/tools/testsets/delete-testsets.d.ts +12 -6
  278. package/tools/testsets/delete-testsets.d.ts.map +1 -1
  279. package/tools/testsets/delete-testsets.js +5 -1
  280. package/tools/testsets/delete-testsets.js.map +1 -1
  281. package/tools/testsets/delete-testsets.mjs +2 -1
  282. package/tools/testsets/delete-testsets.mjs.map +1 -1
  283. package/tools/testsets/get-testsets.d.mts +12 -6
  284. package/tools/testsets/get-testsets.d.mts.map +1 -1
  285. package/tools/testsets/get-testsets.d.ts +12 -6
  286. package/tools/testsets/get-testsets.d.ts.map +1 -1
  287. package/tools/testsets/get-testsets.js +5 -1
  288. package/tools/testsets/get-testsets.js.map +1 -1
  289. package/tools/testsets/get-testsets.mjs +2 -1
  290. package/tools/testsets/get-testsets.mjs.map +1 -1
  291. package/tools/testsets/list-testsets.d.mts +12 -6
  292. package/tools/testsets/list-testsets.d.mts.map +1 -1
  293. package/tools/testsets/list-testsets.d.ts +12 -6
  294. package/tools/testsets/list-testsets.d.ts.map +1 -1
  295. package/tools/testsets/list-testsets.js +5 -1
  296. package/tools/testsets/list-testsets.js.map +1 -1
  297. package/tools/testsets/list-testsets.mjs +2 -1
  298. package/tools/testsets/list-testsets.mjs.map +1 -1
  299. package/tools/testsets/update-testsets.d.mts +12 -6
  300. package/tools/testsets/update-testsets.d.mts.map +1 -1
  301. package/tools/testsets/update-testsets.d.ts +12 -6
  302. package/tools/testsets/update-testsets.d.ts.map +1 -1
  303. package/tools/testsets/update-testsets.js +5 -1
  304. package/tools/testsets/update-testsets.js.map +1 -1
  305. package/tools/testsets/update-testsets.mjs +2 -1
  306. package/tools/testsets/update-testsets.mjs.map +1 -1
  307. package/code-tool-paths.cjs +0 -6
  308. package/code-tool-paths.cjs.map +0 -1
  309. package/code-tool-paths.d.cts +0 -2
  310. package/code-tool-paths.d.cts.map +0 -1
  311. package/code-tool-worker.d.mts +0 -5
  312. package/code-tool-worker.d.mts.map +0 -1
  313. package/code-tool-worker.d.ts +0 -5
  314. package/code-tool-worker.d.ts.map +0 -1
  315. package/code-tool-worker.js +0 -179
  316. package/code-tool-worker.js.map +0 -1
  317. package/code-tool-worker.mjs +0 -174
  318. package/code-tool-worker.mjs.map +0 -1
  319. package/src/code-tool-paths.cts +0 -3
  320. package/src/code-tool-worker.ts +0 -225
@@ -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 };