From c6e6741edecd0240a718c756b5b43968112bf6e9 Mon Sep 17 00:00:00 2001 From: Joe Clark Date: Mon, 6 Oct 2025 11:01:49 +0100 Subject: [PATCH 1/5] runtime: use the step name to lookup a source map --- packages/runtime/src/util/sourcemap-errors.ts | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/packages/runtime/src/util/sourcemap-errors.ts b/packages/runtime/src/util/sourcemap-errors.ts index 331bc5140..e0bda5205 100644 --- a/packages/runtime/src/util/sourcemap-errors.ts +++ b/packages/runtime/src/util/sourcemap-errors.ts @@ -26,10 +26,17 @@ export default async (job: Job, error: RTError) => { } if (error.pos && !isNaN(error.pos.line!)) { - // TODO how to handle file name properly here? - const src = smc.sourceContentFor('src.js')!.split('\n'); - const line = src[error.pos.line! - 1]; - error.pos.src = line; + const fileName = job.name ? `${job.name}.js` : 'src.js'; + try { + const src = smc.sourceContentFor(fileName)!.split('\n'); + const line = src[error.pos.line! - 1]; + error.pos.src = line; + } catch (e) { + console.debug( + `Failed to load sourcemap for "${fileName}", falling back to default error` + ); + console.error(e); + } } } }; From a4bf144664761be2d991a08b5dcc56657aec4765 Mon Sep 17 00:00:00 2001 From: Joe Clark Date: Mon, 6 Oct 2025 11:07:50 +0100 Subject: [PATCH 2/5] runtime: update tests --- packages/runtime/src/util/sourcemap-errors.ts | 13 +++---------- packages/runtime/test/util/sourcemap-errors.test.ts | 8 ++++---- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/packages/runtime/src/util/sourcemap-errors.ts b/packages/runtime/src/util/sourcemap-errors.ts index e0bda5205..7c91ade65 100644 --- a/packages/runtime/src/util/sourcemap-errors.ts +++ b/packages/runtime/src/util/sourcemap-errors.ts @@ -27,16 +27,9 @@ export default async (job: Job, error: RTError) => { if (error.pos && !isNaN(error.pos.line!)) { const fileName = job.name ? `${job.name}.js` : 'src.js'; - try { - const src = smc.sourceContentFor(fileName)!.split('\n'); - const line = src[error.pos.line! - 1]; - error.pos.src = line; - } catch (e) { - console.debug( - `Failed to load sourcemap for "${fileName}", falling back to default error` - ); - console.error(e); - } + const src = smc.sourceContentFor(fileName)!.split('\n'); + const line = src[error.pos.line! - 1]; + error.pos.src = line; } } }; diff --git a/packages/runtime/test/util/sourcemap-errors.test.ts b/packages/runtime/test/util/sourcemap-errors.test.ts index f12a71a7e..031aa648a 100644 --- a/packages/runtime/test/util/sourcemap-errors.test.ts +++ b/packages/runtime/test/util/sourcemap-errors.test.ts @@ -6,9 +6,9 @@ import { RTError } from '../../src'; const b = recast.types.builders; // compile an expression into a function -const compile = (src: string) => { +const compile = (src: string, sourceFileName = 'src.js') => { const ast = recast.parse(src, { - sourceFileName: 'src.js', + sourceFileName, }); // take the expression and wrap it in a function declaration @@ -22,12 +22,12 @@ const compile = (src: string) => { ast.program.body.push(fn); return recast.print(fn, { - sourceMapName: 'src.map.js', + sourceMapName: `${sourceFileName.replace('.js', '.map.js')}`, }); }; test('should write the step name to the error', async (t) => { - const { code, map } = compile('x + 1'); + const { code, map } = compile('x + 1', 'yyy.js'); // create a fake job const job = { From c5a9e41d39620ac40fa90026be7e4d1d4bb014c4 Mon Sep 17 00:00:00 2001 From: Joe Clark Date: Mon, 6 Oct 2025 11:20:39 +0100 Subject: [PATCH 3/5] integration test --- .../worker/test/exit-reasons.test.ts | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/integration-tests/worker/test/exit-reasons.test.ts b/integration-tests/worker/test/exit-reasons.test.ts index 8ed4a4c27..8088ed244 100644 --- a/integration-tests/worker/test/exit-reasons.test.ts +++ b/integration-tests/worker/test/exit-reasons.test.ts @@ -53,6 +53,30 @@ test('crash: syntax error', async (t) => { t.regex(error_message, /Unexpected token \(1:9\)$/); }); +// https://github.com/OpenFn/kit/issues/1045 +test('crash: reference error', async (t) => { + const attempt = { + id: crypto.randomUUID(), + jobs: [ + { + name: 'x', // important! + adaptor: '@openfn/language-common@latest', + body: 'fn((s) => s.err.map(s => s))', + }, + ], + }; + + const result = await run(attempt); + + const { reason, error_type, error_message } = result; + t.is(reason, 'fail'); + t.is(error_type, 'RuntimeError'); + t.regex( + error_message, + /TypeError: Cannot read properties of undefined \(reading \'map\'\)/ + ); +}); + // https://github.com/OpenFn/kit/issues/758 test('crash: job not found', async (t) => { lightning.addDataclip('x', {}); From 84bebf4a8c708daafce72014e1f00f3eba551613 Mon Sep 17 00:00:00 2001 From: Joe Clark Date: Mon, 6 Oct 2025 11:22:01 +0100 Subject: [PATCH 4/5] changeset --- .changeset/wicked-wolves-cheat.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/wicked-wolves-cheat.md diff --git a/.changeset/wicked-wolves-cheat.md b/.changeset/wicked-wolves-cheat.md new file mode 100644 index 000000000..9207e93cd --- /dev/null +++ b/.changeset/wicked-wolves-cheat.md @@ -0,0 +1,6 @@ +--- +'@openfn/integration-tests-worker': patch +'@openfn/runtime': patch +--- + +Fix an issue where certain error messages are badly processed the runtime & worker. This resulted in cryptic errors like "src.js is not in the SourceMap". From 679800f83f69cd987e6fcd01db2bb51a090421bb Mon Sep 17 00:00:00 2001 From: Joe Clark Date: Mon, 6 Oct 2025 11:34:52 +0100 Subject: [PATCH 5/5] versions: worker@1.15.4 cli@1.15.2 --- .changeset/wicked-wolves-cheat.md | 6 ------ integration-tests/worker/CHANGELOG.md | 9 +++++++++ integration-tests/worker/package.json | 2 +- packages/cli/CHANGELOG.md | 7 +++++++ packages/cli/package.json | 2 +- packages/engine-multi/CHANGELOG.md | 7 +++++++ packages/engine-multi/package.json | 2 +- packages/lightning-mock/CHANGELOG.md | 8 ++++++++ packages/lightning-mock/package.json | 2 +- packages/runtime/CHANGELOG.md | 6 ++++++ packages/runtime/package.json | 2 +- packages/ws-worker/CHANGELOG.md | 8 ++++++++ packages/ws-worker/package.json | 2 +- 13 files changed, 51 insertions(+), 12 deletions(-) delete mode 100644 .changeset/wicked-wolves-cheat.md diff --git a/.changeset/wicked-wolves-cheat.md b/.changeset/wicked-wolves-cheat.md deleted file mode 100644 index 9207e93cd..000000000 --- a/.changeset/wicked-wolves-cheat.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@openfn/integration-tests-worker': patch -'@openfn/runtime': patch ---- - -Fix an issue where certain error messages are badly processed the runtime & worker. This resulted in cryptic errors like "src.js is not in the SourceMap". diff --git a/integration-tests/worker/CHANGELOG.md b/integration-tests/worker/CHANGELOG.md index 59c45bf4b..495dfa912 100644 --- a/integration-tests/worker/CHANGELOG.md +++ b/integration-tests/worker/CHANGELOG.md @@ -1,5 +1,14 @@ # @openfn/integration-tests-worker +## 1.0.95 + +### Patch Changes + +- 84bebf4: Fix an issue where certain error messages are badly processed the runtime & worker. This resulted in cryptic errors like "src.js is not in the SourceMap". + - @openfn/engine-multi@1.6.13 + - @openfn/lightning-mock@2.2.8 + - @openfn/ws-worker@1.15.4 + ## 1.0.94 ### Patch Changes diff --git a/integration-tests/worker/package.json b/integration-tests/worker/package.json index 66903fe7f..45b604649 100644 --- a/integration-tests/worker/package.json +++ b/integration-tests/worker/package.json @@ -1,7 +1,7 @@ { "name": "@openfn/integration-tests-worker", "private": true, - "version": "1.0.94", + "version": "1.0.95", "description": "Lightning WOrker integration tests", "author": "Open Function Group ", "license": "ISC", diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index cb7f015ee..0f5054bb1 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,12 @@ # @openfn/cli +## 1.15.2 + +### Patch Changes + +- Updated dependencies [84bebf4] + - @openfn/runtime@1.7.3 + ## 1.15.1 ### Patch Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index 052f99de5..8201685f5 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@openfn/cli", - "version": "1.15.1", + "version": "1.15.2", "description": "CLI devtools for the OpenFn toolchain", "engines": { "node": ">=18", diff --git a/packages/engine-multi/CHANGELOG.md b/packages/engine-multi/CHANGELOG.md index 09e2e8ef2..4c664fda3 100644 --- a/packages/engine-multi/CHANGELOG.md +++ b/packages/engine-multi/CHANGELOG.md @@ -1,5 +1,12 @@ # engine-multi +## 1.6.13 + +### Patch Changes + +- Updated dependencies [84bebf4] + - @openfn/runtime@1.7.3 + ## 1.6.12 ### Patch Changes diff --git a/packages/engine-multi/package.json b/packages/engine-multi/package.json index 9af5df66d..76c9e7f5f 100644 --- a/packages/engine-multi/package.json +++ b/packages/engine-multi/package.json @@ -1,6 +1,6 @@ { "name": "@openfn/engine-multi", - "version": "1.6.12", + "version": "1.6.13", "description": "Multi-process runtime engine", "main": "dist/index.js", "type": "module", diff --git a/packages/lightning-mock/CHANGELOG.md b/packages/lightning-mock/CHANGELOG.md index 8b102324d..a88ef7466 100644 --- a/packages/lightning-mock/CHANGELOG.md +++ b/packages/lightning-mock/CHANGELOG.md @@ -1,5 +1,13 @@ # @openfn/lightning-mock +## 2.2.8 + +### Patch Changes + +- Updated dependencies [84bebf4] + - @openfn/runtime@1.7.3 + - @openfn/engine-multi@1.6.13 + ## 2.2.7 ### Patch Changes diff --git a/packages/lightning-mock/package.json b/packages/lightning-mock/package.json index 5b9f1af33..c23c17395 100644 --- a/packages/lightning-mock/package.json +++ b/packages/lightning-mock/package.json @@ -1,6 +1,6 @@ { "name": "@openfn/lightning-mock", - "version": "2.2.7", + "version": "2.2.8", "private": true, "description": "A mock Lightning server", "main": "dist/index.js", diff --git a/packages/runtime/CHANGELOG.md b/packages/runtime/CHANGELOG.md index 5ab835c6d..3408cf143 100644 --- a/packages/runtime/CHANGELOG.md +++ b/packages/runtime/CHANGELOG.md @@ -1,5 +1,11 @@ # @openfn/runtime +## 1.7.3 + +### Patch Changes + +- 84bebf4: Fix an issue where certain error messages are badly processed the runtime & worker. This resulted in cryptic errors like "src.js is not in the SourceMap". + ## 1.7.2 ### Patch Changes diff --git a/packages/runtime/package.json b/packages/runtime/package.json index 75fc92a49..4b9a95112 100644 --- a/packages/runtime/package.json +++ b/packages/runtime/package.json @@ -1,6 +1,6 @@ { "name": "@openfn/runtime", - "version": "1.7.2", + "version": "1.7.3", "description": "Job processing runtime.", "type": "module", "exports": { diff --git a/packages/ws-worker/CHANGELOG.md b/packages/ws-worker/CHANGELOG.md index 835c95f54..7a474503e 100644 --- a/packages/ws-worker/CHANGELOG.md +++ b/packages/ws-worker/CHANGELOG.md @@ -1,5 +1,13 @@ # ws-worker +## 1.15.4 + +### Patch Changes + +- Updated dependencies [84bebf4] + - @openfn/runtime@1.7.3 + - @openfn/engine-multi@1.6.13 + ## 1.15.3 ### Patch Changes diff --git a/packages/ws-worker/package.json b/packages/ws-worker/package.json index 9837e269c..b7be5260b 100644 --- a/packages/ws-worker/package.json +++ b/packages/ws-worker/package.json @@ -1,6 +1,6 @@ { "name": "@openfn/ws-worker", - "version": "1.15.3", + "version": "1.15.4", "description": "A Websocket Worker to connect Lightning to a Runtime Engine", "main": "dist/index.js", "type": "module",