@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
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* Socket Lib - Built with rolldown */
|
|
3
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
|
+
const require_runtime = require('../_virtual/_rolldown/runtime.js');
|
|
5
|
+
let node_crypto = require("node:crypto");
|
|
6
|
+
node_crypto = require_runtime.__toESM(node_crypto);
|
|
7
|
+
|
|
8
|
+
//#region src/secrets/compare.ts
|
|
9
|
+
/**
|
|
10
|
+
* @file Constant-time secret comparison. Wraps Node's `crypto.timingSafeEqual`
|
|
11
|
+
* so every secret comparison in the codebase runs through one helper that
|
|
12
|
+
* refuses to short-circuit on the first mismatched byte. Why this matters:
|
|
13
|
+
*
|
|
14
|
+
* - `===` / `!==` on JS strings short-circuits at the first byte mismatch. An
|
|
15
|
+
* attacker who can measure server response time can binary-search the
|
|
16
|
+
* secret one byte at a time: `'a000...'`, `'b000...'`, … until the response
|
|
17
|
+
* slows down at the right first byte, then on to byte 2. Same trap for
|
|
18
|
+
* `Buffer.compare` and `==`.
|
|
19
|
+
* - `crypto.timingSafeEqual` runs in O(n) regardless of where the first
|
|
20
|
+
* mismatch is. Each iteration is the same cost so the timing channel
|
|
21
|
+
* carries no information about which byte mismatched. Use whenever
|
|
22
|
+
* comparing two values that include a secret (session token, API key, MAC,
|
|
23
|
+
* expected-hash). Don't use for path strings or other non-secret
|
|
24
|
+
* comparisons — `===` is fine there and faster. Patterned after pilcrow's
|
|
25
|
+
* `crypto.go::constantTimeCompare`, the canonical shape in
|
|
26
|
+
* passwordless-example.auth.pilcrowonpaper.com — wrap once, use everywhere,
|
|
27
|
+
* never byte-compare a secret directly.
|
|
28
|
+
*/
|
|
29
|
+
/**
|
|
30
|
+
* Compare two secrets in constant time. Returns `true` when the inputs are
|
|
31
|
+
* byte-equal. Returns `false` when they differ **or** when the byte-lengths
|
|
32
|
+
* differ. Never throws.
|
|
33
|
+
*
|
|
34
|
+
* Length mismatch handling: `timingSafeEqual` itself throws on length mismatch
|
|
35
|
+
* (it can't preserve the timing-safety contract across differently- sized
|
|
36
|
+
* buffers). We catch that and return `false` so callers don't need a length
|
|
37
|
+
* pre-check.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ;```typescript
|
|
41
|
+
* import { compareSecrets } from '@socketsecurity/lib/secrets/compare'
|
|
42
|
+
*
|
|
43
|
+
* if (!compareSecrets(presentedToken, storedToken)) {
|
|
44
|
+
* throw new Error('invalid token')
|
|
45
|
+
* }
|
|
46
|
+
* ```
|
|
47
|
+
*
|
|
48
|
+
* @param a - First secret (string or Buffer).
|
|
49
|
+
* @param b - Second secret (string or Buffer).
|
|
50
|
+
*
|
|
51
|
+
* @returns `true` when `a` and `b` are byte-equal; `false` otherwise.
|
|
52
|
+
*/
|
|
53
|
+
function compareSecrets(a, b) {
|
|
54
|
+
const ab = typeof a === "string" ? Buffer.from(a, "utf8") : a;
|
|
55
|
+
const bb = typeof b === "string" ? Buffer.from(b, "utf8") : b;
|
|
56
|
+
if (ab.length !== bb.length) return false;
|
|
57
|
+
return node_crypto.default.timingSafeEqual(ab, bb);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
//#endregion
|
|
61
|
+
exports.compareSecrets = compareSecrets;
|
package/dist/secrets/keychain.js
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/* Socket Lib - Built with rolldown */
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
|
+
const require_runtime = require('../_virtual/_rolldown/runtime.js');
|
|
5
|
+
const require_primordials_error = require('../primordials/error.js');
|
|
4
6
|
const require_secrets__internal = require('./_internal.js');
|
|
5
7
|
const require_secrets_macos = require('./macos.js');
|
|
6
8
|
const require_secrets_linux = require('./linux.js');
|
|
7
9
|
const require_secrets_windows = require('./windows.js');
|
|
8
10
|
let node_os = require("node:os");
|
|
11
|
+
node_os = require_runtime.__toESM(node_os);
|
|
9
12
|
|
|
10
13
|
//#region src/secrets/keychain.ts
|
|
11
14
|
/**
|
|
@@ -117,7 +120,7 @@ function deleteSecretSync({ service, account }) {
|
|
|
117
120
|
* @internal
|
|
118
121
|
*/
|
|
119
122
|
function detectPlatform() {
|
|
120
|
-
const p =
|
|
123
|
+
const p = node_os.default.platform();
|
|
121
124
|
if (p === "darwin" || p === "linux" || p === "win32") return p;
|
|
122
125
|
return "other";
|
|
123
126
|
}
|
|
@@ -149,7 +152,7 @@ function getBackendAvailability() {
|
|
|
149
152
|
default: return {
|
|
150
153
|
available: false,
|
|
151
154
|
toolName: "n/a",
|
|
152
|
-
installHint: `Platform ${
|
|
155
|
+
installHint: `Platform ${node_os.default.platform()} is not supported.`
|
|
153
156
|
};
|
|
154
157
|
}
|
|
155
158
|
}
|
|
@@ -228,9 +231,9 @@ function readSecretSync({ service, account }) {
|
|
|
228
231
|
* shouldn't show "rewrote N secrets" when nothing actually changed).
|
|
229
232
|
*/
|
|
230
233
|
async function writeSecret({ service, account, value, label }) {
|
|
231
|
-
if (!value || typeof value !== "string") throw new
|
|
234
|
+
if (!value || typeof value !== "string") throw new require_primordials_error.TypeErrorCtor("writeSecret: value must be a non-empty string");
|
|
232
235
|
const platform_ = detectPlatform();
|
|
233
|
-
if (platform_ === "other") throw new
|
|
236
|
+
if (platform_ === "other") throw new require_primordials_error.ErrorCtor(`Unsupported platform: ${node_os.default.platform()}. Secret storage requires macOS, Linux, or Windows.`);
|
|
234
237
|
if (await readSecret({
|
|
235
238
|
service,
|
|
236
239
|
account
|
|
@@ -251,9 +254,9 @@ async function writeSecret({ service, account, value, label }) {
|
|
|
251
254
|
return "written";
|
|
252
255
|
}
|
|
253
256
|
function writeSecretSync({ service, account, value, label }) {
|
|
254
|
-
if (!value || typeof value !== "string") throw new
|
|
257
|
+
if (!value || typeof value !== "string") throw new require_primordials_error.TypeErrorCtor("writeSecret: value must be a non-empty string");
|
|
255
258
|
const platform_ = detectPlatform();
|
|
256
|
-
if (platform_ === "other") throw new
|
|
259
|
+
if (platform_ === "other") throw new require_primordials_error.ErrorCtor(`Unsupported platform: ${node_os.default.platform()}. Secret storage requires macOS, Linux, or Windows.`);
|
|
257
260
|
if (readSecretSync({
|
|
258
261
|
service,
|
|
259
262
|
account
|
package/dist/secrets/linux.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/* Socket Lib - Built with rolldown */
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
|
-
|
|
4
|
+
const require_primordials_error = require('../primordials/error.js');
|
|
5
|
+
const require_primordials_promise = require('../primordials/promise.js');
|
|
6
|
+
let _socketsecurity_lib_stable_process_spawn_child = require("@socketsecurity/lib-stable/process/spawn/child");
|
|
5
7
|
|
|
6
8
|
//#region src/secrets/linux.ts
|
|
7
9
|
/**
|
|
@@ -19,20 +21,20 @@ let node_child_process = require("node:child_process");
|
|
|
19
21
|
*/
|
|
20
22
|
const SECRET_TOOL_BIN = "secret-tool";
|
|
21
23
|
async function deleteLinux(service, account) {
|
|
22
|
-
return new
|
|
23
|
-
const
|
|
24
|
+
return new require_primordials_promise.PromiseCtor((resolve) => {
|
|
25
|
+
const { process: cp } = (0, _socketsecurity_lib_stable_process_spawn_child.spawn)(SECRET_TOOL_BIN, [
|
|
24
26
|
"clear",
|
|
25
27
|
"service",
|
|
26
28
|
service,
|
|
27
29
|
"user",
|
|
28
30
|
account
|
|
29
31
|
], { stdio: "ignore" });
|
|
30
|
-
|
|
31
|
-
|
|
32
|
+
cp.on("error", () => resolve("absent"));
|
|
33
|
+
cp.on("close", (status) => resolve(status === 0 ? "removed" : "absent"));
|
|
32
34
|
});
|
|
33
35
|
}
|
|
34
36
|
function deleteLinuxSync(service, account) {
|
|
35
|
-
return (0,
|
|
37
|
+
return (0, _socketsecurity_lib_stable_process_spawn_child.spawnSync)(SECRET_TOOL_BIN, [
|
|
36
38
|
"clear",
|
|
37
39
|
"service",
|
|
38
40
|
service,
|
|
@@ -41,11 +43,11 @@ function deleteLinuxSync(service, account) {
|
|
|
41
43
|
], { stdio: "ignore" }).status === 0 ? "removed" : "absent";
|
|
42
44
|
}
|
|
43
45
|
function isLinuxBackendAvailable() {
|
|
44
|
-
return (0,
|
|
46
|
+
return (0, _socketsecurity_lib_stable_process_spawn_child.spawnSync)(SECRET_TOOL_BIN, ["--version"], { stdio: "ignore" }).status === 0;
|
|
45
47
|
}
|
|
46
48
|
async function readLinux(service, account) {
|
|
47
|
-
return new
|
|
48
|
-
const
|
|
49
|
+
return new require_primordials_promise.PromiseCtor((resolve) => {
|
|
50
|
+
const { process: cp } = (0, _socketsecurity_lib_stable_process_spawn_child.spawn)(SECRET_TOOL_BIN, [
|
|
49
51
|
"lookup",
|
|
50
52
|
"service",
|
|
51
53
|
service,
|
|
@@ -57,12 +59,12 @@ async function readLinux(service, account) {
|
|
|
57
59
|
"pipe"
|
|
58
60
|
] });
|
|
59
61
|
let stdout = "";
|
|
60
|
-
|
|
61
|
-
|
|
62
|
+
cp.stdout.setEncoding("utf8");
|
|
63
|
+
cp.stdout.on("data", (chunk) => {
|
|
62
64
|
stdout += chunk;
|
|
63
65
|
});
|
|
64
|
-
|
|
65
|
-
|
|
66
|
+
cp.on("error", () => resolve(void 0));
|
|
67
|
+
cp.on("close", (status) => {
|
|
66
68
|
if (status !== 0) {
|
|
67
69
|
resolve(void 0);
|
|
68
70
|
return;
|
|
@@ -72,7 +74,7 @@ async function readLinux(service, account) {
|
|
|
72
74
|
});
|
|
73
75
|
}
|
|
74
76
|
function readLinuxSync(service, account) {
|
|
75
|
-
const r = (0,
|
|
77
|
+
const r = (0, _socketsecurity_lib_stable_process_spawn_child.spawnSync)(SECRET_TOOL_BIN, [
|
|
76
78
|
"lookup",
|
|
77
79
|
"service",
|
|
78
80
|
service,
|
|
@@ -90,8 +92,8 @@ function readLinuxSync(service, account) {
|
|
|
90
92
|
return r.stdout.trim() || void 0;
|
|
91
93
|
}
|
|
92
94
|
async function writeLinux(service, account, value, label) {
|
|
93
|
-
return new
|
|
94
|
-
const
|
|
95
|
+
return new require_primordials_promise.PromiseCtor((resolve, reject) => {
|
|
96
|
+
const { process: cp } = (0, _socketsecurity_lib_stable_process_spawn_child.spawn)(SECRET_TOOL_BIN, [
|
|
95
97
|
"store",
|
|
96
98
|
`--label=${label}`,
|
|
97
99
|
"service",
|
|
@@ -104,23 +106,23 @@ async function writeLinux(service, account, value, label) {
|
|
|
104
106
|
"pipe"
|
|
105
107
|
] });
|
|
106
108
|
let stderr = "";
|
|
107
|
-
|
|
108
|
-
|
|
109
|
+
cp.stderr.setEncoding("utf8");
|
|
110
|
+
cp.stderr.on("data", (chunk) => {
|
|
109
111
|
stderr += chunk;
|
|
110
112
|
});
|
|
111
|
-
|
|
112
|
-
|
|
113
|
+
cp.on("error", (err) => reject(/* @__PURE__ */ new Error(`secret-tool store failed: ${err.message}. Install libsecret-tools (apt install libsecret-tools / dnf install libsecret) or ensure a Secret Service provider (gnome-keyring, kwallet) is running.`)));
|
|
114
|
+
cp.on("close", (status) => {
|
|
113
115
|
if (status === 0) {
|
|
114
116
|
resolve();
|
|
115
117
|
return;
|
|
116
118
|
}
|
|
117
119
|
reject(/* @__PURE__ */ new Error(`secret-tool store failed (status=${status}, user=${account}): ${stderr.trim()}. Install libsecret-tools (apt install libsecret-tools / dnf install libsecret) or ensure a Secret Service provider (gnome-keyring, kwallet) is running.`));
|
|
118
120
|
});
|
|
119
|
-
|
|
121
|
+
cp.stdin.end(value);
|
|
120
122
|
});
|
|
121
123
|
}
|
|
122
124
|
function writeLinuxSync(service, account, value, label) {
|
|
123
|
-
const r = (0,
|
|
125
|
+
const r = (0, _socketsecurity_lib_stable_process_spawn_child.spawnSync)(SECRET_TOOL_BIN, [
|
|
124
126
|
"store",
|
|
125
127
|
`--label=${label}`,
|
|
126
128
|
"service",
|
|
@@ -136,7 +138,7 @@ function writeLinuxSync(service, account, value, label) {
|
|
|
136
138
|
"pipe"
|
|
137
139
|
]
|
|
138
140
|
});
|
|
139
|
-
if (r.status !== 0) throw new
|
|
141
|
+
if (r.status !== 0) throw new require_primordials_error.ErrorCtor(`secret-tool store failed (status=${r.status}, user=${account}): ${r.stderr.trim()}. Install libsecret-tools (apt install libsecret-tools / dnf install libsecret) or ensure a Secret Service provider (gnome-keyring, kwallet) is running.`);
|
|
140
142
|
}
|
|
141
143
|
|
|
142
144
|
//#endregion
|
package/dist/secrets/macos.d.ts
CHANGED
|
@@ -24,7 +24,7 @@ export declare function isMacOSBackendAvailable(): boolean;
|
|
|
24
24
|
export declare function readMacOS(service: string, account: string): Promise<string | undefined>;
|
|
25
25
|
export declare function readMacOSSync(service: string, account: string): string | undefined;
|
|
26
26
|
interface SpawnOpts {
|
|
27
|
-
stdio?: 'ignore' | 'pipe' | ['ignore', 'pipe', 'pipe'];
|
|
27
|
+
stdio?: 'ignore' | 'pipe' | ['ignore', 'pipe', 'pipe'] | undefined;
|
|
28
28
|
}
|
|
29
29
|
export declare function runAsync(args: readonly string[], opts?: SpawnOpts): Promise<{
|
|
30
30
|
status: number | null;
|
package/dist/secrets/macos.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/* Socket Lib - Built with rolldown */
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
|
-
|
|
4
|
+
const require_primordials_error = require('../primordials/error.js');
|
|
5
|
+
const require_primordials_promise = require('../primordials/promise.js');
|
|
6
|
+
let _socketsecurity_lib_stable_process_spawn_child = require("@socketsecurity/lib-stable/process/spawn/child");
|
|
5
7
|
|
|
6
8
|
//#region src/secrets/macos.ts
|
|
7
9
|
/**
|
|
@@ -35,7 +37,7 @@ async function deleteMacOS(service, account) {
|
|
|
35
37
|
], { stdio: "ignore" })).status === 0 ? "removed" : "absent";
|
|
36
38
|
}
|
|
37
39
|
function deleteMacOSSync(service, account) {
|
|
38
|
-
return (0,
|
|
40
|
+
return (0, _socketsecurity_lib_stable_process_spawn_child.spawnSync)(SECURITY_BIN, [
|
|
39
41
|
"delete-generic-password",
|
|
40
42
|
"-s",
|
|
41
43
|
service,
|
|
@@ -59,7 +61,7 @@ async function readMacOS(service, account) {
|
|
|
59
61
|
return r.stdout.trim() || void 0;
|
|
60
62
|
}
|
|
61
63
|
function readMacOSSync(service, account) {
|
|
62
|
-
const r = (0,
|
|
64
|
+
const r = (0, _socketsecurity_lib_stable_process_spawn_child.spawnSync)(SECURITY_BIN, [
|
|
63
65
|
"find-generic-password",
|
|
64
66
|
"-s",
|
|
65
67
|
service,
|
|
@@ -78,32 +80,32 @@ function readMacOSSync(service, account) {
|
|
|
78
80
|
return r.stdout.trim() || void 0;
|
|
79
81
|
}
|
|
80
82
|
function runAsync(args, opts = {}) {
|
|
81
|
-
return new
|
|
82
|
-
const
|
|
83
|
+
return new require_primordials_promise.PromiseCtor((resolve) => {
|
|
84
|
+
const { process: cp } = (0, _socketsecurity_lib_stable_process_spawn_child.spawn)(SECURITY_BIN, args, { stdio: opts.stdio ?? [
|
|
83
85
|
"ignore",
|
|
84
86
|
"pipe",
|
|
85
87
|
"pipe"
|
|
86
88
|
] });
|
|
87
89
|
let stdout = "";
|
|
88
90
|
let stderr = "";
|
|
89
|
-
if (
|
|
90
|
-
|
|
91
|
-
|
|
91
|
+
if (cp.stdout) {
|
|
92
|
+
cp.stdout.setEncoding("utf8");
|
|
93
|
+
cp.stdout.on("data", (chunk) => {
|
|
92
94
|
stdout += chunk;
|
|
93
95
|
});
|
|
94
96
|
}
|
|
95
|
-
if (
|
|
96
|
-
|
|
97
|
-
|
|
97
|
+
if (cp.stderr) {
|
|
98
|
+
cp.stderr.setEncoding("utf8");
|
|
99
|
+
cp.stderr.on("data", (chunk) => {
|
|
98
100
|
stderr += chunk;
|
|
99
101
|
});
|
|
100
102
|
}
|
|
101
|
-
|
|
103
|
+
cp.on("error", () => resolve({
|
|
102
104
|
status: -1,
|
|
103
105
|
stdout,
|
|
104
106
|
stderr
|
|
105
107
|
}));
|
|
106
|
-
|
|
108
|
+
cp.on("close", (status) => resolve({
|
|
107
109
|
status,
|
|
108
110
|
stdout,
|
|
109
111
|
stderr
|
|
@@ -128,10 +130,10 @@ async function writeMacOS(service, account, value, label) {
|
|
|
128
130
|
"-l",
|
|
129
131
|
label
|
|
130
132
|
]);
|
|
131
|
-
if (r.status !== 0) throw new
|
|
133
|
+
if (r.status !== 0) throw new require_primordials_error.ErrorCtor(`security(1) add-generic-password failed (status=${r.status}, account=${account}): ${r.stderr.trim()}`);
|
|
132
134
|
}
|
|
133
135
|
function writeMacOSSync(service, account, value, label) {
|
|
134
|
-
const r = (0,
|
|
136
|
+
const r = (0, _socketsecurity_lib_stable_process_spawn_child.spawnSync)(SECURITY_BIN, [
|
|
135
137
|
"add-generic-password",
|
|
136
138
|
"-U",
|
|
137
139
|
"-A",
|
|
@@ -155,7 +157,7 @@ function writeMacOSSync(service, account, value, label) {
|
|
|
155
157
|
"pipe"
|
|
156
158
|
]
|
|
157
159
|
});
|
|
158
|
-
if (r.status !== 0) throw new
|
|
160
|
+
if (r.status !== 0) throw new require_primordials_error.ErrorCtor(`security(1) add-generic-password failed (status=${r.status}, account=${account}): ${r.stderr.trim()}`);
|
|
159
161
|
}
|
|
160
162
|
|
|
161
163
|
//#endregion
|
package/dist/secrets/rc.d.ts
CHANGED
|
@@ -67,7 +67,7 @@ export interface WriteOptions {
|
|
|
67
67
|
* "Rotate via: my-installer --rotate"). Each entry is prefixed with `# `
|
|
68
68
|
* automatically.
|
|
69
69
|
*/
|
|
70
|
-
notes?: readonly string[];
|
|
70
|
+
notes?: readonly string[] | undefined;
|
|
71
71
|
/**
|
|
72
72
|
* Legacy sentinel BEGIN strings to sweep before writing the new block. Used
|
|
73
73
|
* during a rename/migration so an older managed block is removed rather than
|
|
@@ -75,7 +75,7 @@ export interface WriteOptions {
|
|
|
75
75
|
* tolerates any line endings up to the matching END (same prefix with `END`
|
|
76
76
|
* replacing `BEGIN`).
|
|
77
77
|
*/
|
|
78
|
-
legacySentinels?: readonly string[];
|
|
78
|
+
legacySentinels?: readonly string[] | undefined;
|
|
79
79
|
/**
|
|
80
80
|
* Override the auto-detected shell. By default the helper reads `$SHELL` and
|
|
81
81
|
* targets the matching rc file:
|
package/dist/secrets/rc.js
CHANGED
|
@@ -2,11 +2,15 @@
|
|
|
2
2
|
/* Socket Lib - Built with rolldown */
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
4
|
const require_runtime = require('../_virtual/_rolldown/runtime.js');
|
|
5
|
+
const require_primordials_string = require('../primordials/string.js');
|
|
6
|
+
const require_primordials_regexp = require('../primordials/regexp.js');
|
|
7
|
+
const require_primordials_object = require('../primordials/object.js');
|
|
5
8
|
const require_env_home = require('../env/home.js');
|
|
6
9
|
let node_fs = require("node:fs");
|
|
7
10
|
let node_path = require("node:path");
|
|
8
11
|
node_path = require_runtime.__toESM(node_path);
|
|
9
12
|
let node_os = require("node:os");
|
|
13
|
+
node_os = require_runtime.__toESM(node_os);
|
|
10
14
|
let node_process = require("node:process");
|
|
11
15
|
node_process = require_runtime.__toESM(node_process);
|
|
12
16
|
|
|
@@ -54,7 +58,7 @@ function buildBlock(opts) {
|
|
|
54
58
|
const begin = `# BEGIN ${opts.service} env (managed)`;
|
|
55
59
|
const end = `# END ${opts.service} env (managed)`;
|
|
56
60
|
const noteLines = (opts.notes ?? []).map((line) => `# ${line}`);
|
|
57
|
-
const exportLines =
|
|
61
|
+
const exportLines = require_primordials_object.ObjectEntries(opts.exports).map(([name, value]) => `export ${name}=${shellSingleQuote(value)}`);
|
|
58
62
|
const body = [...noteLines, ...exportLines].join("\n");
|
|
59
63
|
return {
|
|
60
64
|
begin,
|
|
@@ -69,17 +73,18 @@ function buildBlock(opts) {
|
|
|
69
73
|
* no block was present.
|
|
70
74
|
*/
|
|
71
75
|
function clear(service, legacySentinels = []) {
|
|
72
|
-
if (
|
|
76
|
+
if (node_os.default.platform() !== "darwin") return false;
|
|
73
77
|
const rcPath = pickRcFile();
|
|
74
78
|
if (!rcPath || !(0, node_fs.existsSync)(rcPath)) return false;
|
|
75
79
|
let existing = (0, node_fs.readFileSync)(rcPath, "utf8");
|
|
76
80
|
let removedAny = false;
|
|
77
81
|
const sentinelsToStrip = [`# BEGIN ${service} env (managed)`, ...legacySentinels];
|
|
78
|
-
for (
|
|
82
|
+
for (let i = 0, { length } = sentinelsToStrip; i < length; i += 1) {
|
|
83
|
+
const begin = sentinelsToStrip[i];
|
|
79
84
|
const end = begin.replace(/\bBEGIN\b/, "END");
|
|
80
85
|
const endStripped = end.replace(/\s*\(managed\)\s*$/, "");
|
|
81
86
|
const endAlt = end === endStripped ? escapeRegExp(end) : `(?:${escapeRegExp(end)}|${escapeRegExp(endStripped)})`;
|
|
82
|
-
const re = new
|
|
87
|
+
const re = new require_primordials_regexp.RegExpCtor(`\n*${escapeRegExp(begin)}[\\s\\S]*?${endAlt}\n?`, "g");
|
|
83
88
|
const next = existing.replace(re, "\n");
|
|
84
89
|
if (next !== existing) {
|
|
85
90
|
removedAny = true;
|
|
@@ -93,10 +98,10 @@ function escapeRegExp(s) {
|
|
|
93
98
|
return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
94
99
|
}
|
|
95
100
|
function pickRcFile(shellOverride) {
|
|
96
|
-
const home =
|
|
101
|
+
const home = require_env_home.getHome();
|
|
97
102
|
if (!home) return;
|
|
98
103
|
const shellPath = node_process.default.env["SHELL"] ?? "";
|
|
99
|
-
const shell = shellOverride ?? (
|
|
104
|
+
const shell = shellOverride ?? (require_primordials_string.StringPrototypeEndsWith(shellPath, "zsh") ? "zsh" : require_primordials_string.StringPrototypeEndsWith(shellPath, "bash") ? "bash" : require_primordials_string.StringPrototypeEndsWith(shellPath, "fish") ? "fish" : void 0);
|
|
100
105
|
if (shell === "zsh") return node_path.default.join(home, ".zshenv");
|
|
101
106
|
if (shell === "bash") {
|
|
102
107
|
const bashrc = node_path.default.join(home, ".bashrc");
|
|
@@ -130,7 +135,7 @@ function shellSingleQuote(value) {
|
|
|
130
135
|
* dotfile-manager users or installers running under a non-default shell.
|
|
131
136
|
*/
|
|
132
137
|
function write(opts) {
|
|
133
|
-
if (
|
|
138
|
+
if (node_os.default.platform() !== "darwin") return {
|
|
134
139
|
rcPath: void 0,
|
|
135
140
|
outcome: "skipped",
|
|
136
141
|
reason: "unsupported-platform"
|
|
@@ -149,10 +154,10 @@ function write(opts) {
|
|
|
149
154
|
const legacyEnd = legacyBegin.replace(/\bBEGIN\b/, "END");
|
|
150
155
|
const legacyEndStripped = legacyEnd.replace(/\s*\(managed\)\s*$/, "");
|
|
151
156
|
const endAlt = legacyEnd === legacyEndStripped ? escapeRegExp(legacyEnd) : `(?:${escapeRegExp(legacyEnd)}|${escapeRegExp(legacyEndStripped)})`;
|
|
152
|
-
const legacyRe = new
|
|
157
|
+
const legacyRe = new require_primordials_regexp.RegExpCtor(`\n*${escapeRegExp(legacyBegin)}[\\s\\S]*?${endAlt}\n?`, "g");
|
|
153
158
|
working = working.replace(legacyRe, "\n");
|
|
154
159
|
}
|
|
155
|
-
const match = new
|
|
160
|
+
const match = new require_primordials_regexp.RegExpCtor(`${escapeRegExp(begin)}[\\s\\S]*?${escapeRegExp(end)}`).exec(working);
|
|
156
161
|
if (match) {
|
|
157
162
|
if (match[0] === desiredBlock && working === onDisk) return {
|
|
158
163
|
rcPath,
|
|
@@ -164,7 +169,7 @@ function write(opts) {
|
|
|
164
169
|
outcome: "updated"
|
|
165
170
|
};
|
|
166
171
|
}
|
|
167
|
-
const prefix = working.length > 0 && !
|
|
172
|
+
const prefix = working.length > 0 && !require_primordials_string.StringPrototypeEndsWith(working, "\n\n") ? require_primordials_string.StringPrototypeEndsWith(working, "\n") ? "\n" : "\n\n" : "";
|
|
168
173
|
writeRcFile(rcPath, `${working}${prefix}${desiredBlock}\n`.replace(/\n{3,}/g, "\n\n"));
|
|
169
174
|
return {
|
|
170
175
|
rcPath,
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
* @file Convenience helper for reading the Socket API token from the canonical
|
|
3
3
|
* env → keychain precedence order. Centralizes two constants every fleet
|
|
4
4
|
* consumer would otherwise hard-code: the keychain service name
|
|
5
|
-
* (`
|
|
6
|
-
* canonical, `SOCKET_API_KEY` legacy alias). Consumers
|
|
7
|
-
* wheelhouse hooks call `readSocketApiToken()` instead of
|
|
8
|
-
* `resolve({ service, accounts })` boilerplate.
|
|
5
|
+
* (`socketsecurity`) and the env-var + account fallback list
|
|
6
|
+
* (`SOCKET_API_TOKEN` canonical, `SOCKET_API_KEY` legacy alias). Consumers
|
|
7
|
+
* like firewall and wheelhouse hooks call `readSocketApiToken()` instead of
|
|
8
|
+
* redoing the `resolve({ service, accounts })` boilerplate.
|
|
9
9
|
*/
|
|
10
10
|
export interface ReadSocketApiTokenOptions {
|
|
11
11
|
/**
|
|
@@ -8,26 +8,35 @@ const require_secrets_find = require('./find.js');
|
|
|
8
8
|
* @file Convenience helper for reading the Socket API token from the canonical
|
|
9
9
|
* env → keychain precedence order. Centralizes two constants every fleet
|
|
10
10
|
* consumer would otherwise hard-code: the keychain service name
|
|
11
|
-
* (`
|
|
12
|
-
* canonical, `SOCKET_API_KEY` legacy alias). Consumers
|
|
13
|
-
* wheelhouse hooks call `readSocketApiToken()` instead of
|
|
14
|
-
* `resolve({ service, accounts })` boilerplate.
|
|
11
|
+
* (`socketsecurity`) and the env-var + account fallback list
|
|
12
|
+
* (`SOCKET_API_TOKEN` canonical, `SOCKET_API_KEY` legacy alias). Consumers
|
|
13
|
+
* like firewall and wheelhouse hooks call `readSocketApiToken()` instead of
|
|
14
|
+
* redoing the `resolve({ service, accounts })` boilerplate.
|
|
15
15
|
*/
|
|
16
|
-
const
|
|
16
|
+
const SOCKET_SERVICE = "socketsecurity";
|
|
17
|
+
const SOCKET_SERVICE_LEGACY = "socket-cli";
|
|
17
18
|
const TOKEN_ACCOUNTS = ["SOCKET_API_TOKEN", "SOCKET_API_KEY"];
|
|
18
19
|
async function readSocketApiToken(options) {
|
|
19
20
|
return (await require_secrets_find.resolve({
|
|
20
|
-
service:
|
|
21
|
+
service: SOCKET_SERVICE,
|
|
22
|
+
accounts: TOKEN_ACCOUNTS,
|
|
23
|
+
allowEnvOnly: options?.allowEnvOnly
|
|
24
|
+
}) ?? await require_secrets_find.resolve({
|
|
25
|
+
service: SOCKET_SERVICE_LEGACY,
|
|
21
26
|
accounts: TOKEN_ACCOUNTS,
|
|
22
27
|
allowEnvOnly: options?.allowEnvOnly
|
|
23
28
|
}))?.value;
|
|
24
29
|
}
|
|
25
30
|
function readSocketApiTokenSync(options) {
|
|
26
|
-
return require_secrets_find.resolveSync({
|
|
27
|
-
service:
|
|
31
|
+
return (require_secrets_find.resolveSync({
|
|
32
|
+
service: SOCKET_SERVICE,
|
|
28
33
|
accounts: TOKEN_ACCOUNTS,
|
|
29
34
|
allowEnvOnly: options?.allowEnvOnly
|
|
30
|
-
})
|
|
35
|
+
}) ?? require_secrets_find.resolveSync({
|
|
36
|
+
service: SOCKET_SERVICE_LEGACY,
|
|
37
|
+
accounts: TOKEN_ACCOUNTS,
|
|
38
|
+
allowEnvOnly: options?.allowEnvOnly
|
|
39
|
+
}))?.value;
|
|
31
40
|
}
|
|
32
41
|
|
|
33
42
|
//#endregion
|
package/dist/secrets/windows.js
CHANGED
|
@@ -2,13 +2,17 @@
|
|
|
2
2
|
/* Socket Lib - Built with rolldown */
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
4
|
const require_runtime = require('../_virtual/_rolldown/runtime.js');
|
|
5
|
+
const require_primordials_error = require('../primordials/error.js');
|
|
6
|
+
const require_primordials_json = require('../primordials/json.js');
|
|
7
|
+
const require_primordials_promise = require('../primordials/promise.js');
|
|
5
8
|
let node_fs = require("node:fs");
|
|
6
9
|
let node_path = require("node:path");
|
|
7
10
|
node_path = require_runtime.__toESM(node_path);
|
|
8
11
|
let node_os = require("node:os");
|
|
12
|
+
node_os = require_runtime.__toESM(node_os);
|
|
9
13
|
let node_process = require("node:process");
|
|
10
14
|
node_process = require_runtime.__toESM(node_process);
|
|
11
|
-
let
|
|
15
|
+
let _socketsecurity_lib_stable_process_spawn_child = require("@socketsecurity/lib-stable/process/spawn/child");
|
|
12
16
|
|
|
13
17
|
//#region src/secrets/windows.ts
|
|
14
18
|
/**
|
|
@@ -63,11 +67,11 @@ function deleteWindowsSync(service, account) {
|
|
|
63
67
|
function getDpapiFilePath(service, account) {
|
|
64
68
|
validateKeychainComponent(service, "service");
|
|
65
69
|
validateKeychainComponent(account, "account");
|
|
66
|
-
const appData = node_process.default.env["APPDATA"] ?? node_path.default.join(
|
|
70
|
+
const appData = node_process.default.env["APPDATA"] ?? node_path.default.join(node_os.default.homedir(), "AppData", "Roaming");
|
|
67
71
|
return node_path.default.join(appData, service, `${account}.enc`);
|
|
68
72
|
}
|
|
69
73
|
function isWindowsBackendAvailable() {
|
|
70
|
-
return (0,
|
|
74
|
+
return (0, _socketsecurity_lib_stable_process_spawn_child.spawnSync)(POWERSHELL_BIN, [
|
|
71
75
|
"-NoProfile",
|
|
72
76
|
"-Command",
|
|
73
77
|
"exit 0"
|
|
@@ -125,8 +129,8 @@ function readWindowsSync(service, account) {
|
|
|
125
129
|
return readDpapiSync(getDpapiFilePath(service, account));
|
|
126
130
|
}
|
|
127
131
|
function runPsAsync(script, input) {
|
|
128
|
-
return new
|
|
129
|
-
const
|
|
132
|
+
return new require_primordials_promise.PromiseCtor((resolve) => {
|
|
133
|
+
const { process: cp } = (0, _socketsecurity_lib_stable_process_spawn_child.spawn)(POWERSHELL_BIN, [
|
|
130
134
|
"-NoProfile",
|
|
131
135
|
"-Command",
|
|
132
136
|
script
|
|
@@ -137,30 +141,30 @@ function runPsAsync(script, input) {
|
|
|
137
141
|
] });
|
|
138
142
|
let stdout = "";
|
|
139
143
|
let stderr = "";
|
|
140
|
-
|
|
141
|
-
|
|
144
|
+
cp.stdout.setEncoding("utf8");
|
|
145
|
+
cp.stdout.on("data", (chunk) => {
|
|
142
146
|
stdout += chunk;
|
|
143
147
|
});
|
|
144
|
-
|
|
145
|
-
|
|
148
|
+
cp.stderr.setEncoding("utf8");
|
|
149
|
+
cp.stderr.on("data", (chunk) => {
|
|
146
150
|
stderr += chunk;
|
|
147
151
|
});
|
|
148
|
-
|
|
152
|
+
cp.on("error", () => resolve({
|
|
149
153
|
status: -1,
|
|
150
154
|
stdout,
|
|
151
155
|
stderr
|
|
152
156
|
}));
|
|
153
|
-
|
|
157
|
+
cp.on("close", (status) => resolve({
|
|
154
158
|
status,
|
|
155
159
|
stdout,
|
|
156
160
|
stderr
|
|
157
161
|
}));
|
|
158
|
-
if (input !== void 0)
|
|
159
|
-
else
|
|
162
|
+
if (input !== void 0) cp.stdin.end(input);
|
|
163
|
+
else cp.stdin.end();
|
|
160
164
|
});
|
|
161
165
|
}
|
|
162
166
|
function runPsSync(script, input) {
|
|
163
|
-
const r = (0,
|
|
167
|
+
const r = (0, _socketsecurity_lib_stable_process_spawn_child.spawnSync)(POWERSHELL_BIN, [
|
|
164
168
|
"-NoProfile",
|
|
165
169
|
"-Command",
|
|
166
170
|
script
|
|
@@ -189,7 +193,7 @@ function runPsSync(script, input) {
|
|
|
189
193
|
* identifiers (e.g. `socket-cli`, `SOCKET_API_KEY`), not paths.
|
|
190
194
|
*/
|
|
191
195
|
function validateKeychainComponent(value, name) {
|
|
192
|
-
if (/[\\/]/.test(value) || value.includes("..") || value.includes("\0") || value === "" || value === ".") throw new
|
|
196
|
+
if (/[\\/]/.test(value) || value.includes("..") || value.includes("\0") || value === "" || value === ".") throw new require_primordials_error.ErrorCtor(`secrets/windows: ${name} contains path-traversal characters: ${require_primordials_json.JSONStringify(value)}. Use a plain identifier (no \\\\, /, .., or NUL).`);
|
|
193
197
|
}
|
|
194
198
|
async function writeDpapi(filePath, value) {
|
|
195
199
|
const dir = node_path.default.dirname(filePath);
|
|
@@ -201,7 +205,7 @@ async function writeDpapi(filePath, value) {
|
|
|
201
205
|
$protected = [System.Security.Cryptography.ProtectedData]::Protect($bytes, $null, 'CurrentUser')
|
|
202
206
|
[Convert]::ToBase64String($protected) | Set-Content -Path ${quotePs(filePath)} -NoNewline
|
|
203
207
|
`, value);
|
|
204
|
-
if (r.status !== 0) throw new
|
|
208
|
+
if (r.status !== 0) throw new require_primordials_error.ErrorCtor(`DPAPI file write failed: ${r.stderr.trim()}. Install the CredentialManager PowerShell module (\`Install-Module CredentialManager -Scope CurrentUser\`) for a cleaner storage path.`);
|
|
205
209
|
}
|
|
206
210
|
function writeDpapiSync(filePath, value) {
|
|
207
211
|
const dir = node_path.default.dirname(filePath);
|
|
@@ -213,7 +217,7 @@ function writeDpapiSync(filePath, value) {
|
|
|
213
217
|
$protected = [System.Security.Cryptography.ProtectedData]::Protect($bytes, $null, 'CurrentUser')
|
|
214
218
|
[Convert]::ToBase64String($protected) | Set-Content -Path ${quotePs(filePath)} -NoNewline
|
|
215
219
|
`, value);
|
|
216
|
-
if (r.status !== 0) throw new
|
|
220
|
+
if (r.status !== 0) throw new require_primordials_error.ErrorCtor(`DPAPI file write failed: ${r.stderr.trim()}. Install the CredentialManager PowerShell module (\`Install-Module CredentialManager -Scope CurrentUser\`) for a cleaner storage path.`);
|
|
217
221
|
}
|
|
218
222
|
async function writeWindows(service, account, value, _label) {
|
|
219
223
|
if ((await runPsAsync(`
|
package/dist/shadow/skip.js
CHANGED
|
@@ -38,9 +38,9 @@ function shouldSkipShadow(binPath, options) {
|
|
|
38
38
|
if (win32 && binPath) return true;
|
|
39
39
|
const userAgent = node_process.default.env["npm_config_user_agent"];
|
|
40
40
|
if (userAgent?.includes("exec") || userAgent?.includes("npx") || userAgent?.includes("dlx")) return true;
|
|
41
|
-
const normalizedCwd =
|
|
41
|
+
const normalizedCwd = require_paths_normalize.normalizePath(cwd);
|
|
42
42
|
const npmCache = node_process.default.env["npm_config_cache"];
|
|
43
|
-
if (npmCache && normalizedCwd.includes(
|
|
43
|
+
if (npmCache && normalizedCwd.includes(require_paths_normalize.normalizePath(npmCache))) return true;
|
|
44
44
|
return [
|
|
45
45
|
"_npx",
|
|
46
46
|
".pnpm-store",
|