@launchdarkly/js-sdk-common 2.8.0 → 2.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/dist/api/platform/Crypto.d.ts +17 -3
  3. package/dist/api/platform/Crypto.d.ts.map +1 -1
  4. package/dist/api/platform/EventSource.d.ts +3 -1
  5. package/dist/api/platform/EventSource.d.ts.map +1 -1
  6. package/dist/api/platform/Requests.d.ts +28 -0
  7. package/dist/api/platform/Requests.d.ts.map +1 -1
  8. package/dist/datasource/DataSourceErrorKinds.d.ts +7 -0
  9. package/dist/datasource/DataSourceErrorKinds.d.ts.map +1 -0
  10. package/dist/datasource/errors.d.ts +17 -0
  11. package/dist/datasource/errors.d.ts.map +1 -0
  12. package/dist/datasource/index.d.ts +4 -0
  13. package/dist/datasource/index.d.ts.map +1 -0
  14. package/dist/errors.d.ts +0 -11
  15. package/dist/errors.d.ts.map +1 -1
  16. package/dist/index.cjs +2477 -0
  17. package/dist/index.cjs.map +1 -0
  18. package/dist/index.d.ts +2 -1
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.mjs +2430 -0
  21. package/dist/index.mjs.map +1 -0
  22. package/dist/internal/events/EventProcessor.d.ts +2 -1
  23. package/dist/internal/events/EventProcessor.d.ts.map +1 -1
  24. package/dist/internal/events/EventSender.d.ts +2 -1
  25. package/dist/internal/events/EventSender.d.ts.map +1 -1
  26. package/dist/internal/events/InputClickEvent.d.ts +11 -0
  27. package/dist/internal/events/InputClickEvent.d.ts.map +1 -0
  28. package/dist/internal/events/InputCustomEvent.d.ts +2 -1
  29. package/dist/internal/events/InputCustomEvent.d.ts.map +1 -1
  30. package/dist/internal/events/InputEvent.d.ts +3 -1
  31. package/dist/internal/events/InputEvent.d.ts.map +1 -1
  32. package/dist/internal/events/InputPageViewEvent.d.ts +10 -0
  33. package/dist/internal/events/InputPageViewEvent.d.ts.map +1 -0
  34. package/dist/internal/events/LDInternalOptions.d.ts +1 -0
  35. package/dist/internal/events/LDInternalOptions.d.ts.map +1 -1
  36. package/dist/internal/index.d.ts +1 -1
  37. package/dist/internal/index.d.ts.map +1 -1
  38. package/dist/internal/stream/StreamingProcessor.d.ts +3 -2
  39. package/dist/internal/stream/StreamingProcessor.d.ts.map +1 -1
  40. package/dist/internal/stream/types.d.ts +1 -1
  41. package/dist/internal/stream/types.d.ts.map +1 -1
  42. package/dist/utils/http.d.ts +3 -2
  43. package/dist/utils/http.d.ts.map +1 -1
  44. package/package.json +18 -7
  45. package/dist/AttributeReference.js +0 -126
  46. package/dist/AttributeReference.js.map +0 -1
  47. package/dist/Context.js +0 -382
  48. package/dist/Context.js.map +0 -1
  49. package/dist/ContextFilter.js +0 -124
  50. package/dist/ContextFilter.js.map +0 -1
  51. package/dist/api/context/LDContext.js +0 -3
  52. package/dist/api/context/LDContext.js.map +0 -1
  53. package/dist/api/context/LDContextCommon.js +0 -3
  54. package/dist/api/context/LDContextCommon.js.map +0 -1
  55. package/dist/api/context/LDContextMeta.js +0 -3
  56. package/dist/api/context/LDContextMeta.js.map +0 -1
  57. package/dist/api/context/LDMultiKindContext.js +0 -3
  58. package/dist/api/context/LDMultiKindContext.js.map +0 -1
  59. package/dist/api/context/LDSingleKindContext.js +0 -3
  60. package/dist/api/context/LDSingleKindContext.js.map +0 -1
  61. package/dist/api/context/LDUser.js +0 -3
  62. package/dist/api/context/LDUser.js.map +0 -1
  63. package/dist/api/context/index.js +0 -23
  64. package/dist/api/context/index.js.map +0 -1
  65. package/dist/api/data/LDEvaluationDetail.js +0 -3
  66. package/dist/api/data/LDEvaluationDetail.js.map +0 -1
  67. package/dist/api/data/LDEvaluationReason.js +0 -3
  68. package/dist/api/data/LDEvaluationReason.js.map +0 -1
  69. package/dist/api/data/LDFlagSet.js +0 -3
  70. package/dist/api/data/LDFlagSet.js.map +0 -1
  71. package/dist/api/data/LDFlagValue.js +0 -3
  72. package/dist/api/data/LDFlagValue.js.map +0 -1
  73. package/dist/api/data/index.js +0 -21
  74. package/dist/api/data/index.js.map +0 -1
  75. package/dist/api/index.js +0 -24
  76. package/dist/api/index.js.map +0 -1
  77. package/dist/api/logging/BasicLoggerOptions.js +0 -3
  78. package/dist/api/logging/BasicLoggerOptions.js.map +0 -1
  79. package/dist/api/logging/LDLogLevel.js +0 -3
  80. package/dist/api/logging/LDLogLevel.js.map +0 -1
  81. package/dist/api/logging/LDLogger.js +0 -3
  82. package/dist/api/logging/LDLogger.js.map +0 -1
  83. package/dist/api/logging/index.js +0 -20
  84. package/dist/api/logging/index.js.map +0 -1
  85. package/dist/api/options/LDClientContext.js +0 -3
  86. package/dist/api/options/LDClientContext.js.map +0 -1
  87. package/dist/api/options/index.js +0 -4
  88. package/dist/api/options/index.js.map +0 -1
  89. package/dist/api/platform/AutoEnv.js +0 -20
  90. package/dist/api/platform/AutoEnv.js.map +0 -1
  91. package/dist/api/platform/Crypto.js +0 -3
  92. package/dist/api/platform/Crypto.js.map +0 -1
  93. package/dist/api/platform/Encoding.js +0 -3
  94. package/dist/api/platform/Encoding.js.map +0 -1
  95. package/dist/api/platform/EventSource.js +0 -3
  96. package/dist/api/platform/EventSource.js.map +0 -1
  97. package/dist/api/platform/Filesystem.js +0 -3
  98. package/dist/api/platform/Filesystem.js.map +0 -1
  99. package/dist/api/platform/Info.js +0 -3
  100. package/dist/api/platform/Info.js.map +0 -1
  101. package/dist/api/platform/Platform.js +0 -3
  102. package/dist/api/platform/Platform.js.map +0 -1
  103. package/dist/api/platform/Requests.js +0 -3
  104. package/dist/api/platform/Requests.js.map +0 -1
  105. package/dist/api/platform/Storage.js +0 -3
  106. package/dist/api/platform/Storage.js.map +0 -1
  107. package/dist/api/platform/index.js +0 -26
  108. package/dist/api/platform/index.js.map +0 -1
  109. package/dist/api/subsystem/LDContextDeduplicator.js +0 -3
  110. package/dist/api/subsystem/LDContextDeduplicator.js.map +0 -1
  111. package/dist/api/subsystem/LDEventProcessor.js +0 -3
  112. package/dist/api/subsystem/LDEventProcessor.js.map +0 -1
  113. package/dist/api/subsystem/LDEventSender.js +0 -15
  114. package/dist/api/subsystem/LDEventSender.js.map +0 -1
  115. package/dist/api/subsystem/LDStreamProcessor.js +0 -3
  116. package/dist/api/subsystem/LDStreamProcessor.js.map +0 -1
  117. package/dist/api/subsystem/index.js +0 -7
  118. package/dist/api/subsystem/index.js.map +0 -1
  119. package/dist/errors.js +0 -78
  120. package/dist/errors.js.map +0 -1
  121. package/dist/index.js +0 -31
  122. package/dist/index.js.map +0 -1
  123. package/dist/internal/context/index.js +0 -38
  124. package/dist/internal/context/index.js.map +0 -1
  125. package/dist/internal/diagnostics/DiagnosticsManager.js +0 -70
  126. package/dist/internal/diagnostics/DiagnosticsManager.js.map +0 -1
  127. package/dist/internal/diagnostics/index.js +0 -6
  128. package/dist/internal/diagnostics/index.js.map +0 -1
  129. package/dist/internal/diagnostics/types.js +0 -3
  130. package/dist/internal/diagnostics/types.js.map +0 -1
  131. package/dist/internal/evaluation/ErrorKinds.js +0 -15
  132. package/dist/internal/evaluation/ErrorKinds.js.map +0 -1
  133. package/dist/internal/evaluation/EventFactoryBase.js +0 -38
  134. package/dist/internal/evaluation/EventFactoryBase.js.map +0 -1
  135. package/dist/internal/evaluation/index.js +0 -8
  136. package/dist/internal/evaluation/index.js.map +0 -1
  137. package/dist/internal/events/ClientMessages.js +0 -14
  138. package/dist/internal/events/ClientMessages.js.map +0 -1
  139. package/dist/internal/events/EventProcessor.js +0 -239
  140. package/dist/internal/events/EventProcessor.js.map +0 -1
  141. package/dist/internal/events/EventSender.js +0 -77
  142. package/dist/internal/events/EventSender.js.map +0 -1
  143. package/dist/internal/events/EventSummarizer.js +0 -84
  144. package/dist/internal/events/EventSummarizer.js.map +0 -1
  145. package/dist/internal/events/InputCustomEvent.js +0 -19
  146. package/dist/internal/events/InputCustomEvent.js.map +0 -1
  147. package/dist/internal/events/InputEvalEvent.js +0 -38
  148. package/dist/internal/events/InputEvalEvent.js.map +0 -1
  149. package/dist/internal/events/InputEvent.js +0 -3
  150. package/dist/internal/events/InputEvent.js.map +0 -1
  151. package/dist/internal/events/InputEventBase.js +0 -11
  152. package/dist/internal/events/InputEventBase.js.map +0 -1
  153. package/dist/internal/events/InputIdentifyEvent.js +0 -12
  154. package/dist/internal/events/InputIdentifyEvent.js.map +0 -1
  155. package/dist/internal/events/InputMigrationEvent.js +0 -7
  156. package/dist/internal/events/InputMigrationEvent.js.map +0 -1
  157. package/dist/internal/events/LDInternalOptions.js +0 -3
  158. package/dist/internal/events/LDInternalOptions.js.map +0 -1
  159. package/dist/internal/events/LDInvalidSDKKeyError.js +0 -10
  160. package/dist/internal/events/LDInvalidSDKKeyError.js.map +0 -1
  161. package/dist/internal/events/NullEventProcessor.js +0 -11
  162. package/dist/internal/events/NullEventProcessor.js.map +0 -1
  163. package/dist/internal/events/SummaryCounter.js +0 -20
  164. package/dist/internal/events/SummaryCounter.js.map +0 -1
  165. package/dist/internal/events/guards.js +0 -20
  166. package/dist/internal/events/guards.js.map +0 -1
  167. package/dist/internal/events/index.js +0 -18
  168. package/dist/internal/events/index.js.map +0 -1
  169. package/dist/internal/events/sampling.js +0 -23
  170. package/dist/internal/events/sampling.js.map +0 -1
  171. package/dist/internal/index.js +0 -22
  172. package/dist/internal/index.js.map +0 -1
  173. package/dist/internal/stream/StreamingProcessor.js +0 -112
  174. package/dist/internal/stream/StreamingProcessor.js.map +0 -1
  175. package/dist/internal/stream/index.js +0 -6
  176. package/dist/internal/stream/index.js.map +0 -1
  177. package/dist/internal/stream/types.js +0 -3
  178. package/dist/internal/stream/types.js.map +0 -1
  179. package/dist/logging/BasicLogger.js +0 -97
  180. package/dist/logging/BasicLogger.js.map +0 -1
  181. package/dist/logging/SafeLogger.js +0 -63
  182. package/dist/logging/SafeLogger.js.map +0 -1
  183. package/dist/logging/createSafeLogger.js +0 -16
  184. package/dist/logging/createSafeLogger.js.map +0 -1
  185. package/dist/logging/format.js +0 -156
  186. package/dist/logging/format.js.map +0 -1
  187. package/dist/logging/index.js +0 -10
  188. package/dist/logging/index.js.map +0 -1
  189. package/dist/options/ApplicationTags.js +0 -55
  190. package/dist/options/ApplicationTags.js.map +0 -1
  191. package/dist/options/ClientContext.js +0 -20
  192. package/dist/options/ClientContext.js.map +0 -1
  193. package/dist/options/OptionMessages.js +0 -33
  194. package/dist/options/OptionMessages.js.map +0 -1
  195. package/dist/options/ServiceEndpoints.js +0 -77
  196. package/dist/options/ServiceEndpoints.js.map +0 -1
  197. package/dist/options/index.js +0 -15
  198. package/dist/options/index.js.map +0 -1
  199. package/dist/utils/VoidFunction.js +0 -3
  200. package/dist/utils/VoidFunction.js.map +0 -1
  201. package/dist/utils/cancelableTimedPromise.js +0 -30
  202. package/dist/utils/cancelableTimedPromise.js.map +0 -1
  203. package/dist/utils/clone.js +0 -10
  204. package/dist/utils/clone.js.map +0 -1
  205. package/dist/utils/date.js +0 -9
  206. package/dist/utils/date.js.map +0 -1
  207. package/dist/utils/debounce.js +0 -33
  208. package/dist/utils/debounce.js.map +0 -1
  209. package/dist/utils/deepCompact.js +0 -24
  210. package/dist/utils/deepCompact.js.map +0 -1
  211. package/dist/utils/fast-deep-equal/index.js +0 -90
  212. package/dist/utils/fast-deep-equal/index.js.map +0 -1
  213. package/dist/utils/http.js +0 -53
  214. package/dist/utils/http.js.map +0 -1
  215. package/dist/utils/index.js +0 -27
  216. package/dist/utils/index.js.map +0 -1
  217. package/dist/utils/isEmptyObject.js +0 -5
  218. package/dist/utils/isEmptyObject.js.map +0 -1
  219. package/dist/utils/noop.js +0 -4
  220. package/dist/utils/noop.js.map +0 -1
  221. package/dist/utils/sleep.js +0 -7
  222. package/dist/utils/sleep.js.map +0 -1
  223. package/dist/utils/timedPromise.js +0 -17
  224. package/dist/utils/timedPromise.js.map +0 -1
  225. package/dist/validators.js +0 -175
  226. package/dist/validators.js.map +0 -1
package/dist/Context.js DELETED
@@ -1,382 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const AttributeReference_1 = require("./AttributeReference");
4
- const context_1 = require("./internal/context");
5
- const validators_1 = require("./validators");
6
- // The general strategy for the context is to transform the passed in context
7
- // as little as possible. We do convert the legacy users to a single kind
8
- // context, but we do not translate all passed contexts into a rigid structure.
9
- // The context will have to be copied for events, but we want to avoid any
10
- // copying that we can.
11
- // So we validate that the information we are given is correct, and then we
12
- // just proxy calls with a nicely typed interface.
13
- // This is to reduce work on the hot-path. Later, for event processing, deeper
14
- // cloning of the context will be done.
15
- // When no kind is specified, then this kind will be used.
16
- const DEFAULT_KIND = 'user';
17
- // The API allows for calling with an `LDContext` which is
18
- // `LDUser | LDSingleKindContext | LDMultiKindContext`. When ingesting a context
19
- // first the type must be determined to allow us to put it into a consistent type.
20
- /**
21
- * The partial URL encoding is needed because : is a valid character in context keys.
22
- *
23
- * Partial encoding is the replacement of all colon (:) characters with the URL
24
- * encoded equivalent (%3A) and all percent (%) characters with the URL encoded
25
- * equivalent (%25).
26
- * @param key The key to encode.
27
- * @returns Partially URL encoded key.
28
- */
29
- function encodeKey(key) {
30
- if (key.includes('%') || key.includes(':')) {
31
- return key.replace(/%/g, '%25').replace(/:/g, '%3A');
32
- }
33
- return key;
34
- }
35
- /**
36
- * Check if the given value is a LDContextCommon.
37
- * @param kindOrContext
38
- * @returns true if it is an LDContextCommon
39
- *
40
- * Due to a limitation in the expressiveness of these highly polymorphic types any field
41
- * in a multi-kind context can either be a context or 'kind'. So we need to re-assure
42
- * the compiler that it isn't the word multi.
43
- *
44
- * Because we do not allow top level values in a multi-kind context we can validate
45
- * that as well.
46
- */
47
- function isContextCommon(kindOrContext) {
48
- return kindOrContext && validators_1.TypeValidators.Object.is(kindOrContext);
49
- }
50
- /**
51
- * Validate a context kind.
52
- * @param kind
53
- * @returns true if the kind is valid.
54
- */
55
- function validKind(kind) {
56
- return validators_1.TypeValidators.Kind.is(kind);
57
- }
58
- /**
59
- * Validate a context key.
60
- * @param key
61
- * @returns true if the key is valid.
62
- */
63
- function validKey(key) {
64
- return validators_1.TypeValidators.String.is(key) && key !== '';
65
- }
66
- function processPrivateAttributes(privateAttributes, literals = false) {
67
- if (privateAttributes) {
68
- return privateAttributes.map((privateAttribute) => new AttributeReference_1.default(privateAttribute, literals));
69
- }
70
- return [];
71
- }
72
- function defined(value) {
73
- return value !== null && value !== undefined;
74
- }
75
- /**
76
- * Convert a legacy user to a single kind context.
77
- * @param user
78
- * @returns A single kind context.
79
- */
80
- function legacyToSingleKind(user) {
81
- const singleKindContext = Object.assign(Object.assign({}, (user.custom || [])), { kind: 'user', key: String(user.key) });
82
- // For legacy users we never established a difference between null
83
- // and undefined for inputs. Because anonymous can be used in evaluations
84
- // we would want it to not possibly match true/false unless defined.
85
- // Which is different than coercing a null/undefined anonymous as `false`.
86
- if (defined(user.anonymous)) {
87
- const anonymous = !!user.anonymous;
88
- delete singleKindContext.anonymous;
89
- singleKindContext.anonymous = anonymous;
90
- }
91
- if (user.name !== null && user.name !== undefined) {
92
- singleKindContext.name = user.name;
93
- }
94
- if (user.ip !== null && user.ip !== undefined) {
95
- singleKindContext.ip = user.ip;
96
- }
97
- if (user.firstName !== null && user.firstName !== undefined) {
98
- singleKindContext.firstName = user.firstName;
99
- }
100
- if (user.lastName !== null && user.lastName !== undefined) {
101
- singleKindContext.lastName = user.lastName;
102
- }
103
- if (user.email !== null && user.email !== undefined) {
104
- singleKindContext.email = user.email;
105
- }
106
- if (user.avatar !== null && user.avatar !== undefined) {
107
- singleKindContext.avatar = user.avatar;
108
- }
109
- if (user.country !== null && user.country !== undefined) {
110
- singleKindContext.country = user.country;
111
- }
112
- if (user.privateAttributeNames !== null && user.privateAttributeNames !== undefined) {
113
- singleKindContext._meta = {
114
- privateAttributes: user.privateAttributeNames,
115
- };
116
- }
117
- // We are not pulling private attributes over because we will serialize
118
- // those from attribute references for events.
119
- return singleKindContext;
120
- }
121
- /**
122
- * Container for a context/contexts. Because contexts come from external code
123
- * they must be thoroughly validated and then formed to comply with
124
- * the type system.
125
- */
126
- class Context {
127
- /**
128
- * Contexts should be created using the static factory method {@link Context.fromLDContext}.
129
- * @param kind The kind of the context.
130
- *
131
- * The factory methods are static functions within the class because they access private
132
- * implementation details, so they cannot be free functions.
133
- */
134
- constructor(valid, kind, message) {
135
- this.isMulti = false;
136
- this.isUser = false;
137
- this.wasLegacy = false;
138
- this.contexts = {};
139
- this.kind = kind;
140
- this.valid = valid;
141
- this.message = message;
142
- }
143
- static contextForError(kind, message) {
144
- return new Context(false, kind, message);
145
- }
146
- static getValueFromContext(reference, context) {
147
- if (!context || !reference.isValid) {
148
- return undefined;
149
- }
150
- if (reference.depth === 1 && reference.getComponent(0) === 'anonymous') {
151
- return !!(context === null || context === void 0 ? void 0 : context.anonymous);
152
- }
153
- return reference.get(context);
154
- }
155
- contextForKind(kind) {
156
- if (this.isMulti) {
157
- return this.contexts[kind];
158
- }
159
- if (this.kind === kind) {
160
- return this.context;
161
- }
162
- return undefined;
163
- }
164
- static fromMultiKindContext(context) {
165
- const kinds = Object.keys(context).filter((key) => key !== 'kind');
166
- const kindsValid = kinds.every(validKind);
167
- if (!kinds.length) {
168
- return Context.contextForError('multi', 'A multi-kind context must contain at least one kind');
169
- }
170
- if (!kindsValid) {
171
- return Context.contextForError('multi', 'Context contains invalid kinds');
172
- }
173
- const privateAttributes = {};
174
- let contextsAreObjects = true;
175
- const contexts = kinds.reduce((acc, kind) => {
176
- var _a;
177
- const singleContext = context[kind];
178
- if (isContextCommon(singleContext)) {
179
- acc[kind] = singleContext;
180
- privateAttributes[kind] = processPrivateAttributes((_a = singleContext._meta) === null || _a === void 0 ? void 0 : _a.privateAttributes);
181
- }
182
- else {
183
- // No early break isn't the most efficient, but it is an error condition.
184
- contextsAreObjects = false;
185
- }
186
- return acc;
187
- }, {});
188
- if (!contextsAreObjects) {
189
- return Context.contextForError('multi', 'Context contained contexts that were not objects');
190
- }
191
- if (!Object.values(contexts).every((part) => validKey(part.key))) {
192
- return Context.contextForError('multi', 'Context contained invalid keys');
193
- }
194
- // There was only a single kind in the multi-kind context.
195
- // So we can just translate this to a single-kind context.
196
- if (kinds.length === 1) {
197
- const kind = kinds[0];
198
- const created = new Context(true, kind);
199
- created.context = contexts[kind];
200
- created.privateAttributeReferences = privateAttributes;
201
- created.isUser = kind === 'user';
202
- return created;
203
- }
204
- const created = new Context(true, context.kind);
205
- created.contexts = contexts;
206
- created.privateAttributeReferences = privateAttributes;
207
- created.isMulti = true;
208
- return created;
209
- }
210
- static fromSingleKindContext(context) {
211
- var _a;
212
- const { key, kind } = context;
213
- const kindValid = validKind(kind);
214
- const keyValid = validKey(key);
215
- if (!kindValid) {
216
- return Context.contextForError(kind !== null && kind !== void 0 ? kind : 'unknown', 'The kind was not valid for the context');
217
- }
218
- if (!keyValid) {
219
- return Context.contextForError(kind, 'The key for the context was not valid');
220
- }
221
- // The JSON interfaces uses dangling _.
222
- // eslint-disable-next-line no-underscore-dangle
223
- const privateAttributeReferences = processPrivateAttributes((_a = context._meta) === null || _a === void 0 ? void 0 : _a.privateAttributes);
224
- const created = new Context(true, kind);
225
- created.isUser = kind === 'user';
226
- created.context = context;
227
- created.privateAttributeReferences = {
228
- [kind]: privateAttributeReferences,
229
- };
230
- return created;
231
- }
232
- static fromLegacyUser(context) {
233
- const keyValid = context.key !== undefined && context.key !== null;
234
- // For legacy users we allow empty keys.
235
- if (!keyValid) {
236
- return Context.contextForError('user', 'The key for the context was not valid');
237
- }
238
- const created = new Context(true, 'user');
239
- created.isUser = true;
240
- created.wasLegacy = true;
241
- created.context = legacyToSingleKind(context);
242
- created.privateAttributeReferences = {
243
- user: processPrivateAttributes(context.privateAttributeNames, true),
244
- };
245
- return created;
246
- }
247
- /**
248
- * Attempt to create a {@link Context} from an {@link LDContext}.
249
- * @param context The input context to create a Context from.
250
- * @returns a {@link Context}, if the context was not valid, then the returned contexts `valid`
251
- * property will be false.
252
- */
253
- static fromLDContext(context) {
254
- if (!context) {
255
- return Context.contextForError('unknown', 'No context specified. Returning default value');
256
- }
257
- if ((0, context_1.isSingleKind)(context)) {
258
- return Context.fromSingleKindContext(context);
259
- }
260
- if ((0, context_1.isMultiKind)(context)) {
261
- return Context.fromMultiKindContext(context);
262
- }
263
- if ((0, context_1.isLegacyUser)(context)) {
264
- return Context.fromLegacyUser(context);
265
- }
266
- return Context.contextForError('unknown', 'Context was not of a valid kind');
267
- }
268
- /**
269
- * Creates a {@link LDContext} from a {@link Context}.
270
- * @param context to be converted
271
- * @returns an {@link LDContext} if input was valid, otherwise undefined
272
- */
273
- static toLDContext(context) {
274
- if (!context.valid) {
275
- return undefined;
276
- }
277
- const contexts = context.getContexts();
278
- if (!context.isMulti) {
279
- return contexts[0][1];
280
- }
281
- const result = {
282
- kind: 'multi',
283
- };
284
- contexts.forEach((kindAndContext) => {
285
- const kind = kindAndContext[0];
286
- const nestedContext = kindAndContext[1];
287
- result[kind] = nestedContext;
288
- });
289
- return result;
290
- }
291
- /**
292
- * Attempt to get a value for the given context kind using the given reference.
293
- * @param reference The reference to the value to get.
294
- * @param kind The kind of the context to get the value for.
295
- * @returns a value or `undefined` if one is not found.
296
- */
297
- valueForKind(reference, kind = DEFAULT_KIND) {
298
- if (reference.isKind) {
299
- return this.kinds;
300
- }
301
- return Context.getValueFromContext(reference, this.contextForKind(kind));
302
- }
303
- /**
304
- * Attempt to get a key for the specified kind.
305
- * @param kind The kind to get a key for.
306
- * @returns The key for the specified kind, or undefined.
307
- */
308
- key(kind = DEFAULT_KIND) {
309
- var _a;
310
- return (_a = this.contextForKind(kind)) === null || _a === void 0 ? void 0 : _a.key;
311
- }
312
- /**
313
- * True if this is a multi-kind context.
314
- */
315
- get isMultiKind() {
316
- return this.isMulti;
317
- }
318
- /**
319
- * Get the canonical key for this context.
320
- */
321
- get canonicalKey() {
322
- if (this.isUser) {
323
- return this.context.key;
324
- }
325
- if (this.isMulti) {
326
- return Object.keys(this.contexts)
327
- .sort()
328
- .map((key) => `${key}:${encodeKey(this.contexts[key].key)}`)
329
- .join(':');
330
- }
331
- return `${this.kind}:${encodeKey(this.context.key)}`;
332
- }
333
- /**
334
- * Get the kinds of this context.
335
- */
336
- get kinds() {
337
- if (this.isMulti) {
338
- return Object.keys(this.contexts);
339
- }
340
- return [this.kind];
341
- }
342
- /**
343
- * Get the kinds, and their keys, for this context.
344
- */
345
- get kindsAndKeys() {
346
- if (this.isMulti) {
347
- return Object.entries(this.contexts).reduce((acc, [kind, context]) => {
348
- acc[kind] = context.key;
349
- return acc;
350
- }, {});
351
- }
352
- return { [this.kind]: this.context.key };
353
- }
354
- /**
355
- * Get the attribute references.
356
- *
357
- * @param kind
358
- */
359
- privateAttributes(kind) {
360
- var _a;
361
- return ((_a = this.privateAttributeReferences) === null || _a === void 0 ? void 0 : _a[kind]) || [];
362
- }
363
- /**
364
- * Get the underlying context objects from this context.
365
- *
366
- * This method is intended to be used in event generation.
367
- *
368
- * The returned objects should not be modified.
369
- */
370
- getContexts() {
371
- if (this.isMulti) {
372
- return Object.entries(this.contexts);
373
- }
374
- return [[this.kind, this.context]];
375
- }
376
- get legacy() {
377
- return this.wasLegacy;
378
- }
379
- }
380
- Context.userKind = DEFAULT_KIND;
381
- exports.default = Context;
382
- //# sourceMappingURL=Context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Context.js","sourceRoot":"","sources":["../src/Context.ts"],"names":[],"mappings":"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"}
@@ -1,124 +0,0 @@
1
- "use strict";
2
- // _meta is part of the specification.
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- const AttributeReference_1 = require("./AttributeReference");
5
- // These attributes cannot be removed via a private attribute.
6
- const protectedAttributes = ['key', 'kind', '_meta', 'anonymous'].map((str) => new AttributeReference_1.default(str, true));
7
- // Attributes that should be stringified for legacy users.
8
- const legacyTopLevelCopyAttributes = [
9
- 'name',
10
- 'ip',
11
- 'firstName',
12
- 'lastName',
13
- 'email',
14
- 'avatar',
15
- 'country',
16
- ];
17
- function compare(a, b) {
18
- return a.depth === b.length && b.every((value, index) => value === a.getComponent(index));
19
- }
20
- function cloneWithRedactions(target, references) {
21
- const stack = [];
22
- const cloned = {};
23
- const excluded = [];
24
- stack.push(...Object.keys(target).map((key) => ({
25
- key,
26
- ptr: [key],
27
- source: target,
28
- parent: cloned,
29
- visited: [target],
30
- })));
31
- while (stack.length) {
32
- const item = stack.pop();
33
- const redactRef = references.find((ref) => compare(ref, item.ptr));
34
- if (!redactRef) {
35
- const value = item.source[item.key];
36
- // Handle null because it overlaps with object, which we will want to handle later.
37
- if (value === null) {
38
- item.parent[item.key] = value;
39
- }
40
- else if (Array.isArray(value)) {
41
- item.parent[item.key] = [...value];
42
- }
43
- else if (typeof value === 'object') {
44
- // Arrays and null must already be handled.
45
- // Prevent cycles by not visiting the same object
46
- // with in the same branch. Different branches
47
- // may contain the same object.
48
- //
49
- // Same object visited twice in different branches.
50
- // A -> B -> D
51
- // -> C -> D
52
- // This is fine, which is why it doesn't just check if the object
53
- // was visited ever.
54
- if (!item.visited.includes(value)) {
55
- item.parent[item.key] = {};
56
- stack.push(...Object.keys(value).map((key) => ({
57
- key,
58
- ptr: [...item.ptr, key],
59
- source: value,
60
- parent: item.parent[item.key],
61
- visited: [...item.visited, value],
62
- })));
63
- }
64
- }
65
- else {
66
- item.parent[item.key] = value;
67
- }
68
- }
69
- else {
70
- excluded.push(redactRef.redactionName);
71
- }
72
- }
73
- return { cloned, excluded: excluded.sort() };
74
- }
75
- class ContextFilter {
76
- constructor(allAttributesPrivate, privateAttributes) {
77
- this.allAttributesPrivate = allAttributesPrivate;
78
- this.privateAttributes = privateAttributes;
79
- }
80
- filter(context, redactAnonymousAttributes = false) {
81
- const contexts = context.getContexts();
82
- if (contexts.length === 1) {
83
- return this.filterSingleKind(context, contexts[0][1], contexts[0][0], redactAnonymousAttributes);
84
- }
85
- const filteredMulti = {
86
- kind: 'multi',
87
- };
88
- contexts.forEach(([kind, single]) => {
89
- filteredMulti[kind] = this.filterSingleKind(context, single, kind, redactAnonymousAttributes);
90
- });
91
- return filteredMulti;
92
- }
93
- getAttributesToFilter(context, single, kind, redactAllAttributes) {
94
- return (redactAllAttributes
95
- ? Object.keys(single).map((k) => new AttributeReference_1.default(k, true))
96
- : [...this.privateAttributes, ...context.privateAttributes(kind)]).filter((attr) => !protectedAttributes.some((protectedAttr) => protectedAttr.compare(attr)));
97
- }
98
- filterSingleKind(context, single, kind, redactAnonymousAttributes) {
99
- const redactAllAttributes = this.allAttributesPrivate || (redactAnonymousAttributes && single.anonymous === true);
100
- const { cloned, excluded } = cloneWithRedactions(single, this.getAttributesToFilter(context, single, kind, redactAllAttributes));
101
- if (context.legacy) {
102
- legacyTopLevelCopyAttributes.forEach((name) => {
103
- if (name in cloned) {
104
- cloned[name] = String(cloned[name]);
105
- }
106
- });
107
- }
108
- if (excluded.length) {
109
- if (!cloned._meta) {
110
- cloned._meta = {};
111
- }
112
- cloned._meta.redactedAttributes = excluded;
113
- }
114
- if (cloned._meta) {
115
- delete cloned._meta.privateAttributes;
116
- if (Object.keys(cloned._meta).length === 0) {
117
- delete cloned._meta;
118
- }
119
- }
120
- return cloned;
121
- }
122
- }
123
- exports.default = ContextFilter;
124
- //# sourceMappingURL=ContextFilter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ContextFilter.js","sourceRoot":"","sources":["../src/ContextFilter.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=LDContext.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LDContext.js","sourceRoot":"","sources":["../../../src/api/context/LDContext.ts"],"names":[],"mappings":""}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=LDContextCommon.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LDContextCommon.js","sourceRoot":"","sources":["../../../src/api/context/LDContextCommon.ts"],"names":[],"mappings":""}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=LDContextMeta.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LDContextMeta.js","sourceRoot":"","sources":["../../../src/api/context/LDContextMeta.ts"],"names":[],"mappings":""}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=LDMultiKindContext.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LDMultiKindContext.js","sourceRoot":"","sources":["../../../src/api/context/LDMultiKindContext.ts"],"names":[],"mappings":""}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=LDSingleKindContext.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LDSingleKindContext.js","sourceRoot":"","sources":["../../../src/api/context/LDSingleKindContext.ts"],"names":[],"mappings":""}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=LDUser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LDUser.js","sourceRoot":"","sources":["../../../src/api/context/LDUser.ts"],"names":[],"mappings":""}
@@ -1,23 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./LDContextCommon"), exports);
18
- __exportStar(require("./LDContextMeta"), exports);
19
- __exportStar(require("./LDMultiKindContext"), exports);
20
- __exportStar(require("./LDSingleKindContext"), exports);
21
- __exportStar(require("./LDUser"), exports);
22
- __exportStar(require("./LDContext"), exports);
23
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/context/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,kDAAgC;AAChC,uDAAqC;AACrC,wDAAsC;AACtC,2CAAyB;AACzB,8CAA4B"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=LDEvaluationDetail.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LDEvaluationDetail.js","sourceRoot":"","sources":["../../../src/api/data/LDEvaluationDetail.ts"],"names":[],"mappings":""}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=LDEvaluationReason.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LDEvaluationReason.js","sourceRoot":"","sources":["../../../src/api/data/LDEvaluationReason.ts"],"names":[],"mappings":""}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=LDFlagSet.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LDFlagSet.js","sourceRoot":"","sources":["../../../src/api/data/LDFlagSet.ts"],"names":[],"mappings":""}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=LDFlagValue.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LDFlagValue.js","sourceRoot":"","sources":["../../../src/api/data/LDFlagValue.ts"],"names":[],"mappings":""}