@customerio/cdp-analytics-core 0.0.1

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 (220) hide show
  1. package/LICENSE.MD +22 -0
  2. package/README.md +3 -0
  3. package/dist/cjs/analytics/dispatch.js +54 -0
  4. package/dist/cjs/analytics/dispatch.js.map +1 -0
  5. package/dist/cjs/analytics/index.js +3 -0
  6. package/dist/cjs/analytics/index.js.map +1 -0
  7. package/dist/cjs/callback/index.js +46 -0
  8. package/dist/cjs/callback/index.js.map +1 -0
  9. package/dist/cjs/connection/index.js +16 -0
  10. package/dist/cjs/connection/index.js.map +1 -0
  11. package/dist/cjs/context/index.js +87 -0
  12. package/dist/cjs/context/index.js.map +1 -0
  13. package/dist/cjs/emitter/index.js +66 -0
  14. package/dist/cjs/emitter/index.js.map +1 -0
  15. package/dist/cjs/emitter/interface.js +3 -0
  16. package/dist/cjs/emitter/interface.js.map +1 -0
  17. package/dist/cjs/events/index.js +149 -0
  18. package/dist/cjs/events/index.js.map +1 -0
  19. package/dist/cjs/events/interfaces.js +3 -0
  20. package/dist/cjs/events/interfaces.js.map +1 -0
  21. package/dist/cjs/index.js +25 -0
  22. package/dist/cjs/index.js.map +1 -0
  23. package/dist/cjs/logger/index.js +62 -0
  24. package/dist/cjs/logger/index.js.map +1 -0
  25. package/dist/cjs/plugins/index.js +3 -0
  26. package/dist/cjs/plugins/index.js.map +1 -0
  27. package/dist/cjs/priority-queue/backoff.js +10 -0
  28. package/dist/cjs/priority-queue/backoff.js.map +1 -0
  29. package/dist/cjs/priority-queue/index.js +92 -0
  30. package/dist/cjs/priority-queue/index.js.map +1 -0
  31. package/dist/cjs/queue/delivery.js +69 -0
  32. package/dist/cjs/queue/delivery.js.map +1 -0
  33. package/dist/cjs/queue/event-queue.js +340 -0
  34. package/dist/cjs/queue/event-queue.js.map +1 -0
  35. package/dist/cjs/stats/index.js +96 -0
  36. package/dist/cjs/stats/index.js.map +1 -0
  37. package/dist/cjs/task/task-group.js +24 -0
  38. package/dist/cjs/task/task-group.js.map +1 -0
  39. package/dist/cjs/user/index.js +3 -0
  40. package/dist/cjs/user/index.js.map +1 -0
  41. package/dist/cjs/utils/bind-all.js +18 -0
  42. package/dist/cjs/utils/bind-all.js.map +1 -0
  43. package/dist/cjs/utils/environment.js +12 -0
  44. package/dist/cjs/utils/environment.js.map +1 -0
  45. package/dist/cjs/utils/get-global.js +21 -0
  46. package/dist/cjs/utils/get-global.js.map +1 -0
  47. package/dist/cjs/utils/group-by.js +28 -0
  48. package/dist/cjs/utils/group-by.js.map +1 -0
  49. package/dist/cjs/utils/has-properties.js +13 -0
  50. package/dist/cjs/utils/has-properties.js.map +1 -0
  51. package/dist/cjs/utils/is-plain-object.js +28 -0
  52. package/dist/cjs/utils/is-plain-object.js.map +1 -0
  53. package/dist/cjs/utils/is-thenable.js +15 -0
  54. package/dist/cjs/utils/is-thenable.js.map +1 -0
  55. package/dist/cjs/utils/p-while.js +25 -0
  56. package/dist/cjs/utils/p-while.js.map +1 -0
  57. package/dist/cjs/utils/pick.js +10 -0
  58. package/dist/cjs/utils/pick.js.map +1 -0
  59. package/dist/cjs/utils/ts-helpers.js +3 -0
  60. package/dist/cjs/utils/ts-helpers.js.map +1 -0
  61. package/dist/cjs/validation/assertions.js +41 -0
  62. package/dist/cjs/validation/assertions.js.map +1 -0
  63. package/dist/cjs/validation/helpers.js +26 -0
  64. package/dist/cjs/validation/helpers.js.map +1 -0
  65. package/dist/esm/analytics/dispatch.js +49 -0
  66. package/dist/esm/analytics/dispatch.js.map +1 -0
  67. package/dist/esm/analytics/index.js +2 -0
  68. package/dist/esm/analytics/index.js.map +1 -0
  69. package/dist/esm/callback/index.js +40 -0
  70. package/dist/esm/callback/index.js.map +1 -0
  71. package/dist/esm/connection/index.js +11 -0
  72. package/dist/esm/connection/index.js.map +1 -0
  73. package/dist/esm/context/index.js +84 -0
  74. package/dist/esm/context/index.js.map +1 -0
  75. package/dist/esm/emitter/index.js +63 -0
  76. package/dist/esm/emitter/index.js.map +1 -0
  77. package/dist/esm/emitter/interface.js +2 -0
  78. package/dist/esm/emitter/interface.js.map +1 -0
  79. package/dist/esm/events/index.js +146 -0
  80. package/dist/esm/events/index.js.map +1 -0
  81. package/dist/esm/events/interfaces.js +2 -0
  82. package/dist/esm/events/interfaces.js.map +1 -0
  83. package/dist/esm/index.js +19 -0
  84. package/dist/esm/index.js.map +1 -0
  85. package/dist/esm/logger/index.js +59 -0
  86. package/dist/esm/logger/index.js.map +1 -0
  87. package/dist/esm/plugins/index.js +2 -0
  88. package/dist/esm/plugins/index.js.map +1 -0
  89. package/dist/esm/priority-queue/backoff.js +6 -0
  90. package/dist/esm/priority-queue/backoff.js.map +1 -0
  91. package/dist/esm/priority-queue/index.js +89 -0
  92. package/dist/esm/priority-queue/index.js.map +1 -0
  93. package/dist/esm/queue/delivery.js +64 -0
  94. package/dist/esm/queue/delivery.js.map +1 -0
  95. package/dist/esm/queue/event-queue.js +337 -0
  96. package/dist/esm/queue/event-queue.js.map +1 -0
  97. package/dist/esm/stats/index.js +93 -0
  98. package/dist/esm/stats/index.js.map +1 -0
  99. package/dist/esm/task/task-group.js +20 -0
  100. package/dist/esm/task/task-group.js.map +1 -0
  101. package/dist/esm/user/index.js +2 -0
  102. package/dist/esm/user/index.js.map +1 -0
  103. package/dist/esm/utils/bind-all.js +14 -0
  104. package/dist/esm/utils/bind-all.js.map +1 -0
  105. package/dist/esm/utils/environment.js +7 -0
  106. package/dist/esm/utils/environment.js.map +1 -0
  107. package/dist/esm/utils/get-global.js +17 -0
  108. package/dist/esm/utils/get-global.js.map +1 -0
  109. package/dist/esm/utils/group-by.js +24 -0
  110. package/dist/esm/utils/group-by.js.map +1 -0
  111. package/dist/esm/utils/has-properties.js +9 -0
  112. package/dist/esm/utils/has-properties.js.map +1 -0
  113. package/dist/esm/utils/is-plain-object.js +24 -0
  114. package/dist/esm/utils/is-plain-object.js.map +1 -0
  115. package/dist/esm/utils/is-thenable.js +11 -0
  116. package/dist/esm/utils/is-thenable.js.map +1 -0
  117. package/dist/esm/utils/p-while.js +21 -0
  118. package/dist/esm/utils/p-while.js.map +1 -0
  119. package/dist/esm/utils/pick.js +6 -0
  120. package/dist/esm/utils/pick.js.map +1 -0
  121. package/dist/esm/utils/ts-helpers.js +2 -0
  122. package/dist/esm/utils/ts-helpers.js.map +1 -0
  123. package/dist/esm/validation/assertions.js +37 -0
  124. package/dist/esm/validation/assertions.js.map +1 -0
  125. package/dist/esm/validation/helpers.js +18 -0
  126. package/dist/esm/validation/helpers.js.map +1 -0
  127. package/dist/types/analytics/dispatch.d.ts +20 -0
  128. package/dist/types/analytics/dispatch.d.ts.map +1 -0
  129. package/dist/types/analytics/index.d.ts +12 -0
  130. package/dist/types/analytics/index.d.ts.map +1 -0
  131. package/dist/types/callback/index.d.ts +11 -0
  132. package/dist/types/callback/index.d.ts.map +1 -0
  133. package/dist/types/connection/index.d.ts +3 -0
  134. package/dist/types/connection/index.d.ts.map +1 -0
  135. package/dist/types/context/index.d.ts +44 -0
  136. package/dist/types/context/index.d.ts.map +1 -0
  137. package/dist/types/emitter/index.d.ts +25 -0
  138. package/dist/types/emitter/index.d.ts.map +1 -0
  139. package/dist/types/emitter/interface.d.ts +27 -0
  140. package/dist/types/emitter/interface.d.ts.map +1 -0
  141. package/dist/types/events/index.d.ts +27 -0
  142. package/dist/types/events/index.d.ts.map +1 -0
  143. package/dist/types/events/interfaces.d.ts +373 -0
  144. package/dist/types/events/interfaces.d.ts.map +1 -0
  145. package/dist/types/index.d.ts +19 -0
  146. package/dist/types/index.d.ts.map +1 -0
  147. package/dist/types/logger/index.d.ts +19 -0
  148. package/dist/types/logger/index.d.ts.map +1 -0
  149. package/dist/types/plugins/index.d.ts +25 -0
  150. package/dist/types/plugins/index.d.ts.map +1 -0
  151. package/dist/types/priority-queue/backoff.d.ts +13 -0
  152. package/dist/types/priority-queue/backoff.d.ts.map +1 -0
  153. package/dist/types/priority-queue/index.d.ts +25 -0
  154. package/dist/types/priority-queue/index.d.ts.map +1 -0
  155. package/dist/types/queue/delivery.d.ts +5 -0
  156. package/dist/types/queue/delivery.d.ts.map +1 -0
  157. package/dist/types/queue/event-queue.d.ts +43 -0
  158. package/dist/types/queue/event-queue.d.ts.map +1 -0
  159. package/dist/types/stats/index.d.ts +34 -0
  160. package/dist/types/stats/index.d.ts.map +1 -0
  161. package/dist/types/task/task-group.d.ts +6 -0
  162. package/dist/types/task/task-group.d.ts.map +1 -0
  163. package/dist/types/user/index.d.ts +6 -0
  164. package/dist/types/user/index.d.ts.map +1 -0
  165. package/dist/types/utils/bind-all.d.ts +4 -0
  166. package/dist/types/utils/bind-all.d.ts.map +1 -0
  167. package/dist/types/utils/environment.d.ts +3 -0
  168. package/dist/types/utils/environment.d.ts.map +1 -0
  169. package/dist/types/utils/get-global.d.ts +2 -0
  170. package/dist/types/utils/get-global.d.ts.map +1 -0
  171. package/dist/types/utils/group-by.d.ts +4 -0
  172. package/dist/types/utils/group-by.d.ts.map +1 -0
  173. package/dist/types/utils/has-properties.d.ts +4 -0
  174. package/dist/types/utils/has-properties.d.ts.map +1 -0
  175. package/dist/types/utils/is-plain-object.d.ts +2 -0
  176. package/dist/types/utils/is-plain-object.d.ts.map +1 -0
  177. package/dist/types/utils/is-thenable.d.ts +6 -0
  178. package/dist/types/utils/is-thenable.d.ts.map +1 -0
  179. package/dist/types/utils/p-while.d.ts +2 -0
  180. package/dist/types/utils/p-while.d.ts.map +1 -0
  181. package/dist/types/utils/pick.d.ts +2 -0
  182. package/dist/types/utils/pick.d.ts.map +1 -0
  183. package/dist/types/utils/ts-helpers.d.ts +13 -0
  184. package/dist/types/utils/ts-helpers.d.ts.map +1 -0
  185. package/dist/types/validation/assertions.d.ts +7 -0
  186. package/dist/types/validation/assertions.d.ts.map +1 -0
  187. package/dist/types/validation/helpers.d.ts +7 -0
  188. package/dist/types/validation/helpers.d.ts.map +1 -0
  189. package/package.json +39 -0
  190. package/src/analytics/dispatch.ts +58 -0
  191. package/src/analytics/index.ts +11 -0
  192. package/src/callback/index.ts +51 -0
  193. package/src/connection/index.ts +13 -0
  194. package/src/context/index.ts +123 -0
  195. package/src/emitter/index.ts +65 -0
  196. package/src/emitter/interface.ts +31 -0
  197. package/src/events/index.ts +280 -0
  198. package/src/events/interfaces.ts +447 -0
  199. package/src/index.ts +18 -0
  200. package/src/logger/index.ts +74 -0
  201. package/src/plugins/index.ts +43 -0
  202. package/src/priority-queue/backoff.ts +24 -0
  203. package/src/priority-queue/index.ts +103 -0
  204. package/src/queue/delivery.ts +73 -0
  205. package/src/queue/event-queue.ts +320 -0
  206. package/src/stats/index.ts +88 -0
  207. package/src/task/task-group.ts +31 -0
  208. package/src/user/index.ts +7 -0
  209. package/src/utils/bind-all.ts +19 -0
  210. package/src/utils/environment.ts +7 -0
  211. package/src/utils/get-global.ts +16 -0
  212. package/src/utils/group-by.ts +30 -0
  213. package/src/utils/has-properties.ts +7 -0
  214. package/src/utils/is-plain-object.ts +26 -0
  215. package/src/utils/is-thenable.ts +9 -0
  216. package/src/utils/p-while.ts +12 -0
  217. package/src/utils/pick.ts +8 -0
  218. package/src/utils/ts-helpers.ts +13 -0
  219. package/src/validation/assertions.ts +43 -0
  220. package/src/validation/helpers.ts +27 -0
@@ -0,0 +1,6 @@
1
+ export var pickBy = function (obj, fn) {
2
+ return Object.keys(obj)
3
+ .filter(function (k) { return fn(k, obj[k]); })
4
+ .reduce(function (acc, key) { return ((acc[key] = obj[key]), acc); }, {});
5
+ };
6
+ //# sourceMappingURL=pick.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pick.js","sourceRoot":"","sources":["../../../src/utils/pick.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,MAAM,GAAG,UACpB,GAAM,EACN,EAAgC;IAEhC,OAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,CAAS;SAC7B,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAb,CAAa,CAAC;SAC5B,MAAM,CAAC,UAAC,GAAG,EAAE,GAAG,IAAK,OAAA,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,EAA5B,CAA4B,EAAE,EAAgB,CAAC,CAAA;AACzE,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ts-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-helpers.js","sourceRoot":"","sources":["../../../src/utils/ts-helpers.ts"],"names":[],"mappings":""}
@@ -0,0 +1,37 @@
1
+ import { __extends } from "tslib";
2
+ import { hasUser, isString, isPlainObject } from './helpers';
3
+ var ValidationError = /** @class */ (function (_super) {
4
+ __extends(ValidationError, _super);
5
+ function ValidationError(field, message) {
6
+ var _this = _super.call(this, message) || this;
7
+ _this.field = field;
8
+ return _this;
9
+ }
10
+ return ValidationError;
11
+ }(Error));
12
+ export { ValidationError };
13
+ export function validateEvent(event) {
14
+ if (!event || typeof event !== 'object') {
15
+ throw new ValidationError('event', 'Event is missing');
16
+ }
17
+ if (!isString(event.type)) {
18
+ throw new ValidationError('type', 'type is not a string');
19
+ }
20
+ if (event.type === 'track') {
21
+ if (!isString(event.event)) {
22
+ throw new ValidationError('event', 'Event is not a string');
23
+ }
24
+ if (!isPlainObject(event.properties)) {
25
+ throw new ValidationError('properties', 'properties is not an object');
26
+ }
27
+ }
28
+ if (['group', 'identify'].includes(event.type)) {
29
+ if (!isPlainObject(event.traits)) {
30
+ throw new ValidationError('traits', 'traits is not an object');
31
+ }
32
+ }
33
+ if (!hasUser(event)) {
34
+ throw new ValidationError('userId/anonymousId/previousId/groupId', 'Must have userId or anonymousId or previousId or groupId');
35
+ }
36
+ }
37
+ //# sourceMappingURL=assertions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assertions.js","sourceRoot":"","sources":["../../../src/validation/assertions.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAE5D;IAAqC,mCAAK;IAGxC,yBAAY,KAAa,EAAE,OAAe;QAA1C,YACE,kBAAM,OAAO,CAAC,SAEf;QADC,KAAI,CAAC,KAAK,GAAG,KAAK,CAAA;;IACpB,CAAC;IACH,sBAAC;AAAD,CAAC,AAPD,CAAqC,KAAK,GAOzC;;AAED,MAAM,UAAU,aAAa,CAAC,KAAkC;IAC9D,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QACvC,MAAM,IAAI,eAAe,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAA;KACvD;IAED,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;QACzB,MAAM,IAAI,eAAe,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAA;KAC1D;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;QAC1B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YAC1B,MAAM,IAAI,eAAe,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAA;SAC5D;QACD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;YACpC,MAAM,IAAI,eAAe,CAAC,YAAY,EAAE,6BAA6B,CAAC,CAAA;SACvE;KACF;IAED,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;QAC9C,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;YAChC,MAAM,IAAI,eAAe,CAAC,QAAQ,EAAE,yBAAyB,CAAC,CAAA;SAC/D;KACF;IAED,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACnB,MAAM,IAAI,eAAe,CACvB,uCAAuC,EACvC,0DAA0D,CAC3D,CAAA;KACF;AACH,CAAC"}
@@ -0,0 +1,18 @@
1
+ export function isString(obj) {
2
+ return typeof obj === 'string';
3
+ }
4
+ export function isNumber(obj) {
5
+ return typeof obj === 'number';
6
+ }
7
+ export function isFunction(obj) {
8
+ return typeof obj === 'function';
9
+ }
10
+ export function isPlainObject(obj) {
11
+ return (Object.prototype.toString.call(obj).slice(8, -1).toLowerCase() === 'object');
12
+ }
13
+ export function hasUser(event) {
14
+ var _a, _b, _c;
15
+ var id = (_c = (_b = (_a = event.userId) !== null && _a !== void 0 ? _a : event.anonymousId) !== null && _b !== void 0 ? _b : event.groupId) !== null && _c !== void 0 ? _c : event.previousId;
16
+ return isString(id);
17
+ }
18
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/validation/helpers.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,QAAQ,CAAC,GAAY;IACnC,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,GAAY;IACnC,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAY;IACrC,OAAO,OAAO,GAAG,KAAK,UAAU,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,GAAY;IAEZ,OAAO,CACL,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,QAAQ,CAC5E,CAAA;AACH,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAA0B;;IAChD,IAAM,EAAE,GACN,MAAA,MAAA,MAAA,KAAK,CAAC,MAAM,mCAAI,KAAK,CAAC,WAAW,mCAAI,KAAK,CAAC,OAAO,mCAAI,KAAK,CAAC,UAAU,CAAA;IACxE,OAAO,QAAQ,CAAC,EAAE,CAAC,CAAA;AACrB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { CoreContext } from '../context';
2
+ import { Callback } from '../events/interfaces';
3
+ import { CoreEventQueue } from '../queue/event-queue';
4
+ import { Emitter } from '../emitter';
5
+ export type DispatchOptions<Ctx extends CoreContext = CoreContext> = {
6
+ timeout?: number;
7
+ debug?: boolean;
8
+ callback?: Callback<Ctx>;
9
+ };
10
+ export declare const getDelay: (startTimeInEpochMS: number, timeoutInMS?: number) => number;
11
+ /**
12
+ * Push an event into the dispatch queue and invoke any callbacks.
13
+ *
14
+ * @param event - Event to enqueue.
15
+ * @param queue - Queue to dispatch against.
16
+ * @param emitter - This is typically an instance of "Analytics" -- used for metrics / progress information.
17
+ * @param options
18
+ */
19
+ export declare function dispatch<Ctx extends CoreContext, EQ extends CoreEventQueue<Ctx>>(ctx: Ctx, queue: EQ, emitter: Emitter, options?: DispatchOptions<Ctx>): Promise<Ctx>;
20
+ //# sourceMappingURL=dispatch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../../src/analytics/dispatch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpC,MAAM,MAAM,eAAe,CAAC,GAAG,SAAS,WAAW,GAAG,WAAW,IAAI;IACnE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,QAAQ,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAA;CACzB,CAAA;AAGD,eAAO,MAAM,QAAQ,uBAAwB,MAAM,gBAAgB,MAAM,WAIxE,CAAA;AACD;;;;;;;GAOG;AACH,wBAAsB,QAAQ,CAC5B,GAAG,SAAS,WAAW,EACvB,EAAE,SAAS,cAAc,CAAC,GAAG,CAAC,EAE9B,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,EAAE,EACT,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,eAAe,CAAC,GAAG,CAAC,GAC7B,OAAO,CAAC,GAAG,CAAC,CAuBd"}
@@ -0,0 +1,12 @@
1
+ export interface CoreAnalytics {
2
+ track(...args: unknown[]): unknown;
3
+ page(...args: unknown[]): unknown;
4
+ identify(...args: unknown[]): unknown;
5
+ group(...args: unknown[]): unknown;
6
+ alias(...args: unknown[]): unknown;
7
+ screen(...args: unknown[]): unknown;
8
+ register(...plugins: unknown[]): Promise<unknown>;
9
+ deregister(...plugins: unknown[]): Promise<unknown>;
10
+ readonly VERSION: string;
11
+ }
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/analytics/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;IAClC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;IACjC,QAAQ,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;IACrC,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;IAClC,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;IAClC,MAAM,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;IACnC,QAAQ,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACjD,UAAU,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACnD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB"}
@@ -0,0 +1,11 @@
1
+ import { CoreContext } from '../context';
2
+ import type { Callback } from '../events';
3
+ export declare function pTimeout<T>(promise: Promise<T>, timeout: number): Promise<T>;
4
+ export declare function sleep(timeoutInMs: number): Promise<void>;
5
+ /**
6
+ * @param ctx
7
+ * @param callback - the function to invoke
8
+ * @param delay - aka "timeout". The amount of time in ms to wait before invoking the callback.
9
+ */
10
+ export declare function invokeCallback<Ctx extends CoreContext>(ctx: Ctx, callback: Callback<Ctx>, delay: number): Promise<Ctx>;
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/callback/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEzC,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAa5E;AAED,wBAAgB,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAExD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,SAAS,WAAW,EACpD,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,EACvB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,GAAG,CAAC,CAmBd"}
@@ -0,0 +1,3 @@
1
+ export declare function isOnline(): boolean;
2
+ export declare function isOffline(): boolean;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/connection/index.ts"],"names":[],"mappings":"AAEA,wBAAgB,QAAQ,IAAI,OAAO,CAMlC;AAED,wBAAgB,SAAS,IAAI,OAAO,CAEnC"}
@@ -0,0 +1,44 @@
1
+ import { CoreCustomerioEvent } from '../events/interfaces';
2
+ import { CoreLogger, LogLevel, LogMessage } from '../logger';
3
+ import { CoreStats, CoreMetric } from '../stats';
4
+ export interface SerializedContext {
5
+ id: string;
6
+ event: CoreCustomerioEvent;
7
+ logs: LogMessage[];
8
+ metrics?: CoreMetric[];
9
+ }
10
+ export interface ContextFailedDelivery {
11
+ reason: unknown;
12
+ }
13
+ export interface CancelationOptions {
14
+ retry?: boolean;
15
+ reason?: string;
16
+ type?: string;
17
+ }
18
+ export declare class ContextCancelation {
19
+ retry: boolean;
20
+ type: string;
21
+ reason?: string;
22
+ constructor(options: CancelationOptions);
23
+ }
24
+ export declare abstract class CoreContext<Event extends CoreCustomerioEvent = CoreCustomerioEvent> {
25
+ event: Event;
26
+ logger: CoreLogger;
27
+ stats: CoreStats;
28
+ attempts: number;
29
+ private _failedDelivery?;
30
+ private _id;
31
+ constructor(event: Event, id?: string, stats?: CoreStats, logger?: CoreLogger);
32
+ static system(): void;
33
+ isSame(other: CoreContext): boolean;
34
+ cancel(error?: Error | ContextCancelation): never;
35
+ log(level: LogLevel, message: string, extras?: object): void;
36
+ get id(): string;
37
+ updateEvent(path: string, val: unknown): Event;
38
+ failedDelivery(): ContextFailedDelivery | undefined;
39
+ setFailedDelivery(options: ContextFailedDelivery): void;
40
+ logs(): LogMessage[];
41
+ flush(): void;
42
+ toJSON(): SerializedContext;
43
+ }
44
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/context/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAI1D,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAa,MAAM,UAAU,CAAA;AAE3D,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,mBAAmB,CAAA;IAC1B,IAAI,EAAE,UAAU,EAAE,CAAA;IAClB,OAAO,CAAC,EAAE,UAAU,EAAE,CAAA;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,qBAAa,kBAAkB;IAC7B,KAAK,EAAE,OAAO,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;gBAEH,OAAO,EAAE,kBAAkB;CAKxC;AAED,8BAAsB,WAAW,CAC/B,KAAK,SAAS,mBAAmB,GAAG,mBAAmB;IAEvD,KAAK,EAAE,KAAK,CAAA;IACZ,MAAM,EAAE,UAAU,CAAA;IAClB,KAAK,EAAE,SAAS,CAAA;IAChB,QAAQ,SAAI;IAEZ,OAAO,CAAC,eAAe,CAAC,CAAuB;IAC/C,OAAO,CAAC,GAAG,CAAQ;gBAGjB,KAAK,EAAE,KAAK,EACZ,EAAE,SAAS,EACX,KAAK,GAAE,SAA2B,EAClC,MAAM,aAAmB;IAQ3B,MAAM,CAAC,MAAM,IAAI,IAAI;IAIrB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO;IAInC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,kBAAkB,GAAG,KAAK;IAQjD,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAI5D,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,KAAK;IAc9C,cAAc,IAAI,qBAAqB,GAAG,SAAS;IAInD,iBAAiB,CAAC,OAAO,EAAE,qBAAqB;IAIhD,IAAI,IAAI,UAAU,EAAE;IAIpB,KAAK,IAAI,IAAI;IAKb,MAAM,IAAI,iBAAiB;CAQ5B"}
@@ -0,0 +1,25 @@
1
+ type EventName = string;
2
+ type EventFnArgs = any[];
3
+ type EmitterContract = Record<EventName, EventFnArgs>;
4
+ /**
5
+ * Event Emitter that takes the expected contract as a generic
6
+ * @example
7
+ * ```ts
8
+ * type Contract = {
9
+ * delivery_success: [DeliverySuccessResponse, Metrics],
10
+ * delivery_failure: [DeliveryError]
11
+ * }
12
+ * new Emitter<Contract>()
13
+ * .on('delivery_success', (res, metrics) => ...)
14
+ * .on('delivery_failure', (err) => ...)
15
+ * ```
16
+ */
17
+ export declare class Emitter<Contract extends EmitterContract = EmitterContract> {
18
+ private callbacks;
19
+ on<EventName extends keyof Contract>(event: EventName, callback: (...args: Contract[EventName]) => void): this;
20
+ once<EventName extends keyof Contract>(event: EventName, callback: (...args: Contract[EventName]) => void): this;
21
+ off<EventName extends keyof Contract>(event: EventName, callback: (...args: Contract[EventName]) => void): this;
22
+ emit<EventName extends keyof Contract>(event: EventName, ...args: Contract[EventName]): this;
23
+ }
24
+ export {};
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/emitter/index.ts"],"names":[],"mappings":"AAAA,KAAK,SAAS,GAAG,MAAM,CAAA;AACvB,KAAK,WAAW,GAAG,GAAG,EAAE,CAAA;AACxB,KAAK,eAAe,GAAG,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;AAErD;;;;;;;;;;;;GAYG;AACH,qBAAa,OAAO,CAAC,QAAQ,SAAS,eAAe,GAAG,eAAe;IACrE,OAAO,CAAC,SAAS,CAAwB;IACzC,EAAE,CAAC,SAAS,SAAS,MAAM,QAAQ,EACjC,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,GAC/C,IAAI;IASP,IAAI,CAAC,SAAS,SAAS,MAAM,QAAQ,EACnC,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,GAC/C,IAAI;IAUP,GAAG,CAAC,SAAS,SAAS,MAAM,QAAQ,EAClC,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,GAC/C,IAAI;IAOP,IAAI,CAAC,SAAS,SAAS,MAAM,QAAQ,EACnC,KAAK,EAAE,SAAS,EAChB,GAAG,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,GAC3B,IAAI;CAOR"}
@@ -0,0 +1,27 @@
1
+ import { CoreContext } from '../context';
2
+ /**
3
+ * This is the base contract for all emitted errors. This interface may be extended.
4
+ */
5
+ export interface CoreEmittedError<Ctx extends CoreContext> {
6
+ /**
7
+ * e.g. 'delivery_failure'
8
+ */
9
+ code: string;
10
+ /**
11
+ * Why the error occurred. This can be an actual error object or a just a message.
12
+ */
13
+ reason?: unknown;
14
+ ctx?: Ctx;
15
+ }
16
+ export type CoreEmitterContract<Ctx extends CoreContext, Err extends CoreEmittedError<Ctx> = CoreEmittedError<Ctx>> = {
17
+ alias: [ctx: Ctx];
18
+ track: [ctx: Ctx];
19
+ identify: [ctx: Ctx];
20
+ page: [ctx: Ctx];
21
+ screen: [ctx: Ctx];
22
+ group: [ctx: Ctx];
23
+ register: [pluginNames: string[]];
24
+ deregister: [pluginNames: string[]];
25
+ error: [error: Err];
26
+ };
27
+ //# sourceMappingURL=interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../src/emitter/interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,GAAG,SAAS,WAAW;IACvD;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,GAAG,CAAC,EAAE,GAAG,CAAA;CACV;AAED,MAAM,MAAM,mBAAmB,CAC7B,GAAG,SAAS,WAAW,EACvB,GAAG,SAAS,gBAAgB,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,IACvD;IACF,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IACjB,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IACjB,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IACpB,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IAChB,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IAClB,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IACjB,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC,CAAA;IACjC,UAAU,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC,CAAA;IACnC,KAAK,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;CACpB,CAAA"}
@@ -0,0 +1,27 @@
1
+ export * from './interfaces';
2
+ import { ID, User } from '../user';
3
+ import { Integrations, EventProperties, CoreCustomerioEvent, CoreOptions, UserTraits, GroupTraits } from './interfaces';
4
+ interface EventFactorySettings {
5
+ createMessageId: () => string;
6
+ user?: User;
7
+ }
8
+ export declare class EventFactory {
9
+ createMessageId: EventFactorySettings['createMessageId'];
10
+ user?: User;
11
+ constructor(settings: EventFactorySettings);
12
+ track(event: string, properties?: EventProperties, options?: CoreOptions, globalIntegrations?: Integrations): CoreCustomerioEvent;
13
+ page(category: string | null, page: string | null, properties?: EventProperties, options?: CoreOptions, globalIntegrations?: Integrations): CoreCustomerioEvent;
14
+ screen(category: string | null, screen: string | null, properties?: EventProperties, options?: CoreOptions, globalIntegrations?: Integrations): CoreCustomerioEvent;
15
+ identify(userId: ID, traits?: UserTraits, options?: CoreOptions, globalIntegrations?: Integrations): CoreCustomerioEvent;
16
+ group(groupId: ID, traits?: GroupTraits, options?: CoreOptions, globalIntegrations?: Integrations): CoreCustomerioEvent;
17
+ alias(to: string, from: string | null, // TODO: can we make this undefined?
18
+ options?: CoreOptions, globalIntegrations?: Integrations): CoreCustomerioEvent;
19
+ private baseEvent;
20
+ /**
21
+ * Builds the context part of an event based on "foreign" keys that
22
+ * are provided in the `Options` parameter for an Event
23
+ */
24
+ private context;
25
+ normalize(event: CoreCustomerioEvent): CoreCustomerioEvent;
26
+ }
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/events/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAE5B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EACL,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,WAAW,EAEX,UAAU,EACV,WAAW,EACZ,MAAM,cAAc,CAAA;AAKrB,UAAU,oBAAoB;IAC5B,eAAe,EAAE,MAAM,MAAM,CAAA;IAC7B,IAAI,CAAC,EAAE,IAAI,CAAA;CACZ;AAED,qBAAa,YAAY;IACvB,eAAe,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,CAAA;IACxD,IAAI,CAAC,EAAE,IAAI,CAAA;gBAEC,QAAQ,EAAE,oBAAoB;IAK1C,KAAK,CACH,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,eAAe,EAC5B,OAAO,CAAC,EAAE,WAAW,EACrB,kBAAkB,CAAC,EAAE,YAAY;IAYnC,IAAI,CACF,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,UAAU,CAAC,EAAE,eAAe,EAC5B,OAAO,CAAC,EAAE,WAAW,EACrB,kBAAkB,CAAC,EAAE,YAAY,GAChC,mBAAmB;IAwBtB,MAAM,CACJ,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,UAAU,CAAC,EAAE,eAAe,EAC5B,OAAO,CAAC,EAAE,WAAW,EACrB,kBAAkB,CAAC,EAAE,YAAY,GAChC,mBAAmB;IAsBtB,QAAQ,CACN,MAAM,EAAE,EAAE,EACV,MAAM,CAAC,EAAE,UAAU,EACnB,OAAO,CAAC,EAAE,WAAW,EACrB,kBAAkB,CAAC,EAAE,YAAY,GAChC,mBAAmB;IAWtB,KAAK,CACH,OAAO,EAAE,EAAE,EACX,MAAM,CAAC,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE,WAAW,EACrB,kBAAkB,CAAC,EAAE,YAAY,GAChC,mBAAmB;IAWtB,KAAK,CACH,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,oCAAoC;IACzD,OAAO,CAAC,EAAE,WAAW,EACrB,kBAAkB,CAAC,EAAE,YAAY,GAChC,mBAAmB;IAyBtB,OAAO,CAAC,SAAS;IAqBjB;;;OAGG;IACH,OAAO,CAAC,OAAO;IAsCR,SAAS,CAAC,KAAK,EAAE,mBAAmB,GAAG,mBAAmB;CAkDlE"}
@@ -0,0 +1,373 @@
1
+ import { CoreContext } from '../context';
2
+ import { ID } from '../user';
3
+ import { DeepNullable } from '../utils/ts-helpers';
4
+ export type Callback<Ctx extends CoreContext = CoreContext> = (ctx: Ctx) => Promise<unknown> | unknown;
5
+ export type CustomerioEventType = 'track' | 'page' | 'identify' | 'group' | 'alias' | 'screen';
6
+ export type JSONPrimitive = string | number | boolean | null;
7
+ export type JSONValue = JSONPrimitive | JSONObject | JSONArray;
8
+ export type JSONObject = {
9
+ [member: string]: JSONValue;
10
+ };
11
+ export type JSONArray = JSONValue[];
12
+ export type EventProperties = Record<string, any>;
13
+ export type Integrations = {
14
+ All?: boolean;
15
+ [integration: string]: boolean | JSONObject | undefined;
16
+ };
17
+ export interface CoreOptions {
18
+ integrations?: Integrations;
19
+ timestamp?: Timestamp;
20
+ context?: CoreExtraContext;
21
+ anonymousId?: string;
22
+ userId?: string;
23
+ traits?: Traits;
24
+ [key: string]: any;
25
+ }
26
+ /**
27
+ * Context is a dictionary of extra information that provides useful context about a datapoint, for example the user’s ip address or locale. You should only use Context fields for their intended meaning.
28
+ */
29
+ export interface CoreExtraContext {
30
+ /**
31
+ * This is usually used to flag an .identify() call to just update the trait, rather than "last seen".
32
+ */
33
+ active?: boolean;
34
+ /**
35
+ * Current user's IP address.
36
+ */
37
+ ip?: string;
38
+ /**
39
+ * Locale string for the current user, for example en-US.
40
+ * @example en-US
41
+ */
42
+ locale?: string;
43
+ /**
44
+ * Dictionary of information about the user’s current location.
45
+ */
46
+ location?: {
47
+ /**
48
+ * @example San Francisco
49
+ */
50
+ city?: string;
51
+ /**
52
+ * @example United States
53
+ */
54
+ country?: string;
55
+ /**
56
+ * @example 40.2964197
57
+ */
58
+ latitude?: string;
59
+ /**
60
+ * @example -76.9411617
61
+ */
62
+ longitude?: string;
63
+ /**
64
+ * @example CA
65
+ */
66
+ region?: string;
67
+ /**
68
+ * @example 100
69
+ */
70
+ speed?: number;
71
+ };
72
+ /**
73
+ * Dictionary of information about the current web page.
74
+ */
75
+ page?: {
76
+ /**
77
+ * @example /academy/
78
+ */
79
+ path?: string;
80
+ /**
81
+ * @example https://www.foo.com/
82
+ */
83
+ referrer?: string;
84
+ /**
85
+ * @example projectId=123
86
+ */
87
+ search?: string;
88
+ /**
89
+ * @example Analytics Academy
90
+ */
91
+ title?: string;
92
+ /**
93
+ * @example https://foobar.com/academy/
94
+ */
95
+ url?: string;
96
+ };
97
+ /**
98
+ * User agent of the device making the request.
99
+ */
100
+ userAgent?: string;
101
+ /**
102
+ * Information about the current library.
103
+ *
104
+ * **Automatically filled out by the library.**
105
+ *
106
+ * This type should probably be "never"
107
+ */
108
+ library?: {
109
+ /**
110
+ * @example analytics-node-next/latest
111
+ */
112
+ name: string;
113
+ /**
114
+ * @example "1.43.1"
115
+ */
116
+ version: string;
117
+ };
118
+ /**
119
+ * This is useful in cases where you need to track an event,
120
+ * but also associate information from a previous identify call.
121
+ * You should fill this object the same way you would fill traits in an identify call.
122
+ */
123
+ traits?: Traits;
124
+ /**
125
+ * Dictionary of information about the campaign that resulted in the API call, containing name, source, medium, term, content, and any other custom UTM parameter.
126
+ */
127
+ campaign?: {
128
+ name: string;
129
+ term: string;
130
+ source: string;
131
+ medium: string;
132
+ content: string;
133
+ };
134
+ /**
135
+ * Dictionary of information about the way the user was referred to the website or app.
136
+ */
137
+ referrer?: {
138
+ type?: string;
139
+ name?: string;
140
+ url?: string;
141
+ link?: string;
142
+ id?: string;
143
+ btid?: string;
144
+ urid?: string;
145
+ };
146
+ amp?: {
147
+ id: string;
148
+ };
149
+ [key: string]: any;
150
+ }
151
+ export interface CoreCustomerioEvent {
152
+ messageId?: string;
153
+ type: CustomerioEventType;
154
+ category?: string;
155
+ name?: string;
156
+ properties?: EventProperties;
157
+ traits?: Traits;
158
+ integrations?: Integrations;
159
+ context?: CoreExtraContext;
160
+ options?: CoreOptions;
161
+ userId?: ID;
162
+ anonymousId?: ID;
163
+ groupId?: ID;
164
+ previousId?: ID;
165
+ event?: string;
166
+ writeKey?: string;
167
+ sentAt?: Date;
168
+ _metadata?: CustomerioEventMetadata;
169
+ timestamp?: Timestamp;
170
+ }
171
+ export interface CustomerioEventMetadata {
172
+ failedInitializations?: unknown[];
173
+ bundled?: string[];
174
+ unbundled?: string[];
175
+ nodeVersion?: string;
176
+ bundledConfigIds?: string[];
177
+ unbundledConfigIds?: string[];
178
+ bundledIds?: string[];
179
+ }
180
+ export type Timestamp = Date | string;
181
+ /**
182
+ * A Plan allows users to specify events and which destinations they would like them to be sent to
183
+ */
184
+ export interface Plan {
185
+ track?: TrackPlan;
186
+ identify?: TrackPlan;
187
+ group?: TrackPlan;
188
+ }
189
+ export interface TrackPlan {
190
+ [key: string]: PlanEvent | undefined;
191
+ __default?: PlanEvent;
192
+ }
193
+ export interface PlanEvent {
194
+ /**
195
+ * Whether or not this plan event is enabled
196
+ */
197
+ enabled: boolean;
198
+ /**
199
+ * Which integrations the plan event applies to
200
+ */
201
+ integrations?: {
202
+ [key: string]: boolean;
203
+ };
204
+ }
205
+ type DbId = string | number;
206
+ type PhoneNumber = string | number;
207
+ /**
208
+ * Traits are pieces of information you know about a group.
209
+ */
210
+ type BaseGroupTraits = DeepNullable<{
211
+ /**
212
+ * Street address of a group.
213
+ */
214
+ address?: BaseUserTraits['address'];
215
+ /**
216
+ * URL to an avatar image for the group.
217
+ */
218
+ avatar?: BaseUserTraits['avatar'];
219
+ /**
220
+ * Date the group's account was first created. We recommend ISO-8601 date strings.
221
+ */
222
+ createdAt?: BaseUserTraits['createdAt'];
223
+ /**
224
+ * Description of a group
225
+ */
226
+ description?: BaseUserTraits['description'];
227
+ /**
228
+ * Email address of group.
229
+ */
230
+ email?: BaseUserTraits['email'];
231
+ /**
232
+ * Number of employees of a group, typically used for companies.
233
+ */
234
+ employees?: string | number;
235
+ /**
236
+ * Unique ID in your database for a group.
237
+ */
238
+ id?: BaseUserTraits['id'];
239
+ /**
240
+ * Industry a group is part of.
241
+ */
242
+ industry?: BaseUserTraits['industry'];
243
+ /**
244
+ * Name of a group.
245
+ */
246
+ name?: BaseUserTraits['name'];
247
+ /**
248
+ * Phone number of a group
249
+ */
250
+ phone?: BaseUserTraits['phone'];
251
+ /**
252
+ * Website of a group.
253
+ */
254
+ website?: BaseUserTraits['website'];
255
+ /**
256
+ * Plan that a group is in.
257
+ */
258
+ plan?: BaseUserTraits['plan'];
259
+ }>;
260
+ /**
261
+ * Traits are pieces of information you know about a user.
262
+ */
263
+ type BaseUserTraits = DeepNullable<{
264
+ /**
265
+ * Unique ID in your database for a user
266
+ */
267
+ id?: DbId;
268
+ /**
269
+ * Industry a user works in
270
+ */
271
+ industry?: string;
272
+ /**
273
+ * First name of a user.
274
+ */
275
+ firstName?: string;
276
+ /**
277
+ * Last name of a user.
278
+ */
279
+ lastName?: string;
280
+ /**
281
+ * Full name of a user. If you only pass a first and last name we will automatically fill in the full name for you.
282
+ */
283
+ name?: string;
284
+ /**
285
+ * Phone number of a user
286
+ */
287
+ phone?: PhoneNumber;
288
+ /**
289
+ * Title of a user, usually related to their position at a specific company.
290
+ * @example VP of Engineering
291
+ */
292
+ title?: string;
293
+ /**
294
+ * User's username. This should be unique to each user, like the usernames of Twitter or GitHub.
295
+ */
296
+ username?: string;
297
+ /**
298
+ * Website of a user.
299
+ */
300
+ website?: string;
301
+ /**
302
+ * Street address of a user.
303
+ */
304
+ address?: {
305
+ city?: string;
306
+ country?: string;
307
+ postalCode?: string;
308
+ state?: string;
309
+ street?: string;
310
+ };
311
+ /**
312
+ * Age of a user.
313
+ */
314
+ age?: number;
315
+ /**
316
+ * URL to an avatar image for the user.
317
+ */
318
+ avatar?: string;
319
+ /**
320
+ * User's birthday.
321
+ */
322
+ birthday?: Timestamp;
323
+ /**
324
+ * User's company.
325
+ */
326
+ company?: {
327
+ name?: string;
328
+ id?: DbId;
329
+ industry?: BaseUserTraits['industry'];
330
+ employee_count?: number;
331
+ plan?: BaseUserTraits['plan'];
332
+ };
333
+ /**
334
+ Plan that a user is in.
335
+
336
+ * @example enterprise
337
+ */
338
+ plan?: string;
339
+ /**
340
+ * Date the user's account was first created. We recommend using ISO-8601 date strings.
341
+ */
342
+ createdAt?: Timestamp;
343
+ /**
344
+ * Description of user, such as bio.
345
+ */
346
+ description?: string;
347
+ /**
348
+ * Email address of a user.
349
+ */
350
+ email?: string;
351
+ /**
352
+ * @example female
353
+ */
354
+ gender?: string;
355
+ }>;
356
+ /**
357
+ * Traits are pieces of information you know about a group.
358
+ */
359
+ export type GroupTraits = BaseGroupTraits & {
360
+ [customTrait: string]: any;
361
+ };
362
+ /**
363
+ * Traits are pieces of information you know about a user.
364
+ */
365
+ export type UserTraits = BaseUserTraits & {
366
+ [customTrait: string]: any;
367
+ };
368
+ /**
369
+ * Traits are pieces of information you know about a user or group.
370
+ */
371
+ export type Traits = UserTraits | GroupTraits;
372
+ export {};
373
+ //# sourceMappingURL=interfaces.d.ts.map