From a3438160ae9c2dad91c4cc5864ca2602ff592b00 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 17 Mar 2022 23:43:32 +0000 Subject: [PATCH 1/4] fix(deps): update dependency node-ssh to v12.0.4 (#4798) Co-authored-by: Renovate Bot Co-authored-by: David Price --- packages/cli/package.json | 2 +- yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index 933548812e86..915d533a1dc0 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -52,7 +52,7 @@ "listr": "0.14.3", "listr-verbose-renderer": "0.6.0", "lodash": "4.17.21", - "node-ssh": "12.0.3", + "node-ssh": "12.0.4", "param-case": "3.0.4", "pascalcase": "1.0.0", "pluralize": "8.0.0", diff --git a/yarn.lock b/yarn.lock index a1c1b837005f..100497cee300 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5829,7 +5829,7 @@ __metadata: listr: 0.14.3 listr-verbose-renderer: 0.6.0 lodash: 4.17.21 - node-ssh: 12.0.3 + node-ssh: 12.0.4 param-case: 3.0.4 pascalcase: 1.0.0 pluralize: 8.0.0 @@ -22188,9 +22188,9 @@ __metadata: languageName: node linkType: hard -"node-ssh@npm:12.0.3": - version: 12.0.3 - resolution: "node-ssh@npm:12.0.3" +"node-ssh@npm:12.0.4": + version: 12.0.4 + resolution: "node-ssh@npm:12.0.4" dependencies: is-stream: ^2.0.0 make-dir: ^3.1.0 @@ -22198,7 +22198,7 @@ __metadata: sb-scandir: ^3.1.0 shell-escape: ^0.2.0 ssh2: ^1.5.0 - checksum: 8ebf7ee67a24979eb77ffdcd1f7e5e491653f5132a925913b2446af6b4c6e92d9a982de12123b0df908ef860c30325e146d83cf2c534ec13f9f643fa316c1d45 + checksum: 077ffcdca7613b9192e59b2e9246065b7b84b5c29d7ed67f4c3985d224e8aa242cc8b95f1197171383ac415a2a55e500e5328495373b88e010abb50f8e77e516 languageName: node linkType: hard From 5cb01583d366ac0ad6c870b404dcc5a6148833e0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 18 Mar 2022 00:10:15 +0000 Subject: [PATCH 2/4] chore(deps): update dependency @clerk/clerk-js to v2.17.6 (#4783) Co-authored-by: Renovate Bot --- packages/auth/package.json | 2 +- yarn.lock | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/auth/package.json b/packages/auth/package.json index 94151fd6c32d..c8c89be660db 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -26,7 +26,7 @@ "@azure/msal-browser": "2.22.1", "@babel/cli": "7.16.7", "@babel/core": "7.16.7", - "@clerk/clerk-js": "2.17.4", + "@clerk/clerk-js": "2.17.6", "@clerk/clerk-sdk-node": "2.9.10", "@clerk/types": "1.29.2", "@nhost/nhost-js": "0.3.12", diff --git a/yarn.lock b/yarn.lock index 100497cee300..50b465513604 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1983,11 +1983,11 @@ __metadata: languageName: node linkType: hard -"@clerk/clerk-js@npm:2.17.4": - version: 2.17.4 - resolution: "@clerk/clerk-js@npm:2.17.4" +"@clerk/clerk-js@npm:2.17.6": + version: 2.17.6 + resolution: "@clerk/clerk-js@npm:2.17.6" dependencies: - "@clerk/types": ^1.29.0 + "@clerk/types": ^1.29.2 "@popperjs/core": ^2.4.4 browser-tabs-lock: ^1.2.15 classnames: ^2.3.1 @@ -1999,7 +1999,7 @@ __metadata: react-dom: 17.0.2 react-popper: ^2.2.3 regenerator-runtime: ^0.13.7 - checksum: 2699217983df86c8096c1e5053dab71fd2457c8e52afc1bd90dd3e448f4429f368c8ca868bc7e5ed7795db1497e73c26c318c656e6e10790928c841ad12c9ab5 + checksum: e7eece94eecac686e1bd672aed50662968307f1579a25af19599792bbb028d8dbfe07e1324fd5a5381f65c194d514b6c32417abfa965f88377fdbae743bb678b languageName: node linkType: hard @@ -2021,7 +2021,7 @@ __metadata: languageName: node linkType: hard -"@clerk/types@npm:1.29.2, @clerk/types@npm:^1.29.0": +"@clerk/types@npm:1.29.2, @clerk/types@npm:^1.29.2": version: 1.29.2 resolution: "@clerk/types@npm:1.29.2" checksum: 0bebcf9ca225675e5352f7b41b2332f613e9ed0171746979b335198a96ceb7181c47292f90054bf39477d78afdc4f213a6a70ba0b7decc82626710a1f5fa19d1 @@ -5777,7 +5777,7 @@ __metadata: "@azure/msal-browser": 2.22.1 "@babel/cli": 7.16.7 "@babel/core": 7.16.7 - "@clerk/clerk-js": 2.17.4 + "@clerk/clerk-js": 2.17.6 "@clerk/clerk-sdk-node": 2.9.10 "@clerk/types": 1.29.2 "@nhost/nhost-js": 0.3.12 From da8b6444c7e997cb012d7daca8e5e1e03b955076 Mon Sep 17 00:00:00 2001 From: Daniel Choudhury Date: Fri, 18 Mar 2022 07:21:17 +0700 Subject: [PATCH 3/4] Always generate 200.html as part of web build (#4782) Co-authored-by: David Price --- packages/cli/src/commands/build.js | 14 ++++++++++++-- packages/cli/src/commands/prerender.js | 8 ++++---- .../src/commands/setup/deploy/templates/netlify.js | 2 +- packages/prerender/src/internal.ts | 2 +- packages/prerender/src/runPrerender.tsx | 11 ++++++----- 5 files changed, 24 insertions(+), 13 deletions(-) diff --git a/packages/cli/src/commands/build.js b/packages/cli/src/commands/build.js index 1b5df7619435..d00984857780 100644 --- a/packages/cli/src/commands/build.js +++ b/packages/cli/src/commands/build.js @@ -1,4 +1,5 @@ import fs from 'fs' +import path from 'path' import execa from 'execa' import Listr from 'listr' @@ -155,8 +156,8 @@ export const handler = async ({ }, side.includes('web') && { title: 'Building Web...', - task: () => { - return execa( + task: async () => { + await execa( `yarn cross-env NODE_ENV=production webpack --config ${require.resolve( '@redwoodjs/core/config/webpack.production.js' )}`, @@ -166,6 +167,15 @@ export const handler = async ({ cwd: rwjsPaths.web.base, } ) + + console.log('Creating 200.html...') + + const indexHtmlPath = path.join(getPaths().web.dist, 'index.html') + + fs.copyFileSync( + indexHtmlPath, + path.join(getPaths().web.dist, '200.html') + ) }, }, side.includes('web') && diff --git a/packages/cli/src/commands/prerender.js b/packages/cli/src/commands/prerender.js index 8160f3c3f202..445c0ba2fdd0 100644 --- a/packages/cli/src/commands/prerender.js +++ b/packages/cli/src/commands/prerender.js @@ -50,10 +50,10 @@ const mapRouterPathToHtml = (routerPath) => { // This is used directly in build.js for nested ListrTasks export const getTasks = async (dryrun, routerPathFilter = null) => { const prerenderRoutes = detectPrerenderRoutes() - + const indexHtmlPath = path.join(getPaths().web.dist, 'index.html') if (prerenderRoutes.length === 0) { - console.error('\nSkipping prerender...') - console.error( + console.log('\nSkipping prerender...') + console.log( c.warning( 'You have not marked any routes as `prerender` in `Routes.{js,tsx}` \n' ) @@ -63,7 +63,7 @@ export const getTasks = async (dryrun, routerPathFilter = null) => { return [] } - if (!fs.existsSync(path.join(getPaths().web.dist), 'index.html')) { + if (!fs.existsSync(indexHtmlPath)) { console.error( 'You must run `yarn rw build web` before trying to prerender.' ) diff --git a/packages/cli/src/commands/setup/deploy/templates/netlify.js b/packages/cli/src/commands/setup/deploy/templates/netlify.js index 6d5ca37afadc..b4d76e9347d4 100644 --- a/packages/cli/src/commands/setup/deploy/templates/netlify.js +++ b/packages/cli/src/commands/setup/deploy/templates/netlify.js @@ -21,6 +21,6 @@ functions = "api/dist/functions" [[redirects]] from = "/*" - to = "/index.html" + to = "/200.html" status = 200 ` diff --git a/packages/prerender/src/internal.ts b/packages/prerender/src/internal.ts index deee35b30d04..6d22571d2138 100644 --- a/packages/prerender/src/internal.ts +++ b/packages/prerender/src/internal.ts @@ -7,7 +7,7 @@ import type { AuthContextInterface } from '@redwoodjs/auth' import { getConfig, getPaths } from '@redwoodjs/internal' const INDEX_FILE = path.join(getPaths().web.dist, 'index.html') -const DEFAULT_INDEX = path.join(getPaths().web.dist, 'defaultIndex.html') +const DEFAULT_INDEX = path.join(getPaths().web.dist, '200.html') export const getRootHtmlPath = () => { if (fs.existsSync(DEFAULT_INDEX)) { diff --git a/packages/prerender/src/runPrerender.tsx b/packages/prerender/src/runPrerender.tsx index f7c02ed07e17..156c1b6ace9b 100644 --- a/packages/prerender/src/runPrerender.tsx +++ b/packages/prerender/src/runPrerender.tsx @@ -82,13 +82,14 @@ export const writePrerenderedHtmlFile = ( content: string ) => { const outputHtmlAbsPath = path.join(getPaths().base, outputHtmlPath) - // Copy default index.html to 200.html first + // Copy default (unprerendered) index.html to 200.html first // This is to prevent recursively rendering the home page if (outputHtmlPath === 'web/dist/index.html') { - fs.copyFileSync( - outputHtmlAbsPath, - path.join(getPaths().base, 'web/dist/200.html') - ) + const html200Path = path.join(getPaths().web.dist, '200.html') + + if (!fs.existsSync(html200Path)) { + fs.copyFileSync(outputHtmlAbsPath, html200Path) + } } writeToDist(outputHtmlAbsPath, content) From 024e26c2875578edfd1c066479bee48b3e395a29 Mon Sep 17 00:00:00 2001 From: David Thyresson Date: Thu, 17 Mar 2022 20:28:41 -0400 Subject: [PATCH 4/4] Documents how to regenerate just SDL (#4787) Co-authored-by: David Price --- docs/docs/cli-commands.md | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/docs/docs/cli-commands.md b/docs/docs/cli-commands.md index e8b0d7231d97..cc964aa2d90b 100644 --- a/docs/docs/cli-commands.md +++ b/docs/docs/cli-commands.md @@ -1024,10 +1024,35 @@ https://community.redwoodjs.com/t/prisma-beta-2-and-redwoodjs-limited-generator- | `model` | Model to generate the sdl for | | `--crud` | Also generate mutations | | `--force, -f` | Overwrite existing files | +| `--tests` | Generate service test and scenario [default: true] | | `--typescript, --ts` | Generate TypeScript files Enabled by default if we detect your project is TypeScript | > **Note:** The generated sdl will include the `@requireAuth` directive by default to ensure queries and mutations are secure. If your app's queries and mutations are all public, you can set up a custom SDL generator template to apply `@skipAuth` (or a custom validator directive) to suit you application's needs. +**Regenerating the SDL** + +Often, as you iterate on your data model, you may add, remove, or rename fields. You still want Redwood to update the generated SDL and service files for those updates because it saves time having to make those changes manually. + +But, since the `generate` command prevents you from overwriting files accidentally, you could use the `--force` option -- but a `force` will reset any test and scenarios you may have written which you don't want to lose. + +In that case, you can run the following to "regenerate" **just** the SDL file and leave your tests and scenarios intact and not lose your hard work. + +``` +yarn redwood g sdl --force --tests=false +``` + +**Example** + +```terminal +~/redwood-app$ yarn redwood generate sdl user --force --tests=false +yarn run v1.22.4 +$ /redwood-app/node_modules/.bin/redwood g sdl user + ✔ Generating SDL files... + ✔ Writing `./api/src/graphql/users.sdl.js`... + ✔ Writing `./api/src/services/users/users.js`... +Done in 1.04s. +``` + **Destroying** ``` @@ -1044,6 +1069,7 @@ yarn run v1.22.4 $ /redwood-app/node_modules/.bin/redwood g sdl user ✔ Generating SDL files... ✔ Writing `./api/src/graphql/users.sdl.js`... + ✔ Writing `./api/src/services/users/users.scenarios.js`... ✔ Writing `./api/src/services/users/users.test.js`... ✔ Writing `./api/src/services/users/users.js`... Done in 1.04s. @@ -1167,8 +1193,8 @@ Services are where Redwood puts its business logic. They can be used by your Gra | `name` | Name of the service | | `--force, -f` | Overwrite existing files | | `--typescript, --ts` | Generate TypeScript files Enabled by default if we detect your project is TypeScript | -| `--tests` | Generate test files [default: true] | -| `--stories` | Generate Storybook files [default: true] | +| `--tests` | Generate test and scenario files [default: true] | + **Destroying** @@ -1185,6 +1211,7 @@ Generating a user service: yarn run v1.22.4 $ /redwood-app/node_modules/.bin/redwood g service user ✔ Generating service files... + ✔ Writing `./api/src/services/users/users.scenarios.js`... ✔ Writing `./api/src/services/users/users.test.js`... ✔ Writing `./api/src/services/users/users.js`... Done in 1.02s.