@customerio/cdp-analytics-node 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 (171) hide show
  1. package/LICENSE.MD +22 -0
  2. package/README.md +20 -0
  3. package/dist/cjs/app/analytics-node.js +170 -0
  4. package/dist/cjs/app/analytics-node.js.map +1 -0
  5. package/dist/cjs/app/context.js +13 -0
  6. package/dist/cjs/app/context.js.map +1 -0
  7. package/dist/cjs/app/dispatch-emit.js +37 -0
  8. package/dist/cjs/app/dispatch-emit.js.map +1 -0
  9. package/dist/cjs/app/emitter.js +8 -0
  10. package/dist/cjs/app/emitter.js.map +1 -0
  11. package/dist/cjs/app/event-factory.js +12 -0
  12. package/dist/cjs/app/event-factory.js.map +1 -0
  13. package/dist/cjs/app/event-queue.js +24 -0
  14. package/dist/cjs/app/event-queue.js.map +1 -0
  15. package/dist/cjs/app/settings.js +11 -0
  16. package/dist/cjs/app/settings.js.map +1 -0
  17. package/dist/cjs/app/types/event.js +3 -0
  18. package/dist/cjs/app/types/event.js.map +1 -0
  19. package/dist/cjs/app/types/index.js +7 -0
  20. package/dist/cjs/app/types/index.js.map +1 -0
  21. package/dist/cjs/app/types/params.js +3 -0
  22. package/dist/cjs/app/types/params.js.map +1 -0
  23. package/dist/cjs/app/types/plugin.js +3 -0
  24. package/dist/cjs/app/types/plugin.js.map +1 -0
  25. package/dist/cjs/generated/version.js +6 -0
  26. package/dist/cjs/generated/version.js.map +1 -0
  27. package/dist/cjs/index.js +11 -0
  28. package/dist/cjs/index.js.map +1 -0
  29. package/dist/cjs/lib/abort.js +77 -0
  30. package/dist/cjs/lib/abort.js.map +1 -0
  31. package/dist/cjs/lib/base-64-encode.js +19 -0
  32. package/dist/cjs/lib/base-64-encode.js.map +1 -0
  33. package/dist/cjs/lib/create-url.js +15 -0
  34. package/dist/cjs/lib/create-url.js.map +1 -0
  35. package/dist/cjs/lib/env.js +25 -0
  36. package/dist/cjs/lib/env.js.map +1 -0
  37. package/dist/cjs/lib/extract-promise-parts.js +21 -0
  38. package/dist/cjs/lib/extract-promise-parts.js.map +1 -0
  39. package/dist/cjs/lib/fetch.js +7 -0
  40. package/dist/cjs/lib/fetch.js.map +1 -0
  41. package/dist/cjs/lib/get-message-id.js +14 -0
  42. package/dist/cjs/lib/get-message-id.js.map +1 -0
  43. package/dist/cjs/lib/uuid.js +6 -0
  44. package/dist/cjs/lib/uuid.js.map +1 -0
  45. package/dist/cjs/plugins/customerio/context-batch.js +55 -0
  46. package/dist/cjs/plugins/customerio/context-batch.js.map +1 -0
  47. package/dist/cjs/plugins/customerio/index.js +44 -0
  48. package/dist/cjs/plugins/customerio/index.js.map +1 -0
  49. package/dist/cjs/plugins/customerio/publisher.js +189 -0
  50. package/dist/cjs/plugins/customerio/publisher.js.map +1 -0
  51. package/dist/esm/app/analytics-node.js +166 -0
  52. package/dist/esm/app/analytics-node.js.map +1 -0
  53. package/dist/esm/app/context.js +9 -0
  54. package/dist/esm/app/context.js.map +1 -0
  55. package/dist/esm/app/dispatch-emit.js +33 -0
  56. package/dist/esm/app/dispatch-emit.js.map +1 -0
  57. package/dist/esm/app/emitter.js +4 -0
  58. package/dist/esm/app/emitter.js.map +1 -0
  59. package/dist/esm/app/event-factory.js +8 -0
  60. package/dist/esm/app/event-factory.js.map +1 -0
  61. package/dist/esm/app/event-queue.js +20 -0
  62. package/dist/esm/app/event-queue.js.map +1 -0
  63. package/dist/esm/app/settings.js +7 -0
  64. package/dist/esm/app/settings.js.map +1 -0
  65. package/dist/esm/app/types/event.js +2 -0
  66. package/dist/esm/app/types/event.js.map +1 -0
  67. package/dist/esm/app/types/index.js +4 -0
  68. package/dist/esm/app/types/index.js.map +1 -0
  69. package/dist/esm/app/types/params.js +2 -0
  70. package/dist/esm/app/types/params.js.map +1 -0
  71. package/dist/esm/app/types/plugin.js +2 -0
  72. package/dist/esm/app/types/plugin.js.map +1 -0
  73. package/dist/esm/generated/version.js +3 -0
  74. package/dist/esm/generated/version.js.map +1 -0
  75. package/dist/esm/index.js +6 -0
  76. package/dist/esm/index.js.map +1 -0
  77. package/dist/esm/lib/abort.js +73 -0
  78. package/dist/esm/lib/abort.js.map +1 -0
  79. package/dist/esm/lib/base-64-encode.js +15 -0
  80. package/dist/esm/lib/base-64-encode.js.map +1 -0
  81. package/dist/esm/lib/create-url.js +11 -0
  82. package/dist/esm/lib/create-url.js.map +1 -0
  83. package/dist/esm/lib/env.js +21 -0
  84. package/dist/esm/lib/env.js.map +1 -0
  85. package/dist/esm/lib/extract-promise-parts.js +17 -0
  86. package/dist/esm/lib/extract-promise-parts.js.map +1 -0
  87. package/dist/esm/lib/fetch.js +3 -0
  88. package/dist/esm/lib/fetch.js.map +1 -0
  89. package/dist/esm/lib/get-message-id.js +10 -0
  90. package/dist/esm/lib/get-message-id.js.map +1 -0
  91. package/dist/esm/lib/uuid.js +2 -0
  92. package/dist/esm/lib/uuid.js.map +1 -0
  93. package/dist/esm/plugins/customerio/context-batch.js +51 -0
  94. package/dist/esm/plugins/customerio/context-batch.js.map +1 -0
  95. package/dist/esm/plugins/customerio/index.js +39 -0
  96. package/dist/esm/plugins/customerio/index.js.map +1 -0
  97. package/dist/esm/plugins/customerio/publisher.js +185 -0
  98. package/dist/esm/plugins/customerio/publisher.js.map +1 -0
  99. package/dist/types/app/analytics-node.d.ts +62 -0
  100. package/dist/types/app/analytics-node.d.ts.map +1 -0
  101. package/dist/types/app/context.d.ts +6 -0
  102. package/dist/types/app/context.d.ts.map +1 -0
  103. package/dist/types/app/dispatch-emit.d.ts +7 -0
  104. package/dist/types/app/dispatch-emit.d.ts.map +1 -0
  105. package/dist/types/app/emitter.d.ts +23 -0
  106. package/dist/types/app/emitter.d.ts.map +1 -0
  107. package/dist/types/app/event-factory.d.ts +14 -0
  108. package/dist/types/app/event-factory.d.ts.map +1 -0
  109. package/dist/types/app/event-queue.d.ts +7 -0
  110. package/dist/types/app/event-queue.d.ts.map +1 -0
  111. package/dist/types/app/settings.d.ts +33 -0
  112. package/dist/types/app/settings.d.ts.map +1 -0
  113. package/dist/types/app/types/event.d.ts +7 -0
  114. package/dist/types/app/types/event.d.ts.map +1 -0
  115. package/dist/types/app/types/index.d.ts +4 -0
  116. package/dist/types/app/types/index.d.ts.map +1 -0
  117. package/dist/types/app/types/params.d.ts +60 -0
  118. package/dist/types/app/types/params.d.ts.map +1 -0
  119. package/dist/types/app/types/plugin.d.ts +6 -0
  120. package/dist/types/app/types/plugin.d.ts.map +1 -0
  121. package/dist/types/generated/version.d.ts +2 -0
  122. package/dist/types/generated/version.d.ts.map +1 -0
  123. package/dist/types/index.d.ts +7 -0
  124. package/dist/types/index.d.ts.map +1 -0
  125. package/dist/types/lib/abort.d.ts +6 -0
  126. package/dist/types/lib/abort.d.ts.map +1 -0
  127. package/dist/types/lib/base-64-encode.d.ts +5 -0
  128. package/dist/types/lib/base-64-encode.d.ts.map +1 -0
  129. package/dist/types/lib/create-url.d.ts +8 -0
  130. package/dist/types/lib/create-url.d.ts.map +1 -0
  131. package/dist/types/lib/env.d.ts +3 -0
  132. package/dist/types/lib/env.d.ts.map +1 -0
  133. package/dist/types/lib/extract-promise-parts.d.ts +9 -0
  134. package/dist/types/lib/extract-promise-parts.d.ts.map +1 -0
  135. package/dist/types/lib/fetch.d.ts +2 -0
  136. package/dist/types/lib/fetch.d.ts.map +1 -0
  137. package/dist/types/lib/get-message-id.d.ts +7 -0
  138. package/dist/types/lib/get-message-id.d.ts.map +1 -0
  139. package/dist/types/lib/uuid.d.ts +2 -0
  140. package/dist/types/lib/uuid.d.ts.map +1 -0
  141. package/dist/types/plugins/customerio/context-batch.d.ts +26 -0
  142. package/dist/types/plugins/customerio/context-batch.d.ts.map +1 -0
  143. package/dist/types/plugins/customerio/index.d.ts +13 -0
  144. package/dist/types/plugins/customerio/index.d.ts.map +1 -0
  145. package/dist/types/plugins/customerio/publisher.d.ts +38 -0
  146. package/dist/types/plugins/customerio/publisher.d.ts.map +1 -0
  147. package/package.json +43 -0
  148. package/src/app/analytics-node.ts +295 -0
  149. package/src/app/context.ts +11 -0
  150. package/src/app/dispatch-emit.ts +42 -0
  151. package/src/app/emitter.ts +23 -0
  152. package/src/app/event-factory.ts +20 -0
  153. package/src/app/event-queue.ts +23 -0
  154. package/src/app/settings.ts +39 -0
  155. package/src/app/types/event.ts +7 -0
  156. package/src/app/types/index.ts +3 -0
  157. package/src/app/types/params.ts +74 -0
  158. package/src/app/types/plugin.ts +5 -0
  159. package/src/generated/version.ts +2 -0
  160. package/src/index.ts +17 -0
  161. package/src/lib/abort.ts +77 -0
  162. package/src/lib/base-64-encode.ts +14 -0
  163. package/src/lib/create-url.ts +11 -0
  164. package/src/lib/env.ts +32 -0
  165. package/src/lib/extract-promise-parts.ts +21 -0
  166. package/src/lib/fetch.ts +3 -0
  167. package/src/lib/get-message-id.ts +10 -0
  168. package/src/lib/uuid.ts +1 -0
  169. package/src/plugins/customerio/context-batch.ts +71 -0
  170. package/src/plugins/customerio/index.ts +65 -0
  171. package/src/plugins/customerio/publisher.ts +258 -0
@@ -0,0 +1,14 @@
1
+ import { EventFactory } from '@customerio/cdp-analytics-core';
2
+ import { CustomerioEvent } from './types';
3
+ export interface NodeEventFactory {
4
+ alias(...args: Parameters<EventFactory['alias']>): CustomerioEvent;
5
+ group(...args: Parameters<EventFactory['group']>): CustomerioEvent;
6
+ identify(...args: Parameters<EventFactory['identify']>): CustomerioEvent;
7
+ track(...args: Parameters<EventFactory['track']>): CustomerioEvent;
8
+ page(...args: Parameters<EventFactory['page']>): CustomerioEvent;
9
+ screen(...args: Parameters<EventFactory['screen']>): CustomerioEvent;
10
+ }
11
+ export declare class NodeEventFactory extends EventFactory {
12
+ constructor();
13
+ }
14
+ //# sourceMappingURL=event-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-factory.d.ts","sourceRoot":"","sources":["../../../src/app/event-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAE7D,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAIzC,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,eAAe,CAAA;IAClE,KAAK,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,eAAe,CAAA;IAClE,QAAQ,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,GAAG,eAAe,CAAA;IACxE,KAAK,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,eAAe,CAAA;IAClE,IAAI,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,eAAe,CAAA;IAChE,MAAM,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,GAAG,eAAe,CAAA;CACrE;AAED,qBAAa,gBAAiB,SAAQ,YAAY;;CAIjD"}
@@ -0,0 +1,7 @@
1
+ import { CoreEventQueue } from '@customerio/cdp-analytics-core';
2
+ import type { Plugin } from '../app/types';
3
+ import type { Context } from './context';
4
+ export declare class NodeEventQueue extends CoreEventQueue<Context, Plugin> {
5
+ constructor();
6
+ }
7
+ //# sourceMappingURL=event-queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-queue.d.ts","sourceRoot":"","sources":["../../../src/app/event-queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAiB,MAAM,gCAAgC,CAAA;AAC9E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAgBxC,qBAAa,cAAe,SAAQ,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC;;CAIlE"}
@@ -0,0 +1,33 @@
1
+ export interface AnalyticsSettings {
2
+ /**
3
+ * Key for your workspace
4
+ */
5
+ writeKey: string;
6
+ /**
7
+ /**
8
+ * The base URL of the API. Default: "https://cdp.customer.io"
9
+ */
10
+ host?: string;
11
+ /**
12
+ * The API path route. Default: "/v1/batch"
13
+ */
14
+ path?: string;
15
+ /**
16
+ * The number of times to retry flushing a batch. Default: 3
17
+ */
18
+ maxRetries?: number;
19
+ /**
20
+ * The number of messages to enqueue before flushing. Default: 15
21
+ */
22
+ maxEventsInBatch?: number;
23
+ /**
24
+ * The number of milliseconds to wait before flushing the queue automatically. Default: 10000
25
+ */
26
+ flushInterval?: number;
27
+ /**
28
+ * The maximum number of milliseconds to wait for an http request. Default: 10000
29
+ */
30
+ httpRequestTimeout?: number;
31
+ }
32
+ export declare const validateSettings: (settings: AnalyticsSettings) => void;
33
+ //# sourceMappingURL=settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../src/app/settings.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAChB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,eAAO,MAAM,gBAAgB,aAAc,iBAAiB,SAI3D,CAAA"}
@@ -0,0 +1,7 @@
1
+ import type { CoreCustomerioEvent } from '@customerio/cdp-analytics-core';
2
+ type CustomerioEventType = 'track' | 'page' | 'identify' | 'alias' | 'screen';
3
+ export interface CustomerioEvent extends CoreCustomerioEvent {
4
+ type: CustomerioEventType;
5
+ }
6
+ export {};
7
+ //# sourceMappingURL=event.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../../../src/app/types/event.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AAEzE,KAAK,mBAAmB,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAA;AAE7E,MAAM,WAAW,eAAgB,SAAQ,mBAAmB;IAC1D,IAAI,EAAE,mBAAmB,CAAA;CAC1B"}
@@ -0,0 +1,4 @@
1
+ export * from './params';
2
+ export * from './event';
3
+ export * from './plugin';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/app/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA"}
@@ -0,0 +1,60 @@
1
+ import type { GroupTraits, UserTraits, CoreExtraContext, EventProperties, Integrations, Timestamp } from '@customerio/cdp-analytics-core';
2
+ export type { GroupTraits, UserTraits };
3
+ /**
4
+ * A dictionary of extra context to attach to the call.
5
+ * Note: context differs from traits because it is not attributes of the user itself.
6
+ */
7
+ export interface ExtraContext extends CoreExtraContext {
8
+ }
9
+ /**
10
+ * An ID associated with the user. Note: at least one of userId or anonymousId must be included.
11
+ **/
12
+ type IdentityOptions = {
13
+ userId: string;
14
+ anonymousId?: string;
15
+ } | {
16
+ userId?: string;
17
+ anonymousId: string;
18
+ };
19
+ export type AliasParams = {
20
+ userId: string;
21
+ previousId: string;
22
+ context?: ExtraContext;
23
+ timestamp?: Timestamp;
24
+ integrations?: Integrations;
25
+ };
26
+ export type GroupParams = {
27
+ groupId: string;
28
+ /**
29
+ * Traits are pieces of information you know about a group.
30
+ */
31
+ traits?: GroupTraits;
32
+ context?: ExtraContext;
33
+ timestamp?: Timestamp;
34
+ integrations?: Integrations;
35
+ } & IdentityOptions;
36
+ export type IdentifyParams = {
37
+ /**
38
+ * Traits are pieces of information you know about a group.
39
+ */
40
+ traits?: UserTraits;
41
+ context?: ExtraContext;
42
+ timestamp?: Timestamp;
43
+ integrations?: Integrations;
44
+ } & IdentityOptions;
45
+ export type PageParams = {
46
+ category?: string;
47
+ name?: string;
48
+ properties?: EventProperties;
49
+ timestamp?: Timestamp;
50
+ context?: ExtraContext;
51
+ integrations?: Integrations;
52
+ } & IdentityOptions;
53
+ export type TrackParams = {
54
+ event: string;
55
+ properties?: EventProperties;
56
+ context?: ExtraContext;
57
+ timestamp?: Timestamp;
58
+ integrations?: Integrations;
59
+ } & IdentityOptions;
60
+ //# sourceMappingURL=params.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../../../../src/app/types/params.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,SAAS,EACV,MAAM,gCAAgC,CAAA;AAEvC,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,CAAA;AAEvC;;;GAGG;AACH,MAAM,WAAW,YAAa,SAAQ,gBAAgB;CAAI;AAE1D;;IAEI;AACJ,KAAK,eAAe,GAChB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAA;AAE5C,MAAM,MAAM,WAAW,GAAG;IAExB,MAAM,EAAE,MAAM,CAAA;IAEd,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B,GAAG,eAAe,CAAA;AAEnB,MAAM,MAAM,cAAc,GAAG;IAC3B;;OAEG;IACH,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B,GAAG,eAAe,CAAA;AAEnB,MAAM,MAAM,UAAU,GAAG;IAEvB,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,IAAI,CAAC,EAAE,MAAM,CAAA;IAEb,UAAU,CAAC,EAAE,eAAe,CAAA;IAC5B,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B,GAAG,eAAe,CAAA;AAEnB,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,eAAe,CAAA;IAC5B,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B,GAAG,eAAe,CAAA"}
@@ -0,0 +1,6 @@
1
+ import type { CorePlugin } from '@customerio/cdp-analytics-core';
2
+ import type { Analytics } from '../analytics-node';
3
+ import type { Context } from '../context';
4
+ export interface Plugin extends CorePlugin<Context, Analytics> {
5
+ }
6
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../../src/app/types/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEzC,MAAM,WAAW,MAAO,SAAQ,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC;CAAI"}
@@ -0,0 +1,2 @@
1
+ export declare const version = "1.0.0-beta.22";
2
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../src/generated/version.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,OAAO,kBAAkB,CAAA"}
@@ -0,0 +1,7 @@
1
+ export { Analytics } from './app/analytics-node';
2
+ export { Context } from './app/context';
3
+ export type { Plugin, GroupTraits, UserTraits, TrackParams, IdentifyParams, AliasParams, GroupParams, PageParams, } from './app/types';
4
+ export type { AnalyticsSettings } from './app/settings';
5
+ import { Analytics } from './app/analytics-node';
6
+ export default Analytics;
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,YAAY,EACV,MAAM,EACN,WAAW,EACX,UAAU,EACV,WAAW,EACX,cAAc,EACd,WAAW,EACX,WAAW,EACX,UAAU,GACX,MAAM,aAAa,CAAA;AACpB,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAGvD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,eAAe,SAAS,CAAA"}
@@ -0,0 +1,6 @@
1
+ /// <reference types="node" />
2
+ /**
3
+ * @param timeoutMs - Set a request timeout, after which the request is cancelled.
4
+ */
5
+ export declare const abortSignalAfterTimeout: (timeoutMs: number) => never[] | readonly [globalThis.AbortSignal, NodeJS.Timeout];
6
+ //# sourceMappingURL=abort.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abort.d.ts","sourceRoot":"","sources":["../../../src/lib/abort.ts"],"names":[],"mappings":";AA2DA;;GAEG;AACH,eAAO,MAAM,uBAAuB,cAAe,MAAM,gEAcxD,CAAA"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Base64 encoder that works in browser, worker, node runtimes.
3
+ */
4
+ export declare const b64encode: (str: string) => string;
5
+ //# sourceMappingURL=base-64-encode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-64-encode.d.ts","sourceRoot":"","sources":["../../../src/lib/base-64-encode.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,SAAS,QAAS,MAAM,KAAG,MAUvC,CAAA"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ *
3
+ * @param host e.g. "http://foo.com"
4
+ * @param path e.g. "/bar"
5
+ * @returns "e.g." "http://foo.com/bar"
6
+ */
7
+ export declare const tryCreateFormattedUrl: (host: string, path?: string) => string;
8
+ //# sourceMappingURL=create-url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-url.d.ts","sourceRoot":"","sources":["../../../src/lib/create-url.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,SAAU,MAAM,SAAS,MAAM,WAEhE,CAAA"}
@@ -0,0 +1,3 @@
1
+ export type RuntimeEnv = 'node' | 'browser' | 'web-worker' | 'cloudflare-worker' | 'unknown';
2
+ export declare const detectRuntime: () => RuntimeEnv;
3
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../src/lib/env.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAClB,MAAM,GACN,SAAS,GACT,YAAY,GACZ,mBAAmB,GACnB,SAAS,CAAA;AAEb,eAAO,MAAM,aAAa,QAAO,UAwBhC,CAAA"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Returns a promise and its associated `resolve` and `reject` methods.
3
+ */
4
+ export declare function extractPromiseParts<T = unknown>(): {
5
+ promise: Promise<T>;
6
+ resolve: (value: T) => void;
7
+ reject: (reason?: unknown) => void;
8
+ };
9
+ //# sourceMappingURL=extract-promise-parts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract-promise-parts.d.ts","sourceRoot":"","sources":["../../../src/lib/extract-promise-parts.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,GAAG,OAAO,KAAK;IAClD,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;IACnB,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAA;IAC3B,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;CACnC,CAaA"}
@@ -0,0 +1,2 @@
1
+ export declare const fetch: typeof globalThis.fetch;
2
+ //# sourceMappingURL=fetch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../src/lib/fetch.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK,yBAA6B,CAAA"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * get a unique messageId with a very low chance of collisions
3
+ * using @lukeed/uuid/secure uses the node crypto module, which is the fastest
4
+ * @example "node-next-1668208232027-743be593-7789-4b74-8078-cbcc8894c586"
5
+ */
6
+ export declare const createMessageId: () => string;
7
+ //# sourceMappingURL=get-message-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-message-id.d.ts","sourceRoot":"","sources":["../../../src/lib/get-message-id.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,eAAO,MAAM,eAAe,QAAO,MAElC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { v4 as uuid } from 'uuid';
2
+ //# sourceMappingURL=uuid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uuid.d.ts","sourceRoot":"","sources":["../../../src/lib/uuid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAA"}
@@ -0,0 +1,26 @@
1
+ import type { Context } from '../../app/context';
2
+ import { CustomerioEvent } from '../../app/types';
3
+ interface PendingItem {
4
+ resolver: (ctx: Context) => void;
5
+ context: Context;
6
+ }
7
+ export declare class ContextBatch {
8
+ id: string;
9
+ private items;
10
+ private sizeInBytes;
11
+ private maxEventCount;
12
+ constructor(maxEventCount: number);
13
+ tryAdd(item: PendingItem): {
14
+ success: true;
15
+ } | {
16
+ success: false;
17
+ message: string;
18
+ };
19
+ get length(): number;
20
+ private calculateSize;
21
+ getEvents(): CustomerioEvent[];
22
+ getContexts(): Context[];
23
+ resolveEvents(): void;
24
+ }
25
+ export {};
26
+ //# sourceMappingURL=context-batch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-batch.d.ts","sourceRoot":"","sources":["../../../../src/plugins/customerio/context-batch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAKjD,UAAU,WAAW;IACnB,QAAQ,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAA;IAChC,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,qBAAa,YAAY;IAChB,EAAE,SAAS;IAClB,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,WAAW,CAAI;IACvB,OAAO,CAAC,aAAa,CAAQ;gBAEjB,aAAa,EAAE,MAAM;IAG1B,MAAM,CACX,IAAI,EAAE,WAAW,GAChB;QAAE,OAAO,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,OAAO,EAAE,KAAK,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IA2B1D,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,OAAO,CAAC,aAAa;IAIrB,SAAS,IAAI,eAAe,EAAE;IAK9B,WAAW,IAAI,OAAO,EAAE;IAIxB,aAAa,IAAI,IAAI;CAGtB"}
@@ -0,0 +1,13 @@
1
+ import { Publisher, PublisherProps } from './publisher';
2
+ import { Plugin } from '../../app/types';
3
+ import { NodeEmitter } from '../../app/emitter';
4
+ type DefinedPluginFields = 'name' | 'type' | 'version' | 'isLoaded' | 'load' | 'alias' | 'group' | 'identify' | 'page' | 'screen' | 'track';
5
+ type CustomerioNodePlugin = Plugin & Required<Pick<Plugin, DefinedPluginFields>>;
6
+ export type ConfigureNodePluginProps = PublisherProps;
7
+ export declare function createNodePlugin(publisher: Publisher): CustomerioNodePlugin;
8
+ export declare const createConfiguredNodePlugin: (props: ConfigureNodePluginProps, emitter: NodeEmitter) => {
9
+ publisher: Publisher;
10
+ plugin: CustomerioNodePlugin;
11
+ };
12
+ export {};
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/customerio/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAGvD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAExC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAY/C,KAAK,mBAAmB,GACpB,MAAM,GACN,MAAM,GACN,SAAS,GACT,UAAU,GACV,MAAM,GACN,OAAO,GACP,OAAO,GACP,UAAU,GACV,MAAM,GACN,QAAQ,GACR,OAAO,CAAA;AAEX,KAAK,oBAAoB,GAAG,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAA;AAEhF,MAAM,MAAM,wBAAwB,GAAG,cAAc,CAAA;AAErD,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,oBAAoB,CAmB3E;AAED,eAAO,MAAM,0BAA0B,UAC9B,wBAAwB,WACtB,WAAW;;;CAOrB,CAAA"}
@@ -0,0 +1,38 @@
1
+ import type { Context } from '../../app/context';
2
+ import { NodeEmitter } from '../../app/emitter';
3
+ export interface PublisherProps {
4
+ host?: string;
5
+ path?: string;
6
+ flushInterval: number;
7
+ maxEventsInBatch: number;
8
+ maxRetries: number;
9
+ writeKey: string;
10
+ httpRequestTimeout?: number;
11
+ }
12
+ /**
13
+ * The Publisher is responsible for batching events and sending them to the API.
14
+ */
15
+ export declare class Publisher {
16
+ private pendingFlushTimeout?;
17
+ private _batch?;
18
+ private _flushInterval;
19
+ private _maxEventsInBatch;
20
+ private _maxRetries;
21
+ private _auth;
22
+ private _url;
23
+ private _closeAndFlushPendingItemsCount?;
24
+ private _httpRequestTimeout;
25
+ private _emitter;
26
+ constructor({ host, path, maxRetries, maxEventsInBatch, flushInterval, writeKey, httpRequestTimeout, }: PublisherProps, emitter: NodeEmitter);
27
+ private createBatch;
28
+ private clearBatch;
29
+ flushAfterClose(pendingItemsCount: number): void;
30
+ /**
31
+ * Enqueues the context for future delivery.
32
+ * @param ctx - Context containing an event.
33
+ * @returns a promise that resolves with the context after the event has been delivered.
34
+ */
35
+ enqueue(ctx: Context): Promise<Context>;
36
+ private send;
37
+ }
38
+ //# sourceMappingURL=publisher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publisher.d.ts","sourceRoot":"","sources":["../../../../src/plugins/customerio/publisher.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAKhD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAc/C,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,aAAa,EAAE,MAAM,CAAA;IACrB,gBAAgB,EAAE,MAAM,CAAA;IACxB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,mBAAmB,CAAC,CAA+B;IAC3D,OAAO,CAAC,MAAM,CAAC,CAAc;IAE7B,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,iBAAiB,CAAQ;IACjC,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,IAAI,CAAQ;IACpB,OAAO,CAAC,+BAA+B,CAAC,CAAQ;IAChD,OAAO,CAAC,mBAAmB,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAa;gBAE3B,EACE,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,QAAQ,EACR,kBAAkB,GACnB,EAAE,cAAc,EACjB,OAAO,EAAE,WAAW;IActB,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,UAAU;IAKlB,eAAe,CAAC,iBAAiB,EAAE,MAAM;IAoBzC;;;;OAIG;IACH,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YA4DzB,IAAI;CA4EnB"}
package/package.json ADDED
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "@customerio/cdp-analytics-node",
3
+ "version": "0.0.1",
4
+ "main": "./dist/cjs/index.js",
5
+ "module": "./dist/esm/index.js",
6
+ "types": "./dist/types/index.d.ts",
7
+ "files": [
8
+ "dist/",
9
+ "src/",
10
+ "!**/__tests__/**",
11
+ "!*.tsbuildinfo"
12
+ ],
13
+ "engines": {
14
+ "node": ">=14"
15
+ },
16
+ "scripts": {
17
+ "test": "yarn jest",
18
+ "lint": "yarn concurrently 'yarn:eslint .' 'yarn:tsc --noEmit'",
19
+ "build": "rm -rf dist && yarn concurrently 'yarn:build:*'",
20
+ "build:cjs": "yarn tsc -p tsconfig.build.json --outDir ./dist/cjs --module commonjs",
21
+ "version": "sh scripts/version.sh",
22
+ "build:esm": "yarn tsc -p tsconfig.build.json",
23
+ "watch": "yarn build:esm --watch",
24
+ "watch:test": "yarn test --watch",
25
+ "tsc": "yarn run -T tsc",
26
+ "eslint": "yarn run -T eslint",
27
+ "concurrently": "yarn run -T concurrently",
28
+ "jest": "yarn run -T jest",
29
+ "prepublish": "yarn run -T build"
30
+ },
31
+ "dependencies": {
32
+ "@customerio/cdp-analytics-core": "1.2.2",
33
+ "node-fetch": "^2.6.7",
34
+ "tslib": "^2.4.1",
35
+ "uuid": "^9.0.0"
36
+ },
37
+ "devDependencies": {
38
+ "@internal/config": "0.0.0",
39
+ "@types/node": "^14",
40
+ "@types/uuid": "^9"
41
+ },
42
+ "packageManager": "yarn@3.2.1"
43
+ }