@mongosh/cli-repl 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/.depcheckrc +4 -0
- package/AUTHORS +2 -0
- package/README.md +1 -0
- package/lib/async-repl.d.ts +1 -1
- package/lib/async-repl.js +94 -91
- package/lib/async-repl.js.map +1 -1
- package/lib/build-info.d.ts +1 -0
- package/lib/build-info.js +17 -11
- package/lib/build-info.js.map +1 -1
- package/lib/build-info.json +1 -1
- package/lib/cli-repl.d.ts +1 -1
- package/lib/cli-repl.js +29 -3
- package/lib/cli-repl.js.map +1 -1
- package/lib/constants.js +1 -0
- package/lib/constants.js.map +1 -1
- package/lib/format-output.js +1 -1
- package/lib/mongosh-repl.js +25 -46
- package/lib/mongosh-repl.js.map +1 -1
- package/lib/run.js +63 -61
- package/lib/run.js.map +1 -1
- package/lib/smoke-tests.js +2 -2
- package/lib/smoke-tests.js.map +1 -1
- package/lib/startup-timing.d.ts +2 -0
- package/lib/startup-timing.js +45 -0
- package/lib/startup-timing.js.map +1 -0
- package/lib/tls-certificate-selector.d.ts +0 -3
- package/lib/tls-certificate-selector.js +2 -4
- package/lib/tls-certificate-selector.js.map +1 -1
- package/lib/update-notification-manager.js +25 -2
- package/lib/update-notification-manager.js.map +1 -1
- package/package.json +17 -17
- package/webpack.config.js +6 -1
package/.depcheckrc
CHANGED
package/AUTHORS
CHANGED
package/README.md
CHANGED
|
@@ -15,6 +15,7 @@ CLI interface for [MongoDB Shell][mongosh], an extension to Node.js REPL with Mo
|
|
|
15
15
|
-f, --file [arg] Load the specified mongosh script
|
|
16
16
|
--host [arg] Server to connect to
|
|
17
17
|
--port [arg] Port to connect to
|
|
18
|
+
--build-info Show build information
|
|
18
19
|
--version Show version information
|
|
19
20
|
--quiet Silence output from the shell during the connection process
|
|
20
21
|
--shell Run the shell after executing files
|
package/lib/async-repl.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/// <reference types="node" />
|
|
3
3
|
import type { ReadLineOptions } from 'readline';
|
|
4
4
|
import type { ReplOptions, REPLServer } from 'repl';
|
|
5
|
-
import { start as originalStart } from 'repl';
|
|
5
|
+
import type { start as originalStart } from 'repl';
|
|
6
6
|
export type OriginalEvalFunction = (input: string, context: any, filename: string) => Promise<any>;
|
|
7
7
|
export type AsyncEvalFunction = (originalEval: OriginalEvalFunction, input: string, context: any, filename: string) => Promise<any>;
|
|
8
8
|
export type AsyncREPLOptions = ReadLineOptions & Omit<ReplOptions, 'eval' | 'breakEvalOnSigint'> & {
|
package/lib/async-repl.js
CHANGED
|
@@ -4,10 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.start = exports.evalFinish = exports.evalStart = void 0;
|
|
7
|
-
const domain_1 = require("domain");
|
|
8
7
|
const is_recoverable_error_1 = __importDefault(require("is-recoverable-error"));
|
|
9
|
-
const readline_1 = require("readline");
|
|
10
|
-
const repl_1 = require("repl");
|
|
11
8
|
const util_1 = require("util");
|
|
12
9
|
exports.evalStart = Symbol('async-repl:evalStart');
|
|
13
10
|
exports.evalFinish = Symbol('async-repl:evalFinish');
|
|
@@ -28,11 +25,12 @@ function getPrompt(repl) {
|
|
|
28
25
|
}
|
|
29
26
|
function start(opts) {
|
|
30
27
|
var _a;
|
|
28
|
+
const { Recoverable, start: originalStart } = require('repl');
|
|
31
29
|
const { asyncEval, wrapCallbackError = (err) => err, onAsyncSigint } = opts;
|
|
32
30
|
if (onAsyncSigint) {
|
|
33
31
|
opts.breakEvalOnSigint = true;
|
|
34
32
|
}
|
|
35
|
-
const repl = ((_a = opts.start) !== null && _a !== void 0 ? _a :
|
|
33
|
+
const repl = ((_a = opts.start) !== null && _a !== void 0 ? _a : originalStart)(opts);
|
|
36
34
|
const originalEval = (0, util_1.promisify)(wrapPauseInput(repl.input, wrapNoSyncDomainError(repl.eval.bind(repl))));
|
|
37
35
|
const setRawMode = (mode) => {
|
|
38
36
|
const input = repl.input;
|
|
@@ -42,115 +40,120 @@ function start(opts) {
|
|
|
42
40
|
}
|
|
43
41
|
return wasInRawMode;
|
|
44
42
|
};
|
|
45
|
-
repl.eval =
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
const exitListener = () => {
|
|
58
|
-
exitEventPending = true;
|
|
59
|
-
};
|
|
60
|
-
let previousExitListeners = [];
|
|
61
|
-
let sigintListener = undefined;
|
|
62
|
-
let replSigint = undefined;
|
|
63
|
-
let processSigint = undefined;
|
|
43
|
+
repl.eval = (input, context, filename, callback) => {
|
|
44
|
+
async function _eval() {
|
|
45
|
+
var _a, _b;
|
|
46
|
+
let previouslyInRawMode;
|
|
47
|
+
if (onAsyncSigint) {
|
|
48
|
+
previouslyInRawMode = setRawMode(false);
|
|
49
|
+
}
|
|
50
|
+
let result;
|
|
51
|
+
repl.emit(exports.evalStart, { input });
|
|
52
|
+
const origPrompt = getPrompt(repl);
|
|
53
|
+
const { Interface } = require('readline');
|
|
54
|
+
Interface.prototype.setPrompt.call(repl, '');
|
|
64
55
|
try {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
56
|
+
let exitEventPending = false;
|
|
57
|
+
const exitListener = () => {
|
|
58
|
+
exitEventPending = true;
|
|
59
|
+
};
|
|
60
|
+
let previousExitListeners = [];
|
|
61
|
+
let sigintListener = undefined;
|
|
62
|
+
let replSigint = undefined;
|
|
63
|
+
let processSigint = undefined;
|
|
64
|
+
try {
|
|
65
|
+
result = await new Promise((resolve, reject) => {
|
|
66
|
+
if (onAsyncSigint) {
|
|
67
|
+
sigintListener = async () => {
|
|
68
|
+
let interruptHandled = false;
|
|
69
|
+
try {
|
|
70
|
+
interruptHandled = await onAsyncSigint();
|
|
71
|
+
}
|
|
72
|
+
catch (e) {
|
|
73
|
+
}
|
|
74
|
+
finally {
|
|
75
|
+
reject(interruptHandled
|
|
76
|
+
? undefined
|
|
77
|
+
: new Error('Asynchronous execution was interrupted by `SIGINT`'));
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
replSigint = disableEvent(repl, 'SIGINT');
|
|
81
|
+
processSigint = disableEvent(process, 'SIGINT');
|
|
82
|
+
repl.once('SIGINT', sigintListener);
|
|
83
|
+
}
|
|
84
|
+
previousExitListeners = repl.rawListeners('exit');
|
|
85
|
+
repl.removeAllListeners('exit');
|
|
86
|
+
repl.once('exit', exitListener);
|
|
87
|
+
const evalResult = asyncEval(originalEval, input, context, filename);
|
|
88
|
+
if (sigintListener !== undefined) {
|
|
89
|
+
process.once('SIGINT', sigintListener);
|
|
90
|
+
}
|
|
91
|
+
evalResult.then(resolve, reject);
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
finally {
|
|
95
|
+
if (typeof previouslyInRawMode !== 'undefined') {
|
|
96
|
+
setRawMode(previouslyInRawMode);
|
|
83
97
|
}
|
|
84
|
-
previousExitListeners = repl.rawListeners('exit');
|
|
85
|
-
repl.removeAllListeners('exit');
|
|
86
|
-
repl.once('exit', exitListener);
|
|
87
|
-
const evalResult = asyncEval(originalEval, input, context, filename);
|
|
88
98
|
if (sigintListener !== undefined) {
|
|
89
|
-
|
|
99
|
+
repl.removeListener('SIGINT', sigintListener);
|
|
100
|
+
process.removeListener('SIGINT', sigintListener);
|
|
101
|
+
}
|
|
102
|
+
(_a = replSigint === null || replSigint === void 0 ? void 0 : replSigint.restore) === null || _a === void 0 ? void 0 : _a.call(replSigint);
|
|
103
|
+
(_b = processSigint === null || processSigint === void 0 ? void 0 : processSigint.restore) === null || _b === void 0 ? void 0 : _b.call(processSigint);
|
|
104
|
+
if (getPrompt(repl) === '') {
|
|
105
|
+
Interface.prototype.setPrompt.call(repl, origPrompt);
|
|
106
|
+
}
|
|
107
|
+
repl.removeListener('exit', exitListener);
|
|
108
|
+
for (const listener of previousExitListeners) {
|
|
109
|
+
repl.on('exit', listener);
|
|
110
|
+
}
|
|
111
|
+
if (exitEventPending) {
|
|
112
|
+
process.nextTick(() => repl.emit('exit'));
|
|
90
113
|
}
|
|
91
|
-
evalResult.then(resolve, reject);
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
finally {
|
|
95
|
-
if (typeof previouslyInRawMode !== 'undefined') {
|
|
96
|
-
setRawMode(previouslyInRawMode);
|
|
97
|
-
}
|
|
98
|
-
if (sigintListener !== undefined) {
|
|
99
|
-
repl.removeListener('SIGINT', sigintListener);
|
|
100
|
-
process.removeListener('SIGINT', sigintListener);
|
|
101
|
-
}
|
|
102
|
-
(_a = replSigint === null || replSigint === void 0 ? void 0 : replSigint.restore) === null || _a === void 0 ? void 0 : _a.call(replSigint);
|
|
103
|
-
(_b = processSigint === null || processSigint === void 0 ? void 0 : processSigint.restore) === null || _b === void 0 ? void 0 : _b.call(processSigint);
|
|
104
|
-
if (getPrompt(repl) === '') {
|
|
105
|
-
readline_1.Interface.prototype.setPrompt.call(repl, origPrompt);
|
|
106
|
-
}
|
|
107
|
-
repl.removeListener('exit', exitListener);
|
|
108
|
-
for (const listener of previousExitListeners) {
|
|
109
|
-
repl.on('exit', listener);
|
|
110
|
-
}
|
|
111
|
-
if (exitEventPending) {
|
|
112
|
-
process.nextTick(() => repl.emit('exit'));
|
|
113
114
|
}
|
|
114
115
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
116
|
+
catch (err) {
|
|
117
|
+
try {
|
|
118
|
+
if ((0, is_recoverable_error_1.default)(input)) {
|
|
119
|
+
repl.emit(exports.evalFinish, {
|
|
120
|
+
input,
|
|
121
|
+
success: false,
|
|
122
|
+
err,
|
|
123
|
+
recoverable: true,
|
|
124
|
+
});
|
|
125
|
+
return callback(new Recoverable(err));
|
|
126
|
+
}
|
|
119
127
|
repl.emit(exports.evalFinish, {
|
|
120
128
|
input,
|
|
121
129
|
success: false,
|
|
122
130
|
err,
|
|
123
|
-
recoverable:
|
|
131
|
+
recoverable: false,
|
|
124
132
|
});
|
|
125
|
-
return callback(
|
|
133
|
+
return callback(err);
|
|
134
|
+
}
|
|
135
|
+
catch (callbackErr) {
|
|
136
|
+
return callback(wrapCallbackError(callbackErr));
|
|
126
137
|
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
recoverable: false,
|
|
132
|
-
});
|
|
133
|
-
return callback(err);
|
|
138
|
+
}
|
|
139
|
+
try {
|
|
140
|
+
repl.emit(exports.evalFinish, { input, success: true });
|
|
141
|
+
return callback(null, result);
|
|
134
142
|
}
|
|
135
143
|
catch (callbackErr) {
|
|
136
144
|
return callback(wrapCallbackError(callbackErr));
|
|
137
145
|
}
|
|
138
146
|
}
|
|
139
|
-
|
|
140
|
-
repl.emit(exports.evalFinish, { input, success: true });
|
|
141
|
-
return callback(null, result);
|
|
142
|
-
}
|
|
143
|
-
catch (callbackErr) {
|
|
144
|
-
return callback(wrapCallbackError(callbackErr));
|
|
145
|
-
}
|
|
147
|
+
_eval().catch((e) => callback(e));
|
|
146
148
|
};
|
|
147
149
|
return repl;
|
|
148
150
|
}
|
|
149
151
|
exports.start = start;
|
|
150
152
|
function wrapNoSyncDomainError(fn) {
|
|
151
153
|
return (...args) => {
|
|
152
|
-
const
|
|
153
|
-
|
|
154
|
+
const { Domain } = require('domain');
|
|
155
|
+
const origEmit = Domain.prototype.emit;
|
|
156
|
+
Domain.prototype.emit = function (ev, ...eventArgs) {
|
|
154
157
|
if (ev === 'error') {
|
|
155
158
|
this.exit();
|
|
156
159
|
throw eventArgs[0];
|
|
@@ -161,7 +164,7 @@ function wrapNoSyncDomainError(fn) {
|
|
|
161
164
|
return fn(...args);
|
|
162
165
|
}
|
|
163
166
|
finally {
|
|
164
|
-
|
|
167
|
+
Domain.prototype.emit = origEmit;
|
|
165
168
|
}
|
|
166
169
|
};
|
|
167
170
|
}
|
package/lib/async-repl.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"async-repl.js","sourceRoot":"","sources":["../src/async-repl.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"async-repl.js","sourceRoot":"","sources":["../src/async-repl.ts"],"names":[],"mappings":";;;;;;AAEA,gFAAsD;AAItD,+BAAiC;AA0CpB,QAAA,SAAS,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAC3C,QAAA,UAAU,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC;AAI1D,SAAS,YAAY,CAAC,OAAqB,EAAE,KAAa;IACxD,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACjD,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAClC,OAAO;QACL,OAAO;YACL,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE;gBACnC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAe,CAAC,CAAC;aACpC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,IAAS;;IAE1B,OAAO,MAAA,MAAA,IAAI,CAAC,SAAS,oDAAI,mCAAI,IAAI,CAAC,OAAO,CAAC;AAC5C,CAAC;AAMD,SAAgB,KAAK,CAAC,IAAsB;;IAG1C,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9D,MAAM,EAAE,SAAS,EAAE,iBAAiB,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IAC5E,IAAI,aAAa,EAAE;QAChB,IAAoB,CAAC,iBAAiB,GAAG,IAAI,CAAC;KAChD;IAED,MAAM,IAAI,GAAG,CAAC,MAAA,IAAI,CAAC,KAAK,mCAAI,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,YAAY,GAAG,IAAA,gBAAS,EAC5B,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAEb,CAAC;IAE7D,MAAM,UAAU,GAAG,CAAC,IAAa,EAAW,EAAE;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAmB,CAAC;QACvC,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC;QACjC,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,UAAU,EAAE;YAC1C,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SACxB;QACD,OAAO,YAAY,CAAC;IACtB,CAAC,CAAC;IAED,IAA6B,CAAC,IAAI,GAAG,CACpC,KAAa,EACb,OAAY,EACZ,QAAgB,EAChB,QAAmD,EAC7C,EAAE;QACR,KAAK,UAAU,KAAK;;YAClB,IAAI,mBAAmB,CAAC;YAExB,IAAI,aAAa,EAAE;gBAMjB,mBAAmB,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;aACzC;YAED,IAAI,MAAM,CAAC;YACX,IAAI,CAAC,IAAI,CAAC,iBAAS,EAAE,EAAE,KAAK,EAAoB,CAAC,CAAC;YAGlD,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YAGnC,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;YAc1C,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAE7C,IAAI;gBACF,IAAI,gBAAgB,GAAG,KAAK,CAAC;gBAC7B,MAAM,YAAY,GAAG,GAAG,EAAE;oBACxB,gBAAgB,GAAG,IAAI,CAAC;gBAC1B,CAAC,CAAC;gBACF,IAAI,qBAAqB,GAAU,EAAE,CAAC;gBAEtC,IAAI,cAAc,GAA6B,SAAS,CAAC;gBACzD,IAAI,UAAU,GAA8B,SAAS,CAAC;gBACtD,IAAI,aAAa,GAA8B,SAAS,CAAC;gBAEzD,IAAI;oBACF,MAAM,GAAG,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;wBAC7C,IAAI,aAAa,EAAE;4BAIjB,cAAc,GAAG,KAAK,IAAmB,EAAE;gCACzC,IAAI,gBAAgB,GAAG,KAAK,CAAC;gCAC7B,IAAI;oCACF,gBAAgB,GAAG,MAAM,aAAa,EAAE,CAAC;iCAC1C;gCAAC,OAAO,CAAM,EAAE;iCAEhB;wCAAS;oCAIR,MAAM,CACJ,gBAAgB;wCACd,CAAC,CAAC,SAAS;wCACX,CAAC,CAAC,IAAI,KAAK,CACP,oDAAoD,CACrD,CACN,CAAC;iCACH;4BACH,CAAC,CAAC;4BAEF,UAAU,GAAG,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;4BAC1C,aAAa,GAAG,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;4BAEhD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;yBACrC;wBAKD,qBAAqB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;wBAClD,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;wBAChC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;wBAEhC,MAAM,UAAU,GAAG,SAAS,CAC1B,YAAY,EACZ,KAAK,EACL,OAAO,EACP,QAAQ,CACT,CAAC;wBAEF,IAAI,cAAc,KAAK,SAAS,EAAE;4BAChC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;yBACxC;wBACD,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;oBACnC,CAAC,CAAC,CAAC;iBACJ;wBAAS;oBAER,IAAI,OAAO,mBAAmB,KAAK,WAAW,EAAE;wBAC9C,UAAU,CAAC,mBAAmB,CAAC,CAAC;qBACjC;oBAGD,IAAI,cAAc,KAAK,SAAS,EAAE;wBAChC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;wBAC9C,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;qBAClD;oBAGD,MAAC,UAAkB,aAAlB,UAAU,uBAAV,UAAU,CAAU,OAAO,0DAAI,CAAC;oBACjC,MAAC,aAAqB,aAArB,aAAa,uBAAb,aAAa,CAAU,OAAO,6DAAI,CAAC;oBAEpC,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE;wBAC1B,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;qBACtD;oBAED,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;oBAC1C,KAAK,MAAM,QAAQ,IAAI,qBAAqB,EAAE;wBAC5C,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;qBAC3B;oBACD,IAAI,gBAAgB,EAAE;wBACpB,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;qBAC3C;iBACF;aACF;YAAC,OAAO,GAAQ,EAAE;gBACjB,IAAI;oBACF,IAAI,IAAA,8BAAkB,EAAC,KAAK,CAAC,EAAE;wBAC7B,IAAI,CAAC,IAAI,CAAC,kBAAU,EAAE;4BACpB,KAAK;4BACL,OAAO,EAAE,KAAK;4BACd,GAAG;4BACH,WAAW,EAAE,IAAI;yBACC,CAAC,CAAC;wBACtB,OAAO,QAAQ,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;qBACvC;oBACD,IAAI,CAAC,IAAI,CAAC,kBAAU,EAAE;wBACpB,KAAK;wBACL,OAAO,EAAE,KAAK;wBACd,GAAG;wBACH,WAAW,EAAE,KAAK;qBACA,CAAC,CAAC;oBACtB,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;iBACtB;gBAAC,OAAO,WAAgB,EAAE;oBACzB,OAAO,QAAQ,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;iBACjD;aACF;YACD,IAAI;gBACF,IAAI,CAAC,IAAI,CAAC,kBAAU,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAqB,CAAC,CAAC;gBACnE,OAAO,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;aAC/B;YAAC,OAAO,WAAgB,EAAE;gBACzB,OAAO,QAAQ,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;aACjD;QACH,CAAC;QAED,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC;IAEF,OAAO,IAAI,CAAC;AACd,CAAC;AA7LD,sBA6LC;AAED,SAAS,qBAAqB,CAC5B,EAA0B;IAE1B,OAAO,CAAC,GAAG,IAAU,EAAO,EAAE;QAG5B,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;QAoBvC,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,UACtB,EAAU,EACV,GAAG,SAAgB;YAEnB,IAAI,EAAE,KAAK,OAAO,EAAE;gBAClB,IAAI,CAAC,IAAI,EAAE,CAAC;gBACZ,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC;aACpB;YACD,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,SAAS,CAAC,CAAC;QAC/C,CAAC,CAAC;QAEF,IAAI;YACF,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;SACpB;gBAAS;YAGR,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC;SAClC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CACrB,KAAU,EACV,EAA0B;IAE1B,OAAO,CAAC,GAAG,IAAU,EAAO,EAAE;QAmD5B,MAAM,uCAAuC,GAC3C,OAAO,CAAC,QAAQ,KAAK,OAAO;YAC5B,KAAK,CAAC,KAAK;YACX,KAAK,CAAC,OAAO;YACb,KAAK,CAAC,OAAO,CAAC,OAAO;YACrB,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,KAAK,UAAU;YAC5C,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,KAAK,UAAU,CAAC;QAChD,IAAI,uCAAuC,EAAE;YAC3C,KAAK,CAAC,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC;YAC9B,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;SAC1B;QAED,IAAI;YACF,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;SACpB;gBAAS;YACR,IAAI,uCAAuC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE;gBACrE,KAAK,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;gBAC7B,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;aAC3B;SACF;IACH,CAAC,CAAC;AACJ,CAAC"}
|
package/lib/build-info.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ export interface BuildInfo {
|
|
|
17
17
|
segmentApiKey?: string;
|
|
18
18
|
deps: ReturnType<typeof CliServiceProvider.getVersionInformation>;
|
|
19
19
|
}
|
|
20
|
+
export declare function baseBuildInfo(): Omit<BuildInfo, 'deps'>;
|
|
20
21
|
export declare function buildInfo({ withSegmentApiKey, }?: {
|
|
21
22
|
withSegmentApiKey?: boolean;
|
|
22
23
|
}): Promise<BuildInfo>;
|
package/lib/build-info.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.buildInfo = void 0;
|
|
6
|
+
exports.buildInfo = exports.baseBuildInfo = void 0;
|
|
7
7
|
const os_1 = __importDefault(require("os"));
|
|
8
8
|
const service_provider_server_1 = require("@mongosh/service-provider-server");
|
|
9
9
|
function getSystemArch() {
|
|
@@ -15,24 +15,19 @@ function getSystemArch() {
|
|
|
15
15
|
: 'x64'
|
|
16
16
|
: process.arch;
|
|
17
17
|
}
|
|
18
|
-
|
|
19
|
-
const dependencyVersionInfo = {
|
|
20
|
-
...service_provider_server_1.CliServiceProvider.getVersionInformation(),
|
|
21
|
-
};
|
|
18
|
+
function baseBuildInfo() {
|
|
22
19
|
const runtimeData = {
|
|
23
20
|
nodeVersion: process.version,
|
|
24
21
|
opensslVersion: process.versions.openssl,
|
|
25
22
|
sharedOpenssl: !!process.config.variables.node_shared_openssl,
|
|
26
23
|
runtimeArch: getSystemArch(),
|
|
27
24
|
runtimePlatform: process.platform,
|
|
28
|
-
deps: { ...dependencyVersionInfo },
|
|
29
25
|
};
|
|
30
26
|
try {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
return buildInfo;
|
|
27
|
+
return {
|
|
28
|
+
...require('./build-info.json'),
|
|
29
|
+
...runtimeData,
|
|
30
|
+
};
|
|
36
31
|
}
|
|
37
32
|
catch (_a) {
|
|
38
33
|
const { version } = require('../package.json');
|
|
@@ -48,5 +43,16 @@ async function buildInfo({ withSegmentApiKey, } = {}) {
|
|
|
48
43
|
};
|
|
49
44
|
}
|
|
50
45
|
}
|
|
46
|
+
exports.baseBuildInfo = baseBuildInfo;
|
|
47
|
+
async function buildInfo({ withSegmentApiKey, } = {}) {
|
|
48
|
+
const dependencyVersionInfo = {
|
|
49
|
+
...service_provider_server_1.CliServiceProvider.getVersionInformation(),
|
|
50
|
+
};
|
|
51
|
+
const buildInfo = { ...baseBuildInfo(), deps: { ...dependencyVersionInfo } };
|
|
52
|
+
if (!withSegmentApiKey) {
|
|
53
|
+
delete buildInfo.segmentApiKey;
|
|
54
|
+
}
|
|
55
|
+
return buildInfo;
|
|
56
|
+
}
|
|
51
57
|
exports.buildInfo = buildInfo;
|
|
52
58
|
//# sourceMappingURL=build-info.js.map
|
package/lib/build-info.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-info.js","sourceRoot":"","sources":["../src/build-info.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,8EAAsE;AAmBtE,SAAS,aAAa;IACpB,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ;QAClC,CAAC,CAAC,YAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YAMrB,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC,CAAC;YACF,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,KAAK;QACT,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;AACnB,CAAC;
|
|
1
|
+
{"version":3,"file":"build-info.js","sourceRoot":"","sources":["../src/build-info.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,8EAAsE;AAmBtE,SAAS,aAAa;IACpB,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ;QAClC,CAAC,CAAC,YAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YAMrB,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC,CAAC;YACF,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,KAAK;QACT,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;AACnB,CAAC;AAED,SAAgB,aAAa;IAC3B,MAAM,WAAW,GAAG;QAClB,WAAW,EAAE,OAAO,CAAC,OAAO;QAC5B,cAAc,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO;QACxC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,mBAAmB;QAG7D,WAAW,EAAE,aAAa,EAAE;QAG5B,eAAe,EAAE,OAAO,CAAC,QAAQ;KAClC,CAAC;IAEF,IAAI;QACF,OAAO;YACL,GAAG,OAAO,CAAC,mBAAmB,CAAC;YAC/B,GAAG,WAAW;SACf,CAAC;KACH;IAAC,WAAM;QACN,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAC/C,OAAO;YACL,OAAO;YACP,gBAAgB,EAAE,YAAY;YAC9B,SAAS,EAAE,OAAO,CAAC,IAAI;YACvB,aAAa,EAAE,OAAO,CAAC,QAAQ;YAC/B,WAAW,EAAE,SAAS;YACtB,SAAS,EAAE,IAAI;YACf,UAAU,EAAE,IAAI;YAChB,GAAG,WAAW;SACf,CAAC;KACH;AACH,CAAC;AA/BD,sCA+BC;AAOM,KAAK,UAAU,SAAS,CAAC,EAC9B,iBAAiB,MAGf,EAAE;IACJ,MAAM,qBAAqB,GAAsB;QAC/C,GAAG,4CAAkB,CAAC,qBAAqB,EAAE;KAC9C,CAAC;IAEF,MAAM,SAAS,GAAG,EAAE,GAAG,aAAa,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,qBAAqB,EAAE,EAAE,CAAC;IAC7E,IAAI,CAAC,iBAAiB,EAAE;QACtB,OAAO,SAAS,CAAC,aAAa,CAAC;KAChC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAdD,8BAcC"}
|
package/lib/build-info.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"segmentApiKey":"LLBrrHblu6jY9aujeyXJuePD5dAAFGjn","version":"2.0
|
|
1
|
+
{"segmentApiKey":"LLBrrHblu6jY9aujeyXJuePD5dAAFGjn","version":"2.1.0","distributionKind":"packaged","buildArch":"x64","buildPlatform":"linux","buildTarget":"unknown","buildTime":"2023-11-21T10:43:57.110Z","gitVersion":"963c75bc45834b1bf69e62bf5b72c4ae8ef26cb4"}
|
package/lib/cli-repl.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import type { AutoEncryptionOptions } from '@mongosh/service-provider-core';
|
|
3
3
|
import { CliServiceProvider } from '@mongosh/service-provider-server';
|
|
4
4
|
import type { CliOptions, DevtoolsConnectOptions } from '@mongosh/arg-parser';
|
|
5
|
-
import Analytics from 'analytics-node';
|
|
5
|
+
import type Analytics from 'analytics-node';
|
|
6
6
|
import ConnectionString from 'mongodb-connection-string-url';
|
|
7
7
|
import type { Readable, Writable } from 'stream';
|
|
8
8
|
import type { StyleDefinition } from './clr';
|
package/lib/cli-repl.js
CHANGED
|
@@ -12,7 +12,6 @@ const service_provider_server_1 = require("@mongosh/service-provider-server");
|
|
|
12
12
|
const snippet_manager_1 = require("@mongosh/snippet-manager");
|
|
13
13
|
const editor_1 = require("@mongosh/editor");
|
|
14
14
|
const history_2 = require("@mongosh/history");
|
|
15
|
-
const analytics_node_1 = __importDefault(require("analytics-node"));
|
|
16
15
|
const askpassword_1 = __importDefault(require("askpassword"));
|
|
17
16
|
const events_1 = require("events");
|
|
18
17
|
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
@@ -31,6 +30,7 @@ const path_1 = __importDefault(require("path"));
|
|
|
31
30
|
const util_1 = require("util");
|
|
32
31
|
const get_os_info_1 = require("./get-os-info");
|
|
33
32
|
const update_notification_manager_1 = require("./update-notification-manager");
|
|
33
|
+
const startup_timing_1 = require("./startup-timing");
|
|
34
34
|
const CONNECTING = 'cli-repl.cli-repl.connecting';
|
|
35
35
|
class CliRepl {
|
|
36
36
|
constructor(options) {
|
|
@@ -120,8 +120,10 @@ class CliRepl {
|
|
|
120
120
|
var _a, _b, _c, _d, _e, _f;
|
|
121
121
|
const { version } = require('../package.json');
|
|
122
122
|
await this.verifyNodeVersion();
|
|
123
|
+
(0, startup_timing_1.markTime)('verified node version');
|
|
123
124
|
this.isContainerizedEnvironment =
|
|
124
125
|
await this.getIsContainerizedEnvironment();
|
|
126
|
+
(0, startup_timing_1.markTime)('checked containerized environment');
|
|
125
127
|
if (!this.cliOptions.nodb) {
|
|
126
128
|
const cs = new mongodb_connection_string_url_1.default(driverUri);
|
|
127
129
|
const searchParams = cs.typedSearchParams();
|
|
@@ -140,17 +142,21 @@ class CliRepl {
|
|
|
140
142
|
catch (err) {
|
|
141
143
|
this.warnAboutInaccessibleFile(err);
|
|
142
144
|
}
|
|
145
|
+
(0, startup_timing_1.markTime)('ensured shell homedir');
|
|
143
146
|
await this.logManager.cleanupOldLogfiles();
|
|
147
|
+
(0, startup_timing_1.markTime)('cleaned up log files');
|
|
144
148
|
const logger = await this.logManager.createLogWriter();
|
|
145
149
|
if (!this.cliOptions.quiet) {
|
|
146
150
|
this.output.write(`Current Mongosh Log ID:\t${logger.logId}\n`);
|
|
147
151
|
}
|
|
148
152
|
this.logWriter = logger;
|
|
153
|
+
(0, startup_timing_1.markTime)('instantiated log writer');
|
|
149
154
|
logger.info('MONGOSH', (0, mongodb_log_writer_1.mongoLogId)(1000000000), 'log', 'Starting log', {
|
|
150
155
|
execPath: process.execPath,
|
|
151
156
|
envInfo: (0, history_2.redactSensitiveData)(this.getLoggedEnvironmentVariables()),
|
|
152
157
|
...(await (0, build_info_1.buildInfo)()),
|
|
153
158
|
});
|
|
159
|
+
(0, startup_timing_1.markTime)('logged initial message');
|
|
154
160
|
let analyticsSetupError = null;
|
|
155
161
|
try {
|
|
156
162
|
await this.setupAnalytics();
|
|
@@ -158,12 +164,14 @@ class CliRepl {
|
|
|
158
164
|
catch (err) {
|
|
159
165
|
analyticsSetupError = err;
|
|
160
166
|
}
|
|
167
|
+
(0, startup_timing_1.markTime)('created analytics instance');
|
|
161
168
|
(0, logging_1.setupLoggerAndTelemetry)(this.bus, logger, this.toggleableAnalytics, {
|
|
162
169
|
platform: process.platform,
|
|
163
170
|
arch: process.arch,
|
|
164
171
|
is_containerized: this.isContainerizedEnvironment,
|
|
165
172
|
...(await (0, get_os_info_1.getOsInfo)()),
|
|
166
173
|
}, version);
|
|
174
|
+
(0, startup_timing_1.markTime)('completed telemetry setup');
|
|
167
175
|
if (analyticsSetupError) {
|
|
168
176
|
this.bus.emit('mongosh:error', analyticsSetupError, 'analytics');
|
|
169
177
|
}
|
|
@@ -174,6 +182,7 @@ class CliRepl {
|
|
|
174
182
|
this.warnAboutInaccessibleFile(err);
|
|
175
183
|
}
|
|
176
184
|
this.globalConfig = await this.loadGlobalConfigFile();
|
|
185
|
+
(0, startup_timing_1.markTime)('read global config files');
|
|
177
186
|
void this.fetchMongoshUpdateUrl();
|
|
178
187
|
if (driverOptions.autoEncryption) {
|
|
179
188
|
const origExtraOptions = (_a = driverOptions.autoEncryption.extraOptions) !== null && _a !== void 0 ? _a : {};
|
|
@@ -196,6 +205,7 @@ class CliRepl {
|
|
|
196
205
|
delete driverOptions.autoEncryption;
|
|
197
206
|
}
|
|
198
207
|
driverOptions = await this.prepareOIDCOptions(driverOptions);
|
|
208
|
+
(0, startup_timing_1.markTime)('prepared OIDC options');
|
|
199
209
|
let initialServiceProvider;
|
|
200
210
|
try {
|
|
201
211
|
initialServiceProvider = await this.connect(driverUri, driverOptions);
|
|
@@ -209,7 +219,9 @@ class CliRepl {
|
|
|
209
219
|
}
|
|
210
220
|
throw err;
|
|
211
221
|
}
|
|
222
|
+
(0, startup_timing_1.markTime)('completed SP setup');
|
|
212
223
|
const initialized = await this.mongoshRepl.initialize(initialServiceProvider, await this.getMoreRecentMongoshVersion());
|
|
224
|
+
(0, startup_timing_1.markTime)('initialized mongosh repl');
|
|
213
225
|
this.injectReplFunctions();
|
|
214
226
|
const commandLineLoadFiles = (_e = this.cliOptions.fileNames) !== null && _e !== void 0 ? _e : [];
|
|
215
227
|
const evalScripts = (_f = this.cliOptions.eval) !== null && _f !== void 0 ? _f : [];
|
|
@@ -236,6 +248,7 @@ class CliRepl {
|
|
|
236
248
|
instanceState: this.mongoshRepl.runtimeState().instanceState,
|
|
237
249
|
loadExternalCode: this.mongoshRepl.loadExternalCode.bind(this.mongoshRepl),
|
|
238
250
|
});
|
|
251
|
+
(0, startup_timing_1.markTime)('set up editor');
|
|
239
252
|
if (willExecuteCommandLineScripts) {
|
|
240
253
|
this.mongoshRepl.setIsInteractive(willEnterInteractiveMode);
|
|
241
254
|
this.bus.emit('mongosh:start-loading-cli-scripts', {
|
|
@@ -256,12 +269,16 @@ class CliRepl {
|
|
|
256
269
|
this.mongoshRepl.setIsInteractive(true);
|
|
257
270
|
}
|
|
258
271
|
if (!this.cliOptions.norc) {
|
|
272
|
+
(0, startup_timing_1.markTime)('start load snippets');
|
|
259
273
|
await (snippetManager === null || snippetManager === void 0 ? void 0 : snippetManager.loadAllSnippets());
|
|
274
|
+
(0, startup_timing_1.markTime)('done load snippets');
|
|
260
275
|
}
|
|
261
276
|
await this.loadRcFiles();
|
|
277
|
+
(0, startup_timing_1.markTime)('loaded rc files');
|
|
262
278
|
this.verifyPlatformSupport();
|
|
263
279
|
this.setTelemetryEnabled(await this.getConfig('enableTelemetry'));
|
|
264
280
|
this.bus.emit('mongosh:start-mongosh-repl', { version });
|
|
281
|
+
(0, startup_timing_1.markTime)('starting repl');
|
|
265
282
|
await this.mongoshRepl.startRepl(initialized);
|
|
266
283
|
}
|
|
267
284
|
injectReplFunctions() {
|
|
@@ -289,7 +306,8 @@ class CliRepl {
|
|
|
289
306
|
if (!apiKey) {
|
|
290
307
|
throw new Error('no analytics API key defined');
|
|
291
308
|
}
|
|
292
|
-
|
|
309
|
+
const Analytics = require('analytics-node');
|
|
310
|
+
this.segmentAnalytics = new Analytics(apiKey, {
|
|
293
311
|
...this.analyticsOptions,
|
|
294
312
|
axiosConfig: {
|
|
295
313
|
timeout: 1000,
|
|
@@ -319,10 +337,12 @@ class CliRepl {
|
|
|
319
337
|
let lastEvalResult;
|
|
320
338
|
let exitCode = 0;
|
|
321
339
|
try {
|
|
340
|
+
(0, startup_timing_1.markTime)('start eval scripts');
|
|
322
341
|
for (const script of evalScripts) {
|
|
323
342
|
this.bus.emit('mongosh:eval-cli-script');
|
|
324
343
|
lastEvalResult = await this.mongoshRepl.loadExternalCode(script, '@(shell eval)');
|
|
325
344
|
}
|
|
345
|
+
(0, startup_timing_1.markTime)('finished eval scripts');
|
|
326
346
|
}
|
|
327
347
|
catch (err) {
|
|
328
348
|
exitCode = 1;
|
|
@@ -349,12 +369,14 @@ class CliRepl {
|
|
|
349
369
|
}
|
|
350
370
|
this.output.write(formattedResult + '\n');
|
|
351
371
|
}
|
|
372
|
+
(0, startup_timing_1.markTime)('wrote eval output, start loading external files');
|
|
352
373
|
for (const file of files) {
|
|
353
374
|
if (!this.cliOptions.quiet) {
|
|
354
375
|
this.output.write(`Loading file: ${this.clr(file, 'mongosh:filename')}\n`);
|
|
355
376
|
}
|
|
356
377
|
await this.mongoshRepl.loadExternalFile(file);
|
|
357
378
|
}
|
|
379
|
+
(0, startup_timing_1.markTime)('finished external files');
|
|
358
380
|
return exitCode;
|
|
359
381
|
}
|
|
360
382
|
async loadRcFiles() {
|
|
@@ -557,7 +579,7 @@ class CliRepl {
|
|
|
557
579
|
const deprecationWarning = [
|
|
558
580
|
'Deprecation warnings:',
|
|
559
581
|
...warnings,
|
|
560
|
-
'See https://www.mongodb.com/docs/mongodb-shell/ for documentation on supported platforms.',
|
|
582
|
+
'See https://www.mongodb.com/docs/mongodb-shell/install/#supported-operating-systems for documentation on supported platforms.',
|
|
561
583
|
].join('\n');
|
|
562
584
|
this.output.write(this.clr(`\n${deprecationWarning}\n`, 'mongosh:warning'));
|
|
563
585
|
}
|
|
@@ -602,6 +624,7 @@ class CliRepl {
|
|
|
602
624
|
}
|
|
603
625
|
async close() {
|
|
604
626
|
var _a, _b;
|
|
627
|
+
(0, startup_timing_1.markTime)('start closing');
|
|
605
628
|
if (this.closing) {
|
|
606
629
|
return;
|
|
607
630
|
}
|
|
@@ -617,6 +640,7 @@ class CliRepl {
|
|
|
617
640
|
await new Promise((resolve) => this.output.write('', resolve));
|
|
618
641
|
}
|
|
619
642
|
}
|
|
643
|
+
(0, startup_timing_1.markTime)('output flushed');
|
|
620
644
|
this.closing = true;
|
|
621
645
|
const analytics = this.toggleableAnalytics;
|
|
622
646
|
let flushError = null;
|
|
@@ -625,6 +649,7 @@ class CliRepl {
|
|
|
625
649
|
const flushStart = Date.now();
|
|
626
650
|
try {
|
|
627
651
|
await (0, util_1.promisify)(analytics.flush.bind(analytics))();
|
|
652
|
+
(0, startup_timing_1.markTime)('flushed analytics');
|
|
628
653
|
}
|
|
629
654
|
catch (err) {
|
|
630
655
|
flushError = err.message;
|
|
@@ -638,6 +663,7 @@ class CliRepl {
|
|
|
638
663
|
flushDuration,
|
|
639
664
|
});
|
|
640
665
|
await ((_b = this.logWriter) === null || _b === void 0 ? void 0 : _b.flush());
|
|
666
|
+
(0, startup_timing_1.markTime)('flushed log writer');
|
|
641
667
|
this.bus.emit('mongosh:closed');
|
|
642
668
|
}
|
|
643
669
|
async exit(code) {
|