posthog-js 1.87.2 → 1.87.4

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 (100) hide show
  1. package/dist/array.full.js +1 -1
  2. package/dist/array.full.js.map +1 -1
  3. package/dist/array.js +1 -1
  4. package/dist/array.js.map +1 -1
  5. package/dist/es.js +1 -1
  6. package/dist/es.js.map +1 -1
  7. package/dist/exception-autocapture.js +1 -1
  8. package/dist/exception-autocapture.js.map +1 -1
  9. package/dist/module.js +1 -1
  10. package/dist/module.js.map +1 -1
  11. package/dist/recorder-v2.js +2 -2
  12. package/dist/recorder-v2.js.map +1 -1
  13. package/dist/recorder.js +1 -1
  14. package/dist/recorder.js.map +1 -1
  15. package/dist/surveys.js +1 -1
  16. package/dist/surveys.js.map +1 -1
  17. package/lib/package.json +1 -1
  18. package/lib/src/autocapture-utils.js +3 -1
  19. package/lib/src/autocapture-utils.js.map +1 -1
  20. package/lib/src/autocapture.js +3 -1
  21. package/lib/src/autocapture.js.map +1 -1
  22. package/lib/src/decide.js +3 -1
  23. package/lib/src/decide.js.map +1 -1
  24. package/lib/src/extensions/exception-autocapture/error-conversion.js +1 -1
  25. package/lib/src/extensions/exception-autocapture/error-conversion.js.map +1 -1
  26. package/lib/src/extensions/exception-autocapture/index.js +3 -1
  27. package/lib/src/extensions/exception-autocapture/index.js.map +1 -1
  28. package/lib/src/extensions/exception-autocapture/stack-trace.js +1 -1
  29. package/lib/src/extensions/exception-autocapture/stack-trace.js.map +1 -1
  30. package/lib/src/extensions/exception-autocapture/type-checking.js +1 -1
  31. package/lib/src/extensions/exception-autocapture/type-checking.js.map +1 -1
  32. package/lib/src/extensions/replay/sessionrecording-utils.js +1 -1
  33. package/lib/src/extensions/replay/sessionrecording-utils.js.map +1 -1
  34. package/lib/src/extensions/replay/sessionrecording.js +3 -1
  35. package/lib/src/extensions/replay/sessionrecording.js.map +1 -1
  36. package/lib/src/extensions/replay/web-performance.js +3 -1
  37. package/lib/src/extensions/replay/web-performance.js.map +1 -1
  38. package/lib/src/extensions/segment-integration.d.ts +18 -0
  39. package/lib/src/extensions/segment-integration.js +1 -19
  40. package/lib/src/extensions/segment-integration.js.map +1 -1
  41. package/lib/src/extensions/surveys.js +1 -1
  42. package/lib/src/extensions/surveys.js.map +1 -1
  43. package/lib/src/extensions/toolbar.js +4 -1
  44. package/lib/src/extensions/toolbar.js.map +1 -1
  45. package/lib/src/gdpr-utils.js +4 -1
  46. package/lib/src/gdpr-utils.js.map +1 -1
  47. package/lib/src/loader-exception-autocapture.js +1 -1
  48. package/lib/src/loader-exception-autocapture.js.map +1 -1
  49. package/lib/src/loader-recorder-v2.js +1 -1
  50. package/lib/src/loader-recorder-v2.js.map +1 -1
  51. package/lib/src/loader-recorder.js +1 -1
  52. package/lib/src/loader-recorder.js.map +1 -1
  53. package/lib/src/loader-surveys.js +1 -1
  54. package/lib/src/loader-surveys.js.map +1 -1
  55. package/lib/src/page-view.js +1 -1
  56. package/lib/src/page-view.js.map +1 -1
  57. package/lib/src/posthog-core.js +9 -4
  58. package/lib/src/posthog-core.js.map +1 -1
  59. package/lib/src/posthog-featureflags.js +4 -2
  60. package/lib/src/posthog-featureflags.js.map +1 -1
  61. package/lib/src/posthog-persistence.js +4 -1
  62. package/lib/src/posthog-persistence.js.map +1 -1
  63. package/lib/src/posthog-surveys.js +1 -1
  64. package/lib/src/posthog-surveys.js.map +1 -1
  65. package/lib/src/rate-limiter.js +6 -2
  66. package/lib/src/rate-limiter.js.map +1 -1
  67. package/lib/src/request-queue.js +2 -1
  68. package/lib/src/request-queue.js.map +1 -1
  69. package/lib/src/retry-queue.js +2 -1
  70. package/lib/src/retry-queue.js.map +1 -1
  71. package/lib/src/send-request.js +10 -5
  72. package/lib/src/send-request.js.map +1 -1
  73. package/lib/src/sessionid.js +3 -1
  74. package/lib/src/sessionid.js.map +1 -1
  75. package/lib/src/storage.js +3 -1
  76. package/lib/src/storage.js.map +1 -1
  77. package/lib/src/utils/event-utils.d.ts +29 -0
  78. package/lib/src/utils/event-utils.js +298 -0
  79. package/lib/src/utils/event-utils.js.map +1 -0
  80. package/lib/src/utils/globals.d.ts +7 -0
  81. package/lib/src/utils/globals.js +12 -0
  82. package/lib/src/utils/globals.js.map +1 -0
  83. package/lib/src/utils/index.d.ts +37 -0
  84. package/lib/src/utils/index.js +463 -0
  85. package/lib/src/utils/index.js.map +1 -0
  86. package/lib/src/utils/logger.d.ts +8 -0
  87. package/lib/src/utils/logger.js +78 -0
  88. package/lib/src/utils/logger.js.map +1 -0
  89. package/lib/src/utils/request-utils.d.ts +5 -0
  90. package/lib/src/utils/request-utils.js +59 -0
  91. package/lib/src/utils/request-utils.js.map +1 -0
  92. package/lib/src/utils/type-utils.d.ts +12 -0
  93. package/lib/src/utils/type-utils.js +64 -0
  94. package/lib/src/utils/type-utils.js.map +1 -0
  95. package/lib/src/uuidv7.js +2 -1
  96. package/lib/src/uuidv7.js.map +1 -1
  97. package/package.json +1 -1
  98. package/lib/src/utils.d.ts +0 -92
  99. package/lib/src/utils.js +0 -942
  100. package/lib/src/utils.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"loader-surveys.js","sourceRoot":"","sources":["../../src/loader-surveys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEtC,IAAM,GAAG,GAA+B,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,EAAoB,CAAC,CAAC,CAAC,MAAM,CAE5F;AAAC,GAAW,CAAC,wBAAwB,GAAG,eAAe,CAAA;AAExD,eAAe,eAAe,CAAA","sourcesContent":["import { generateSurveys } from './extensions/surveys'\nimport { _isUndefined } from './utils'\n\nconst win: Window & typeof globalThis = _isUndefined(window) ? ({} as typeof window) : window\n\n;(win as any).extendPostHogWithSurveys = generateSurveys\n\nexport default generateSurveys\n"]}
1
+ {"version":3,"file":"loader-surveys.js","sourceRoot":"","sources":["../../src/loader-surveys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD,IAAM,GAAG,GAA+B,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,EAAoB,CAAC,CAAC,CAAC,MAAM,CAE5F;AAAC,GAAW,CAAC,wBAAwB,GAAG,eAAe,CAAA;AAExD,eAAe,eAAe,CAAA","sourcesContent":["import { generateSurveys } from './extensions/surveys'\n\nimport { _isUndefined } from './utils/type-utils'\n\nconst win: Window & typeof globalThis = _isUndefined(window) ? ({} as typeof window) : window\n\n;(win as any).extendPostHogWithSurveys = generateSurveys\n\nexport default generateSurveys\n"]}
@@ -9,7 +9,7 @@ var __assign = (this && this.__assign) || function () {
9
9
  };
10
10
  return __assign.apply(this, arguments);
11
11
  };
12
- import { window } from './utils';
12
+ import { window } from './utils/globals';
13
13
  var PageViewManager = /** @class */ (function () {
14
14
  function PageViewManager() {
15
15
  var _this = this;
@@ -1 +1 @@
1
- {"version":3,"file":"page-view.js","sourceRoot":"","sources":["../../src/page-view.ts"],"names":[],"mappings":"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","sourcesContent":["import { window } from './utils'\n\ninterface PageViewData {\n pathname: string\n // scroll is how far down the page the user has scrolled,\n // content is how far down the page the user can view content\n // (e.g. if the page is 1000 tall, but the user's screen is only 500 tall,\n // and they don't scroll at all, then scroll is 0 and content is 500)\n maxScrollHeight?: number\n maxScrollY?: number\n lastScrollY?: number\n maxContentHeight?: number\n maxContentY?: number\n lastContentY?: number\n}\n\ninterface ScrollProperties {\n $prev_pageview_last_scroll?: number\n $prev_pageview_last_scroll_percentage?: number\n $prev_pageview_max_scroll?: number\n $prev_pageview_max_scroll_percentage?: number\n $prev_pageview_last_content?: number\n $prev_pageview_last_content_percentage?: number\n $prev_pageview_max_content?: number\n $prev_pageview_max_content_percentage?: number\n}\n\ninterface PageViewEventProperties extends ScrollProperties {\n $prev_pageview_pathname?: string\n}\n\nexport class PageViewManager {\n _pageViewData: PageViewData | undefined\n _hasSeenPageView = false\n\n _createPageViewData(): PageViewData {\n return {\n pathname: window.location.pathname,\n }\n }\n\n doPageView(): PageViewEventProperties {\n let prevPageViewData: PageViewData | undefined\n // if there were events created before the first PageView, we would have created a\n // pageViewData for them. If this happened, we don't want to create a new pageViewData\n if (!this._hasSeenPageView) {\n this._hasSeenPageView = true\n prevPageViewData = undefined\n if (!this._pageViewData) {\n this._pageViewData = this._createPageViewData()\n }\n } else {\n prevPageViewData = this._pageViewData\n this._pageViewData = this._createPageViewData()\n }\n\n // update the scroll properties for the new page, but wait until the next tick\n // of the event loop\n setTimeout(this._updateScrollData, 0)\n\n return {\n $prev_pageview_pathname: prevPageViewData?.pathname,\n ...this._calculatePrevPageScrollProperties(prevPageViewData),\n }\n }\n\n doPageLeave(): PageViewEventProperties {\n const prevPageViewData = this._pageViewData\n return {\n $prev_pageview_pathname: prevPageViewData?.pathname,\n ...this._calculatePrevPageScrollProperties(prevPageViewData),\n }\n }\n\n _calculatePrevPageScrollProperties(prevPageViewData: PageViewData | undefined): ScrollProperties {\n if (\n !prevPageViewData ||\n prevPageViewData.maxScrollHeight == null ||\n prevPageViewData.lastScrollY == null ||\n prevPageViewData.maxScrollY == null ||\n prevPageViewData.maxContentHeight == null ||\n prevPageViewData.lastContentY == null ||\n prevPageViewData.maxContentY == null\n ) {\n return {}\n }\n\n let { maxScrollHeight, lastScrollY, maxScrollY, maxContentHeight, lastContentY, maxContentY } = prevPageViewData\n\n // Use ceil, so that e.g. scrolling 999.5px of a 1000px page is considered 100% scrolled\n maxScrollHeight = Math.ceil(maxScrollHeight)\n lastScrollY = Math.ceil(lastScrollY)\n maxScrollY = Math.ceil(maxScrollY)\n maxContentHeight = Math.ceil(maxContentHeight)\n lastContentY = Math.ceil(lastContentY)\n maxContentY = Math.ceil(maxContentY)\n\n // if the maximum scroll height is near 0, then the percentage is 1\n const lastScrollPercentage = maxScrollHeight <= 1 ? 1 : clamp(lastScrollY / maxScrollHeight, 0, 1)\n const maxScrollPercentage = maxScrollHeight <= 1 ? 1 : clamp(maxScrollY / maxScrollHeight, 0, 1)\n const lastContentPercentage = maxContentHeight <= 1 ? 1 : clamp(lastContentY / maxContentHeight, 0, 1)\n const maxContentPercentage = maxContentHeight <= 1 ? 1 : clamp(maxContentY / maxContentHeight, 0, 1)\n\n return {\n $prev_pageview_last_scroll: lastScrollY,\n $prev_pageview_last_scroll_percentage: lastScrollPercentage,\n $prev_pageview_max_scroll: maxScrollY,\n $prev_pageview_max_scroll_percentage: maxScrollPercentage,\n $prev_pageview_last_content: lastContentY,\n $prev_pageview_last_content_percentage: lastContentPercentage,\n $prev_pageview_max_content: maxContentY,\n $prev_pageview_max_content_percentage: maxContentPercentage,\n }\n }\n\n _updateScrollData = () => {\n if (!this._pageViewData) {\n this._pageViewData = this._createPageViewData()\n }\n const pageViewData = this._pageViewData\n\n const scrollY = this._scrollY()\n const scrollHeight = this._scrollHeight()\n const contentY = this._contentY()\n const contentHeight = this._contentHeight()\n\n pageViewData.lastScrollY = scrollY\n pageViewData.maxScrollY = Math.max(scrollY, pageViewData.maxScrollY ?? 0)\n pageViewData.maxScrollHeight = Math.max(scrollHeight, pageViewData.maxScrollHeight ?? 0)\n\n pageViewData.lastContentY = contentY\n pageViewData.maxContentY = Math.max(contentY, pageViewData.maxContentY ?? 0)\n pageViewData.maxContentHeight = Math.max(contentHeight, pageViewData.maxContentHeight ?? 0)\n }\n\n startMeasuringScrollPosition() {\n window.addEventListener('scroll', this._updateScrollData)\n window.addEventListener('scrollend', this._updateScrollData)\n window.addEventListener('resize', this._updateScrollData)\n }\n\n stopMeasuringScrollPosition() {\n window.removeEventListener('scroll', this._updateScrollData)\n window.removeEventListener('scrollend', this._updateScrollData)\n window.removeEventListener('resize', this._updateScrollData)\n }\n\n _scrollHeight(): number {\n return Math.max(0, window.document.documentElement.scrollHeight - window.document.documentElement.clientHeight)\n }\n\n _scrollY(): number {\n return window.scrollY || window.pageYOffset || window.document.documentElement.scrollTop || 0\n }\n\n _contentHeight(): number {\n return window.document.documentElement.scrollHeight || 0\n }\n\n _contentY(): number {\n const clientHeight = window.document.documentElement.clientHeight || 0\n return this._scrollY() + clientHeight\n }\n}\n\nfunction clamp(x: number, min: number, max: number) {\n return Math.max(min, Math.min(x, max))\n}\n"]}
1
+ {"version":3,"file":"page-view.js","sourceRoot":"","sources":["../../src/page-view.ts"],"names":[],"mappings":"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","sourcesContent":["import { window } from './utils/globals'\n\ninterface PageViewData {\n pathname: string\n // scroll is how far down the page the user has scrolled,\n // content is how far down the page the user can view content\n // (e.g. if the page is 1000 tall, but the user's screen is only 500 tall,\n // and they don't scroll at all, then scroll is 0 and content is 500)\n maxScrollHeight?: number\n maxScrollY?: number\n lastScrollY?: number\n maxContentHeight?: number\n maxContentY?: number\n lastContentY?: number\n}\n\ninterface ScrollProperties {\n $prev_pageview_last_scroll?: number\n $prev_pageview_last_scroll_percentage?: number\n $prev_pageview_max_scroll?: number\n $prev_pageview_max_scroll_percentage?: number\n $prev_pageview_last_content?: number\n $prev_pageview_last_content_percentage?: number\n $prev_pageview_max_content?: number\n $prev_pageview_max_content_percentage?: number\n}\n\ninterface PageViewEventProperties extends ScrollProperties {\n $prev_pageview_pathname?: string\n}\n\nexport class PageViewManager {\n _pageViewData: PageViewData | undefined\n _hasSeenPageView = false\n\n _createPageViewData(): PageViewData {\n return {\n pathname: window.location.pathname,\n }\n }\n\n doPageView(): PageViewEventProperties {\n let prevPageViewData: PageViewData | undefined\n // if there were events created before the first PageView, we would have created a\n // pageViewData for them. If this happened, we don't want to create a new pageViewData\n if (!this._hasSeenPageView) {\n this._hasSeenPageView = true\n prevPageViewData = undefined\n if (!this._pageViewData) {\n this._pageViewData = this._createPageViewData()\n }\n } else {\n prevPageViewData = this._pageViewData\n this._pageViewData = this._createPageViewData()\n }\n\n // update the scroll properties for the new page, but wait until the next tick\n // of the event loop\n setTimeout(this._updateScrollData, 0)\n\n return {\n $prev_pageview_pathname: prevPageViewData?.pathname,\n ...this._calculatePrevPageScrollProperties(prevPageViewData),\n }\n }\n\n doPageLeave(): PageViewEventProperties {\n const prevPageViewData = this._pageViewData\n return {\n $prev_pageview_pathname: prevPageViewData?.pathname,\n ...this._calculatePrevPageScrollProperties(prevPageViewData),\n }\n }\n\n _calculatePrevPageScrollProperties(prevPageViewData: PageViewData | undefined): ScrollProperties {\n if (\n !prevPageViewData ||\n prevPageViewData.maxScrollHeight == null ||\n prevPageViewData.lastScrollY == null ||\n prevPageViewData.maxScrollY == null ||\n prevPageViewData.maxContentHeight == null ||\n prevPageViewData.lastContentY == null ||\n prevPageViewData.maxContentY == null\n ) {\n return {}\n }\n\n let { maxScrollHeight, lastScrollY, maxScrollY, maxContentHeight, lastContentY, maxContentY } = prevPageViewData\n\n // Use ceil, so that e.g. scrolling 999.5px of a 1000px page is considered 100% scrolled\n maxScrollHeight = Math.ceil(maxScrollHeight)\n lastScrollY = Math.ceil(lastScrollY)\n maxScrollY = Math.ceil(maxScrollY)\n maxContentHeight = Math.ceil(maxContentHeight)\n lastContentY = Math.ceil(lastContentY)\n maxContentY = Math.ceil(maxContentY)\n\n // if the maximum scroll height is near 0, then the percentage is 1\n const lastScrollPercentage = maxScrollHeight <= 1 ? 1 : clamp(lastScrollY / maxScrollHeight, 0, 1)\n const maxScrollPercentage = maxScrollHeight <= 1 ? 1 : clamp(maxScrollY / maxScrollHeight, 0, 1)\n const lastContentPercentage = maxContentHeight <= 1 ? 1 : clamp(lastContentY / maxContentHeight, 0, 1)\n const maxContentPercentage = maxContentHeight <= 1 ? 1 : clamp(maxContentY / maxContentHeight, 0, 1)\n\n return {\n $prev_pageview_last_scroll: lastScrollY,\n $prev_pageview_last_scroll_percentage: lastScrollPercentage,\n $prev_pageview_max_scroll: maxScrollY,\n $prev_pageview_max_scroll_percentage: maxScrollPercentage,\n $prev_pageview_last_content: lastContentY,\n $prev_pageview_last_content_percentage: lastContentPercentage,\n $prev_pageview_max_content: maxContentY,\n $prev_pageview_max_content_percentage: maxContentPercentage,\n }\n }\n\n _updateScrollData = () => {\n if (!this._pageViewData) {\n this._pageViewData = this._createPageViewData()\n }\n const pageViewData = this._pageViewData\n\n const scrollY = this._scrollY()\n const scrollHeight = this._scrollHeight()\n const contentY = this._contentY()\n const contentHeight = this._contentHeight()\n\n pageViewData.lastScrollY = scrollY\n pageViewData.maxScrollY = Math.max(scrollY, pageViewData.maxScrollY ?? 0)\n pageViewData.maxScrollHeight = Math.max(scrollHeight, pageViewData.maxScrollHeight ?? 0)\n\n pageViewData.lastContentY = contentY\n pageViewData.maxContentY = Math.max(contentY, pageViewData.maxContentY ?? 0)\n pageViewData.maxContentHeight = Math.max(contentHeight, pageViewData.maxContentHeight ?? 0)\n }\n\n startMeasuringScrollPosition() {\n window.addEventListener('scroll', this._updateScrollData)\n window.addEventListener('scrollend', this._updateScrollData)\n window.addEventListener('resize', this._updateScrollData)\n }\n\n stopMeasuringScrollPosition() {\n window.removeEventListener('scroll', this._updateScrollData)\n window.removeEventListener('scrollend', this._updateScrollData)\n window.removeEventListener('resize', this._updateScrollData)\n }\n\n _scrollHeight(): number {\n return Math.max(0, window.document.documentElement.scrollHeight - window.document.documentElement.clientHeight)\n }\n\n _scrollY(): number {\n return window.scrollY || window.pageYOffset || window.document.documentElement.scrollTop || 0\n }\n\n _contentHeight(): number {\n return window.document.documentElement.scrollHeight || 0\n }\n\n _contentY(): number {\n const clientHeight = window.document.documentElement.clientHeight || 0\n return this._scrollY() + clientHeight\n }\n}\n\nfunction clamp(x: number, min: number, max: number) {\n return Math.max(min, Math.min(x, max))\n}\n"]}
@@ -46,7 +46,8 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
46
46
  return to.concat(ar || Array.prototype.slice.call(from));
47
47
  };
48
48
  import Config from './config';
49
- import { _copyAndTruncateStrings, _each, _eachArray, _extend, _info, _isArray, _isBlockedUA, _isEmptyObject, _isObject, _isUndefined, _register_event, _safewrap_class, document, userAgent, window, logger, isCrossDomainCookie, _isString, _isFunction, } from './utils';
49
+ import { _copyAndTruncateStrings, _each, _eachArray, _extend, _isBlockedUA, _register_event, _safewrap_class, isCrossDomainCookie, } from './utils';
50
+ import { window } from './utils/globals';
50
51
  import { autocapture } from './autocapture';
51
52
  import { PostHogFeatureFlags } from './posthog-featureflags';
52
53
  import { PostHogPersistence } from './posthog-persistence';
@@ -68,6 +69,10 @@ import { PageViewManager } from './page-view';
68
69
  import { PostHogSurveys } from './posthog-surveys';
69
70
  import { RateLimiter } from './rate-limiter';
70
71
  import { uuidv7 } from './uuidv7';
72
+ import { _isArray, _isEmptyObject, _isFunction, _isObject, _isString, _isUndefined } from './utils/type-utils';
73
+ import { _info } from './utils/event-utils';
74
+ import { logger } from './utils/logger';
75
+ import { document, userAgent } from './utils/globals';
71
76
  /*
72
77
  SIMPLE STYLE GUIDE:
73
78
 
@@ -736,7 +741,7 @@ var PostHog = /** @class */ (function () {
736
741
  // While developing, a developer might purposefully _not_ call init(),
737
742
  // in this case, we would like capture to be a noop.
738
743
  if (!this.__loaded || !this.sessionPersistence || !this._requestQueue) {
739
- return logger.unintializedWarning('posthog.capture');
744
+ return logger.uninitializedWarning('posthog.capture');
740
745
  }
741
746
  if (userOptedOut(this)) {
742
747
  return;
@@ -1114,7 +1119,7 @@ var PostHog = /** @class */ (function () {
1114
1119
  */
1115
1120
  PostHog.prototype.identify = function (new_distinct_id, userPropertiesToSet, userPropertiesToSetOnce) {
1116
1121
  if (!this.__loaded || !this.persistence) {
1117
- return logger.unintializedWarning('posthog.identify');
1122
+ return logger.uninitializedWarning('posthog.identify');
1118
1123
  }
1119
1124
  //if the new_distinct_id has not been set ignore the identify event
1120
1125
  if (!new_distinct_id) {
@@ -1257,7 +1262,7 @@ var PostHog = /** @class */ (function () {
1257
1262
  PostHog.prototype.reset = function (reset_device_id) {
1258
1263
  var _a, _b, _c, _d;
1259
1264
  if (!this.__loaded) {
1260
- return logger.unintializedWarning('posthog.reset');
1265
+ return logger.uninitializedWarning('posthog.reset');
1261
1266
  }
1262
1267
  var device_id = this.get_property('$device_id');
1263
1268
  (_a = this.persistence) === null || _a === void 0 ? void 0 : _a.clear();