From da169d6d86a98c20bba63f9b78ae3ed02dd0b5b9 Mon Sep 17 00:00:00 2001 From: Joe Clark Date: Mon, 4 Mar 2024 11:24:16 +0000 Subject: [PATCH 1/8] worker: add test for salesforce issue --- packages/ws-worker/test/worker.test.ts | 102 +++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 packages/ws-worker/test/worker.test.ts diff --git a/packages/ws-worker/test/worker.test.ts b/packages/ws-worker/test/worker.test.ts new file mode 100644 index 000000000..ecf564953 --- /dev/null +++ b/packages/ws-worker/test/worker.test.ts @@ -0,0 +1,102 @@ +// general tests against the worker + +import test from 'ava'; +import createRTE from '@openfn/engine-multi'; +import createLogger, { createMockLogger } from '@openfn/logger'; + +import type { ExitReason } from '@openfn/lexicon/lightning'; + +import { createPlan } from './util'; +import { execute as doExecute } from '../src/api/execute'; +import { mockChannel } from '../src/mock/sockets'; +import { + STEP_START, + STEP_COMPLETE, + RUN_LOG, + RUN_START, + RUN_COMPLETE, + GET_CREDENTIAL, +} from '../src/events'; +import { ExecutionPlan } from '@openfn/lexicon'; + +let engine: any; +let logger: any; + +test.before(async () => { + logger = createMockLogger(); + // logger = createLogger(null, { level: 'debug' }); + + // Note: this is the REAL engine, not a mock + engine = await createRTE({ + maxWorkers: 1, + logger, + // autoinstall: { + // handleIsInstalled: async () => false, + // handleInstall: () => + // new Promise((_resolve, reject) => { + // setTimeout(() => reject(new Error('not the way to amarillo')), 1); + // }), + // }, + }); +}); + +test.after(async () => engine.destroy()); + +// Run code on the worker with a fake channel, no lightning +const execute = async (plan: ExecutionPlan, input = {}, options = {}) => + new Promise<{ reason: ExitReason; state: any }>((done) => { + // TODO allow handlers to be passed + const channel = mockChannel({ + [RUN_START]: async () => true, + [STEP_START]: async () => true, + [RUN_LOG]: async (evt) => { + console.log(evt.source, evt.message) + return true + }, + [STEP_COMPLETE]: async () => true, + [RUN_COMPLETE]: async () => true, + [GET_CREDENTIAL]: async () => { + throw new Error('err'); + }, + }); + + const onFinish = (result: any) => { + done(result); + }; + + doExecute(channel, engine, logger, plan, input, options, onFinish); + }); + + +// Repro for https://github.com/OpenFn/kit/issues/616 +// This will not run in CI unless the env is set +if (process.env.OPENFN_TEST_SF_TOKEN && process.env.OPENFN_TEST_SF_PASSWORD) + test('salesforce issue', async (t) => { + const plan = createPlan({ + expression: `bulk( + 'Contact', + 'insert', + { + failOnError: true, + allowNoOp: true, + }, + state => ([{ + "name": "testy mctestface", + "email": "test@test.com" + }]) + )`, + adaptor: '@openfn/language-salesforce@4.5.0', + configuration: { + username: 'demo@openfn.org', + securityToken: process.env.OPENFN_TEST_SF_TOKEN, + password: process.env.OPENFN_TEST_SF_PASSWORD, + loginUrl: 'https://login.salesforce.com', + } + }); + + const input = { data: { result: 42 } }; + + const result= await execute(plan, input); + t.log(result) + t.is(result.reason.reason, 'success'); +}) \ No newline at end of file From 951d3a6e323bb2cc5f21389a35a09a716ae62f76 Mon Sep 17 00:00:00 2001 From: Joe Clark Date: Mon, 4 Mar 2024 11:42:33 +0000 Subject: [PATCH 2/8] logger: add failing tests for logging null prototype --- packages/logger/test/logger.test.ts | 10 ++++++++++ packages/logger/test/sanitize.test.ts | 7 +++++++ 2 files changed, 17 insertions(+) diff --git a/packages/logger/test/logger.test.ts b/packages/logger/test/logger.test.ts index 3acaf7522..b06945e90 100644 --- a/packages/logger/test/logger.test.ts +++ b/packages/logger/test/logger.test.ts @@ -107,6 +107,16 @@ test('do log null after a string', (t) => { t.is(logger._history.length, 1); }); +test.only("log objects with null prototype", (t) => { + const logger = createLogger(undefined, { level: 'debug' }); + + const obj = Object.create(null) + logger.log(obj); + + t.is(logger._history.length, 1); +}); + + test('sanitize: remove object', (t) => { const logger = createLogger(undefined, { level: 'debug', diff --git a/packages/logger/test/sanitize.test.ts b/packages/logger/test/sanitize.test.ts index 834571657..0eb645484 100644 --- a/packages/logger/test/sanitize.test.ts +++ b/packages/logger/test/sanitize.test.ts @@ -105,6 +105,13 @@ test('preserve top level stuff after sanitizing', (t) => { t.deepEqual(json, expectedState); }); +test.only("don't blow up on null prototypes", (t) => { + const obj = Object.create(null) + const result = sanitize(obj); + + t.is(result, '{}'); +}); + test('ignore a string with obfuscation', (t) => { const result = sanitize('x', { policy: 'obfuscate' }); t.is(result, 'x'); From 7cab3db8cb11d85106ad8d69607bf78a813a0342 Mon Sep 17 00:00:00 2001 From: Joe Clark Date: Mon, 4 Mar 2024 12:00:42 +0000 Subject: [PATCH 3/8] logger: handle null prototypes --- packages/logger/src/sanitize.ts | 14 ++++++++++---- packages/logger/test/logger.test.ts | 2 +- packages/logger/test/mock.test.ts | 3 ++- packages/logger/test/sanitize.test.ts | 16 ++++++++++++++-- 4 files changed, 27 insertions(+), 8 deletions(-) diff --git a/packages/logger/src/sanitize.ts b/packages/logger/src/sanitize.ts index 7597a8d95..d537b518d 100644 --- a/packages/logger/src/sanitize.ts +++ b/packages/logger/src/sanitize.ts @@ -49,6 +49,12 @@ const sanitize = (item: any, options: SanitizeOptions = {}) => { const maybeStringify = (o: any) => options.stringify === false ? o : stringify(o, undefined, 2); + // Ignore primitive values + if (/^(number|string|boolean)$/.exec(typeof item)) { + return item; + } + + // Serialize errors if (isError(item)) { if (options.serializeErrors) { return { @@ -62,10 +68,9 @@ const sanitize = (item: any, options: SanitizeOptions = {}) => { if (options.policy?.match(/^(remove|obfuscate|summarize)$/)) { return scrubbers[options.policy](item); - } else if ( - Array.isArray(item) || - (isNaN(item) && item && typeof item !== 'string') - ) { + } else if (Array.isArray(item)) { + return maybeStringify(item); + } else if (item) { const obj = item as Record; if (obj && obj.configuration) { // This looks sensitive, so let's sanitize it @@ -81,6 +86,7 @@ const sanitize = (item: any, options: SanitizeOptions = {}) => { } return maybeStringify(obj); } + return item; }; diff --git a/packages/logger/test/logger.test.ts b/packages/logger/test/logger.test.ts index b06945e90..2ccf2f415 100644 --- a/packages/logger/test/logger.test.ts +++ b/packages/logger/test/logger.test.ts @@ -107,7 +107,7 @@ test('do log null after a string', (t) => { t.is(logger._history.length, 1); }); -test.only("log objects with null prototype", (t) => { +test("log objects with null prototype", (t) => { const logger = createLogger(undefined, { level: 'debug' }); const obj = Object.create(null) diff --git a/packages/logger/test/mock.test.ts b/packages/logger/test/mock.test.ts index 4444ffbc6..bba950e05 100644 --- a/packages/logger/test/mock.test.ts +++ b/packages/logger/test/mock.test.ts @@ -94,11 +94,12 @@ test('_parse with default settings', (t) => { t.falsy(namespace); }); -test('_parse raw message', (t) => { +test.only('_parse raw message', (t) => { const logger = mockLogger(); logger.success('x', 1, true); const { messageRaw } = logger._parse(logger._last); + console.log(messageRaw) t.is(messageRaw[0], 'x'); t.is(messageRaw[1], 1); t.true(messageRaw[2]); diff --git a/packages/logger/test/sanitize.test.ts b/packages/logger/test/sanitize.test.ts index 0eb645484..5ed0f78b0 100644 --- a/packages/logger/test/sanitize.test.ts +++ b/packages/logger/test/sanitize.test.ts @@ -1,6 +1,7 @@ import test from 'ava'; import sanitize, { SECRET } from '../src/sanitize'; + test('simply return a string', (t) => { const result = sanitize('x'); t.is(result, 'x'); @@ -16,6 +17,17 @@ test('simply return a number', (t) => { t.true(result === 0); }); + +test('simply return true', (t) => { + const result = sanitize(true); + t.true(result); +}); + +test('simply return false', (t) => { + const result = sanitize(false); + t.false(result); +}); + test('simply return undefined', (t) => { const result = sanitize(undefined); t.deepEqual(result, undefined); @@ -105,11 +117,11 @@ test('preserve top level stuff after sanitizing', (t) => { t.deepEqual(json, expectedState); }); -test.only("don't blow up on null prototypes", (t) => { +test("don't blow up on null prototypes", (t) => { const obj = Object.create(null) const result = sanitize(obj); - t.is(result, '{}'); + t.deepEqual(result, '{}'); }); test('ignore a string with obfuscation', (t) => { From ebd495cfd00f76090d53e16281d990f09091e048 Mon Sep 17 00:00:00 2001 From: Joe Clark Date: Mon, 4 Mar 2024 12:12:58 +0000 Subject: [PATCH 4/8] engine: tweak error messaging --- packages/engine-multi/src/errors.ts | 2 ++ packages/engine-multi/src/worker/thread/helpers.ts | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/packages/engine-multi/src/errors.ts b/packages/engine-multi/src/errors.ts index 5468aa390..cae5e1a39 100644 --- a/packages/engine-multi/src/errors.ts +++ b/packages/engine-multi/src/errors.ts @@ -33,11 +33,13 @@ export class ExecutionError extends EngineError { message; original: any; // this is the original error + constructor(original: any) { super(); this.original = original; this.message = original.message; + this.stack = original.stack; } } diff --git a/packages/engine-multi/src/worker/thread/helpers.ts b/packages/engine-multi/src/worker/thread/helpers.ts index fb3e4d9ee..06c924a44 100644 --- a/packages/engine-multi/src/worker/thread/helpers.ts +++ b/packages/engine-multi/src/worker/thread/helpers.ts @@ -74,6 +74,7 @@ export const execute = async ( workflowId, // Map the error out of the thread in a serializable format error: serializeError(err), + stack: err?.stack // TODO job id maybe }); }; @@ -89,6 +90,18 @@ export const execute = async ( // Note that if this occurs after the execute promise resolved, // it'll be ignored (ie the workerEmit call will fail) process.on('uncaughtException', async (err: any) => { + // Log this error to local stdout. This won't be sent out of the worker thread. + console.debug(`Uncaught exception in worker thread (workflow ${workflowId} )`) + console.debug(err) + + // Also try and log to the workflow's logger + try { + console.error(`Uncaught exception in worker thread (workflow ${workflowId} )`) + console.error(err) + } catch(e) { + console.error(`Uncaught exception in worker thread`) + } + // For now, we'll write this off as a crash-level generic execution error // TODO did this come from job or adaptor code? const e = new ExecutionError(err); From 968e879ee81d03ed4955d21b165b9574414bafbf Mon Sep 17 00:00:00 2001 From: Joe Clark Date: Mon, 4 Mar 2024 12:13:55 +0000 Subject: [PATCH 5/8] worker: tidy --- packages/ws-worker/test/worker.test.ts | 74 +++++++++++++------------- 1 file changed, 36 insertions(+), 38 deletions(-) diff --git a/packages/ws-worker/test/worker.test.ts b/packages/ws-worker/test/worker.test.ts index ecf564953..19f4fc5c6 100644 --- a/packages/ws-worker/test/worker.test.ts +++ b/packages/ws-worker/test/worker.test.ts @@ -2,7 +2,7 @@ import test from 'ava'; import createRTE from '@openfn/engine-multi'; -import createLogger, { createMockLogger } from '@openfn/logger'; +import { createMockLogger } from '@openfn/logger'; import type { ExitReason } from '@openfn/lexicon/lightning'; @@ -30,13 +30,6 @@ test.before(async () => { engine = await createRTE({ maxWorkers: 1, logger, - // autoinstall: { - // handleIsInstalled: async () => false, - // handleInstall: () => - // new Promise((_resolve, reject) => { - // setTimeout(() => reject(new Error('not the way to amarillo')), 1); - // }), - // }, }); }); @@ -49,8 +42,8 @@ const execute = async (plan: ExecutionPlan, input = {}, options = {}) => const channel = mockChannel({ [RUN_START]: async () => true, [STEP_START]: async () => true, - [RUN_LOG]: async (evt) => { - console.log(evt.source, evt.message) + [RUN_LOG]: async (_evt) => { + //console.log(evt.source, evt.message) return true }, [STEP_COMPLETE]: async () => true, @@ -70,33 +63,38 @@ const execute = async (plan: ExecutionPlan, input = {}, options = {}) => // Repro for https://github.com/OpenFn/kit/issues/616 // This will not run in CI unless the env is set -if (process.env.OPENFN_TEST_SF_TOKEN && process.env.OPENFN_TEST_SF_PASSWORD) - test('salesforce issue', async (t) => { - const plan = createPlan({ - expression: `bulk( - 'Contact', - 'insert', - { - failOnError: true, - allowNoOp: true, - }, - state => ([{ - "name": "testy mctestface", - "email": "test@test.com" - }]) - )`, - adaptor: '@openfn/language-salesforce@4.5.0', - configuration: { - username: 'demo@openfn.org', - securityToken: process.env.OPENFN_TEST_SF_TOKEN, - password: process.env.OPENFN_TEST_SF_PASSWORD, - loginUrl: 'https://login.salesforce.com', - } - }); +if (process.env.OPENFN_TEST_SF_TOKEN && process.env.OPENFN_TEST_SF_PASSWORD) { + // hard skipping the test because the insert actually fails (permissions) + test.skip('salesforce issue', async (t) => { + const plan = createPlan({ + id: 'x', + expression: `bulk( + 'Contact', + 'insert', + { + failOnError: true, + allowNoOp: true, + }, + state => ([{ + "name": "testy mctestface", + "email": "test@test.com" + }]) + )`, + adaptor: '@openfn/language-salesforce@4.5.0', + configuration: { + username: 'demo@openfn.org', + securityToken: process.env.OPENFN_TEST_SF_TOKEN, + password: process.env.OPENFN_TEST_SF_PASSWORD, + loginUrl: 'https://login.salesforce.com', + } + }); + + const input = { data: { result: 42 } }; - const input = { data: { result: 42 } }; + const result= await execute(plan, input); + t.log(result) - const result= await execute(plan, input); - t.log(result) - t.is(result.reason.reason, 'success'); -}) \ No newline at end of file + // Actually this fails right but it's a permissions thing on the sandbox + t.is(result.reason.reason, 'success'); + }) +} \ No newline at end of file From 2fde0adbf2f8b27d99ab4e03639d6efaafa18674 Mon Sep 17 00:00:00 2001 From: Joe Clark Date: Mon, 4 Mar 2024 12:18:29 +0000 Subject: [PATCH 6/8] changesets --- .changeset/nervous-horses-sniff.md | 5 +++++ .changeset/tricky-horses-kneel.md | 5 +++++ 2 files changed, 10 insertions(+) create mode 100644 .changeset/nervous-horses-sniff.md create mode 100644 .changeset/tricky-horses-kneel.md diff --git a/.changeset/nervous-horses-sniff.md b/.changeset/nervous-horses-sniff.md new file mode 100644 index 000000000..002064fe0 --- /dev/null +++ b/.changeset/nervous-horses-sniff.md @@ -0,0 +1,5 @@ +--- +'@openfn/logger': patch +--- + +Don't blow up if an object with a null prototype is sent through diff --git a/.changeset/tricky-horses-kneel.md b/.changeset/tricky-horses-kneel.md new file mode 100644 index 000000000..0fb9665e4 --- /dev/null +++ b/.changeset/tricky-horses-kneel.md @@ -0,0 +1,5 @@ +--- +'@openfn/engine-multi': patch +--- + +Slightly better error reporting for exceptions From 18d26a06c89028c34c3671965c870c57defa01b9 Mon Sep 17 00:00:00 2001 From: Joe Clark Date: Mon, 4 Mar 2024 12:23:55 +0000 Subject: [PATCH 7/8] logger: restore test --- packages/logger/test/mock.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/logger/test/mock.test.ts b/packages/logger/test/mock.test.ts index bba950e05..454f51bfd 100644 --- a/packages/logger/test/mock.test.ts +++ b/packages/logger/test/mock.test.ts @@ -94,12 +94,12 @@ test('_parse with default settings', (t) => { t.falsy(namespace); }); -test.only('_parse raw message', (t) => { +test('_parse raw message', (t) => { const logger = mockLogger(); logger.success('x', 1, true); const { messageRaw } = logger._parse(logger._last); - console.log(messageRaw) + t.is(messageRaw[0], 'x'); t.is(messageRaw[1], 1); t.true(messageRaw[2]); From b8d6e8c918991dcf28c6bb6e316c1f90a418e94f Mon Sep 17 00:00:00 2001 From: Joe Clark Date: Mon, 4 Mar 2024 12:30:52 +0000 Subject: [PATCH 8/8] versions --- .changeset/nervous-horses-sniff.md | 5 ----- .changeset/tricky-horses-kneel.md | 5 ----- integration-tests/worker/CHANGELOG.md | 11 +++++++++++ integration-tests/worker/package.json | 2 +- packages/cli/CHANGELOG.md | 10 ++++++++++ packages/cli/package.json | 2 +- packages/compiler/CHANGELOG.md | 7 +++++++ packages/compiler/package.json | 2 +- packages/deploy/CHANGELOG.md | 7 +++++++ packages/deploy/package.json | 2 +- packages/engine-multi/CHANGELOG.md | 11 +++++++++++ packages/engine-multi/package.json | 2 +- packages/lightning-mock/CHANGELOG.md | 11 +++++++++++ packages/lightning-mock/package.json | 2 +- packages/logger/CHANGELOG.md | 6 ++++++ packages/logger/package.json | 2 +- packages/runtime/CHANGELOG.md | 7 +++++++ packages/runtime/package.json | 2 +- packages/ws-worker/CHANGELOG.md | 11 +++++++++++ packages/ws-worker/package.json | 2 +- 20 files changed, 90 insertions(+), 19 deletions(-) delete mode 100644 .changeset/nervous-horses-sniff.md delete mode 100644 .changeset/tricky-horses-kneel.md diff --git a/.changeset/nervous-horses-sniff.md b/.changeset/nervous-horses-sniff.md deleted file mode 100644 index 002064fe0..000000000 --- a/.changeset/nervous-horses-sniff.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@openfn/logger': patch ---- - -Don't blow up if an object with a null prototype is sent through diff --git a/.changeset/tricky-horses-kneel.md b/.changeset/tricky-horses-kneel.md deleted file mode 100644 index 0fb9665e4..000000000 --- a/.changeset/tricky-horses-kneel.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@openfn/engine-multi': patch ---- - -Slightly better error reporting for exceptions diff --git a/integration-tests/worker/CHANGELOG.md b/integration-tests/worker/CHANGELOG.md index 57ec04d55..ea5130285 100644 --- a/integration-tests/worker/CHANGELOG.md +++ b/integration-tests/worker/CHANGELOG.md @@ -1,5 +1,16 @@ # @openfn/integration-tests-worker +## 1.0.36 + +### Patch Changes + +- Updated dependencies [2fde0ad] +- Updated dependencies [2fde0ad] + - @openfn/logger@1.0.1 + - @openfn/engine-multi@1.0.1 + - @openfn/lightning-mock@2.0.1 + - @openfn/ws-worker@1.0.1 + ## 1.0.35 ### Patch Changes diff --git a/integration-tests/worker/package.json b/integration-tests/worker/package.json index b9be215c8..a56a8b1ad 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.35", + "version": "1.0.36", "description": "Lightning WOrker integration tests", "author": "Open Function Group ", "license": "ISC", diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index d63fb5564..3cedddd1e 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,15 @@ # @openfn/cli +## 1.0.1 + +### Patch Changes + +- Updated dependencies [2fde0ad] + - @openfn/logger@1.0.1 + - @openfn/compiler@0.0.41 + - @openfn/deploy@0.4.3 + - @openfn/runtime@1.0.1 + ## 1.0.0 ### Major Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index 1b1f72ad0..1672f41bb 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@openfn/cli", - "version": "1.0.0", + "version": "1.0.1", "description": "CLI devtools for the openfn toolchain.", "engines": { "node": ">=18", diff --git a/packages/compiler/CHANGELOG.md b/packages/compiler/CHANGELOG.md index c50e21489..a88109535 100644 --- a/packages/compiler/CHANGELOG.md +++ b/packages/compiler/CHANGELOG.md @@ -1,5 +1,12 @@ # @openfn/compiler +## 0.0.41 + +### Patch Changes + +- Updated dependencies [2fde0ad] + - @openfn/logger@1.0.1 + ## 0.0.40 ### Patch Changes diff --git a/packages/compiler/package.json b/packages/compiler/package.json index 45d5718a0..4a1782c9f 100644 --- a/packages/compiler/package.json +++ b/packages/compiler/package.json @@ -1,6 +1,6 @@ { "name": "@openfn/compiler", - "version": "0.0.40", + "version": "0.0.41", "description": "Compiler and language tooling for openfn jobs.", "author": "Open Function Group ", "license": "ISC", diff --git a/packages/deploy/CHANGELOG.md b/packages/deploy/CHANGELOG.md index 66e70c31d..e7e627e2a 100644 --- a/packages/deploy/CHANGELOG.md +++ b/packages/deploy/CHANGELOG.md @@ -1,5 +1,12 @@ # @openfn/deploy +## 0.4.3 + +### Patch Changes + +- Updated dependencies [2fde0ad] + - @openfn/logger@1.0.1 + ## 0.4.2 ### Patch Changes diff --git a/packages/deploy/package.json b/packages/deploy/package.json index aef2ded1c..fcf37d1fe 100644 --- a/packages/deploy/package.json +++ b/packages/deploy/package.json @@ -1,6 +1,6 @@ { "name": "@openfn/deploy", - "version": "0.4.2", + "version": "0.4.3", "description": "Deploy projects to Lightning instances", "type": "module", "exports": { diff --git a/packages/engine-multi/CHANGELOG.md b/packages/engine-multi/CHANGELOG.md index ef3d59bb6..4cbf248b9 100644 --- a/packages/engine-multi/CHANGELOG.md +++ b/packages/engine-multi/CHANGELOG.md @@ -1,5 +1,16 @@ # engine-multi +## 1.0.1 + +### Patch Changes + +- 2fde0ad: Slightly better error reporting for exceptions +- Updated dependencies [2fde0ad] + - @openfn/logger@1.0.1 + - @openfn/compiler@0.0.41 + - @openfn/lexicon@1.0.0 + - @openfn/runtime@1.0.1 + ## 1.0.0 ### Major Changes diff --git a/packages/engine-multi/package.json b/packages/engine-multi/package.json index 0b4c520cc..f7e26360b 100644 --- a/packages/engine-multi/package.json +++ b/packages/engine-multi/package.json @@ -1,6 +1,6 @@ { "name": "@openfn/engine-multi", - "version": "1.0.0", + "version": "1.0.1", "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 edff55188..fbd75cb35 100644 --- a/packages/lightning-mock/CHANGELOG.md +++ b/packages/lightning-mock/CHANGELOG.md @@ -1,5 +1,16 @@ # @openfn/lightning-mock +## 2.0.1 + +### Patch Changes + +- Updated dependencies [2fde0ad] +- Updated dependencies [2fde0ad] + - @openfn/logger@1.0.1 + - @openfn/engine-multi@1.0.1 + - @openfn/lexicon@1.0.0 + - @openfn/runtime@1.0.1 + ## 2.0.0 ### Major Changes diff --git a/packages/lightning-mock/package.json b/packages/lightning-mock/package.json index 6d44a6698..d19b4ca49 100644 --- a/packages/lightning-mock/package.json +++ b/packages/lightning-mock/package.json @@ -1,6 +1,6 @@ { "name": "@openfn/lightning-mock", - "version": "2.0.0", + "version": "2.0.1", "private": true, "description": "A mock Lightning server", "main": "dist/index.js", diff --git a/packages/logger/CHANGELOG.md b/packages/logger/CHANGELOG.md index e6ffd9de3..3b7147a98 100644 --- a/packages/logger/CHANGELOG.md +++ b/packages/logger/CHANGELOG.md @@ -1,5 +1,11 @@ # @openfn/logger +## 1.0.1 + +### Patch Changes + +- 2fde0ad: Don't blow up if an object with a null prototype is sent through + ## 1.0.0 ### Major Changes diff --git a/packages/logger/package.json b/packages/logger/package.json index 1b202bf12..19f8171c0 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -1,6 +1,6 @@ { "name": "@openfn/logger", - "version": "1.0.0", + "version": "1.0.1", "description": "Cross-package logging utility", "module": "dist/index.js", "author": "Open Function Group ", diff --git a/packages/runtime/CHANGELOG.md b/packages/runtime/CHANGELOG.md index a3f02e071..66bcb0b64 100644 --- a/packages/runtime/CHANGELOG.md +++ b/packages/runtime/CHANGELOG.md @@ -1,5 +1,12 @@ # @openfn/runtime +## 1.0.1 + +### Patch Changes + +- Updated dependencies [2fde0ad] + - @openfn/logger@1.0.1 + ## 1.0.0 ### Major Changes diff --git a/packages/runtime/package.json b/packages/runtime/package.json index 8c00db466..836222a7a 100644 --- a/packages/runtime/package.json +++ b/packages/runtime/package.json @@ -1,6 +1,6 @@ { "name": "@openfn/runtime", - "version": "1.0.0", + "version": "1.0.1", "description": "Job processing runtime.", "type": "module", "exports": { diff --git a/packages/ws-worker/CHANGELOG.md b/packages/ws-worker/CHANGELOG.md index d717a45cd..9adcc4e72 100644 --- a/packages/ws-worker/CHANGELOG.md +++ b/packages/ws-worker/CHANGELOG.md @@ -1,5 +1,16 @@ # ws-worker +## 1.0.1 + +### Patch Changes + +- Updated dependencies [2fde0ad] +- Updated dependencies [2fde0ad] + - @openfn/logger@1.0.1 + - @openfn/engine-multi@1.0.1 + - @openfn/lexicon@1.0.0 + - @openfn/runtime@1.0.1 + ## 1.0.0 ### Major Changes diff --git a/packages/ws-worker/package.json b/packages/ws-worker/package.json index 82eb2be59..a4324d733 100644 --- a/packages/ws-worker/package.json +++ b/packages/ws-worker/package.json @@ -1,6 +1,6 @@ { "name": "@openfn/ws-worker", - "version": "1.0.0", + "version": "1.0.1", "description": "A Websocket Worker to connect Lightning to a Runtime Engine", "main": "dist/index.js", "type": "module",