Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
3099 commits
Select commit Hold shift + click to select a range
b9dcf3f
Remove fallbacks for invalid pnpm-workspace.yml name
jdalton Sep 16, 2025
76491b4
Flatten spawnCoana into spanCoanaDlx
jdalton Sep 16, 2025
808f26a
Add more constants
jdalton Sep 16, 2025
149e7d0
Lint nits
jdalton Sep 16, 2025
51c6405
Add more constants
jdalton Sep 16, 2025
c2dbbe2
Update changelog
jdalton Sep 16, 2025
55a7376
Bump to v1.1.14
jdalton Sep 16, 2025
cd02505
Update tests
jdalton Sep 16, 2025
ff3ff6c
Fix cmdFlagsToString bug detecting next arg
jdalton Sep 16, 2025
f75093f
Don't use dynamic import in rollup config
jdalton Sep 16, 2025
3c862f9
Add better usage example to socket fix
jdalton Sep 16, 2025
136fd80
Use more joinAnd
jdalton Sep 16, 2025
9e60015
Minor logic flips
jdalton Sep 16, 2025
05cdbca
Add better ux around missing env vars
jdalton Sep 16, 2025
f6ef306
Lint nits
jdalton Sep 16, 2025
f752a22
Add trash note to run-cdxgen
jdalton Sep 16, 2025
622c82d
Pass runAgentInstall to runAgentInstall
jdalton Sep 16, 2025
45ad19c
Bump to v1.1.15
jdalton Sep 16, 2025
ae08848
Add fix command env tests
jdalton Sep 16, 2025
7c3ec15
Update claude.md
jdalton Sep 16, 2025
9b422b3
Update pnpm action with socket pnpm use
jdalton Sep 16, 2025
3f68455
Use pnpm dlx for pnpm workflow
jdalton Sep 16, 2025
8793f40
Update workflow shas
jdalton Sep 16, 2025
0c85621
Fix pnpm wrapper for dlx usage and add test
jdalton Sep 16, 2025
9cf8b35
Lint nits
jdalton Sep 16, 2025
d52ac2d
Update pnpm9 fixture
jdalton Sep 16, 2025
b9e508f
Update snapshots
jdalton Sep 16, 2025
80901f0
Update tests
jdalton Sep 16, 2025
81d97cf
Make each patched file an override to use the patched version
jdalton Sep 17, 2025
8f07403
Field order nits
jdalton Sep 17, 2025
cf7351e
Update deps
jdalton Sep 17, 2025
f02b8f4
Use @socketsecurity/registry/lib/agent
jdalton Sep 17, 2025
173dfa5
Bump to v1.1.16
jdalton Sep 17, 2025
738aed1
Revert "Update deps"
jdalton Sep 17, 2025
5de119e
Revert "Use @socketsecurity/registry/lib/agent"
jdalton Sep 17, 2025
e019666
Update deps
jdalton Sep 18, 2025
225ac5b
Update skipped tests
jdalton Sep 18, 2025
a39f97e
Update pre-commit
jdalton Sep 18, 2025
4ac6463
Temporarily disable pnpm dlx in pnpm setup action
jdalton Sep 18, 2025
421ed1a
Update action shas
jdalton Sep 18, 2025
6c93d45
Fix flakey tests
jdalton Sep 18, 2025
23a909b
Lint nits
jdalton Sep 18, 2025
d50a72a
Use whichBin from registry
jdalton Sep 18, 2025
5ed51b7
Update deps
jdalton Sep 18, 2025
1eae68a
Update deps
jdalton Sep 18, 2025
b8e1553
fix: Add defensive check for whichBinSync return value
jdalton Sep 18, 2025
e39bb64
fix: Add fallback for npm exec path detection
jdalton Sep 18, 2025
1767367
Update claude.md
jdalton Sep 18, 2025
5d5a118
fix: handle pnpm frozen-lockfile in CI for optimize command
jdalton Sep 18, 2025
36e0ac6
debug: add Windows CI debugging for optimize test failures
jdalton Sep 18, 2025
7cf7037
Update claude.md
jdalton Sep 18, 2025
122fbd5
debug: enhance CI debugging to diagnose Windows failures
jdalton Sep 18, 2025
1e51ff7
debug: add debug output before runAgentInstall
jdalton Sep 18, 2025
895ae75
Add more debug
jdalton Sep 18, 2025
a4c60d3
Fix Windows spawn ENOENT for package managers
jdalton Sep 18, 2025
f7b9c04
Update deps
jdalton Sep 18, 2025
2718a65
Remove debug
jdalton Sep 18, 2025
e29a89e
Use more constants
jdalton Sep 19, 2025
02cd1b6
Add back getAgentExecPath logic thought to be redundant
jdalton Sep 19, 2025
104f524
Use more constants
jdalton Sep 19, 2025
98613ec
Update changelog
jdalton Sep 19, 2025
92e623a
Bump to v1.1.17
jdalton Sep 19, 2025
1f4628a
Downgrade yargs-parser for < Node 20 support
jdalton Sep 19, 2025
6574328
Bump to v1.1.18
jdalton Sep 19, 2025
d0c113f
Fix up command flags for pnpm/yarn/npm/npx
jdalton Sep 19, 2025
e7cc25f
Add --config shortflag -c
jdalton Sep 19, 2025
652b2e6
Ensure cmdFlagsToString accounts for both -- and - flags
jdalton Sep 19, 2025
cb0866a
Add common shadow helpers
jdalton Sep 19, 2025
ca1a339
Use trash in pnpm test
jdalton Sep 19, 2025
7f3dc96
Rename npa to safeNpa
jdalton Sep 19, 2025
56b41a7
Add error utils
jdalton Sep 19, 2025
dae0f99
Cleanup fs.unlink use
jdalton Sep 19, 2025
440a4f1
Add npm-spec utils
jdalton Sep 19, 2025
4608853
Cleanup debug
jdalton Sep 19, 2025
2e665ae
Lint nits
jdalton Sep 19, 2025
4ba55ec
Fix check issues
jdalton Sep 19, 2025
f37fd91
Add comment headers to utils
jdalton Sep 19, 2025
e0df882
Update claude.me
jdalton Sep 19, 2025
43a64ae
Add -c --config tests
jdalton Sep 19, 2025
9271d46
Split out npm/npm spawnBin
jdalton Sep 19, 2025
6de1b26
Lint nits
jdalton Sep 19, 2025
cae4c4b
Split out npm/npx better
jdalton Sep 19, 2025
9b1f270
Lint nits
jdalton Sep 19, 2025
8b48474
Add malware mocks
jdalton Sep 19, 2025
3a202be
Lint nits
jdalton Sep 19, 2025
7216749
Test description nits
jdalton Sep 19, 2025
b7d3817
Use more flag constans
jdalton Sep 19, 2025
31be696
Try to fix tests in CI
jdalton Sep 19, 2025
41ad628
Add more constants
jdalton Sep 19, 2025
2cbaa83
Lint nits
jdalton Sep 19, 2025
37c9f8d
Last pass of constants use
jdalton Sep 19, 2025
6418720
Fix test fails
jdalton Sep 19, 2025
a6274bb
Bump to v1.1.19
jdalton Sep 19, 2025
de50efe
Lint nits
jdalton Sep 19, 2025
55aef5a
Fix tests
jdalton Sep 19, 2025
6ff6007
Fix test runner scripts
jdalton Sep 19, 2025
cc4d730
Update claude.md
jdalton Sep 19, 2025
6c9223c
Use FLAG_ID
jdalton Sep 19, 2025
6b0bacd
Tweak --glob description
jdalton Sep 19, 2025
e04ebdb
Minor cleanup
jdalton Sep 19, 2025
48fabcb
Minor code cleanup
jdalton Sep 19, 2025
82fb5bb
Make lockfile one word
jdalton Sep 19, 2025
86d15b9
Rename argvToArray to argvObjectToArray
jdalton Sep 19, 2025
44154ab
Add terminal-link helpers
jdalton Sep 19, 2025
f23b60d
Add shell: WIN32 comments
jdalton Sep 19, 2025
9be169e
Bump to v1.1.20
jdalton Sep 19, 2025
d4b5a95
Update snapshots
jdalton Sep 19, 2025
128d1c4
Split out link helpers
jdalton Sep 19, 2025
579b640
Add quota tests
jdalton Sep 19, 2025
528484a
Lint nits
jdalton Sep 19, 2025
6110914
Fix tests
jdalton Sep 19, 2025
df0d605
Update claude.md
jdalton Sep 19, 2025
a8c7515
Migrate some smoke tests over to main test suite
jdalton Sep 19, 2025
e095184
Lint nits
jdalton Sep 19, 2025
6a9d59b
Add --compact-header flag and tweak cli header
jdalton Sep 19, 2025
aeb2721
Add dlx binary utils
jdalton Sep 19, 2025
436e09a
Lint nits
jdalton Sep 19, 2025
3a1839f
Add test timeout increase for Windows
jdalton Sep 19, 2025
9a4bb4a
Update cli header
jdalton Sep 20, 2025
9ac16b9
Update meow config
jdalton Sep 20, 2025
8fd6590
Add test utils
jdalton Sep 20, 2025
cf06ede
Lint nits
jdalton Sep 20, 2025
88ab554
Cleanup mock-auth
jdalton Sep 20, 2025
9f5463d
Update snapshots
jdalton Sep 20, 2025
3458f00
Lint nits
jdalton Sep 20, 2025
b5d92fe
Use full header in tests
jdalton Sep 20, 2025
f85cce1
Add exit codes to optimize handler
jdalton Sep 20, 2025
2c8364a
Verify the hash after copying patches
jdalton Sep 20, 2025
4fbfd41
Fix module path issue in tests
jdalton Sep 20, 2025
53bceea
Lint nits
jdalton Sep 20, 2025
4dd56d9
Fix optimize test
jdalton Sep 20, 2025
b386bd0
Attempt to fix cdxgen test in Windows
jdalton Sep 20, 2025
6341c3f
Add debug for failing cdxgen test on Windows
jdalton Sep 20, 2025
39c05e9
Bump to v1.1.21
jdalton Sep 20, 2025
8b71f80
Update actions
jdalton Sep 20, 2025
2f7656f
Socket fix and repo name adjustments (#742)
mtorp Sep 20, 2025
a29701d
Update claude workflow perms
jdalton Sep 20, 2025
ed5daa3
Simplify workflows
jdalton Sep 20, 2025
b138a8d
Update bin modules
jdalton Sep 21, 2025
65a45ee
Update snapshots
jdalton Sep 21, 2025
0d35802
Update yarn fixture mocks
jdalton Sep 21, 2025
550f9d4
Update ascii header
jdalton Sep 21, 2025
a8085e1
Unskip analytics test
jdalton Sep 21, 2025
2c656bd
Fix tests
jdalton Sep 21, 2025
0875cf1
Update changelog
jdalton Sep 21, 2025
37ada78
Fix cdxgen tests
jdalton Sep 21, 2025
282d300
Lint nits
jdalton Sep 21, 2025
bd2164f
Fix optimize test on Windows
jdalton Sep 21, 2025
642db2e
Attempt cdxgen on Windows fix again
jdalton Sep 21, 2025
5c843b3
cdxgen test cleanup
jdalton Sep 21, 2025
4b7c0f2
Add perms to socket-auto-pr workflow
jdalton Sep 21, 2025
dab3f5b
Cleanup action names
jdalton Sep 21, 2025
6f0ba8f
Unskip yarn command and reachability tests
jdalton Sep 21, 2025
752c635
Tweak workflow names
jdalton Sep 21, 2025
3d151d5
Cleanup docs and help text
jdalton Sep 21, 2025
3bb1a0d
Add try-catch to git reset for optimize pnpm tests
jdalton Sep 21, 2025
414f0a2
Add sea scripts
jdalton Sep 21, 2025
fcc8f65
Remove --ignore-scripts from pnpm dlx helper
jdalton Sep 22, 2025
cf02a12
Rename `--dont-apply-fixes` to `--no-apply-fixes` (#743)
mtorp Sep 22, 2025
b67a345
[typo] usage json example (#745)
drew-u410 Sep 22, 2025
1ec2e86
Bump to v1.1.23
jdalton Sep 22, 2025
338056b
Barslev/add min release age option to socket fix (#744)
barslev Sep 22, 2025
7431196
fix: enterprise plan filter (#785)
ahmadnassri Oct 6, 2025
d1cafe2
fix: improve organization capabilities detection for plan variants
dacoburn Oct 11, 2025
58eeaae
Bump to v1.1.24
jdalton Oct 11, 2025
bc134bb
Fix provenance
jdalton Oct 11, 2025
d1e25cc
Lint nits
jdalton Oct 11, 2025
d9ea29b
Update deps
jdalton Oct 11, 2025
2c7078f
add --no-major-updates and --show-affected-direct-dependencies flags
mtorp Sep 25, 2025
eeba429
Bump to v1.1.25
jdalton Oct 11, 2025
0e8e165
Log API requests/responses (#895)
reberhardt7 Nov 8, 2025
d89e6ad
Update snapshots
jdalton Nov 8, 2025
4d1187e
Bump to v1.1.26
jdalton Nov 8, 2025
a67f517
Add dist-tag support to provenance workflow
jdalton Nov 9, 2025
4240347
Use npm 11 for publishing in provenance workflow
jdalton Nov 9, 2025
45b30c6
backport --exclude and --include flags for socket fix to v1
mtorp Nov 12, 2025
9132a5f
ensure --exclude and --include are not hidden
mtorp Nov 12, 2025
071e575
Bump to v1.1.27
jdalton Nov 12, 2025
cf5eda6
backport Socket fix improvements - PR 796
mtorp Nov 13, 2025
6bc2ecf
run e2e tests on merge with v1.x branch
mtorp Nov 13, 2025
93808b4
Bump to v1.1.28
jdalton Nov 13, 2025
afbe90a
Fix pnpm dlx --silent flag order to prevent coana from treating it as…
jdalton Nov 14, 2025
245c1e8
Fix shadow bin argument passing causing findLast errors (#912)
jdalton Nov 15, 2025
c75d439
Add options --reach-concurrency and --reach-disable-analysis-splitting
barslev Nov 16, 2025
b315e9a
Bump version to 1.1.29
barslev Nov 16, 2025
9d0164c
Update SOCKET_CLI_COANA_LOCAL_PATH to support the Coana CLI binary (#…
mtorp Nov 18, 2025
85647dd
Fix incorrect token usage in /v0/purl requests
jdalton Nov 18, 2025
52112f2
Add unit tests for token selection behavior
jdalton Nov 18, 2025
62b3aea
Pin @coana-tech/cli to exact version without tilde
jdalton Nov 18, 2025
b31f372
Fix PR creation logic (#920)
jdalton Nov 18, 2025
d8968df
Fix dlx test expectations to match pinned version format
jdalton Nov 18, 2025
72d6758
Fix mock-fs test failure caused by broken symlinks
jdalton Nov 18, 2025
3321a4d
Bump version to 1.1.30
jdalton Nov 18, 2025
6d1f49c
fix(fix): deduplicate affected packages in PR descriptions
jdalton Nov 19, 2025
a3e4270
refactor(fix): DRY out package deduplication with getUniquePackages h…
jdalton Nov 19, 2025
02b2c17
Bump version to 1.1.31
jdalton Nov 19, 2025
6ab5d0f
chore: pin @coana-tech/cli and @cyclonedx/cdxgen to exact versions
jdalton Nov 19, 2025
b6dca75
exclude .socket.facts.json from socket fix manifest upload
mtorp Nov 20, 2025
7ccf45d
fix(fix): resolve --limit flag not working in local mode
jdalton Nov 20, 2025
62196d1
refactor(fix): rename test files to match naming convention
jdalton Nov 20, 2025
0307380
Bump version to 1.1.32
jdalton Nov 20, 2025
7b44151
fix(test): remove failing git-based fixture cleanup
jdalton Nov 20, 2025
3db742d
fix: change error badge text from red to white for readability
jdalton Nov 20, 2025
bf768a5
chore: update @coana-tech/cli to 14.12.94
jdalton Nov 20, 2025
cdd5204
fix(test): improve broken symlink handling in path-resolve test
jdalton Nov 20, 2025
898694a
release v1.1.33
jdalton Nov 20, 2025
07ada33
add --reach-debug flag to enable verbose logging in the reachability …
mtorp Nov 21, 2025
51e278c
Various fixes for handling of target paths. (#933)
mtorp Nov 21, 2025
b30ffbd
update @coana-tech/cli to version 14.12.100
mtorp Nov 25, 2025
fef3e1e
upgrade coana to 14.12.101
mtorp Nov 26, 2025
429d6cc
upload manifest files relative to target for coana-fix and perform-r……
jfblaa Nov 26, 2025
f6c5bb0
Jfblaa/rea 312 socket cli version bump and change log (#944)
jfblaa Nov 26, 2025
dae6c0a
fix(api): improve CVE to GHSA conversion caching and error messaging
jdalton Nov 26, 2025
a6cb9c8
refactor(api): improve CVE to GHSA error detection and code clarity
jdalton Nov 26, 2025
d1169a8
release v1.1.38
jdalton Nov 26, 2025
311e551
upgrade coana to v14.12.107
mtorp Dec 1, 2025
080965e
remove unused cwd
mtorp Dec 1, 2025
71aa15b
prepare for 1.1.39
mtorp Dec 1, 2025
cdd5971
change discoverGhsaIds to use coana cli command 'find-vulnerabilities…
jfblaa Dec 2, 2025
eeeb240
add --reach-version and --fix-version flags to override the default C…
mtorp Dec 2, 2025
39a114d
add --ecosystems flag and rename --limit to --pr-limit for socket fix…
jfblaa Dec 4, 2025
3c28431
fix --limit alias to properly map to --pr-limit
jdalton Dec 4, 2025
361afe8
fix test failures by ensuring unauthenticated test environment
jdalton Dec 4, 2025
da83fa1
add `--all` flag for `socket fix` and make it incompatible with `--id…
jfblaa Dec 8, 2025
903cc00
Reachability e2e tests (#968)
mtorp Dec 9, 2025
b29c1f3
Add flag `--reach-use-only-pregenerated-sboms` (#969)
mtorp Dec 10, 2025
651f706
update coana to v14.12.126 (#970)
mtorp Dec 12, 2025
67ef556
add `--debug` option to `socket fix` (#979)
jfblaa Dec 15, 2025
627611e
update coana to 14.12.130: Avoid full dependency install when finaliz…
jfblaa Dec 16, 2025
486f1af
fix error being rethrown when npm finalize fix failed in `socket fix`…
jfblaa Dec 16, 2025
b40531e
feat(telemetry): adding initial telemetry functionality to the cli (#…
billxinli Dec 16, 2025
95c7d8a
Bump to v1.1.49 (#984)
jdalton Dec 17, 2025
abeeb18
fix(socket-npm): fixing a bug on how the cli bin is passed to the wra…
billxinli Dec 18, 2025
95aa4fc
Fixes the issue where socket ci would exit with code 0 even when bloc…
graydonhope Dec 19, 2025
ac9fc49
Bump to v1.1.50 (#988)
jdalton Dec 19, 2025
44655ac
Use @socketsecurity/socket-patch for patch command (#987)
mikolalysenko Dec 22, 2025
1de47a9
fix(package-env): improve Windows npm version detection (#983)
billxinli Dec 22, 2025
c3659cf
feat(config): use EditableJson for non-destructive config saving (#997)
jdalton Dec 23, 2025
4761498
add --reach-lazy-mode. update coana to v138 (#998)
mtorp Dec 30, 2025
1d9688c
add --silence flag to `socket fix` (#1008)
mtorp Jan 2, 2026
d0e383b
set scanType to socket_tier1 when creating reachability full scans (#…
mtorp Jan 6, 2026
8a0dfb2
Add dot:true to fastGlob calls (#1007)
jdalton Jan 6, 2026
35d4d84
fix(optimize): remove Node.js version filter from manifest entries (#…
jdalton Jan 6, 2026
b66490a
bump coana version (#1017)
jfblaa Jan 8, 2026
f91f262
upgrade Coana (#1024)
mtorp Jan 9, 2026
9bbb8e8
[SMO-522] Fix heap overflow in large monorepo scans (#1026)
mikolalysenko Jan 10, 2026
c10ba4b
Bump to v1.1.56 (#1028)
jdalton Jan 11, 2026
5186517
feat: update @socketsecurity/socket-patch to v1.2.0
mikolalysenko Jan 11, 2026
600799b
chore: remove (Experimental) tag from some alerts
ammkrn Feb 21, 2026
34dfc0c
Fix typo in .gitattributes: eol=lfs -> eol=lf
cursoragent Feb 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
27 changes: 27 additions & 0 deletions .config/babel.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
'use strict'

const path = require('node:path')

const rootPath = path.join(__dirname, '..')
const scriptsPath = path.join(rootPath, 'scripts')
const babelPluginsPath = path.join(scriptsPath, 'babel')

module.exports = {
presets: ['@babel/preset-typescript'],
plugins: [
'@babel/plugin-proposal-export-default-from',
'@babel/plugin-transform-export-namespace-from',
[
'@babel/plugin-transform-runtime',
{
absoluteRuntime: false,
corejs: false,
helpers: true,
regenerator: false,
version: '^7.27.1',
},
],
path.join(babelPluginsPath, 'transform-set-proto-plugin.js'),
path.join(babelPluginsPath, 'transform-url-parse-plugin.js'),
],
}
302 changes: 302 additions & 0 deletions .config/rollup.base.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,302 @@
import { randomUUID } from 'node:crypto'
import { builtinModules } from 'node:module'
import path from 'node:path'

import { babel as babelPlugin } from '@rollup/plugin-babel'
import commonjsPlugin from '@rollup/plugin-commonjs'
import jsonPlugin from '@rollup/plugin-json'
import { nodeResolve } from '@rollup/plugin-node-resolve'
import replacePlugin from '@rollup/plugin-replace'
import { purgePolyfills } from 'unplugin-purge-polyfills'

import { readPackageJsonSync } from '@socketsecurity/registry/lib/packages'
import { escapeRegExp } from '@socketsecurity/registry/lib/regexps'
import { spawnSync } from '@socketsecurity/registry/lib/spawn'
import { stripAnsi } from '@socketsecurity/registry/lib/strings'

import constants from '../scripts/constants.js'
import socketModifyPlugin from '../scripts/rollup/socket-modify-plugin.js'
import {
getPackageName,
isBuiltin,
normalizeId,
} from '../scripts/utils/packages.js'

const {
INLINED_SOCKET_CLI_COANA_TECH_CLI_VERSION,
INLINED_SOCKET_CLI_CYCLONEDX_CDXGEN_VERSION,
INLINED_SOCKET_CLI_HOMEPAGE,
INLINED_SOCKET_CLI_LEGACY_BUILD,
INLINED_SOCKET_CLI_NAME,
INLINED_SOCKET_CLI_PUBLISHED_BUILD,
INLINED_SOCKET_CLI_SENTRY_BUILD,
INLINED_SOCKET_CLI_SYNP_VERSION,
INLINED_SOCKET_CLI_VERSION,
INLINED_SOCKET_CLI_VERSION_HASH,
NODE_MODULES,
ROLLUP_EXTERNAL_SUFFIX,
UTF8,
VITEST,
} = constants

export const EXTERNAL_PACKAGES = [
'@socketsecurity/registry',
'blessed',
'blessed-contrib',
]

const builtinAliases = builtinModules.reduce((o, n) => {
if (!n.startsWith('node:')) {
o[n] = `node:${n}`
}
return o
}, {})

let _rootPkgJson
function getRootPkgJsonSync() {
if (_rootPkgJson === undefined) {
_rootPkgJson = readPackageJsonSync(constants.rootPath, { normalize: true })
}
return _rootPkgJson
}

let _socketVersionHash
function getSocketCliVersionHash() {
if (_socketVersionHash === undefined) {
const randUuidSegment = randomUUID().split('-')[0]
const { version } = getRootPkgJsonSync()
let gitHash = ''
try {
gitHash = stripAnsi(
spawnSync('git', ['rev-parse', '--short', 'HEAD'], {
encoding: UTF8,
}).stdout.trim(),
)
} catch {}
// Make each build generate a unique version id, regardless.
// Mostly for development: confirms the build refreshed. For prod builds
// the git hash should suffice to identify the build.
_socketVersionHash = `${version}:${gitHash}:${randUuidSegment}${
constants.ENV[INLINED_SOCKET_CLI_PUBLISHED_BUILD] ? '' : ':dev'
}`
}
return _socketVersionHash
}

const requiredToVarName = new Map()
function getVarNameForRequireId(filename, id, lookbehindContent) {
const key = `${filename}:${id}`
let varName = requiredToVarName.get(key)
if (varName) {
return varName
}
const varNameRegExp = new RegExp(
`(?<=var +)[$\\w]+(?=\\s*=\\s*require[$\\w]*\\(["']${escapeRegExp(id)}["']\\))`,
)
varName = varNameRegExp.exec(lookbehindContent)?.[0] ?? ''
if (varName) {
requiredToVarName.set(key, varName)
}
return varName
}

export default function baseConfig(extendConfig = {}) {
const { configPath, rootPath } = constants

const nmPath = path.join(rootPath, NODE_MODULES)

const extendPlugins = Array.isArray(extendConfig.plugins)
? extendConfig.plugins.slice()
: []

const extractedPlugins = { __proto__: null }
if (extendPlugins.length) {
for (const pluginName of [
'babel',
'commonjs',
'json',
'node-resolve',
'unplugin-purge-polyfills',
]) {
for (let i = 0, { length } = extendPlugins; i < length; i += 1) {
const p = extendPlugins[i]
if (p?.name === pluginName) {
extractedPlugins[pluginName] = p
// Remove from extendPlugins array.
extendPlugins.splice(i, 1)
length -= 1
i -= 1
}
}
}
}

return {
external(rawId) {
const id = normalizeId(rawId)
const pkgName = getPackageName(
id,
path.isAbsolute(id) ? nmPath.length + 1 : 0,
)
return (
id.endsWith('.d.cts') ||
id.endsWith('.d.mts') ||
id.endsWith('.d.ts') ||
EXTERNAL_PACKAGES.includes(pkgName) ||
rawId.endsWith(ROLLUP_EXTERNAL_SUFFIX) ||
isBuiltin(rawId)
)
},
onwarn(warning, warn) {
// Suppress warnings.
if (
warning.code === 'INVALID_ANNOTATION' ||
warning.code === 'THIS_IS_UNDEFINED'
) {
return
}
// Forward other warnings.
warn(warning)
},
...extendConfig,
plugins: [
extractedPlugins['node-resolve'] ??
nodeResolve({
exportConditions: ['node'],
extensions: ['.mjs', '.js', '.json', '.ts', '.mts'],
preferBuiltins: true,
}),
extractedPlugins['json'] ?? jsonPlugin(),
extractedPlugins['commonjs'] ??
commonjsPlugin({
defaultIsModuleExports: true,
extensions: ['.cjs', '.js'],
ignoreDynamicRequires: true,
ignoreGlobal: true,
ignoreTryCatch: true,
strictRequires: true,
}),
extractedPlugins['babel'] ??
babelPlugin({
babelHelpers: 'runtime',
babelrc: false,
configFile: path.join(configPath, 'babel.config.js'),
extensions: ['.mjs', '.js', '.ts', '.mts'],
}),
extractedPlugins['unplugin-purge-polyfills'] ??
purgePolyfills.rollup({
replacements: {},
}),
// Inline process.env values.
replacePlugin({
delimiters: ['(?<![\'"])\\b', '(?![\'"])'],
preventAssignment: true,
values: [
[
INLINED_SOCKET_CLI_COANA_TECH_CLI_VERSION,
() =>
JSON.stringify(
getRootPkgJsonSync().devDependencies['@coana-tech/cli'],
),
],
[
INLINED_SOCKET_CLI_CYCLONEDX_CDXGEN_VERSION,
() =>
JSON.stringify(
getRootPkgJsonSync().devDependencies['@cyclonedx/cdxgen'],
),
],
[
INLINED_SOCKET_CLI_HOMEPAGE,
() => JSON.stringify(getRootPkgJsonSync().homepage),
],
[
INLINED_SOCKET_CLI_LEGACY_BUILD,
() =>
JSON.stringify(!!constants.ENV[INLINED_SOCKET_CLI_LEGACY_BUILD]),
],
[
INLINED_SOCKET_CLI_NAME,
() => JSON.stringify(getRootPkgJsonSync().name),
],
[
INLINED_SOCKET_CLI_PUBLISHED_BUILD,
() =>
JSON.stringify(
!!constants.ENV[INLINED_SOCKET_CLI_PUBLISHED_BUILD],
),
],
[
INLINED_SOCKET_CLI_SENTRY_BUILD,
() =>
JSON.stringify(!!constants.ENV[INLINED_SOCKET_CLI_SENTRY_BUILD]),
],
[
INLINED_SOCKET_CLI_SYNP_VERSION,
() => JSON.stringify(getRootPkgJsonSync().devDependencies['synp']),
],
[
INLINED_SOCKET_CLI_VERSION,
() => JSON.stringify(getRootPkgJsonSync().version),
],
[
INLINED_SOCKET_CLI_VERSION_HASH,
() => JSON.stringify(getSocketCliVersionHash()),
],
[VITEST, () => !!constants.ENV[VITEST]],
].reduce((obj, { 0: name, 1: value }) => {
obj[`process.env.${name}`] = value
obj[`process.env['${name}']`] = value
obj[`process.env[${name}]`] = value
return obj
}, {}),
}),
// Remove dangling require calls, e.g. require calls not associated with
// an import binding:
// require('node:util')
// require('graceful-fs')
socketModifyPlugin({
find: /^\s*require[$\w]*\(["'].+?["']\);?\r?\n/gm,
replace: '',
}),
// Replace require calls to ESM 'tiny-colors' with CJS 'yoctocolors-cjs'
// because we npm override 'tiny-colors' with 'yoctocolors-cjs' for dist
// builds which causes 'tiny-colors' to be treated as an external, not bundled,
// require.
socketModifyPlugin({
find: /require[$\w]*\(["']tiny-colors["']\)/g,
replace: "require('yoctocolors-cjs')",
}),
// Try to convert `require('u' + 'rl')` into something like `require$$2$3`.
socketModifyPlugin({
find: /require[$\w]*\(["']u["']\s*\+\s*["']rl["']\)/g,
replace(match, index) {
const { fileName } = this.chunk
const beforeMatch = this.input.slice(0, index)
return (
getVarNameForRequireId(fileName, 'node:url', beforeMatch) || match
)
},
}),
// Convert un-prefixed built-in imports into "node:"" prefixed forms.
replacePlugin({
delimiters: ['(?<=(?:require[$\\w]*\\(|from\\s*)["\'])', '(?=["\'])'],
preventAssignment: false,
values: builtinAliases,
}),
// Reduce duplicate require('node:...') variable assignments.
socketModifyPlugin({
find: /var +([$\w]+)\s*=\s*require[$\w]*\(["'](node:.+?)["']\)/g,
replace(match, currVarName, id, index) {
const { fileName } = this.chunk
const beforeMatch = this.input.slice(0, index)
const prevVarName = getVarNameForRequireId(fileName, id, beforeMatch)
return !prevVarName || currVarName === prevVarName
? match
: `var ${currVarName} = ${prevVarName}`
},
}),
...extendPlugins,
],
}
}
Loading