@splendidlabz/utils 1.6.0 → 1.8.1
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/CHANGELOG.md +19 -0
- package/dist/cjs/dom/accessibility.cjs +53 -0
- package/dist/cjs/dom/actions/index.cjs +407 -0
- package/dist/cjs/dom/actions/masonry.cjs +149 -0
- package/dist/cjs/dom/actions/prefer-horizontal-scroll.cjs +157 -0
- package/dist/cjs/dom/actions/sticky.cjs +211 -0
- package/dist/cjs/dom/bounding-box.cjs +70 -0
- package/dist/cjs/dom/clipboard.cjs +37 -0
- package/dist/cjs/dom/cookie.cjs +57 -0
- package/dist/cjs/dom/css-vars.cjs +57 -0
- package/dist/cjs/dom/events.cjs +95 -0
- package/dist/cjs/dom/focusable.cjs +143 -0
- package/dist/cjs/dom/font-size.cjs +74 -0
- package/dist/cjs/dom/get-element.cjs +98 -0
- package/dist/cjs/dom/hash.cjs +35 -0
- package/dist/cjs/dom/index.cjs +1197 -0
- package/dist/cjs/dom/keyboard.cjs +51 -0
- package/dist/cjs/dom/local-store.cjs +79 -0
- package/dist/cjs/dom/media.cjs +59 -0
- package/dist/cjs/dom/observers/index.cjs +156 -0
- package/dist/cjs/dom/observers/intersection-observer.cjs +91 -0
- package/dist/cjs/dom/observers/mutation-observer.cjs +95 -0
- package/dist/cjs/dom/observers/observer.cjs +48 -0
- package/dist/cjs/dom/observers/resize-observer.cjs +82 -0
- package/dist/cjs/dom/pkce.cjs +53 -0
- package/dist/cjs/dom/query-params.cjs +38 -0
- package/dist/cjs/dom/random-string.cjs +38 -0
- package/dist/cjs/dom/sanitize.cjs +65 -0
- package/dist/cjs/dom/session-store.cjs +49 -0
- package/dist/cjs/dom/spam-prevention.cjs +50 -0
- package/dist/cjs/dom/trap-focus.cjs +197 -0
- package/dist/cjs/dom/ui/aria-current.cjs +43 -0
- package/dist/cjs/dom/ui/inconsistent-button-fix.cjs +35 -0
- package/dist/cjs/dom/ui/index.cjs +105 -0
- package/dist/cjs/dom/ui/scroll-container.cjs +47 -0
- package/dist/cjs/dom/ui/traverse-and-scramble.cjs +50 -0
- package/dist/cjs/lib/arrays/index.cjs +139 -0
- package/dist/cjs/lib/arrays/item-position.cjs +42 -0
- package/dist/cjs/lib/arrays/join.cjs +43 -0
- package/dist/cjs/lib/arrays/shuffle.cjs +42 -0
- package/dist/cjs/lib/arrays/sort.cjs +67 -0
- package/dist/cjs/lib/arrays/split-array.cjs +41 -0
- package/dist/cjs/lib/arrays/unique.cjs +31 -0
- package/dist/cjs/lib/auth/index.cjs +53 -0
- package/dist/cjs/lib/auth/route-manager.cjs +51 -0
- package/dist/cjs/lib/checks.cjs +58 -0
- package/dist/cjs/lib/date/days.cjs +37 -0
- package/dist/cjs/lib/date/index.cjs +208 -0
- package/dist/cjs/lib/date/months.cjs +102 -0
- package/dist/cjs/lib/date/time.cjs +117 -0
- package/dist/cjs/lib/form/form-data.cjs +83 -0
- package/dist/cjs/lib/form/index.cjs +122 -0
- package/dist/cjs/lib/form/sanitize.cjs +61 -0
- package/dist/cjs/lib/functions/debounce.cjs +43 -0
- package/dist/cjs/lib/functions/env.cjs +32 -0
- package/dist/cjs/lib/functions/functional.cjs +62 -0
- package/dist/cjs/lib/functions/index.cjs +122 -0
- package/dist/cjs/lib/functions/throttle.cjs +38 -0
- package/dist/cjs/lib/functions/timeout.cjs +41 -0
- package/dist/cjs/lib/hash.cjs +43 -0
- package/dist/cjs/lib/index.cjs +1146 -0
- package/dist/cjs/lib/numbers/index.cjs +49 -0
- package/dist/cjs/lib/numbers/math.cjs +36 -0
- package/dist/cjs/lib/objects/camelcase-keys.cjs +80 -0
- package/dist/cjs/lib/objects/empty.cjs +39 -0
- package/dist/cjs/lib/objects/equal.cjs +47 -0
- package/dist/cjs/lib/objects/extend.cjs +147 -0
- package/dist/cjs/lib/objects/flatten.cjs +48 -0
- package/dist/cjs/lib/objects/index.cjs +378 -0
- package/dist/cjs/lib/objects/json.cjs +35 -0
- package/dist/cjs/lib/objects/loop.cjs +40 -0
- package/dist/cjs/lib/objects/mix/mix.cjs +115 -0
- package/dist/cjs/lib/objects/nested-property.cjs +45 -0
- package/dist/cjs/lib/objects/normalize-object.cjs +106 -0
- package/dist/cjs/lib/objects/omit-empty.cjs +40 -0
- package/dist/cjs/lib/objects/size.cjs +63 -0
- package/dist/cjs/lib/objects/split.cjs +39 -0
- package/dist/cjs/lib/promises/index.cjs +69 -0
- package/dist/cjs/lib/promises/reject.cjs +67 -0
- package/dist/cjs/lib/sse.cjs +99 -0
- package/dist/cjs/lib/strings/convert-case/convert-case.cjs +96 -0
- package/dist/cjs/lib/strings/index.cjs +190 -0
- package/dist/cjs/lib/strings/markdown.cjs +59 -0
- package/dist/cjs/lib/strings/name.cjs +46 -0
- package/dist/cjs/lib/strings/pluralize.cjs +40 -0
- package/dist/cjs/lib/strings/query-string.cjs +43 -0
- package/dist/cjs/lib/style/index.cjs +64 -0
- package/dist/cjs/lib/symbols/index.cjs +40 -0
- package/dist/cjs/lib/symbols/symbols.cjs +38 -0
- package/dist/cjs/node/common.cjs +42 -0
- package/dist/cjs/node/dirname.cjs +49 -0
- package/dist/cjs/node/file-cache.cjs +196 -0
- package/dist/cjs/node/file.cjs +50 -0
- package/dist/cjs/node/hash.cjs +42 -0
- package/dist/cjs/node/index.cjs +290 -0
- package/dist/cjs/node/pkce.cjs +62 -0
- package/dist/cjs/node/random-string.cjs +43 -0
- package/dist/cjs/node/sanitize.cjs +65 -0
- package/dist/esm/dom/accessibility.js +27 -0
- package/dist/esm/dom/actions/index.js +379 -0
- package/dist/esm/dom/actions/masonry.js +123 -0
- package/dist/esm/dom/actions/prefer-horizontal-scroll.js +131 -0
- package/dist/esm/dom/actions/sticky.js +185 -0
- package/dist/esm/dom/bounding-box.js +45 -0
- package/dist/esm/dom/clipboard.js +13 -0
- package/dist/esm/dom/cookie.js +32 -0
- package/dist/esm/dom/css-vars.js +28 -0
- package/dist/esm/dom/events.js +67 -0
- package/dist/esm/dom/focusable.js +118 -0
- package/dist/esm/dom/font-size.js +44 -0
- package/dist/esm/dom/get-element.js +67 -0
- package/dist/esm/dom/hash.js +11 -0
- package/dist/esm/dom/index.js +1100 -0
- package/dist/esm/dom/keyboard.js +23 -0
- package/dist/esm/dom/local-store.js +55 -0
- package/dist/esm/dom/media.js +33 -0
- package/dist/esm/dom/observers/index.js +128 -0
- package/dist/esm/dom/observers/intersection-observer.js +65 -0
- package/dist/esm/dom/observers/mutation-observer.js +69 -0
- package/dist/esm/dom/observers/observer.js +22 -0
- package/dist/esm/dom/observers/resize-observer.js +56 -0
- package/dist/esm/dom/pkce.js +27 -0
- package/dist/esm/dom/query-params.js +14 -0
- package/dist/esm/dom/random-string.js +13 -0
- package/dist/esm/dom/sanitize.js +31 -0
- package/dist/esm/dom/session-store.js +25 -0
- package/dist/esm/dom/spam-prevention.js +26 -0
- package/dist/esm/dom/trap-focus.js +170 -0
- package/dist/esm/dom/ui/aria-current.js +18 -0
- package/dist/esm/dom/ui/inconsistent-button-fix.js +11 -0
- package/dist/esm/dom/ui/index.js +75 -0
- package/dist/esm/dom/ui/scroll-container.js +23 -0
- package/dist/esm/dom/ui/traverse-and-scramble.js +26 -0
- package/dist/esm/lib/arrays/index.js +106 -0
- package/dist/esm/lib/arrays/item-position.js +16 -0
- package/dist/esm/lib/arrays/join.js +17 -0
- package/dist/esm/lib/arrays/shuffle.js +18 -0
- package/dist/esm/lib/arrays/sort.js +41 -0
- package/dist/esm/lib/arrays/split-array.js +17 -0
- package/dist/esm/lib/arrays/unique.js +7 -0
- package/dist/esm/lib/auth/index.js +26 -0
- package/dist/esm/lib/auth/route-manager.js +26 -0
- package/dist/esm/lib/checks.js +31 -0
- package/dist/esm/lib/date/days.js +13 -0
- package/dist/esm/lib/date/index.js +173 -0
- package/dist/esm/lib/date/months.js +78 -0
- package/dist/esm/lib/date/time.js +84 -0
- package/dist/esm/lib/form/form-data.js +58 -0
- package/dist/esm/lib/form/index.js +92 -0
- package/dist/esm/lib/form/sanitize.js +35 -0
- package/dist/esm/lib/functions/debounce.js +19 -0
- package/dist/esm/lib/functions/env.js +8 -0
- package/dist/esm/lib/functions/functional.js +35 -0
- package/dist/esm/lib/functions/index.js +87 -0
- package/dist/esm/lib/functions/throttle.js +14 -0
- package/dist/esm/lib/functions/timeout.js +15 -0
- package/dist/esm/lib/hash.js +19 -0
- package/dist/esm/lib/index.js +1027 -0
- package/dist/esm/lib/numbers/index.js +21 -0
- package/dist/esm/lib/numbers/math.js +11 -0
- package/dist/esm/lib/objects/camelcase-keys.js +54 -0
- package/dist/esm/lib/objects/empty.js +14 -0
- package/dist/esm/lib/objects/equal.js +12 -0
- package/dist/esm/lib/objects/extend.js +121 -0
- package/dist/esm/lib/objects/flatten.js +22 -0
- package/dist/esm/lib/objects/index.js +323 -0
- package/dist/esm/lib/objects/json.js +11 -0
- package/dist/esm/lib/objects/loop.js +15 -0
- package/dist/esm/lib/objects/mix/mix.js +89 -0
- package/dist/esm/lib/objects/nested-property.js +19 -0
- package/dist/esm/lib/objects/normalize-object.js +80 -0
- package/dist/esm/lib/objects/omit-empty.js +16 -0
- package/dist/esm/lib/objects/size.js +39 -0
- package/dist/esm/lib/objects/split.js +15 -0
- package/dist/esm/lib/promises/index.js +33 -0
- package/dist/esm/lib/promises/reject.js +33 -0
- package/dist/esm/lib/sse.js +72 -0
- package/dist/esm/lib/strings/convert-case/convert-case.js +65 -0
- package/dist/esm/lib/strings/index.js +140 -0
- package/dist/esm/lib/strings/markdown.js +34 -0
- package/dist/esm/lib/strings/name.js +22 -0
- package/dist/esm/lib/strings/pluralize.js +6 -0
- package/dist/esm/lib/strings/query-string.js +17 -0
- package/dist/esm/lib/style/index.js +38 -0
- package/dist/esm/lib/symbols/index.js +13 -0
- package/dist/esm/lib/symbols/symbols.js +13 -0
- package/dist/esm/node/common.js +8 -0
- package/dist/esm/node/dirname.js +14 -0
- package/dist/esm/node/file-cache.js +158 -0
- package/dist/esm/node/file.js +15 -0
- package/dist/esm/node/hash.js +8 -0
- package/dist/esm/node/index.js +243 -0
- package/dist/esm/node/pkce.js +28 -0
- package/dist/esm/node/random-string.js +9 -0
- package/dist/esm/node/sanitize.js +31 -0
- package/dist/{dom/accessibility.d.ts → types/dom/accessibility.d.cts} +5 -3
- package/dist/types/dom/actions/index.d.cts +3 -0
- package/dist/types/dom/actions/masonry.d.cts +5 -0
- package/dist/types/dom/actions/prefer-horizontal-scroll.d.cts +5 -0
- package/dist/types/dom/actions/sticky.d.cts +5 -0
- package/dist/{dom/bounding-box.d.ts → types/dom/bounding-box.d.cts} +4 -2
- package/dist/{dom/clipboard.d.ts → types/dom/clipboard.d.cts} +3 -1
- package/dist/types/dom/cookie.d.cts +7 -0
- package/dist/types/dom/css-vars.d.cts +6 -0
- package/dist/types/dom/events.d.cts +20 -0
- package/dist/{dom/focusable.d.ts → types/dom/focusable.d.cts} +5 -3
- package/dist/types/dom/font-size.d.cts +7 -0
- package/dist/{dom/get-element.d.ts → types/dom/get-element.d.cts} +10 -8
- package/dist/types/dom/hash.d.cts +3 -0
- package/dist/types/dom/index.d.cts +30 -0
- package/dist/{dom/keyboard.d.ts → types/dom/keyboard.d.cts} +7 -5
- package/dist/{dom/local-store.d.ts → types/dom/local-store.d.cts} +3 -1
- package/dist/types/dom/media.d.cts +5 -0
- package/dist/types/dom/observers/index.d.cts +3 -0
- package/dist/{dom/observers/intersection-observer.d.ts → types/dom/observers/intersection-observer.d.cts} +3 -1
- package/dist/{dom/observers/mutation-observer.d.ts → types/dom/observers/mutation-observer.d.cts} +3 -1
- package/dist/types/dom/observers/observer.d.cts +3 -0
- package/dist/{dom/observers/resize-observer.d.ts → types/dom/observers/resize-observer.d.cts} +3 -1
- package/dist/{node/pkce.d.ts → types/dom/pkce.d.cts} +3 -1
- package/dist/{dom/query-params.d.ts → types/dom/query-params.d.cts} +3 -1
- package/dist/{dom/random-string.d.ts → types/dom/random-string.d.cts} +4 -2
- package/dist/{dom/sanitize.d.ts → types/dom/sanitize.d.cts} +3 -1
- package/dist/{dom/session-store.d.ts → types/dom/session-store.d.cts} +3 -1
- package/dist/types/dom/spam-prevention.d.cts +14 -0
- package/dist/{dom/trap-focus.d.ts → types/dom/trap-focus.d.cts} +8 -4
- package/dist/types/dom/ui/aria-current.d.cts +7 -0
- package/dist/{dom/ui/inconsistent-button-fix.d.ts → types/dom/ui/inconsistent-button-fix.d.cts} +3 -1
- package/dist/types/dom/ui/index.d.cts +4 -0
- package/dist/types/dom/ui/scroll-container.d.cts +3 -0
- package/dist/{dom/ui/traverse-and-scramble.d.ts → types/dom/ui/traverse-and-scramble.d.cts} +3 -1
- package/dist/types/lib/arrays/index.d.cts +6 -0
- package/dist/{lib/arrays/item-position.d.ts → types/lib/arrays/item-position.d.cts} +5 -3
- package/dist/{lib/arrays/join.d.ts → types/lib/arrays/join.d.cts} +3 -1
- package/dist/types/lib/arrays/shuffle.d.cts +3 -0
- package/dist/{lib/arrays/sort.d.ts → types/lib/arrays/sort.d.cts} +3 -1
- package/dist/types/lib/arrays/split-array.d.cts +6 -0
- package/dist/types/lib/arrays/unique.d.cts +3 -0
- package/dist/types/lib/auth/index.d.cts +1 -0
- package/dist/{lib/auth/route-manager.d.ts → types/lib/auth/route-manager.d.cts} +5 -2
- package/dist/{lib/checks.d.ts → types/lib/checks.d.cts} +6 -4
- package/dist/{lib/date/days.d.ts → types/lib/date/days.d.cts} +3 -1
- package/dist/types/lib/date/index.d.cts +3 -0
- package/dist/{lib/date/months.d.ts → types/lib/date/months.d.cts} +3 -1
- package/dist/types/lib/date/time.d.cts +21 -0
- package/dist/types/lib/form/form-data.d.cts +9 -0
- package/dist/types/lib/form/index.d.cts +2 -0
- package/dist/{lib/form/sanitize.d.ts → types/lib/form/sanitize.d.cts} +6 -4
- package/dist/types/lib/functions/debounce.d.cts +3 -0
- package/dist/types/lib/functions/env.d.cts +3 -0
- package/dist/types/lib/functions/functional.d.cts +6 -0
- package/dist/types/lib/functions/index.d.cts +5 -0
- package/dist/types/lib/functions/throttle.d.cts +3 -0
- package/dist/types/lib/functions/timeout.d.cts +5 -0
- package/dist/types/lib/hash.d.cts +3 -0
- package/dist/types/lib/index.d.cts +43 -0
- package/dist/types/lib/numbers/index.d.cts +5 -0
- package/dist/types/lib/numbers/math.d.cts +4 -0
- package/dist/types/lib/objects/camelcase-keys.d.cts +3 -0
- package/dist/types/lib/objects/empty.d.cts +4 -0
- package/dist/types/lib/objects/equal.d.cts +4 -0
- package/dist/types/lib/objects/extend.d.cts +6 -0
- package/dist/types/lib/objects/flatten.d.cts +6 -0
- package/dist/types/lib/objects/index.d.cts +13 -0
- package/dist/types/lib/objects/json.d.cts +3 -0
- package/dist/types/lib/objects/loop.d.cts +4 -0
- package/dist/types/lib/objects/mix/mix.d.cts +44 -0
- package/dist/{lib/objects/nested-property.d.ts → types/lib/objects/nested-property.d.cts} +5 -3
- package/dist/types/lib/objects/normalize-object.d.cts +3 -0
- package/dist/types/lib/objects/omit-empty.d.cts +3 -0
- package/dist/types/lib/objects/size.d.cts +3 -0
- package/dist/{lib/objects/split.d.ts → types/lib/objects/split.d.cts} +3 -1
- package/dist/types/lib/promises/index.d.cts +1 -0
- package/dist/types/lib/promises/reject.d.cts +5 -0
- package/dist/{lib/sse.d.ts → types/lib/sse.d.cts} +4 -2
- package/dist/types/lib/strings/convert-case/convert-case.d.cts +10 -0
- package/dist/types/lib/strings/index.d.cts +5 -0
- package/dist/{lib/strings/markdown.d.ts → types/lib/strings/markdown.d.cts} +4 -2
- package/dist/types/lib/strings/name.d.cts +7 -0
- package/dist/types/lib/strings/pluralize.d.cts +3 -0
- package/dist/types/lib/strings/query-string.d.cts +10 -0
- package/dist/types/lib/style/index.d.cts +3 -0
- package/dist/types/lib/symbols/index.d.cts +1 -0
- package/dist/types/lib/symbols/symbols.d.cts +4 -0
- package/dist/types/node/common.d.cts +3 -0
- package/dist/types/node/dirname.d.cts +9 -0
- package/dist/{node/file-cache.d.ts → types/node/file-cache.d.cts} +7 -5
- package/dist/types/node/file.d.cts +4 -0
- package/dist/types/node/hash.d.cts +3 -0
- package/dist/types/node/index.d.cts +7 -0
- package/dist/{dom/pkce.d.ts → types/node/pkce.d.cts} +3 -1
- package/dist/types/node/random-string.d.cts +3 -0
- package/dist/{node/sanitize.d.ts → types/node/sanitize.d.cts} +3 -1
- package/package.json +28 -16
- package/{dom → src/dom}/index.js +1 -0
- package/src/dom/spam-prevention.js +39 -0
- package/{dom → src/dom}/ui/aria-current.js +1 -1
- package/{lib → src/lib}/arrays/index.js +1 -0
- package/{lib → src/lib}/arrays/sort.js +6 -6
- package/src/lib/arrays/split-array.js +15 -0
- package/{lib → src/lib}/auth/route-manager.js +1 -0
- package/{lib → src/lib}/date/time.js +38 -5
- package/{lib → src/lib}/numbers/index.js +1 -1
- package/src/lib/numbers/split-unit.test.js +45 -0
- package/src/lib/objects/mix/mix.js +191 -0
- package/{lib → src/lib}/objects/mix/mix.test.js +99 -2
- package/src/lib/strings/pluralize.js +2 -0
- package/{lib → src/lib}/style/index.js +2 -0
- package/{node → src/node}/file-cache.js +1 -1
- package/tsconfig.json +6 -6
- package/tsup.config.js +38 -0
- package/tsup.config.mjs +43 -0
- package/dist/dom/actions/index.d.ts +0 -3
- package/dist/dom/actions/masonry.d.ts +0 -3
- package/dist/dom/actions/prefer-horizontal-scroll.d.ts +0 -3
- package/dist/dom/actions/sticky.d.ts +0 -3
- package/dist/dom/cookie.d.ts +0 -5
- package/dist/dom/css-vars.d.ts +0 -4
- package/dist/dom/events.d.ts +0 -18
- package/dist/dom/font-size.d.ts +0 -5
- package/dist/dom/hash.d.ts +0 -1
- package/dist/dom/index.d.ts +0 -22
- package/dist/dom/media.d.ts +0 -3
- package/dist/dom/observers/index.d.ts +0 -3
- package/dist/dom/observers/observer.d.ts +0 -1
- package/dist/dom/ui/aria-current.d.ts +0 -5
- package/dist/dom/ui/index.d.ts +0 -4
- package/dist/dom/ui/scroll-container.d.ts +0 -1
- package/dist/lib/arrays/index.d.ts +0 -5
- package/dist/lib/arrays/shuffle.d.ts +0 -1
- package/dist/lib/arrays/unique.d.ts +0 -1
- package/dist/lib/auth/index.d.ts +0 -1
- package/dist/lib/date/index.d.ts +0 -3
- package/dist/lib/date/time.d.ts +0 -8
- package/dist/lib/form/form-data.d.ts +0 -7
- package/dist/lib/form/index.d.ts +0 -2
- package/dist/lib/functions/debounce.d.ts +0 -1
- package/dist/lib/functions/env.d.ts +0 -1
- package/dist/lib/functions/functional.d.ts +0 -4
- package/dist/lib/functions/index.d.ts +0 -5
- package/dist/lib/functions/throttle.d.ts +0 -1
- package/dist/lib/functions/timeout.d.ts +0 -3
- package/dist/lib/hash.d.ts +0 -1
- package/dist/lib/index.d.ts +0 -14
- package/dist/lib/numbers/index.d.ts +0 -2
- package/dist/lib/numbers/math.d.ts +0 -2
- package/dist/lib/objects/camelcase-keys.d.ts +0 -1
- package/dist/lib/objects/empty.d.ts +0 -2
- package/dist/lib/objects/equal.d.ts +0 -2
- package/dist/lib/objects/extend.d.ts +0 -4
- package/dist/lib/objects/flatten.d.ts +0 -4
- package/dist/lib/objects/index.d.ts +0 -13
- package/dist/lib/objects/json.d.ts +0 -1
- package/dist/lib/objects/loop.d.ts +0 -2
- package/dist/lib/objects/mix/mix.d.ts +0 -1
- package/dist/lib/objects/normalize-object.d.ts +0 -1
- package/dist/lib/objects/omit-empty.d.ts +0 -1
- package/dist/lib/objects/size.d.ts +0 -1
- package/dist/lib/promises/index.d.ts +0 -1
- package/dist/lib/promises/reject.d.ts +0 -3
- package/dist/lib/strings/convert-case/convert-case.d.ts +0 -8
- package/dist/lib/strings/index.d.ts +0 -5
- package/dist/lib/strings/name.d.ts +0 -5
- package/dist/lib/strings/pluralize.d.ts +0 -1
- package/dist/lib/strings/query-string.d.ts +0 -8
- package/dist/lib/style/index.d.ts +0 -1
- package/dist/lib/symbols/index.d.ts +0 -1
- package/dist/lib/symbols/symbols.d.ts +0 -2
- package/dist/node/common.d.ts +0 -1
- package/dist/node/dirname.d.ts +0 -7
- package/dist/node/file.d.ts +0 -2
- package/dist/node/hash.d.ts +0 -1
- package/dist/node/index.d.ts +0 -7
- package/dist/node/random-string.d.ts +0 -1
- package/lib/objects/mix/mix.js +0 -102
- package/lib/strings/pluralize.js +0 -2
- /package/{dom → src/dom}/accessibility.js +0 -0
- /package/{dom → src/dom}/actions/index.js +0 -0
- /package/{dom → src/dom}/actions/masonry.js +0 -0
- /package/{dom → src/dom}/actions/prefer-horizontal-scroll.js +0 -0
- /package/{dom → src/dom}/actions/sticky.js +0 -0
- /package/{dom → src/dom}/bounding-box.js +0 -0
- /package/{dom → src/dom}/clipboard.js +0 -0
- /package/{dom → src/dom}/cookie.js +0 -0
- /package/{dom → src/dom}/css-vars.js +0 -0
- /package/{dom → src/dom}/events.js +0 -0
- /package/{dom → src/dom}/events.test.js +0 -0
- /package/{dom → src/dom}/focusable.js +0 -0
- /package/{dom → src/dom}/font-size.js +0 -0
- /package/{dom → src/dom}/get-element.js +0 -0
- /package/{dom → src/dom}/hash.js +0 -0
- /package/{dom → src/dom}/keyboard.js +0 -0
- /package/{dom → src/dom}/local-store.js +0 -0
- /package/{dom → src/dom}/media.js +0 -0
- /package/{dom → src/dom}/observers/index.js +0 -0
- /package/{dom → src/dom}/observers/intersection-observer.js +0 -0
- /package/{dom → src/dom}/observers/mutation-observer.js +0 -0
- /package/{dom → src/dom}/observers/observer.js +0 -0
- /package/{dom → src/dom}/observers/resize-observer.js +0 -0
- /package/{dom → src/dom}/pkce.js +0 -0
- /package/{dom → src/dom}/query-params.js +0 -0
- /package/{dom → src/dom}/random-string.js +0 -0
- /package/{dom → src/dom}/random-string.test.js +0 -0
- /package/{dom → src/dom}/sanitize.js +0 -0
- /package/{dom → src/dom}/session-store.js +0 -0
- /package/{dom → src/dom}/trap-focus.js +0 -0
- /package/{dom → src/dom}/ui/inconsistent-button-fix.js +0 -0
- /package/{dom → src/dom}/ui/index.js +0 -0
- /package/{dom → src/dom}/ui/scroll-container.js +0 -0
- /package/{dom → src/dom}/ui/traverse-and-scramble.js +0 -0
- /package/{lib → src/lib}/arrays/item-position.js +0 -0
- /package/{lib → src/lib}/arrays/join.js +0 -0
- /package/{lib → src/lib}/arrays/shuffle.js +0 -0
- /package/{lib → src/lib}/arrays/sort.spec.js +0 -0
- /package/{lib → src/lib}/arrays/unique.js +0 -0
- /package/{lib → src/lib}/auth/index.js +0 -0
- /package/{lib → src/lib}/checks.js +0 -0
- /package/{lib → src/lib}/date/days.js +0 -0
- /package/{lib → src/lib}/date/index.js +0 -0
- /package/{lib → src/lib}/date/months.js +0 -0
- /package/{lib → src/lib}/form/form-data.js +0 -0
- /package/{lib → src/lib}/form/index.js +0 -0
- /package/{lib → src/lib}/form/sanitize.js +0 -0
- /package/{lib → src/lib}/form/sanitize.spec.js +0 -0
- /package/{lib → src/lib}/functions/debounce.js +0 -0
- /package/{lib → src/lib}/functions/env.js +0 -0
- /package/{lib → src/lib}/functions/functional.js +0 -0
- /package/{lib → src/lib}/functions/index.js +0 -0
- /package/{lib → src/lib}/functions/throttle.js +0 -0
- /package/{lib → src/lib}/functions/timeout.js +0 -0
- /package/{lib → src/lib}/hash.js +0 -0
- /package/{lib → src/lib}/hash.spec.js +0 -0
- /package/{lib → src/lib}/index.js +0 -0
- /package/{lib → src/lib}/numbers/math.js +0 -0
- /package/{lib → src/lib}/objects/camelcase-keys.js +0 -0
- /package/{lib → src/lib}/objects/camelcase-keys.test.js +0 -0
- /package/{lib → src/lib}/objects/empty.js +0 -0
- /package/{lib → src/lib}/objects/equal.js +0 -0
- /package/{lib → src/lib}/objects/extend.js +0 -0
- /package/{lib → src/lib}/objects/extend.test.js +0 -0
- /package/{lib → src/lib}/objects/flatten.js +0 -0
- /package/{lib → src/lib}/objects/index.js +0 -0
- /package/{lib → src/lib}/objects/json.js +0 -0
- /package/{lib → src/lib}/objects/loop.js +0 -0
- /package/{lib → src/lib}/objects/loop.test.js +0 -0
- /package/{lib → src/lib}/objects/mix/mix.md +0 -0
- /package/{lib → src/lib}/objects/nested-property.js +0 -0
- /package/{lib → src/lib}/objects/normalize-object.js +0 -0
- /package/{lib → src/lib}/objects/omit-empty.js +0 -0
- /package/{lib → src/lib}/objects/omit-empty.test.js +0 -0
- /package/{lib → src/lib}/objects/size.js +0 -0
- /package/{lib → src/lib}/objects/split.js +0 -0
- /package/{lib → src/lib}/promises/index.js +0 -0
- /package/{lib → src/lib}/promises/reject.js +0 -0
- /package/{lib → src/lib}/sse.js +0 -0
- /package/{lib → src/lib}/strings/convert-case/convert-case.js +0 -0
- /package/{lib → src/lib}/strings/convert-case/convert-case.md +0 -0
- /package/{lib → src/lib}/strings/convert-case/convert-case.test.js +0 -0
- /package/{lib → src/lib}/strings/index.js +0 -0
- /package/{lib → src/lib}/strings/markdown.js +0 -0
- /package/{lib → src/lib}/strings/name.js +0 -0
- /package/{lib → src/lib}/strings/name.test.js +0 -0
- /package/{lib → src/lib}/strings/query-string.js +0 -0
- /package/{lib → src/lib}/symbols/index.js +0 -0
- /package/{lib → src/lib}/symbols/symbols.js +0 -0
- /package/{node → src/node}/common.js +0 -0
- /package/{node → src/node}/dirname.js +0 -0
- /package/{node → src/node}/file.js +0 -0
- /package/{node → src/node}/hash.js +0 -0
- /package/{node → src/node}/index.js +0 -0
- /package/{node → src/node}/pkce.js +0 -0
- /package/{node → src/node}/random-string.js +0 -0
- /package/{node → src/node}/random-string.test.js +0 -0
- /package/{node → src/node}/sanitize.js +0 -0
- /package/{node → src/node}/sanitize.spec.js +0 -0
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
+
|
|
29
|
+
// src/node/file-cache.js
|
|
30
|
+
var file_cache_exports = {};
|
|
31
|
+
__export(file_cache_exports, {
|
|
32
|
+
createCache: () => createCache,
|
|
33
|
+
fileCache: () => fileCache,
|
|
34
|
+
getLastModifiedTime: () => getLastModifiedTime,
|
|
35
|
+
getLatestModifiedTime: () => getLatestModifiedTime,
|
|
36
|
+
removeFirstSlash: () => removeFirstSlash
|
|
37
|
+
});
|
|
38
|
+
module.exports = __toCommonJS(file_cache_exports);
|
|
39
|
+
var import_promises = __toESM(require("fs/promises"), 1);
|
|
40
|
+
var import_glob = require("glob");
|
|
41
|
+
var import_node_path = __toESM(require("path"), 1);
|
|
42
|
+
|
|
43
|
+
// src/lib/objects/nested-property.js
|
|
44
|
+
function getNestedValue(object, path2) {
|
|
45
|
+
return path2.split(".").reduce((acc, part) => acc?.[part], object);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// src/lib/arrays/sort.js
|
|
49
|
+
function sort(array, { props = null, reverse = false } = {}) {
|
|
50
|
+
const clone = array.slice();
|
|
51
|
+
if (props === null) {
|
|
52
|
+
return clone.sort((a, b) => {
|
|
53
|
+
const comparison = compareValues(a, b);
|
|
54
|
+
return reverse ? -comparison : comparison;
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
const properties = Array.isArray(props) ? props : [props];
|
|
58
|
+
return clone.sort((a, b) => {
|
|
59
|
+
for (const property of properties) {
|
|
60
|
+
const aValue = getNestedValue(a, property);
|
|
61
|
+
const bValue = getNestedValue(b, property);
|
|
62
|
+
if (aValue === bValue) continue;
|
|
63
|
+
if (aValue == null) return 1;
|
|
64
|
+
if (bValue == null) return -1;
|
|
65
|
+
const comparison = compareValues(aValue, bValue);
|
|
66
|
+
return reverse ? -comparison : comparison;
|
|
67
|
+
}
|
|
68
|
+
return 0;
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
function compareValues(a, b) {
|
|
72
|
+
if (typeof a === "number" && typeof b === "number") return a - b;
|
|
73
|
+
if (typeof a === "string" && typeof b === "string") return a.localeCompare(b);
|
|
74
|
+
const aDate = new Date(a);
|
|
75
|
+
const bDate = new Date(b);
|
|
76
|
+
const aTime = aDate.getTime();
|
|
77
|
+
const bTime = bDate.getTime();
|
|
78
|
+
if (!isNaN(aTime) && !isNaN(bTime)) return aTime - bTime;
|
|
79
|
+
return String(a).localeCompare(String(b));
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// src/node/file-cache.js
|
|
83
|
+
async function createCache(dir) {
|
|
84
|
+
const absDirpath = import_node_path.default.join(process.cwd(), dir);
|
|
85
|
+
await import_promises.default.mkdir(absDirpath, { recursive: true });
|
|
86
|
+
return {
|
|
87
|
+
async cacheAt(file) {
|
|
88
|
+
if (file) {
|
|
89
|
+
const absFilepath = import_node_path.default.join(absDirpath, file);
|
|
90
|
+
try {
|
|
91
|
+
const stat = await import_promises.default.stat(absFilepath);
|
|
92
|
+
return stat.mtimeMs;
|
|
93
|
+
} catch (error) {
|
|
94
|
+
return 0;
|
|
95
|
+
}
|
|
96
|
+
} else {
|
|
97
|
+
return getLastModifiedTime(dir + "/**/*");
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
getAbsPath(file) {
|
|
101
|
+
return import_node_path.default.join(absDirpath, file);
|
|
102
|
+
},
|
|
103
|
+
async hasFile(file) {
|
|
104
|
+
const absFilepath = import_node_path.default.join(absDirpath, file);
|
|
105
|
+
try {
|
|
106
|
+
await import_promises.default.stat(absFilepath);
|
|
107
|
+
return true;
|
|
108
|
+
} catch (e) {
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
async loadFile(file) {
|
|
113
|
+
try {
|
|
114
|
+
const absFilepath = import_node_path.default.join(absDirpath, file);
|
|
115
|
+
return import_promises.default.readFile(absFilepath);
|
|
116
|
+
} catch (error) {
|
|
117
|
+
console.warn(`File not found: ${file}`);
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
async saveFile(file, data) {
|
|
121
|
+
const absfilepath = import_node_path.default.join(absDirpath, file);
|
|
122
|
+
await import_promises.default.writeFile(absfilepath, data);
|
|
123
|
+
},
|
|
124
|
+
async loadJSON(file) {
|
|
125
|
+
const data = await this.loadFile(file);
|
|
126
|
+
try {
|
|
127
|
+
return JSON.parse(data.toString());
|
|
128
|
+
} catch (err) {
|
|
129
|
+
console.warn(`Error parsing JSON: ${file}`);
|
|
130
|
+
return {};
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
async saveJSON(file, data) {
|
|
134
|
+
await this.saveFile(file, JSON.stringify(data));
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
async function fileCache({ dir, file }) {
|
|
139
|
+
await import_promises.default.mkdir(import_node_path.default.join(process.cwd(), dir), { recursive: true });
|
|
140
|
+
const cachePath = import_node_path.default.join(process.cwd(), dir, `${file}`);
|
|
141
|
+
let modifiedAt = 0;
|
|
142
|
+
try {
|
|
143
|
+
const stat = await import_promises.default.stat(cachePath);
|
|
144
|
+
modifiedAt = stat.mtimeMs;
|
|
145
|
+
} catch (error) {
|
|
146
|
+
}
|
|
147
|
+
return {
|
|
148
|
+
modifiedAt,
|
|
149
|
+
async load() {
|
|
150
|
+
return import_promises.default.readFile(cachePath);
|
|
151
|
+
},
|
|
152
|
+
async save(data) {
|
|
153
|
+
await import_promises.default.writeFile(cachePath, data);
|
|
154
|
+
},
|
|
155
|
+
async loadJSON() {
|
|
156
|
+
const data = await import_promises.default.readFile(cachePath);
|
|
157
|
+
return JSON.parse(data.toString());
|
|
158
|
+
},
|
|
159
|
+
async saveJSON(data) {
|
|
160
|
+
await import_promises.default.writeFile(cachePath, JSON.stringify(data));
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
async function getLastModifiedTime(globPath) {
|
|
165
|
+
let files;
|
|
166
|
+
if (typeof globPath === "string") {
|
|
167
|
+
files = await (0, import_glob.glob)(removeFirstSlash(globPath));
|
|
168
|
+
}
|
|
169
|
+
if (Array.isArray(globPath)) {
|
|
170
|
+
const a = await Promise.all(
|
|
171
|
+
globPath.map((path2) => (0, import_glob.glob)(removeFirstSlash(path2)))
|
|
172
|
+
);
|
|
173
|
+
files = a.flat();
|
|
174
|
+
}
|
|
175
|
+
const stats = await Promise.all(files.map((file) => import_promises.default.stat(file)));
|
|
176
|
+
const timestamps = stats.map((stat) => Number(stat.mtimeMs));
|
|
177
|
+
const sorted = sort(timestamps, { props: "mtimeMs", reverse: true });
|
|
178
|
+
return sorted[0] || 0;
|
|
179
|
+
}
|
|
180
|
+
async function getLatestModifiedTime(globPath) {
|
|
181
|
+
console.warn(
|
|
182
|
+
"`getLatestModifiedTime` has been renamed to `getLastModifiedTime` and will be deprecated in future versions. Please use `getLastModifiedTime` instead."
|
|
183
|
+
);
|
|
184
|
+
return getLastModifiedTime(globPath);
|
|
185
|
+
}
|
|
186
|
+
function removeFirstSlash(x) {
|
|
187
|
+
return x.startsWith("/") ? x.slice(1) : x;
|
|
188
|
+
}
|
|
189
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
190
|
+
0 && (module.exports = {
|
|
191
|
+
createCache,
|
|
192
|
+
fileCache,
|
|
193
|
+
getLastModifiedTime,
|
|
194
|
+
getLatestModifiedTime,
|
|
195
|
+
removeFirstSlash
|
|
196
|
+
});
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
+
|
|
29
|
+
// src/node/file.js
|
|
30
|
+
var file_exports = {};
|
|
31
|
+
__export(file_exports, {
|
|
32
|
+
copyFile: () => copyFile,
|
|
33
|
+
mkdir: () => mkdir
|
|
34
|
+
});
|
|
35
|
+
module.exports = __toCommonJS(file_exports);
|
|
36
|
+
var import_promises = __toESM(require("fs/promises"), 1);
|
|
37
|
+
var import_node_path = __toESM(require("path"), 1);
|
|
38
|
+
async function mkdir(path2) {
|
|
39
|
+
return import_promises.default.mkdir(path2, { recursive: true });
|
|
40
|
+
}
|
|
41
|
+
async function copyFile(from, to) {
|
|
42
|
+
const dir = import_node_path.default.dirname(to);
|
|
43
|
+
await mkdir(dir);
|
|
44
|
+
await import_promises.default.copyFile(from, to);
|
|
45
|
+
}
|
|
46
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
47
|
+
0 && (module.exports = {
|
|
48
|
+
copyFile,
|
|
49
|
+
mkdir
|
|
50
|
+
});
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
+
|
|
29
|
+
// src/node/hash.js
|
|
30
|
+
var hash_exports = {};
|
|
31
|
+
__export(hash_exports, {
|
|
32
|
+
sha256Hash: () => sha256Hash
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(hash_exports);
|
|
35
|
+
var import_node_crypto = __toESM(require("crypto"), 1);
|
|
36
|
+
function sha256Hash(string) {
|
|
37
|
+
return import_node_crypto.default.createHash("sha256").update(string).digest("hex");
|
|
38
|
+
}
|
|
39
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
40
|
+
0 && (module.exports = {
|
|
41
|
+
sha256Hash
|
|
42
|
+
});
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
+
|
|
29
|
+
// src/node/index.js
|
|
30
|
+
var node_exports = {};
|
|
31
|
+
__export(node_exports, {
|
|
32
|
+
PKCE: () => PKCE,
|
|
33
|
+
__dirname: () => __dirname,
|
|
34
|
+
createCache: () => createCache,
|
|
35
|
+
dirname: () => dirname,
|
|
36
|
+
fileCache: () => fileCache,
|
|
37
|
+
getLastModifiedTime: () => getLastModifiedTime,
|
|
38
|
+
getLatestModifiedTime: () => getLatestModifiedTime,
|
|
39
|
+
randomString: () => randomString,
|
|
40
|
+
removeFirstSlash: () => removeFirstSlash,
|
|
41
|
+
sanitize: () => sanitize2,
|
|
42
|
+
sha256Hash: () => sha256Hash,
|
|
43
|
+
uuid: () => uuid
|
|
44
|
+
});
|
|
45
|
+
module.exports = __toCommonJS(node_exports);
|
|
46
|
+
|
|
47
|
+
// src/node/common.js
|
|
48
|
+
var import_crypto = __toESM(require("crypto"), 1);
|
|
49
|
+
function uuid() {
|
|
50
|
+
return import_crypto.default.randomUUID();
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// src/node/dirname.js
|
|
54
|
+
var import_node_path = __toESM(require("path"), 1);
|
|
55
|
+
var import_node_url = require("url");
|
|
56
|
+
function __dirname(url) {
|
|
57
|
+
if (!url) throw Error("Please provide 'import.meta.url' to dirname");
|
|
58
|
+
return import_node_path.default.dirname((0, import_node_url.fileURLToPath)(url));
|
|
59
|
+
}
|
|
60
|
+
function dirname(url) {
|
|
61
|
+
return __dirname(url);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// src/node/file-cache.js
|
|
65
|
+
var import_promises = __toESM(require("fs/promises"), 1);
|
|
66
|
+
var import_glob = require("glob");
|
|
67
|
+
var import_node_path2 = __toESM(require("path"), 1);
|
|
68
|
+
|
|
69
|
+
// src/lib/objects/nested-property.js
|
|
70
|
+
function getNestedValue(object, path3) {
|
|
71
|
+
return path3.split(".").reduce((acc, part) => acc?.[part], object);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// src/lib/arrays/sort.js
|
|
75
|
+
function sort(array, { props = null, reverse = false } = {}) {
|
|
76
|
+
const clone = array.slice();
|
|
77
|
+
if (props === null) {
|
|
78
|
+
return clone.sort((a, b) => {
|
|
79
|
+
const comparison = compareValues(a, b);
|
|
80
|
+
return reverse ? -comparison : comparison;
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
const properties = Array.isArray(props) ? props : [props];
|
|
84
|
+
return clone.sort((a, b) => {
|
|
85
|
+
for (const property of properties) {
|
|
86
|
+
const aValue = getNestedValue(a, property);
|
|
87
|
+
const bValue = getNestedValue(b, property);
|
|
88
|
+
if (aValue === bValue) continue;
|
|
89
|
+
if (aValue == null) return 1;
|
|
90
|
+
if (bValue == null) return -1;
|
|
91
|
+
const comparison = compareValues(aValue, bValue);
|
|
92
|
+
return reverse ? -comparison : comparison;
|
|
93
|
+
}
|
|
94
|
+
return 0;
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
function compareValues(a, b) {
|
|
98
|
+
if (typeof a === "number" && typeof b === "number") return a - b;
|
|
99
|
+
if (typeof a === "string" && typeof b === "string") return a.localeCompare(b);
|
|
100
|
+
const aDate = new Date(a);
|
|
101
|
+
const bDate = new Date(b);
|
|
102
|
+
const aTime = aDate.getTime();
|
|
103
|
+
const bTime = bDate.getTime();
|
|
104
|
+
if (!isNaN(aTime) && !isNaN(bTime)) return aTime - bTime;
|
|
105
|
+
return String(a).localeCompare(String(b));
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// src/node/file-cache.js
|
|
109
|
+
async function createCache(dir) {
|
|
110
|
+
const absDirpath = import_node_path2.default.join(process.cwd(), dir);
|
|
111
|
+
await import_promises.default.mkdir(absDirpath, { recursive: true });
|
|
112
|
+
return {
|
|
113
|
+
async cacheAt(file) {
|
|
114
|
+
if (file) {
|
|
115
|
+
const absFilepath = import_node_path2.default.join(absDirpath, file);
|
|
116
|
+
try {
|
|
117
|
+
const stat = await import_promises.default.stat(absFilepath);
|
|
118
|
+
return stat.mtimeMs;
|
|
119
|
+
} catch (error) {
|
|
120
|
+
return 0;
|
|
121
|
+
}
|
|
122
|
+
} else {
|
|
123
|
+
return getLastModifiedTime(dir + "/**/*");
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
getAbsPath(file) {
|
|
127
|
+
return import_node_path2.default.join(absDirpath, file);
|
|
128
|
+
},
|
|
129
|
+
async hasFile(file) {
|
|
130
|
+
const absFilepath = import_node_path2.default.join(absDirpath, file);
|
|
131
|
+
try {
|
|
132
|
+
await import_promises.default.stat(absFilepath);
|
|
133
|
+
return true;
|
|
134
|
+
} catch (e) {
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
async loadFile(file) {
|
|
139
|
+
try {
|
|
140
|
+
const absFilepath = import_node_path2.default.join(absDirpath, file);
|
|
141
|
+
return import_promises.default.readFile(absFilepath);
|
|
142
|
+
} catch (error) {
|
|
143
|
+
console.warn(`File not found: ${file}`);
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
async saveFile(file, data) {
|
|
147
|
+
const absfilepath = import_node_path2.default.join(absDirpath, file);
|
|
148
|
+
await import_promises.default.writeFile(absfilepath, data);
|
|
149
|
+
},
|
|
150
|
+
async loadJSON(file) {
|
|
151
|
+
const data = await this.loadFile(file);
|
|
152
|
+
try {
|
|
153
|
+
return JSON.parse(data.toString());
|
|
154
|
+
} catch (err) {
|
|
155
|
+
console.warn(`Error parsing JSON: ${file}`);
|
|
156
|
+
return {};
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
async saveJSON(file, data) {
|
|
160
|
+
await this.saveFile(file, JSON.stringify(data));
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
async function fileCache({ dir, file }) {
|
|
165
|
+
await import_promises.default.mkdir(import_node_path2.default.join(process.cwd(), dir), { recursive: true });
|
|
166
|
+
const cachePath = import_node_path2.default.join(process.cwd(), dir, `${file}`);
|
|
167
|
+
let modifiedAt = 0;
|
|
168
|
+
try {
|
|
169
|
+
const stat = await import_promises.default.stat(cachePath);
|
|
170
|
+
modifiedAt = stat.mtimeMs;
|
|
171
|
+
} catch (error) {
|
|
172
|
+
}
|
|
173
|
+
return {
|
|
174
|
+
modifiedAt,
|
|
175
|
+
async load() {
|
|
176
|
+
return import_promises.default.readFile(cachePath);
|
|
177
|
+
},
|
|
178
|
+
async save(data) {
|
|
179
|
+
await import_promises.default.writeFile(cachePath, data);
|
|
180
|
+
},
|
|
181
|
+
async loadJSON() {
|
|
182
|
+
const data = await import_promises.default.readFile(cachePath);
|
|
183
|
+
return JSON.parse(data.toString());
|
|
184
|
+
},
|
|
185
|
+
async saveJSON(data) {
|
|
186
|
+
await import_promises.default.writeFile(cachePath, JSON.stringify(data));
|
|
187
|
+
}
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
async function getLastModifiedTime(globPath) {
|
|
191
|
+
let files;
|
|
192
|
+
if (typeof globPath === "string") {
|
|
193
|
+
files = await (0, import_glob.glob)(removeFirstSlash(globPath));
|
|
194
|
+
}
|
|
195
|
+
if (Array.isArray(globPath)) {
|
|
196
|
+
const a = await Promise.all(
|
|
197
|
+
globPath.map((path3) => (0, import_glob.glob)(removeFirstSlash(path3)))
|
|
198
|
+
);
|
|
199
|
+
files = a.flat();
|
|
200
|
+
}
|
|
201
|
+
const stats = await Promise.all(files.map((file) => import_promises.default.stat(file)));
|
|
202
|
+
const timestamps = stats.map((stat) => Number(stat.mtimeMs));
|
|
203
|
+
const sorted = sort(timestamps, { props: "mtimeMs", reverse: true });
|
|
204
|
+
return sorted[0] || 0;
|
|
205
|
+
}
|
|
206
|
+
async function getLatestModifiedTime(globPath) {
|
|
207
|
+
console.warn(
|
|
208
|
+
"`getLatestModifiedTime` has been renamed to `getLastModifiedTime` and will be deprecated in future versions. Please use `getLastModifiedTime` instead."
|
|
209
|
+
);
|
|
210
|
+
return getLastModifiedTime(globPath);
|
|
211
|
+
}
|
|
212
|
+
function removeFirstSlash(x) {
|
|
213
|
+
return x.startsWith("/") ? x.slice(1) : x;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
// src/node/hash.js
|
|
217
|
+
var import_node_crypto = __toESM(require("crypto"), 1);
|
|
218
|
+
function sha256Hash(string) {
|
|
219
|
+
return import_node_crypto.default.createHash("sha256").update(string).digest("hex");
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
// src/node/pkce.js
|
|
223
|
+
var import_node_crypto3 = __toESM(require("crypto"), 1);
|
|
224
|
+
|
|
225
|
+
// src/node/random-string.js
|
|
226
|
+
var import_node_crypto2 = __toESM(require("crypto"), 1);
|
|
227
|
+
function randomString(length = 32) {
|
|
228
|
+
const bytesNeeded = Math.ceil(length * 3 / 4) + 3;
|
|
229
|
+
return import_node_crypto2.default.randomBytes(bytesNeeded).toString("base64").slice(0, length);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
// src/node/pkce.js
|
|
233
|
+
async function PKCE() {
|
|
234
|
+
const codeVerifier = await randomString();
|
|
235
|
+
const codeChallenge = await getCodeChallenge(codeVerifier);
|
|
236
|
+
return {
|
|
237
|
+
state: await randomString(),
|
|
238
|
+
code_verifier: codeVerifier,
|
|
239
|
+
code_challenge: codeChallenge,
|
|
240
|
+
code_challenge_method: "S256"
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
async function getCodeChallenge(verifier) {
|
|
244
|
+
const hash = import_node_crypto3.default.createHash("sha256").update(verifier).digest();
|
|
245
|
+
return hash.toString("base64").replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, "");
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
// src/node/sanitize.js
|
|
249
|
+
var import_sanitize_html = __toESM(require("sanitize-html"), 1);
|
|
250
|
+
|
|
251
|
+
// src/lib/form/sanitize.js
|
|
252
|
+
function sanitize(value, options = {}) {
|
|
253
|
+
const { sanitizer, ...rest } = options;
|
|
254
|
+
if (!sanitizer) throw new Error("sanitizer function is required");
|
|
255
|
+
if (typeof value === "string") return sanitizer(value, rest);
|
|
256
|
+
if (Array.isArray(value)) return sanitizeArray(value, { sanitizer, ...rest });
|
|
257
|
+
if (value && typeof value === "object") {
|
|
258
|
+
return Object.fromEntries(
|
|
259
|
+
Object.entries(value).map(([key, val]) => [
|
|
260
|
+
key,
|
|
261
|
+
sanitize(val, { sanitizer, ...rest })
|
|
262
|
+
])
|
|
263
|
+
);
|
|
264
|
+
}
|
|
265
|
+
return value;
|
|
266
|
+
}
|
|
267
|
+
function sanitizeArray(arr, { sanitizer, ...rest }) {
|
|
268
|
+
if (!sanitizer) throw new Error("sanitizer function is required");
|
|
269
|
+
return arr.map((item) => sanitize(item, { sanitizer, ...rest }));
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
// src/node/sanitize.js
|
|
273
|
+
function sanitize2(value, options = {}) {
|
|
274
|
+
return sanitize(value, { sanitizer: import_sanitize_html.default, ...options });
|
|
275
|
+
}
|
|
276
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
277
|
+
0 && (module.exports = {
|
|
278
|
+
PKCE,
|
|
279
|
+
__dirname,
|
|
280
|
+
createCache,
|
|
281
|
+
dirname,
|
|
282
|
+
fileCache,
|
|
283
|
+
getLastModifiedTime,
|
|
284
|
+
getLatestModifiedTime,
|
|
285
|
+
randomString,
|
|
286
|
+
removeFirstSlash,
|
|
287
|
+
sanitize,
|
|
288
|
+
sha256Hash,
|
|
289
|
+
uuid
|
|
290
|
+
});
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
+
|
|
29
|
+
// src/node/pkce.js
|
|
30
|
+
var pkce_exports = {};
|
|
31
|
+
__export(pkce_exports, {
|
|
32
|
+
PKCE: () => PKCE
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(pkce_exports);
|
|
35
|
+
var import_node_crypto2 = __toESM(require("crypto"), 1);
|
|
36
|
+
|
|
37
|
+
// src/node/random-string.js
|
|
38
|
+
var import_node_crypto = __toESM(require("crypto"), 1);
|
|
39
|
+
function randomString(length = 32) {
|
|
40
|
+
const bytesNeeded = Math.ceil(length * 3 / 4) + 3;
|
|
41
|
+
return import_node_crypto.default.randomBytes(bytesNeeded).toString("base64").slice(0, length);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// src/node/pkce.js
|
|
45
|
+
async function PKCE() {
|
|
46
|
+
const codeVerifier = await randomString();
|
|
47
|
+
const codeChallenge = await getCodeChallenge(codeVerifier);
|
|
48
|
+
return {
|
|
49
|
+
state: await randomString(),
|
|
50
|
+
code_verifier: codeVerifier,
|
|
51
|
+
code_challenge: codeChallenge,
|
|
52
|
+
code_challenge_method: "S256"
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
async function getCodeChallenge(verifier) {
|
|
56
|
+
const hash = import_node_crypto2.default.createHash("sha256").update(verifier).digest();
|
|
57
|
+
return hash.toString("base64").replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, "");
|
|
58
|
+
}
|
|
59
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
60
|
+
0 && (module.exports = {
|
|
61
|
+
PKCE
|
|
62
|
+
});
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
+
|
|
29
|
+
// src/node/random-string.js
|
|
30
|
+
var random_string_exports = {};
|
|
31
|
+
__export(random_string_exports, {
|
|
32
|
+
randomString: () => randomString
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(random_string_exports);
|
|
35
|
+
var import_node_crypto = __toESM(require("crypto"), 1);
|
|
36
|
+
function randomString(length = 32) {
|
|
37
|
+
const bytesNeeded = Math.ceil(length * 3 / 4) + 3;
|
|
38
|
+
return import_node_crypto.default.randomBytes(bytesNeeded).toString("base64").slice(0, length);
|
|
39
|
+
}
|
|
40
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
41
|
+
0 && (module.exports = {
|
|
42
|
+
randomString
|
|
43
|
+
});
|