From fa2dd5ba7c55d3d71592e746bdb2a836e57d4cf2 Mon Sep 17 00:00:00 2001 From: Daniel Choudhury Date: Wed, 21 Sep 2022 13:39:40 +0100 Subject: [PATCH 1/5] Make sure typescript is dependency not dev dep of internal --- packages/internal/package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/internal/package.json b/packages/internal/package.json index 6ae67fe2fbf5..69a461da2063 100644 --- a/packages/internal/package.json +++ b/packages/internal/package.json @@ -58,7 +58,8 @@ "string-env-interpolation": "1.0.1", "systeminformation": "5.12.4", "terminal-link": "2.1.1", - "toml": "3.0.0" + "toml": "3.0.0", + "typescript": "4.7.4" }, "devDependencies": { "@babel/cli": "7.18.10", @@ -70,8 +71,7 @@ "@types/rimraf": "3.0.2", "babel-plugin-tester": "10.1.0", "graphql-tag": "2.12.6", - "jest": "29.0.3", - "typescript": "4.7.4" + "jest": "29.0.3" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" } From e7c93dd2f4060adffef66653b705ded9da04f4fa Mon Sep 17 00:00:00 2001 From: Daniel Choudhury Date: Wed, 21 Sep 2022 13:40:13 +0100 Subject: [PATCH 2/5] Enable linting rules for structure, so we don't import all of rwjs/internal --- .eslintrc.js | 3 +-- packages/structure/src/hosts.ts | 3 ++- packages/structure/src/index.ts | 15 ++++++--------- packages/structure/src/model/RWProject.ts | 4 ++-- packages/structure/src/model/RWRouter.ts | 10 ++++------ .../structure/src/model/__tests__/model.test.ts | 11 +++++++++-- packages/structure/src/outline/outline.ts | 4 +++- packages/telemetry/src/sendTelemetry.ts | 1 + 8 files changed, 28 insertions(+), 23 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 056693b6ac1c..6616d5b53e6f 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -22,7 +22,6 @@ module.exports = { ignorePatterns: [ 'dist', 'fixtures', - 'packages/structure/**', 'packages/internal/src/build/babelPlugins/__tests__/__fixtures__/**/*', 'packages/core/**/__fixtures__/**/*', 'packages/codemods/**/__testfixtures__/**/*', @@ -34,7 +33,7 @@ module.exports = { }, overrides: [ { - files: ['packages/structure/**'], + files: ['packages/structure/src/**'], rules: { '@typescript-eslint/no-this-alias': 'off', '@typescript-eslint/no-non-null-assertion': 'off', diff --git a/packages/structure/src/hosts.ts b/packages/structure/src/hosts.ts index 7ec72070ec4a..70e391c03b78 100644 --- a/packages/structure/src/hosts.ts +++ b/packages/structure/src/hosts.ts @@ -1,7 +1,8 @@ import * as fs from 'fs-extra' import glob from 'glob' -import { Paths, getPaths } from '@redwoodjs/internal' +import type { Paths } from '@redwoodjs/internal/dist/paths' +import { getPaths } from '@redwoodjs/internal/dist/paths' import { lazy } from './x/decorators' diff --git a/packages/structure/src/index.ts b/packages/structure/src/index.ts index 38ce8aef704c..5195d9ddbd46 100644 --- a/packages/structure/src/index.ts +++ b/packages/structure/src/index.ts @@ -1,14 +1,13 @@ +export { DiagnosticSeverity } from 'vscode-languageserver-types' export { DefaultHost, Host } from './hosts' export { RWProject } from './model' -import { exit } from 'process' -import { ThrowStatement } from 'ts-morph' +export { URL_file } from './x/URL' import { DefaultHost } from './hosts' import { RWProject } from './model' import { ExtendedDiagnostic_format, GetSeverityLabelFunction, } from './x/vscode-languageserver-types' -export { DiagnosticSeverity } from 'vscode-languageserver-types' export function getProject(projectRoot: string, host = new DefaultHost()) { return new RWProject({ @@ -40,15 +39,13 @@ export async function printDiagnostics( if (warnings === 0 && errors === 0) { console.log('\nSuccess: no errors or warnings were detected\n') - } - else if (errors > 0) { - console.error(`\nFailure: ${errors} errors and ${warnings} warnings detected\n`) + } else if (errors > 0) { + console.error( + `\nFailure: ${errors} errors and ${warnings} warnings detected\n` + ) process.exit(1) } - } catch (e: any) { throw new Error(e.message) } } - -export { URL_file } from './x/URL' diff --git a/packages/structure/src/model/RWProject.ts b/packages/structure/src/model/RWProject.ts index a6c87daeb10b..767553cf980a 100644 --- a/packages/structure/src/model/RWProject.ts +++ b/packages/structure/src/model/RWProject.ts @@ -1,9 +1,9 @@ import { join } from 'path' +import type { DMMF } from '@prisma/generator-helper' import { getDMMF } from '@prisma/internals' -import { DMMF } from '@prisma/generator-helper' -import { getPaths, processPagesDir } from '@redwoodjs/internal' +import { getPaths, processPagesDir } from '@redwoodjs/internal/dist/paths' import { Host } from '../hosts' import { BaseNode } from '../ide' diff --git a/packages/structure/src/model/RWRouter.ts b/packages/structure/src/model/RWRouter.ts index 05b323b5cb45..a7b2d777de4d 100644 --- a/packages/structure/src/model/RWRouter.ts +++ b/packages/structure/src/model/RWRouter.ts @@ -70,12 +70,10 @@ export class RWRouter extends FileNode { const sets = self.sf .getDescendantsOfKind(tsm.SyntaxKind.JsxElement) - .filter( - (x) => { - const tagName = x.getOpeningElement().getTagNameNode().getText() - return tagName === 'Set' || tagName === 'Private' - } - ) + .filter((x) => { + const tagName = x.getOpeningElement().getTagNameNode().getText() + return tagName === 'Set' || tagName === 'Private' + }) const prerenderSets = sets.filter((set) => set.getOpeningElement().getAttribute('prerender') diff --git a/packages/structure/src/model/__tests__/model.test.ts b/packages/structure/src/model/__tests__/model.test.ts index 383101ea9463..9ebbeccf7303 100644 --- a/packages/structure/src/model/__tests__/model.test.ts +++ b/packages/structure/src/model/__tests__/model.test.ts @@ -130,12 +130,19 @@ describe('Redwood Route detection', () => { }) expect(prerenderRoutes).toContainEqual({ name: 'fooPage', path: '/foo' }) expect(prerenderRoutes).toContainEqual({ name: 'barPage', path: '/bar' }) - expect(prerenderRoutes).toContainEqual({ name: 'privatePage', path: '/private-page' }) + expect(prerenderRoutes).toContainEqual({ + name: 'privatePage', + path: '/private-page', + }) }) }) function getFixtureDir( - name: 'example-todo-main-with-errors' | 'example-todo-main' | 'empty-project' | 'test-project' + name: + | 'example-todo-main-with-errors' + | 'example-todo-main' + | 'empty-project' + | 'test-project' ) { return resolve(__dirname, `../../../../../__fixtures__/${name}`) } diff --git a/packages/structure/src/outline/outline.ts b/packages/structure/src/outline/outline.ts index e487070e58f1..dda8db8f625d 100644 --- a/packages/structure/src/outline/outline.ts +++ b/packages/structure/src/outline/outline.ts @@ -103,7 +103,9 @@ function _pages(project: RWProject): TreeItem2 { menu: { kind: 'group', add: Command_cli('rw generate page ...'), - doc: Command_open('https://redwoodjs.com/docs/tutorial/chapter1/first-page'), + doc: Command_open( + 'https://redwoodjs.com/docs/tutorial/chapter1/first-page' + ), }, } } diff --git a/packages/telemetry/src/sendTelemetry.ts b/packages/telemetry/src/sendTelemetry.ts index 05361c391f0f..df5a9431f3e6 100644 --- a/packages/telemetry/src/sendTelemetry.ts +++ b/packages/telemetry/src/sendTelemetry.ts @@ -26,6 +26,7 @@ interface SensitiveArgPositions { redactWith: Array } prisma: { + positions?: never options: Array redactWith: Array } From 50a8e7c2ac9c8e73912129ebc98f1a98dbc5c108 Mon Sep 17 00:00:00 2001 From: David Thyresson Date: Wed, 21 Sep 2022 09:06:30 -0400 Subject: [PATCH 3/5] More Telemetry README info to help diagnose issues --- packages/telemetry/README.md | 48 +++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/packages/telemetry/README.md b/packages/telemetry/README.md index 7b4fdc1f2ba6..1066070e7dee 100644 --- a/packages/telemetry/README.md +++ b/packages/telemetry/README.md @@ -1,3 +1,49 @@ # Telemetry -https://telemetry.redwoodjs.com +RedwoodJS collects completely anonymous telemetry data about general usage. + +Here is an example JSON packet containing the telemetry data for running yarn rw info: + +```json +{ + type: 'command', + command: 'info', // actual CLI command that was invoked, including flags + ci: false, // whether or not this is running in a CI environment + duration: 2353, // how long the process took, in milliseconds + NODE_ENV: 'development', // the value of NODE_ENV, if set + complexity: '4.2.6.3', // a measure of how complex the app is (route, service, cell and page counts) + system: '8.32', // cpu core count, memory in GB + sides: 'web,api', // sides that are in use + shell: 'zsh', + nodeVersion: '14.17.1', + yarnVersion: '14.17.1', + npmVersion: '14.17.1', + vsCodeVersion: '1.58.0', + redwoodVersion: '0.35.1', + os: 'macOS', + osVersion: '11.4', + system: '8.32' // number of cpu cores and system memory + } +``` + +## How do I turn it off? + +Set an environment variable, either in your app's .env file, or anywhere that creates variables for your user space, like `.bashrc` or `.bash_profile`: + +```terminal +REDWOOD_DISABLE_TELEMETRY=1 +``` + +## About + +See: https://telemetry.redwoodjs.com + +## Troubleshooting + +If you suspect problems with telemetry when running CRWA, you set the verbose flag to help diagnose issues. + +For example, + +```terminal +REDWOOD_VERBOSE_TELEMETRY=true yarn create-redwood-app bazinga +``` From ed1e537b7b816c5370e231123e4c32528a3e5fb0 Mon Sep 17 00:00:00 2001 From: Daniel Choudhury Date: Wed, 21 Sep 2022 15:06:06 +0100 Subject: [PATCH 4/5] docs: Update readme with debugging crwa info --- packages/create-redwood-app/README.md | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/packages/create-redwood-app/README.md b/packages/create-redwood-app/README.md index 94b91be858bc..c52fe4eb1fd6 100644 --- a/packages/create-redwood-app/README.md +++ b/packages/create-redwood-app/README.md @@ -84,7 +84,7 @@ The installation script is built with [Yargs](https://github.com/yargs/yargs) ### Template Codebase The project codebase in `template/` uses [Yarn Workspace v1](https://classic.yarnpkg.com/en/docs/workspaces/) for a monorepo project containing the API and Web Sides. Redwood packages are included in `template/package.json`, `template/web/package.json`, and `template/api/package.json`, respectively. -### How to run create-redwood-app and create a project +### How to run create-redwood-app from your local repo and create a project Make sure you to first run `yarn install` in your project root. Step into the `create-redwood-app` package and run the script: @@ -98,6 +98,19 @@ This will create a new project using the local `template/` codebase > Note: the new project will install with the most recent stable Redwood package version by default + +### How to run other published versions for debugging +By default yarn create will pick the latest stable version to run, but you can specify a different version via yarn too! + +To try the canary version using yarn, run: +``` +yarn create redwood-app@canary -p create-redwood-app /path/to/project +``` + +Note that this will still create a project with the latest stable version, but run the canary version of create-redwood-app, and is only useful for debugging. + +You can specify any tag or version instead of `@canary` + ### Develop using the new project There are three options for developing with the installed project: @@ -106,10 +119,5 @@ There are three options for developing with the installed project: cd /path/to/new/redwood-app yarn rw upgrade -t canary ``` -**2. Install packages specific to a PR, for example** -```bash -cd /path/to/new/redwood-app -yarn rw upgrade --pr 1703:0.23.0-b06dd35 -``` -**3. Use the workflow and tools for local package development** +**2. Use the workflow and tools for local package development** - [Local Development Instructions](https://github.com/redwoodjs/redwood/blob/main/CONTRIBUTING.md#local-development) From 6e0bbde13b39c587507eea43188a6a989e62cd0b Mon Sep 17 00:00:00 2001 From: Daniel Choudhury Date: Wed, 21 Sep 2022 16:07:39 +0100 Subject: [PATCH 5/5] Update packages/telemetry/README.md Co-authored-by: Tobbe Lundberg --- packages/telemetry/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/telemetry/README.md b/packages/telemetry/README.md index 1066070e7dee..798aaa90f6dc 100644 --- a/packages/telemetry/README.md +++ b/packages/telemetry/README.md @@ -40,7 +40,7 @@ See: https://telemetry.redwoodjs.com ## Troubleshooting -If you suspect problems with telemetry when running CRWA, you set the verbose flag to help diagnose issues. +If you suspect problems with telemetry when running CRWA, you can set the verbose flag to help diagnose issues. For example,