@splitsoftware/splitio-commons 0.1.1-canary.9 → 0.1.1-rc.18

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 (254) hide show
  1. package/cjs/evaluator/matchers/matcherTypes.js +4 -4
  2. package/cjs/evaluator/matchersTransform/index.js +11 -11
  3. package/cjs/evaluator/value/sanitize.js +6 -6
  4. package/cjs/listeners/browser.js +1 -2
  5. package/cjs/listeners/node.js +0 -3
  6. package/cjs/logger/constants.js +3 -1
  7. package/cjs/logger/messages/error.js +3 -2
  8. package/cjs/logger/messages/info.js +2 -2
  9. package/cjs/logger/messages/warn.js +2 -1
  10. package/cjs/readiness/readinessManager.js +10 -7
  11. package/cjs/sdkFactory/index.js +1 -4
  12. package/cjs/services/splitApi.js +1 -1
  13. package/cjs/services/splitHttpClient.js +5 -4
  14. package/cjs/storages/AbstractSplitsCacheSync.js +1 -1
  15. package/cjs/storages/inLocalStorage/index.js +5 -2
  16. package/cjs/storages/inMemory/InMemoryStorage.js +2 -0
  17. package/cjs/storages/inMemory/InMemoryStorageCS.js +2 -0
  18. package/cjs/storages/inRedis/SplitsCacheInRedis.js +6 -2
  19. package/cjs/storages/inRedis/index.js +5 -2
  20. package/cjs/storages/pluggable/SplitsCachePluggable.js +6 -2
  21. package/cjs/storages/pluggable/inMemoryWrapper.js +6 -7
  22. package/cjs/storages/pluggable/index.js +5 -2
  23. package/cjs/storages/pluggable/wrapperAdapter.js +0 -1
  24. package/cjs/sync/offline/splitsParser/splitsParserFromFile.js +92 -89
  25. package/cjs/sync/offline/splitsParser/splitsParserFromSettings.js +45 -42
  26. package/cjs/sync/offline/syncTasks/fromObjectSyncTask.js +14 -4
  27. package/cjs/sync/polling/updaters/mySegmentsUpdater.js +30 -10
  28. package/cjs/sync/streaming/SSEClient/index.js +0 -11
  29. package/cjs/sync/streaming/SSEHandler/NotificationKeeper.js +7 -0
  30. package/cjs/sync/streaming/SSEHandler/NotificationParser.js +4 -1
  31. package/cjs/sync/streaming/SSEHandler/index.js +8 -9
  32. package/cjs/sync/streaming/SSEHandler/types.js +14 -0
  33. package/cjs/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.js +5 -5
  34. package/cjs/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.js +2 -1
  35. package/cjs/sync/streaming/UpdateWorkers/SplitsUpdateWorker.js +5 -3
  36. package/cjs/sync/streaming/constants.js +3 -1
  37. package/cjs/sync/streaming/mySegmentsV2utils.js +75 -0
  38. package/cjs/sync/streaming/pushManager.js +141 -40
  39. package/cjs/sync/submitters/metricsSyncTask.js +1 -1
  40. package/cjs/sync/submitters/submitterSyncTask.js +2 -2
  41. package/cjs/sync/syncManagerFromFile.js +15 -0
  42. package/cjs/sync/syncManagerFromObject.js +14 -0
  43. package/cjs/sync/syncManagerOffline.js +3 -3
  44. package/cjs/sync/syncManagerOnline.js +5 -3
  45. package/cjs/trackers/impressionObserver/ImpressionObserver.js +0 -2
  46. package/cjs/trackers/impressionObserver/buildKey.js +3 -9
  47. package/cjs/trackers/impressionObserver/impressionObserverCS.js +2 -2
  48. package/cjs/trackers/impressionObserver/impressionObserverSS.js +3 -3
  49. package/cjs/utils/constants/index.js +4 -1
  50. package/cjs/utils/decompress/index.js +427 -0
  51. package/cjs/utils/murmur3/{commons.js → common.js} +2 -6
  52. package/cjs/utils/murmur3/murmur3.js +11 -12
  53. package/cjs/utils/murmur3/murmur3_128.js +7 -142
  54. package/cjs/utils/murmur3/murmur3_128_x86.js +154 -0
  55. package/cjs/utils/murmur3/murmur3_64.js +36 -0
  56. package/cjs/utils/murmur3/utfx.js +100 -106
  57. package/cjs/utils/promise/wrapper.js +14 -11
  58. package/cjs/utils/settingsValidation/index.js +5 -2
  59. package/cjs/utils/settingsValidation/localhost/index.js +20 -0
  60. package/cjs/utils/settingsValidation/splitFilters.js +0 -1
  61. package/cjs/utils/settingsValidation/storage/storageCS.js +18 -8
  62. package/cjs/utils/settingsValidation/url.js +1 -1
  63. package/esm/evaluator/matchers/matcherTypes.js +2 -2
  64. package/esm/evaluator/matchersTransform/index.js +12 -12
  65. package/esm/evaluator/value/sanitize.js +7 -7
  66. package/esm/listeners/browser.js +1 -2
  67. package/esm/listeners/node.js +0 -3
  68. package/esm/logger/constants.js +2 -0
  69. package/esm/logger/messages/error.js +3 -2
  70. package/esm/logger/messages/info.js +2 -2
  71. package/esm/logger/messages/warn.js +2 -1
  72. package/esm/readiness/readinessManager.js +10 -7
  73. package/esm/sdkFactory/index.js +1 -4
  74. package/esm/services/splitApi.js +1 -1
  75. package/esm/services/splitHttpClient.js +5 -4
  76. package/esm/storages/AbstractSplitsCacheSync.js +1 -1
  77. package/esm/storages/inLocalStorage/index.js +5 -2
  78. package/esm/storages/inMemory/InMemoryStorage.js +2 -0
  79. package/esm/storages/inMemory/InMemoryStorageCS.js +2 -0
  80. package/esm/storages/inRedis/SplitsCacheInRedis.js +6 -2
  81. package/esm/storages/inRedis/index.js +5 -2
  82. package/esm/storages/pluggable/SplitsCachePluggable.js +6 -2
  83. package/esm/storages/pluggable/inMemoryWrapper.js +6 -7
  84. package/esm/storages/pluggable/index.js +5 -2
  85. package/esm/storages/pluggable/wrapperAdapter.js +0 -1
  86. package/esm/sync/offline/splitsParser/splitsParserFromFile.js +90 -88
  87. package/esm/sync/offline/splitsParser/splitsParserFromSettings.js +43 -41
  88. package/esm/sync/offline/syncTasks/fromObjectSyncTask.js +15 -5
  89. package/esm/sync/polling/updaters/mySegmentsUpdater.js +30 -10
  90. package/esm/sync/streaming/SSEClient/index.js +0 -11
  91. package/esm/sync/streaming/SSEHandler/NotificationKeeper.js +7 -0
  92. package/esm/sync/streaming/SSEHandler/NotificationParser.js +4 -1
  93. package/esm/sync/streaming/SSEHandler/index.js +9 -10
  94. package/esm/sync/streaming/SSEHandler/types.js +13 -1
  95. package/esm/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.js +5 -5
  96. package/esm/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.js +2 -1
  97. package/esm/sync/streaming/UpdateWorkers/SplitsUpdateWorker.js +5 -3
  98. package/esm/sync/streaming/constants.js +2 -0
  99. package/esm/sync/streaming/mySegmentsV2utils.js +69 -0
  100. package/esm/sync/streaming/pushManager.js +143 -42
  101. package/esm/sync/submitters/metricsSyncTask.js +1 -1
  102. package/esm/sync/submitters/submitterSyncTask.js +2 -2
  103. package/esm/sync/syncManagerFromFile.js +11 -0
  104. package/esm/sync/syncManagerFromObject.js +10 -0
  105. package/esm/sync/syncManagerOffline.js +3 -3
  106. package/esm/sync/syncManagerOnline.js +5 -3
  107. package/esm/trackers/impressionObserver/ImpressionObserver.js +0 -2
  108. package/esm/trackers/impressionObserver/buildKey.js +2 -9
  109. package/esm/trackers/impressionObserver/impressionObserverCS.js +2 -2
  110. package/esm/trackers/impressionObserver/impressionObserverSS.js +3 -3
  111. package/esm/utils/constants/index.js +3 -0
  112. package/esm/utils/decompress/index.js +424 -0
  113. package/esm/utils/murmur3/{commons.js → common.js} +1 -4
  114. package/esm/utils/murmur3/murmur3.js +1 -2
  115. package/esm/utils/murmur3/murmur3_128.js +7 -142
  116. package/esm/utils/murmur3/murmur3_128_x86.js +150 -0
  117. package/esm/utils/murmur3/murmur3_64.js +32 -0
  118. package/esm/utils/murmur3/utfx.js +96 -106
  119. package/esm/utils/promise/wrapper.js +14 -11
  120. package/esm/utils/settingsValidation/index.js +5 -2
  121. package/esm/utils/settingsValidation/localhost/index.js +16 -0
  122. package/esm/utils/settingsValidation/splitFilters.js +0 -1
  123. package/esm/utils/settingsValidation/storage/storageCS.js +16 -7
  124. package/esm/utils/settingsValidation/url.js +1 -1
  125. package/package.json +5 -5
  126. package/src/evaluator/matchers/matcherTypes.ts +2 -2
  127. package/src/evaluator/matchersTransform/index.ts +12 -12
  128. package/src/evaluator/value/sanitize.ts +7 -7
  129. package/src/listeners/browser.ts +1 -1
  130. package/src/listeners/node.ts +1 -2
  131. package/src/logger/constants.ts +2 -0
  132. package/src/logger/messages/error.ts +3 -2
  133. package/src/logger/messages/info.ts +2 -2
  134. package/src/logger/messages/warn.ts +3 -1
  135. package/src/readiness/readinessManager.ts +9 -7
  136. package/src/sdkFactory/index.ts +1 -3
  137. package/src/sdkFactory/types.ts +3 -3
  138. package/src/services/splitApi.ts +2 -3
  139. package/src/services/splitHttpClient.ts +6 -5
  140. package/src/services/types.ts +5 -5
  141. package/src/storages/AbstractSplitsCacheSync.ts +1 -1
  142. package/src/storages/inLocalStorage/index.ts +8 -4
  143. package/src/storages/inMemory/InMemoryStorage.ts +3 -0
  144. package/src/storages/inMemory/InMemoryStorageCS.ts +3 -0
  145. package/src/storages/inRedis/SplitsCacheInRedis.ts +3 -1
  146. package/src/storages/inRedis/index.ts +8 -4
  147. package/src/storages/pluggable/SplitsCachePluggable.ts +3 -1
  148. package/src/storages/pluggable/inMemoryWrapper.ts +6 -7
  149. package/src/storages/pluggable/index.ts +8 -4
  150. package/src/storages/pluggable/wrapperAdapter.ts +0 -1
  151. package/src/storages/types.ts +18 -15
  152. package/src/sync/offline/splitsParser/splitsParserFromFile.ts +110 -105
  153. package/src/sync/offline/splitsParser/splitsParserFromSettings.ts +45 -41
  154. package/src/sync/offline/syncTasks/fromObjectSyncTask.ts +15 -5
  155. package/src/sync/polling/types.ts +2 -1
  156. package/src/sync/polling/updaters/mySegmentsUpdater.ts +28 -10
  157. package/src/sync/streaming/AuthClient/types.ts +3 -0
  158. package/src/sync/streaming/SSEClient/index.ts +1 -15
  159. package/src/sync/streaming/SSEClient/types.ts +0 -1
  160. package/src/sync/streaming/SSEHandler/NotificationKeeper.ts +8 -0
  161. package/src/sync/streaming/SSEHandler/NotificationParser.ts +4 -2
  162. package/src/sync/streaming/SSEHandler/index.ts +11 -20
  163. package/src/sync/streaming/SSEHandler/types.ts +37 -3
  164. package/src/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.ts +7 -6
  165. package/src/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.ts +2 -1
  166. package/src/sync/streaming/UpdateWorkers/SplitsUpdateWorker.ts +4 -3
  167. package/src/sync/streaming/UpdateWorkers/types.ts +1 -1
  168. package/src/sync/streaming/constants.ts +2 -0
  169. package/src/sync/streaming/mySegmentsV2utils.ts +77 -0
  170. package/src/sync/streaming/pushManager.ts +139 -42
  171. package/src/sync/streaming/types.ts +14 -22
  172. package/src/sync/submitters/metricsSyncTask.ts +1 -1
  173. package/src/sync/submitters/submitterSyncTask.ts +2 -1
  174. package/src/sync/syncManagerFromFile.ts +13 -0
  175. package/src/sync/syncManagerFromObject.ts +12 -0
  176. package/src/sync/syncManagerOffline.ts +3 -3
  177. package/src/sync/syncManagerOnline.ts +6 -3
  178. package/src/trackers/impressionObserver/ImpressionObserver.ts +4 -6
  179. package/src/trackers/impressionObserver/buildKey.ts +2 -16
  180. package/src/trackers/impressionObserver/impressionObserverCS.ts +2 -2
  181. package/src/trackers/impressionObserver/impressionObserverSS.ts +3 -3
  182. package/src/types.ts +16 -2
  183. package/src/utils/constants/index.ts +6 -1
  184. package/src/utils/decompress/index.ts +429 -0
  185. package/src/utils/murmur3/{commons.ts → common.ts} +1 -5
  186. package/src/utils/murmur3/murmur3.ts +5 -5
  187. package/src/utils/murmur3/murmur3_128.ts +7 -180
  188. package/src/utils/murmur3/murmur3_128_x86.ts +188 -0
  189. package/src/utils/murmur3/murmur3_64.ts +36 -0
  190. package/src/utils/murmur3/utfx.ts +92 -110
  191. package/src/utils/promise/wrapper.ts +12 -9
  192. package/src/utils/settingsValidation/index.ts +8 -4
  193. package/src/utils/settingsValidation/localhost/index.ts +19 -0
  194. package/src/utils/settingsValidation/splitFilters.ts +0 -1
  195. package/src/utils/settingsValidation/storage/storageCS.ts +21 -8
  196. package/src/utils/settingsValidation/types.ts +2 -11
  197. package/src/utils/settingsValidation/url.ts +1 -1
  198. package/types/evaluator/matchers/matcherTypes.d.ts +2 -2
  199. package/types/listeners/browser.d.ts +1 -0
  200. package/types/listeners/node.d.ts +0 -1
  201. package/types/logger/constants.d.ts +2 -0
  202. package/types/sdkFactory/types.d.ts +3 -3
  203. package/types/services/types.d.ts +1 -0
  204. package/types/storages/inLocalStorage/index.d.ts +2 -2
  205. package/types/storages/inMemory/InMemoryStorage.d.ts +3 -0
  206. package/types/storages/inMemory/InMemoryStorageCS.d.ts +3 -0
  207. package/types/storages/inRedis/index.d.ts +2 -2
  208. package/types/storages/pluggable/index.d.ts +2 -2
  209. package/types/storages/types.d.ts +15 -15
  210. package/types/sync/offline/splitsParser/splitsParserFromFile.d.ts +2 -7
  211. package/types/sync/offline/splitsParser/splitsParserFromSettings.d.ts +1 -5
  212. package/types/sync/polling/types.d.ts +2 -1
  213. package/types/sync/streaming/AuthClient/indexV1.d.ts +12 -0
  214. package/types/sync/streaming/AuthClient/indexV2.d.ts +8 -0
  215. package/types/sync/streaming/AuthClient/types.d.ts +2 -0
  216. package/types/sync/streaming/SSEClient/index.d.ts +1 -9
  217. package/types/sync/streaming/SSEClient/types.d.ts +0 -1
  218. package/types/sync/streaming/SSEHandler/NotificationParser.d.ts +3 -2
  219. package/types/sync/streaming/SSEHandler/types.d.ts +30 -2
  220. package/types/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.d.ts +4 -3
  221. package/types/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.d.ts +2 -1
  222. package/types/sync/streaming/UpdateWorkers/SplitsUpdateWorker.d.ts +3 -2
  223. package/types/sync/streaming/UpdateWorkers/types.d.ts +1 -1
  224. package/types/sync/streaming/constants.d.ts +3 -1
  225. package/types/sync/streaming/mySegmentsV2utils.d.ts +27 -0
  226. package/types/sync/streaming/pushManagerNoUsers.d.ts +13 -0
  227. package/types/sync/streaming/types.d.ts +9 -5
  228. package/types/sync/submitters/submitterSyncTask.d.ts +1 -1
  229. package/types/sync/syncManagerFromFile.d.ts +2 -0
  230. package/types/sync/syncManagerFromObject.d.ts +2 -0
  231. package/types/sync/syncManagerOffline.d.ts +1 -1
  232. package/types/trackers/impressionObserver/ImpressionObserver.d.ts +2 -2
  233. package/types/trackers/impressionObserver/buildKey.d.ts +1 -1
  234. package/types/trackers/impressionObserver/impressionObserverCS.d.ts +2 -2
  235. package/types/trackers/impressionObserver/impressionObserverSS.d.ts +2 -2
  236. package/types/types.d.ts +16 -2
  237. package/types/utils/constants/index.d.ts +5 -1
  238. package/types/utils/decompress/index.d.ts +16 -0
  239. package/types/utils/murmur3/common.d.ts +12 -0
  240. package/types/utils/murmur3/murmur3.d.ts +2 -2
  241. package/types/utils/murmur3/murmur3_128.d.ts +5 -0
  242. package/types/utils/murmur3/murmur3_128_x86.d.ts +7 -0
  243. package/types/utils/murmur3/murmur3_64.d.ts +10 -0
  244. package/types/utils/murmur3/utfx.d.ts +24 -6
  245. package/types/utils/settingsValidation/index.d.ts +3 -2
  246. package/types/utils/settingsValidation/localhost/index.d.ts +9 -0
  247. package/types/utils/settingsValidation/storage/storageCS.d.ts +7 -1
  248. package/types/utils/settingsValidation/types.d.ts +2 -10
  249. package/cjs/sync/streaming/pushManagerCS.js +0 -179
  250. package/cjs/sync/streaming/pushManagerSS.js +0 -128
  251. package/esm/sync/streaming/pushManagerCS.js +0 -175
  252. package/esm/sync/streaming/pushManagerSS.js +0 -124
  253. package/src/sync/streaming/pushManagerCS.ts +0 -238
  254. package/src/sync/streaming/pushManagerSS.ts +0 -177
@@ -0,0 +1,424 @@
1
+ /*
2
+ Trimmed version of "fflate" library (https://www.npmjs.com/package/fflate/v/0.7.1)
3
+ used for GZIP/Zlib decompression in JavaScript, with the minimal modules used by the SDK.
4
+
5
+ MIT License
6
+
7
+ Copyright (c) 2020 Arjun Barrett
8
+
9
+ Permission is hereby granted, free of charge, to any person obtaining a copy
10
+ of this software and associated documentation files (the "Software"), to deal
11
+ in the Software without restriction, including without limitation the rights
12
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13
+ copies of the Software, and to permit persons to whom the Software is
14
+ furnished to do so, subject to the following conditions:
15
+
16
+ The above copyright notice and this permission notice shall be included in all
17
+ copies or substantial portions of the Software.
18
+
19
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
25
+ SOFTWARE.
26
+ */
27
+ /* eslint-disable */
28
+ // @ts-nocheck
29
+ export var algorithms = (function iifeDecompress() {
30
+ // Handle runtimes without typed arrays
31
+ if ([typeof Uint8Array, typeof Uint16Array, typeof Uint32Array].some(function (v) { return v != 'function'; })) {
32
+ return 'global Uint8Array object is not available for gzip/zlib decompression';
33
+ }
34
+ // DEFLATE is a complex format; to read this code, you should probably check the RFC first:
35
+ // aliases for shorter compressed code (most minifers don't do this)
36
+ var u8 = Uint8Array, u16 = Uint16Array, u32 = Uint32Array;
37
+ // fixed length extra bits
38
+ 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, /* unused */ 0, 0, /* impossible */ 0]);
39
+ // fixed distance extra bits
40
+ // see fleb note
41
+ 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, /* unused */ 0, 0]);
42
+ // code length index map
43
+ var clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);
44
+ // get base, reverse index map from extra bits
45
+ var freb = function (eb, start) {
46
+ var b = new u16(31);
47
+ for (var i = 0; i < 31; ++i) {
48
+ b[i] = start += 1 << eb[i - 1];
49
+ }
50
+ // numbers here are at max 18 bits
51
+ var r = new u32(b[30]);
52
+ for (var i = 1; i < 30; ++i) {
53
+ for (var j = b[i]; j < b[i + 1]; ++j) {
54
+ r[j] = ((j - b[i]) << 5) | i;
55
+ }
56
+ }
57
+ return [b, r];
58
+ };
59
+ var _a = freb(fleb, 2), fl = _a[0], revfl = _a[1];
60
+ // we can ignore the fact that the other numbers are wrong; they never happen anyway
61
+ fl[28] = 258, revfl[258] = 28;
62
+ var _b = freb(fdeb, 0), fd = _b[0];
63
+ // map of value to reverse (assuming 16 bits)
64
+ var rev = new u16(32768);
65
+ for (var i = 0; i < 32768; ++i) {
66
+ // reverse table algorithm from SO
67
+ var x = ((i & 0xAAAA) >>> 1) | ((i & 0x5555) << 1);
68
+ x = ((x & 0xCCCC) >>> 2) | ((x & 0x3333) << 2);
69
+ x = ((x & 0xF0F0) >>> 4) | ((x & 0x0F0F) << 4);
70
+ rev[i] = (((x & 0xFF00) >>> 8) | ((x & 0x00FF) << 8)) >>> 1;
71
+ }
72
+ // create huffman tree from u8 "map": index -> code length for code index
73
+ // mb (max bits) must be at most 15
74
+ // TODO: optimize/split up?
75
+ var hMap = (function (cd, mb, r) {
76
+ var s = cd.length;
77
+ // index
78
+ var i = 0;
79
+ // u16 "map": index -> # of codes with bit length = index
80
+ var l = new u16(mb);
81
+ // length of cd must be 288 (total # of codes)
82
+ for (; i < s; ++i)
83
+ ++l[cd[i] - 1];
84
+ // u16 "map": index -> minimum code for bit length = index
85
+ var le = new u16(mb);
86
+ for (i = 0; i < mb; ++i) {
87
+ le[i] = (le[i - 1] + l[i - 1]) << 1;
88
+ }
89
+ var co;
90
+ if (r) {
91
+ // u16 "map": index -> number of actual bits, symbol for code
92
+ co = new u16(1 << mb);
93
+ // bits to remove for reverser
94
+ var rvb = 15 - mb;
95
+ for (i = 0; i < s; ++i) {
96
+ // ignore 0 lengths
97
+ if (cd[i]) {
98
+ // num encoding both symbol and bits read
99
+ var sv = (i << 4) | cd[i];
100
+ // free bits
101
+ var r_1 = mb - cd[i];
102
+ // start value
103
+ var v = le[cd[i] - 1]++ << r_1;
104
+ // m is end value
105
+ for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {
106
+ // every 16 bit value starting with the code yields the same result
107
+ co[rev[v] >>> rvb] = sv;
108
+ }
109
+ }
110
+ }
111
+ }
112
+ else {
113
+ co = new u16(s);
114
+ for (i = 0; i < s; ++i) {
115
+ if (cd[i]) {
116
+ co[i] = rev[le[cd[i] - 1]++] >>> (15 - cd[i]);
117
+ }
118
+ }
119
+ }
120
+ return co;
121
+ });
122
+ // fixed length tree
123
+ var flt = new u8(288);
124
+ for (var i = 0; i < 144; ++i)
125
+ flt[i] = 8;
126
+ for (var i = 144; i < 256; ++i)
127
+ flt[i] = 9;
128
+ for (var i = 256; i < 280; ++i)
129
+ flt[i] = 7;
130
+ for (var i = 280; i < 288; ++i)
131
+ flt[i] = 8;
132
+ // fixed distance tree
133
+ var fdt = new u8(32);
134
+ for (var i = 0; i < 32; ++i)
135
+ fdt[i] = 5;
136
+ // fixed length map
137
+ var flrm = /*#__PURE__*/ hMap(flt, 9, 1);
138
+ // fixed distance map
139
+ var fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);
140
+ // find max of array
141
+ var max = function (a) {
142
+ var m = a[0];
143
+ for (var i = 1; i < a.length; ++i) {
144
+ if (a[i] > m)
145
+ m = a[i];
146
+ }
147
+ return m;
148
+ };
149
+ // read d, starting at bit p and mask with m
150
+ var bits = function (d, p, m) {
151
+ var o = (p / 8) | 0;
152
+ return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;
153
+ };
154
+ // read d, starting at bit p continuing for at least 16 bits
155
+ var bits16 = function (d, p) {
156
+ var o = (p / 8) | 0;
157
+ return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));
158
+ };
159
+ // get end of byte
160
+ var shft = function (p) { return ((p + 7) / 8) | 0; };
161
+ // typed array slice - allows garbage collector to free original reference,
162
+ // while being more compatible than .slice
163
+ var slc = function (v, s, e) {
164
+ if (s == null || s < 0)
165
+ s = 0;
166
+ if (e == null || e > v.length)
167
+ e = v.length;
168
+ // can't use .constructor in case user-supplied
169
+ var n = new (v instanceof u16 ? u16 : v instanceof u32 ? u32 : u8)(e - s);
170
+ n.set(v.subarray(s, e));
171
+ return n;
172
+ };
173
+ // error codes
174
+ var ec = [
175
+ 'unexpected EOF',
176
+ 'invalid block type',
177
+ 'invalid length/literal',
178
+ 'invalid distance',
179
+ 'stream finished',
180
+ 'no stream handler',
181
+ ,
182
+ 'no callback',
183
+ 'invalid UTF-8 data',
184
+ 'extra field too long',
185
+ 'date not in range 1980-2099',
186
+ 'filename too long',
187
+ 'stream finishing',
188
+ 'invalid zip data'
189
+ // determined by unknown compression method
190
+ ];
191
+ var err = function (ind, msg, nt) {
192
+ var e = new Error(msg || ec[ind]);
193
+ e.code = ind;
194
+ if (Error.captureStackTrace)
195
+ Error.captureStackTrace(e, err);
196
+ if (!nt)
197
+ throw e;
198
+ return e;
199
+ };
200
+ // expands raw DEFLATE data
201
+ var inflt = function (dat, buf, st) {
202
+ // source length
203
+ var sl = dat.length;
204
+ if (!sl || (st && st.f && !st.l))
205
+ return buf || new u8(0);
206
+ // have to estimate size
207
+ var noBuf = !buf || st;
208
+ // no state
209
+ var noSt = !st || st.i;
210
+ if (!st)
211
+ st = {};
212
+ // Assumes roughly 33% compression ratio average
213
+ if (!buf)
214
+ buf = new u8(sl * 3);
215
+ // ensure buffer can fit at least l elements
216
+ var cbuf = function (l) {
217
+ var bl = buf.length;
218
+ // need to increase size to fit
219
+ if (l > bl) {
220
+ // Double or set to necessary, whichever is greater
221
+ var nbuf = new u8(Math.max(bl * 2, l));
222
+ nbuf.set(buf);
223
+ buf = nbuf;
224
+ }
225
+ };
226
+ // last chunk bitpos bytes
227
+ var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;
228
+ // total bits
229
+ var tbts = sl * 8;
230
+ do {
231
+ if (!lm) {
232
+ // BFINAL - this is only 1 when last chunk is next
233
+ final = bits(dat, pos, 1);
234
+ // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman
235
+ var type = bits(dat, pos + 1, 3);
236
+ pos += 3;
237
+ if (!type) {
238
+ // go to end of byte boundary
239
+ var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;
240
+ if (t > sl) {
241
+ if (noSt)
242
+ err(0);
243
+ break;
244
+ }
245
+ // ensure size
246
+ if (noBuf)
247
+ cbuf(bt + l);
248
+ // Copy over uncompressed data
249
+ buf.set(dat.subarray(s, t), bt);
250
+ // Get new bitpos, update byte count
251
+ st.b = bt += l, st.p = pos = t * 8, st.f = final;
252
+ continue;
253
+ }
254
+ else if (type == 1)
255
+ lm = flrm, dm = fdrm, lbt = 9, dbt = 5;
256
+ else if (type == 2) {
257
+ // literal lengths
258
+ var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;
259
+ var tl = hLit + bits(dat, pos + 5, 31) + 1;
260
+ pos += 14;
261
+ // length+distance tree
262
+ var ldt = new u8(tl);
263
+ // code length tree
264
+ var clt = new u8(19);
265
+ for (var i = 0; i < hcLen; ++i) {
266
+ // use index map to get real code
267
+ clt[clim[i]] = bits(dat, pos + i * 3, 7);
268
+ }
269
+ pos += hcLen * 3;
270
+ // code lengths bits
271
+ var clb = max(clt), clbmsk = (1 << clb) - 1;
272
+ // code lengths map
273
+ var clm = hMap(clt, clb, 1);
274
+ for (var i = 0; i < tl;) {
275
+ var r = clm[bits(dat, pos, clbmsk)];
276
+ // bits read
277
+ pos += r & 15;
278
+ // symbol
279
+ var s = r >>> 4;
280
+ // code length to copy
281
+ if (s < 16) {
282
+ ldt[i++] = s;
283
+ }
284
+ else {
285
+ // copy count
286
+ var c = 0, n = 0;
287
+ if (s == 16)
288
+ n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];
289
+ else if (s == 17)
290
+ n = 3 + bits(dat, pos, 7), pos += 3;
291
+ else if (s == 18)
292
+ n = 11 + bits(dat, pos, 127), pos += 7;
293
+ while (n--)
294
+ ldt[i++] = c;
295
+ }
296
+ }
297
+ // length tree distance tree
298
+ var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);
299
+ // max length bits
300
+ lbt = max(lt);
301
+ // max dist bits
302
+ dbt = max(dt);
303
+ lm = hMap(lt, lbt, 1);
304
+ dm = hMap(dt, dbt, 1);
305
+ }
306
+ else
307
+ err(1);
308
+ if (pos > tbts) {
309
+ if (noSt)
310
+ err(0);
311
+ break;
312
+ }
313
+ }
314
+ // Make sure the buffer can hold this + the largest possible addition
315
+ // Maximum chunk size (practically, theoretically infinite) is 2^17;
316
+ if (noBuf)
317
+ cbuf(bt + 131072);
318
+ var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;
319
+ var lpos = pos;
320
+ for (;; lpos = pos) {
321
+ // bits read, code
322
+ var c = lm[bits16(dat, pos) & lms], sym = c >>> 4;
323
+ pos += c & 15;
324
+ if (pos > tbts) {
325
+ if (noSt)
326
+ err(0);
327
+ break;
328
+ }
329
+ if (!c)
330
+ err(2);
331
+ if (sym < 256)
332
+ buf[bt++] = sym;
333
+ else if (sym == 256) {
334
+ lpos = pos, lm = null;
335
+ break;
336
+ }
337
+ else {
338
+ var add = sym - 254;
339
+ // no extra bits needed if less
340
+ if (sym > 264) {
341
+ // index
342
+ var i = sym - 257, b = fleb[i];
343
+ add = bits(dat, pos, (1 << b) - 1) + fl[i];
344
+ pos += b;
345
+ }
346
+ // dist
347
+ var d = dm[bits16(dat, pos) & dms], dsym = d >>> 4;
348
+ if (!d)
349
+ err(3);
350
+ pos += d & 15;
351
+ var dt = fd[dsym];
352
+ if (dsym > 3) {
353
+ var b = fdeb[dsym];
354
+ dt += bits16(dat, pos) & ((1 << b) - 1), pos += b;
355
+ }
356
+ if (pos > tbts) {
357
+ if (noSt)
358
+ err(0);
359
+ break;
360
+ }
361
+ if (noBuf)
362
+ cbuf(bt + 131072);
363
+ var end = bt + add;
364
+ for (; bt < end; bt += 4) {
365
+ buf[bt] = buf[bt - dt];
366
+ buf[bt + 1] = buf[bt + 1 - dt];
367
+ buf[bt + 2] = buf[bt + 2 - dt];
368
+ buf[bt + 3] = buf[bt + 3 - dt];
369
+ }
370
+ bt = end;
371
+ }
372
+ }
373
+ st.l = lm, st.p = lpos, st.b = bt, st.f = final;
374
+ if (lm)
375
+ final = 1, st.m = lbt, st.d = dm, st.n = dbt;
376
+ } while (!final);
377
+ return bt == buf.length ? buf : slc(buf, 0, bt);
378
+ };
379
+ // gzip footer: -8 to -4 = CRC, -4 to -0 is length
380
+ // gzip start
381
+ var gzs = function (d) {
382
+ if (d[0] != 31 || d[1] != 139 || d[2] != 8)
383
+ err(6, 'invalid gzip data');
384
+ var flg = d[3];
385
+ var st = 10;
386
+ if (flg & 4)
387
+ st += d[10] | (d[11] << 8) + 2;
388
+ for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])
389
+ ;
390
+ return st + (flg & 2);
391
+ };
392
+ // gzip length
393
+ var gzl = function (d) {
394
+ var l = d.length;
395
+ return ((d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16) | (d[l - 1] << 24)) >>> 0;
396
+ };
397
+ // zlib valid
398
+ var zlv = function (d) {
399
+ if ((d[0] & 15) != 8 || (d[0] >>> 4) > 7 || ((d[0] << 8 | d[1]) % 31))
400
+ err(6, 'invalid zlib data');
401
+ if (d[1] & 32)
402
+ err(6, 'invalid zlib data: preset dictionaries not supported');
403
+ };
404
+ return {
405
+ /**
406
+ * Expands GZIP data
407
+ * @param data The data to decompress
408
+ * @param out Where to write the data. GZIP already encodes the output size, so providing this doesn't save memory.
409
+ * @returns The decompressed version of the data
410
+ */
411
+ gunzipSync: function (data, out) {
412
+ return inflt(data.subarray(gzs(data), -8), out || new u8(gzl(data)));
413
+ },
414
+ /**
415
+ * Expands Zlib data
416
+ * @param data The data to decompress
417
+ * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.
418
+ * @returns The decompressed version of the data
419
+ */
420
+ unzlibSync: function (data, out) {
421
+ return inflt((zlv(data), data.subarray(2, -4)), out);
422
+ }
423
+ };
424
+ })();
@@ -1,7 +1,4 @@
1
- import utfx from './utfx';
2
- var stringSource = utfx.stringSource;
3
- var stringDestination = utfx.stringDestination;
4
- var encodeUTF16toUTF8 = utfx.encodeUTF16toUTF8;
1
+ import { stringSource, stringDestination, encodeUTF16toUTF8 } from './utfx';
5
2
  export function UTF16ToUTF8(key) {
6
3
  var sd;
7
4
  encodeUTF16toUTF8(stringSource(key), sd = stringDestination());
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable no-fallthrough */
2
- import { UTF16ToUTF8, x86Fmix, x86Multiply, x86Rotl } from './commons';
2
+ import { UTF16ToUTF8, x86Fmix, x86Multiply, x86Rotl } from './common';
3
3
  /*
4
4
  * +----------------------------------------------------------------------------------+
5
5
  * | murmurHash3.js v3.0.0 (http://github.com/karanlyons/murmurHash3.js) |
@@ -50,7 +50,6 @@ function hash32(key, seed) {
50
50
  return h1 >>> 0;
51
51
  }
52
52
  export function hash(str, seed) {
53
- // @ts-ignore
54
53
  return hash32(UTF16ToUTF8(str), seed >>> 0);
55
54
  }
56
55
  export function bucket(str, seed) {
@@ -1,9 +1,5 @@
1
1
  /* eslint-disable no-fallthrough */
2
- import { UTF16ToUTF8, x86Fmix, x86Multiply, x86Rotl } from './commons';
3
- var X64 = 'x64';
4
- var X86 = 'x86';
5
- var X64_ARCHS = ['arm64', 'ppc64', 'x64', 's390x', 'mipsel'];
6
- var isX64 = getArchType() === X64;
2
+ import { UTF16ToUTF8 } from './common';
7
3
  /*
8
4
  * +----------------------------------------------------------------------------------+
9
5
  * | murmurHash3.js v3.0.0 (http://github.com/karanlyons/murmurHash3.js) |
@@ -122,135 +118,6 @@ function _x64Fmix(h) {
122
118
  }
123
119
  // PUBLIC FUNCTIONS
124
120
  // ----------------
125
- function hash128x86(key, seed) {
126
- //
127
- // Given a string and an optional seed as an int, returns a 128 bit
128
- // hash using the x86 flavor of MurmurHash3, as an unsigned hex.
129
- //
130
- key = key || '';
131
- seed = seed || 0;
132
- var remainder = key.length % 16;
133
- var bytes = key.length - remainder;
134
- var h1 = seed;
135
- var h2 = seed;
136
- var h3 = seed;
137
- var h4 = seed;
138
- var k1 = 0;
139
- var k2 = 0;
140
- var k3 = 0;
141
- var k4 = 0;
142
- var c1 = 0x239b961b;
143
- var c2 = 0xab0e9789;
144
- var c3 = 0x38b34ae5;
145
- var c4 = 0xa1e38b93;
146
- for (var i = 0; i < bytes; i = i + 16) {
147
- k1 = ((key.charCodeAt(i) & 0xff)) | ((key.charCodeAt(i + 1) & 0xff) << 8) | ((key.charCodeAt(i + 2) & 0xff) << 16) | ((key.charCodeAt(i + 3) & 0xff) << 24);
148
- k2 = ((key.charCodeAt(i + 4) & 0xff)) | ((key.charCodeAt(i + 5) & 0xff) << 8) | ((key.charCodeAt(i + 6) & 0xff) << 16) | ((key.charCodeAt(i + 7) & 0xff) << 24);
149
- k3 = ((key.charCodeAt(i + 8) & 0xff)) | ((key.charCodeAt(i + 9) & 0xff) << 8) | ((key.charCodeAt(i + 10) & 0xff) << 16) | ((key.charCodeAt(i + 11) & 0xff) << 24);
150
- k4 = ((key.charCodeAt(i + 12) & 0xff)) | ((key.charCodeAt(i + 13) & 0xff) << 8) | ((key.charCodeAt(i + 14) & 0xff) << 16) | ((key.charCodeAt(i + 15) & 0xff) << 24);
151
- k1 = x86Multiply(k1, c1);
152
- k1 = x86Rotl(k1, 15);
153
- k1 = x86Multiply(k1, c2);
154
- h1 ^= k1;
155
- h1 = x86Rotl(h1, 19);
156
- h1 += h2;
157
- h1 = x86Multiply(h1, 5) + 0x561ccd1b;
158
- k2 = x86Multiply(k2, c2);
159
- k2 = x86Rotl(k2, 16);
160
- k2 = x86Multiply(k2, c3);
161
- h2 ^= k2;
162
- h2 = x86Rotl(h2, 17);
163
- h2 += h3;
164
- h2 = x86Multiply(h2, 5) + 0x0bcaa747;
165
- k3 = x86Multiply(k3, c3);
166
- k3 = x86Rotl(k3, 17);
167
- k3 = x86Multiply(k3, c4);
168
- h3 ^= k3;
169
- h3 = x86Rotl(h3, 15);
170
- h3 += h4;
171
- h3 = x86Multiply(h3, 5) + 0x96cd1c35;
172
- k4 = x86Multiply(k4, c4);
173
- k4 = x86Rotl(k4, 18);
174
- k4 = x86Multiply(k4, c1);
175
- h4 ^= k4;
176
- h4 = x86Rotl(h4, 13);
177
- h4 += h1;
178
- h4 = x86Multiply(h4, 5) + 0x32ac3b17;
179
- }
180
- k1 = 0;
181
- k2 = 0;
182
- k3 = 0;
183
- k4 = 0;
184
- switch (remainder) {
185
- case 15:
186
- k4 ^= key.charCodeAt(i + 14) << 16;
187
- case 14:
188
- k4 ^= key.charCodeAt(i + 13) << 8;
189
- case 13:
190
- k4 ^= key.charCodeAt(i + 12);
191
- k4 = x86Multiply(k4, c4);
192
- k4 = x86Rotl(k4, 18);
193
- k4 = x86Multiply(k4, c1);
194
- h4 ^= k4;
195
- case 12:
196
- k3 ^= key.charCodeAt(i + 11) << 24;
197
- case 11:
198
- k3 ^= key.charCodeAt(i + 10) << 16;
199
- case 10:
200
- k3 ^= key.charCodeAt(i + 9) << 8;
201
- case 9:
202
- k3 ^= key.charCodeAt(i + 8);
203
- k3 = x86Multiply(k3, c3);
204
- k3 = x86Rotl(k3, 17);
205
- k3 = x86Multiply(k3, c4);
206
- h3 ^= k3;
207
- case 8:
208
- k2 ^= key.charCodeAt(i + 7) << 24;
209
- case 7:
210
- k2 ^= key.charCodeAt(i + 6) << 16;
211
- case 6:
212
- k2 ^= key.charCodeAt(i + 5) << 8;
213
- case 5:
214
- k2 ^= key.charCodeAt(i + 4);
215
- k2 = x86Multiply(k2, c2);
216
- k2 = x86Rotl(k2, 16);
217
- k2 = x86Multiply(k2, c3);
218
- h2 ^= k2;
219
- case 4:
220
- k1 ^= key.charCodeAt(i + 3) << 24;
221
- case 3:
222
- k1 ^= key.charCodeAt(i + 2) << 16;
223
- case 2:
224
- k1 ^= key.charCodeAt(i + 1) << 8;
225
- case 1:
226
- k1 ^= key.charCodeAt(i);
227
- k1 = x86Multiply(k1, c1);
228
- k1 = x86Rotl(k1, 15);
229
- k1 = x86Multiply(k1, c2);
230
- h1 ^= k1;
231
- }
232
- h1 ^= key.length;
233
- h2 ^= key.length;
234
- h3 ^= key.length;
235
- h4 ^= key.length;
236
- h1 += h2;
237
- h1 += h3;
238
- h1 += h4;
239
- h2 += h1;
240
- h3 += h1;
241
- h4 += h1;
242
- h1 = x86Fmix(h1);
243
- h2 = x86Fmix(h2);
244
- h3 = x86Fmix(h3);
245
- h4 = x86Fmix(h4);
246
- h1 += h2;
247
- h1 += h3;
248
- h1 += h4;
249
- h2 += h1;
250
- h3 += h1;
251
- h4 += h1;
252
- return ('00000000' + (h1 >>> 0).toString(16)).slice(-8) + ('00000000' + (h2 >>> 0).toString(16)).slice(-8) + ('00000000' + (h3 >>> 0).toString(16)).slice(-8) + ('00000000' + (h4 >>> 0).toString(16)).slice(-8);
253
- }
254
121
  function hash128x64(key, seed) {
255
122
  //
256
123
  // Given a string and an optional seed as an int, returns a 128 bit
@@ -338,13 +205,11 @@ function hash128x64(key, seed) {
338
205
  h2 = _x64Add(h2, h1);
339
206
  return ('00000000' + (h1[0] >>> 0).toString(16)).slice(-8) + ('00000000' + (h1[1] >>> 0).toString(16)).slice(-8) + ('00000000' + (h2[0] >>> 0).toString(16)).slice(-8) + ('00000000' + (h2[1] >>> 0).toString(16)).slice(-8);
340
207
  }
341
- function getArchType() {
342
- // Values listed from https://nodejs.org/api/process.html#process_process_arch
343
- // @TODO Review when supporting alternatives of Node
344
- // eslint-disable-next-line no-undef
345
- var arch = typeof process !== 'undefined' && process.arch ? process.arch : X86;
346
- return (X64_ARCHS.indexOf(arch) > -1) ? X64 : X86;
347
- }
208
+ /**
209
+ * x64 version of Murmur3 for 128bits.
210
+ *
211
+ * @param {string} str
212
+ */
348
213
  export function hash128(str, seed) {
349
- return isX64 ? hash128x64(UTF16ToUTF8(str), seed >>> 0) : hash128x86(UTF16ToUTF8(str), seed >>> 0);
214
+ return hash128x64(UTF16ToUTF8(str), seed >>> 0);
350
215
  }