zeed 1.3.0 → 1.4.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/AGENTS.md +50 -211
- package/README.md +16 -0
- package/dist/_experiments/bitcask.cjs +243 -1
- package/dist/_experiments/bitcask.cjs.map +1 -1
- package/dist/_experiments/bitcask.mjs +230 -1
- package/dist/_experiments/bitcask.mjs.map +1 -1
- package/dist/bin-BAoS4qtm.mjs +593 -0
- package/dist/{bin-SPdenYkw.mjs.map → bin-BAoS4qtm.mjs.map} +1 -1
- package/dist/bin-Ddaz2lxM.cjs +862 -0
- package/dist/{bin-Ce3i6ABn.cjs.map → bin-Ddaz2lxM.cjs.map} +1 -1
- package/dist/browser/base64.cjs +14 -1
- package/dist/browser/base64.cjs.map +1 -1
- package/dist/browser/base64.mjs +12 -1
- package/dist/browser/base64.mjs.map +1 -1
- package/dist/browser/gravatar.cjs +186 -1
- package/dist/browser/gravatar.cjs.map +1 -1
- package/dist/browser/gravatar.mjs +184 -1
- package/dist/browser/gravatar.mjs.map +1 -1
- package/dist/browser/index.cjs +14 -1
- package/dist/browser/index.mjs +8 -1
- package/dist/browser/localstorage.cjs +46 -1
- package/dist/browser/localstorage.cjs.map +1 -1
- package/dist/browser/localstorage.mjs +45 -1
- package/dist/browser/localstorage.mjs.map +1 -1
- package/dist/browser/log/index.cjs +8 -1
- package/dist/browser/log/index.mjs +5 -1
- package/dist/browser/log/log-browser-factory.cjs +65 -1
- package/dist/browser/log/log-browser-factory.cjs.map +1 -1
- package/dist/browser/log/log-browser-factory.mjs +64 -1
- package/dist/browser/log/log-browser-factory.mjs.map +1 -1
- package/dist/browser/log/log-browser.cjs +72 -1
- package/dist/browser/log/log-browser.cjs.map +1 -1
- package/dist/browser/log/log-browser.mjs +71 -1
- package/dist/browser/log/log-browser.mjs.map +1 -1
- package/dist/browser/log/log-colors.cjs +11 -1
- package/dist/browser/log/log-colors.cjs.map +1 -1
- package/dist/browser/log/log-colors.mjs +9 -1
- package/dist/browser/log/log-colors.mjs.map +1 -1
- package/dist/browser/log/log-context-browser.cjs +25 -1
- package/dist/browser/log/log-context-browser.cjs.map +1 -1
- package/dist/browser/log/log-context-browser.mjs +23 -1
- package/dist/browser/log/log-context-browser.mjs.map +1 -1
- package/dist/chunk-DQk6qfdC.mjs +18 -0
- package/dist/chunk-uaV2rQ02.cjs +53 -0
- package/dist/common/assert.cjs +22 -1
- package/dist/common/assert.cjs.map +1 -1
- package/dist/common/assert.mjs +19 -1
- package/dist/common/assert.mjs.map +1 -1
- package/dist/common/bin/index.cjs +106 -1
- package/dist/common/bin/index.cjs.map +1 -1
- package/dist/common/bin/index.mjs +98 -1
- package/dist/common/bin/index.mjs.map +1 -1
- package/dist/common/bin/lib0/binary.cjs +146 -1
- package/dist/common/bin/lib0/binary.cjs.map +1 -1
- package/dist/common/bin/lib0/binary.mjs +80 -1
- package/dist/common/bin/lib0/binary.mjs.map +1 -1
- package/dist/common/bin/lib0/buffer.cjs +42 -1
- package/dist/common/bin/lib0/buffer.cjs.map +1 -1
- package/dist/common/bin/lib0/buffer.mjs +38 -1
- package/dist/common/bin/lib0/buffer.mjs.map +1 -1
- package/dist/common/bin/lib0/create.cjs +24 -1
- package/dist/common/bin/lib0/create.cjs.map +1 -1
- package/dist/common/bin/lib0/create.mjs +21 -1
- package/dist/common/bin/lib0/create.mjs.map +1 -1
- package/dist/common/bin/lib0/decoding.cjs +325 -1
- package/dist/common/bin/lib0/decoding.cjs.map +1 -1
- package/dist/common/bin/lib0/decoding.mjs +298 -1
- package/dist/common/bin/lib0/decoding.mjs.map +1 -1
- package/dist/common/bin/lib0/encoding.cjs +404 -1
- package/dist/common/bin/lib0/encoding.cjs.map +1 -1
- package/dist/common/bin/lib0/encoding.mjs +377 -1
- package/dist/common/bin/lib0/encoding.mjs.map +1 -1
- package/dist/common/bin/lib0/string.cjs +81 -1
- package/dist/common/bin/lib0/string.cjs.map +1 -1
- package/dist/common/bin/lib0/string.mjs +71 -1
- package/dist/common/bin/lib0/string.mjs.map +1 -1
- package/dist/common/crypto/aes-sealed.cjs +34 -1
- package/dist/common/crypto/aes-sealed.cjs.map +1 -1
- package/dist/common/crypto/aes-sealed.mjs +32 -1
- package/dist/common/crypto/aes-sealed.mjs.map +1 -1
- package/dist/common/crypto/crypto.cjs +91 -1
- package/dist/common/crypto/crypto.cjs.map +1 -1
- package/dist/common/crypto/crypto.mjs +80 -1
- package/dist/common/crypto/crypto.mjs.map +1 -1
- package/dist/common/crypto/index.cjs +23 -1
- package/dist/common/crypto/index.mjs +5 -1
- package/dist/common/crypto/xaes.cjs +128 -1
- package/dist/common/crypto/xaes.cjs.map +1 -1
- package/dist/common/crypto/xaes.mjs +123 -1
- package/dist/common/crypto/xaes.mjs.map +1 -1
- package/dist/common/csv.cjs +49 -4
- package/dist/common/csv.cjs.map +1 -1
- package/dist/common/csv.mjs +46 -4
- package/dist/common/csv.mjs.map +1 -1
- package/dist/common/data/array.cjs +299 -1
- package/dist/common/data/array.cjs.map +1 -1
- package/dist/common/data/array.mjs +274 -1
- package/dist/common/data/array.mjs.map +1 -1
- package/dist/common/data/basex-secure.cjs +30 -1
- package/dist/common/data/basex-secure.mjs +3 -1
- package/dist/common/data/basex.cjs +163 -1
- package/dist/common/data/basex.cjs.map +1 -1
- package/dist/common/data/basex.mjs +152 -1
- package/dist/common/data/basex.mjs.map +1 -1
- package/dist/common/data/bin-types.mjs +1 -1
- package/dist/common/data/bin.cjs +21 -1
- package/dist/common/data/bin.mjs +3 -1
- package/dist/common/data/camelcase.cjs +27 -1
- package/dist/common/data/camelcase.cjs.map +1 -1
- package/dist/common/data/camelcase.mjs +22 -1
- package/dist/common/data/camelcase.mjs.map +1 -1
- package/dist/common/data/convert.cjs +104 -1
- package/dist/common/data/convert.cjs.map +1 -1
- package/dist/common/data/convert.mjs +88 -1
- package/dist/common/data/convert.mjs.map +1 -1
- package/dist/common/data/datauri.cjs +32 -1
- package/dist/common/data/datauri.cjs.map +1 -1
- package/dist/common/data/datauri.mjs +27 -1
- package/dist/common/data/datauri.mjs.map +1 -1
- package/dist/common/data/day-legacy.cjs +148 -1
- package/dist/common/data/day-legacy.cjs.map +1 -1
- package/dist/common/data/day-legacy.mjs +143 -1
- package/dist/common/data/day-legacy.mjs.map +1 -1
- package/dist/common/data/day.cjs +335 -1
- package/dist/common/data/day.cjs.map +1 -1
- package/dist/common/data/day.mjs +305 -1
- package/dist/common/data/day.mjs.map +1 -1
- package/dist/common/data/decimal.cjs +28 -1
- package/dist/common/data/decimal.cjs.map +1 -1
- package/dist/common/data/decimal.mjs +23 -1
- package/dist/common/data/decimal.mjs.map +1 -1
- package/dist/common/data/deep.cjs +57 -1
- package/dist/common/data/deep.cjs.map +1 -1
- package/dist/common/data/deep.mjs +54 -1
- package/dist/common/data/deep.mjs.map +1 -1
- package/dist/common/data/diff.cjs +62 -1
- package/dist/common/data/diff.cjs.map +1 -1
- package/dist/common/data/diff.mjs +60 -1
- package/dist/common/data/diff.mjs.map +1 -1
- package/dist/common/data/distributed.cjs +24 -1
- package/dist/common/data/distributed.cjs.map +1 -1
- package/dist/common/data/distributed.mjs +22 -1
- package/dist/common/data/distributed.mjs.map +1 -1
- package/dist/common/data/format.cjs +63 -1
- package/dist/common/data/format.cjs.map +1 -1
- package/dist/common/data/format.mjs +59 -1
- package/dist/common/data/format.mjs.map +1 -1
- package/dist/common/data/html.cjs +13 -1
- package/dist/common/data/html.cjs.map +1 -1
- package/dist/common/data/html.mjs +10 -1
- package/dist/common/data/html.mjs.map +1 -1
- package/dist/common/data/index.cjs +296 -1
- package/dist/common/data/index.mjs +37 -1
- package/dist/common/data/is.cjs +106 -1
- package/dist/common/data/is.cjs.map +1 -1
- package/dist/common/data/is.mjs +85 -1
- package/dist/common/data/is.mjs.map +1 -1
- package/dist/common/data/json.cjs +70 -1
- package/dist/common/data/json.cjs.map +1 -1
- package/dist/common/data/json.mjs +65 -1
- package/dist/common/data/json.mjs.map +1 -1
- package/dist/common/data/list.cjs +32 -1
- package/dist/common/data/list.cjs.map +1 -1
- package/dist/common/data/list.mjs +27 -1
- package/dist/common/data/list.mjs.map +1 -1
- package/dist/common/data/lru.mjs +1 -1
- package/dist/common/data/math.cjs +79 -1
- package/dist/common/data/math.cjs.map +1 -1
- package/dist/common/data/math.mjs +65 -1
- package/dist/common/data/math.mjs.map +1 -1
- package/dist/common/data/message.cjs +30 -1
- package/dist/common/data/message.cjs.map +1 -1
- package/dist/common/data/message.mjs +28 -1
- package/dist/common/data/message.mjs.map +1 -1
- package/dist/common/data/object-changes.cjs +66 -1
- package/dist/common/data/object-changes.cjs.map +1 -1
- package/dist/common/data/object-changes.mjs +63 -1
- package/dist/common/data/object-changes.mjs.map +1 -1
- package/dist/common/data/object.cjs +112 -1
- package/dist/common/data/object.cjs.map +1 -1
- package/dist/common/data/object.mjs +104 -1
- package/dist/common/data/object.mjs.map +1 -1
- package/dist/common/data/orderby.cjs +42 -1
- package/dist/common/data/orderby.cjs.map +1 -1
- package/dist/common/data/orderby.mjs +37 -1
- package/dist/common/data/orderby.mjs.map +1 -1
- package/dist/common/data/path.cjs +26 -1
- package/dist/common/data/path.cjs.map +1 -1
- package/dist/common/data/path.mjs +25 -1
- package/dist/common/data/path.mjs.map +1 -1
- package/dist/common/data/regexp.cjs +12 -1
- package/dist/common/data/regexp.cjs.map +1 -1
- package/dist/common/data/regexp.mjs +10 -1
- package/dist/common/data/regexp.mjs.map +1 -1
- package/dist/common/data/rounding.cjs +107 -1
- package/dist/common/data/rounding.cjs.map +1 -1
- package/dist/common/data/rounding.mjs +95 -1
- package/dist/common/data/rounding.mjs.map +1 -1
- package/dist/common/data/signal.cjs +39 -1
- package/dist/common/data/signal.cjs.map +1 -1
- package/dist/common/data/signal.mjs +38 -1
- package/dist/common/data/signal.mjs.map +1 -1
- package/dist/common/data/sortable.cjs +35 -1
- package/dist/common/data/sortable.cjs.map +1 -1
- package/dist/common/data/sortable.mjs +31 -1
- package/dist/common/data/sortable.mjs.map +1 -1
- package/dist/common/data/sorted.cjs +54 -1
- package/dist/common/data/sorted.cjs.map +1 -1
- package/dist/common/data/sorted.mjs +53 -1
- package/dist/common/data/sorted.mjs.map +1 -1
- package/dist/common/data/string-deburr.cjs +240 -1
- package/dist/common/data/string-deburr.cjs.map +1 -1
- package/dist/common/data/string-deburr.mjs +238 -1
- package/dist/common/data/string-deburr.mjs.map +1 -1
- package/dist/common/data/string-hash-fnv.cjs +69 -1
- package/dist/common/data/string-hash-fnv.cjs.map +1 -1
- package/dist/common/data/string-hash-fnv.mjs +67 -1
- package/dist/common/data/string-hash-fnv.mjs.map +1 -1
- package/dist/common/data/string-hash-pool.cjs +28 -1
- package/dist/common/data/string-hash-pool.cjs.map +1 -1
- package/dist/common/data/string-hash-pool.mjs +27 -1
- package/dist/common/data/string-hash-pool.mjs.map +1 -1
- package/dist/common/data/url.cjs +98 -2
- package/dist/common/data/url.cjs.map +1 -1
- package/dist/common/data/url.mjs +91 -2
- package/dist/common/data/url.mjs.map +1 -1
- package/dist/common/data/utils.cjs +118 -1
- package/dist/common/data/utils.cjs.map +1 -1
- package/dist/common/data/utils.mjs +107 -1
- package/dist/common/data/utils.mjs.map +1 -1
- package/dist/common/data/wordlist.cjs +531 -1
- package/dist/common/data/wordlist.cjs.map +1 -1
- package/dist/common/data/wordlist.mjs +529 -1
- package/dist/common/data/wordlist.mjs.map +1 -1
- package/dist/common/data/xrx.cjs +96 -1
- package/dist/common/data/xrx.cjs.map +1 -1
- package/dist/common/data/xrx.mjs +92 -1
- package/dist/common/data/xrx.mjs.map +1 -1
- package/dist/common/dispose-defer.cjs +133 -1
- package/dist/common/dispose-defer.cjs.map +1 -1
- package/dist/common/dispose-defer.mjs +130 -1
- package/dist/common/dispose-defer.mjs.map +1 -1
- package/dist/common/dispose-types.mjs +1 -1
- package/dist/common/dispose-utils.cjs +113 -1
- package/dist/common/dispose-utils.cjs.map +1 -1
- package/dist/common/dispose-utils.mjs +106 -1
- package/dist/common/dispose-utils.mjs.map +1 -1
- package/dist/common/exec/index.cjs +24 -1
- package/dist/common/exec/index.d.cts +1 -1
- package/dist/common/exec/index.d.mts +1 -1
- package/dist/common/exec/index.mjs +8 -1
- package/dist/common/exec/mutex.cjs +44 -1
- package/dist/common/exec/mutex.cjs.map +1 -1
- package/dist/common/exec/mutex.mjs +42 -1
- package/dist/common/exec/mutex.mjs.map +1 -1
- package/dist/common/exec/pool.cjs +181 -1
- package/dist/common/exec/pool.cjs.map +1 -1
- package/dist/common/exec/pool.d.cts +1 -1
- package/dist/common/exec/pool.d.mts +1 -1
- package/dist/common/exec/pool.mjs +180 -1
- package/dist/common/exec/pool.mjs.map +1 -1
- package/dist/common/exec/progress.cjs +149 -1
- package/dist/common/exec/progress.cjs.map +1 -1
- package/dist/common/exec/progress.d.cts +1 -1
- package/dist/common/exec/progress.d.mts +1 -1
- package/dist/common/exec/progress.mjs +148 -1
- package/dist/common/exec/progress.mjs.map +1 -1
- package/dist/common/exec/promise.cjs +113 -1
- package/dist/common/exec/promise.cjs.map +1 -1
- package/dist/common/exec/promise.mjs +103 -1
- package/dist/common/exec/promise.mjs.map +1 -1
- package/dist/common/exec/queue.cjs +125 -1
- package/dist/common/exec/queue.cjs.map +1 -1
- package/dist/common/exec/queue.d.cts +1 -1
- package/dist/common/exec/queue.d.mts +1 -1
- package/dist/common/exec/queue.mjs +124 -1
- package/dist/common/exec/queue.mjs.map +1 -1
- package/dist/common/exec/throttle-debounce.cjs +114 -1
- package/dist/common/exec/throttle-debounce.cjs.map +1 -1
- package/dist/common/exec/throttle-debounce.mjs +112 -1
- package/dist/common/exec/throttle-debounce.mjs.map +1 -1
- package/dist/common/global.cjs +22 -1
- package/dist/common/global.cjs.map +1 -1
- package/dist/common/global.mjs +19 -1
- package/dist/common/global.mjs.map +1 -1
- package/dist/common/index.cjs +559 -1
- package/dist/common/index.d.cts +1 -1
- package/dist/common/index.d.mts +1 -1
- package/dist/common/index.mjs +89 -1
- package/dist/common/localhost.cjs +16 -1
- package/dist/common/localhost.cjs.map +1 -1
- package/dist/common/localhost.mjs +14 -1
- package/dist/common/localhost.mjs.map +1 -1
- package/dist/common/log/index.cjs +34 -1
- package/dist/common/log/index.mjs +11 -1
- package/dist/common/log/log-base.cjs +40 -1
- package/dist/common/log/log-base.cjs.map +1 -1
- package/dist/common/log/log-base.mjs +31 -1
- package/dist/common/log/log-base.mjs.map +1 -1
- package/dist/common/log/log-colors.cjs +92 -1
- package/dist/common/log/log-colors.cjs.map +1 -1
- package/dist/common/log/log-colors.mjs +90 -1
- package/dist/common/log/log-colors.mjs.map +1 -1
- package/dist/common/log/log-config.cjs +15 -1
- package/dist/common/log/log-config.cjs.map +1 -1
- package/dist/common/log/log-config.mjs +14 -1
- package/dist/common/log/log-config.mjs.map +1 -1
- package/dist/common/log/log-console-capture.cjs +33 -1
- package/dist/common/log/log-console-capture.cjs.map +1 -1
- package/dist/common/log/log-console-capture.mjs +32 -1
- package/dist/common/log/log-console-capture.mjs.map +1 -1
- package/dist/common/log/log-console-original.cjs +27 -1
- package/dist/common/log/log-console-original.cjs.map +1 -1
- package/dist/common/log/log-console-original.mjs +26 -1
- package/dist/common/log/log-console-original.mjs.map +1 -1
- package/dist/common/log/log-console.cjs +39 -1
- package/dist/common/log/log-console.cjs.map +1 -1
- package/dist/common/log/log-console.mjs +38 -1
- package/dist/common/log/log-console.mjs.map +1 -1
- package/dist/common/log/log-context.cjs +109 -1
- package/dist/common/log/log-context.cjs.map +1 -1
- package/dist/common/log/log-context.mjs +108 -1
- package/dist/common/log/log-context.mjs.map +1 -1
- package/dist/common/log/log-filter.cjs +80 -1
- package/dist/common/log/log-filter.cjs.map +1 -1
- package/dist/common/log/log-filter.mjs +75 -1
- package/dist/common/log/log-filter.mjs.map +1 -1
- package/dist/common/log/log-memory.cjs +45 -1
- package/dist/common/log/log-memory.cjs.map +1 -1
- package/dist/common/log/log-memory.mjs +43 -1
- package/dist/common/log/log-memory.mjs.map +1 -1
- package/dist/common/log/log-noop.cjs +17 -1
- package/dist/common/log/log-noop.cjs.map +1 -1
- package/dist/common/log/log-noop.mjs +15 -1
- package/dist/common/log/log-noop.mjs.map +1 -1
- package/dist/common/log/log.cjs +46 -1
- package/dist/common/log/log.cjs.map +1 -1
- package/dist/common/log/log.mjs +43 -1
- package/dist/common/log/log.mjs.map +1 -1
- package/dist/common/msg/channel-debug.cjs +17 -1
- package/dist/common/msg/channel-debug.cjs.map +1 -1
- package/dist/common/msg/channel-debug.d.cts +1 -1
- package/dist/common/msg/channel-debug.d.mts +1 -1
- package/dist/common/msg/channel-debug.mjs +16 -1
- package/dist/common/msg/channel-debug.mjs.map +1 -1
- package/dist/common/msg/channel-local.cjs +28 -1
- package/dist/common/msg/channel-local.cjs.map +1 -1
- package/dist/common/msg/channel-local.d.cts +1 -1
- package/dist/common/msg/channel-local.d.mts +1 -1
- package/dist/common/msg/channel-local.mjs +26 -1
- package/dist/common/msg/channel-local.mjs.map +1 -1
- package/dist/common/msg/channel-resilient.cjs +63 -1
- package/dist/common/msg/channel-resilient.cjs.map +1 -1
- package/dist/common/msg/channel-resilient.d.cts +1 -1
- package/dist/common/msg/channel-resilient.d.mts +1 -1
- package/dist/common/msg/channel-resilient.mjs +62 -1
- package/dist/common/msg/channel-resilient.mjs.map +1 -1
- package/dist/common/msg/channel-wkwebview.cjs +35 -1
- package/dist/common/msg/channel-wkwebview.cjs.map +1 -1
- package/dist/common/msg/channel-wkwebview.d.cts +2 -1
- package/dist/common/msg/channel-wkwebview.d.mts +2 -1
- package/dist/common/msg/channel-wkwebview.mjs +34 -1
- package/dist/common/msg/channel-wkwebview.mjs.map +1 -1
- package/dist/common/msg/channel.cjs +23 -1
- package/dist/common/msg/channel.cjs.map +1 -1
- package/dist/common/msg/channel.d.cts +1 -1
- package/dist/common/msg/channel.d.mts +1 -1
- package/dist/common/msg/channel.mjs +22 -1
- package/dist/common/msg/channel.mjs.map +1 -1
- package/dist/common/msg/emitter.cjs +141 -1
- package/dist/common/msg/emitter.cjs.map +1 -1
- package/dist/common/msg/emitter.d.cts +1 -1
- package/dist/common/msg/emitter.d.mts +1 -1
- package/dist/common/msg/emitter.mjs +139 -1
- package/dist/common/msg/emitter.mjs.map +1 -1
- package/dist/common/msg/encoder.cjs +38 -1
- package/dist/common/msg/encoder.cjs.map +1 -1
- package/dist/common/msg/encoder.mjs +35 -1
- package/dist/common/msg/encoder.mjs.map +1 -1
- package/dist/common/msg/index.cjs +28 -1
- package/dist/common/msg/index.d.cts +1 -1
- package/dist/common/msg/index.d.mts +1 -1
- package/dist/common/msg/index.mjs +11 -1
- package/dist/common/msg/messages.cjs +135 -1
- package/dist/common/msg/messages.cjs.map +1 -1
- package/dist/common/msg/messages.d.cts +1 -1
- package/dist/common/msg/messages.d.mts +1 -1
- package/dist/common/msg/messages.mjs +133 -1
- package/dist/common/msg/messages.mjs.map +1 -1
- package/dist/common/msg/pipe.mjs +1 -1
- package/dist/common/msg/pubsub.cjs +78 -1
- package/dist/common/msg/pubsub.cjs.map +1 -1
- package/dist/common/msg/pubsub.d.cts +1 -1
- package/dist/common/msg/pubsub.d.mts +1 -1
- package/dist/common/msg/pubsub.mjs +76 -1
- package/dist/common/msg/pubsub.mjs.map +1 -1
- package/dist/common/msg/rpc.cjs +142 -1
- package/dist/common/msg/rpc.cjs.map +1 -1
- package/dist/common/msg/rpc.mjs +139 -1
- package/dist/common/msg/rpc.mjs.map +1 -1
- package/dist/common/network.cjs +129 -1
- package/dist/common/network.cjs.map +1 -1
- package/dist/common/network.mjs +122 -1
- package/dist/common/network.mjs.map +1 -1
- package/dist/common/platform.cjs +92 -1
- package/dist/common/platform.cjs.map +1 -1
- package/dist/common/platform.mjs +84 -1
- package/dist/common/platform.mjs.map +1 -1
- package/dist/common/schema/_sandbox/sandbox-inherit.mjs +1 -1
- package/dist/common/schema/_sandbox/sandbox.mjs +1 -1
- package/dist/common/schema/_sandbox/sandbox.xspec.mjs +1 -1
- package/dist/common/schema/export-json-schema.cjs +54 -1
- package/dist/common/schema/export-json-schema.cjs.map +1 -1
- package/dist/common/schema/export-json-schema.mjs +52 -1
- package/dist/common/schema/export-json-schema.mjs.map +1 -1
- package/dist/common/schema/export-swift.cjs +30 -2
- package/dist/common/schema/export-swift.cjs.map +1 -1
- package/dist/common/schema/export-swift.mjs +29 -2
- package/dist/common/schema/export-swift.mjs.map +1 -1
- package/dist/common/schema/export-typescript.cjs +20 -2
- package/dist/common/schema/export-typescript.cjs.map +1 -1
- package/dist/common/schema/export-typescript.mjs +19 -2
- package/dist/common/schema/export-typescript.mjs.map +1 -1
- package/dist/common/schema/index.cjs +55 -1
- package/dist/common/schema/index.mjs +12 -1
- package/dist/common/schema/parse-args.cjs +62 -2
- package/dist/common/schema/parse-args.cjs.map +1 -1
- package/dist/common/schema/parse-args.mjs +60 -2
- package/dist/common/schema/parse-args.mjs.map +1 -1
- package/dist/common/schema/parse-env.cjs +48 -3
- package/dist/common/schema/parse-env.cjs.map +1 -1
- package/dist/common/schema/parse-env.mjs +46 -3
- package/dist/common/schema/parse-env.mjs.map +1 -1
- package/dist/common/schema/parse-object.cjs +122 -1
- package/dist/common/schema/parse-object.cjs.map +1 -1
- package/dist/common/schema/parse-object.mjs +119 -1
- package/dist/common/schema/parse-object.mjs.map +1 -1
- package/dist/common/schema/schema-standard.mjs +1 -1
- package/dist/common/schema/schema.cjs +423 -1
- package/dist/common/schema/schema.cjs.map +1 -1
- package/dist/common/schema/schema.mjs +404 -1
- package/dist/common/schema/schema.mjs.map +1 -1
- package/dist/common/schema/serialize.cjs +109 -1
- package/dist/common/schema/serialize.cjs.map +1 -1
- package/dist/common/schema/serialize.mjs +107 -1
- package/dist/common/schema/serialize.mjs.map +1 -1
- package/dist/common/schema/type-test.mjs +1 -1
- package/dist/common/schema/utils.cjs +25 -1
- package/dist/common/schema/utils.cjs.map +1 -1
- package/dist/common/schema/utils.mjs +19 -1
- package/dist/common/schema/utils.mjs.map +1 -1
- package/dist/common/schema/z-collection.cjs +51 -1
- package/dist/common/schema/z-collection.mjs +27 -1
- package/dist/common/schema/z.cjs +9 -1
- package/dist/common/schema/z.mjs +3 -1
- package/dist/common/storage/index.cjs +4 -1
- package/dist/common/storage/index.mjs +3 -1
- package/dist/common/storage/memstorage.cjs +26 -1
- package/dist/common/storage/memstorage.cjs.map +1 -1
- package/dist/common/storage/memstorage.mjs +25 -1
- package/dist/common/storage/memstorage.mjs.map +1 -1
- package/dist/common/test.cjs +14 -1
- package/dist/common/test.cjs.map +1 -1
- package/dist/common/test.mjs +13 -1
- package/dist/common/test.mjs.map +1 -1
- package/dist/common/time.cjs +220 -1
- package/dist/common/time.cjs.map +1 -1
- package/dist/common/time.mjs +194 -1
- package/dist/common/time.mjs.map +1 -1
- package/dist/common/timeout.cjs +27 -1
- package/dist/common/timeout.cjs.map +1 -1
- package/dist/common/timeout.mjs +25 -1
- package/dist/common/timeout.mjs.map +1 -1
- package/dist/common/types.mjs +1 -1
- package/dist/common/utils.cjs +7 -1
- package/dist/common/utils.cjs.map +1 -1
- package/dist/common/utils.mjs +5 -1
- package/dist/common/utils.mjs.map +1 -1
- package/dist/common/uuid.cjs +307 -1
- package/dist/common/uuid.cjs.map +1 -1
- package/dist/common/uuid.mjs +284 -1
- package/dist/common/uuid.mjs.map +1 -1
- package/dist/{index-DHXVOH8h.d.cts → index-CFkMqHvX.d.cts} +1 -2
- package/dist/{index-DMaPyx9O.d.mts → index-C_3Y_s6f.d.mts} +1 -2
- package/dist/index.all.cjs +641 -1
- package/dist/index.all.d.cts +1 -1
- package/dist/index.all.d.mts +1 -1
- package/dist/index.all.mjs +113 -1
- package/dist/index.browser.cjs +576 -1
- package/dist/index.browser.d.cts +1 -1
- package/dist/index.browser.d.mts +1 -1
- package/dist/index.browser.mjs +98 -1
- package/dist/index.jsr.cjs +57 -1
- package/dist/index.jsr.mjs +6 -1
- package/dist/index.node.cjs +628 -1
- package/dist/index.node.d.cts +1 -1
- package/dist/index.node.d.mts +1 -1
- package/dist/index.node.mjs +106 -1
- package/dist/node/args.cjs +56 -1
- package/dist/node/args.cjs.map +1 -1
- package/dist/node/args.mjs +53 -1
- package/dist/node/args.mjs.map +1 -1
- package/dist/node/clipboard.cjs +18 -1
- package/dist/node/clipboard.cjs.map +1 -1
- package/dist/node/clipboard.mjs +16 -1
- package/dist/node/clipboard.mjs.map +1 -1
- package/dist/node/crypto.cjs +28 -1
- package/dist/node/crypto.cjs.map +1 -1
- package/dist/node/crypto.mjs +24 -1
- package/dist/node/crypto.mjs.map +1 -1
- package/dist/node/env.cjs +100 -4
- package/dist/node/env.cjs.map +1 -1
- package/dist/node/env.mjs +90 -4
- package/dist/node/env.mjs.map +1 -1
- package/dist/node/files-async.cjs +66 -1
- package/dist/node/files-async.cjs.map +1 -1
- package/dist/node/files-async.mjs +60 -1
- package/dist/node/files-async.mjs.map +1 -1
- package/dist/node/files.cjs +52 -1
- package/dist/node/files.cjs.map +1 -1
- package/dist/node/files.mjs +46 -1
- package/dist/node/files.mjs.map +1 -1
- package/dist/node/filestorage.cjs +100 -1
- package/dist/node/filestorage.cjs.map +1 -1
- package/dist/node/filestorage.mjs +97 -1
- package/dist/node/filestorage.mjs.map +1 -1
- package/dist/node/fs.cjs +119 -1
- package/dist/node/fs.cjs.map +1 -1
- package/dist/node/fs.mjs +101 -1
- package/dist/node/fs.mjs.map +1 -1
- package/dist/node/glob.cjs +75 -1
- package/dist/node/glob.cjs.map +1 -1
- package/dist/node/glob.mjs +73 -1
- package/dist/node/glob.mjs.map +1 -1
- package/dist/node/index.cjs +66 -1
- package/dist/node/index.mjs +16 -1
- package/dist/node/log/index.cjs +20 -1
- package/dist/node/log/index.mjs +7 -1
- package/dist/node/log/log-context-node.cjs +39 -1
- package/dist/node/log/log-context-node.cjs.map +1 -1
- package/dist/node/log/log-context-node.mjs +35 -1
- package/dist/node/log/log-context-node.mjs.map +1 -1
- package/dist/node/log/log-file-rotation.cjs +71 -1
- package/dist/node/log/log-file-rotation.cjs.map +1 -1
- package/dist/node/log/log-file-rotation.mjs +68 -1
- package/dist/node/log/log-file-rotation.mjs.map +1 -1
- package/dist/node/log/log-file.cjs +57 -1
- package/dist/node/log/log-file.cjs.map +1 -1
- package/dist/node/log/log-file.mjs +54 -1
- package/dist/node/log/log-file.mjs.map +1 -1
- package/dist/node/log/log-node.cjs +162 -1
- package/dist/node/log/log-node.cjs.map +1 -1
- package/dist/node/log/log-node.mjs +155 -1
- package/dist/node/log/log-node.mjs.map +1 -1
- package/dist/node/log/log-rotation.cjs +543 -3
- package/dist/node/log/log-rotation.cjs.map +1 -1
- package/dist/node/log/log-rotation.mjs +538 -3
- package/dist/node/log/log-rotation.mjs.map +1 -1
- package/dist/node/log/log-util.cjs +69 -3
- package/dist/node/log/log-util.cjs.map +1 -1
- package/dist/node/log/log-util.mjs +63 -3
- package/dist/node/log/log-util.mjs.map +1 -1
- package/dist/node/open-browser.cjs +20 -1
- package/dist/node/open-browser.cjs.map +1 -1
- package/dist/node/open-browser.mjs +18 -1
- package/dist/node/open-browser.mjs.map +1 -1
- package/package.json +15 -15
- package/src/common/schema/README.md +247 -66
- package/src/eslint-defaults.js +4 -0
- package/src/index.spec.ts +6 -6
- package/dist/bin-Ce3i6ABn.cjs +0 -3
- package/dist/bin-SPdenYkw.mjs +0 -3
- package/dist/chunk-0Lt9GpW0.mjs +0 -1
- package/dist/chunk-D-qHiVGv.cjs +0 -1
- package/src/common/schema/README-SCHEMA.md +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-env.mjs","names":[],"sources":["../../../src/common/schema/parse-env.ts"],"sourcesContent":["import type { Type } from './schema'\nimport { assert } from '../assert'\nimport { fromCamelCase } from '../data/camelcase'\nimport { valueToBoolean, valueToBooleanNotFalse, valueToInteger } from '../data/convert'\nimport { objectMap } from '../data/object'\nimport { schemaParseObject } from './parse-object'\nimport { isSchemaObjectFlat } from './utils'\n\ndeclare module './schema' {\n interface TypeMeta {\n envDesc?: string\n envPrivate?: boolean // will not be documented\n envSkip?: boolean // will not be included in env parsing\n }\n}\n\nexport type SchemaEnvType = Record<string, any>\n\nexport interface SchemaEnvOptions<T> {\n existing?: Partial<T> // if true, will only parse existing env variables\n env?: SchemaEnvType\n prefix?: string\n prefixOptional?: boolean // if true, prefix is optional\n}\n\nexport function parseSchemaEnv<T>(schema: Type<T>, opt?: SchemaEnvOptions<T>): T {\n assert(schema?._object, 'schema should be of type object')\n assert(isSchemaObjectFlat(schema), 'schema should be a flat object')\n\n const {\n // eslint-disable-next-line node/prefer-global/process\n env = (process?.env ?? {}) as SchemaEnvType,\n prefix = '',\n prefixOptional = false,\n } = opt ?? {}\n const pl = prefix.length\n const existing: any = opt?.existing ?? {}\n\n return objectMap(schema._object, (key, schema) => {\n const defaultValue = existing[key] ?? schema._default\n if (schema._meta?.envSkip)\n return defaultValue\n\n const envKey = fromCamelCase(key, '_').toUpperCase()\n const envKeyWithPrefix = prefix + fromCamelCase(key, '_').toUpperCase()\n\n let value: any = env[envKey]\n\n if (pl > 0) {\n if (prefixOptional === true) {\n value = env[envKeyWithPrefix] ?? value\n }\n else {\n value = env[envKeyWithPrefix]\n }\n }\n\n if (value === undefined) {\n return defaultValue\n }\n\n if (schema.type === 'number') {\n value = valueToInteger(value, schema._default)\n }\n else if (schema.type === 'boolean') {\n if (schema._default === true)\n value = valueToBooleanNotFalse(value)\n else\n value = valueToBoolean(value, false)\n }\n return schemaParseObject(schema, value)\n }) as T\n}\n\nexport function stringFromSchemaEnv<T>(schema: Type<T>, prefix = '', commentOut = false, showPrivate = false): string {\n assert(isSchemaObjectFlat(schema), 'schema should be a flat object')\n const lines: string[] = []\n objectMap(schema._object!, (key, schema) => {\n if ((schema._meta?.envPrivate || schema._meta?.envSkip) && !showPrivate)\n return\n const desc = schema._meta?.envDesc ?? schema._meta?.desc\n if (desc) {\n desc.trim().split('\\n').forEach((line: string) => {\n lines.push(`# ${line.trim()}`)\n })\n }\n lines.push(`${commentOut ? '# ' : ''}${prefix + fromCamelCase(key, '_').toUpperCase()}=${schema._default ?? ''}`)\n lines.push('')\n }) as T\n return lines.join('\\n')\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"parse-env.mjs","names":[],"sources":["../../../src/common/schema/parse-env.ts"],"sourcesContent":["import type { Type } from './schema'\nimport { assert } from '../assert'\nimport { fromCamelCase } from '../data/camelcase'\nimport { valueToBoolean, valueToBooleanNotFalse, valueToInteger } from '../data/convert'\nimport { objectMap } from '../data/object'\nimport { schemaParseObject } from './parse-object'\nimport { isSchemaObjectFlat } from './utils'\n\ndeclare module './schema' {\n interface TypeMeta {\n envDesc?: string\n envPrivate?: boolean // will not be documented\n envSkip?: boolean // will not be included in env parsing\n }\n}\n\nexport type SchemaEnvType = Record<string, any>\n\nexport interface SchemaEnvOptions<T> {\n existing?: Partial<T> // if true, will only parse existing env variables\n env?: SchemaEnvType\n prefix?: string\n prefixOptional?: boolean // if true, prefix is optional\n}\n\nexport function parseSchemaEnv<T>(schema: Type<T>, opt?: SchemaEnvOptions<T>): T {\n assert(schema?._object, 'schema should be of type object')\n assert(isSchemaObjectFlat(schema), 'schema should be a flat object')\n\n const {\n // eslint-disable-next-line node/prefer-global/process\n env = (process?.env ?? {}) as SchemaEnvType,\n prefix = '',\n prefixOptional = false,\n } = opt ?? {}\n const pl = prefix.length\n const existing: any = opt?.existing ?? {}\n\n return objectMap(schema._object, (key, schema) => {\n const defaultValue = existing[key] ?? schema._default\n if (schema._meta?.envSkip)\n return defaultValue\n\n const envKey = fromCamelCase(key, '_').toUpperCase()\n const envKeyWithPrefix = prefix + fromCamelCase(key, '_').toUpperCase()\n\n let value: any = env[envKey]\n\n if (pl > 0) {\n if (prefixOptional === true) {\n value = env[envKeyWithPrefix] ?? value\n }\n else {\n value = env[envKeyWithPrefix]\n }\n }\n\n if (value === undefined) {\n return defaultValue\n }\n\n if (schema.type === 'number') {\n value = valueToInteger(value, schema._default)\n }\n else if (schema.type === 'boolean') {\n if (schema._default === true)\n value = valueToBooleanNotFalse(value)\n else\n value = valueToBoolean(value, false)\n }\n return schemaParseObject(schema, value)\n }) as T\n}\n\nexport function stringFromSchemaEnv<T>(schema: Type<T>, prefix = '', commentOut = false, showPrivate = false): string {\n assert(isSchemaObjectFlat(schema), 'schema should be a flat object')\n const lines: string[] = []\n objectMap(schema._object!, (key, schema) => {\n if ((schema._meta?.envPrivate || schema._meta?.envSkip) && !showPrivate)\n return\n const desc = schema._meta?.envDesc ?? schema._meta?.desc\n if (desc) {\n desc.trim().split('\\n').forEach((line: string) => {\n lines.push(`# ${line.trim()}`)\n })\n }\n lines.push(`${commentOut ? '# ' : ''}${prefix + fromCamelCase(key, '_').toUpperCase()}=${schema._default ?? ''}`)\n lines.push('')\n }) as T\n return lines.join('\\n')\n}\n"],"mappings":";;;;;;;;AAyBA,SAAgB,eAAkB,QAAiB,KAA8B;AAC/E,QAAO,QAAQ,SAAS,kCAAkC;AAC1D,QAAO,mBAAmB,OAAO,EAAE,iCAAiC;CAEpE,MAAM,EAEJ,MAAO,SAAS,OAAO,EAAE,EACzB,SAAS,IACT,iBAAiB,UACf,OAAO,EAAE;CACb,MAAM,KAAK,OAAO;CAClB,MAAM,WAAgB,KAAK,YAAY,EAAE;AAEzC,QAAO,UAAU,OAAO,UAAU,KAAK,WAAW;EAChD,MAAM,eAAe,SAAS,QAAQ,OAAO;AAC7C,MAAI,OAAO,OAAO,QAChB,QAAO;EAET,MAAM,SAAS,cAAc,KAAK,IAAI,CAAC,aAAa;EACpD,MAAM,mBAAmB,SAAS,cAAc,KAAK,IAAI,CAAC,aAAa;EAEvE,IAAI,QAAa,IAAI;AAErB,MAAI,KAAK,EACP,KAAI,mBAAmB,KACrB,SAAQ,IAAI,qBAAqB;MAGjC,SAAQ,IAAI;AAIhB,MAAI,UAAU,OACZ,QAAO;AAGT,MAAI,OAAO,SAAS,SAClB,SAAQ,eAAe,OAAO,OAAO,SAAS;WAEvC,OAAO,SAAS,UACvB,KAAI,OAAO,aAAa,KACtB,SAAQ,uBAAuB,MAAM;MAErC,SAAQ,eAAe,OAAO,MAAM;AAExC,SAAO,kBAAkB,QAAQ,MAAM;GACvC;;AAGJ,SAAgB,oBAAuB,QAAiB,SAAS,IAAI,aAAa,OAAO,cAAc,OAAe;AACpH,QAAO,mBAAmB,OAAO,EAAE,iCAAiC;CACpE,MAAM,QAAkB,EAAE;AAC1B,WAAU,OAAO,UAAW,KAAK,WAAW;AAC1C,OAAK,OAAO,OAAO,cAAc,OAAO,OAAO,YAAY,CAAC,YAC1D;EACF,MAAM,OAAO,OAAO,OAAO,WAAW,OAAO,OAAO;AACpD,MAAI,KACF,MAAK,MAAM,CAAC,MAAM,KAAK,CAAC,SAAS,SAAiB;AAChD,SAAM,KAAK,KAAK,KAAK,MAAM,GAAG;IAC9B;AAEJ,QAAM,KAAK,GAAG,aAAa,OAAO,KAAK,SAAS,cAAc,KAAK,IAAI,CAAC,aAAa,CAAC,GAAG,OAAO,YAAY,KAAK;AACjH,QAAM,KAAK,GAAG;GACd;AACF,QAAO,MAAM,KAAK,KAAK"}
|
|
@@ -1,2 +1,123 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
+
const require_common_data_is = require('../data/is.cjs');
|
|
3
|
+
const require_common_data_array = require('../data/array.cjs');
|
|
4
|
+
const require_common_data_convert = require('../data/convert.cjs');
|
|
5
|
+
|
|
6
|
+
//#region src/common/schema/parse-object.ts
|
|
7
|
+
function schemaCreateObject(schema) {
|
|
8
|
+
if (schema._default !== void 0) return require_common_data_is.isFunction(schema._default) ? schema._default(schema) : schema._default;
|
|
9
|
+
if (schema._optional) return;
|
|
10
|
+
if (schema._object) {
|
|
11
|
+
const obj = {};
|
|
12
|
+
for (const key in schema._object) {
|
|
13
|
+
const propSchema = schema._object[key];
|
|
14
|
+
const value = schemaCreateObject(propSchema);
|
|
15
|
+
if (value !== void 0) obj[key] = value;
|
|
16
|
+
}
|
|
17
|
+
return obj;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function schemaValidateObject(schema, obj, opt) {
|
|
21
|
+
const messages = opt?.messages || [];
|
|
22
|
+
function addMessage(message, valid = false) {
|
|
23
|
+
messages.push({
|
|
24
|
+
path: `.${opt?.path ?? ""}`,
|
|
25
|
+
message,
|
|
26
|
+
valid,
|
|
27
|
+
type: schema.type
|
|
28
|
+
});
|
|
29
|
+
return valid;
|
|
30
|
+
}
|
|
31
|
+
if (obj == null && schema._optional) return addMessage("Optional", true);
|
|
32
|
+
if (schema._object) {
|
|
33
|
+
if (opt?.allowExtra !== true) {
|
|
34
|
+
const schemaKeys = Object.keys(schema._object);
|
|
35
|
+
const missingKeys = require_common_data_array.arrayMinus(Object.keys(obj || {}), schemaKeys);
|
|
36
|
+
if (missingKeys.length > 0) return addMessage(`Extra properties: ${missingKeys.join(", ")}`, false);
|
|
37
|
+
}
|
|
38
|
+
for (const key in schema._object) {
|
|
39
|
+
const propSchema = schema._object[key];
|
|
40
|
+
if (!schemaValidateObject(propSchema, obj[key], {
|
|
41
|
+
...opt,
|
|
42
|
+
path: opt?.path ? `${opt.path}.${key}` : key,
|
|
43
|
+
messages
|
|
44
|
+
})) return addMessage(`Invalid property '${key}'`, false);
|
|
45
|
+
}
|
|
46
|
+
return addMessage("Object valid", true);
|
|
47
|
+
}
|
|
48
|
+
if (require_common_data_is.isFunction(schema._check)) return addMessage("Check", schema._check(obj));
|
|
49
|
+
return addMessage("Primitive valid", false);
|
|
50
|
+
}
|
|
51
|
+
function schemaParseObject(schema, obj, opt) {
|
|
52
|
+
const messages = opt?.messages || [];
|
|
53
|
+
function addMessage(message, valid = false) {
|
|
54
|
+
messages.push({
|
|
55
|
+
path: `.${opt?.path ?? ""}`,
|
|
56
|
+
message,
|
|
57
|
+
valid,
|
|
58
|
+
type: schema.type
|
|
59
|
+
});
|
|
60
|
+
return valid;
|
|
61
|
+
}
|
|
62
|
+
if (obj == null) {
|
|
63
|
+
if (schema._optional) {
|
|
64
|
+
addMessage("Optional", true);
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
if (schema._default !== void 0 && opt?.skipDefault !== true) {
|
|
68
|
+
addMessage("Default", true);
|
|
69
|
+
return require_common_data_is.isFunction(schema._default) ? schema._default(schema) : schema._default;
|
|
70
|
+
}
|
|
71
|
+
if (schema._object) obj = {};
|
|
72
|
+
}
|
|
73
|
+
if (schema._object) {
|
|
74
|
+
const newObj = {};
|
|
75
|
+
const shape = schema._object;
|
|
76
|
+
for (const key in shape) {
|
|
77
|
+
const propSchema = shape[key];
|
|
78
|
+
const result = schemaParseObject(propSchema, obj[key], {
|
|
79
|
+
...opt,
|
|
80
|
+
path: opt?.path ? `${opt.path}.${key}` : key,
|
|
81
|
+
messages
|
|
82
|
+
});
|
|
83
|
+
if (result !== void 0) newObj[key] = result;
|
|
84
|
+
else if (propSchema._default !== void 0 && opt?.skipDefault !== true) newObj[key] = require_common_data_is.isFunction(propSchema._default) ? propSchema._default(propSchema) : propSchema._default;
|
|
85
|
+
else if (propSchema._optional) {
|
|
86
|
+
if (obj && typeof obj === "object" && key in obj) newObj[key] = void 0;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (opt?.allowExtra && obj && typeof obj === "object") {
|
|
90
|
+
for (const [key, value] of Object.entries(obj)) if (!(key in shape)) newObj[key] = value;
|
|
91
|
+
}
|
|
92
|
+
return newObj;
|
|
93
|
+
}
|
|
94
|
+
if (obj != null) {
|
|
95
|
+
if (schema.type === "string") obj = require_common_data_convert.valueToString(obj);
|
|
96
|
+
else if (schema.type === "boolean") obj = require_common_data_convert.valueToBoolean(obj);
|
|
97
|
+
else if (schema.type === "number") {
|
|
98
|
+
obj = require_common_data_convert.valueToFloat(obj);
|
|
99
|
+
if (Number.isNaN(obj)) {
|
|
100
|
+
addMessage(`Invalid number: ${obj}`, false);
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
} else if (schema.type === "int") {
|
|
104
|
+
obj = require_common_data_convert.valueToInteger(obj);
|
|
105
|
+
if (Number.isNaN(obj)) {
|
|
106
|
+
addMessage(`Invalid number: ${obj}`, false);
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if (require_common_data_is.isFunction(schema._check)) {
|
|
112
|
+
const checkResult = schema._check(obj);
|
|
113
|
+
addMessage("Check", checkResult);
|
|
114
|
+
return checkResult ? obj : void 0;
|
|
115
|
+
}
|
|
116
|
+
return obj;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
//#endregion
|
|
120
|
+
exports.schemaCreateObject = schemaCreateObject;
|
|
121
|
+
exports.schemaParseObject = schemaParseObject;
|
|
122
|
+
exports.schemaValidateObject = schemaValidateObject;
|
|
2
123
|
//# sourceMappingURL=parse-object.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-object.cjs","names":["isFunction","arrayMinus","valueToString","valueToBoolean","valueToFloat","valueToInteger"],"sources":["../../../src/common/schema/parse-object.ts"],"sourcesContent":["import type { Type } from './schema'\nimport { arrayMinus, isFunction, valueToBoolean, valueToFloat, valueToInteger, valueToString } from '../data'\n\nexport function schemaCreateObject<T>(schema: Type<T>): Partial<T> | undefined {\n if (schema._default !== undefined) {\n return isFunction(schema._default) ? schema._default(schema) : schema._default\n }\n\n if (schema._optional) {\n return undefined as any\n }\n\n if (schema._object) {\n const obj: any = {}\n for (const key in schema._object) {\n const propSchema = schema._object[key] as Type<any>\n const value = schemaCreateObject(propSchema)\n if (value !== undefined) {\n obj[key] = value\n }\n }\n return obj\n }\n\n // For non-optional, non-object types without defaults, don't return anything\n // This prevents setting undefined values in the parent object\n return undefined\n}\n\n/**\n * Message for schema validation results.\n * @category Schema\n */\nexport interface SchemaValidateMessage {\n path: string\n message: string\n type: string\n valid: boolean\n}\n\nexport function schemaValidateObject<T>(schema: Type<T>, obj?: any, opt?: {\n path?: string\n messages?: SchemaValidateMessage[]\n allowExtra?: boolean\n}): boolean {\n const messages = opt?.messages || []\n\n function addMessage(message: string, valid: boolean = false) {\n messages.push({ path: `.${opt?.path ?? ''}`, message, valid, type: schema.type })\n return valid\n }\n\n if (obj == null && schema._optional) {\n return addMessage('Optional', true)\n }\n\n if (schema._object) {\n if (opt?.allowExtra !== true) {\n const schemaKeys = Object.keys(schema._object)\n const objKeys = Object.keys(obj || {})\n const missingKeys = arrayMinus(objKeys, schemaKeys)\n if (missingKeys.length > 0) {\n return addMessage(`Extra properties: ${missingKeys.join(', ')}`, false)\n }\n }\n\n for (const key in schema._object) {\n const propSchema = schema._object[key] as any\n if (!schemaValidateObject(\n propSchema,\n obj[key] as any,\n {\n ...opt,\n path: opt?.path ? `${opt.path}.${key}` : key,\n messages,\n },\n )) { return addMessage(`Invalid property '${key}'`, false) }\n }\n return addMessage('Object valid', true)\n }\n\n if (isFunction(schema._check)) {\n const checkResult = schema._check(obj)\n return addMessage('Check', checkResult)\n }\n\n return addMessage('Primitive valid', false)\n}\n\nexport function schemaParseObject<T>(schema: Type<T>, obj?: any, opt?: {\n path?: string\n messages?: SchemaValidateMessage[]\n\n /// Whether to allow extra properties not defined in the schema\n allowExtra?: boolean\n skipDefault?: boolean\n}): T | undefined {\n const messages = opt?.messages || []\n\n function addMessage(message: string, valid: boolean = false) {\n messages.push({ path: `.${opt?.path ?? ''}`, message, valid, type: schema.type })\n // console.debug({ path: `.${opt?.path ?? ''}`, message, valid, type: schema.type }, obj)\n return valid\n }\n\n if (obj == null) {\n if (schema._optional) {\n addMessage('Optional', true)\n return undefined\n }\n if (schema._default !== undefined && opt?.skipDefault !== true) {\n addMessage('Default', true)\n return isFunction(schema._default) ? schema._default(schema) : schema._default\n }\n // For non-optional objects without explicit defaults, use empty object\n if (schema._object) {\n obj = {}\n }\n }\n\n if (schema._object) {\n const newObj: any = {}\n const shape = schema._object\n for (const key in shape) {\n const propSchema = shape[key] as any\n const result = schemaParseObject(propSchema, obj[key] as any, {\n ...opt,\n path: opt?.path ? `${opt.path}.${key}` : key,\n messages,\n })\n if (result !== undefined) {\n newObj[key] = result\n }\n else if (propSchema._default !== undefined && opt?.skipDefault !== true) {\n newObj[key] = isFunction(propSchema._default) ? propSchema._default(propSchema) : propSchema._default\n }\n else if (propSchema._optional) {\n // Only set undefined for optional properties if they were explicitly provided as undefined\n if (obj && typeof obj === 'object' && key in obj) {\n newObj[key] = undefined\n }\n // Otherwise, don't set the property at all\n }\n // For required properties without defaults, don't set undefined - leave them missing\n }\n\n // Add extra properties if allowExtra is enabled\n if (opt?.allowExtra && obj && typeof obj === 'object') {\n for (const [key, value] of Object.entries(obj)) {\n if (!(key in shape)) {\n newObj[key] = value\n }\n }\n }\n\n return newObj\n }\n\n if (obj != null) {\n if (schema.type === 'string') {\n obj = valueToString(obj)\n }\n else if (schema.type === 'boolean') {\n obj = valueToBoolean(obj)\n }\n else if (schema.type === 'number') {\n obj = valueToFloat(obj)\n if (Number.isNaN(obj)) {\n addMessage(`Invalid number: ${obj}`, false)\n return undefined\n }\n }\n else if (schema.type === 'int') {\n obj = valueToInteger(obj)\n if (Number.isNaN(obj)) {\n addMessage(`Invalid number: ${obj}`, false)\n return undefined\n }\n }\n }\n\n if (isFunction(schema._check)) {\n const checkResult = schema._check(obj)\n addMessage('Check', checkResult)\n return checkResult ? obj : undefined\n }\n\n return obj\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"parse-object.cjs","names":["isFunction","arrayMinus","valueToString","valueToBoolean","valueToFloat","valueToInteger"],"sources":["../../../src/common/schema/parse-object.ts"],"sourcesContent":["import type { Type } from './schema'\nimport { arrayMinus, isFunction, valueToBoolean, valueToFloat, valueToInteger, valueToString } from '../data'\n\nexport function schemaCreateObject<T>(schema: Type<T>): Partial<T> | undefined {\n if (schema._default !== undefined) {\n return isFunction(schema._default) ? schema._default(schema) : schema._default\n }\n\n if (schema._optional) {\n return undefined as any\n }\n\n if (schema._object) {\n const obj: any = {}\n for (const key in schema._object) {\n const propSchema = schema._object[key] as Type<any>\n const value = schemaCreateObject(propSchema)\n if (value !== undefined) {\n obj[key] = value\n }\n }\n return obj\n }\n\n // For non-optional, non-object types without defaults, don't return anything\n // This prevents setting undefined values in the parent object\n return undefined\n}\n\n/**\n * Message for schema validation results.\n * @category Schema\n */\nexport interface SchemaValidateMessage {\n path: string\n message: string\n type: string\n valid: boolean\n}\n\nexport function schemaValidateObject<T>(schema: Type<T>, obj?: any, opt?: {\n path?: string\n messages?: SchemaValidateMessage[]\n allowExtra?: boolean\n}): boolean {\n const messages = opt?.messages || []\n\n function addMessage(message: string, valid: boolean = false) {\n messages.push({ path: `.${opt?.path ?? ''}`, message, valid, type: schema.type })\n return valid\n }\n\n if (obj == null && schema._optional) {\n return addMessage('Optional', true)\n }\n\n if (schema._object) {\n if (opt?.allowExtra !== true) {\n const schemaKeys = Object.keys(schema._object)\n const objKeys = Object.keys(obj || {})\n const missingKeys = arrayMinus(objKeys, schemaKeys)\n if (missingKeys.length > 0) {\n return addMessage(`Extra properties: ${missingKeys.join(', ')}`, false)\n }\n }\n\n for (const key in schema._object) {\n const propSchema = schema._object[key] as any\n if (!schemaValidateObject(\n propSchema,\n obj[key] as any,\n {\n ...opt,\n path: opt?.path ? `${opt.path}.${key}` : key,\n messages,\n },\n )) { return addMessage(`Invalid property '${key}'`, false) }\n }\n return addMessage('Object valid', true)\n }\n\n if (isFunction(schema._check)) {\n const checkResult = schema._check(obj)\n return addMessage('Check', checkResult)\n }\n\n return addMessage('Primitive valid', false)\n}\n\nexport function schemaParseObject<T>(schema: Type<T>, obj?: any, opt?: {\n path?: string\n messages?: SchemaValidateMessage[]\n\n /// Whether to allow extra properties not defined in the schema\n allowExtra?: boolean\n skipDefault?: boolean\n}): T | undefined {\n const messages = opt?.messages || []\n\n function addMessage(message: string, valid: boolean = false) {\n messages.push({ path: `.${opt?.path ?? ''}`, message, valid, type: schema.type })\n // console.debug({ path: `.${opt?.path ?? ''}`, message, valid, type: schema.type }, obj)\n return valid\n }\n\n if (obj == null) {\n if (schema._optional) {\n addMessage('Optional', true)\n return undefined\n }\n if (schema._default !== undefined && opt?.skipDefault !== true) {\n addMessage('Default', true)\n return isFunction(schema._default) ? schema._default(schema) : schema._default\n }\n // For non-optional objects without explicit defaults, use empty object\n if (schema._object) {\n obj = {}\n }\n }\n\n if (schema._object) {\n const newObj: any = {}\n const shape = schema._object\n for (const key in shape) {\n const propSchema = shape[key] as any\n const result = schemaParseObject(propSchema, obj[key] as any, {\n ...opt,\n path: opt?.path ? `${opt.path}.${key}` : key,\n messages,\n })\n if (result !== undefined) {\n newObj[key] = result\n }\n else if (propSchema._default !== undefined && opt?.skipDefault !== true) {\n newObj[key] = isFunction(propSchema._default) ? propSchema._default(propSchema) : propSchema._default\n }\n else if (propSchema._optional) {\n // Only set undefined for optional properties if they were explicitly provided as undefined\n if (obj && typeof obj === 'object' && key in obj) {\n newObj[key] = undefined\n }\n // Otherwise, don't set the property at all\n }\n // For required properties without defaults, don't set undefined - leave them missing\n }\n\n // Add extra properties if allowExtra is enabled\n if (opt?.allowExtra && obj && typeof obj === 'object') {\n for (const [key, value] of Object.entries(obj)) {\n if (!(key in shape)) {\n newObj[key] = value\n }\n }\n }\n\n return newObj\n }\n\n if (obj != null) {\n if (schema.type === 'string') {\n obj = valueToString(obj)\n }\n else if (schema.type === 'boolean') {\n obj = valueToBoolean(obj)\n }\n else if (schema.type === 'number') {\n obj = valueToFloat(obj)\n if (Number.isNaN(obj)) {\n addMessage(`Invalid number: ${obj}`, false)\n return undefined\n }\n }\n else if (schema.type === 'int') {\n obj = valueToInteger(obj)\n if (Number.isNaN(obj)) {\n addMessage(`Invalid number: ${obj}`, false)\n return undefined\n }\n }\n }\n\n if (isFunction(schema._check)) {\n const checkResult = schema._check(obj)\n addMessage('Check', checkResult)\n return checkResult ? obj : undefined\n }\n\n return obj\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,120 @@
|
|
|
1
|
-
import{isFunction
|
|
1
|
+
import { isFunction } from "../data/is.mjs";
|
|
2
|
+
import { arrayMinus } from "../data/array.mjs";
|
|
3
|
+
import { valueToBoolean, valueToFloat, valueToInteger, valueToString } from "../data/convert.mjs";
|
|
4
|
+
|
|
5
|
+
//#region src/common/schema/parse-object.ts
|
|
6
|
+
function schemaCreateObject(schema) {
|
|
7
|
+
if (schema._default !== void 0) return isFunction(schema._default) ? schema._default(schema) : schema._default;
|
|
8
|
+
if (schema._optional) return;
|
|
9
|
+
if (schema._object) {
|
|
10
|
+
const obj = {};
|
|
11
|
+
for (const key in schema._object) {
|
|
12
|
+
const propSchema = schema._object[key];
|
|
13
|
+
const value = schemaCreateObject(propSchema);
|
|
14
|
+
if (value !== void 0) obj[key] = value;
|
|
15
|
+
}
|
|
16
|
+
return obj;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function schemaValidateObject(schema, obj, opt) {
|
|
20
|
+
const messages = opt?.messages || [];
|
|
21
|
+
function addMessage(message, valid = false) {
|
|
22
|
+
messages.push({
|
|
23
|
+
path: `.${opt?.path ?? ""}`,
|
|
24
|
+
message,
|
|
25
|
+
valid,
|
|
26
|
+
type: schema.type
|
|
27
|
+
});
|
|
28
|
+
return valid;
|
|
29
|
+
}
|
|
30
|
+
if (obj == null && schema._optional) return addMessage("Optional", true);
|
|
31
|
+
if (schema._object) {
|
|
32
|
+
if (opt?.allowExtra !== true) {
|
|
33
|
+
const schemaKeys = Object.keys(schema._object);
|
|
34
|
+
const missingKeys = arrayMinus(Object.keys(obj || {}), schemaKeys);
|
|
35
|
+
if (missingKeys.length > 0) return addMessage(`Extra properties: ${missingKeys.join(", ")}`, false);
|
|
36
|
+
}
|
|
37
|
+
for (const key in schema._object) {
|
|
38
|
+
const propSchema = schema._object[key];
|
|
39
|
+
if (!schemaValidateObject(propSchema, obj[key], {
|
|
40
|
+
...opt,
|
|
41
|
+
path: opt?.path ? `${opt.path}.${key}` : key,
|
|
42
|
+
messages
|
|
43
|
+
})) return addMessage(`Invalid property '${key}'`, false);
|
|
44
|
+
}
|
|
45
|
+
return addMessage("Object valid", true);
|
|
46
|
+
}
|
|
47
|
+
if (isFunction(schema._check)) return addMessage("Check", schema._check(obj));
|
|
48
|
+
return addMessage("Primitive valid", false);
|
|
49
|
+
}
|
|
50
|
+
function schemaParseObject(schema, obj, opt) {
|
|
51
|
+
const messages = opt?.messages || [];
|
|
52
|
+
function addMessage(message, valid = false) {
|
|
53
|
+
messages.push({
|
|
54
|
+
path: `.${opt?.path ?? ""}`,
|
|
55
|
+
message,
|
|
56
|
+
valid,
|
|
57
|
+
type: schema.type
|
|
58
|
+
});
|
|
59
|
+
return valid;
|
|
60
|
+
}
|
|
61
|
+
if (obj == null) {
|
|
62
|
+
if (schema._optional) {
|
|
63
|
+
addMessage("Optional", true);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
if (schema._default !== void 0 && opt?.skipDefault !== true) {
|
|
67
|
+
addMessage("Default", true);
|
|
68
|
+
return isFunction(schema._default) ? schema._default(schema) : schema._default;
|
|
69
|
+
}
|
|
70
|
+
if (schema._object) obj = {};
|
|
71
|
+
}
|
|
72
|
+
if (schema._object) {
|
|
73
|
+
const newObj = {};
|
|
74
|
+
const shape = schema._object;
|
|
75
|
+
for (const key in shape) {
|
|
76
|
+
const propSchema = shape[key];
|
|
77
|
+
const result = schemaParseObject(propSchema, obj[key], {
|
|
78
|
+
...opt,
|
|
79
|
+
path: opt?.path ? `${opt.path}.${key}` : key,
|
|
80
|
+
messages
|
|
81
|
+
});
|
|
82
|
+
if (result !== void 0) newObj[key] = result;
|
|
83
|
+
else if (propSchema._default !== void 0 && opt?.skipDefault !== true) newObj[key] = isFunction(propSchema._default) ? propSchema._default(propSchema) : propSchema._default;
|
|
84
|
+
else if (propSchema._optional) {
|
|
85
|
+
if (obj && typeof obj === "object" && key in obj) newObj[key] = void 0;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
if (opt?.allowExtra && obj && typeof obj === "object") {
|
|
89
|
+
for (const [key, value] of Object.entries(obj)) if (!(key in shape)) newObj[key] = value;
|
|
90
|
+
}
|
|
91
|
+
return newObj;
|
|
92
|
+
}
|
|
93
|
+
if (obj != null) {
|
|
94
|
+
if (schema.type === "string") obj = valueToString(obj);
|
|
95
|
+
else if (schema.type === "boolean") obj = valueToBoolean(obj);
|
|
96
|
+
else if (schema.type === "number") {
|
|
97
|
+
obj = valueToFloat(obj);
|
|
98
|
+
if (Number.isNaN(obj)) {
|
|
99
|
+
addMessage(`Invalid number: ${obj}`, false);
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
} else if (schema.type === "int") {
|
|
103
|
+
obj = valueToInteger(obj);
|
|
104
|
+
if (Number.isNaN(obj)) {
|
|
105
|
+
addMessage(`Invalid number: ${obj}`, false);
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
if (isFunction(schema._check)) {
|
|
111
|
+
const checkResult = schema._check(obj);
|
|
112
|
+
addMessage("Check", checkResult);
|
|
113
|
+
return checkResult ? obj : void 0;
|
|
114
|
+
}
|
|
115
|
+
return obj;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
//#endregion
|
|
119
|
+
export { schemaCreateObject, schemaParseObject, schemaValidateObject };
|
|
2
120
|
//# sourceMappingURL=parse-object.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-object.mjs","names":[],"sources":["../../../src/common/schema/parse-object.ts"],"sourcesContent":["import type { Type } from './schema'\nimport { arrayMinus, isFunction, valueToBoolean, valueToFloat, valueToInteger, valueToString } from '../data'\n\nexport function schemaCreateObject<T>(schema: Type<T>): Partial<T> | undefined {\n if (schema._default !== undefined) {\n return isFunction(schema._default) ? schema._default(schema) : schema._default\n }\n\n if (schema._optional) {\n return undefined as any\n }\n\n if (schema._object) {\n const obj: any = {}\n for (const key in schema._object) {\n const propSchema = schema._object[key] as Type<any>\n const value = schemaCreateObject(propSchema)\n if (value !== undefined) {\n obj[key] = value\n }\n }\n return obj\n }\n\n // For non-optional, non-object types without defaults, don't return anything\n // This prevents setting undefined values in the parent object\n return undefined\n}\n\n/**\n * Message for schema validation results.\n * @category Schema\n */\nexport interface SchemaValidateMessage {\n path: string\n message: string\n type: string\n valid: boolean\n}\n\nexport function schemaValidateObject<T>(schema: Type<T>, obj?: any, opt?: {\n path?: string\n messages?: SchemaValidateMessage[]\n allowExtra?: boolean\n}): boolean {\n const messages = opt?.messages || []\n\n function addMessage(message: string, valid: boolean = false) {\n messages.push({ path: `.${opt?.path ?? ''}`, message, valid, type: schema.type })\n return valid\n }\n\n if (obj == null && schema._optional) {\n return addMessage('Optional', true)\n }\n\n if (schema._object) {\n if (opt?.allowExtra !== true) {\n const schemaKeys = Object.keys(schema._object)\n const objKeys = Object.keys(obj || {})\n const missingKeys = arrayMinus(objKeys, schemaKeys)\n if (missingKeys.length > 0) {\n return addMessage(`Extra properties: ${missingKeys.join(', ')}`, false)\n }\n }\n\n for (const key in schema._object) {\n const propSchema = schema._object[key] as any\n if (!schemaValidateObject(\n propSchema,\n obj[key] as any,\n {\n ...opt,\n path: opt?.path ? `${opt.path}.${key}` : key,\n messages,\n },\n )) { return addMessage(`Invalid property '${key}'`, false) }\n }\n return addMessage('Object valid', true)\n }\n\n if (isFunction(schema._check)) {\n const checkResult = schema._check(obj)\n return addMessage('Check', checkResult)\n }\n\n return addMessage('Primitive valid', false)\n}\n\nexport function schemaParseObject<T>(schema: Type<T>, obj?: any, opt?: {\n path?: string\n messages?: SchemaValidateMessage[]\n\n /// Whether to allow extra properties not defined in the schema\n allowExtra?: boolean\n skipDefault?: boolean\n}): T | undefined {\n const messages = opt?.messages || []\n\n function addMessage(message: string, valid: boolean = false) {\n messages.push({ path: `.${opt?.path ?? ''}`, message, valid, type: schema.type })\n // console.debug({ path: `.${opt?.path ?? ''}`, message, valid, type: schema.type }, obj)\n return valid\n }\n\n if (obj == null) {\n if (schema._optional) {\n addMessage('Optional', true)\n return undefined\n }\n if (schema._default !== undefined && opt?.skipDefault !== true) {\n addMessage('Default', true)\n return isFunction(schema._default) ? schema._default(schema) : schema._default\n }\n // For non-optional objects without explicit defaults, use empty object\n if (schema._object) {\n obj = {}\n }\n }\n\n if (schema._object) {\n const newObj: any = {}\n const shape = schema._object\n for (const key in shape) {\n const propSchema = shape[key] as any\n const result = schemaParseObject(propSchema, obj[key] as any, {\n ...opt,\n path: opt?.path ? `${opt.path}.${key}` : key,\n messages,\n })\n if (result !== undefined) {\n newObj[key] = result\n }\n else if (propSchema._default !== undefined && opt?.skipDefault !== true) {\n newObj[key] = isFunction(propSchema._default) ? propSchema._default(propSchema) : propSchema._default\n }\n else if (propSchema._optional) {\n // Only set undefined for optional properties if they were explicitly provided as undefined\n if (obj && typeof obj === 'object' && key in obj) {\n newObj[key] = undefined\n }\n // Otherwise, don't set the property at all\n }\n // For required properties without defaults, don't set undefined - leave them missing\n }\n\n // Add extra properties if allowExtra is enabled\n if (opt?.allowExtra && obj && typeof obj === 'object') {\n for (const [key, value] of Object.entries(obj)) {\n if (!(key in shape)) {\n newObj[key] = value\n }\n }\n }\n\n return newObj\n }\n\n if (obj != null) {\n if (schema.type === 'string') {\n obj = valueToString(obj)\n }\n else if (schema.type === 'boolean') {\n obj = valueToBoolean(obj)\n }\n else if (schema.type === 'number') {\n obj = valueToFloat(obj)\n if (Number.isNaN(obj)) {\n addMessage(`Invalid number: ${obj}`, false)\n return undefined\n }\n }\n else if (schema.type === 'int') {\n obj = valueToInteger(obj)\n if (Number.isNaN(obj)) {\n addMessage(`Invalid number: ${obj}`, false)\n return undefined\n }\n }\n }\n\n if (isFunction(schema._check)) {\n const checkResult = schema._check(obj)\n addMessage('Check', checkResult)\n return checkResult ? obj : undefined\n }\n\n return obj\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"parse-object.mjs","names":[],"sources":["../../../src/common/schema/parse-object.ts"],"sourcesContent":["import type { Type } from './schema'\nimport { arrayMinus, isFunction, valueToBoolean, valueToFloat, valueToInteger, valueToString } from '../data'\n\nexport function schemaCreateObject<T>(schema: Type<T>): Partial<T> | undefined {\n if (schema._default !== undefined) {\n return isFunction(schema._default) ? schema._default(schema) : schema._default\n }\n\n if (schema._optional) {\n return undefined as any\n }\n\n if (schema._object) {\n const obj: any = {}\n for (const key in schema._object) {\n const propSchema = schema._object[key] as Type<any>\n const value = schemaCreateObject(propSchema)\n if (value !== undefined) {\n obj[key] = value\n }\n }\n return obj\n }\n\n // For non-optional, non-object types without defaults, don't return anything\n // This prevents setting undefined values in the parent object\n return undefined\n}\n\n/**\n * Message for schema validation results.\n * @category Schema\n */\nexport interface SchemaValidateMessage {\n path: string\n message: string\n type: string\n valid: boolean\n}\n\nexport function schemaValidateObject<T>(schema: Type<T>, obj?: any, opt?: {\n path?: string\n messages?: SchemaValidateMessage[]\n allowExtra?: boolean\n}): boolean {\n const messages = opt?.messages || []\n\n function addMessage(message: string, valid: boolean = false) {\n messages.push({ path: `.${opt?.path ?? ''}`, message, valid, type: schema.type })\n return valid\n }\n\n if (obj == null && schema._optional) {\n return addMessage('Optional', true)\n }\n\n if (schema._object) {\n if (opt?.allowExtra !== true) {\n const schemaKeys = Object.keys(schema._object)\n const objKeys = Object.keys(obj || {})\n const missingKeys = arrayMinus(objKeys, schemaKeys)\n if (missingKeys.length > 0) {\n return addMessage(`Extra properties: ${missingKeys.join(', ')}`, false)\n }\n }\n\n for (const key in schema._object) {\n const propSchema = schema._object[key] as any\n if (!schemaValidateObject(\n propSchema,\n obj[key] as any,\n {\n ...opt,\n path: opt?.path ? `${opt.path}.${key}` : key,\n messages,\n },\n )) { return addMessage(`Invalid property '${key}'`, false) }\n }\n return addMessage('Object valid', true)\n }\n\n if (isFunction(schema._check)) {\n const checkResult = schema._check(obj)\n return addMessage('Check', checkResult)\n }\n\n return addMessage('Primitive valid', false)\n}\n\nexport function schemaParseObject<T>(schema: Type<T>, obj?: any, opt?: {\n path?: string\n messages?: SchemaValidateMessage[]\n\n /// Whether to allow extra properties not defined in the schema\n allowExtra?: boolean\n skipDefault?: boolean\n}): T | undefined {\n const messages = opt?.messages || []\n\n function addMessage(message: string, valid: boolean = false) {\n messages.push({ path: `.${opt?.path ?? ''}`, message, valid, type: schema.type })\n // console.debug({ path: `.${opt?.path ?? ''}`, message, valid, type: schema.type }, obj)\n return valid\n }\n\n if (obj == null) {\n if (schema._optional) {\n addMessage('Optional', true)\n return undefined\n }\n if (schema._default !== undefined && opt?.skipDefault !== true) {\n addMessage('Default', true)\n return isFunction(schema._default) ? schema._default(schema) : schema._default\n }\n // For non-optional objects without explicit defaults, use empty object\n if (schema._object) {\n obj = {}\n }\n }\n\n if (schema._object) {\n const newObj: any = {}\n const shape = schema._object\n for (const key in shape) {\n const propSchema = shape[key] as any\n const result = schemaParseObject(propSchema, obj[key] as any, {\n ...opt,\n path: opt?.path ? `${opt.path}.${key}` : key,\n messages,\n })\n if (result !== undefined) {\n newObj[key] = result\n }\n else if (propSchema._default !== undefined && opt?.skipDefault !== true) {\n newObj[key] = isFunction(propSchema._default) ? propSchema._default(propSchema) : propSchema._default\n }\n else if (propSchema._optional) {\n // Only set undefined for optional properties if they were explicitly provided as undefined\n if (obj && typeof obj === 'object' && key in obj) {\n newObj[key] = undefined\n }\n // Otherwise, don't set the property at all\n }\n // For required properties without defaults, don't set undefined - leave them missing\n }\n\n // Add extra properties if allowExtra is enabled\n if (opt?.allowExtra && obj && typeof obj === 'object') {\n for (const [key, value] of Object.entries(obj)) {\n if (!(key in shape)) {\n newObj[key] = value\n }\n }\n }\n\n return newObj\n }\n\n if (obj != null) {\n if (schema.type === 'string') {\n obj = valueToString(obj)\n }\n else if (schema.type === 'boolean') {\n obj = valueToBoolean(obj)\n }\n else if (schema.type === 'number') {\n obj = valueToFloat(obj)\n if (Number.isNaN(obj)) {\n addMessage(`Invalid number: ${obj}`, false)\n return undefined\n }\n }\n else if (schema.type === 'int') {\n obj = valueToInteger(obj)\n if (Number.isNaN(obj)) {\n addMessage(`Invalid number: ${obj}`, false)\n return undefined\n }\n }\n }\n\n if (isFunction(schema._check)) {\n const checkResult = schema._check(obj)\n addMessage('Check', checkResult)\n return checkResult ? obj : undefined\n }\n\n return obj\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{};
|
|
1
|
+
export { };
|