@davidsouther/jiffies 1.1.0 → 2.0.2

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 (384) hide show
  1. package/build/pico.css +2466 -0
  2. package/build/pico.css.map +1 -0
  3. package/{build → lib/cjs}/assert.d.ts +23 -23
  4. package/lib/cjs/assert.js +40 -0
  5. package/{build → lib/cjs}/case.d.ts +1 -1
  6. package/lib/cjs/case.js +9 -0
  7. package/{build → lib/cjs}/components/button_bar.d.ts +8 -8
  8. package/lib/cjs/components/button_bar.js +29 -0
  9. package/{build → lib/cjs}/components/inline_edit.d.ts +12 -12
  10. package/lib/cjs/components/inline_edit.js +51 -0
  11. package/{build → lib/cjs}/components/logger.d.ts +6 -6
  12. package/lib/cjs/components/logger.js +27 -0
  13. package/lib/cjs/components/select.d.ts +10 -0
  14. package/lib/cjs/components/select.js +6 -0
  15. package/lib/cjs/components/test.d.ts +1 -0
  16. package/lib/cjs/components/test.js +7 -0
  17. package/{build → lib/cjs}/components/virtual_scroll.d.ts +40 -40
  18. package/lib/cjs/components/virtual_scroll.js +102 -0
  19. package/{build → lib/cjs}/components/virtual_scroll.test.d.ts +1 -1
  20. package/lib/cjs/components/virtual_scroll.test.js +22 -0
  21. package/{build → lib/cjs}/context.d.ts +15 -15
  22. package/lib/cjs/context.js +48 -0
  23. package/{build → lib/cjs}/context.test.d.ts +1 -1
  24. package/lib/cjs/context.test.js +48 -0
  25. package/lib/cjs/debounce.d.ts +1 -0
  26. package/lib/cjs/debounce.js +12 -0
  27. package/lib/cjs/diff.d.ts +15 -0
  28. package/lib/cjs/diff.js +58 -0
  29. package/{build/components/test.d.ts → lib/cjs/diff.test.d.ts} +1 -1
  30. package/lib/cjs/diff.test.js +41 -0
  31. package/{build → lib/cjs}/display.d.ts +5 -5
  32. package/lib/cjs/display.js +16 -0
  33. package/{build → lib/cjs}/dom/css/border.d.ts +11 -11
  34. package/lib/cjs/dom/css/border.js +33 -0
  35. package/{build → lib/cjs}/dom/css/constants.d.ts +31 -31
  36. package/lib/cjs/dom/css/constants.js +31 -0
  37. package/{build → lib/cjs}/dom/css/core.d.ts +5 -5
  38. package/lib/cjs/dom/css/core.js +31 -0
  39. package/{build → lib/cjs}/dom/css/fstyle.d.ts +5 -5
  40. package/lib/cjs/dom/css/fstyle.js +36 -0
  41. package/{build → lib/cjs}/dom/css/sizing.d.ts +5 -5
  42. package/lib/cjs/dom/css/sizing.js +14 -0
  43. package/{build → lib/cjs}/dom/dom.d.ts +27 -26
  44. package/lib/cjs/dom/dom.js +110 -0
  45. package/{build → lib/cjs}/dom/fc.d.ts +14 -14
  46. package/lib/cjs/dom/fc.js +39 -0
  47. package/{build → lib/cjs}/dom/fc.test.d.ts +1 -1
  48. package/lib/cjs/dom/fc.test.js +23 -0
  49. package/{build → lib/cjs}/dom/form/form.app.d.ts +1 -1
  50. package/lib/cjs/dom/form/form.app.js +27 -0
  51. package/{build → lib/cjs}/dom/form/form.d.ts +26 -26
  52. package/lib/cjs/dom/form/form.js +49 -0
  53. package/{build → lib/cjs}/dom/form/form.test.d.ts +0 -0
  54. package/{build → lib/cjs}/dom/form/form.test.js +1 -1
  55. package/{build → lib/cjs}/dom/html.d.ts +113 -113
  56. package/lib/cjs/dom/html.js +119 -0
  57. package/{build → lib/cjs}/dom/html.test.d.ts +1 -1
  58. package/lib/cjs/dom/html.test.js +60 -0
  59. package/lib/cjs/dom/observable.d.ts +2 -0
  60. package/lib/cjs/dom/observable.js +10 -0
  61. package/{build/observable → lib/cjs/dom}/observable.test.d.ts +1 -1
  62. package/lib/cjs/dom/observable.test.js +35 -0
  63. package/{build → lib/cjs}/dom/provide.d.ts +3 -3
  64. package/lib/cjs/dom/provide.js +12 -0
  65. package/{build → lib/cjs}/dom/router/link.d.ts +6 -6
  66. package/lib/cjs/dom/router/link.js +7 -0
  67. package/{build → lib/cjs}/dom/router/router.d.ts +12 -12
  68. package/lib/cjs/dom/router/router.js +52 -0
  69. package/{build → lib/cjs}/dom/svg.d.ts +64 -64
  70. package/lib/cjs/dom/svg.js +69 -0
  71. package/lib/cjs/dom/test.d.ts +1 -0
  72. package/lib/cjs/dom/test.js +13 -0
  73. package/{build → lib/cjs}/dom/types/css.d.ts +6612 -6612
  74. package/lib/cjs/dom/types/css.js +24 -0
  75. package/{build → lib/cjs}/dom/types/dom.d.ts +0 -0
  76. package/{build → lib/cjs}/dom/types/dom.js +1 -1
  77. package/{build → lib/cjs}/dom/types/html.d.ts +616 -616
  78. package/lib/cjs/dom/types/html.js +2 -0
  79. package/{build → lib/cjs}/dom/xml.d.ts +1 -1
  80. package/lib/cjs/dom/xml.js +8 -0
  81. package/{build → lib/cjs}/equal.d.ts +5 -5
  82. package/lib/cjs/equal.js +43 -0
  83. package/{build → lib/cjs}/equal.test.d.ts +1 -1
  84. package/lib/cjs/equal.test.js +22 -0
  85. package/{build → lib/cjs}/flags.d.ts +7 -7
  86. package/lib/cjs/flags.js +52 -0
  87. package/{build → lib/cjs}/flags.test.d.ts +1 -1
  88. package/lib/cjs/flags.test.js +37 -0
  89. package/{build → lib/cjs}/fs.d.ts +48 -48
  90. package/lib/cjs/fs.js +152 -0
  91. package/{build → lib/cjs}/fs.test.d.ts +1 -1
  92. package/lib/cjs/fs.test.js +45 -0
  93. package/{build → lib/cjs}/generator.d.ts +1 -1
  94. package/lib/cjs/generator.js +14 -0
  95. package/{build → lib/cjs}/generator.test.d.ts +1 -1
  96. package/lib/cjs/generator.test.js +26 -0
  97. package/{build → lib/cjs}/is_browser.d.ts +1 -1
  98. package/lib/cjs/is_browser.js +4 -0
  99. package/{build → lib/cjs}/loader.d.mts +22 -22
  100. package/lib/cjs/loader.mjs +40 -0
  101. package/{build → lib/cjs}/lock.d.ts +1 -1
  102. package/lib/cjs/lock.js +27 -0
  103. package/{build → lib/cjs}/lock.test.d.ts +1 -1
  104. package/lib/cjs/lock.test.js +18 -0
  105. package/{build → lib/cjs}/log.d.ts +26 -26
  106. package/lib/cjs/log.js +54 -0
  107. package/lib/cjs/observable/event.d.ts +35 -0
  108. package/lib/cjs/observable/event.js +61 -0
  109. package/lib/cjs/observable/observable.d.ts +132 -0
  110. package/lib/cjs/observable/observable.js +363 -0
  111. package/lib/cjs/observable/observable.test.d.ts +1 -0
  112. package/lib/cjs/observable/observable.test.js +65 -0
  113. package/{build → lib/cjs}/range.d.ts +1 -1
  114. package/lib/cjs/range.js +11 -0
  115. package/{build → lib/cjs}/result.d.ts +31 -31
  116. package/lib/cjs/result.js +80 -0
  117. package/{build → lib/cjs}/result.test.d.ts +1 -1
  118. package/lib/cjs/result.test.js +73 -0
  119. package/{build → lib/cjs}/safe.d.ts +1 -1
  120. package/lib/cjs/safe.js +14 -0
  121. package/{build → lib/cjs}/scope/describe.d.ts +18 -18
  122. package/lib/cjs/scope/describe.js +73 -0
  123. package/{build → lib/cjs}/scope/display/console.d.ts +2 -2
  124. package/lib/cjs/scope/display/console.js +25 -0
  125. package/{build → lib/cjs}/scope/display/dom.d.ts +3 -3
  126. package/lib/cjs/scope/display/dom.js +30 -0
  127. package/{build → lib/cjs}/scope/display/junit.d.ts +2 -2
  128. package/lib/cjs/scope/display/junit.js +21 -0
  129. package/{build → lib/cjs}/scope/execute.d.ts +12 -12
  130. package/lib/cjs/scope/execute.js +91 -0
  131. package/{build → lib/cjs}/scope/expect.d.ts +23 -23
  132. package/lib/cjs/scope/expect.js +114 -0
  133. package/{build → lib/cjs}/scope/fix.d.ts +4 -4
  134. package/lib/cjs/scope/fix.js +26 -0
  135. package/{build → lib/cjs}/scope/index.d.ts +3 -3
  136. package/lib/cjs/scope/index.js +15 -0
  137. package/{build → lib/cjs}/scope/scope.d.ts +17 -17
  138. package/lib/cjs/scope/scope.js +2 -0
  139. package/lib/cjs/scope/state.d.ts +1 -0
  140. package/lib/cjs/scope/state.js +11 -0
  141. package/{build → lib/cjs}/server/http/apps.d.ts +5 -5
  142. package/lib/cjs/server/http/apps.js +27 -0
  143. package/{build → lib/cjs}/server/http/css.d.ts +5 -5
  144. package/lib/cjs/server/http/css.js +54 -0
  145. package/{build → lib/cjs}/server/http/index.d.ts +21 -21
  146. package/lib/cjs/server/http/index.js +77 -0
  147. package/{build → lib/cjs}/server/http/response.d.ts +4 -4
  148. package/lib/cjs/server/http/response.js +45 -0
  149. package/{build → lib/cjs}/server/http/sitemap.d.ts +2 -2
  150. package/lib/cjs/server/http/sitemap.js +46 -0
  151. package/{build → lib/cjs}/server/http/static.d.ts +2 -2
  152. package/lib/cjs/server/http/static.js +25 -0
  153. package/{build → lib/cjs}/server/http/typescript.d.ts +5 -5
  154. package/lib/cjs/server/http/typescript.js +44 -0
  155. package/{build → lib/cjs}/server/main.d.ts +2 -2
  156. package/lib/cjs/server/main.js +14 -0
  157. package/{build → lib/cjs}/test.d.mts +2 -2
  158. package/lib/cjs/test.mjs +28 -0
  159. package/{build → lib/cjs}/test_all.d.ts +9 -7
  160. package/lib/cjs/test_all.js +30 -0
  161. package/{build → lib/cjs}/transpile.d.mts +3 -3
  162. package/lib/cjs/transpile.mjs +22 -0
  163. package/lib/cjs/tsconfig.tsbuildinfo +1 -0
  164. package/lib/esm/assert.d.ts +23 -0
  165. package/{build → lib/esm}/assert.js +33 -33
  166. package/lib/esm/case.d.ts +1 -0
  167. package/{build → lib/esm}/case.js +5 -5
  168. package/lib/esm/components/button_bar.d.ts +8 -0
  169. package/{build → lib/esm}/components/button_bar.js +27 -27
  170. package/lib/esm/components/inline_edit.d.ts +12 -0
  171. package/{build → lib/esm}/components/inline_edit.js +48 -48
  172. package/lib/esm/components/logger.d.ts +6 -0
  173. package/{build → lib/esm}/components/logger.js +22 -22
  174. package/lib/esm/components/select.d.ts +10 -0
  175. package/{build → lib/esm}/components/select.js +3 -3
  176. package/lib/esm/components/test.d.ts +1 -0
  177. package/lib/esm/components/test.js +3 -0
  178. package/lib/esm/components/virtual_scroll.d.ts +40 -0
  179. package/{build → lib/esm}/components/virtual_scroll.js +94 -94
  180. package/lib/esm/components/virtual_scroll.test.d.ts +1 -0
  181. package/{build → lib/esm}/components/virtual_scroll.test.js +20 -21
  182. package/lib/esm/context.d.ts +15 -0
  183. package/{build → lib/esm}/context.js +43 -43
  184. package/lib/esm/context.test.d.ts +1 -0
  185. package/{build → lib/esm}/context.test.js +46 -46
  186. package/lib/esm/debounce.d.ts +1 -0
  187. package/{build → lib/esm}/debounce.js +8 -7
  188. package/lib/esm/diff.d.ts +15 -0
  189. package/lib/esm/diff.js +54 -0
  190. package/lib/esm/diff.test.d.ts +1 -0
  191. package/lib/esm/diff.test.js +39 -0
  192. package/lib/esm/display.d.ts +5 -0
  193. package/{build → lib/esm}/display.js +11 -11
  194. package/lib/esm/dom/css/border.d.ts +11 -0
  195. package/{build → lib/esm}/dom/css/border.js +27 -27
  196. package/lib/esm/dom/css/constants.d.ts +31 -0
  197. package/{build → lib/esm}/dom/css/constants.js +28 -28
  198. package/lib/esm/dom/css/core.d.ts +5 -0
  199. package/{build → lib/esm}/dom/css/core.js +24 -24
  200. package/lib/esm/dom/css/fstyle.d.ts +5 -0
  201. package/{build → lib/esm}/dom/css/fstyle.js +32 -32
  202. package/lib/esm/dom/css/sizing.d.ts +5 -0
  203. package/{build → lib/esm}/dom/css/sizing.js +10 -10
  204. package/lib/esm/dom/dom.d.ts +27 -0
  205. package/{build → lib/esm}/dom/dom.js +104 -95
  206. package/lib/esm/dom/fc.d.ts +14 -0
  207. package/{build → lib/esm}/dom/fc.js +35 -36
  208. package/lib/esm/dom/fc.test.d.ts +1 -0
  209. package/{build → lib/esm}/dom/fc.test.js +21 -21
  210. package/lib/esm/dom/form/form.app.d.ts +1 -0
  211. package/{build → lib/esm}/dom/form/form.app.js +23 -23
  212. package/lib/esm/dom/form/form.d.ts +26 -0
  213. package/{build → lib/esm}/dom/form/form.js +34 -34
  214. package/lib/esm/dom/form/form.test.d.ts +0 -0
  215. package/lib/esm/dom/form/form.test.js +1 -0
  216. package/lib/esm/dom/html.d.ts +113 -0
  217. package/{build → lib/esm}/dom/html.js +114 -114
  218. package/lib/esm/dom/html.test.d.ts +1 -0
  219. package/{build → lib/esm}/dom/html.test.js +58 -58
  220. package/lib/esm/dom/observable.d.ts +2 -0
  221. package/lib/esm/dom/observable.js +6 -0
  222. package/lib/esm/dom/observable.test.d.ts +1 -0
  223. package/lib/esm/dom/observable.test.js +33 -0
  224. package/lib/esm/dom/provide.d.ts +3 -0
  225. package/{build → lib/esm}/dom/provide.js +7 -7
  226. package/lib/esm/dom/router/link.d.ts +6 -0
  227. package/{build → lib/esm}/dom/router/link.js +3 -3
  228. package/lib/esm/dom/router/router.d.ts +12 -0
  229. package/{build → lib/esm}/dom/router/router.js +49 -49
  230. package/lib/esm/dom/svg.d.ts +64 -0
  231. package/{build → lib/esm}/dom/svg.js +65 -65
  232. package/lib/esm/dom/test.d.ts +1 -0
  233. package/lib/esm/dom/test.js +9 -0
  234. package/lib/esm/dom/types/css.d.ts +6612 -0
  235. package/{build → lib/esm}/dom/types/css.js +23 -23
  236. package/lib/esm/dom/types/dom.d.ts +0 -0
  237. package/lib/esm/dom/types/dom.js +1 -0
  238. package/lib/esm/dom/types/html.d.ts +616 -0
  239. package/{build → lib/esm}/dom/types/html.js +1 -1
  240. package/lib/esm/dom/xml.d.ts +1 -0
  241. package/{build → lib/esm}/dom/xml.js +4 -4
  242. package/lib/esm/equal.d.ts +5 -0
  243. package/{build → lib/esm}/equal.js +37 -37
  244. package/lib/esm/equal.test.d.ts +1 -0
  245. package/{build → lib/esm}/equal.test.js +20 -20
  246. package/lib/esm/flags.d.ts +7 -0
  247. package/{build → lib/esm}/flags.js +48 -48
  248. package/lib/esm/flags.test.d.ts +1 -0
  249. package/{build → lib/esm}/flags.test.js +35 -35
  250. package/lib/esm/fs.d.ts +48 -0
  251. package/{build → lib/esm}/fs.js +145 -144
  252. package/lib/esm/fs.test.d.ts +1 -0
  253. package/{build → lib/esm}/fs.test.js +43 -43
  254. package/lib/esm/generator.d.ts +1 -0
  255. package/{build → lib/esm}/generator.js +10 -10
  256. package/lib/esm/generator.test.d.ts +1 -0
  257. package/{build → lib/esm}/generator.test.js +24 -24
  258. package/lib/esm/is_browser.d.ts +1 -0
  259. package/{build → lib/esm}/is_browser.js +1 -1
  260. package/lib/esm/loader.d.mts +22 -0
  261. package/{build → lib/esm}/loader.mjs +35 -35
  262. package/lib/esm/lock.d.ts +1 -0
  263. package/{build → lib/esm}/lock.js +23 -23
  264. package/lib/esm/lock.test.d.ts +1 -0
  265. package/{build → lib/esm}/lock.test.js +16 -16
  266. package/lib/esm/log.d.ts +26 -0
  267. package/{build → lib/esm}/log.js +46 -46
  268. package/lib/esm/observable/event.d.ts +35 -0
  269. package/lib/esm/observable/event.js +46 -0
  270. package/lib/esm/observable/observable.d.ts +132 -0
  271. package/lib/esm/observable/observable.js +343 -0
  272. package/lib/esm/observable/observable.test.d.ts +1 -0
  273. package/lib/esm/observable/observable.test.js +63 -0
  274. package/lib/esm/range.d.ts +1 -0
  275. package/{build → lib/esm}/range.js +7 -7
  276. package/lib/esm/result.d.ts +31 -0
  277. package/{build → lib/esm}/result.js +65 -65
  278. package/lib/esm/result.test.d.ts +1 -0
  279. package/{build → lib/esm}/result.test.js +71 -71
  280. package/lib/esm/safe.d.ts +1 -0
  281. package/{build → lib/esm}/safe.js +10 -10
  282. package/lib/esm/scope/describe.d.ts +18 -0
  283. package/{build → lib/esm}/scope/describe.js +60 -61
  284. package/lib/esm/scope/display/console.d.ts +2 -0
  285. package/{build → lib/esm}/scope/display/console.js +21 -21
  286. package/lib/esm/scope/display/dom.d.ts +3 -0
  287. package/{build → lib/esm}/scope/display/dom.js +26 -26
  288. package/lib/esm/scope/display/junit.d.ts +2 -0
  289. package/{build → lib/esm}/scope/display/junit.js +17 -17
  290. package/lib/esm/scope/execute.d.ts +12 -0
  291. package/{build → lib/esm}/scope/execute.js +85 -85
  292. package/lib/esm/scope/expect.d.ts +23 -0
  293. package/{build → lib/esm}/scope/expect.js +108 -108
  294. package/lib/esm/scope/fix.d.ts +4 -0
  295. package/{build → lib/esm}/scope/fix.js +22 -22
  296. package/lib/esm/scope/index.d.ts +3 -0
  297. package/{build → lib/esm}/scope/index.js +3 -3
  298. package/lib/esm/scope/scope.d.ts +17 -0
  299. package/{build → lib/esm}/scope/scope.js +1 -1
  300. package/lib/esm/scope/state.d.ts +1 -0
  301. package/lib/esm/scope/state.js +7 -0
  302. package/lib/esm/server/http/apps.d.ts +5 -0
  303. package/{build → lib/esm}/server/http/apps.js +23 -23
  304. package/lib/esm/server/http/css.d.ts +5 -0
  305. package/{build → lib/esm}/server/http/css.js +50 -50
  306. package/lib/esm/server/http/index.d.ts +21 -0
  307. package/{build → lib/esm}/server/http/index.js +73 -73
  308. package/lib/esm/server/http/response.d.ts +4 -0
  309. package/{build → lib/esm}/server/http/response.js +40 -40
  310. package/lib/esm/server/http/sitemap.d.ts +2 -0
  311. package/{build → lib/esm}/server/http/sitemap.js +42 -42
  312. package/lib/esm/server/http/static.d.ts +2 -0
  313. package/{build → lib/esm}/server/http/static.js +21 -21
  314. package/lib/esm/server/http/typescript.d.ts +5 -0
  315. package/{build → lib/esm}/server/http/typescript.js +40 -40
  316. package/lib/esm/server/main.d.ts +2 -0
  317. package/{build → lib/esm}/server/main.js +12 -9
  318. package/lib/esm/test.d.mts +2 -0
  319. package/lib/esm/test.mjs +26 -0
  320. package/lib/esm/test_all.d.ts +9 -0
  321. package/{build → lib/esm}/test_all.js +28 -18
  322. package/lib/esm/transpile.d.mts +3 -0
  323. package/{build → lib/esm}/transpile.mjs +18 -18
  324. package/lib/esm/tsconfig.tsbuildinfo +1 -0
  325. package/package.json +16 -17
  326. package/src/assert.ts +1 -1
  327. package/src/components/button_bar.ts +3 -3
  328. package/src/components/inline_edit.ts +3 -3
  329. package/src/components/logger.ts +3 -3
  330. package/src/components/select.ts +3 -3
  331. package/src/components/test.js +3 -2
  332. package/src/context.ts +3 -3
  333. package/src/debounce.ts +2 -1
  334. package/src/diff.ts +2 -2
  335. package/src/display.ts +2 -2
  336. package/src/dom/css/border.ts +3 -3
  337. package/src/dom/css/core.ts +1 -1
  338. package/src/dom/css/fstyle.ts +2 -2
  339. package/src/dom/css/sizing.ts +1 -1
  340. package/src/dom/dom.ts +1 -1
  341. package/src/dom/fc.test.ts +3 -3
  342. package/src/dom/fc.ts +1 -1
  343. package/src/dom/form/form.app.ts +2 -2
  344. package/src/dom/form/form.ts +3 -3
  345. package/src/dom/html.test.ts +3 -3
  346. package/src/dom/html.ts +1 -1
  347. package/src/dom/observable.test.ts +6 -6
  348. package/src/dom/observable.ts +1 -1
  349. package/src/dom/provide.ts +1 -1
  350. package/src/dom/router/link.ts +2 -2
  351. package/src/dom/router/router.ts +2 -2
  352. package/src/dom/svg.ts +1 -1
  353. package/src/dom/test.ts +8 -6
  354. package/src/dom/types/html.ts +1 -1
  355. package/src/equal.ts +1 -1
  356. package/src/flags.ts +1 -1
  357. package/src/fs.ts +5 -4
  358. package/src/index.html +6 -6
  359. package/src/observable/event.ts +2 -2
  360. package/src/observable/observable.test.ts +2 -2
  361. package/src/observable/observable.ts +72 -12
  362. package/src/pico/_variables.scss +1 -1
  363. package/src/pico/layout/_sectioning.scss +2 -0
  364. package/src/result.ts +1 -1
  365. package/src/scope/describe.ts +2 -5
  366. package/src/scope/display/console.ts +4 -4
  367. package/src/scope/display/dom.ts +6 -6
  368. package/src/scope/display/junit.ts +3 -3
  369. package/src/scope/execute.ts +2 -2
  370. package/src/scope/expect.ts +3 -3
  371. package/src/scope/state.ts +10 -0
  372. package/src/server/http/sitemap.ts +1 -1
  373. package/src/server/main.ts +9 -2
  374. package/src/test.mjs +22 -18
  375. package/src/test_all.ts +10 -0
  376. package/build/components/select.d.ts +0 -13
  377. package/build/components/test.js +0 -2
  378. package/build/debounce.d.ts +0 -1
  379. package/build/dom/test.d.ts +0 -1
  380. package/build/dom/test.js +0 -2
  381. package/build/observable/observable.d.ts +0 -83
  382. package/build/observable/observable.js +0 -148
  383. package/build/observable/observable.test.js +0 -21
  384. package/build/test.mjs +0 -23
@@ -1,85 +1,85 @@
1
- import { afterall, aftereach, beforeall, beforeeach, rootCases, } from "./describe.js";
2
- export async function execute(prefix = "", cases = rootCases()) {
3
- const beforeallfn = cases[beforeall] ?? (() => { });
4
- const beforeeachfn = cases[beforeeach] ?? (() => { });
5
- const afterallfn = cases[afterall] ?? (() => { });
6
- const aftereachfn = cases[aftereach] ?? (() => { });
7
- const result = { executed: 0, passed: 0, failed: 0, total: 0 };
8
- try {
9
- await beforeallfn();
10
- }
11
- catch (e) {
12
- result["_beforeAll"] = { error: e };
13
- return result;
14
- }
15
- for (const [title, block] of Object.entries(cases)) {
16
- if (typeof title === "symbol") {
17
- continue;
18
- }
19
- if (block instanceof Function) {
20
- try {
21
- result.executed += 1;
22
- await beforeeachfn();
23
- await block();
24
- await aftereachfn();
25
- result.passed += 1;
26
- result[title] = { passed: true };
27
- }
28
- catch (e) {
29
- result.failed += 1;
30
- result[title] = { error: /** @type Error */ e };
31
- }
32
- }
33
- else if (block) {
34
- const run = await execute(title, block);
35
- result.executed += run.executed;
36
- result.passed += run.passed;
37
- result.failed += run.failed;
38
- result[title] = run;
39
- }
40
- }
41
- try {
42
- await afterallfn();
43
- }
44
- catch (e) {
45
- result["_afterAll"] = { error: e };
46
- }
47
- return result;
48
- }
49
- export function getError({ error }) {
50
- if (typeof error == "string") {
51
- return error;
52
- }
53
- else if (error.message) {
54
- return error.stack;
55
- }
56
- else {
57
- return "unknown error";
58
- }
59
- }
60
- function makeResult(test, result) {
61
- if (result.error)
62
- return [
63
- {
64
- test,
65
- stack: getError(result),
66
- stats: { executed: 1, failed: 1 },
67
- },
68
- ];
69
- if (result.passed === true) {
70
- return [{ test, stats: { executed: 1, failed: 0 } }];
71
- }
72
- return flattenResults(result, test);
73
- }
74
- export function flattenResults(results, prefix = "") {
75
- const arrow = prefix == "" ? "" : " -> ";
76
- let errorList = [];
77
- for (const [title, result] of Object.entries(results).filter(([key]) => !["executed", "passed", "failed"].includes(key))) {
78
- const test = `${prefix}${arrow}${title}`;
79
- if (typeof result == "number")
80
- continue;
81
- const flatResult = makeResult(test, result);
82
- errorList = errorList.concat(flatResult);
83
- }
84
- return errorList;
85
- }
1
+ import { afterall, aftereach, beforeall, beforeeach, rootCases, } from "./describe.js";
2
+ export async function execute(cases = rootCases()) {
3
+ const beforeallfn = cases[beforeall] ?? (() => { });
4
+ const beforeeachfn = cases[beforeeach] ?? (() => { });
5
+ const afterallfn = cases[afterall] ?? (() => { });
6
+ const aftereachfn = cases[aftereach] ?? (() => { });
7
+ const result = { executed: 0, passed: 0, failed: 0, total: 0 };
8
+ try {
9
+ await beforeallfn();
10
+ }
11
+ catch (e) {
12
+ result["_beforeAll"] = { error: e };
13
+ return result;
14
+ }
15
+ for (const [title, block] of Object.entries(cases)) {
16
+ if (typeof title === "symbol") {
17
+ continue;
18
+ }
19
+ if (block instanceof Function) {
20
+ try {
21
+ result.executed += 1;
22
+ await beforeeachfn();
23
+ await block();
24
+ await aftereachfn();
25
+ result.passed += 1;
26
+ result[title] = { passed: true };
27
+ }
28
+ catch (e) {
29
+ result.failed += 1;
30
+ result[title] = { error: /** @type Error */ e };
31
+ }
32
+ }
33
+ else if (block) {
34
+ const run = await execute(block);
35
+ result.executed += run.executed;
36
+ result.passed += run.passed;
37
+ result.failed += run.failed;
38
+ result[title] = run;
39
+ }
40
+ }
41
+ try {
42
+ await afterallfn();
43
+ }
44
+ catch (e) {
45
+ result["_afterAll"] = { error: e };
46
+ }
47
+ return result;
48
+ }
49
+ export function getError({ error }) {
50
+ if (typeof error == "string") {
51
+ return error;
52
+ }
53
+ else if (error.message) {
54
+ return error.stack;
55
+ }
56
+ else {
57
+ return "unknown error";
58
+ }
59
+ }
60
+ function makeResult(test, result) {
61
+ if (result.error)
62
+ return [
63
+ {
64
+ test,
65
+ stack: getError(result),
66
+ stats: { executed: 1, failed: 1 },
67
+ },
68
+ ];
69
+ if (result.passed === true) {
70
+ return [{ test, stats: { executed: 1, failed: 0 } }];
71
+ }
72
+ return flattenResults(result, test);
73
+ }
74
+ export function flattenResults(results, prefix = "") {
75
+ const arrow = prefix == "" ? "" : " -> ";
76
+ let errorList = [];
77
+ for (const [title, result] of Object.entries(results).filter(([key]) => !["executed", "passed", "failed"].includes(key))) {
78
+ const test = `${prefix}${arrow}${title}`;
79
+ if (typeof result == "number")
80
+ continue;
81
+ const flatResult = makeResult(test, result);
82
+ errorList = errorList.concat(flatResult);
83
+ }
84
+ return errorList;
85
+ }
@@ -0,0 +1,23 @@
1
+ export declare class Matcher<T> {
2
+ actual: T;
3
+ constructor(actual: T);
4
+ get not(): Matcher<T>;
5
+ toBe(expected: T): void;
6
+ toEqual(expected: T, partial?: boolean): void;
7
+ toMatch(expected: RegExp | string): void;
8
+ toMatchObject(expected: Partial<T>): void;
9
+ toBeNull(): void;
10
+ toThrow(message?: string): void;
11
+ }
12
+ export declare class NotMatcher<T> {
13
+ actual: T;
14
+ constructor(actual: T);
15
+ get not(): Matcher<T>;
16
+ toBe(expected: T): void;
17
+ toEqual(expected: T): void;
18
+ toMatch(expected: RegExp | string): void;
19
+ toMatchObject(expected: Partial<T>): void;
20
+ toBeNull(): void;
21
+ toThrow(message?: string): void;
22
+ }
23
+ export declare function expect<T>(t: T): Matcher<T>;
@@ -1,108 +1,108 @@
1
- import { assert } from "../assert.js";
2
- import { display } from "../display.js";
3
- import { equals } from "../equal.js";
4
- export class Matcher {
5
- actual;
6
- constructor(actual) {
7
- this.actual = actual;
8
- }
9
- get not() {
10
- return new NotMatcher(this.actual);
11
- }
12
- toBe(expected) {
13
- assert(this.actual === expected, () => `${this.actual} !== ${expected}`);
14
- }
15
- toEqual(expected, partial = false) {
16
- assert(equals(this.actual, expected, partial), () => `Objects are not equivalent: ${display(this.actual)}, ${display(expected)}`);
17
- }
18
- toMatch(expected) {
19
- assert(typeof this.actual === "string", () => "Must have string for regexp match");
20
- // @ts-expect-error
21
- const actual = this.actual;
22
- if (typeof expected === "string") {
23
- assert(actual.includes(expected), () => `${actual} does not include ${expected}`);
24
- }
25
- else {
26
- assert(expected.test(actual), () => `${actual} does not match ${expected}`);
27
- }
28
- }
29
- toMatchObject(expected) {
30
- for (const [k, v] of Object.entries(expected)) {
31
- // @ts-expect-error
32
- const actual = this.actual[k];
33
- assert(equals(actual, v, true), () => `Comparing ${k}, properties not equal: ${display(actual)}, ${display(v)}`);
34
- }
35
- }
36
- toBeNull() {
37
- assert(this.actual === null, () => `Expected null, got ${JSON.stringify(this.actual)}`);
38
- }
39
- toThrow(message = "") {
40
- let didThrow = false;
41
- let result = undefined;
42
- try {
43
- // @ts-expect-error
44
- result = this.actual();
45
- }
46
- catch ({ message: e }) {
47
- assert(
48
- // @ts-expect-error
49
- (e ?? "").match(message), () => `Expected thrown message to match ${message}, got ${e}`);
50
- didThrow = true;
51
- }
52
- assert(didThrow, () => `Expected throw but got ${JSON.stringify(result)}`);
53
- }
54
- }
55
- export class NotMatcher {
56
- actual;
57
- constructor(actual) {
58
- this.actual = actual;
59
- }
60
- get not() {
61
- return new Matcher(this.actual);
62
- }
63
- toBe(expected) {
64
- assert(this.actual !== expected, () => `${this.actual} === ${expected}`);
65
- }
66
- toEqual(expected) {
67
- assert(!equals(this.actual, expected), () => `Objects are equivalent: ${JSON.stringify(this.actual)}, ${JSON.stringify(expected)}`);
68
- }
69
- toMatch(expected) {
70
- assert(typeof this.actual === "string", () => "Must have string for regexp match");
71
- // @ts-expect-error
72
- const actual = this.actual;
73
- if (typeof expected === "string") {
74
- assert(!actual.includes(expected), () => `${actual} includes ${expected}`);
75
- }
76
- else {
77
- assert(!expected.test(actual), () => `${actual} matches ${expected}`);
78
- }
79
- }
80
- toMatchObject(expected) {
81
- for (const [k, v] of Object.entries(expected)) {
82
- // @ts-expect-error
83
- const actual = this.actual[k];
84
- assert(!equals(actual, v), () => `Comparing ${k}, properties equal: ${JSON.stringify(actual)}, ${JSON.stringify(v)}`);
85
- }
86
- }
87
- toBeNull() {
88
- assert(this.actual !== null, () => `Expected not null`);
89
- }
90
- toThrow(message = "") {
91
- let didThrow = false;
92
- let result = undefined;
93
- try {
94
- // @ts-expect-error
95
- result = this.actual();
96
- }
97
- catch ({ message: e }) {
98
- assert(
99
- // @ts-expect-error
100
- (e ?? "").match(message), () => `Expected thrown message to match ${message}, got ${e}`);
101
- didThrow = true;
102
- }
103
- assert(!didThrow, () => `Expected throw but got ${JSON.stringify(result)}`);
104
- }
105
- }
106
- export function expect(t) {
107
- return new Matcher(t);
108
- }
1
+ import { assert } from "../assert.js";
2
+ import { display } from "../display.js";
3
+ import { equals } from "../equal.js";
4
+ export class Matcher {
5
+ actual;
6
+ constructor(actual) {
7
+ this.actual = actual;
8
+ }
9
+ get not() {
10
+ return new NotMatcher(this.actual);
11
+ }
12
+ toBe(expected) {
13
+ assert(this.actual === expected, () => `${this.actual} !== ${expected}`);
14
+ }
15
+ toEqual(expected, partial = false) {
16
+ assert(equals(this.actual, expected, partial), () => `Objects are not equivalent: ${display(this.actual)}, ${display(expected)}`);
17
+ }
18
+ toMatch(expected) {
19
+ assert(typeof this.actual === "string", () => "Must have string for regexp match");
20
+ // @ts-expect-error
21
+ const actual = this.actual;
22
+ if (typeof expected === "string") {
23
+ assert(actual.includes(expected), () => `${actual} does not include ${expected}`);
24
+ }
25
+ else {
26
+ assert(expected.test(actual), () => `${actual} does not match ${expected}`);
27
+ }
28
+ }
29
+ toMatchObject(expected) {
30
+ for (const [k, v] of Object.entries(expected)) {
31
+ // @ts-expect-error
32
+ const actual = this.actual[k];
33
+ assert(equals(actual, v, true), () => `Comparing ${k}, properties not equal: ${display(actual)}, ${display(v)}`);
34
+ }
35
+ }
36
+ toBeNull() {
37
+ assert(this.actual === null, () => `Expected null, got ${JSON.stringify(this.actual)}`);
38
+ }
39
+ toThrow(message = "") {
40
+ let didThrow = false;
41
+ let result = undefined;
42
+ try {
43
+ // @ts-expect-error
44
+ result = this.actual();
45
+ }
46
+ catch ({ message: e }) {
47
+ assert(
48
+ // @ts-expect-error
49
+ (e ?? "").match(message), () => `Expected thrown message to match ${message}, got ${e}`);
50
+ didThrow = true;
51
+ }
52
+ assert(didThrow, () => `Expected throw but got ${JSON.stringify(result)}`);
53
+ }
54
+ }
55
+ export class NotMatcher {
56
+ actual;
57
+ constructor(actual) {
58
+ this.actual = actual;
59
+ }
60
+ get not() {
61
+ return new Matcher(this.actual);
62
+ }
63
+ toBe(expected) {
64
+ assert(this.actual !== expected, () => `${this.actual} === ${expected}`);
65
+ }
66
+ toEqual(expected) {
67
+ assert(!equals(this.actual, expected), () => `Objects are equivalent: ${JSON.stringify(this.actual)}, ${JSON.stringify(expected)}`);
68
+ }
69
+ toMatch(expected) {
70
+ assert(typeof this.actual === "string", () => "Must have string for regexp match");
71
+ // @ts-expect-error
72
+ const actual = this.actual;
73
+ if (typeof expected === "string") {
74
+ assert(!actual.includes(expected), () => `${actual} includes ${expected}`);
75
+ }
76
+ else {
77
+ assert(!expected.test(actual), () => `${actual} matches ${expected}`);
78
+ }
79
+ }
80
+ toMatchObject(expected) {
81
+ for (const [k, v] of Object.entries(expected)) {
82
+ // @ts-expect-error
83
+ const actual = this.actual[k];
84
+ assert(!equals(actual, v), () => `Comparing ${k}, properties equal: ${JSON.stringify(actual)}, ${JSON.stringify(v)}`);
85
+ }
86
+ }
87
+ toBeNull() {
88
+ assert(this.actual !== null, () => `Expected not null`);
89
+ }
90
+ toThrow(message = "") {
91
+ let didThrow = false;
92
+ let result = undefined;
93
+ try {
94
+ // @ts-expect-error
95
+ result = this.actual();
96
+ }
97
+ catch ({ message: e }) {
98
+ assert(
99
+ // @ts-expect-error
100
+ (e ?? "").match(message), () => `Expected thrown message to match ${message}, got ${e}`);
101
+ didThrow = true;
102
+ }
103
+ assert(!didThrow, () => `Expected throw but got ${JSON.stringify(result)}`);
104
+ }
105
+ }
106
+ export function expect(t) {
107
+ return new Matcher(t);
108
+ }
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Given a value with numbers, attempt to fix all numbers to 1 decimal point.
3
+ */
4
+ export declare function fix<T>(n: T): T;
@@ -1,22 +1,22 @@
1
- /**
2
- * Given a value with numbers, attempt to fix all numbers to 1 decimal point.
3
- */
4
- export function fix(n) {
5
- if (typeof n === "number") {
6
- // @ts-ignore
7
- return +n.toFixed(1);
8
- }
9
- if (n !== Object(n)) {
10
- // A primitive
11
- return n;
12
- }
13
- if (n instanceof Array) {
14
- // @ts-ignore
15
- return n.map(fix);
16
- }
17
- // @ts-ignore
18
- return mapreduce(fix, n);
19
- }
20
- function mapreduce(fn, iter) {
21
- return Object.entries(iter).reduce((acc, [k, v]) => ((acc[k] = fn(v)), acc), {});
22
- }
1
+ /**
2
+ * Given a value with numbers, attempt to fix all numbers to 1 decimal point.
3
+ */
4
+ export function fix(n) {
5
+ if (typeof n === "number") {
6
+ // @ts-ignore
7
+ return +n.toFixed(1);
8
+ }
9
+ if (n !== Object(n)) {
10
+ // A primitive
11
+ return n;
12
+ }
13
+ if (n instanceof Array) {
14
+ // @ts-ignore
15
+ return n.map(fix);
16
+ }
17
+ // @ts-ignore
18
+ return mapreduce(fix, n);
19
+ }
20
+ function mapreduce(fn, iter) {
21
+ return Object.entries(iter).reduce((acc, [k, v]) => ((acc[k] = fn(v)), acc), {});
22
+ }
@@ -0,0 +1,3 @@
1
+ export { expect } from "./expect.js";
2
+ export { fix } from "./fix.js";
3
+ export { afterAll, afterEach, beforeAll, beforeEach, cleanState, describe, it, } from "./describe.js";
@@ -1,3 +1,3 @@
1
- export { expect } from "./expect.js";
2
- export { fix } from "./fix.js";
3
- export { afterAll, afterEach, beforeAll, beforeEach, cleanState, describe, it, } from "./describe.js";
1
+ export { expect } from "./expect.js";
2
+ export { fix } from "./fix.js";
3
+ export { afterAll, afterEach, beforeAll, beforeEach, cleanState, describe, it, } from "./describe.js";
@@ -0,0 +1,17 @@
1
+ export interface TestCase {
2
+ [k: string]: Function | TestCase;
3
+ [k: symbol]: Function;
4
+ }
5
+ export interface TestResult {
6
+ executed: number;
7
+ passed: number;
8
+ failed: number;
9
+ [k: string]: TestResult | TestSummary | number;
10
+ }
11
+ export declare type TestSummary = TestFailed | TestPassed;
12
+ export interface TestFailed {
13
+ error: unknown;
14
+ }
15
+ export interface TestPassed {
16
+ passed: true;
17
+ }
@@ -1 +1 @@
1
- export {};
1
+ export {};
@@ -0,0 +1 @@
1
+ export declare function cleanState<State extends {}>(init: () => State, runner: (action: () => void) => void): State;
@@ -0,0 +1,7 @@
1
+ export function cleanState(init, runner) {
2
+ const state = {};
3
+ runner(() => {
4
+ Object.assign(state, init());
5
+ });
6
+ return state;
7
+ }
@@ -0,0 +1,5 @@
1
+ import { MiddlewareFactory } from "./index.js";
2
+ /**
3
+ * Searches up the request path until the first index is found.
4
+ */
5
+ export declare const findIndex: MiddlewareFactory;
@@ -1,23 +1,23 @@
1
- import * as fs from "fs/promises";
2
- import * as path from "path";
3
- import { fileResponse } from "./response.js";
4
- /**
5
- * Searches up the request path until the first index is found.
6
- */
7
- export const findIndex = async ({ root }) => async (req) => {
8
- let filename = path.join(root, req.url ?? "");
9
- if (path.basename(filename).match(/\.[a-z]{1,3}$/)) {
10
- return undefined;
11
- }
12
- while (filename.startsWith(root)) {
13
- const index = path.join(filename, "index.html");
14
- try {
15
- const stat = await fs.stat(index);
16
- return fileResponse(index, stat);
17
- }
18
- catch (e) {
19
- filename = path.dirname(filename);
20
- }
21
- }
22
- return undefined;
23
- };
1
+ import * as fs from "fs/promises";
2
+ import * as path from "path";
3
+ import { fileResponse } from "./response.js";
4
+ /**
5
+ * Searches up the request path until the first index is found.
6
+ */
7
+ export const findIndex = async ({ root }) => async (req) => {
8
+ let filename = path.join(root, req.url ?? "");
9
+ if (path.basename(filename).match(/\.[a-z]{1,3}$/)) {
10
+ return undefined;
11
+ }
12
+ while (filename.startsWith(root)) {
13
+ const index = path.join(filename, "index.html");
14
+ try {
15
+ const stat = await fs.stat(index);
16
+ return fileResponse(index, stat);
17
+ }
18
+ catch (e) {
19
+ filename = path.dirname(filename);
20
+ }
21
+ }
22
+ return undefined;
23
+ };
@@ -0,0 +1,5 @@
1
+ import { MiddlewareFactory } from "./index.js";
2
+ /**
3
+ * Serves .css files statically. Finds .sass files and transpiles them to css.
4
+ */
5
+ export declare const cssFileServer: MiddlewareFactory;