posthog-node 5.8.8 → 5.9.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.
Files changed (129) hide show
  1. package/dist/{index.d.ts → client.d.ts} +7 -378
  2. package/dist/client.d.ts.map +1 -0
  3. package/dist/client.js +481 -0
  4. package/dist/client.mjs +437 -0
  5. package/dist/entrypoints/index.edge.d.ts +6 -0
  6. package/dist/entrypoints/index.edge.d.ts.map +1 -0
  7. package/dist/entrypoints/index.edge.js +89 -0
  8. package/dist/entrypoints/index.edge.mjs +12 -0
  9. package/dist/entrypoints/index.node.d.ts +6 -0
  10. package/dist/entrypoints/index.node.d.ts.map +1 -0
  11. package/dist/entrypoints/index.node.js +99 -0
  12. package/dist/entrypoints/index.node.mjs +16 -0
  13. package/dist/exports.d.ts +4 -0
  14. package/dist/exports.d.ts.map +1 -0
  15. package/dist/exports.js +78 -0
  16. package/dist/exports.mjs +3 -0
  17. package/dist/extensions/error-tracking/autocapture.d.ts +4 -0
  18. package/dist/extensions/error-tracking/autocapture.d.ts.map +1 -0
  19. package/dist/extensions/error-tracking/autocapture.js +68 -0
  20. package/dist/extensions/error-tracking/autocapture.mjs +31 -0
  21. package/dist/extensions/error-tracking/chunk-ids.d.ts +5 -0
  22. package/dist/extensions/error-tracking/chunk-ids.d.ts.map +1 -0
  23. package/dist/extensions/error-tracking/chunk-ids.js +68 -0
  24. package/dist/extensions/error-tracking/chunk-ids.mjs +34 -0
  25. package/dist/extensions/error-tracking/context-lines.node.d.ts +5 -0
  26. package/dist/extensions/error-tracking/context-lines.node.d.ts.map +1 -0
  27. package/dist/extensions/error-tracking/context-lines.node.js +227 -0
  28. package/dist/extensions/error-tracking/context-lines.node.mjs +187 -0
  29. package/dist/extensions/error-tracking/error-conversion.d.ts +4 -0
  30. package/dist/extensions/error-tracking/error-conversion.d.ts.map +1 -0
  31. package/dist/extensions/error-tracking/error-conversion.js +183 -0
  32. package/dist/extensions/error-tracking/error-conversion.mjs +146 -0
  33. package/dist/extensions/error-tracking/get-module.node.d.ts +3 -0
  34. package/dist/extensions/error-tracking/get-module.node.d.ts.map +1 -0
  35. package/dist/extensions/error-tracking/get-module.node.js +57 -0
  36. package/dist/extensions/error-tracking/get-module.node.mjs +23 -0
  37. package/dist/extensions/error-tracking/index.d.ts +20 -0
  38. package/dist/extensions/error-tracking/index.d.ts.map +1 -0
  39. package/dist/extensions/error-tracking/index.js +97 -0
  40. package/dist/extensions/error-tracking/index.mjs +63 -0
  41. package/dist/extensions/error-tracking/reduceable-cache.d.ts +13 -0
  42. package/dist/extensions/error-tracking/reduceable-cache.d.ts.map +1 -0
  43. package/dist/extensions/error-tracking/reduceable-cache.js +57 -0
  44. package/dist/extensions/error-tracking/reduceable-cache.mjs +23 -0
  45. package/dist/extensions/error-tracking/stack-parser.d.ts +3 -0
  46. package/dist/extensions/error-tracking/stack-parser.d.ts.map +1 -0
  47. package/dist/extensions/error-tracking/stack-parser.js +148 -0
  48. package/dist/extensions/error-tracking/stack-parser.mjs +114 -0
  49. package/dist/extensions/error-tracking/type-checking.d.ts +8 -0
  50. package/dist/extensions/error-tracking/type-checking.d.ts.map +1 -0
  51. package/dist/extensions/error-tracking/type-checking.js +80 -0
  52. package/dist/extensions/error-tracking/type-checking.mjs +31 -0
  53. package/dist/extensions/error-tracking/types.d.ts +61 -0
  54. package/dist/extensions/error-tracking/types.d.ts.map +1 -0
  55. package/dist/extensions/error-tracking/types.js +43 -0
  56. package/dist/extensions/error-tracking/types.mjs +9 -0
  57. package/dist/extensions/express.d.ts +17 -0
  58. package/dist/extensions/express.d.ts.map +1 -0
  59. package/dist/extensions/express.js +61 -0
  60. package/dist/extensions/express.mjs +17 -0
  61. package/dist/extensions/feature-flags/crypto-helpers.d.ts +3 -0
  62. package/dist/extensions/feature-flags/crypto-helpers.d.ts.map +1 -0
  63. package/dist/extensions/feature-flags/crypto-helpers.js +77 -0
  64. package/dist/extensions/feature-flags/crypto-helpers.mjs +22 -0
  65. package/dist/extensions/feature-flags/crypto.d.ts +2 -0
  66. package/dist/extensions/feature-flags/crypto.d.ts.map +1 -0
  67. package/dist/extensions/feature-flags/crypto.js +47 -0
  68. package/dist/extensions/feature-flags/crypto.mjs +13 -0
  69. package/dist/extensions/feature-flags/feature-flags.d.ts +89 -0
  70. package/dist/extensions/feature-flags/feature-flags.d.ts.map +1 -0
  71. package/dist/extensions/feature-flags/feature-flags.js +529 -0
  72. package/dist/extensions/feature-flags/feature-flags.mjs +483 -0
  73. package/dist/extensions/feature-flags/lazy.d.ts +24 -0
  74. package/dist/extensions/feature-flags/lazy.d.ts.map +1 -0
  75. package/dist/extensions/feature-flags/lazy.js +60 -0
  76. package/dist/extensions/feature-flags/lazy.mjs +26 -0
  77. package/dist/extensions/sentry-integration.d.ts +54 -0
  78. package/dist/extensions/sentry-integration.d.ts.map +1 -0
  79. package/dist/extensions/sentry-integration.js +113 -0
  80. package/dist/extensions/sentry-integration.mjs +73 -0
  81. package/dist/storage-memory.d.ts +7 -0
  82. package/dist/storage-memory.d.ts.map +1 -0
  83. package/dist/storage-memory.js +46 -0
  84. package/dist/storage-memory.mjs +12 -0
  85. package/dist/types.d.ts +253 -0
  86. package/dist/types.d.ts.map +1 -0
  87. package/dist/types.js +18 -0
  88. package/dist/types.mjs +0 -0
  89. package/dist/utils/logger.d.ts +3 -0
  90. package/dist/utils/logger.d.ts.map +1 -0
  91. package/dist/utils/logger.js +63 -0
  92. package/dist/utils/logger.mjs +29 -0
  93. package/dist/version.d.ts +2 -0
  94. package/dist/version.d.ts.map +1 -0
  95. package/dist/version.js +36 -0
  96. package/dist/version.mjs +2 -0
  97. package/package.json +32 -31
  98. package/src/client.ts +1532 -0
  99. package/src/entrypoints/index.edge.ts +15 -0
  100. package/src/entrypoints/index.node.ts +17 -0
  101. package/src/exports.ts +3 -0
  102. package/src/extensions/error-tracking/autocapture.ts +65 -0
  103. package/src/extensions/error-tracking/chunk-ids.ts +58 -0
  104. package/src/extensions/error-tracking/context-lines.node.ts +392 -0
  105. package/src/extensions/error-tracking/error-conversion.ts +291 -0
  106. package/src/extensions/error-tracking/get-module.node.ts +57 -0
  107. package/src/extensions/error-tracking/index.ts +103 -0
  108. package/src/extensions/error-tracking/reduceable-cache.ts +39 -0
  109. package/src/extensions/error-tracking/stack-parser.ts +212 -0
  110. package/src/extensions/error-tracking/type-checking.ts +40 -0
  111. package/src/extensions/error-tracking/types.ts +71 -0
  112. package/src/extensions/express.ts +39 -0
  113. package/src/extensions/feature-flags/crypto-helpers.ts +36 -0
  114. package/src/extensions/feature-flags/crypto.ts +22 -0
  115. package/src/extensions/feature-flags/feature-flags.ts +1003 -0
  116. package/src/extensions/feature-flags/lazy.ts +55 -0
  117. package/src/extensions/sentry-integration.ts +216 -0
  118. package/src/storage-memory.ts +13 -0
  119. package/src/types.ts +294 -0
  120. package/src/utils/logger.ts +39 -0
  121. package/src/version.ts +1 -0
  122. package/dist/edge/index.cjs +0 -3150
  123. package/dist/edge/index.cjs.map +0 -1
  124. package/dist/edge/index.mjs +0 -3144
  125. package/dist/edge/index.mjs.map +0 -1
  126. package/dist/node/index.cjs +0 -3556
  127. package/dist/node/index.cjs.map +0 -1
  128. package/dist/node/index.mjs +0 -3550
  129. package/dist/node/index.mjs.map +0 -1
@@ -0,0 +1,4 @@
1
+ export * from './extensions/sentry-integration';
2
+ export * from './extensions/express';
3
+ export * from './types';
4
+ //# sourceMappingURL=exports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAA;AAC/C,cAAc,sBAAsB,CAAA;AACpC,cAAc,SAAS,CAAA"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ var __webpack_modules__ = {
3
+ "./extensions/express": function(module) {
4
+ module.exports = require("./extensions/express.js");
5
+ },
6
+ "./extensions/sentry-integration": function(module) {
7
+ module.exports = require("./extensions/sentry-integration.js");
8
+ },
9
+ "./types": function(module) {
10
+ module.exports = require("./types.js");
11
+ }
12
+ };
13
+ var __webpack_module_cache__ = {};
14
+ function __webpack_require__(moduleId) {
15
+ var cachedModule = __webpack_module_cache__[moduleId];
16
+ if (void 0 !== cachedModule) return cachedModule.exports;
17
+ var module = __webpack_module_cache__[moduleId] = {
18
+ exports: {}
19
+ };
20
+ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
21
+ return module.exports;
22
+ }
23
+ (()=>{
24
+ __webpack_require__.n = (module)=>{
25
+ var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
26
+ __webpack_require__.d(getter, {
27
+ a: getter
28
+ });
29
+ return getter;
30
+ };
31
+ })();
32
+ (()=>{
33
+ __webpack_require__.d = (exports1, definition)=>{
34
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
35
+ enumerable: true,
36
+ get: definition[key]
37
+ });
38
+ };
39
+ })();
40
+ (()=>{
41
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
42
+ })();
43
+ (()=>{
44
+ __webpack_require__.r = (exports1)=>{
45
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
46
+ value: 'Module'
47
+ });
48
+ Object.defineProperty(exports1, '__esModule', {
49
+ value: true
50
+ });
51
+ };
52
+ })();
53
+ var __webpack_exports__ = {};
54
+ (()=>{
55
+ __webpack_require__.r(__webpack_exports__);
56
+ var _extensions_sentry_integration__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./extensions/sentry-integration");
57
+ var __WEBPACK_REEXPORT_OBJECT__ = {};
58
+ for(var __WEBPACK_IMPORT_KEY__ in _extensions_sentry_integration__WEBPACK_IMPORTED_MODULE_0__)if ("default" !== __WEBPACK_IMPORT_KEY__) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
59
+ return _extensions_sentry_integration__WEBPACK_IMPORTED_MODULE_0__[key];
60
+ }).bind(0, __WEBPACK_IMPORT_KEY__);
61
+ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
62
+ var _extensions_express__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./extensions/express");
63
+ var __WEBPACK_REEXPORT_OBJECT__ = {};
64
+ for(var __WEBPACK_IMPORT_KEY__ in _extensions_express__WEBPACK_IMPORTED_MODULE_1__)if ("default" !== __WEBPACK_IMPORT_KEY__) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
65
+ return _extensions_express__WEBPACK_IMPORTED_MODULE_1__[key];
66
+ }).bind(0, __WEBPACK_IMPORT_KEY__);
67
+ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
68
+ var _types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./types");
69
+ var __WEBPACK_REEXPORT_OBJECT__ = {};
70
+ for(var __WEBPACK_IMPORT_KEY__ in _types__WEBPACK_IMPORTED_MODULE_2__)if ("default" !== __WEBPACK_IMPORT_KEY__) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
71
+ return _types__WEBPACK_IMPORTED_MODULE_2__[key];
72
+ }).bind(0, __WEBPACK_IMPORT_KEY__);
73
+ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
74
+ })();
75
+ for(var __webpack_i__ in __webpack_exports__)exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
76
+ Object.defineProperty(exports, '__esModule', {
77
+ value: true
78
+ });
@@ -0,0 +1,3 @@
1
+ export * from "./extensions/sentry-integration.mjs";
2
+ export * from "./extensions/express.mjs";
3
+ export * from "./types.mjs";
@@ -0,0 +1,4 @@
1
+ import { EventHint } from './types';
2
+ export declare function addUncaughtExceptionListener(captureFn: (exception: Error, hint: EventHint) => void, onFatalFn: (exception: Error) => void): void;
3
+ export declare function addUnhandledRejectionListener(captureFn: (exception: unknown, hint: EventHint) => void): void;
4
+ //# sourceMappingURL=autocapture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autocapture.d.ts","sourceRoot":"","sources":["../../../src/extensions/error-tracking/autocapture.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AA6CnC,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,KAAK,IAAI,EACtD,SAAS,EAAE,CAAC,SAAS,EAAE,KAAK,KAAK,IAAI,GACpC,IAAI,CAEN;AAED,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,KAAK,IAAI,GAAG,IAAI,CAS5G"}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ addUncaughtExceptionListener: ()=>addUncaughtExceptionListener,
28
+ addUnhandledRejectionListener: ()=>addUnhandledRejectionListener
29
+ });
30
+ function makeUncaughtExceptionHandler(captureFn, onFatalFn) {
31
+ let calledFatalError = false;
32
+ return Object.assign((error)=>{
33
+ const userProvidedListenersCount = global.process.listeners('uncaughtException').filter((listener)=>'domainUncaughtExceptionClear' !== listener.name && true !== listener._posthogErrorHandler).length;
34
+ const processWouldExit = 0 === userProvidedListenersCount;
35
+ captureFn(error, {
36
+ mechanism: {
37
+ type: 'onuncaughtexception',
38
+ handled: false
39
+ }
40
+ });
41
+ if (!calledFatalError && processWouldExit) {
42
+ calledFatalError = true;
43
+ onFatalFn(error);
44
+ }
45
+ }, {
46
+ _posthogErrorHandler: true
47
+ });
48
+ }
49
+ function addUncaughtExceptionListener(captureFn, onFatalFn) {
50
+ global.process.on('uncaughtException', makeUncaughtExceptionHandler(captureFn, onFatalFn));
51
+ }
52
+ function addUnhandledRejectionListener(captureFn) {
53
+ global.process.on('unhandledRejection', (reason)=>captureFn(reason, {
54
+ mechanism: {
55
+ type: 'onunhandledrejection',
56
+ handled: false
57
+ }
58
+ }));
59
+ }
60
+ exports.addUncaughtExceptionListener = __webpack_exports__.addUncaughtExceptionListener;
61
+ exports.addUnhandledRejectionListener = __webpack_exports__.addUnhandledRejectionListener;
62
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
63
+ "addUncaughtExceptionListener",
64
+ "addUnhandledRejectionListener"
65
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
66
+ Object.defineProperty(exports, '__esModule', {
67
+ value: true
68
+ });
@@ -0,0 +1,31 @@
1
+ function makeUncaughtExceptionHandler(captureFn, onFatalFn) {
2
+ let calledFatalError = false;
3
+ return Object.assign((error)=>{
4
+ const userProvidedListenersCount = global.process.listeners('uncaughtException').filter((listener)=>'domainUncaughtExceptionClear' !== listener.name && true !== listener._posthogErrorHandler).length;
5
+ const processWouldExit = 0 === userProvidedListenersCount;
6
+ captureFn(error, {
7
+ mechanism: {
8
+ type: 'onuncaughtexception',
9
+ handled: false
10
+ }
11
+ });
12
+ if (!calledFatalError && processWouldExit) {
13
+ calledFatalError = true;
14
+ onFatalFn(error);
15
+ }
16
+ }, {
17
+ _posthogErrorHandler: true
18
+ });
19
+ }
20
+ function addUncaughtExceptionListener(captureFn, onFatalFn) {
21
+ global.process.on('uncaughtException', makeUncaughtExceptionHandler(captureFn, onFatalFn));
22
+ }
23
+ function addUnhandledRejectionListener(captureFn) {
24
+ global.process.on('unhandledRejection', (reason)=>captureFn(reason, {
25
+ mechanism: {
26
+ type: 'onunhandledrejection',
27
+ handled: false
28
+ }
29
+ }));
30
+ }
31
+ export { addUncaughtExceptionListener, addUnhandledRejectionListener };
@@ -0,0 +1,5 @@
1
+ import type { StackParser } from './types';
2
+ type ChunkIdMapType = Record<string, string>;
3
+ export declare function getFilenameToChunkIdMap(stackParser: StackParser): ChunkIdMapType | null;
4
+ export {};
5
+ //# sourceMappingURL=chunk-ids.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-ids.d.ts","sourceRoot":"","sources":["../../../src/extensions/error-tracking/chunk-ids.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAK1C,KAAK,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAM5C,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,WAAW,GAAG,cAAc,GAAG,IAAI,CA2CvF"}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ getFilenameToChunkIdMap: ()=>getFilenameToChunkIdMap
28
+ });
29
+ let parsedStackResults;
30
+ let lastKeysCount;
31
+ let cachedFilenameChunkIds;
32
+ function getFilenameToChunkIdMap(stackParser) {
33
+ const chunkIdMap = globalThis._posthogChunkIds;
34
+ if (!chunkIdMap) return null;
35
+ const chunkIdKeys = Object.keys(chunkIdMap);
36
+ if (cachedFilenameChunkIds && chunkIdKeys.length === lastKeysCount) return cachedFilenameChunkIds;
37
+ lastKeysCount = chunkIdKeys.length;
38
+ cachedFilenameChunkIds = chunkIdKeys.reduce((acc, stackKey)=>{
39
+ if (!parsedStackResults) parsedStackResults = {};
40
+ const result = parsedStackResults[stackKey];
41
+ if (result) acc[result[0]] = result[1];
42
+ else {
43
+ const parsedStack = stackParser(stackKey);
44
+ for(let i = parsedStack.length - 1; i >= 0; i--){
45
+ const stackFrame = parsedStack[i];
46
+ const filename = stackFrame?.filename;
47
+ const chunkId = chunkIdMap[stackKey];
48
+ if (filename && chunkId) {
49
+ acc[filename] = chunkId;
50
+ parsedStackResults[stackKey] = [
51
+ filename,
52
+ chunkId
53
+ ];
54
+ break;
55
+ }
56
+ }
57
+ }
58
+ return acc;
59
+ }, {});
60
+ return cachedFilenameChunkIds;
61
+ }
62
+ exports.getFilenameToChunkIdMap = __webpack_exports__.getFilenameToChunkIdMap;
63
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
64
+ "getFilenameToChunkIdMap"
65
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
66
+ Object.defineProperty(exports, '__esModule', {
67
+ value: true
68
+ });
@@ -0,0 +1,34 @@
1
+ let parsedStackResults;
2
+ let lastKeysCount;
3
+ let cachedFilenameChunkIds;
4
+ function getFilenameToChunkIdMap(stackParser) {
5
+ const chunkIdMap = globalThis._posthogChunkIds;
6
+ if (!chunkIdMap) return null;
7
+ const chunkIdKeys = Object.keys(chunkIdMap);
8
+ if (cachedFilenameChunkIds && chunkIdKeys.length === lastKeysCount) return cachedFilenameChunkIds;
9
+ lastKeysCount = chunkIdKeys.length;
10
+ cachedFilenameChunkIds = chunkIdKeys.reduce((acc, stackKey)=>{
11
+ if (!parsedStackResults) parsedStackResults = {};
12
+ const result = parsedStackResults[stackKey];
13
+ if (result) acc[result[0]] = result[1];
14
+ else {
15
+ const parsedStack = stackParser(stackKey);
16
+ for(let i = parsedStack.length - 1; i >= 0; i--){
17
+ const stackFrame = parsedStack[i];
18
+ const filename = stackFrame?.filename;
19
+ const chunkId = chunkIdMap[stackKey];
20
+ if (filename && chunkId) {
21
+ acc[filename] = chunkId;
22
+ parsedStackResults[stackKey] = [
23
+ filename,
24
+ chunkId
25
+ ];
26
+ break;
27
+ }
28
+ }
29
+ }
30
+ return acc;
31
+ }, {});
32
+ return cachedFilenameChunkIds;
33
+ }
34
+ export { getFilenameToChunkIdMap };
@@ -0,0 +1,5 @@
1
+ import { StackFrame } from './types';
2
+ export declare const MAX_CONTEXTLINES_COLNO: number;
3
+ export declare const MAX_CONTEXTLINES_LINENO: number;
4
+ export declare function addSourceContext(frames: StackFrame[]): Promise<StackFrame[]>;
5
+ //# sourceMappingURL=context-lines.node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-lines.node.d.ts","sourceRoot":"","sources":["../../../src/extensions/error-tracking/context-lines.node.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAWpC,eAAO,MAAM,sBAAsB,EAAE,MAAa,CAAA;AAClD,eAAO,MAAM,uBAAuB,EAAE,MAAc,CAAA;AAIpD,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAuElF"}
@@ -0,0 +1,227 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ MAX_CONTEXTLINES_LINENO: ()=>MAX_CONTEXTLINES_LINENO,
28
+ MAX_CONTEXTLINES_COLNO: ()=>MAX_CONTEXTLINES_COLNO,
29
+ addSourceContext: ()=>addSourceContext
30
+ });
31
+ const external_reduceable_cache_js_namespaceObject = require("./reduceable-cache.js");
32
+ const external_node_fs_namespaceObject = require("node:fs");
33
+ const external_node_readline_namespaceObject = require("node:readline");
34
+ const LRU_FILE_CONTENTS_CACHE = new external_reduceable_cache_js_namespaceObject.ReduceableCache(25);
35
+ const LRU_FILE_CONTENTS_FS_READ_FAILED = new external_reduceable_cache_js_namespaceObject.ReduceableCache(20);
36
+ const DEFAULT_LINES_OF_CONTEXT = 7;
37
+ const MAX_CONTEXTLINES_COLNO = 1000;
38
+ const MAX_CONTEXTLINES_LINENO = 10000;
39
+ async function addSourceContext(frames) {
40
+ const filesToLines = {};
41
+ for(let i = frames.length - 1; i >= 0; i--){
42
+ const frame = frames[i];
43
+ const filename = frame?.filename;
44
+ if (!frame || 'string' != typeof filename || 'number' != typeof frame.lineno || shouldSkipContextLinesForFile(filename) || shouldSkipContextLinesForFrame(frame)) continue;
45
+ const filesToLinesOutput = filesToLines[filename];
46
+ if (!filesToLinesOutput) filesToLines[filename] = [];
47
+ filesToLines[filename].push(frame.lineno);
48
+ }
49
+ const files = Object.keys(filesToLines);
50
+ if (0 == files.length) return frames;
51
+ const readlinePromises = [];
52
+ for (const file of files){
53
+ if (LRU_FILE_CONTENTS_FS_READ_FAILED.get(file)) continue;
54
+ const filesToLineRanges = filesToLines[file];
55
+ if (!filesToLineRanges) continue;
56
+ filesToLineRanges.sort((a, b)=>a - b);
57
+ const ranges = makeLineReaderRanges(filesToLineRanges);
58
+ if (ranges.every((r)=>rangeExistsInContentCache(file, r))) continue;
59
+ const cache = emplace(LRU_FILE_CONTENTS_CACHE, file, {});
60
+ readlinePromises.push(getContextLinesFromFile(file, ranges, cache));
61
+ }
62
+ await Promise.all(readlinePromises).catch(()=>{});
63
+ if (frames && frames.length > 0) addSourceContextToFrames(frames, LRU_FILE_CONTENTS_CACHE);
64
+ LRU_FILE_CONTENTS_CACHE.reduce();
65
+ return frames;
66
+ }
67
+ function getContextLinesFromFile(path, ranges, output) {
68
+ return new Promise((resolve)=>{
69
+ const stream = (0, external_node_fs_namespaceObject.createReadStream)(path);
70
+ const lineReaded = (0, external_node_readline_namespaceObject.createInterface)({
71
+ input: stream
72
+ });
73
+ function destroyStreamAndResolve() {
74
+ stream.destroy();
75
+ resolve();
76
+ }
77
+ let lineNumber = 0;
78
+ let currentRangeIndex = 0;
79
+ const range = ranges[currentRangeIndex];
80
+ if (void 0 === range) return void destroyStreamAndResolve();
81
+ let rangeStart = range[0];
82
+ let rangeEnd = range[1];
83
+ function onStreamError() {
84
+ LRU_FILE_CONTENTS_FS_READ_FAILED.set(path, 1);
85
+ lineReaded.close();
86
+ lineReaded.removeAllListeners();
87
+ destroyStreamAndResolve();
88
+ }
89
+ stream.on('error', onStreamError);
90
+ lineReaded.on('error', onStreamError);
91
+ lineReaded.on('close', destroyStreamAndResolve);
92
+ lineReaded.on('line', (line)=>{
93
+ lineNumber++;
94
+ if (lineNumber < rangeStart) return;
95
+ output[lineNumber] = snipLine(line, 0);
96
+ if (lineNumber >= rangeEnd) {
97
+ if (currentRangeIndex === ranges.length - 1) {
98
+ lineReaded.close();
99
+ lineReaded.removeAllListeners();
100
+ return;
101
+ }
102
+ currentRangeIndex++;
103
+ const range = ranges[currentRangeIndex];
104
+ if (void 0 === range) {
105
+ lineReaded.close();
106
+ lineReaded.removeAllListeners();
107
+ return;
108
+ }
109
+ rangeStart = range[0];
110
+ rangeEnd = range[1];
111
+ }
112
+ });
113
+ });
114
+ }
115
+ function addSourceContextToFrames(frames, cache) {
116
+ for (const frame of frames)if (frame.filename && void 0 === frame.context_line && 'number' == typeof frame.lineno) {
117
+ const contents = cache.get(frame.filename);
118
+ if (void 0 === contents) continue;
119
+ addContextToFrame(frame.lineno, frame, contents);
120
+ }
121
+ }
122
+ function addContextToFrame(lineno, frame, contents) {
123
+ if (void 0 === frame.lineno || void 0 === contents) return;
124
+ frame.pre_context = [];
125
+ for(let i = makeRangeStart(lineno); i < lineno; i++){
126
+ const line = contents[i];
127
+ if (void 0 === line) return void clearLineContext(frame);
128
+ frame.pre_context.push(line);
129
+ }
130
+ if (void 0 === contents[lineno]) return void clearLineContext(frame);
131
+ frame.context_line = contents[lineno];
132
+ const end = makeRangeEnd(lineno);
133
+ frame.post_context = [];
134
+ for(let i = lineno + 1; i <= end; i++){
135
+ const line = contents[i];
136
+ if (void 0 === line) break;
137
+ frame.post_context.push(line);
138
+ }
139
+ }
140
+ function clearLineContext(frame) {
141
+ delete frame.pre_context;
142
+ delete frame.context_line;
143
+ delete frame.post_context;
144
+ }
145
+ function shouldSkipContextLinesForFile(path) {
146
+ return path.startsWith('node:') || path.endsWith('.min.js') || path.endsWith('.min.cjs') || path.endsWith('.min.mjs') || path.startsWith('data:');
147
+ }
148
+ function shouldSkipContextLinesForFrame(frame) {
149
+ if (void 0 !== frame.lineno && frame.lineno > MAX_CONTEXTLINES_LINENO) return true;
150
+ if (void 0 !== frame.colno && frame.colno > MAX_CONTEXTLINES_COLNO) return true;
151
+ return false;
152
+ }
153
+ function rangeExistsInContentCache(file, range) {
154
+ const contents = LRU_FILE_CONTENTS_CACHE.get(file);
155
+ if (void 0 === contents) return false;
156
+ for(let i = range[0]; i <= range[1]; i++)if (void 0 === contents[i]) return false;
157
+ return true;
158
+ }
159
+ function makeLineReaderRanges(lines) {
160
+ if (!lines.length) return [];
161
+ let i = 0;
162
+ const line = lines[0];
163
+ if ('number' != typeof line) return [];
164
+ let current = makeContextRange(line);
165
+ const out = [];
166
+ while(true){
167
+ if (i === lines.length - 1) {
168
+ out.push(current);
169
+ break;
170
+ }
171
+ const next = lines[i + 1];
172
+ if ('number' != typeof next) break;
173
+ if (next <= current[1]) current[1] = next + DEFAULT_LINES_OF_CONTEXT;
174
+ else {
175
+ out.push(current);
176
+ current = makeContextRange(next);
177
+ }
178
+ i++;
179
+ }
180
+ return out;
181
+ }
182
+ function makeContextRange(line) {
183
+ return [
184
+ makeRangeStart(line),
185
+ makeRangeEnd(line)
186
+ ];
187
+ }
188
+ function makeRangeStart(line) {
189
+ return Math.max(1, line - DEFAULT_LINES_OF_CONTEXT);
190
+ }
191
+ function makeRangeEnd(line) {
192
+ return line + DEFAULT_LINES_OF_CONTEXT;
193
+ }
194
+ function emplace(map, key, contents) {
195
+ const value = map.get(key);
196
+ if (void 0 === value) {
197
+ map.set(key, contents);
198
+ return contents;
199
+ }
200
+ return value;
201
+ }
202
+ function snipLine(line, colno) {
203
+ let newLine = line;
204
+ const lineLength = newLine.length;
205
+ if (lineLength <= 150) return newLine;
206
+ if (colno > lineLength) colno = lineLength;
207
+ let start = Math.max(colno - 60, 0);
208
+ if (start < 5) start = 0;
209
+ let end = Math.min(start + 140, lineLength);
210
+ if (end > lineLength - 5) end = lineLength;
211
+ if (end === lineLength) start = Math.max(end - 140, 0);
212
+ newLine = newLine.slice(start, end);
213
+ if (start > 0) newLine = `...${newLine}`;
214
+ if (end < lineLength) newLine += '...';
215
+ return newLine;
216
+ }
217
+ exports.MAX_CONTEXTLINES_COLNO = __webpack_exports__.MAX_CONTEXTLINES_COLNO;
218
+ exports.MAX_CONTEXTLINES_LINENO = __webpack_exports__.MAX_CONTEXTLINES_LINENO;
219
+ exports.addSourceContext = __webpack_exports__.addSourceContext;
220
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
221
+ "MAX_CONTEXTLINES_COLNO",
222
+ "MAX_CONTEXTLINES_LINENO",
223
+ "addSourceContext"
224
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
225
+ Object.defineProperty(exports, '__esModule', {
226
+ value: true
227
+ });