Skip to content

Commit 95cbd7e

Browse files
authored
Merge branch 'main' into dry_header
2 parents d77ee44 + ea0ed19 commit 95cbd7e

File tree

8 files changed

+164
-226
lines changed

8 files changed

+164
-226
lines changed

.config/rollup.base.config.mjs

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { spawnSync } from 'node:child_process'
2+
import { randomUUID } from 'node:crypto'
13
import { builtinModules, createRequire } from 'node:module'
24
import path from 'node:path'
35

@@ -37,6 +39,11 @@ const {
3739
ROLLUP_ENTRY_SUFFIX,
3840
ROLLUP_EXTERNAL_SUFFIX,
3941
SLASH_NODE_MODULES_SLASH,
42+
SOCKET_CLI_LEGACY_BUILD,
43+
SOCKET_CLI_PUBLISHED_BUILD,
44+
SOCKET_CLI_SENTRY_BUILD,
45+
SOCKET_CLI_VERSION_HASH,
46+
VITEST,
4047
VENDOR
4148
} = constants
4249

@@ -74,6 +81,29 @@ const requireUrlAssignmentRegExp =
7481

7582
const splitUrlRequiresRegExp = /require\(["']u["']\s*\+\s*["']rl["']\)/g
7683

84+
let _socketVersionHash
85+
function getSocketVersionHash() {
86+
if (_socketVersionHash === undefined) {
87+
const randUuidSegment = randomUUID().split('-')[0]
88+
// Lazily access constants.rootPath.
89+
const { version } = readPackageJsonSync(constants.rootPath)
90+
let gitHash = ''
91+
try {
92+
gitHash = spawnSync('git', ['rev-parse', '--short', 'HEAD'], {
93+
encoding: 'utf8'
94+
}).stdout.trim()
95+
} catch {}
96+
// Make each build generate a unique version id, regardless.
97+
// Mostly for development: confirms the build refreshed. For prod builds
98+
// the git hash should suffice to identify the build.
99+
_socketVersionHash = `${version}:${gitHash}:${randUuidSegment}${
100+
// Lazily access constants.ENV[SOCKET_CLI_PUBLISHED_BUILD].
101+
constants.ENV[SOCKET_CLI_PUBLISHED_BUILD] ? ':pub' : ':dev'
102+
}`
103+
}
104+
return _socketVersionHash
105+
}
106+
77107
function isAncestorsExternal(id, depStats) {
78108
// Lazily access constants.rootPackageJsonPath.
79109
const { dependencies: pkgDeps } = require(constants.rootPackageJsonPath)
@@ -225,6 +255,52 @@ export default function baseConfig(extendConfig = {}) {
225255
purgePolyfills.rollup({
226256
replacements: {}
227257
}),
258+
// Inline process.env values.
259+
replacePlugin({
260+
delimiters: ['(?<![\'"])\\b', '(?![\'"])'],
261+
preventAssignment: true,
262+
values: [
263+
[
264+
SOCKET_CLI_VERSION_HASH,
265+
() => JSON.stringify(getSocketVersionHash())
266+
],
267+
[
268+
SOCKET_CLI_LEGACY_BUILD,
269+
() =>
270+
JSON.stringify(
271+
// Lazily access constants.ENV[SOCKET_CLI_LEGACY_BUILD].
272+
!!constants.ENV[SOCKET_CLI_LEGACY_BUILD]
273+
)
274+
],
275+
[
276+
SOCKET_CLI_PUBLISHED_BUILD,
277+
() =>
278+
JSON.stringify(
279+
// Lazily access constants.ENV[SOCKET_CLI_PUBLISHED_BUILD].
280+
!!constants.ENV[SOCKET_CLI_PUBLISHED_BUILD]
281+
)
282+
],
283+
[
284+
SOCKET_CLI_SENTRY_BUILD,
285+
() =>
286+
JSON.stringify(
287+
// Lazily access constants.ENV[SOCKET_CLI_SENTRY_BUILD].
288+
!!constants.ENV[SOCKET_CLI_SENTRY_BUILD]
289+
)
290+
],
291+
[
292+
VITEST,
293+
() =>
294+
// Lazily access constants.ENV[VITEST].
295+
!!constants.ENV[VITEST]
296+
]
297+
].reduce((obj, { 0: name, 1: value }) => {
298+
obj[`process.env.${name}`] = value
299+
obj[`process.env['${name}']`] = value
300+
obj[`process.env[${name}]`] = value
301+
return obj
302+
}, {})
303+
}),
228304
// Convert un-prefixed built-in imports into "node:"" prefixed forms.
229305
replacePlugin({
230306
delimiters: ['(?<=(?:require\\(|from\\s*)["\'])', '(?=["\'])'],

.config/rollup.dist.config.mjs

Lines changed: 37 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
import assert from 'node:assert'
2-
import { spawnSync } from 'node:child_process'
3-
import { randomUUID } from 'node:crypto'
42
import { existsSync, promises as fs } from 'node:fs'
53
import path from 'node:path'
64
import util from 'node:util'
@@ -13,8 +11,7 @@ import { toSortedObject } from '@socketsecurity/registry/lib/objects'
1311
import {
1412
fetchPackageManifest,
1513
isValidPackageName,
16-
readPackageJson,
17-
readPackageJsonSync
14+
readPackageJson
1815
} from '@socketsecurity/registry/lib/packages'
1916
import { isRelative } from '@socketsecurity/registry/lib/path'
2017
import { naturalCompare } from '@socketsecurity/registry/lib/sorts'
@@ -39,11 +36,9 @@ const {
3936
SHADOW_BIN,
4037
SOCKET,
4138
SOCKET_CLI_LEGACY_BUILD,
42-
SOCKET_CLI_PUBLISHED_BUILD,
4339
SOCKET_CLI_SENTRY_BUILD,
44-
SOCKET_CLI_VERSION_HASH,
40+
SOCKET_CLI_TEST_DIST_BUILD,
4541
VENDOR,
46-
VITEST,
4742
WITH_SENTRY,
4843
depStatsPath,
4944
rootDistPath,
@@ -85,6 +80,23 @@ const sharedOutputs = {
8580
sourcemapDebugIds: true
8681
}
8782

83+
const sharedPlugins = [
84+
// Inline process.env values.
85+
replacePlugin({
86+
delimiters: ['(?<![\'"])\\b', '(?![\'"])'],
87+
preventAssignment: true,
88+
values: [[SOCKET_CLI_TEST_DIST_BUILD, 'false']].reduce(
89+
(obj, { 0: name, 1: value }) => {
90+
obj[`process.env.${name}`] = value
91+
obj[`process.env['${name}']`] = value
92+
obj[`process.env[${name}]`] = value
93+
return obj
94+
},
95+
{}
96+
)
97+
})
98+
]
99+
88100
async function copyInitGradle() {
89101
const filepath = path.join(rootSrcPath, 'commands/manifest/init.gradle')
90102
const destPath = path.join(rootDistPath, 'init.gradle')
@@ -103,28 +115,6 @@ async function getSentryManifest() {
103115
return _sentryManifest
104116
}
105117

106-
let _socketVersionHash
107-
function getSocketVersionHash() {
108-
if (_socketVersionHash === undefined) {
109-
const randUuidSegment = randomUUID().split('-')[0]
110-
const { version } = readPackageJsonSync(rootPath)
111-
let gitHash = ''
112-
try {
113-
gitHash = spawnSync('git', ['rev-parse', '--short', 'HEAD'], {
114-
encoding: 'utf8'
115-
}).stdout.trim()
116-
} catch {}
117-
// Make each build generate a unique version id, regardless.
118-
// Mostly for development: confirms the build refreshed. For prod builds
119-
// the git hash should suffice to identify the build.
120-
_socketVersionHash = `${version}:${gitHash}:${randUuidSegment}${
121-
// Lazily access constants.ENV[SOCKET_CLI_PUBLISHED_BUILD].
122-
constants.ENV[SOCKET_CLI_PUBLISHED_BUILD] ? ':pub' : ':dev'
123-
}`
124-
}
125-
return _socketVersionHash
126-
}
127-
128118
async function globDtsAndMapFiles(namePattern, srcPath) {
129119
return await tinyGlob([`**/${namePattern}{.d.ts{.map,},.js.map}`], {
130120
absolute: true,
@@ -351,52 +341,7 @@ export default () => {
351341
return true
352342
},
353343
plugins: [
354-
// Inline process.env values.
355-
replacePlugin({
356-
delimiters: ['(?<![\'"])\\b', '(?![\'"])'],
357-
preventAssignment: true,
358-
values: [
359-
[
360-
SOCKET_CLI_VERSION_HASH,
361-
() => JSON.stringify(getSocketVersionHash())
362-
],
363-
[
364-
SOCKET_CLI_LEGACY_BUILD,
365-
() =>
366-
JSON.stringify(
367-
// Lazily access constants.ENV[SOCKET_CLI_LEGACY_BUILD].
368-
!!constants.ENV[SOCKET_CLI_LEGACY_BUILD]
369-
)
370-
],
371-
[
372-
SOCKET_CLI_PUBLISHED_BUILD,
373-
() =>
374-
JSON.stringify(
375-
// Lazily access constants.ENV[SOCKET_CLI_PUBLISHED_BUILD].
376-
!!constants.ENV[SOCKET_CLI_PUBLISHED_BUILD]
377-
)
378-
],
379-
[
380-
SOCKET_CLI_SENTRY_BUILD,
381-
() =>
382-
JSON.stringify(
383-
// Lazily access constants.ENV[SOCKET_CLI_SENTRY_BUILD].
384-
!!constants.ENV[SOCKET_CLI_SENTRY_BUILD]
385-
)
386-
],
387-
[
388-
VITEST,
389-
() =>
390-
// Lazily access constants.ENV[TAP].
391-
!!constants.ENV[VITEST]
392-
]
393-
].reduce((obj, { 0: name, 1: value }) => {
394-
obj[`process.env.${name}`] = value
395-
obj[`process.env['${name}']`] = value
396-
obj[`process.env[${name}]`] = value
397-
return obj
398-
}, {})
399-
}),
344+
...sharedPlugins,
400345
{
401346
async generateBundle(_options, bundle) {
402347
for (const basename of Object.keys(bundle)) {
@@ -425,6 +370,7 @@ export default () => {
425370
]
426371
})
427372

373+
const keptRequireDtsMapFiles = new Set()
428374
const requireConfig = baseConfig({
429375
input: {
430376
...sharedInputs
@@ -436,23 +382,32 @@ export default () => {
436382
}
437383
],
438384
plugins: [
385+
...sharedPlugins,
439386
{
440387
async generateBundle(_options, bundle) {
441388
for (const basename of Object.keys(bundle)) {
442389
const data = bundle[basename]
443-
if (
444-
data.type === 'chunk' &&
445-
basename !== VENDOR_JS &&
446-
!data.code.includes(`'./${VENDOR_JS}'`)
447-
) {
448-
data.code = createStubCode(`../${MODULE_SYNC}/${basename}`)
390+
if (data.type === 'chunk') {
391+
if (
392+
basename !== VENDOR_JS &&
393+
!data.code.includes(`'./${VENDOR_JS}'`)
394+
) {
395+
data.code = createStubCode(`../${MODULE_SYNC}/${basename}`)
396+
} else {
397+
keptRequireDtsMapFiles.add(
398+
path.basename(basename, path.extname(basename))
399+
)
400+
}
449401
}
450402
}
451403
},
452404
async writeBundle() {
453405
await Promise.all([
454406
updateDepStats(requireConfig.meta.depStats),
455-
removeDtsAndMapFiles('*', distRequirePath),
407+
removeDtsAndMapFiles(
408+
`!(${[...keptRequireDtsMapFiles].sort(naturalCompare).join('|')})`,
409+
distRequirePath
410+
),
456411
moveDtsAndMapFiles(CONSTANTS, distModuleSyncPath, rootDistPath)
457412
])
458413
await Promise.all([

.config/rollup.test.config.mjs

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import replacePlugin from '@rollup/plugin-replace'
2+
13
import { isValidPackageName } from '@socketsecurity/registry/lib/packages'
24
import { isRelative } from '@socketsecurity/registry/lib/path'
35

@@ -9,7 +11,8 @@ import {
911
normalizeId
1012
} from '../scripts/utils/packages.js'
1113

12-
const { BABEL_RUNTIME, ROLLUP_EXTERNAL_SUFFIX } = constants
14+
const { BABEL_RUNTIME, ROLLUP_EXTERNAL_SUFFIX, SOCKET_CLI_TEST_DIST_BUILD } =
15+
constants
1316

1417
export default () => {
1518
// Lazily access constants.rootSrcPath
@@ -54,6 +57,22 @@ export default () => {
5457
return true
5558
}
5659
}
57-
: {})
60+
: {}),
61+
plugins: [
62+
// Inline process.env values.
63+
replacePlugin({
64+
delimiters: ['(?<![\'"])\\b', '(?![\'"])'],
65+
preventAssignment: true,
66+
values: [[SOCKET_CLI_TEST_DIST_BUILD, 'true']].reduce(
67+
(obj, { 0: name, 1: value }) => {
68+
obj[`process.env.${name}`] = value
69+
obj[`process.env['${name}']`] = value
70+
obj[`process.env[${name}]`] = value
71+
return obj
72+
},
73+
{}
74+
)
75+
})
76+
]
5877
})
5978
}

0 commit comments

Comments
 (0)