@kirill.konshin/utils 0.0.19 → 0.0.21

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 (352) hide show
  1. package/README.md +6 -0
  2. package/dist/bootstrap/index.d.ts +1 -12
  3. package/dist/bootstrap/index.d.ts.map +1 -1
  4. package/dist/bootstrap/index.js +2 -35
  5. package/dist/browser/index.d.ts +2 -0
  6. package/dist/browser/index.d.ts.map +1 -0
  7. package/dist/browser/index.js +2 -0
  8. package/dist/core/index.d.ts +1 -9
  9. package/dist/core/index.d.ts.map +1 -1
  10. package/dist/core/index.js +2 -35
  11. package/dist/electron/index.d.ts +1 -2
  12. package/dist/electron/index.d.ts.map +1 -1
  13. package/dist/electron/index.js +2 -9
  14. package/dist/electron-builder/index.d.ts +1 -2
  15. package/dist/electron-builder/index.d.ts.map +1 -1
  16. package/dist/electron-builder/index.js +2 -7
  17. package/dist/index.d.ts +13 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +13 -0
  20. package/dist/mui/index.d.ts +1 -4
  21. package/dist/mui/index.d.ts.map +1 -1
  22. package/dist/mui/index.js +2 -11
  23. package/dist/next/index.d.ts +1 -5
  24. package/dist/next/index.d.ts.map +1 -1
  25. package/dist/next/index.js +2 -15
  26. package/dist/node/index.d.ts +2 -0
  27. package/dist/node/index.d.ts.map +1 -0
  28. package/dist/node/index.js +2 -0
  29. package/dist/react/index.d.ts +1 -5
  30. package/dist/react/index.d.ts.map +1 -1
  31. package/dist/react/index.js +2 -26
  32. package/dist/react-native/index.d.ts +1 -3
  33. package/dist/react-native/index.d.ts.map +1 -1
  34. package/dist/react-native/index.js +2 -9
  35. package/dist/tailwind/index.d.ts +1 -2
  36. package/dist/tailwind/index.d.ts.map +1 -1
  37. package/dist/tailwind/index.js +2 -7
  38. package/dist/worker/index.d.ts +2 -0
  39. package/dist/worker/index.d.ts.map +1 -0
  40. package/dist/worker/index.js +2 -0
  41. package/package.json +51 -99
  42. package/.ctirc +0 -11
  43. package/.storybook/main.ts +0 -21
  44. package/.storybook/preview.ts +0 -17
  45. package/.turbo/turbo-build.log +0 -72
  46. package/.turbo/turbo-test.log +0 -171
  47. package/CHANGELOG.md +0 -116
  48. package/builders/.swcrc +0 -18
  49. package/builders/build.config.ts +0 -11
  50. package/builders/bun.build.js +0 -23
  51. package/builders/package.json +0 -209
  52. package/builders/perf.mjs +0 -63
  53. package/builders/rollup.config.mjs +0 -50
  54. package/builders/rslib.config.ts +0 -26
  55. package/builders/tsconfig.json +0 -21
  56. package/builders/tsup.config.ts +0 -20
  57. package/builders/turbo.json +0 -24
  58. package/builders/vite.config.ts +0 -37
  59. package/demo/worker-demo.ts +0 -73
  60. package/dist/bootstrap/adaptiveContainer.d.ts +0 -4
  61. package/dist/bootstrap/adaptiveContainer.d.ts.map +0 -1
  62. package/dist/bootstrap/adaptiveContainer.js +0 -11
  63. package/dist/bootstrap/adaptiveContainer.js.map +0 -1
  64. package/dist/bootstrap/controls.d.ts +0 -38
  65. package/dist/bootstrap/controls.d.ts.map +0 -1
  66. package/dist/bootstrap/controls.js +0 -78
  67. package/dist/bootstrap/controls.js.map +0 -1
  68. package/dist/bootstrap/controls.stories.d.ts +0 -9
  69. package/dist/bootstrap/controls.stories.d.ts.map +0 -1
  70. package/dist/bootstrap/error.d.ts +0 -9
  71. package/dist/bootstrap/error.d.ts.map +0 -1
  72. package/dist/bootstrap/error.js +0 -27
  73. package/dist/bootstrap/error.js.map +0 -1
  74. package/dist/bootstrap/error.stories.d.ts +0 -8
  75. package/dist/bootstrap/error.stories.d.ts.map +0 -1
  76. package/dist/bootstrap/field.d.ts +0 -11
  77. package/dist/bootstrap/field.d.ts.map +0 -1
  78. package/dist/bootstrap/field.js +0 -29
  79. package/dist/bootstrap/field.js.map +0 -1
  80. package/dist/bootstrap/field.stories.d.ts +0 -8
  81. package/dist/bootstrap/field.stories.d.ts.map +0 -1
  82. package/dist/bootstrap/footer.d.ts +0 -10
  83. package/dist/bootstrap/footer.d.ts.map +0 -1
  84. package/dist/bootstrap/footer.js +0 -45
  85. package/dist/bootstrap/footer.js.map +0 -1
  86. package/dist/bootstrap/globalLoading.d.ts +0 -6
  87. package/dist/bootstrap/globalLoading.d.ts.map +0 -1
  88. package/dist/bootstrap/globalLoading.js +0 -10
  89. package/dist/bootstrap/globalLoading.js.map +0 -1
  90. package/dist/bootstrap/globalLoading.stories.d.ts +0 -7
  91. package/dist/bootstrap/globalLoading.stories.d.ts.map +0 -1
  92. package/dist/bootstrap/index.js.map +0 -1
  93. package/dist/bootstrap/loading.d.ts +0 -10
  94. package/dist/bootstrap/loading.d.ts.map +0 -1
  95. package/dist/bootstrap/loading.js +0 -19
  96. package/dist/bootstrap/loading.js.map +0 -1
  97. package/dist/bootstrap/loading.stories.d.ts +0 -9
  98. package/dist/bootstrap/loading.stories.d.ts.map +0 -1
  99. package/dist/bootstrap/responsiveHelper.d.ts +0 -8
  100. package/dist/bootstrap/responsiveHelper.d.ts.map +0 -1
  101. package/dist/bootstrap/responsiveHelper.js +0 -46
  102. package/dist/bootstrap/responsiveHelper.js.map +0 -1
  103. package/dist/bootstrap/screen.d.ts +0 -22
  104. package/dist/bootstrap/screen.d.ts.map +0 -1
  105. package/dist/bootstrap/screen.js +0 -80
  106. package/dist/bootstrap/screen.js.map +0 -1
  107. package/dist/bootstrap/screen.stories.d.ts +0 -14
  108. package/dist/bootstrap/screen.stories.d.ts.map +0 -1
  109. package/dist/bootstrap/toaster.d.ts +0 -11
  110. package/dist/bootstrap/toaster.d.ts.map +0 -1
  111. package/dist/bootstrap/toaster.js +0 -34
  112. package/dist/bootstrap/toaster.js.map +0 -1
  113. package/dist/bootstrap/toaster.stories.d.ts +0 -8
  114. package/dist/bootstrap/toaster.stories.d.ts.map +0 -1
  115. package/dist/bootstrap/useModal.d.ts +0 -23
  116. package/dist/bootstrap/useModal.d.ts.map +0 -1
  117. package/dist/bootstrap/useModal.js +0 -50
  118. package/dist/bootstrap/useModal.js.map +0 -1
  119. package/dist/bootstrap/useModal.stories.d.ts +0 -9
  120. package/dist/bootstrap/useModal.stories.d.ts.map +0 -1
  121. package/dist/bootstrap/useWrappedForm.d.ts +0 -14
  122. package/dist/bootstrap/useWrappedForm.d.ts.map +0 -1
  123. package/dist/bootstrap/useWrappedForm.js +0 -32
  124. package/dist/bootstrap/useWrappedForm.js.map +0 -1
  125. package/dist/core/cache.d.ts +0 -120
  126. package/dist/core/cache.d.ts.map +0 -1
  127. package/dist/core/cache.js +0 -107
  128. package/dist/core/cache.js.map +0 -1
  129. package/dist/core/cache.test.d.ts +0 -2
  130. package/dist/core/cache.test.d.ts.map +0 -1
  131. package/dist/core/errors.d.ts +0 -2
  132. package/dist/core/errors.d.ts.map +0 -1
  133. package/dist/core/errors.js +0 -15
  134. package/dist/core/errors.js.map +0 -1
  135. package/dist/core/files.d.ts +0 -4
  136. package/dist/core/files.d.ts.map +0 -1
  137. package/dist/core/files.js +0 -31
  138. package/dist/core/files.js.map +0 -1
  139. package/dist/core/index.js.map +0 -1
  140. package/dist/core/ls.d.ts +0 -6
  141. package/dist/core/ls.d.ts.map +0 -1
  142. package/dist/core/ls.js +0 -12
  143. package/dist/core/ls.js.map +0 -1
  144. package/dist/core/measure.d.ts +0 -35
  145. package/dist/core/measure.d.ts.map +0 -1
  146. package/dist/core/measure.js +0 -60
  147. package/dist/core/measure.js.map +0 -1
  148. package/dist/core/mutex.d.ts +0 -6
  149. package/dist/core/mutex.d.ts.map +0 -1
  150. package/dist/core/mutex.js +0 -26
  151. package/dist/core/mutex.js.map +0 -1
  152. package/dist/core/worker.d.ts +0 -98
  153. package/dist/core/worker.d.ts.map +0 -1
  154. package/dist/core/worker.js +0 -240
  155. package/dist/core/worker.js.map +0 -1
  156. package/dist/core/worker.test.d.ts +0 -2
  157. package/dist/core/worker.test.d.ts.map +0 -1
  158. package/dist/core/workerUtils.d.ts +0 -3
  159. package/dist/core/workerUtils.d.ts.map +0 -1
  160. package/dist/core/workerUtils.js +0 -31
  161. package/dist/core/workerUtils.js.map +0 -1
  162. package/dist/core/wrpc.d.ts +0 -45
  163. package/dist/core/wrpc.d.ts.map +0 -1
  164. package/dist/core/wrpc.fixture.d.ts +0 -26
  165. package/dist/core/wrpc.fixture.d.ts.map +0 -1
  166. package/dist/core/wrpc.js +0 -242
  167. package/dist/core/wrpc.js.map +0 -1
  168. package/dist/core/wrpc.test.d.ts +0 -1
  169. package/dist/core/wrpc.test.d.ts.map +0 -1
  170. package/dist/electron/createWindow.d.ts +0 -23
  171. package/dist/electron/createWindow.d.ts.map +0 -1
  172. package/dist/electron/createWindow.js +0 -160
  173. package/dist/electron/createWindow.js.map +0 -1
  174. package/dist/electron/index.js.map +0 -1
  175. package/dist/electron/updater.d.ts +0 -2
  176. package/dist/electron/updater.d.ts.map +0 -1
  177. package/dist/electron/updater.js +0 -47
  178. package/dist/electron/updater.js.map +0 -1
  179. package/dist/electron-builder/builder.d.ts +0 -8
  180. package/dist/electron-builder/builder.d.ts.map +0 -1
  181. package/dist/electron-builder/builder.js +0 -130
  182. package/dist/electron-builder/builder.js.map +0 -1
  183. package/dist/electron-builder/images.d.ts +0 -7
  184. package/dist/electron-builder/images.d.ts.map +0 -1
  185. package/dist/electron-builder/images.js +0 -25
  186. package/dist/electron-builder/images.js.map +0 -1
  187. package/dist/electron-builder/index.js.map +0 -1
  188. package/dist/mui/formControlFieldset.d.ts +0 -5
  189. package/dist/mui/formControlFieldset.d.ts.map +0 -1
  190. package/dist/mui/formControlFieldset.js +0 -28
  191. package/dist/mui/formControlFieldset.js.map +0 -1
  192. package/dist/mui/formControlFieldset.stories.d.ts +0 -7
  193. package/dist/mui/formControlFieldset.stories.d.ts.map +0 -1
  194. package/dist/mui/formLabelLegend.d.ts +0 -4
  195. package/dist/mui/formLabelLegend.d.ts.map +0 -1
  196. package/dist/mui/formLabelLegend.js +0 -12
  197. package/dist/mui/formLabelLegend.js.map +0 -1
  198. package/dist/mui/genericControl.d.ts +0 -7
  199. package/dist/mui/genericControl.d.ts.map +0 -1
  200. package/dist/mui/genericControl.js +0 -21
  201. package/dist/mui/genericControl.js.map +0 -1
  202. package/dist/mui/index.js.map +0 -1
  203. package/dist/mui/readOnly.d.ts +0 -6
  204. package/dist/mui/readOnly.d.ts.map +0 -1
  205. package/dist/mui/readOnly.js +0 -7
  206. package/dist/mui/readOnly.js.map +0 -1
  207. package/dist/next/appLink.d.ts +0 -8
  208. package/dist/next/appLink.d.ts.map +0 -1
  209. package/dist/next/appLink.js +0 -34
  210. package/dist/next/appLink.js.map +0 -1
  211. package/dist/next/index.js.map +0 -1
  212. package/dist/next/measure.d.ts +0 -15
  213. package/dist/next/measure.d.ts.map +0 -1
  214. package/dist/next/measure.js +0 -9
  215. package/dist/next/measure.js.map +0 -1
  216. package/dist/next/noSSR.d.ts +0 -29
  217. package/dist/next/noSSR.d.ts.map +0 -1
  218. package/dist/next/noSSR.js +0 -13
  219. package/dist/next/noSSR.js.map +0 -1
  220. package/dist/next/redirect.d.ts +0 -6
  221. package/dist/next/redirect.d.ts.map +0 -1
  222. package/dist/next/useIsInner.d.ts +0 -3
  223. package/dist/next/useIsInner.d.ts.map +0 -1
  224. package/dist/next/useIsInner.js +0 -15
  225. package/dist/next/useIsInner.js.map +0 -1
  226. package/dist/react/apiCall.d.ts +0 -6
  227. package/dist/react/apiCall.d.ts.map +0 -1
  228. package/dist/react/apiCall.js +0 -24
  229. package/dist/react/apiCall.js.map +0 -1
  230. package/dist/react/form/client.d.ts +0 -7
  231. package/dist/react/form/client.d.ts.map +0 -1
  232. package/dist/react/form/client.js +0 -46
  233. package/dist/react/form/client.js.map +0 -1
  234. package/dist/react/form/form.d.ts +0 -59
  235. package/dist/react/form/form.d.ts.map +0 -1
  236. package/dist/react/form/form.js +0 -89
  237. package/dist/react/form/form.js.map +0 -1
  238. package/dist/react/form/index.d.ts +0 -3
  239. package/dist/react/form/index.d.ts.map +0 -1
  240. package/dist/react/index.js.map +0 -1
  241. package/dist/react/keyboard.d.ts +0 -10
  242. package/dist/react/keyboard.d.ts.map +0 -1
  243. package/dist/react/keyboard.js +0 -38
  244. package/dist/react/keyboard.js.map +0 -1
  245. package/dist/react/useFetch.d.ts +0 -2
  246. package/dist/react/useFetch.d.ts.map +0 -1
  247. package/dist/react/useFetch.js +0 -20
  248. package/dist/react/useFetch.js.map +0 -1
  249. package/dist/react/useFetcher.d.ts +0 -10
  250. package/dist/react/useFetcher.d.ts.map +0 -1
  251. package/dist/react/useFetcher.js +0 -43
  252. package/dist/react/useFetcher.js.map +0 -1
  253. package/dist/react-native/index.js.map +0 -1
  254. package/dist/react-native/share.d.ts +0 -9
  255. package/dist/react-native/share.d.ts.map +0 -1
  256. package/dist/react-native/share.js +0 -23
  257. package/dist/react-native/share.js.map +0 -1
  258. package/dist/react-native/update.d.ts +0 -3
  259. package/dist/react-native/update.d.ts.map +0 -1
  260. package/dist/react-native/update.js +0 -40
  261. package/dist/react-native/update.js.map +0 -1
  262. package/dist/react-native/useAppState.d.ts +0 -2
  263. package/dist/react-native/useAppState.d.ts.map +0 -1
  264. package/dist/react-native/useAppState.js +0 -18
  265. package/dist/react-native/useAppState.js.map +0 -1
  266. package/dist/tailwind/fullpage.d.ts +0 -3
  267. package/dist/tailwind/fullpage.d.ts.map +0 -1
  268. package/dist/tailwind/fullpage.js +0 -14
  269. package/dist/tailwind/fullpage.js.map +0 -1
  270. package/dist/tailwind/index.js.map +0 -1
  271. package/dist/tailwind/responsiveHelper.d.ts +0 -3
  272. package/dist/tailwind/responsiveHelper.d.ts.map +0 -1
  273. package/dist/tailwind/responsiveHelper.js +0 -16
  274. package/dist/tailwind/responsiveHelper.js.map +0 -1
  275. package/src/bootstrap/adaptiveContainer.tsx +0 -12
  276. package/src/bootstrap/controls.stories.tsx +0 -62
  277. package/src/bootstrap/controls.tsx +0 -119
  278. package/src/bootstrap/error.stories.tsx +0 -34
  279. package/src/bootstrap/error.tsx +0 -37
  280. package/src/bootstrap/field.stories.tsx +0 -42
  281. package/src/bootstrap/field.tsx +0 -37
  282. package/src/bootstrap/footer.tsx +0 -61
  283. package/src/bootstrap/globalLoading.stories.tsx +0 -25
  284. package/src/bootstrap/globalLoading.tsx +0 -19
  285. package/src/bootstrap/index.ts +0 -12
  286. package/src/bootstrap/loading.stories.tsx +0 -35
  287. package/src/bootstrap/loading.tsx +0 -24
  288. package/src/bootstrap/main.scss +0 -86
  289. package/src/bootstrap/responsiveHelper.tsx +0 -55
  290. package/src/bootstrap/screen.stories.tsx +0 -160
  291. package/src/bootstrap/screen.tsx +0 -146
  292. package/src/bootstrap/toaster.stories.tsx +0 -32
  293. package/src/bootstrap/toaster.tsx +0 -40
  294. package/src/bootstrap/useModal.stories.tsx +0 -51
  295. package/src/bootstrap/useModal.tsx +0 -93
  296. package/src/bootstrap/useWrappedForm.ts +0 -42
  297. package/src/core/README.md +0 -91
  298. package/src/core/cache.test.ts +0 -121
  299. package/src/core/cache.ts +0 -246
  300. package/src/core/errors.ts +0 -17
  301. package/src/core/files.ts +0 -29
  302. package/src/core/index.ts +0 -9
  303. package/src/core/ls.ts +0 -15
  304. package/src/core/measure.ts +0 -109
  305. package/src/core/mutex.ts +0 -22
  306. package/src/core/worker.test.ts +0 -197
  307. package/src/core/worker.ts +0 -347
  308. package/src/core/workerUtils.ts +0 -32
  309. package/src/core/wrpc.fixture.ts +0 -106
  310. package/src/core/wrpc.test.ts +0 -225
  311. package/src/core/wrpc.ts +0 -377
  312. package/src/electron/README.md +0 -13
  313. package/src/electron/createWindow.ts +0 -234
  314. package/src/electron/index.ts +0 -2
  315. package/src/electron/updater.ts +0 -54
  316. package/src/electron-builder/builder.ts +0 -150
  317. package/src/electron-builder/images.ts +0 -33
  318. package/src/electron-builder/index.ts +0 -2
  319. package/src/mui/README.md +0 -3
  320. package/src/mui/formControlFieldset.stories.tsx +0 -71
  321. package/src/mui/formControlFieldset.tsx +0 -26
  322. package/src/mui/formLabelLegend.tsx +0 -11
  323. package/src/mui/genericControl.tsx +0 -20
  324. package/src/mui/index.ts +0 -4
  325. package/src/mui/readOnly.tsx +0 -6
  326. package/src/next/appLink.tsx +0 -40
  327. package/src/next/index.ts +0 -5
  328. package/src/next/measure.ts +0 -24
  329. package/src/next/noSSR.tsx +0 -36
  330. package/src/next/redirect.tsx +0 -13
  331. package/src/next/useIsInner.ts +0 -13
  332. package/src/react/apiCall.ts +0 -25
  333. package/src/react/form/client.tsx +0 -73
  334. package/src/react/form/form.tsx +0 -178
  335. package/src/react/form/index.ts +0 -2
  336. package/src/react/index.ts +0 -5
  337. package/src/react/keyboard.tsx +0 -54
  338. package/src/react/useFetch.ts +0 -29
  339. package/src/react/useFetcher.ts +0 -54
  340. package/src/react-native/index.ts +0 -3
  341. package/src/react-native/share.ts +0 -31
  342. package/src/react-native/update.tsx +0 -40
  343. package/src/react-native/useAppState.ts +0 -18
  344. package/src/tailwind/README.md +0 -8
  345. package/src/tailwind/fullpage.tsx +0 -11
  346. package/src/tailwind/index.ts +0 -2
  347. package/src/tailwind/responsiveHelper.tsx +0 -16
  348. package/src-todo/auth0.tsx +0 -177
  349. package/tsconfig.json +0 -23
  350. package/turbo.json +0 -10
  351. package/vite.config.ts +0 -56
  352. package/vite.exports.ts +0 -121
@@ -1,120 +0,0 @@
1
- export type MaybePromise<T> = T | Promise<T>;
2
- export declare const shallowCompare: (prev: any, next: any) => boolean;
3
- export declare const equal: (prev: any, next: any) => boolean;
4
- export declare const ANY: unique symbol;
5
- export declare function createTracker<Dep = any>(whenDifferent: (next: Dep, prev?: Dep) => any, shallow?: boolean): (dependency: Dep) => Dep | false;
6
- /**
7
- * https://github.com/futpib/deep-weak-map
8
- * https://github.com/fregante/many-keys-map
9
- * https://github.com/fregante/many-keys-weakmap
10
- * https://github.com/sindresorhus/memoize?tab=readme-ov-file#example-multiple-non-serializable-arguments
11
- *
12
- * ```ts
13
- * const memoized = memo(
14
- * (file, options, ...args) => { ... },
15
- * {
16
- * key: (file, options, ...args) => [file, JSON.stringify(options), ...args],
17
- * invalidate: (bitmap) => !bitmap.width,
18
- * dispose: (bitmap) => bitmap.close(),
19
- * }
20
- * );
21
- * ```
22
- */
23
- export declare function memo<Key extends any[], Val, SerializedKey extends any[] = Key>(fn: (...args: Key) => MaybePromise<Val>, { key, invalidate, dispose, }?: {
24
- key?: (...key: Key) => SerializedKey;
25
- invalidate?: (prev: Val, ...key: SerializedKey) => boolean;
26
- dispose?: (prev: Val, ...key: SerializedKey) => void;
27
- }): {
28
- (...args: Key): Promise<{
29
- value?: Val;
30
- hit: boolean;
31
- }>;
32
- clear: (...condition: Key | any[]) => void;
33
- size: () => number;
34
- };
35
- /**
36
- * Allows to memoize values by key and invalidate them based on the previous value.
37
- *
38
- * This makes possible to implement various one-off and subsequent transformations.
39
- *
40
- * 1. `write`: Transform value BEFORE writing to cache, called only once if cache IS NOT present or IS NOT valid
41
- * 2. `read`: Transform value AFTER it's read from cache, always called if cache IS valid, keep in mind this transform is applied on top of BEFORE
42
- *
43
- * Both should return same type or null.
44
- *
45
- * If `newValue` is null, old is returned, and no cache is set.
46
- *
47
- * ```ts
48
- * class InputCache extends TypedCache<string, ImageBitmap> {
49
- * dispose(bitmap: ImageBitmap, key: string) {
50
- * bitmap.close();
51
- * }
52
- * }
53
- *
54
- * const cache = new InputCache('input');
55
- *
56
- * // Cache provided OffscreenCanvas by name and create context once per canvas
57
- *
58
- * class CanvasCache extends TypedCache<string, OffscreenCanvas> {
59
- * protected write(key: string, canvas: OffscreenCanvas): OffscreenCanvas {
60
- * const canvas = newValue.getContext('2d');
61
- * canvas.ctx = canvas;
62
- * return canvas;
63
- * }
64
- * }
65
- *
66
- * // Transfer control to offscreen canvas and track removal of original
67
- * // When called again, always return null, because canvas is handed to worker, and never returned to main
68
- *
69
- * class CanvasCache extends TypedCache<HTMLCanvasElement, OffscreenCanvas> {
70
- *
71
- * protected write(canvas: HTMLCanvasElement): OffscreenCanvas {
72
- * let l;
73
- * canvas.addEventListener(
74
- * 'remove',
75
- * (l = () => {
76
- * console.log('Removing canvas from cache', key);
77
- * this.delete(canvas);
78
- * key.removeEventListener('remove', l);
79
- * }),
80
- * );
81
- * return canvas.transferControlToOffscreen();
82
- * }
83
- *
84
- * protected read() {
85
- * return null;
86
- * }
87
- * }
88
- *
89
- * // Create bitmap from file and check if was used, return null if used
90
- * // Since bitmaps are also cached in worker, used bitmaps are not sent
91
- *
92
- * class BitmapCache extends TypedCache<File, ImageBitmap, File> {
93
- * protected async write(file: File): Promise<ImageBitmap> {
94
- * return await createImageBitmap(file);
95
- * }
96
- *
97
- * protected read(bitmap: ImageBitmap): Promise<ImageBitmap> | ImageBitmap {
98
- * if (!bitmap.width) return null;
99
- * return bitmap;
100
- * }
101
- * }
102
- *
103
- * ```
104
- */
105
- export declare abstract class TransformerMap<Key, Val = Key> extends Map<Key, Val> {
106
- protected readonly name: string;
107
- constructor(name: string);
108
- protected write(key: Key, newValue?: Val, oldValue?: Val): MaybePromise<Val>;
109
- protected read(oldValue: Val, key: Key): MaybePromise<Val>;
110
- delete(key: Key): boolean;
111
- /**
112
- * Do something with the value and key before removing it from cache
113
- * For example, close a file or a bitmap
114
- */
115
- protected dispose(value: Val, key: Key): void;
116
- clear(): void;
117
- set(key: Key, value: Val): this;
118
- memo(key: Key, newValue?: Val): Promise<Val>;
119
- }
120
- //# sourceMappingURL=cache.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/core/cache.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAE7C,eAAO,MAAM,cAAc,SAAU,GAAG,QAAQ,GAAG,KAAG,OACuD,CAAC;AAE9G,eAAO,MAAM,KAAK,SAAU,GAAG,QAAQ,GAAG,KAAG,OAAwB,CAAC;AAGtE,eAAO,MAAM,GAAG,EAAE,OAAO,MAAoB,CAAC;AAE9C,wBAAgB,aAAa,CAAC,GAAG,GAAG,GAAG,EAAE,aAAa,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,GAAG,EAAE,OAAO,UAAQ,gBAK/D,GAAG,KAAG,GAAG,GAAG,KAAK,CAgBxD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,IAAI,CAAC,GAAG,SAAS,GAAG,EAAE,EAAE,GAAG,EAAE,aAAa,SAAS,GAAG,EAAE,GAAG,GAAG,EAC1E,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,YAAY,CAAC,GAAG,CAAC,EACvC,EACI,GAAgD,EAChD,UAAU,EACV,OAAO,GACV,GAAE;IACC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,KAAK,aAAa,CAAC;IACrC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC;IAC3D,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,aAAa,KAAK,IAAI,CAAC;CACnD,GACP;IACC,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC;QACpB,KAAK,CAAC,EAAE,GAAG,CAAC;QACZ,GAAG,EAAE,OAAO,CAAC;KAChB,CAAC,CAAC;IACH,KAAK,EAAE,CAAC,GAAG,SAAS,EAAE,GAAG,GAAG,GAAG,EAAE,KAAK,IAAI,CAAC;IAC3C,IAAI,EAAE,MAAM,MAAM,CAAC;CACtB,CA+CA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqEG;AACH,8BAAsB,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAE,SAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;IAC1D,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM;gBAAZ,IAAI,EAAE,MAAM;IAK3C,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC;IAI5E,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC;IAI1D,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO;IAQzB;;;OAGG;IACH,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI;IAE7C,KAAK,IAAI,IAAI;IAMb,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAIzB,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;CAkBrD"}
@@ -1,107 +0,0 @@
1
- import ManyKeysMap from "many-keys-map";
2
- const shallowCompare = (prev, next) => Array.from(/* @__PURE__ */ new Set([...Object.keys(prev), ...Object.keys(next)])).every((key) => prev[key] === next[key]);
3
- const equal = (prev, next) => prev === next;
4
- const UNUSED = Symbol("UNUSED");
5
- const ANY = Symbol("*");
6
- function createTracker(whenDifferent, shallow = false) {
7
- let lastDependency = UNUSED;
8
- const comparator = shallow ? shallowCompare : equal;
9
- return function tracker(dependency) {
10
- if (lastDependency !== UNUSED && comparator(lastDependency, dependency)) {
11
- return false;
12
- }
13
- const res = whenDifferent(dependency, lastDependency === UNUSED ? void 0 : lastDependency) || true;
14
- lastDependency = dependency;
15
- return res;
16
- };
17
- }
18
- function memo(fn, {
19
- key = (...k) => k,
20
- invalidate,
21
- dispose
22
- } = {}) {
23
- const map = new ManyKeysMap();
24
- const clear = (...condition) => {
25
- if (!(condition == null ? void 0 : condition.length)) {
26
- map.forEach((value, serializedKey) => {
27
- dispose == null ? void 0 : dispose(value, ...serializedKey);
28
- });
29
- map.clear();
30
- return;
31
- }
32
- const keyToClear = key(...condition);
33
- map.forEach((value, serializedKey) => {
34
- if (!serializedKey.every((kk, i) => keyToClear[i] === ANY || kk === keyToClear[i])) return;
35
- dispose == null ? void 0 : dispose(value, ...serializedKey);
36
- map.delete(serializedKey);
37
- });
38
- };
39
- const size = () => map.size;
40
- async function memoized(...args) {
41
- const k = key(...args);
42
- const has = map.has(k);
43
- const old = map.get(k);
44
- if (has && !(invalidate == null ? void 0 : invalidate(old, ...k))) {
45
- return { value: map.get(k), hit: true };
46
- }
47
- const value = await fn(...args);
48
- map.set(k, value);
49
- return { hit: false, value };
50
- }
51
- memoized.clear = clear;
52
- memoized.size = size;
53
- return memoized;
54
- }
55
- class TransformerMap extends Map {
56
- constructor(name) {
57
- super();
58
- this.name = name;
59
- }
60
- write(key, newValue, oldValue) {
61
- return newValue;
62
- }
63
- read(oldValue, key) {
64
- return oldValue;
65
- }
66
- delete(key) {
67
- const val = this.get(key);
68
- const has = typeof val !== "undefined";
69
- if (has) this.dispose(val, key);
70
- super.delete(key);
71
- return has;
72
- }
73
- /**
74
- * Do something with the value and key before removing it from cache
75
- * For example, close a file or a bitmap
76
- */
77
- dispose(value, key) {
78
- }
79
- clear() {
80
- console.log("CLEAR cache", this.name);
81
- this.forEach(this.dispose);
82
- super.clear();
83
- }
84
- set(key, value) {
85
- throw new Error("Use memo() method instead");
86
- }
87
- async memo(key, newValue) {
88
- var _a;
89
- const oldValue = this.get(key);
90
- if (!!oldValue && (!newValue || newValue === oldValue)) {
91
- return (_a = this.read) == null ? void 0 : _a.call(this, oldValue, key);
92
- }
93
- if (this.has(key)) this.delete(key);
94
- const value = await this.write(key, newValue, oldValue);
95
- super.set(key, value);
96
- return value;
97
- }
98
- }
99
- export {
100
- ANY,
101
- TransformerMap,
102
- createTracker,
103
- equal,
104
- memo,
105
- shallowCompare
106
- };
107
- //# sourceMappingURL=cache.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cache.js","sources":["../../src/core/cache.ts"],"sourcesContent":["import ManyKeysMap from 'many-keys-map';\n\nexport type MaybePromise<T> = T | Promise<T>;\n\nexport const shallowCompare = (prev: any, next: any): boolean =>\n Array.from(new Set([...Object.keys(prev), ...Object.keys(next)])).every((key) => prev[key] === next[key]);\n\nexport const equal = (prev: any, next: any): boolean => prev === next;\n\nconst UNUSED = Symbol('UNUSED');\nexport const ANY: unique symbol = Symbol('*');\n\nexport function createTracker<Dep = any>(whenDifferent: (next: Dep, prev?: Dep) => any, shallow = false) {\n let lastDependency: Dep = UNUSED as any;\n\n const comparator = shallow ? shallowCompare : equal;\n\n return function tracker(dependency: Dep): Dep | false {\n // console.log('Tracker', lastDependency, dependency);\n\n if (lastDependency !== UNUSED && comparator(lastDependency, dependency)) {\n // console.log('RETAINED cache', { lastDependency, dependency });\n return false;\n }\n\n // console.log('INVALIDATED cache', {lastDependency, dependency});\n\n const res = whenDifferent(dependency, lastDependency === UNUSED ? undefined : lastDependency) || true;\n\n lastDependency = dependency;\n\n return res;\n };\n}\n\n/**\n * https://github.com/futpib/deep-weak-map\n * https://github.com/fregante/many-keys-map\n * https://github.com/fregante/many-keys-weakmap\n * https://github.com/sindresorhus/memoize?tab=readme-ov-file#example-multiple-non-serializable-arguments\n *\n * ```ts\n * const memoized = memo(\n * (file, options, ...args) => { ... },\n * {\n * key: (file, options, ...args) => [file, JSON.stringify(options), ...args],\n * invalidate: (bitmap) => !bitmap.width,\n * dispose: (bitmap) => bitmap.close(),\n * }\n * );\n * ```\n */\nexport function memo<Key extends any[], Val, SerializedKey extends any[] = Key>(\n fn: (...args: Key) => MaybePromise<Val>,\n {\n key = (...k: Key) => k as never as SerializedKey,\n invalidate,\n dispose,\n }: {\n key?: (...key: Key) => SerializedKey;\n invalidate?: (prev: Val, ...key: SerializedKey) => boolean;\n dispose?: (prev: Val, ...key: SerializedKey) => void;\n } = {},\n): {\n (...args: Key): Promise<{\n value?: Val;\n hit: boolean;\n }>;\n clear: (...condition: Key | any[]) => void;\n size: () => number;\n} {\n const map = new ManyKeysMap<SerializedKey, Val>();\n\n //TODO Extend ManyKeysMap\n const clear = (...condition: Key | any[]) => {\n if (!condition?.length) {\n map.forEach((value, serializedKey) => {\n dispose?.(value, ...serializedKey);\n });\n map.clear();\n return;\n }\n\n const keyToClear = key(...(condition as any));\n\n map.forEach((value, serializedKey) => {\n if (!serializedKey.every((kk, i) => keyToClear[i] === ANY || kk === keyToClear[i])) return;\n dispose?.(value, ...serializedKey);\n map.delete(serializedKey);\n });\n };\n\n const size = () => map.size;\n\n async function memoized(...args: Key) {\n const k = key(...args);\n\n const has = map.has(k);\n const old = map.get(k);\n\n if (has && !invalidate?.(old as never as Val, ...k)) {\n return { value: map.get(k), hit: true };\n }\n\n const value = await fn(...args);\n\n map.set(k, value);\n\n return { hit: false, value };\n }\n\n memoized.clear = clear;\n memoized.size = size;\n\n //TODO return mimic-function(memorized, fn);\n\n return memoized;\n}\n\n/**\n * Allows to memoize values by key and invalidate them based on the previous value.\n *\n * This makes possible to implement various one-off and subsequent transformations.\n *\n * 1. `write`: Transform value BEFORE writing to cache, called only once if cache IS NOT present or IS NOT valid\n * 2. `read`: Transform value AFTER it's read from cache, always called if cache IS valid, keep in mind this transform is applied on top of BEFORE\n *\n * Both should return same type or null.\n *\n * If `newValue` is null, old is returned, and no cache is set.\n *\n * ```ts\n * class InputCache extends TypedCache<string, ImageBitmap> {\n * dispose(bitmap: ImageBitmap, key: string) {\n * bitmap.close();\n * }\n * }\n *\n * const cache = new InputCache('input');\n *\n * // Cache provided OffscreenCanvas by name and create context once per canvas\n *\n * class CanvasCache extends TypedCache<string, OffscreenCanvas> {\n * protected write(key: string, canvas: OffscreenCanvas): OffscreenCanvas {\n * const canvas = newValue.getContext('2d');\n * canvas.ctx = canvas;\n * return canvas;\n * }\n * }\n *\n * // Transfer control to offscreen canvas and track removal of original\n * // When called again, always return null, because canvas is handed to worker, and never returned to main\n *\n * class CanvasCache extends TypedCache<HTMLCanvasElement, OffscreenCanvas> {\n *\n * protected write(canvas: HTMLCanvasElement): OffscreenCanvas {\n * let l;\n * canvas.addEventListener(\n * 'remove',\n * (l = () => {\n * console.log('Removing canvas from cache', key);\n * this.delete(canvas);\n * key.removeEventListener('remove', l);\n * }),\n * );\n * return canvas.transferControlToOffscreen();\n * }\n *\n * protected read() {\n * return null;\n * }\n * }\n *\n * // Create bitmap from file and check if was used, return null if used\n * // Since bitmaps are also cached in worker, used bitmaps are not sent\n *\n * class BitmapCache extends TypedCache<File, ImageBitmap, File> {\n * protected async write(file: File): Promise<ImageBitmap> {\n * return await createImageBitmap(file);\n * }\n *\n * protected read(bitmap: ImageBitmap): Promise<ImageBitmap> | ImageBitmap {\n * if (!bitmap.width) return null;\n * return bitmap;\n * }\n * }\n *\n * ```\n */\nexport abstract class TransformerMap<Key, Val = Key> extends Map<Key, Val> {\n constructor(protected readonly name: string) {\n // console.warn('CREATE cache', name);\n super();\n }\n\n protected write(key: Key, newValue?: Val, oldValue?: Val): MaybePromise<Val> {\n return newValue as Val;\n }\n\n protected read(oldValue: Val, key: Key): MaybePromise<Val> {\n return oldValue;\n }\n\n delete(key: Key): boolean {\n const val = this.get(key);\n const has = typeof val !== 'undefined';\n if (has) this.dispose(val, key);\n super.delete(key);\n return has;\n }\n\n /**\n * Do something with the value and key before removing it from cache\n * For example, close a file or a bitmap\n */\n protected dispose(value: Val, key: Key): void {}\n\n clear(): void {\n console.log('CLEAR cache', this.name);\n this.forEach(this.dispose);\n super.clear();\n }\n\n set(key: Key, value: Val): this {\n throw new Error('Use memo() method instead');\n }\n\n async memo(key: Key, newValue?: Val): Promise<Val> {\n const oldValue = this.get(key);\n\n if (!!oldValue && (!newValue || newValue === oldValue)) {\n // console.log('FROM cache', this.name, key, 'old value', oldValue);\n return this.read?.(oldValue, key);\n }\n\n if (this.has(key)) this.delete(key);\n\n const value = await this.write(key, newValue, oldValue);\n\n super.set(key, value);\n\n // console.log('INVALIDATED KEY cache', this.name, key, 'has', has, 'invalidate', invalidate, 'new value', value);\n\n return value;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=cache.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cache.test.d.ts","sourceRoot":"","sources":["../../src/core/cache.test.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export declare function catchErrors<T, E extends Error = Error>(promise: Promise<T>, errors?: E[]): Promise<any[] | (T | undefined)[]>;
2
- //# sourceMappingURL=errors.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AACA,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,SAAS,KAAK,GAAG,KAAK,EAClD,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,MAAM,CAAC,EAAE,CAAC,EAAE,GACb,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAYpC"}
@@ -1,15 +0,0 @@
1
- function catchErrors(promise, errors) {
2
- return promise.then((data) => [void 0, data]).catch((error) => {
3
- if (!(errors == null ? void 0 : errors.length)) {
4
- return [error];
5
- }
6
- if (errors.some((e) => e instanceof error)) {
7
- return [error];
8
- }
9
- throw error;
10
- });
11
- }
12
- export {
13
- catchErrors
14
- };
15
- //# sourceMappingURL=errors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.js","sources":["../../src/core/errors.ts"],"sourcesContent":["// @see https://www.youtube.com/watch?v=AdmGHwvgaVs\nexport function catchErrors<T, E extends Error = Error>(\n promise: Promise<T>,\n errors?: E[],\n): Promise<any[] | (T | undefined)[]> {\n return promise\n .then((data) => [undefined, data])\n .catch((error) => {\n if (!errors?.length) {\n return [error];\n }\n if (errors.some((e) => e instanceof error)) {\n return [error];\n }\n throw error;\n });\n}\n"],"names":[],"mappings":"AACgB,SAAA,YACZ,SACA,QACkC;AAC3B,SAAA,QACF,KAAK,CAAC,SAAS,CAAC,QAAW,IAAI,CAAC,EAChC,MAAM,CAAC,UAAU;AACV,QAAA,EAAC,iCAAQ,SAAQ;AACjB,aAAO,CAAC,KAAK;AAAA,IAAA;AAEjB,QAAI,OAAO,KAAK,CAAC,MAAM,aAAa,KAAK,GAAG;AACxC,aAAO,CAAC,KAAK;AAAA,IAAA;AAEX,UAAA;AAAA,EAAA,CACT;AACT;"}
@@ -1,4 +0,0 @@
1
- export declare const downloadFile: (file: File) => Promise<void>;
2
- export declare const createFile: (text: any, filename?: string, type?: string) => Promise<File>;
3
- export declare const openFile: () => Promise<string>;
4
- //# sourceMappingURL=files.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/core/files.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,SAAgB,IAAI,KAAG,OAAO,CAAC,IAAI,CAM3D,CAAC;AAEF,eAAO,MAAM,UAAU,SAAgB,GAAG,uCAAsD,OAAO,CAAC,IAAI,CAE3G,CAAC;AAEF,eAAO,MAAM,QAAQ,QAAO,OAAO,CAAC,MAAM,CAgBpC,CAAC"}
@@ -1,31 +0,0 @@
1
- const downloadFile = async (file) => {
2
- const { saveAs } = require("file-saver");
3
- return saveAs(file, file.name);
4
- };
5
- const createFile = async (text, filename = "file.json", type = "application/json") => {
6
- return new File([new Blob([text], { type })], filename);
7
- };
8
- const openFile = () => new Promise((res, rej) => {
9
- const input = document.createElement("input");
10
- input.type = "file";
11
- input.addEventListener("change", function readFile(e) {
12
- input.removeEventListener("change", readFile);
13
- const [file] = e.target.files;
14
- if (!file) return;
15
- const reader = new FileReader();
16
- reader.onload = (e2) => {
17
- var _a;
18
- return res((_a = e2.target) == null ? void 0 : _a.result);
19
- };
20
- reader.onerror = rej;
21
- reader.onabort = rej;
22
- reader.readAsText(file);
23
- });
24
- input.click();
25
- });
26
- export {
27
- createFile,
28
- downloadFile,
29
- openFile
30
- };
31
- //# sourceMappingURL=files.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"files.js","sources":["../../src/core/files.ts"],"sourcesContent":["export const downloadFile = async (file: File): Promise<void> => {\n //FIXME https://github.com/eligrey/FileSaver.js/issues/471\n const { saveAs } = require('file-saver');\n\n //FIXME https://github.com/eligrey/FileSaver.js/issues/731\n return saveAs(file, file.name);\n};\n\nexport const createFile = async (text: any, filename = 'file.json', type = 'application/json'): Promise<File> => {\n return new File([new Blob([text], { type })], filename);\n};\n\nexport const openFile = (): Promise<string> =>\n new Promise((res, rej) => {\n const input = document.createElement('input');\n input.type = 'file';\n input.addEventListener('change', function readFile(e) {\n input.removeEventListener('change', readFile);\n // @ts-expect-error file is always there\n const [file] = e.target.files;\n if (!file) return;\n const reader = new FileReader();\n reader.onload = (e) => res(e.target?.result as string);\n reader.onerror = rej;\n reader.onabort = rej;\n reader.readAsText(file);\n });\n input.click();\n });\n"],"names":["e"],"mappings":"AAAa,MAAA,eAAe,OAAO,SAA8B;AAE7D,QAAM,EAAE,OAAA,IAAW,QAAQ,YAAY;AAGhC,SAAA,OAAO,MAAM,KAAK,IAAI;AACjC;AAEO,MAAM,aAAa,OAAO,MAAW,WAAW,aAAa,OAAO,uBAAsC;AAC7G,SAAO,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,GAAG,EAAE,KAAA,CAAM,CAAC,GAAG,QAAQ;AAC1D;AAEO,MAAM,WAAW,MACpB,IAAI,QAAQ,CAAC,KAAK,QAAQ;AAChB,QAAA,QAAQ,SAAS,cAAc,OAAO;AAC5C,QAAM,OAAO;AACb,QAAM,iBAAiB,UAAU,SAAS,SAAS,GAAG;AAC5C,UAAA,oBAAoB,UAAU,QAAQ;AAE5C,UAAM,CAAC,IAAI,IAAI,EAAE,OAAO;AACxB,QAAI,CAAC,KAAM;AACL,UAAA,SAAS,IAAI,WAAW;AAC9B,WAAO,SAAS,CAACA,OAAAA;AAtBhB;AAsBsB,kBAAIA,QAAE,WAAFA,mBAAU,MAAgB;AAAA;AACrD,WAAO,UAAU;AACjB,WAAO,UAAU;AACjB,WAAO,WAAW,IAAI;AAAA,EAAA,CACzB;AACD,QAAM,MAAM;AAChB,CAAC;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
package/dist/core/ls.d.ts DELETED
@@ -1,6 +0,0 @@
1
- export declare function getStorage(pref: string): {
2
- read: (key: string) => null | any;
3
- write: (key: string, value: any) => void;
4
- remove: (key: string) => void;
5
- };
6
- //# sourceMappingURL=ls.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ls.d.ts","sourceRoot":"","sources":["../../src/core/ls.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG;IACtC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,GAAG,CAAC;IAClC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IACzC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC,CAUA"}
package/dist/core/ls.js DELETED
@@ -1,12 +0,0 @@
1
- function getStorage(pref) {
2
- const prefix = (key) => `${pref}-${key}`;
3
- const ls = typeof window !== "undefined" ? localStorage : null;
4
- const read = (key) => JSON.parse((ls == null ? void 0 : ls.getItem(prefix(key))) || "null");
5
- const write = (key, value) => ls == null ? void 0 : ls.setItem(prefix(key), JSON.stringify(value));
6
- const remove = (key) => ls == null ? void 0 : ls.removeItem(prefix(key));
7
- return { read, write, remove };
8
- }
9
- export {
10
- getStorage
11
- };
12
- //# sourceMappingURL=ls.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ls.js","sources":["../../src/core/ls.ts"],"sourcesContent":["export function getStorage(pref: string): {\n read: (key: string) => null | any;\n write: (key: string, value: any) => void;\n remove: (key: string) => void;\n} {\n const prefix = (key) => `${pref}-${key}`;\n\n const ls = (typeof window !== 'undefined' ? localStorage : null) as Storage;\n\n const read = (key: string): any => JSON.parse(ls?.getItem(prefix(key)) || 'null');\n const write = (key: string, value: any): void => ls?.setItem(prefix(key), JSON.stringify(value));\n const remove = (key: string): void => ls?.removeItem(prefix(key));\n\n return { read, write, remove };\n}\n"],"names":[],"mappings":"AAAO,SAAS,WAAW,MAIzB;AACE,QAAM,SAAS,CAAC,QAAQ,GAAG,IAAI,IAAI,GAAG;AAEtC,QAAM,KAAM,OAAO,WAAW,cAAc,eAAe;AAErD,QAAA,OAAO,CAAC,QAAqB,KAAK,OAAM,yBAAI,QAAQ,OAAO,GAAG,OAAM,MAAM;AAChF,QAAM,QAAQ,CAAC,KAAa,UAAqB,yBAAI,QAAQ,OAAO,GAAG,GAAG,KAAK,UAAU,KAAK;AAC9F,QAAM,SAAS,CAAC,QAAsB,yBAAI,WAAW,OAAO,GAAG;AAExD,SAAA,EAAE,MAAM,OAAO,OAAO;AACjC;"}
@@ -1,35 +0,0 @@
1
- import { bold, magenta, cyan, yellow, red, green } from 'colors/safe';
2
- export declare const colored: {
3
- important: typeof bold;
4
- subject: typeof magenta;
5
- arg: typeof cyan;
6
- sup: typeof yellow;
7
- err: typeof red;
8
- ok: typeof green;
9
- };
10
- export declare const uncolored: {
11
- important: (str: any) => any;
12
- subject: (str: any) => any;
13
- arg: (str: any) => any;
14
- sup: (str: any) => any;
15
- err: (str: any) => any;
16
- ok: (str: any) => any;
17
- };
18
- export declare function createMeasurer({ colors, prepend, padding, }: {
19
- colors?: boolean;
20
- prepend?: string;
21
- padding?: number;
22
- }): {
23
- measure: (what: string, step: string, supplemental?: string, ...args: any[]) => {
24
- done: (result?: string, ...args2: any[]) => void;
25
- fail: (result?: string, ...args2: any[]) => void;
26
- log: (...args2: any[]) => void;
27
- };
28
- important: (str: any) => any;
29
- subject: (str: any) => any;
30
- arg: (str: any) => any;
31
- sup: (str: any) => any;
32
- ok: (str: any) => any;
33
- err: (str: any) => any;
34
- };
35
- //# sourceMappingURL=measure.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"measure.d.ts","sourceRoot":"","sources":["../../src/core/measure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEtE,eAAO,MAAM,OAAO,EAAE;IAClB,SAAS,EAAE,OAAO,IAAI,CAAC;IACvB,OAAO,EAAE,OAAO,OAAO,CAAC;IACxB,GAAG,EAAE,OAAO,IAAI,CAAC;IACjB,GAAG,EAAE,OAAO,MAAM,CAAC;IACnB,GAAG,EAAE,OAAO,GAAG,CAAC;IAChB,EAAE,EAAE,OAAO,KAAK,CAAC;CAQpB,CAAC;AAIF,eAAO,MAAM,SAAS,EAAE;IACpB,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC;IAC7B,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC;IAC3B,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC;IACvB,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC;IACvB,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC;IACvB,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC;CAQzB,CAAC;AAEF,wBAAgB,cAAc,CAAC,EAC3B,MAAa,EACb,OAAe,EACf,OAAY,GACf,EAAE;IACC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG;IACA,OAAO,EAAE,CACL,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,YAAY,CAAC,EAAE,MAAM,EACrB,GAAG,IAAI,EAAE,GAAG,EAAE,KACb;QACD,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;QACjD,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;QACjD,GAAG,EAAE,CAAC,GAAG,KAAK,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;KAClC,CAAC;IACF,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC;IAC7B,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC;IAC3B,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC;IACvB,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC;IACvB,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC;IACtB,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC;CAC1B,CA+CA"}
@@ -1,60 +0,0 @@
1
- import { bold, magenta, cyan, yellow, red, green } from "colors/safe";
2
- const colored = {
3
- important: bold,
4
- subject: magenta,
5
- arg: cyan,
6
- sup: yellow,
7
- err: red,
8
- ok: green
9
- };
10
- const noColor = (str) => str;
11
- const uncolored = {
12
- important: noColor,
13
- subject: noColor,
14
- arg: noColor,
15
- sup: noColor,
16
- err: noColor,
17
- ok: noColor
18
- };
19
- function createMeasurer({
20
- colors = true,
21
- prepend = "LOG",
22
- padding = 10
23
- }) {
24
- const { important, subject, arg, sup, ok, err } = colors ? colored : uncolored;
25
- function measure(what, step, supplemental = "", ...args) {
26
- const time = performance.now();
27
- const prefix = [
28
- prepend,
29
- important(subject(what.substring(0, padding).padStart(padding, " "))),
30
- arg(step),
31
- sup(supplemental),
32
- ...args
33
- ];
34
- const done = (result = ok("DONE"), ...args2) => {
35
- console.log(
36
- ...[
37
- ...prefix,
38
- important(result),
39
- ...args2,
40
- "in",
41
- important((performance.now() - time).toFixed(0)),
42
- "ms"
43
- ].filter(Boolean)
44
- );
45
- console.groupEnd();
46
- };
47
- const fail = (result = err("FAIL"), ...args2) => done(result, ...args2);
48
- const log = (...args2) => {
49
- console.log(...prefix, ...args2);
50
- };
51
- return { done, fail, log };
52
- }
53
- return { measure, important, subject, arg, sup, ok, err };
54
- }
55
- export {
56
- colored,
57
- createMeasurer,
58
- uncolored
59
- };
60
- //# sourceMappingURL=measure.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"measure.js","sources":["../../src/core/measure.ts"],"sourcesContent":["import { bold, magenta, cyan, yellow, red, green } from 'colors/safe';\n\nexport const colored: {\n important: typeof bold;\n subject: typeof magenta;\n arg: typeof cyan;\n sup: typeof yellow;\n err: typeof red;\n ok: typeof green;\n} = {\n important: bold,\n subject: magenta,\n arg: cyan,\n sup: yellow,\n err: red,\n ok: green,\n};\n\nconst noColor = (str) => str;\n\nexport const uncolored: {\n important: (str: any) => any;\n subject: (str: any) => any;\n arg: (str: any) => any;\n sup: (str: any) => any;\n err: (str: any) => any;\n ok: (str: any) => any;\n} = {\n important: noColor,\n subject: noColor,\n arg: noColor,\n sup: noColor,\n err: noColor,\n ok: noColor,\n};\n\nexport function createMeasurer({\n colors = true,\n prepend = 'LOG',\n padding = 10,\n}: {\n colors?: boolean;\n prepend?: string;\n padding?: number;\n}): {\n measure: (\n what: string,\n step: string,\n supplemental?: string,\n ...args: any[]\n ) => {\n done: (result?: string, ...args2: any[]) => void;\n fail: (result?: string, ...args2: any[]) => void;\n log: (...args2: any[]) => void;\n };\n important: (str: any) => any;\n subject: (str: any) => any;\n arg: (str: any) => any;\n sup: (str: any) => any;\n ok: (str: any) => any;\n err: (str: any) => any;\n} {\n const { important, subject, arg, sup, ok, err } = colors ? colored : uncolored;\n\n function measure(\n what: string,\n step: string,\n supplemental: string = '',\n ...args: any[]\n ): {\n done: (result?: string, ...args2: any[]) => void;\n fail: (result?: string, ...args2: any[]) => void;\n log: (...args2: any[]) => void;\n } {\n const time = performance.now();\n\n const prefix = [\n prepend,\n important(subject(what.substring(0, padding).padStart(padding, ' '))),\n arg(step),\n sup(supplemental),\n ...args,\n ];\n\n const done = (result: string = ok('DONE'), ...args2: any[]): void => {\n console.log(\n ...[\n ...prefix,\n important(result),\n ...args2,\n 'in',\n important((performance.now() - time).toFixed(0)),\n 'ms',\n ].filter(Boolean),\n );\n console.groupEnd();\n };\n\n const fail = (result: string = err('FAIL'), ...args2: any[]): void => done(result, ...args2);\n\n const log = (...args2: any[]): void => {\n console.log(...prefix, ...args2);\n };\n\n return { done, fail, log };\n }\n\n return { measure, important, subject, arg, sup, ok, err };\n}\n"],"names":[],"mappings":";AAEO,MAAM,UAOT;AAAA,EACA,WAAW;AAAA,EACX,SAAS;AAAA,EACT,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AACR;AAEA,MAAM,UAAU,CAAC,QAAQ;AAElB,MAAM,YAOT;AAAA,EACA,WAAW;AAAA,EACX,SAAS;AAAA,EACT,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AACR;AAEO,SAAS,eAAe;AAAA,EAC3B,SAAS;AAAA,EACT,UAAU;AAAA,EACV,UAAU;AACd,GAqBE;AACQ,QAAA,EAAE,WAAW,SAAS,KAAK,KAAK,IAAI,IAAQ,IAAA,SAAS,UAAU;AAErE,WAAS,QACL,MACA,MACA,eAAuB,OACpB,MAKL;AACQ,UAAA,OAAO,YAAY,IAAI;AAE7B,UAAM,SAAS;AAAA,MACX;AAAA,MACA,UAAU,QAAQ,KAAK,UAAU,GAAG,OAAO,EAAE,SAAS,SAAS,GAAG,CAAC,CAAC;AAAA,MACpE,IAAI,IAAI;AAAA,MACR,IAAI,YAAY;AAAA,MAChB,GAAG;AAAA,IACP;AAEA,UAAM,OAAO,CAAC,SAAiB,GAAG,MAAM,MAAM,UAAuB;AACzD,cAAA;AAAA,QACJ,GAAG;AAAA,UACC,GAAG;AAAA,UACH,UAAU,MAAM;AAAA,UAChB,GAAG;AAAA,UACH;AAAA,UACA,WAAW,YAAY,IAAA,IAAQ,MAAM,QAAQ,CAAC,CAAC;AAAA,UAC/C;AAAA,QACJ,EAAE,OAAO,OAAO;AAAA,MACpB;AACA,cAAQ,SAAS;AAAA,IACrB;AAEM,UAAA,OAAO,CAAC,SAAiB,IAAI,MAAM,MAAM,UAAuB,KAAK,QAAQ,GAAG,KAAK;AAErF,UAAA,MAAM,IAAI,UAAuB;AACnC,cAAQ,IAAI,GAAG,QAAQ,GAAG,KAAK;AAAA,IACnC;AAEO,WAAA,EAAE,MAAM,MAAM,IAAI;AAAA,EAAA;AAG7B,SAAO,EAAE,SAAS,WAAW,SAAS,KAAK,KAAK,IAAI,IAAI;AAC5D;"}
@@ -1,6 +0,0 @@
1
- export declare class Mutex {
2
- private promise;
3
- exec(fn: (...args: any) => any): ReturnType<typeof fn>;
4
- wrap(fn: (...args: any) => any): ReturnType<typeof fn>;
5
- }
6
- //# sourceMappingURL=mutex.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mutex.d.ts","sourceRoot":"","sources":["../../src/core/mutex.ts"],"names":[],"mappings":"AAEA,qBAAa,KAAK;IACd,OAAO,CAAC,OAAO,CAAqB;IAE7B,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;IAatD,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;CAGhE"}
@@ -1,26 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
- class Mutex {
5
- constructor() {
6
- __publicField(this, "promise", Promise.resolve());
7
- }
8
- exec(fn) {
9
- return new Promise((resolve, reject) => {
10
- this.promise = this.promise.then(async () => {
11
- try {
12
- resolve(await fn());
13
- } catch (e) {
14
- reject(e);
15
- }
16
- });
17
- });
18
- }
19
- wrap(fn) {
20
- return (...args) => this.exec(() => fn(...args));
21
- }
22
- }
23
- export {
24
- Mutex
25
- };
26
- //# sourceMappingURL=mutex.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mutex.js","sources":["../../src/core/mutex.ts"],"sourcesContent":["//TODO Implement queue with ranking & sorting\n//TODO https://github.com/sindresorhus/p-queue\nexport class Mutex {\n private promise = Promise.resolve();\n\n public exec(fn: (...args: any) => any): ReturnType<typeof fn> {\n return new Promise((resolve, reject) => {\n // wrap in always successful function\n this.promise = this.promise.then(async () => {\n try {\n resolve(await fn());\n } catch (e) {\n reject(e);\n }\n });\n });\n }\n\n public wrap(fn: (...args: any) => any): ReturnType<typeof fn> {\n return (...args: any) => this.exec(() => fn(...args));\n }\n}\n"],"names":[],"mappings":";;;AAEO,MAAM,MAAM;AAAA,EAAZ;AACK,mCAAU,QAAQ,QAAQ;AAAA;AAAA,EAE3B,KAAK,IAAkD;AAC1D,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAEpC,WAAK,UAAU,KAAK,QAAQ,KAAK,YAAY;AACrC,YAAA;AACQ,kBAAA,MAAM,IAAI;AAAA,iBACb,GAAG;AACR,iBAAO,CAAC;AAAA,QAAA;AAAA,MACZ,CACH;AAAA,IAAA,CACJ;AAAA,EAAA;AAAA,EAGE,KAAK,IAAkD;AACnD,WAAA,IAAI,SAAc,KAAK,KAAK,MAAM,GAAG,GAAG,IAAI,CAAC;AAAA,EAAA;AAE5D;"}
@@ -1,98 +0,0 @@
1
- type WebWorker = Worker | (Window & typeof globalThis) | (WorkerGlobalScope & typeof globalThis);
2
- type MethodReturn<R, M extends keyof R> = R[M] extends (...args: any[]) => any ? Partial<Awaited<ReturnType<R[M]>>> : never;
3
- type MethodArg<R, M extends keyof R> = R[M] extends (arg: infer A, ...args: any[]) => any ? Partial<A> : never;
4
- export type Ctx<R, K extends keyof R> = {
5
- id: string;
6
- parentId?: string;
7
- message: K;
8
- done: boolean;
9
- };
10
- type Data<R, M extends keyof R> = MethodReturn<R, M> | MethodArg<R, M> | Error;
11
- type Event<R, M extends keyof R> = MessageEvent<{
12
- data: Data<R, M>;
13
- ctx: Ctx<R, M>;
14
- }>;
15
- type Listener<R, M extends keyof R, D extends Data<R, M> = Data<R, M>, S extends Context<R, M> = Context<R, M>> = (data: D, self: S, event: Event<R, M>) => void | Promise<void>;
16
- export declare class WorkerDialog<R extends RespondersBase<any>> {
17
- worker: WebWorker;
18
- responders: R;
19
- name: string;
20
- debug: number;
21
- readonly contexts: Set<Context<R, keyof R>>;
22
- protected closed: boolean;
23
- protected currentId: number;
24
- constructor(worker: WebWorker, responders: R, name: string, debug?: number);
25
- getID(): string;
26
- close(): void;
27
- withMessage<M extends keyof R>(message: M): RequestContext<R, M>;
28
- }
29
- export declare class RespondersBase<R> {
30
- create<M extends keyof R, F extends (input: any, context: ResponseContext<R, M>) => any>(message: M, responder: F): F;
31
- }
32
- declare abstract class Context<R, M extends keyof R> {
33
- protected readonly dialog: WorkerDialog<any>;
34
- message: M;
35
- id: string | undefined;
36
- parent: Context<R, keyof R> | undefined | null;
37
- protected readonly unsub: Set<() => void>;
38
- protected closed: boolean;
39
- constructor(dialog: WorkerDialog<any>, message: M, id: string | undefined, parent?: Context<R, keyof R> | undefined | null);
40
- abstract withMessage<M2 extends keyof R>(message: M2, id?: string): Context<R, M2>;
41
- close(reason?: string): void;
42
- get info(): string;
43
- get debugInfo(): {
44
- id?: string;
45
- parentId?: string;
46
- message: string | number | symbol;
47
- closed: boolean;
48
- type: string;
49
- listeners: number;
50
- };
51
- abstract type: 'request' | 'response' | string;
52
- protected postMessage(data?: Data<R, M>, done?: boolean): Data<R, M> | undefined;
53
- send(data?: Data<R, M>, done?: boolean): Data<R, M> | undefined;
54
- /**
55
- * Does not automatically close, assumes consumer will close
56
- *
57
- * ```ts
58
- * dialog.request('x').fetch((c) => {
59
- * c.response('x').listen(() => { ... }); // listens to "x", will be closed by upper level fetch
60
- * c.request('x').fetcH(y, (c) => { ... }); // closes
61
- * }) // closes
62
- *
63
- * const un = dialog.context('x').listen((e) => { ... }); // listens to 'x'
64
- * un(); // closes
65
- *
66
- * const un = dialog.context('x').listen((e) => { ... }); // listens to 'x'
67
- * un(); // closes
68
- * ```
69
- */
70
- listen(callback: Listener<R, M>, done?: boolean): () => void;
71
- }
72
- declare class RequestContext<R, M extends keyof R> extends Context<R, M> {
73
- type: string;
74
- withMessage<M2 extends keyof R>(message: M2, id?: string): RequestContext<R, M2>;
75
- send(data?: MethodArg<R, M>, done?: boolean): MethodArg<R, M>;
76
- listen(callback: Listener<R, M, MethodReturn<R, M>, RequestContext<R, M>>, done?: boolean): () => void;
77
- /**
78
- * Returns response
79
- * If you need to work with ctx, use callback
80
- * Closed automatically on response
81
- *
82
- * dialog.fetch('x', (c) => {
83
- * c.listen(() => { ... }); // will be closed by upper level fetch
84
- * c.fetcH(y, (c) => { ... }); // closes c
85
- * c.context().fetcH(y, (c) => { ... }); // closes sub, not closes c, will be closed by upper level fetch
86
- * })
87
- */
88
- fetch(data?: MethodArg<R, M>, callback?: (context: RequestContext<R, M>) => void): Promise<MethodReturn<R, M>>;
89
- protected expect(): Promise<MethodReturn<R, M>>;
90
- }
91
- declare class ResponseContext<R, M extends keyof R> extends Context<R, M> {
92
- type: string;
93
- withMessage<M2 extends keyof R>(message: M2, id?: string): ResponseContext<R, M2>;
94
- listen(callback: Listener<R, M, MethodArg<R, M>, ResponseContext<R, M>>, done?: boolean): () => void;
95
- send(data?: MethodReturn<R, M>, done?: boolean): MethodReturn<R, M>;
96
- }
97
- export {};
98
- //# sourceMappingURL=worker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/core/worker.ts"],"names":[],"mappings":"AAIA,KAAK,SAAS,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,OAAO,UAAU,CAAC,GAAG,CAAC,iBAAiB,GAAG,OAAO,UAAU,CAAC,CAAC;AAEjG,KAAK,YAAY,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GACxE,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAClC,KAAK,CAAC;AAEZ,KAAK,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAE/G,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,CAAC,CAAC;IACX,IAAI,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;AAE/E,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,YAAY,CAAC;IAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;CAAE,CAAC,CAAC;AAEtF,KAAK,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,EAAE,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAC9G,IAAI,EAAE,CAAC,EACP,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KACjB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAkB1B,qBAAa,YAAY,CAAC,CAAC,SAAS,cAAc,CAAC,GAAG,CAAC;IAMxC,MAAM,EAAE,SAAS;IACjB,UAAU,EAAE,CAAC;IACb,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,MAAM;IARxB,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAa;IACxD,SAAS,CAAC,MAAM,UAAS;IACzB,SAAS,CAAC,SAAS,SAAK;gBAGb,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,CAAC,EACb,IAAI,EAAE,MAAM,EACZ,KAAK,GAAE,MAAU;IAsC5B,KAAK,IAAI,MAAM;IAIf,KAAK,IAAI,IAAI;IAKb,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;CAGnE;AAED,qBAAa,cAAc,CAAC,CAAC;IACzB,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,EACnF,OAAO,EAAE,CAAC,EACV,SAAS,EAAE,CAAC,GACb,CAAC;CAIP;AAGD,uBAAe,OAAO,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC;IAKnC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC;IACrC,OAAO,EAAE,CAAC;IACV,EAAE,EAAE,MAAM,GAAG,SAAS;IACtB,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI;IAPzD,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,IAAI,CAAC,CAAa;IACtD,SAAS,CAAC,MAAM,UAAS;gBAGF,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,EACrC,OAAO,EAAE,CAAC,EACV,EAAE,EAAE,MAAM,GAAG,SAAS,EACtB,MAAM,GAAE,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,GAAG,IAAW;IAUhE,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC;IAElF,KAAK,CAAC,MAAM,GAAE,MAAmB,GAAG,IAAI;IAkBxC,IAAI,IAAI,WAEP;IAED,IAAI,SAAS,IAAI;QACb,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;QAClC,MAAM,EAAE,OAAO,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;KACrB,CASA;IAED,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;IAE/C,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,UAAQ,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS;IAoB9E,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,UAAQ,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS;IAI7D;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,UAAQ,GAAG,MAAM,IAAI;CA6C7D;AAED,cAAM,cAAc,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,CAAE,SAAQ,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5D,IAAI,SAAa;IAEjB,WAAW,CAAC,EAAE,SAAS,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC,EAAE,EAAE,CAAC;IAIhF,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,UAAQ,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;IAI3D,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,UAAQ,GAAG,MAAM,IAAI;IAIpG;;;;;;;;;;OAUG;IACG,KAAK,CACP,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EACtB,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,GACnD,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;cAiBd,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAkBxD;AAED,cAAM,eAAe,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,CAAE,SAAQ,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7D,IAAI,SAAc;IAElB,WAAW,CAAC,EAAE,SAAS,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,eAAe,CAAC,CAAC,EAAE,EAAE,CAAC;IAIjF,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,UAAQ,GAAG,MAAM,IAAI;IAIlG,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,UAAQ,GAAG,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;CAGpE"}