@mongosh/shell-evaluator 2.0.1 → 2.1.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/lib/shell-evaluator.d.ts
CHANGED
|
@@ -7,7 +7,8 @@ declare class ShellEvaluator<EvaluationResultType = ShellResult> {
|
|
|
7
7
|
private resultHandler;
|
|
8
8
|
private hasAppliedAsyncWriterRuntimeSupport;
|
|
9
9
|
private asyncWriter;
|
|
10
|
-
|
|
10
|
+
private markTime?;
|
|
11
|
+
constructor(instanceState: ShellInstanceState, resultHandler?: ResultHandler<EvaluationResultType>, markTime?: (label: string) => void);
|
|
11
12
|
private innerEval;
|
|
12
13
|
customEval(originalEval: EvaluationFunction, input: string, context: object, filename: string): Promise<EvaluationResultType>;
|
|
13
14
|
}
|
package/lib/shell-evaluator.js
CHANGED
|
@@ -2,21 +2,36 @@
|
|
|
2
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
|
+
var _a, _b;
|
|
5
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
7
|
exports.ShellEvaluator = void 0;
|
|
7
8
|
const shell_api_1 = require("@mongosh/shell-api");
|
|
8
9
|
const async_rewriter2_1 = __importDefault(require("@mongosh/async-rewriter2"));
|
|
9
10
|
const history_1 = require("@mongosh/history");
|
|
11
|
+
let hasAlreadyRunGlobalRuntimeSupportEval = false;
|
|
12
|
+
let v8;
|
|
13
|
+
try {
|
|
14
|
+
v8 = require('v8');
|
|
15
|
+
}
|
|
16
|
+
catch (_c) {
|
|
17
|
+
}
|
|
18
|
+
if ((_b = (_a = v8 === null || v8 === void 0 ? void 0 : v8.startupSnapshot) === null || _a === void 0 ? void 0 : _a.isBuildingSnapshot) === null || _b === void 0 ? void 0 : _b.call(_a)) {
|
|
19
|
+
v8.startupSnapshot.addSerializeCallback(() => {
|
|
20
|
+
eval(new async_rewriter2_1.default().runtimeSupportCode());
|
|
21
|
+
hasAlreadyRunGlobalRuntimeSupportEval = true;
|
|
22
|
+
});
|
|
23
|
+
}
|
|
10
24
|
class ShellEvaluator {
|
|
11
|
-
constructor(instanceState, resultHandler = shell_api_1.toShellResult) {
|
|
25
|
+
constructor(instanceState, resultHandler = shell_api_1.toShellResult, markTime) {
|
|
12
26
|
this.hasAppliedAsyncWriterRuntimeSupport = true;
|
|
13
27
|
this.instanceState = instanceState;
|
|
14
28
|
this.resultHandler = resultHandler;
|
|
15
29
|
this.asyncWriter = new async_rewriter2_1.default();
|
|
16
30
|
this.hasAppliedAsyncWriterRuntimeSupport = false;
|
|
31
|
+
this.markTime = markTime;
|
|
17
32
|
}
|
|
18
33
|
async innerEval(originalEval, input, context, filename) {
|
|
19
|
-
var _a, _b, _c, _d, _e;
|
|
34
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
20
35
|
const { shellApi } = this.instanceState;
|
|
21
36
|
const trimmedInput = input.trim();
|
|
22
37
|
const argv = trimmedInput.replace(/;$/, '').split(/\s+/g);
|
|
@@ -31,7 +46,9 @@ class ShellEvaluator {
|
|
|
31
46
|
!((_e = argv[0]) !== null && _e !== void 0 ? _e : '').startsWith('(')) {
|
|
32
47
|
return shellApi[cmd](...argv);
|
|
33
48
|
}
|
|
49
|
+
(_f = this.markTime) === null || _f === void 0 ? void 0 : _f.call(this, 'start async rewrite');
|
|
34
50
|
let rewrittenInput = this.asyncWriter.process(input);
|
|
51
|
+
(_g = this.markTime) === null || _g === void 0 ? void 0 : _g.call(this, 'done async rewrite');
|
|
35
52
|
const hiddenCommands = RegExp(history_1.HIDDEN_COMMANDS, 'g');
|
|
36
53
|
if (!hiddenCommands.test(input) && !hiddenCommands.test(rewrittenInput)) {
|
|
37
54
|
this.instanceState.messageBus.emit('mongosh:evaluate-input', {
|
|
@@ -40,8 +57,12 @@ class ShellEvaluator {
|
|
|
40
57
|
}
|
|
41
58
|
if (!this.hasAppliedAsyncWriterRuntimeSupport) {
|
|
42
59
|
this.hasAppliedAsyncWriterRuntimeSupport = true;
|
|
60
|
+
(_h = this.markTime) === null || _h === void 0 ? void 0 : _h.call(this, 'start runtimeSupportCode processing');
|
|
43
61
|
const supportCode = this.asyncWriter.runtimeSupportCode();
|
|
44
|
-
|
|
62
|
+
if (!hasAlreadyRunGlobalRuntimeSupportEval) {
|
|
63
|
+
eval(supportCode);
|
|
64
|
+
}
|
|
65
|
+
(_j = this.markTime) === null || _j === void 0 ? void 0 : _j.call(this, 'done global runtimeSupportCode processing');
|
|
45
66
|
rewrittenInput = supportCode + ';\n' + rewrittenInput;
|
|
46
67
|
}
|
|
47
68
|
try {
|
|
@@ -50,6 +71,9 @@ class ShellEvaluator {
|
|
|
50
71
|
catch (err) {
|
|
51
72
|
throw this.instanceState.transformError(err);
|
|
52
73
|
}
|
|
74
|
+
finally {
|
|
75
|
+
(_k = this.markTime) === null || _k === void 0 ? void 0 : _k.call(this, 'finished evaluating processed code');
|
|
76
|
+
}
|
|
53
77
|
}
|
|
54
78
|
async customEval(originalEval, input, context, filename) {
|
|
55
79
|
const evaluationResult = await this.innerEval(originalEval, input, context, filename);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell-evaluator.js","sourceRoot":"","sources":["../src/shell-evaluator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shell-evaluator.js","sourceRoot":"","sources":["../src/shell-evaluator.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mongosh/shell-evaluator",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "MongoDB Top Level API Package",
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
"prettier": "^2.8.8"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@mongosh/async-rewriter2": "2.0
|
|
48
|
-
"@mongosh/history": "2.0
|
|
49
|
-
"@mongosh/shell-api": "2.0
|
|
47
|
+
"@mongosh/async-rewriter2": "2.1.0",
|
|
48
|
+
"@mongosh/history": "2.1.0",
|
|
49
|
+
"@mongosh/shell-api": "2.1.0"
|
|
50
50
|
},
|
|
51
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "963c75bc45834b1bf69e62bf5b72c4ae8ef26cb4"
|
|
52
52
|
}
|