@socketsecurity/lib 6.0.3 → 6.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/dist/_virtual/_rolldown/runtime.js +45 -0
- package/dist/abort/signal.js +53 -59
- package/dist/ai/discover.js +110 -110
- package/dist/ai/profiles.js +94 -65
- package/dist/ai/spawn.js +172 -194
- package/dist/ai/types.js +1 -17
- package/dist/ai/worktree.js +160 -183
- package/dist/ansi/constants.js +16 -38
- package/dist/ansi/strip.js +44 -41
- package/dist/archives/_internal.js +64 -73
- package/dist/archives/detect.js +30 -43
- package/dist/archives/extract.js +43 -50
- package/dist/archives/tar.js +197 -228
- package/dist/archives/types.js +1 -17
- package/dist/archives/zip.js +85 -121
- package/dist/argv/flag-predicates.js +203 -101
- package/dist/argv/flag-types.js +96 -113
- package/dist/argv/parse-args-string.d.ts +16 -14
- package/dist/argv/parse-args-string.js +42 -39
- package/dist/argv/parse.js +145 -163
- package/dist/arrays/_internal.js +65 -48
- package/dist/arrays/chunk.js +51 -40
- package/dist/arrays/join.js +87 -35
- package/dist/arrays/predicates.js +46 -28
- package/dist/arrays/unique.js +45 -31
- package/dist/bin/_internal.js +34 -42
- package/dist/bin/check-primordials.js +175 -233
- package/dist/bin/check.js +51 -72
- package/dist/bin/exec.js +70 -74
- package/dist/bin/find.js +151 -134
- package/dist/bin/resolve.js +180 -246
- package/dist/bin/shadow.js +24 -33
- package/dist/bin/socket-lib.js +51 -73
- package/dist/bin/types.js +1 -17
- package/dist/bin/which.js +211 -146
- package/dist/cacache/_internal.js +25 -40
- package/dist/cacache/clear.js +79 -72
- package/dist/cacache/read.js +48 -46
- package/dist/cacache/tmp.js +29 -36
- package/dist/cacache/types.js +1 -17
- package/dist/cacache/write.js +43 -48
- package/dist/cache/ttl/store.js +232 -288
- package/dist/cache/ttl/types.js +1 -17
- package/dist/checks/primordials-defaults.js +83 -89
- package/dist/checks/primordials.js +225 -277
- package/dist/colors/convert.js +45 -37
- package/dist/colors/palette.js +88 -45
- package/dist/colors/socket-palette.js +74 -84
- package/dist/colors/types.js +1 -17
- package/dist/compression/_internal.js +57 -72
- package/dist/compression/brotli.js +94 -127
- package/dist/compression/gzip.js +95 -121
- package/dist/compression/types.js +1 -17
- package/dist/constants/agents.js +61 -113
- package/dist/constants/encoding.js +19 -42
- package/dist/constants/github.js +12 -30
- package/dist/constants/licenses.js +48 -63
- package/dist/constants/lifecycle-script-names.js +31 -45
- package/dist/constants/maintained-node-versions.js +22 -37
- package/dist/constants/node.js +226 -167
- package/dist/constants/package-default-node-range.js +16 -41
- package/dist/constants/package-default-socket-categories.js +12 -30
- package/dist/constants/packages.js +77 -126
- package/dist/constants/platform.js +27 -49
- package/dist/constants/sentinels.js +23 -48
- package/dist/constants/socket.js +42 -87
- package/dist/constants/testing.js +15 -34
- package/dist/constants/time.js +16 -36
- package/dist/constants/typescript.js +32 -52
- package/dist/cover/code.js +111 -142
- package/dist/cover/formatters.js +118 -101
- package/dist/cover/type.js +50 -76
- package/dist/cover/types.js +1 -17
- package/dist/crypto/hash.js +54 -46
- package/dist/debug/_internal.js +62 -71
- package/dist/debug/caller-info.js +53 -64
- package/dist/debug/namespace.js +80 -90
- package/dist/debug/output.js +172 -188
- package/dist/debug/types.js +1 -17
- package/dist/dlx/_internal.js +24 -43
- package/dist/dlx/arborist.js +162 -160
- package/dist/dlx/binary-cache.js +228 -200
- package/dist/dlx/binary-download.js +172 -211
- package/dist/dlx/binary-resolution.js +165 -157
- package/dist/dlx/binary-types.js +1 -17
- package/dist/dlx/binary.js +149 -189
- package/dist/dlx/cache.js +45 -30
- package/dist/dlx/detect.js +245 -159
- package/dist/dlx/dir.js +67 -51
- package/dist/dlx/firewall.js +62 -100
- package/dist/dlx/lockfile.js +122 -127
- package/dist/dlx/manifest.js +264 -274
- package/dist/dlx/package.js +241 -244
- package/dist/dlx/packages.js +99 -96
- package/dist/dlx/paths.js +73 -59
- package/dist/dlx/spec.js +52 -60
- package/dist/dlx/types.js +1 -17
- package/dist/eco/cargo/lockfile-format.js +19 -36
- package/dist/eco/cargo/manifest-format.js +17 -35
- package/dist/eco/cargo/parse-lockfile.js +210 -237
- package/dist/eco/manifest/analyze-lockfile.js +46 -63
- package/dist/eco/manifest/detect-format.js +66 -90
- package/dist/eco/manifest/find-packages.js +39 -64
- package/dist/eco/manifest/get-package-versions.js +27 -48
- package/dist/eco/manifest/get-package.js +21 -40
- package/dist/eco/manifest/manifest-error.js +14 -35
- package/dist/eco/manifest/parse-lockfile.js +40 -86
- package/dist/eco/manifest/parse-manifest.js +26 -43
- package/dist/eco/manifest/parse.js +26 -47
- package/dist/eco/manifest/types.js +1 -17
- package/dist/eco/npm/bun/exec.js +23 -32
- package/dist/eco/npm/manifest-format.js +21 -35
- package/dist/eco/npm/npm/exec.js +51 -61
- package/dist/eco/npm/npm/extract-package-name-from-path.js +28 -50
- package/dist/eco/npm/npm/flags.js +80 -52
- package/dist/eco/npm/npm/lockfile-format.js +21 -40
- package/dist/eco/npm/npm/parse-git-url.js +26 -40
- package/dist/eco/npm/npm/parse-lockfile.js +184 -210
- package/dist/eco/npm/parse-package-json.js +71 -102
- package/dist/eco/npm/pnpm/detect-pnpm-version.js +22 -43
- package/dist/eco/npm/pnpm/exec.js +51 -62
- package/dist/eco/npm/pnpm/flags.js +75 -68
- package/dist/eco/npm/pnpm/lockfile-format.js +19 -36
- package/dist/eco/npm/pnpm/parse-lockfile.js +235 -259
- package/dist/eco/npm/pnpm/parse-pnpm-package-id-v5.js +37 -47
- package/dist/eco/npm/pnpm/parse-pnpm-package-id-v6-v9.js +36 -49
- package/dist/eco/npm/script.js +82 -90
- package/dist/eco/npm/vlt/exec.js +24 -32
- package/dist/eco/npm/yarnpkg/yarn/exec.js +60 -59
- package/dist/eco/npm/yarnpkg/yarn/lockfile-format.js +20 -36
- package/dist/eco/npm/yarnpkg/yarn/parse-lockfile.js +194 -242
- package/dist/eco/npm/yarnpkg/yarn/parse-yarn-descriptor.js +37 -61
- package/dist/eco/purl.js +50 -60
- package/dist/eco/types.js +1 -17
- package/dist/effects/pulse-frames.js +64 -65
- package/dist/effects/shimmer-keyframes.js +71 -52
- package/dist/effects/shimmer-terminal.js +81 -50
- package/dist/effects/shimmer.js +290 -153
- package/dist/env/boolean.js +42 -43
- package/dist/env/case-insensitive.js +54 -39
- package/dist/env/ci.js +29 -31
- package/dist/env/debug.js +28 -31
- package/dist/env/github.js +144 -59
- package/dist/env/home.js +38 -31
- package/dist/env/locale.js +59 -39
- package/dist/env/node-auth-token.js +28 -31
- package/dist/env/node-env.js +28 -31
- package/dist/env/npm.js +94 -47
- package/dist/env/number.js +50 -51
- package/dist/env/package-manager.js +95 -83
- package/dist/env/path.js +28 -31
- package/dist/env/pre-commit.js +30 -32
- package/dist/env/proxy.js +121 -122
- package/dist/env/rewire.js +204 -96
- package/dist/env/shell.js +28 -31
- package/dist/env/socket-cli.js +233 -81
- package/dist/env/socket.js +521 -156
- package/dist/env/string.js +43 -44
- package/dist/env/temp-dir.js +59 -39
- package/dist/env/term.js +28 -31
- package/dist/env/test.js +65 -43
- package/dist/env/types.js +1 -17
- package/dist/env/windows.js +78 -43
- package/dist/env/xdg.js +62 -39
- package/dist/errors/message.js +40 -46
- package/dist/errors/predicates.js +61 -49
- package/dist/errors/stack.js +24 -36
- package/dist/events/exit/_internal.js +86 -103
- package/dist/events/exit/handler.js +48 -55
- package/dist/events/exit/intercept.js +49 -70
- package/dist/events/exit/lifecycle.js +92 -101
- package/dist/events/exit/signals.js +25 -31
- package/dist/events/exit/types.js +1 -17
- package/dist/events/warning/handler.js +43 -40
- package/dist/events/warning/suppress.js +111 -90
- package/dist/external/@npmcli/package-json/lib/read-package.js +132 -153
- package/dist/external/@npmcli/package-json/lib/sort.js +73 -105
- package/dist/external/@npmcli/package-json.js +12705 -15140
- package/dist/external/@npmcli/promise-spawn.js +451 -472
- package/dist/external/@sinclair/typebox/value.js +7443 -9002
- package/dist/external/@sinclair/typebox.js +7516 -7885
- package/dist/external/@socketregistry/is-unicode-supported.js +31 -39
- package/dist/external/@socketregistry/packageurl-js.js +6127 -7369
- package/dist/external/@socketregistry/yocto-spinner.js +394 -455
- package/dist/external/@yarnpkg/extensions.js +435 -1022
- package/dist/external/adm-zip.js +2313 -2673
- package/dist/external/debug.js +700 -687
- package/dist/external/external-pack.js +2658 -3171
- package/dist/external/fast-sort.js +124 -138
- package/dist/external/get-east-asian-width.js +70 -64
- package/dist/external/libnpmexec.js +28 -31
- package/dist/external/npm-pack.js +43617 -50137
- package/dist/external/p-map.js +198 -222
- package/dist/external/pico-pack.js +6735 -7304
- package/dist/external/pony-cause.js +143 -139
- package/dist/external/shell-quote.js +226 -0
- package/dist/external/spdx-pack.js +1283 -1403
- package/dist/external/streaming-iterables.js +835 -1052
- package/dist/external/tar-fs.js +2769 -3048
- package/dist/external/which.js +267 -251
- package/dist/external/yargs-parser.js +851 -1074
- package/dist/external-tools/bazel/asset-names.js +98 -90
- package/dist/external-tools/bazel/from-download.js +52 -46
- package/dist/external-tools/bazel/from-path.js +27 -38
- package/dist/external-tools/bazel/read-bazel-version-file.js +35 -57
- package/dist/external-tools/bazel/resolve-asset-url.js +24 -39
- package/dist/external-tools/bazel/resolve-bazel-version.js +34 -56
- package/dist/external-tools/bazel/resolve.js +44 -58
- package/dist/external-tools/bazel/types.js +1 -17
- package/dist/external-tools/cdxgen/asset-names.js +59 -66
- package/dist/external-tools/cdxgen/from-download.js +52 -80
- package/dist/external-tools/cdxgen/from-path.js +19 -37
- package/dist/external-tools/cdxgen/from-vfs.js +22 -43
- package/dist/external-tools/cdxgen/resolve.js +48 -63
- package/dist/external-tools/cdxgen/types.js +1 -17
- package/dist/external-tools/from-download.js +107 -67
- package/dist/external-tools/janus/asset-names.js +44 -51
- package/dist/external-tools/janus/from-download.js +45 -70
- package/dist/external-tools/janus/from-path.js +19 -37
- package/dist/external-tools/janus/from-vfs.js +22 -43
- package/dist/external-tools/janus/resolve.js +45 -63
- package/dist/external-tools/janus/types.js +1 -17
- package/dist/external-tools/jre/asset-names.js +109 -82
- package/dist/external-tools/jre/detect-platform-arch.js +25 -49
- package/dist/external-tools/jre/from-download.js +71 -67
- package/dist/external-tools/jre/from-java-home.js +27 -54
- package/dist/external-tools/jre/from-path.js +27 -49
- package/dist/external-tools/jre/from-vfs.js +39 -60
- package/dist/external-tools/jre/resolve.js +55 -68
- package/dist/external-tools/jre/types.js +1 -17
- package/dist/external-tools/manifest.js +130 -150
- package/dist/external-tools/opengrep/asset-names.js +60 -72
- package/dist/external-tools/opengrep/from-download.js +58 -80
- package/dist/external-tools/opengrep/from-path.js +19 -37
- package/dist/external-tools/opengrep/from-vfs.js +23 -43
- package/dist/external-tools/opengrep/resolve.js +43 -63
- package/dist/external-tools/opengrep/types.js +1 -17
- package/dist/external-tools/sbt/asset-names.js +21 -30
- package/dist/external-tools/sbt/from-download.js +50 -61
- package/dist/external-tools/sbt/from-path.js +23 -38
- package/dist/external-tools/sbt/from-vfs.js +30 -44
- package/dist/external-tools/sbt/resolve.js +45 -63
- package/dist/external-tools/sbt/types.js +1 -17
- package/dist/external-tools/synp/asset-names.js +11 -29
- package/dist/external-tools/synp/from-download.js +24 -41
- package/dist/external-tools/synp/from-path.js +19 -37
- package/dist/external-tools/synp/from-vfs.js +22 -43
- package/dist/external-tools/synp/resolve.js +43 -62
- package/dist/external-tools/synp/types.js +1 -17
- package/dist/external-tools/trivy/asset-names.js +51 -62
- package/dist/external-tools/trivy/from-download.js +42 -64
- package/dist/external-tools/trivy/from-path.js +19 -37
- package/dist/external-tools/trivy/from-vfs.js +22 -43
- package/dist/external-tools/trivy/resolve.js +43 -63
- package/dist/external-tools/trivy/types.js +1 -17
- package/dist/external-tools/trufflehog/asset-names.js +54 -66
- package/dist/external-tools/trufflehog/from-download.js +44 -62
- package/dist/external-tools/trufflehog/from-path.js +21 -37
- package/dist/external-tools/trufflehog/from-vfs.js +26 -43
- package/dist/external-tools/trufflehog/resolve.js +43 -63
- package/dist/external-tools/trufflehog/types.js +1 -17
- package/dist/external-tools/uv/asset-names.js +64 -74
- package/dist/external-tools/uv/from-download.js +44 -65
- package/dist/external-tools/uv/from-path.js +19 -37
- package/dist/external-tools/uv/from-vfs.js +22 -43
- package/dist/external-tools/uv/resolve.js +42 -63
- package/dist/external-tools/uv/types.js +1 -17
- package/dist/fs/_internal.js +40 -42
- package/dist/fs/access.js +57 -54
- package/dist/fs/encoding.js +80 -97
- package/dist/fs/find-up.js +126 -125
- package/dist/fs/inspect.js +168 -99
- package/dist/fs/path-cache.js +31 -32
- package/dist/fs/read-dir.js +102 -79
- package/dist/fs/read-file.js +177 -118
- package/dist/fs/read-json-cache.js +150 -134
- package/dist/fs/read-json.js +172 -187
- package/dist/fs/resolve-module.js +35 -58
- package/dist/fs/safe.js +278 -169
- package/dist/fs/types.js +1 -17
- package/dist/fs/unique.js +52 -48
- package/dist/fs/validate.js +56 -40
- package/dist/fs/write-json.js +109 -75
- package/dist/git/_internal.js +251 -216
- package/dist/git/changed.js +191 -74
- package/dist/git/repo.js +118 -104
- package/dist/git/staged.js +172 -62
- package/dist/git/types.js +1 -17
- package/dist/git/unstaged.js +175 -62
- package/dist/github/constants.js +25 -33
- package/dist/github/errors.js +46 -38
- package/dist/github/fetch.js +137 -82
- package/dist/github/ghsa.js +217 -151
- package/dist/github/refs-cache.js +54 -43
- package/dist/github/refs-graphql.js +97 -89
- package/dist/github/refs-rest.js +70 -101
- package/dist/github/refs.js +105 -64
- package/dist/github/token.js +96 -48
- package/dist/github/types.js +1 -17
- package/dist/globs/_internal.js +73 -82
- package/dist/globs/defaults.js +40 -59
- package/dist/globs/match.js +93 -77
- package/dist/globs/matcher.js +104 -92
- package/dist/globs/stream.js +43 -55
- package/dist/globs/types.js +1 -17
- package/dist/http-request/_internal.js +11 -38
- package/dist/http-request/browser-fetch.js +19 -29
- package/dist/http-request/browser.js +188 -206
- package/dist/http-request/checksums.js +101 -65
- package/dist/http-request/download-types.js +1 -17
- package/dist/http-request/download.js +195 -196
- package/dist/http-request/errors.js +39 -47
- package/dist/http-request/headers.js +95 -80
- package/dist/http-request/http-request.js +10 -35
- package/dist/http-request/node.js +71 -97
- package/dist/http-request/request-attempt.js +232 -285
- package/dist/http-request/request-types.js +1 -17
- package/dist/http-request/request.js +106 -108
- package/dist/http-request/response-reader.js +47 -51
- package/dist/http-request/response-types.js +22 -38
- package/dist/http-request/user-agent.js +73 -55
- package/dist/integrity.js +105 -106
- package/dist/ipc/_internal.js +34 -48
- package/dist/ipc/directory.js +55 -63
- package/dist/ipc/paths.js +52 -45
- package/dist/ipc/types.js +1 -17
- package/dist/ipc/write.js +81 -74
- package/dist/ipc-cli/get.js +29 -56
- package/dist/ipc-cli/types.js +1 -17
- package/dist/json/edit.js +182 -242
- package/dist/json/format.js +202 -103
- package/dist/json/parse.js +206 -109
- package/dist/json/types.js +1 -17
- package/dist/links/create.js +93 -60
- package/dist/links/types.js +1 -17
- package/dist/logger/_internal.js +109 -73
- package/dist/logger/browser.js +45 -56
- package/dist/logger/colors.js +31 -49
- package/dist/logger/console.js +89 -112
- package/dist/logger/default.js +19 -33
- package/dist/logger/logger.js +5 -29
- package/dist/logger/node.js +793 -854
- package/dist/logger/symbols-builder.js +54 -56
- package/dist/logger/symbols.js +135 -118
- package/dist/logger/types.js +1 -17
- package/dist/memo/_internal.js +39 -49
- package/dist/memo/async.js +133 -117
- package/dist/memo/clear.js +25 -34
- package/dist/memo/decorator.js +43 -37
- package/dist/memo/memoize.js +97 -88
- package/dist/memo/once.js +42 -41
- package/dist/memo/types.js +1 -17
- package/dist/memo/weak.js +45 -41
- package/dist/node/async-hooks.js +9 -30
- package/dist/node/child-process.js +9 -30
- package/dist/node/crypto.js +9 -30
- package/dist/node/events.js +9 -30
- package/dist/node/fs-promises.js +9 -30
- package/dist/node/fs.js +9 -30
- package/dist/node/http.js +9 -30
- package/dist/node/https.js +9 -30
- package/dist/node/module.js +20 -34
- package/dist/node/os.js +9 -30
- package/dist/node/path.js +9 -30
- package/dist/node/timers-promises.js +9 -30
- package/dist/node/url.js +9 -30
- package/dist/node/util.js +9 -30
- package/dist/objects/getters.js +185 -126
- package/dist/objects/inspect.js +85 -52
- package/dist/objects/mutate.js +96 -76
- package/dist/objects/predicates.js +112 -59
- package/dist/objects/sort.js +120 -76
- package/dist/objects/types.js +1 -17
- package/dist/packages/edit-class.js +198 -265
- package/dist/packages/edit.js +79 -86
- package/dist/packages/exports.js +146 -157
- package/dist/packages/isolation.js +159 -209
- package/dist/packages/licenses.js +207 -189
- package/dist/packages/manifest.js +134 -172
- package/dist/packages/normalize.js +91 -102
- package/dist/packages/operations.d.ts +2 -0
- package/dist/packages/operations.js +283 -254
- package/dist/packages/provenance.js +195 -245
- package/dist/packages/specs.js +94 -84
- package/dist/packages/types.js +1 -17
- package/dist/packages/validation.js +49 -50
- package/dist/paths/_internal.js +82 -86
- package/dist/paths/conversion.js +112 -65
- package/dist/paths/dirnames.js +17 -42
- package/dist/paths/exts.js +23 -54
- package/dist/paths/filenames.js +21 -50
- package/dist/paths/globs.js +15 -38
- package/dist/paths/normalize.js +215 -236
- package/dist/paths/packages.js +34 -49
- package/dist/paths/predicates.js +184 -106
- package/dist/paths/resolve.js +146 -128
- package/dist/paths/rewire.js +108 -72
- package/dist/paths/socket.js +252 -132
- package/dist/paths/walk.js +55 -60
- package/dist/perf/_internal.js +10 -28
- package/dist/perf/enabled.js +21 -30
- package/dist/perf/metrics.js +81 -67
- package/dist/perf/report.js +79 -80
- package/dist/perf/timer.js +180 -126
- package/dist/perf/types.js +1 -17
- package/dist/pkg-ext/data.js +29 -82
- package/dist/pkg-ext/types.js +1 -17
- package/dist/primordials/array.js +120 -198
- package/dist/primordials/buffer.js +28 -51
- package/dist/primordials/date.js +26 -51
- package/dist/primordials/error.js +33 -59
- package/dist/primordials/function.js +21 -41
- package/dist/primordials/globals.js +25 -48
- package/dist/primordials/json.js +14 -30
- package/dist/primordials/map-set.js +88 -152
- package/dist/primordials/math.js +59 -116
- package/dist/primordials/number.js +41 -76
- package/dist/primordials/object.js +56 -116
- package/dist/primordials/promise.js +28 -52
- package/dist/primordials/reflect.js +24 -52
- package/dist/primordials/regexp.js +25 -47
- package/dist/primordials/string.js +114 -167
- package/dist/primordials/symbol.js +40 -72
- package/dist/primordials/uncurry.js +38 -55
- package/dist/primordials/url.js +27 -66
- package/dist/process/_internal.js +7 -32
- package/dist/process/abort.js +29 -35
- package/dist/process/lock-instance.js +26 -30
- package/dist/process/lock-manager.js +279 -307
- package/dist/process/lock-types.js +1 -17
- package/dist/process/spawn/_internal.js +43 -55
- package/dist/process/spawn/child.js +172 -211
- package/dist/process/spawn/errors.js +116 -113
- package/dist/process/spawn/stdio.js +51 -35
- package/dist/process/spawn/types.js +1 -17
- package/dist/process/transient.js +49 -66
- package/dist/promises/_internal.js +31 -34
- package/dist/promises/iterate.js +238 -102
- package/dist/promises/options.js +123 -101
- package/dist/promises/queue.js +115 -136
- package/dist/promises/resolvers.js +77 -46
- package/dist/promises/retry.js +156 -101
- package/dist/promises/types.js +1 -17
- package/dist/regexps/escape.js +32 -30
- package/dist/regexps/hex.js +16 -33
- package/dist/regexps/spec.js +53 -81
- package/dist/releases/github-archives.js +127 -118
- package/dist/releases/github-asset-url.js +162 -146
- package/dist/releases/github-assets.js +37 -49
- package/dist/releases/github-auth.js +32 -48
- package/dist/releases/github-downloads.js +118 -138
- package/dist/releases/github-listing.js +175 -145
- package/dist/releases/github-retry-config.js +41 -47
- package/dist/releases/github-types.js +1 -17
- package/dist/releases/socket-btm.js +273 -192
- package/dist/schema/parse.js +35 -36
- package/dist/schema/types.js +1 -17
- package/dist/schema/validate.js +118 -99
- package/dist/sea/detect.js +57 -52
- package/dist/secrets/_internal.js +86 -67
- package/dist/secrets/find.js +96 -77
- package/dist/secrets/keychain.js +315 -309
- package/dist/secrets/linux.js +133 -135
- package/dist/secrets/macos.js +151 -147
- package/dist/secrets/rc.js +182 -181
- package/dist/secrets/socket-api-token.js +28 -43
- package/dist/secrets/types.js +1 -17
- package/dist/secrets/windows.js +184 -242
- package/dist/shadow/skip.js +51 -70
- package/dist/shadow/types.js +1 -17
- package/dist/shell/parse.d.ts +26 -0
- package/dist/shell/parse.js +35 -0
- package/dist/shell/quote.d.ts +19 -0
- package/dist/shell/quote.js +30 -0
- package/dist/smol/detect.js +67 -43
- package/dist/smol/http.js +33 -37
- package/dist/smol/https.js +31 -37
- package/dist/smol/manifest.js +33 -37
- package/dist/smol/path.js +33 -37
- package/dist/smol/primordial.js +35 -37
- package/dist/smol/purl.js +34 -37
- package/dist/smol/versions.js +31 -37
- package/dist/smol/vfs.js +46 -38
- package/dist/sorts/_internal.js +14 -40
- package/dist/sorts/natural.js +57 -64
- package/dist/sorts/semver.js +33 -43
- package/dist/sorts/strings.js +24 -30
- package/dist/sorts/types.js +1 -17
- package/dist/spinner/default.js +72 -63
- package/dist/spinner/format.js +86 -71
- package/dist/spinner/spinner.js +749 -797
- package/dist/spinner/types.js +1 -17
- package/dist/spinner/with.js +193 -137
- package/dist/ssri/convert.js +64 -47
- package/dist/ssri/parse.js +38 -37
- package/dist/ssri/validate.js +51 -34
- package/dist/stdio/_internal.js +50 -46
- package/dist/stdio/clear.js +208 -86
- package/dist/stdio/divider.js +170 -97
- package/dist/stdio/footer.js +116 -110
- package/dist/stdio/header.js +117 -90
- package/dist/stdio/progress.js +189 -218
- package/dist/stdio/prompts.js +244 -168
- package/dist/stdio/stderr.js +173 -78
- package/dist/stdio/stdout.js +177 -94
- package/dist/streams/parallel.js +58 -50
- package/dist/streams/transform.js +36 -45
- package/dist/strings/format.js +145 -63
- package/dist/strings/predicates.js +56 -34
- package/dist/strings/search.js +52 -42
- package/dist/strings/transform.js +113 -72
- package/dist/strings/types.js +1 -17
- package/dist/strings/width.js +89 -82
- package/dist/tables/bordered.js +81 -81
- package/dist/tables/padding.js +36 -46
- package/dist/tables/simple.js +62 -70
- package/dist/tables/types.js +1 -17
- package/dist/temporal/instant.js +72 -81
- package/dist/temporal/now.js +40 -31
- package/dist/temporal/slots.js +42 -36
- package/dist/temporal/system.js +36 -36
- package/dist/temporal/temporal.js +11 -41
- package/dist/themes/context.js +131 -69
- package/dist/themes/resolve.js +207 -132
- package/dist/themes/themes.js +225 -194
- package/dist/themes/types.js +1 -17
- package/dist/url/parse.js +48 -51
- package/dist/url/predicates.js +24 -31
- package/dist/url/search-params.js +133 -101
- package/dist/url/types.js +1 -17
- package/dist/versions/_internal.js +31 -33
- package/dist/versions/compare.js +80 -58
- package/dist/versions/modify.js +41 -39
- package/dist/versions/parse.js +88 -64
- package/dist/versions/range.js +58 -41
- package/dist/versions/types.js +1 -17
- package/dist/words/article.js +22 -30
- package/dist/words/capitalize.js +25 -34
- package/dist/words/pluralize.js +23 -31
- package/dist/words/types.js +1 -17
- package/package.json +17 -5
|
@@ -1,79 +1,120 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/* Socket Lib - Built with
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
2
|
+
/* Socket Lib - Built with rolldown */
|
|
3
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
|
+
const require_primordials_string = require('../primordials/string.js');
|
|
5
|
+
|
|
6
|
+
//#region src/strings/transform.ts
|
|
7
|
+
/**
|
|
8
|
+
* @file String transformations: `stripBom`, `toKebabCase`, `trimNewlines`. All
|
|
9
|
+
* three are pure functions with no side effects.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Strip the Byte Order Mark (BOM) from the beginning of a string.
|
|
13
|
+
*
|
|
14
|
+
* The BOM (U+FEFF) is a Unicode character that can appear at the start of a
|
|
15
|
+
* text file to indicate byte order and encoding. In UTF-16 (JavaScript's
|
|
16
|
+
* internal string representation), it appears as 0xFEFF. This function removes
|
|
17
|
+
* it if present, leaving the rest of the string unchanged.
|
|
18
|
+
*
|
|
19
|
+
* Most text processing doesn't need to handle the BOM explicitly, but it can
|
|
20
|
+
* cause issues when parsing JSON, CSV, or other structured data formats that
|
|
21
|
+
* don't expect a leading invisible character.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ;```ts
|
|
25
|
+
* stripBom('hello world') // 'hello world'
|
|
26
|
+
* stripBom('hello world') // 'hello world'
|
|
27
|
+
* stripBom('') // ''
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @param str - The string to strip BOM from.
|
|
31
|
+
*
|
|
32
|
+
* @returns The string without BOM
|
|
33
|
+
*/
|
|
34
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
30
35
|
function stripBom(str) {
|
|
31
|
-
|
|
36
|
+
return str.length > 0 && require_primordials_string.StringPrototypeCharCodeAt(str, 0) === 65279 ? require_primordials_string.StringPrototypeSlice(str, 1) : str;
|
|
32
37
|
}
|
|
33
|
-
|
|
38
|
+
/**
|
|
39
|
+
* Convert a string to kebab-case (handles camelCase and snake_case).
|
|
40
|
+
*
|
|
41
|
+
* Transforms strings from camelCase or snake_case to kebab-case by:
|
|
42
|
+
*
|
|
43
|
+
* - Converting uppercase letters to lowercase
|
|
44
|
+
* - Inserting hyphens before uppercase letters (for camelCase)
|
|
45
|
+
* - Replacing underscores with hyphens (for snake_case)
|
|
46
|
+
*
|
|
47
|
+
* Handles mixed formats (camelCase, snake_case, acronyms) in one pass. Returns
|
|
48
|
+
* empty string for empty input.
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ;```ts
|
|
52
|
+
* toKebabCase('helloWorld') // 'hello-world'
|
|
53
|
+
* toKebabCase('hello_world') // 'hello-world'
|
|
54
|
+
* toKebabCase('XMLHttpRequest') // 'xmlhttp-request'
|
|
55
|
+
* toKebabCase('iOS_Version') // 'i-os-version'
|
|
56
|
+
* toKebabCase('') // ''
|
|
57
|
+
* ```
|
|
58
|
+
*
|
|
59
|
+
* @param str - The string to convert.
|
|
60
|
+
*
|
|
61
|
+
* @returns The kebab-case string
|
|
62
|
+
*/
|
|
63
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
34
64
|
function toKebabCase(str) {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
return (0, import_string.StringPrototypeReplace)(str, /([a-z]+[0-9]*)([A-Z])/g, "$1-$2").replace(/_/g, "-").toLowerCase();
|
|
65
|
+
if (!str.length) return str;
|
|
66
|
+
return require_primordials_string.StringPrototypeReplace(str, /([a-z]+[0-9]*)([A-Z])/g, "$1-$2").replace(/_/g, "-").toLowerCase();
|
|
39
67
|
}
|
|
40
|
-
|
|
68
|
+
/**
|
|
69
|
+
* Trim newlines from the beginning and end of a string.
|
|
70
|
+
*
|
|
71
|
+
* Removes all leading and trailing newline characters (both `\n` and `\r`) from
|
|
72
|
+
* a string, while preserving any newlines in the middle. This is similar to
|
|
73
|
+
* `String.prototype.trim()` but specifically targets newlines instead of all
|
|
74
|
+
* whitespace.
|
|
75
|
+
*
|
|
76
|
+
* Optimized for performance by checking the first and last characters before
|
|
77
|
+
* doing any string manipulation. Returns the original string unchanged if no
|
|
78
|
+
* newlines are found at the edges.
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ;```ts
|
|
82
|
+
* trimNewlines('\n\nhello\n\n') // 'hello'
|
|
83
|
+
* trimNewlines('\r\nworld\r\n') // 'world'
|
|
84
|
+
* trimNewlines('hello\nworld') // 'hello\nworld' (middle preserved)
|
|
85
|
+
* trimNewlines(' hello ') // ' hello ' (spaces not trimmed)
|
|
86
|
+
* trimNewlines('hello') // 'hello'
|
|
87
|
+
* ```
|
|
88
|
+
*
|
|
89
|
+
* @param str - The string to trim.
|
|
90
|
+
*
|
|
91
|
+
* @returns The string with leading and trailing newlines removed
|
|
92
|
+
*/
|
|
93
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
41
94
|
function trimNewlines(str) {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
}
|
|
63
|
-
start += 1;
|
|
64
|
-
}
|
|
65
|
-
while (end > start) {
|
|
66
|
-
const code = (0, import_string.StringPrototypeCharCodeAt)(str, end - 1);
|
|
67
|
-
if (code !== 13 && code !== 10) {
|
|
68
|
-
break;
|
|
69
|
-
}
|
|
70
|
-
end -= 1;
|
|
71
|
-
}
|
|
72
|
-
return start === 0 && end === length ? str : (0, import_string.StringPrototypeSlice)(str, start, end);
|
|
95
|
+
const { length } = str;
|
|
96
|
+
if (length === 0) return str;
|
|
97
|
+
const first = require_primordials_string.StringPrototypeCharCodeAt(str, 0);
|
|
98
|
+
const noFirstNewline = first !== 13 && first !== 10;
|
|
99
|
+
if (length === 1) return noFirstNewline ? str : "";
|
|
100
|
+
const last = require_primordials_string.StringPrototypeCharCodeAt(str, length - 1);
|
|
101
|
+
if (noFirstNewline && last !== 13 && last !== 10) return str;
|
|
102
|
+
let start = 0;
|
|
103
|
+
let end = length;
|
|
104
|
+
while (start < end) {
|
|
105
|
+
const code = require_primordials_string.StringPrototypeCharCodeAt(str, start);
|
|
106
|
+
if (code !== 13 && code !== 10) break;
|
|
107
|
+
start += 1;
|
|
108
|
+
}
|
|
109
|
+
while (end > start) {
|
|
110
|
+
const code = require_primordials_string.StringPrototypeCharCodeAt(str, end - 1);
|
|
111
|
+
if (code !== 13 && code !== 10) break;
|
|
112
|
+
end -= 1;
|
|
113
|
+
}
|
|
114
|
+
return start === 0 && end === length ? str : require_primordials_string.StringPrototypeSlice(str, start, end);
|
|
73
115
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
});
|
|
116
|
+
|
|
117
|
+
//#endregion
|
|
118
|
+
exports.stripBom = stripBom;
|
|
119
|
+
exports.toKebabCase = toKebabCase;
|
|
120
|
+
exports.trimNewlines = trimNewlines;
|
package/dist/strings/types.js
CHANGED
|
@@ -1,18 +1,2 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/* Socket Lib - Built with
|
|
3
|
-
"use strict";
|
|
4
|
-
var __defProp = Object.defineProperty;
|
|
5
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __copyProps = (to, from, except, desc) => {
|
|
9
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
10
|
-
for (let key of __getOwnPropNames(from))
|
|
11
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
12
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
13
|
-
}
|
|
14
|
-
return to;
|
|
15
|
-
};
|
|
16
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
17
|
-
var types_exports = {};
|
|
18
|
-
module.exports = __toCommonJS(types_exports);
|
|
2
|
+
/* Socket Lib - Built with rolldown */
|
package/dist/strings/width.js
CHANGED
|
@@ -1,95 +1,102 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/* Socket Lib - Built with
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
getEastAsianWidth: () => getEastAsianWidth,
|
|
24
|
-
stringWidth: () => stringWidth
|
|
25
|
-
});
|
|
26
|
-
module.exports = __toCommonJS(width_exports);
|
|
27
|
-
var import_strip = require("../ansi/strip");
|
|
28
|
-
var import_regexp = require("../primordials/regexp");
|
|
29
|
-
var import_string = require("../primordials/string");
|
|
2
|
+
/* Socket Lib - Built with rolldown */
|
|
3
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
|
+
const require_primordials_string = require('../primordials/string.js');
|
|
5
|
+
const require_primordials_regexp = require('../primordials/regexp.js');
|
|
6
|
+
const require_ansi_strip = require('../ansi/strip.js');
|
|
7
|
+
|
|
8
|
+
//#region src/strings/width.ts
|
|
9
|
+
/**
|
|
10
|
+
* @file `stringWidth` — calculate visual terminal width. Based on string-width
|
|
11
|
+
* by Sindre Sorhus
|
|
12
|
+
* (https://socket.dev/npm/package/string-width/overview/7.2.0, MIT). Why this
|
|
13
|
+
* lives in its own leaf:
|
|
14
|
+
*
|
|
15
|
+
* - It carries a heavy module-level setup: `Intl.Segmenter` instance,
|
|
16
|
+
* feature-detected regex patterns (with `'v'` flag fallback to `'u'`), and
|
|
17
|
+
* a lazy `eastAsianWidth` accessor.
|
|
18
|
+
* - The function body is ~150 lines of carefully-commented Unicode handling —
|
|
19
|
+
* keeping it isolated makes it easy to review changes without touching the
|
|
20
|
+
* rest of the strings surface. See the comments inside for the algorithm
|
|
21
|
+
* details and Unicode Standard Annex #11 references.
|
|
22
|
+
*/
|
|
30
23
|
let _eastAsianWidth;
|
|
31
|
-
|
|
24
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
32
25
|
function getEastAsianWidth() {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
return _eastAsianWidth;
|
|
26
|
+
if (_eastAsianWidth === void 0) _eastAsianWidth = (/* @__PURE__ */ require("../external/get-east-asian-width")).eastAsianWidth;
|
|
27
|
+
return _eastAsianWidth;
|
|
37
28
|
}
|
|
38
29
|
const segmenter = new Intl.Segmenter();
|
|
39
30
|
let zeroWidthClusterRegex;
|
|
40
31
|
let leadingNonPrintingRegex;
|
|
41
32
|
let emojiRegex;
|
|
42
33
|
try {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
34
|
+
zeroWidthClusterRegex = /^(?:\p{Default_Ignorable_Code_Point}|\p{Control}|\p{Mark}|\p{Surrogate})+$/v;
|
|
35
|
+
leadingNonPrintingRegex = /^[\p{Default_Ignorable_Code_Point}\p{Control}\p{Format}\p{Mark}\p{Surrogate}]+/v;
|
|
36
|
+
emojiRegex = /^\p{RGI_Emoji}$/v;
|
|
46
37
|
} catch {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
38
|
+
zeroWidthClusterRegex = /^(?:\p{Default_Ignorable_Code_Point}|\p{Control}|\p{Mark})+$/u;
|
|
39
|
+
leadingNonPrintingRegex = /^[\p{Default_Ignorable_Code_Point}\p{Control}\p{Format}\p{Mark}]+/u;
|
|
40
|
+
emojiRegex = /^\p{Extended_Pictographic}$/u;
|
|
50
41
|
}
|
|
51
|
-
|
|
42
|
+
/* c8 ignore stop */
|
|
43
|
+
/**
|
|
44
|
+
* Get the visual width of a string in terminal columns.
|
|
45
|
+
*
|
|
46
|
+
* Calculates how many columns a string will occupy when displayed in a
|
|
47
|
+
* terminal, accounting for: - ANSI escape codes (stripped before calculation) -
|
|
48
|
+
* Wide characters (CJK ideographs, fullwidth forms) that take 2 columns - Emoji
|
|
49
|
+
* (including complex sequences) that take 2 columns - Combining marks and
|
|
50
|
+
* zero-width characters (take 0 columns) - East Asian Width properties
|
|
51
|
+
* (Fullwidth, Wide, Halfwidth, Narrow, etc.)
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* ;```ts
|
|
55
|
+
* stringWidth('hello') // 5
|
|
56
|
+
* stringWidth('⚡') // 2 (lightning bolt is wide)
|
|
57
|
+
* stringWidth('✦') // 1 (star is narrow)
|
|
58
|
+
* stringWidth('漢字') // 4 (CJK × 2 cols each)
|
|
59
|
+
* stringWidth('\x1b[31mred\x1b[0m') // 3 (ANSI stripped)
|
|
60
|
+
* stringWidth('👍🏽') // 2 (emoji + skin tone = 1 cluster)
|
|
61
|
+
* stringWidth('é') // 1 (combining accent = 0 width)
|
|
62
|
+
* ```
|
|
63
|
+
*
|
|
64
|
+
* @param text - The string to measure.
|
|
65
|
+
*
|
|
66
|
+
* @returns The visual width in terminal columns
|
|
67
|
+
*/
|
|
68
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
52
69
|
function stringWidth(text) {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
const trailingCodePoint = (0, import_string.StringPrototypeCodePointAt)(char, 0);
|
|
82
|
-
if (trailingCodePoint !== void 0) {
|
|
83
|
-
width += eastAsianWidth(trailingCodePoint, eastAsianWidthOptions);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
return width;
|
|
70
|
+
if (typeof text !== "string" || !text.length) return 0;
|
|
71
|
+
/* c8 ignore next */
|
|
72
|
+
const plainText = /* @__PURE__ */ require_ansi_strip.stripAnsi(text);
|
|
73
|
+
if (!plainText.length) return 0;
|
|
74
|
+
let width = 0;
|
|
75
|
+
const eastAsianWidthOptions = { ambiguousAsWide: false };
|
|
76
|
+
const eastAsianWidth = /* @__PURE__ */ getEastAsianWidth();
|
|
77
|
+
for (const { segment } of segmenter.segment(plainText)) {
|
|
78
|
+
if (require_primordials_regexp.RegExpPrototypeTest(zeroWidthClusterRegex, segment)) continue;
|
|
79
|
+
if (require_primordials_regexp.RegExpPrototypeTest(emojiRegex, segment)) {
|
|
80
|
+
width += 2;
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
const codePoint = require_primordials_string.StringPrototypeCodePointAt(segment.replace(leadingNonPrintingRegex, ""), 0);
|
|
84
|
+
if (codePoint === void 0) continue;
|
|
85
|
+
/* c8 ignore next - External eastAsianWidth call */
|
|
86
|
+
width += eastAsianWidth(codePoint, eastAsianWidthOptions);
|
|
87
|
+
if (segment.length > 1) for (const char of segment.slice(1)) {
|
|
88
|
+
const charCode = require_primordials_string.StringPrototypeCharCodeAt(char, 0);
|
|
89
|
+
if (charCode >= 65280 && charCode <= 65519) {
|
|
90
|
+
const trailingCodePoint = require_primordials_string.StringPrototypeCodePointAt(char, 0);
|
|
91
|
+
if (trailingCodePoint !== void 0)
|
|
92
|
+
/* c8 ignore next - External eastAsianWidth call */
|
|
93
|
+
width += eastAsianWidth(trailingCodePoint, eastAsianWidthOptions);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return width;
|
|
90
98
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
});
|
|
99
|
+
|
|
100
|
+
//#endregion
|
|
101
|
+
exports.getEastAsianWidth = getEastAsianWidth;
|
|
102
|
+
exports.stringWidth = stringWidth;
|
package/dist/tables/bordered.js
CHANGED
|
@@ -1,84 +1,84 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/* Socket Lib - Built with
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
2
|
+
/* Socket Lib - Built with rolldown */
|
|
3
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
|
+
const require_runtime = require('../_virtual/_rolldown/runtime.js');
|
|
5
|
+
const require_primordials_math = require('../primordials/math.js');
|
|
6
|
+
const require_primordials_array = require('../primordials/array.js');
|
|
7
|
+
const require_tables_padding = require('./padding.js');
|
|
8
|
+
let src_external_yoctocolors_cjs = require("../external/yoctocolors-cjs");
|
|
9
|
+
src_external_yoctocolors_cjs = require_runtime.__toESM(src_external_yoctocolors_cjs);
|
|
10
|
+
|
|
11
|
+
//#region src/tables/bordered.ts
|
|
12
|
+
/**
|
|
13
|
+
* @file Bordered table renderer using Unicode box-drawing characters (`┌`, `─`,
|
|
14
|
+
* `│`, `┴`, …). The right choice when the output context renders box-drawing
|
|
15
|
+
* reliably (modern terminals, GitHub markdown, most CI runners). Shares
|
|
16
|
+
* column-width calculation, alignment, and padding with the simple renderer
|
|
17
|
+
* via `./padding`.
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* Format data as an ASCII table with borders.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* import { formatTable } from '@socketsecurity/lib/tables/bordered'
|
|
24
|
+
* import colors from 'yoctocolors-cjs'
|
|
25
|
+
*
|
|
26
|
+
* const data = [
|
|
27
|
+
* { name: 'lodash', version: '4.17.21', issues: 0 },
|
|
28
|
+
* { name: 'react', version: '18.2.0', issues: 2 },
|
|
29
|
+
* ]
|
|
30
|
+
* const columns = [
|
|
31
|
+
* { key: 'name', header: 'Package' },
|
|
32
|
+
* { key: 'version', header: 'Version', align: 'center' },
|
|
33
|
+
* {
|
|
34
|
+
* key: 'issues',
|
|
35
|
+
* header: 'Issues',
|
|
36
|
+
* align: 'right',
|
|
37
|
+
* color: v => (v === '0' ? colors.green(v) : colors.red(v)),
|
|
38
|
+
* },
|
|
39
|
+
* ]
|
|
40
|
+
* console.log(formatTable(data, columns))
|
|
41
|
+
* // Output:
|
|
42
|
+
* // ┌─────────┬─────────┬────────┐
|
|
43
|
+
* // │ Package │ Version │ Issues │
|
|
44
|
+
* // ├─────────┼─────────┼────────┤
|
|
45
|
+
* // │ lodash │ 4.17.21 │ 0 │
|
|
46
|
+
* // │ react │ 18.2.0 │ 2 │
|
|
47
|
+
* // └─────────┴─────────┴────────┘
|
|
48
|
+
*
|
|
49
|
+
* @param data - Array of data objects.
|
|
50
|
+
* @param columns - Column configuration.
|
|
51
|
+
*
|
|
52
|
+
* @returns Formatted table string
|
|
53
|
+
*/
|
|
40
54
|
function formatTable(data, columns) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
if (col.color) {
|
|
68
|
-
value = col.color(value);
|
|
69
|
-
}
|
|
70
|
-
return (0, import_padding.padText)(value, widths[i], col.align);
|
|
71
|
-
});
|
|
72
|
-
(0, import_array.ArrayPrototypePush)(
|
|
73
|
-
lines,
|
|
74
|
-
import_yoctocolors_cjs.default.dim("\u2502 ") + cells.join(import_yoctocolors_cjs.default.dim(" \u2502 ")) + import_yoctocolors_cjs.default.dim(" \u2502")
|
|
75
|
-
);
|
|
76
|
-
}
|
|
77
|
-
const bottomBorder = `\u2514\u2500${widths.map((w) => "\u2500".repeat(w)).join("\u2500\u2534\u2500")}\u2500\u2518`;
|
|
78
|
-
(0, import_array.ArrayPrototypePush)(lines, import_yoctocolors_cjs.default.dim(bottomBorder));
|
|
79
|
-
return lines.join("\n");
|
|
55
|
+
if (data.length === 0) return "(no data)";
|
|
56
|
+
const widths = columns.map((col) => {
|
|
57
|
+
const headerWidth = require_tables_padding.displayWidth(col.header);
|
|
58
|
+
const maxDataWidth = require_primordials_math.MathMax(...data.map((row) => require_tables_padding.displayWidth(String(row[col.key] ?? ""))));
|
|
59
|
+
return col.width ?? require_primordials_math.MathMax(headerWidth, maxDataWidth);
|
|
60
|
+
});
|
|
61
|
+
const lines = [];
|
|
62
|
+
const topBorder = `┌─${widths.map((w) => "─".repeat(w)).join("─┬─")}─┐`;
|
|
63
|
+
require_primordials_array.ArrayPrototypePush(lines, src_external_yoctocolors_cjs.default.dim(topBorder));
|
|
64
|
+
const headerCells = columns.map((col, i) => {
|
|
65
|
+
return require_tables_padding.padText(src_external_yoctocolors_cjs.default.bold(col.header), widths[i], col.align);
|
|
66
|
+
});
|
|
67
|
+
require_primordials_array.ArrayPrototypePush(lines, src_external_yoctocolors_cjs.default.dim("│ ") + headerCells.join(src_external_yoctocolors_cjs.default.dim(" │ ")) + src_external_yoctocolors_cjs.default.dim(" │"));
|
|
68
|
+
const headerSep = `├─${widths.map((w) => "─".repeat(w)).join("─┼─")}─┤`;
|
|
69
|
+
require_primordials_array.ArrayPrototypePush(lines, src_external_yoctocolors_cjs.default.dim(headerSep));
|
|
70
|
+
for (const row of data) {
|
|
71
|
+
const cells = columns.map((col, i) => {
|
|
72
|
+
let value = String(row[col.key] ?? "");
|
|
73
|
+
if (col.color) value = col.color(value);
|
|
74
|
+
return require_tables_padding.padText(value, widths[i], col.align);
|
|
75
|
+
});
|
|
76
|
+
require_primordials_array.ArrayPrototypePush(lines, src_external_yoctocolors_cjs.default.dim("│ ") + cells.join(src_external_yoctocolors_cjs.default.dim(" │ ")) + src_external_yoctocolors_cjs.default.dim(" │"));
|
|
77
|
+
}
|
|
78
|
+
const bottomBorder = `└─${widths.map((w) => "─".repeat(w)).join("─┴─")}─┘`;
|
|
79
|
+
require_primordials_array.ArrayPrototypePush(lines, src_external_yoctocolors_cjs.default.dim(bottomBorder));
|
|
80
|
+
return lines.join("\n");
|
|
80
81
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
});
|
|
82
|
+
|
|
83
|
+
//#endregion
|
|
84
|
+
exports.formatTable = formatTable;
|