@mongosh/logging 3.2.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,364 +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:write-custom-log', (event) => {
61
- log[event.method]('MONGOSH-SCRIPTS', (0, mongodb_log_writer_1.mongoLogId)(1000000054), 'custom-log', event.message, event.attr, event.level);
62
- });
63
- bus.on('mongosh:connect', function (args) {
64
- const { uri, resolved_hostname, ...argsWithoutUriAndHostname } = args;
65
- const connectionUri = uri && (0, history_1.redactURICredentials)(uri);
66
- const atlasHostname = {
67
- atlas_hostname: args.is_atlas ? resolved_hostname : null,
68
- };
69
- const properties = {
70
- ...trackProperties,
71
- ...argsWithoutUriAndHostname,
72
- ...atlasHostname,
73
- };
74
- log.info('MONGOSH', (0, mongodb_log_writer_1.mongoLogId)(1000000004), 'connect', 'Connecting to server', {
75
- userId,
76
- telemetryAnonymousId,
77
- connectionUri,
78
- ...properties,
79
- });
80
- analytics.track({
81
- ...getTelemetryUserIdentity(),
82
- event: 'New Connection',
83
- properties,
84
- });
85
- });
86
- bus.on('mongosh:start-session', function (args) {
87
- const normalisedTimingsArray = Object.entries(args.timings).map(([key, duration]) => {
88
- const snakeCaseKey = toSnakeCase(key);
89
- return [snakeCaseKey, duration];
90
- });
91
- const normalisedTimings = Object.fromEntries(normalisedTimingsArray);
92
- analytics.track({
93
- ...getTelemetryUserIdentity(),
94
- event: 'Startup Time',
95
- properties: {
96
- ...trackProperties,
97
- is_interactive: args.isInteractive,
98
- js_context: args.jsContext,
99
- ...normalisedTimings,
100
- },
101
- });
102
- });
103
- bus.on('mongosh:new-user', function (newTelemetryUserIdentity) {
104
- if (!newTelemetryUserIdentity.anonymousId) {
105
- userId = newTelemetryUserIdentity.userId;
106
- }
107
- telemetryAnonymousId = newTelemetryUserIdentity.anonymousId;
108
- analytics.identify({
109
- anonymousId: newTelemetryUserIdentity.anonymousId,
110
- traits: userTraits,
111
- });
112
- });
113
- bus.on('mongosh:update-user', function (updatedTelemetryUserIdentity) {
114
- if (updatedTelemetryUserIdentity.anonymousId) {
115
- telemetryAnonymousId = updatedTelemetryUserIdentity.anonymousId;
116
- }
117
- else {
118
- userId = updatedTelemetryUserIdentity.userId;
119
- }
120
- analytics.identify({
121
- ...getTelemetryUserIdentity(),
122
- traits: userTraits,
123
- });
124
- log.info('MONGOSH', (0, mongodb_log_writer_1.mongoLogId)(1000000005), 'config', 'User updated');
125
- });
126
- bus.on('mongosh:error', function (error, context) {
127
- const mongoshError = error;
128
- if (context === 'fatal') {
129
- log.fatal('MONGOSH', (0, mongodb_log_writer_1.mongoLogId)(1000000006), context, `${mongoshError.name}: ${mongoshError.message}`, error);
130
- }
131
- else {
132
- log.error('MONGOSH', (0, mongodb_log_writer_1.mongoLogId)(1000000006), context, `${mongoshError.name}: ${mongoshError.message}`, error);
133
- }
134
- if (error.name.includes('Mongosh')) {
135
- analytics.track({
136
- ...getTelemetryUserIdentity(),
137
- event: 'Error',
138
- properties: {
139
- ...trackProperties,
140
- name: mongoshError.name,
141
- code: mongoshError.code,
142
- scope: mongoshError.scope,
143
- metadata: mongoshError.metadata,
144
- },
145
- });
146
- }
147
- });
148
- bus.on('mongosh:globalconfig-load', function (args) {
149
- log.info('MONGOSH', (0, mongodb_log_writer_1.mongoLogId)(1000000048), 'config', 'Loading global configuration file', args);
150
- });
151
- bus.on('mongosh:evaluate-input', function (args) {
152
- log.info('MONGOSH', (0, mongodb_log_writer_1.mongoLogId)(1000000007), 'repl', 'Evaluating input', args);
153
- });
154
- bus.on('mongosh:use', function (args) {
155
- log.info('MONGOSH', (0, mongodb_log_writer_1.mongoLogId)(1000000008), 'shell-api', 'Used "use" command', args);
156
- analytics.track({
157
- ...getTelemetryUserIdentity(),
158
- event: 'Use',
159
- properties: {
160
- ...trackProperties,
161
- },
162
- });
163
- });
164
- bus.on('mongosh:show', function (args) {
165
- log.info('MONGOSH', (0, mongodb_log_writer_1.mongoLogId)(1000000009), 'shell-api', 'Used "show" command', args);
166
- analytics.track({
167
- ...getTelemetryUserIdentity(),
168
- event: 'Show',
169
- properties: {
170
- ...trackProperties,
171
- method: args.method,
172
- },
173
- });
174
- });
175
- bus.on('mongosh:setCtx', function (args) {
176
- log.info('MONGOSH', (0, mongodb_log_writer_1.mongoLogId)(1000000010), 'shell-api', 'Initialized context', args);
177
- });
178
- bus.on('mongosh:api-call-with-arguments', function (args) {
179
- let arg;
180
- try {
181
- arg = JSON.parse(JSON.stringify(args));
182
- }
183
- catch (_a) {
184
- arg = { _inspected: (0, util_1.inspect)(args) };
185
- }
186
- log.info('MONGOSH', (0, mongodb_log_writer_1.mongoLogId)(1000000011), 'shell-api', 'Performed API call', (0, mongodb_redact_1.default)(arg));
187
- });
188
- bus.on('mongosh:api-load-file', function (args) {
189
- log.info('MONGOSH', (0, mongodb_log_writer_1.mongoLogId)(1000000012), 'shell-api', 'Loading file via load()', args);
190
- analytics.track({
191
- ...getTelemetryUserIdentity(),
192
- event: hasStartedMongoshRepl ? 'Script Loaded' : 'Script Loaded CLI',
193
- properties: {
194
- ...trackProperties,
195
- nested: args.nested,
196
- ...(hasStartedMongoshRepl ? {} : { shell: usesShellOption }),
197
- },
198
- });
199
- });
200
- bus.on('mongosh:eval-cli-script', function () {
201
- log.info('MONGOSH', (0, mongodb_log_writer_1.mongoLogId)(1000000013), 'repl', 'Evaluating script passed on the command line');
202
- analytics.track({
203
- ...getTelemetryUserIdentity(),
204
- event: 'Script Evaluated',
205
- properties: {
206
- ...trackProperties,
207
- shell: usesShellOption,
208
- },
209
- });
210
- });
211
- bus.on('mongosh:mongoshrc-load', function () {
212
- log.info('MONGOSH', (0, mongodb_log_writer_1.mongoLogId)(1000000014), 'repl', 'Loading .mongoshrc.js');
213
- analytics.track({
214
- ...getTelemetryUserIdentity(),
215
- event: 'Mongoshrc Loaded',
216
- properties: {
217
- ...trackProperties,
218
- },
219
- });
220
- });
221
- bus.on('mongosh:mongoshrc-mongorc-warn', function () {
222
- log.info('MONGOSH', (0, mongodb_log_writer_1.mongoLogId)(1000000015), 'repl', 'Warning about .mongorc.js/.mongoshrc.js mismatch');
223
- analytics.track({
224
- ...getTelemetryUserIdentity(),
225
- event: 'Mongorc Warning',
226
- properties: {
227
- ...trackProperties,
228
- },
229
- });
230
- });
231
- bus.on('mongosh:crypt-library-load-skip', function (ev) {
232
- log.info('AUTO-ENCRYPTION', (0, mongodb_log_writer_1.mongoLogId)(1000000050), 'crypt-library', 'Skipping shared library candidate', ev);
233
- });
234
- bus.on('mongosh:crypt-library-load-found', function (ev) {
235
- log.warn('AUTO-ENCRYPTION', (0, mongodb_log_writer_1.mongoLogId)(1000000051), 'crypt-library', 'Accepted shared library candidate', {
236
- cryptSharedLibPath: ev.cryptSharedLibPath,
237
- expectedVersion: ev.expectedVersion.versionStr,
238
- });
239
- });
240
- bus.on('mongosh-snippets:loaded', function (ev) {
241
- log.info('MONGOSH-SNIPPETS', (0, mongodb_log_writer_1.mongoLogId)(1000000019), 'snippets', 'Loaded snippets', ev);
242
- });
243
- bus.on('mongosh-snippets:npm-lookup', function (ev) {
244
- log.info('MONGOSH-SNIPPETS', (0, mongodb_log_writer_1.mongoLogId)(1000000020), 'snippets', 'Performing npm lookup', ev);
245
- });
246
- bus.on('mongosh-snippets:npm-lookup-stopped', function () {
247
- log.info('MONGOSH-SNIPPETS', (0, mongodb_log_writer_1.mongoLogId)(1000000021), 'snippets', 'npm lookup stopped');
248
- });
249
- bus.on('mongosh-snippets:npm-download-failed', function (ev) {
250
- log.info('MONGOSH-SNIPPETS', (0, mongodb_log_writer_1.mongoLogId)(1000000022), 'snippets', 'npm download failed', ev);
251
- });
252
- bus.on('mongosh-snippets:npm-download-active', function (ev) {
253
- log.info('MONGOSH-SNIPPETS', (0, mongodb_log_writer_1.mongoLogId)(1000000023), 'snippets', 'npm download active', ev);
254
- });
255
- bus.on('mongosh-snippets:fetch-index', function (ev) {
256
- log.info('MONGOSH-SNIPPETS', (0, mongodb_log_writer_1.mongoLogId)(1000000024), 'snippets', 'Fetching snippet index', ev);
257
- });
258
- bus.on('mongosh-snippets:fetch-cache-invalid', function () {
259
- log.info('MONGOSH-SNIPPETS', (0, mongodb_log_writer_1.mongoLogId)(1000000025), 'snippets', 'Snippet cache invalid');
260
- });
261
- bus.on('mongosh-snippets:fetch-index-error', function (ev) {
262
- log.info('MONGOSH-SNIPPETS', (0, mongodb_log_writer_1.mongoLogId)(1000000026), 'snippets', 'Fetching snippet index failed', ev);
263
- });
264
- bus.on('mongosh-snippets:fetch-index-done', function () {
265
- log.info('MONGOSH-SNIPPETS', (0, mongodb_log_writer_1.mongoLogId)(1000000027), 'snippets', 'Fetching snippet index done');
266
- });
267
- bus.on('mongosh-snippets:package-json-edit-error', function (ev) {
268
- log.info('MONGOSH-SNIPPETS', (0, mongodb_log_writer_1.mongoLogId)(1000000028), 'snippets', 'Modifying snippets package.json failed', ev);
269
- });
270
- bus.on('mongosh-snippets:spawn-child', function (ev) {
271
- log.info('MONGOSH-SNIPPETS', (0, mongodb_log_writer_1.mongoLogId)(1000000029), 'snippets', 'Spawning helper', ev);
272
- });
273
- bus.on('mongosh-snippets:load-snippet', function (ev) {
274
- log.info('MONGOSH-SNIPPETS', (0, mongodb_log_writer_1.mongoLogId)(1000000030), 'snippets', 'Loading snippet', ev);
275
- });
276
- bus.on('mongosh-snippets:snippet-command', function (ev) {
277
- log.info('MONGOSH-SNIPPETS', (0, mongodb_log_writer_1.mongoLogId)(1000000031), 'snippets', 'Running snippet command', ev);
278
- if (ev.args[0] === 'install') {
279
- analytics.track({
280
- ...getTelemetryUserIdentity(),
281
- event: 'Snippet Install',
282
- properties: {
283
- ...trackProperties,
284
- },
285
- });
286
- }
287
- });
288
- bus.on('mongosh-snippets:transform-error', function (ev) {
289
- log.info('MONGOSH-SNIPPETS', (0, mongodb_log_writer_1.mongoLogId)(1000000032), 'snippets', 'Rewrote error message', ev);
290
- });
291
- const deprecatedApiCalls = new MultiSet();
292
- const apiCalls = new MultiSet();
293
- let apiCallTrackingEnabled = false;
294
- bus.on('mongosh:api-call', function (ev) {
295
- if (!apiCallTrackingEnabled)
296
- return;
297
- if (ev.deprecated) {
298
- deprecatedApiCalls.add({ class: ev.class, method: ev.method });
299
- }
300
- if (ev.callDepth === 0 && ev.isAsync) {
301
- apiCalls.add({ class: ev.class, method: ev.method });
302
- }
303
- });
304
- bus.on('mongosh:evaluate-started', function () {
305
- apiCallTrackingEnabled = true;
306
- deprecatedApiCalls.clear();
307
- apiCalls.clear();
308
- });
309
- bus.on('mongosh:evaluate-finished', function () {
310
- for (const [entry] of deprecatedApiCalls) {
311
- log.warn('MONGOSH', (0, mongodb_log_writer_1.mongoLogId)(1000000033), 'shell-api', 'Deprecated API call', entry);
312
- analytics.track({
313
- ...getTelemetryUserIdentity(),
314
- event: 'Deprecated Method',
315
- properties: {
316
- ...trackProperties,
317
- ...entry,
318
- },
319
- });
320
- }
321
- for (const [entry, count] of apiCalls) {
322
- analytics.track({
323
- ...getTelemetryUserIdentity(),
324
- event: 'API Call',
325
- properties: {
326
- ...trackProperties,
327
- ...entry,
328
- count,
329
- },
330
- });
331
- }
332
- deprecatedApiCalls.clear();
333
- apiCalls.clear();
334
- apiCallTrackingEnabled = false;
335
- });
336
- (0, devtools_connect_1.hookLogger)(bus, log, 'mongosh', history_1.redactURICredentials);
337
- bus.on('mongosh-sp:reset-connection-options', function () {
338
- log.info('MONGOSH-SP', (0, mongodb_log_writer_1.mongoLogId)(1000000040), 'connect', 'Reconnect because of changed connection options');
339
- });
340
- bus.on('mongosh-editor:run-edit-command', function (ev) {
341
- log.error('MONGOSH-EDITOR', (0, mongodb_log_writer_1.mongoLogId)(1000000047), 'editor', 'Open external editor', (0, mongodb_redact_1.default)(ev));
342
- });
343
- bus.on('mongosh-editor:read-vscode-extensions-done', function (ev) {
344
- log.error('MONGOSH-EDITOR', (0, mongodb_log_writer_1.mongoLogId)(1000000043), 'editor', 'Reading vscode extensions from file system succeeded', ev);
345
- });
346
- bus.on('mongosh-editor:read-vscode-extensions-failed', function (ev) {
347
- log.error('MONGOSH-EDITOR', (0, mongodb_log_writer_1.mongoLogId)(1000000044), 'editor', 'Reading vscode extensions from file system failed', {
348
- ...ev,
349
- error: ev.error.message,
350
- });
351
- });
352
- bus.on('mongosh:fetching-update-metadata', function (ev) {
353
- log.info('MONGOSH', (0, mongodb_log_writer_1.mongoLogId)(1000000052), 'startup', 'Fetching update metadata', {
354
- ...ev,
355
- });
356
- });
357
- bus.on('mongosh:fetching-update-metadata-complete', function (ev) {
358
- log.info('MONGOSH', (0, mongodb_log_writer_1.mongoLogId)(1000000053), 'startup', 'Fetching update metadata complete', {
359
- ...ev,
360
- });
361
- });
362
- }
363
- exports.setupLoggerAndTelemetry = setupLoggerAndTelemetry;
364
- //# 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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"}