@davidsouther/jiffies 1.0.0-beta.1 → 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.
- package/{build → lib/cjs}/assert.d.ts +0 -0
- package/lib/cjs/assert.js +40 -0
- package/{build → lib/cjs}/case.d.ts +0 -0
- package/lib/cjs/case.js +9 -0
- package/{build → lib/cjs}/components/button_bar.d.ts +1 -1
- package/lib/cjs/components/button_bar.js +29 -0
- package/{build → lib/cjs}/components/inline_edit.d.ts +1 -1
- package/lib/cjs/components/inline_edit.js +51 -0
- package/{build → lib/cjs}/components/logger.d.ts +2 -3
- package/lib/cjs/components/logger.js +27 -0
- package/lib/cjs/components/select.d.ts +10 -0
- package/lib/cjs/components/select.js +6 -0
- package/lib/cjs/components/test.d.ts +1 -0
- package/lib/cjs/components/test.js +7 -0
- package/{build → lib/cjs}/components/virtual_scroll.d.ts +3 -4
- package/lib/cjs/components/virtual_scroll.js +102 -0
- package/{build → lib/cjs}/components/virtual_scroll.test.d.ts +0 -0
- package/lib/cjs/components/virtual_scroll.test.js +22 -0
- package/{build → lib/cjs}/context.d.ts +0 -0
- package/lib/cjs/context.js +48 -0
- package/{build → lib/cjs}/context.test.d.ts +0 -0
- package/lib/cjs/context.test.js +48 -0
- package/{build → lib/cjs}/debounce.d.ts +0 -0
- package/lib/cjs/debounce.js +11 -0
- package/lib/cjs/diff.d.ts +15 -0
- package/lib/cjs/diff.js +58 -0
- package/{build/components/index.d.ts → lib/cjs/diff.test.d.ts} +0 -0
- package/lib/cjs/diff.test.js +41 -0
- package/{build → lib/cjs}/display.d.ts +0 -0
- package/lib/cjs/display.js +16 -0
- package/{build → lib/cjs}/dom/css/border.d.ts +0 -0
- package/lib/cjs/dom/css/border.js +33 -0
- package/{build → lib/cjs}/dom/css/constants.d.ts +0 -0
- package/lib/cjs/dom/css/constants.js +31 -0
- package/{build → lib/cjs}/dom/css/core.d.ts +0 -0
- package/lib/cjs/dom/css/core.js +31 -0
- package/{build → lib/cjs}/dom/css/fstyle.d.ts +0 -0
- package/lib/cjs/dom/css/fstyle.js +36 -0
- package/{build → lib/cjs}/dom/css/sizing.d.ts +0 -0
- package/lib/cjs/dom/css/sizing.js +14 -0
- package/lib/cjs/dom/dom.d.ts +27 -0
- package/lib/cjs/dom/dom.js +110 -0
- package/{build → lib/cjs}/dom/fc.d.ts +5 -5
- package/lib/cjs/dom/fc.js +39 -0
- package/{build → lib/cjs}/dom/fc.test.d.ts +0 -0
- package/lib/cjs/dom/fc.test.js +23 -0
- package/lib/cjs/dom/form/form.app.d.ts +1 -0
- package/lib/cjs/dom/form/form.app.js +27 -0
- package/lib/cjs/dom/form/form.d.ts +26 -0
- package/lib/cjs/dom/form/form.js +49 -0
- package/{build → lib/cjs}/dom/form/form.test.d.ts +0 -0
- package/{build → lib/cjs}/dom/form/form.test.js +0 -0
- package/lib/cjs/dom/html.d.ts +113 -0
- package/lib/cjs/dom/html.js +119 -0
- package/{build → lib/cjs}/dom/html.test.d.ts +0 -0
- package/lib/cjs/dom/html.test.js +60 -0
- package/lib/cjs/dom/observable.d.ts +2 -0
- package/lib/cjs/dom/observable.js +10 -0
- package/{build/components/index.js → lib/cjs/dom/observable.test.d.ts} +0 -0
- package/lib/cjs/dom/observable.test.js +35 -0
- package/lib/cjs/dom/provide.d.ts +3 -0
- package/lib/cjs/dom/provide.js +12 -0
- package/lib/cjs/dom/router/link.d.ts +6 -0
- package/lib/cjs/dom/router/link.js +7 -0
- package/{build → lib/cjs}/dom/router/router.d.ts +3 -3
- package/lib/cjs/dom/router/router.js +52 -0
- package/lib/cjs/dom/svg.d.ts +64 -0
- package/lib/cjs/dom/svg.js +69 -0
- package/lib/cjs/dom/test.d.ts +1 -0
- package/lib/cjs/dom/test.js +13 -0
- package/{build → lib/cjs}/dom/types/css.d.ts +0 -0
- package/lib/cjs/dom/types/css.js +24 -0
- package/{build → lib/cjs}/dom/types/dom.d.ts +0 -0
- package/{build → lib/cjs}/dom/types/dom.js +0 -0
- package/{build → lib/cjs}/dom/types/html.d.ts +1 -1
- package/lib/cjs/dom/types/html.js +2 -0
- package/{build → lib/cjs}/dom/xml.d.ts +0 -0
- package/lib/cjs/dom/xml.js +8 -0
- package/lib/cjs/equal.d.ts +5 -0
- package/lib/cjs/equal.js +43 -0
- package/{build → lib/cjs}/equal.test.d.ts +0 -0
- package/lib/cjs/equal.test.js +22 -0
- package/{build → lib/cjs}/flags.d.ts +0 -0
- package/lib/cjs/flags.js +52 -0
- package/{build → lib/cjs}/flags.test.d.ts +0 -0
- package/lib/cjs/flags.test.js +37 -0
- package/lib/cjs/fs.d.ts +48 -0
- package/lib/cjs/fs.js +151 -0
- package/{build/components/test.d.ts → lib/cjs/fs.test.d.ts} +0 -0
- package/lib/cjs/fs.test.js +45 -0
- package/{build → lib/cjs}/generator.d.ts +0 -0
- package/lib/cjs/generator.js +14 -0
- package/{build → lib/cjs}/generator.test.d.ts +0 -0
- package/lib/cjs/generator.test.js +26 -0
- package/{build → lib/cjs}/is_browser.d.ts +0 -0
- package/lib/cjs/is_browser.js +4 -0
- package/{build → lib/cjs}/loader.d.mts +0 -0
- package/lib/cjs/loader.mjs +40 -0
- package/{build → lib/cjs}/lock.d.ts +0 -0
- package/lib/cjs/lock.js +27 -0
- package/{build → lib/cjs}/lock.test.d.ts +0 -0
- package/lib/cjs/lock.test.js +18 -0
- package/{build → lib/cjs}/log.d.ts +0 -0
- package/lib/cjs/log.js +54 -0
- package/lib/cjs/observable/event.d.ts +35 -0
- package/lib/cjs/observable/event.js +61 -0
- package/lib/cjs/observable/observable.d.ts +132 -0
- package/lib/cjs/observable/observable.js +363 -0
- package/{build/dom/test.d.ts → lib/cjs/observable/observable.test.d.ts} +0 -0
- package/lib/cjs/observable/observable.test.js +65 -0
- package/{build → lib/cjs}/range.d.ts +0 -0
- package/lib/cjs/range.js +11 -0
- package/{build → lib/cjs}/result.d.ts +11 -11
- package/lib/cjs/result.js +80 -0
- package/{build → lib/cjs}/result.test.d.ts +0 -0
- package/lib/cjs/result.test.js +73 -0
- package/{build → lib/cjs}/safe.d.ts +0 -0
- package/lib/cjs/safe.js +14 -0
- package/{build → lib/cjs}/scope/describe.d.ts +4 -0
- package/lib/cjs/scope/describe.js +73 -0
- package/{build → lib/cjs}/scope/display/console.d.ts +0 -0
- package/lib/cjs/scope/display/console.js +25 -0
- package/{build → lib/cjs}/scope/display/dom.d.ts +2 -2
- package/lib/cjs/scope/display/dom.js +30 -0
- package/{build → lib/cjs}/scope/display/junit.d.ts +0 -0
- package/lib/cjs/scope/display/junit.js +21 -0
- package/{build → lib/cjs}/scope/execute.d.ts +1 -1
- package/lib/cjs/scope/execute.js +91 -0
- package/{build → lib/cjs}/scope/expect.d.ts +1 -1
- package/lib/cjs/scope/expect.js +114 -0
- package/{build → lib/cjs}/scope/fix.d.ts +0 -0
- package/lib/cjs/scope/fix.js +26 -0
- package/{build → lib/cjs}/scope/index.d.ts +0 -0
- package/lib/cjs/scope/index.js +15 -0
- package/{build → lib/cjs}/scope/scope.d.ts +0 -0
- package/lib/cjs/scope/scope.js +2 -0
- package/lib/cjs/scope/state.d.ts +1 -0
- package/lib/cjs/scope/state.js +11 -0
- package/{build → lib/cjs}/server/http/apps.d.ts +0 -0
- package/lib/cjs/server/http/apps.js +27 -0
- package/lib/cjs/server/http/css.d.ts +5 -0
- package/lib/cjs/server/http/css.js +54 -0
- package/{build → lib/cjs}/server/http/index.d.ts +0 -0
- package/lib/cjs/server/http/index.js +77 -0
- package/{build → lib/cjs}/server/http/response.d.ts +0 -0
- package/lib/cjs/server/http/response.js +45 -0
- package/{build → lib/cjs}/server/http/sitemap.d.ts +0 -0
- package/lib/cjs/server/http/sitemap.js +46 -0
- package/{build → lib/cjs}/server/http/static.d.ts +0 -0
- package/lib/cjs/server/http/static.js +25 -0
- package/{build → lib/cjs}/server/http/typescript.d.ts +0 -0
- package/lib/cjs/server/http/typescript.js +44 -0
- package/{build → lib/cjs}/server/main.d.ts +0 -0
- package/lib/cjs/server/main.js +14 -0
- package/{build → lib/cjs}/test.d.mts +0 -0
- package/lib/cjs/test.mjs +28 -0
- package/lib/cjs/test_all.d.ts +9 -0
- package/lib/cjs/test_all.js +30 -0
- package/{build → lib/cjs}/transpile.d.mts +0 -0
- package/lib/cjs/transpile.mjs +22 -0
- package/lib/cjs/tsconfig.tsbuildinfo +1 -0
- package/lib/esm/assert.d.ts +23 -0
- package/{build → lib/esm}/assert.js +1 -1
- package/lib/esm/case.d.ts +1 -0
- package/{build → lib/esm}/case.js +0 -0
- package/lib/esm/components/button_bar.d.ts +8 -0
- package/lib/esm/components/button_bar.js +27 -0
- package/lib/esm/components/inline_edit.d.ts +12 -0
- package/{build → lib/esm}/components/inline_edit.js +3 -3
- package/lib/esm/components/logger.d.ts +6 -0
- package/{build → lib/esm}/components/logger.js +3 -3
- package/lib/esm/components/select.d.ts +10 -0
- package/{build → lib/esm}/components/select.js +2 -2
- package/lib/esm/components/test.d.ts +1 -0
- package/lib/esm/components/test.js +3 -0
- package/lib/esm/components/virtual_scroll.d.ts +40 -0
- package/{build → lib/esm}/components/virtual_scroll.js +3 -3
- package/{build/dom/types/html.js → lib/esm/components/virtual_scroll.test.d.ts} +0 -0
- package/{build → lib/esm}/components/virtual_scroll.test.js +3 -4
- package/lib/esm/context.d.ts +15 -0
- package/{build → lib/esm}/context.js +3 -3
- package/{build/scope/scope.js → lib/esm/context.test.d.ts} +0 -0
- package/{build → lib/esm}/context.test.js +0 -0
- package/lib/esm/debounce.d.ts +1 -0
- package/{build → lib/esm}/debounce.js +0 -0
- package/lib/esm/diff.d.ts +15 -0
- package/lib/esm/diff.js +54 -0
- package/{build/test_all.d.ts → lib/esm/diff.test.d.ts} +0 -0
- package/lib/esm/diff.test.js +39 -0
- package/lib/esm/display.d.ts +5 -0
- package/lib/esm/display.js +11 -0
- package/lib/esm/dom/css/border.d.ts +11 -0
- package/{build → lib/esm}/dom/css/border.js +0 -0
- package/lib/esm/dom/css/constants.d.ts +31 -0
- package/{build → lib/esm}/dom/css/constants.js +0 -0
- package/lib/esm/dom/css/core.d.ts +5 -0
- package/{build → lib/esm}/dom/css/core.js +0 -0
- package/lib/esm/dom/css/fstyle.d.ts +5 -0
- package/{build → lib/esm}/dom/css/fstyle.js +0 -0
- package/lib/esm/dom/css/sizing.d.ts +5 -0
- package/{build → lib/esm}/dom/css/sizing.js +0 -0
- package/lib/esm/dom/dom.d.ts +27 -0
- package/{build → lib/esm}/dom/dom.js +44 -34
- package/lib/esm/dom/fc.d.ts +14 -0
- package/{build → lib/esm}/dom/fc.js +1 -1
- package/lib/esm/dom/fc.test.d.ts +1 -0
- package/{build → lib/esm}/dom/fc.test.js +0 -0
- package/lib/esm/dom/form/form.app.d.ts +1 -0
- package/{build → lib/esm}/dom/form/form.app.js +0 -0
- package/lib/esm/dom/form/form.d.ts +26 -0
- package/{build → lib/esm}/dom/form/form.js +14 -5
- package/lib/esm/dom/form/form.test.d.ts +0 -0
- package/lib/esm/dom/form/form.test.js +1 -0
- package/lib/esm/dom/html.d.ts +113 -0
- package/{build → lib/esm}/dom/html.js +0 -0
- package/lib/esm/dom/html.test.d.ts +1 -0
- package/{build → lib/esm}/dom/html.test.js +4 -4
- package/lib/esm/dom/observable.d.ts +2 -0
- package/lib/esm/dom/observable.js +6 -0
- package/lib/esm/dom/observable.test.d.ts +1 -0
- package/lib/esm/dom/observable.test.js +33 -0
- package/lib/esm/dom/provide.d.ts +3 -0
- package/lib/esm/dom/provide.js +7 -0
- package/lib/esm/dom/router/link.d.ts +6 -0
- package/{build → lib/esm}/dom/router/link.js +0 -0
- package/lib/esm/dom/router/router.d.ts +12 -0
- package/{build → lib/esm}/dom/router/router.js +0 -0
- package/lib/esm/dom/svg.d.ts +64 -0
- package/{build → lib/esm}/dom/svg.js +0 -0
- package/lib/esm/dom/test.d.ts +1 -0
- package/lib/esm/dom/test.js +9 -0
- package/lib/esm/dom/types/css.d.ts +6612 -0
- package/{build → lib/esm}/dom/types/css.js +0 -0
- package/lib/esm/dom/types/dom.d.ts +0 -0
- package/lib/esm/dom/types/dom.js +1 -0
- package/lib/esm/dom/types/html.d.ts +616 -0
- package/lib/esm/dom/types/html.js +1 -0
- package/lib/esm/dom/xml.d.ts +1 -0
- package/{build → lib/esm}/dom/xml.js +1 -2
- package/lib/esm/equal.d.ts +5 -0
- package/lib/esm/equal.js +37 -0
- package/lib/esm/equal.test.d.ts +1 -0
- package/{build → lib/esm}/equal.test.js +0 -0
- package/lib/esm/flags.d.ts +7 -0
- package/{build → lib/esm}/flags.js +1 -1
- package/lib/esm/flags.test.d.ts +1 -0
- package/{build → lib/esm}/flags.test.js +0 -0
- package/lib/esm/fs.d.ts +48 -0
- package/lib/esm/fs.js +144 -0
- package/lib/esm/fs.test.d.ts +1 -0
- package/lib/esm/fs.test.js +43 -0
- package/lib/esm/generator.d.ts +1 -0
- package/{build → lib/esm}/generator.js +0 -0
- package/lib/esm/generator.test.d.ts +1 -0
- package/{build → lib/esm}/generator.test.js +0 -0
- package/lib/esm/is_browser.d.ts +1 -0
- package/{build → lib/esm}/is_browser.js +0 -0
- package/lib/esm/loader.d.mts +22 -0
- package/{build → lib/esm}/loader.mjs +0 -0
- package/lib/esm/lock.d.ts +1 -0
- package/{build → lib/esm}/lock.js +0 -0
- package/lib/esm/lock.test.d.ts +1 -0
- package/{build → lib/esm}/lock.test.js +0 -0
- package/lib/esm/log.d.ts +26 -0
- package/{build → lib/esm}/log.js +16 -4
- package/lib/esm/observable/event.d.ts +35 -0
- package/lib/esm/observable/event.js +46 -0
- package/lib/esm/observable/observable.d.ts +132 -0
- package/lib/esm/observable/observable.js +343 -0
- package/lib/esm/observable/observable.test.d.ts +1 -0
- package/lib/esm/observable/observable.test.js +63 -0
- package/lib/esm/range.d.ts +1 -0
- package/{build → lib/esm}/range.js +0 -0
- package/lib/esm/result.d.ts +31 -0
- package/{build → lib/esm}/result.js +3 -3
- package/lib/esm/result.test.d.ts +1 -0
- package/{build → lib/esm}/result.test.js +0 -0
- package/lib/esm/safe.d.ts +1 -0
- package/{build → lib/esm}/safe.js +0 -0
- package/lib/esm/scope/describe.d.ts +18 -0
- package/{build → lib/esm}/scope/describe.js +14 -6
- package/lib/esm/scope/display/console.d.ts +2 -0
- package/{build → lib/esm}/scope/display/console.js +0 -0
- package/lib/esm/scope/display/dom.d.ts +3 -0
- package/{build → lib/esm}/scope/display/dom.js +0 -0
- package/lib/esm/scope/display/junit.d.ts +2 -0
- package/{build → lib/esm}/scope/display/junit.js +0 -0
- package/lib/esm/scope/execute.d.ts +12 -0
- package/{build → lib/esm}/scope/execute.js +3 -3
- package/lib/esm/scope/expect.d.ts +23 -0
- package/{build → lib/esm}/scope/expect.js +4 -3
- package/lib/esm/scope/fix.d.ts +4 -0
- package/{build → lib/esm}/scope/fix.js +0 -0
- package/{build/scope/index.js → lib/esm/scope/index.d.ts} +0 -0
- package/lib/esm/scope/index.js +3 -0
- package/lib/esm/scope/scope.d.ts +17 -0
- package/lib/esm/scope/scope.js +1 -0
- package/lib/esm/scope/state.d.ts +1 -0
- package/lib/esm/scope/state.js +7 -0
- package/lib/esm/server/http/apps.d.ts +5 -0
- package/{build → lib/esm}/server/http/apps.js +0 -0
- package/lib/esm/server/http/css.d.ts +5 -0
- package/lib/esm/server/http/css.js +50 -0
- package/lib/esm/server/http/index.d.ts +21 -0
- package/{build → lib/esm}/server/http/index.js +4 -2
- package/lib/esm/server/http/response.d.ts +4 -0
- package/{build → lib/esm}/server/http/response.js +6 -3
- package/lib/esm/server/http/sitemap.d.ts +2 -0
- package/{build → lib/esm}/server/http/sitemap.js +0 -0
- package/lib/esm/server/http/static.d.ts +2 -0
- package/{build → lib/esm}/server/http/static.js +0 -0
- package/lib/esm/server/http/typescript.d.ts +5 -0
- package/{build → lib/esm}/server/http/typescript.js +0 -0
- package/lib/esm/server/main.d.ts +2 -0
- package/{build → lib/esm}/server/main.js +5 -2
- package/lib/esm/test.d.mts +2 -0
- package/lib/esm/test.mjs +26 -0
- package/lib/esm/test_all.d.ts +9 -0
- package/lib/esm/test_all.js +28 -0
- package/lib/esm/transpile.d.mts +3 -0
- package/{build → lib/esm}/transpile.mjs +0 -0
- package/lib/esm/tsconfig.tsbuildinfo +1 -0
- package/package.json +18 -16
- package/src/assert.ts +1 -1
- package/src/components/button_bar.ts +33 -27
- package/src/components/inline_edit.ts +3 -3
- package/src/components/logger.ts +5 -6
- package/src/components/select.ts +3 -3
- package/src/components/test.js +3 -2
- package/src/components/virtual_scroll.test.ts +4 -4
- package/src/components/virtual_scroll.ts +8 -8
- package/src/context.ts +3 -3
- package/src/diff.test.ts +48 -0
- package/src/diff.ts +84 -0
- package/src/display.ts +8 -2
- package/src/dom/css/border.ts +3 -3
- package/src/dom/css/core.ts +1 -1
- package/src/dom/css/fstyle.ts +2 -2
- package/src/dom/css/sizing.ts +1 -1
- package/src/dom/dom.ts +73 -60
- package/src/dom/fc.test.ts +3 -3
- package/src/dom/fc.ts +11 -10
- package/src/dom/form/form.app.ts +2 -2
- package/src/dom/form/form.ts +33 -10
- package/src/dom/html.test.ts +8 -8
- package/src/dom/html.ts +7 -10
- package/src/dom/observable.test.ts +43 -0
- package/src/dom/observable.ts +11 -0
- package/src/dom/provide.ts +11 -0
- package/src/dom/router/link.ts +2 -2
- package/src/dom/router/router.ts +5 -5
- package/src/dom/svg.ts +1 -1
- package/src/dom/test.ts +8 -2
- package/src/dom/types/html.ts +1 -1
- package/src/dom/xml.ts +1 -2
- package/src/equal.ts +22 -11
- package/src/flags.ts +1 -1
- package/src/fs.test.ts +53 -0
- package/src/fs.ts +180 -0
- package/src/index.html +16 -13
- package/src/log.ts +8 -4
- package/src/observable/_notes +21 -8
- package/src/observable/event.ts +93 -0
- package/src/observable/observable.test.ts +73 -0
- package/src/observable/observable.ts +463 -0
- package/src/pico/_variables.scss +66 -0
- package/src/pico/components/_accordion.scss +112 -0
- package/src/pico/components/_button-group.scss +51 -0
- package/src/pico/components/_card.scss +47 -0
- package/src/pico/components/_dropdown.scss +203 -0
- package/src/pico/components/_modal.scss +181 -0
- package/src/pico/components/_nav.scss +79 -0
- package/src/pico/components/_progress.scss +70 -0
- package/src/pico/components/_property.scss +34 -0
- package/src/pico/content/_button.scss +152 -0
- package/src/pico/content/_code.scss +63 -0
- package/src/pico/content/_embedded.scss +0 -0
- package/src/pico/content/_form-alt.scss +276 -0
- package/src/pico/content/_form.scss +259 -0
- package/src/pico/content/_misc.scss +0 -0
- package/src/pico/content/_table.scss +28 -0
- package/src/pico/content/_toggle.scss +132 -0
- package/src/pico/content/_typography.scss +232 -0
- package/src/pico/layout/_container.scss +40 -0
- package/src/pico/layout/_document.scss +0 -0
- package/src/pico/layout/_flex.scss +46 -0
- package/src/pico/layout/_grid.scss +24 -0
- package/src/pico/layout/_scroller.scss +16 -0
- package/src/pico/layout/_section.scss +8 -0
- package/src/pico/layout/_sectioning.scss +55 -0
- package/src/pico/pico.scss +60 -0
- package/src/pico/reset/_accessibility.scss +34 -0
- package/src/pico/reset/_button.scss +17 -0
- package/src/pico/reset/_code.scss +15 -0
- package/src/pico/reset/_document.scss +48 -0
- package/src/pico/reset/_embedded.scss +39 -0
- package/src/pico/reset/_form.scss +97 -0
- package/src/pico/reset/_misc.scss +23 -0
- package/src/pico/reset/_nav.scss +5 -0
- package/src/pico/reset/_progress.scss +4 -0
- package/src/pico/reset/_table.scss +8 -0
- package/src/pico/reset/_typography.scss +25 -0
- package/src/pico/themes/default/_colors.scss +65 -0
- package/src/pico/themes/default/_dark.scss +148 -0
- package/src/pico/themes/default/_light.scss +149 -0
- package/src/pico/themes/default/_styles.scss +272 -0
- package/src/pico/themes/default.scss +34 -0
- package/src/pico/utilities/_accessibility.scss +3 -0
- package/src/pico/utilities/_loading.scss +52 -0
- package/src/pico/utilities/_reduce-motion.scss +27 -0
- package/src/pico/utilities/_tooltip.scss +101 -0
- package/src/result.ts +17 -21
- package/src/scope/describe.ts +16 -6
- package/src/scope/display/console.ts +4 -4
- package/src/scope/display/dom.ts +7 -7
- package/src/scope/display/junit.ts +3 -3
- package/src/scope/execute.ts +5 -8
- package/src/scope/expect.ts +12 -11
- package/src/scope/state.ts +10 -0
- package/src/server/http/css.ts +65 -0
- package/src/server/http/index.ts +4 -2
- package/src/server/http/response.ts +7 -4
- package/src/server/http/sitemap.ts +1 -1
- package/src/server/main.ts +9 -2
- package/src/test.mjs +22 -18
- package/src/test_all.ts +20 -9
- package/src/zip/spec.txt +3260 -0
- package/build/components/button_bar.js +0 -16
- package/build/components/select.d.ts +0 -13
- package/build/components/test.js +0 -2
- package/build/display.js +0 -3
- package/build/dom/dom.d.ts +0 -27
- package/build/dom/form/form.app.d.ts +0 -1
- package/build/dom/form/form.d.ts +0 -25
- package/build/dom/html.d.ts +0 -117
- package/build/dom/router/link.d.ts +0 -6
- package/build/dom/svg.d.ts +0 -64
- package/build/dom/test.js +0 -2
- package/build/equal.d.ts +0 -4
- package/build/equal.js +0 -22
- package/build/index.d.ts +0 -13
- package/build/index.js +0 -13
- package/build/parcel_resolver.d.ts +0 -3
- package/build/parcel_resolver.js +0 -19
- package/build/test.mjs +0 -23
- package/build/test_all.js +0 -19
- package/src/observable/observable._js +0 -175
|
File without changes
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const result_js_1 = require("./result.js");
|
|
4
|
+
const describe_js_1 = require("./scope/describe.js");
|
|
5
|
+
const expect_js_1 = require("./scope/expect.js");
|
|
6
|
+
(0, describe_js_1.describe)("Result", () => {
|
|
7
|
+
(0, describe_js_1.it)("converts Nones", () => {
|
|
8
|
+
const a = (0, result_js_1.None)();
|
|
9
|
+
(0, expect_js_1.expect)(a).toBeNull();
|
|
10
|
+
const b = (0, result_js_1.None)();
|
|
11
|
+
(0, expect_js_1.expect)(b).toBeNull();
|
|
12
|
+
const c = (0, result_js_1.Some)(a);
|
|
13
|
+
(0, expect_js_1.expect)(c).toBeNull();
|
|
14
|
+
const d = (0, result_js_1.Some)(b);
|
|
15
|
+
(0, expect_js_1.expect)(d).toBeNull();
|
|
16
|
+
});
|
|
17
|
+
(0, describe_js_1.it)("converts Somes", () => {
|
|
18
|
+
const a = (0, result_js_1.Some)("a");
|
|
19
|
+
(0, expect_js_1.expect)(a).toBe("a");
|
|
20
|
+
const b = (0, result_js_1.Some)(a);
|
|
21
|
+
(0, expect_js_1.expect)(b).toBe("a");
|
|
22
|
+
});
|
|
23
|
+
(0, describe_js_1.it)("converts Errs", () => {
|
|
24
|
+
const a = (0, result_js_1.Err)(new Error("a error"));
|
|
25
|
+
const b = (0, result_js_1.Err)(a);
|
|
26
|
+
(0, expect_js_1.expect)(b).toMatchObject({ message: "a error" });
|
|
27
|
+
// Assign Err to Result
|
|
28
|
+
const c = a;
|
|
29
|
+
});
|
|
30
|
+
(0, describe_js_1.it)("converts Oks", () => {
|
|
31
|
+
const a = (0, result_js_1.Ok)("a ok");
|
|
32
|
+
const b = (0, result_js_1.Ok)(a);
|
|
33
|
+
(0, expect_js_1.expect)(b).toBe("a ok");
|
|
34
|
+
// Assign ok to Result
|
|
35
|
+
const c = a;
|
|
36
|
+
});
|
|
37
|
+
(0, describe_js_1.it)("unwraps", () => {
|
|
38
|
+
const a = (0, result_js_1.Some)("some");
|
|
39
|
+
const b = (0, result_js_1.None)();
|
|
40
|
+
const c = (0, result_js_1.Ok)("ok");
|
|
41
|
+
const d = (0, result_js_1.Err)(new Error("err"));
|
|
42
|
+
const e = "else";
|
|
43
|
+
(0, expect_js_1.expect)((0, result_js_1.unwrap)(a)).toBe("some");
|
|
44
|
+
(0, expect_js_1.expect)((0, result_js_1.unwrap)(c)).toBe("ok");
|
|
45
|
+
(0, expect_js_1.expect)(() => (0, result_js_1.unwrap)(b)).toThrow("Attempted to unwrap None");
|
|
46
|
+
(0, expect_js_1.expect)(() => (0, result_js_1.unwrap)(d)).toThrow("err");
|
|
47
|
+
(0, expect_js_1.expect)((0, result_js_1.unwrap)(e)).toBe("else");
|
|
48
|
+
});
|
|
49
|
+
(0, describe_js_1.it)("unwrapsOrs", () => {
|
|
50
|
+
const a = (0, result_js_1.Some)("some");
|
|
51
|
+
const b = (0, result_js_1.None)();
|
|
52
|
+
const c = (0, result_js_1.Ok)("ok");
|
|
53
|
+
const d = (0, result_js_1.Err)(new Error("err"));
|
|
54
|
+
const e = "else";
|
|
55
|
+
(0, expect_js_1.expect)((0, result_js_1.unwrapOr)(a, "z")).toBe("some");
|
|
56
|
+
(0, expect_js_1.expect)((0, result_js_1.unwrapOr)(c, "z")).toBe("ok");
|
|
57
|
+
(0, expect_js_1.expect)((0, result_js_1.unwrapOr)(b, "z")).toBe("z");
|
|
58
|
+
(0, expect_js_1.expect)((0, result_js_1.unwrapOr)(d, "z")).toBe("z");
|
|
59
|
+
(0, expect_js_1.expect)((0, result_js_1.unwrapOr)(e, "z")).toBe("else");
|
|
60
|
+
});
|
|
61
|
+
(0, describe_js_1.it)("unwrapsOrElse", () => {
|
|
62
|
+
const a = (0, result_js_1.Some)("some");
|
|
63
|
+
const b = (0, result_js_1.None)();
|
|
64
|
+
const c = (0, result_js_1.Ok)("ok");
|
|
65
|
+
const d = (0, result_js_1.Err)(new Error("err"));
|
|
66
|
+
const e = "else";
|
|
67
|
+
(0, expect_js_1.expect)((0, result_js_1.unwrapOrElse)(a, () => "z")).toBe("some");
|
|
68
|
+
(0, expect_js_1.expect)((0, result_js_1.unwrapOrElse)(c, () => "z")).toBe("ok");
|
|
69
|
+
(0, expect_js_1.expect)((0, result_js_1.unwrapOrElse)(b, () => "z")).toBe("z");
|
|
70
|
+
(0, expect_js_1.expect)((0, result_js_1.unwrapOrElse)(d, () => "z")).toBe("z");
|
|
71
|
+
(0, expect_js_1.expect)((0, result_js_1.unwrapOrElse)(e, () => "z")).toBe("else");
|
|
72
|
+
});
|
|
73
|
+
});
|
|
File without changes
|
package/lib/cjs/safe.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.safe = void 0;
|
|
4
|
+
const log_js_1 = require("./log.js");
|
|
5
|
+
const safe = (fn, r) => (...args) => {
|
|
6
|
+
try {
|
|
7
|
+
return fn(...args);
|
|
8
|
+
}
|
|
9
|
+
catch (e) {
|
|
10
|
+
(0, log_js_1.error)(`${e}`);
|
|
11
|
+
return r;
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
exports.safe = safe;
|
|
@@ -5,8 +5,12 @@ export declare const afterall: unique symbol;
|
|
|
5
5
|
export declare const aftereach: unique symbol;
|
|
6
6
|
export declare function rootCases(): TestCase;
|
|
7
7
|
export declare function getTotalCases(): number;
|
|
8
|
+
export declare function getSkippedCases(): number;
|
|
8
9
|
export declare function describe(title: string, block: Function): void;
|
|
9
10
|
export declare function it(title: string, block: Function): void;
|
|
11
|
+
export declare namespace it {
|
|
12
|
+
var skip: (title: string, _block: Function) => void;
|
|
13
|
+
}
|
|
10
14
|
export declare function beforeEach(fn: () => void): void;
|
|
11
15
|
export declare function beforeAll(fn: () => void): void;
|
|
12
16
|
export declare function afterEach(fn: () => void): void;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.cleanState = exports.afterAll = exports.afterEach = exports.beforeAll = exports.beforeEach = exports.it = exports.describe = exports.getSkippedCases = exports.getTotalCases = exports.rootCases = exports.aftereach = exports.afterall = exports.beforeeach = exports.beforeall = void 0;
|
|
4
|
+
const assert_js_1 = require("../assert.js");
|
|
5
|
+
const log_js_1 = require("../log.js");
|
|
6
|
+
const state = require("./state.js");
|
|
7
|
+
exports.beforeall = Symbol("beforeAll");
|
|
8
|
+
exports.beforeeach = Symbol("beforeEach");
|
|
9
|
+
exports.afterall = Symbol("afterAll");
|
|
10
|
+
exports.aftereach = Symbol("afterEach");
|
|
11
|
+
const logger = (0, log_js_1.getLogger)("scope");
|
|
12
|
+
const CASES = {};
|
|
13
|
+
let cases = [CASES];
|
|
14
|
+
let totalCases = 0;
|
|
15
|
+
let skippedCases = 0;
|
|
16
|
+
function push(title) {
|
|
17
|
+
const next = (cases[0][title] = cases[0][title] ?? {});
|
|
18
|
+
cases.unshift(next);
|
|
19
|
+
}
|
|
20
|
+
function pop() {
|
|
21
|
+
cases.shift();
|
|
22
|
+
}
|
|
23
|
+
function rootCases() {
|
|
24
|
+
return CASES;
|
|
25
|
+
}
|
|
26
|
+
exports.rootCases = rootCases;
|
|
27
|
+
function getTotalCases() {
|
|
28
|
+
return totalCases;
|
|
29
|
+
}
|
|
30
|
+
exports.getTotalCases = getTotalCases;
|
|
31
|
+
function getSkippedCases() {
|
|
32
|
+
return skippedCases;
|
|
33
|
+
}
|
|
34
|
+
exports.getSkippedCases = getSkippedCases;
|
|
35
|
+
function describe(title, block) {
|
|
36
|
+
logger.debug(`describe(${title})`);
|
|
37
|
+
push(title);
|
|
38
|
+
block();
|
|
39
|
+
pop();
|
|
40
|
+
}
|
|
41
|
+
exports.describe = describe;
|
|
42
|
+
function it(title, block) {
|
|
43
|
+
logger.debug(`it(${title})`);
|
|
44
|
+
(0, assert_js_1.assert)(cases[0][title] == undefined, `Block already has test ${title}`);
|
|
45
|
+
totalCases += 1;
|
|
46
|
+
cases[0][title] = block;
|
|
47
|
+
}
|
|
48
|
+
exports.it = it;
|
|
49
|
+
it.skip = (title, _block) => {
|
|
50
|
+
logger.debug(`it.skip(${title})`);
|
|
51
|
+
totalCases += 1;
|
|
52
|
+
skippedCases += 1;
|
|
53
|
+
};
|
|
54
|
+
function beforeEach(fn) {
|
|
55
|
+
cases[0][exports.beforeeach] = fn;
|
|
56
|
+
}
|
|
57
|
+
exports.beforeEach = beforeEach;
|
|
58
|
+
function beforeAll(fn) {
|
|
59
|
+
cases[0][exports.beforeall] = fn;
|
|
60
|
+
}
|
|
61
|
+
exports.beforeAll = beforeAll;
|
|
62
|
+
function afterEach(fn) {
|
|
63
|
+
cases[0][exports.aftereach] = fn;
|
|
64
|
+
}
|
|
65
|
+
exports.afterEach = afterEach;
|
|
66
|
+
function afterAll(fn) {
|
|
67
|
+
cases[0][exports.afterall] = fn;
|
|
68
|
+
}
|
|
69
|
+
exports.afterAll = afterAll;
|
|
70
|
+
function cleanState(init, runner = beforeEach) {
|
|
71
|
+
return state.cleanState(init, runner);
|
|
72
|
+
}
|
|
73
|
+
exports.cleanState = cleanState;
|
|
File without changes
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.onConsole = void 0;
|
|
4
|
+
const log_js_1 = require("../../log.js");
|
|
5
|
+
const describe_js_1 = require("../describe.js");
|
|
6
|
+
const execute_js_1 = require("../execute.js");
|
|
7
|
+
const logger = (0, log_js_1.getLogger)("Scope Test Runner");
|
|
8
|
+
function onConsole(results) {
|
|
9
|
+
const { executed, failed } = results;
|
|
10
|
+
logger.info("Executed test suite.", {
|
|
11
|
+
executed,
|
|
12
|
+
total: (0, describe_js_1.getTotalCases)(),
|
|
13
|
+
failed,
|
|
14
|
+
});
|
|
15
|
+
const flat = (0, execute_js_1.flattenResults)(results);
|
|
16
|
+
for (const { test } of flat) {
|
|
17
|
+
logger.debug(test);
|
|
18
|
+
}
|
|
19
|
+
for (const { test, stack } of flat) {
|
|
20
|
+
if (stack) {
|
|
21
|
+
logger.error(test, { stack });
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.onConsole = onConsole;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { DOMElement
|
|
1
|
+
import { DOMElement } from "../../dom/dom.js";
|
|
2
2
|
import { TestResult } from "../scope.js";
|
|
3
|
-
export declare function displayStatistics(results: TestResult, root?:
|
|
3
|
+
export declare function displayStatistics(results: TestResult, root?: DOMElement): void;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.displayStatistics = void 0;
|
|
4
|
+
const logger_js_1 = require("../../components/logger.js");
|
|
5
|
+
const log_js_1 = require("../../log.js");
|
|
6
|
+
const describe_js_1 = require("../describe.js");
|
|
7
|
+
const execute_js_1 = require("../execute.js");
|
|
8
|
+
function displayStatistics(results, root = document.body) {
|
|
9
|
+
const { executed, failed } = results;
|
|
10
|
+
const logger = (() => {
|
|
11
|
+
try {
|
|
12
|
+
return (0, logger_js_1.makeHTMLLogger)(`Executed ${executed} of ${(0, describe_js_1.getTotalCases)()}; ${failed} failed.`);
|
|
13
|
+
}
|
|
14
|
+
catch (e) {
|
|
15
|
+
return log_js_1.DEFAULT_LOGGER;
|
|
16
|
+
}
|
|
17
|
+
})();
|
|
18
|
+
logger.level = log_js_1.LEVEL.DEBUG;
|
|
19
|
+
const flat = (0, execute_js_1.flattenResults)(results);
|
|
20
|
+
for (const { test, stack } of flat) {
|
|
21
|
+
if (stack) {
|
|
22
|
+
logger.info(test);
|
|
23
|
+
logger.debug(`${stack}`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
if ((0, logger_js_1.isHTMLLogger)(logger)) {
|
|
27
|
+
root.appendChild(logger.root);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.displayStatistics = displayStatistics;
|
|
File without changes
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.asXML = void 0;
|
|
4
|
+
const xml_js_1 = require("../../dom/xml.js");
|
|
5
|
+
const execute_js_1 = require("../execute.js");
|
|
6
|
+
const cases = (results) => Object.entries(results).filter(([key]) => !["executed", "passed", "failed"].includes(key));
|
|
7
|
+
function asXML(results) {
|
|
8
|
+
return (`<?xml version="1.0" encoding="UTF-8" ?>` +
|
|
9
|
+
(0, xml_js_1.xml)("testsuites", { tests: results.executed, failures: results.failed }, cases(results).map(([title, children]) => testsuite(title, children.executed, children.failed, (0, execute_js_1.flattenResults)(children)))));
|
|
10
|
+
}
|
|
11
|
+
exports.asXML = asXML;
|
|
12
|
+
function testsuite(name, tests, failures, cases) {
|
|
13
|
+
const id = name.replace("s+", "_");
|
|
14
|
+
return (0, xml_js_1.xml)("testsuite", { id, name, tests, failures }, cases.map(({ test, stack }) => testcase({ name: `${name} ${test}` }, stack ? [stack] : [])));
|
|
15
|
+
}
|
|
16
|
+
function testcase({ name, id = name.replace(/\s+/g, "_"), time = "0.00", }, failures) {
|
|
17
|
+
return (0, xml_js_1.xml)("testcase", { id, name, time }, failures.map((stack) => failure({ text: stack })));
|
|
18
|
+
}
|
|
19
|
+
function failure({ text, message = text.split("\n")[0], }) {
|
|
20
|
+
return (0, xml_js_1.xml)("failure", { message }, [`<![CDATA[${text}]]>`]);
|
|
21
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { TestResult, TestSummary } from "./scope.js";
|
|
2
|
-
export declare function execute(
|
|
2
|
+
export declare function execute(cases?: import("./scope.js").TestCase): Promise<TestResult>;
|
|
3
3
|
export declare function getError({ error }: TestResult): number | TestResult | TestSummary | "unknown error";
|
|
4
4
|
export interface FlatResult {
|
|
5
5
|
test: string;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.flattenResults = exports.getError = exports.execute = void 0;
|
|
4
|
+
const describe_js_1 = require("./describe.js");
|
|
5
|
+
async function execute(cases = (0, describe_js_1.rootCases)()) {
|
|
6
|
+
const beforeallfn = cases[describe_js_1.beforeall] ?? (() => { });
|
|
7
|
+
const beforeeachfn = cases[describe_js_1.beforeeach] ?? (() => { });
|
|
8
|
+
const afterallfn = cases[describe_js_1.afterall] ?? (() => { });
|
|
9
|
+
const aftereachfn = cases[describe_js_1.aftereach] ?? (() => { });
|
|
10
|
+
const result = { executed: 0, passed: 0, failed: 0, total: 0 };
|
|
11
|
+
try {
|
|
12
|
+
await beforeallfn();
|
|
13
|
+
}
|
|
14
|
+
catch (e) {
|
|
15
|
+
result["_beforeAll"] = { error: e };
|
|
16
|
+
return result;
|
|
17
|
+
}
|
|
18
|
+
for (const [title, block] of Object.entries(cases)) {
|
|
19
|
+
if (typeof title === "symbol") {
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
if (block instanceof Function) {
|
|
23
|
+
try {
|
|
24
|
+
result.executed += 1;
|
|
25
|
+
await beforeeachfn();
|
|
26
|
+
await block();
|
|
27
|
+
await aftereachfn();
|
|
28
|
+
result.passed += 1;
|
|
29
|
+
result[title] = { passed: true };
|
|
30
|
+
}
|
|
31
|
+
catch (e) {
|
|
32
|
+
result.failed += 1;
|
|
33
|
+
result[title] = { error: /** @type Error */ e };
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
else if (block) {
|
|
37
|
+
const run = await execute(block);
|
|
38
|
+
result.executed += run.executed;
|
|
39
|
+
result.passed += run.passed;
|
|
40
|
+
result.failed += run.failed;
|
|
41
|
+
result[title] = run;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
try {
|
|
45
|
+
await afterallfn();
|
|
46
|
+
}
|
|
47
|
+
catch (e) {
|
|
48
|
+
result["_afterAll"] = { error: e };
|
|
49
|
+
}
|
|
50
|
+
return result;
|
|
51
|
+
}
|
|
52
|
+
exports.execute = execute;
|
|
53
|
+
function getError({ error }) {
|
|
54
|
+
if (typeof error == "string") {
|
|
55
|
+
return error;
|
|
56
|
+
}
|
|
57
|
+
else if (error.message) {
|
|
58
|
+
return error.stack;
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
return "unknown error";
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.getError = getError;
|
|
65
|
+
function makeResult(test, result) {
|
|
66
|
+
if (result.error)
|
|
67
|
+
return [
|
|
68
|
+
{
|
|
69
|
+
test,
|
|
70
|
+
stack: getError(result),
|
|
71
|
+
stats: { executed: 1, failed: 1 },
|
|
72
|
+
},
|
|
73
|
+
];
|
|
74
|
+
if (result.passed === true) {
|
|
75
|
+
return [{ test, stats: { executed: 1, failed: 0 } }];
|
|
76
|
+
}
|
|
77
|
+
return flattenResults(result, test);
|
|
78
|
+
}
|
|
79
|
+
function flattenResults(results, prefix = "") {
|
|
80
|
+
const arrow = prefix == "" ? "" : " -> ";
|
|
81
|
+
let errorList = [];
|
|
82
|
+
for (const [title, result] of Object.entries(results).filter(([key]) => !["executed", "passed", "failed"].includes(key))) {
|
|
83
|
+
const test = `${prefix}${arrow}${title}`;
|
|
84
|
+
if (typeof result == "number")
|
|
85
|
+
continue;
|
|
86
|
+
const flatResult = makeResult(test, result);
|
|
87
|
+
errorList = errorList.concat(flatResult);
|
|
88
|
+
}
|
|
89
|
+
return errorList;
|
|
90
|
+
}
|
|
91
|
+
exports.flattenResults = flattenResults;
|
|
@@ -3,7 +3,7 @@ export declare class Matcher<T> {
|
|
|
3
3
|
constructor(actual: T);
|
|
4
4
|
get not(): Matcher<T>;
|
|
5
5
|
toBe(expected: T): void;
|
|
6
|
-
toEqual(expected: T): void;
|
|
6
|
+
toEqual(expected: T, partial?: boolean): void;
|
|
7
7
|
toMatch(expected: RegExp | string): void;
|
|
8
8
|
toMatchObject(expected: Partial<T>): void;
|
|
9
9
|
toBeNull(): void;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.expect = exports.NotMatcher = exports.Matcher = void 0;
|
|
4
|
+
const assert_js_1 = require("../assert.js");
|
|
5
|
+
const display_js_1 = require("../display.js");
|
|
6
|
+
const equal_js_1 = require("../equal.js");
|
|
7
|
+
class Matcher {
|
|
8
|
+
actual;
|
|
9
|
+
constructor(actual) {
|
|
10
|
+
this.actual = actual;
|
|
11
|
+
}
|
|
12
|
+
get not() {
|
|
13
|
+
return new NotMatcher(this.actual);
|
|
14
|
+
}
|
|
15
|
+
toBe(expected) {
|
|
16
|
+
(0, assert_js_1.assert)(this.actual === expected, () => `${this.actual} !== ${expected}`);
|
|
17
|
+
}
|
|
18
|
+
toEqual(expected, partial = false) {
|
|
19
|
+
(0, assert_js_1.assert)((0, equal_js_1.equals)(this.actual, expected, partial), () => `Objects are not equivalent: ${(0, display_js_1.display)(this.actual)}, ${(0, display_js_1.display)(expected)}`);
|
|
20
|
+
}
|
|
21
|
+
toMatch(expected) {
|
|
22
|
+
(0, assert_js_1.assert)(typeof this.actual === "string", () => "Must have string for regexp match");
|
|
23
|
+
// @ts-expect-error
|
|
24
|
+
const actual = this.actual;
|
|
25
|
+
if (typeof expected === "string") {
|
|
26
|
+
(0, assert_js_1.assert)(actual.includes(expected), () => `${actual} does not include ${expected}`);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
(0, assert_js_1.assert)(expected.test(actual), () => `${actual} does not match ${expected}`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
toMatchObject(expected) {
|
|
33
|
+
for (const [k, v] of Object.entries(expected)) {
|
|
34
|
+
// @ts-expect-error
|
|
35
|
+
const actual = this.actual[k];
|
|
36
|
+
(0, assert_js_1.assert)((0, equal_js_1.equals)(actual, v, true), () => `Comparing ${k}, properties not equal: ${(0, display_js_1.display)(actual)}, ${(0, display_js_1.display)(v)}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
toBeNull() {
|
|
40
|
+
(0, assert_js_1.assert)(this.actual === null, () => `Expected null, got ${JSON.stringify(this.actual)}`);
|
|
41
|
+
}
|
|
42
|
+
toThrow(message = "") {
|
|
43
|
+
let didThrow = false;
|
|
44
|
+
let result = undefined;
|
|
45
|
+
try {
|
|
46
|
+
// @ts-expect-error
|
|
47
|
+
result = this.actual();
|
|
48
|
+
}
|
|
49
|
+
catch ({ message: e }) {
|
|
50
|
+
(0, assert_js_1.assert)(
|
|
51
|
+
// @ts-expect-error
|
|
52
|
+
(e ?? "").match(message), () => `Expected thrown message to match ${message}, got ${e}`);
|
|
53
|
+
didThrow = true;
|
|
54
|
+
}
|
|
55
|
+
(0, assert_js_1.assert)(didThrow, () => `Expected throw but got ${JSON.stringify(result)}`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.Matcher = Matcher;
|
|
59
|
+
class NotMatcher {
|
|
60
|
+
actual;
|
|
61
|
+
constructor(actual) {
|
|
62
|
+
this.actual = actual;
|
|
63
|
+
}
|
|
64
|
+
get not() {
|
|
65
|
+
return new Matcher(this.actual);
|
|
66
|
+
}
|
|
67
|
+
toBe(expected) {
|
|
68
|
+
(0, assert_js_1.assert)(this.actual !== expected, () => `${this.actual} === ${expected}`);
|
|
69
|
+
}
|
|
70
|
+
toEqual(expected) {
|
|
71
|
+
(0, assert_js_1.assert)(!(0, equal_js_1.equals)(this.actual, expected), () => `Objects are equivalent: ${JSON.stringify(this.actual)}, ${JSON.stringify(expected)}`);
|
|
72
|
+
}
|
|
73
|
+
toMatch(expected) {
|
|
74
|
+
(0, assert_js_1.assert)(typeof this.actual === "string", () => "Must have string for regexp match");
|
|
75
|
+
// @ts-expect-error
|
|
76
|
+
const actual = this.actual;
|
|
77
|
+
if (typeof expected === "string") {
|
|
78
|
+
(0, assert_js_1.assert)(!actual.includes(expected), () => `${actual} includes ${expected}`);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
(0, assert_js_1.assert)(!expected.test(actual), () => `${actual} matches ${expected}`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
toMatchObject(expected) {
|
|
85
|
+
for (const [k, v] of Object.entries(expected)) {
|
|
86
|
+
// @ts-expect-error
|
|
87
|
+
const actual = this.actual[k];
|
|
88
|
+
(0, assert_js_1.assert)(!(0, equal_js_1.equals)(actual, v), () => `Comparing ${k}, properties equal: ${JSON.stringify(actual)}, ${JSON.stringify(v)}`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
toBeNull() {
|
|
92
|
+
(0, assert_js_1.assert)(this.actual !== null, () => `Expected not null`);
|
|
93
|
+
}
|
|
94
|
+
toThrow(message = "") {
|
|
95
|
+
let didThrow = false;
|
|
96
|
+
let result = undefined;
|
|
97
|
+
try {
|
|
98
|
+
// @ts-expect-error
|
|
99
|
+
result = this.actual();
|
|
100
|
+
}
|
|
101
|
+
catch ({ message: e }) {
|
|
102
|
+
(0, assert_js_1.assert)(
|
|
103
|
+
// @ts-expect-error
|
|
104
|
+
(e ?? "").match(message), () => `Expected thrown message to match ${message}, got ${e}`);
|
|
105
|
+
didThrow = true;
|
|
106
|
+
}
|
|
107
|
+
(0, assert_js_1.assert)(!didThrow, () => `Expected throw but got ${JSON.stringify(result)}`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
exports.NotMatcher = NotMatcher;
|
|
111
|
+
function expect(t) {
|
|
112
|
+
return new Matcher(t);
|
|
113
|
+
}
|
|
114
|
+
exports.expect = expect;
|
|
File without changes
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fix = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Given a value with numbers, attempt to fix all numbers to 1 decimal point.
|
|
6
|
+
*/
|
|
7
|
+
function fix(n) {
|
|
8
|
+
if (typeof n === "number") {
|
|
9
|
+
// @ts-ignore
|
|
10
|
+
return +n.toFixed(1);
|
|
11
|
+
}
|
|
12
|
+
if (n !== Object(n)) {
|
|
13
|
+
// A primitive
|
|
14
|
+
return n;
|
|
15
|
+
}
|
|
16
|
+
if (n instanceof Array) {
|
|
17
|
+
// @ts-ignore
|
|
18
|
+
return n.map(fix);
|
|
19
|
+
}
|
|
20
|
+
// @ts-ignore
|
|
21
|
+
return mapreduce(fix, n);
|
|
22
|
+
}
|
|
23
|
+
exports.fix = fix;
|
|
24
|
+
function mapreduce(fn, iter) {
|
|
25
|
+
return Object.entries(iter).reduce((acc, [k, v]) => ((acc[k] = fn(v)), acc), {});
|
|
26
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.it = exports.describe = exports.cleanState = exports.beforeEach = exports.beforeAll = exports.afterEach = exports.afterAll = exports.fix = exports.expect = void 0;
|
|
4
|
+
var expect_js_1 = require("./expect.js");
|
|
5
|
+
Object.defineProperty(exports, "expect", { enumerable: true, get: function () { return expect_js_1.expect; } });
|
|
6
|
+
var fix_js_1 = require("./fix.js");
|
|
7
|
+
Object.defineProperty(exports, "fix", { enumerable: true, get: function () { return fix_js_1.fix; } });
|
|
8
|
+
var describe_js_1 = require("./describe.js");
|
|
9
|
+
Object.defineProperty(exports, "afterAll", { enumerable: true, get: function () { return describe_js_1.afterAll; } });
|
|
10
|
+
Object.defineProperty(exports, "afterEach", { enumerable: true, get: function () { return describe_js_1.afterEach; } });
|
|
11
|
+
Object.defineProperty(exports, "beforeAll", { enumerable: true, get: function () { return describe_js_1.beforeAll; } });
|
|
12
|
+
Object.defineProperty(exports, "beforeEach", { enumerable: true, get: function () { return describe_js_1.beforeEach; } });
|
|
13
|
+
Object.defineProperty(exports, "cleanState", { enumerable: true, get: function () { return describe_js_1.cleanState; } });
|
|
14
|
+
Object.defineProperty(exports, "describe", { enumerable: true, get: function () { return describe_js_1.describe; } });
|
|
15
|
+
Object.defineProperty(exports, "it", { enumerable: true, get: function () { return describe_js_1.it; } });
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function cleanState<State extends {}>(init: () => State, runner: (action: () => void) => void): State;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.cleanState = void 0;
|
|
4
|
+
function cleanState(init, runner) {
|
|
5
|
+
const state = {};
|
|
6
|
+
runner(() => {
|
|
7
|
+
Object.assign(state, init());
|
|
8
|
+
});
|
|
9
|
+
return state;
|
|
10
|
+
}
|
|
11
|
+
exports.cleanState = cleanState;
|
|
File without changes
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.findIndex = void 0;
|
|
4
|
+
const fs = require("fs/promises");
|
|
5
|
+
const path = require("path");
|
|
6
|
+
const response_js_1 = require("./response.js");
|
|
7
|
+
/**
|
|
8
|
+
* Searches up the request path until the first index is found.
|
|
9
|
+
*/
|
|
10
|
+
const findIndex = async ({ root }) => async (req) => {
|
|
11
|
+
let filename = path.join(root, req.url ?? "");
|
|
12
|
+
if (path.basename(filename).match(/\.[a-z]{1,3}$/)) {
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
while (filename.startsWith(root)) {
|
|
16
|
+
const index = path.join(filename, "index.html");
|
|
17
|
+
try {
|
|
18
|
+
const stat = await fs.stat(index);
|
|
19
|
+
return (0, response_js_1.fileResponse)(index, stat);
|
|
20
|
+
}
|
|
21
|
+
catch (e) {
|
|
22
|
+
filename = path.dirname(filename);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return undefined;
|
|
26
|
+
};
|
|
27
|
+
exports.findIndex = findIndex;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.cssFileServer = void 0;
|
|
4
|
+
const fs = require("fs/promises");
|
|
5
|
+
const path = require("path");
|
|
6
|
+
const response_js_1 = require("./response.js");
|
|
7
|
+
// @ts-ignore
|
|
8
|
+
const sass_1 = require("sass");
|
|
9
|
+
const { compileStringAsync } = sass_1.default;
|
|
10
|
+
function render(source) {
|
|
11
|
+
// Replace `from "@scope` with `from "/@scope`, for browsers
|
|
12
|
+
// source = source
|
|
13
|
+
// .replaceAll(`from "@`, 'from "/@')
|
|
14
|
+
// .replaceAll(`import("@`, 'import("/@');
|
|
15
|
+
return (0, response_js_1.contentResponse)(source, "text/css");
|
|
16
|
+
}
|
|
17
|
+
async function compile(filename, root, vars) {
|
|
18
|
+
vars = vars.substring(1).replaceAll("=", ":");
|
|
19
|
+
filename = filename.replaceAll("\\", "/"); // Normalize for dart-sass
|
|
20
|
+
const sassString = `// Using variables: ${vars}\n${vars};\n@import "${filename}";`;
|
|
21
|
+
return (await compileStringAsync(sassString, { loadPaths: [root] })).css;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Serves .css files statically. Finds .sass files and transpiles them to css.
|
|
25
|
+
*/
|
|
26
|
+
const cssFileServer = async ({ root, scopes = {} }) => async (req) => {
|
|
27
|
+
const Url = new URL(req.url ?? "/", `http://${req.headers.host}`);
|
|
28
|
+
if (Url.pathname.endsWith(".css")) {
|
|
29
|
+
let scope = Object.entries(scopes).find(([s]) => Url.pathname.startsWith(`/${s}`));
|
|
30
|
+
// Expand url with found scope
|
|
31
|
+
Url.protocol = "file";
|
|
32
|
+
let url = scope ? Url.pathname.replace(scope[0], scope[1]) : Url.pathname;
|
|
33
|
+
let filename = path.join(root, url);
|
|
34
|
+
try {
|
|
35
|
+
const stat = await fs.stat(filename);
|
|
36
|
+
if (stat.isFile()) {
|
|
37
|
+
const css = (await fs.readFile(filename)).toString("utf-8");
|
|
38
|
+
return render(css);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
catch { }
|
|
42
|
+
filename = filename.replace(/\.css$/, ".scss");
|
|
43
|
+
try {
|
|
44
|
+
const stat = await fs.stat(filename);
|
|
45
|
+
if (stat.isFile()) {
|
|
46
|
+
const css = await compile(filename.replace(root, "."), root, Url.search);
|
|
47
|
+
return render(css);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
catch { }
|
|
51
|
+
}
|
|
52
|
+
return undefined;
|
|
53
|
+
};
|
|
54
|
+
exports.cssFileServer = cssFileServer;
|
|
File without changes
|