@davidsouther/jiffies 1.1.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (379) hide show
  1. package/{build → lib/cjs}/assert.d.ts +23 -23
  2. package/lib/cjs/assert.js +40 -0
  3. package/{build → lib/cjs}/case.d.ts +1 -1
  4. package/lib/cjs/case.js +9 -0
  5. package/{build → lib/cjs}/components/button_bar.d.ts +8 -8
  6. package/lib/cjs/components/button_bar.js +29 -0
  7. package/{build → lib/cjs}/components/inline_edit.d.ts +12 -12
  8. package/lib/cjs/components/inline_edit.js +51 -0
  9. package/{build → lib/cjs}/components/logger.d.ts +6 -6
  10. package/lib/cjs/components/logger.js +27 -0
  11. package/lib/cjs/components/select.d.ts +10 -0
  12. package/lib/cjs/components/select.js +6 -0
  13. package/lib/cjs/components/test.d.ts +1 -0
  14. package/lib/cjs/components/test.js +7 -0
  15. package/{build → lib/cjs}/components/virtual_scroll.d.ts +40 -40
  16. package/lib/cjs/components/virtual_scroll.js +102 -0
  17. package/{build → lib/cjs}/components/virtual_scroll.test.d.ts +1 -1
  18. package/lib/cjs/components/virtual_scroll.test.js +22 -0
  19. package/{build → lib/cjs}/context.d.ts +15 -15
  20. package/lib/cjs/context.js +48 -0
  21. package/{build → lib/cjs}/context.test.d.ts +1 -1
  22. package/lib/cjs/context.test.js +48 -0
  23. package/{build → lib/cjs}/debounce.d.ts +1 -1
  24. package/lib/cjs/debounce.js +11 -0
  25. package/lib/cjs/diff.d.ts +15 -0
  26. package/lib/cjs/diff.js +58 -0
  27. package/{build/components/test.d.ts → lib/cjs/diff.test.d.ts} +1 -1
  28. package/lib/cjs/diff.test.js +41 -0
  29. package/{build → lib/cjs}/display.d.ts +5 -5
  30. package/lib/cjs/display.js +16 -0
  31. package/{build → lib/cjs}/dom/css/border.d.ts +11 -11
  32. package/lib/cjs/dom/css/border.js +33 -0
  33. package/{build → lib/cjs}/dom/css/constants.d.ts +31 -31
  34. package/lib/cjs/dom/css/constants.js +31 -0
  35. package/{build → lib/cjs}/dom/css/core.d.ts +5 -5
  36. package/lib/cjs/dom/css/core.js +31 -0
  37. package/{build → lib/cjs}/dom/css/fstyle.d.ts +5 -5
  38. package/lib/cjs/dom/css/fstyle.js +36 -0
  39. package/{build → lib/cjs}/dom/css/sizing.d.ts +5 -5
  40. package/lib/cjs/dom/css/sizing.js +14 -0
  41. package/{build → lib/cjs}/dom/dom.d.ts +27 -26
  42. package/lib/cjs/dom/dom.js +110 -0
  43. package/{build → lib/cjs}/dom/fc.d.ts +14 -14
  44. package/lib/cjs/dom/fc.js +39 -0
  45. package/{build → lib/cjs}/dom/fc.test.d.ts +1 -1
  46. package/lib/cjs/dom/fc.test.js +23 -0
  47. package/{build → lib/cjs}/dom/form/form.app.d.ts +1 -1
  48. package/lib/cjs/dom/form/form.app.js +27 -0
  49. package/{build → lib/cjs}/dom/form/form.d.ts +26 -26
  50. package/lib/cjs/dom/form/form.js +49 -0
  51. package/{build → lib/cjs}/dom/form/form.test.d.ts +0 -0
  52. package/{build → lib/cjs}/dom/form/form.test.js +1 -1
  53. package/{build → lib/cjs}/dom/html.d.ts +113 -113
  54. package/lib/cjs/dom/html.js +119 -0
  55. package/{build → lib/cjs}/dom/html.test.d.ts +1 -1
  56. package/lib/cjs/dom/html.test.js +60 -0
  57. package/lib/cjs/dom/observable.d.ts +2 -0
  58. package/lib/cjs/dom/observable.js +10 -0
  59. package/{build/observable → lib/cjs/dom}/observable.test.d.ts +1 -1
  60. package/lib/cjs/dom/observable.test.js +35 -0
  61. package/{build → lib/cjs}/dom/provide.d.ts +3 -3
  62. package/lib/cjs/dom/provide.js +12 -0
  63. package/{build → lib/cjs}/dom/router/link.d.ts +6 -6
  64. package/lib/cjs/dom/router/link.js +7 -0
  65. package/{build → lib/cjs}/dom/router/router.d.ts +12 -12
  66. package/lib/cjs/dom/router/router.js +52 -0
  67. package/{build → lib/cjs}/dom/svg.d.ts +64 -64
  68. package/lib/cjs/dom/svg.js +69 -0
  69. package/lib/cjs/dom/test.d.ts +1 -0
  70. package/lib/cjs/dom/test.js +13 -0
  71. package/{build → lib/cjs}/dom/types/css.d.ts +6612 -6612
  72. package/lib/cjs/dom/types/css.js +24 -0
  73. package/{build → lib/cjs}/dom/types/dom.d.ts +0 -0
  74. package/{build → lib/cjs}/dom/types/dom.js +1 -1
  75. package/{build → lib/cjs}/dom/types/html.d.ts +616 -616
  76. package/lib/cjs/dom/types/html.js +2 -0
  77. package/{build → lib/cjs}/dom/xml.d.ts +1 -1
  78. package/lib/cjs/dom/xml.js +8 -0
  79. package/{build → lib/cjs}/equal.d.ts +5 -5
  80. package/lib/cjs/equal.js +43 -0
  81. package/{build → lib/cjs}/equal.test.d.ts +1 -1
  82. package/lib/cjs/equal.test.js +22 -0
  83. package/{build → lib/cjs}/flags.d.ts +7 -7
  84. package/lib/cjs/flags.js +52 -0
  85. package/{build → lib/cjs}/flags.test.d.ts +1 -1
  86. package/lib/cjs/flags.test.js +37 -0
  87. package/{build → lib/cjs}/fs.d.ts +48 -48
  88. package/lib/cjs/fs.js +151 -0
  89. package/{build → lib/cjs}/fs.test.d.ts +1 -1
  90. package/lib/cjs/fs.test.js +45 -0
  91. package/{build → lib/cjs}/generator.d.ts +1 -1
  92. package/lib/cjs/generator.js +14 -0
  93. package/{build → lib/cjs}/generator.test.d.ts +1 -1
  94. package/lib/cjs/generator.test.js +26 -0
  95. package/{build → lib/cjs}/is_browser.d.ts +1 -1
  96. package/lib/cjs/is_browser.js +4 -0
  97. package/{build → lib/cjs}/loader.d.mts +22 -22
  98. package/lib/cjs/loader.mjs +40 -0
  99. package/{build → lib/cjs}/lock.d.ts +1 -1
  100. package/lib/cjs/lock.js +27 -0
  101. package/{build → lib/cjs}/lock.test.d.ts +1 -1
  102. package/lib/cjs/lock.test.js +18 -0
  103. package/{build → lib/cjs}/log.d.ts +26 -26
  104. package/lib/cjs/log.js +54 -0
  105. package/lib/cjs/observable/event.d.ts +35 -0
  106. package/lib/cjs/observable/event.js +61 -0
  107. package/lib/cjs/observable/observable.d.ts +132 -0
  108. package/lib/cjs/observable/observable.js +363 -0
  109. package/lib/cjs/observable/observable.test.d.ts +1 -0
  110. package/lib/cjs/observable/observable.test.js +65 -0
  111. package/{build → lib/cjs}/range.d.ts +1 -1
  112. package/lib/cjs/range.js +11 -0
  113. package/{build → lib/cjs}/result.d.ts +31 -31
  114. package/lib/cjs/result.js +80 -0
  115. package/{build → lib/cjs}/result.test.d.ts +1 -1
  116. package/lib/cjs/result.test.js +73 -0
  117. package/{build → lib/cjs}/safe.d.ts +1 -1
  118. package/lib/cjs/safe.js +14 -0
  119. package/{build → lib/cjs}/scope/describe.d.ts +18 -18
  120. package/lib/cjs/scope/describe.js +73 -0
  121. package/{build → lib/cjs}/scope/display/console.d.ts +2 -2
  122. package/lib/cjs/scope/display/console.js +25 -0
  123. package/{build → lib/cjs}/scope/display/dom.d.ts +3 -3
  124. package/lib/cjs/scope/display/dom.js +30 -0
  125. package/{build → lib/cjs}/scope/display/junit.d.ts +2 -2
  126. package/lib/cjs/scope/display/junit.js +21 -0
  127. package/{build → lib/cjs}/scope/execute.d.ts +12 -12
  128. package/lib/cjs/scope/execute.js +91 -0
  129. package/{build → lib/cjs}/scope/expect.d.ts +23 -23
  130. package/lib/cjs/scope/expect.js +114 -0
  131. package/{build → lib/cjs}/scope/fix.d.ts +4 -4
  132. package/lib/cjs/scope/fix.js +26 -0
  133. package/{build → lib/cjs}/scope/index.d.ts +3 -3
  134. package/lib/cjs/scope/index.js +15 -0
  135. package/{build → lib/cjs}/scope/scope.d.ts +17 -17
  136. package/lib/cjs/scope/scope.js +2 -0
  137. package/lib/cjs/scope/state.d.ts +1 -0
  138. package/lib/cjs/scope/state.js +11 -0
  139. package/{build → lib/cjs}/server/http/apps.d.ts +5 -5
  140. package/lib/cjs/server/http/apps.js +27 -0
  141. package/{build → lib/cjs}/server/http/css.d.ts +5 -5
  142. package/lib/cjs/server/http/css.js +54 -0
  143. package/{build → lib/cjs}/server/http/index.d.ts +21 -21
  144. package/lib/cjs/server/http/index.js +77 -0
  145. package/{build → lib/cjs}/server/http/response.d.ts +4 -4
  146. package/lib/cjs/server/http/response.js +45 -0
  147. package/{build → lib/cjs}/server/http/sitemap.d.ts +2 -2
  148. package/lib/cjs/server/http/sitemap.js +46 -0
  149. package/{build → lib/cjs}/server/http/static.d.ts +2 -2
  150. package/lib/cjs/server/http/static.js +25 -0
  151. package/{build → lib/cjs}/server/http/typescript.d.ts +5 -5
  152. package/lib/cjs/server/http/typescript.js +44 -0
  153. package/{build → lib/cjs}/server/main.d.ts +2 -2
  154. package/lib/cjs/server/main.js +14 -0
  155. package/{build → lib/cjs}/test.d.mts +2 -2
  156. package/lib/cjs/test.mjs +28 -0
  157. package/{build → lib/cjs}/test_all.d.ts +9 -7
  158. package/lib/cjs/test_all.js +30 -0
  159. package/{build → lib/cjs}/transpile.d.mts +3 -3
  160. package/lib/cjs/transpile.mjs +22 -0
  161. package/lib/cjs/tsconfig.tsbuildinfo +1 -0
  162. package/lib/esm/assert.d.ts +23 -0
  163. package/{build → lib/esm}/assert.js +33 -33
  164. package/lib/esm/case.d.ts +1 -0
  165. package/{build → lib/esm}/case.js +5 -5
  166. package/lib/esm/components/button_bar.d.ts +8 -0
  167. package/{build → lib/esm}/components/button_bar.js +27 -27
  168. package/lib/esm/components/inline_edit.d.ts +12 -0
  169. package/{build → lib/esm}/components/inline_edit.js +48 -48
  170. package/lib/esm/components/logger.d.ts +6 -0
  171. package/{build → lib/esm}/components/logger.js +22 -22
  172. package/lib/esm/components/select.d.ts +10 -0
  173. package/{build → lib/esm}/components/select.js +3 -3
  174. package/lib/esm/components/test.d.ts +1 -0
  175. package/lib/esm/components/test.js +3 -0
  176. package/lib/esm/components/virtual_scroll.d.ts +40 -0
  177. package/{build → lib/esm}/components/virtual_scroll.js +94 -94
  178. package/lib/esm/components/virtual_scroll.test.d.ts +1 -0
  179. package/{build → lib/esm}/components/virtual_scroll.test.js +20 -21
  180. package/lib/esm/context.d.ts +15 -0
  181. package/{build → lib/esm}/context.js +43 -43
  182. package/lib/esm/context.test.d.ts +1 -0
  183. package/{build → lib/esm}/context.test.js +46 -46
  184. package/lib/esm/debounce.d.ts +1 -0
  185. package/{build → lib/esm}/debounce.js +7 -7
  186. package/lib/esm/diff.d.ts +15 -0
  187. package/lib/esm/diff.js +54 -0
  188. package/lib/esm/diff.test.d.ts +1 -0
  189. package/lib/esm/diff.test.js +39 -0
  190. package/lib/esm/display.d.ts +5 -0
  191. package/{build → lib/esm}/display.js +11 -11
  192. package/lib/esm/dom/css/border.d.ts +11 -0
  193. package/{build → lib/esm}/dom/css/border.js +27 -27
  194. package/lib/esm/dom/css/constants.d.ts +31 -0
  195. package/{build → lib/esm}/dom/css/constants.js +28 -28
  196. package/lib/esm/dom/css/core.d.ts +5 -0
  197. package/{build → lib/esm}/dom/css/core.js +24 -24
  198. package/lib/esm/dom/css/fstyle.d.ts +5 -0
  199. package/{build → lib/esm}/dom/css/fstyle.js +32 -32
  200. package/lib/esm/dom/css/sizing.d.ts +5 -0
  201. package/{build → lib/esm}/dom/css/sizing.js +10 -10
  202. package/lib/esm/dom/dom.d.ts +27 -0
  203. package/{build → lib/esm}/dom/dom.js +104 -95
  204. package/lib/esm/dom/fc.d.ts +14 -0
  205. package/{build → lib/esm}/dom/fc.js +35 -36
  206. package/lib/esm/dom/fc.test.d.ts +1 -0
  207. package/{build → lib/esm}/dom/fc.test.js +21 -21
  208. package/lib/esm/dom/form/form.app.d.ts +1 -0
  209. package/{build → lib/esm}/dom/form/form.app.js +23 -23
  210. package/lib/esm/dom/form/form.d.ts +26 -0
  211. package/{build → lib/esm}/dom/form/form.js +34 -34
  212. package/lib/esm/dom/form/form.test.d.ts +0 -0
  213. package/lib/esm/dom/form/form.test.js +1 -0
  214. package/lib/esm/dom/html.d.ts +113 -0
  215. package/{build → lib/esm}/dom/html.js +114 -114
  216. package/lib/esm/dom/html.test.d.ts +1 -0
  217. package/{build → lib/esm}/dom/html.test.js +58 -58
  218. package/lib/esm/dom/observable.d.ts +2 -0
  219. package/lib/esm/dom/observable.js +6 -0
  220. package/lib/esm/dom/observable.test.d.ts +1 -0
  221. package/lib/esm/dom/observable.test.js +33 -0
  222. package/lib/esm/dom/provide.d.ts +3 -0
  223. package/{build → lib/esm}/dom/provide.js +7 -7
  224. package/lib/esm/dom/router/link.d.ts +6 -0
  225. package/{build → lib/esm}/dom/router/link.js +3 -3
  226. package/lib/esm/dom/router/router.d.ts +12 -0
  227. package/{build → lib/esm}/dom/router/router.js +49 -49
  228. package/lib/esm/dom/svg.d.ts +64 -0
  229. package/{build → lib/esm}/dom/svg.js +65 -65
  230. package/lib/esm/dom/test.d.ts +1 -0
  231. package/lib/esm/dom/test.js +9 -0
  232. package/lib/esm/dom/types/css.d.ts +6612 -0
  233. package/{build → lib/esm}/dom/types/css.js +23 -23
  234. package/lib/esm/dom/types/dom.d.ts +0 -0
  235. package/lib/esm/dom/types/dom.js +1 -0
  236. package/lib/esm/dom/types/html.d.ts +616 -0
  237. package/{build → lib/esm}/dom/types/html.js +1 -1
  238. package/lib/esm/dom/xml.d.ts +1 -0
  239. package/{build → lib/esm}/dom/xml.js +4 -4
  240. package/lib/esm/equal.d.ts +5 -0
  241. package/{build → lib/esm}/equal.js +37 -37
  242. package/lib/esm/equal.test.d.ts +1 -0
  243. package/{build → lib/esm}/equal.test.js +20 -20
  244. package/lib/esm/flags.d.ts +7 -0
  245. package/{build → lib/esm}/flags.js +48 -48
  246. package/lib/esm/flags.test.d.ts +1 -0
  247. package/{build → lib/esm}/flags.test.js +35 -35
  248. package/lib/esm/fs.d.ts +48 -0
  249. package/{build → lib/esm}/fs.js +144 -144
  250. package/lib/esm/fs.test.d.ts +1 -0
  251. package/{build → lib/esm}/fs.test.js +43 -43
  252. package/lib/esm/generator.d.ts +1 -0
  253. package/{build → lib/esm}/generator.js +10 -10
  254. package/lib/esm/generator.test.d.ts +1 -0
  255. package/{build → lib/esm}/generator.test.js +24 -24
  256. package/lib/esm/is_browser.d.ts +1 -0
  257. package/{build → lib/esm}/is_browser.js +1 -1
  258. package/lib/esm/loader.d.mts +22 -0
  259. package/{build → lib/esm}/loader.mjs +35 -35
  260. package/lib/esm/lock.d.ts +1 -0
  261. package/{build → lib/esm}/lock.js +23 -23
  262. package/lib/esm/lock.test.d.ts +1 -0
  263. package/{build → lib/esm}/lock.test.js +16 -16
  264. package/lib/esm/log.d.ts +26 -0
  265. package/{build → lib/esm}/log.js +46 -46
  266. package/lib/esm/observable/event.d.ts +35 -0
  267. package/lib/esm/observable/event.js +46 -0
  268. package/lib/esm/observable/observable.d.ts +132 -0
  269. package/lib/esm/observable/observable.js +343 -0
  270. package/lib/esm/observable/observable.test.d.ts +1 -0
  271. package/lib/esm/observable/observable.test.js +63 -0
  272. package/lib/esm/range.d.ts +1 -0
  273. package/{build → lib/esm}/range.js +7 -7
  274. package/lib/esm/result.d.ts +31 -0
  275. package/{build → lib/esm}/result.js +65 -65
  276. package/lib/esm/result.test.d.ts +1 -0
  277. package/{build → lib/esm}/result.test.js +71 -71
  278. package/lib/esm/safe.d.ts +1 -0
  279. package/{build → lib/esm}/safe.js +10 -10
  280. package/lib/esm/scope/describe.d.ts +18 -0
  281. package/{build → lib/esm}/scope/describe.js +60 -61
  282. package/lib/esm/scope/display/console.d.ts +2 -0
  283. package/{build → lib/esm}/scope/display/console.js +21 -21
  284. package/lib/esm/scope/display/dom.d.ts +3 -0
  285. package/{build → lib/esm}/scope/display/dom.js +26 -26
  286. package/lib/esm/scope/display/junit.d.ts +2 -0
  287. package/{build → lib/esm}/scope/display/junit.js +17 -17
  288. package/lib/esm/scope/execute.d.ts +12 -0
  289. package/{build → lib/esm}/scope/execute.js +85 -85
  290. package/lib/esm/scope/expect.d.ts +23 -0
  291. package/{build → lib/esm}/scope/expect.js +108 -108
  292. package/lib/esm/scope/fix.d.ts +4 -0
  293. package/{build → lib/esm}/scope/fix.js +22 -22
  294. package/lib/esm/scope/index.d.ts +3 -0
  295. package/{build → lib/esm}/scope/index.js +3 -3
  296. package/lib/esm/scope/scope.d.ts +17 -0
  297. package/{build → lib/esm}/scope/scope.js +1 -1
  298. package/lib/esm/scope/state.d.ts +1 -0
  299. package/lib/esm/scope/state.js +7 -0
  300. package/lib/esm/server/http/apps.d.ts +5 -0
  301. package/{build → lib/esm}/server/http/apps.js +23 -23
  302. package/lib/esm/server/http/css.d.ts +5 -0
  303. package/{build → lib/esm}/server/http/css.js +50 -50
  304. package/lib/esm/server/http/index.d.ts +21 -0
  305. package/{build → lib/esm}/server/http/index.js +73 -73
  306. package/lib/esm/server/http/response.d.ts +4 -0
  307. package/{build → lib/esm}/server/http/response.js +40 -40
  308. package/lib/esm/server/http/sitemap.d.ts +2 -0
  309. package/{build → lib/esm}/server/http/sitemap.js +42 -42
  310. package/lib/esm/server/http/static.d.ts +2 -0
  311. package/{build → lib/esm}/server/http/static.js +21 -21
  312. package/lib/esm/server/http/typescript.d.ts +5 -0
  313. package/{build → lib/esm}/server/http/typescript.js +40 -40
  314. package/lib/esm/server/main.d.ts +2 -0
  315. package/{build → lib/esm}/server/main.js +12 -9
  316. package/lib/esm/test.d.mts +2 -0
  317. package/lib/esm/test.mjs +26 -0
  318. package/lib/esm/test_all.d.ts +9 -0
  319. package/{build → lib/esm}/test_all.js +28 -18
  320. package/lib/esm/transpile.d.mts +3 -0
  321. package/{build → lib/esm}/transpile.mjs +18 -18
  322. package/lib/esm/tsconfig.tsbuildinfo +1 -0
  323. package/package.json +13 -14
  324. package/src/assert.ts +1 -1
  325. package/src/components/button_bar.ts +3 -3
  326. package/src/components/inline_edit.ts +3 -3
  327. package/src/components/logger.ts +3 -3
  328. package/src/components/select.ts +3 -3
  329. package/src/components/test.js +3 -2
  330. package/src/context.ts +3 -3
  331. package/src/diff.ts +2 -2
  332. package/src/dom/css/border.ts +3 -3
  333. package/src/dom/css/core.ts +1 -1
  334. package/src/dom/css/fstyle.ts +2 -2
  335. package/src/dom/css/sizing.ts +1 -1
  336. package/src/dom/dom.ts +1 -1
  337. package/src/dom/fc.test.ts +3 -3
  338. package/src/dom/fc.ts +1 -1
  339. package/src/dom/form/form.app.ts +2 -2
  340. package/src/dom/form/form.ts +3 -3
  341. package/src/dom/html.test.ts +3 -3
  342. package/src/dom/html.ts +1 -1
  343. package/src/dom/observable.test.ts +6 -6
  344. package/src/dom/observable.ts +1 -1
  345. package/src/dom/provide.ts +1 -1
  346. package/src/dom/router/link.ts +2 -2
  347. package/src/dom/router/router.ts +2 -2
  348. package/src/dom/svg.ts +1 -1
  349. package/src/dom/test.ts +8 -6
  350. package/src/dom/types/html.ts +1 -1
  351. package/src/equal.ts +1 -1
  352. package/src/flags.ts +1 -1
  353. package/src/fs.ts +4 -4
  354. package/src/index.html +6 -6
  355. package/src/observable/event.ts +2 -2
  356. package/src/observable/observable.test.ts +2 -2
  357. package/src/observable/observable.ts +72 -12
  358. package/src/pico/_variables.scss +1 -1
  359. package/src/pico/layout/_sectioning.scss +2 -0
  360. package/src/result.ts +1 -1
  361. package/src/scope/describe.ts +2 -5
  362. package/src/scope/display/console.ts +4 -4
  363. package/src/scope/display/dom.ts +6 -6
  364. package/src/scope/display/junit.ts +3 -3
  365. package/src/scope/execute.ts +2 -2
  366. package/src/scope/expect.ts +3 -3
  367. package/src/scope/state.ts +10 -0
  368. package/src/server/http/sitemap.ts +1 -1
  369. package/src/server/main.ts +9 -2
  370. package/src/test.mjs +22 -18
  371. package/src/test_all.ts +10 -0
  372. package/build/components/select.d.ts +0 -13
  373. package/build/components/test.js +0 -2
  374. package/build/dom/test.d.ts +0 -1
  375. package/build/dom/test.js +0 -2
  376. package/build/observable/observable.d.ts +0 -83
  377. package/build/observable/observable.js +0 -148
  378. package/build/observable/observable.test.js +0 -21
  379. package/build/test.mjs +0 -23
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.lock = void 0;
4
+ const locks = new WeakSet();
5
+ function lock(fn) {
6
+ return function (...args) {
7
+ let ret = null;
8
+ let ex = null;
9
+ if (!locks.has(fn)) {
10
+ locks.add(fn);
11
+ try {
12
+ ret = fn(...args);
13
+ }
14
+ catch (e) {
15
+ ex = e;
16
+ }
17
+ }
18
+ locks.delete(fn);
19
+ if (ex !== null) {
20
+ throw ex;
21
+ }
22
+ else {
23
+ return ret;
24
+ }
25
+ };
26
+ }
27
+ exports.lock = lock;
@@ -1 +1 @@
1
- export {};
1
+ export {};
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const index_js_1 = require("./scope/index.js");
4
+ const lock_js_1 = require("./lock.js");
5
+ (0, index_js_1.describe)("Lock", () => {
6
+ (0, index_js_1.it)("prevents reentry", function () {
7
+ let count = 0;
8
+ const inc = (0, lock_js_1.lock)(function () {
9
+ if (count > 4) {
10
+ return;
11
+ }
12
+ inc();
13
+ count++;
14
+ });
15
+ inc();
16
+ (0, index_js_1.expect)(count).toBe(1);
17
+ });
18
+ });
@@ -1,26 +1,26 @@
1
- import { Display } from "./display.js";
2
- export interface Log {
3
- (message: Display, data?: {}): void;
4
- }
5
- export interface Logger {
6
- level: Number;
7
- debug: Log;
8
- info: Log;
9
- warn: Log;
10
- error: Log;
11
- }
12
- export declare const LEVEL: {
13
- UNKNOWN: number;
14
- SILENT: number;
15
- DEBUG: number;
16
- VERBOSE: number;
17
- INFO: number;
18
- WARN: number;
19
- ERROR: number;
20
- };
21
- export declare function getLogger(name: string): Logger;
22
- export declare const DEFAULT_LOGGER: Logger;
23
- export declare function debug(message: Display, data?: {}): void;
24
- export declare function info(message: Display, data?: {}): void;
25
- export declare function warn(message: Display, data?: {}): void;
26
- export declare function error(message: Display, data?: {}): void;
1
+ import { Display } from "./display.js";
2
+ export interface Log {
3
+ (message: Display, data?: {}): void;
4
+ }
5
+ export interface Logger {
6
+ level: Number;
7
+ debug: Log;
8
+ info: Log;
9
+ warn: Log;
10
+ error: Log;
11
+ }
12
+ export declare const LEVEL: {
13
+ UNKNOWN: number;
14
+ SILENT: number;
15
+ DEBUG: number;
16
+ VERBOSE: number;
17
+ INFO: number;
18
+ WARN: number;
19
+ ERROR: number;
20
+ };
21
+ export declare function getLogger(name: string): Logger;
22
+ export declare const DEFAULT_LOGGER: Logger;
23
+ export declare function debug(message: Display, data?: {}): void;
24
+ export declare function info(message: Display, data?: {}): void;
25
+ export declare function warn(message: Display, data?: {}): void;
26
+ export declare function error(message: Display, data?: {}): void;
package/lib/cjs/log.js ADDED
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.error = exports.warn = exports.info = exports.debug = exports.DEFAULT_LOGGER = exports.getLogger = exports.LEVEL = void 0;
4
+ const display_js_1 = require("./display.js");
5
+ exports.LEVEL = {
6
+ UNKNOWN: 0,
7
+ SILENT: 0,
8
+ DEBUG: 1,
9
+ VERBOSE: 1,
10
+ INFO: 2,
11
+ WARN: 3,
12
+ ERROR: 4,
13
+ };
14
+ function getLogger(name) {
15
+ const logger = { level: exports.LEVEL.INFO };
16
+ const logAt = (level, fn) => (message, data) => level >= (logger.level ?? exports.LEVEL.SILENT)
17
+ ? fn((0, display_js_1.display)(message), data)
18
+ : undefined;
19
+ logger.debug = logAt(exports.LEVEL.VERBOSE, console.debug.bind(console));
20
+ logger.info = logAt(exports.LEVEL.INFO, console.info.bind(console));
21
+ logger.warn = logAt(exports.LEVEL.WARN, console.warn.bind(console));
22
+ logger.error = logAt(exports.LEVEL.ERROR, console.error.bind(console));
23
+ return logger;
24
+ }
25
+ exports.getLogger = getLogger;
26
+ exports.DEFAULT_LOGGER = getLogger("default");
27
+ function debug(message, data) {
28
+ if (data)
29
+ exports.DEFAULT_LOGGER.debug(message, data);
30
+ else
31
+ exports.DEFAULT_LOGGER.debug(message);
32
+ }
33
+ exports.debug = debug;
34
+ function info(message, data) {
35
+ if (data)
36
+ exports.DEFAULT_LOGGER.info(message, data);
37
+ else
38
+ exports.DEFAULT_LOGGER.info(message);
39
+ }
40
+ exports.info = info;
41
+ function warn(message, data) {
42
+ if (data)
43
+ exports.DEFAULT_LOGGER.warn(message, data);
44
+ else
45
+ exports.DEFAULT_LOGGER.warn(message);
46
+ }
47
+ exports.warn = warn;
48
+ function error(message, data) {
49
+ if (data)
50
+ exports.DEFAULT_LOGGER.error(message, data);
51
+ else
52
+ exports.DEFAULT_LOGGER.error(message);
53
+ }
54
+ exports.error = error;
@@ -0,0 +1,35 @@
1
+ import { Observable } from "./observable.js";
2
+ export interface Next<T> {
3
+ value: T;
4
+ completed: false;
5
+ failed: false;
6
+ }
7
+ export interface Error<E> {
8
+ error: E;
9
+ completed: false;
10
+ failed: true;
11
+ }
12
+ export interface Completed {
13
+ completed: true;
14
+ failed: false;
15
+ }
16
+ export interface Failed {
17
+ completed: true;
18
+ failed: true;
19
+ }
20
+ export declare type Event<T, E> = Next<T> | Error<E> | Completed | Failed;
21
+ export interface EventSubscriber<T, E> {
22
+ next(e: Event<T, E>): void;
23
+ }
24
+ export declare const next: <T>(value: T) => Next<T>;
25
+ export declare const error: <E>(e: E) => Error<E>;
26
+ export declare const completed: () => Completed;
27
+ export declare const failed: () => Failed;
28
+ export declare const isNext: <T>(event: Event<T, unknown>) => event is Next<T>;
29
+ export declare const isError: <E>(event: Event<unknown, E>) => event is Error<E>;
30
+ export declare const isCompleted: (event: Event<unknown, unknown>) => event is Completed;
31
+ export declare const isFailed: (event: Event<unknown, unknown>) => event is Failed;
32
+ export declare const isEvent: <T, E>(t: T | Event<T, E>) => t is Event<T, E>;
33
+ export declare const asEvents: <T, E>(a: (T | Event<T, E>)[]) => Event<T, E>[];
34
+ export declare const marbles: <T, E>(events: Event<T, E>[]) => string;
35
+ export declare const collect: <T, E>(input$: Observable<T, E>) => Event<T, E>[];
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.collect = exports.marbles = exports.asEvents = exports.isEvent = exports.isFailed = exports.isCompleted = exports.isError = exports.isNext = exports.failed = exports.completed = exports.error = exports.next = void 0;
4
+ const display_js_1 = require("../display.js");
5
+ const next = (value) => ({
6
+ value,
7
+ completed: false,
8
+ failed: false,
9
+ });
10
+ exports.next = next;
11
+ const error = (e) => ({
12
+ error: e,
13
+ completed: false,
14
+ failed: true,
15
+ });
16
+ exports.error = error;
17
+ const completed = () => ({ completed: true, failed: false });
18
+ exports.completed = completed;
19
+ const failed = () => ({ completed: true, failed: true });
20
+ exports.failed = failed;
21
+ const isNext = (event) => !event.completed && !event.failed && event.value !== undefined;
22
+ exports.isNext = isNext;
23
+ const isError = (event) => event.failed && !event.completed;
24
+ exports.isError = isError;
25
+ const isCompleted = (event) => event.completed && !event.failed;
26
+ exports.isCompleted = isCompleted;
27
+ const isFailed = (event) => event.completed && event.failed;
28
+ exports.isFailed = isFailed;
29
+ const isEvent = (t) => {
30
+ const b = t;
31
+ return (0, exports.isNext)(b) || (0, exports.isError)(b) || (0, exports.isCompleted)(b);
32
+ };
33
+ exports.isEvent = isEvent;
34
+ const asEvents = (a) => a.map((e) => ((0, exports.isEvent)(e) ? e : (0, exports.next)(e)));
35
+ exports.asEvents = asEvents;
36
+ const marble = (event) => (0, exports.isError)(event)
37
+ ? "X"
38
+ : (0, exports.isFailed)(event)
39
+ ? "!"
40
+ : (0, exports.isCompleted)(event)
41
+ ? "|"
42
+ : `(${(0, display_js_1.display)(event.value)})`;
43
+ const marbles = (events) => `:${events.map(marble).join("-")}`;
44
+ exports.marbles = marbles;
45
+ const collect = (input$) => {
46
+ const collected = [];
47
+ const subscription = input$.subscribe({
48
+ next: (x) => {
49
+ collected.push((0, exports.next)(x));
50
+ },
51
+ error: (e) => {
52
+ collected.push((0, exports.error)(e));
53
+ },
54
+ complete: () => {
55
+ collected.push((0, exports.completed)());
56
+ },
57
+ });
58
+ subscription.unsubscribe();
59
+ return collected;
60
+ };
61
+ exports.collect = collect;
@@ -0,0 +1,132 @@
1
+ import { Logger } from "../log.js";
2
+ export interface FullSubscriber<T, E> {
3
+ next?: (t: T) => void | Promise<undefined>;
4
+ error?: (e: E) => void | Promise<undefined>;
5
+ complete?: () => void | Promise<undefined>;
6
+ }
7
+ export declare type Subscriber<T, E> = FullSubscriber<T, E> | ((t: T) => void | Promise<undefined>);
8
+ export interface Subscription {
9
+ unsubscribe(): void;
10
+ }
11
+ export interface Observable<T, E = unknown> {
12
+ subscribe(subscriber: Subscriber<T, E>): Subscription;
13
+ pipe<T1>(o1: Subscriber<T, E> & Observable<T1, E>): Observable<T1, E>;
14
+ pipe<T1, T2>(o1: Subscriber<T, E> & Observable<T1, E>, o2: Subscriber<T1, E> & Observable<T2, E>): Observable<T2, E>;
15
+ filter(fn: (t: T) => boolean): Observable<T, E>;
16
+ distinct(fn?: (t1: T, t2: T) => boolean): Observable<T, E>;
17
+ map<U>(fn: (t: T) => U): Observable<U, E>;
18
+ reduce<A>(fn: (acc: A, t: T) => A, init: A): Observable<A, E>;
19
+ replay(n: number): Observable<T, E>;
20
+ tap(s: Subscriber<T, E>): Observable<T, E>;
21
+ }
22
+ export declare const Observable: {
23
+ of<T, E>(...ts: T[]): Observable<T, E>;
24
+ combineLatest<T1, T2, E_1>(o1: Observable<T1, E_1>, o2: Observable<T2, E_1>): Observable<[T1, T2], E_1>;
25
+ };
26
+ interface Scheduler {
27
+ execute(fn: () => (void | Promise<undefined>)[]): void | Promise<undefined>;
28
+ }
29
+ export declare const AsyncScheduler: Scheduler;
30
+ export declare const SyncScheduler: Scheduler;
31
+ export declare class Subject<T, E = unknown, T2 = T> implements FullSubscriber<T, E>, Observable<T, E> {
32
+ #private;
33
+ private readonly scheduler;
34
+ get $(): Observable<T, E>;
35
+ get hot(): boolean;
36
+ get cold(): boolean;
37
+ constructor(scheduler?: Scheduler);
38
+ onWarm(fn: Function): void;
39
+ next(t: T | T2): void | Promise<undefined>;
40
+ error(e: E): void | Promise<undefined>;
41
+ complete(): void | Promise<undefined>;
42
+ subscribe(subscriber: Subscriber<T, E>): Subscription;
43
+ pipe<T1>(o1: Subscriber<T, E> & Observable<T1, E>): Observable<T1, E>;
44
+ pipe<T1, T2>(o1: Subscriber<T, E> & Observable<T1, E>, o2: Subscriber<T1, E> & Observable<T2, E>): Observable<T2, E>;
45
+ filter(fn: (t: T) => boolean): Observable<T, E>;
46
+ distinct(fn?: (t1: T, t2: T) => boolean): Observable<T, E>;
47
+ map<U>(fn: (t: T) => U): Observable<U, E>;
48
+ reduce<A>(fn: (acc: A, t: T) => A, init: A): Observable<A, E>;
49
+ replay(n: number): Observable<T, E>;
50
+ tap(s: Subscriber<T, E>): Observable<T, E>;
51
+ }
52
+ export declare class BehaviorSubject<T, E = unknown, T2 = T> extends Subject<T, E, T2> {
53
+ #private;
54
+ constructor(t: T, scheduler?: Scheduler);
55
+ next(t: T | T2): void | Promise<undefined>;
56
+ subscribe(subscriber: Subscriber<T, E>): Subscription;
57
+ get current(): T;
58
+ }
59
+ export declare class ReplaySubject<T, E = unknown> extends Subject<T, E> {
60
+ #private;
61
+ private readonly n;
62
+ constructor(n: number, scheduler?: Scheduler);
63
+ next(t: T): void | Promise<undefined>;
64
+ subscribe(subscriber: Subscriber<T, E>): Subscription;
65
+ }
66
+ export declare function eventListener<E extends Event>(): (Subject<E, unknown, E> | ((e: E) => void))[];
67
+ export declare class EventHandler<E extends Event> extends Subject<E> {
68
+ private readonly eventFn;
69
+ constructor(eventFn: (e: E) => void | Promise<undefined>);
70
+ next(e: E): void;
71
+ }
72
+ export declare const watch: <T, E>(logger?: Logger) => (observable: Observable<T, E>) => void;
73
+ declare class MapOperator<T, U, E> extends Subject<U, E, T> implements FullSubscriber<T, E>, Observable<U, E> {
74
+ private readonly mapFn;
75
+ constructor(mapFn: (t: T) => U);
76
+ next(t: T): void | Promise<undefined>;
77
+ }
78
+ declare class FilterOperator<T, E> extends Subject<T, E> implements FullSubscriber<T, E>, Observable<T, E> {
79
+ private readonly filterFn;
80
+ constructor(filterFn: (t: T) => boolean);
81
+ next(t: T): void | Promise<undefined>;
82
+ }
83
+ declare class DistinctOperator<T, E> extends Subject<T, E> implements FullSubscriber<T, E>, Observable<T, E> {
84
+ #private;
85
+ private readonly distinctFn;
86
+ constructor(distinctFn?: (t1: T, t2: T) => boolean);
87
+ next(t: T): void | Promise<undefined>;
88
+ }
89
+ declare class ReduceOperator<A, T, E> extends BehaviorSubject<A, E, T> {
90
+ private readonly fn;
91
+ constructor(fn: (acc: A, t: T) => A, init: A);
92
+ next(t: T): void | Promise<undefined>;
93
+ }
94
+ export declare class TakeUntilOperator<T, E> extends Subject<T, E> {
95
+ constructor(o: Observable<unknown, unknown>);
96
+ }
97
+ export declare class TapOperator<T, E> extends Subject<T, E> {
98
+ private readonly subscriber;
99
+ constructor(fn: Subscriber<T, E>);
100
+ next(t: T): void | Promise<undefined>;
101
+ error(e: E): void | Promise<undefined>;
102
+ complete(): void | Promise<undefined>;
103
+ }
104
+ declare class FirstOperator<T, E> extends Subject<T, E> {
105
+ next(t: T): void | Promise<undefined>;
106
+ }
107
+ declare class LastOperator<T, E = Error> extends Subject<T, E> {
108
+ #private;
109
+ next(t: T): void;
110
+ complete(): void | Promise<undefined>;
111
+ }
112
+ export declare const filter: <T, E>(fn: (t: T) => boolean) => FilterOperator<T, E>;
113
+ export declare const distinct: <T, E>(fn?: ((t1: T, t2: T) => boolean) | undefined) => DistinctOperator<T, E>;
114
+ export declare const first: <T, E>() => FirstOperator<T, E>;
115
+ export declare const last: <T, E>() => LastOperator<T, E>;
116
+ export declare const map: <T1, T2, E>(fn: (t: T1) => T2) => MapOperator<T1, T2, E>;
117
+ export declare const replay: <T, E>(n: number) => ReplaySubject<T, E>;
118
+ export declare const reduce: <A, T, E>(fn: (acc: A, t: T) => A, init: A) => ReduceOperator<A, T, E>;
119
+ export declare const takeUntil: <T, E>(o: Observable<unknown, unknown>) => TakeUntilOperator<T, E>;
120
+ export declare const tap: <T, E>(fn: Subscriber<T, E>) => TapOperator<T, E>;
121
+ export declare const operator: {
122
+ filter: <T, E>(fn: (t: T) => boolean) => FilterOperator<T, E>;
123
+ distinct: <T_1, E_1>(fn?: ((t1: T_1, t2: T_1) => boolean) | undefined) => DistinctOperator<T_1, E_1>;
124
+ first: <T_2, E_2>() => FirstOperator<T_2, E_2>;
125
+ last: <T_3, E_3>() => LastOperator<T_3, E_3>;
126
+ map: <T1, T2, E_4>(fn: (t: T1) => T2) => MapOperator<T1, T2, E_4>;
127
+ replay: <T_4, E_5>(n: number) => ReplaySubject<T_4, E_5>;
128
+ reduce: <A, T_5, E_6>(fn: (acc: A, t: T_5) => A, init: A) => ReduceOperator<A, T_5, E_6>;
129
+ takeUntil: <T_6, E_7>(o: Observable<unknown, unknown>) => TakeUntilOperator<T_6, E_7>;
130
+ tap: <T_7, E_8>(fn: Subscriber<T_7, E_8>) => TapOperator<T_7, E_8>;
131
+ };
132
+ export {};