diff --git a/.github/issue_template/2.feature_request.yml b/.github/issue_template/2.feature_request.yml index 6bf92cf..db55e08 100644 --- a/.github/issue_template/2.feature_request.yml +++ b/.github/issue_template/2.feature_request.yml @@ -25,4 +25,3 @@ body: attributes: label: Additional information description: Add any other information related to the feature here. If your feature request is related to any issues or discussions, link them here. - diff --git a/README.md b/README.md index 7f7301b..2938feb 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Relivator 1.2.1: The Most Feature-Rich Next.js 14 Starter +# Relivator 1.2.2: The Most Feature-Rich Next.js 14 Starter diff --git a/eslint.config.ts b/eslint.config.ts index 1951574..452ef54 100644 --- a/eslint.config.ts +++ b/eslint.config.ts @@ -25,6 +25,7 @@ import { FlatCompat } from "@eslint/eslintrc"; import eslintJsPlugin from "@eslint/js"; import importAliasPlugin from "@limegrass/eslint-plugin-import-alias"; import nextPlugin from "@next/eslint-plugin-next"; +import stylisticPlugin from "@stylistic/eslint-plugin"; import tanstackQueryPlugin from "@tanstack/eslint-plugin-query"; import tsEslintPlugin from "@typescript-eslint/eslint-plugin"; import tsEslintParser from "@typescript-eslint/parser"; @@ -68,7 +69,7 @@ const compat = new FlatCompat(); export default antfu( { - ignores: ["./.next", "./build", "./drizzle"], + ignores: [".next", "drizzle", "build"], typescript: { tsconfigPath: "tsconfig.json" }, stylistic: { quotes: "double", semi: true }, settings: { react: { version: "detect" } }, @@ -86,6 +87,7 @@ export default antfu( "@next/next": nextPlugin, "promise": promisePlugin, "unicorn": unicornPlugin, + "@stylistic": stylisticPlugin, "functional": functionalPlugin, "react-hooks": reactHooksPlugin, "tailwindcss": tailwindcssPlugin, @@ -97,6 +99,7 @@ export default antfu( ...promisePlugin.configs.recommended.rules, ...eslintJsPlugin.configs.recommended.rules, ...tailwindcssPlugin.configs.recommended.rules, + ...stylisticPlugin.configs["recommended-flat"].rules, ...reactHooksPlugin.configs.recommended.rules, ...unicornPlugin.configs.recommended.rules, ...xssPlugin.configs.recommended.rules, @@ -106,6 +109,49 @@ export default antfu( ...airbnbStyleConfig.rules, ...airbnbNodeConfig.rules, ...airbnbES6Config.rules, + // https://eslint.style/packages/default#rules + "max-len": "off", + "@stylistic/max-len": [ + // https://eslint.style/rules/default/max-len + "error", + { + "code": 1000, + "ignoreComments": true, + "ignoreTrailingComments": true, + }, + ], + "@stylistic/max-statements-per-line": [ + // https://eslint.style/rules/default/max-statements-per-line + "error", + { "max": 1 }, + ], + "@stylistic/keyword-spacing": [ + // https://eslint.style/rules/default/keyword-spacing + "error", + { "before": true, "after": true }, + ], + "@stylistic/semi": "off", + "@stylistic/quotes": "off", + "@stylistic/indent": "off", + "@stylistic/quote-props": "off", + "@stylistic/operator-linebreak": "off", + "@stylistic/member-delimiter-style": "off", + "@stylistic/arrow-parens": "off", + "@stylistic/brace-style": "off", + "@stylistic/indent-binary-ops": "off", + "@stylistic/jsx-closing-tag-location": "off", + "@stylistic/jsx-curly-newline": "off", + "@stylistic/jsx-indent": "off", + "@stylistic/jsx-one-expression-per-line": "off", + "@stylistic/jsx-wrap-multilines": "off", + "@stylistic/multiline-ternary": "off", + "@stylistic/spaced-comment": "off", + "@stylistic/eol-last": "off", + "max-lines-per-function": ["error", 437], + "max-nested-callbacks": ["error", 4], + "max-statements": ["error", 76], + "max-params": ["error", 5], + "complexity": ["error", 63], "computed-property-spacing": [ "off", "never", @@ -226,7 +272,6 @@ export default antfu( "linebreak-style": "off", "lines-around-directive": "off", "lines-between-class-members": ["off", "always"], - "max-len": "off", "new-cap": "off", "new-parens": "off", "no-alert": "off", @@ -306,7 +351,7 @@ export default antfu( "react/jsx-boolean-value": "off", "react/jsx-curly-brace-presence": "off", "react/jsx-fragments": "off", - "react/jsx-max-depth": ["off", { max: 5 }], + "react/jsx-max-depth": ["error", { max: 7 }], "react/jsx-no-bind": "off", "react/jsx-no-constructed-context-values": "off", "react/jsx-no-leaked-render": ["off", { validStrategies: ["ternary"] }], diff --git a/package.json b/package.json index aaa2ed0..20add5c 100644 --- a/package.json +++ b/package.json @@ -256,6 +256,7 @@ "@limegrass/eslint-plugin-import-alias": "^1.1.0", "@next/eslint-plugin-next": "^14.0.4", "@playwright/test": "^1.40.1", + "@stylistic/eslint-plugin": "^1.5.3", "@tailwindcss/typography": "^0.5.10", "@tanstack/eslint-plugin-query": "^5.14.6", "@testing-library/jest-dom": "^6.1.6", @@ -343,10 +344,10 @@ "typescript": "5.3.3", "xo": "^0.56.0" }, - "packageManager": "pnpm@8.13.1", + "packageManager": "pnpm@8.14.0", "volta": { "node": "20.10.0", - "pnpm": "8.13.1" + "pnpm": "8.14.0" }, "pnpm": { "overrides": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c2f7091..aa0859c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -190,7 +190,7 @@ dependencies: version: 3.3.0(redux@5.0.1) '@storybook/nextjs': specifier: 8.0.0-alpha.6 - version: 8.0.0-alpha.6(@swc/core@1.3.102)(esbuild@0.19.11)(next@14.0.4)(react-dom@18.2.0)(react@18.2.0)(type-fest@4.9.0)(typescript@5.3.3)(webpack@5.89.0) + version: 8.0.0-alpha.6(@swc/core@1.3.102)(esbuild@0.18.20)(next@14.0.4)(react-dom@18.2.0)(react@18.2.0)(type-fest@4.9.0)(typescript@5.3.3)(webpack@5.89.0) '@stripe/react-stripe-js': specifier: ^2.4.0 version: 2.4.0(@stripe/stripe-js@2.2.2)(react-dom@18.2.0)(react@18.2.0) @@ -568,6 +568,9 @@ devDependencies: '@playwright/test': specifier: ^1.40.1 version: 1.40.1 + '@stylistic/eslint-plugin': + specifier: ^1.5.3 + version: 1.5.3(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) '@tailwindcss/typography': specifier: ^0.5.10 version: 0.5.10(tailwindcss@3.4.0) @@ -807,7 +810,7 @@ devDependencies: version: 3.4.0(ts-node@10.9.2) ts-jest: specifier: ^29.1.1 - version: 29.1.1(@babel/core@7.23.7)(esbuild@0.19.11)(jest@29.7.0)(typescript@5.3.3) + version: 29.1.1(@babel/core@7.23.7)(esbuild@0.18.20)(jest@29.7.0)(typescript@5.3.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@swc/core@1.3.102)(@types/node@20.10.6)(typescript@5.3.3) @@ -3225,6 +3228,7 @@ packages: cpu: [ppc64] os: [aix] requiresBuild: true + dev: true optional: true /@esbuild/android-arm64@0.17.19: @@ -3250,6 +3254,7 @@ packages: cpu: [arm64] os: [android] requiresBuild: true + dev: true optional: true /@esbuild/android-arm@0.17.19: @@ -3275,6 +3280,7 @@ packages: cpu: [arm] os: [android] requiresBuild: true + dev: true optional: true /@esbuild/android-x64@0.17.19: @@ -3300,6 +3306,7 @@ packages: cpu: [x64] os: [android] requiresBuild: true + dev: true optional: true /@esbuild/darwin-arm64@0.17.19: @@ -3325,6 +3332,7 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true + dev: true optional: true /@esbuild/darwin-x64@0.17.19: @@ -3350,6 +3358,7 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true + dev: true optional: true /@esbuild/freebsd-arm64@0.17.19: @@ -3375,6 +3384,7 @@ packages: cpu: [arm64] os: [freebsd] requiresBuild: true + dev: true optional: true /@esbuild/freebsd-x64@0.17.19: @@ -3400,6 +3410,7 @@ packages: cpu: [x64] os: [freebsd] requiresBuild: true + dev: true optional: true /@esbuild/linux-arm64@0.17.19: @@ -3425,6 +3436,7 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-arm@0.17.19: @@ -3450,6 +3462,7 @@ packages: cpu: [arm] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-ia32@0.17.19: @@ -3475,6 +3488,7 @@ packages: cpu: [ia32] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-loong64@0.17.19: @@ -3500,6 +3514,7 @@ packages: cpu: [loong64] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-mips64el@0.17.19: @@ -3525,6 +3540,7 @@ packages: cpu: [mips64el] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-ppc64@0.17.19: @@ -3550,6 +3566,7 @@ packages: cpu: [ppc64] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-riscv64@0.17.19: @@ -3575,6 +3592,7 @@ packages: cpu: [riscv64] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-s390x@0.17.19: @@ -3600,6 +3618,7 @@ packages: cpu: [s390x] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-x64@0.17.19: @@ -3625,6 +3644,7 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/netbsd-x64@0.17.19: @@ -3650,6 +3670,7 @@ packages: cpu: [x64] os: [netbsd] requiresBuild: true + dev: true optional: true /@esbuild/openbsd-x64@0.17.19: @@ -3675,6 +3696,7 @@ packages: cpu: [x64] os: [openbsd] requiresBuild: true + dev: true optional: true /@esbuild/sunos-x64@0.17.19: @@ -3700,6 +3722,7 @@ packages: cpu: [x64] os: [sunos] requiresBuild: true + dev: true optional: true /@esbuild/win32-arm64@0.17.19: @@ -3725,6 +3748,7 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true + dev: true optional: true /@esbuild/win32-ia32@0.17.19: @@ -3750,6 +3774,7 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true + dev: true optional: true /@esbuild/win32-x64@0.17.19: @@ -3775,6 +3800,7 @@ packages: cpu: [x64] os: [win32] requiresBuild: true + dev: true optional: true /@escape.tech/graphql-armor-block-field-suggestions@2.1.0: @@ -5196,7 +5222,7 @@ packages: dependencies: '@mdx-js/mdx': 3.0.0 source-map: 0.7.4 - webpack: 5.89.0(@swc/core@1.3.102)(esbuild@0.19.11) + webpack: 5.89.0(@swc/core@1.3.102)(esbuild@0.18.20) transitivePeerDependencies: - supports-color dev: false @@ -5698,7 +5724,7 @@ packages: schema-utils: 3.3.0 source-map: 0.7.4 type-fest: 4.9.0 - webpack: 5.89.0(@swc/core@1.3.102)(esbuild@0.19.11) + webpack: 5.89.0(@swc/core@1.3.102)(esbuild@0.18.20) dev: false /@pnpm/constants@7.1.1: @@ -8530,7 +8556,7 @@ packages: - supports-color dev: false - /@storybook/builder-webpack5@8.0.0-alpha.6(esbuild@0.19.11)(typescript@5.3.3): + /@storybook/builder-webpack5@8.0.0-alpha.6(esbuild@0.18.20)(typescript@5.3.3): resolution: {integrity: sha512-1Ls5fCpJqLuIT0VKTyoo7nY5gonKmWMRqSZUqHM6dvGG6xVVHa8cFQdMKL7WzfL3sffgbqJYvvOlVd7UF/idfQ==} peerDependencies: typescript: '*' @@ -8566,13 +8592,13 @@ packages: semver: 7.5.4 style-loader: 3.3.3(webpack@5.89.0) swc-loader: 0.2.3(@swc/core@1.3.102)(webpack@5.89.0) - terser-webpack-plugin: 5.3.10(@swc/core@1.3.102)(esbuild@0.19.11)(webpack@5.89.0) + terser-webpack-plugin: 5.3.10(@swc/core@1.3.102)(esbuild@0.18.20)(webpack@5.89.0) ts-dedent: 2.2.0 typescript: 5.3.3 url: 0.11.3 util: 0.12.5 util-deprecate: 1.0.2 - webpack: 5.89.0(@swc/core@1.3.102)(esbuild@0.19.11) + webpack: 5.89.0(@swc/core@1.3.102)(esbuild@0.18.20) webpack-dev-middleware: 6.1.1(webpack@5.89.0) webpack-hot-middleware: 2.26.0 webpack-virtual-modules: 0.5.0 @@ -8827,7 +8853,7 @@ packages: resolution: {integrity: sha512-kUP25dkQY+HJf8tWUhruIOqUBH3nhRm1TW19FaH+zTp47HxUj3aQM+szBcPyRAuq8trjCxCDbev1WgwbfP2uzQ==} dev: false - /@storybook/nextjs@8.0.0-alpha.6(@swc/core@1.3.102)(esbuild@0.19.11)(next@14.0.4)(react-dom@18.2.0)(react@18.2.0)(type-fest@4.9.0)(typescript@5.3.3)(webpack@5.89.0): + /@storybook/nextjs@8.0.0-alpha.6(@swc/core@1.3.102)(esbuild@0.18.20)(next@14.0.4)(react-dom@18.2.0)(react@18.2.0)(type-fest@4.9.0)(typescript@5.3.3)(webpack@5.89.0): resolution: {integrity: sha512-AnmNzIwEnkUOuyLX4UvSBvg91VlYkX/lvIc+QTUvTp6gFGN7H9H8wUdKnvArSgNvVhhGk3Z63WBOutdU1jTduA==} engines: {node: '>=16.0.0'} peerDependencies: @@ -8856,11 +8882,11 @@ packages: '@babel/preset-typescript': 7.23.3(@babel/core@7.23.7) '@babel/runtime': 7.23.7 '@storybook/addon-actions': 8.0.0-alpha.6 - '@storybook/builder-webpack5': 8.0.0-alpha.6(esbuild@0.19.11)(typescript@5.3.3) + '@storybook/builder-webpack5': 8.0.0-alpha.6(esbuild@0.18.20)(typescript@5.3.3) '@storybook/core-common': 8.0.0-alpha.6 '@storybook/core-events': 8.0.0-alpha.6 '@storybook/node-logger': 8.0.0-alpha.6 - '@storybook/preset-react-webpack': 8.0.0-alpha.6(@babel/core@7.23.7)(@swc/core@1.3.102)(esbuild@0.19.11)(react-dom@18.2.0)(react@18.2.0)(type-fest@4.9.0)(typescript@5.3.3) + '@storybook/preset-react-webpack': 8.0.0-alpha.6(@babel/core@7.23.7)(@swc/core@1.3.102)(esbuild@0.18.20)(react-dom@18.2.0)(react@18.2.0)(type-fest@4.9.0)(typescript@5.3.3) '@storybook/preview-api': 8.0.0-alpha.6 '@storybook/react': 8.0.0-alpha.6(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@types/node': 18.19.4 @@ -8887,7 +8913,7 @@ packages: tsconfig-paths: 4.2.0 tsconfig-paths-webpack-plugin: 4.1.0 typescript: 5.3.3 - webpack: 5.89.0(@swc/core@1.3.102)(esbuild@0.19.11) + webpack: 5.89.0(@swc/core@1.3.102)(esbuild@0.18.20) transitivePeerDependencies: - '@rspack/core' - '@swc/core' @@ -8914,7 +8940,7 @@ packages: resolution: {integrity: sha512-VlQU1fRZxp0IH5gGDeslRR1qBVlU9+PdjrxU0vhXdhbSAeWH65WBoLs2RrAjlELD+wpICHIJz9uUo/wFiDNKUw==} dev: false - /@storybook/preset-react-webpack@8.0.0-alpha.6(@babel/core@7.23.7)(@swc/core@1.3.102)(esbuild@0.19.11)(react-dom@18.2.0)(react@18.2.0)(type-fest@4.9.0)(typescript@5.3.3): + /@storybook/preset-react-webpack@8.0.0-alpha.6(@babel/core@7.23.7)(@swc/core@1.3.102)(esbuild@0.18.20)(react-dom@18.2.0)(react@18.2.0)(type-fest@4.9.0)(typescript@5.3.3): resolution: {integrity: sha512-McB89i8Aty/HOP+0P/Jrfy+N9dEBsVDlIHHaQ533wOWpRQZrou/PIXSBVpe+oHXWt4cglEy7ceTGORL47IlbHw==} engines: {node: '>=18.0.0'} peerDependencies: @@ -8948,7 +8974,7 @@ packages: react-refresh: 0.14.0 semver: 7.5.4 typescript: 5.3.3 - webpack: 5.89.0(@swc/core@1.3.102)(esbuild@0.19.11) + webpack: 5.89.0(@swc/core@1.3.102)(esbuild@0.18.20) transitivePeerDependencies: - '@swc/core' - '@types/webpack' @@ -9001,7 +9027,7 @@ packages: react-docgen-typescript: 2.2.2(typescript@5.3.3) tslib: 2.6.2 typescript: 5.3.3 - webpack: 5.89.0(@swc/core@1.3.102)(esbuild@0.19.11) + webpack: 5.89.0(@swc/core@1.3.102)(esbuild@0.18.20) transitivePeerDependencies: - supports-color dev: false @@ -12052,7 +12078,7 @@ packages: '@babel/core': 7.23.7 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.89.0(@swc/core@1.3.102)(esbuild@0.19.11) + webpack: 5.89.0(@swc/core@1.3.102)(esbuild@0.18.20) dev: false /babel-plugin-add-react-displayname@0.0.5: @@ -13679,7 +13705,7 @@ packages: postcss-modules-values: 4.0.0(postcss@8.4.32) postcss-value-parser: 4.2.0 semver: 7.5.4 - webpack: 5.89.0(@swc/core@1.3.102)(esbuild@0.19.11) + webpack: 5.89.0(@swc/core@1.3.102)(esbuild@0.18.20) dev: false /css-select@4.3.0: @@ -14871,6 +14897,7 @@ packages: '@esbuild/win32-arm64': 0.19.11 '@esbuild/win32-ia32': 0.19.11 '@esbuild/win32-x64': 0.19.11 + dev: true /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} @@ -15243,7 +15270,7 @@ packages: lodash: 4.17.21 resolve: 2.0.0-next.5 semver: 5.7.2 - webpack: 5.89.0(@swc/core@1.3.102)(esbuild@0.19.11) + webpack: 5.89.0(@swc/core@1.3.102)(esbuild@0.18.20) transitivePeerDependencies: - supports-color dev: true @@ -17015,7 +17042,7 @@ packages: semver: 7.5.4 tapable: 2.2.1 typescript: 5.3.3 - webpack: 5.89.0(@swc/core@1.3.102)(esbuild@0.19.11) + webpack: 5.89.0(@swc/core@1.3.102)(esbuild@0.18.20) dev: false /form-data@3.0.1: @@ -17973,7 +18000,7 @@ packages: lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.89.0(@swc/core@1.3.102)(esbuild@0.19.11) + webpack: 5.89.0(@swc/core@1.3.102)(esbuild@0.18.20) dev: false /htmlparser2@5.0.1: @@ -22165,7 +22192,7 @@ packages: url: 0.11.3 util: 0.12.5 vm-browserify: 1.1.2 - webpack: 5.89.0(@swc/core@1.3.102)(esbuild@0.19.11) + webpack: 5.89.0(@swc/core@1.3.102)(esbuild@0.18.20) dev: false /node-releases@2.0.14: @@ -23282,7 +23309,7 @@ packages: jiti: 1.21.0 postcss: 8.4.32 semver: 7.5.4 - webpack: 5.89.0(@swc/core@1.3.102)(esbuild@0.19.11) + webpack: 5.89.0(@swc/core@1.3.102)(esbuild@0.18.20) transitivePeerDependencies: - typescript dev: false @@ -24883,7 +24910,7 @@ packages: dependencies: klona: 2.0.6 neo-async: 2.6.2 - webpack: 5.89.0(@swc/core@1.3.102)(esbuild@0.19.11) + webpack: 5.89.0(@swc/core@1.3.102)(esbuild@0.18.20) dev: false /saxes@6.0.0: @@ -25690,7 +25717,7 @@ packages: peerDependencies: webpack: ^5.0.0 dependencies: - webpack: 5.89.0(@swc/core@1.3.102)(esbuild@0.19.11) + webpack: 5.89.0(@swc/core@1.3.102)(esbuild@0.18.20) dev: false /style-to-object@0.4.4: @@ -25944,7 +25971,7 @@ packages: webpack: '>=2' dependencies: '@swc/core': 1.3.102 - webpack: 5.89.0(@swc/core@1.3.102)(esbuild@0.19.11) + webpack: 5.89.0(@swc/core@1.3.102)(esbuild@0.18.20) dev: false /swr@2.2.0(react@18.2.0): @@ -26142,7 +26169,7 @@ packages: supports-hyperlinks: 2.3.0 dev: true - /terser-webpack-plugin@5.3.10(@swc/core@1.3.102)(esbuild@0.19.11)(webpack@5.89.0): + /terser-webpack-plugin@5.3.10(@swc/core@1.3.102)(esbuild@0.18.20)(webpack@5.89.0): resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -26160,12 +26187,12 @@ packages: dependencies: '@jridgewell/trace-mapping': 0.3.20 '@swc/core': 1.3.102 - esbuild: 0.19.11 + esbuild: 0.18.20 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.1 terser: 5.26.0 - webpack: 5.89.0(@swc/core@1.3.102)(esbuild@0.19.11) + webpack: 5.89.0(@swc/core@1.3.102)(esbuild@0.18.20) /terser@5.26.0: resolution: {integrity: sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ==} @@ -26399,7 +26426,7 @@ packages: /ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - /ts-jest@29.1.1(@babel/core@7.23.7)(esbuild@0.19.11)(jest@29.7.0)(typescript@5.3.3): + /ts-jest@29.1.1(@babel/core@7.23.7)(esbuild@0.18.20)(jest@29.7.0)(typescript@5.3.3): resolution: {integrity: sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -26422,7 +26449,7 @@ packages: dependencies: '@babel/core': 7.23.7 bs-logger: 0.2.6 - esbuild: 0.19.11 + esbuild: 0.18.20 fast-json-stable-stringify: 2.1.0 jest: 29.7.0(@types/node@20.10.6)(ts-node@10.9.2) jest-util: 29.7.0 @@ -27327,7 +27354,7 @@ packages: mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 4.2.0 - webpack: 5.89.0(@swc/core@1.3.102)(esbuild@0.19.11) + webpack: 5.89.0(@swc/core@1.3.102)(esbuild@0.18.20) dev: false /webpack-hot-middleware@2.26.0: @@ -27350,7 +27377,7 @@ packages: resolution: {integrity: sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==} dev: false - /webpack@5.89.0(@swc/core@1.3.102)(esbuild@0.19.11): + /webpack@5.89.0(@swc/core@1.3.102)(esbuild@0.18.20): resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} engines: {node: '>=10.13.0'} hasBin: true @@ -27381,7 +27408,7 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.3.102)(esbuild@0.19.11)(webpack@5.89.0) + terser-webpack-plugin: 5.3.10(@swc/core@1.3.102)(esbuild@0.18.20)(webpack@5.89.0) watchpack: 2.4.0 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -27709,7 +27736,7 @@ packages: slash: 5.1.0 to-absolute-glob: 3.0.0 typescript: 5.3.3 - webpack: 5.89.0(@swc/core@1.3.102)(esbuild@0.19.11) + webpack: 5.89.0(@swc/core@1.3.102)(esbuild@0.18.20) transitivePeerDependencies: - '@types/eslint' - eslint-import-resolver-typescript diff --git a/src/data/i18n/en-us.json b/src/data/i18n/en-us.json index e354a01..90e3302 100644 --- a/src/data/i18n/en-us.json +++ b/src/data/i18n/en-us.json @@ -554,7 +554,7 @@ } }, "plugins": { - "stars": "Star Relivator v1.2.1 on GitHub ⭐" + "stars": "Star Relivator v1.2.2 on GitHub ⭐" }, "pricing": { "compare": { diff --git a/src/data/i18n/zh-cn.json b/src/data/i18n/zh-cn.json index a51886d..2b8af7d 100644 --- a/src/data/i18n/zh-cn.json +++ b/src/data/i18n/zh-cn.json @@ -611,7 +611,7 @@ } }, "plugins": { - "stars": "在 GitHub 上给 Relivator v1.2.1 点赞 ⭐" + "stars": "在 GitHub 上给 Relivator v1.2.2 点赞 ⭐" }, "pricing": { "compare": { diff --git a/src/islands/checkout/cart-sheet.tsx b/src/islands/checkout/cart-sheet.tsx index 1e75983..cccc704 100644 --- a/src/islands/checkout/cart-sheet.tsx +++ b/src/islands/checkout/cart-sheet.tsx @@ -82,7 +82,7 @@ export async function CartSheet() { Cart {itemCount > 0 && `(${itemCount})`} - {itemCount > 0 ? ( + {itemCount > 0 ? <>
@@ -118,8 +118,7 @@ export async function CartSheet() {
- ) : ( -
+ :
- )} + } ); diff --git a/src/islands/fake-loading.tsx b/src/islands/fake-loading.tsx index 145c7d1..a5aeaf7 100644 --- a/src/islands/fake-loading.tsx +++ b/src/islands/fake-loading.tsx @@ -48,56 +48,30 @@ export function FakeLoadingVariantOneSpecial() { ); } -export function FakeLoadingVariantTwo() { +function PlaceholderIcon() { return ( - -
-
- x -
-
-
-
-
-
-
-
-
-
- - - -
-
- -
- -
-
-
- - -
-
-
- - -
-
+
+
+
- +
); } -export function FakeLoadingVariantThree() { +function SkeletonGroup() { + return ( +
+ + + +
+ ); +} + +export function FakeLoadingVariantTwo() { return (
@@ -156,12 +130,7 @@ export function FakeLoadingVariantThree() { -
-
+
@@ -182,7 +151,7 @@ export function FakeLoadingVariantThree() { ); } -export function FakeLoadingVariantFour() { +export function FakeLoadingVariantThree() { return (
diff --git a/src/islands/icons.tsx b/src/islands/icons.tsx index cd43396..9c73d00 100644 --- a/src/islands/icons.tsx +++ b/src/islands/icons.tsx @@ -1,3 +1,4 @@ +/* eslint-disable @stylistic/max-len */ import { AlarmClock, AlertTriangle, diff --git a/src/islands/navigation/pagination/store-switcher.tsx b/src/islands/navigation/pagination/store-switcher.tsx index 7734e9b..bd8cf98 100644 --- a/src/islands/navigation/pagination/store-switcher.tsx +++ b/src/islands/navigation/pagination/store-switcher.tsx @@ -116,6 +116,7 @@ export function StoreSwitcher({ setIsDialogOpen(true); }} > + {/* eslint-disable-next-line react/jsx-max-depth */}