@jakubmazanec/carson-templates 2.3.0-unstable.4bf461a → 2.3.0-unstable.4d7b7cd

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jakubmazanec/carson-templates",
3
- "version": "2.3.0-unstable.4bf461a",
3
+ "version": "2.3.0-unstable.4d7b7cd",
4
4
  "description": "Collection of Carson templates.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -11,12 +11,13 @@ for (let project of workspace.projects) {
11
11
  }
12
12
 
13
13
  let copyFilesLines = ['COPY package-lock.json package.json /workspace/'];
14
+ let currentProject = project;
14
15
 
15
16
  for (let project of workspace.projects) {
16
- if (project.config.deployment?.appName) {
17
+ if (project.config.deployment?.appName && project.name === currentProject.name) {
17
18
  copyFilesLines.push(`COPY --from=build /workspace/${project.relativePath}/build /workspace/${project.relativePath}/build`);
18
19
  copyFilesLines.push(`COPY --from=build /workspace/${project.relativePath}/package.json /workspace/${project.relativePath}/package.json`);
19
- } else {
20
+ } else if (!project.config.deployment?.appName) {
20
21
  if (project.packageJson.bin) {
21
22
  copyFilesLines.push(`COPY --from=build /workspace/${project.relativePath}/bin /workspace/${project.relativePath}/bin`);
22
23
  }
@@ -56,7 +57,17 @@ RUN npm ci --include=dev --ignore-scripts
56
57
  COPY --link . .
57
58
 
58
59
  # Build
59
- RUN npm run build
60
+ <%
61
+ if (project.config.deployment?.dbInstance) {
62
+ -%>
63
+ RUN --mount=type=secret,id=EDGEDB_INSTANCE --mount=type=secret,id=EDGEDB_SECRET_KEY EDGEDB_INSTANCE="$(cat /run/secrets/EDGEDB_INSTANCE)" EDGEDB_SECRET_KEY="$(cat /run/secrets/EDGEDB_SECRET_KEY)" npm run build
64
+ <%
65
+ } else {
66
+ -%>
67
+ RUN npm run build -- --filter=<%- project.name %>
68
+ <%
69
+ }
70
+ -%>
60
71
 
61
72
  # Final stage for app image
62
73
  FROM base
@@ -68,6 +79,6 @@ FROM base
68
79
  RUN npm ci --omit=dev --ignore-scripts
69
80
 
70
81
  # Start the server
71
- WORKDIR /workspace/apps/somewhere
82
+ WORKDIR /workspace/<%- project.relativePath %>
72
83
  EXPOSE 5000
73
84
  ENTRYPOINT ["npm", "start"]
@@ -12,8 +12,9 @@ let tsconfig = lodash.merge(
12
12
  noEmit: true,
13
13
  resolveJsonModule: true,
14
14
  rootDir: '.',
15
+ exactOptionalPropertyTypes: project.config.deployment?.dbInstance ? false : true, // TODO: when EdgeDB client supports `exactOptionalPropertyTypes: true`, remove this line
15
16
  },
16
- include: ['./env.d.ts', './*', './app/**/*'],
17
+ include: project.config.deployment?.dbInstance ? ['./app/**/*', './dbschema/**/*', './*'] : ['./app/**/*', './*'],
17
18
  references: getReferences(workspace, project),
18
19
  },
19
20
  project.config.overrides?.tsconfig ?? {},
@@ -2,6 +2,19 @@
2
2
  to: 'tsconfig.typecheck.json'
3
3
  strategy: overwrite
4
4
  ---
5
+ <%
6
+ let tsconfig = lodash.merge(
7
+ {
8
+ extends: './tsconfig.json',
9
+ compilerOptions: {
10
+ composite: false,
11
+ },
12
+ include: project.config.deployment?.dbInstance ? ['./app/**/*', './dbschema/**/*', './tests/**/*', './*'] : ['./app/**/*', './tests/**/*', './*'],
13
+ references: getReferences(workspace, project),
14
+ },
15
+ project.config.overrides?.tsconfig ?? {},
16
+ );
17
+ -%>
5
18
  //
6
19
  // DO NOT EDIT!
7
20
  // This file was autogenerated by Carson.
@@ -10,10 +23,4 @@ strategy: overwrite
10
23
  // Run `npx carson update workspace` to regenerate.
11
24
  //
12
25
 
13
- {
14
- "extends": "./tsconfig.json",
15
- "compilerOptions": {
16
- "composite": false
17
- },
18
- "include": ["./app/**/*", "./tests/**/*", "./*"]
19
- }
26
+ <%- JSON.stringify(tsconfig, null, 2) %>
@@ -9,7 +9,17 @@ let lines = [];
9
9
  for (let project of workspace.projects) {
10
10
  if (project.config.deployment?.appName) {
11
11
  lines.push(`!${project.relativePath}/app/**`);
12
+
13
+ if (project.config.deployment?.dbInstance) {
14
+ lines.push(`!${project.relativePath}/dbschema/**`);
15
+ }
16
+
12
17
  lines.push(`!${project.relativePath}/public/**`);
18
+
19
+ if (project.config.deployment?.dbInstance) {
20
+ lines.push(`!${project.relativePath}/edgedb.toml`);
21
+ }
22
+
13
23
  lines.push(`!${project.relativePath}/env.d.ts`);
14
24
  lines.push(`!${project.relativePath}/package.json`);
15
25
  lines.push(`!${project.relativePath}/postcss.config.cjs`);
@@ -97,12 +97,12 @@ for (let project of workspace.projects) {
97
97
  -%>
98
98
 
99
99
  - name: Run tests
100
+ run: |
101
+ npm run test -- --filter=<%- project.name %>
100
102
  env:
101
103
  EDGEDB_INSTANCE: <%- project.config.deployment.dbInstance %>
102
104
  EDGEDB_BRANCH: ${{ github.head_ref }}
103
105
  EDGEDB_SECRET_KEY: ${{ secrets.<%- lodash.snakeCase(project.config.deployment.dbInstance.split('/')[1] ?? '').toUpperCase() %>_EDGEDB_TOKEN }}
104
- run: |
105
- npm run codegen --workspace <%- project.name %>
106
106
  <%
107
107
  }
108
108
  }
@@ -2,6 +2,21 @@
2
2
  to: '.github/workflows/release-pull-request.yaml'
3
3
  strategy: overwrite
4
4
  ---
5
+ <%
6
+ let appsWithDb = [];
7
+
8
+ for (let project of workspace.projects) {
9
+ if (project.config.deployment?.dbInstance) {
10
+ appsWithDb.push(project.name);
11
+ }
12
+ }
13
+
14
+ let appsWithDbFilter = appsWithDb.map((name) => `--filter=!${name}`).join(' ');
15
+
16
+ if (appsWithDbFilter) {
17
+ appsWithDbFilter = `-- ${appsWithDbFilter}`;
18
+ }
19
+ -%>
5
20
  #
6
21
  # DO NOT EDIT!
7
22
  # This file was autogenerated by Carson.
@@ -47,28 +62,20 @@ jobs:
47
62
  registry-url: 'https://registry.npmjs.org'
48
63
 
49
64
  <%
50
- if (workspace.projects.some((project) => project.config.deployment?.dbInstance)) {
65
+ if (workspace.projects.some((project) => project.config.deployment?.appName)) {
51
66
  -%>
52
67
 
53
- - uses: edgedb/setup-edgedb@v1
54
- with:
55
- server-version: none
68
+ - uses: superfly/flyctl-actions/setup-flyctl@master
56
69
  <%
57
70
  }
58
71
 
59
- for (let project of workspace.projects) {
60
- if (project.config.deployment?.dbInstance) {
72
+ if (workspace.projects.some((project) => project.config.deployment?.dbInstance)) {
61
73
  -%>
62
74
 
63
- - name: Authenticate EdgeDB Cloud
64
- env:
65
- EDGEDB_INSTANCE: <%- project.config.deployment.dbInstance %>
66
- EDGEDB_BRANCH: ${{ github.head_ref }}
67
- EDGEDB_SECRET_KEY: ${{ secrets.<%- lodash.snakeCase(project.config.deployment.dbInstance.split('/')[1] ?? '').toUpperCase() %>_EDGEDB_TOKEN }}
68
- run: |
69
- edgedb project init --link --server-instance <%- project.config.deployment.dbInstance %> --project-dir <%- project.relativePath %>--non-interactive
75
+ - uses: edgedb/setup-edgedb@v1
76
+ with:
77
+ server-version: none
70
78
  <%
71
- }
72
79
  }
73
80
  -%>
74
81
 
@@ -90,7 +97,24 @@ for (let project of workspace.projects) {
90
97
  git config --unset core.filemode
91
98
 
92
99
  - name: Run tests
93
- run: npm test
100
+ run: npm test <%- appsWithDbFilter %>
101
+
102
+ <%
103
+ for (let project of workspace.projects) {
104
+ if (project.config.deployment?.dbInstance) {
105
+ -%>
106
+
107
+ - name: Run tests
108
+ run: |
109
+ npm run test -- --filter=<%- project.name %>
110
+ env:
111
+ EDGEDB_INSTANCE: <%- project.config.deployment.dbInstance %>
112
+ EDGEDB_BRANCH: ${{ github.head_ref }}
113
+ EDGEDB_SECRET_KEY: ${{ secrets.<%- lodash.snakeCase(project.config.deployment.dbInstance.split('/')[1] ?? '').toUpperCase() %>_EDGEDB_TOKEN }}
114
+ <%
115
+ }
116
+ }
117
+ -%>
94
118
 
95
119
  - name: Check for changes
96
120
  run: |
@@ -107,7 +131,24 @@ for (let project of workspace.projects) {
107
131
  git config --unset core.filemode
108
132
 
109
133
  - name: Build packages
110
- run: npm run build
134
+ run: npm run build <%- appsWithDbFilter %>
135
+
136
+ <%
137
+ for (let project of workspace.projects) {
138
+ if (project.config.deployment?.dbInstance) {
139
+ -%>
140
+
141
+ - name: Build <%- project.name %>
142
+ run: |
143
+ npm run build -- --filter=<%- project.name %>
144
+ env:
145
+ EDGEDB_INSTANCE: <%- project.config.deployment.dbInstance %>
146
+ EDGEDB_BRANCH: ${{ github.head_ref }}
147
+ EDGEDB_SECRET_KEY: ${{ secrets.<%- lodash.snakeCase(project.config.deployment.dbInstance.split('/')[1] ?? '').toUpperCase() %>_EDGEDB_TOKEN }}
148
+ <%
149
+ }
150
+ }
151
+ -%>
111
152
 
112
153
  - name: Authenticate to npm registry
113
154
  run: |
@@ -130,19 +171,25 @@ for (let project of workspace.projects) {
130
171
  NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
131
172
  NPM_CONFIG_PROVENANCE: 'true' # must be string, not boolean
132
173
  <%
133
- if (workspace.projects.some((project) => project.config.deployment?.appName)) {
174
+ for (let project of workspace.projects) {
175
+ if (project.config.deployment?.appName && project.config.deployment?.dbInstance) {
134
176
  -%>
135
177
 
136
- - uses: superfly/flyctl-actions/setup-flyctl@master
178
+ - name: Deploy <%- project.name %>
179
+ run: |
180
+ npm run deploy --workspace <%- project.name %> -- --app <%- project.config.deployment?.appName %>-unstable --build-secret "EDGEDB_INSTANCE=$EDGEDB_INSTANCE" --build-secret "EDGEDB_SECRET_KEY=$EDGEDB_SECRET_KEY"
181
+ env:
182
+ FLY_ACCESS_TOKEN: ${{ secrets.FLY_TOKEN }}
183
+ FLY_API_TOKEN: ${{ secrets.FLY_TOKEN }}
184
+ EDGEDB_INSTANCE: <%- project.config.deployment.dbInstance %>
185
+ EDGEDB_BRANCH: ${{ github.head_ref }}
186
+ EDGEDB_SECRET_KEY: ${{ secrets.<%- lodash.snakeCase(project.config.deployment.dbInstance.split('/')[1] ?? '').toUpperCase() %>_EDGEDB_TOKEN }}
137
187
  <%
138
- }
139
-
140
- for (let project of workspace.projects) {
141
- if (project.config.deployment?.appName) {
188
+ } else if (project.config.deployment?.appName) {
142
189
  -%>
143
190
 
144
191
  - name: Deploy <%- project.name %>
145
- run:
192
+ run: |
146
193
  npm run deploy --workspace <%- project.name %> -- --app <%- project.config.deployment?.appName %>-unstable
147
194
  env:
148
195
  FLY_ACCESS_TOKEN: ${{ secrets.FLY_TOKEN }}
@@ -2,6 +2,21 @@
2
2
  to: '.github/workflows/release.yaml'
3
3
  strategy: overwrite
4
4
  ---
5
+ <%
6
+ let appsWithDb = [];
7
+
8
+ for (let project of workspace.projects) {
9
+ if (project.config.deployment?.dbInstance) {
10
+ appsWithDb.push(project.name);
11
+ }
12
+ }
13
+
14
+ let appsWithDbFilter = appsWithDb.map((name) => `--filter=!${name}`).join(' ');
15
+
16
+ if (appsWithDbFilter) {
17
+ appsWithDbFilter = `-- ${appsWithDbFilter}`;
18
+ }
19
+ -%>
5
20
  #
6
21
  # DO NOT EDIT!
7
22
  # This file was autogenerated by Carson.
@@ -43,6 +58,24 @@ jobs:
43
58
  node-version: 20
44
59
  registry-url: 'https://registry.npmjs.org'
45
60
 
61
+ <%
62
+ if (workspace.projects.some((project) => project.config.deployment?.appName)) {
63
+ -%>
64
+
65
+ - uses: superfly/flyctl-actions/setup-flyctl@master
66
+ <%
67
+ }
68
+
69
+ if (workspace.projects.some((project) => project.config.deployment?.dbInstance)) {
70
+ -%>
71
+
72
+ - uses: edgedb/setup-edgedb@v1
73
+ with:
74
+ server-version: none
75
+ <%
76
+ }
77
+ -%>
78
+
46
79
  - name: Install packages
47
80
  run: npm ci
48
81
 
@@ -60,8 +93,42 @@ jobs:
60
93
 
61
94
  git config --unset core.filemode
62
95
 
96
+ <%
97
+ for (let project of workspace.projects) {
98
+ if (project.config.deployment?.dbInstance) {
99
+ -%>
100
+
101
+ - name: Migrate "<%- project.name %>"
102
+ run: |
103
+ edgedb migrate
104
+ env:
105
+ EDGEDB_INSTANCE: <%- project.config.deployment.dbInstance %>
106
+ EDGEDB_BRANCH: ${{ github.ref_name }}
107
+ EDGEDB_SECRET_KEY: ${{ secrets.<%- lodash.snakeCase(project.config.deployment.dbInstance.split('/')[1] ?? '').toUpperCase() %>_EDGEDB_TOKEN }}
108
+ <%
109
+ }
110
+ }
111
+ -%>
112
+
63
113
  - name: Run tests
64
- run: npm test
114
+ run: npm test <%- appsWithDbFilter %>
115
+
116
+ <%
117
+ for (let project of workspace.projects) {
118
+ if (project.config.deployment?.dbInstance) {
119
+ -%>
120
+
121
+ - name: Run tests
122
+ run: |
123
+ npm run test -- --filter=<%- project.name %>
124
+ env:
125
+ EDGEDB_INSTANCE: <%- project.config.deployment.dbInstance %>
126
+ EDGEDB_BRANCH: ${{ github.head_ref }}
127
+ EDGEDB_SECRET_KEY: ${{ secrets.<%- lodash.snakeCase(project.config.deployment.dbInstance.split('/')[1] ?? '').toUpperCase() %>_EDGEDB_TOKEN }}
128
+ <%
129
+ }
130
+ }
131
+ -%>
65
132
 
66
133
  - name: Check for changes
67
134
  run: |
@@ -78,7 +145,7 @@ jobs:
78
145
  git config --unset core.filemode
79
146
 
80
147
  - name: Build packages
81
- run: npm run build
148
+ run: npm run build <%- appsWithDbFilter %>
82
149
 
83
150
  - name: Authenticate to npm registry
84
151
  run: |
@@ -130,46 +197,25 @@ jobs:
130
197
  git push --follow-tags
131
198
 
132
199
  <%
133
- if (workspace.projects.some((project) => project.config.deployment?.dbInstance)) {
134
- -%>
135
-
136
- - uses: edgedb/setup-edgedb@v1
137
- with:
138
- server-version: none
139
- <%
140
- }
141
-
142
200
  for (let project of workspace.projects) {
143
- if (project.config.deployment?.dbInstance) {
201
+ if (project.config.deployment?.appName && project.config.deployment?.dbInstance) {
144
202
  -%>
145
203
 
146
- - name: Migrate "<%- project.name %>"
204
+ - name: Deploy "<%- project.name %>"
205
+ run: |
206
+ npm run deploy --workspace <%- project.name %> -- --build-secret "EDGEDB_INSTANCE=$EDGEDB_INSTANCE" --build-secret "EDGEDB_SECRET_KEY=$EDGEDB_SECRET_KEY"
147
207
  env:
208
+ FLY_ACCESS_TOKEN: ${{ secrets.FLY_TOKEN }}
209
+ FLY_API_TOKEN: ${{ secrets.FLY_TOKEN }}
148
210
  EDGEDB_INSTANCE: <%- project.config.deployment.dbInstance %>
149
- EDGEDB_BRANCH: ${{ github.ref_name }}
211
+ EDGEDB_BRANCH: ${{ github.head_ref }}
150
212
  EDGEDB_SECRET_KEY: ${{ secrets.<%- lodash.snakeCase(project.config.deployment.dbInstance.split('/')[1] ?? '').toUpperCase() %>_EDGEDB_TOKEN }}
151
- run: |
152
- edgedb project init --link --server-instance <%- project.config.deployment.dbInstance %> --project-dir <%- project.relativePath %>--non-interactive
153
- edgedb migrate -I <%- project.config.deployment.dbInstance %>
154
- <%
155
- }
156
- }
157
- -%>
158
-
159
213
  <%
160
- if (workspace.projects.some((project) => project.config.deployment?.appName)) {
161
- -%>
162
-
163
- - uses: superfly/flyctl-actions/setup-flyctl@master
164
- <%
165
- }
166
-
167
- for (let project of workspace.projects) {
168
- if (project.config.deployment?.appName) {
214
+ } else if (project.config.deployment?.appName) {
169
215
  -%>
170
216
 
171
217
  - name: Deploy "<%- project.name %>"
172
- run:
218
+ run: |
173
219
  npm run deploy --workspace <%- project.name %>
174
220
  env:
175
221
  FLY_ACCESS_TOKEN: ${{ secrets.FLY_TOKEN }}
@@ -222,6 +268,24 @@ for (let project of workspace.projects) {
222
268
  node-version: 20
223
269
  registry-url: 'https://registry.npmjs.org'
224
270
 
271
+ <%
272
+ if (workspace.projects.some((project) => project.config.deployment?.appName)) {
273
+ -%>
274
+
275
+ - uses: superfly/flyctl-actions/setup-flyctl@master
276
+ <%
277
+ }
278
+
279
+ if (workspace.projects.some((project) => project.config.deployment?.dbInstance)) {
280
+ -%>
281
+
282
+ - uses: edgedb/setup-edgedb@v1
283
+ with:
284
+ server-version: none
285
+ <%
286
+ }
287
+ -%>
288
+
225
289
  - name: Install packages
226
290
  run: npm ci
227
291
 
@@ -239,8 +303,42 @@ for (let project of workspace.projects) {
239
303
 
240
304
  git config --unset core.filemode
241
305
 
306
+ <%
307
+ for (let project of workspace.projects) {
308
+ if (project.config.deployment?.dbInstance) {
309
+ -%>
310
+
311
+ - name: Migrate "<%- project.name %>"
312
+ env:
313
+ EDGEDB_INSTANCE: <%- project.config.deployment.dbInstance %>
314
+ EDGEDB_BRANCH: ${{ github.ref_name }}
315
+ EDGEDB_SECRET_KEY: ${{ secrets.<%- lodash.snakeCase(project.config.deployment.dbInstance.split('/')[1] ?? '').toUpperCase() %>_EDGEDB_TOKEN }}
316
+ run: |
317
+ edgedb migrate
318
+ <%
319
+ }
320
+ }
321
+ -%>
322
+
323
+ - name: Run tests
324
+ run: npm test <%- appsWithDbFilter %>
325
+
326
+ <%
327
+ for (let project of workspace.projects) {
328
+ if (project.config.deployment?.dbInstance) {
329
+ -%>
330
+
242
331
  - name: Run tests
243
- run: npm test
332
+ run: |
333
+ npm run test -- --filter=<%- project.name %>
334
+ env:
335
+ EDGEDB_INSTANCE: <%- project.config.deployment.dbInstance %>
336
+ EDGEDB_BRANCH: ${{ github.head_ref }}
337
+ EDGEDB_SECRET_KEY: ${{ secrets.<%- lodash.snakeCase(project.config.deployment.dbInstance.split('/')[1] ?? '').toUpperCase() %>_EDGEDB_TOKEN }}
338
+ <%
339
+ }
340
+ }
341
+ -%>
244
342
 
245
343
  - name: Check for changes
246
344
  run: |
@@ -257,7 +355,7 @@ for (let project of workspace.projects) {
257
355
  git config --unset core.filemode
258
356
 
259
357
  - name: Build packages
260
- run: npm run build
358
+ run: npm run build <%- appsWithDbFilter %>
261
359
 
262
360
  - name: Update documentation
263
361
  run: |
@@ -290,45 +388,25 @@ for (let project of workspace.projects) {
290
388
  NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
291
389
  NPM_CONFIG_PROVENANCE: 'true' # must be string, not boolean
292
390
  <%
293
- if (workspace.projects.some((project) => project.config.deployment?.dbInstance)) {
294
- -%>
295
-
296
- - uses: edgedb/setup-edgedb@v1
297
- with:
298
- server-version: none
299
- <%
300
- }
301
-
302
391
  for (let project of workspace.projects) {
303
- if (project.config.deployment?.dbInstance) {
392
+ if (project.config.deployment?.appName && project.config.deployment?.dbInstance) {
304
393
  -%>
305
394
 
306
- - name: Migrate "<%- project.name %>"
395
+ - name: Deploy "<%- project.name %>"
396
+ run: |
397
+ npm run deploy --workspace <%- project.name %> -- --app <%- project.config.deployment?.appName %>-next --build-secret "EDGEDB_INSTANCE=$EDGEDB_INSTANCE" --build-secret "EDGEDB_SECRET_KEY=$EDGEDB_SECRET_KEY"
307
398
  env:
399
+ FLY_ACCESS_TOKEN: ${{ secrets.FLY_TOKEN }}
400
+ FLY_API_TOKEN: ${{ secrets.FLY_TOKEN }}
308
401
  EDGEDB_INSTANCE: <%- project.config.deployment.dbInstance %>
309
- EDGEDB_BRANCH: ${{ github.ref_name }}
402
+ EDGEDB_BRANCH: ${{ github.head_ref }}
310
403
  EDGEDB_SECRET_KEY: ${{ secrets.<%- lodash.snakeCase(project.config.deployment.dbInstance.split('/')[1] ?? '').toUpperCase() %>_EDGEDB_TOKEN }}
311
- run: |
312
- edgedb project init --link --server-instance <%- project.config.deployment.dbInstance %> --project-dir <%- project.relativePath %>--non-interactive
313
- edgedb migrate -I <%- project.config.deployment.dbInstance %>
314
404
  <%
315
- }
316
- }
317
- -%>
318
- <%
319
- if (workspace.projects.some((project) => project.config.deployment?.appName)) {
320
- -%>
321
-
322
- - uses: superfly/flyctl-actions/setup-flyctl@master
323
- <%
324
- }
325
-
326
- for (let project of workspace.projects) {
327
- if (project.config.deployment?.appName) {
405
+ } else if (project.config.deployment?.appName) {
328
406
  -%>
329
407
 
330
408
  - name: Deploy "<%- project.name %>"
331
- run:
409
+ run: |
332
410
  npm run deploy --workspace <%- project.name %> -- --app <%- project.config.deployment?.appName %>-next
333
411
  env:
334
412
  FLY_ACCESS_TOKEN: ${{ secrets.FLY_TOKEN }}
@@ -8,7 +8,7 @@ let turboConfig = {
8
8
  pipeline: {
9
9
  build: {
10
10
  dependsOn: ['^build', 'codegen'],
11
- outputs: [`${BUILD_DIRECTORY}/**`],
11
+ outputs: [`${BUILD_DIRECTORY}/**`, 'app/**'],
12
12
  },
13
13
  clean: {
14
14
  cache: false,
@@ -33,7 +33,7 @@ let turboConfig = {
33
33
  outputs: [],
34
34
  },
35
35
  test: {
36
- dependsOn: ['^build', 'typecheck', 'lint'],
36
+ dependsOn: ['^build', 'codegen', 'typecheck', 'lint'],
37
37
  outputs: ['coverage/**'],
38
38
  },
39
39
  typecheck: {
@@ -41,6 +41,7 @@ let turboConfig = {
41
41
  outputs: [],
42
42
  },
43
43
  },
44
+ globalEnv: workspace.projects.some((project) => project.config.deployment?.dbInstance) ? ['EDGEDB_INSTANCE', 'EDGEDB_BRANCH', 'EDGEDB_SECRET_KEY'] : [],
44
45
  globalDependencies: [
45
46
  '.editorconfig',
46
47
  '.eslintrc.cjs',
@@ -49,6 +50,7 @@ let turboConfig = {
49
50
  'tsconfig.json',
50
51
  'tsconfig.typecheck.json',
51
52
  ],
53
+
52
54
  };
53
55
 
54
56
  if (workspace.projects.find((project) => project.name === LINTER_CONFIG_PACKAGE_NAME)) {