Skip to content

Commit 1438795

Browse files
authored
chore(node): Fix DEP0190 (#506)
1 parent 81259ac commit 1438795

File tree

22 files changed

+135
-130
lines changed

22 files changed

+135
-130
lines changed

package.json

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,14 @@
3131
"install:ci": "concurrently -g -c auto -n install:fw:ci \"yarn install --inline-builds\" npm:install:crwrsca:ci",
3232
"install:crwrsca": "yarn --cwd packages/create-cedar-rsc-app install",
3333
"install:crwrsca:ci": "yarn --cwd packages/create-cedar-rsc-app install --inline-builds",
34-
"lint": "concurrently -c auto npm:lint:fw npm:lint:crwrsca",
34+
"lint": "concurrently -c auto npm:lint:fw npm:lint:templates npm:lint:crwrsca",
3535
"lint:crwrsca": "yarn --cwd packages/create-cedar-rsc-app run lint",
36-
"lint:fix": "yarn lint --fix",
37-
"lint:fw": "cross-env RWJS_CWD=packages/create-cedar-app/templates/ts eslint --config .eslintrc.js --ignore-pattern Routes.jsx --ignore-pattern create-cedar-rsc-app packages",
36+
"lint:crwrsca:fix": "yarn --cwd packages/create-cedar-rsc-app run lint --fix",
37+
"lint:fix": "concurrently -c auto npm:lint:fw:fix npm:lint:templates:fix npm:lint:crwrsca:fix",
38+
"lint:fw": "eslint --config .eslintrc.js --ignore-pattern Routes.jsx --ignore-pattern create-cedar-rsc-app --ignore-pattern packages/create-cedar-app/templates --no-eslintrc packages",
39+
"lint:fw:fix": "eslint --config .eslintrc.js --ignore-pattern Routes.jsx --ignore-pattern create-cedar-rsc-app --ignore-pattern packages/create-cedar-app/templates --no-eslintrc packages --fix",
40+
"lint:templates": "concurrently -c auto \"cd packages/create-cedar-app/templates/ts && npx eslint .\" \"cd packages/create-cedar-app/templates/js && npx eslint .\" \"cd packages/create-cedar-app/templates/esm-ts && npx eslint .\" \"cd packages/create-cedar-app/templates/esm-js && npx eslint .\"",
41+
"lint:templates:fix": "concurrently -c auto \"cd packages/create-cedar-app/templates/ts && npx eslint . --fix\" \"cd packages/create-cedar-app/templates/js && npx eslint . --fix\" \"cd packages/create-cedar-app/templates/esm-ts && npx eslint . --fix\" \"cd packages/create-cedar-app/templates/esm-js && npx eslint . --fix\"",
3842
"project:copy": "node ./tasks/framework-tools/frameworkFilesToProject.mjs",
3943
"project:deps": "node ./tasks/framework-tools/frameworkDepsToProject.mjs",
4044
"project:sync": "node ./tasks/framework-tools/frameworkSyncToProject.mjs",

packages/cli/src/commands/__tests__/test.test.js

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ afterEach(() => {
3939
test('Runs tests for all available sides if no filter passed', async () => {
4040
await handler({})
4141

42-
expect(execa.mock.results[0].value.cmd).toBe('yarn jest')
42+
expect(execa.mock.results[0].value.cmd).toBe('yarn')
43+
expect(execa.mock.results[0].value.params).toContain('jest')
4344
expect(execa.mock.results[0].value.params).toContain('web')
4445
expect(execa.mock.results[0].value.params).toContain('api')
4546
})
@@ -50,9 +51,10 @@ test('Syncs or creates test database when the flag --db-push is set to true', as
5051
dbPush: true,
5152
})
5253

53-
expect(execa.mock.results[0].value.cmd).toBe('yarn jest')
54-
55-
expect(execa.mock.results[0].value.params).toContain('--projects', 'api')
54+
expect(execa.mock.results[0].value.cmd).toBe('yarn')
55+
expect(execa.mock.results[0].value.params).toContain('jest')
56+
expect(execa.mock.results[0].value.params).toContain('--projects')
57+
expect(execa.mock.results[0].value.params).toContain('api')
5658
})
5759

5860
test('Skips test database sync/creation when the flag --db-push is set to false', async () => {
@@ -61,15 +63,17 @@ test('Skips test database sync/creation when the flag --db-push is set to false'
6163
dbPush: false,
6264
})
6365

64-
expect(execa.mock.results[0].value.cmd).toBe('yarn jest')
66+
expect(execa.mock.results[0].value.cmd).toBe('yarn')
67+
expect(execa.mock.results[0].value.params).toContain('jest')
6568
})
6669

6770
test('Runs tests for all available sides if no side filter passed', async () => {
6871
await handler({
6972
filter: ['bazinga'],
7073
})
7174

72-
expect(execa.mock.results[0].value.cmd).toBe('yarn jest')
75+
expect(execa.mock.results[0].value.cmd).toBe('yarn')
76+
expect(execa.mock.results[0].value.params).toContain('jest')
7377
expect(execa.mock.results[0].value.params).toContain('bazinga')
7478
expect(execa.mock.results[0].value.params).toContain('web')
7579
expect(execa.mock.results[0].value.params).toContain('api')
@@ -83,7 +87,8 @@ test('Runs tests specified side if even with additional filters', async () => {
8387
expect(execa.mock.results[0].value.cmd).not.toBe('yarn rw')
8488
expect(execa.mock.results[0].value.params).not.toContain('api')
8589

86-
expect(execa.mock.results[0].value.cmd).toBe('yarn jest')
90+
expect(execa.mock.results[0].value.cmd).toBe('yarn')
91+
expect(execa.mock.results[0].value.params).toContain('jest')
8792
expect(execa.mock.results[0].value.params).toContain('bazinga')
8893
expect(execa.mock.results[0].value.params).toContain('web')
8994
})
@@ -93,15 +98,17 @@ test('Does not create db when calling test with just web', async () => {
9398
filter: ['web'],
9499
})
95100

96-
expect(execa.mock.results[0].value.cmd).toBe('yarn jest')
101+
expect(execa.mock.results[0].value.cmd).toBe('yarn')
102+
expect(execa.mock.results[0].value.params).toContain('jest')
97103
})
98104

99105
test('Passes filter param to jest command if passed', async () => {
100106
await handler({
101107
filter: ['web', 'bazinga'],
102108
})
103109

104-
expect(execa.mock.results[0].value.cmd).toBe('yarn jest')
110+
expect(execa.mock.results[0].value.cmd).toBe('yarn')
111+
expect(execa.mock.results[0].value.params).toContain('jest')
105112
expect(execa.mock.results[0].value.params).toContain('bazinga')
106113
})
107114

@@ -113,7 +120,8 @@ test('Passes other flags to jest', async () => {
113120
collectCoverage: true,
114121
})
115122

116-
expect(execa.mock.results[0].value.cmd).toBe('yarn jest')
123+
expect(execa.mock.results[0].value.cmd).toBe('yarn')
124+
expect(execa.mock.results[0].value.params).toContain('jest')
117125
expect(execa.mock.results[0].value.params).toContain('-u')
118126
expect(execa.mock.results[0].value.params).toContain('--debug')
119127
expect(execa.mock.results[0].value.params).toContain('--json')
@@ -127,7 +135,8 @@ test('Passes values of other flags to jest', async () => {
127135
})
128136

129137
// Second command because api side runs
130-
expect(execa.mock.results[0].value.cmd).toBe('yarn jest')
138+
expect(execa.mock.results[0].value.cmd).toBe('yarn')
139+
expect(execa.mock.results[0].value.params).toContain('jest')
131140

132141
// Note that these below tests aren't the best, since they don't check for order
133142
// But I'm making sure only 2 extra params get passed

packages/cli/src/commands/__tests__/testEsm.test.js

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ afterEach(() => {
2828
test('Runs tests for all available sides if no filter passed', async () => {
2929
await handler({})
3030

31-
expect(execa.mock.results[0].value.cmd).toBe('yarn vitest')
31+
expect(execa.mock.results[0].value.cmd).toBe('yarn')
32+
expect(execa.mock.results[0].value.params).toContain('vitest')
3233
expect(execa.mock.results[0].value.params).toContain('web')
3334
expect(execa.mock.results[0].value.params).toContain('api')
3435
})
@@ -39,8 +40,9 @@ test('Syncs or creates test database when the flag --db-push is set to true', as
3940
dbPush: true,
4041
})
4142

42-
expect(execa.mock.results[0].value.cmd).toBe('yarn vitest')
43+
expect(execa.mock.results[0].value.cmd).toBe('yarn')
4344

45+
expect(execa.mock.results[0].value.params).toContain('vitest')
4446
expect(execa.mock.results[0].value.params).toEqual(
4547
expect.arrayContaining(['--project', 'api']),
4648
)
@@ -52,15 +54,17 @@ test('Skips test database sync/creation when the flag --db-push is set to false'
5254
dbPush: false,
5355
})
5456

55-
expect(execa.mock.results[0].value.cmd).toBe('yarn vitest')
57+
expect(execa.mock.results[0].value.cmd).toBe('yarn')
58+
expect(execa.mock.results[0].value.params).toContain('vitest')
5659
})
5760

5861
test('Runs tests for all available sides if no side filter passed', async () => {
5962
await handler({
6063
filter: ['bazinga'],
6164
})
6265

63-
expect(execa.mock.results[0].value.cmd).toBe('yarn vitest')
66+
expect(execa.mock.results[0].value.cmd).toBe('yarn')
67+
expect(execa.mock.results[0].value.params).toContain('vitest')
6468
expect(execa.mock.results[0].value.params).toContain('bazinga')
6569
expect(execa.mock.results[0].value.params).toContain('web')
6670
expect(execa.mock.results[0].value.params).toContain('api')
@@ -74,7 +78,8 @@ test('Runs tests specified side even with additional filters', async () => {
7478
expect(execa.mock.results[0].value.cmd).not.toBe('yarn rw')
7579
expect(execa.mock.results[0].value.params).not.toContain('api')
7680

77-
expect(execa.mock.results[0].value.cmd).toBe('yarn vitest')
81+
expect(execa.mock.results[0].value.cmd).toBe('yarn')
82+
expect(execa.mock.results[0].value.params).toContain('vitest')
7883
expect(execa.mock.results[0].value.params).toContain('bazinga')
7984
expect(execa.mock.results[0].value.params).toContain('web')
8085
})
@@ -84,15 +89,17 @@ test('Does not create db when calling test with just web', async () => {
8489
filter: ['web'],
8590
})
8691

87-
expect(execa.mock.results[0].value.cmd).toBe('yarn vitest')
92+
expect(execa.mock.results[0].value.cmd).toBe('yarn')
93+
expect(execa.mock.results[0].value.params).toContain('vitest')
8894
})
8995

9096
test('Passes filter param to vitest command if passed', async () => {
9197
await handler({
9298
filter: ['web', 'bazinga'],
9399
})
94100

95-
expect(execa.mock.results[0].value.cmd).toBe('yarn vitest')
101+
expect(execa.mock.results[0].value.cmd).toBe('yarn')
102+
expect(execa.mock.results[0].value.params).toContain('vitest')
96103
expect(execa.mock.results[0].value.params).toContain('bazinga')
97104
})
98105

@@ -105,7 +112,8 @@ test('Passes other flags to vitest', async () => {
105112
watch: true,
106113
})
107114

108-
expect(execa.mock.results[0].value.cmd).toBe('yarn vitest')
115+
expect(execa.mock.results[0].value.cmd).toBe('yarn')
116+
expect(execa.mock.results[0].value.params).toContain('vitest')
109117
expect(execa.mock.results[0].value.params).toContain('-u')
110118
expect(execa.mock.results[0].value.params).toContain('--debug')
111119
expect(execa.mock.results[0].value.params).toContain('--json')
@@ -120,7 +128,8 @@ test('Passes values of other flags to vitest', async () => {
120128
})
121129

122130
// Second command because api side runs
123-
expect(execa.mock.results[0].value.cmd).toBe('yarn vitest')
131+
expect(execa.mock.results[0].value.cmd).toBe('yarn')
132+
expect(execa.mock.results[0].value.params).toContain('vitest')
124133

125134
// Note that these below tests aren't the best, since they don't check for order
126135
// But I'm making sure only 2 extra params get passed

packages/cli/src/commands/generate.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,10 @@ export const description = 'Generate boilerplate code and type definitions'
2828
export const builder = (yargs) =>
2929
yargs
3030
.command('types', 'Generate supplementary code', {}, () => {
31-
recordTelemetryAttributes({
32-
command: 'generate types',
33-
})
31+
recordTelemetryAttributes({ command: 'generate types' })
32+
3433
try {
35-
execa.sync('yarn rw-gen', { shell: true, stdio: 'inherit' })
34+
execa.sync('yarn', ['rw-gen'], { stdio: 'inherit' })
3635
} catch (error) {
3736
// rw-gen is responsible for logging its own errors but we need to
3837
// make sure we exit with a non-zero exit code

packages/cli/src/commands/generate/directive/directiveHandler.js

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -153,15 +153,10 @@ export const handler = async (args) => {
153153
task: () => {
154154
// Regenerate again at the end if we rollback changes
155155
addFunctionToRollback(async () => {
156-
await execa('yarn rw-gen', [], {
157-
stdio: 'pipe',
158-
shell: true,
159-
})
156+
await execa('yarn', ['rw-gen'], { stdio: 'pipe' })
160157
}, true)
161-
return execa('yarn rw-gen', [], {
162-
stdio: 'inherit',
163-
shell: true,
164-
})
158+
159+
return execa('yarn', ['rw-gen'], { stdio: 'inherit' })
165160
},
166161
},
167162
{

packages/cli/src/commands/lint.js

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -40,24 +40,23 @@ export const handler = async ({ path, fix, format }) => {
4040
try {
4141
const pathString = path?.join(' ')
4242
const sbPath = getPaths().web.storybook
43-
const result = await execa(
44-
'yarn eslint',
45-
[
46-
fix && '--fix',
47-
`--format ${format}`,
48-
!pathString && fs.existsSync(getPaths().web.src) && 'web/src',
49-
!pathString && fs.existsSync(getPaths().web.config) && 'web/config',
50-
!pathString && fs.existsSync(sbPath) && 'web/.storybook',
51-
!pathString && fs.existsSync(getPaths().scripts) && 'scripts',
52-
!pathString && fs.existsSync(getPaths().api.src) && 'api/src',
53-
pathString,
54-
].filter(Boolean),
55-
{
56-
cwd: getPaths().base,
57-
shell: true,
58-
stdio: 'inherit',
59-
},
60-
)
43+
const args = [
44+
'eslint',
45+
fix && '--fix',
46+
'--format',
47+
format,
48+
!pathString && fs.existsSync(getPaths().web.src) && 'web/src',
49+
!pathString && fs.existsSync(getPaths().web.config) && 'web/config',
50+
!pathString && fs.existsSync(sbPath) && 'web/.storybook',
51+
!pathString && fs.existsSync(getPaths().scripts) && 'scripts',
52+
!pathString && fs.existsSync(getPaths().api.src) && 'api/src',
53+
pathString,
54+
].filter(Boolean)
55+
56+
const result = await execa('yarn', args, {
57+
cwd: getPaths().base,
58+
stdio: 'inherit',
59+
})
6160

6261
process.exitCode = result.exitCode
6362
} catch (error) {

packages/cli/src/commands/prismaHandler.js

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -70,16 +70,12 @@ export const handler = async ({ _, $0, commands = [], ...options }) => {
7070
console.log()
7171

7272
try {
73-
execa.sync(
74-
`"${path.join(rwjsPaths.base, 'node_modules/.bin/prisma')}"`,
75-
args,
76-
{
77-
shell: true,
78-
cwd: rwjsPaths.base,
79-
stdio: 'inherit',
80-
cleanup: true,
81-
},
82-
)
73+
const prismaBin = path.join(rwjsPaths.base, 'node_modules/.bin/prisma')
74+
execa.sync(prismaBin, args, {
75+
cwd: rwjsPaths.base,
76+
stdio: 'inherit',
77+
cleanup: true,
78+
})
8379

8480
if (hasHelpOption || commands.length === 0) {
8581
printWrapInfo()

packages/cli/src/commands/serveBothHandler.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ export const bothServerFileHandler = async (argv) => {
2525
await execa('yarn', ['rw-serve-fe'], {
2626
cwd: getPaths().web.base,
2727
stdio: 'inherit',
28-
shell: true,
2928
})
3029
} else {
3130
argv.apiPort ??= getAPIPort()
@@ -91,7 +90,6 @@ export const bothSsrRscServerHandler = async (argv, rscEnabled) => {
9190
const fePromise = execa('yarn', ['rw-serve-fe'], {
9291
cwd: getPaths().web.base,
9392
stdio: 'inherit',
94-
shell: true,
9593
env: rscEnabled
9694
? {
9795
// TODO (RSC): Is this how we want to do it? If so, we need to find a way

packages/cli/src/commands/serveWebHandler.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ export const webSsrServerHandler = async (rscEnabled) => {
66
await execa('yarn', ['rw-serve-fe'], {
77
cwd: getPaths().web.base,
88
stdio: 'inherit',
9-
shell: true,
109
env: rscEnabled
1110
? {
1211
// TODO (RSC): Is this how we want to do it? If so, we need to find a way

packages/cli/src/commands/testHandler.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,9 +151,8 @@ export const handler = async ({
151151
// so we're running it via execa, since `jest.run()` is a bit unstable.
152152
// https://github.com/facebook/jest/issues/5048
153153
const runCommand = async () => {
154-
await execa('yarn jest', jestArgs, {
154+
await execa('yarn', ['jest', ...jestArgs], {
155155
cwd: rwjsPaths.base,
156-
shell: true,
157156
stdio: 'inherit',
158157
env: { DATABASE_URL },
159158
})

0 commit comments

Comments
 (0)