@mongosh/node-runtime-worker-thread 1.4.2 → 1.5.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"worker-runtime.js","sourceRoot":"","sources":["../src/worker-runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker-runtime.js","sourceRoot":"","sources":["../src/worker-runtime.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mongosh/node-runtime-worker-thread",
3
- "version": "1.4.2",
3
+ "version": "1.5.2",
4
4
  "description": "MongoDB shell runtime that lives in a worker thread",
5
5
  "homepage": "https://github.com/mongodb-js/mongosh",
6
6
  "license": "Apache-2.0",
@@ -14,7 +14,7 @@
14
14
  "url": "https://github.com/mongodb-js/mongosh"
15
15
  },
16
16
  "engines": {
17
- "node": ">=12.4.0"
17
+ "node": ">=14.15.1"
18
18
  },
19
19
  "scripts": {
20
20
  "test": "cross-env TS_NODE_PROJECT=./tsconfig.test.json mocha -r \"../../scripts/import-expansions.js\" --timeout 15000 -r ts-node/register \"./src/**/*.spec.ts\"",
@@ -28,12 +28,12 @@
28
28
  "prepublish": "npm run webpack-build"
29
29
  },
30
30
  "devDependencies": {
31
- "@mongosh/browser-runtime-core": "1.4.2",
32
- "@mongosh/browser-runtime-electron": "1.4.2",
33
- "@mongosh/service-provider-core": "1.4.2",
34
- "@mongosh/service-provider-server": "1.4.2",
35
- "@mongosh/types": "1.4.2",
36
- "bson": "^4.6.2",
31
+ "@mongosh/browser-runtime-core": "1.5.2",
32
+ "@mongosh/browser-runtime-electron": "1.5.2",
33
+ "@mongosh/service-provider-core": "1.5.2",
34
+ "@mongosh/service-provider-server": "1.5.2",
35
+ "@mongosh/types": "1.5.2",
36
+ "bson": "^4.6.5",
37
37
  "mocha": "^7.1.2",
38
38
  "postmsg-rpc": "^2.4.0",
39
39
  "terser-webpack-plugin": "^4.2.3",
@@ -45,5 +45,5 @@
45
45
  "interruptor": "^1.0.1",
46
46
  "system-ca": "^1.0.2"
47
47
  },
48
- "gitHead": "7daf54d237b923567f44725816de7f62f471df11"
48
+ "gitHead": "b5c5a3c233495a6e70b449edc61cb8bf17c12ccc"
49
49
  }
@@ -1,10 +1,11 @@
1
1
  import { ChildProcess } from 'child_process';
2
2
  import { exposeAll, Exposed, close } from './rpc';
3
3
  import type { WorkerRuntime } from './index';
4
+ import { deserializeEvaluationResult } from './serializer';
4
5
  import { RuntimeEvaluationListener } from '@mongosh/browser-runtime-core';
5
6
 
6
7
  export class ChildProcessEvaluationListener {
7
- exposedListener: Exposed<Required<Omit<RuntimeEvaluationListener, 'onLoad' | 'getCSFLELibraryOptions'>>>;
8
+ exposedListener: Exposed<Required<Omit<RuntimeEvaluationListener, 'onLoad' | 'getCryptLibraryOptions'>>>;
8
9
 
9
10
  constructor(workerRuntime: WorkerRuntime, childProcess: ChildProcess) {
10
11
  this.exposedListener = exposeAll(
@@ -15,6 +16,7 @@ export class ChildProcessEvaluationListener {
15
16
  );
16
17
  },
17
18
  onPrint(values) {
19
+ values = values.map(deserializeEvaluationResult);
18
20
  return workerRuntime.evaluationListener?.onPrint?.(values);
19
21
  },
20
22
  setConfig(key, value) {
package/src/rpc.ts CHANGED
@@ -171,14 +171,21 @@ export type Caller<
171
171
 
172
172
  export function createCaller<Impl extends {}>(
173
173
  methodNames: Extract<keyof Impl, string>[],
174
- messageBus: RPCMessageBus
174
+ messageBus: RPCMessageBus,
175
+ processors: Partial<
176
+ Record<typeof methodNames[number], (...input: any[]) => any[]>
177
+ > = {}
175
178
  ): Caller<Impl, typeof methodNames[number]> {
176
179
  const obj = {};
177
180
  const inflight = new Set<CancelablePromise<unknown>>();
178
181
  methodNames.forEach((name) => {
179
182
  const c = caller(name as string, getRPCOptions(messageBus));
180
183
  (obj as any)[name] = async(...args: unknown[]) => {
181
- const promise = c(...args);
184
+ const processed =
185
+ typeof processors[name] === 'function'
186
+ ? processors[name]?.(...args)
187
+ : args;
188
+ const promise = c(...(processed as any[]));
182
189
  inflight.add(promise);
183
190
  const result = (await promise) as RPCError | RPCMessage;
184
191
  inflight.delete(promise);
@@ -535,7 +535,21 @@ describe('worker', () => {
535
535
  await evaluate('print("Hi!")');
536
536
 
537
537
  expect(evalListener.onPrint).to.have.been.calledWith([
538
- { printable: 'Hi!', rawValue: 'Hi!', type: null }
538
+ { printable: 'Hi!', source: undefined, type: null }
539
+ ]);
540
+ });
541
+
542
+ it('should correctly serialize bson objects', async() => {
543
+ const { init, evaluate } = caller;
544
+ const evalListener = createSpiedEvaluationListener();
545
+
546
+ exposed = exposeAll(evalListener, worker);
547
+
548
+ await init('mongodb://nodb/', {}, { nodb: true });
549
+ await evaluate('print(new ObjectId("62a209b0c7dc31e23ab9da45"))');
550
+
551
+ expect(evalListener.onPrint).to.have.been.calledWith([
552
+ { printable: 'ObjectId("62a209b0c7dc31e23ab9da45")', source: undefined, type: 'InspectResult' }
539
553
  ]);
540
554
  });
541
555
  });
@@ -56,7 +56,16 @@ const evaluationListener = createCaller<WorkerRuntimeEvaluationListener>(
56
56
  'onExit',
57
57
  'onRunInterruptible'
58
58
  ],
59
- parentPort
59
+ parentPort,
60
+ {
61
+ onPrint: function(results: RuntimeEvaluationResult[]): RuntimeEvaluationResult[][] {
62
+ // We're transforming an args array, so we have to return an array of
63
+ // args. onPrint only takes one arg which is an array of
64
+ // RuntimeEvaluationResult so in this case it will just return a
65
+ // single-element array that itself is an array.
66
+ return [results.map(serializeEvaluationResult)];
67
+ }
68
+ }
60
69
  );
61
70
 
62
71
  const messageBus: MongoshBus = Object.assign(