diff --git a/.eslintrc.cjs b/.eslintrc.cjs deleted file mode 100644 index d56dfaa..0000000 --- a/.eslintrc.cjs +++ /dev/null @@ -1,74 +0,0 @@ -/** - * @type {import('@types/eslint').Linter.Config} - */ -module.exports = { - env: { - node: true, - es2023: true, - browser: true, - }, - plugins: ['eslint-plugin-import'], - parserOptions: { - sourceType: 'module', - ecmaVersion: 2023, - }, - settings: { - 'import/resolver': { - node: true, - }, - }, - rules: { - 'no-undef': 'error', - 'no-duplicate-case': 'error', - 'no-template-curly-in-string': 'warn', - 'no-undef-init': 'error', - 'no-unneeded-ternary': 'error', - 'no-unreachable': 'error', - 'no-unreachable-loop': 'error', - 'no-unsafe-finally': 'error', - 'no-unsafe-negation': 'error', - 'no-unsafe-optional-chaining': 'error', - 'no-unused-expressions': 'error', - 'no-unused-vars': [ - 'warn', - { - args: 'after-used', - argsIgnorePattern: '^_', - ignoreRestSiblings: true, - varsIgnorePattern: '^ignored', - }, - ], - 'no-use-before-define': ['error', 'nofunc'], - 'no-useless-escape': 'error', - 'no-warning-comments': [ - 'error', - { location: 'anywhere', terms: ['fixme'] }, - ], - strict: 'error', - 'valid-typeof': 'error', - 'import/named': 'error', - 'import/no-unresolved': [ - 'error', - // workaround for - // https://github.com/import-js/eslint-plugin-import/issues/1810 - { ignore: ['@kentcdodds/*', 'react-server-dom-esm/*'] }, - ], - - 'import/no-duplicates': ['warn', { 'prefer-inline': true }], - 'import/consistent-type-specifier-style': ['warn', 'prefer-inline'], - 'import/order': [ - 'warn', - { - alphabetize: { order: 'asc', caseInsensitive: true }, - groups: [ - 'builtin', - 'external', - 'internal', - 'parent', - 'sibling', - 'index', - ], - }, - ], - }, -} diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index b4bcb98..6786c2f 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -29,6 +29,10 @@ jobs: - name: โถ๏ธ Run setup script run: npm run setup + # TOOD: bring this back when CI is more reliable + # - name: โถ๏ธ Run tests + # run: npm run test ..s + deploy: name: ๐ Deploy runs-on: ubuntu-latest @@ -44,6 +48,6 @@ jobs: - name: ๐ Deploy Production run: flyctl deploy --remote-only - working-directory: kcdshop/deployed + working-directory: ./epicshop env: FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }} diff --git a/.gitignore b/.gitignore index b338bcf..43c6741 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ workspace/ **/build/ **/public/build **/playwright-report +**/test-results data.db /playground **/tsconfig.tsbuildinfo diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index fe93d37..0000000 --- a/.prettierignore +++ /dev/null @@ -1,13 +0,0 @@ -node_modules - -**/build/** -**/dist/** -**/.cache/** -**/public/build/** -.env - -**/package.json -**/tsconfig.json - -**/package-lock.json -**/playwright-report/** diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index fc39ebe..0000000 --- a/.prettierrc +++ /dev/null @@ -1,35 +0,0 @@ -{ - "arrowParens": "avoid", - "bracketSameLine": false, - "bracketSpacing": true, - "embeddedLanguageFormatting": "auto", - "endOfLine": "lf", - "htmlWhitespaceSensitivity": "css", - "insertPragma": false, - "jsxSingleQuote": false, - "printWidth": 80, - "proseWrap": "always", - "quoteProps": "as-needed", - "requirePragma": false, - "semi": false, - "singleAttributePerLine": false, - "singleQuote": true, - "tabWidth": 2, - "trailingComma": "all", - "useTabs": true, - "overrides": [ - { - "files": ["**/*.json"], - "options": { - "useTabs": false - } - }, - { - "files": ["**/*.mdx"], - "options": { - "proseWrap": "preserve", - "htmlWhitespaceSensitivity": "ignore" - } - } - ] -} diff --git a/.vscode/extensions.json b/.vscode/extensions.json index fcfa18b..911c295 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,10 +1,10 @@ { - "recommendations": [ - "dbaeumer.vscode-eslint", - "esbenp.prettier-vscode", - "bradlc.vscode-tailwindcss", - "neotan.vscode-auto-restart-typescript-eslint-servers", - "prisma.prisma", - "qwtel.sqlite-viewer" - ] + "recommendations": [ + "dbaeumer.vscode-eslint", + "esbenp.prettier-vscode", + "bradlc.vscode-tailwindcss", + "neotan.vscode-auto-restart-typescript-eslint-servers", + "prisma.prisma", + "qwtel.sqlite-viewer" + ] } diff --git a/.vscode/settings.json b/.vscode/settings.json index 072aee2..9bfcb13 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,11 +1,12 @@ { - "typescript.preferences.autoImportFileExcludePatterns": [ - "@remix-run/server-runtime", - "@remix-run/router", - "react-router-dom", - "react-router" - ], - "workbench.editorAssociations": { - "*.db": "sqlite-viewer.view" - } + "typescript.preferences.autoImportFileExcludePatterns": [ + "@remix-run/server-runtime", + "@remix-run/router", + "react-router-dom", + "react-router" + ], + "javascript.preferences.importModuleSpecifierEnding": "js", + "workbench.editorAssociations": { + "*.db": "sqlite-viewer.view" + } } diff --git a/README.md b/README.md index e3605f6..a40912d 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@
- Workshop summary + In this workshop we'll be building a framework built on React Server Components and Server Functions from scratch. No build tools. No TypeScript, no Vite, no JSX. Just the Browser, Node.js, and React. This is how you develop a deep understanding of something. Let's go!