@openclaw/openshell-sandbox 2026.9.3 → 2026.9.5
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/assets/activity.svg +3 -0
- package/assets/icon.png +0 -0
- package/dist/index.js +32 -26
- package/node_modules/@openclaw/fs-safe/CHANGELOG.md +285 -0
- package/node_modules/@openclaw/fs-safe/LICENSE +1 -0
- package/node_modules/@openclaw/fs-safe/README.md +65 -10
- package/node_modules/@openclaw/fs-safe/dist/absolute-path.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/absolute-path.js +33 -11
- package/node_modules/@openclaw/fs-safe/dist/advanced.d.ts +8 -1
- package/node_modules/@openclaw/fs-safe/dist/advanced.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/advanced.js +8 -1
- package/node_modules/@openclaw/fs-safe/dist/archive-crc32.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/archive-crc32.js +6 -1
- package/node_modules/@openclaw/fs-safe/dist/archive-deadline.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/archive-deadline.js +3 -4
- package/node_modules/@openclaw/fs-safe/dist/archive-durability.d.ts +24 -0
- package/node_modules/@openclaw/fs-safe/dist/archive-durability.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/archive-durability.js +180 -0
- package/node_modules/@openclaw/fs-safe/dist/archive-entry.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/archive-entry.js +8 -8
- package/node_modules/@openclaw/fs-safe/dist/archive-gzip-tail.d.ts +3 -0
- package/node_modules/@openclaw/fs-safe/dist/archive-gzip-tail.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/archive-gzip-tail.js +33 -8
- package/node_modules/@openclaw/fs-safe/dist/archive-input.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/archive-input.js +14 -8
- package/node_modules/@openclaw/fs-safe/dist/archive-kind.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/archive-kind.js +3 -2
- package/node_modules/@openclaw/fs-safe/dist/archive-merge.d.ts +6 -1
- package/node_modules/@openclaw/fs-safe/dist/archive-merge.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/archive-merge.js +68 -19
- package/node_modules/@openclaw/fs-safe/dist/archive-native.d.ts +1 -0
- package/node_modules/@openclaw/fs-safe/dist/archive-native.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/archive-native.js +15 -25
- package/node_modules/@openclaw/fs-safe/dist/archive-options.d.ts +2 -0
- package/node_modules/@openclaw/fs-safe/dist/archive-options.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/archive-parser.wasm +0 -0
- package/node_modules/@openclaw/fs-safe/dist/archive-plan.js +1 -1
- package/node_modules/@openclaw/fs-safe/dist/archive-read.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/archive-read.js +128 -109
- package/node_modules/@openclaw/fs-safe/dist/archive-staging.d.ts +6 -3
- package/node_modules/@openclaw/fs-safe/dist/archive-staging.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/archive-staging.js +100 -42
- package/node_modules/@openclaw/fs-safe/dist/archive-tar-inspect.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/archive-tar-inspect.js +4 -1
- package/node_modules/@openclaw/fs-safe/dist/archive-tar-stream.d.ts +11 -4
- package/node_modules/@openclaw/fs-safe/dist/archive-tar-stream.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/archive-tar-stream.js +23 -10
- package/node_modules/@openclaw/fs-safe/dist/archive-tar-wasm.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/archive-tar-wasm.js +18 -14
- package/node_modules/@openclaw/fs-safe/dist/archive-zip-admission.d.ts +2 -2
- package/node_modules/@openclaw/fs-safe/dist/archive-zip-admission.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/archive-zip-admission.js +50 -14
- package/node_modules/@openclaw/fs-safe/dist/archive-zip-directory.d.ts +3 -0
- package/node_modules/@openclaw/fs-safe/dist/archive-zip-directory.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/archive-zip-directory.js +13 -2
- package/node_modules/@openclaw/fs-safe/dist/archive-zip-loader.d.ts +7 -0
- package/node_modules/@openclaw/fs-safe/dist/archive-zip-loader.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/archive-zip-loader.js +64 -0
- package/node_modules/@openclaw/fs-safe/dist/archive-zip-manifest.d.ts +5 -0
- package/node_modules/@openclaw/fs-safe/dist/archive-zip-manifest.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/archive-zip-manifest.js +22 -0
- package/node_modules/@openclaw/fs-safe/dist/archive-zip-names.d.ts +6 -1
- package/node_modules/@openclaw/fs-safe/dist/archive-zip-names.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/archive-zip-names.js +56 -18
- package/node_modules/@openclaw/fs-safe/dist/archive-zip-preflight.d.ts +2 -3
- package/node_modules/@openclaw/fs-safe/dist/archive-zip-preflight.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/archive-zip-preflight.js +4 -35
- package/node_modules/@openclaw/fs-safe/dist/archive.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/archive.js +25 -13
- package/node_modules/@openclaw/fs-safe/dist/bounded-read.d.ts +12 -0
- package/node_modules/@openclaw/fs-safe/dist/bounded-read.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/bounded-read.js +83 -46
- package/node_modules/@openclaw/fs-safe/dist/clone-metadata.d.ts +19 -0
- package/node_modules/@openclaw/fs-safe/dist/clone-metadata.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/clone-metadata.js +32 -0
- package/node_modules/@openclaw/fs-safe/dist/copy-file-input.d.ts +22 -0
- package/node_modules/@openclaw/fs-safe/dist/copy-file-input.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/copy-file-input.js +71 -0
- package/node_modules/@openclaw/fs-safe/dist/copy-policy.d.ts +3 -0
- package/node_modules/@openclaw/fs-safe/dist/copy-policy.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/copy-policy.js +8 -0
- package/node_modules/@openclaw/fs-safe/dist/copy-publication.d.ts +15 -0
- package/node_modules/@openclaw/fs-safe/dist/copy-publication.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/copy-publication.js +30 -0
- package/node_modules/@openclaw/fs-safe/dist/copy-tree-portable.d.ts +9 -0
- package/node_modules/@openclaw/fs-safe/dist/copy-tree-portable.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/copy-tree-portable.js +222 -0
- package/node_modules/@openclaw/fs-safe/dist/copy.d.ts +16 -0
- package/node_modules/@openclaw/fs-safe/dist/copy.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/copy.js +125 -0
- package/node_modules/@openclaw/fs-safe/dist/darwin-acl.d.ts +4 -0
- package/node_modules/@openclaw/fs-safe/dist/darwin-acl.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/darwin-acl.js +24 -0
- package/node_modules/@openclaw/fs-safe/dist/deny-mutations.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/deny-mutations.js +8 -2
- package/node_modules/@openclaw/fs-safe/dist/device-path.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/device-path.js +5 -3
- package/node_modules/@openclaw/fs-safe/dist/directory-durability.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/directory-durability.js +68 -23
- package/node_modules/@openclaw/fs-safe/dist/directory-entry-path.d.ts +3 -0
- package/node_modules/@openclaw/fs-safe/dist/directory-entry-path.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/directory-entry-path.js +21 -0
- package/node_modules/@openclaw/fs-safe/dist/directory-guard.d.ts +27 -1
- package/node_modules/@openclaw/fs-safe/dist/directory-guard.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/directory-guard.js +145 -17
- package/node_modules/@openclaw/fs-safe/dist/directory-mode-node.d.ts +12 -0
- package/node_modules/@openclaw/fs-safe/dist/directory-mode-node.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/directory-mode-node.js +106 -8
- package/node_modules/@openclaw/fs-safe/dist/durability.d.ts +1 -1
- package/node_modules/@openclaw/fs-safe/dist/durability.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/durability.js +1 -1
- package/node_modules/@openclaw/fs-safe/dist/effective-uid.d.ts +2 -0
- package/node_modules/@openclaw/fs-safe/dist/effective-uid.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/effective-uid.js +25 -0
- package/node_modules/@openclaw/fs-safe/dist/error-detail.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/error-detail.js +4 -1
- package/node_modules/@openclaw/fs-safe/dist/file-handle-transfer.d.ts +14 -0
- package/node_modules/@openclaw/fs-safe/dist/file-handle-transfer.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/file-handle-transfer.js +135 -0
- package/node_modules/@openclaw/fs-safe/dist/file-hash.d.ts +9 -2
- package/node_modules/@openclaw/fs-safe/dist/file-hash.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/file-hash.js +147 -40
- package/node_modules/@openclaw/fs-safe/dist/file-lock-sync.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/file-lock-sync.js +44 -10
- package/node_modules/@openclaw/fs-safe/dist/file-lock.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/file-lock.js +29 -9
- package/node_modules/@openclaw/fs-safe/dist/file-observation.d.ts +1 -1
- package/node_modules/@openclaw/fs-safe/dist/file-observation.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/file-store-boundary.d.ts +6 -2
- package/node_modules/@openclaw/fs-safe/dist/file-store-boundary.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/file-store-boundary.js +22 -65
- package/node_modules/@openclaw/fs-safe/dist/file-store-copy-source.d.ts +5 -0
- package/node_modules/@openclaw/fs-safe/dist/file-store-copy-source.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/file-store-copy-source.js +31 -0
- package/node_modules/@openclaw/fs-safe/dist/file-store-path.d.ts +3 -0
- package/node_modules/@openclaw/fs-safe/dist/file-store-path.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/file-store-path.js +30 -0
- package/node_modules/@openclaw/fs-safe/dist/file-store-prune.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/file-store-prune.js +15 -5
- package/node_modules/@openclaw/fs-safe/dist/file-store-sync-directory.d.ts +16 -0
- package/node_modules/@openclaw/fs-safe/dist/file-store-sync-directory.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/file-store-sync-directory.js +349 -0
- package/node_modules/@openclaw/fs-safe/dist/file-store-sync-write.d.ts +1 -0
- package/node_modules/@openclaw/fs-safe/dist/file-store-sync-write.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/file-store-sync-write.js +63 -48
- package/node_modules/@openclaw/fs-safe/dist/file-store.d.ts +4 -0
- package/node_modules/@openclaw/fs-safe/dist/file-store.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/file-store.js +23 -47
- package/node_modules/@openclaw/fs-safe/dist/filename.d.ts +1 -0
- package/node_modules/@openclaw/fs-safe/dist/filename.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/filename.js +89 -36
- package/node_modules/@openclaw/fs-safe/dist/fs.js +3 -3
- package/node_modules/@openclaw/fs-safe/dist/guarded-mkdir.d.ts +11 -0
- package/node_modules/@openclaw/fs-safe/dist/guarded-mkdir.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/guarded-mkdir.js +218 -32
- package/node_modules/@openclaw/fs-safe/dist/guarded-mutation.d.ts +2 -0
- package/node_modules/@openclaw/fs-safe/dist/guarded-mutation.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/guarded-mutation.js +9 -5
- package/node_modules/@openclaw/fs-safe/dist/guest-dispatch-python.d.ts +2 -0
- package/node_modules/@openclaw/fs-safe/dist/guest-dispatch-python.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/guest-dispatch-python.js +117 -0
- package/node_modules/@openclaw/fs-safe/dist/guest-native-python.d.ts +4 -0
- package/node_modules/@openclaw/fs-safe/dist/guest-native-python.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/guest-native-python.js +135 -0
- package/node_modules/@openclaw/fs-safe/dist/guest.d.ts +9 -0
- package/node_modules/@openclaw/fs-safe/dist/guest.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/guest.js +424 -0
- package/node_modules/@openclaw/fs-safe/dist/home-dir.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/home-dir.js +81 -16
- package/node_modules/@openclaw/fs-safe/dist/index.d.ts +1 -1
- package/node_modules/@openclaw/fs-safe/dist/index.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/install-path.d.ts +6 -0
- package/node_modules/@openclaw/fs-safe/dist/install-path.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/install-path.js +71 -26
- package/node_modules/@openclaw/fs-safe/dist/json-document-store.d.ts +3 -0
- package/node_modules/@openclaw/fs-safe/dist/json-document-store.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/json-document-store.js +1 -0
- package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-directory.js +3 -3
- package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-ownership.d.ts +8 -0
- package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-ownership.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-ownership.js +137 -45
- package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-paths.d.ts +11 -0
- package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-paths.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-paths.js +42 -0
- package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-read.d.ts +6 -0
- package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-read.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-read.js +61 -0
- package/node_modules/@openclaw/fs-safe/dist/json-durable-queue.d.ts +1 -1
- package/node_modules/@openclaw/fs-safe/dist/json-durable-queue.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/json-durable-queue.js +107 -152
- package/node_modules/@openclaw/fs-safe/dist/json-store.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/json-store.js +5 -1
- package/node_modules/@openclaw/fs-safe/dist/json.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/json.js +55 -22
- package/node_modules/@openclaw/fs-safe/dist/local-file-access.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/local-file-access.js +4 -0
- package/node_modules/@openclaw/fs-safe/dist/local-file-descriptor.d.ts +17 -0
- package/node_modules/@openclaw/fs-safe/dist/local-file-descriptor.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/local-file-descriptor.js +84 -0
- package/node_modules/@openclaw/fs-safe/dist/local-roots.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/local-roots.js +54 -27
- package/node_modules/@openclaw/fs-safe/dist/move-path-cleanup.d.ts +2 -0
- package/node_modules/@openclaw/fs-safe/dist/move-path-cleanup.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/move-path-cleanup.js +47 -20
- package/node_modules/@openclaw/fs-safe/dist/move-path-stage.d.ts +8 -0
- package/node_modules/@openclaw/fs-safe/dist/move-path-stage.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/move-path-stage.js +56 -0
- package/node_modules/@openclaw/fs-safe/dist/move-path.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/move-path.js +84 -50
- package/node_modules/@openclaw/fs-safe/dist/mutation-authority.d.ts +9 -0
- package/node_modules/@openclaw/fs-safe/dist/mutation-authority.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/mutation-authority.js +36 -0
- package/node_modules/@openclaw/fs-safe/dist/native-binding.d.ts +53 -1
- package/node_modules/@openclaw/fs-safe/dist/native-binding.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/native-binding.js +8 -1
- package/node_modules/@openclaw/fs-safe/dist/native-directory-observation.d.ts +17 -0
- package/node_modules/@openclaw/fs-safe/dist/native-directory-observation.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/native-directory-observation.js +37 -0
- package/node_modules/@openclaw/fs-safe/dist/native-operations.d.ts +1 -1
- package/node_modules/@openclaw/fs-safe/dist/native-operations.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/native-operations.js +17 -9
- package/node_modules/@openclaw/fs-safe/dist/native-parent-admission.d.ts +32 -0
- package/node_modules/@openclaw/fs-safe/dist/native-parent-admission.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/native-parent-admission.js +127 -0
- package/node_modules/@openclaw/fs-safe/dist/native-pinned-write-windows.d.ts +0 -1
- package/node_modules/@openclaw/fs-safe/dist/native-pinned-write-windows.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/native-pinned-write-windows.js +27 -16
- package/node_modules/@openclaw/fs-safe/dist/native-pinned-write.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/native-pinned-write.js +315 -41
- package/node_modules/@openclaw/fs-safe/dist/native-staged-file.d.ts +5 -5
- package/node_modules/@openclaw/fs-safe/dist/native-staged-file.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/native-staged-file.js +52 -15
- package/node_modules/@openclaw/fs-safe/dist/native.d.ts +1 -1
- package/node_modules/@openclaw/fs-safe/dist/native.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/native.js +7 -2
- package/node_modules/@openclaw/fs-safe/dist/opened-file-failure.d.ts +1 -1
- package/node_modules/@openclaw/fs-safe/dist/opened-file-failure.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/opened-file-failure.js +3 -2
- package/node_modules/@openclaw/fs-safe/dist/opened-realpath.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/opened-realpath.js +5 -4
- package/node_modules/@openclaw/fs-safe/dist/output.d.ts +2 -0
- package/node_modules/@openclaw/fs-safe/dist/output.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/output.js +16 -4
- package/node_modules/@openclaw/fs-safe/dist/overwrite-file-handle.d.ts +8 -0
- package/node_modules/@openclaw/fs-safe/dist/overwrite-file-handle.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/overwrite-file-handle.js +46 -0
- package/node_modules/@openclaw/fs-safe/dist/owner-dacl.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/owner-dacl.js +2 -0
- package/node_modules/@openclaw/fs-safe/dist/path-case.d.ts +7 -0
- package/node_modules/@openclaw/fs-safe/dist/path-case.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/path-case.js +136 -0
- package/node_modules/@openclaw/fs-safe/dist/path-policy.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/path-policy.js +7 -2
- package/node_modules/@openclaw/fs-safe/dist/path-prefix.d.ts +7 -0
- package/node_modules/@openclaw/fs-safe/dist/path-prefix.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/path-prefix.js +82 -0
- package/node_modules/@openclaw/fs-safe/dist/path-scope-lexical.d.ts +14 -0
- package/node_modules/@openclaw/fs-safe/dist/path-scope-lexical.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/path-scope-lexical.js +37 -0
- package/node_modules/@openclaw/fs-safe/dist/path-segment-route.d.ts +7 -0
- package/node_modules/@openclaw/fs-safe/dist/path-segment-route.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/path-segment-route.js +24 -0
- package/node_modules/@openclaw/fs-safe/dist/path-suffix-aliases.d.ts +10 -0
- package/node_modules/@openclaw/fs-safe/dist/path-suffix-aliases.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/path-suffix-aliases.js +386 -0
- package/node_modules/@openclaw/fs-safe/dist/path.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/path.js +39 -7
- package/node_modules/@openclaw/fs-safe/dist/permissions-windows.d.ts +1 -1
- package/node_modules/@openclaw/fs-safe/dist/permissions-windows.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/permissions-windows.js +99 -56
- package/node_modules/@openclaw/fs-safe/dist/permissions.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/permissions.js +39 -10
- package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-admission.d.ts +25 -0
- package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-admission.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-admission.js +425 -0
- package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-observation.d.ts +34 -0
- package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-observation.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-observation.js +142 -0
- package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-shared-route.d.ts +24 -0
- package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-shared-route.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-shared-route.js +70 -0
- package/node_modules/@openclaw/fs-safe/dist/pinned-open.d.ts +6 -0
- package/node_modules/@openclaw/fs-safe/dist/pinned-open.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/pinned-open.js +29 -9
- package/node_modules/@openclaw/fs-safe/dist/pinned-operation.js +1 -1
- package/node_modules/@openclaw/fs-safe/dist/pinned-write-types.d.ts +75 -0
- package/node_modules/@openclaw/fs-safe/dist/pinned-write-types.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/pinned-write-types.js +1 -0
- package/node_modules/@openclaw/fs-safe/dist/pinned-write.d.ts +7 -29
- package/node_modules/@openclaw/fs-safe/dist/pinned-write.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/pinned-write.js +203 -47
- package/node_modules/@openclaw/fs-safe/dist/positional-read.d.ts +9 -0
- package/node_modules/@openclaw/fs-safe/dist/positional-read.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/positional-read.js +36 -0
- package/node_modules/@openclaw/fs-safe/dist/private-directory.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/private-directory.js +2 -0
- package/node_modules/@openclaw/fs-safe/dist/private-producer-handoff.d.ts +16 -0
- package/node_modules/@openclaw/fs-safe/dist/private-producer-handoff.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/private-producer-handoff.js +272 -0
- package/node_modules/@openclaw/fs-safe/dist/private-temp-workspace.d.ts +2 -39
- package/node_modules/@openclaw/fs-safe/dist/private-temp-workspace.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/private-temp-workspace.js +183 -69
- package/node_modules/@openclaw/fs-safe/dist/publish-copy-stage.d.ts +13 -0
- package/node_modules/@openclaw/fs-safe/dist/publish-copy-stage.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/publish-copy-stage.js +47 -0
- package/node_modules/@openclaw/fs-safe/dist/publish-file.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/publish-file.js +63 -56
- package/node_modules/@openclaw/fs-safe/dist/realpath.d.ts +4 -0
- package/node_modules/@openclaw/fs-safe/dist/realpath.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/realpath.js +43 -0
- package/node_modules/@openclaw/fs-safe/dist/recursive-mkdir-path.d.ts +3 -0
- package/node_modules/@openclaw/fs-safe/dist/recursive-mkdir-path.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/recursive-mkdir-path.js +8 -0
- package/node_modules/@openclaw/fs-safe/dist/regular-file.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/regular-file.js +56 -45
- package/node_modules/@openclaw/fs-safe/dist/replace-directory.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/replace-directory.js +14 -6
- package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-fallback.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-fallback.js +52 -47
- package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-source.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-source.js +17 -17
- package/node_modules/@openclaw/fs-safe/dist/replace-file-mode.d.ts +3 -0
- package/node_modules/@openclaw/fs-safe/dist/replace-file-mode.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/replace-file-mode.js +10 -0
- package/node_modules/@openclaw/fs-safe/dist/replace-file-temp-owner.d.ts +1 -0
- package/node_modules/@openclaw/fs-safe/dist/replace-file-temp-owner.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/replace-file-temp-owner.js +18 -3
- package/node_modules/@openclaw/fs-safe/dist/replace-file.d.ts +1 -0
- package/node_modules/@openclaw/fs-safe/dist/replace-file.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/replace-file.js +43 -32
- package/node_modules/@openclaw/fs-safe/dist/root-boundary.d.ts +29 -0
- package/node_modules/@openclaw/fs-safe/dist/root-boundary.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/root-boundary.js +182 -0
- package/node_modules/@openclaw/fs-safe/dist/root-context.d.ts +15 -1
- package/node_modules/@openclaw/fs-safe/dist/root-context.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/root-context.js +131 -33
- package/node_modules/@openclaw/fs-safe/dist/root-create-input.d.ts +10 -0
- package/node_modules/@openclaw/fs-safe/dist/root-create-input.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/root-create-input.js +80 -0
- package/node_modules/@openclaw/fs-safe/dist/root-directory-creation.d.ts +13 -0
- package/node_modules/@openclaw/fs-safe/dist/root-directory-creation.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/root-directory-creation.js +212 -0
- package/node_modules/@openclaw/fs-safe/dist/root-directory-list.d.ts +38 -0
- package/node_modules/@openclaw/fs-safe/dist/root-directory-list.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/root-directory-list.js +368 -0
- package/node_modules/@openclaw/fs-safe/dist/root-directory.d.ts +23 -0
- package/node_modules/@openclaw/fs-safe/dist/root-directory.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/root-directory.js +141 -0
- package/node_modules/@openclaw/fs-safe/dist/root-entries.d.ts +11 -0
- package/node_modules/@openclaw/fs-safe/dist/root-entries.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/root-entries.js +61 -0
- package/node_modules/@openclaw/fs-safe/dist/root-errors.d.ts +6 -5
- package/node_modules/@openclaw/fs-safe/dist/root-errors.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/root-errors.js +28 -13
- package/node_modules/@openclaw/fs-safe/dist/root-file-final-admission.d.ts +21 -0
- package/node_modules/@openclaw/fs-safe/dist/root-file-final-admission.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/root-file-final-admission.js +83 -0
- package/node_modules/@openclaw/fs-safe/dist/root-file.d.ts +2 -0
- package/node_modules/@openclaw/fs-safe/dist/root-file.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/root-file.js +111 -24
- package/node_modules/@openclaw/fs-safe/dist/root-impl.d.ts +18 -51
- package/node_modules/@openclaw/fs-safe/dist/root-impl.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/root-impl.js +639 -510
- package/node_modules/@openclaw/fs-safe/dist/root-move-noreplace.d.ts +14 -0
- package/node_modules/@openclaw/fs-safe/dist/root-move-noreplace.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/root-move-noreplace.js +202 -0
- package/node_modules/@openclaw/fs-safe/dist/root-move-preflight.d.ts +8 -0
- package/node_modules/@openclaw/fs-safe/dist/root-move-preflight.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/root-move-preflight.js +16 -0
- package/node_modules/@openclaw/fs-safe/dist/root-observed-path.d.ts +9 -0
- package/node_modules/@openclaw/fs-safe/dist/root-observed-path.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/root-observed-path.js +95 -0
- package/node_modules/@openclaw/fs-safe/dist/root-options.d.ts +77 -0
- package/node_modules/@openclaw/fs-safe/dist/root-options.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/root-options.js +18 -0
- package/node_modules/@openclaw/fs-safe/dist/root-path-errors.d.ts +12 -0
- package/node_modules/@openclaw/fs-safe/dist/root-path-errors.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/root-path-errors.js +13 -0
- package/node_modules/@openclaw/fs-safe/dist/root-path-existing.d.ts +7 -0
- package/node_modules/@openclaw/fs-safe/dist/root-path-existing.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/root-path-existing.js +111 -14
- package/node_modules/@openclaw/fs-safe/dist/root-path-observation.d.ts +63 -0
- package/node_modules/@openclaw/fs-safe/dist/root-path-observation.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/root-path-observation.js +180 -0
- package/node_modules/@openclaw/fs-safe/dist/root-path-stat.d.ts +5 -0
- package/node_modules/@openclaw/fs-safe/dist/root-path-stat.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/root-path-stat.js +101 -0
- package/node_modules/@openclaw/fs-safe/dist/root-path-symlink.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/root-path-symlink.js +24 -4
- package/node_modules/@openclaw/fs-safe/dist/root-path.d.ts +14 -0
- package/node_modules/@openclaw/fs-safe/dist/root-path.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/root-path.js +322 -220
- package/node_modules/@openclaw/fs-safe/dist/root-paths-lexical.d.ts +9 -0
- package/node_modules/@openclaw/fs-safe/dist/root-paths-lexical.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/root-paths-lexical.js +22 -0
- package/node_modules/@openclaw/fs-safe/dist/root-paths.d.ts +3 -29
- package/node_modules/@openclaw/fs-safe/dist/root-paths.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/root-paths.js +89 -174
- package/node_modules/@openclaw/fs-safe/dist/root-read-admission.d.ts +26 -0
- package/node_modules/@openclaw/fs-safe/dist/root-read-admission.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/root-read-admission.js +94 -0
- package/node_modules/@openclaw/fs-safe/dist/root-remove-identity.d.ts +15 -0
- package/node_modules/@openclaw/fs-safe/dist/root-remove-identity.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/root-remove-identity.js +89 -0
- package/node_modules/@openclaw/fs-safe/dist/root-remove-receipt.d.ts +17 -0
- package/node_modules/@openclaw/fs-safe/dist/root-remove-receipt.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/root-remove-receipt.js +37 -0
- package/node_modules/@openclaw/fs-safe/dist/root-remove.d.ts +6 -0
- package/node_modules/@openclaw/fs-safe/dist/root-remove.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/root-remove.js +448 -0
- package/node_modules/@openclaw/fs-safe/dist/root-symlink-policy.d.ts +14 -0
- package/node_modules/@openclaw/fs-safe/dist/root-symlink-policy.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/root-symlink-policy.js +34 -0
- package/node_modules/@openclaw/fs-safe/dist/root-walk.d.ts +5 -4
- package/node_modules/@openclaw/fs-safe/dist/root-walk.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/root-walk.js +100 -50
- package/node_modules/@openclaw/fs-safe/dist/root-write-admission.d.ts +68 -0
- package/node_modules/@openclaw/fs-safe/dist/root-write-admission.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/root-write-admission.js +322 -0
- package/node_modules/@openclaw/fs-safe/dist/root-write-compatibility.d.ts +13 -0
- package/node_modules/@openclaw/fs-safe/dist/root-write-compatibility.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/root-write-compatibility.js +74 -0
- package/node_modules/@openclaw/fs-safe/dist/root-write-complete-parent.d.ts +42 -0
- package/node_modules/@openclaw/fs-safe/dist/root-write-complete-parent.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/root-write-complete-parent.js +195 -0
- package/node_modules/@openclaw/fs-safe/dist/root-write-mode.d.ts +2 -0
- package/node_modules/@openclaw/fs-safe/dist/root-write-mode.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/root-write-mode.js +22 -11
- package/node_modules/@openclaw/fs-safe/dist/root-write-publication.d.ts +24 -0
- package/node_modules/@openclaw/fs-safe/dist/root-write-publication.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/root-write-publication.js +85 -0
- package/node_modules/@openclaw/fs-safe/dist/root-write-verification.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/root-write-verification.js +18 -7
- package/node_modules/@openclaw/fs-safe/dist/root.d.ts +4 -1
- package/node_modules/@openclaw/fs-safe/dist/root.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/safe-path-segment.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/safe-path-segment.js +3 -1
- package/node_modules/@openclaw/fs-safe/dist/secret-file.d.ts +1 -0
- package/node_modules/@openclaw/fs-safe/dist/secret-file.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/secret-file.js +65 -25
- package/node_modules/@openclaw/fs-safe/dist/secret-read-async.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/secret-read-async.js +22 -16
- package/node_modules/@openclaw/fs-safe/dist/secret-read-policy.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/secret-read-policy.js +5 -1
- package/node_modules/@openclaw/fs-safe/dist/secure-file-windows.d.ts +10 -0
- package/node_modules/@openclaw/fs-safe/dist/secure-file-windows.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/secure-file-windows.js +186 -0
- package/node_modules/@openclaw/fs-safe/dist/secure-file.d.ts +1 -1
- package/node_modules/@openclaw/fs-safe/dist/secure-file.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/secure-file.js +137 -22
- package/node_modules/@openclaw/fs-safe/dist/secure-temp-dir.d.ts +6 -3
- package/node_modules/@openclaw/fs-safe/dist/secure-temp-dir.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/secure-temp-dir.js +122 -101
- package/node_modules/@openclaw/fs-safe/dist/secure-temp-repair.d.ts +35 -0
- package/node_modules/@openclaw/fs-safe/dist/secure-temp-repair.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/secure-temp-repair.js +106 -0
- package/node_modules/@openclaw/fs-safe/dist/sibling-staged-file.d.ts +4 -1
- package/node_modules/@openclaw/fs-safe/dist/sibling-staged-file.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/sibling-staged-file.js +210 -45
- package/node_modules/@openclaw/fs-safe/dist/sibling-temp.d.ts +2 -0
- package/node_modules/@openclaw/fs-safe/dist/sibling-temp.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/sibling-temp.js +43 -17
- package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-acquire.d.ts +1 -1
- package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-acquire.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-acquire.js +64 -21
- package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-policy.d.ts +2 -0
- package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-policy.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-policy.js +22 -3
- package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-reclaim.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-reclaim.js +16 -4
- package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-root.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-root.js +4 -2
- package/node_modules/@openclaw/fs-safe/dist/sidecar-lock.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/sidecar-lock.js +4 -4
- package/node_modules/@openclaw/fs-safe/dist/staged-directory.d.ts +14 -5
- package/node_modules/@openclaw/fs-safe/dist/staged-directory.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/staged-directory.js +58 -6
- package/node_modules/@openclaw/fs-safe/dist/standalone-publication-path.d.ts +2 -0
- package/node_modules/@openclaw/fs-safe/dist/standalone-publication-path.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/standalone-publication-path.js +6 -0
- package/node_modules/@openclaw/fs-safe/dist/stat-observation.d.ts +11 -0
- package/node_modules/@openclaw/fs-safe/dist/stat-observation.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/stat-observation.js +64 -0
- package/node_modules/@openclaw/fs-safe/dist/strict-file-identity.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/strict-file-identity.js +39 -2
- package/node_modules/@openclaw/fs-safe/dist/symlink-parents.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/symlink-parents.js +7 -2
- package/node_modules/@openclaw/fs-safe/dist/temp-cleanup.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/temp-cleanup.js +3 -2
- package/node_modules/@openclaw/fs-safe/dist/temp-target.d.ts +16 -12
- package/node_modules/@openclaw/fs-safe/dist/temp-target.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/temp-target.js +154 -14
- package/node_modules/@openclaw/fs-safe/dist/temp-workspace-admission.d.ts +22 -0
- package/node_modules/@openclaw/fs-safe/dist/temp-workspace-admission.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/temp-workspace-admission.js +374 -0
- package/node_modules/@openclaw/fs-safe/dist/temp-workspace-child-admission.d.ts +13 -0
- package/node_modules/@openclaw/fs-safe/dist/temp-workspace-child-admission.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/temp-workspace-child-admission.js +95 -0
- package/node_modules/@openclaw/fs-safe/dist/temp-workspace-descriptor.d.ts +48 -0
- package/node_modules/@openclaw/fs-safe/dist/temp-workspace-descriptor.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/temp-workspace-descriptor.js +363 -0
- package/node_modules/@openclaw/fs-safe/dist/temp-workspace-identity.d.ts +15 -0
- package/node_modules/@openclaw/fs-safe/dist/temp-workspace-identity.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/temp-workspace-identity.js +41 -0
- package/node_modules/@openclaw/fs-safe/dist/temp-workspace-owner.d.ts +7 -6
- package/node_modules/@openclaw/fs-safe/dist/temp-workspace-owner.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/temp-workspace-owner.js +121 -61
- package/node_modules/@openclaw/fs-safe/dist/temp-workspace-permissions.d.ts +4 -0
- package/node_modules/@openclaw/fs-safe/dist/temp-workspace-permissions.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/temp-workspace-permissions.js +32 -0
- package/node_modules/@openclaw/fs-safe/dist/temp-workspace-types.d.ts +40 -0
- package/node_modules/@openclaw/fs-safe/dist/temp-workspace-types.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/temp-workspace-types.js +1 -0
- package/node_modules/@openclaw/fs-safe/dist/temp.d.ts +1 -1
- package/node_modules/@openclaw/fs-safe/dist/temp.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/temp.js +1 -1
- package/node_modules/@openclaw/fs-safe/dist/test-hooks.d.ts +7 -0
- package/node_modules/@openclaw/fs-safe/dist/test-hooks.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/text-atomic.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/text-atomic.js +3 -1
- package/node_modules/@openclaw/fs-safe/dist/timing.d.ts +1 -0
- package/node_modules/@openclaw/fs-safe/dist/timing.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/timing.js +25 -6
- package/node_modules/@openclaw/fs-safe/dist/trash.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/trash.js +61 -13
- package/node_modules/@openclaw/fs-safe/dist/unicode-path.d.ts +3 -0
- package/node_modules/@openclaw/fs-safe/dist/unicode-path.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/unicode-path.js +13 -0
- package/node_modules/@openclaw/fs-safe/dist/walk.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/walk.js +25 -40
- package/node_modules/@openclaw/fs-safe/dist/windows-owner.d.ts +9 -12
- package/node_modules/@openclaw/fs-safe/dist/windows-owner.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/windows-owner.js +29 -58
- package/node_modules/@openclaw/fs-safe/dist/windows-path-alias.d.ts +39 -0
- package/node_modules/@openclaw/fs-safe/dist/windows-path-alias.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/windows-path-alias.js +153 -0
- package/node_modules/@openclaw/fs-safe/dist/write-file-handle.d.ts +7 -0
- package/node_modules/@openclaw/fs-safe/dist/write-file-handle.d.ts.map +1 -0
- package/node_modules/@openclaw/fs-safe/dist/write-file-handle.js +26 -0
- package/node_modules/@openclaw/fs-safe/dist/write-open-flags.d.ts.map +1 -1
- package/node_modules/@openclaw/fs-safe/dist/write-open-flags.js +1 -2
- package/node_modules/@openclaw/fs-safe/docs/advanced.md +50 -5
- package/node_modules/@openclaw/fs-safe/docs/archive.md +107 -12
- package/node_modules/@openclaw/fs-safe/docs/atomic.md +77 -5
- package/node_modules/@openclaw/fs-safe/docs/config.md +1 -0
- package/node_modules/@openclaw/fs-safe/docs/contributing.md +40 -2
- package/node_modules/@openclaw/fs-safe/docs/copy.md +158 -0
- package/node_modules/@openclaw/fs-safe/docs/directory-identity.md +85 -0
- package/node_modules/@openclaw/fs-safe/docs/durability.md +71 -5
- package/node_modules/@openclaw/fs-safe/docs/entries.md +109 -0
- package/node_modules/@openclaw/fs-safe/docs/errors.md +18 -10
- package/node_modules/@openclaw/fs-safe/docs/file-store.md +93 -6
- package/node_modules/@openclaw/fs-safe/docs/filename.md +21 -7
- package/node_modules/@openclaw/fs-safe/docs/guest.md +146 -0
- package/node_modules/@openclaw/fs-safe/docs/in-place-write.md +81 -0
- package/node_modules/@openclaw/fs-safe/docs/index.md +2 -0
- package/node_modules/@openclaw/fs-safe/docs/install-path.md +61 -15
- package/node_modules/@openclaw/fs-safe/docs/install.md +42 -7
- package/node_modules/@openclaw/fs-safe/docs/json-store.md +15 -1
- package/node_modules/@openclaw/fs-safe/docs/json.md +11 -0
- package/node_modules/@openclaw/fs-safe/docs/local-roots.md +8 -1
- package/node_modules/@openclaw/fs-safe/docs/mutation-policy-proof.md +65 -0
- package/node_modules/@openclaw/fs-safe/docs/native-helper.md +51 -12
- package/node_modules/@openclaw/fs-safe/docs/native.md +63 -10
- package/node_modules/@openclaw/fs-safe/docs/output.md +55 -7
- package/node_modules/@openclaw/fs-safe/docs/path-case.md +64 -0
- package/node_modules/@openclaw/fs-safe/docs/path-prefix.md +64 -0
- package/node_modules/@openclaw/fs-safe/docs/path-scope.md +1 -1
- package/node_modules/@openclaw/fs-safe/docs/path-suffix-aliases.md +159 -0
- package/node_modules/@openclaw/fs-safe/docs/path.md +12 -1
- package/node_modules/@openclaw/fs-safe/docs/permissions.md +55 -11
- package/node_modules/@openclaw/fs-safe/docs/positional-read.md +63 -0
- package/node_modules/@openclaw/fs-safe/docs/private-file-store.md +14 -0
- package/node_modules/@openclaw/fs-safe/docs/public-api.md +45 -2
- package/node_modules/@openclaw/fs-safe/docs/quickstart.md +1 -1
- package/node_modules/@openclaw/fs-safe/docs/reading.md +14 -1
- package/node_modules/@openclaw/fs-safe/docs/root.md +219 -12
- package/node_modules/@openclaw/fs-safe/docs/secret-file.md +9 -0
- package/node_modules/@openclaw/fs-safe/docs/secure-file.md +23 -16
- package/node_modules/@openclaw/fs-safe/docs/security-model.md +90 -9
- package/node_modules/@openclaw/fs-safe/docs/sidecar-lock.md +42 -4
- package/node_modules/@openclaw/fs-safe/docs/store.md +27 -2
- package/node_modules/@openclaw/fs-safe/docs/temp.md +283 -26
- package/node_modules/@openclaw/fs-safe/docs/test-hooks.md +14 -0
- package/node_modules/@openclaw/fs-safe/docs/timing.md +2 -0
- package/node_modules/@openclaw/fs-safe/docs/types.md +19 -12
- package/node_modules/@openclaw/fs-safe/docs/walk.md +54 -5
- package/node_modules/@openclaw/fs-safe/docs/writing.md +211 -11
- package/node_modules/@openclaw/fs-safe/package.json +24 -13
- package/node_modules/@openclaw/fs-safe-darwin-arm64/fs-safe-native.node +0 -0
- package/node_modules/@openclaw/fs-safe-darwin-arm64/package.json +1 -1
- package/node_modules/@openclaw/fs-safe-darwin-x64/fs-safe-native.node +0 -0
- package/node_modules/@openclaw/fs-safe-darwin-x64/package.json +1 -1
- package/node_modules/@openclaw/fs-safe-linux-arm64-gnu/fs-safe-native.node +0 -0
- package/node_modules/@openclaw/fs-safe-linux-arm64-gnu/package.json +1 -1
- package/node_modules/@openclaw/fs-safe-linux-arm64-musl/fs-safe-native.node +0 -0
- package/node_modules/@openclaw/fs-safe-linux-arm64-musl/package.json +1 -1
- package/node_modules/@openclaw/fs-safe-linux-x64-gnu/fs-safe-native.node +0 -0
- package/node_modules/@openclaw/fs-safe-linux-x64-gnu/package.json +1 -1
- package/node_modules/@openclaw/fs-safe-linux-x64-musl/fs-safe-native.node +0 -0
- package/node_modules/@openclaw/fs-safe-linux-x64-musl/package.json +1 -1
- package/node_modules/@openclaw/fs-safe-win32-x64-msvc/fs-safe-native.node +0 -0
- package/node_modules/@openclaw/fs-safe-win32-x64-msvc/package.json +1 -1
- package/node_modules/jszip/.github/FUNDING.yml +1 -0
- package/node_modules/jszip/.github/actions/setup/action.yml +23 -0
- package/node_modules/jszip/.github/workflows/benchmark.yml +38 -0
- package/node_modules/jszip/.github/workflows/main.yml +55 -0
- package/node_modules/jszip/CHANGES.md +6 -0
- package/node_modules/jszip/dist/jszip.js +28 -19
- package/node_modules/jszip/dist/jszip.min.js +2 -2
- package/node_modules/jszip/index.d.ts +14 -0
- package/node_modules/jszip/lib/index.js +1 -1
- package/node_modules/jszip/lib/utils.js +26 -17
- package/node_modules/jszip/package.json +2 -2
- package/node_modules/p-limit/index.d.ts +1 -1
- package/node_modules/p-limit/index.js +6 -1
- package/node_modules/p-limit/package.json +1 -1
- package/node_modules/p-limit/readme.md +8 -0
- package/node_modules/zod/README.md +27 -0
- package/node_modules/zod/compile.cjs +77 -0
- package/node_modules/zod/compile.d.cts +1 -0
- package/node_modules/zod/compile.d.ts +1 -0
- package/node_modules/zod/compile.js +52 -0
- package/node_modules/zod/index.cjs +2 -2
- package/node_modules/zod/index.d.cts +1 -2
- package/node_modules/zod/index.d.ts +1 -2
- package/node_modules/zod/index.js +5 -2
- package/node_modules/zod/package.json +13 -2
- package/node_modules/zod/src/compile.ts +56 -0
- package/node_modules/zod/src/index.ts +5 -2
- package/node_modules/zod/src/v3/ZodError.ts +22 -12
- package/node_modules/zod/src/v3/tests/error.test.ts +35 -0
- package/node_modules/zod/src/v3/tests/intersection.test.ts +18 -0
- package/node_modules/zod/src/v3/tests/language-server.test.ts +1 -2
- package/node_modules/zod/src/v3/tests/object.test.ts +3 -6
- package/node_modules/zod/src/v3/tests/readonly.test.ts +0 -80
- package/node_modules/zod/src/v3/tests/string.test.ts +6 -0
- package/node_modules/zod/src/v3/types.ts +5 -5
- package/node_modules/zod/src/v4/classic/checks.ts +1 -0
- package/node_modules/zod/src/v4/classic/compat.ts +26 -18
- package/node_modules/zod/src/v4/classic/deep-partial.ts +76 -0
- package/node_modules/zod/src/v4/classic/errors.ts +59 -44
- package/node_modules/zod/src/v4/classic/external.ts +12 -9
- package/node_modules/zod/src/v4/classic/from-json-schema.ts +140 -78
- package/node_modules/zod/src/v4/classic/in-out.ts +45 -0
- package/node_modules/zod/src/v4/classic/index.ts +2 -2
- package/node_modules/zod/src/v4/classic/iso.ts +2 -72
- package/node_modules/zod/src/v4/classic/parse.ts +10 -4
- package/node_modules/zod/src/v4/classic/schemas.ts +452 -262
- package/node_modules/zod/src/v4/classic/tests/apply.test.ts +27 -0
- package/node_modules/zod/src/v4/classic/tests/array.test.ts +2 -2
- package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +135 -0
- package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +30 -1
- package/node_modules/zod/src/v4/classic/tests/catch.test.ts +278 -0
- package/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +1 -2
- package/node_modules/zod/src/v4/classic/tests/codec.test.ts +2 -1
- package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +2 -2
- package/node_modules/zod/src/v4/classic/tests/credit-card.test.ts +76 -0
- package/node_modules/zod/src/v4/classic/tests/cyclic-data.test.ts +720 -0
- package/node_modules/zod/src/v4/classic/tests/date.test.ts +30 -0
- package/node_modules/zod/src/v4/classic/tests/datetime.test.ts +32 -18
- package/node_modules/zod/src/v4/classic/tests/deep-partial.test.ts +380 -0
- package/node_modules/zod/src/v4/classic/tests/default-locale.test.ts +32 -0
- package/node_modules/zod/src/v4/classic/tests/default.test.ts +46 -0
- package/node_modules/zod/src/v4/classic/tests/detached-methods.test.ts +31 -7
- package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +155 -13
- package/node_modules/zod/src/v4/classic/tests/enum.test.ts +11 -0
- package/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +112 -2
- package/node_modules/zod/src/v4/classic/tests/error.test.ts +274 -6
- package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +425 -10
- package/node_modules/zod/src/v4/classic/tests/function.test.ts +31 -0
- package/node_modules/zod/src/v4/classic/tests/global-config.test.ts +2 -9
- package/node_modules/zod/src/v4/classic/tests/hash.test.ts +1 -2
- package/node_modules/zod/src/v4/classic/tests/in-out.test.ts +159 -0
- package/node_modules/zod/src/v4/classic/tests/index.test.ts +21 -2
- package/node_modules/zod/src/v4/classic/tests/instance-footprint.test.ts +281 -0
- package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +47 -0
- package/node_modules/zod/src/v4/classic/tests/intersection.test.ts +136 -0
- package/node_modules/zod/src/v4/classic/tests/issue-schema.test.ts +183 -0
- package/node_modules/zod/src/v4/classic/tests/jitless-allows-eval.test.ts +3 -10
- package/node_modules/zod/src/v4/classic/tests/lazy.test.ts +36 -1
- package/node_modules/zod/src/v4/classic/tests/literal.test.ts +12 -1
- package/node_modules/zod/src/v4/classic/tests/map.test.ts +12 -0
- package/node_modules/zod/src/v4/classic/tests/number.test.ts +46 -9
- package/node_modules/zod/src/v4/classic/tests/object.test.ts +245 -12
- package/node_modules/zod/src/v4/classic/tests/optin-ladder.test.ts +234 -0
- package/node_modules/zod/src/v4/classic/tests/optional.test.ts +49 -16
- package/node_modules/zod/src/v4/classic/tests/partial.test.ts +51 -4
- package/node_modules/zod/src/v4/classic/tests/preprocess-types.test.ts +20 -2
- package/node_modules/zod/src/v4/classic/tests/readonly.test.ts +0 -68
- package/node_modules/zod/src/v4/classic/tests/record.test.ts +186 -18
- package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +33 -2
- package/node_modules/zod/src/v4/classic/tests/redos.test.ts +68 -0
- package/node_modules/zod/src/v4/classic/tests/refine.test.ts +60 -0
- package/node_modules/zod/src/v4/classic/tests/set.test.ts +9 -0
- package/node_modules/zod/src/v4/classic/tests/string.test.ts +127 -5
- package/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +18 -0
- package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +11 -2
- package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +1585 -173
- package/node_modules/zod/src/v4/classic/tests/tuple.test.ts +45 -30
- package/node_modules/zod/src/v4/classic/tests/union.test.ts +39 -2
- package/node_modules/zod/src/v4/classic/tests/validate.test.ts +76 -0
- package/node_modules/zod/src/v4/classic/tests/validations.test.ts +2 -2
- package/node_modules/zod/src/v4/core/api.ts +48 -12
- package/node_modules/zod/src/v4/core/checks.ts +57 -44
- package/node_modules/zod/src/v4/core/compile.ts +2188 -0
- package/node_modules/zod/src/v4/core/core.ts +98 -19
- package/node_modules/zod/src/v4/core/doc.ts +11 -7
- package/node_modules/zod/src/v4/core/errors.ts +115 -24
- package/node_modules/zod/src/v4/core/index.ts +3 -0
- package/node_modules/zod/src/v4/core/json-schema-generator.ts +6 -1
- package/node_modules/zod/src/v4/core/json-schema-processors.ts +257 -93
- package/node_modules/zod/src/v4/core/json-schema.ts +2 -1
- package/node_modules/zod/src/v4/core/memoizer.ts +284 -0
- package/node_modules/zod/src/v4/core/parse.ts +131 -38
- package/node_modules/zod/src/v4/core/regexes.ts +30 -13
- package/node_modules/zod/src/v4/core/registries.ts +2 -2
- package/node_modules/zod/src/v4/core/schemas.ts +759 -461
- package/node_modules/zod/src/v4/core/tests/compile-differential.test.ts +969 -0
- package/node_modules/zod/src/v4/core/tests/compile-global.test.ts +89 -0
- package/node_modules/zod/src/v4/core/tests/compile-off-by-default.test.ts +26 -0
- package/node_modules/zod/src/v4/core/tests/compile-stats.test.ts +34 -0
- package/node_modules/zod/src/v4/core/tests/compile.test.ts +1639 -0
- package/node_modules/zod/src/v4/core/tests/locales/el.test.ts +1 -2
- package/node_modules/zod/src/v4/core/tests/locales/es.test.ts +1 -2
- package/node_modules/zod/src/v4/core/tests/locales/fr.test.ts +3 -3
- package/node_modules/zod/src/v4/core/tests/locales/parity.test.ts +42 -0
- package/node_modules/zod/src/v4/core/tests/locales/tk.test.ts +69 -0
- package/node_modules/zod/src/v4/core/tests/treeshake.test.ts +51 -0
- package/node_modules/zod/src/v4/core/tests/url-no-canparse.test.ts +31 -0
- package/node_modules/zod/src/v4/core/to-json-schema.ts +275 -42
- package/node_modules/zod/src/v4/core/util.ts +268 -42
- package/node_modules/zod/src/v4/core/versions.ts +2 -2
- package/node_modules/zod/src/v4/core/visit.ts +193 -0
- package/node_modules/zod/src/v4/index.ts +3 -3
- package/node_modules/zod/src/v4/locales/ar.ts +3 -0
- package/node_modules/zod/src/v4/locales/az.ts +3 -0
- package/node_modules/zod/src/v4/locales/be.ts +10 -0
- package/node_modules/zod/src/v4/locales/bg.ts +3 -0
- package/node_modules/zod/src/v4/locales/bn.ts +121 -0
- package/node_modules/zod/src/v4/locales/ca.ts +3 -0
- package/node_modules/zod/src/v4/locales/ckb.ts +138 -0
- package/node_modules/zod/src/v4/locales/cs.ts +3 -0
- package/node_modules/zod/src/v4/locales/da.ts +5 -2
- package/node_modules/zod/src/v4/locales/de.ts +3 -0
- package/node_modules/zod/src/v4/locales/el.ts +1 -0
- package/node_modules/zod/src/v4/locales/en.ts +15 -4
- package/node_modules/zod/src/v4/locales/eo.ts +3 -0
- package/node_modules/zod/src/v4/locales/es.ts +2 -0
- package/node_modules/zod/src/v4/locales/fa.ts +3 -0
- package/node_modules/zod/src/v4/locales/fi.ts +3 -0
- package/node_modules/zod/src/v4/locales/fr-CA.ts +3 -0
- package/node_modules/zod/src/v4/locales/fr.ts +19 -14
- package/node_modules/zod/src/v4/locales/gu.ts +121 -0
- package/node_modules/zod/src/v4/locales/he.ts +6 -1
- package/node_modules/zod/src/v4/locales/hi.ts +124 -0
- package/node_modules/zod/src/v4/locales/hr.ts +2 -0
- package/node_modules/zod/src/v4/locales/hu.ts +3 -0
- package/node_modules/zod/src/v4/locales/hy.ts +9 -0
- package/node_modules/zod/src/v4/locales/id.ts +3 -0
- package/node_modules/zod/src/v4/locales/index.ts +10 -0
- package/node_modules/zod/src/v4/locales/is.ts +3 -0
- package/node_modules/zod/src/v4/locales/it.ts +3 -0
- package/node_modules/zod/src/v4/locales/ja.ts +3 -0
- package/node_modules/zod/src/v4/locales/ka.ts +3 -0
- package/node_modules/zod/src/v4/locales/km.ts +3 -0
- package/node_modules/zod/src/v4/locales/kn.ts +124 -0
- package/node_modules/zod/src/v4/locales/ko.ts +3 -0
- package/node_modules/zod/src/v4/locales/lt.ts +2 -0
- package/node_modules/zod/src/v4/locales/mk.ts +3 -0
- package/node_modules/zod/src/v4/locales/ms.ts +3 -0
- package/node_modules/zod/src/v4/locales/ne.ts +126 -0
- package/node_modules/zod/src/v4/locales/nl.ts +3 -0
- package/node_modules/zod/src/v4/locales/nn.ts +119 -0
- package/node_modules/zod/src/v4/locales/no.ts +5 -2
- package/node_modules/zod/src/v4/locales/ota.ts +3 -0
- package/node_modules/zod/src/v4/locales/pl.ts +3 -0
- package/node_modules/zod/src/v4/locales/ps.ts +3 -0
- package/node_modules/zod/src/v4/locales/pt-BR.ts +159 -0
- package/node_modules/zod/src/v4/locales/pt.ts +99 -58
- package/node_modules/zod/src/v4/locales/ro.ts +1 -0
- package/node_modules/zod/src/v4/locales/ru.ts +10 -0
- package/node_modules/zod/src/v4/locales/sk.ts +121 -0
- package/node_modules/zod/src/v4/locales/sl.ts +3 -0
- package/node_modules/zod/src/v4/locales/sv.ts +5 -2
- package/node_modules/zod/src/v4/locales/ta.ts +3 -0
- package/node_modules/zod/src/v4/locales/th.ts +3 -0
- package/node_modules/zod/src/v4/locales/tk.ts +111 -0
- package/node_modules/zod/src/v4/locales/tr.ts +3 -0
- package/node_modules/zod/src/v4/locales/uk.ts +3 -0
- package/node_modules/zod/src/v4/locales/ur.ts +3 -0
- package/node_modules/zod/src/v4/locales/uz.ts +1 -0
- package/node_modules/zod/src/v4/locales/vi.ts +3 -0
- package/node_modules/zod/src/v4/locales/yo.ts +3 -0
- package/node_modules/zod/src/v4/locales/zh-CN.ts +3 -0
- package/node_modules/zod/src/v4/locales/zh-TW.ts +3 -0
- package/node_modules/zod/src/v4/mini/checks.ts +1 -0
- package/node_modules/zod/src/v4/mini/deep-partial.ts +73 -0
- package/node_modules/zod/src/v4/mini/external.ts +10 -1
- package/node_modules/zod/src/v4/mini/in-out.ts +45 -0
- package/node_modules/zod/src/v4/mini/parse.ts +2 -0
- package/node_modules/zod/src/v4/mini/schemas.ts +135 -56
- package/node_modules/zod/src/v4/mini/tests/apply.test.ts +33 -0
- package/node_modules/zod/src/v4/mini/tests/assignability.test.ts +62 -1
- package/node_modules/zod/src/v4/mini/tests/checks.test.ts +14 -0
- package/node_modules/zod/src/v4/mini/tests/codec.test.ts +35 -1
- package/node_modules/zod/src/v4/mini/tests/cyclic-data.test.ts +84 -0
- package/node_modules/zod/src/v4/mini/tests/deep-partial.test.ts +54 -0
- package/node_modules/zod/src/v4/mini/tests/error.test.ts +23 -4
- package/node_modules/zod/src/v4/mini/tests/functions.test.ts +9 -0
- package/node_modules/zod/src/v4/mini/tests/index.test.ts +72 -5
- package/node_modules/zod/src/v4/mini/tests/number.test.ts +14 -0
- package/node_modules/zod/src/v4/mini/tests/object.test.ts +65 -0
- package/node_modules/zod/src/v4/mini/tests/string.test.ts +21 -0
- package/node_modules/zod/v3/ZodError.cjs +22 -12
- package/node_modules/zod/v3/ZodError.d.cts +1 -1
- package/node_modules/zod/v3/ZodError.d.ts +1 -1
- package/node_modules/zod/v3/ZodError.js +22 -12
- package/node_modules/zod/v3/types.cjs +7 -5
- package/node_modules/zod/v3/types.js +7 -5
- package/node_modules/zod/v4/classic/checks.cjs +2 -1
- package/node_modules/zod/v4/classic/checks.d.cts +1 -1
- package/node_modules/zod/v4/classic/checks.d.ts +1 -1
- package/node_modules/zod/v4/classic/checks.js +1 -1
- package/node_modules/zod/v4/classic/compat.d.cts +9 -11
- package/node_modules/zod/v4/classic/compat.d.ts +9 -11
- package/node_modules/zod/v4/classic/deep-partial.cjs +39 -0
- package/node_modules/zod/v4/classic/deep-partial.d.cts +14 -0
- package/node_modules/zod/v4/classic/deep-partial.d.ts +14 -0
- package/node_modules/zod/v4/classic/deep-partial.js +13 -0
- package/node_modules/zod/v4/classic/errors.cjs +43 -34
- package/node_modules/zod/v4/classic/errors.d.cts +3 -4
- package/node_modules/zod/v4/classic/errors.d.ts +3 -4
- package/node_modules/zod/v4/classic/errors.js +43 -34
- package/node_modules/zod/v4/classic/external.cjs +30 -27
- package/node_modules/zod/v4/classic/external.d.cts +5 -2
- package/node_modules/zod/v4/classic/external.d.ts +5 -2
- package/node_modules/zod/v4/classic/external.js +5 -8
- package/node_modules/zod/v4/classic/from-json-schema.cjs +136 -75
- package/node_modules/zod/v4/classic/from-json-schema.js +136 -75
- package/node_modules/zod/v4/classic/in-out.cjs +63 -0
- package/node_modules/zod/v4/classic/in-out.d.cts +8 -0
- package/node_modules/zod/v4/classic/in-out.d.ts +8 -0
- package/node_modules/zod/v4/classic/in-out.js +36 -0
- package/node_modules/zod/v4/classic/index.cjs +2 -2
- package/node_modules/zod/v4/classic/index.d.cts +1 -2
- package/node_modules/zod/v4/classic/index.d.ts +1 -2
- package/node_modules/zod/v4/classic/index.js +2 -2
- package/node_modules/zod/v4/classic/iso.cjs +11 -22
- package/node_modules/zod/v4/classic/iso.d.cts +2 -17
- package/node_modules/zod/v4/classic/iso.d.ts +2 -17
- package/node_modules/zod/v4/classic/iso.js +2 -17
- package/node_modules/zod/v4/classic/parse.cjs +4 -1
- package/node_modules/zod/v4/classic/parse.d.cts +17 -4
- package/node_modules/zod/v4/classic/parse.d.ts +17 -4
- package/node_modules/zod/v4/classic/parse.js +1 -0
- package/node_modules/zod/v4/classic/schemas.cjs +498 -398
- package/node_modules/zod/v4/classic/schemas.d.cts +53 -18
- package/node_modules/zod/v4/classic/schemas.d.ts +53 -18
- package/node_modules/zod/v4/classic/schemas.js +492 -396
- package/node_modules/zod/v4/core/api.cjs +23 -4
- package/node_modules/zod/v4/core/api.d.cts +13 -9
- package/node_modules/zod/v4/core/api.d.ts +13 -9
- package/node_modules/zod/v4/core/api.js +21 -4
- package/node_modules/zod/v4/core/checks.cjs +37 -31
- package/node_modules/zod/v4/core/checks.d.cts +13 -13
- package/node_modules/zod/v4/core/checks.d.ts +13 -13
- package/node_modules/zod/v4/core/checks.js +37 -31
- package/node_modules/zod/v4/core/compile.cjs +1813 -0
- package/node_modules/zod/v4/core/compile.d.cts +51 -0
- package/node_modules/zod/v4/core/compile.d.ts +51 -0
- package/node_modules/zod/v4/core/compile.js +1783 -0
- package/node_modules/zod/v4/core/core.cjs +81 -18
- package/node_modules/zod/v4/core/core.d.cts +16 -4
- package/node_modules/zod/v4/core/core.d.ts +16 -4
- package/node_modules/zod/v4/core/core.js +82 -19
- package/node_modules/zod/v4/core/doc.cjs +5 -7
- package/node_modules/zod/v4/core/doc.d.cts +3 -1
- package/node_modules/zod/v4/core/doc.d.ts +3 -1
- package/node_modules/zod/v4/core/doc.js +5 -7
- package/node_modules/zod/v4/core/errors.cjs +110 -25
- package/node_modules/zod/v4/core/errors.d.cts +4 -0
- package/node_modules/zod/v4/core/errors.d.ts +4 -0
- package/node_modules/zod/v4/core/errors.js +110 -25
- package/node_modules/zod/v4/core/index.cjs +5 -1
- package/node_modules/zod/v4/core/index.d.cts +3 -0
- package/node_modules/zod/v4/core/index.d.ts +3 -0
- package/node_modules/zod/v4/core/index.js +3 -0
- package/node_modules/zod/v4/core/json-schema-generator.cjs +4 -0
- package/node_modules/zod/v4/core/json-schema-generator.d.cts +2 -2
- package/node_modules/zod/v4/core/json-schema-generator.d.ts +2 -2
- package/node_modules/zod/v4/core/json-schema-generator.js +4 -0
- package/node_modules/zod/v4/core/json-schema-processors.cjs +264 -95
- package/node_modules/zod/v4/core/json-schema-processors.js +243 -97
- package/node_modules/zod/v4/core/json-schema.d.cts +2 -1
- package/node_modules/zod/v4/core/json-schema.d.ts +2 -1
- package/node_modules/zod/v4/core/memoizer.cjs +272 -0
- package/node_modules/zod/v4/core/memoizer.d.cts +15 -0
- package/node_modules/zod/v4/core/memoizer.d.ts +15 -0
- package/node_modules/zod/v4/core/memoizer.js +265 -0
- package/node_modules/zod/v4/core/parse.cjs +96 -34
- package/node_modules/zod/v4/core/parse.d.cts +14 -11
- package/node_modules/zod/v4/core/parse.d.ts +14 -11
- package/node_modules/zod/v4/core/parse.js +94 -33
- package/node_modules/zod/v4/core/regexes.cjs +27 -15
- package/node_modules/zod/v4/core/regexes.d.cts +2 -0
- package/node_modules/zod/v4/core/regexes.d.ts +2 -0
- package/node_modules/zod/v4/core/regexes.js +24 -13
- package/node_modules/zod/v4/core/registries.js +2 -2
- package/node_modules/zod/v4/core/schemas.cjs +537 -326
- package/node_modules/zod/v4/core/schemas.d.cts +100 -31
- package/node_modules/zod/v4/core/schemas.d.ts +100 -31
- package/node_modules/zod/v4/core/schemas.js +526 -325
- package/node_modules/zod/v4/core/to-json-schema.cjs +242 -39
- package/node_modules/zod/v4/core/to-json-schema.d.cts +42 -3
- package/node_modules/zod/v4/core/to-json-schema.d.ts +42 -3
- package/node_modules/zod/v4/core/to-json-schema.js +241 -39
- package/node_modules/zod/v4/core/util.cjs +212 -31
- package/node_modules/zod/v4/core/util.d.cts +58 -1
- package/node_modules/zod/v4/core/util.d.ts +58 -1
- package/node_modules/zod/v4/core/util.js +202 -30
- package/node_modules/zod/v4/core/versions.cjs +2 -2
- package/node_modules/zod/v4/core/versions.d.cts +1 -1
- package/node_modules/zod/v4/core/versions.d.ts +1 -1
- package/node_modules/zod/v4/core/versions.js +2 -2
- package/node_modules/zod/v4/core/visit.cjs +195 -0
- package/node_modules/zod/v4/core/visit.d.cts +30 -0
- package/node_modules/zod/v4/core/visit.d.ts +30 -0
- package/node_modules/zod/v4/core/visit.js +169 -0
- package/node_modules/zod/v4/index.cjs +15 -5
- package/node_modules/zod/v4/index.d.cts +2 -2
- package/node_modules/zod/v4/index.d.ts +2 -2
- package/node_modules/zod/v4/index.js +3 -2
- package/node_modules/zod/v4/locales/ar.cjs +3 -0
- package/node_modules/zod/v4/locales/ar.js +3 -0
- package/node_modules/zod/v4/locales/az.cjs +3 -0
- package/node_modules/zod/v4/locales/az.js +3 -0
- package/node_modules/zod/v4/locales/be.cjs +10 -0
- package/node_modules/zod/v4/locales/be.js +10 -0
- package/node_modules/zod/v4/locales/bg.cjs +3 -0
- package/node_modules/zod/v4/locales/bg.js +3 -0
- package/node_modules/zod/v4/locales/bn.cjs +138 -0
- package/node_modules/zod/v4/locales/bn.d.cts +5 -0
- package/node_modules/zod/v4/locales/bn.d.ts +4 -0
- package/node_modules/zod/v4/locales/bn.js +111 -0
- package/node_modules/zod/v4/locales/ca.cjs +3 -0
- package/node_modules/zod/v4/locales/ca.js +3 -0
- package/node_modules/zod/v4/locales/ckb.cjs +158 -0
- package/node_modules/zod/v4/locales/ckb.d.cts +5 -0
- package/node_modules/zod/v4/locales/ckb.d.ts +4 -0
- package/node_modules/zod/v4/locales/ckb.js +131 -0
- package/node_modules/zod/v4/locales/cs.cjs +3 -0
- package/node_modules/zod/v4/locales/cs.js +3 -0
- package/node_modules/zod/v4/locales/da.cjs +5 -2
- package/node_modules/zod/v4/locales/da.js +5 -2
- package/node_modules/zod/v4/locales/de.cjs +3 -0
- package/node_modules/zod/v4/locales/de.js +3 -0
- package/node_modules/zod/v4/locales/el.cjs +1 -0
- package/node_modules/zod/v4/locales/el.js +1 -0
- package/node_modules/zod/v4/locales/en.cjs +14 -4
- package/node_modules/zod/v4/locales/en.js +14 -4
- package/node_modules/zod/v4/locales/eo.cjs +3 -0
- package/node_modules/zod/v4/locales/eo.js +3 -0
- package/node_modules/zod/v4/locales/es.cjs +2 -0
- package/node_modules/zod/v4/locales/es.js +2 -0
- package/node_modules/zod/v4/locales/fa.cjs +3 -0
- package/node_modules/zod/v4/locales/fa.js +3 -0
- package/node_modules/zod/v4/locales/fi.cjs +3 -0
- package/node_modules/zod/v4/locales/fi.js +3 -0
- package/node_modules/zod/v4/locales/fr-CA.cjs +3 -0
- package/node_modules/zod/v4/locales/fr-CA.js +3 -0
- package/node_modules/zod/v4/locales/fr.cjs +16 -14
- package/node_modules/zod/v4/locales/fr.js +16 -14
- package/node_modules/zod/v4/locales/gu.cjs +138 -0
- package/node_modules/zod/v4/locales/gu.d.cts +5 -0
- package/node_modules/zod/v4/locales/gu.d.ts +4 -0
- package/node_modules/zod/v4/locales/gu.js +111 -0
- package/node_modules/zod/v4/locales/he.cjs +5 -0
- package/node_modules/zod/v4/locales/he.js +5 -0
- package/node_modules/zod/v4/locales/hi.cjs +136 -0
- package/node_modules/zod/v4/locales/hi.d.cts +5 -0
- package/node_modules/zod/v4/locales/hi.d.ts +4 -0
- package/node_modules/zod/v4/locales/hi.js +109 -0
- package/node_modules/zod/v4/locales/hr.cjs +2 -0
- package/node_modules/zod/v4/locales/hr.js +2 -0
- package/node_modules/zod/v4/locales/hu.cjs +3 -0
- package/node_modules/zod/v4/locales/hu.js +3 -0
- package/node_modules/zod/v4/locales/hy.cjs +9 -0
- package/node_modules/zod/v4/locales/hy.js +9 -0
- package/node_modules/zod/v4/locales/id.cjs +3 -0
- package/node_modules/zod/v4/locales/id.js +3 -0
- package/node_modules/zod/v4/locales/index.cjs +22 -2
- package/node_modules/zod/v4/locales/index.d.cts +10 -0
- package/node_modules/zod/v4/locales/index.d.ts +10 -0
- package/node_modules/zod/v4/locales/index.js +10 -0
- package/node_modules/zod/v4/locales/is.cjs +3 -0
- package/node_modules/zod/v4/locales/is.js +3 -0
- package/node_modules/zod/v4/locales/it.cjs +3 -0
- package/node_modules/zod/v4/locales/it.js +3 -0
- package/node_modules/zod/v4/locales/ja.cjs +3 -0
- package/node_modules/zod/v4/locales/ja.js +3 -0
- package/node_modules/zod/v4/locales/ka.cjs +3 -0
- package/node_modules/zod/v4/locales/ka.js +3 -0
- package/node_modules/zod/v4/locales/km.cjs +3 -0
- package/node_modules/zod/v4/locales/km.js +3 -0
- package/node_modules/zod/v4/locales/kn.cjs +141 -0
- package/node_modules/zod/v4/locales/kn.d.cts +5 -0
- package/node_modules/zod/v4/locales/kn.d.ts +4 -0
- package/node_modules/zod/v4/locales/kn.js +114 -0
- package/node_modules/zod/v4/locales/ko.cjs +3 -0
- package/node_modules/zod/v4/locales/ko.js +3 -0
- package/node_modules/zod/v4/locales/lt.cjs +2 -0
- package/node_modules/zod/v4/locales/lt.js +2 -0
- package/node_modules/zod/v4/locales/mk.cjs +3 -0
- package/node_modules/zod/v4/locales/mk.js +3 -0
- package/node_modules/zod/v4/locales/ms.cjs +3 -0
- package/node_modules/zod/v4/locales/ms.js +3 -0
- package/node_modules/zod/v4/locales/ne.cjs +136 -0
- package/node_modules/zod/v4/locales/ne.d.cts +5 -0
- package/node_modules/zod/v4/locales/ne.d.ts +4 -0
- package/node_modules/zod/v4/locales/ne.js +109 -0
- package/node_modules/zod/v4/locales/nl.cjs +3 -0
- package/node_modules/zod/v4/locales/nl.js +3 -0
- package/node_modules/zod/v4/locales/nn.cjs +138 -0
- package/node_modules/zod/v4/locales/nn.d.cts +5 -0
- package/node_modules/zod/v4/locales/nn.d.ts +4 -0
- package/node_modules/zod/v4/locales/nn.js +111 -0
- package/node_modules/zod/v4/locales/no.cjs +5 -2
- package/node_modules/zod/v4/locales/no.js +5 -2
- package/node_modules/zod/v4/locales/ota.cjs +3 -0
- package/node_modules/zod/v4/locales/ota.js +3 -0
- package/node_modules/zod/v4/locales/pl.cjs +3 -0
- package/node_modules/zod/v4/locales/pl.js +3 -0
- package/node_modules/zod/v4/locales/ps.cjs +3 -0
- package/node_modules/zod/v4/locales/ps.js +3 -0
- package/node_modules/zod/v4/locales/pt-BR.cjs +168 -0
- package/node_modules/zod/v4/locales/pt-BR.d.cts +5 -0
- package/node_modules/zod/v4/locales/pt-BR.d.ts +4 -0
- package/node_modules/zod/v4/locales/pt-BR.js +141 -0
- package/node_modules/zod/v4/locales/pt.cjs +87 -55
- package/node_modules/zod/v4/locales/pt.js +87 -55
- package/node_modules/zod/v4/locales/ro.cjs +1 -0
- package/node_modules/zod/v4/locales/ro.js +1 -0
- package/node_modules/zod/v4/locales/ru.cjs +10 -0
- package/node_modules/zod/v4/locales/ru.js +10 -0
- package/node_modules/zod/v4/locales/sk.cjs +141 -0
- package/node_modules/zod/v4/locales/sk.d.cts +5 -0
- package/node_modules/zod/v4/locales/sk.d.ts +4 -0
- package/node_modules/zod/v4/locales/sk.js +114 -0
- package/node_modules/zod/v4/locales/sl.cjs +3 -0
- package/node_modules/zod/v4/locales/sl.js +3 -0
- package/node_modules/zod/v4/locales/sv.cjs +5 -2
- package/node_modules/zod/v4/locales/sv.js +5 -2
- package/node_modules/zod/v4/locales/ta.cjs +3 -0
- package/node_modules/zod/v4/locales/ta.js +3 -0
- package/node_modules/zod/v4/locales/th.cjs +3 -0
- package/node_modules/zod/v4/locales/th.js +3 -0
- package/node_modules/zod/v4/locales/tk.cjs +132 -0
- package/node_modules/zod/v4/locales/tk.d.cts +5 -0
- package/node_modules/zod/v4/locales/tk.d.ts +4 -0
- package/node_modules/zod/v4/locales/tk.js +105 -0
- package/node_modules/zod/v4/locales/tr.cjs +3 -0
- package/node_modules/zod/v4/locales/tr.js +3 -0
- package/node_modules/zod/v4/locales/uk.cjs +3 -0
- package/node_modules/zod/v4/locales/uk.js +3 -0
- package/node_modules/zod/v4/locales/ur.cjs +3 -0
- package/node_modules/zod/v4/locales/ur.js +3 -0
- package/node_modules/zod/v4/locales/uz.cjs +1 -0
- package/node_modules/zod/v4/locales/uz.js +1 -0
- package/node_modules/zod/v4/locales/vi.cjs +3 -0
- package/node_modules/zod/v4/locales/vi.js +3 -0
- package/node_modules/zod/v4/locales/yo.cjs +3 -0
- package/node_modules/zod/v4/locales/yo.js +3 -0
- package/node_modules/zod/v4/locales/zh-CN.cjs +3 -0
- package/node_modules/zod/v4/locales/zh-CN.js +3 -0
- package/node_modules/zod/v4/locales/zh-TW.cjs +3 -0
- package/node_modules/zod/v4/locales/zh-TW.js +3 -0
- package/node_modules/zod/v4/mini/checks.cjs +2 -1
- package/node_modules/zod/v4/mini/checks.d.cts +1 -1
- package/node_modules/zod/v4/mini/checks.d.ts +1 -1
- package/node_modules/zod/v4/mini/checks.js +1 -1
- package/node_modules/zod/v4/mini/deep-partial.cjs +39 -0
- package/node_modules/zod/v4/mini/deep-partial.d.cts +14 -0
- package/node_modules/zod/v4/mini/deep-partial.d.ts +14 -0
- package/node_modules/zod/v4/mini/deep-partial.js +13 -0
- package/node_modules/zod/v4/mini/external.cjs +12 -1
- package/node_modules/zod/v4/mini/external.d.cts +5 -2
- package/node_modules/zod/v4/mini/external.d.ts +5 -2
- package/node_modules/zod/v4/mini/external.js +3 -1
- package/node_modules/zod/v4/mini/in-out.cjs +63 -0
- package/node_modules/zod/v4/mini/in-out.d.cts +8 -0
- package/node_modules/zod/v4/mini/in-out.d.ts +8 -0
- package/node_modules/zod/v4/mini/in-out.js +36 -0
- package/node_modules/zod/v4/mini/parse.cjs +3 -1
- package/node_modules/zod/v4/mini/parse.d.cts +1 -1
- package/node_modules/zod/v4/mini/parse.d.ts +1 -1
- package/node_modules/zod/v4/mini/parse.js +1 -1
- package/node_modules/zod/v4/mini/schemas.cjs +75 -47
- package/node_modules/zod/v4/mini/schemas.d.cts +43 -13
- package/node_modules/zod/v4/mini/schemas.d.ts +43 -13
- package/node_modules/zod/v4/mini/schemas.js +71 -45
- package/openclaw.plugin.json +21 -0
- package/package.json +11 -8
- package/node_modules/jszip/.github/workflows/pr.yaml +0 -58
- package/node_modules/jszip/.jekyll-metadata +0 -0
- package/node_modules/jszip/.travis.yml +0 -17
- package/node_modules/jszip/deps.js +0 -37
- package/node_modules/jszip/graph.svg +0 -601
- package/node_modules/zod/src/v4/core/config.ts +0 -15
|
@@ -156,10 +156,7 @@ test("catch/prefault/default", () => {
|
|
|
156
156
|
f: z.string().prefault("prefault value"),
|
|
157
157
|
});
|
|
158
158
|
|
|
159
|
-
// Catch (d) and default/prefault (b, c, e, f) handle absent keys gracefully.
|
|
160
|
-
// `a: catch().optional()` short-circuits to undefined when the original
|
|
161
|
-
// input was undefined, so the property is omitted from the output. All
|
|
162
|
-
// other catch/default/prefault keys produce their fallback values.
|
|
159
|
+
// Catch (d) and default/prefault (b, c, e, f) handle absent keys gracefully. `a: catch().optional()` short-circuits to undefined when the original input was undefined, so the property is omitted from the output. All other catch/default/prefault keys produce their fallback values.
|
|
163
160
|
expect(mySchema.parse({})).toMatchInlineSnapshot(`
|
|
164
161
|
{
|
|
165
162
|
"b": "default value",
|
|
@@ -448,3 +445,53 @@ test("required - refinement is executed on required schema", () => {
|
|
|
448
445
|
const validResult = requiredSchema.safeParse({ password: "abc", confirmPassword: "abc" });
|
|
449
446
|
expect(validResult.success).toBe(true);
|
|
450
447
|
});
|
|
448
|
+
|
|
449
|
+
test("exactPartial - shallow inference", () => {
|
|
450
|
+
const shallow = nested.exactPartial();
|
|
451
|
+
type shallow = z.infer<typeof shallow>;
|
|
452
|
+
expectTypeOf<shallow>().toEqualTypeOf<{
|
|
453
|
+
name?: string;
|
|
454
|
+
age?: number;
|
|
455
|
+
outer?: { inner: string };
|
|
456
|
+
array?: { asdf: string }[];
|
|
457
|
+
}>();
|
|
458
|
+
|
|
459
|
+
// The point of exactPartial: unlike partial(), this matches TypeScript's Partial<> under exactOptionalPropertyTypes.
|
|
460
|
+
expectTypeOf<shallow>().toEqualTypeOf<Partial<z.infer<typeof nested>>>();
|
|
461
|
+
});
|
|
462
|
+
|
|
463
|
+
test("exactPartial - wraps fields in ZodExactOptional", () => {
|
|
464
|
+
const object = z.object({ name: z.string(), age: z.number() });
|
|
465
|
+
const exact = object.exactPartial();
|
|
466
|
+
expect(exact.shape.name).toBeInstanceOf(z.ZodExactOptional);
|
|
467
|
+
expect(exact.shape.age).toBeInstanceOf(z.ZodExactOptional);
|
|
468
|
+
expect(exact.shape.name.unwrap()).toBeInstanceOf(z.ZodString);
|
|
469
|
+
});
|
|
470
|
+
|
|
471
|
+
test("exactPartial - absent keys pass, explicit undefined rejected", () => {
|
|
472
|
+
const exact = z.object({ name: z.string(), age: z.number() }).exactPartial();
|
|
473
|
+
expect(exact.parse({})).toEqual({});
|
|
474
|
+
expect(exact.parse({ name: "asdf" })).toEqual({ name: "asdf" });
|
|
475
|
+
expect(exact.safeParse({ name: undefined }).success).toBe(false);
|
|
476
|
+
});
|
|
477
|
+
|
|
478
|
+
test("exactPartial with mask", () => {
|
|
479
|
+
const object = z.object({ name: z.string(), age: z.number(), country: z.string() });
|
|
480
|
+
const masked = object.exactPartial({ name: true, age: true });
|
|
481
|
+
expect(masked.shape.name).toBeInstanceOf(z.ZodExactOptional);
|
|
482
|
+
expect(masked.shape.age).toBeInstanceOf(z.ZodExactOptional);
|
|
483
|
+
expect(masked.shape.country).toBeInstanceOf(z.ZodString);
|
|
484
|
+
|
|
485
|
+
type masked = z.infer<typeof masked>;
|
|
486
|
+
expectTypeOf<masked>().toEqualTypeOf<{ name?: string; age?: number; country: string }>();
|
|
487
|
+
|
|
488
|
+
expect(masked.parse({ country: "US" })).toEqual({ country: "US" });
|
|
489
|
+
expect(masked.safeParse({ country: "US", name: undefined }).success).toBe(false);
|
|
490
|
+
});
|
|
491
|
+
|
|
492
|
+
test("exactPartial - throws on schema with refinements", () => {
|
|
493
|
+
const refined = z.object({ name: z.string() }).refine(() => true);
|
|
494
|
+
expect(() => refined.exactPartial()).toThrow(
|
|
495
|
+
".exactPartial() cannot be used on object schemas containing refinements"
|
|
496
|
+
);
|
|
497
|
+
});
|
|
@@ -11,11 +11,11 @@ test("ZodPreprocess<B> assignable to ZodPipe<$ZodTransform, B>", () => {
|
|
|
11
11
|
|
|
12
12
|
test("ZodPreprocess optin/optout defer to B", () => {
|
|
13
13
|
const optionalInside = z.preprocess((v) => v, z.string().optional());
|
|
14
|
-
expectTypeOf<(typeof optionalInside)["_zod"]["optin"]>().toEqualTypeOf<"optional">();
|
|
14
|
+
expectTypeOf<(typeof optionalInside)["_zod"]["optin"]>().toEqualTypeOf<"optional" | "defaulted">();
|
|
15
15
|
expectTypeOf<(typeof optionalInside)["_zod"]["optout"]>().toEqualTypeOf<"optional">();
|
|
16
16
|
|
|
17
17
|
const required = z.preprocess((v) => v, z.string());
|
|
18
|
-
expectTypeOf<(typeof required)["_zod"]["optin"]>().toEqualTypeOf<"optional" | undefined>();
|
|
18
|
+
expectTypeOf<(typeof required)["_zod"]["optin"]>().toEqualTypeOf<"optional" | "defaulted" | undefined>();
|
|
19
19
|
expectTypeOf<(typeof required)["_zod"]["optout"]>().toEqualTypeOf<"optional" | undefined>();
|
|
20
20
|
});
|
|
21
21
|
|
|
@@ -24,3 +24,21 @@ test("ZodPreprocess input/output inference", () => {
|
|
|
24
24
|
expectTypeOf<z.output<typeof pre>>().toEqualTypeOf<number | undefined>();
|
|
25
25
|
expectTypeOf<z.input<typeof pre>>().toEqualTypeOf<unknown>();
|
|
26
26
|
});
|
|
27
|
+
|
|
28
|
+
test("ZodPreprocess narrows input from an annotated preprocessor arg", () => {
|
|
29
|
+
const trimmed = z.preprocess((val: string | null | undefined) => val?.trim() ?? "", z.string());
|
|
30
|
+
expectTypeOf<z.input<typeof trimmed>>().toEqualTypeOf<string | null | undefined>();
|
|
31
|
+
expectTypeOf<z.output<typeof trimmed>>().toEqualTypeOf<string>();
|
|
32
|
+
|
|
33
|
+
const obj = z.object({ a: z.preprocess((v: string | number) => String(v), z.string()) });
|
|
34
|
+
expectTypeOf<z.input<typeof obj>>().toEqualTypeOf<{ a: string | number }>();
|
|
35
|
+
expectTypeOf<z.output<typeof obj>>().toEqualTypeOf<{ a: string }>();
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
// The narrowing must ride on the transform's input only. Binding its output too makes $ZodPipeDef's codec-only `transform?` field contravariant in the preprocessor's return type, which drops the bare-type assignability below.
|
|
39
|
+
test("narrowed ZodPreprocess still assignable to the bare type", () => {
|
|
40
|
+
const pre = z.preprocess((v: string) => v.length, z.number());
|
|
41
|
+
const _bare: z.ZodPreprocess<z.ZodNumber> = pre;
|
|
42
|
+
const _bareCore: z.core.$ZodPreprocess = pre;
|
|
43
|
+
expectTypeOf<(typeof pre)["_zod"]["optin"]>().toEqualTypeOf<"optional" | "defaulted" | undefined>();
|
|
44
|
+
});
|
|
@@ -50,74 +50,6 @@ test("flat inference", () => {
|
|
|
50
50
|
expectTypeOf<typeof readonlyPromise._output>().toEqualTypeOf<Promise<string>>();
|
|
51
51
|
});
|
|
52
52
|
|
|
53
|
-
// test("deep inference", () => {
|
|
54
|
-
// expectTypeOf<z.infer<(typeof deepReadonlySchemas_0)[0]>>().toEqualTypeOf<string>();
|
|
55
|
-
// expectTypeOf<z.infer<(typeof deepReadonlySchemas_0)[1]>>().toEqualTypeOf<number>();
|
|
56
|
-
// expectTypeOf<z.infer<(typeof deepReadonlySchemas_0)[2]>>().toEqualTypeOf<number>();
|
|
57
|
-
// expectTypeOf<z.infer<(typeof deepReadonlySchemas_0)[3]>>().toEqualTypeOf<bigint>();
|
|
58
|
-
// expectTypeOf<z.infer<(typeof deepReadonlySchemas_0)[4]>>().toEqualTypeOf<boolean>();
|
|
59
|
-
// expectTypeOf<z.infer<(typeof deepReadonlySchemas_0)[5]>>().toEqualTypeOf<Date>();
|
|
60
|
-
// expectTypeOf<z.infer<(typeof deepReadonlySchemas_0)[6]>>().toEqualTypeOf<undefined>();
|
|
61
|
-
// expectTypeOf<z.infer<(typeof deepReadonlySchemas_0)[7]>>().toEqualTypeOf<null>();
|
|
62
|
-
// expectTypeOf<z.infer<(typeof deepReadonlySchemas_0)[8]>>().toEqualTypeOf<any>();
|
|
63
|
-
// expectTypeOf<
|
|
64
|
-
// z.infer<(typeof deepReadonlySchemas_0)[9]>
|
|
65
|
-
// >().toEqualTypeOf<Readonly<unknown>>();
|
|
66
|
-
// expectTypeOf<z.infer<(typeof deepReadonlySchemas_0)[10]>>().toEqualTypeOf<void>();
|
|
67
|
-
// expectTypeOf<
|
|
68
|
-
// z.infer<(typeof deepReadonlySchemas_0)[11]>
|
|
69
|
-
// >().toEqualTypeOf<(args_0: string, args_1: number, ...args_2: unknown[]) => unknown>();
|
|
70
|
-
// expectTypeOf<
|
|
71
|
-
// z.infer<(typeof deepReadonlySchemas_0)[12]>
|
|
72
|
-
// >().toEqualTypeOf<readonly string[]>();
|
|
73
|
-
// expectTypeOf<
|
|
74
|
-
// z.infer<(typeof deepReadonlySchemas_0)[13]>
|
|
75
|
-
// >().toEqualTypeOf<readonly [string, number]>();
|
|
76
|
-
// expectTypeOf<
|
|
77
|
-
// z.infer<(typeof deepReadonlySchemas_0)[14]>
|
|
78
|
-
// >().toEqualTypeOf<ReadonlyMap<string, Date>>();
|
|
79
|
-
// expectTypeOf<
|
|
80
|
-
// z.infer<(typeof deepReadonlySchemas_0)[15]>
|
|
81
|
-
// >().toEqualTypeOf<ReadonlySet<Promise<string>>>();
|
|
82
|
-
// expectTypeOf<
|
|
83
|
-
// z.infer<(typeof deepReadonlySchemas_0)[16]>
|
|
84
|
-
// >().toEqualTypeOf<Readonly<Record<string, string>>>();
|
|
85
|
-
// expectTypeOf<
|
|
86
|
-
// z.infer<(typeof deepReadonlySchemas_0)[17]>
|
|
87
|
-
// >().toEqualTypeOf<Readonly<Record<string, number>>>();
|
|
88
|
-
// expectTypeOf<
|
|
89
|
-
// z.infer<(typeof deepReadonlySchemas_0)[18]>
|
|
90
|
-
// >().toEqualTypeOf<{ readonly a: string; readonly 1: number }>();
|
|
91
|
-
// expectTypeOf<
|
|
92
|
-
// z.infer<(typeof deepReadonlySchemas_0)[19]>
|
|
93
|
-
// >().toEqualTypeOf<Readonly<testEnum>>();
|
|
94
|
-
// expectTypeOf<
|
|
95
|
-
// z.infer<(typeof deepReadonlySchemas_0)[20]>
|
|
96
|
-
// >().toEqualTypeOf<Promise<string>>();
|
|
97
|
-
|
|
98
|
-
// expectTypeOf<
|
|
99
|
-
// z.infer<typeof crazyDeepReadonlySchema>
|
|
100
|
-
// >().toEqualTypeOf<ReadonlyMap<
|
|
101
|
-
// ReadonlySet<readonly [string, number]>,
|
|
102
|
-
// {
|
|
103
|
-
// readonly a: {
|
|
104
|
-
// readonly [x: string]: readonly any[];
|
|
105
|
-
// };
|
|
106
|
-
// readonly b: {
|
|
107
|
-
// readonly c: {
|
|
108
|
-
// readonly d: {
|
|
109
|
-
// readonly e: {
|
|
110
|
-
// readonly f: {
|
|
111
|
-
// readonly g?: {};
|
|
112
|
-
// };
|
|
113
|
-
// };
|
|
114
|
-
// };
|
|
115
|
-
// };
|
|
116
|
-
// };
|
|
117
|
-
// }
|
|
118
|
-
// >>();
|
|
119
|
-
// });
|
|
120
|
-
|
|
121
53
|
test("object freezing", async () => {
|
|
122
54
|
expect(Object.isFrozen(z.array(z.string()).readonly().parse(["a"]))).toBe(true);
|
|
123
55
|
expect(Object.isFrozen(z.tuple([z.string(), z.number()]).readonly().parse(["a", 1]))).toBe(true);
|
|
@@ -76,6 +76,37 @@ test("enum exhaustiveness", () => {
|
|
|
76
76
|
`);
|
|
77
77
|
});
|
|
78
78
|
|
|
79
|
+
test("optional-in value type", () => {
|
|
80
|
+
const defaulted = z.record(z.enum(["Tuna", "Salmon"]), z.string().default("unknown"));
|
|
81
|
+
expectTypeOf<z.input<typeof defaulted>>().toEqualTypeOf<Partial<Record<"Tuna" | "Salmon", string | undefined>>>();
|
|
82
|
+
expectTypeOf<z.output<typeof defaulted>>().toEqualTypeOf<Record<"Tuna" | "Salmon", string>>();
|
|
83
|
+
expect(defaulted.parse({ Tuna: "asdf" })).toEqual({ Tuna: "asdf", Salmon: "unknown" });
|
|
84
|
+
|
|
85
|
+
const prefaulted = z.record(z.enum(["Tuna", "Salmon"]), z.string().prefault("unknown"));
|
|
86
|
+
expectTypeOf<z.input<typeof prefaulted>>().toEqualTypeOf<Partial<Record<"Tuna" | "Salmon", string | undefined>>>();
|
|
87
|
+
expect(prefaulted.parse({ Tuna: "asdf" })).toEqual({ Tuna: "asdf", Salmon: "unknown" });
|
|
88
|
+
|
|
89
|
+
const optional = z.record(z.enum(["Tuna", "Salmon"]), z.string().optional());
|
|
90
|
+
expectTypeOf<z.input<typeof optional>>().toEqualTypeOf<Partial<Record<"Tuna" | "Salmon", string | undefined>>>();
|
|
91
|
+
// toStrictEqual, not toEqual: an exhaustive record assigns every key, and toEqual cannot tell an absent key from one holding undefined.
|
|
92
|
+
expect(optional.parse({ Tuna: "asdf" })).toStrictEqual({ Tuna: "asdf", Salmon: undefined });
|
|
93
|
+
|
|
94
|
+
// A value that needs a slot keeps the key required, and a non-enumerable key stays an index signature either way.
|
|
95
|
+
const required = z.record(z.enum(["Tuna", "Salmon"]), z.string());
|
|
96
|
+
expectTypeOf<z.input<typeof required>>().toEqualTypeOf<Record<"Tuna" | "Salmon", string>>();
|
|
97
|
+
const indexed = z.record(z.string(), z.string().default("unknown"));
|
|
98
|
+
expectTypeOf<z.input<typeof indexed>>().toEqualTypeOf<Record<string, string | undefined>>();
|
|
99
|
+
|
|
100
|
+
// A catch and a preprocess pipe declare no static optin, so the key stays required even where the parser can fill it. The static predicate and the one the JSON Schema emitter uses resolve these differently, and the two have to keep agreeing.
|
|
101
|
+
const caught = z.record(z.enum(["Tuna", "Salmon"]), z.string().catch("unknown"));
|
|
102
|
+
expectTypeOf<z.input<typeof caught>>().toEqualTypeOf<Record<"Tuna" | "Salmon", string>>();
|
|
103
|
+
const preprocessed = z.record(
|
|
104
|
+
z.enum(["Tuna", "Salmon"]),
|
|
105
|
+
z.preprocess((v) => v, z.string())
|
|
106
|
+
);
|
|
107
|
+
expectTypeOf<z.input<typeof preprocessed>>().toEqualTypeOf<Record<"Tuna" | "Salmon", unknown>>();
|
|
108
|
+
});
|
|
109
|
+
|
|
79
110
|
test("typescript enum exhaustiveness", () => {
|
|
80
111
|
enum BigFish {
|
|
81
112
|
Tuna = 0,
|
|
@@ -402,6 +433,44 @@ test("is not vulnerable to prototype pollution", async () => {
|
|
|
402
433
|
}
|
|
403
434
|
});
|
|
404
435
|
|
|
436
|
+
test("key schema cannot normalize an input key into __proto__", async () => {
|
|
437
|
+
const value = z.object({ a: z.string() });
|
|
438
|
+
const payload = { a: "evil" };
|
|
439
|
+
const wire = (key: string) => JSON.parse(JSON.stringify({ [key]: payload }));
|
|
440
|
+
|
|
441
|
+
const cases = [
|
|
442
|
+
[z.record(z.string().toLowerCase(), value), wire("__PROTO__")],
|
|
443
|
+
[z.record(z.string().trim(), value), wire(" __proto__ ")],
|
|
444
|
+
[z.record(z.string().normalize("NFKC"), value), wire("__proto__")],
|
|
445
|
+
[
|
|
446
|
+
z.record(
|
|
447
|
+
z.string().transform((s) => s.slice(2)),
|
|
448
|
+
value
|
|
449
|
+
),
|
|
450
|
+
wire("x:__proto__"),
|
|
451
|
+
],
|
|
452
|
+
] as const;
|
|
453
|
+
|
|
454
|
+
for (const [schema, data] of cases) {
|
|
455
|
+
const result = schema.parse(data);
|
|
456
|
+
expect(Object.getPrototypeOf(result)).toBe(Object.prototype);
|
|
457
|
+
expect(Object.keys(result)).toEqual([]);
|
|
458
|
+
expect((result as any).a).toBeUndefined();
|
|
459
|
+
|
|
460
|
+
expect(Object.getPrototypeOf(await schema.parseAsync(data))).toBe(Object.prototype);
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
// an async value schema takes the promise write path
|
|
464
|
+
const asyncValue = z.record(
|
|
465
|
+
z.string().toLowerCase(),
|
|
466
|
+
value.refine(async () => true)
|
|
467
|
+
);
|
|
468
|
+
expect(Object.getPrototypeOf(await asyncValue.parseAsync(wire("__PROTO__")))).toBe(Object.prototype);
|
|
469
|
+
|
|
470
|
+
// ordinary normalization still lands as an own key
|
|
471
|
+
expect(z.record(z.string().toLowerCase(), value).parse({ KEY: payload })).toEqual({ key: payload });
|
|
472
|
+
});
|
|
473
|
+
|
|
405
474
|
test("dont remove undefined values", () => {
|
|
406
475
|
const result1 = z.record(z.string(), z.any()).parse({ foo: undefined });
|
|
407
476
|
|
|
@@ -523,24 +592,12 @@ test("partialRecord with z.literal([key, ...])", () => {
|
|
|
523
592
|
{
|
|
524
593
|
"error": [ZodError: [
|
|
525
594
|
{
|
|
526
|
-
"code": "
|
|
527
|
-
"
|
|
528
|
-
"issues": [
|
|
529
|
-
{
|
|
530
|
-
"code": "invalid_value",
|
|
531
|
-
"values": [
|
|
532
|
-
"id",
|
|
533
|
-
"name",
|
|
534
|
-
"email"
|
|
535
|
-
],
|
|
536
|
-
"path": [],
|
|
537
|
-
"message": "Invalid option: expected one of \\"id\\"|\\"name\\"|\\"email\\""
|
|
538
|
-
}
|
|
539
|
-
],
|
|
540
|
-
"path": [
|
|
595
|
+
"code": "unrecognized_keys",
|
|
596
|
+
"keys": [
|
|
541
597
|
"foo"
|
|
542
598
|
],
|
|
543
|
-
"
|
|
599
|
+
"path": [],
|
|
600
|
+
"message": "Unrecognized key: \\"foo\\""
|
|
544
601
|
}
|
|
545
602
|
]],
|
|
546
603
|
"success": false,
|
|
@@ -593,6 +650,45 @@ test("looseRecord passes through non-matching keys", () => {
|
|
|
593
650
|
expect(schema.parse({ other: "value" })).toEqual({ other: "value" });
|
|
594
651
|
});
|
|
595
652
|
|
|
653
|
+
test("looseRecord with closed key schema passes through unrecognized keys", () => {
|
|
654
|
+
const enumSchema = z.looseRecord(z.enum(["foo", "bar"]), z.any());
|
|
655
|
+
expect(enumSchema.parse({ foo: 123, bar: {}, baz: null })).toEqual({
|
|
656
|
+
foo: 123,
|
|
657
|
+
bar: {},
|
|
658
|
+
baz: null,
|
|
659
|
+
});
|
|
660
|
+
|
|
661
|
+
const literalSchema = z.looseRecord(z.literal(["foo", "bar"]), z.any());
|
|
662
|
+
expect(literalSchema.parse({ foo: 123, bar: {}, baz: null })).toEqual({
|
|
663
|
+
foo: 123,
|
|
664
|
+
bar: {},
|
|
665
|
+
baz: null,
|
|
666
|
+
});
|
|
667
|
+
|
|
668
|
+
// Recognized keys are still validated
|
|
669
|
+
const validated = z.looseRecord(z.enum(["foo", "bar"]), z.string());
|
|
670
|
+
expect(validated.parse({ foo: "ok", bar: "ok", baz: 123 })).toEqual({
|
|
671
|
+
foo: "ok",
|
|
672
|
+
bar: "ok",
|
|
673
|
+
baz: 123,
|
|
674
|
+
});
|
|
675
|
+
expect(() => validated.parse({ foo: 123 })).toThrow();
|
|
676
|
+
});
|
|
677
|
+
|
|
678
|
+
test("record with closed key schema still rejects unrecognized keys", () => {
|
|
679
|
+
const schema = z.record(z.enum(["foo", "bar"]), z.any());
|
|
680
|
+
expect(schema.safeParse({ foo: 123, bar: {}, baz: null }).success).toBe(false);
|
|
681
|
+
});
|
|
682
|
+
|
|
683
|
+
// __proto__ in input must not replace the prototype of the parsed object via the assignment setter on the result {}. https://github.com/colinhacks/zod/security/advisories/GHSA-r34p-xfmx-58wv
|
|
684
|
+
test("looseRecord with closed key schema drops __proto__", () => {
|
|
685
|
+
const schema = z.looseRecord(z.enum(["foo", "bar"]), z.any());
|
|
686
|
+
const parsed = schema.parse(JSON.parse('{"foo":1,"bar":2,"__proto__":{"isAdmin":true}}'));
|
|
687
|
+
expect(Object.keys(parsed)).toEqual(["foo", "bar"]);
|
|
688
|
+
expect((parsed as any).isAdmin).toBeUndefined();
|
|
689
|
+
expect(Object.getPrototypeOf(parsed)).toBe(Object.prototype);
|
|
690
|
+
});
|
|
691
|
+
|
|
596
692
|
test("intersection of loose records", () => {
|
|
597
693
|
const schema = z.intersection(
|
|
598
694
|
z.object({ name: z.string() }).passthrough(),
|
|
@@ -706,8 +802,7 @@ test("v3-compat single-arg form: z.record(valueType)", () => {
|
|
|
706
802
|
expect(withMessage.keyType._zod.def.type).toEqual("string");
|
|
707
803
|
expect(withMessage.valueType._zod.def.type).toEqual("number");
|
|
708
804
|
|
|
709
|
-
// toJSONSchema should produce a well-formed schema (regression: previously produced
|
|
710
|
-
// additionalProperties from undefined valueType, crashing process())
|
|
805
|
+
// toJSONSchema should produce a well-formed schema (regression: previously produced additionalProperties from undefined valueType, crashing process())
|
|
711
806
|
const json = z.toJSONSchema(schema);
|
|
712
807
|
expect(json).toMatchObject({
|
|
713
808
|
type: "object",
|
|
@@ -715,3 +810,76 @@ test("v3-compat single-arg form: z.record(valueType)", () => {
|
|
|
715
810
|
additionalProperties: { type: "number" },
|
|
716
811
|
});
|
|
717
812
|
});
|
|
813
|
+
|
|
814
|
+
test("__proto__ in a finite key set is stripped", () => {
|
|
815
|
+
const data = JSON.parse('{"__proto__":{"a":"declared"},"b":{"a":"good"}}');
|
|
816
|
+
|
|
817
|
+
for (const schema of [
|
|
818
|
+
z.record(z.enum(["__proto__", "b"]), z.object({ a: z.string() })),
|
|
819
|
+
z.record(z.literal(["__proto__", "b"]), z.object({ a: z.string() })),
|
|
820
|
+
]) {
|
|
821
|
+
const parsed: any = schema.parse(data);
|
|
822
|
+
expect(Object.getPrototypeOf(parsed)).toBe(Object.prototype);
|
|
823
|
+
expect(Object.prototype.hasOwnProperty.call(parsed, "__proto__")).toBe(false);
|
|
824
|
+
expect(Object.keys(parsed)).toEqual(["b"]);
|
|
825
|
+
expect(parsed.a).toBeUndefined();
|
|
826
|
+
}
|
|
827
|
+
|
|
828
|
+
expect(({} as any).a).toBeUndefined();
|
|
829
|
+
});
|
|
830
|
+
|
|
831
|
+
test("a raw __proto__ input key stays skipped in loose mode", () => {
|
|
832
|
+
const parsed: any = z.looseRecord(z.iso.datetime(), z.unknown()).parse(JSON.parse('{"__proto__":{"a":1}}'));
|
|
833
|
+
|
|
834
|
+
expect(Object.getPrototypeOf(parsed)).toBe(Object.prototype);
|
|
835
|
+
expect(Object.prototype.hasOwnProperty.call(parsed, "__proto__")).toBe(false);
|
|
836
|
+
});
|
|
837
|
+
|
|
838
|
+
test("partialRecord strips a declared __proto__ key", () => {
|
|
839
|
+
const schema = z.partialRecord(z.enum(["__proto__", "b"]), z.string());
|
|
840
|
+
const parsed: any = schema.parse(Object.fromEntries([["__proto__", "declared"]]));
|
|
841
|
+
|
|
842
|
+
expect(Object.getPrototypeOf(parsed)).toBe(Object.prototype);
|
|
843
|
+
expect(Object.prototype.hasOwnProperty.call(parsed, "__proto__")).toBe(false);
|
|
844
|
+
expect(parsed).toEqual({});
|
|
845
|
+
expect(schema.parse({})).toEqual({});
|
|
846
|
+
expect(schema.safeParse({ other: "x" }).success).toBe(false);
|
|
847
|
+
});
|
|
848
|
+
|
|
849
|
+
test("partialRecord strips a declared __proto__ key in loose mode", () => {
|
|
850
|
+
const key = z.enum(["__proto__"]).refine(() => false);
|
|
851
|
+
const schema = z.partialRecord(key, z.unknown(), { mode: "loose" });
|
|
852
|
+
const value = { marker: true };
|
|
853
|
+
const parsed: any = schema.parse(Object.fromEntries([["__proto__", value]]));
|
|
854
|
+
|
|
855
|
+
expect(Object.getPrototypeOf(parsed)).toBe(Object.prototype);
|
|
856
|
+
expect(Object.prototype.hasOwnProperty.call(parsed, "__proto__")).toBe(false);
|
|
857
|
+
expect(parsed).toEqual({});
|
|
858
|
+
expect(parsed.marker).toBeUndefined();
|
|
859
|
+
});
|
|
860
|
+
|
|
861
|
+
test("partial is internal to partialRecord", () => {
|
|
862
|
+
// @ts-expect-error partial is not a public record parameter
|
|
863
|
+
z.record(z.enum(["a"]), z.string(), { partial: true });
|
|
864
|
+
|
|
865
|
+
const schema = z.partialRecord(z.enum(["a"]), z.string(), { partial: false } as any);
|
|
866
|
+
expect(schema.parse({})).toEqual({});
|
|
867
|
+
});
|
|
868
|
+
|
|
869
|
+
test("partialRecord strips a declared __proto__ key before transforms", () => {
|
|
870
|
+
const schema = z.partialRecord(
|
|
871
|
+
z.literal("__proto__").transform(() => "safe" as const),
|
|
872
|
+
z.string()
|
|
873
|
+
);
|
|
874
|
+
|
|
875
|
+
expect(schema.parse(Object.fromEntries([["__proto__", "value"]]))).toEqual({});
|
|
876
|
+
});
|
|
877
|
+
|
|
878
|
+
test("a finite __proto__ key is ignored whether present or missing", () => {
|
|
879
|
+
const schema = z.record(z.enum(["__proto__"]), z.string());
|
|
880
|
+
const parsed: any = schema.parse({});
|
|
881
|
+
|
|
882
|
+
expect(Object.getPrototypeOf(parsed)).toBe(Object.prototype);
|
|
883
|
+
expect(Object.prototype.hasOwnProperty.call(parsed, "__proto__")).toBe(false);
|
|
884
|
+
expect(schema.parse(Object.fromEntries([["__proto__", 123]]))).toEqual({});
|
|
885
|
+
});
|
|
@@ -135,8 +135,7 @@ test("pick and omit with getter", () => {
|
|
|
135
135
|
}
|
|
136
136
|
expectTypeOf<Category>().toEqualTypeOf<_Category>();
|
|
137
137
|
|
|
138
|
-
// Shape should not surface `readonly` modifiers from getter-defined keys.
|
|
139
|
-
// object/strictObject/looseObject all pass shape through util.Writeable<T>.
|
|
138
|
+
// Shape should not surface `readonly` modifiers from getter-defined keys. object/strictObject/looseObject all pass shape through util.Writeable<T>.
|
|
140
139
|
type Shape = (typeof Category)["shape"];
|
|
141
140
|
expectTypeOf<Shape>().toEqualTypeOf<{ name: z.ZodString; subcategories: z.ZodArray<typeof Category> }>();
|
|
142
141
|
|
|
@@ -629,3 +628,35 @@ test("recursive type with `id` meta", () => {
|
|
|
629
628
|
},
|
|
630
629
|
});
|
|
631
630
|
});
|
|
631
|
+
|
|
632
|
+
test("mutual recursion through discriminatedUnion getter", () => {
|
|
633
|
+
const variantA = z.object({
|
|
634
|
+
kind: z.literal("a"),
|
|
635
|
+
get child() {
|
|
636
|
+
return tree.optional();
|
|
637
|
+
},
|
|
638
|
+
});
|
|
639
|
+
|
|
640
|
+
const variantB = z.object({
|
|
641
|
+
kind: z.literal("b"),
|
|
642
|
+
get sibling() {
|
|
643
|
+
return tree.optional();
|
|
644
|
+
},
|
|
645
|
+
});
|
|
646
|
+
|
|
647
|
+
const tree = z.discriminatedUnion("kind", [variantA, variantB]);
|
|
648
|
+
|
|
649
|
+
type _Tree = { kind: "a"; child?: _Tree | undefined } | { kind: "b"; sibling?: _Tree | undefined };
|
|
650
|
+
|
|
651
|
+
const treeUnion = z.union([variantA, variantB]);
|
|
652
|
+
|
|
653
|
+
expectTypeOf<z.input<typeof tree>>().toEqualTypeOf<_Tree>();
|
|
654
|
+
expectTypeOf<z.input<typeof tree>>().not.toBeAny();
|
|
655
|
+
expectTypeOf<z.input<typeof tree>>().toEqualTypeOf<z.input<typeof treeUnion>>();
|
|
656
|
+
|
|
657
|
+
expect(tree.parse({ kind: "a", child: { kind: "b", sibling: { kind: "a" } } })).toEqual({
|
|
658
|
+
kind: "a",
|
|
659
|
+
child: { kind: "b", sibling: { kind: "a" } },
|
|
660
|
+
});
|
|
661
|
+
expect(() => tree.parse({ kind: "c" })).toThrow();
|
|
662
|
+
});
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { checkSync } from "recheck";
|
|
2
|
+
import { expect, test } from "vitest";
|
|
3
|
+
import * as z from "zod/v4";
|
|
4
|
+
|
|
5
|
+
const { regexes } = z.core;
|
|
6
|
+
|
|
7
|
+
/** Every pattern `core/regexes.ts` ships, with the parameterized ones materialized across their argument space. */
|
|
8
|
+
function allPatterns(): [string, RegExp][] {
|
|
9
|
+
const patterns: [string, RegExp][] = [];
|
|
10
|
+
for (const [name, value] of Object.entries(regexes)) {
|
|
11
|
+
if (value instanceof RegExp) patterns.push([name, value]);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
patterns.push(
|
|
15
|
+
["emoji()", regexes.emoji()],
|
|
16
|
+
["mac()", regexes.mac()],
|
|
17
|
+
["mac('-')", regexes.mac("-")],
|
|
18
|
+
["uuid()", regexes.uuid()],
|
|
19
|
+
["string()", regexes.string()],
|
|
20
|
+
["string({min,max})", regexes.string({ minimum: 1, maximum: 10 })]
|
|
21
|
+
);
|
|
22
|
+
for (const version of [1, 2, 3, 4, 5, 6, 7, 8]) patterns.push([`uuid(${version})`, regexes.uuid(version)]);
|
|
23
|
+
for (const precision of [null, -1, 0, 3, 6]) {
|
|
24
|
+
patterns.push([`time(${precision})`, regexes.time({ precision })]);
|
|
25
|
+
for (const local of [false, true]) {
|
|
26
|
+
for (const offset of [false, true]) {
|
|
27
|
+
patterns.push([`datetime(${precision},${local},${offset})`, regexes.datetime({ precision, local, offset })]);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return patterns;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
test("no built-in pattern is ReDoS-vulnerable", () => {
|
|
35
|
+
const patterns = allPatterns();
|
|
36
|
+
// Guards against the reflection above silently going empty if the module layout changes.
|
|
37
|
+
expect(patterns.length).toBeGreaterThan(80);
|
|
38
|
+
|
|
39
|
+
const vulnerable: string[] = [];
|
|
40
|
+
for (const [name, pattern] of patterns) {
|
|
41
|
+
// Flags are load-bearing. Without "u" the checker reads `\p{...}` as a literal `p{...}` and reports an exponential pattern as safe.
|
|
42
|
+
const result = checkSync(pattern.source, pattern.flags);
|
|
43
|
+
// "unknown" means the checker gave up, not that the pattern is vulnerable.
|
|
44
|
+
if (result.status !== "vulnerable") continue;
|
|
45
|
+
// The fuzz checker derives "vulnerable" from how long an attack string runs, so CPU contention from parallel test files can flip a safe pattern. Confirm with a budget large enough that only real backtracking can exhaust it.
|
|
46
|
+
const confirmed = checkSync(pattern.source, pattern.flags, { attackTimeout: 10_000 });
|
|
47
|
+
if (confirmed.status === "vulnerable") vulnerable.push(`${name}: ${pattern.source}`);
|
|
48
|
+
}
|
|
49
|
+
expect(vulnerable).toEqual([]);
|
|
50
|
+
}, 60000);
|
|
51
|
+
|
|
52
|
+
test("emoji rejects a backtracking payload in linear time", () => {
|
|
53
|
+
// U+1F9B0-U+1F9B3 are the only code points in both \p{Extended_Pictographic} and \p{Emoji_Component}. A failing match over them used to backtrack exponentially: 26 of them took ~1.9s, and each additional character roughly doubled it.
|
|
54
|
+
const schema = z.emoji();
|
|
55
|
+
const payload = `${"🦰".repeat(26)} `;
|
|
56
|
+
|
|
57
|
+
// Warm up first, then take the best of three: a cold first call is dominated by JIT and can cost hundreds of times the steady-state match on a loaded machine.
|
|
58
|
+
expect(schema.safeParse(payload).success).toBe(false);
|
|
59
|
+
let best = Number.POSITIVE_INFINITY;
|
|
60
|
+
for (let i = 0; i < 3; i++) {
|
|
61
|
+
const start = performance.now();
|
|
62
|
+
schema.safeParse(payload);
|
|
63
|
+
best = Math.min(best, performance.now() - start);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// The linear pattern matches in well under a millisecond, so this budget leaves three orders of magnitude of headroom for CPU contention while still catching the exponential regression.
|
|
67
|
+
expect(best).toBeLessThan(500);
|
|
68
|
+
});
|
|
@@ -338,6 +338,66 @@ describe("superRefine functionality", () => {
|
|
|
338
338
|
}
|
|
339
339
|
});
|
|
340
340
|
|
|
341
|
+
test("should preserve explicit nullish issue input", () => {
|
|
342
|
+
const schema = z.string().superRefine((_, ctx) => {
|
|
343
|
+
ctx.addIssue({ code: "custom", message: "default" });
|
|
344
|
+
ctx.addIssue({ code: "custom", message: "null", input: null });
|
|
345
|
+
ctx.addIssue({ code: "custom", message: "undefined", input: undefined });
|
|
346
|
+
});
|
|
347
|
+
|
|
348
|
+
const result = schema.safeParse("sensitive", { reportInput: true });
|
|
349
|
+
expect(result.success).toEqual(false);
|
|
350
|
+
if (!result.success) {
|
|
351
|
+
expect(result.error.issues).toHaveLength(3);
|
|
352
|
+
expect(result.error.issues[0].input).toEqual("sensitive");
|
|
353
|
+
expect(result.error.issues[1].input).toEqual(null);
|
|
354
|
+
expect(result.error.issues[2]).toHaveProperty("input");
|
|
355
|
+
expect(result.error.issues[2].input).toEqual(undefined);
|
|
356
|
+
}
|
|
357
|
+
});
|
|
358
|
+
|
|
359
|
+
test("should keep issue input aligned with the issue path", () => {
|
|
360
|
+
const nested = z.object({ a: z.string().nullable() }).superRefine((val, ctx) => {
|
|
361
|
+
if (val.a === null) ctx.addIssue({ code: "custom", path: ["a"], input: val.a, message: "no null" });
|
|
362
|
+
});
|
|
363
|
+
|
|
364
|
+
const direct = nested.safeParse({ a: null }, { reportInput: true });
|
|
365
|
+
expect(direct.success).toEqual(false);
|
|
366
|
+
if (!direct.success) {
|
|
367
|
+
expect(direct.error.issues[0].path).toEqual(["a"]);
|
|
368
|
+
expect(direct.error.issues[0].input).toEqual(null);
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
// Forwarding a nested parse's issues must not overwrite their input with the outer payload.
|
|
372
|
+
const inner = z.object({ x: z.string() });
|
|
373
|
+
const forwarding = z.unknown().superRefine((val, ctx) => {
|
|
374
|
+
const result = inner.safeParse(val, { reportInput: true });
|
|
375
|
+
if (!result.success) {
|
|
376
|
+
for (const iss of result.error.issues) {
|
|
377
|
+
ctx.addIssue({ code: "custom", path: iss.path, input: iss.input, message: iss.message });
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
});
|
|
381
|
+
|
|
382
|
+
const forwarded = forwarding.safeParse({}, { reportInput: true });
|
|
383
|
+
expect(forwarded.success).toEqual(false);
|
|
384
|
+
if (!forwarded.success) {
|
|
385
|
+
expect(forwarded.error.issues[0].path).toEqual(["x"]);
|
|
386
|
+
expect(forwarded.error.issues[0]).toHaveProperty("input");
|
|
387
|
+
expect(forwarded.error.issues[0].input).toEqual(undefined);
|
|
388
|
+
}
|
|
389
|
+
});
|
|
390
|
+
|
|
391
|
+
test("should surface an explicit undefined input to the error map", () => {
|
|
392
|
+
const schema = z.object({ a: z.string().optional() }).superRefine((val, ctx) => {
|
|
393
|
+
if (!val.a) ctx.addIssue({ code: "custom", path: ["a"], input: val.a });
|
|
394
|
+
});
|
|
395
|
+
|
|
396
|
+
const result = schema.safeParse({}, { error: (iss) => (iss.input === undefined ? "Required" : "Invalid") });
|
|
397
|
+
expect(result.success).toEqual(false);
|
|
398
|
+
if (!result.success) expect(result.error.issues[0].message).toEqual("Required");
|
|
399
|
+
});
|
|
400
|
+
|
|
341
401
|
test("should respect fatal flag in superRefine", () => {
|
|
342
402
|
const schema = z
|
|
343
403
|
.string()
|
|
@@ -85,6 +85,15 @@ test("failing when set is bigger than max() ", () => {
|
|
|
85
85
|
expect(result.error!.issues[0].code).toEqual("too_big");
|
|
86
86
|
});
|
|
87
87
|
|
|
88
|
+
test("failing when set does not match size() ", () => {
|
|
89
|
+
expect(justTwo.safeParse(new Set(["one"])).error!.issues[0].message).toEqual(
|
|
90
|
+
"Too small: expected set to have exactly 2 items"
|
|
91
|
+
);
|
|
92
|
+
expect(justTwo.safeParse(new Set(["one", "two", "three"])).error!.issues[0].message).toEqual(
|
|
93
|
+
"Too big: expected set to have exactly 2 items"
|
|
94
|
+
);
|
|
95
|
+
});
|
|
96
|
+
|
|
88
97
|
test("doesn’t throw when an empty set is given", () => {
|
|
89
98
|
const result = stringSet.safeParse(new Set([]));
|
|
90
99
|
expect(result.success).toEqual(true);
|