@nlabs/metropolisjs 1.0.0 → 1.0.2

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 (221) hide show
  1. package/lib/actions/appActions/appActions.d.ts +0 -1
  2. package/lib/actions/awsRumActions/awsRumActions.d.ts +4 -4
  3. package/lib/actions/awsRumActions/awsRumActions.js +81 -29
  4. package/lib/actions/connectionActions/connectionActions.d.ts +0 -1
  5. package/lib/actions/contentActions/contentActions.d.ts +0 -1
  6. package/lib/actions/conversationActions/conversationActions.d.ts +0 -1
  7. package/lib/actions/crmActions/crmActions.d.ts +32 -33
  8. package/lib/actions/eventActions/eventActions.d.ts +0 -1
  9. package/lib/actions/groupActions/groupActions.d.ts +0 -1
  10. package/lib/actions/imageActions/imageActions.d.ts +0 -1
  11. package/lib/actions/imageActions/imageActions.js +5 -4
  12. package/lib/actions/index.d.ts +0 -1
  13. package/lib/actions/locationActions/locationActions.d.ts +0 -1
  14. package/lib/actions/messageActions/messageActions.d.ts +0 -1
  15. package/lib/actions/permissionActions/permissionActions.d.ts +0 -1
  16. package/lib/actions/personaActions/personaActions.d.ts +0 -1
  17. package/lib/actions/postActions/postActions.d.ts +0 -1
  18. package/lib/actions/reactionActions/reactionActions.d.ts +0 -1
  19. package/lib/actions/restActions/restActions.d.ts +2 -3
  20. package/lib/actions/sseActions/sseActions.d.ts +0 -1
  21. package/lib/actions/sseActions/sseActions.js +1 -1
  22. package/lib/actions/subscriptionActions/subscriptionActions.d.ts +0 -1
  23. package/lib/actions/tagActions/tagActions.d.ts +0 -1
  24. package/lib/actions/tagActions/tagActions.js +1 -1
  25. package/lib/actions/translationActions/translationActions.d.ts +0 -1
  26. package/lib/actions/userActions/userActions.d.ts +0 -1
  27. package/lib/actions/videoActions/videoActions.d.ts +0 -1
  28. package/lib/actions/websocketActions/websocketActions.d.ts +0 -1
  29. package/lib/adapters/appAdapter/appAdapter.d.ts +2 -3
  30. package/lib/adapters/arangoAdapter/arangoAdapter.d.ts +2 -3
  31. package/lib/adapters/contentAdapter/contentAdapter.d.ts +2 -3
  32. package/lib/adapters/conversationAdapter/conversationAdapter.d.ts +2 -3
  33. package/lib/adapters/eventAdapter/eventAdapter.d.ts +2 -3
  34. package/lib/adapters/fileAdapter/fileAdapter.d.ts +2 -3
  35. package/lib/adapters/groupAdapter/groupAdapter.d.ts +2 -3
  36. package/lib/adapters/imageAdapter/imageAdapter.d.ts +2 -3
  37. package/lib/adapters/index.d.ts +0 -1
  38. package/lib/adapters/locationAdapter/locationAdapter.d.ts +2 -3
  39. package/lib/adapters/messageAdapter/messageAdapter.d.ts +2 -3
  40. package/lib/adapters/permissionAdapter/permissionAdapter.d.ts +2 -3
  41. package/lib/adapters/permissionAdapter/permissionAdapter.js +1 -1
  42. package/lib/adapters/personaAdapter/personaAdapter.d.ts +2 -3
  43. package/lib/adapters/postAdapter/postAdapter.d.ts +2 -3
  44. package/lib/adapters/reactionAdapter/reactionAdapter.d.ts +2 -3
  45. package/lib/adapters/reaktorAdapter/reaktorAdapter.d.ts +2 -3
  46. package/lib/adapters/sessionAdapter/sessionAdapter.d.ts +2 -3
  47. package/lib/adapters/tagAdapter/tagAdapter.d.ts +2 -3
  48. package/lib/adapters/translationAdapter/translationAdapter.d.ts +2 -3
  49. package/lib/adapters/userAdapter/userAdapter.d.ts +2 -3
  50. package/lib/adapters/videoAdapter/videoAdapter.d.ts +2 -3
  51. package/lib/config/index.d.ts +2 -1
  52. package/lib/config/index.js +7 -3
  53. package/lib/constants/Collections.d.ts +43 -44
  54. package/lib/constants/MetropolisConstants.d.ts +0 -1
  55. package/lib/graphql/message.d.ts +0 -1
  56. package/lib/graphql/notification.d.ts +0 -1
  57. package/lib/graphql/session.d.ts +0 -1
  58. package/lib/index.d.ts +1 -1
  59. package/lib/index.js +31 -1
  60. package/lib/stores/appStore.d.ts +13 -14
  61. package/lib/stores/contentStore.d.ts +11 -12
  62. package/lib/stores/conversationStore.d.ts +11 -12
  63. package/lib/stores/eventStore.d.ts +13 -17
  64. package/lib/stores/groupStore.d.ts +11 -15
  65. package/lib/stores/imageStore.d.ts +16 -20
  66. package/lib/stores/index.d.ts +0 -1
  67. package/lib/stores/locationStore.d.ts +12 -15
  68. package/lib/stores/messageStore.d.ts +14 -20
  69. package/lib/stores/notificationStore.d.ts +3 -6
  70. package/lib/stores/permissionStore.d.ts +13 -14
  71. package/lib/stores/personaStore.d.ts +1 -2
  72. package/lib/stores/postStore.d.ts +11 -14
  73. package/lib/stores/reactionStore.d.ts +9 -10
  74. package/lib/stores/subscriptionStore.d.ts +13 -14
  75. package/lib/stores/tagStore.d.ts +16 -19
  76. package/lib/stores/translationStore.d.ts +8 -9
  77. package/lib/stores/userStore.d.ts +41 -42
  78. package/lib/stores/userStore.js +7 -1
  79. package/lib/stores/videoStore.d.ts +12 -13
  80. package/lib/stores/websocketStore.d.ts +5 -6
  81. package/lib/types/apps.types.d.ts +0 -1
  82. package/lib/types/common.types.d.ts +0 -1
  83. package/lib/types/conversations.types.d.ts +0 -1
  84. package/lib/types/crm.types.d.ts +0 -1
  85. package/lib/types/edges.types.d.ts +0 -1
  86. package/lib/types/groups.types.d.ts +0 -1
  87. package/lib/types/index.d.ts +0 -1
  88. package/lib/types/subscriptions.types.d.ts +0 -1
  89. package/lib/types/videos.types.d.ts +0 -1
  90. package/lib/utils/MetropolisProvider.d.ts +0 -1
  91. package/lib/utils/actionFactory.d.ts +2 -3
  92. package/lib/utils/actionFactory.js +27 -2
  93. package/lib/utils/api.d.ts +1 -2
  94. package/lib/utils/api.js +34 -18
  95. package/lib/utils/app.d.ts +0 -1
  96. package/lib/utils/baseActionFactory.d.ts +2 -3
  97. package/lib/utils/configUtils.d.ts +0 -1
  98. package/lib/utils/dateUtils.d.ts +0 -1
  99. package/lib/utils/file.d.ts +0 -1
  100. package/lib/utils/i18n.d.ts +0 -1
  101. package/lib/utils/index.d.ts +0 -1
  102. package/lib/utils/location.d.ts +1 -2
  103. package/lib/utils/permissionUtils.d.ts +0 -1
  104. package/lib/utils/requestCache.d.ts +1 -2
  105. package/lib/utils/session.d.ts +0 -1
  106. package/lib/utils/useConversationTyping.d.ts +0 -1
  107. package/lib/utils/useMetropolis.d.ts +0 -1
  108. package/lib/utils/useMetropolis.js +9 -5
  109. package/lib/utils/useTranslations.d.ts +0 -1
  110. package/lib/utils/useTranslations.js +1 -1
  111. package/lib/utils/validatorFactory.d.ts +1 -2
  112. package/package.json +3 -3
  113. package/tsconfig.test.json +4 -0
  114. package/lib/actions/appActions/appActions.d.ts.map +0 -1
  115. package/lib/actions/awsRumActions/awsRumActions.d.ts.map +0 -1
  116. package/lib/actions/connectionActions/connectionActions.d.ts.map +0 -1
  117. package/lib/actions/contentActions/contentActions.d.ts.map +0 -1
  118. package/lib/actions/conversationActions/conversationActions.d.ts.map +0 -1
  119. package/lib/actions/crmActions/crmActions.d.ts.map +0 -1
  120. package/lib/actions/eventActions/eventActions.d.ts.map +0 -1
  121. package/lib/actions/groupActions/groupActions.d.ts.map +0 -1
  122. package/lib/actions/imageActions/imageActions.d.ts.map +0 -1
  123. package/lib/actions/index.d.ts.map +0 -1
  124. package/lib/actions/locationActions/locationActions.d.ts.map +0 -1
  125. package/lib/actions/messageActions/messageActions.d.ts.map +0 -1
  126. package/lib/actions/permissionActions/permissionActions.d.ts.map +0 -1
  127. package/lib/actions/personaActions/personaActions.d.ts.map +0 -1
  128. package/lib/actions/postActions/postActions.d.ts.map +0 -1
  129. package/lib/actions/reactionActions/reactionActions.d.ts.map +0 -1
  130. package/lib/actions/restActions/restActions.d.ts.map +0 -1
  131. package/lib/actions/sseActions/sseActions.d.ts.map +0 -1
  132. package/lib/actions/subscriptionActions/subscriptionActions.d.ts.map +0 -1
  133. package/lib/actions/tagActions/tagActions.d.ts.map +0 -1
  134. package/lib/actions/translationActions/translationActions.d.ts.map +0 -1
  135. package/lib/actions/userActions/userActions.d.ts.map +0 -1
  136. package/lib/actions/videoActions/videoActions.d.ts.map +0 -1
  137. package/lib/actions/websocketActions/websocketActions.d.ts.map +0 -1
  138. package/lib/adapters/appAdapter/appAdapter.d.ts.map +0 -1
  139. package/lib/adapters/arangoAdapter/arangoAdapter.d.ts.map +0 -1
  140. package/lib/adapters/contentAdapter/contentAdapter.d.ts.map +0 -1
  141. package/lib/adapters/conversationAdapter/conversationAdapter.d.ts.map +0 -1
  142. package/lib/adapters/eventAdapter/eventAdapter.d.ts.map +0 -1
  143. package/lib/adapters/fileAdapter/fileAdapter.d.ts.map +0 -1
  144. package/lib/adapters/groupAdapter/groupAdapter.d.ts.map +0 -1
  145. package/lib/adapters/imageAdapter/imageAdapter.d.ts.map +0 -1
  146. package/lib/adapters/index.d.ts.map +0 -1
  147. package/lib/adapters/locationAdapter/locationAdapter.d.ts.map +0 -1
  148. package/lib/adapters/messageAdapter/messageAdapter.d.ts.map +0 -1
  149. package/lib/adapters/permissionAdapter/permissionAdapter.d.ts.map +0 -1
  150. package/lib/adapters/personaAdapter/personaAdapter.d.ts.map +0 -1
  151. package/lib/adapters/postAdapter/postAdapter.d.ts.map +0 -1
  152. package/lib/adapters/reactionAdapter/reactionAdapter.d.ts.map +0 -1
  153. package/lib/adapters/reaktorAdapter/reaktorAdapter.d.ts.map +0 -1
  154. package/lib/adapters/sessionAdapter/sessionAdapter.d.ts.map +0 -1
  155. package/lib/adapters/tagAdapter/tagAdapter.d.ts.map +0 -1
  156. package/lib/adapters/translationAdapter/translationAdapter.d.ts.map +0 -1
  157. package/lib/adapters/userAdapter/userAdapter.d.ts.map +0 -1
  158. package/lib/adapters/videoAdapter/videoAdapter.d.ts.map +0 -1
  159. package/lib/config/index.d.ts.map +0 -1
  160. package/lib/constants/Collections.d.ts.map +0 -1
  161. package/lib/constants/MetropolisConstants.d.ts.map +0 -1
  162. package/lib/graphql/message.d.ts.map +0 -1
  163. package/lib/graphql/notification.d.ts.map +0 -1
  164. package/lib/graphql/session.d.ts.map +0 -1
  165. package/lib/index.d.ts.map +0 -1
  166. package/lib/stores/appStore.d.ts.map +0 -1
  167. package/lib/stores/contentStore.d.ts.map +0 -1
  168. package/lib/stores/conversationStore.d.ts.map +0 -1
  169. package/lib/stores/eventStore.d.ts.map +0 -1
  170. package/lib/stores/groupStore.d.ts.map +0 -1
  171. package/lib/stores/imageStore.d.ts.map +0 -1
  172. package/lib/stores/index.d.ts.map +0 -1
  173. package/lib/stores/locationStore.d.ts.map +0 -1
  174. package/lib/stores/messageStore.d.ts.map +0 -1
  175. package/lib/stores/notificationStore.d.ts.map +0 -1
  176. package/lib/stores/permissionStore.d.ts.map +0 -1
  177. package/lib/stores/personaStore.d.ts.map +0 -1
  178. package/lib/stores/postStore.d.ts.map +0 -1
  179. package/lib/stores/reactionStore.d.ts.map +0 -1
  180. package/lib/stores/subscriptionStore.d.ts.map +0 -1
  181. package/lib/stores/tagStore.d.ts.map +0 -1
  182. package/lib/stores/translationStore.d.ts.map +0 -1
  183. package/lib/stores/userStore.d.ts.map +0 -1
  184. package/lib/stores/videoStore.d.ts.map +0 -1
  185. package/lib/stores/websocketStore.d.ts.map +0 -1
  186. package/lib/tests/actionTestScenarios.d.ts +0 -20
  187. package/lib/tests/actionTestScenarios.d.ts.map +0 -1
  188. package/lib/tests/actionTestScenarios.js +0 -851
  189. package/lib/tests/testGraphQLServer.d.ts +0 -22
  190. package/lib/tests/testGraphQLServer.d.ts.map +0 -1
  191. package/lib/tests/testGraphQLServer.js +0 -197
  192. package/lib/tests/testGraphQLServerSimple.d.ts +0 -3
  193. package/lib/tests/testGraphQLServerSimple.d.ts.map +0 -1
  194. package/lib/tests/testGraphQLServerSimple.js +0 -52
  195. package/lib/types/apps.types.d.ts.map +0 -1
  196. package/lib/types/common.types.d.ts.map +0 -1
  197. package/lib/types/conversations.types.d.ts.map +0 -1
  198. package/lib/types/crm.types.d.ts.map +0 -1
  199. package/lib/types/edges.types.d.ts.map +0 -1
  200. package/lib/types/groups.types.d.ts.map +0 -1
  201. package/lib/types/index.d.ts.map +0 -1
  202. package/lib/types/subscriptions.types.d.ts.map +0 -1
  203. package/lib/types/videos.types.d.ts.map +0 -1
  204. package/lib/utils/MetropolisProvider.d.ts.map +0 -1
  205. package/lib/utils/actionFactory.d.ts.map +0 -1
  206. package/lib/utils/api.d.ts.map +0 -1
  207. package/lib/utils/app.d.ts.map +0 -1
  208. package/lib/utils/baseActionFactory.d.ts.map +0 -1
  209. package/lib/utils/configUtils.d.ts.map +0 -1
  210. package/lib/utils/dateUtils.d.ts.map +0 -1
  211. package/lib/utils/file.d.ts.map +0 -1
  212. package/lib/utils/i18n.d.ts.map +0 -1
  213. package/lib/utils/index.d.ts.map +0 -1
  214. package/lib/utils/location.d.ts.map +0 -1
  215. package/lib/utils/permissionUtils.d.ts.map +0 -1
  216. package/lib/utils/requestCache.d.ts.map +0 -1
  217. package/lib/utils/session.d.ts.map +0 -1
  218. package/lib/utils/useConversationTyping.d.ts.map +0 -1
  219. package/lib/utils/useMetropolis.d.ts.map +0 -1
  220. package/lib/utils/useTranslations.d.ts.map +0 -1
  221. package/lib/utils/validatorFactory.d.ts.map +0 -1
@@ -26,4 +26,3 @@ export interface AppActions {
26
26
  updateAppAdapterOptions: (options: AppAdapterOptions) => void;
27
27
  }
28
28
  export declare const createAppActions: (flux: FluxFramework, options?: AppActionsOptions) => AppActions;
29
- //# sourceMappingURL=appActions.d.ts.map
@@ -1,8 +1,8 @@
1
1
  import type { FluxFramework } from '@nlabs/arkhamjs';
2
2
  export declare const AWS_RUM_CONSTANTS: {
3
- readonly TRACK_ERROR: "AWS_RUM_TRACK_ERROR";
4
- readonly TRACK_QUEUED: "AWS_RUM_TRACK_QUEUED";
5
- readonly TRACK_SUCCESS: "AWS_RUM_TRACK_SUCCESS";
3
+ readonly TRACK_ERROR: 'AWS_RUM_TRACK_ERROR';
4
+ readonly TRACK_QUEUED: 'AWS_RUM_TRACK_QUEUED';
5
+ readonly TRACK_SUCCESS: 'AWS_RUM_TRACK_SUCCESS';
6
6
  };
7
7
  export type AwsRumEventType = 'click' | 'page_view' | (string & {});
8
8
  export type AwsRumProperty = boolean | number | string;
@@ -23,6 +23,7 @@ export interface AwsRumActionsOptions {
23
23
  readonly debounceMs?: number;
24
24
  readonly dedupeMs?: number;
25
25
  readonly enabled?: boolean;
26
+ readonly respectPrivacySignals?: boolean;
26
27
  readonly throttleMs?: number;
27
28
  }
28
29
  export interface AwsRumActions {
@@ -31,4 +32,3 @@ export interface AwsRumActions {
31
32
  readonly track: (event: AwsRumTrackInput) => void;
32
33
  }
33
34
  export declare const createAwsRumActions: (flux: FluxFramework, options?: AwsRumActionsOptions) => AwsRumActions;
34
- //# sourceMappingURL=awsRumActions.d.ts.map
@@ -10,8 +10,29 @@ export const AWS_RUM_CONSTANTS = {
10
10
  const DEFAULT_DEBOUNCE_MS = 250;
11
11
  const DEFAULT_DEDUPE_MS = 1000;
12
12
  const DEFAULT_THROTTLE_MS = 1000;
13
+ const MAX_BATCH_SIZE = 50;
13
14
  const MAX_PROPERTIES = 20;
14
15
  const MAX_SEEN_EVENTS = 500;
16
+ const BLOCKED_PROPERTY_KEYS = new Set([
17
+ 'accountid',
18
+ 'address',
19
+ 'email',
20
+ 'firstname',
21
+ 'fullname',
22
+ 'geolocation',
23
+ 'ip',
24
+ 'ipaddress',
25
+ 'lastname',
26
+ 'latitude',
27
+ 'longitude',
28
+ 'name',
29
+ 'phone',
30
+ 'referrer',
31
+ 'token',
32
+ 'useragent',
33
+ 'userid'
34
+ ]);
35
+ const EMAIL_PATTERN = /\b[^\s@]+@[^\s@]+\.[^\s@]+\b/i;
15
36
  const createId = ()=>{
16
37
  if (typeof globalThis.crypto?.randomUUID === 'function') {
17
38
  return globalThis.crypto.randomUUID();
@@ -19,16 +40,25 @@ const createId = ()=>{
19
40
  return `${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;
20
41
  };
21
42
  const normalizeText = (value, maxLength)=>String(value || '').trim().slice(0, maxLength);
43
+ const normalizePropertyKey = (value)=>value.toLowerCase().replace(/[^a-z0-9]/g, '');
22
44
  const sanitizeProperties = (properties = {})=>Object.entries(properties).slice(0, MAX_PROPERTIES).reduce((result, [key, value])=>{
23
45
  const propertyKey = normalizeText(key, 64);
24
- if (!propertyKey || ![
46
+ const normalizedPropertyKey = normalizePropertyKey(propertyKey);
47
+ if (!propertyKey || BLOCKED_PROPERTY_KEYS.has(normalizedPropertyKey) || ![
25
48
  'boolean',
26
49
  'number',
27
50
  'string'
28
51
  ].includes(typeof value)) {
29
52
  return result;
30
53
  }
31
- result[propertyKey] = typeof value === 'string' ? normalizeText(value, 256) : value;
54
+ if (typeof value === 'string') {
55
+ const textValue = normalizeText(value, 256);
56
+ if (textValue && !EMAIL_PATTERN.test(textValue)) {
57
+ result[propertyKey] = textValue;
58
+ }
59
+ } else if (typeof value === 'boolean' || Number.isFinite(value)) {
60
+ result[propertyKey] = value;
61
+ }
32
62
  return result;
33
63
  }, {});
34
64
  const sanitizeEvent = (event)=>{
@@ -61,6 +91,7 @@ export const createAwsRumActions = (flux, options = {})=>{
61
91
  const debounceMs = Math.max(0, options.debounceMs ?? DEFAULT_DEBOUNCE_MS);
62
92
  const dedupeMs = Math.max(0, options.dedupeMs ?? DEFAULT_DEDUPE_MS);
63
93
  const enabled = options.enabled !== false;
94
+ const respectPrivacySignals = options.respectPrivacySignals !== false;
64
95
  const throttleMs = Math.max(0, options.throttleMs ?? DEFAULT_THROTTLE_MS);
65
96
  const journeyId = createId();
66
97
  const pendingEvents = new Map();
@@ -69,6 +100,13 @@ export const createAwsRumActions = (flux, options = {})=>{
69
100
  let lastFlushAt = 0;
70
101
  let sequence = 0;
71
102
  let timer;
103
+ const hasPrivacySignal = ()=>{
104
+ if (!respectPrivacySignals || typeof globalThis.navigator === 'undefined') {
105
+ return false;
106
+ }
107
+ const navigatorState = globalThis.navigator;
108
+ return navigatorState.doNotTrack === '1' || navigatorState.globalPrivacyControl === true;
109
+ };
72
110
  const pruneSeenEvents = ()=>{
73
111
  if (seenEvents.size <= MAX_SEEN_EVENTS) {
74
112
  return;
@@ -79,12 +117,19 @@ export const createAwsRumActions = (flux, options = {})=>{
79
117
  seenEvents.delete(fingerprint);
80
118
  }
81
119
  });
120
+ while(seenEvents.size > MAX_SEEN_EVENTS){
121
+ const oldestFingerprint = seenEvents.keys().next().value;
122
+ if (!oldestFingerprint) {
123
+ break;
124
+ }
125
+ seenEvents.delete(oldestFingerprint);
126
+ }
82
127
  };
83
128
  const flush = async ()=>{
84
129
  if (flushPromise) {
85
130
  return flushPromise;
86
131
  }
87
- if (!enabled || !appId || pendingEvents.size === 0) {
132
+ if (!enabled || !appId || hasPrivacySignal() || pendingEvents.size === 0) {
88
133
  return;
89
134
  }
90
135
  if (timer) {
@@ -96,32 +141,39 @@ export const createAwsRumActions = (flux, options = {})=>{
96
141
  ];
97
142
  pendingEvents.clear();
98
143
  lastFlushAt = Date.now();
99
- flushPromise = rumMutation(flux, 'track', 'rum', {
100
- batch: {
101
- type: 'RumBatchInput!',
102
- value: {
103
- appId,
104
- events
144
+ flushPromise = (async ()=>{
145
+ for(let index = 0; index < events.length; index += MAX_BATCH_SIZE){
146
+ const batchEvents = events.slice(index, index + MAX_BATCH_SIZE);
147
+ try {
148
+ await rumMutation(flux, 'track', 'rum', {
149
+ batch: {
150
+ type: 'RumBatchInput!',
151
+ value: {
152
+ appId,
153
+ events: batchEvents
154
+ }
155
+ }
156
+ }, [
157
+ 'accepted',
158
+ 'appId'
159
+ ]);
160
+ await flux.dispatch({
161
+ appId,
162
+ events: batchEvents,
163
+ type: AWS_RUM_CONSTANTS.TRACK_SUCCESS
164
+ });
165
+ } catch (error) {
166
+ events.slice(index).forEach((event)=>pendingEvents.set(eventFingerprint(event), event));
167
+ await flux.dispatch({
168
+ appId,
169
+ error,
170
+ events: batchEvents,
171
+ type: AWS_RUM_CONSTANTS.TRACK_ERROR
172
+ });
173
+ return;
105
174
  }
106
175
  }
107
- }, [
108
- 'accepted',
109
- 'appId'
110
- ]).then(async ()=>{
111
- await flux.dispatch({
112
- appId,
113
- events,
114
- type: AWS_RUM_CONSTANTS.TRACK_SUCCESS
115
- });
116
- }).catch(async (error)=>{
117
- events.forEach((event)=>pendingEvents.set(eventFingerprint(event), event));
118
- await flux.dispatch({
119
- appId,
120
- error,
121
- events,
122
- type: AWS_RUM_CONSTANTS.TRACK_ERROR
123
- });
124
- }).finally(()=>{
176
+ })().finally(()=>{
125
177
  flushPromise = undefined;
126
178
  });
127
179
  return flushPromise;
@@ -134,7 +186,7 @@ export const createAwsRumActions = (flux, options = {})=>{
134
186
  timer = setTimeout(()=>void flush(), Math.max(debounceMs, throttleRemaining));
135
187
  };
136
188
  const track = (input)=>{
137
- if (!enabled || !appId) {
189
+ if (!enabled || !appId || hasPrivacySignal()) {
138
190
  return;
139
191
  }
140
192
  const event = sanitizeEvent(input);
@@ -180,4 +232,4 @@ export const createAwsRumActions = (flux, options = {})=>{
180
232
  };
181
233
  };
182
234
 
183
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvYWN0aW9ucy9hd3NSdW1BY3Rpb25zL2F3c1J1bUFjdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjYtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7cnVtTXV0YXRpb259IGZyb20gJy4uLy4uL3V0aWxzL2FwaS5qcyc7XG5cbmltcG9ydCB0eXBlIHtGbHV4RnJhbWV3b3JrfSBmcm9tICdAbmxhYnMvYXJraGFtanMnO1xuXG5leHBvcnQgY29uc3QgQVdTX1JVTV9DT05TVEFOVFMgPSB7XG4gIFRSQUNLX0VSUk9SOiAnQVdTX1JVTV9UUkFDS19FUlJPUicsXG4gIFRSQUNLX1FVRVVFRDogJ0FXU19SVU1fVFJBQ0tfUVVFVUVEJyxcbiAgVFJBQ0tfU1VDQ0VTUzogJ0FXU19SVU1fVFJBQ0tfU1VDQ0VTUydcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEF3c1J1bUV2ZW50VHlwZSA9ICdjbGljaycgfCAncGFnZV92aWV3JyB8IChzdHJpbmcgJiB7fSk7XG5leHBvcnQgdHlwZSBBd3NSdW1Qcm9wZXJ0eSA9IGJvb2xlYW4gfCBudW1iZXIgfCBzdHJpbmc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXdzUnVtVHJhY2tJbnB1dCB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgcGF0aD86IHN0cmluZztcbiAgcmVhZG9ubHkgcHJvcGVydGllcz86IFJlY29yZDxzdHJpbmcsIEF3c1J1bVByb3BlcnR5PjtcbiAgcmVhZG9ubHkgdHlwZTogQXdzUnVtRXZlbnRUeXBlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF3c1J1bUV2ZW50IGV4dGVuZHMgQXdzUnVtVHJhY2tJbnB1dCB7XG4gIHJlYWRvbmx5IGV2ZW50SWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgam91cm5leUlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHNlcXVlbmNlOiBudW1iZXI7XG4gIHJlYWRvbmx5IHRpbWVzdGFtcDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF3c1J1bUFjdGlvbnNPcHRpb25zIHtcbiAgcmVhZG9ubHkgYXBwSWQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRlYm91bmNlTXM/OiBudW1iZXI7XG4gIHJlYWRvbmx5IGRlZHVwZU1zPzogbnVtYmVyO1xuICByZWFkb25seSBlbmFibGVkPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdGhyb3R0bGVNcz86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBd3NSdW1BY3Rpb25zIHtcbiAgcmVhZG9ubHkgZGVzdHJveTogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgcmVhZG9ubHkgZmx1c2g6ICgpID0+IFByb21pc2U8dm9pZD47XG4gIHJlYWRvbmx5IHRyYWNrOiAoZXZlbnQ6IEF3c1J1bVRyYWNrSW5wdXQpID0+IHZvaWQ7XG59XG5cbmNvbnN0IERFRkFVTFRfREVCT1VOQ0VfTVMgPSAyNTA7XG5jb25zdCBERUZBVUxUX0RFRFVQRV9NUyA9IDEwMDA7XG5jb25zdCBERUZBVUxUX1RIUk9UVExFX01TID0gMTAwMDtcbmNvbnN0IE1BWF9QUk9QRVJUSUVTID0gMjA7XG5jb25zdCBNQVhfU0VFTl9FVkVOVFMgPSA1MDA7XG5cbmNvbnN0IGNyZWF0ZUlkID0gKCk6IHN0cmluZyA9PiB7XG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLmNyeXB0bz8ucmFuZG9tVVVJRCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBnbG9iYWxUaGlzLmNyeXB0by5yYW5kb21VVUlEKCk7XG4gIH1cblxuICByZXR1cm4gYCR7RGF0ZS5ub3coKS50b1N0cmluZygzNil9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMil9YDtcbn07XG5cbmNvbnN0IG5vcm1hbGl6ZVRleHQgPSAodmFsdWU6IHVua25vd24sIG1heExlbmd0aDogbnVtYmVyKTogc3RyaW5nID0+XG4gIFN0cmluZyh2YWx1ZSB8fCAnJykudHJpbSgpLnNsaWNlKDAsIG1heExlbmd0aCk7XG5cbmNvbnN0IHNhbml0aXplUHJvcGVydGllcyA9IChcbiAgcHJvcGVydGllczogUmVjb3JkPHN0cmluZywgQXdzUnVtUHJvcGVydHk+ID0ge31cbik6IFJlY29yZDxzdHJpbmcsIEF3c1J1bVByb3BlcnR5PiA9PiBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKVxuICAuc2xpY2UoMCwgTUFYX1BST1BFUlRJRVMpXG4gIC5yZWR1Y2U8UmVjb3JkPHN0cmluZywgQXdzUnVtUHJvcGVydHk+PigocmVzdWx0LCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICBjb25zdCBwcm9wZXJ0eUtleSA9IG5vcm1hbGl6ZVRleHQoa2V5LCA2NCk7XG5cbiAgICBpZighcHJvcGVydHlLZXkgfHwgIVsnYm9vbGVhbicsICdudW1iZXInLCAnc3RyaW5nJ10uaW5jbHVkZXModHlwZW9mIHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICByZXN1bHRbcHJvcGVydHlLZXldID0gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IG5vcm1hbGl6ZVRleHQodmFsdWUsIDI1NikgOiB2YWx1ZTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9LCB7fSk7XG5cbmNvbnN0IHNhbml0aXplRXZlbnQgPSAoZXZlbnQ6IEF3c1J1bVRyYWNrSW5wdXQpOiBBd3NSdW1UcmFja0lucHV0IHwgbnVsbCA9PiB7XG4gIGNvbnN0IG5hbWUgPSBub3JtYWxpemVUZXh0KGV2ZW50Lm5hbWUsIDEyOCk7XG4gIGNvbnN0IHR5cGUgPSBub3JtYWxpemVUZXh0KGV2ZW50LnR5cGUsIDY0KTtcblxuICBpZighbmFtZSB8fCAhdHlwZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgcGF0aCA9IG5vcm1hbGl6ZVRleHQoZXZlbnQucGF0aCwgMjU2KS5zcGxpdCgnPycpWzBdLnNwbGl0KCcjJylbMF07XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lLFxuICAgIC4uLihwYXRoID8ge3BhdGh9IDoge30pLFxuICAgIHByb3BlcnRpZXM6IHNhbml0aXplUHJvcGVydGllcyhldmVudC5wcm9wZXJ0aWVzKSxcbiAgICB0eXBlXG4gIH07XG59O1xuXG5jb25zdCBldmVudEZpbmdlcnByaW50ID0gKGV2ZW50OiBBd3NSdW1UcmFja0lucHV0KTogc3RyaW5nID0+IHtcbiAgY29uc3QgcHJvcGVydGllcyA9IE9iamVjdC5lbnRyaWVzKGV2ZW50LnByb3BlcnRpZXMgfHwge30pLnNvcnQoKFtsZWZ0XSwgW3JpZ2h0XSkgPT4gbGVmdC5sb2NhbGVDb21wYXJlKHJpZ2h0KSk7XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShbZXZlbnQudHlwZSwgZXZlbnQubmFtZSwgZXZlbnQucGF0aCB8fCAnJywgcHJvcGVydGllc10pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUF3c1J1bUFjdGlvbnMgPSAoXG4gIGZsdXg6IEZsdXhGcmFtZXdvcmssXG4gIG9wdGlvbnM6IEF3c1J1bUFjdGlvbnNPcHRpb25zID0ge31cbik6IEF3c1J1bUFjdGlvbnMgPT4ge1xuICBjb25zdCBhcHBJZCA9IG5vcm1hbGl6ZVRleHQob3B0aW9ucy5hcHBJZCwgMTI4KTtcbiAgY29uc3QgZGVib3VuY2VNcyA9IE1hdGgubWF4KDAsIG9wdGlvbnMuZGVib3VuY2VNcyA/PyBERUZBVUxUX0RFQk9VTkNFX01TKTtcbiAgY29uc3QgZGVkdXBlTXMgPSBNYXRoLm1heCgwLCBvcHRpb25zLmRlZHVwZU1zID8/IERFRkFVTFRfREVEVVBFX01TKTtcbiAgY29uc3QgZW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlZCAhPT0gZmFsc2U7XG4gIGNvbnN0IHRocm90dGxlTXMgPSBNYXRoLm1heCgwLCBvcHRpb25zLnRocm90dGxlTXMgPz8gREVGQVVMVF9USFJPVFRMRV9NUyk7XG4gIGNvbnN0IGpvdXJuZXlJZCA9IGNyZWF0ZUlkKCk7XG4gIGNvbnN0IHBlbmRpbmdFdmVudHMgPSBuZXcgTWFwPHN0cmluZywgQXdzUnVtRXZlbnQ+KCk7XG4gIGNvbnN0IHNlZW5FdmVudHMgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICBsZXQgZmx1c2hQcm9taXNlOiBQcm9taXNlPHZvaWQ+IHwgdW5kZWZpbmVkO1xuICBsZXQgbGFzdEZsdXNoQXQgPSAwO1xuICBsZXQgc2VxdWVuY2UgPSAwO1xuICBsZXQgdGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0IHBydW5lU2VlbkV2ZW50cyA9ICgpOiB2b2lkID0+IHtcbiAgICBpZihzZWVuRXZlbnRzLnNpemUgPD0gTUFYX1NFRU5fRVZFTlRTKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY3V0b2ZmID0gRGF0ZS5ub3coKSAtIGRlZHVwZU1zO1xuICAgIHNlZW5FdmVudHMuZm9yRWFjaCgodGltZXN0YW1wLCBmaW5nZXJwcmludCkgPT4ge1xuICAgICAgaWYodGltZXN0YW1wIDwgY3V0b2ZmKSB7XG4gICAgICAgIHNlZW5FdmVudHMuZGVsZXRlKGZpbmdlcnByaW50KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBmbHVzaCA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBpZihmbHVzaFByb21pc2UpIHtcbiAgICAgIHJldHVybiBmbHVzaFByb21pc2U7XG4gICAgfVxuXG4gICAgaWYoIWVuYWJsZWQgfHwgIWFwcElkIHx8IHBlbmRpbmdFdmVudHMuc2l6ZSA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmKHRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgdGltZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgZXZlbnRzID0gWy4uLnBlbmRpbmdFdmVudHMudmFsdWVzKCldO1xuICAgIHBlbmRpbmdFdmVudHMuY2xlYXIoKTtcbiAgICBsYXN0Rmx1c2hBdCA9IERhdGUubm93KCk7XG5cbiAgICBmbHVzaFByb21pc2UgPSBydW1NdXRhdGlvbihmbHV4LCAndHJhY2snLCAncnVtJywge1xuICAgICAgYmF0Y2g6IHtcbiAgICAgICAgdHlwZTogJ1J1bUJhdGNoSW5wdXQhJyxcbiAgICAgICAgdmFsdWU6IHthcHBJZCwgZXZlbnRzfVxuICAgICAgfVxuICAgIH0sIFsnYWNjZXB0ZWQnLCAnYXBwSWQnXSlcbiAgICAgIC50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgZmx1eC5kaXNwYXRjaCh7YXBwSWQsIGV2ZW50cywgdHlwZTogQVdTX1JVTV9DT05TVEFOVFMuVFJBQ0tfU1VDQ0VTU30pO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChhc3luYyAoZXJyb3IpID0+IHtcbiAgICAgICAgZXZlbnRzLmZvckVhY2goKGV2ZW50KSA9PiBwZW5kaW5nRXZlbnRzLnNldChldmVudEZpbmdlcnByaW50KGV2ZW50KSwgZXZlbnQpKTtcbiAgICAgICAgYXdhaXQgZmx1eC5kaXNwYXRjaCh7YXBwSWQsIGVycm9yLCBldmVudHMsIHR5cGU6IEFXU19SVU1fQ09OU1RBTlRTLlRSQUNLX0VSUk9SfSk7XG4gICAgICB9KVxuICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICBmbHVzaFByb21pc2UgPSB1bmRlZmluZWQ7XG4gICAgICB9KTtcblxuICAgIHJldHVybiBmbHVzaFByb21pc2U7XG4gIH07XG5cbiAgY29uc3Qgc2NoZWR1bGVGbHVzaCA9ICgpOiB2b2lkID0+IHtcbiAgICBpZih0aW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICB9XG5cbiAgICBjb25zdCB0aHJvdHRsZVJlbWFpbmluZyA9IE1hdGgubWF4KDAsIHRocm90dGxlTXMgLSAoRGF0ZS5ub3coKSAtIGxhc3RGbHVzaEF0KSk7XG4gICAgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHZvaWQgZmx1c2goKSwgTWF0aC5tYXgoZGVib3VuY2VNcywgdGhyb3R0bGVSZW1haW5pbmcpKTtcbiAgfTtcblxuICBjb25zdCB0cmFjayA9IChpbnB1dDogQXdzUnVtVHJhY2tJbnB1dCk6IHZvaWQgPT4ge1xuICAgIGlmKCFlbmFibGVkIHx8ICFhcHBJZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGV2ZW50ID0gc2FuaXRpemVFdmVudChpbnB1dCk7XG5cbiAgICBpZighZXZlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5nZXJwcmludCA9IGV2ZW50RmluZ2VycHJpbnQoZXZlbnQpO1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3QgbGFzdFNlZW5BdCA9IHNlZW5FdmVudHMuZ2V0KGZpbmdlcnByaW50KSB8fCAwO1xuXG4gICAgaWYoc2VlbkV2ZW50cy5oYXMoZmluZ2VycHJpbnQpICYmIG5vdyAtIGxhc3RTZWVuQXQgPCBkZWR1cGVNcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHNlZW5FdmVudHMuc2V0KGZpbmdlcnByaW50LCBub3cpO1xuICAgIHBydW5lU2VlbkV2ZW50cygpO1xuICAgIHNlcXVlbmNlICs9IDE7XG5cbiAgICBjb25zdCBxdWV1ZWRFdmVudDogQXdzUnVtRXZlbnQgPSB7XG4gICAgICAuLi5ldmVudCxcbiAgICAgIGV2ZW50SWQ6IGNyZWF0ZUlkKCksXG4gICAgICBqb3VybmV5SWQsXG4gICAgICBzZXF1ZW5jZSxcbiAgICAgIHRpbWVzdGFtcDogbm93XG4gICAgfTtcblxuICAgIHBlbmRpbmdFdmVudHMuc2V0KGZpbmdlcnByaW50LCBxdWV1ZWRFdmVudCk7XG4gICAgdm9pZCBmbHV4LmRpc3BhdGNoKHthcHBJZCwgZXZlbnQ6IHF1ZXVlZEV2ZW50LCB0eXBlOiBBV1NfUlVNX0NPTlNUQU5UUy5UUkFDS19RVUVVRUR9KTtcbiAgICBzY2hlZHVsZUZsdXNoKCk7XG4gIH07XG5cbiAgY29uc3QgZGVzdHJveSA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBpZih0aW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgIHRpbWVyID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGF3YWl0IGZsdXNoKCk7XG4gICAgc2VlbkV2ZW50cy5jbGVhcigpO1xuICB9O1xuXG4gIHJldHVybiB7ZGVzdHJveSwgZmx1c2gsIHRyYWNrfTtcbn07XG4iXSwibmFtZXMiOlsicnVtTXV0YXRpb24iLCJBV1NfUlVNX0NPTlNUQU5UUyIsIlRSQUNLX0VSUk9SIiwiVFJBQ0tfUVVFVUVEIiwiVFJBQ0tfU1VDQ0VTUyIsIkRFRkFVTFRfREVCT1VOQ0VfTVMiLCJERUZBVUxUX0RFRFVQRV9NUyIsIkRFRkFVTFRfVEhST1RUTEVfTVMiLCJNQVhfUFJPUEVSVElFUyIsIk1BWF9TRUVOX0VWRU5UUyIsImNyZWF0ZUlkIiwiZ2xvYmFsVGhpcyIsImNyeXB0byIsInJhbmRvbVVVSUQiLCJEYXRlIiwibm93IiwidG9TdHJpbmciLCJNYXRoIiwicmFuZG9tIiwic2xpY2UiLCJub3JtYWxpemVUZXh0IiwidmFsdWUiLCJtYXhMZW5ndGgiLCJTdHJpbmciLCJ0cmltIiwic2FuaXRpemVQcm9wZXJ0aWVzIiwicHJvcGVydGllcyIsIk9iamVjdCIsImVudHJpZXMiLCJyZWR1Y2UiLCJyZXN1bHQiLCJrZXkiLCJwcm9wZXJ0eUtleSIsImluY2x1ZGVzIiwic2FuaXRpemVFdmVudCIsImV2ZW50IiwibmFtZSIsInR5cGUiLCJwYXRoIiwic3BsaXQiLCJldmVudEZpbmdlcnByaW50Iiwic29ydCIsImxlZnQiLCJyaWdodCIsImxvY2FsZUNvbXBhcmUiLCJKU09OIiwic3RyaW5naWZ5IiwiY3JlYXRlQXdzUnVtQWN0aW9ucyIsImZsdXgiLCJvcHRpb25zIiwiYXBwSWQiLCJkZWJvdW5jZU1zIiwibWF4IiwiZGVkdXBlTXMiLCJlbmFibGVkIiwidGhyb3R0bGVNcyIsImpvdXJuZXlJZCIsInBlbmRpbmdFdmVudHMiLCJNYXAiLCJzZWVuRXZlbnRzIiwiZmx1c2hQcm9taXNlIiwibGFzdEZsdXNoQXQiLCJzZXF1ZW5jZSIsInRpbWVyIiwicHJ1bmVTZWVuRXZlbnRzIiwic2l6ZSIsImN1dG9mZiIsImZvckVhY2giLCJ0aW1lc3RhbXAiLCJmaW5nZXJwcmludCIsImRlbGV0ZSIsImZsdXNoIiwiY2xlYXJUaW1lb3V0IiwidW5kZWZpbmVkIiwiZXZlbnRzIiwidmFsdWVzIiwiY2xlYXIiLCJiYXRjaCIsInRoZW4iLCJkaXNwYXRjaCIsImNhdGNoIiwiZXJyb3IiLCJzZXQiLCJmaW5hbGx5Iiwic2NoZWR1bGVGbHVzaCIsInRocm90dGxlUmVtYWluaW5nIiwic2V0VGltZW91dCIsInRyYWNrIiwiaW5wdXQiLCJsYXN0U2VlbkF0IiwiZ2V0IiwiaGFzIiwicXVldWVkRXZlbnQiLCJldmVudElkIiwiZGVzdHJveSJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FBUUEsV0FBVyxRQUFPLHFCQUFxQjtBQUkvQyxPQUFPLE1BQU1DLG9CQUFvQjtJQUMvQkMsYUFBYTtJQUNiQyxjQUFjO0lBQ2RDLGVBQWU7QUFDakIsRUFBVztBQWlDWCxNQUFNQyxzQkFBc0I7QUFDNUIsTUFBTUMsb0JBQW9CO0FBQzFCLE1BQU1DLHNCQUFzQjtBQUM1QixNQUFNQyxpQkFBaUI7QUFDdkIsTUFBTUMsa0JBQWtCO0FBRXhCLE1BQU1DLFdBQVc7SUFDZixJQUFHLE9BQU9DLFdBQVdDLE1BQU0sRUFBRUMsZUFBZSxZQUFZO1FBQ3RELE9BQU9GLFdBQVdDLE1BQU0sQ0FBQ0MsVUFBVTtJQUNyQztJQUVBLE9BQU8sR0FBR0MsS0FBS0MsR0FBRyxHQUFHQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUVDLEtBQUtDLE1BQU0sR0FBR0YsUUFBUSxDQUFDLElBQUlHLEtBQUssQ0FBQyxJQUFJO0FBQzVFO0FBRUEsTUFBTUMsZ0JBQWdC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
235
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvYWN0aW9ucy9hd3NSdW1BY3Rpb25zL2F3c1J1bUFjdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjYtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7cnVtTXV0YXRpb259IGZyb20gJy4uLy4uL3V0aWxzL2FwaS5qcyc7XG5cbmltcG9ydCB0eXBlIHtGbHV4RnJhbWV3b3JrfSBmcm9tICdAbmxhYnMvYXJraGFtanMnO1xuXG5leHBvcnQgY29uc3QgQVdTX1JVTV9DT05TVEFOVFMgPSB7XG4gIFRSQUNLX0VSUk9SOiAnQVdTX1JVTV9UUkFDS19FUlJPUicsXG4gIFRSQUNLX1FVRVVFRDogJ0FXU19SVU1fVFJBQ0tfUVVFVUVEJyxcbiAgVFJBQ0tfU1VDQ0VTUzogJ0FXU19SVU1fVFJBQ0tfU1VDQ0VTUydcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEF3c1J1bUV2ZW50VHlwZSA9ICdjbGljaycgfCAncGFnZV92aWV3JyB8IChzdHJpbmcgJiB7fSk7XG5leHBvcnQgdHlwZSBBd3NSdW1Qcm9wZXJ0eSA9IGJvb2xlYW4gfCBudW1iZXIgfCBzdHJpbmc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXdzUnVtVHJhY2tJbnB1dCB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgcGF0aD86IHN0cmluZztcbiAgcmVhZG9ubHkgcHJvcGVydGllcz86IFJlY29yZDxzdHJpbmcsIEF3c1J1bVByb3BlcnR5PjtcbiAgcmVhZG9ubHkgdHlwZTogQXdzUnVtRXZlbnRUeXBlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF3c1J1bUV2ZW50IGV4dGVuZHMgQXdzUnVtVHJhY2tJbnB1dCB7XG4gIHJlYWRvbmx5IGV2ZW50SWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgam91cm5leUlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHNlcXVlbmNlOiBudW1iZXI7XG4gIHJlYWRvbmx5IHRpbWVzdGFtcDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF3c1J1bUFjdGlvbnNPcHRpb25zIHtcbiAgcmVhZG9ubHkgYXBwSWQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRlYm91bmNlTXM/OiBudW1iZXI7XG4gIHJlYWRvbmx5IGRlZHVwZU1zPzogbnVtYmVyO1xuICByZWFkb25seSBlbmFibGVkPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcmVzcGVjdFByaXZhY3lTaWduYWxzPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdGhyb3R0bGVNcz86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBd3NSdW1BY3Rpb25zIHtcbiAgcmVhZG9ubHkgZGVzdHJveTogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgcmVhZG9ubHkgZmx1c2g6ICgpID0+IFByb21pc2U8dm9pZD47XG4gIHJlYWRvbmx5IHRyYWNrOiAoZXZlbnQ6IEF3c1J1bVRyYWNrSW5wdXQpID0+IHZvaWQ7XG59XG5cbmNvbnN0IERFRkFVTFRfREVCT1VOQ0VfTVMgPSAyNTA7XG5jb25zdCBERUZBVUxUX0RFRFVQRV9NUyA9IDEwMDA7XG5jb25zdCBERUZBVUxUX1RIUk9UVExFX01TID0gMTAwMDtcbmNvbnN0IE1BWF9CQVRDSF9TSVpFID0gNTA7XG5jb25zdCBNQVhfUFJPUEVSVElFUyA9IDIwO1xuY29uc3QgTUFYX1NFRU5fRVZFTlRTID0gNTAwO1xuY29uc3QgQkxPQ0tFRF9QUk9QRVJUWV9LRVlTID0gbmV3IFNldChbXG4gICdhY2NvdW50aWQnLFxuICAnYWRkcmVzcycsXG4gICdlbWFpbCcsXG4gICdmaXJzdG5hbWUnLFxuICAnZnVsbG5hbWUnLFxuICAnZ2VvbG9jYXRpb24nLFxuICAnaXAnLFxuICAnaXBhZGRyZXNzJyxcbiAgJ2xhc3RuYW1lJyxcbiAgJ2xhdGl0dWRlJyxcbiAgJ2xvbmdpdHVkZScsXG4gICduYW1lJyxcbiAgJ3Bob25lJyxcbiAgJ3JlZmVycmVyJyxcbiAgJ3Rva2VuJyxcbiAgJ3VzZXJhZ2VudCcsXG4gICd1c2VyaWQnXG5dKTtcbmNvbnN0IEVNQUlMX1BBVFRFUk4gPSAvXFxiW15cXHNAXStAW15cXHNAXStcXC5bXlxcc0BdK1xcYi9pO1xuXG5pbnRlcmZhY2UgUHJpdmFjeU5hdmlnYXRvciBleHRlbmRzIE5hdmlnYXRvciB7XG4gIHJlYWRvbmx5IGdsb2JhbFByaXZhY3lDb250cm9sPzogYm9vbGVhbjtcbn1cblxuY29uc3QgY3JlYXRlSWQgPSAoKTogc3RyaW5nID0+IHtcbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuY3J5cHRvPy5yYW5kb21VVUlEID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGdsb2JhbFRoaXMuY3J5cHRvLnJhbmRvbVVVSUQoKTtcbiAgfVxuXG4gIHJldHVybiBgJHtEYXRlLm5vdygpLnRvU3RyaW5nKDM2KX0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKX1gO1xufTtcblxuY29uc3Qgbm9ybWFsaXplVGV4dCA9ICh2YWx1ZTogdW5rbm93biwgbWF4TGVuZ3RoOiBudW1iZXIpOiBzdHJpbmcgPT5cbiAgU3RyaW5nKHZhbHVlIHx8ICcnKS50cmltKCkuc2xpY2UoMCwgbWF4TGVuZ3RoKTtcblxuY29uc3Qgbm9ybWFsaXplUHJvcGVydHlLZXkgPSAodmFsdWU6IHN0cmluZyk6IHN0cmluZyA9PlxuICB2YWx1ZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1teYS16MC05XS9nLCAnJyk7XG5cbmNvbnN0IHNhbml0aXplUHJvcGVydGllcyA9IChcbiAgcHJvcGVydGllczogUmVjb3JkPHN0cmluZywgQXdzUnVtUHJvcGVydHk+ID0ge31cbik6IFJlY29yZDxzdHJpbmcsIEF3c1J1bVByb3BlcnR5PiA9PiBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKVxuICAuc2xpY2UoMCwgTUFYX1BST1BFUlRJRVMpXG4gIC5yZWR1Y2U8UmVjb3JkPHN0cmluZywgQXdzUnVtUHJvcGVydHk+PigocmVzdWx0LCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICBjb25zdCBwcm9wZXJ0eUtleSA9IG5vcm1hbGl6ZVRleHQoa2V5LCA2NCk7XG4gICAgY29uc3Qgbm9ybWFsaXplZFByb3BlcnR5S2V5ID0gbm9ybWFsaXplUHJvcGVydHlLZXkocHJvcGVydHlLZXkpO1xuXG4gICAgaWYoXG4gICAgICAhcHJvcGVydHlLZXkgfHxcbiAgICAgIEJMT0NLRURfUFJPUEVSVFlfS0VZUy5oYXMobm9ybWFsaXplZFByb3BlcnR5S2V5KSB8fFxuICAgICAgIVsnYm9vbGVhbicsICdudW1iZXInLCAnc3RyaW5nJ10uaW5jbHVkZXModHlwZW9mIHZhbHVlKVxuICAgICkge1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBpZih0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCB0ZXh0VmFsdWUgPSBub3JtYWxpemVUZXh0KHZhbHVlLCAyNTYpO1xuXG4gICAgICBpZih0ZXh0VmFsdWUgJiYgIUVNQUlMX1BBVFRFUk4udGVzdCh0ZXh0VmFsdWUpKSB7XG4gICAgICAgIHJlc3VsdFtwcm9wZXJ0eUtleV0gPSB0ZXh0VmFsdWU7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nIHx8IE51bWJlci5pc0Zpbml0ZSh2YWx1ZSkpIHtcbiAgICAgIHJlc3VsdFtwcm9wZXJ0eUtleV0gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9LCB7fSk7XG5cbmNvbnN0IHNhbml0aXplRXZlbnQgPSAoZXZlbnQ6IEF3c1J1bVRyYWNrSW5wdXQpOiBBd3NSdW1UcmFja0lucHV0IHwgbnVsbCA9PiB7XG4gIGNvbnN0IG5hbWUgPSBub3JtYWxpemVUZXh0KGV2ZW50Lm5hbWUsIDEyOCk7XG4gIGNvbnN0IHR5cGUgPSBub3JtYWxpemVUZXh0KGV2ZW50LnR5cGUsIDY0KTtcblxuICBpZighbmFtZSB8fCAhdHlwZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgcGF0aCA9IG5vcm1hbGl6ZVRleHQoZXZlbnQucGF0aCwgMjU2KS5zcGxpdCgnPycpWzBdLnNwbGl0KCcjJylbMF07XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lLFxuICAgIC4uLihwYXRoID8ge3BhdGh9IDoge30pLFxuICAgIHByb3BlcnRpZXM6IHNhbml0aXplUHJvcGVydGllcyhldmVudC5wcm9wZXJ0aWVzKSxcbiAgICB0eXBlXG4gIH07XG59O1xuXG5jb25zdCBldmVudEZpbmdlcnByaW50ID0gKGV2ZW50OiBBd3NSdW1UcmFja0lucHV0KTogc3RyaW5nID0+IHtcbiAgY29uc3QgcHJvcGVydGllcyA9IE9iamVjdC5lbnRyaWVzKGV2ZW50LnByb3BlcnRpZXMgfHwge30pLnNvcnQoKFtsZWZ0XSwgW3JpZ2h0XSkgPT4gbGVmdC5sb2NhbGVDb21wYXJlKHJpZ2h0KSk7XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShbZXZlbnQudHlwZSwgZXZlbnQubmFtZSwgZXZlbnQucGF0aCB8fCAnJywgcHJvcGVydGllc10pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUF3c1J1bUFjdGlvbnMgPSAoXG4gIGZsdXg6IEZsdXhGcmFtZXdvcmssXG4gIG9wdGlvbnM6IEF3c1J1bUFjdGlvbnNPcHRpb25zID0ge31cbik6IEF3c1J1bUFjdGlvbnMgPT4ge1xuICBjb25zdCBhcHBJZCA9IG5vcm1hbGl6ZVRleHQob3B0aW9ucy5hcHBJZCwgMTI4KTtcbiAgY29uc3QgZGVib3VuY2VNcyA9IE1hdGgubWF4KDAsIG9wdGlvbnMuZGVib3VuY2VNcyA/PyBERUZBVUxUX0RFQk9VTkNFX01TKTtcbiAgY29uc3QgZGVkdXBlTXMgPSBNYXRoLm1heCgwLCBvcHRpb25zLmRlZHVwZU1zID8/IERFRkFVTFRfREVEVVBFX01TKTtcbiAgY29uc3QgZW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlZCAhPT0gZmFsc2U7XG4gIGNvbnN0IHJlc3BlY3RQcml2YWN5U2lnbmFscyA9IG9wdGlvbnMucmVzcGVjdFByaXZhY3lTaWduYWxzICE9PSBmYWxzZTtcbiAgY29uc3QgdGhyb3R0bGVNcyA9IE1hdGgubWF4KDAsIG9wdGlvbnMudGhyb3R0bGVNcyA/PyBERUZBVUxUX1RIUk9UVExFX01TKTtcbiAgY29uc3Qgam91cm5leUlkID0gY3JlYXRlSWQoKTtcbiAgY29uc3QgcGVuZGluZ0V2ZW50cyA9IG5ldyBNYXA8c3RyaW5nLCBBd3NSdW1FdmVudD4oKTtcbiAgY29uc3Qgc2VlbkV2ZW50cyA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG4gIGxldCBmbHVzaFByb21pc2U6IFByb21pc2U8dm9pZD4gfCB1bmRlZmluZWQ7XG4gIGxldCBsYXN0Rmx1c2hBdCA9IDA7XG4gIGxldCBzZXF1ZW5jZSA9IDA7XG4gIGxldCB0aW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ7XG5cbiAgY29uc3QgaGFzUHJpdmFjeVNpZ25hbCA9ICgpOiBib29sZWFuID0+IHtcbiAgICBpZighcmVzcGVjdFByaXZhY3lTaWduYWxzIHx8IHR5cGVvZiBnbG9iYWxUaGlzLm5hdmlnYXRvciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBuYXZpZ2F0b3JTdGF0ZSA9IGdsb2JhbFRoaXMubmF2aWdhdG9yIGFzIFByaXZhY3lOYXZpZ2F0b3I7XG5cbiAgICByZXR1cm4gbmF2aWdhdG9yU3RhdGUuZG9Ob3RUcmFjayA9PT0gJzEnIHx8IG5hdmlnYXRvclN0YXRlLmdsb2JhbFByaXZhY3lDb250cm9sID09PSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IHBydW5lU2VlbkV2ZW50cyA9ICgpOiB2b2lkID0+IHtcbiAgICBpZihzZWVuRXZlbnRzLnNpemUgPD0gTUFYX1NFRU5fRVZFTlRTKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY3V0b2ZmID0gRGF0ZS5ub3coKSAtIGRlZHVwZU1zO1xuICAgIHNlZW5FdmVudHMuZm9yRWFjaCgodGltZXN0YW1wLCBmaW5nZXJwcmludCkgPT4ge1xuICAgICAgaWYodGltZXN0YW1wIDwgY3V0b2ZmKSB7XG4gICAgICAgIHNlZW5FdmVudHMuZGVsZXRlKGZpbmdlcnByaW50KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHdoaWxlKHNlZW5FdmVudHMuc2l6ZSA+IE1BWF9TRUVOX0VWRU5UUykge1xuICAgICAgY29uc3Qgb2xkZXN0RmluZ2VycHJpbnQgPSBzZWVuRXZlbnRzLmtleXMoKS5uZXh0KCkudmFsdWU7XG5cbiAgICAgIGlmKCFvbGRlc3RGaW5nZXJwcmludCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgc2VlbkV2ZW50cy5kZWxldGUob2xkZXN0RmluZ2VycHJpbnQpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBmbHVzaCA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBpZihmbHVzaFByb21pc2UpIHtcbiAgICAgIHJldHVybiBmbHVzaFByb21pc2U7XG4gICAgfVxuXG4gICAgaWYoIWVuYWJsZWQgfHwgIWFwcElkIHx8IGhhc1ByaXZhY3lTaWduYWwoKSB8fCBwZW5kaW5nRXZlbnRzLnNpemUgPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZih0aW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgIHRpbWVyID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IGV2ZW50cyA9IFsuLi5wZW5kaW5nRXZlbnRzLnZhbHVlcygpXTtcbiAgICBwZW5kaW5nRXZlbnRzLmNsZWFyKCk7XG4gICAgbGFzdEZsdXNoQXQgPSBEYXRlLm5vdygpO1xuXG4gICAgZmx1c2hQcm9taXNlID0gKGFzeW5jICgpID0+IHtcbiAgICAgIGZvcihsZXQgaW5kZXggPSAwOyBpbmRleCA8IGV2ZW50cy5sZW5ndGg7IGluZGV4ICs9IE1BWF9CQVRDSF9TSVpFKSB7XG4gICAgICAgIGNvbnN0IGJhdGNoRXZlbnRzID0gZXZlbnRzLnNsaWNlKGluZGV4LCBpbmRleCArIE1BWF9CQVRDSF9TSVpFKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHJ1bU11dGF0aW9uKGZsdXgsICd0cmFjaycsICdydW0nLCB7XG4gICAgICAgICAgICBiYXRjaDoge1xuICAgICAgICAgICAgICB0eXBlOiAnUnVtQmF0Y2hJbnB1dCEnLFxuICAgICAgICAgICAgICB2YWx1ZToge2FwcElkLCBldmVudHM6IGJhdGNoRXZlbnRzfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sIFsnYWNjZXB0ZWQnLCAnYXBwSWQnXSk7XG4gICAgICAgICAgYXdhaXQgZmx1eC5kaXNwYXRjaCh7YXBwSWQsIGV2ZW50czogYmF0Y2hFdmVudHMsIHR5cGU6IEFXU19SVU1fQ09OU1RBTlRTLlRSQUNLX1NVQ0NFU1N9KTtcbiAgICAgICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgICAgIGV2ZW50cy5zbGljZShpbmRleCkuZm9yRWFjaCgoZXZlbnQpID0+IHBlbmRpbmdFdmVudHMuc2V0KGV2ZW50RmluZ2VycHJpbnQoZXZlbnQpLCBldmVudCkpO1xuICAgICAgICAgIGF3YWl0IGZsdXguZGlzcGF0Y2goe2FwcElkLCBlcnJvciwgZXZlbnRzOiBiYXRjaEV2ZW50cywgdHlwZTogQVdTX1JVTV9DT05TVEFOVFMuVFJBQ0tfRVJST1J9KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSgpXG4gICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIGZsdXNoUHJvbWlzZSA9IHVuZGVmaW5lZDtcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIGZsdXNoUHJvbWlzZTtcbiAgfTtcblxuICBjb25zdCBzY2hlZHVsZUZsdXNoID0gKCk6IHZvaWQgPT4ge1xuICAgIGlmKHRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgIH1cblxuICAgIGNvbnN0IHRocm90dGxlUmVtYWluaW5nID0gTWF0aC5tYXgoMCwgdGhyb3R0bGVNcyAtIChEYXRlLm5vdygpIC0gbGFzdEZsdXNoQXQpKTtcbiAgICB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4gdm9pZCBmbHVzaCgpLCBNYXRoLm1heChkZWJvdW5jZU1zLCB0aHJvdHRsZVJlbWFpbmluZykpO1xuICB9O1xuXG4gIGNvbnN0IHRyYWNrID0gKGlucHV0OiBBd3NSdW1UcmFja0lucHV0KTogdm9pZCA9PiB7XG4gICAgaWYoIWVuYWJsZWQgfHwgIWFwcElkIHx8IGhhc1ByaXZhY3lTaWduYWwoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGV2ZW50ID0gc2FuaXRpemVFdmVudChpbnB1dCk7XG5cbiAgICBpZighZXZlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5nZXJwcmludCA9IGV2ZW50RmluZ2VycHJpbnQoZXZlbnQpO1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3QgbGFzdFNlZW5BdCA9IHNlZW5FdmVudHMuZ2V0KGZpbmdlcnByaW50KSB8fCAwO1xuXG4gICAgaWYoc2VlbkV2ZW50cy5oYXMoZmluZ2VycHJpbnQpICYmIG5vdyAtIGxhc3RTZWVuQXQgPCBkZWR1cGVNcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHNlZW5FdmVudHMuc2V0KGZpbmdlcnByaW50LCBub3cpO1xuICAgIHBydW5lU2VlbkV2ZW50cygpO1xuICAgIHNlcXVlbmNlICs9IDE7XG5cbiAgICBjb25zdCBxdWV1ZWRFdmVudDogQXdzUnVtRXZlbnQgPSB7XG4gICAgICAuLi5ldmVudCxcbiAgICAgIGV2ZW50SWQ6IGNyZWF0ZUlkKCksXG4gICAgICBqb3VybmV5SWQsXG4gICAgICBzZXF1ZW5jZSxcbiAgICAgIHRpbWVzdGFtcDogbm93XG4gICAgfTtcblxuICAgIHBlbmRpbmdFdmVudHMuc2V0KGZpbmdlcnByaW50LCBxdWV1ZWRFdmVudCk7XG4gICAgdm9pZCBmbHV4LmRpc3BhdGNoKHthcHBJZCwgZXZlbnQ6IHF1ZXVlZEV2ZW50LCB0eXBlOiBBV1NfUlVNX0NPTlNUQU5UUy5UUkFDS19RVUVVRUR9KTtcbiAgICBzY2hlZHVsZUZsdXNoKCk7XG4gIH07XG5cbiAgY29uc3QgZGVzdHJveSA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBpZih0aW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgIHRpbWVyID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGF3YWl0IGZsdXNoKCk7XG4gICAgc2VlbkV2ZW50cy5jbGVhcigpO1xuICB9O1xuXG4gIHJldHVybiB7ZGVzdHJveSwgZmx1c2gsIHRyYWNrfTtcbn07XG4iXSwibmFtZXMiOlsicnVtTXV0YXRpb24iLCJBV1NfUlVNX0NPTlNUQU5UUyIsIlRSQUNLX0VSUk9SIiwiVFJBQ0tfUVVFVUVEIiwiVFJBQ0tfU1VDQ0VTUyIsIkRFRkFVTFRfREVCT1VOQ0VfTVMiLCJERUZBVUxUX0RFRFVQRV9NUyIsIkRFRkFVTFRfVEhST1RUTEVfTVMiLCJNQVhfQkFUQ0hfU0laRSIsIk1BWF9QUk9QRVJUSUVTIiwiTUFYX1NFRU5fRVZFTlRTIiwiQkxPQ0tFRF9QUk9QRVJUWV9LRVlTIiwiU2V0IiwiRU1BSUxfUEFUVEVSTiIsImNyZWF0ZUlkIiwiZ2xvYmFsVGhpcyIsImNyeXB0byIsInJhbmRvbVVVSUQiLCJEYXRlIiwibm93IiwidG9TdHJpbmciLCJNYXRoIiwicmFuZG9tIiwic2xpY2UiLCJub3JtYWxpemVUZXh0IiwidmFsdWUiLCJtYXhMZW5ndGgiLCJTdHJpbmciLCJ0cmltIiwibm9ybWFsaXplUHJvcGVydHlLZXkiLCJ0b0xvd2VyQ2FzZSIsInJlcGxhY2UiLCJzYW5pdGl6ZVByb3BlcnRpZXMiLCJwcm9wZXJ0aWVzIiwiT2JqZWN0IiwiZW50cmllcyIsInJlZHVjZSIsInJlc3VsdCIsImtleSIsInByb3BlcnR5S2V5Iiwibm9ybWFsaXplZFByb3BlcnR5S2V5IiwiaGFzIiwiaW5jbHVkZXMiLCJ0ZXh0VmFsdWUiLCJ0ZXN0IiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJzYW5pdGl6ZUV2ZW50IiwiZXZlbnQiLCJuYW1lIiwidHlwZSIsInBhdGgiLCJzcGxpdCIsImV2ZW50RmluZ2VycHJpbnQiLCJzb3J0IiwibGVmdCIsInJpZ2h0IiwibG9jYWxlQ29tcGFyZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJjcmVhdGVBd3NSdW1BY3Rpb25zIiwiZmx1eCIsIm9wdGlvbnMiLCJhcHBJZCIsImRlYm91bmNlTXMiLCJtYXgiLCJkZWR1cGVNcyIsImVuYWJsZWQiLCJyZXNwZWN0UHJpdmFjeVNpZ25hbHMiLCJ0aHJvdHRsZU1zIiwiam91cm5leUlkIiwicGVuZGluZ0V2ZW50cyIsIk1hcCIsInNlZW5FdmVudHMiLCJmbHVzaFByb21pc2UiLCJsYXN0Rmx1c2hBdCIsInNlcXVlbmNlIiwidGltZXIiLCJoYXNQcml2YWN5U2lnbmFsIiwibmF2aWdhdG9yIiwibmF2aWdhdG9yU3RhdGUiLCJkb05vdFRyYWNrIiwiZ2xvYmFsUHJpdmFjeUNvbnRyb2wiLCJwcnVuZVNlZW5FdmVudHMiLCJzaXplIiwiY3V0b2ZmIiwiZm9yRWFjaCIsInRpbWVzdGFtcCIsImZpbmdlcnByaW50IiwiZGVsZXRlIiwib2xkZXN0RmluZ2VycHJpbnQiLCJrZXlzIiwibmV4dCIsImZsdXNoIiwiY2xlYXJUaW1lb3V0IiwidW5kZWZpbmVkIiwiZXZlbnRzIiwidmFsdWVzIiwiY2xlYXIiLCJpbmRleCIsImxlbmd0aCIsImJhdGNoRXZlbnRzIiwiYmF0Y2giLCJkaXNwYXRjaCIsImVycm9yIiwic2V0IiwiZmluYWxseSIsInNjaGVkdWxlRmx1c2giLCJ0aHJvdHRsZVJlbWFpbmluZyIsInNldFRpbWVvdXQiLCJ0cmFjayIsImlucHV0IiwibGFzdFNl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
@@ -16,4 +16,3 @@ export interface ConnectionApiResultsType extends ApiResultsType {
16
16
  };
17
17
  }
18
18
  export declare const createConnectionActions: (flux: FluxFramework) => ConnectionActions;
19
- //# sourceMappingURL=connectionActions.d.ts.map
@@ -31,4 +31,3 @@ export interface ContentActions {
31
31
  updateContentAdapterOptions: (options: ContentAdapterOptions) => void;
32
32
  }
33
33
  export declare const createContentActions: (flux: FluxFramework, options?: ContentActionsOptions) => ContentActions;
34
- //# sourceMappingURL=contentActions.d.ts.map
@@ -27,4 +27,3 @@ export interface ConversationActions {
27
27
  updateConversationAdapterOptions: (options: ConversationAdapterOptions) => void;
28
28
  }
29
29
  export declare const createConversationActions: (flux: FluxFramework, options?: ConversationActionsOptions) => ConversationActions;
30
- //# sourceMappingURL=conversationActions.d.ts.map
@@ -3,38 +3,38 @@ import type { User } from '../../adapters/userAdapter/userAdapter.js';
3
3
  import type { ApiOptions } from '../../utils/api.js';
4
4
  import type { CustomerNotification, CustomerOrder, MailingList, ShopifyCustomerOrderInput, SupportTicket, SupportTicketEvent, SupportTicketMessage, SupportTicketStatus } from '../../types/crm.types.js';
5
5
  export declare const CRM_CONSTANTS: {
6
- readonly ADD_SUPPORT_TICKET_MESSAGE_ERROR: "CRM_ADD_SUPPORT_TICKET_MESSAGE_ERROR";
7
- readonly ADD_SUPPORT_TICKET_MESSAGE_SUCCESS: "CRM_ADD_SUPPORT_TICKET_MESSAGE_SUCCESS";
8
- readonly ADD_USER_TO_MAILING_LIST_ERROR: "CRM_ADD_USER_TO_MAILING_LIST_ERROR";
9
- readonly ADD_USER_TO_MAILING_LIST_SUCCESS: "CRM_ADD_USER_TO_MAILING_LIST_SUCCESS";
10
- readonly CREATE_MAILING_LIST_ERROR: "CRM_CREATE_MAILING_LIST_ERROR";
11
- readonly CREATE_MAILING_LIST_SUCCESS: "CRM_CREATE_MAILING_LIST_SUCCESS";
12
- readonly CREATE_SUPPORT_TICKET_ERROR: "CRM_CREATE_SUPPORT_TICKET_ERROR";
13
- readonly CREATE_SUPPORT_TICKET_SUCCESS: "CRM_CREATE_SUPPORT_TICKET_SUCCESS";
14
- readonly CUSTOMER_NOTIFICATIONS_BY_USER_ERROR: "CRM_CUSTOMER_NOTIFICATIONS_BY_USER_ERROR";
15
- readonly CUSTOMER_NOTIFICATIONS_BY_USER_SUCCESS: "CRM_CUSTOMER_NOTIFICATIONS_BY_USER_SUCCESS";
16
- readonly CUSTOMER_ORDERS_BY_USER_ERROR: "CRM_CUSTOMER_ORDERS_BY_USER_ERROR";
17
- readonly CUSTOMER_ORDERS_BY_USER_SUCCESS: "CRM_CUSTOMER_ORDERS_BY_USER_SUCCESS";
18
- readonly ELIGIBLE_MAILING_USERS_ERROR: "CRM_ELIGIBLE_MAILING_USERS_ERROR";
19
- readonly ELIGIBLE_MAILING_USERS_SUCCESS: "CRM_ELIGIBLE_MAILING_USERS_SUCCESS";
20
- readonly INGEST_SHOPIFY_CUSTOMER_ORDER_ERROR: "CRM_INGEST_SHOPIFY_CUSTOMER_ORDER_ERROR";
21
- readonly INGEST_SHOPIFY_CUSTOMER_ORDER_SUCCESS: "CRM_INGEST_SHOPIFY_CUSTOMER_ORDER_SUCCESS";
22
- readonly MAILING_LIST_USERS_ERROR: "CRM_MAILING_LIST_USERS_ERROR";
23
- readonly MAILING_LIST_USERS_SUCCESS: "CRM_MAILING_LIST_USERS_SUCCESS";
24
- readonly MAILING_LISTS_ERROR: "CRM_MAILING_LISTS_ERROR";
25
- readonly MAILING_LISTS_SUCCESS: "CRM_MAILING_LISTS_SUCCESS";
26
- readonly REMOVE_USER_FROM_MAILING_LIST_ERROR: "CRM_REMOVE_USER_FROM_MAILING_LIST_ERROR";
27
- readonly REMOVE_USER_FROM_MAILING_LIST_SUCCESS: "CRM_REMOVE_USER_FROM_MAILING_LIST_SUCCESS";
28
- readonly SUPPORT_TICKET_EVENTS_ERROR: "CRM_SUPPORT_TICKET_EVENTS_ERROR";
29
- readonly SUPPORT_TICKET_EVENTS_SUCCESS: "CRM_SUPPORT_TICKET_EVENTS_SUCCESS";
30
- readonly SUPPORT_TICKET_MESSAGES_ERROR: "CRM_SUPPORT_TICKET_MESSAGES_ERROR";
31
- readonly SUPPORT_TICKET_MESSAGES_SUCCESS: "CRM_SUPPORT_TICKET_MESSAGES_SUCCESS";
32
- readonly SUPPORT_TICKETS_ERROR: "CRM_SUPPORT_TICKETS_ERROR";
33
- readonly SUPPORT_TICKETS_SUCCESS: "CRM_SUPPORT_TICKETS_SUCCESS";
34
- readonly UPDATE_SUPPORT_TICKET_STATUS_ERROR: "CRM_UPDATE_SUPPORT_TICKET_STATUS_ERROR";
35
- readonly UPDATE_SUPPORT_TICKET_STATUS_SUCCESS: "CRM_UPDATE_SUPPORT_TICKET_STATUS_SUCCESS";
36
- readonly USERS_BY_PURCHASED_PRODUCT_ERROR: "CRM_USERS_BY_PURCHASED_PRODUCT_ERROR";
37
- readonly USERS_BY_PURCHASED_PRODUCT_SUCCESS: "CRM_USERS_BY_PURCHASED_PRODUCT_SUCCESS";
6
+ readonly ADD_SUPPORT_TICKET_MESSAGE_ERROR: 'CRM_ADD_SUPPORT_TICKET_MESSAGE_ERROR';
7
+ readonly ADD_SUPPORT_TICKET_MESSAGE_SUCCESS: 'CRM_ADD_SUPPORT_TICKET_MESSAGE_SUCCESS';
8
+ readonly ADD_USER_TO_MAILING_LIST_ERROR: 'CRM_ADD_USER_TO_MAILING_LIST_ERROR';
9
+ readonly ADD_USER_TO_MAILING_LIST_SUCCESS: 'CRM_ADD_USER_TO_MAILING_LIST_SUCCESS';
10
+ readonly CREATE_MAILING_LIST_ERROR: 'CRM_CREATE_MAILING_LIST_ERROR';
11
+ readonly CREATE_MAILING_LIST_SUCCESS: 'CRM_CREATE_MAILING_LIST_SUCCESS';
12
+ readonly CREATE_SUPPORT_TICKET_ERROR: 'CRM_CREATE_SUPPORT_TICKET_ERROR';
13
+ readonly CREATE_SUPPORT_TICKET_SUCCESS: 'CRM_CREATE_SUPPORT_TICKET_SUCCESS';
14
+ readonly CUSTOMER_NOTIFICATIONS_BY_USER_ERROR: 'CRM_CUSTOMER_NOTIFICATIONS_BY_USER_ERROR';
15
+ readonly CUSTOMER_NOTIFICATIONS_BY_USER_SUCCESS: 'CRM_CUSTOMER_NOTIFICATIONS_BY_USER_SUCCESS';
16
+ readonly CUSTOMER_ORDERS_BY_USER_ERROR: 'CRM_CUSTOMER_ORDERS_BY_USER_ERROR';
17
+ readonly CUSTOMER_ORDERS_BY_USER_SUCCESS: 'CRM_CUSTOMER_ORDERS_BY_USER_SUCCESS';
18
+ readonly ELIGIBLE_MAILING_USERS_ERROR: 'CRM_ELIGIBLE_MAILING_USERS_ERROR';
19
+ readonly ELIGIBLE_MAILING_USERS_SUCCESS: 'CRM_ELIGIBLE_MAILING_USERS_SUCCESS';
20
+ readonly INGEST_SHOPIFY_CUSTOMER_ORDER_ERROR: 'CRM_INGEST_SHOPIFY_CUSTOMER_ORDER_ERROR';
21
+ readonly INGEST_SHOPIFY_CUSTOMER_ORDER_SUCCESS: 'CRM_INGEST_SHOPIFY_CUSTOMER_ORDER_SUCCESS';
22
+ readonly MAILING_LIST_USERS_ERROR: 'CRM_MAILING_LIST_USERS_ERROR';
23
+ readonly MAILING_LIST_USERS_SUCCESS: 'CRM_MAILING_LIST_USERS_SUCCESS';
24
+ readonly MAILING_LISTS_ERROR: 'CRM_MAILING_LISTS_ERROR';
25
+ readonly MAILING_LISTS_SUCCESS: 'CRM_MAILING_LISTS_SUCCESS';
26
+ readonly REMOVE_USER_FROM_MAILING_LIST_ERROR: 'CRM_REMOVE_USER_FROM_MAILING_LIST_ERROR';
27
+ readonly REMOVE_USER_FROM_MAILING_LIST_SUCCESS: 'CRM_REMOVE_USER_FROM_MAILING_LIST_SUCCESS';
28
+ readonly SUPPORT_TICKET_EVENTS_ERROR: 'CRM_SUPPORT_TICKET_EVENTS_ERROR';
29
+ readonly SUPPORT_TICKET_EVENTS_SUCCESS: 'CRM_SUPPORT_TICKET_EVENTS_SUCCESS';
30
+ readonly SUPPORT_TICKET_MESSAGES_ERROR: 'CRM_SUPPORT_TICKET_MESSAGES_ERROR';
31
+ readonly SUPPORT_TICKET_MESSAGES_SUCCESS: 'CRM_SUPPORT_TICKET_MESSAGES_SUCCESS';
32
+ readonly SUPPORT_TICKETS_ERROR: 'CRM_SUPPORT_TICKETS_ERROR';
33
+ readonly SUPPORT_TICKETS_SUCCESS: 'CRM_SUPPORT_TICKETS_SUCCESS';
34
+ readonly UPDATE_SUPPORT_TICKET_STATUS_ERROR: 'CRM_UPDATE_SUPPORT_TICKET_STATUS_ERROR';
35
+ readonly UPDATE_SUPPORT_TICKET_STATUS_SUCCESS: 'CRM_UPDATE_SUPPORT_TICKET_STATUS_SUCCESS';
36
+ readonly USERS_BY_PURCHASED_PRODUCT_ERROR: 'CRM_USERS_BY_PURCHASED_PRODUCT_ERROR';
37
+ readonly USERS_BY_PURCHASED_PRODUCT_SUCCESS: 'CRM_USERS_BY_PURCHASED_PRODUCT_SUCCESS';
38
38
  };
39
39
  export interface CrmActionsOptions {
40
40
  }
@@ -84,4 +84,3 @@ export interface CrmActions {
84
84
  readonly usersByPurchasedProduct: (productId: string, userProps?: string[], requestOptions?: ApiOptions) => Promise<User[]>;
85
85
  }
86
86
  export declare const createCrmActions: (flux: FluxFramework, _options?: CrmActionsOptions) => CrmActions;
87
- //# sourceMappingURL=crmActions.d.ts.map
@@ -62,4 +62,3 @@ export interface EventActions {
62
62
  * });
63
63
  */
64
64
  export declare const createEventActions: (flux: FluxFramework, options?: EventActionsOptions) => EventActions;
65
- //# sourceMappingURL=eventActions.d.ts.map
@@ -27,4 +27,3 @@ export interface GroupActions {
27
27
  updateGroupAdapterOptions: (options: GroupAdapterOptions) => void;
28
28
  }
29
29
  export declare const createGroupActions: (flux: FluxFramework, options?: GroupActionsOptions) => GroupActions;
30
- //# sourceMappingURL=groupActions.d.ts.map
@@ -59,4 +59,3 @@ export interface ImageActions {
59
59
  * });
60
60
  */
61
61
  export declare const createImageActions: (flux: FluxFramework, options?: ImageActionsOptions) => ImageActions;
62
- //# sourceMappingURL=imageActions.d.ts.map