@socketsecurity/lib 6.0.5 → 6.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +43 -0
- package/dist/ai/discover.d.mts +2 -2
- package/dist/ai/discover.js +6 -4
- package/dist/ai/spawn.js +10 -6
- package/dist/ai/types.d.mts +18 -6
- package/dist/ai/worktree.d.mts +6 -6
- package/dist/ai/worktree.js +12 -7
- package/dist/ansi/strip.d.ts +1 -1
- package/dist/ansi/strip.js +0 -2
- package/dist/archives/_internal.js +7 -9
- package/dist/archives/extract.js +1 -1
- package/dist/archives/tar.js +6 -6
- package/dist/archives/zip.js +4 -6
- package/dist/argv/flag-predicates.d.ts +12 -12
- package/dist/argv/flag-predicates.js +17 -17
- package/dist/argv/flag-types.d.ts +18 -18
- package/dist/argv/flag-types.js +4 -4
- package/dist/argv/parse.d.ts +1 -1
- package/dist/arrays/_internal.js +11 -12
- package/dist/arrays/chunk.js +0 -1
- package/dist/arrays/join.d.ts +37 -3
- package/dist/arrays/join.js +43 -7
- package/dist/arrays/unique.js +0 -1
- package/dist/bin/_internal.d.ts +1 -1
- package/dist/bin/_internal.js +1 -1
- package/dist/bin/acorn-bindgen.cjs +769 -0
- package/dist/bin/acorn.wasm +0 -0
- package/dist/bin/exec.js +2 -3
- package/dist/bin/find.js +13 -13
- package/dist/bin/prim.cjs +39244 -0
- package/dist/bin/resolve.js +12 -13
- package/dist/bin/which.js +8 -8
- package/dist/cache/ttl/store.js +5 -5
- package/dist/checks/primordials-defaults.d.ts +3 -3
- package/dist/checks/primordials-defaults.js +3 -3
- package/dist/checks/primordials.js +4 -3
- package/dist/{bin → cli}/check-primordials.d.ts +11 -11
- package/dist/{bin → cli}/check-primordials.js +56 -52
- package/dist/{bin → cli}/check.js +6 -5
- package/dist/{bin → cli}/socket-lib.d.ts +1 -1
- package/dist/{bin → cli}/socket-lib.js +4 -4
- package/dist/colors/socket-palette.js +7 -9
- package/dist/compression/_internal.d.ts +12 -12
- package/dist/compression/_internal.js +20 -19
- package/dist/compression/brotli.d.ts +25 -25
- package/dist/compression/brotli.js +37 -44
- package/dist/compression/gzip.d.ts +23 -23
- package/dist/compression/gzip.js +44 -52
- package/dist/constants/agents.d.ts +3 -1
- package/dist/constants/agents.js +15 -11
- package/dist/constants/licenses.js +3 -3
- package/dist/constants/node.d.ts +23 -0
- package/dist/constants/node.js +47 -15
- package/dist/constants/packages.js +22 -28
- package/dist/constants/platform.d.ts +30 -3
- package/dist/constants/platform.js +72 -12
- package/dist/constants/runtime.d.ts +22 -0
- package/dist/constants/runtime.js +32 -0
- package/dist/constants/socket.js +1 -1
- package/dist/cover/code.js +8 -8
- package/dist/cover/formatters.js +5 -5
- package/dist/crypto/hash.d.ts +26 -1
- package/dist/crypto/hash.js +43 -12
- package/dist/debug/_internal.js +4 -6
- package/dist/debug/caller-info.js +2 -3
- package/dist/debug/namespace.d.ts +7 -0
- package/dist/debug/namespace.js +21 -12
- package/dist/debug/output.js +21 -24
- package/dist/debug/types.d.ts +4 -4
- package/dist/dlx/arborist.js +6 -6
- package/dist/dlx/binary-cache.js +14 -14
- package/dist/dlx/binary-download.d.ts +1 -1
- package/dist/dlx/binary-download.js +14 -13
- package/dist/dlx/binary-resolution.js +16 -14
- package/dist/dlx/binary-types.d.ts +5 -5
- package/dist/dlx/binary.js +5 -5
- package/dist/dlx/cache.js +1 -1
- package/dist/dlx/detect.d.ts +34 -25
- package/dist/dlx/detect.js +86 -77
- package/dist/dlx/dir.js +2 -2
- package/dist/dlx/firewall.d.ts +1 -1
- package/dist/dlx/lockfile.d.ts +19 -18
- package/dist/dlx/lockfile.js +16 -16
- package/dist/dlx/manifest.d.ts +6 -6
- package/dist/dlx/manifest.js +5 -5
- package/dist/dlx/package.d.ts +10 -10
- package/dist/dlx/package.js +16 -16
- package/dist/dlx/packages.js +4 -4
- package/dist/dlx/paths.js +7 -7
- package/dist/dlx/spec.js +1 -1
- package/dist/dlx/types.d.ts +28 -27
- package/dist/eco/cargo/parse-lockfile.d.ts +1 -1
- package/dist/eco/cargo/parse-lockfile.js +2 -2
- package/dist/eco/manifest/analyze-lockfile.js +2 -2
- package/dist/eco/manifest/detect-format.js +4 -4
- package/dist/eco/manifest/find-packages.js +2 -2
- package/dist/eco/manifest/get-package-versions.js +2 -2
- package/dist/eco/manifest/get-package.js +2 -2
- package/dist/eco/manifest/parse-lockfile.js +2 -2
- package/dist/eco/manifest/parse-manifest.js +2 -2
- package/dist/eco/manifest/parse.js +2 -2
- package/dist/eco/npm/npm/exec.js +2 -2
- package/dist/eco/npm/npm/flags.js +7 -12
- package/dist/eco/npm/npm/parse-lockfile.d.ts +14 -14
- package/dist/eco/npm/npm/parse-lockfile.js +3 -3
- package/dist/eco/npm/parse-package-json.js +3 -3
- package/dist/eco/npm/pnpm/exec.d.ts +1 -1
- package/dist/eco/npm/pnpm/exec.js +5 -5
- package/dist/eco/npm/pnpm/flags.js +0 -3
- package/dist/eco/npm/pnpm/parse-lockfile.d.ts +1 -1
- package/dist/eco/npm/pnpm/parse-lockfile.js +4 -4
- package/dist/eco/npm/script.js +9 -6
- package/dist/eco/npm/yarnpkg/yarn/exec.js +3 -3
- package/dist/eco/npm/yarnpkg/yarn/parse-lockfile.d.ts +2 -2
- package/dist/eco/npm/yarnpkg/yarn/parse-lockfile.js +8 -8
- package/dist/effects/pulse-frames.d.ts +3 -1
- package/dist/effects/shimmer-keyframes.d.ts +1 -1
- package/dist/effects/shimmer-terminal.d.ts +1 -1
- package/dist/env/boolean.js +0 -1
- package/dist/env/ci.js +0 -1
- package/dist/env/debug.js +0 -1
- package/dist/env/github-status.d.ts +51 -0
- package/dist/env/github-status.js +90 -0
- package/dist/env/github.js +0 -8
- package/dist/env/home.js +0 -1
- package/dist/env/locale.js +0 -3
- package/dist/env/node-auth-token.js +0 -1
- package/dist/env/node-env.js +0 -1
- package/dist/env/node-version-managers.d.ts +53 -0
- package/dist/env/node-version-managers.js +90 -0
- package/dist/env/npm.js +0 -5
- package/dist/env/number.js +0 -1
- package/dist/env/package-manager.js +3 -6
- package/dist/env/path.js +0 -1
- package/dist/env/pre-commit.js +1 -2
- package/dist/env/rewire.d.ts +7 -6
- package/dist/env/rewire.js +15 -16
- package/dist/env/shell.js +0 -1
- package/dist/env/socket-cli.js +5 -18
- package/dist/env/socket-mcp.d.ts +114 -0
- package/dist/env/socket-mcp.js +146 -0
- package/dist/env/socket.d.ts +1 -109
- package/dist/env/socket.js +12 -166
- package/dist/env/string.js +0 -1
- package/dist/env/temp-dir.js +0 -3
- package/dist/env/term.js +0 -1
- package/dist/env/test.js +3 -6
- package/dist/env/windows.js +0 -4
- package/dist/env/xdg.js +0 -3
- package/dist/events/exit/_internal.d.ts +11 -9
- package/dist/events/exit/_internal.js +31 -35
- package/dist/events/exit/handler.js +3 -4
- package/dist/events/exit/intercept.js +4 -6
- package/dist/events/exit/lifecycle.js +16 -18
- package/dist/events/exit/signals.js +1 -2
- package/dist/events/exit/types.d.ts +6 -5
- package/dist/external/@npmcli/package-json.js +2 -2
- package/dist/external/@sinclair/typebox/value.js +5 -1
- package/dist/external/@sinclair/typebox.js +5 -1
- package/dist/external/@socketregistry/packageurl-js.js +27 -0
- package/dist/external/npm-pack.js +2 -2
- package/dist/external-tools/bazel/read-bazel-version-file.js +1 -1
- package/dist/external-tools/bazel/resolve.js +2 -1
- package/dist/external-tools/bazel/types.d.ts +1 -1
- package/dist/external-tools/cdxgen/from-vfs.js +1 -1
- package/dist/external-tools/cdxgen/resolve.js +2 -1
- package/dist/external-tools/cdxgen/types.d.ts +1 -1
- package/dist/external-tools/from-download.d.ts +1 -1
- package/dist/external-tools/from-download.js +1 -1
- package/dist/external-tools/from-pip-venv.d.ts +73 -0
- package/dist/external-tools/from-pip-venv.js +98 -0
- package/dist/external-tools/janus/asset-names.js +1 -1
- package/dist/external-tools/janus/from-download.js +3 -5
- package/dist/external-tools/janus/from-vfs.js +1 -1
- package/dist/external-tools/janus/resolve.js +2 -1
- package/dist/external-tools/janus/types.d.ts +1 -1
- package/dist/external-tools/jre/detect-platform-arch.d.ts +10 -6
- package/dist/external-tools/jre/detect-platform-arch.js +29 -14
- package/dist/external-tools/jre/from-download.js +2 -1
- package/dist/external-tools/jre/from-vfs.js +1 -1
- package/dist/external-tools/jre/resolve.js +2 -1
- package/dist/external-tools/jre/types.d.ts +1 -1
- package/dist/external-tools/manifest.d.ts +7 -7
- package/dist/external-tools/manifest.js +18 -16
- package/dist/external-tools/opengrep/from-vfs.js +1 -1
- package/dist/external-tools/opengrep/resolve.js +2 -1
- package/dist/external-tools/opengrep/types.d.ts +1 -1
- package/dist/external-tools/python/asset-names.d.ts +76 -0
- package/dist/external-tools/python/asset-names.js +104 -0
- package/dist/external-tools/python/dlx.d.ts +80 -0
- package/dist/external-tools/python/dlx.js +87 -0
- package/dist/external-tools/python/from-download.d.ts +53 -0
- package/dist/external-tools/python/from-download.js +68 -0
- package/dist/external-tools/python/from-path.d.ts +7 -0
- package/dist/external-tools/python/from-path.js +23 -0
- package/dist/external-tools/python/pin.d.ts +121 -0
- package/dist/external-tools/python/pin.js +173 -0
- package/dist/external-tools/python/pip-install.d.ts +75 -0
- package/dist/external-tools/python/pip-install.js +139 -0
- package/dist/external-tools/python/resolve.d.ts +42 -0
- package/dist/external-tools/python/resolve.js +58 -0
- package/dist/external-tools/python/types.d.ts +49 -0
- package/dist/external-tools/sbt/from-vfs.js +1 -1
- package/dist/external-tools/sbt/resolve.js +2 -1
- package/dist/external-tools/sbt/types.d.ts +1 -1
- package/dist/external-tools/skillspector/from-dlx.d.ts +24 -0
- package/dist/external-tools/skillspector/from-dlx.js +41 -0
- package/dist/external-tools/skillspector/from-path.d.ts +8 -0
- package/dist/external-tools/skillspector/from-path.js +30 -0
- package/dist/external-tools/skillspector/from-vfs.d.ts +8 -0
- package/dist/external-tools/skillspector/from-vfs.js +27 -0
- package/dist/external-tools/skillspector/resolve.d.ts +34 -0
- package/dist/external-tools/skillspector/resolve.js +53 -0
- package/dist/external-tools/skillspector/types.d.ts +24 -0
- package/dist/external-tools/skillspector/types.js +2 -0
- package/dist/external-tools/synp/from-download.js +2 -2
- package/dist/external-tools/synp/from-vfs.js +1 -1
- package/dist/external-tools/synp/resolve.js +2 -1
- package/dist/external-tools/trivy/from-vfs.js +1 -1
- package/dist/external-tools/trivy/resolve.js +2 -1
- package/dist/external-tools/trivy/types.d.ts +1 -1
- package/dist/external-tools/trufflehog/from-vfs.js +1 -1
- package/dist/external-tools/trufflehog/resolve.js +2 -1
- package/dist/external-tools/trufflehog/types.d.ts +1 -1
- package/dist/fs/_internal.d.ts +1 -1
- package/dist/fs/_internal.js +7 -7
- package/dist/fs/access.js +5 -9
- package/dist/fs/{path-cache.js → allowed-dirs-cache.js} +1 -1
- package/dist/fs/encoding.js +5 -7
- package/dist/fs/{find-up.js → find.js} +11 -13
- package/dist/fs/inspect.js +7 -13
- package/dist/fs/read-dir.js +7 -10
- package/dist/fs/read-file.js +8 -14
- package/dist/fs/read-json-cache.d.ts +6 -4
- package/dist/fs/read-json-cache.js +9 -6
- package/dist/fs/read-json.js +4 -6
- package/dist/fs/resolve-module.js +1 -1
- package/dist/fs/safe.d.ts +1 -1
- package/dist/fs/safe.js +12 -13
- package/dist/fs/unique.js +4 -5
- package/dist/fs/validate.js +1 -2
- package/dist/fs/write-json.js +4 -5
- package/dist/git/_internal.js +12 -11
- package/dist/git/changed.js +4 -4
- package/dist/git/repo.js +3 -3
- package/dist/git/staged.js +4 -4
- package/dist/git/unstaged.js +4 -4
- package/dist/github/ghsa.js +2 -2
- package/dist/github/refs-cache.d.ts +1 -1
- package/dist/github/refs-cache.js +5 -5
- package/dist/github/refs-rest.js +5 -5
- package/dist/github/{fetch.js → request.js} +13 -2
- package/dist/github/token.js +1 -1
- package/dist/github/types.d.ts +1 -1
- package/dist/globs/_internal.js +7 -9
- package/dist/globs/match.js +6 -7
- package/dist/globs/matcher.d.ts +3 -3
- package/dist/globs/matcher.js +12 -14
- package/dist/globs/stream.js +1 -2
- package/dist/globs/types.d.ts +24 -24
- package/dist/http-request/_internal.d.ts +1 -1
- package/dist/http-request/browser.js +21 -13
- package/dist/http-request/checksum-file.d.ts +55 -0
- package/dist/http-request/checksum-file.js +95 -0
- package/dist/http-request/download-types.d.ts +15 -23
- package/dist/http-request/download.js +4 -4
- package/dist/http-request/headers.d.ts +32 -3
- package/dist/http-request/headers.js +41 -13
- package/dist/http-request/request-attempt.js +38 -33
- package/dist/http-request/request-types.d.ts +7 -2
- package/dist/http-request/request.js +33 -16
- package/dist/http-request/response-reader.d.ts +12 -1
- package/dist/http-request/response-reader.js +22 -2
- package/dist/http-request/user-agent.js +3 -4
- package/dist/integrity.d.ts +86 -18
- package/dist/integrity.js +119 -30
- package/dist/ipc/directory.js +2 -2
- package/dist/ipc/paths.js +1 -1
- package/dist/ipc/write.js +1 -1
- package/dist/ipc-cli/get.js +12 -12
- package/dist/json/edit.js +13 -14
- package/dist/json/format.js +2 -2
- package/dist/json/parse.d.ts +1 -1
- package/dist/json/parse.js +3 -7
- package/dist/logger/_internal.d.ts +4 -4
- package/dist/logger/_internal.js +3 -3
- package/dist/logger/colors.js +4 -3
- package/dist/logger/console-methods.d.ts +132 -0
- package/dist/logger/console-methods.js +169 -0
- package/dist/logger/console.d.ts +12 -0
- package/dist/logger/console.js +42 -11
- package/dist/logger/indentation-methods.d.ts +81 -0
- package/dist/logger/indentation-methods.js +121 -0
- package/dist/logger/node.d.ts +16 -338
- package/dist/logger/node.js +75 -608
- package/dist/logger/options.d.ts +39 -0
- package/dist/logger/options.js +47 -0
- package/dist/logger/semantic-methods.d.ts +63 -0
- package/dist/logger/semantic-methods.js +108 -0
- package/dist/logger/stream-methods.d.ts +63 -0
- package/dist/logger/stream-methods.js +101 -0
- package/dist/logger/stream.d.ts +37 -0
- package/dist/logger/stream.js +42 -0
- package/dist/logger/symbols-builder.js +9 -9
- package/dist/logger/symbols.d.ts +2 -25
- package/dist/logger/symbols.js +53 -74
- package/dist/logger/types.d.ts +1 -1
- package/dist/memo/types.d.ts +6 -6
- package/dist/native-messaging/host.d.ts +20 -0
- package/dist/native-messaging/host.js +120 -0
- package/dist/native-messaging/index.d.ts +5 -0
- package/dist/native-messaging/index.js +22 -0
- package/dist/native-messaging/install.d.ts +60 -0
- package/dist/native-messaging/install.js +141 -0
- package/dist/native-messaging/rate-limit.d.ts +62 -0
- package/dist/native-messaging/rate-limit.js +115 -0
- package/dist/native-messaging/run.d.ts +10 -0
- package/dist/native-messaging/run.js +17 -0
- package/dist/node/async-hooks.js +4 -3
- package/dist/node/child-process.js +4 -3
- package/dist/node/crypto.js +4 -3
- package/dist/node/events.js +4 -3
- package/dist/node/fs-promises.js +4 -3
- package/dist/node/fs.js +4 -3
- package/dist/node/http.js +4 -3
- package/dist/node/https.js +4 -3
- package/dist/node/module.js +10 -6
- package/dist/node/os.js +4 -3
- package/dist/node/path.js +4 -3
- package/dist/node/timers-promises.js +4 -3
- package/dist/node/url.js +4 -3
- package/dist/node/util.js +4 -3
- package/dist/objects/getters.js +5 -7
- package/dist/objects/inspect.js +1 -4
- package/dist/objects/mutate.js +2 -3
- package/dist/objects/predicates.js +0 -4
- package/dist/objects/sort.js +3 -7
- package/dist/packages/edit-class.js +15 -16
- package/dist/packages/edit.js +12 -14
- package/dist/packages/exports.js +11 -17
- package/dist/packages/fetch.d.ts +16 -0
- package/dist/packages/fetch.js +81 -0
- package/dist/packages/find.d.ts +55 -0
- package/dist/packages/find.js +65 -0
- package/dist/packages/isolation.js +14 -14
- package/dist/packages/licenses.js +16 -16
- package/dist/packages/manifest.js +12 -15
- package/dist/packages/metadata-extensions.d.ts +14 -0
- package/dist/packages/metadata-extensions.js +43 -0
- package/dist/packages/normalize.js +5 -9
- package/dist/packages/provenance.d.ts +6 -0
- package/dist/packages/provenance.js +25 -18
- package/dist/packages/read.d.ts +29 -0
- package/dist/packages/read.js +66 -0
- package/dist/packages/specs.d.ts +48 -1
- package/dist/packages/specs.js +74 -11
- package/dist/packages/tarball.d.ts +24 -0
- package/dist/packages/tarball.js +79 -0
- package/dist/packages/types.d.ts +21 -20
- package/dist/packages/validation.js +0 -3
- package/dist/paths/_internal.d.ts +2 -1
- package/dist/paths/_internal.js +7 -19
- package/dist/paths/conversion.js +5 -9
- package/dist/paths/filenames.d.ts +0 -1
- package/dist/paths/filenames.js +0 -2
- package/dist/paths/normalize.js +6 -5
- package/dist/paths/packages.js +4 -7
- package/dist/paths/predicates.js +9 -16
- package/dist/paths/resolve.js +11 -14
- package/dist/paths/rewire.js +3 -3
- package/dist/paths/socket.js +16 -16
- package/dist/paths/walk.d.ts +1 -1
- package/dist/paths/walk.js +4 -4
- package/dist/perf/report.js +2 -2
- package/dist/perf/types.d.ts +1 -1
- package/dist/pkg-ext/data.js +1 -1
- package/dist/primordials/array.js +9 -9
- package/dist/primordials/date.js +2 -2
- package/dist/primordials/error.js +3 -3
- package/dist/primordials/headers.d.ts +10 -0
- package/dist/primordials/headers.js +23 -0
- package/dist/primordials/intl.d.ts +13 -0
- package/dist/primordials/intl.js +26 -0
- package/dist/primordials/math.js +33 -33
- package/dist/primordials/number.js +9 -9
- package/dist/primordials/object.js +5 -5
- package/dist/primordials/string.d.ts +2 -2
- package/dist/primordials/string.js +6 -6
- package/dist/primordials/symbol.js +3 -3
- package/dist/primordials/uncurry.js +9 -9
- package/dist/process/abort.js +3 -3
- package/dist/process/lock-manager.js +8 -8
- package/dist/process/spawn/_internal.js +6 -8
- package/dist/process/spawn/child.js +14 -14
- package/dist/process/spawn/errors.js +2 -4
- package/dist/process/spawn/kill-tree.d.ts +53 -0
- package/dist/process/spawn/kill-tree.js +85 -0
- package/dist/process/spawn/stdio.js +0 -1
- package/dist/process/spawn/types.d.ts +5 -5
- package/dist/process/transient.js +2 -2
- package/dist/promises/_internal.d.ts +2 -1
- package/dist/promises/_internal.js +2 -6
- package/dist/promises/iterate.js +12 -16
- package/dist/promises/options.js +3 -6
- package/dist/promises/retry.js +4 -5
- package/dist/promises/timers.d.ts +30 -0
- package/dist/promises/timers.js +48 -0
- package/dist/releases/github-archives.d.ts +6 -6
- package/dist/releases/github-archives.js +2 -2
- package/dist/releases/github-asset-url.d.ts +1 -1
- package/dist/releases/github-asset-url.js +5 -5
- package/dist/releases/github-downloads.d.ts +1 -1
- package/dist/releases/github-downloads.js +3 -3
- package/dist/releases/github-listing.d.ts +11 -2
- package/dist/releases/github-listing.js +20 -7
- package/dist/releases/github-retry-config.js +1 -1
- package/dist/releases/github-types.d.ts +6 -6
- package/dist/releases/socket-btm-binary-naming.d.ts +107 -0
- package/dist/releases/socket-btm-binary-naming.js +155 -0
- package/dist/releases/socket-btm.d.ts +8 -115
- package/dist/releases/socket-btm.js +16 -159
- package/dist/schema/types.d.ts +1 -1
- package/dist/sea/detect.js +6 -6
- package/dist/secrets/_internal.d.ts +2 -2
- package/dist/secrets/_internal.js +5 -4
- package/dist/secrets/compare.d.ts +45 -0
- package/dist/secrets/compare.js +61 -0
- package/dist/secrets/keychain.js +9 -6
- package/dist/secrets/linux.js +25 -23
- package/dist/secrets/macos.d.ts +1 -1
- package/dist/secrets/macos.js +18 -16
- package/dist/secrets/rc.d.ts +2 -2
- package/dist/secrets/rc.js +15 -10
- package/dist/secrets/socket-api-token.d.ts +4 -4
- package/dist/secrets/socket-api-token.js +18 -9
- package/dist/secrets/windows.js +21 -17
- package/dist/shadow/skip.js +2 -2
- package/dist/shell/parse.d.ts +108 -1
- package/dist/shell/parse.js +168 -2
- package/dist/smol/detect.js +9 -10
- package/dist/smol/http.js +6 -7
- package/dist/smol/https.js +6 -7
- package/dist/smol/manifest.d.ts +1 -1
- package/dist/smol/manifest.js +6 -7
- package/dist/smol/path.d.ts +1 -1
- package/dist/smol/path.js +7 -8
- package/dist/smol/primordial.d.ts +4 -0
- package/dist/smol/primordial.js +6 -7
- package/dist/smol/purl.d.ts +1 -1
- package/dist/smol/purl.js +7 -8
- package/dist/smol/versions.js +6 -7
- package/dist/smol/vfs.js +6 -7
- package/dist/sorts/_internal.js +6 -8
- package/dist/sorts/natural.js +10 -12
- package/dist/sorts/semver.js +1 -2
- package/dist/sorts/strings.js +0 -1
- package/dist/sorts/types.d.ts +1 -1
- package/dist/spinner/create-spinner-class.d.ts +38 -0
- package/dist/spinner/create-spinner-class.js +302 -0
- package/dist/spinner/default.js +8 -9
- package/dist/spinner/spinner-internals.d.ts +36 -0
- package/dist/spinner/spinner-internals.js +101 -0
- package/dist/spinner/spinner-shimmer-methods.d.ts +54 -0
- package/dist/spinner/spinner-shimmer-methods.js +143 -0
- package/dist/spinner/spinner-status-methods.d.ts +40 -0
- package/dist/spinner/spinner-status-methods.js +133 -0
- package/dist/spinner/spinner.d.ts +4 -5
- package/dist/spinner/spinner.js +18 -705
- package/dist/spinner/types.d.ts +3 -1
- package/dist/spinner/with.d.ts +10 -0
- package/dist/spinner/with.js +16 -2
- package/dist/stdio/divider.js +1 -1
- package/dist/stdio/footer.js +3 -3
- package/dist/stdio/header.js +4 -4
- package/dist/stdio/progress.js +5 -5
- package/dist/stdio/prompts.d.ts +5 -3
- package/dist/stdio/prompts.js +6 -7
- package/dist/stdio/stdout.js +3 -3
- package/dist/streams/parallel.js +3 -5
- package/dist/streams/transform.js +2 -3
- package/dist/strings/format.js +2 -6
- package/dist/strings/predicates.js +0 -2
- package/dist/strings/search.js +1 -2
- package/dist/strings/transform.js +0 -3
- package/dist/strings/width.js +9 -10
- package/dist/tables/bordered.js +4 -3
- package/dist/tables/padding.js +1 -1
- package/dist/tables/simple.js +8 -5
- package/dist/temporal/instant.js +4 -2
- package/dist/temporal/slots.js +7 -6
- package/dist/temporal/system.js +9 -9
- package/dist/themes/context.d.ts +3 -2
- package/dist/themes/context.js +4 -5
- package/dist/themes/themes.js +15 -15
- package/dist/themes/types.d.ts +3 -3
- package/dist/url/parse.js +0 -2
- package/dist/url/predicates.js +1 -2
- package/dist/url/search-params.js +3 -9
- package/dist/url/types.d.ts +5 -5
- package/dist/versions/_internal.js +3 -3
- package/dist/words/article.js +0 -1
- package/dist/words/capitalize.js +0 -1
- package/dist/words/pluralize.d.ts +24 -2
- package/dist/words/pluralize.js +47 -2
- package/dist/words/types.d.ts +25 -2
- package/package.json +289 -108
- package/dist/external-tools/uv/asset-names.d.ts +0 -36
- package/dist/external-tools/uv/asset-names.js +0 -70
- package/dist/external-tools/uv/from-download.d.ts +0 -17
- package/dist/external-tools/uv/from-download.js +0 -47
- package/dist/external-tools/uv/from-path.d.ts +0 -5
- package/dist/external-tools/uv/from-path.js +0 -22
- package/dist/external-tools/uv/from-vfs.d.ts +0 -7
- package/dist/external-tools/uv/from-vfs.js +0 -26
- package/dist/external-tools/uv/resolve.d.ts +0 -25
- package/dist/external-tools/uv/resolve.js +0 -52
- package/dist/external-tools/uv/types.d.ts +0 -24
- package/dist/http-request/checksums.d.ts +0 -69
- package/dist/http-request/checksums.js +0 -108
- package/dist/http-request/http-request.d.ts +0 -12
- package/dist/http-request/http-request.js +0 -11
- package/dist/packages/operations.d.ts +0 -113
- package/dist/packages/operations.js +0 -304
- package/dist/ssri/convert.d.ts +0 -48
- package/dist/ssri/convert.js +0 -69
- package/dist/ssri/parse.d.ts +0 -27
- package/dist/ssri/parse.js +0 -41
- package/dist/ssri/validate.d.ts +0 -41
- package/dist/ssri/validate.js +0 -56
- /package/dist/{bin → cli}/check.d.ts +0 -0
- /package/dist/external-tools/{uv → python}/types.js +0 -0
- /package/dist/fs/{path-cache.d.ts → allowed-dirs-cache.d.ts} +0 -0
- /package/dist/fs/{find-up.d.ts → find.d.ts} +0 -0
- /package/dist/github/{fetch.d.ts → request.d.ts} +0 -0
package/dist/themes/context.d.ts
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
* context isolation via AsyncLocalStorage.
|
|
4
4
|
*/
|
|
5
5
|
import type { Theme } from './types';
|
|
6
|
-
import {
|
|
6
|
+
import type { ThemeName } from './themes';
|
|
7
|
+
import type * as AsyncHooks from 'node:async_hooks';
|
|
7
8
|
/**
|
|
8
9
|
* Theme change event listener signature.
|
|
9
10
|
*/
|
|
@@ -19,7 +20,7 @@ export declare function emitThemeChange(theme: Theme): void;
|
|
|
19
20
|
*
|
|
20
21
|
* @private
|
|
21
22
|
*/
|
|
22
|
-
export declare function getAsyncHooks(): typeof
|
|
23
|
+
export declare function getAsyncHooks(): typeof AsyncHooks;
|
|
23
24
|
/**
|
|
24
25
|
* Get the active theme from context.
|
|
25
26
|
*
|
package/dist/themes/context.js
CHANGED
|
@@ -5,7 +5,7 @@ const require_primordials_map_set = require('../primordials/map-set.js');
|
|
|
5
5
|
const require_themes_themes = require('./themes.js');
|
|
6
6
|
|
|
7
7
|
//#region src/themes/context.ts
|
|
8
|
-
let
|
|
8
|
+
let asyncHooks;
|
|
9
9
|
/**
|
|
10
10
|
* Emit theme change event to listeners.
|
|
11
11
|
*
|
|
@@ -19,15 +19,14 @@ function emitThemeChange(theme) {
|
|
|
19
19
|
*
|
|
20
20
|
* @private
|
|
21
21
|
*/
|
|
22
|
-
/* @__NO_SIDE_EFFECTS__ */
|
|
23
22
|
function getAsyncHooks() {
|
|
24
|
-
if (
|
|
25
|
-
return
|
|
23
|
+
if (asyncHooks === void 0) asyncHooks = /*@__PURE__*/ require("node:async_hooks");
|
|
24
|
+
return asyncHooks;
|
|
26
25
|
}
|
|
27
26
|
/**
|
|
28
27
|
* AsyncLocalStorage for theme context isolation.
|
|
29
28
|
*/
|
|
30
|
-
const { AsyncLocalStorage } =
|
|
29
|
+
const { AsyncLocalStorage } = getAsyncHooks();
|
|
31
30
|
const themeStorage = new AsyncLocalStorage();
|
|
32
31
|
/**
|
|
33
32
|
* Fallback theme for global context.
|
package/dist/themes/themes.js
CHANGED
|
@@ -8,8 +8,6 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
8
8
|
* designed for focus and elegance.
|
|
9
9
|
*/
|
|
10
10
|
const SOCKET_THEME = {
|
|
11
|
-
name: "socket",
|
|
12
|
-
displayName: "Socket Security",
|
|
13
11
|
colors: {
|
|
14
12
|
primary: [
|
|
15
13
|
140,
|
|
@@ -26,6 +24,7 @@ const SOCKET_THEME = {
|
|
|
26
24
|
link: "cyanBright",
|
|
27
25
|
prompt: "primary"
|
|
28
26
|
},
|
|
27
|
+
displayName: "Socket Security",
|
|
29
28
|
effects: {
|
|
30
29
|
spinner: {
|
|
31
30
|
color: "primary",
|
|
@@ -41,15 +40,14 @@ const SOCKET_THEME = {
|
|
|
41
40
|
meta: {
|
|
42
41
|
description: "Signature theme with refined violet and subtle shimmer",
|
|
43
42
|
version: "1.0.0"
|
|
44
|
-
}
|
|
43
|
+
},
|
|
44
|
+
name: "socket"
|
|
45
45
|
};
|
|
46
46
|
/**
|
|
47
47
|
* Sunset — Vibrant twilight gradient. Warm sunset palette with orange and
|
|
48
48
|
* purple/pink tones.
|
|
49
49
|
*/
|
|
50
50
|
const SUNSET_THEME = {
|
|
51
|
-
name: "sunset",
|
|
52
|
-
displayName: "Sunset",
|
|
53
51
|
colors: {
|
|
54
52
|
primary: [
|
|
55
53
|
255,
|
|
@@ -71,6 +69,7 @@ const SUNSET_THEME = {
|
|
|
71
69
|
link: "primary",
|
|
72
70
|
prompt: "primary"
|
|
73
71
|
},
|
|
72
|
+
displayName: "Sunset",
|
|
74
73
|
effects: {
|
|
75
74
|
spinner: {
|
|
76
75
|
color: "primary",
|
|
@@ -94,15 +93,14 @@ const SUNSET_THEME = {
|
|
|
94
93
|
meta: {
|
|
95
94
|
description: "Warm sunset theme with purple-to-orange gradient",
|
|
96
95
|
version: "2.0.0"
|
|
97
|
-
}
|
|
96
|
+
},
|
|
97
|
+
name: "sunset"
|
|
98
98
|
};
|
|
99
99
|
/**
|
|
100
100
|
* Terracotta — Solid warmth. Rich terracotta and ember tones for grounded
|
|
101
101
|
* confidence.
|
|
102
102
|
*/
|
|
103
103
|
const TERRACOTTA_THEME = {
|
|
104
|
-
name: "terracotta",
|
|
105
|
-
displayName: "Terracotta",
|
|
106
104
|
colors: {
|
|
107
105
|
primary: [
|
|
108
106
|
255,
|
|
@@ -124,6 +122,7 @@ const TERRACOTTA_THEME = {
|
|
|
124
122
|
link: "secondary",
|
|
125
123
|
prompt: "primary"
|
|
126
124
|
},
|
|
125
|
+
displayName: "Terracotta",
|
|
127
126
|
effects: {
|
|
128
127
|
spinner: {
|
|
129
128
|
color: "primary",
|
|
@@ -139,14 +138,13 @@ const TERRACOTTA_THEME = {
|
|
|
139
138
|
meta: {
|
|
140
139
|
description: "Solid theme with rich terracotta and ember warmth",
|
|
141
140
|
version: "1.0.0"
|
|
142
|
-
}
|
|
141
|
+
},
|
|
142
|
+
name: "terracotta"
|
|
143
143
|
};
|
|
144
144
|
/**
|
|
145
145
|
* Lush — Steel elegance. Python-inspired steel blue with golden accents.
|
|
146
146
|
*/
|
|
147
147
|
const LUSH_THEME = {
|
|
148
|
-
name: "lush",
|
|
149
|
-
displayName: "Lush",
|
|
150
148
|
colors: {
|
|
151
149
|
primary: [
|
|
152
150
|
70,
|
|
@@ -168,6 +166,7 @@ const LUSH_THEME = {
|
|
|
168
166
|
link: "cyanBright",
|
|
169
167
|
prompt: "primary"
|
|
170
168
|
},
|
|
169
|
+
displayName: "Lush",
|
|
171
170
|
effects: { spinner: {
|
|
172
171
|
color: "primary",
|
|
173
172
|
style: "dots"
|
|
@@ -175,15 +174,14 @@ const LUSH_THEME = {
|
|
|
175
174
|
meta: {
|
|
176
175
|
description: "Elegant theme with steel blue and golden harmony",
|
|
177
176
|
version: "1.0.0"
|
|
178
|
-
}
|
|
177
|
+
},
|
|
178
|
+
name: "lush"
|
|
179
179
|
};
|
|
180
180
|
/**
|
|
181
181
|
* Ultra — Premium intensity. Prismatic shimmer for deep analysis, where
|
|
182
182
|
* complexity meets elegance.
|
|
183
183
|
*/
|
|
184
184
|
const ULTRA_THEME = {
|
|
185
|
-
name: "ultra",
|
|
186
|
-
displayName: "Ultra",
|
|
187
185
|
colors: {
|
|
188
186
|
primary: [
|
|
189
187
|
140,
|
|
@@ -200,6 +198,7 @@ const ULTRA_THEME = {
|
|
|
200
198
|
link: "cyanBright",
|
|
201
199
|
prompt: "primary"
|
|
202
200
|
},
|
|
201
|
+
displayName: "Ultra",
|
|
203
202
|
effects: {
|
|
204
203
|
spinner: {
|
|
205
204
|
color: "inherit",
|
|
@@ -215,7 +214,8 @@ const ULTRA_THEME = {
|
|
|
215
214
|
meta: {
|
|
216
215
|
description: "Premium theme with prismatic shimmer for deep analysis",
|
|
217
216
|
version: "1.0.0"
|
|
218
|
-
}
|
|
217
|
+
},
|
|
218
|
+
name: "ultra"
|
|
219
219
|
};
|
|
220
220
|
/**
|
|
221
221
|
* Theme registry — Curated palette collection.
|
package/dist/themes/types.d.ts
CHANGED
|
@@ -75,7 +75,7 @@ export type ThemeEffects = {
|
|
|
75
75
|
* Animation style.
|
|
76
76
|
*/
|
|
77
77
|
style?: SpinnerStyle | string | undefined;
|
|
78
|
-
};
|
|
78
|
+
} | undefined;
|
|
79
79
|
/**
|
|
80
80
|
* Shimmer configuration.
|
|
81
81
|
*/
|
|
@@ -96,7 +96,7 @@ export type ThemeEffects = {
|
|
|
96
96
|
* Speed (steps per frame)
|
|
97
97
|
*/
|
|
98
98
|
speed?: number | undefined;
|
|
99
|
-
};
|
|
99
|
+
} | undefined;
|
|
100
100
|
/**
|
|
101
101
|
* Pulse configuration.
|
|
102
102
|
*/
|
|
@@ -105,7 +105,7 @@ export type ThemeEffects = {
|
|
|
105
105
|
* Speed (milliseconds)
|
|
106
106
|
*/
|
|
107
107
|
speed?: number | undefined;
|
|
108
|
-
};
|
|
108
|
+
} | undefined;
|
|
109
109
|
};
|
|
110
110
|
/**
|
|
111
111
|
* Theme metadata — descriptive information.
|
package/dist/url/parse.js
CHANGED
|
@@ -19,7 +19,6 @@ const UrlCtor = URL;
|
|
|
19
19
|
* createRelativeUrl('/api/test', { base: 'https://example.com' }) // 'https://example.com/api/test'
|
|
20
20
|
* ```
|
|
21
21
|
*/
|
|
22
|
-
/* @__NO_SIDE_EFFECTS__ */
|
|
23
22
|
function createRelativeUrl(path, options) {
|
|
24
23
|
const { base = "" } = {
|
|
25
24
|
__proto__: null,
|
|
@@ -42,7 +41,6 @@ function createRelativeUrl(path, options) {
|
|
|
42
41
|
* parseUrl('invalid') // undefined
|
|
43
42
|
* ```
|
|
44
43
|
*/
|
|
45
|
-
/* @__NO_SIDE_EFFECTS__ */
|
|
46
44
|
function parseUrl(value) {
|
|
47
45
|
try {
|
|
48
46
|
return new UrlCtor(value);
|
package/dist/url/predicates.js
CHANGED
|
@@ -18,9 +18,8 @@ const require_url_parse = require('./parse.js');
|
|
|
18
18
|
* isUrl(null) // false
|
|
19
19
|
* ```
|
|
20
20
|
*/
|
|
21
|
-
/* @__NO_SIDE_EFFECTS__ */
|
|
22
21
|
function isUrl(value) {
|
|
23
|
-
return (typeof value === "string" && value !== "" || value !== null && typeof value === "object") &&
|
|
22
|
+
return (typeof value === "string" && value !== "" || value !== null && typeof value === "object") && !!require_url_parse.parseUrl(value);
|
|
24
23
|
}
|
|
25
24
|
|
|
26
25
|
//#endregion
|
|
@@ -20,7 +20,6 @@ const BooleanCtor = Boolean;
|
|
|
20
20
|
* urlSearchParamsAsArray(null) // []
|
|
21
21
|
* ```
|
|
22
22
|
*/
|
|
23
|
-
/* @__NO_SIDE_EFFECTS__ */
|
|
24
23
|
function urlSearchParamsAsArray(value) {
|
|
25
24
|
return typeof value === "string" ? value.trim().split(/, */).map((v) => v.trim()).filter(BooleanCtor) : [];
|
|
26
25
|
}
|
|
@@ -34,7 +33,6 @@ function urlSearchParamsAsArray(value) {
|
|
|
34
33
|
* urlSearchParamsAsBoolean(null) // false
|
|
35
34
|
* ```
|
|
36
35
|
*/
|
|
37
|
-
/* @__NO_SIDE_EFFECTS__ */
|
|
38
36
|
function urlSearchParamsAsBoolean(value, options) {
|
|
39
37
|
const { defaultValue = false } = {
|
|
40
38
|
__proto__: null,
|
|
@@ -44,7 +42,7 @@ function urlSearchParamsAsBoolean(value, options) {
|
|
|
44
42
|
const trimmed = value.trim();
|
|
45
43
|
if (trimmed === "") return !!defaultValue;
|
|
46
44
|
const lowered = trimmed.toLowerCase();
|
|
47
|
-
return lowered === "1" || lowered === "
|
|
45
|
+
return lowered === "1" || lowered === "on" || lowered === "true" || lowered === "yes";
|
|
48
46
|
}
|
|
49
47
|
if (value === null || value === void 0) return !!defaultValue;
|
|
50
48
|
return !!value;
|
|
@@ -59,7 +57,6 @@ function urlSearchParamsAsBoolean(value, options) {
|
|
|
59
57
|
* urlSearchParamsAsNumber(params, 'other') // 0
|
|
60
58
|
* ```
|
|
61
59
|
*/
|
|
62
|
-
/* @__NO_SIDE_EFFECTS__ */
|
|
63
60
|
function urlSearchParamsAsNumber(params, key, options) {
|
|
64
61
|
const { defaultValue = 0 } = {
|
|
65
62
|
__proto__: null,
|
|
@@ -84,7 +81,6 @@ function urlSearchParamsAsNumber(params, key, options) {
|
|
|
84
81
|
* urlSearchParamsAsString(params, 'other') // ''
|
|
85
82
|
* ```
|
|
86
83
|
*/
|
|
87
|
-
/* @__NO_SIDE_EFFECTS__ */
|
|
88
84
|
function urlSearchParamsAsString(params, key, options) {
|
|
89
85
|
const { defaultValue = "" } = {
|
|
90
86
|
__proto__: null,
|
|
@@ -105,12 +101,11 @@ function urlSearchParamsAsString(params, key, options) {
|
|
|
105
101
|
* urlSearchParamsGetArray(params, 'tags') // ['a', 'b', 'c']
|
|
106
102
|
* ```
|
|
107
103
|
*/
|
|
108
|
-
/* @__NO_SIDE_EFFECTS__ */
|
|
109
104
|
function urlSearchParamsGetArray(params, key) {
|
|
110
105
|
if (params && typeof params.getAll === "function") {
|
|
111
106
|
const values = params.getAll(key);
|
|
112
107
|
const firstValue = values[0];
|
|
113
|
-
if (values.length === 1 && firstValue && firstValue.includes(",")) return
|
|
108
|
+
if (values.length === 1 && firstValue && firstValue.includes(",")) return urlSearchParamsAsArray(firstValue);
|
|
114
109
|
return values;
|
|
115
110
|
}
|
|
116
111
|
return [];
|
|
@@ -125,7 +120,6 @@ function urlSearchParamsGetArray(params, key) {
|
|
|
125
120
|
* urlSearchParamsGetBoolean(params, 'other') // false
|
|
126
121
|
* ```
|
|
127
122
|
*/
|
|
128
|
-
/* @__NO_SIDE_EFFECTS__ */
|
|
129
123
|
function urlSearchParamsGetBoolean(params, key, options) {
|
|
130
124
|
const { defaultValue = false } = {
|
|
131
125
|
__proto__: null,
|
|
@@ -133,7 +127,7 @@ function urlSearchParamsGetBoolean(params, key, options) {
|
|
|
133
127
|
};
|
|
134
128
|
if (params && typeof params.get === "function") {
|
|
135
129
|
const value = params.get(key);
|
|
136
|
-
return value !== null ?
|
|
130
|
+
return value !== null ? urlSearchParamsAsBoolean(value, { defaultValue }) : defaultValue;
|
|
137
131
|
}
|
|
138
132
|
return defaultValue;
|
|
139
133
|
}
|
package/dist/url/types.d.ts
CHANGED
|
@@ -4,17 +4,17 @@
|
|
|
4
4
|
* types, no runtime side effects.
|
|
5
5
|
*/
|
|
6
6
|
export interface CreateRelativeUrlOptions {
|
|
7
|
-
base?: string;
|
|
7
|
+
base?: string | undefined;
|
|
8
8
|
}
|
|
9
9
|
export interface UrlSearchParamsAsBooleanOptions {
|
|
10
|
-
defaultValue?: boolean;
|
|
10
|
+
defaultValue?: boolean | undefined;
|
|
11
11
|
}
|
|
12
12
|
export interface UrlSearchParamsAsNumberOptions {
|
|
13
|
-
defaultValue?: number;
|
|
13
|
+
defaultValue?: number | undefined;
|
|
14
14
|
}
|
|
15
15
|
export interface UrlSearchParamsAsStringOptions {
|
|
16
|
-
defaultValue?: string;
|
|
16
|
+
defaultValue?: string | undefined;
|
|
17
17
|
}
|
|
18
18
|
export interface UrlSearchParamsGetBooleanOptions {
|
|
19
|
-
defaultValue?: boolean;
|
|
19
|
+
defaultValue?: boolean | undefined;
|
|
20
20
|
}
|
|
@@ -15,20 +15,20 @@ const require_smol_versions = require('../smol/versions.js');
|
|
|
15
15
|
* shape (`{major, minor, patch}`) which only `semver.parse` exposes — those
|
|
16
16
|
* leaves use `getSemver()` directly instead of going through `impl`.
|
|
17
17
|
*/
|
|
18
|
-
const
|
|
18
|
+
const semver = require("../external/semver");
|
|
19
19
|
/**
|
|
20
20
|
* The vendored `semver` JS implementation. Always available — used directly by
|
|
21
21
|
* the leaves that need the parsed `{major, minor, patch}` shape (which
|
|
22
22
|
* smol-versions doesn't expose).
|
|
23
23
|
*/
|
|
24
24
|
function getSemver() {
|
|
25
|
-
return
|
|
25
|
+
return semver;
|
|
26
26
|
}
|
|
27
27
|
/**
|
|
28
28
|
* Resolved version implementation: smol-versions on the smol Node binary,
|
|
29
29
|
* otherwise the vendored `semver`. Bound once at module load.
|
|
30
30
|
*/
|
|
31
|
-
const impl =
|
|
31
|
+
const impl = require_smol_versions.getSmolVersions() ?? semver;
|
|
32
32
|
|
|
33
33
|
//#endregion
|
|
34
34
|
exports.getSemver = getSemver;
|
package/dist/words/article.js
CHANGED
package/dist/words/capitalize.js
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @file
|
|
3
|
-
*
|
|
2
|
+
* @file Count-based pluralization. Two modes:
|
|
3
|
+
*
|
|
4
|
+
* - Default: appends a trailing `'s'` when the count is anything other than 1.
|
|
5
|
+
* Zero-cost; no Intl dependency on the hot path.
|
|
6
|
+
* - Dictionary: when `options.forms` is given, selects from a caller-supplied
|
|
7
|
+
* dictionary of forms keyed by plural category. Honors locale + cardinal /
|
|
8
|
+
* ordinal via `Intl.PluralRules`. Required `plural` acts as the fallback
|
|
9
|
+
* for any category not explicitly listed.
|
|
4
10
|
*/
|
|
5
11
|
import type { PluralizeOptions } from './types';
|
|
12
|
+
export declare function getRules(locale: string, type: Intl.PluralRuleType): Intl.PluralRules;
|
|
6
13
|
/**
|
|
7
14
|
* Pluralize a word based on count.
|
|
8
15
|
*
|
|
@@ -11,6 +18,21 @@ import type { PluralizeOptions } from './types';
|
|
|
11
18
|
* pluralize('file') // 'file'
|
|
12
19
|
* pluralize('file', { count: 3 }) // 'files'
|
|
13
20
|
* pluralize('file', { count: 0 }) // 'files'
|
|
21
|
+
*
|
|
22
|
+
* // Dictionary mode for irregulars.
|
|
23
|
+
* pluralize('child', {
|
|
24
|
+
* count: 3,
|
|
25
|
+
* forms: { singular: 'child', plural: 'children' },
|
|
26
|
+
* }) // 'children'
|
|
27
|
+
*
|
|
28
|
+
* // Locale + cardinal/ordinal. `singular` here covers CLDR's `one`
|
|
29
|
+
* // category (the count===1 ordinal suffix); `two`/`few` map directly;
|
|
30
|
+
* // `plural` is the fallback for everything else.
|
|
31
|
+
* pluralize('place', {
|
|
32
|
+
* count: 2,
|
|
33
|
+
* type: 'ordinal',
|
|
34
|
+
* forms: { singular: 'st', two: 'nd', few: 'rd', plural: 'th' },
|
|
35
|
+
* }) // 'nd'
|
|
14
36
|
* ```
|
|
15
37
|
*/
|
|
16
38
|
export declare function pluralize(word: string, options?: PluralizeOptions | undefined): string;
|
package/dist/words/pluralize.js
CHANGED
|
@@ -1,9 +1,38 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/* Socket Lib - Built with rolldown */
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
|
+
const require_primordials_intl = require('../primordials/intl.js');
|
|
4
5
|
|
|
5
6
|
//#region src/words/pluralize.ts
|
|
6
7
|
/**
|
|
8
|
+
* @file Count-based pluralization. Two modes:
|
|
9
|
+
*
|
|
10
|
+
* - Default: appends a trailing `'s'` when the count is anything other than 1.
|
|
11
|
+
* Zero-cost; no Intl dependency on the hot path.
|
|
12
|
+
* - Dictionary: when `options.forms` is given, selects from a caller-supplied
|
|
13
|
+
* dictionary of forms keyed by plural category. Honors locale + cardinal /
|
|
14
|
+
* ordinal via `Intl.PluralRules`. Required `plural` acts as the fallback
|
|
15
|
+
* for any category not explicitly listed.
|
|
16
|
+
*/
|
|
17
|
+
const CLDR_TO_FIELD = {
|
|
18
|
+
few: "few",
|
|
19
|
+
many: "many",
|
|
20
|
+
one: "singular",
|
|
21
|
+
other: "plural",
|
|
22
|
+
two: "two",
|
|
23
|
+
zero: "zero"
|
|
24
|
+
};
|
|
25
|
+
const RULES_CACHE = /* @__PURE__ */ new Map();
|
|
26
|
+
function getRules(locale, type) {
|
|
27
|
+
const key = `${locale}:${type}`;
|
|
28
|
+
let r = RULES_CACHE.get(key);
|
|
29
|
+
if (!r) {
|
|
30
|
+
r = new require_primordials_intl.IntlPluralRules(locale, { type });
|
|
31
|
+
RULES_CACHE.set(key, r);
|
|
32
|
+
}
|
|
33
|
+
return r;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
7
36
|
* Pluralize a word based on count.
|
|
8
37
|
*
|
|
9
38
|
* @example
|
|
@@ -11,16 +40,32 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
11
40
|
* pluralize('file') // 'file'
|
|
12
41
|
* pluralize('file', { count: 3 }) // 'files'
|
|
13
42
|
* pluralize('file', { count: 0 }) // 'files'
|
|
43
|
+
*
|
|
44
|
+
* // Dictionary mode for irregulars.
|
|
45
|
+
* pluralize('child', {
|
|
46
|
+
* count: 3,
|
|
47
|
+
* forms: { singular: 'child', plural: 'children' },
|
|
48
|
+
* }) // 'children'
|
|
49
|
+
*
|
|
50
|
+
* // Locale + cardinal/ordinal. `singular` here covers CLDR's `one`
|
|
51
|
+
* // category (the count===1 ordinal suffix); `two`/`few` map directly;
|
|
52
|
+
* // `plural` is the fallback for everything else.
|
|
53
|
+
* pluralize('place', {
|
|
54
|
+
* count: 2,
|
|
55
|
+
* type: 'ordinal',
|
|
56
|
+
* forms: { singular: 'st', two: 'nd', few: 'rd', plural: 'th' },
|
|
57
|
+
* }) // 'nd'
|
|
14
58
|
* ```
|
|
15
59
|
*/
|
|
16
|
-
/* @__NO_SIDE_EFFECTS__ */
|
|
17
60
|
function pluralize(word, options) {
|
|
18
|
-
const { count = 1 } = {
|
|
61
|
+
const { count = 1, forms, locale = "en-US", type = "cardinal" } = {
|
|
19
62
|
__proto__: null,
|
|
20
63
|
...options
|
|
21
64
|
};
|
|
65
|
+
if (forms) return forms[CLDR_TO_FIELD[getRules(locale, type).select(count)]] ?? forms.plural;
|
|
22
66
|
return count === 1 ? word : `${word}s`;
|
|
23
67
|
}
|
|
24
68
|
|
|
25
69
|
//#endregion
|
|
70
|
+
exports.getRules = getRules;
|
|
26
71
|
exports.pluralize = pluralize;
|
package/dist/words/types.d.ts
CHANGED
|
@@ -1,7 +1,30 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file Public type surface for `words/*` modules — the `PluralizeOptions`
|
|
3
|
-
* record. Pure types, no runtime side
|
|
3
|
+
* record and its `PluralForms` companion. Pure types, no runtime side
|
|
4
|
+
* effects.
|
|
4
5
|
*/
|
|
6
|
+
/**
|
|
7
|
+
* Count-aware forms for {@link pluralize}. `singular` covers the CLDR `one`
|
|
8
|
+
* category; `plural` covers the required `other` category and is the fallback
|
|
9
|
+
* when a count's category isn't explicitly listed. The remaining four
|
|
10
|
+
* (`zero`/`two`/`few`/`many`) are optional and default to `plural` when omitted
|
|
11
|
+
* — only languages like Arabic, Russian, or Welsh exercise them.
|
|
12
|
+
*
|
|
13
|
+
* Plural-category reference:
|
|
14
|
+
* https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/PluralRules/select
|
|
15
|
+
* https://cldr.unicode.org/index/cldr-spec/plural-rules.
|
|
16
|
+
*/
|
|
17
|
+
export interface PluralForms {
|
|
18
|
+
singular?: string | undefined;
|
|
19
|
+
plural: string;
|
|
20
|
+
zero?: string | undefined;
|
|
21
|
+
two?: string | undefined;
|
|
22
|
+
few?: string | undefined;
|
|
23
|
+
many?: string | undefined;
|
|
24
|
+
}
|
|
5
25
|
export interface PluralizeOptions {
|
|
6
|
-
count?: number;
|
|
26
|
+
count?: number | undefined;
|
|
27
|
+
forms?: PluralForms | undefined;
|
|
28
|
+
locale?: string | undefined;
|
|
29
|
+
type?: Intl.PluralRuleType | undefined;
|
|
7
30
|
}
|