Skip to content

Commit

Permalink
Merge branch 'main' of github.com:redwoodjs/redwood into feat/rw-uploads
Browse files Browse the repository at this point in the history
* 'main' of github.com:redwoodjs/redwood: (37 commits)
  chore(linting): enable type checked linting (redwoodjs#11258)
  chore(lint): lint config refactoring and re-enable some stylistic rules (redwoodjs#11257)
  chore(linting): Re-enable some ts-eslint rules (redwoodjs#11256)
  feat(rsc): Register top-level function-scoped RSAs (redwoodjs#11255)
  chore(lint): refactor react, react-hooks and ts-eslint usage (redwoodjs#11254)
  chore(formatting): Add prettier check to CI (redwoodjs#11253)
  chore(formatting): Formatting 2 of n (redwoodjs#11252)
  chore(formatting): Formatting 1 of n (redwoodjs#11251)
  chore(formatting): Format readme files (redwoodjs#11248)
  chore(record): Remove used file  (redwoodjs#11247)
  chore(formatting): Remove 'insert_final_newline' from editor config (redwoodjs#11249)
  chore(lint): Split linting and formatting (redwoodjs#11246)
  chore(linting): Remove/fix references to non-existant files (redwoodjs#11245)
  chore(rsa): Use swc for parsing server actions (redwoodjs#11243)
  chore(lint): Remove override for 'unused-imports/no-unused-imports' (redwoodjs#11244)
  chore(linting): Separate out framework and user linting config (redwoodjs#11242)
  fix: Update default tsconfig options (target, module and moduleResolution) (redwoodjs#11170)
  chore(fixture): Update tailwind dep (redwoodjs#11241)
  chore(deps): bump fast-xml-parser from 4.4.0 to 4.4.1 (redwoodjs#11239)
  chore(rsc): Switch last remaining transform-server test to inline snapshot (redwoodjs#11240)
  ...
  • Loading branch information
dac09 committed Aug 15, 2024
2 parents 71160fe + 0c60002 commit 7c74eaa
Show file tree
Hide file tree
Showing 310 changed files with 3,631 additions and 2,162 deletions.
36 changes: 36 additions & 0 deletions .changesets/10911.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
- chore: brought in typescript-eslint@v8 with stylistic preset (#10911) by @JoshuaKGoldberg

This change updates Redwood linting config and introduces some changes to the linting rules that are applied to your project.

Specifically:

1. `jsx-a11y/no-noninteractive-element-to-interactive-role` has it's default config updated.
3. `@typescript-eslint/explicit-function-return-type` used to be turned off, now it's no longer applied.
4. `@typescript-eslint/no-empty-interface` - used to be turned off, now it's no longer applied.
5. `@typescript-eslint/explicit-module-boundary-types` - used be turned off, now it's no longer applied.
6. `@typescript-eslint/ban-types` - used to be 'warn', now it's no longer applied. This has been replaces with a set of smaller more specific rules.
7. `no-empty-function` - used be turned off, now it's no longer applied. The ts-eslint flavour is still there and turned off still.
8. `camelcase` - used to be turned off, now it's 'warn'.
9. `@typescript-eslint/camelcase` - used to be turned off, now it's no longer applied.
10. `no-use-before-define` - used to be turned off, now it's no longer applied.
11. `@typescript-eslint/no-use-before-define` - used to be turned off, now it's no longer applied.
12. `@typescript-eslint/prefer-namespace-keyword` - used to be turned off, now it's 'error'
13. `unicode-bom` - used to be turned off, now it's no longer applied.
14. `@typescript-eslint/adjacent-overload-signatures` - used to be 'error', now it's no longer applied.
15. `@typescript-eslint/no-explicit-any` - used be 'warn', now 'error'
16. `@typescript-eslint/no-inferrable-types` - used to be 'error', now it's no longer applied.
17. `no-loss-of-precision` - used be 'off', now 'error'
18. `@typescript-eslint/no-loss-of-precision` - used be 'error', now it's no longer applied.
19. `@typescript-eslint/no-non-null-assertion` - used be 'warn', now it's no longer applied.
20. `valid-typeof` - used be either 'error' or 'off', now always 'error'
21. `no-unused-expressions` - used be always 'error', now either 'error' or 'off'
22. `@typescript-eslint/prefer-function-type` - newly added as 'off'
23. `@typescript-eslint/no-require-imports` - newly added as 'off'
24. `@typescript-eslint/no-empty-object-type` - newly added as 'off'
25. `unicorn/template-indent` - newly added as 'off'
26. `@typescript-eslint/no-duplicate-enum-values` - newly added as 'error'
27. `@typescript-eslint/no-unsafe-declaration-merging` - newly added as 'error'
28. `@typescript-eslint/no-unsafe-function-type` - newly added as 'error'
29. `@typescript-eslint/no-unused-expressions` - newly added as 'error'
30. `@typescript-eslint/no-wrapper-object-types` - newly added as 'error'
31. `no-new-native-nonconstructor` - newly added as 'off'
10 changes: 10 additions & 0 deletions .changesets/11170.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
- fix: Update default tsconfig options (target, module and moduleResolution) (#11170) by @Josh-Walker-GM

This changes the default values of:
- target
- module
- moduleResolution

in the tsconfig files for both the API and web side. The benefit of this change is increased correctness for build time checking of the imports from packages which specify `exports` in their `package.json` files.

This change will have a limited effect while Redwood apps are still built to CJS rather than ESM. After that switch to ESM there would be more breaking changes but they are not applied here and are a future concern.
6 changes: 6 additions & 0 deletions .changesets/11176.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
- fix(api-server): Use createServer in all cases, to make fastify config consistent (#11176) by @dac09

[BREAKING] Removes serverConfig support, in favour of server file to configure your Fastify instance.
You can still customise your server settings by running `yarn rw setup server-file` first. See docs for [Server File](https://docs.redwoodjs.com/docs/docker/#using-the-server-file)

This PR removes all the cases where we use `createFastifyInstance` for the api server, and replaces it with `createServer`. This makes sure that the API server config is always consistent - whether you use a server file or not.
144 changes: 66 additions & 78 deletions .dependency-cruiser.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -10,26 +10,26 @@ export default {
'your solution (i.e. use dependency inversion, make sure the modules have a single responsibility) ',
from: {},
to: {
circular: true
}
circular: true,
},
},
{
name: 'no-orphans',
comment:
"This is an orphan module - it's likely not used (anymore?). Either use it or " +
"remove it. If it's logical this module is an orphan (i.e. it's a config file), " +
"add an exception for it in your dependency-cruiser configuration. By default " +
"this rule does not scrutinize dot-files (e.g. .eslintrc.js), TypeScript declaration " +
"files (.d.ts), tsconfig.json and some of the babel and webpack configs.",
'add an exception for it in your dependency-cruiser configuration. By default ' +
'this rule does not scrutinize dot-files (e.g. .eslintrc.js), TypeScript declaration ' +
'files (.d.ts), tsconfig.json and some of the babel and webpack configs.',
severity: 'warn',
from: {
orphan: true,
pathNot: [
'(^|/)\\.[^/]+\\.(js|cjs|mjs|ts|json)$', // dot files
'\\.d\\.ts$', // TypeScript declaration files
'(^|/)tsconfig\\.json$', // TypeScript config
'(^|/)(babel|webpack)\\.config\\.(js|cjs|mjs|ts|json)$' // other configs
]
'\\.d\\.ts$', // TypeScript declaration files
'(^|/)tsconfig\\.json$', // TypeScript config
'(^|/)(babel|webpack)\\.config\\.(js|cjs|mjs|ts|json)$', // other configs
],
},
to: {},
},
Expand All @@ -41,32 +41,30 @@ export default {
severity: 'warn',
from: {},
to: {
dependencyTypes: [
'core'
],
dependencyTypes: ['core'],
path: [
'^(v8\/tools\/codemap)$',
'^(v8\/tools\/consarray)$',
'^(v8\/tools\/csvparser)$',
'^(v8\/tools\/logreader)$',
'^(v8\/tools\/profile_view)$',
'^(v8\/tools\/profile)$',
'^(v8\/tools\/SourceMap)$',
'^(v8\/tools\/splaytree)$',
'^(v8\/tools\/tickprocessor-driver)$',
'^(v8\/tools\/tickprocessor)$',
'^(node-inspect\/lib\/_inspect)$',
'^(node-inspect\/lib\/internal\/inspect_client)$',
'^(node-inspect\/lib\/internal\/inspect_repl)$',
'^(v8/tools/codemap)$',
'^(v8/tools/consarray)$',
'^(v8/tools/csvparser)$',
'^(v8/tools/logreader)$',
'^(v8/tools/profile_view)$',
'^(v8/tools/profile)$',
'^(v8/tools/SourceMap)$',
'^(v8/tools/splaytree)$',
'^(v8/tools/tickprocessor-driver)$',
'^(v8/tools/tickprocessor)$',
'^(node-inspect/lib/_inspect)$',
'^(node-inspect/lib/internal/inspect_client)$',
'^(node-inspect/lib/internal/inspect_repl)$',
'^(async_hooks)$',
'^(punycode)$',
'^(domain)$',
'^(constants)$',
'^(sys)$',
'^(_linklist)$',
'^(_stream_wrap)$'
'^(_stream_wrap)$',
],
}
},
},
{
name: 'not-to-deprecated',
Expand All @@ -76,26 +74,21 @@ export default {
severity: 'warn',
from: {},
to: {
dependencyTypes: [
'deprecated'
]
}
dependencyTypes: ['deprecated'],
},
},
{
name: 'no-non-package-json',
severity: 'error',
comment:
"This module depends on an npm package that isn't in the 'dependencies' section of your package.json. " +
"That's problematic as the package either (1) won't be available on live (2 - worse) will be " +
"available on live with an non-guaranteed version. Fix it by adding the package to the dependencies " +
"in your package.json.",
'available on live with an non-guaranteed version. Fix it by adding the package to the dependencies ' +
'in your package.json.',
from: {},
to: {
dependencyTypes: [
'npm-no-pkg',
'npm-unknown'
]
}
dependencyTypes: ['npm-no-pkg', 'npm-unknown'],
},
},
{
name: 'not-to-unresolvable',
Expand All @@ -105,24 +98,24 @@ export default {
severity: 'error',
from: {},
to: {
couldNotResolve: true
}
couldNotResolve: true,
},
},
{
name: 'no-duplicate-dep-types',
comment:
"Likely this module depends on an external ('npm') package that occurs more than once " +
"in your package.json i.e. bot as a devDependencies and in dependencies. This will cause " +
"maintenance problems later on.",
'in your package.json i.e. bot as a devDependencies and in dependencies. This will cause ' +
'maintenance problems later on.',
severity: 'warn',
from: {},
to: {
moreThanOneDependencyType: true,
// as it's pretty common to have a type import be a type only import
// _and_ (e.g.) a devDependency - don't consider type-only dependency
// types for this rule
dependencyTypesNot: ["type-only"]
}
dependencyTypesNot: ['type-only'],
},
},

/* rules you might want to tweak for your specific situation: */
Expand All @@ -135,8 +128,8 @@ export default {
severity: 'error',
from: {},
to: {
path: '\\.(spec|test)\\.(js|mjs|cjs|ts|ls|coffee|litcoffee|coffee\\.md)$'
}
path: '\\.(spec|test)\\.(js|mjs|cjs|ts|ls|coffee|litcoffee|coffee\\.md)$',
},
},
{
name: 'not-to-dev-dep',
Expand All @@ -149,54 +142,48 @@ export default {
'from.pathNot re of the not-to-dev-dep rule in the dependency-cruiser configuration',
from: {
path: '^(src)',
pathNot: '\\.(spec|test)\\.(js|mjs|cjs|ts|ls|coffee|litcoffee|coffee\\.md)$'
pathNot:
'\\.(spec|test)\\.(js|mjs|cjs|ts|ls|coffee|litcoffee|coffee\\.md)$',
},
to: {
dependencyTypes: [
'npm-dev'
]
}
dependencyTypes: ['npm-dev'],
},
},
{
name: 'optional-deps-used',
severity: 'info',
comment:
"This module depends on an npm package that is declared as an optional dependency " +
'This module depends on an npm package that is declared as an optional dependency ' +
"in your package.json. As this makes sense in limited situations only, it's flagged here. " +
"If you're using an optional dependency here by design - add an exception to your" +
"dependency-cruiser configuration.",
'dependency-cruiser configuration.',
from: {},
to: {
dependencyTypes: [
'npm-optional'
]
}
dependencyTypes: ['npm-optional'],
},
},
{
name: 'peer-deps-used',
comment:
"This module depends on an npm package that is declared as a peer dependency " +
"in your package.json. This makes sense if your package is e.g. a plugin, but in " +
"other cases - maybe not so much. If the use of a peer dependency is intentional " +
"add an exception to your dependency-cruiser configuration.",
'This module depends on an npm package that is declared as a peer dependency ' +
'in your package.json. This makes sense if your package is e.g. a plugin, but in ' +
'other cases - maybe not so much. If the use of a peer dependency is intentional ' +
'add an exception to your dependency-cruiser configuration.',
severity: 'warn',
from: {},
to: {
dependencyTypes: [
'npm-peer'
]
}
}
dependencyTypes: ['npm-peer'],
},
},
],
options: {

/* conditions specifying which files not to follow further when encountered:
- path: a regular expression to match
- dependencyTypes: see https://github.com/sverweij/dependency-cruiser/blob/main/doc/rules-reference.md#dependencytypes-and-dependencytypesnot
for a complete list
*/
doNotFollow: {
path: 'node_modules'
path: 'node_modules',
},

/* conditions specifying which dependencies to exclude
Expand Down Expand Up @@ -260,7 +247,7 @@ export default {
defaults to './tsconfig.json'.
*/
tsConfig: {
fileName: 'tsconfig.json'
fileName: 'tsconfig.json',
},

/* Webpack configuration to use to get resolve options from.
Expand Down Expand Up @@ -310,7 +297,7 @@ export default {
If you have an `exportsFields` attribute in your webpack config, that one
will have precedence over the one specified here.
*/
exportsFields: ["exports"],
exportsFields: ['exports'],
/* List of conditions to check for in the exports field. e.g. use ['imports']
if you're only interested in exposed es6 modules, ['require'] for commonjs,
or all conditions at once `(['import', 'require', 'node', 'default']`)
Expand All @@ -320,7 +307,7 @@ export default {
If you have a 'conditionNames' attribute in your webpack config, that one will
have precedence over the one specified here.
*/
conditionNames: ["import", "require", "node", "default"],
conditionNames: ['import', 'require', 'node', 'default'],
/*
The extensions, by default are the same as the ones dependency-cruiser
can access (run `npx depcruise --info` to see which ones that are in
Expand All @@ -339,7 +326,7 @@ export default {
this if you're not sure, but still use TypeScript. In a future version
of dependency-cruiser this will likely become the default.
*/
mainFields: ["main", "types"],
mainFields: ['main', 'types'],
},
reporterOptions: {
dot: {
Expand Down Expand Up @@ -430,7 +417,8 @@ export default {
dependency graph reporter (`archi`) you probably want to tweak
this collapsePattern to your situation.
*/
collapsePattern: '^(packages|src|lib|app|bin|test(s?)|spec(s?))/[^/]+|node_modules/(@[^/]+/[^/]+|[^/]+)',
collapsePattern:
'^(packages|src|lib|app|bin|test(s?)|spec(s?))/[^/]+|node_modules/(@[^/]+/[^/]+|[^/]+)',

/* Options to tweak the appearance of your graph.See
https://github.com/sverweij/dependency-cruiser/blob/main/doc/options-reference.md#reporteroptions
Expand All @@ -441,10 +429,10 @@ export default {
// theme: {
// },
},
"text": {
"highlightFocused": true
text: {
highlightFocused: true,
},
}
}
};
},
},
}
// generated: dependency-cruiser@13.0.3 on 2023-06-08T22:17:09.126Z
1 change: 0 additions & 1 deletion .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ root = true

[*]
end_of_line = lf
insert_final_newline = true
charset = utf-8

[*.{js,jsx,ts,tsx,graphql,sql,md,html,mjml,json,jsonc,json5,yml,yaml,template,sh,Dockerfile}]
Expand Down
Loading

0 comments on commit 7c74eaa

Please sign in to comment.