@splitsoftware/splitio 10.17.3-rc.1 → 10.17.3-rc.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (759) hide show
  1. package/CHANGES.txt +3 -0
  2. package/es/client/attributesDecoration.js +116 -0
  3. package/es/client/browser.js +39 -0
  4. package/es/client/client.js +155 -0
  5. package/es/client/inputValidation.js +117 -0
  6. package/es/client/node.js +6 -0
  7. package/es/{factory → client}/package.json +0 -0
  8. package/es/engine/combiners/and.js +54 -0
  9. package/es/engine/combiners/ifelseif.js +73 -0
  10. package/es/engine/condition/index.js +62 -0
  11. package/es/engine/convertions/index.js +29 -0
  12. package/es/engine/engine/index.js +60 -0
  13. package/es/engine/engine/legacy.js +77 -0
  14. package/es/engine/engine/murmur3/common.js +40 -0
  15. package/es/engine/engine/murmur3/murmur3.js +83 -0
  16. package/es/engine/engine/murmur3/murmur3_128.js +250 -0
  17. package/es/engine/engine/murmur3/murmur3_128_x86.js +183 -0
  18. package/es/engine/engine/murmur3/murmur3_64.js +52 -0
  19. package/es/engine/engine/murmur3/utfx.js +112 -0
  20. package/es/engine/evaluator/index.js +111 -0
  21. package/es/engine/index.js +112 -0
  22. package/es/engine/matchers/all.js +32 -0
  23. package/es/engine/matchers/between.js +35 -0
  24. package/es/engine/matchers/boolean.js +35 -0
  25. package/es/engine/matchers/cont_all.js +51 -0
  26. package/es/engine/matchers/cont_any.js +47 -0
  27. package/es/engine/matchers/cont_str.js +38 -0
  28. package/es/engine/matchers/dependency.js +50 -0
  29. package/es/engine/matchers/eq.js +35 -0
  30. package/es/engine/matchers/eq_set.js +49 -0
  31. package/es/engine/matchers/ew.js +38 -0
  32. package/es/engine/matchers/gte.js +35 -0
  33. package/es/engine/matchers/index.js +65 -0
  34. package/es/engine/matchers/lte.js +35 -0
  35. package/es/engine/matchers/part_of.js +49 -0
  36. package/es/engine/matchers/segment.js +39 -0
  37. package/es/engine/matchers/string.js +44 -0
  38. package/es/engine/matchers/sw.js +38 -0
  39. package/es/engine/matchers/types.js +48 -0
  40. package/es/engine/matchers/whitelist.js +36 -0
  41. package/es/engine/parser/index.js +69 -0
  42. package/es/engine/parser/segments.js +22 -0
  43. package/es/engine/transforms/matcherGroup.js +43 -0
  44. package/es/engine/transforms/matchers.js +109 -0
  45. package/es/engine/transforms/segment.js +28 -0
  46. package/es/engine/transforms/set.js +20 -0
  47. package/es/engine/transforms/unaryNumeric.js +20 -0
  48. package/es/engine/transforms/whitelist.js +22 -0
  49. package/es/engine/treatments/index.js +67 -0
  50. package/es/engine/value/index.js +54 -0
  51. package/es/engine/value/sanitize.js +125 -0
  52. package/es/events/index.js +65 -0
  53. package/es/factory/offline.js +50 -0
  54. package/es/factory/online.js +113 -0
  55. package/es/impressions/counter.js +52 -0
  56. package/es/impressions/hasher/buildKey.js +3 -0
  57. package/es/impressions/hasher/hashImpression128.js +5 -0
  58. package/es/impressions/hasher/hashImpression32.js +5 -0
  59. package/es/impressions/observer/browser.js +9 -0
  60. package/es/impressions/observer/node.js +9 -0
  61. package/es/impressions/observer/observer.js +21 -0
  62. package/es/{platform/getEventSource → impressions/observer}/package.json +0 -0
  63. package/es/index.js +132 -1
  64. package/es/integrations/browser.js +62 -0
  65. package/es/integrations/ga/GaToSplit.js +246 -0
  66. package/es/integrations/ga/SplitToGa.js +127 -0
  67. package/es/integrations/node.js +3 -0
  68. package/es/{platform/getFetch → integrations}/package.json +0 -0
  69. package/es/listeners/browser.js +157 -0
  70. package/es/listeners/node.js +65 -0
  71. package/es/{platform → listeners}/package.json +0 -0
  72. package/es/manager/index.js +104 -0
  73. package/es/metrics/Collectors.js +100 -0
  74. package/es/metrics/index.js +157 -0
  75. package/es/producer/browser/Partial.js +103 -0
  76. package/es/producer/browser.js +70 -0
  77. package/es/producer/fetcher/MySegments.js +47 -0
  78. package/es/producer/fetcher/SegmentChanges.js +52 -0
  79. package/es/producer/fetcher/SplitChanges.js +46 -0
  80. package/es/producer/node.js +130 -0
  81. package/es/producer/offline/browser.js +26 -0
  82. package/es/producer/offline/node.js +26 -0
  83. package/es/{settings → producer/offline}/package.json +0 -0
  84. package/{lib/factory → es/producer}/package.json +0 -0
  85. package/es/producer/task.js +50 -0
  86. package/es/producer/updater/MySegments.js +108 -0
  87. package/es/producer/updater/SegmentChanges.js +135 -0
  88. package/es/producer/updater/SplitChanges.js +131 -0
  89. package/es/producer/updater/SplitChangesFromFeatures.js +21 -0
  90. package/es/producer/updater/SplitChangesFromFileSystem.js +21 -0
  91. package/es/producer/updater/SplitChangesFromObject.js +73 -0
  92. package/es/readiness/index.js +123 -0
  93. package/es/readiness/statusManager.js +114 -0
  94. package/es/services/auth/auth.js +25 -0
  95. package/es/services/auth/index.js +2 -0
  96. package/es/services/events/bulk.js +22 -0
  97. package/es/services/events/index.js +17 -0
  98. package/{src/platform → es/services}/getEventSource/browser.js +2 -2
  99. package/es/{platform → services}/getEventSource/node.js +1 -1
  100. package/{lib/platform → es/services}/getEventSource/package.json +0 -0
  101. package/es/{platform → services}/getFetch/browser.js +1 -1
  102. package/es/{platform → services}/getFetch/node.js +1 -1
  103. package/{lib/platform → es/services}/getFetch/package.json +0 -0
  104. package/es/services/impressions/bulk.js +26 -0
  105. package/es/services/impressions/count.js +7 -0
  106. package/es/services/impressions/dto.js +73 -0
  107. package/es/services/impressions/index.js +17 -0
  108. package/es/services/impressions/post.js +22 -0
  109. package/es/services/metrics/counters.js +24 -0
  110. package/es/services/metrics/dto.js +38 -0
  111. package/es/services/metrics/index.js +17 -0
  112. package/es/services/metrics/times.js +24 -0
  113. package/es/services/mySegments/get.js +26 -0
  114. package/es/services/mySegments/index.js +17 -0
  115. package/es/services/request/index.js +43 -0
  116. package/es/services/request/options/browser.js +18 -0
  117. package/es/{platform → services}/request/options/node.js +2 -2
  118. package/{lib/platform → es/services/request/options}/package.json +0 -0
  119. package/es/services/segmentChanges/get.js +21 -0
  120. package/es/services/segmentChanges/index.js +17 -0
  121. package/es/services/splitChanges/get.js +19 -0
  122. package/es/services/splitChanges/index.js +17 -0
  123. package/es/services/splitChanges/offline/browser.js +63 -0
  124. package/es/services/splitChanges/offline/node.js +176 -0
  125. package/{lib/settings → es/services/splitChanges/offline}/package.json +0 -0
  126. package/es/services/splitChanges/offline/parseCondition.js +43 -0
  127. package/es/services/transport/index.js +51 -0
  128. package/es/storage/AttributesCache/InMemory.js +85 -0
  129. package/es/storage/BaseMetricsAsyncCache.js +23 -0
  130. package/es/storage/CountCache/InMemory.js +48 -0
  131. package/es/storage/CountCache/InRedis.js +42 -0
  132. package/es/storage/EventsCache/InMemory.js +109 -0
  133. package/es/storage/EventsCache/InRedis.js +65 -0
  134. package/es/storage/ImpressionsCache/InMemory.js +71 -0
  135. package/es/storage/ImpressionsCache/InRedis.js +73 -0
  136. package/es/storage/Keys.js +125 -0
  137. package/es/storage/KeysLocalStorage.js +58 -0
  138. package/es/storage/LatencyCache/InMemory.js +56 -0
  139. package/es/storage/LatencyCache/InRedis.js +44 -0
  140. package/es/storage/LatencyCache/findIndex.js +2 -0
  141. package/es/storage/Meta.js +7 -0
  142. package/es/storage/RedisAdapter.js +198 -0
  143. package/es/storage/SegmentCache/InLocalStorage/index.js +162 -0
  144. package/es/storage/SegmentCache/InMemory/browser.js +107 -0
  145. package/es/storage/SegmentCache/InMemory/node.js +82 -0
  146. package/{src/factory → es/storage/SegmentCache/InMemory}/package.json +0 -0
  147. package/es/storage/SegmentCache/InRedis/index.js +81 -0
  148. package/es/storage/SplitCache/InLocalStorage.js +332 -0
  149. package/es/storage/SplitCache/InMemory.js +162 -0
  150. package/es/storage/SplitCache/InRedis.js +214 -0
  151. package/es/storage/SplitCache/killLocally.js +35 -0
  152. package/es/storage/browser.js +101 -0
  153. package/es/storage/node.js +81 -0
  154. package/{src/platform/getEventSource → es/storage}/package.json +0 -0
  155. package/es/sync/AuthClient/index.js +34 -0
  156. package/es/sync/PushManager/index.js +315 -0
  157. package/es/sync/PushManager/mySegmentsV2utils.js +76 -0
  158. package/es/sync/PushManager/pushRequirements/browser.js +23 -0
  159. package/es/sync/PushManager/pushRequirements/node.js +18 -0
  160. package/{src/platform/getFetch → es/sync/PushManager/pushRequirements}/package.json +0 -0
  161. package/es/sync/SSEClient/index.js +93 -0
  162. package/es/sync/SSEHandler/NotificationKeeper.js +97 -0
  163. package/es/sync/SSEHandler/NotificationParser.js +31 -0
  164. package/es/sync/SSEHandler/index.js +110 -0
  165. package/es/sync/SegmentUpdateWorker/browser.js +74 -0
  166. package/es/sync/SegmentUpdateWorker/node.js +79 -0
  167. package/{src/platform → es/sync/SegmentUpdateWorker}/package.json +0 -0
  168. package/es/sync/SplitUpdateWorker/index.js +86 -0
  169. package/es/sync/browser.js +125 -0
  170. package/es/sync/constants.js +42 -0
  171. package/es/sync/node.js +60 -0
  172. package/{src/settings → es/sync}/package.json +0 -0
  173. package/es/trackers/event.js +53 -0
  174. package/es/trackers/impressions.js +132 -0
  175. package/es/umd.js +1 -2
  176. package/es/utils/backoff/index.js +51 -0
  177. package/es/utils/base64/browser.js +19 -0
  178. package/es/utils/base64/node.js +19 -0
  179. package/es/utils/base64/package.json +4 -0
  180. package/es/utils/binarySearch/index.js +50 -0
  181. package/es/utils/constants/index.js +38 -0
  182. package/es/utils/context/constants.js +30 -0
  183. package/es/utils/context/index.js +101 -0
  184. package/es/utils/decompress/index.js +476 -0
  185. package/es/utils/fn/repeat.js +58 -0
  186. package/es/utils/inputValidation/apiKey.js +39 -0
  187. package/es/utils/inputValidation/attribute.js +22 -0
  188. package/es/utils/inputValidation/attributes.js +19 -0
  189. package/es/utils/inputValidation/event.js +23 -0
  190. package/es/utils/inputValidation/eventProperties.js +69 -0
  191. package/es/utils/inputValidation/eventValue.js +9 -0
  192. package/es/utils/inputValidation/index.js +11 -0
  193. package/es/utils/inputValidation/isOperational.js +14 -0
  194. package/es/utils/inputValidation/key.js +50 -0
  195. package/es/utils/inputValidation/split.js +47 -0
  196. package/es/utils/inputValidation/splitFilters.js +121 -0
  197. package/es/utils/inputValidation/splits.js +27 -0
  198. package/es/utils/inputValidation/trafficType.js +55 -0
  199. package/es/utils/jwt/hashUserKey.js +11 -0
  200. package/es/utils/jwt/index.js +14 -0
  201. package/es/utils/key/factory.js +38 -0
  202. package/es/utils/key/parser.js +34 -0
  203. package/es/utils/labels/index.js +7 -0
  204. package/es/utils/lang/Errors.js +41 -0
  205. package/es/utils/lang/Sets.js +114 -0
  206. package/es/utils/lang/index.js +305 -0
  207. package/es/utils/localstorage/isAvailable.js +26 -0
  208. package/es/utils/logger/LoggerFactory.js +86 -0
  209. package/es/utils/logger/index.js +97 -0
  210. package/es/utils/lrucache/linkedlist.js +122 -0
  211. package/es/utils/lrucache/lru.spec.js +24 -0
  212. package/es/utils/lrucache/lrucache.js +80 -0
  213. package/es/utils/now/browser.js +27 -0
  214. package/es/utils/now/node.js +19 -0
  215. package/es/utils/now/package.json +4 -0
  216. package/es/utils/promise/thenable.js +3 -0
  217. package/es/utils/promise/timeout.js +34 -0
  218. package/es/utils/promise/wrapper.js +58 -0
  219. package/es/{settings → utils/settings}/defaults/browser.js +2 -5
  220. package/es/{settings → utils/settings}/defaults/node.js +2 -5
  221. package/es/utils/settings/defaults/package.json +4 -0
  222. package/es/utils/settings/impressionsMode.js +16 -0
  223. package/es/utils/settings/index.js +194 -0
  224. package/es/utils/settings/integrations/browser.js +8 -0
  225. package/es/utils/settings/integrations/common.js +30 -0
  226. package/es/utils/settings/integrations/node.js +7 -0
  227. package/es/utils/settings/integrations/package.json +4 -0
  228. package/es/utils/settings/language/browser.js +16 -0
  229. package/es/utils/settings/language/node.js +16 -0
  230. package/es/utils/settings/language/package.json +4 -0
  231. package/es/utils/settings/mode.js +10 -0
  232. package/es/utils/settings/runtime/browser.js +21 -0
  233. package/es/{settings → utils/settings}/runtime/node.js +4 -6
  234. package/es/utils/settings/runtime/package.json +4 -0
  235. package/es/{settings → utils/settings}/storage/browser.js +17 -16
  236. package/es/{settings → utils/settings}/storage/node.js +16 -25
  237. package/es/utils/settings/storage/package.json +4 -0
  238. package/es/utils/splits/usesSegments.js +21 -0
  239. package/es/utils/time/index.js +8 -0
  240. package/es/utils/timeTracker/index.js +216 -0
  241. package/es/utils/timeTracker/timer.js +25 -0
  242. package/lib/client/attributesDecoration.js +128 -0
  243. package/lib/client/browser.js +50 -0
  244. package/lib/client/client.js +174 -0
  245. package/lib/client/inputValidation.js +129 -0
  246. package/lib/client/node.js +14 -0
  247. package/lib/client/package.json +4 -0
  248. package/lib/engine/combiners/and.js +65 -0
  249. package/lib/engine/combiners/ifelseif.js +88 -0
  250. package/lib/engine/condition/index.js +76 -0
  251. package/lib/engine/convertions/index.js +36 -0
  252. package/lib/engine/engine/index.js +71 -0
  253. package/lib/engine/engine/legacy.js +83 -0
  254. package/lib/engine/engine/murmur3/common.js +52 -0
  255. package/lib/engine/engine/murmur3/murmur3.js +90 -0
  256. package/lib/engine/engine/murmur3/murmur3_128.js +256 -0
  257. package/lib/engine/engine/murmur3/murmur3_128_x86.js +189 -0
  258. package/lib/engine/engine/murmur3/murmur3_64.js +57 -0
  259. package/lib/engine/engine/murmur3/utfx.js +121 -0
  260. package/lib/engine/evaluator/index.js +129 -0
  261. package/lib/engine/index.js +128 -0
  262. package/lib/engine/matchers/all.js +41 -0
  263. package/lib/engine/matchers/between.js +44 -0
  264. package/lib/engine/matchers/boolean.js +44 -0
  265. package/lib/engine/matchers/cont_all.js +61 -0
  266. package/lib/engine/matchers/cont_any.js +57 -0
  267. package/lib/engine/matchers/cont_str.js +48 -0
  268. package/lib/engine/matchers/dependency.js +60 -0
  269. package/lib/engine/matchers/eq.js +44 -0
  270. package/lib/engine/matchers/eq_set.js +59 -0
  271. package/lib/engine/matchers/ew.js +48 -0
  272. package/lib/engine/matchers/gte.js +44 -0
  273. package/lib/engine/matchers/index.js +90 -0
  274. package/lib/engine/matchers/lte.js +44 -0
  275. package/lib/engine/matchers/part_of.js +59 -0
  276. package/lib/engine/matchers/segment.js +49 -0
  277. package/lib/engine/matchers/string.js +53 -0
  278. package/lib/engine/matchers/sw.js +48 -0
  279. package/lib/engine/matchers/types.js +57 -0
  280. package/lib/engine/matchers/whitelist.js +46 -0
  281. package/lib/engine/parser/index.js +84 -0
  282. package/lib/engine/parser/segments.js +28 -0
  283. package/lib/engine/transforms/matcherGroup.js +54 -0
  284. package/lib/engine/transforms/matchers.js +124 -0
  285. package/lib/engine/transforms/segment.js +34 -0
  286. package/lib/engine/transforms/set.js +26 -0
  287. package/lib/engine/transforms/unaryNumeric.js +26 -0
  288. package/lib/engine/transforms/whitelist.js +28 -0
  289. package/lib/engine/treatments/index.js +73 -0
  290. package/lib/engine/value/index.js +64 -0
  291. package/lib/engine/value/sanitize.js +137 -0
  292. package/lib/events/index.js +80 -0
  293. package/lib/factory/offline.js +62 -0
  294. package/lib/factory/online.js +129 -0
  295. package/lib/impressions/counter.js +61 -0
  296. package/lib/impressions/hasher/buildKey.js +8 -0
  297. package/lib/impressions/hasher/hashImpression128.js +12 -0
  298. package/lib/impressions/hasher/hashImpression32.js +14 -0
  299. package/lib/impressions/observer/browser.js +19 -0
  300. package/lib/impressions/observer/node.js +19 -0
  301. package/lib/impressions/observer/observer.js +29 -0
  302. package/lib/impressions/observer/package.json +4 -0
  303. package/lib/index.js +151 -3
  304. package/lib/integrations/browser.js +72 -0
  305. package/lib/integrations/ga/GaToSplit.js +267 -0
  306. package/lib/integrations/ga/SplitToGa.js +138 -0
  307. package/lib/integrations/node.js +9 -0
  308. package/lib/integrations/package.json +4 -0
  309. package/lib/listeners/browser.js +173 -0
  310. package/lib/listeners/node.js +74 -0
  311. package/lib/listeners/package.json +4 -0
  312. package/lib/manager/index.js +115 -0
  313. package/lib/metrics/Collectors.js +118 -0
  314. package/lib/metrics/index.js +182 -0
  315. package/lib/producer/browser/Partial.js +114 -0
  316. package/lib/producer/browser.js +82 -0
  317. package/lib/producer/fetcher/MySegments.js +59 -0
  318. package/lib/producer/fetcher/SegmentChanges.js +62 -0
  319. package/lib/producer/fetcher/SplitChanges.js +58 -0
  320. package/lib/producer/node.js +142 -0
  321. package/lib/producer/offline/browser.js +35 -0
  322. package/lib/producer/offline/node.js +35 -0
  323. package/lib/producer/offline/package.json +4 -0
  324. package/lib/producer/package.json +4 -0
  325. package/lib/producer/task.js +61 -0
  326. package/lib/producer/updater/MySegments.js +119 -0
  327. package/lib/producer/updater/SegmentChanges.js +148 -0
  328. package/lib/producer/updater/SplitChanges.js +145 -0
  329. package/lib/producer/updater/SplitChangesFromFeatures.js +30 -0
  330. package/lib/producer/updater/SplitChangesFromFileSystem.js +30 -0
  331. package/lib/producer/updater/SplitChangesFromObject.js +84 -0
  332. package/lib/readiness/index.js +132 -0
  333. package/lib/readiness/statusManager.js +124 -0
  334. package/lib/services/auth/auth.js +32 -0
  335. package/lib/services/auth/index.js +11 -0
  336. package/lib/services/events/bulk.js +31 -0
  337. package/lib/services/events/index.js +26 -0
  338. package/lib/{platform → services}/getEventSource/browser.js +1 -1
  339. package/lib/{platform → services}/getEventSource/node.js +1 -1
  340. package/lib/services/getEventSource/package.json +4 -0
  341. package/lib/{platform → services}/getFetch/browser.js +1 -1
  342. package/lib/{platform → services}/getFetch/node.js +1 -1
  343. package/lib/services/getFetch/package.json +4 -0
  344. package/lib/services/impressions/bulk.js +36 -0
  345. package/lib/services/impressions/count.js +16 -0
  346. package/lib/services/impressions/dto.js +81 -0
  347. package/lib/services/impressions/index.js +26 -0
  348. package/lib/services/impressions/post.js +31 -0
  349. package/lib/services/metrics/counters.js +33 -0
  350. package/lib/services/metrics/dto.js +46 -0
  351. package/lib/services/metrics/index.js +26 -0
  352. package/lib/services/metrics/times.js +33 -0
  353. package/lib/services/mySegments/get.js +35 -0
  354. package/lib/services/mySegments/index.js +26 -0
  355. package/lib/services/request/index.js +53 -0
  356. package/lib/services/request/options/browser.js +23 -0
  357. package/lib/{platform → services}/request/options/node.js +2 -2
  358. package/lib/services/request/options/package.json +4 -0
  359. package/lib/services/segmentChanges/get.js +29 -0
  360. package/lib/services/segmentChanges/index.js +26 -0
  361. package/lib/services/splitChanges/get.js +27 -0
  362. package/lib/services/splitChanges/index.js +26 -0
  363. package/lib/services/splitChanges/offline/browser.js +71 -0
  364. package/lib/services/splitChanges/offline/node.js +189 -0
  365. package/lib/services/splitChanges/offline/package.json +4 -0
  366. package/lib/services/splitChanges/offline/parseCondition.js +49 -0
  367. package/lib/services/transport/index.js +62 -0
  368. package/lib/storage/AttributesCache/InMemory.js +93 -0
  369. package/lib/storage/BaseMetricsAsyncCache.js +28 -0
  370. package/lib/storage/CountCache/InMemory.js +54 -0
  371. package/lib/storage/CountCache/InRedis.js +50 -0
  372. package/lib/storage/EventsCache/InMemory.js +118 -0
  373. package/lib/storage/EventsCache/InRedis.js +74 -0
  374. package/lib/storage/ImpressionsCache/InMemory.js +77 -0
  375. package/lib/storage/ImpressionsCache/InRedis.js +79 -0
  376. package/lib/storage/Keys.js +132 -0
  377. package/lib/storage/KeysLocalStorage.js +69 -0
  378. package/lib/storage/LatencyCache/InMemory.js +64 -0
  379. package/lib/storage/LatencyCache/InRedis.js +53 -0
  380. package/lib/storage/LatencyCache/findIndex.js +12 -0
  381. package/lib/storage/Meta.js +12 -0
  382. package/lib/storage/RedisAdapter.js +212 -0
  383. package/lib/storage/SegmentCache/InLocalStorage/index.js +171 -0
  384. package/lib/storage/SegmentCache/InMemory/browser.js +113 -0
  385. package/lib/storage/SegmentCache/InMemory/node.js +89 -0
  386. package/lib/storage/SegmentCache/InMemory/package.json +4 -0
  387. package/lib/storage/SegmentCache/InRedis/index.js +87 -0
  388. package/lib/storage/SplitCache/InLocalStorage.js +344 -0
  389. package/lib/storage/SplitCache/InMemory.js +172 -0
  390. package/lib/storage/SplitCache/InRedis.js +224 -0
  391. package/lib/storage/SplitCache/killLocally.js +42 -0
  392. package/lib/storage/browser.js +122 -0
  393. package/lib/storage/node.js +104 -0
  394. package/lib/storage/package.json +4 -0
  395. package/lib/sync/AuthClient/index.js +44 -0
  396. package/lib/sync/PushManager/index.js +340 -0
  397. package/lib/sync/PushManager/mySegmentsV2utils.js +87 -0
  398. package/lib/sync/PushManager/pushRequirements/browser.js +30 -0
  399. package/lib/sync/PushManager/pushRequirements/node.js +25 -0
  400. package/lib/sync/PushManager/pushRequirements/package.json +4 -0
  401. package/lib/sync/SSEClient/index.js +101 -0
  402. package/lib/sync/SSEHandler/NotificationKeeper.js +104 -0
  403. package/lib/sync/SSEHandler/NotificationParser.js +39 -0
  404. package/lib/sync/SSEHandler/index.js +121 -0
  405. package/lib/sync/SegmentUpdateWorker/browser.js +81 -0
  406. package/lib/sync/SegmentUpdateWorker/node.js +86 -0
  407. package/lib/sync/SegmentUpdateWorker/package.json +4 -0
  408. package/lib/sync/SplitUpdateWorker/index.js +93 -0
  409. package/lib/sync/browser.js +139 -0
  410. package/lib/sync/constants.js +59 -0
  411. package/lib/sync/node.js +71 -0
  412. package/lib/sync/package.json +4 -0
  413. package/lib/trackers/event.js +64 -0
  414. package/lib/trackers/impressions.js +146 -0
  415. package/lib/umd.js +0 -1
  416. package/lib/utils/backoff/index.js +57 -0
  417. package/lib/utils/base64/browser.js +26 -0
  418. package/lib/utils/base64/node.js +26 -0
  419. package/lib/utils/base64/package.json +4 -0
  420. package/lib/utils/binarySearch/index.js +56 -0
  421. package/lib/utils/constants/index.js +60 -0
  422. package/lib/utils/context/constants.js +49 -0
  423. package/lib/utils/context/index.js +111 -0
  424. package/lib/utils/decompress/index.js +483 -0
  425. package/lib/utils/fn/repeat.js +64 -0
  426. package/lib/utils/inputValidation/apiKey.js +51 -0
  427. package/lib/utils/inputValidation/attribute.js +32 -0
  428. package/lib/utils/inputValidation/attributes.js +32 -0
  429. package/lib/utils/inputValidation/event.js +33 -0
  430. package/lib/utils/inputValidation/eventProperties.js +78 -0
  431. package/lib/utils/inputValidation/eventValue.js +19 -0
  432. package/lib/utils/inputValidation/index.js +48 -0
  433. package/lib/utils/inputValidation/isOperational.js +25 -0
  434. package/lib/utils/inputValidation/key.js +59 -0
  435. package/lib/utils/inputValidation/split.js +60 -0
  436. package/lib/utils/inputValidation/splitFilters.js +134 -0
  437. package/lib/utils/inputValidation/splits.js +38 -0
  438. package/lib/utils/inputValidation/trafficType.js +68 -0
  439. package/lib/utils/jwt/hashUserKey.js +19 -0
  440. package/lib/utils/jwt/index.js +19 -0
  441. package/lib/utils/key/factory.js +46 -0
  442. package/lib/utils/key/parser.js +42 -0
  443. package/lib/utils/labels/index.js +18 -0
  444. package/lib/utils/lang/Errors.js +58 -0
  445. package/lib/utils/lang/Sets.js +127 -0
  446. package/lib/utils/lang/index.js +350 -0
  447. package/lib/utils/localstorage/isAvailable.js +31 -0
  448. package/lib/utils/logger/LoggerFactory.js +98 -0
  449. package/lib/utils/logger/index.js +109 -0
  450. package/lib/utils/lrucache/linkedlist.js +132 -0
  451. package/lib/utils/lrucache/lru.spec.js +30 -0
  452. package/lib/utils/lrucache/lrucache.js +88 -0
  453. package/lib/utils/now/browser.js +33 -0
  454. package/lib/utils/now/node.js +24 -0
  455. package/lib/utils/now/package.json +4 -0
  456. package/lib/utils/promise/thenable.js +10 -0
  457. package/lib/utils/promise/timeout.js +40 -0
  458. package/lib/utils/promise/wrapper.js +63 -0
  459. package/{src → lib/utils}/settings/defaults/browser.js +6 -6
  460. package/{src → lib/utils}/settings/defaults/node.js +6 -6
  461. package/lib/utils/settings/defaults/package.json +4 -0
  462. package/lib/utils/settings/impressionsMode.js +26 -0
  463. package/lib/utils/settings/index.js +214 -0
  464. package/lib/utils/settings/integrations/browser.js +17 -0
  465. package/lib/utils/settings/integrations/common.js +40 -0
  466. package/lib/utils/settings/integrations/node.js +13 -0
  467. package/lib/utils/settings/integrations/package.json +4 -0
  468. package/lib/utils/settings/language/browser.js +22 -0
  469. package/lib/utils/settings/language/node.js +22 -0
  470. package/lib/utils/settings/language/package.json +4 -0
  471. package/lib/utils/settings/mode.js +16 -0
  472. package/lib/utils/settings/runtime/browser.js +26 -0
  473. package/lib/{settings → utils/settings}/runtime/node.js +5 -7
  474. package/lib/utils/settings/runtime/package.json +4 -0
  475. package/lib/{settings → utils/settings}/storage/browser.js +24 -20
  476. package/lib/{settings → utils/settings}/storage/node.js +17 -26
  477. package/lib/utils/settings/storage/package.json +4 -0
  478. package/lib/utils/splits/usesSegments.js +27 -0
  479. package/lib/utils/time/index.js +12 -0
  480. package/lib/utils/timeTracker/index.js +213 -0
  481. package/lib/utils/timeTracker/timer.js +33 -0
  482. package/package.json +15 -19
  483. package/src/client/attributesDecoration.js +112 -0
  484. package/src/client/browser.js +41 -0
  485. package/src/client/client.js +131 -0
  486. package/src/client/inputValidation.js +130 -0
  487. package/src/client/node.js +8 -0
  488. package/src/client/package.json +4 -0
  489. package/src/engine/combiners/and.js +55 -0
  490. package/src/engine/combiners/ifelseif.js +74 -0
  491. package/src/engine/condition/index.js +65 -0
  492. package/src/engine/convertions/index.js +22 -0
  493. package/src/engine/engine/index.js +63 -0
  494. package/src/engine/engine/legacy.js +66 -0
  495. package/src/engine/engine/murmur3/common.js +54 -0
  496. package/src/engine/engine/murmur3/murmur3.js +79 -0
  497. package/src/engine/engine/murmur3/murmur3_128.js +273 -0
  498. package/src/engine/engine/murmur3/murmur3_128_x86.js +188 -0
  499. package/src/engine/engine/murmur3/murmur3_64.js +34 -0
  500. package/src/engine/engine/murmur3/utfx.js +111 -0
  501. package/src/engine/evaluator/index.js +148 -0
  502. package/src/engine/index.js +123 -0
  503. package/src/engine/matchers/all.js +29 -0
  504. package/src/engine/matchers/between.js +30 -0
  505. package/src/engine/matchers/boolean.js +29 -0
  506. package/src/engine/matchers/cont_all.js +40 -0
  507. package/src/engine/matchers/cont_any.js +35 -0
  508. package/src/engine/matchers/cont_str.js +31 -0
  509. package/src/engine/matchers/dependency.js +52 -0
  510. package/src/engine/matchers/eq.js +30 -0
  511. package/src/engine/matchers/eq_set.js +37 -0
  512. package/src/engine/matchers/ew.js +31 -0
  513. package/src/engine/matchers/gte.js +30 -0
  514. package/src/engine/matchers/index.js +71 -0
  515. package/src/engine/matchers/lte.js +30 -0
  516. package/src/engine/matchers/part_of.js +37 -0
  517. package/src/engine/matchers/segment.js +41 -0
  518. package/src/engine/matchers/string.js +39 -0
  519. package/src/engine/matchers/sw.js +31 -0
  520. package/src/engine/matchers/types.js +52 -0
  521. package/src/engine/matchers/whitelist.js +30 -0
  522. package/src/engine/parser/index.js +79 -0
  523. package/src/engine/parser/segments.js +31 -0
  524. package/src/engine/transforms/matcherGroup.js +45 -0
  525. package/src/engine/transforms/matchers.js +118 -0
  526. package/src/engine/transforms/segment.js +23 -0
  527. package/src/engine/transforms/set.js +20 -0
  528. package/src/engine/transforms/unaryNumeric.js +20 -0
  529. package/src/engine/transforms/whitelist.js +22 -0
  530. package/src/engine/treatments/index.js +67 -0
  531. package/src/engine/value/index.js +53 -0
  532. package/src/engine/value/sanitize.js +117 -0
  533. package/src/events/index.js +62 -0
  534. package/src/factory/offline.js +60 -0
  535. package/src/factory/online.js +127 -0
  536. package/src/impressions/counter.js +43 -0
  537. package/src/impressions/hasher/buildKey.js +3 -0
  538. package/src/impressions/hasher/hashImpression128.js +6 -0
  539. package/src/impressions/hasher/hashImpression32.js +6 -0
  540. package/src/impressions/observer/browser.js +8 -0
  541. package/src/impressions/observer/node.js +8 -0
  542. package/src/impressions/observer/observer.js +17 -0
  543. package/src/impressions/observer/package.json +4 -0
  544. package/src/index.js +140 -1
  545. package/src/integrations/browser.js +57 -0
  546. package/src/integrations/ga/GaToSplit.js +278 -0
  547. package/src/integrations/ga/SplitToGa.js +125 -0
  548. package/src/integrations/node.js +4 -0
  549. package/src/integrations/package.json +4 -0
  550. package/src/listeners/browser.js +137 -0
  551. package/src/listeners/node.js +59 -0
  552. package/src/listeners/package.json +4 -0
  553. package/src/manager/index.js +103 -0
  554. package/src/metrics/Collectors.js +77 -0
  555. package/src/metrics/index.js +174 -0
  556. package/src/producer/browser/Partial.js +104 -0
  557. package/src/producer/browser.js +82 -0
  558. package/src/producer/fetcher/MySegments.js +40 -0
  559. package/src/producer/fetcher/SegmentChanges.js +52 -0
  560. package/src/producer/fetcher/SplitChanges.js +39 -0
  561. package/src/producer/node.js +142 -0
  562. package/src/producer/offline/browser.js +28 -0
  563. package/src/producer/offline/node.js +28 -0
  564. package/src/producer/offline/package.json +4 -0
  565. package/src/producer/package.json +4 -0
  566. package/src/producer/task.js +57 -0
  567. package/src/producer/updater/MySegments.js +104 -0
  568. package/src/producer/updater/SegmentChanges.js +126 -0
  569. package/src/producer/updater/SplitChanges.js +138 -0
  570. package/src/producer/updater/SplitChangesFromFeatures.js +23 -0
  571. package/src/producer/updater/SplitChangesFromFileSystem.js +23 -0
  572. package/src/producer/updater/SplitChangesFromObject.js +81 -0
  573. package/src/readiness/index.js +125 -0
  574. package/src/readiness/statusManager.js +121 -0
  575. package/src/services/auth/auth.js +21 -0
  576. package/src/services/auth/index.js +3 -0
  577. package/src/services/events/bulk.js +23 -0
  578. package/src/services/events/index.js +18 -0
  579. package/{es/platform → src/services}/getEventSource/browser.js +1 -1
  580. package/src/{platform → services}/getEventSource/node.js +2 -2
  581. package/src/services/getEventSource/package.json +4 -0
  582. package/src/{platform → services}/getFetch/browser.js +2 -2
  583. package/src/{platform → services}/getFetch/node.js +1 -1
  584. package/src/services/getFetch/package.json +4 -0
  585. package/src/services/impressions/bulk.js +26 -0
  586. package/src/services/impressions/count.js +8 -0
  587. package/src/services/impressions/dto.js +71 -0
  588. package/src/services/impressions/index.js +18 -0
  589. package/src/services/impressions/post.js +23 -0
  590. package/src/services/metrics/counters.js +25 -0
  591. package/src/services/metrics/dto.js +44 -0
  592. package/src/services/metrics/index.js +18 -0
  593. package/src/services/metrics/times.js +25 -0
  594. package/src/services/mySegments/get.js +27 -0
  595. package/src/services/mySegments/index.js +18 -0
  596. package/src/services/request/index.js +43 -0
  597. package/src/services/request/options/browser.js +18 -0
  598. package/src/{platform → services}/request/options/node.js +2 -2
  599. package/src/services/request/options/package.json +4 -0
  600. package/src/services/segmentChanges/get.js +20 -0
  601. package/src/services/segmentChanges/index.js +18 -0
  602. package/src/services/splitChanges/get.js +20 -0
  603. package/src/services/splitChanges/index.js +18 -0
  604. package/src/services/splitChanges/offline/browser.js +66 -0
  605. package/src/services/splitChanges/offline/node.js +190 -0
  606. package/src/services/splitChanges/offline/package.json +4 -0
  607. package/src/services/splitChanges/offline/parseCondition.js +52 -0
  608. package/src/services/transport/index.js +44 -0
  609. package/src/storage/AttributesCache/InMemory.js +76 -0
  610. package/src/storage/BaseMetricsAsyncCache.js +14 -0
  611. package/src/storage/CountCache/InMemory.js +48 -0
  612. package/src/storage/CountCache/InRedis.js +32 -0
  613. package/src/storage/EventsCache/InMemory.js +99 -0
  614. package/src/storage/EventsCache/InRedis.js +62 -0
  615. package/src/storage/ImpressionsCache/InMemory.js +62 -0
  616. package/src/storage/ImpressionsCache/InRedis.js +65 -0
  617. package/src/storage/Keys.js +122 -0
  618. package/src/storage/KeysLocalStorage.js +52 -0
  619. package/src/storage/LatencyCache/InMemory.js +56 -0
  620. package/src/storage/LatencyCache/InRedis.js +35 -0
  621. package/src/storage/LatencyCache/findIndex.js +7 -0
  622. package/src/storage/Meta.js +7 -0
  623. package/src/storage/RedisAdapter.js +170 -0
  624. package/src/storage/SegmentCache/InLocalStorage/index.js +140 -0
  625. package/src/storage/SegmentCache/InMemory/browser.js +99 -0
  626. package/src/storage/SegmentCache/InMemory/node.js +84 -0
  627. package/src/storage/SegmentCache/InMemory/package.json +4 -0
  628. package/src/storage/SegmentCache/InRedis/index.js +71 -0
  629. package/src/storage/SplitCache/InLocalStorage.js +324 -0
  630. package/src/storage/SplitCache/InMemory.js +145 -0
  631. package/src/storage/SplitCache/InRedis.js +187 -0
  632. package/src/storage/SplitCache/killLocally.js +33 -0
  633. package/src/storage/browser.js +110 -0
  634. package/src/storage/node.js +83 -0
  635. package/src/storage/package.json +4 -0
  636. package/src/sync/AuthClient/index.js +31 -0
  637. package/src/sync/PushManager/index.js +328 -0
  638. package/src/sync/PushManager/mySegmentsV2utils.js +76 -0
  639. package/src/sync/PushManager/pushRequirements/browser.js +20 -0
  640. package/src/sync/PushManager/pushRequirements/node.js +16 -0
  641. package/src/sync/PushManager/pushRequirements/package.json +4 -0
  642. package/src/sync/SSEClient/index.js +92 -0
  643. package/src/sync/SSEHandler/NotificationKeeper.js +90 -0
  644. package/src/sync/SSEHandler/NotificationParser.js +35 -0
  645. package/src/sync/SSEHandler/index.js +110 -0
  646. package/src/sync/SegmentUpdateWorker/browser.js +67 -0
  647. package/src/sync/SegmentUpdateWorker/node.js +73 -0
  648. package/src/sync/SegmentUpdateWorker/package.json +4 -0
  649. package/src/sync/SplitUpdateWorker/index.js +79 -0
  650. package/src/sync/browser.js +130 -0
  651. package/src/sync/constants.js +43 -0
  652. package/src/sync/node.js +66 -0
  653. package/src/sync/package.json +4 -0
  654. package/src/trackers/event.js +47 -0
  655. package/src/trackers/impressions.js +123 -0
  656. package/src/umd.js +0 -1
  657. package/src/utils/backoff/index.js +46 -0
  658. package/src/utils/base64/browser.js +19 -0
  659. package/src/utils/base64/node.js +19 -0
  660. package/src/utils/base64/package.json +4 -0
  661. package/src/utils/binarySearch/index.js +50 -0
  662. package/src/utils/constants/index.js +41 -0
  663. package/src/utils/context/constants.js +18 -0
  664. package/src/utils/context/index.js +84 -0
  665. package/src/utils/decompress/index.js +428 -0
  666. package/src/utils/fn/repeat.js +48 -0
  667. package/src/utils/inputValidation/apiKey.js +42 -0
  668. package/src/utils/inputValidation/attribute.js +22 -0
  669. package/src/utils/inputValidation/attributes.js +26 -0
  670. package/src/utils/inputValidation/event.js +23 -0
  671. package/src/utils/inputValidation/eventProperties.js +65 -0
  672. package/src/utils/inputValidation/eventValue.js +11 -0
  673. package/src/utils/inputValidation/index.js +11 -0
  674. package/src/utils/inputValidation/isOperational.js +16 -0
  675. package/src/utils/inputValidation/key.js +53 -0
  676. package/src/utils/inputValidation/split.js +42 -0
  677. package/src/utils/inputValidation/splitFilters.js +108 -0
  678. package/src/utils/inputValidation/splits.js +21 -0
  679. package/src/utils/inputValidation/trafficType.js +58 -0
  680. package/src/utils/jwt/hashUserKey.js +11 -0
  681. package/src/utils/jwt/index.js +15 -0
  682. package/src/utils/key/factory.js +34 -0
  683. package/src/utils/key/parser.js +34 -0
  684. package/src/utils/labels/index.js +7 -0
  685. package/src/utils/lang/Errors.js +19 -0
  686. package/src/utils/lang/Sets.js +94 -0
  687. package/src/utils/lang/index.js +291 -0
  688. package/src/utils/localstorage/isAvailable.js +26 -0
  689. package/src/utils/logger/LoggerFactory.js +90 -0
  690. package/src/utils/logger/index.js +93 -0
  691. package/src/utils/lrucache/linkedlist.js +116 -0
  692. package/src/utils/lrucache/lru.spec.js +26 -0
  693. package/src/utils/lrucache/lrucache.js +49 -0
  694. package/src/utils/now/browser.js +29 -0
  695. package/src/utils/now/node.js +21 -0
  696. package/src/utils/now/package.json +4 -0
  697. package/src/utils/promise/thenable.js +1 -0
  698. package/src/utils/promise/timeout.js +38 -0
  699. package/src/utils/promise/wrapper.js +60 -0
  700. package/{lib → src/utils}/settings/defaults/browser.js +3 -13
  701. package/{lib → src/utils}/settings/defaults/node.js +2 -12
  702. package/src/utils/settings/defaults/package.json +4 -0
  703. package/src/utils/settings/impressionsMode.js +15 -0
  704. package/src/utils/settings/index.js +217 -0
  705. package/src/utils/settings/integrations/browser.js +8 -0
  706. package/src/utils/settings/integrations/common.js +32 -0
  707. package/src/{settings → utils/settings}/integrations/node.js +3 -1
  708. package/src/utils/settings/integrations/package.json +4 -0
  709. package/src/utils/settings/language/browser.js +17 -0
  710. package/src/utils/settings/language/node.js +17 -0
  711. package/src/utils/settings/language/package.json +4 -0
  712. package/src/utils/settings/mode.js +12 -0
  713. package/src/utils/settings/runtime/browser.js +22 -0
  714. package/src/{settings → utils/settings}/runtime/node.js +6 -9
  715. package/src/utils/settings/runtime/package.json +4 -0
  716. package/src/{settings → utils/settings}/storage/browser.js +18 -13
  717. package/src/{settings → utils/settings}/storage/node.js +14 -19
  718. package/src/utils/settings/storage/package.json +4 -0
  719. package/src/utils/splits/usesSegments.js +17 -0
  720. package/src/utils/time/index.js +8 -0
  721. package/src/utils/timeTracker/index.js +223 -0
  722. package/src/utils/timeTracker/timer.js +27 -0
  723. package/types/splitio.d.ts +5 -22
  724. package/client/package.json +0 -5
  725. package/es/factory/browser.js +0 -58
  726. package/es/factory/node.js +0 -59
  727. package/es/platform/EventEmitter.js +0 -412
  728. package/es/platform/browser.js +0 -10
  729. package/es/platform/node.js +0 -12
  730. package/es/settings/browser.js +0 -18
  731. package/es/settings/defaults/version.js +0 -1
  732. package/es/settings/integrations/browser.js +0 -5
  733. package/es/settings/integrations/node.js +0 -5
  734. package/es/settings/node.js +0 -20
  735. package/lib/factory/browser.js +0 -79
  736. package/lib/factory/node.js +0 -78
  737. package/lib/platform/EventEmitter.js +0 -417
  738. package/lib/platform/browser.js +0 -21
  739. package/lib/platform/node.js +0 -26
  740. package/lib/settings/browser.js +0 -30
  741. package/lib/settings/defaults/version.js +0 -6
  742. package/lib/settings/integrations/browser.js +0 -14
  743. package/lib/settings/integrations/node.js +0 -12
  744. package/lib/settings/node.js +0 -33
  745. package/server/package.json +0 -5
  746. package/src/.DS_Store +0 -0
  747. package/src/factory/browser.js +0 -74
  748. package/src/factory/node.js +0 -71
  749. package/src/platform/.DS_Store +0 -0
  750. package/src/platform/EventEmitter.js +0 -443
  751. package/src/platform/browser.js +0 -12
  752. package/src/platform/node.js +0 -14
  753. package/src/settings/.DS_Store +0 -0
  754. package/src/settings/browser.js +0 -18
  755. package/src/settings/defaults/version.js +0 -1
  756. package/src/settings/integrations/browser.js +0 -6
  757. package/src/settings/node.js +0 -20
  758. package/types/client/index.d.ts +0 -14
  759. package/types/server/index.d.ts +0 -20
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ exports.__esModule = true;
6
+ exports.default = void 0;
7
+
8
+ var _objectAssign = _interopRequireDefault(require("object-assign"));
9
+
10
+ var _thenable = _interopRequireDefault(require("../promise/thenable"));
11
+
12
+ var _constants = _interopRequireDefault(require("./constants"));
13
+
14
+ /**
15
+ Copyright 2016 Split Software
16
+
17
+ Licensed under the Apache License, Version 2.0 (the "License");
18
+ you may not use this file except in compliance with the License.
19
+ You may obtain a copy of the License at
20
+
21
+ http://www.apache.org/licenses/LICENSE-2.0
22
+
23
+ Unless required by applicable law or agreed to in writing, software
24
+ distributed under the License is distributed on an "AS IS" BASIS,
25
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
26
+ See the License for the specific language governing permissions and
27
+ limitations under the License.
28
+ **/
29
+ var Context = /*#__PURE__*/function () {
30
+ function Context() {
31
+ this._map = {};
32
+ this.constants = _constants.default;
33
+ }
34
+ /**
35
+ * Gets an item in the context instance or a promise if the item is not yet stored and we are not doing a one time check.
36
+ * @param {String} name - The name of the item we want to get
37
+ * @return {Any} The item we want to get.
38
+ */
39
+
40
+
41
+ var _proto = Context.prototype;
42
+
43
+ _proto.get = function get(name, flagCheck) {
44
+ if (flagCheck === void 0) {
45
+ flagCheck = false;
46
+ }
47
+
48
+ if (typeof name !== 'string' || typeof name === 'string' && !name.length) return; // Wrong usage, don't generate item promise.
49
+
50
+ var item = this._map[name]; // If we have the item, return it.
51
+
52
+ if (item !== undefined) {
53
+ return item;
54
+ } else if (!flagCheck) {
55
+ // If we don't and it's not a flag check, return a promise that we will resolve once we receive the item.
56
+ var resolve;
57
+ var promise = new Promise(function (res) {
58
+ return resolve = res;
59
+ });
60
+ promise.manualResolve = resolve;
61
+ this._map[name] = promise;
62
+ return promise;
63
+ }
64
+ }
65
+ /**
66
+ * Gets all objects stored in the context.
67
+ * @return {Object} - A new map of context-stored items.
68
+ */
69
+ ;
70
+
71
+ _proto.getAll = function getAll() {
72
+ return (0, _objectAssign.default)({}, this._map);
73
+ }
74
+ /**
75
+ * Stores an item in the context instance.
76
+ * @param {String} name - The name of what we are storing
77
+ * @param {Any} item - The item can be of any type.
78
+ * @return {Boolean} - The result of the operation
79
+ */
80
+ ;
81
+
82
+ _proto.put = function put(name, item) {
83
+ var _this = this;
84
+
85
+ if (typeof name !== 'string' || typeof name === 'string' && !name.length || item === undefined) return false; // We can't store this.
86
+
87
+ var existingItem = this._map[name]; // Item already exists and no one is waiting for the item. Abort and return false.
88
+
89
+ if (existingItem !== undefined && typeof existingItem.manualResolve !== 'function') return false; // Someone is waiting for this item, resolve to it.
90
+
91
+ if ((0, _thenable.default)(existingItem) && existingItem.manualResolve) existingItem.manualResolve(item); // We are storing a promise, when resolving save the item. On error, clean up the item.
92
+
93
+ if ((0, _thenable.default)(item)) {
94
+ item.then(function (item) {
95
+ _this._map[name] = item;
96
+ return item;
97
+ }).catch(function (err) {
98
+ _this._map[name] = undefined;
99
+ return err;
100
+ });
101
+ }
102
+
103
+ this._map[name] = item;
104
+ return true;
105
+ };
106
+
107
+ return Context;
108
+ }();
109
+
110
+ var _default = Context;
111
+ exports.default = _default;
@@ -0,0 +1,483 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.algorithms = void 0;
5
+
6
+ /*
7
+ Trimmed version of "fflate" library (https://www.npmjs.com/package/fflate/v/0.7.1)
8
+ used for GZIP/Zlib decompression in JavaScript, with the minimal modules used by the SDK.
9
+
10
+ MIT License
11
+
12
+ Copyright (c) 2020 Arjun Barrett
13
+
14
+ Permission is hereby granted, free of charge, to any person obtaining a copy
15
+ of this software and associated documentation files (the "Software"), to deal
16
+ in the Software without restriction, including without limitation the rights
17
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
18
+ copies of the Software, and to permit persons to whom the Software is
19
+ furnished to do so, subject to the following conditions:
20
+
21
+ The above copyright notice and this permission notice shall be included in all
22
+ copies or substantial portions of the Software.
23
+
24
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
25
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
26
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
27
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
28
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
29
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
30
+ SOFTWARE.
31
+ */
32
+
33
+ /* eslint-disable */
34
+ var algorithms = function iifeDecompress() {
35
+ // Handle runtimes without typed arrays
36
+ if ([typeof Uint8Array, typeof Uint16Array, typeof Uint32Array].some(function (v) {
37
+ return v != 'function';
38
+ })) {
39
+ return 'global Uint8Array object is not available for gzip/zlib decompression';
40
+ } // DEFLATE is a complex format; to read this code, you should probably check the RFC first:
41
+ // aliases for shorter compressed code (most minifers don't do this)
42
+
43
+
44
+ var u8 = Uint8Array,
45
+ u16 = Uint16Array,
46
+ u32 = Uint32Array; // fixed length extra bits
47
+
48
+ var fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0,
49
+ /* unused */
50
+ 0, 0,
51
+ /* impossible */
52
+ 0]); // fixed distance extra bits
53
+ // see fleb note
54
+
55
+ var fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13,
56
+ /* unused */
57
+ 0, 0]); // code length index map
58
+
59
+ var clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]); // get base, reverse index map from extra bits
60
+
61
+ var freb = function freb(eb, start) {
62
+ var b = new u16(31);
63
+
64
+ for (var i = 0; i < 31; ++i) {
65
+ b[i] = start += 1 << eb[i - 1];
66
+ } // numbers here are at max 18 bits
67
+
68
+
69
+ var r = new u32(b[30]);
70
+
71
+ for (var i = 1; i < 30; ++i) {
72
+ for (var j = b[i]; j < b[i + 1]; ++j) {
73
+ r[j] = j - b[i] << 5 | i;
74
+ }
75
+ }
76
+
77
+ return [b, r];
78
+ };
79
+
80
+ var _a = freb(fleb, 2),
81
+ fl = _a[0],
82
+ revfl = _a[1]; // we can ignore the fact that the other numbers are wrong; they never happen anyway
83
+
84
+
85
+ fl[28] = 258, revfl[258] = 28;
86
+
87
+ var _b = freb(fdeb, 0),
88
+ fd = _b[0]; // map of value to reverse (assuming 16 bits)
89
+
90
+
91
+ var rev = new u16(32768);
92
+
93
+ for (var i = 0; i < 32768; ++i) {
94
+ // reverse table algorithm from SO
95
+ var x = (i & 0xAAAA) >>> 1 | (i & 0x5555) << 1;
96
+ x = (x & 0xCCCC) >>> 2 | (x & 0x3333) << 2;
97
+ x = (x & 0xF0F0) >>> 4 | (x & 0x0F0F) << 4;
98
+ rev[i] = ((x & 0xFF00) >>> 8 | (x & 0x00FF) << 8) >>> 1;
99
+ } // create huffman tree from u8 "map": index -> code length for code index
100
+ // mb (max bits) must be at most 15
101
+ // TODO: optimize/split up?
102
+
103
+
104
+ var hMap = function hMap(cd, mb, r) {
105
+ var s = cd.length; // index
106
+
107
+ var i = 0; // u16 "map": index -> # of codes with bit length = index
108
+
109
+ var l = new u16(mb); // length of cd must be 288 (total # of codes)
110
+
111
+ for (; i < s; ++i) {
112
+ ++l[cd[i] - 1];
113
+ } // u16 "map": index -> minimum code for bit length = index
114
+
115
+
116
+ var le = new u16(mb);
117
+
118
+ for (i = 0; i < mb; ++i) {
119
+ le[i] = le[i - 1] + l[i - 1] << 1;
120
+ }
121
+
122
+ var co;
123
+
124
+ if (r) {
125
+ // u16 "map": index -> number of actual bits, symbol for code
126
+ co = new u16(1 << mb); // bits to remove for reverser
127
+
128
+ var rvb = 15 - mb;
129
+
130
+ for (i = 0; i < s; ++i) {
131
+ // ignore 0 lengths
132
+ if (cd[i]) {
133
+ // num encoding both symbol and bits read
134
+ var sv = i << 4 | cd[i]; // free bits
135
+
136
+ var r_1 = mb - cd[i]; // start value
137
+
138
+ var v = le[cd[i] - 1]++ << r_1; // m is end value
139
+
140
+ for (var m = v | (1 << r_1) - 1; v <= m; ++v) {
141
+ // every 16 bit value starting with the code yields the same result
142
+ co[rev[v] >>> rvb] = sv;
143
+ }
144
+ }
145
+ }
146
+ } else {
147
+ co = new u16(s);
148
+
149
+ for (i = 0; i < s; ++i) {
150
+ if (cd[i]) {
151
+ co[i] = rev[le[cd[i] - 1]++] >>> 15 - cd[i];
152
+ }
153
+ }
154
+ }
155
+
156
+ return co;
157
+ }; // fixed length tree
158
+
159
+
160
+ var flt = new u8(288);
161
+
162
+ for (var i = 0; i < 144; ++i) {
163
+ flt[i] = 8;
164
+ }
165
+
166
+ for (var i = 144; i < 256; ++i) {
167
+ flt[i] = 9;
168
+ }
169
+
170
+ for (var i = 256; i < 280; ++i) {
171
+ flt[i] = 7;
172
+ }
173
+
174
+ for (var i = 280; i < 288; ++i) {
175
+ flt[i] = 8;
176
+ } // fixed distance tree
177
+
178
+
179
+ var fdt = new u8(32);
180
+
181
+ for (var i = 0; i < 32; ++i) {
182
+ fdt[i] = 5;
183
+ } // fixed length map
184
+
185
+
186
+ var flrm = /*#__PURE__*/hMap(flt, 9, 1); // fixed distance map
187
+
188
+ var fdrm = /*#__PURE__*/hMap(fdt, 5, 1); // find max of array
189
+
190
+ var max = function max(a) {
191
+ var m = a[0];
192
+
193
+ for (var i = 1; i < a.length; ++i) {
194
+ if (a[i] > m) m = a[i];
195
+ }
196
+
197
+ return m;
198
+ }; // read d, starting at bit p and mask with m
199
+
200
+
201
+ var bits = function bits(d, p, m) {
202
+ var o = p / 8 | 0;
203
+ return (d[o] | d[o + 1] << 8) >> (p & 7) & m;
204
+ }; // read d, starting at bit p continuing for at least 16 bits
205
+
206
+
207
+ var bits16 = function bits16(d, p) {
208
+ var o = p / 8 | 0;
209
+ return (d[o] | d[o + 1] << 8 | d[o + 2] << 16) >> (p & 7);
210
+ }; // get end of byte
211
+
212
+
213
+ var shft = function shft(p) {
214
+ return (p + 7) / 8 | 0;
215
+ }; // typed array slice - allows garbage collector to free original reference,
216
+ // while being more compatible than .slice
217
+
218
+
219
+ var slc = function slc(v, s, e) {
220
+ if (s == null || s < 0) s = 0;
221
+ if (e == null || e > v.length) e = v.length; // can't use .constructor in case user-supplied
222
+
223
+ var n = new (v instanceof u16 ? u16 : v instanceof u32 ? u32 : u8)(e - s);
224
+ n.set(v.subarray(s, e));
225
+ return n;
226
+ }; // error codes
227
+
228
+
229
+ var ec = ['unexpected EOF', 'invalid block type', 'invalid length/literal', 'invalid distance', 'stream finished', 'no stream handler',, 'no callback', 'invalid UTF-8 data', 'extra field too long', 'date not in range 1980-2099', 'filename too long', 'stream finishing', 'invalid zip data' // determined by unknown compression method
230
+ ];
231
+
232
+ var err = function err(ind, msg, nt) {
233
+ var e = new Error(msg || ec[ind]);
234
+ e.code = ind;
235
+ if (Error.captureStackTrace) Error.captureStackTrace(e, err);
236
+ if (!nt) throw e;
237
+ return e;
238
+ }; // expands raw DEFLATE data
239
+
240
+
241
+ var inflt = function inflt(dat, buf, st) {
242
+ // source length
243
+ var sl = dat.length;
244
+ if (!sl || st && st.f && !st.l) return buf || new u8(0); // have to estimate size
245
+
246
+ var noBuf = !buf || st; // no state
247
+
248
+ var noSt = !st || st.i;
249
+ if (!st) st = {}; // Assumes roughly 33% compression ratio average
250
+
251
+ if (!buf) buf = new u8(sl * 3); // ensure buffer can fit at least l elements
252
+
253
+ var cbuf = function cbuf(l) {
254
+ var bl = buf.length; // need to increase size to fit
255
+
256
+ if (l > bl) {
257
+ // Double or set to necessary, whichever is greater
258
+ var nbuf = new u8(Math.max(bl * 2, l));
259
+ nbuf.set(buf);
260
+ buf = nbuf;
261
+ }
262
+ }; // last chunk bitpos bytes
263
+
264
+
265
+ var final = st.f || 0,
266
+ pos = st.p || 0,
267
+ bt = st.b || 0,
268
+ lm = st.l,
269
+ dm = st.d,
270
+ lbt = st.m,
271
+ dbt = st.n; // total bits
272
+
273
+ var tbts = sl * 8;
274
+
275
+ do {
276
+ if (!lm) {
277
+ // BFINAL - this is only 1 when last chunk is next
278
+ final = bits(dat, pos, 1); // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman
279
+
280
+ var type = bits(dat, pos + 1, 3);
281
+ pos += 3;
282
+
283
+ if (!type) {
284
+ // go to end of byte boundary
285
+ var s = shft(pos) + 4,
286
+ l = dat[s - 4] | dat[s - 3] << 8,
287
+ t = s + l;
288
+
289
+ if (t > sl) {
290
+ if (noSt) err(0);
291
+ break;
292
+ } // ensure size
293
+
294
+
295
+ if (noBuf) cbuf(bt + l); // Copy over uncompressed data
296
+
297
+ buf.set(dat.subarray(s, t), bt); // Get new bitpos, update byte count
298
+
299
+ st.b = bt += l, st.p = pos = t * 8, st.f = final;
300
+ continue;
301
+ } else if (type == 1) lm = flrm, dm = fdrm, lbt = 9, dbt = 5;else if (type == 2) {
302
+ // literal lengths
303
+ var hLit = bits(dat, pos, 31) + 257,
304
+ hcLen = bits(dat, pos + 10, 15) + 4;
305
+ var tl = hLit + bits(dat, pos + 5, 31) + 1;
306
+ pos += 14; // length+distance tree
307
+
308
+ var ldt = new u8(tl); // code length tree
309
+
310
+ var clt = new u8(19);
311
+
312
+ for (var i = 0; i < hcLen; ++i) {
313
+ // use index map to get real code
314
+ clt[clim[i]] = bits(dat, pos + i * 3, 7);
315
+ }
316
+
317
+ pos += hcLen * 3; // code lengths bits
318
+
319
+ var clb = max(clt),
320
+ clbmsk = (1 << clb) - 1; // code lengths map
321
+
322
+ var clm = hMap(clt, clb, 1);
323
+
324
+ for (var i = 0; i < tl;) {
325
+ var r = clm[bits(dat, pos, clbmsk)]; // bits read
326
+
327
+ pos += r & 15; // symbol
328
+
329
+ var s = r >>> 4; // code length to copy
330
+
331
+ if (s < 16) {
332
+ ldt[i++] = s;
333
+ } else {
334
+ // copy count
335
+ var c = 0,
336
+ n = 0;
337
+ if (s == 16) n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];else if (s == 17) n = 3 + bits(dat, pos, 7), pos += 3;else if (s == 18) n = 11 + bits(dat, pos, 127), pos += 7;
338
+
339
+ while (n--) {
340
+ ldt[i++] = c;
341
+ }
342
+ }
343
+ } // length tree distance tree
344
+
345
+
346
+ var lt = ldt.subarray(0, hLit),
347
+ dt = ldt.subarray(hLit); // max length bits
348
+
349
+ lbt = max(lt); // max dist bits
350
+
351
+ dbt = max(dt);
352
+ lm = hMap(lt, lbt, 1);
353
+ dm = hMap(dt, dbt, 1);
354
+ } else err(1);
355
+
356
+ if (pos > tbts) {
357
+ if (noSt) err(0);
358
+ break;
359
+ }
360
+ } // Make sure the buffer can hold this + the largest possible addition
361
+ // Maximum chunk size (practically, theoretically infinite) is 2^17;
362
+
363
+
364
+ if (noBuf) cbuf(bt + 131072);
365
+ var lms = (1 << lbt) - 1,
366
+ dms = (1 << dbt) - 1;
367
+ var lpos = pos;
368
+
369
+ for (;; lpos = pos) {
370
+ // bits read, code
371
+ var c = lm[bits16(dat, pos) & lms],
372
+ sym = c >>> 4;
373
+ pos += c & 15;
374
+
375
+ if (pos > tbts) {
376
+ if (noSt) err(0);
377
+ break;
378
+ }
379
+
380
+ if (!c) err(2);
381
+ if (sym < 256) buf[bt++] = sym;else if (sym == 256) {
382
+ lpos = pos, lm = null;
383
+ break;
384
+ } else {
385
+ var add = sym - 254; // no extra bits needed if less
386
+
387
+ if (sym > 264) {
388
+ // index
389
+ var i = sym - 257,
390
+ b = fleb[i];
391
+ add = bits(dat, pos, (1 << b) - 1) + fl[i];
392
+ pos += b;
393
+ } // dist
394
+
395
+
396
+ var d = dm[bits16(dat, pos) & dms],
397
+ dsym = d >>> 4;
398
+ if (!d) err(3);
399
+ pos += d & 15;
400
+ var dt = fd[dsym];
401
+
402
+ if (dsym > 3) {
403
+ var b = fdeb[dsym];
404
+ dt += bits16(dat, pos) & (1 << b) - 1, pos += b;
405
+ }
406
+
407
+ if (pos > tbts) {
408
+ if (noSt) err(0);
409
+ break;
410
+ }
411
+
412
+ if (noBuf) cbuf(bt + 131072);
413
+ var end = bt + add;
414
+
415
+ for (; bt < end; bt += 4) {
416
+ buf[bt] = buf[bt - dt];
417
+ buf[bt + 1] = buf[bt + 1 - dt];
418
+ buf[bt + 2] = buf[bt + 2 - dt];
419
+ buf[bt + 3] = buf[bt + 3 - dt];
420
+ }
421
+
422
+ bt = end;
423
+ }
424
+ }
425
+
426
+ st.l = lm, st.p = lpos, st.b = bt, st.f = final;
427
+ if (lm) final = 1, st.m = lbt, st.d = dm, st.n = dbt;
428
+ } while (!final);
429
+
430
+ return bt == buf.length ? buf : slc(buf, 0, bt);
431
+ }; // gzip footer: -8 to -4 = CRC, -4 to -0 is length
432
+ // gzip start
433
+
434
+
435
+ var gzs = function gzs(d) {
436
+ if (d[0] != 31 || d[1] != 139 || d[2] != 8) err(6, 'invalid gzip data');
437
+ var flg = d[3];
438
+ var st = 10;
439
+ if (flg & 4) st += d[10] | (d[11] << 8) + 2;
440
+
441
+ for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++]) {
442
+ ;
443
+ }
444
+
445
+ return st + (flg & 2);
446
+ }; // gzip length
447
+
448
+
449
+ var gzl = function gzl(d) {
450
+ var l = d.length;
451
+ return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;
452
+ }; // zlib valid
453
+
454
+
455
+ var zlv = function zlv(d) {
456
+ if ((d[0] & 15) != 8 || d[0] >>> 4 > 7 || (d[0] << 8 | d[1]) % 31) err(6, 'invalid zlib data');
457
+ if (d[1] & 32) err(6, 'invalid zlib data: preset dictionaries not supported');
458
+ };
459
+
460
+ return {
461
+ /**
462
+ * Expands GZIP data
463
+ * @param data The data to decompress
464
+ * @param out Where to write the data. GZIP already encodes the output size, so providing this doesn't save memory.
465
+ * @returns The decompressed version of the data
466
+ */
467
+ gunzipSync: function gunzipSync(data, out) {
468
+ return inflt(data.subarray(gzs(data), -8), out || new u8(gzl(data)));
469
+ },
470
+
471
+ /**
472
+ * Expands Zlib data
473
+ * @param data The data to decompress
474
+ * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.
475
+ * @returns The decompressed version of the data
476
+ */
477
+ unzlibSync: function unzlibSync(data, out) {
478
+ return inflt((zlv(data), data.subarray(2, -4)), out);
479
+ }
480
+ };
481
+ }();
482
+
483
+ exports.algorithms = algorithms;
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.default = void 0;
5
+
6
+ /**
7
+ Copyright 2016 Split Software
8
+
9
+ Licensed under the Apache License, Version 2.0 (the "License");
10
+ you may not use this file except in compliance with the License.
11
+ You may obtain a copy of the License at
12
+
13
+ http://www.apache.org/licenses/LICENSE-2.0
14
+
15
+ Unless required by applicable law or agreed to in writing, software
16
+ distributed under the License is distributed on an "AS IS" BASIS,
17
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18
+ See the License for the specific language governing permissions and
19
+ limitations under the License.
20
+ **/
21
+ function repeat(fn, delay) {
22
+ for (var _len = arguments.length, rest = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
23
+ rest[_key - 2] = arguments[_key];
24
+ }
25
+
26
+ var tid;
27
+ var stopped = false;
28
+
29
+ function next(_delay) {
30
+ if (_delay === void 0) {
31
+ _delay = delay;
32
+ }
33
+
34
+ for (var _len2 = arguments.length, rest = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
35
+ rest[_key2 - 1] = arguments[_key2];
36
+ }
37
+
38
+ if (!stopped) {
39
+ // IE 9 doesn't support function arguments through setTimeout call.
40
+ // https://msdn.microsoft.com/en-us/library/ms536753(v=vs.85).aspx
41
+ tid = setTimeout(function () {
42
+ fn.apply(void 0, rest.concat([next]));
43
+ }, _delay);
44
+ }
45
+ }
46
+
47
+ function till() {
48
+ clearTimeout(tid);
49
+ tid = undefined;
50
+ stopped = true;
51
+ }
52
+
53
+ till.reset = function () {
54
+ clearTimeout(tid);
55
+ tid = undefined;
56
+ next.apply(void 0, [delay].concat(rest));
57
+ };
58
+
59
+ fn.apply(void 0, rest.concat([next]));
60
+ return till;
61
+ }
62
+
63
+ var _default = repeat;
64
+ exports.default = _default;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ exports.__esModule = true;
6
+ exports.validateApiKey = validateApiKey;
7
+ exports.releaseApiKey = releaseApiKey;
8
+
9
+ var _lang = require("../lang");
10
+
11
+ var _logger = _interopRequireDefault(require("../logger"));
12
+
13
+ var log = (0, _logger.default)('', {
14
+ displayAllErrors: true
15
+ });
16
+ var usedKeysMap = {};
17
+
18
+ function validateApiKey(maybeApiKey) {
19
+ var apiKey = false;
20
+
21
+ if (maybeApiKey == undefined) {
22
+ // eslint-disable-line eqeqeq
23
+ log.error('Factory instantiation: you passed a null or undefined api_key, api_key must be a non-empty string.');
24
+ } else if ((0, _lang.isString)(maybeApiKey)) {
25
+ if (maybeApiKey.length > 0) apiKey = maybeApiKey;else log.error('Factory instantiation: you passed an empty api_key, api_key must be a non-empty string.');
26
+ } else {
27
+ log.error('Factory instantiation: you passed an invalid api_key, api_key must be a non-empty string.');
28
+ } // If the apiKey is correct, we'll save it as the instance creation should work.
29
+
30
+
31
+ if (apiKey) {
32
+ if (!usedKeysMap[apiKey]) {
33
+ // If this key is not present, only warning scenarios is that we have factories for other keys.
34
+ usedKeysMap[apiKey] = 1;
35
+
36
+ if (Object.keys(usedKeysMap).length > 1) {
37
+ log.warn('Factory instantiation: You already have an instance of the Split factory. Make sure you definitely want this additional instance. We recommend keeping only one instance of the factory at all times (Singleton pattern) and reusing it throughout your application.');
38
+ }
39
+ } else {
40
+ log.warn("Factory instantiation: You already have " + usedKeysMap[apiKey] + " " + (usedKeysMap[apiKey] === 1 ? 'factory' : 'factories') + " with this API Key. We recommend keeping only one instance of the factory at all times (Singleton pattern) and reusing it throughout your application.");
41
+ usedKeysMap[apiKey]++;
42
+ }
43
+ }
44
+
45
+ return apiKey;
46
+ }
47
+
48
+ function releaseApiKey(apiKey) {
49
+ if (usedKeysMap[apiKey]) usedKeysMap[apiKey]--;
50
+ if (usedKeysMap[apiKey] === 0) delete usedKeysMap[apiKey];
51
+ }