@amplitude/analytics-core 2.35.2 → 2.36.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.
@@ -0,0 +1,21 @@
1
+ type ConsoleLogLevel = keyof Console;
2
+ type Callback = (logLevel: ConsoleLogLevel, args: any[]) => void;
3
+ /**
4
+ * Observe a console log method (log, warn, error, etc.)
5
+ * @param level - The console log level to observe
6
+ * @param callback - The callback function to call when the console log level is observed
7
+ */
8
+ declare function addListener(level: ConsoleLogLevel, callback: Callback): Error | void;
9
+ /**
10
+ * Disconnect a callback function from a console log method
11
+ * @param callback - The callback function to disconnect
12
+ */
13
+ declare function removeListener(callback: Callback): void;
14
+ declare function _restoreConsole(): void;
15
+ declare const consoleObserver: {
16
+ addListener: typeof addListener;
17
+ removeListener: typeof removeListener;
18
+ _restoreConsole: typeof _restoreConsole;
19
+ };
20
+ export { consoleObserver, ConsoleLogLevel };
21
+ //# sourceMappingURL=console.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../../../src/observers/console.ts"],"names":[],"mappings":"AAEA,KAAK,eAAe,GAAG,MAAM,OAAO,CAAC;AACrC,KAAK,QAAQ,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;AA4DjE;;;;GAIG;AACH,iBAAS,WAAW,CAAC,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,GAAG,KAAK,GAAG,IAAI,CAc7E;AAED;;;GAGG;AACH,iBAAS,cAAc,CAAC,QAAQ,EAAE,QAAQ,QAUzC;AAID,iBAAS,eAAe,SASvB;AAED,QAAA,MAAM,eAAe;;;;CAIpB,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,CAAC"}
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.consoleObserver = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var global_scope_1 = require("../global-scope");
6
+ var globalScope = (0, global_scope_1.getGlobalScope)();
7
+ /* istanbul ignore next */
8
+ var originalConsole = globalScope === null || globalScope === void 0 ? void 0 : globalScope.console;
9
+ var handlers = {};
10
+ // keeps reference to original console methods
11
+ var originalFn = {};
12
+ var inConsoleOverride = false;
13
+ function overrideConsole(logLevel) {
14
+ /* istanbul ignore if */
15
+ if (!originalConsole) {
16
+ return false;
17
+ }
18
+ // should not override if original console property is not a function
19
+ /* eslint-disable-next-line @typescript-eslint/no-unsafe-member-access */
20
+ if (typeof originalConsole[logLevel] !== 'function') {
21
+ return false;
22
+ }
23
+ // if console is already overridden, return true
24
+ if (originalFn[logLevel]) {
25
+ return true;
26
+ }
27
+ // override console method
28
+ var handler = function () {
29
+ var args = [];
30
+ for (var _i = 0; _i < arguments.length; _i++) {
31
+ args[_i] = arguments[_i];
32
+ }
33
+ try {
34
+ if (handlers[logLevel] && !inConsoleOverride) {
35
+ // add a re-entrancy guard to prevent infinite recursion
36
+ inConsoleOverride = true;
37
+ var callbacks = handlers[logLevel];
38
+ if (callbacks) {
39
+ callbacks.forEach(function (callback) {
40
+ try {
41
+ callback(logLevel, args);
42
+ }
43
+ catch (_a) {
44
+ // do nothing
45
+ }
46
+ });
47
+ }
48
+ }
49
+ }
50
+ catch (_a) {
51
+ // do nothing
52
+ }
53
+ inConsoleOverride = false;
54
+ return originalFn[logLevel].apply(originalConsole, args);
55
+ };
56
+ /* eslint-disable-next-line @typescript-eslint/no-unsafe-member-access */
57
+ originalFn[logLevel] = originalConsole[logLevel];
58
+ /* eslint-disable-next-line @typescript-eslint/no-unsafe-member-access */
59
+ originalConsole[logLevel] = handler;
60
+ return true;
61
+ }
62
+ /**
63
+ * Observe a console log method (log, warn, error, etc.)
64
+ * @param level - The console log level to observe
65
+ * @param callback - The callback function to call when the console log level is observed
66
+ */
67
+ function addListener(level, callback) {
68
+ var res = overrideConsole(level);
69
+ /* istanbul ignore if */
70
+ if (!res) {
71
+ return new Error('Console override failed');
72
+ }
73
+ if (handlers[level]) {
74
+ // using ! is safe because we know the key exists based on condition above
75
+ handlers[level].push(callback);
76
+ }
77
+ else {
78
+ handlers[level] = [callback];
79
+ }
80
+ }
81
+ /**
82
+ * Disconnect a callback function from a console log method
83
+ * @param callback - The callback function to disconnect
84
+ */
85
+ function removeListener(callback) {
86
+ var e_1, _a;
87
+ try {
88
+ for (var _b = tslib_1.__values(Object.values(handlers)), _c = _b.next(); !_c.done; _c = _b.next()) {
89
+ var callbacks = _c.value;
90
+ // iterate backwards to avoid index shifting
91
+ for (var i = callbacks.length - 1; i >= 0; i--) {
92
+ if (callbacks[i] === callback) {
93
+ callbacks.splice(i, 1);
94
+ break;
95
+ }
96
+ }
97
+ }
98
+ }
99
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
100
+ finally {
101
+ try {
102
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
103
+ }
104
+ finally { if (e_1) throw e_1.error; }
105
+ }
106
+ }
107
+ // this should only be used for testing
108
+ // restoring console can break console overrides
109
+ function _restoreConsole() {
110
+ var e_2, _a;
111
+ try {
112
+ for (var _b = tslib_1.__values(Object.entries(originalFn)), _c = _b.next(); !_c.done; _c = _b.next()) {
113
+ var _d = tslib_1.__read(_c.value, 2), key = _d[0], originalHandler = _d[1];
114
+ if (originalHandler) {
115
+ /* eslint-disable-next-line @typescript-eslint/no-unsafe-member-access */
116
+ originalConsole[key] = originalHandler;
117
+ }
118
+ }
119
+ }
120
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
121
+ finally {
122
+ try {
123
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
124
+ }
125
+ finally { if (e_2) throw e_2.error; }
126
+ }
127
+ originalFn = {};
128
+ handlers = {};
129
+ }
130
+ var consoleObserver = {
131
+ addListener: addListener,
132
+ removeListener: removeListener,
133
+ _restoreConsole: _restoreConsole,
134
+ };
135
+ exports.consoleObserver = consoleObserver;
136
+ //# sourceMappingURL=console.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console.js","sourceRoot":"","sources":["../../../src/observers/console.ts"],"names":[],"mappings":"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","sourcesContent":["import { getGlobalScope } from '../global-scope';\n\ntype ConsoleLogLevel = keyof Console;\ntype Callback = (logLevel: ConsoleLogLevel, args: any[]) => void;\n\nconst globalScope = getGlobalScope();\n/* istanbul ignore next */\nconst originalConsole: any = globalScope?.console;\n\nlet handlers: { [key in ConsoleLogLevel]?: Array<Callback> } = {};\n\n// keeps reference to original console methods\nlet originalFn: { [key in ConsoleLogLevel]?: (...args: any[]) => void } = {};\n\nlet inConsoleOverride = false;\n\nfunction overrideConsole(logLevel: ConsoleLogLevel): boolean {\n /* istanbul ignore if */\n if (!originalConsole) {\n return false;\n }\n\n // should not override if original console property is not a function\n /* eslint-disable-next-line @typescript-eslint/no-unsafe-member-access */\n if (typeof originalConsole[logLevel] !== 'function') {\n return false;\n }\n\n // if console is already overridden, return true\n if (originalFn[logLevel]) {\n return true;\n }\n\n // override console method\n const handler = function (...args: any[]) {\n try {\n if (handlers[logLevel] && !inConsoleOverride) {\n // add a re-entrancy guard to prevent infinite recursion\n inConsoleOverride = true;\n const callbacks = handlers[logLevel];\n if (callbacks) {\n callbacks.forEach((callback) => {\n try {\n callback(logLevel, args);\n } catch {\n // do nothing\n }\n });\n }\n }\n } catch {\n // do nothing\n }\n inConsoleOverride = false;\n return originalFn[logLevel]!.apply(originalConsole, args);\n };\n /* eslint-disable-next-line @typescript-eslint/no-unsafe-member-access */\n originalFn[logLevel] = originalConsole[logLevel] as (...args: any[]) => void;\n /* eslint-disable-next-line @typescript-eslint/no-unsafe-member-access */\n originalConsole[logLevel] = handler;\n return true;\n}\n\n/**\n * Observe a console log method (log, warn, error, etc.)\n * @param level - The console log level to observe\n * @param callback - The callback function to call when the console log level is observed\n */\nfunction addListener(level: ConsoleLogLevel, callback: Callback): Error | void {\n const res = overrideConsole(level);\n\n /* istanbul ignore if */\n if (!res) {\n return new Error('Console override failed');\n }\n\n if (handlers[level]) {\n // using ! is safe because we know the key exists based on condition above\n handlers[level]!.push(callback);\n } else {\n handlers[level] = [callback];\n }\n}\n\n/**\n * Disconnect a callback function from a console log method\n * @param callback - The callback function to disconnect\n */\nfunction removeListener(callback: Callback) {\n for (const callbacks of Object.values(handlers)) {\n // iterate backwards to avoid index shifting\n for (let i = callbacks.length - 1; i >= 0; i--) {\n if (callbacks[i] === callback) {\n callbacks.splice(i, 1);\n break;\n }\n }\n }\n}\n\n// this should only be used for testing\n// restoring console can break console overrides\nfunction _restoreConsole() {\n for (const [key, originalHandler] of Object.entries(originalFn)) {\n if (originalHandler) {\n /* eslint-disable-next-line @typescript-eslint/no-unsafe-member-access */\n originalConsole[key] = originalHandler;\n }\n }\n originalFn = {};\n handlers = {};\n}\n\nconst consoleObserver = {\n addListener,\n removeListener,\n _restoreConsole,\n};\n\nexport { consoleObserver, ConsoleLogLevel };\n"]}
@@ -0,0 +1,21 @@
1
+ type ConsoleLogLevel = keyof Console;
2
+ type Callback = (logLevel: ConsoleLogLevel, args: any[]) => void;
3
+ /**
4
+ * Observe a console log method (log, warn, error, etc.)
5
+ * @param level - The console log level to observe
6
+ * @param callback - The callback function to call when the console log level is observed
7
+ */
8
+ declare function addListener(level: ConsoleLogLevel, callback: Callback): Error | void;
9
+ /**
10
+ * Disconnect a callback function from a console log method
11
+ * @param callback - The callback function to disconnect
12
+ */
13
+ declare function removeListener(callback: Callback): void;
14
+ declare function _restoreConsole(): void;
15
+ declare const consoleObserver: {
16
+ addListener: typeof addListener;
17
+ removeListener: typeof removeListener;
18
+ _restoreConsole: typeof _restoreConsole;
19
+ };
20
+ export { consoleObserver, ConsoleLogLevel };
21
+ //# sourceMappingURL=console.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../../../src/observers/console.ts"],"names":[],"mappings":"AAEA,KAAK,eAAe,GAAG,MAAM,OAAO,CAAC;AACrC,KAAK,QAAQ,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;AA4DjE;;;;GAIG;AACH,iBAAS,WAAW,CAAC,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,GAAG,KAAK,GAAG,IAAI,CAc7E;AAED;;;GAGG;AACH,iBAAS,cAAc,CAAC,QAAQ,EAAE,QAAQ,QAUzC;AAID,iBAAS,eAAe,SASvB;AAED,QAAA,MAAM,eAAe;;;;CAIpB,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,CAAC"}
@@ -0,0 +1,133 @@
1
+ import { __read, __values } from "tslib";
2
+ import { getGlobalScope } from '../global-scope';
3
+ var globalScope = getGlobalScope();
4
+ /* istanbul ignore next */
5
+ var originalConsole = globalScope === null || globalScope === void 0 ? void 0 : globalScope.console;
6
+ var handlers = {};
7
+ // keeps reference to original console methods
8
+ var originalFn = {};
9
+ var inConsoleOverride = false;
10
+ function overrideConsole(logLevel) {
11
+ /* istanbul ignore if */
12
+ if (!originalConsole) {
13
+ return false;
14
+ }
15
+ // should not override if original console property is not a function
16
+ /* eslint-disable-next-line @typescript-eslint/no-unsafe-member-access */
17
+ if (typeof originalConsole[logLevel] !== 'function') {
18
+ return false;
19
+ }
20
+ // if console is already overridden, return true
21
+ if (originalFn[logLevel]) {
22
+ return true;
23
+ }
24
+ // override console method
25
+ var handler = function () {
26
+ var args = [];
27
+ for (var _i = 0; _i < arguments.length; _i++) {
28
+ args[_i] = arguments[_i];
29
+ }
30
+ try {
31
+ if (handlers[logLevel] && !inConsoleOverride) {
32
+ // add a re-entrancy guard to prevent infinite recursion
33
+ inConsoleOverride = true;
34
+ var callbacks = handlers[logLevel];
35
+ if (callbacks) {
36
+ callbacks.forEach(function (callback) {
37
+ try {
38
+ callback(logLevel, args);
39
+ }
40
+ catch (_a) {
41
+ // do nothing
42
+ }
43
+ });
44
+ }
45
+ }
46
+ }
47
+ catch (_a) {
48
+ // do nothing
49
+ }
50
+ inConsoleOverride = false;
51
+ return originalFn[logLevel].apply(originalConsole, args);
52
+ };
53
+ /* eslint-disable-next-line @typescript-eslint/no-unsafe-member-access */
54
+ originalFn[logLevel] = originalConsole[logLevel];
55
+ /* eslint-disable-next-line @typescript-eslint/no-unsafe-member-access */
56
+ originalConsole[logLevel] = handler;
57
+ return true;
58
+ }
59
+ /**
60
+ * Observe a console log method (log, warn, error, etc.)
61
+ * @param level - The console log level to observe
62
+ * @param callback - The callback function to call when the console log level is observed
63
+ */
64
+ function addListener(level, callback) {
65
+ var res = overrideConsole(level);
66
+ /* istanbul ignore if */
67
+ if (!res) {
68
+ return new Error('Console override failed');
69
+ }
70
+ if (handlers[level]) {
71
+ // using ! is safe because we know the key exists based on condition above
72
+ handlers[level].push(callback);
73
+ }
74
+ else {
75
+ handlers[level] = [callback];
76
+ }
77
+ }
78
+ /**
79
+ * Disconnect a callback function from a console log method
80
+ * @param callback - The callback function to disconnect
81
+ */
82
+ function removeListener(callback) {
83
+ var e_1, _a;
84
+ try {
85
+ for (var _b = __values(Object.values(handlers)), _c = _b.next(); !_c.done; _c = _b.next()) {
86
+ var callbacks = _c.value;
87
+ // iterate backwards to avoid index shifting
88
+ for (var i = callbacks.length - 1; i >= 0; i--) {
89
+ if (callbacks[i] === callback) {
90
+ callbacks.splice(i, 1);
91
+ break;
92
+ }
93
+ }
94
+ }
95
+ }
96
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
97
+ finally {
98
+ try {
99
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
100
+ }
101
+ finally { if (e_1) throw e_1.error; }
102
+ }
103
+ }
104
+ // this should only be used for testing
105
+ // restoring console can break console overrides
106
+ function _restoreConsole() {
107
+ var e_2, _a;
108
+ try {
109
+ for (var _b = __values(Object.entries(originalFn)), _c = _b.next(); !_c.done; _c = _b.next()) {
110
+ var _d = __read(_c.value, 2), key = _d[0], originalHandler = _d[1];
111
+ if (originalHandler) {
112
+ /* eslint-disable-next-line @typescript-eslint/no-unsafe-member-access */
113
+ originalConsole[key] = originalHandler;
114
+ }
115
+ }
116
+ }
117
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
118
+ finally {
119
+ try {
120
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
121
+ }
122
+ finally { if (e_2) throw e_2.error; }
123
+ }
124
+ originalFn = {};
125
+ handlers = {};
126
+ }
127
+ var consoleObserver = {
128
+ addListener: addListener,
129
+ removeListener: removeListener,
130
+ _restoreConsole: _restoreConsole,
131
+ };
132
+ export { consoleObserver };
133
+ //# sourceMappingURL=console.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console.js","sourceRoot":"","sources":["../../../src/observers/console.ts"],"names":[],"mappings":"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","sourcesContent":["import { getGlobalScope } from '../global-scope';\n\ntype ConsoleLogLevel = keyof Console;\ntype Callback = (logLevel: ConsoleLogLevel, args: any[]) => void;\n\nconst globalScope = getGlobalScope();\n/* istanbul ignore next */\nconst originalConsole: any = globalScope?.console;\n\nlet handlers: { [key in ConsoleLogLevel]?: Array<Callback> } = {};\n\n// keeps reference to original console methods\nlet originalFn: { [key in ConsoleLogLevel]?: (...args: any[]) => void } = {};\n\nlet inConsoleOverride = false;\n\nfunction overrideConsole(logLevel: ConsoleLogLevel): boolean {\n /* istanbul ignore if */\n if (!originalConsole) {\n return false;\n }\n\n // should not override if original console property is not a function\n /* eslint-disable-next-line @typescript-eslint/no-unsafe-member-access */\n if (typeof originalConsole[logLevel] !== 'function') {\n return false;\n }\n\n // if console is already overridden, return true\n if (originalFn[logLevel]) {\n return true;\n }\n\n // override console method\n const handler = function (...args: any[]) {\n try {\n if (handlers[logLevel] && !inConsoleOverride) {\n // add a re-entrancy guard to prevent infinite recursion\n inConsoleOverride = true;\n const callbacks = handlers[logLevel];\n if (callbacks) {\n callbacks.forEach((callback) => {\n try {\n callback(logLevel, args);\n } catch {\n // do nothing\n }\n });\n }\n }\n } catch {\n // do nothing\n }\n inConsoleOverride = false;\n return originalFn[logLevel]!.apply(originalConsole, args);\n };\n /* eslint-disable-next-line @typescript-eslint/no-unsafe-member-access */\n originalFn[logLevel] = originalConsole[logLevel] as (...args: any[]) => void;\n /* eslint-disable-next-line @typescript-eslint/no-unsafe-member-access */\n originalConsole[logLevel] = handler;\n return true;\n}\n\n/**\n * Observe a console log method (log, warn, error, etc.)\n * @param level - The console log level to observe\n * @param callback - The callback function to call when the console log level is observed\n */\nfunction addListener(level: ConsoleLogLevel, callback: Callback): Error | void {\n const res = overrideConsole(level);\n\n /* istanbul ignore if */\n if (!res) {\n return new Error('Console override failed');\n }\n\n if (handlers[level]) {\n // using ! is safe because we know the key exists based on condition above\n handlers[level]!.push(callback);\n } else {\n handlers[level] = [callback];\n }\n}\n\n/**\n * Disconnect a callback function from a console log method\n * @param callback - The callback function to disconnect\n */\nfunction removeListener(callback: Callback) {\n for (const callbacks of Object.values(handlers)) {\n // iterate backwards to avoid index shifting\n for (let i = callbacks.length - 1; i >= 0; i--) {\n if (callbacks[i] === callback) {\n callbacks.splice(i, 1);\n break;\n }\n }\n }\n}\n\n// this should only be used for testing\n// restoring console can break console overrides\nfunction _restoreConsole() {\n for (const [key, originalHandler] of Object.entries(originalFn)) {\n if (originalHandler) {\n /* eslint-disable-next-line @typescript-eslint/no-unsafe-member-access */\n originalConsole[key] = originalHandler;\n }\n }\n originalFn = {};\n handlers = {};\n}\n\nconst consoleObserver = {\n addListener,\n removeListener,\n _restoreConsole,\n};\n\nexport { consoleObserver, ConsoleLogLevel };\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amplitude/analytics-core",
3
- "version": "2.35.2",
3
+ "version": "2.36.0",
4
4
  "description": "",
5
5
  "author": "Amplitude Inc",
6
6
  "homepage": "https://github.com/amplitude/Amplitude-TypeScript",