@mongosh/logging 3.0.0 → 3.4.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/src/types.ts ADDED
@@ -0,0 +1,35 @@
1
+ import type { ApiEvent, MongoshBus } from '@mongosh/types';
2
+ import type { MongoLogWriter } from 'mongodb-log-writer';
3
+ import type { MongoshAnalytics } from './analytics-helpers';
4
+ import type { MultiSet } from './helpers';
5
+
6
+ export interface MongoshLoggingAndTelemetry {
7
+ attachLogger(logger: MongoLogWriter): void;
8
+ detachLogger(): void;
9
+ }
10
+
11
+ export type MongoshLoggingAndTelemetryArguments = {
12
+ bus: MongoshBus;
13
+ analytics: MongoshAnalytics;
14
+ userTraits: { platform: string } & {
15
+ [key: string]: unknown;
16
+ };
17
+ mongoshVersion: string;
18
+ };
19
+
20
+ export type MongoshTrackingProperties = {
21
+ mongosh_version: string;
22
+ session_id: string;
23
+ };
24
+
25
+ export type LoggingAndTelemetryBusEventState = {
26
+ hasStartedMongoshRepl: boolean;
27
+ apiCallTracking: {
28
+ isEnabled: boolean;
29
+ apiCalls: MultiSet<Pick<ApiEvent, 'class' | 'method'>>;
30
+ deprecatedApiCalls: MultiSet<Pick<ApiEvent, 'class' | 'method'>>;
31
+ };
32
+ usesShellOption: boolean;
33
+ telemetryAnonymousId: string | undefined;
34
+ userId: string | undefined;
35
+ };
@@ -1,5 +0,0 @@
1
- import type { MongoshBus } from '@mongosh/types';
2
- import type { MongoLogWriter } from 'mongodb-log-writer';
3
- import type { MongoshAnalytics } from './analytics-helpers';
4
- export declare function toSnakeCase(str: string): string;
5
- export declare function setupLoggerAndTelemetry(bus: MongoshBus, log: MongoLogWriter, analytics: MongoshAnalytics, userTraits: any, mongosh_version: string): void;
@@ -1,361 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.setupLoggerAndTelemetry = exports.toSnakeCase = void 0;
7
- const mongodb_redact_1 = __importDefault(require("mongodb-redact"));
8
- const history_1 = require("@mongosh/history");
9
- const util_1 = require("util");
10
- const mongodb_log_writer_1 = require("mongodb-log-writer");
11
- const devtools_connect_1 = require("@mongodb-js/devtools-connect");
12
- class MultiSet {
13
- constructor() {
14
- this._entries = new Map();
15
- }
16
- add(entry) {
17
- var _a;
18
- const key = JSON.stringify(Object.entries(entry).sort());
19
- this._entries.set(key, ((_a = this._entries.get(key)) !== null && _a !== void 0 ? _a : 0) + 1);
20
- }
21
- clear() {
22
- this._entries.clear();
23
- }
24
- *[Symbol.iterator]() {
25
- for (const [key, count] of this._entries) {
26
- yield [Object.fromEntries(JSON.parse(key)), count];
27
- }
28
- }
29
- }
30
- function toSnakeCase(str) {
31
- const matches = str.match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g);
32
- if (!matches) {
33
- return str;
34
- }
35
- return matches.map((x) => x.toLowerCase()).join('_');
36
- }
37
- exports.toSnakeCase = toSnakeCase;
38
- function setupLoggerAndTelemetry(bus, log, analytics, userTraits, mongosh_version) {
39
- const { logId: session_id } = log;
40
- let userId;
41
- let telemetryAnonymousId;
42
- userTraits = { ...userTraits, session_id };
43
- const trackProperties = {
44
- mongosh_version,
45
- session_id,
46
- };
47
- const getTelemetryUserIdentity = () => ({
48
- anonymousId: telemetryAnonymousId !== null && telemetryAnonymousId !== void 0 ? telemetryAnonymousId : userId,
49
- });
50
- let hasStartedMongoshRepl = false;
51
- bus.on('mongosh:start-mongosh-repl', (ev) => {
52
- log.info('MONGOSH', (0, mongodb_log_writer_1.mongoLogId)(1000000002), 'repl', 'Started REPL', ev);
53
- hasStartedMongoshRepl = true;
54
- });
55
- let usesShellOption = false;
56
- bus.on('mongosh:start-loading-cli-scripts', (event) => {
57
- log.info('MONGOSH', (0, mongodb_log_writer_1.mongoLogId)(1000000003), 'repl', 'Start loading CLI scripts');
58
- usesShellOption = event.usesShellOption;
59
- });
60
- bus.on('mongosh:connect', function (args) {
61
- const { uri, resolved_hostname, ...argsWithoutUriAndHostname } = args;
62
- const connectionUri = uri && (0, history_1.redactURICredentials)(uri);
63
- const atlasHostname = {
64
- atlas_hostname: args.is_atlas ? resolved_hostname : null,
65
- };
66
- const properties = {
67
- ...trackProperties,
68
- ...argsWithoutUriAndHostname,
69
- ...atlasHostname,
70
- };
71
- log.info('MONGOSH', (0, mongodb_log_writer_1.mongoLogId)(1000000004), 'connect', 'Connecting to server', {
72
- userId,
73
- telemetryAnonymousId,
74
- connectionUri,
75
- ...properties,
76
- });
77
- analytics.track({
78
- ...getTelemetryUserIdentity(),
79
- event: 'New Connection',
80
- properties,
81
- });
82
- });
83
- bus.on('mongosh:start-session', function (args) {
84
- const normalisedTimingsArray = Object.entries(args.timings).map(([key, duration]) => {
85
- const snakeCaseKey = toSnakeCase(key);
86
- return [snakeCaseKey, duration];
87
- });
88
- const normalisedTimings = Object.fromEntries(normalisedTimingsArray);
89
- analytics.track({
90
- ...getTelemetryUserIdentity(),
91
- event: 'Startup Time',
92
- properties: {
93
- ...trackProperties,
94
- is_interactive: args.isInteractive,
95
- js_context: args.jsContext,
96
- ...normalisedTimings,
97
- },
98
- });
99
- });
100
- bus.on('mongosh:new-user', function (newTelemetryUserIdentity) {
101
- if (!newTelemetryUserIdentity.anonymousId) {
102
- userId = newTelemetryUserIdentity.userId;
103
- }
104
- telemetryAnonymousId = newTelemetryUserIdentity.anonymousId;
105
- analytics.identify({
106
- anonymousId: newTelemetryUserIdentity.anonymousId,
107
- traits: userTraits,
108
- });
109
- });
110
- bus.on('mongosh:update-user', function (updatedTelemetryUserIdentity) {
111
- if (updatedTelemetryUserIdentity.anonymousId) {
112
- telemetryAnonymousId = updatedTelemetryUserIdentity.anonymousId;
113
- }
114
- else {
115
- userId = updatedTelemetryUserIdentity.userId;
116
- }
117
- analytics.identify({
118
- ...getTelemetryUserIdentity(),
119
- traits: userTraits,
120
- });
121
- log.info('MONGOSH', (0, mongodb_log_writer_1.mongoLogId)(1000000005), 'config', 'User updated');
122
- });
123
- bus.on('mongosh:error', function (error, context) {
124
- const mongoshError = error;
125
- if (context === 'fatal') {
126
- log.fatal('MONGOSH', (0, mongodb_log_writer_1.mongoLogId)(1000000006), context, `${mongoshError.name}: ${mongoshError.message}`, error);
127
- }
128
- else {
129
- log.error('MONGOSH', (0, mongodb_log_writer_1.mongoLogId)(1000000006), context, `${mongoshError.name}: ${mongoshError.message}`, error);
130
- }
131
- if (error.name.includes('Mongosh')) {
132
- analytics.track({
133
- ...getTelemetryUserIdentity(),
134
- event: 'Error',
135
- properties: {
136
- ...trackProperties,
137
- name: mongoshError.name,
138
- code: mongoshError.code,
139
- scope: mongoshError.scope,
140
- metadata: mongoshError.metadata,
141
- },
142
- });
143
- }
144
- });
145
- bus.on('mongosh:globalconfig-load', function (args) {
146
- log.info('MONGOSH', (0, mongodb_log_writer_1.mongoLogId)(1000000048), 'config', 'Loading global configuration file', args);
147
- });
148
- bus.on('mongosh:evaluate-input', function (args) {
149
- log.info('MONGOSH', (0, mongodb_log_writer_1.mongoLogId)(1000000007), 'repl', 'Evaluating input', args);
150
- });
151
- bus.on('mongosh:use', function (args) {
152
- log.info('MONGOSH', (0, mongodb_log_writer_1.mongoLogId)(1000000008), 'shell-api', 'Used "use" command', args);
153
- analytics.track({
154
- ...getTelemetryUserIdentity(),
155
- event: 'Use',
156
- properties: {
157
- ...trackProperties,
158
- },
159
- });
160
- });
161
- bus.on('mongosh:show', function (args) {
162
- log.info('MONGOSH', (0, mongodb_log_writer_1.mongoLogId)(1000000009), 'shell-api', 'Used "show" command', args);
163
- analytics.track({
164
- ...getTelemetryUserIdentity(),
165
- event: 'Show',
166
- properties: {
167
- ...trackProperties,
168
- method: args.method,
169
- },
170
- });
171
- });
172
- bus.on('mongosh:setCtx', function (args) {
173
- log.info('MONGOSH', (0, mongodb_log_writer_1.mongoLogId)(1000000010), 'shell-api', 'Initialized context', args);
174
- });
175
- bus.on('mongosh:api-call-with-arguments', function (args) {
176
- let arg;
177
- try {
178
- arg = JSON.parse(JSON.stringify(args));
179
- }
180
- catch (_a) {
181
- arg = { _inspected: (0, util_1.inspect)(args) };
182
- }
183
- log.info('MONGOSH', (0, mongodb_log_writer_1.mongoLogId)(1000000011), 'shell-api', 'Performed API call', (0, mongodb_redact_1.default)(arg));
184
- });
185
- bus.on('mongosh:api-load-file', function (args) {
186
- log.info('MONGOSH', (0, mongodb_log_writer_1.mongoLogId)(1000000012), 'shell-api', 'Loading file via load()', args);
187
- analytics.track({
188
- ...getTelemetryUserIdentity(),
189
- event: hasStartedMongoshRepl ? 'Script Loaded' : 'Script Loaded CLI',
190
- properties: {
191
- ...trackProperties,
192
- nested: args.nested,
193
- ...(hasStartedMongoshRepl ? {} : { shell: usesShellOption }),
194
- },
195
- });
196
- });
197
- bus.on('mongosh:eval-cli-script', function () {
198
- log.info('MONGOSH', (0, mongodb_log_writer_1.mongoLogId)(1000000013), 'repl', 'Evaluating script passed on the command line');
199
- analytics.track({
200
- ...getTelemetryUserIdentity(),
201
- event: 'Script Evaluated',
202
- properties: {
203
- ...trackProperties,
204
- shell: usesShellOption,
205
- },
206
- });
207
- });
208
- bus.on('mongosh:mongoshrc-load', function () {
209
- log.info('MONGOSH', (0, mongodb_log_writer_1.mongoLogId)(1000000014), 'repl', 'Loading .mongoshrc.js');
210
- analytics.track({
211
- ...getTelemetryUserIdentity(),
212
- event: 'Mongoshrc Loaded',
213
- properties: {
214
- ...trackProperties,
215
- },
216
- });
217
- });
218
- bus.on('mongosh:mongoshrc-mongorc-warn', function () {
219
- log.info('MONGOSH', (0, mongodb_log_writer_1.mongoLogId)(1000000015), 'repl', 'Warning about .mongorc.js/.mongoshrc.js mismatch');
220
- analytics.track({
221
- ...getTelemetryUserIdentity(),
222
- event: 'Mongorc Warning',
223
- properties: {
224
- ...trackProperties,
225
- },
226
- });
227
- });
228
- bus.on('mongosh:crypt-library-load-skip', function (ev) {
229
- log.info('AUTO-ENCRYPTION', (0, mongodb_log_writer_1.mongoLogId)(1000000050), 'crypt-library', 'Skipping shared library candidate', ev);
230
- });
231
- bus.on('mongosh:crypt-library-load-found', function (ev) {
232
- log.warn('AUTO-ENCRYPTION', (0, mongodb_log_writer_1.mongoLogId)(1000000051), 'crypt-library', 'Accepted shared library candidate', {
233
- cryptSharedLibPath: ev.cryptSharedLibPath,
234
- expectedVersion: ev.expectedVersion.versionStr,
235
- });
236
- });
237
- bus.on('mongosh-snippets:loaded', function (ev) {
238
- log.info('MONGOSH-SNIPPETS', (0, mongodb_log_writer_1.mongoLogId)(1000000019), 'snippets', 'Loaded snippets', ev);
239
- });
240
- bus.on('mongosh-snippets:npm-lookup', function (ev) {
241
- log.info('MONGOSH-SNIPPETS', (0, mongodb_log_writer_1.mongoLogId)(1000000020), 'snippets', 'Performing npm lookup', ev);
242
- });
243
- bus.on('mongosh-snippets:npm-lookup-stopped', function () {
244
- log.info('MONGOSH-SNIPPETS', (0, mongodb_log_writer_1.mongoLogId)(1000000021), 'snippets', 'npm lookup stopped');
245
- });
246
- bus.on('mongosh-snippets:npm-download-failed', function (ev) {
247
- log.info('MONGOSH-SNIPPETS', (0, mongodb_log_writer_1.mongoLogId)(1000000022), 'snippets', 'npm download failed', ev);
248
- });
249
- bus.on('mongosh-snippets:npm-download-active', function (ev) {
250
- log.info('MONGOSH-SNIPPETS', (0, mongodb_log_writer_1.mongoLogId)(1000000023), 'snippets', 'npm download active', ev);
251
- });
252
- bus.on('mongosh-snippets:fetch-index', function (ev) {
253
- log.info('MONGOSH-SNIPPETS', (0, mongodb_log_writer_1.mongoLogId)(1000000024), 'snippets', 'Fetching snippet index', ev);
254
- });
255
- bus.on('mongosh-snippets:fetch-cache-invalid', function () {
256
- log.info('MONGOSH-SNIPPETS', (0, mongodb_log_writer_1.mongoLogId)(1000000025), 'snippets', 'Snippet cache invalid');
257
- });
258
- bus.on('mongosh-snippets:fetch-index-error', function (ev) {
259
- log.info('MONGOSH-SNIPPETS', (0, mongodb_log_writer_1.mongoLogId)(1000000026), 'snippets', 'Fetching snippet index failed', ev);
260
- });
261
- bus.on('mongosh-snippets:fetch-index-done', function () {
262
- log.info('MONGOSH-SNIPPETS', (0, mongodb_log_writer_1.mongoLogId)(1000000027), 'snippets', 'Fetching snippet index done');
263
- });
264
- bus.on('mongosh-snippets:package-json-edit-error', function (ev) {
265
- log.info('MONGOSH-SNIPPETS', (0, mongodb_log_writer_1.mongoLogId)(1000000028), 'snippets', 'Modifying snippets package.json failed', ev);
266
- });
267
- bus.on('mongosh-snippets:spawn-child', function (ev) {
268
- log.info('MONGOSH-SNIPPETS', (0, mongodb_log_writer_1.mongoLogId)(1000000029), 'snippets', 'Spawning helper', ev);
269
- });
270
- bus.on('mongosh-snippets:load-snippet', function (ev) {
271
- log.info('MONGOSH-SNIPPETS', (0, mongodb_log_writer_1.mongoLogId)(1000000030), 'snippets', 'Loading snippet', ev);
272
- });
273
- bus.on('mongosh-snippets:snippet-command', function (ev) {
274
- log.info('MONGOSH-SNIPPETS', (0, mongodb_log_writer_1.mongoLogId)(1000000031), 'snippets', 'Running snippet command', ev);
275
- if (ev.args[0] === 'install') {
276
- analytics.track({
277
- ...getTelemetryUserIdentity(),
278
- event: 'Snippet Install',
279
- properties: {
280
- ...trackProperties,
281
- },
282
- });
283
- }
284
- });
285
- bus.on('mongosh-snippets:transform-error', function (ev) {
286
- log.info('MONGOSH-SNIPPETS', (0, mongodb_log_writer_1.mongoLogId)(1000000032), 'snippets', 'Rewrote error message', ev);
287
- });
288
- const deprecatedApiCalls = new MultiSet();
289
- const apiCalls = new MultiSet();
290
- let apiCallTrackingEnabled = false;
291
- bus.on('mongosh:api-call', function (ev) {
292
- if (!apiCallTrackingEnabled)
293
- return;
294
- if (ev.deprecated) {
295
- deprecatedApiCalls.add({ class: ev.class, method: ev.method });
296
- }
297
- if (ev.callDepth === 0 && ev.isAsync) {
298
- apiCalls.add({ class: ev.class, method: ev.method });
299
- }
300
- });
301
- bus.on('mongosh:evaluate-started', function () {
302
- apiCallTrackingEnabled = true;
303
- deprecatedApiCalls.clear();
304
- apiCalls.clear();
305
- });
306
- bus.on('mongosh:evaluate-finished', function () {
307
- for (const [entry] of deprecatedApiCalls) {
308
- log.warn('MONGOSH', (0, mongodb_log_writer_1.mongoLogId)(1000000033), 'shell-api', 'Deprecated API call', entry);
309
- analytics.track({
310
- ...getTelemetryUserIdentity(),
311
- event: 'Deprecated Method',
312
- properties: {
313
- ...trackProperties,
314
- ...entry,
315
- },
316
- });
317
- }
318
- for (const [entry, count] of apiCalls) {
319
- analytics.track({
320
- ...getTelemetryUserIdentity(),
321
- event: 'API Call',
322
- properties: {
323
- ...trackProperties,
324
- ...entry,
325
- count,
326
- },
327
- });
328
- }
329
- deprecatedApiCalls.clear();
330
- apiCalls.clear();
331
- apiCallTrackingEnabled = false;
332
- });
333
- (0, devtools_connect_1.hookLogger)(bus, log, 'mongosh', history_1.redactURICredentials);
334
- bus.on('mongosh-sp:reset-connection-options', function () {
335
- log.info('MONGOSH-SP', (0, mongodb_log_writer_1.mongoLogId)(1000000040), 'connect', 'Reconnect because of changed connection options');
336
- });
337
- bus.on('mongosh-editor:run-edit-command', function (ev) {
338
- log.error('MONGOSH-EDITOR', (0, mongodb_log_writer_1.mongoLogId)(1000000047), 'editor', 'Open external editor', (0, mongodb_redact_1.default)(ev));
339
- });
340
- bus.on('mongosh-editor:read-vscode-extensions-done', function (ev) {
341
- log.error('MONGOSH-EDITOR', (0, mongodb_log_writer_1.mongoLogId)(1000000043), 'editor', 'Reading vscode extensions from file system succeeded', ev);
342
- });
343
- bus.on('mongosh-editor:read-vscode-extensions-failed', function (ev) {
344
- log.error('MONGOSH-EDITOR', (0, mongodb_log_writer_1.mongoLogId)(1000000044), 'editor', 'Reading vscode extensions from file system failed', {
345
- ...ev,
346
- error: ev.error.message,
347
- });
348
- });
349
- bus.on('mongosh:fetching-update-metadata', function (ev) {
350
- log.info('MONGOSH', (0, mongodb_log_writer_1.mongoLogId)(1000000052), 'startup', 'Fetching update metadata', {
351
- ...ev,
352
- });
353
- });
354
- bus.on('mongosh:fetching-update-metadata-complete', function (ev) {
355
- log.info('MONGOSH', (0, mongodb_log_writer_1.mongoLogId)(1000000053), 'startup', 'Fetching update metadata complete', {
356
- ...ev,
357
- });
358
- });
359
- }
360
- exports.setupLoggerAndTelemetry = setupLoggerAndTelemetry;
361
- //# sourceMappingURL=setup-logger-and-telemetry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setup-logger-and-telemetry.js","sourceRoot":"","sources":["../src/setup-logger-and-telemetry.ts"],"names":[],"mappings":"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"}