@davidsouther/jiffies 2.2.5 → 2.3.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 (367) hide show
  1. package/LICENSE +1 -1
  2. package/lib/cjs/assert.d.ts +2 -2
  3. package/lib/cjs/awaitable.d.ts +1 -1
  4. package/lib/cjs/components/button_bar.d.ts +2 -2
  5. package/lib/cjs/components/inline_edit.d.ts +2 -2
  6. package/lib/cjs/components/logger.d.ts +1 -1
  7. package/lib/cjs/components/select.d.ts +4 -7
  8. package/lib/cjs/components/test.d.ts +1 -1
  9. package/lib/cjs/components/virtual_scroll.d.ts +6 -4
  10. package/lib/cjs/context.d.ts +5 -9
  11. package/lib/cjs/debounce.d.ts +1 -1
  12. package/lib/cjs/diff.d.ts +2 -2
  13. package/lib/cjs/display.d.ts +1 -1
  14. package/lib/cjs/dom/css/border.d.ts +2 -2
  15. package/lib/cjs/dom/css/constants.d.ts +3 -3
  16. package/lib/cjs/dom/css/core.d.ts +1 -1
  17. package/lib/cjs/dom/css/fstyle.d.ts +2 -2
  18. package/lib/cjs/dom/css/sizing.d.ts +2 -2
  19. package/lib/cjs/dom/dom.d.ts +8 -8
  20. package/lib/cjs/dom/fc.d.ts +8 -12
  21. package/lib/cjs/dom/form/form.d.ts +5 -6
  22. package/lib/cjs/dom/html.d.ts +112 -113
  23. package/lib/cjs/dom/observable.d.ts +1 -1
  24. package/lib/cjs/dom/provide.d.ts +1 -1
  25. package/lib/cjs/dom/router/router.d.ts +2 -2
  26. package/lib/cjs/dom/svg.d.ts +64 -64
  27. package/lib/cjs/dom/types/css.d.ts +10 -32
  28. package/lib/cjs/dom/types/html.d.ts +4 -6
  29. package/lib/cjs/equal.d.ts +8 -5
  30. package/lib/cjs/flags.d.ts +1 -1
  31. package/lib/cjs/fs.d.ts +3 -3
  32. package/lib/cjs/fs_node.d.ts +1 -1
  33. package/lib/cjs/lock.d.ts +1 -1
  34. package/lib/cjs/log.d.ts +7 -9
  35. package/lib/cjs/observable/event.d.ts +2 -2
  36. package/lib/cjs/observable/observable.d.ts +37 -35
  37. package/lib/cjs/result.d.ts +21 -21
  38. package/lib/cjs/safe.d.ts +1 -1
  39. package/lib/cjs/scope/describe.d.ts +4 -4
  40. package/lib/cjs/scope/display/console.d.ts +1 -1
  41. package/lib/cjs/scope/display/dom.d.ts +2 -2
  42. package/lib/cjs/scope/display/junit.d.ts +1 -1
  43. package/lib/cjs/scope/execute.d.ts +2 -2
  44. package/lib/cjs/scope/index.d.ts +3 -3
  45. package/lib/cjs/scope/scope.d.ts +3 -3
  46. package/lib/cjs/scope/state.d.ts +1 -1
  47. package/lib/cjs/server/http/apps.d.ts +1 -1
  48. package/lib/cjs/server/http/css.d.ts +1 -1
  49. package/lib/cjs/server/http/index.d.ts +4 -9
  50. package/lib/cjs/server/http/response.d.ts +3 -3
  51. package/lib/cjs/server/http/sitemap.d.ts +1 -1
  52. package/lib/cjs/server/http/static.d.ts +1 -1
  53. package/lib/cjs/server/http/typescript.d.ts +1 -1
  54. package/lib/cjs/test_all.d.ts +9 -9
  55. package/lib/cjs/tsconfig.tsbuildinfo +1 -1
  56. package/lib/esm/assert.d.ts +2 -2
  57. package/lib/esm/awaitable.d.ts +1 -1
  58. package/lib/esm/components/button_bar.d.ts +2 -2
  59. package/lib/esm/components/inline_edit.d.ts +2 -2
  60. package/lib/esm/components/logger.d.ts +1 -1
  61. package/lib/esm/components/select.d.ts +3 -3
  62. package/lib/esm/components/test.d.ts +1 -1
  63. package/lib/esm/components/virtual_scroll.d.ts +6 -4
  64. package/lib/esm/context.d.ts +5 -9
  65. package/lib/esm/debounce.d.ts +1 -2
  66. package/lib/esm/diff.d.ts +2 -2
  67. package/lib/esm/display.d.ts +1 -1
  68. package/lib/esm/dom/css/border.d.ts +2 -2
  69. package/lib/esm/dom/css/constants.d.ts +3 -3
  70. package/lib/esm/dom/css/core.d.ts +1 -1
  71. package/lib/esm/dom/css/fstyle.d.ts +2 -2
  72. package/lib/esm/dom/css/sizing.d.ts +2 -2
  73. package/lib/esm/dom/dom.d.ts +8 -8
  74. package/lib/esm/dom/fc.d.ts +8 -12
  75. package/lib/esm/dom/form/form.d.ts +5 -6
  76. package/lib/esm/dom/html.d.ts +112 -113
  77. package/lib/esm/dom/observable.d.ts +1 -1
  78. package/lib/esm/dom/provide.d.ts +1 -1
  79. package/lib/esm/dom/router/router.d.ts +2 -2
  80. package/lib/esm/dom/svg.d.ts +64 -64
  81. package/lib/esm/dom/types/css.d.ts +10 -32
  82. package/lib/esm/dom/types/html.d.ts +4 -6
  83. package/lib/esm/equal.d.ts +8 -5
  84. package/lib/esm/flags.d.ts +1 -1
  85. package/lib/esm/fs.d.ts +3 -3
  86. package/lib/esm/fs_node.d.ts +1 -1
  87. package/lib/esm/lock.d.ts +1 -1
  88. package/lib/esm/log.d.ts +7 -9
  89. package/lib/esm/observable/event.d.ts +2 -2
  90. package/lib/esm/observable/observable.d.ts +37 -35
  91. package/lib/esm/result.d.ts +21 -21
  92. package/lib/esm/safe.d.ts +1 -1
  93. package/lib/esm/scope/describe.d.ts +4 -4
  94. package/lib/esm/scope/display/console.d.ts +1 -1
  95. package/lib/esm/scope/display/dom.d.ts +2 -2
  96. package/lib/esm/scope/display/junit.d.ts +1 -1
  97. package/lib/esm/scope/execute.d.ts +2 -2
  98. package/lib/esm/scope/index.d.ts +3 -3
  99. package/lib/esm/scope/scope.d.ts +3 -3
  100. package/lib/esm/scope/state.d.ts +1 -1
  101. package/lib/esm/server/http/apps.d.ts +1 -1
  102. package/lib/esm/server/http/css.d.ts +1 -1
  103. package/lib/esm/server/http/index.d.ts +4 -9
  104. package/lib/esm/server/http/response.d.ts +3 -3
  105. package/lib/esm/server/http/sitemap.d.ts +1 -1
  106. package/lib/esm/server/http/static.d.ts +1 -1
  107. package/lib/esm/server/http/typescript.d.ts +1 -1
  108. package/lib/esm/test_all.d.ts +9 -9
  109. package/lib/esm/tsconfig.tsbuildinfo +1 -1
  110. package/package.json +11 -9
  111. package/src/assert.ts +5 -5
  112. package/src/components/button_bar.ts +28 -30
  113. package/src/components/inline_edit.ts +8 -7
  114. package/src/components/logger.ts +6 -6
  115. package/src/components/select.ts +7 -7
  116. package/src/components/test.ts +5 -0
  117. package/src/components/virtual_scroll.test.ts +9 -6
  118. package/src/components/virtual_scroll.ts +29 -24
  119. package/src/context.test.ts +4 -4
  120. package/src/context.ts +16 -11
  121. package/src/debounce.ts +9 -3
  122. package/src/diff.test.ts +4 -4
  123. package/src/diff.ts +14 -16
  124. package/src/dom/css/border.ts +11 -11
  125. package/src/dom/css/core.ts +1 -1
  126. package/src/dom/css/fstyle.ts +4 -4
  127. package/src/dom/css/sizing.ts +1 -1
  128. package/src/dom/dom.ts +57 -47
  129. package/src/dom/fc.test.ts +8 -8
  130. package/src/dom/fc.ts +32 -35
  131. package/src/dom/form/form.app.ts +9 -9
  132. package/src/dom/form/form.ts +25 -16
  133. package/src/dom/form/index.html +3 -2
  134. package/src/dom/html.test.ts +12 -10
  135. package/src/dom/html.ts +2 -3
  136. package/src/dom/observable.test.ts +6 -6
  137. package/src/dom/observable.ts +2 -2
  138. package/src/dom/provide.ts +1 -1
  139. package/src/dom/router/link.ts +3 -3
  140. package/src/dom/router/router.ts +5 -5
  141. package/src/dom/svg.ts +7 -6
  142. package/src/dom/test.ts +3 -0
  143. package/src/dom/types/css.ts +43 -61
  144. package/src/dom/types/html.ts +2 -4
  145. package/src/dom/xml.ts +2 -2
  146. package/src/equal.test.ts +3 -3
  147. package/src/equal.ts +27 -14
  148. package/src/flags.test.ts +2 -2
  149. package/src/flags.ts +2 -2
  150. package/src/fs.test.ts +5 -5
  151. package/src/fs.ts +26 -20
  152. package/src/fs_node.ts +4 -4
  153. package/src/fs_win.test.ts +1 -1
  154. package/src/generator.test.ts +4 -3
  155. package/src/generator.ts +1 -1
  156. package/src/hooks/_notes +4 -1
  157. package/src/index.html +7 -7
  158. package/src/lock.test.ts +4 -4
  159. package/src/lock.ts +8 -7
  160. package/src/log.ts +17 -18
  161. package/src/observable/event.ts +7 -7
  162. package/src/observable/observable.test.ts +3 -3
  163. package/src/observable/observable.ts +71 -52
  164. package/src/result.test.ts +7 -10
  165. package/src/result.ts +51 -47
  166. package/src/safe.ts +1 -1
  167. package/src/scope/describe.ts +12 -11
  168. package/src/scope/display/console.ts +4 -4
  169. package/src/scope/display/dom.ts +9 -9
  170. package/src/scope/display/junit.ts +21 -24
  171. package/src/scope/execute.ts +17 -12
  172. package/src/scope/expect.ts +22 -22
  173. package/src/scope/fix.ts +10 -7
  174. package/src/scope/index.ts +3 -3
  175. package/src/scope/scope.ts +2 -2
  176. package/src/scope/state.ts +2 -2
  177. package/src/server/http/apps.ts +5 -5
  178. package/src/server/http/css.ts +10 -26
  179. package/src/server/http/index.ts +30 -24
  180. package/src/server/http/response.ts +12 -5
  181. package/src/server/http/sitemap.ts +8 -8
  182. package/src/server/http/static.ts +9 -6
  183. package/src/server/http/typescript.ts +25 -25
  184. package/src/server/main.ts +7 -4
  185. package/src/test.mjs +8 -8
  186. package/src/test_all.ts +16 -13
  187. package/src/transpile.mjs +6 -18
  188. package/build/pico.css +0 -2466
  189. package/build/pico.css.map +0 -1
  190. package/lib/cjs/assert.js +0 -46
  191. package/lib/cjs/awaitable.js +0 -2
  192. package/lib/cjs/case.js +0 -9
  193. package/lib/cjs/components/button_bar.js +0 -29
  194. package/lib/cjs/components/inline_edit.js +0 -51
  195. package/lib/cjs/components/logger.js +0 -27
  196. package/lib/cjs/components/select.js +0 -6
  197. package/lib/cjs/components/test.js +0 -7
  198. package/lib/cjs/components/virtual_scroll.js +0 -102
  199. package/lib/cjs/components/virtual_scroll.test.js +0 -22
  200. package/lib/cjs/context.js +0 -48
  201. package/lib/cjs/context.test.js +0 -48
  202. package/lib/cjs/debounce.js +0 -12
  203. package/lib/cjs/diff.js +0 -58
  204. package/lib/cjs/diff.test.js +0 -41
  205. package/lib/cjs/display.js +0 -16
  206. package/lib/cjs/dom/css/border.js +0 -33
  207. package/lib/cjs/dom/css/constants.js +0 -31
  208. package/lib/cjs/dom/css/core.js +0 -31
  209. package/lib/cjs/dom/css/fstyle.js +0 -36
  210. package/lib/cjs/dom/css/sizing.js +0 -14
  211. package/lib/cjs/dom/dom.js +0 -110
  212. package/lib/cjs/dom/fc.js +0 -39
  213. package/lib/cjs/dom/fc.test.js +0 -23
  214. package/lib/cjs/dom/form/form.app.js +0 -27
  215. package/lib/cjs/dom/form/form.js +0 -49
  216. package/lib/cjs/dom/form/form.test.js +0 -1
  217. package/lib/cjs/dom/html.js +0 -119
  218. package/lib/cjs/dom/html.test.js +0 -60
  219. package/lib/cjs/dom/observable.js +0 -10
  220. package/lib/cjs/dom/observable.test.js +0 -35
  221. package/lib/cjs/dom/provide.js +0 -12
  222. package/lib/cjs/dom/router/link.js +0 -7
  223. package/lib/cjs/dom/router/router.js +0 -55
  224. package/lib/cjs/dom/svg.js +0 -69
  225. package/lib/cjs/dom/test.js +0 -13
  226. package/lib/cjs/dom/types/css.js +0 -24
  227. package/lib/cjs/dom/types/dom.js +0 -1
  228. package/lib/cjs/dom/types/html.js +0 -2
  229. package/lib/cjs/dom/xml.js +0 -8
  230. package/lib/cjs/equal.js +0 -48
  231. package/lib/cjs/equal.test.js +0 -22
  232. package/lib/cjs/flags.js +0 -52
  233. package/lib/cjs/flags.test.js +0 -37
  234. package/lib/cjs/fs.js +0 -235
  235. package/lib/cjs/fs.test.js +0 -86
  236. package/lib/cjs/fs_node.js +0 -50
  237. package/lib/cjs/fs_win.test.js +0 -10
  238. package/lib/cjs/generator.js +0 -14
  239. package/lib/cjs/generator.test.js +0 -26
  240. package/lib/cjs/is_browser.js +0 -4
  241. package/lib/cjs/loader-register.d.mts +0 -1
  242. package/lib/cjs/loader-register.d.ts +0 -1
  243. package/lib/cjs/loader-register.js +0 -4
  244. package/lib/cjs/loader-register.mjs +0 -4
  245. package/lib/cjs/loader.d.mts +0 -23
  246. package/lib/cjs/loader.mjs +0 -41
  247. package/lib/cjs/lock.js +0 -27
  248. package/lib/cjs/lock.test.js +0 -18
  249. package/lib/cjs/log.js +0 -103
  250. package/lib/cjs/observable/event.js +0 -61
  251. package/lib/cjs/observable/observable.js +0 -363
  252. package/lib/cjs/observable/observable.test.js +0 -65
  253. package/lib/cjs/package.json +0 -1
  254. package/lib/cjs/range.js +0 -11
  255. package/lib/cjs/result.js +0 -80
  256. package/lib/cjs/result.test.js +0 -78
  257. package/lib/cjs/safe.js +0 -14
  258. package/lib/cjs/scope/describe.js +0 -73
  259. package/lib/cjs/scope/display/console.js +0 -25
  260. package/lib/cjs/scope/display/dom.js +0 -30
  261. package/lib/cjs/scope/display/junit.js +0 -21
  262. package/lib/cjs/scope/execute.js +0 -91
  263. package/lib/cjs/scope/expect.js +0 -110
  264. package/lib/cjs/scope/fix.js +0 -26
  265. package/lib/cjs/scope/index.js +0 -15
  266. package/lib/cjs/scope/scope.js +0 -2
  267. package/lib/cjs/scope/state.js +0 -12
  268. package/lib/cjs/server/http/apps.js +0 -27
  269. package/lib/cjs/server/http/css.js +0 -54
  270. package/lib/cjs/server/http/index.js +0 -77
  271. package/lib/cjs/server/http/response.js +0 -45
  272. package/lib/cjs/server/http/sitemap.js +0 -46
  273. package/lib/cjs/server/http/static.js +0 -25
  274. package/lib/cjs/server/http/typescript.js +0 -44
  275. package/lib/cjs/server/main.js +0 -14
  276. package/lib/cjs/test.mjs +0 -28
  277. package/lib/cjs/test_all.js +0 -30
  278. package/lib/cjs/transpile.mjs +0 -22
  279. package/lib/esm/assert.js +0 -38
  280. package/lib/esm/awaitable.js +0 -1
  281. package/lib/esm/case.js +0 -5
  282. package/lib/esm/components/button_bar.js +0 -27
  283. package/lib/esm/components/inline_edit.js +0 -48
  284. package/lib/esm/components/logger.js +0 -22
  285. package/lib/esm/components/select.js +0 -3
  286. package/lib/esm/components/test.js +0 -3
  287. package/lib/esm/components/virtual_scroll.js +0 -94
  288. package/lib/esm/components/virtual_scroll.test.js +0 -20
  289. package/lib/esm/context.js +0 -43
  290. package/lib/esm/context.test.js +0 -46
  291. package/lib/esm/debounce.js +0 -8
  292. package/lib/esm/diff.js +0 -54
  293. package/lib/esm/diff.test.js +0 -39
  294. package/lib/esm/display.js +0 -11
  295. package/lib/esm/dom/css/border.js +0 -27
  296. package/lib/esm/dom/css/constants.js +0 -28
  297. package/lib/esm/dom/css/core.js +0 -24
  298. package/lib/esm/dom/css/fstyle.js +0 -32
  299. package/lib/esm/dom/css/sizing.js +0 -10
  300. package/lib/esm/dom/dom.js +0 -104
  301. package/lib/esm/dom/fc.js +0 -35
  302. package/lib/esm/dom/fc.test.js +0 -21
  303. package/lib/esm/dom/form/form.app.js +0 -23
  304. package/lib/esm/dom/form/form.js +0 -34
  305. package/lib/esm/dom/form/form.test.js +0 -1
  306. package/lib/esm/dom/html.js +0 -114
  307. package/lib/esm/dom/html.test.js +0 -58
  308. package/lib/esm/dom/observable.js +0 -6
  309. package/lib/esm/dom/observable.test.js +0 -33
  310. package/lib/esm/dom/provide.js +0 -7
  311. package/lib/esm/dom/router/link.js +0 -3
  312. package/lib/esm/dom/router/router.js +0 -52
  313. package/lib/esm/dom/svg.js +0 -65
  314. package/lib/esm/dom/test.js +0 -9
  315. package/lib/esm/dom/types/css.js +0 -23
  316. package/lib/esm/dom/types/dom.js +0 -1
  317. package/lib/esm/dom/types/html.js +0 -1
  318. package/lib/esm/dom/xml.js +0 -4
  319. package/lib/esm/equal.js +0 -41
  320. package/lib/esm/equal.test.js +0 -20
  321. package/lib/esm/flags.js +0 -48
  322. package/lib/esm/flags.test.js +0 -35
  323. package/lib/esm/fs.js +0 -226
  324. package/lib/esm/fs.test.js +0 -84
  325. package/lib/esm/fs_node.js +0 -45
  326. package/lib/esm/fs_win.test.js +0 -8
  327. package/lib/esm/generator.js +0 -10
  328. package/lib/esm/generator.test.js +0 -24
  329. package/lib/esm/is_browser.js +0 -1
  330. package/lib/esm/loader-register.d.mts +0 -1
  331. package/lib/esm/loader-register.mjs +0 -2
  332. package/lib/esm/loader.d.mts +0 -23
  333. package/lib/esm/loader.mjs +0 -36
  334. package/lib/esm/lock.js +0 -23
  335. package/lib/esm/lock.test.js +0 -16
  336. package/lib/esm/log.js +0 -93
  337. package/lib/esm/observable/event.js +0 -46
  338. package/lib/esm/observable/observable.js +0 -343
  339. package/lib/esm/observable/observable.test.js +0 -63
  340. package/lib/esm/range.js +0 -7
  341. package/lib/esm/result.js +0 -65
  342. package/lib/esm/result.test.js +0 -76
  343. package/lib/esm/safe.js +0 -10
  344. package/lib/esm/scope/describe.js +0 -60
  345. package/lib/esm/scope/display/console.js +0 -21
  346. package/lib/esm/scope/display/dom.js +0 -26
  347. package/lib/esm/scope/display/junit.js +0 -17
  348. package/lib/esm/scope/execute.js +0 -85
  349. package/lib/esm/scope/expect.js +0 -104
  350. package/lib/esm/scope/fix.js +0 -22
  351. package/lib/esm/scope/index.js +0 -3
  352. package/lib/esm/scope/scope.js +0 -1
  353. package/lib/esm/scope/state.js +0 -8
  354. package/lib/esm/server/http/apps.js +0 -23
  355. package/lib/esm/server/http/css.js +0 -50
  356. package/lib/esm/server/http/index.js +0 -73
  357. package/lib/esm/server/http/response.js +0 -40
  358. package/lib/esm/server/http/sitemap.js +0 -42
  359. package/lib/esm/server/http/static.js +0 -21
  360. package/lib/esm/server/http/typescript.js +0 -40
  361. package/lib/esm/server/main.js +0 -12
  362. package/lib/esm/test.mjs +0 -26
  363. package/lib/esm/test_all.js +0 -28
  364. package/lib/esm/transpile.mjs +0 -18
  365. package/src/components/test.js +0 -3
  366. package/src/loader-register.mjs +0 -3
  367. package/src/loader.mjs +0 -46
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env node --experimental-loader ../loader.mjs
2
- "use strict";
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- const log_js_1 = require("../log.js");
5
- (0, log_js_1.info)("Starting server", { cwd: process.cwd() });
6
- const flags_js_1 = require("../flags.js");
7
- const FLAGS = (0, flags_js_1.parse)(process.argv);
8
- const index_js_1 = require("./http/index.js");
9
- const path = require("node:path");
10
- async function main() {
11
- const server = await (0, index_js_1.makeServer)({ root: path.join(process.cwd(), "src") });
12
- server.listen(FLAGS.asNumber("port", 8080), FLAGS.asString("host", "0.0.0.0"));
13
- }
14
- main();
package/lib/cjs/test.mjs DELETED
@@ -1,28 +0,0 @@
1
- #!/usr/bin/env node
2
- "use strict";
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- const flags_js_1 = require("./flags.js");
5
- const execute_js_1 = require("./scope/execute.js");
6
- const junit_js_1 = require("./scope/display/junit.js");
7
- const console_js_1 = require("./scope/display/console.js");
8
- async function main() {
9
- await Promise.resolve().then(() => require("./test_all.js"));
10
- (async function () {
11
- const results = await (0, execute_js_1.execute)();
12
- const FLAGS = (0, flags_js_1.parse)(process.argv);
13
- switch (FLAGS.asString("mode", "console")) {
14
- case "junit":
15
- const xml = (0, junit_js_1.asXML)(results);
16
- console.log(xml);
17
- break;
18
- case "console":
19
- default:
20
- (0, console_js_1.onConsole)(results);
21
- break;
22
- }
23
- if (results.failed > 0) {
24
- process.exit(1);
25
- }
26
- })();
27
- }
28
- main();
@@ -1,30 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- // This file must be .js for imports to run. Unused imports in .ts files are
4
- // discarded during transpilation.
5
- const index_js_1 = require("./scope/index.js");
6
- (0, index_js_1.describe)("Test executor", () => {
7
- (0, index_js_1.it)("matches equality", () => {
8
- (0, index_js_1.expect)(1).toBe(1);
9
- });
10
- (0, index_js_1.it)("fails on inequality", () => {
11
- (0, index_js_1.expect)(() => (0, index_js_1.expect)(1).toBe(2)).toThrow();
12
- });
13
- });
14
- require("./context.test.js");
15
- require("./diff.test.js");
16
- require("./equal.test.js");
17
- require("./flags.test.js");
18
- require("./fs.test.js");
19
- require("./generator.test.js");
20
- require("./lock.test.js");
21
- require("./result.test.js");
22
- require("./observable/observable.test.js");
23
- if (typeof process != "undefined" && process.env.CI?.toLowerCase() !== "true") {
24
- (async () => {
25
- const components = await Promise.resolve().then(() => require("./components/test.js"));
26
- const dom = await Promise.resolve().then(() => require("./dom/test.js"));
27
- await components.loadTests();
28
- await dom.loadTests();
29
- })();
30
- }
@@ -1,22 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.transpile = void 0;
4
- // @ts-ignore
5
- const typescript_1 = require("typescript");
6
- const compilerOptions = {
7
- target: typescript_1.default.ScriptTarget.ESNext,
8
- module: typescript_1.default.ModuleKind.ESNext,
9
- inlineSourceMap: true,
10
- inlineSources: true,
11
- };
12
- const tsmap = new Map();
13
- async function transpile(
14
- /** @type string */ url,
15
- /** @type {() => Promise<{toString(): string}>} */ get) {
16
- if (!tsmap.has(url)) {
17
- const source = typescript_1.default.transpile((await get()).toString(), compilerOptions, url, undefined, url);
18
- tsmap.set(url, source);
19
- }
20
- return tsmap.get(url);
21
- }
22
- exports.transpile = transpile;
package/lib/esm/assert.js DELETED
@@ -1,38 +0,0 @@
1
- export class AssertionError extends Error {
2
- constructor(message = "Assertion failed") {
3
- super(message);
4
- }
5
- }
6
- /**
7
- * Throw an error when a condition is not met.
8
- */
9
- export function assert(condition, message) {
10
- if (!condition) {
11
- throw new AssertionError(message instanceof Function ? message() : message);
12
- }
13
- }
14
- /**
15
- * Given a value, return it if it is not null nor undefined. Otherwise throw an
16
- * error.
17
- *
18
- * @template T
19
- * @returns {NonNullable<T>}
20
- */
21
- export function assertExists(t, message = "Assertion failed: value does not exist") {
22
- assert(t != null, message);
23
- return t;
24
- }
25
- /**
26
- * @param {*} n
27
- * @returns string
28
- */
29
- export function assertString(n, message = () => `Assertion failed: ${n} is not a string`) {
30
- assert(typeof n === "string", message);
31
- return n;
32
- }
33
- /**
34
- * Compile time assertion that no value will used at this point in control flow.
35
- */
36
- export function checkExhaustive(value, message = `Unexpected value ${value}`) {
37
- throw new Error(message instanceof Function ? message() : message);
38
- }
@@ -1 +0,0 @@
1
- export {};
package/lib/esm/case.js DELETED
@@ -1,5 +0,0 @@
1
- export function dashCase(identifier) {
2
- return identifier
3
- .replace(/([a-z])([A-Z])/g, (_, a, b) => `${a}-${b.toLowerCase()}`)
4
- .replace(/ ([A-Z])/g, (_, b) => `-${b.toLowerCase()}`);
5
- }
@@ -1,27 +0,0 @@
1
- import { display } from "../display.js";
2
- import { FC } from "../dom/fc.js";
3
- import { fieldset, input, label } from "../dom/html.js";
4
- let buttonBarId = 1;
5
- let nextId = () => buttonBarId++;
6
- const ButtonBar = FC("button-bar", (el, { value, values, events }) => {
7
- const name = `button-bar-${nextId()}`;
8
- return fieldset({ class: "input-group" }, ...values
9
- .map((option) => {
10
- const opt = `${option}`.replace(/\s+/g, "_").toLowerCase();
11
- const id = `${name}-${opt}`;
12
- return [
13
- label({ role: "button", htmlFor: id }, input({
14
- type: "radio",
15
- id,
16
- name,
17
- value: option,
18
- checked: option === value,
19
- events: {
20
- change: () => events.onSelect(option),
21
- },
22
- }), display(option)),
23
- ];
24
- })
25
- .flat());
26
- });
27
- export default ButtonBar;
@@ -1,48 +0,0 @@
1
- import { width } from "../dom/css/sizing.js";
2
- import { FC, State } from "../dom/fc.js";
3
- import { input, span } from "../dom/html.js";
4
- const Mode = { VIEW: 0, EDIT: 1 };
5
- export const InlineEdit = FC("inline-edit", (el, { mode = Mode.VIEW, value, events }) => {
6
- const state = (el[State] ??= { mode, value });
7
- const render = () => {
8
- switch (state.mode) {
9
- case Mode.EDIT:
10
- return edit();
11
- case Mode.VIEW:
12
- return view();
13
- default:
14
- return span();
15
- }
16
- };
17
- const view = () => span({
18
- style: { cursor: "text", ...width("full", "inline") },
19
- events: {
20
- click: () => {
21
- state.mode = Mode.EDIT;
22
- el.update(render());
23
- },
24
- },
25
- }, state.value ?? "");
26
- const edit = () => {
27
- const edit = span({ style: { display: "block", position: "relative" } }, input({
28
- style: {
29
- zIndex: "10",
30
- position: "absolute",
31
- left: "0",
32
- marginTop: "-0.375rem",
33
- },
34
- events: {
35
- blur: ({ target }) => events.change(target?.value ?? ""),
36
- },
37
- type: "text",
38
- value: state.value,
39
- }), "\u00a0" // Hack to get the span to take up space
40
- );
41
- setTimeout(() => {
42
- edit.dispatchEvent(new Event("focus"));
43
- });
44
- return edit;
45
- };
46
- return render();
47
- });
48
- export default InlineEdit;
@@ -1,22 +0,0 @@
1
- import { display } from "../display.js";
2
- import { div, span, ul, li, pre, code } from "../dom/html.js";
3
- import { LEVEL } from "../log.js";
4
- export function isHTMLLogger(logger) {
5
- return logger.root != undefined;
6
- }
7
- export function makeHTMLLogger(name) {
8
- let log;
9
- const root = div(div(span(name)), (log = ul()));
10
- const logger = { level: LEVEL.INFO, root };
11
- function append(message) {
12
- log.appendChild(li(pre(code(message))));
13
- }
14
- const logAt = (level) => (message) => level >= (logger.level ?? LEVEL.ERROR)
15
- ? append(display(message))
16
- : undefined;
17
- logger.debug = logAt(LEVEL.VERBOSE);
18
- logger.info = logAt(LEVEL.INFO);
19
- logger.warn = logAt(LEVEL.WARN);
20
- logger.error = logAt(LEVEL.ERROR);
21
- return logger;
22
- }
@@ -1,3 +0,0 @@
1
- import { FC } from "../dom/fc.js";
2
- import { option, select } from "../dom/html.js";
3
- export const Select = FC("jiffies-select", (el, { name, events: { change }, disabled, value, options }) => select({ name, events: { change }, disabled }, ...options.map(([v, name]) => option({ value: v, selected: value === v }, `${name}`))));
@@ -1,3 +0,0 @@
1
- export async function loadTests() {
2
- // await import("./virtual_scroll.test.js");
3
- }
@@ -1,94 +0,0 @@
1
- import { debounce } from "../debounce.js";
2
- import { FC, State } from "../dom/fc.js";
3
- import { div } from "../dom/html.js";
4
- export function arrayAdapter(data) {
5
- return (offset, limit) => data.slice(offset, offset + limit);
6
- }
7
- export function fillVirtualScrollSettings(settings) {
8
- const { minIndex = 0, maxIndex = Number.MAX_SAFE_INTEGER, startIndex = 0, itemHeight = 20, count = maxIndex - minIndex + 1, tolerance = count, } = settings;
9
- return { minIndex, maxIndex, startIndex, itemHeight, count, tolerance };
10
- }
11
- export function initialState(settings) {
12
- // From Denis Hilt, https://blog.logrocket.com/virtual-scrolling-core-principles-and-basic-implementation-in-react/
13
- const { minIndex, maxIndex, startIndex, itemHeight, count, tolerance } = settings;
14
- const bufferedItems = count + 2 * tolerance;
15
- const itemsAbove = Math.max(0, startIndex - tolerance - minIndex);
16
- const viewportHeight = count * itemHeight;
17
- const totalHeight = (maxIndex - minIndex + 1) * itemHeight;
18
- const toleranceHeight = tolerance * itemHeight;
19
- const bufferHeight = viewportHeight + 2 * toleranceHeight;
20
- const topPaddingHeight = itemsAbove * itemHeight;
21
- const bottomPaddingHeight = totalHeight - (topPaddingHeight + bufferHeight);
22
- return {
23
- scrollTop: 0,
24
- settings,
25
- viewportHeight,
26
- totalHeight,
27
- toleranceHeight,
28
- bufferedItems,
29
- topPaddingHeight,
30
- bottomPaddingHeight,
31
- data: [],
32
- rows: [],
33
- };
34
- }
35
- export function getData(minIndex, maxIndex, offset, limit, get) {
36
- const start = Math.max(0, minIndex, offset);
37
- const end = Math.min(maxIndex, offset + limit - 1);
38
- const data = get(start, end - start);
39
- return [...data];
40
- }
41
- export function doScroll(scrollTop, state, get) {
42
- const { totalHeight, toleranceHeight, bufferedItems, settings: { itemHeight, minIndex, maxIndex }, } = state;
43
- const index = minIndex + Math.floor((scrollTop - toleranceHeight) / itemHeight);
44
- const data = getData(minIndex, maxIndex, index, bufferedItems, get);
45
- const topPaddingHeight = Math.max((index - minIndex) * itemHeight, 0);
46
- const bottomPaddingHeight = Math.max(totalHeight - (topPaddingHeight + data.length * itemHeight), 0);
47
- return { scrollTop, topPaddingHeight, bottomPaddingHeight, data };
48
- }
49
- // export interface VirtualScroll<T, U extends HTMLElement> {
50
- // state: VirtualScrollState<T>;
51
- // rows: UHTMLElement<U>[];
52
- // }
53
- export const VirtualScroll = FC("virtual-scroll", (element, props) => {
54
- const settings = fillVirtualScrollSettings(props.settings);
55
- const state = (element[State] = {
56
- ...initialState(settings),
57
- ...element[State],
58
- });
59
- const scrollTo = ({ target } = { target: state }) => {
60
- const scrollTop = target?.scrollTop ?? state.topPaddingHeight;
61
- const updatedSate = {
62
- ...state,
63
- ...doScroll(scrollTop, state, props.get),
64
- };
65
- setState(updatedSate);
66
- };
67
- const viewportElement = div({
68
- style: { height: `${state.viewportHeight}px`, overflowY: "scroll" },
69
- events: { scroll: debounce(scrollTo, 0) },
70
- });
71
- setTimeout(() => {
72
- viewportElement.scroll({ top: state.scrollTop });
73
- });
74
- const setState = (newState) => {
75
- state.scrollTop = newState.scrollTop;
76
- state.topPaddingHeight = newState.topPaddingHeight;
77
- state.bottomPaddingHeight = newState.bottomPaddingHeight;
78
- state.data = newState.data;
79
- state.rows = state.data.map(props.row);
80
- viewportElement.update(div({
81
- class: "VirtualScroll__topPadding",
82
- style: { height: `${state.topPaddingHeight}px` },
83
- }), ...(state.rows ?? []).map((row, i) => div({
84
- class: `VirtualScroll__item_${i}`,
85
- style: { height: `${settings.itemHeight}px` },
86
- }, row)), div({
87
- class: "VirtualScroll__bottomPadding",
88
- style: { height: `${state.bottomPaddingHeight}px` },
89
- }));
90
- };
91
- scrollTo();
92
- return viewportElement;
93
- });
94
- export default VirtualScroll;
@@ -1,20 +0,0 @@
1
- import { State } from "../dom/fc.js";
2
- import { div } from "../dom/html.js";
3
- import { describe, it, expect } from "../scope/index.js";
4
- import VirtualScroll, { arrayAdapter, } from "./virtual_scroll.js";
5
- describe("VirtualScroll", () => {
6
- it("tracks scroll position", () => {
7
- const data = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
8
- const props = {
9
- settings: { count: 3, startIndex: 2 },
10
- get: arrayAdapter(data),
11
- row: (i) => div(`${i}`),
12
- };
13
- const scroll = VirtualScroll(props);
14
- expect(scroll[State]?.bufferedItems).toBe(9);
15
- expect(scroll[State]?.data).toEqual([0, 1, 2, 3, 4]);
16
- //expect(scroll.state.topPaddingHeight).toBe(0);
17
- expect(scroll[State]?.viewportHeight).toBe(60);
18
- //expect(scroll.state.totalHeight).toBe(200);
19
- });
20
- });
@@ -1,43 +0,0 @@
1
- import { Ok, Err, isResult } from "./result.js";
2
- export const Enter = Symbol("Context Enter");
3
- export const Exit = Symbol("Context Exit");
4
- export function using(context, operation, normalizeError = (e) => Err(e)) {
5
- if (typeof context === "function") {
6
- if (context.length === 1) {
7
- operation = context;
8
- context = {};
9
- }
10
- else {
11
- context = context();
12
- }
13
- }
14
- let result;
15
- try {
16
- context[Enter]();
17
- const op = operation(context);
18
- result = isResult(op) ? op : Ok(op);
19
- }
20
- catch (e) {
21
- result = normalizeError(e);
22
- }
23
- finally {
24
- context[Exit]();
25
- }
26
- return result;
27
- }
28
- export async function asyncUsing(context, operation, normalizeError = (e) => Err(e)) {
29
- context = typeof context === "function" ? await context() : context;
30
- let result;
31
- try {
32
- context[Enter]();
33
- const op = await operation(context);
34
- result = isResult(op) ? op : Ok(op);
35
- }
36
- catch (e) {
37
- result = normalizeError(e);
38
- }
39
- finally {
40
- context[Exit]();
41
- }
42
- return result;
43
- }
@@ -1,46 +0,0 @@
1
- import { Enter, Exit, using } from "./context.js";
2
- import { Err, isErr, isOk, Ok, unwrap } from "./result.js";
3
- import { describe, it } from "./scope/describe.js";
4
- import { expect } from "./scope/expect.js";
5
- describe("Context", () => {
6
- it("performs an operation using a context", () => {
7
- const context = TestContext();
8
- const result = using(context, () => Ok(5));
9
- expect(unwrap(result)).toBe(5);
10
- expect(context.initialized).toBe(true);
11
- expect(context.completed).toBe(true);
12
- });
13
- it("reports the result of a thrown error", () => {
14
- const context = TestContext();
15
- const result = using(context, () => {
16
- throw new Error("Failed");
17
- });
18
- expect(isErr(result)).toBe(true);
19
- expect(Err(result)).toMatchObject({
20
- message: "Failed",
21
- });
22
- });
23
- it("passes the context to the operation", () => {
24
- const op = using(TestContext, ({ initialized, completed }) => ({
25
- initialized,
26
- completed,
27
- }));
28
- expect(isOk(op)).toBe(true);
29
- const { completed, initialized } = unwrap(op);
30
- expect(initialized).toBe(true);
31
- expect(completed).toBe(false);
32
- });
33
- });
34
- function TestContext() {
35
- const context = {
36
- [Enter]: () => {
37
- context.initialized = true;
38
- },
39
- [Exit]: () => {
40
- context.completed = true;
41
- },
42
- initialized: false,
43
- completed: false,
44
- };
45
- return context;
46
- }
@@ -1,8 +0,0 @@
1
- export function debounce(fn, ms = 32) {
2
- let timer;
3
- return (...args) => {
4
- clearTimeout(timer);
5
- timer = setTimeout(() => (clearTimeout(timer), fn(...args)), ms);
6
- return timer;
7
- };
8
- }
package/lib/esm/diff.js DELETED
@@ -1,54 +0,0 @@
1
- import { range } from "./range.js";
2
- import { isSome, None, Some } from "./result.js";
3
- export const DiffA = Symbol("A");
4
- export const DiffB = Symbol("B");
5
- function doDiff(va, vb, k) {
6
- if (Array.isArray(va)) {
7
- // @ts-ignore
8
- return diffArray(va, vb, k);
9
- }
10
- if (typeof va === "object") {
11
- const d = diffObject(va, vb, k);
12
- if (d.children.length === 0) {
13
- return None();
14
- }
15
- else {
16
- return Some(d);
17
- }
18
- }
19
- if (Object.is(va, vb)) {
20
- return None();
21
- }
22
- else {
23
- // @ts-ignore
24
- return { key: k, left: va, right: vb };
25
- }
26
- }
27
- function diffArray(a, b, key) {
28
- const indexes = Math.max(a.length, b.length);
29
- const children = range(0, indexes)
30
- .map((i) => doDiff(a[i], b[i], i))
31
- .filter(isSome);
32
- return children.length > 0 ? { key, children } : None();
33
- }
34
- function diffObject(a, b, key = "") {
35
- const keys = new Set([...Object.keys(a), ...Object.keys(b)]);
36
- const children = [...keys]
37
- // @ts-ignore
38
- .map((k) => doDiff(a[k], b[k], k))
39
- .filter(isSome);
40
- return {
41
- key,
42
- children,
43
- };
44
- }
45
- export function diff(a, b) {
46
- if (typeof a != "object" && !Object.is(a, b)) {
47
- // @ts-ignore
48
- return [{ key: "", left: a, right: b }];
49
- }
50
- return (Array.isArray(a)
51
- ? // @ts-ignore
52
- diffArray(a, b, "") ?? { children: [] }
53
- : diffObject(a, b, "")).children;
54
- }
@@ -1,39 +0,0 @@
1
- import { diff } from "./diff.js";
2
- import { describe, it } from "./scope/describe.js";
3
- import { expect } from "./scope/expect.js";
4
- describe("diff", () => {
5
- it("diffs primitives", () => {
6
- const diffed = diff(1, 2);
7
- expect(diffed).toEqual([{ key: "", left: 1, right: 2 }]);
8
- });
9
- it("diffs objects", () => {
10
- const diffed = diff({ a: 1, b: 2 }, { a: 2, b: 2 });
11
- expect(diffed).toEqual([{ key: "a", left: 1, right: 2 }]);
12
- });
13
- it("diffs nested objects", () => {
14
- const diffed = diff({ a: { c: 1 }, b: 2 }, { a: { c: 2 }, b: 2 });
15
- expect(diffed).toEqual([
16
- { key: "a", children: [{ key: "c", left: 1, right: 2 }] },
17
- ]);
18
- });
19
- it("diffs missing sides", () => {
20
- const diffed = diff({ a: 1 }, { b: 2 });
21
- expect(diffed).toEqual([
22
- { key: "a", left: 1, right: undefined },
23
- { key: "b", left: undefined, right: 2 },
24
- ]);
25
- });
26
- it("diffs arrays", () => {
27
- const diffed = diff([1, 2, 3], [1, 4, 3]);
28
- expect(diffed).toEqual([{ key: 1, left: 2, right: 4 }]);
29
- });
30
- it("diffs objects in an array", () => {
31
- const diffed = diff([{ a: { b: 1 } }, { a: { b: 2 } }, { a: { b: 3 } }], [{ a: { b: 1 } }, { a: { b: 4 } }, { a: { b: 3 } }]);
32
- expect(diffed).toEqual([
33
- {
34
- key: 1,
35
- children: [{ key: "a", children: [{ key: "b", left: 2, right: 4 }] }],
36
- },
37
- ]);
38
- });
39
- });
@@ -1,11 +0,0 @@
1
- export const isDisplay = (a) => typeof a?.toString === "function" ||
2
- typeof a === "string";
3
- export const display = (a) => {
4
- if (isDisplay(a)) {
5
- const str = a.toString();
6
- if (str === "[object Object]")
7
- return JSON.stringify(a);
8
- return str;
9
- }
10
- return JSON.stringify(a);
11
- };
@@ -1,27 +0,0 @@
1
- import { isSide, getSize, getSide } from "./core.js";
2
- export function rounded(size = "", side = "") {
3
- if (isSide(size)) {
4
- side = size;
5
- size = "";
6
- }
7
- const sized = getSize(size);
8
- return getSide(side).reduce((prev, curr) => {
9
- if (curr === "") {
10
- prev.borderRadius = sized;
11
- }
12
- else {
13
- // @ts-ignore
14
- prev[`border${curr}Radius`] = sized;
15
- }
16
- return prev;
17
- }, {});
18
- }
19
- export function border({ side = "", style = "solid", radius = "", width = 1, color = "black", }) {
20
- return {};
21
- }
22
- export function inset(width, color1 = "gray", color2 = "lightgray") {
23
- return {
24
- ...border({ side: "tl", width, color: color1, radius: "none" }),
25
- ...border({ side: "br", width, color: color2, radius: "none" }),
26
- };
27
- }
@@ -1,28 +0,0 @@
1
- export const Sizes = {
2
- none: "0px",
3
- sm: "0.125rem",
4
- "": "0.25rem",
5
- md: "0.375rem",
6
- lg: "0.5rem",
7
- xl: "0.75rem",
8
- "2xl": "1rem",
9
- "3xl": "1.5rem",
10
- full: "9999px",
11
- };
12
- export const Sides = {
13
- "": "",
14
- t: "Top",
15
- r: "Right",
16
- l: "Left",
17
- b: "Bottom",
18
- tl: "TopLeft",
19
- tr: "TopRight",
20
- bl: "BottomLeft",
21
- br: "BottomRight",
22
- };
23
- export const Widths = {
24
- "1/4": "25%",
25
- "1/2": "50%",
26
- "3/4": "75%",
27
- full: "100%",
28
- };
@@ -1,24 +0,0 @@
1
- import { Sides, Sizes } from "./constants.js";
2
- export function isSide(v) {
3
- return Sides[v] !== undefined;
4
- }
5
- export function isSize(v) {
6
- return Sizes[v] !== undefined;
7
- }
8
- export function getSize(size) {
9
- return Sizes[size];
10
- }
11
- export function getSide(side) {
12
- switch (side) {
13
- case "t":
14
- return [...getSide("tl"), ...getSide("tr")];
15
- case "r":
16
- return [...getSide("tr"), ...getSide("br")];
17
- case "b":
18
- return [...getSide("br"), ...getSide("bl")];
19
- case "l":
20
- return [...getSide("tl"), ...getSide("bl")];
21
- default:
22
- return [Sides[side]];
23
- }
24
- }