Skip to content

Commit 4d25ecb

Browse files
authored
Merge branch 'main' into repos_v2
2 parents 6bc41c1 + fdb956d commit 4d25ecb

35 files changed

+412
-269
lines changed

.config/rollup.base.config.mjs

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import {
1616
readPackageJsonSync
1717
} from '@socketsecurity/registry/lib/packages'
1818
import { isRelative } from '@socketsecurity/registry/lib/path'
19-
import { escapeRegExp } from '@socketsecurity/registry/lib/regexps'
2019
import { spawnSync } from '@socketsecurity/registry/lib/spawn'
2120

2221
import constants from '../scripts/constants.js'
@@ -38,6 +37,9 @@ const {
3837
ROLLUP_ENTRY_SUFFIX,
3938
ROLLUP_EXTERNAL_SUFFIX,
4039
SLASH_NODE_MODULES_SLASH,
40+
SHADOW_NPM_BIN,
41+
SHADOW_NPM_INJECT,
42+
SHADOW_NPM_PATHS,
4143
SOCKET_CLI_LEGACY_BUILD,
4244
SOCKET_CLI_PUBLISHED_BUILD,
4345
SOCKET_CLI_SENTRY_BUILD,
@@ -148,7 +150,12 @@ export default function baseConfig(extendConfig = {}) {
148150
overrides: pkgOverrides
149151
// Lazily access constants.rootPackageJsonPath.
150152
} = require(constants.rootPackageJsonPath)
151-
const constantsSrcPath = path.join(rootSrcPath, `${CONSTANTS}.ts`)
153+
154+
const constantsSrcPath = path.join(rootSrcPath, `constants.ts`)
155+
const shadowNpmBinSrcPath = path.join(rootSrcPath, 'shadow/npm/bin.ts')
156+
const shadowNpmInjectSrcPath = path.join(rootSrcPath, 'shadow/npm/inject.ts')
157+
const shadowNpmPathsSrcPath = path.join(rootSrcPath, 'shadow/npm/paths.ts')
158+
152159
// Lazily access constants.babelConfigPath.
153160
const babelConfig = require(constants.babelConfigPath)
154161
const tsPlugin = require('rollup-plugin-ts')
@@ -383,13 +390,19 @@ function ${SOCKET_INTEROP}(e) {
383390
chunkFileNames: '[name].js',
384391
manualChunks: id_ => {
385392
const id = normalizeId(id_)
386-
if (id === constantsSrcPath) {
387-
return CONSTANTS
388-
}
389-
if (id.includes(SLASH_NODE_MODULES_SLASH)) {
390-
return VENDOR
393+
switch (id) {
394+
case constantsSrcPath:
395+
return CONSTANTS
396+
case shadowNpmBinSrcPath:
397+
return SHADOW_NPM_BIN
398+
case shadowNpmInjectSrcPath:
399+
return SHADOW_NPM_INJECT
400+
case shadowNpmPathsSrcPath:
401+
return SHADOW_NPM_PATHS
402+
default: {
403+
return id.includes(SLASH_NODE_MODULES_SLASH) ? VENDOR : null
404+
}
391405
}
392-
return null
393406
}
394407
}))
395408

.config/rollup.dist.config.mjs

Lines changed: 42 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -25,49 +25,48 @@ import {
2525
} from '../scripts/utils/packages.js'
2626

2727
const {
28-
CLI,
2928
CONSTANTS,
3029
INSTRUMENT_WITH_SENTRY,
3130
MODULE_SYNC,
32-
NPM_INJECTION,
3331
REQUIRE,
3432
ROLLUP_EXTERNAL_SUFFIX,
35-
SHADOW_BIN,
36-
SOCKET,
33+
SHADOW_NPM_BIN,
34+
SHADOW_NPM_INJECT,
35+
SOCKET_CLI_BIN_NAME,
36+
SOCKET_CLI_BIN_NAME_ALIAS,
3737
SOCKET_CLI_LEGACY_BUILD,
3838
SOCKET_CLI_LEGACY_PACKAGE_NAME,
39+
SOCKET_CLI_NPM_BIN_NAME,
40+
SOCKET_CLI_NPX_BIN_NAME,
3941
SOCKET_CLI_PACKAGE_NAME,
42+
SOCKET_CLI_SENTRY_BIN_NAME,
43+
SOCKET_CLI_SENTRY_BIN_NAME_ALIAS,
4044
SOCKET_CLI_SENTRY_BUILD,
45+
SOCKET_CLI_SENTRY_NPM_BIN_NAME,
46+
SOCKET_CLI_SENTRY_NPX_BIN_NAME,
4147
SOCKET_CLI_SENTRY_PACKAGE_NAME,
4248
SOCKET_CLI_TEST_DIST_BUILD,
4349
VENDOR,
44-
WITH_SENTRY,
4550
depStatsPath,
4651
rootDistPath,
4752
rootPackageLockPath,
4853
rootPath,
4954
rootSrcPath
5055
} = constants
5156

52-
const CLI_WITH_SENTRY = `${CLI}-${WITH_SENTRY}`
5357
const SENTRY_NODE = '@sentry/node'
5458
const SOCKET_DESCRIPTION = 'CLI tool for Socket.dev'
55-
const SOCKET_DESCRIPTION_WITH_SENTRY = `${SOCKET_DESCRIPTION}, includes Sentry error handling, otherwise identical to the regular \`${SOCKET}\` package`
56-
const SOCKET_NPM = 'socket-npm'
57-
const SOCKET_NPX = 'socket-npx'
58-
const SOCKET_WITH_SENTRY = `socket-${WITH_SENTRY}`
59-
const SOCKET_NPM_WITH_SENTRY = `${SOCKET_NPM}-${WITH_SENTRY}`
60-
const SOCKET_NPX_WITH_SENTRY = `${SOCKET_NPX}-${WITH_SENTRY}`
59+
const SOCKET_DESCRIPTION_WITH_SENTRY = `${SOCKET_DESCRIPTION}, includes Sentry error handling, otherwise identical to the regular \`${SOCKET_CLI_BIN_NAME}\` package`
6160
const VENDOR_JS = `${VENDOR}.js`
6261

6362
const distModuleSyncPath = path.join(rootDistPath, MODULE_SYNC)
6463
const distRequirePath = path.join(rootDistPath, REQUIRE)
6564

6665
const sharedInputs = {
6766
cli: `${rootSrcPath}/cli.ts`,
68-
[CONSTANTS]: `${rootSrcPath}/${CONSTANTS}.ts`,
69-
[SHADOW_BIN]: `${rootSrcPath}/shadow/${SHADOW_BIN}.ts`,
70-
[NPM_INJECTION]: `${rootSrcPath}/shadow/${NPM_INJECTION}.ts`
67+
[CONSTANTS]: `${rootSrcPath}/constants.ts`,
68+
[SHADOW_NPM_BIN]: `${rootSrcPath}/shadow/npm/bin.ts`,
69+
[SHADOW_NPM_INJECT]: `${rootSrcPath}/shadow/npm/inject.ts`
7170
}
7271

7372
const sharedOutputs = {
@@ -145,20 +144,29 @@ async function removeJsFiles(namePattern, srcPath) {
145144

146145
function resetBin(bin) {
147146
const tmpBin = {
148-
[SOCKET]: bin?.[SOCKET] ?? bin?.[SOCKET_WITH_SENTRY],
149-
[SOCKET_NPM]: bin?.[SOCKET_NPM] ?? bin?.[SOCKET_NPM_WITH_SENTRY],
150-
[SOCKET_NPX]: bin?.[SOCKET_NPX] ?? bin?.[SOCKET_NPX_WITH_SENTRY]
147+
[SOCKET_CLI_BIN_NAME]:
148+
bin?.[SOCKET_CLI_BIN_NAME] ?? bin?.[SOCKET_CLI_SENTRY_BIN_NAME],
149+
[SOCKET_CLI_NPM_BIN_NAME]:
150+
bin?.[SOCKET_CLI_NPM_BIN_NAME] ?? bin?.[SOCKET_CLI_SENTRY_NPM_BIN_NAME],
151+
[SOCKET_CLI_NPX_BIN_NAME]:
152+
bin?.[SOCKET_CLI_NPX_BIN_NAME] ?? bin?.[SOCKET_CLI_SENTRY_NPX_BIN_NAME]
151153
}
152154
const newBin = {
153-
...(tmpBin[SOCKET] ? { [SOCKET]: tmpBin.socket } : {}),
154-
...(tmpBin[SOCKET_NPM] ? { [SOCKET_NPM]: tmpBin[SOCKET_NPM] } : {}),
155-
...(tmpBin[SOCKET_NPX] ? { [SOCKET_NPX]: tmpBin[SOCKET_NPX] } : {})
155+
...(tmpBin[SOCKET_CLI_BIN_NAME]
156+
? { [SOCKET_CLI_BIN_NAME]: tmpBin.socket }
157+
: {}),
158+
...(tmpBin[SOCKET_CLI_NPM_BIN_NAME]
159+
? { [SOCKET_CLI_NPM_BIN_NAME]: tmpBin[SOCKET_CLI_NPM_BIN_NAME] }
160+
: {}),
161+
...(tmpBin[SOCKET_CLI_NPX_BIN_NAME]
162+
? { [SOCKET_CLI_NPX_BIN_NAME]: tmpBin[SOCKET_CLI_NPX_BIN_NAME] }
163+
: {})
156164
}
157165
assert(
158166
util.isDeepStrictEqual(Object.keys(newBin).sort(naturalCompare), [
159-
SOCKET,
160-
SOCKET_NPM,
161-
SOCKET_NPX
167+
SOCKET_CLI_BIN_NAME,
168+
SOCKET_CLI_NPM_BIN_NAME,
169+
SOCKET_CLI_NPX_BIN_NAME
162170
]),
163171
"Update the rollup Legacy and Sentry build's .bin to match the default build."
164172
)
@@ -235,7 +243,7 @@ async function updatePackageJson() {
235243
editablePkgJson.update({
236244
name: SOCKET_CLI_LEGACY_PACKAGE_NAME,
237245
bin: {
238-
[CLI]: bin[SOCKET],
246+
[SOCKET_CLI_BIN_NAME_ALIAS]: bin[SOCKET_CLI_BIN_NAME],
239247
...bin
240248
}
241249
})
@@ -246,10 +254,10 @@ async function updatePackageJson() {
246254
name: SOCKET_CLI_SENTRY_PACKAGE_NAME,
247255
description: SOCKET_DESCRIPTION_WITH_SENTRY,
248256
bin: {
249-
[CLI_WITH_SENTRY]: bin[SOCKET],
250-
[SOCKET_WITH_SENTRY]: bin[SOCKET],
251-
[SOCKET_NPM_WITH_SENTRY]: bin[SOCKET_NPM],
252-
[SOCKET_NPX_WITH_SENTRY]: bin[SOCKET_NPX]
257+
[SOCKET_CLI_SENTRY_BIN_NAME_ALIAS]: bin[SOCKET_CLI_BIN_NAME],
258+
[SOCKET_CLI_SENTRY_BIN_NAME]: bin[SOCKET_CLI_BIN_NAME],
259+
[SOCKET_CLI_SENTRY_NPM_BIN_NAME]: bin[SOCKET_CLI_NPM_BIN_NAME],
260+
[SOCKET_CLI_SENTRY_NPX_BIN_NAME]: bin[SOCKET_CLI_NPX_BIN_NAME]
253261
},
254262
dependencies: {
255263
...dependencies,
@@ -278,7 +286,7 @@ async function updatePackageLockFile() {
278286
lockJson.name = SOCKET_CLI_LEGACY_PACKAGE_NAME
279287
rootPkg.name = SOCKET_CLI_LEGACY_PACKAGE_NAME
280288
rootPkg.bin = toSortedObject({
281-
[CLI]: bin[SOCKET],
289+
[SOCKET_CLI_BIN_NAME_ALIAS]: bin[SOCKET_CLI_BIN_NAME],
282290
...bin
283291
})
284292
}
@@ -287,10 +295,10 @@ async function updatePackageLockFile() {
287295
lockJson.name = SOCKET_CLI_SENTRY_PACKAGE_NAME
288296
rootPkg.name = SOCKET_CLI_SENTRY_PACKAGE_NAME
289297
rootPkg.bin = {
290-
[CLI_WITH_SENTRY]: bin[SOCKET],
291-
[SOCKET_WITH_SENTRY]: bin[SOCKET],
292-
[SOCKET_NPM_WITH_SENTRY]: bin[SOCKET_NPM],
293-
[SOCKET_NPX_WITH_SENTRY]: bin[SOCKET_NPX]
298+
[SOCKET_CLI_SENTRY_BIN_NAME_ALIAS]: bin[SOCKET_CLI_BIN_NAME],
299+
[SOCKET_CLI_SENTRY_BIN_NAME]: bin[SOCKET_CLI_BIN_NAME],
300+
[SOCKET_CLI_SENTRY_NPM_BIN_NAME]: bin[SOCKET_CLI_NPM_BIN_NAME],
301+
[SOCKET_CLI_SENTRY_NPX_BIN_NAME]: bin[SOCKET_CLI_NPX_BIN_NAME]
294302
}
295303
rootPkg.dependencies = toSortedObject({
296304
...dependencies,

.oxlintrc.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
"settings": {},
1010
"rules": {
1111
"@typescript-eslint/array-type": ["error", { "default": "array-simple" }],
12-
"@typescript-eslint/no-misused-new": ["error"],
12+
"@typescript-eslint/no-misused-new": "error",
1313
"@typescript-eslint/no-this-alias": [
1414
"error",
1515
{ "allowDestructuring": true }
@@ -20,6 +20,7 @@
2020
"no-control-regex": "off",
2121
"no-new": "off",
2222
"no-self-assign": "off",
23+
"no-undef": "off",
2324
"no-unused-vars": "off"
2425
}
2526
}

bin/cli.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@ const process = require('node:process')
55

66
const constants = require('../dist/constants')
77

8-
const { CLI, DIST_TYPE, SOCKET_CLI_SENTRY_BUILD } = constants
8+
const { DIST_TYPE, SOCKET_CLI_SENTRY_BUILD } = constants
99

1010
if (
1111
DIST_TYPE === 'require' &&
1212
// Lazily access constants.ENV[SOCKET_CLI_SENTRY_BUILD].
1313
!constants.ENV[SOCKET_CLI_SENTRY_BUILD]
1414
) {
15-
// Lazily access constants.distPath.
16-
require(`${constants.distPath}/${CLI}.js`)
15+
// Lazily access constants.distCliPath.
16+
require(constants.distCliPath)
1717
} else {
1818
const path = require('node:path')
1919
const { spawn } = require('@socketsecurity/registry/lib/spawn')
@@ -29,12 +29,12 @@ if (
2929
...(constants.ENV[SOCKET_CLI_SENTRY_BUILD]
3030
? [
3131
'--require',
32-
// Lazily access constants.instrumentWithSentryPath.
33-
constants.instrumentWithSentryPath
32+
// Lazily access constants.distInstrumentWithSentryPath.
33+
constants.distInstrumentWithSentryPath
3434
]
3535
: []),
36-
// Lazily access constants.distPath.
37-
path.join(constants.distPath, `${CLI}.js`),
36+
// Lazily access constants.distCliPath.
37+
constants.distCliPath,
3838
...process.argv.slice(2)
3939
],
4040
{

bin/npm-cli.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
'use strict'
33

44
const constants = require('../dist/constants')
5-
const shadowBin = require(`${constants.distPath}/${constants.SHADOW_BIN}.js`)
5+
const shadowBin = require(constants.distShadowNpmBinPath)
66
shadowBin(constants.NPM)

bin/npx-cli.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,7 @@
22
'use strict'
33

44
const constants = require('../dist/constants')
5-
const shadowBin = require(`${constants.distPath}/${constants.SHADOW_BIN}.js`)
5+
const shadowBin = require(
6+
`${constants.distPath}/${constants.SHADOW_NPM_BIN}.js`
7+
)
68
shadowBin(constants.NPX)

eslint.config.js

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ const importXPlugin = require('eslint-plugin-import-x')
1313
const nodePlugin = require('eslint-plugin-n')
1414
const sortDestructureKeysPlugin = require('eslint-plugin-sort-destructure-keys')
1515
const unicornPlugin = require('eslint-plugin-unicorn')
16+
const globals = require('globals')
1617
const tsEslint = require('typescript-eslint')
1718

1819
const constants = require('@socketsecurity/registry/lib/constants')
@@ -34,15 +35,16 @@ const sharedPlugins = {
3435
}
3536

3637
const sharedRules = {
37-
'no-await-in-loop': ['error'],
38-
'no-control-regex': ['error'],
38+
'no-await-in-loop': 'error',
39+
'no-control-regex': 'error',
3940
'no-empty': ['error', { allowEmptyCatch: true }],
40-
'no-new': ['error'],
41-
'no-proto': ['error'],
41+
'no-new': 'error',
42+
'no-proto': 'error',
43+
'no-undef': 'error',
4244
'no-warning-comments': ['warn', { terms: ['fixme'] }],
43-
'sort-destructure-keys/sort-destructure-keys': ['error'],
45+
'sort-destructure-keys/sort-destructure-keys': 'error',
4446
'sort-imports': ['error', { ignoreDeclarationSort: true }],
45-
'unicorn/consistent-function-scoping': ['error']
47+
'unicorn/consistent-function-scoping': 'error'
4648
}
4749

4850
const sharedRulesForImportX = {
@@ -141,6 +143,14 @@ module.exports = [
141143
{
142144
files: ['src/**/*.ts', 'test/**/*.ts'],
143145
languageOptions: {
146+
globals: {
147+
BufferConstructor: 'readonly',
148+
BufferEncoding: 'readonly',
149+
NodeJS: 'readonly',
150+
...Object.fromEntries(
151+
Object.entries(globals.node).map(([k]) => [k, 'readonly'])
152+
)
153+
},
144154
parser: tsParser,
145155
parserOptions: {
146156
projectService: {
@@ -160,7 +170,7 @@ module.exports = [
160170
rules: {
161171
...sharedRules,
162172
'@typescript-eslint/array-type': ['error', { default: 'array-simple' }],
163-
'@typescript-eslint/no-misused-new': ['error'],
173+
'@typescript-eslint/no-misused-new': 'error',
164174
'@typescript-eslint/no-this-alias': [
165175
'error',
166176
{ allowDestructuring: true }
@@ -192,9 +202,9 @@ module.exports = [
192202
// The n/no-unpublished-bin rule does does not support non-trivial glob
193203
// patterns used in package.json "files" fields. In those cases we simplify
194204
// the glob patterns used.
195-
'n/no-unpublished-bin': ['error'],
196-
'n/no-unsupported-features/es-builtins': ['error'],
197-
'n/no-unsupported-features/es-syntax': ['error'],
205+
'n/no-unpublished-bin': 'error',
206+
'n/no-unsupported-features/es-builtins': 'error',
207+
'n/no-unsupported-features/es-syntax': 'error',
198208
'n/no-unsupported-features/node-builtins': [
199209
'error',
200210
{
@@ -203,7 +213,7 @@ module.exports = [
203213
version: constants.maintainedNodeVersions.previous
204214
}
205215
],
206-
'n/prefer-node-protocol': ['error'],
216+
'n/prefer-node-protocol': 'error',
207217
'no-unused-vars': [
208218
'error',
209219
{ argsIgnorePattern: '^_|^this$', ignoreRestSiblings: true }

0 commit comments

Comments
 (0)