From 504790019e9fe67b123118d13769a04306ee9a82 Mon Sep 17 00:00:00 2001 From: Shane Garrity Date: Tue, 30 Jun 2026 04:27:58 -0400 Subject: [PATCH 1/6] build: move packages out of repo root Nest all packages under "/projects" directory to declutter repo root. --- .github/workflows/build.yml | 24 +++++++-------- .github/workflows/ci-salt.txt | 2 +- .github/workflows/deploy.yml | 18 +++++------ .github/workflows/e2e-test.yml | 12 ++++---- .github/workflows/install.yml | 8 ++--- .github/workflows/lint.yml | 14 ++++----- .github/workflows/type-check.yml | 12 ++++---- .github/workflows/unit-test.yml | 12 ++++---- .vscode/settings.json | 16 ++-------- CONTRIBUTING.md | 2 +- .../rush-lint-staged/.lintstagedrc.json | 2 +- common/config/rush/command-line.json | 6 ++-- common/config/rush/pnpm-lock.yaml | 28 +++++++++--------- common/config/rush/repo-state.json | 2 +- {client => projects/client}/.gitignore | 0 {client => projects/client}/README.md | 0 .../client}/__mocks__/styleMock.cjs | 0 {client => projects/client}/babel.config.js | 0 .../client}/babel.config.lib.js | 0 .../client}/config/rush-project.json | 0 .../client}/cypress/cypress.config.ts | 0 .../client}/cypress/e2e/spec.cy.ts | 0 .../client}/cypress/support/commands.ts | 0 .../client}/cypress/support/e2e.ts | 0 .../client}/cypress/tsconfig.json | 0 {client => projects/client}/eslint.config.js | 0 {client => projects/client}/jest-setup.ts | 0 {client => projects/client}/jest.config.js | 0 {client => projects/client}/package.json | 4 +-- {client => projects/client}/src/App/App.css | 0 .../client}/src/App/App.test.tsx | 0 {client => projects/client}/src/App/App.tsx | 0 .../src/App/components/ErrorBoundary.tsx | 0 .../src/App/components/ErrorCard.test.tsx | 0 .../client}/src/App/components/ErrorCard.tsx | 0 .../client}/src/App/components/Footer.tsx | 0 .../src/App/components/Game/CanvasScene.tsx | 0 .../client}/src/App/components/Game/Game.tsx | 0 .../client}/src/App/components/Game/Key.tsx | 0 .../src/App/components/Game/KeyPad.test.tsx | 0 .../src/App/components/Game/KeyPad.tsx | 0 .../src/App/components/Game/draw-cube.ts | 0 .../src/App/components/Game/draw-line.ts | 0 .../src/App/components/Game/draw-point.ts | 0 .../src/App/components/Game/draw-scene.ts | 0 .../Game/get-canvas-rendering-context-2d.ts | 0 .../client}/src/App/components/Game/index.ts | 0 .../client}/src/App/components/Game/rotate.ts | 0 .../Game/use-animation-frame-manager.test.ts | 0 .../Game/use-animation-frame-manager.ts | 0 .../Game/use-canvas-rendering-context-2d.ts | 0 .../src/App/components/Game/use-draw-scene.ts | 0 .../components/Game/use-key-presses.test.ts | 0 .../App/components/Game/use-key-presses.ts | 0 .../components/Game/use-update-position.ts | 0 .../client}/src/App/components/Header.tsx | 0 .../client}/src/App/components/Home.tsx | 0 .../App/components/LoadingContent.test.tsx | 0 .../src/App/components/LoadingContent.tsx | 0 .../client}/src/App/components/LogoutLink.tsx | 0 .../client}/src/App/components/Nav.tsx | 0 .../src/App/components/NavigationChrome.tsx | 0 .../client}/src/App/components/NewWorld.tsx | 0 .../src/App/components/Unauthorized.tsx | 0 .../src/App/components/Welcome.test.tsx | 0 .../client}/src/App/components/Welcome.tsx | 0 .../src/App/components/WorldDetail.tsx | 0 .../client}/src/App/components/Worlds.tsx | 0 .../App/components/get-breadcrumbs.test.tsx | 0 .../src/App/components/get-breadcrumbs.ts | 0 .../client}/src/App/get-routes.test.tsx | 0 .../client}/src/App/get-routes.ts | 0 .../src/App/hooks/use-has-time-passed.test.ts | 0 .../src/App/hooks/use-has-time-passed.ts | 0 .../src/App/hooks/use-latest-request.test.tsx | 0 .../src/App/hooks/use-latest-request.ts | 0 .../client}/src/declarations.d.ts | 0 {client => projects/client}/src/favicon.ico | Bin {client => projects/client}/src/index.html | 0 {client => projects/client}/src/index.ts | 0 .../client}/src/paths.test.tsx | 0 {client => projects/client}/src/paths.ts | 0 {client => projects/client}/src/reset.css | 0 {client => projects/client}/src/style.css | 0 {client => projects/client}/tsconfig.json | 0 {client => projects/client}/webpack.config.js | 0 .../components}/.gitignore | 0 {components => projects/components}/README.md | 0 .../components}/babel.config.js | 0 .../components}/eslint.config.js | 0 .../components}/package.json | 4 +-- .../components}/src/Flex.tsx | 0 .../components}/src/index.ts | 0 .../components}/src/types.ts | 0 .../components}/tsconfig.json | 0 {deploy => projects/deploy}/.gitignore | 0 {deploy => projects/deploy}/README.md | 0 .../deploy}/client_config_ci.sh | 0 {deploy => projects/deploy}/eslint.config.js | 0 {deploy => projects/deploy}/package.json | 4 +-- .../deploy}/src/aws-ec2-deploy.js | 0 .../deploy}/src/aws-s3-sync.js | 0 .../deploy}/src/aws-s3-upload-artifacts.js | 0 .../deploy}/src/config.example.json | 0 .../deploy}/src/ec2-user-data.sh | 0 {deploy => projects/deploy}/src/index.js | 0 {discord => projects/discord}/.gitignore | 0 {discord => projects/discord}/README.md | 0 .../discord}/client_config_ci.sh | 0 .../discord}/cypress/cypress.config.js | 0 .../discord}/cypress/e2e/authenticate.cy.js | 0 .../discord}/cypress/support/commands.js | 0 .../discord}/cypress/support/e2e.js | 0 .../discord}/eslint.config.js | 0 {discord => projects/discord}/package.json | 4 +-- .../src/authenticated-api/handle-api-error.js | 0 .../handle-api-error.test.js | 0 .../handle-endpoint-not-found.js | 0 .../handle-endpoint-not-found.test.js | 0 .../handle-get-guild-membership.js | 0 .../handle-get-guild-membership.test.js | 0 .../authenticated-api/handle-get-worlds.js | 0 .../handle-get-worlds.test.js | 0 .../handle-launch-existing.js | 0 .../handle-launch-existing.test.js | 0 .../authenticated-api/handle-launch-new.js | 0 .../handle-launch-new.test.js | 0 .../require-authentication.js | 0 .../require-authentication.test.js | 0 .../require-guild-membership.js | 0 .../require-guild-membership.test.js | 0 .../discord}/src/authenticated-api/router.js | 0 .../src/authenticated-api/router.test.js | 0 .../discord}/src/authenticated-html-router.js | 0 .../src/authenticated-html-router.test.js | 0 .../discord}/src/config.example.json | 0 .../handle-authorization-code-grant.js | 0 .../handle-authorization-code-grant.test.js | 0 .../discord}/src/handlers/handle-error.js | 0 .../src/handlers/handle-error.test.js | 0 .../discord}/src/handlers/handle-logout.js | 0 .../src/handlers/handle-logout.test.js | 0 .../discord}/src/handlers/handle-redirect.js | 0 .../src/handlers/handle-redirect.test.js | 0 .../handlers/handle-render-authenticated.js | 0 .../handle-render-authenticated.test.js | 0 .../src/handlers/handle-render-login.js | 0 .../src/handlers/handle-render-login.test.js | 0 .../discord}/src/login-router.js | 0 .../discord}/src/login-router.test.js | 0 {discord => projects/discord}/src/server.js | 0 .../discord}/src/trshcmpctr-discord.service | 0 .../discord}/src/utils/auth-from-code.js | 0 .../discord}/src/utils/auth-from-code.test.js | 0 .../src/utils/get-fetch-with-oauth.js | 0 .../src/utils/get-fetch-with-oauth.test.js | 0 .../discord}/src/views/error.html | 0 .../discord}/src/views/login.html | 0 .../eslint-config-jest}/README.md | 0 .../eslint-config-jest}/eslint.config.js | 0 .../eslint-config-jest}/package.json | 4 +-- .../src/eslint-config-jest.js | 0 .../eslint-config-node}/README.md | 0 .../eslint-config-node}/eslint.config.js | 0 .../eslint-config-node}/package.json | 4 +-- .../src/eslint-config-node.js | 0 .../eslint-config-react}/README.md | 0 .../eslint-config-react}/eslint.config.js | 0 .../eslint-config-react}/package.json | 4 +-- .../src/eslint-config-react.js | 0 .../eslint-config-typescript}/README.md | 0 .../eslint.config.js | 0 .../eslint-config-typescript}/package.json | 4 +-- .../src/eslint-config-typescript.js | 0 .../eslint-config}/README.md | 0 .../eslint-config}/eslint.config.js | 0 .../eslint-config}/package.json | 4 +-- .../eslint-config}/src/eslint-config.js | 0 .../jest-stdout-reporter}/README.md | 0 .../jest-stdout-reporter}/eslint.config.js | 0 .../jest-stdout-reporter}/package.json | 4 +-- .../src/jest-stdout-reporter.js | 0 .../markdownlint-config}/README.md | 0 .../markdownlint-config}/package.json | 4 +-- .../src/.markdownlint-cli2.jsonc | 0 {scaffold => projects/scaffold}/README.md | 0 .../scaffold}/eslint.config.js | 0 {scaffold => projects/scaffold}/package.json | 4 +-- {scaffold => projects/scaffold}/src/index.js | 12 ++------ .../scaffold}/src/templates/README.md.hbs | 0 .../src/templates/eslint.config.js.hbs | 0 .../scaffold}/src/templates/package.json.hbs | 0 .../scaffold}/src/templates/src/index.js.hbs | 0 {typescript => projects/typescript}/README.md | 0 .../typescript}/package.json | 4 +-- .../typescript}/src/tsconfig.json | 0 rush.json | 26 ++++++++-------- 197 files changed, 114 insertions(+), 134 deletions(-) rename {client => projects/client}/.gitignore (100%) rename {client => projects/client}/README.md (100%) rename {client => projects/client}/__mocks__/styleMock.cjs (100%) rename {client => projects/client}/babel.config.js (100%) rename {client => projects/client}/babel.config.lib.js (100%) rename {client => projects/client}/config/rush-project.json (100%) rename {client => projects/client}/cypress/cypress.config.ts (100%) rename {client => projects/client}/cypress/e2e/spec.cy.ts (100%) rename {client => projects/client}/cypress/support/commands.ts (100%) rename {client => projects/client}/cypress/support/e2e.ts (100%) rename {client => projects/client}/cypress/tsconfig.json (100%) rename {client => projects/client}/eslint.config.js (100%) rename {client => projects/client}/jest-setup.ts (100%) rename {client => projects/client}/jest.config.js (100%) rename {client => projects/client}/package.json (96%) rename {client => projects/client}/src/App/App.css (100%) rename {client => projects/client}/src/App/App.test.tsx (100%) rename {client => projects/client}/src/App/App.tsx (100%) rename {client => projects/client}/src/App/components/ErrorBoundary.tsx (100%) rename {client => projects/client}/src/App/components/ErrorCard.test.tsx (100%) rename {client => projects/client}/src/App/components/ErrorCard.tsx (100%) rename {client => projects/client}/src/App/components/Footer.tsx (100%) rename {client => projects/client}/src/App/components/Game/CanvasScene.tsx (100%) rename {client => projects/client}/src/App/components/Game/Game.tsx (100%) rename {client => projects/client}/src/App/components/Game/Key.tsx (100%) rename {client => projects/client}/src/App/components/Game/KeyPad.test.tsx (100%) rename {client => projects/client}/src/App/components/Game/KeyPad.tsx (100%) rename {client => projects/client}/src/App/components/Game/draw-cube.ts (100%) rename {client => projects/client}/src/App/components/Game/draw-line.ts (100%) rename {client => projects/client}/src/App/components/Game/draw-point.ts (100%) rename {client => projects/client}/src/App/components/Game/draw-scene.ts (100%) rename {client => projects/client}/src/App/components/Game/get-canvas-rendering-context-2d.ts (100%) rename {client => projects/client}/src/App/components/Game/index.ts (100%) rename {client => projects/client}/src/App/components/Game/rotate.ts (100%) rename {client => projects/client}/src/App/components/Game/use-animation-frame-manager.test.ts (100%) rename {client => projects/client}/src/App/components/Game/use-animation-frame-manager.ts (100%) rename {client => projects/client}/src/App/components/Game/use-canvas-rendering-context-2d.ts (100%) rename {client => projects/client}/src/App/components/Game/use-draw-scene.ts (100%) rename {client => projects/client}/src/App/components/Game/use-key-presses.test.ts (100%) rename {client => projects/client}/src/App/components/Game/use-key-presses.ts (100%) rename {client => projects/client}/src/App/components/Game/use-update-position.ts (100%) rename {client => projects/client}/src/App/components/Header.tsx (100%) rename {client => projects/client}/src/App/components/Home.tsx (100%) rename {client => projects/client}/src/App/components/LoadingContent.test.tsx (100%) rename {client => projects/client}/src/App/components/LoadingContent.tsx (100%) rename {client => projects/client}/src/App/components/LogoutLink.tsx (100%) rename {client => projects/client}/src/App/components/Nav.tsx (100%) rename {client => projects/client}/src/App/components/NavigationChrome.tsx (100%) rename {client => projects/client}/src/App/components/NewWorld.tsx (100%) rename {client => projects/client}/src/App/components/Unauthorized.tsx (100%) rename {client => projects/client}/src/App/components/Welcome.test.tsx (100%) rename {client => projects/client}/src/App/components/Welcome.tsx (100%) rename {client => projects/client}/src/App/components/WorldDetail.tsx (100%) rename {client => projects/client}/src/App/components/Worlds.tsx (100%) rename {client => projects/client}/src/App/components/get-breadcrumbs.test.tsx (100%) rename {client => projects/client}/src/App/components/get-breadcrumbs.ts (100%) rename {client => projects/client}/src/App/get-routes.test.tsx (100%) rename {client => projects/client}/src/App/get-routes.ts (100%) rename {client => projects/client}/src/App/hooks/use-has-time-passed.test.ts (100%) rename {client => projects/client}/src/App/hooks/use-has-time-passed.ts (100%) rename {client => projects/client}/src/App/hooks/use-latest-request.test.tsx (100%) rename {client => projects/client}/src/App/hooks/use-latest-request.ts (100%) rename {client => projects/client}/src/declarations.d.ts (100%) rename {client => projects/client}/src/favicon.ico (100%) rename {client => projects/client}/src/index.html (100%) rename {client => projects/client}/src/index.ts (100%) rename {client => projects/client}/src/paths.test.tsx (100%) rename {client => projects/client}/src/paths.ts (100%) rename {client => projects/client}/src/reset.css (100%) rename {client => projects/client}/src/style.css (100%) rename {client => projects/client}/tsconfig.json (100%) rename {client => projects/client}/webpack.config.js (100%) rename {components => projects/components}/.gitignore (100%) rename {components => projects/components}/README.md (100%) rename {components => projects/components}/babel.config.js (100%) rename {components => projects/components}/eslint.config.js (100%) rename {components => projects/components}/package.json (92%) rename {components => projects/components}/src/Flex.tsx (100%) rename {components => projects/components}/src/index.ts (100%) rename {components => projects/components}/src/types.ts (100%) rename {components => projects/components}/tsconfig.json (100%) rename {deploy => projects/deploy}/.gitignore (100%) rename {deploy => projects/deploy}/README.md (100%) rename {deploy => projects/deploy}/client_config_ci.sh (100%) rename {deploy => projects/deploy}/eslint.config.js (100%) rename {deploy => projects/deploy}/package.json (89%) rename {deploy => projects/deploy}/src/aws-ec2-deploy.js (100%) rename {deploy => projects/deploy}/src/aws-s3-sync.js (100%) rename {deploy => projects/deploy}/src/aws-s3-upload-artifacts.js (100%) rename {deploy => projects/deploy}/src/config.example.json (100%) rename {deploy => projects/deploy}/src/ec2-user-data.sh (100%) rename {deploy => projects/deploy}/src/index.js (100%) rename {discord => projects/discord}/.gitignore (100%) rename {discord => projects/discord}/README.md (100%) rename {discord => projects/discord}/client_config_ci.sh (100%) rename {discord => projects/discord}/cypress/cypress.config.js (100%) rename {discord => projects/discord}/cypress/e2e/authenticate.cy.js (100%) rename {discord => projects/discord}/cypress/support/commands.js (100%) rename {discord => projects/discord}/cypress/support/e2e.js (100%) rename {discord => projects/discord}/eslint.config.js (100%) rename {discord => projects/discord}/package.json (94%) rename {discord => projects/discord}/src/authenticated-api/handle-api-error.js (100%) rename {discord => projects/discord}/src/authenticated-api/handle-api-error.test.js (100%) rename {discord => projects/discord}/src/authenticated-api/handle-endpoint-not-found.js (100%) rename {discord => projects/discord}/src/authenticated-api/handle-endpoint-not-found.test.js (100%) rename {discord => projects/discord}/src/authenticated-api/handle-get-guild-membership.js (100%) rename {discord => projects/discord}/src/authenticated-api/handle-get-guild-membership.test.js (100%) rename {discord => projects/discord}/src/authenticated-api/handle-get-worlds.js (100%) rename {discord => projects/discord}/src/authenticated-api/handle-get-worlds.test.js (100%) rename {discord => projects/discord}/src/authenticated-api/handle-launch-existing.js (100%) rename {discord => projects/discord}/src/authenticated-api/handle-launch-existing.test.js (100%) rename {discord => projects/discord}/src/authenticated-api/handle-launch-new.js (100%) rename {discord => projects/discord}/src/authenticated-api/handle-launch-new.test.js (100%) rename {discord => projects/discord}/src/authenticated-api/require-authentication.js (100%) rename {discord => projects/discord}/src/authenticated-api/require-authentication.test.js (100%) rename {discord => projects/discord}/src/authenticated-api/require-guild-membership.js (100%) rename {discord => projects/discord}/src/authenticated-api/require-guild-membership.test.js (100%) rename {discord => projects/discord}/src/authenticated-api/router.js (100%) rename {discord => projects/discord}/src/authenticated-api/router.test.js (100%) rename {discord => projects/discord}/src/authenticated-html-router.js (100%) rename {discord => projects/discord}/src/authenticated-html-router.test.js (100%) rename {discord => projects/discord}/src/config.example.json (100%) rename {discord => projects/discord}/src/handlers/handle-authorization-code-grant.js (100%) rename {discord => projects/discord}/src/handlers/handle-authorization-code-grant.test.js (100%) rename {discord => projects/discord}/src/handlers/handle-error.js (100%) rename {discord => projects/discord}/src/handlers/handle-error.test.js (100%) rename {discord => projects/discord}/src/handlers/handle-logout.js (100%) rename {discord => projects/discord}/src/handlers/handle-logout.test.js (100%) rename {discord => projects/discord}/src/handlers/handle-redirect.js (100%) rename {discord => projects/discord}/src/handlers/handle-redirect.test.js (100%) rename {discord => projects/discord}/src/handlers/handle-render-authenticated.js (100%) rename {discord => projects/discord}/src/handlers/handle-render-authenticated.test.js (100%) rename {discord => projects/discord}/src/handlers/handle-render-login.js (100%) rename {discord => projects/discord}/src/handlers/handle-render-login.test.js (100%) rename {discord => projects/discord}/src/login-router.js (100%) rename {discord => projects/discord}/src/login-router.test.js (100%) rename {discord => projects/discord}/src/server.js (100%) rename {discord => projects/discord}/src/trshcmpctr-discord.service (100%) rename {discord => projects/discord}/src/utils/auth-from-code.js (100%) rename {discord => projects/discord}/src/utils/auth-from-code.test.js (100%) rename {discord => projects/discord}/src/utils/get-fetch-with-oauth.js (100%) rename {discord => projects/discord}/src/utils/get-fetch-with-oauth.test.js (100%) rename {discord => projects/discord}/src/views/error.html (100%) rename {discord => projects/discord}/src/views/login.html (100%) rename {eslint-config-jest => projects/eslint-config-jest}/README.md (100%) rename {eslint-config-jest => projects/eslint-config-jest}/eslint.config.js (100%) rename {eslint-config-jest => projects/eslint-config-jest}/package.json (87%) rename {eslint-config-jest => projects/eslint-config-jest}/src/eslint-config-jest.js (100%) rename {eslint-config-node => projects/eslint-config-node}/README.md (100%) rename {eslint-config-node => projects/eslint-config-node}/eslint.config.js (100%) rename {eslint-config-node => projects/eslint-config-node}/package.json (86%) rename {eslint-config-node => projects/eslint-config-node}/src/eslint-config-node.js (100%) rename {eslint-config-react => projects/eslint-config-react}/README.md (100%) rename {eslint-config-react => projects/eslint-config-react}/eslint.config.js (100%) rename {eslint-config-react => projects/eslint-config-react}/package.json (87%) rename {eslint-config-react => projects/eslint-config-react}/src/eslint-config-react.js (100%) rename {eslint-config-typescript => projects/eslint-config-typescript}/README.md (100%) rename {eslint-config-typescript => projects/eslint-config-typescript}/eslint.config.js (100%) rename {eslint-config-typescript => projects/eslint-config-typescript}/package.json (86%) rename {eslint-config-typescript => projects/eslint-config-typescript}/src/eslint-config-typescript.js (100%) rename {eslint-config => projects/eslint-config}/README.md (100%) rename {eslint-config => projects/eslint-config}/eslint.config.js (100%) rename {eslint-config => projects/eslint-config}/package.json (88%) rename {eslint-config => projects/eslint-config}/src/eslint-config.js (100%) rename {jest-stdout-reporter => projects/jest-stdout-reporter}/README.md (100%) rename {jest-stdout-reporter => projects/jest-stdout-reporter}/eslint.config.js (100%) rename {jest-stdout-reporter => projects/jest-stdout-reporter}/package.json (86%) rename {jest-stdout-reporter => projects/jest-stdout-reporter}/src/jest-stdout-reporter.js (100%) rename {markdownlint-config => projects/markdownlint-config}/README.md (100%) rename {markdownlint-config => projects/markdownlint-config}/package.json (82%) rename {markdownlint-config => projects/markdownlint-config}/src/.markdownlint-cli2.jsonc (100%) rename {scaffold => projects/scaffold}/README.md (100%) rename {scaffold => projects/scaffold}/eslint.config.js (100%) rename {scaffold => projects/scaffold}/package.json (88%) rename {scaffold => projects/scaffold}/src/index.js (79%) rename {scaffold => projects/scaffold}/src/templates/README.md.hbs (100%) rename {scaffold => projects/scaffold}/src/templates/eslint.config.js.hbs (100%) rename {scaffold => projects/scaffold}/src/templates/package.json.hbs (100%) rename {scaffold => projects/scaffold}/src/templates/src/index.js.hbs (100%) rename {typescript => projects/typescript}/README.md (100%) rename {typescript => projects/typescript}/package.json (84%) rename {typescript => projects/typescript}/src/tsconfig.json (100%) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1b87a2c5..a86303f9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -20,12 +20,12 @@ jobs: with: path: | common/temp - */.rush/temp - */node_modules + projects/*/.rush/temp + projects/*/node_modules ~/.cache/Cypress - */dist - client/lib - components/lib + projects/*/dist + projects/client/lib + projects/components/lib key: ${{ runner.os }}-build-${{ hashFiles('common/config/rush/repo-state.json', 'common/config/rush/pnpm-config.json', 'rush.json', '.github/workflows/ci-salt.txt') }} # Only need a cache hit or miss, # cached dependencies aren't used until following jobs @@ -38,8 +38,8 @@ jobs: with: path: | common/temp - */.rush/temp - */node_modules + projects/*/.rush/temp + projects/*/node_modules ~/.cache/Cypress key: ${{ runner.os }}-${{ hashFiles('common/config/rush/repo-state.json', 'common/config/rush/pnpm-config.json', 'rush.json', '.github/workflows/ci-salt.txt') }} fail-on-cache-miss: true @@ -55,10 +55,10 @@ jobs: with: path: | common/temp - */.rush/temp - */node_modules + projects/*/.rush/temp + projects/*/node_modules ~/.cache/Cypress - */dist - client/lib - components/lib + projects/*/dist + projects/client/lib + projects/components/lib key: ${{ steps.restore-build-cache.outputs.cache-primary-key }} diff --git a/.github/workflows/ci-salt.txt b/.github/workflows/ci-salt.txt index 032ff161..6d148c4e 100644 --- a/.github/workflows/ci-salt.txt +++ b/.github/workflows/ci-salt.txt @@ -1,3 +1,3 @@ In CI, the contents of this file are hashed to save and restore dependencies between workflows. Change anything here to force a cache miss even if repo-state.json hasn't changed. -2026-06-26T05:20:40.660Z +2026-06-30T08:38:56.477Z diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 486b884f..187293ff 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -30,17 +30,17 @@ jobs: with: path: | common/temp - */.rush/temp - */node_modules + projects/*/.rush/temp + projects/*/node_modules ~/.cache/Cypress - */dist - client/lib - components/lib + projects/*/dist + projects/client/lib + projects/components/lib key: ${{ runner.os }}-build-${{ hashFiles('common/config/rush/repo-state.json', 'common/config/rush/pnpm-config.json', 'rush.json', '.github/workflows/ci-salt.txt') }} fail-on-cache-miss: true - name: Configure Discord Secrets - run: (cd discord && ./client_config_ci.sh) + run: (cd projects/discord && ./client_config_ci.sh) env: # Repository-level secrets DISCORD_CLIENT_ID: ${{ secrets.DISCORD_CLIENT_ID }} @@ -52,7 +52,7 @@ jobs: # FIXME: support new deployment target # - name: Configure Deploy Secrets - # run: (cd deploy && ./client_config_ci.sh) + # run: (cd projects/deploy && ./client_config_ci.sh) # env: # AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} # AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} @@ -65,7 +65,7 @@ jobs: # - name: Upload Deployment Artifacts # # Artifacts are uploaded via aws s3 but could also be done with https://github.com/actions/upload-artifact # # Downloading artifacts to new instances is already convenient via aws credentials and cli - # run: (cd deploy && npm run upload ${{ inputs.environment }}) + # run: (cd projects/deploy && npm run upload ${{ inputs.environment }}) # - name: Deploy - # run: (cd deploy && npm start ${{ inputs.environment }}) + # run: (cd projects/deploy && npm start ${{ inputs.environment }}) diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml index c4050447..8c57733f 100644 --- a/.github/workflows/e2e-test.yml +++ b/.github/workflows/e2e-test.yml @@ -20,17 +20,17 @@ jobs: with: path: | common/temp - */.rush/temp - */node_modules + projects/*/.rush/temp + projects/*/node_modules ~/.cache/Cypress - */dist - client/lib - components/lib + projects/*/dist + projects/client/lib + projects/components/lib key: ${{ runner.os }}-build-${{ hashFiles('common/config/rush/repo-state.json', 'common/config/rush/pnpm-config.json', 'rush.json', '.github/workflows/ci-salt.txt') }} fail-on-cache-miss: true - name: Configure Discord Secrets - run: (cd discord && ./client_config_ci.sh) + run: (cd projects/discord && ./client_config_ci.sh) env: # Repository-level secrets DISCORD_CLIENT_ID: ${{ secrets.DISCORD_CLIENT_ID }} diff --git a/.github/workflows/install.yml b/.github/workflows/install.yml index a5878d90..7f00d34a 100644 --- a/.github/workflows/install.yml +++ b/.github/workflows/install.yml @@ -20,8 +20,8 @@ jobs: with: path: | common/temp - */.rush/temp - */node_modules + projects/*/.rush/temp + projects/*/node_modules ~/.cache/Cypress key: ${{ runner.os }}-${{ hashFiles('common/config/rush/repo-state.json', 'common/config/rush/pnpm-config.json', 'rush.json', '.github/workflows/ci-salt.txt') }} # Only need a cache hit or miss, @@ -39,7 +39,7 @@ jobs: with: path: | common/temp - */.rush/temp - */node_modules + projects/*/.rush/temp + projects/*/node_modules ~/.cache/Cypress key: ${{ steps.restore-cache.outputs.cache-primary-key }} diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 07f01a62..13dd1957 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -20,17 +20,17 @@ jobs: with: path: | common/temp - */.rush/temp - */node_modules + projects/*/.rush/temp + projects/*/node_modules ~/.cache/Cypress - */dist - client/lib - components/lib + projects/*/dist + projects/client/lib + projects/components/lib key: ${{ runner.os }}-build-${{ hashFiles('common/config/rush/repo-state.json', 'common/config/rush/pnpm-config.json', 'rush.json', '.github/workflows/ci-salt.txt') }} fail-on-cache-miss: true - name: Configure Discord Secrets - run: (cd discord && ./client_config_ci.sh) + run: (cd projects/discord && ./client_config_ci.sh) env: # Any values will do, discord application does not run during this job DISCORD_CLIENT_ID: fake_discord_client_id @@ -40,7 +40,7 @@ jobs: DISCORD_REDIRECT_URI: fake_discord_redirect_uri - name: Configure Deploy Secrets - run: (cd deploy && ./client_config_ci.sh) + run: (cd projects/deploy && ./client_config_ci.sh) env: # Any values will do, deploy application does not run during this job AWS_ACCESS_KEY_ID: fake_aws_access_key_id diff --git a/.github/workflows/type-check.yml b/.github/workflows/type-check.yml index 8607be1e..435440d1 100644 --- a/.github/workflows/type-check.yml +++ b/.github/workflows/type-check.yml @@ -20,17 +20,17 @@ jobs: with: path: | common/temp - */.rush/temp - */node_modules + projects/*/.rush/temp + projects/*/node_modules ~/.cache/Cypress - */dist - client/lib - components/lib + projects/*/dist + projects/client/lib + projects/components/lib key: ${{ runner.os }}-build-${{ hashFiles('common/config/rush/repo-state.json', 'common/config/rush/pnpm-config.json', 'rush.json', '.github/workflows/ci-salt.txt') }} fail-on-cache-miss: true - name: Configure Discord Secrets - run: (cd discord && ./client_config_ci.sh) + run: (cd projects/discord && ./client_config_ci.sh) env: # Any values will do, discord application does not run during this job DISCORD_CLIENT_ID: fake_discord_client_id diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml index 58718c66..d6ab08cd 100644 --- a/.github/workflows/unit-test.yml +++ b/.github/workflows/unit-test.yml @@ -20,17 +20,17 @@ jobs: with: path: | common/temp - */.rush/temp - */node_modules + projects/*/.rush/temp + projects/*/node_modules ~/.cache/Cypress - */dist - client/lib - components/lib + projects/*/dist + projects/client/lib + projects/components/lib key: ${{ runner.os }}-build-${{ hashFiles('common/config/rush/repo-state.json', 'common/config/rush/pnpm-config.json', 'rush.json', '.github/workflows/ci-salt.txt') }} fail-on-cache-miss: true - name: Configure Discord Secrets - run: (cd discord && ./client_config_ci.sh) + run: (cd projects/discord && ./client_config_ci.sh) env: # Any values will do, discord application does not run during this job DISCORD_CLIENT_ID: fake_discord_client_id diff --git a/.vscode/settings.json b/.vscode/settings.json index 227e8462..96480c75 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,22 +1,10 @@ { "eslint.workingDirectories": [ - "client", - "components", - "deploy", - "discord", - "eslint-config-jest", - "eslint-config-node", - "eslint-config-react", - "eslint-config-typescript", - "eslint-config", - "jest-stdout-reporter", - "markdownlint-config", - "scaffold", - "typescript" + "projects/*" ], "files.associations": { "rush.json": "jsonc", "command-line.json": "jsonc", "common-versions.json": "jsonc" } -} \ No newline at end of file +} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 42957457..444a9b02 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -141,7 +141,7 @@ git commit -m 'build: update rush from x to y' (with Homebrew: `brew install jq`) [--reject]: https://www.npmjs.com/package/npm-check-updates#reject -[@trshcmpctr/scaffold]: ./scaffold +[@trshcmpctr/scaffold]: ./projects/scaffold [command-line.json]: ./common/config/rush/command-line.json [common/scripts]: ./common/scripts [npm-check-updates]: https://www.npmjs.com/package/npm-check-updates diff --git a/common/autoinstallers/rush-lint-staged/.lintstagedrc.json b/common/autoinstallers/rush-lint-staged/.lintstagedrc.json index bf3da976..12ca5841 100644 --- a/common/autoinstallers/rush-lint-staged/.lintstagedrc.json +++ b/common/autoinstallers/rush-lint-staged/.lintstagedrc.json @@ -1,5 +1,5 @@ { "*.{cjs,js,jsx,mjs,ts,tsx}": "eslint --flag v10_config_lookup_from_file --max-warnings 0 --no-warn-ignored", "package.json": "sort-package-json", - "*.md": "markdownlint-cli2 --config markdownlint-config/src/.markdownlint-cli2.jsonc --no-globs --fix" + "*.md": "markdownlint-cli2 --config projects/markdownlint-config/src/.markdownlint-cli2.jsonc --no-globs --fix" } diff --git a/common/config/rush/command-line.json b/common/config/rush/command-line.json index a45b3d8e..e227f9ff 100644 --- a/common/config/rush/command-line.json +++ b/common/config/rush/command-line.json @@ -42,7 +42,7 @@ "name": "scaffold", "summary": "Generate a new project from a template", "commandKind": "global", - "shellCommand": "node common/scripts/install-run.js plop@4.0.1 plop --plopfile scaffold/src/index.js" + "shellCommand": "node common/scripts/install-run.js plop@4.0.1 plop --plopfile projects/scaffold/src/index.js" }, { "name": "test", @@ -71,14 +71,14 @@ "summary": "Upgrade dependencies in all projects to the latest version not already satisfied by the semver range. Run after `update-minor`. You must run `rush update` after.", "commandKind": "global", "autoinstallerName": "rush-check-updates", - "shellCommand": "npm-check-updates --packageFile {$(rush list --json | jq --raw-output '.projects | map(.path) | join(\",\")')}/package.json --configFilePath common/autoinstallers/rush-check-updates/ --configFileName .ncurc.update-major.json && npm-check-updates --packageFile scaffold/src/templates/package.json.hbs --configFilePath common/autoinstallers/rush-check-updates/ --configFileName .ncurc.update-major.json" + "shellCommand": "npm-check-updates --packageFile {$(rush list --json | jq --raw-output '.projects | map(.path) | join(\",\")')}/package.json --configFilePath common/autoinstallers/rush-check-updates/ --configFileName .ncurc.update-major.json && npm-check-updates --packageFile projects/scaffold/src/templates/package.json.hbs --configFilePath common/autoinstallers/rush-check-updates/ --configFileName .ncurc.update-major.json" }, { "name": "update-minor", "summary": "Upgrade dependencies in all projects to the latest minor version not already satisfied by semver range. Run after `rush update --full`. You must run `rush update` after.", "commandKind": "global", "autoinstallerName": "rush-check-updates", - "shellCommand": "npm-check-updates --packageFile {$(rush list --json | jq --raw-output '.projects | map(.path) | join(\",\")')}/package.json --configFilePath common/autoinstallers/rush-check-updates/ --configFileName .ncurc.update-minor.json && npm-check-updates --packageFile scaffold/src/templates/package.json.hbs --configFilePath common/autoinstallers/rush-check-updates/ --configFileName .ncurc.update-minor.json" + "shellCommand": "npm-check-updates --packageFile {$(rush list --json | jq --raw-output '.projects | map(.path) | join(\",\")')}/package.json --configFilePath common/autoinstallers/rush-check-updates/ --configFileName .ncurc.update-minor.json && npm-check-updates --packageFile projects/scaffold/src/templates/package.json.hbs --configFilePath common/autoinstallers/rush-check-updates/ --configFileName .ncurc.update-minor.json" }, { "name": "update-rush-check-updates", diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index b44d8ea0..60f15eed 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -10,7 +10,7 @@ importers: .: {} - ../../client: + ../../projects/client: dependencies: '@trshcmpctr/components': specifier: workspace:* @@ -173,7 +173,7 @@ importers: specifier: ~6.0.1 version: 6.0.1(webpack@5.108.1) - ../../components: + ../../projects/components: dependencies: core-js: specifier: ~3.49.0 @@ -234,7 +234,7 @@ importers: specifier: ~6.0.3 version: 6.0.3 - ../../deploy: + ../../projects/deploy: dependencies: '@aws-sdk/client-ec2': specifier: ~3.1075.0 @@ -259,7 +259,7 @@ importers: specifier: ~0.22.1 version: 0.22.1 - ../../discord: + ../../projects/discord: dependencies: '@trshcmpctr/client': specifier: workspace:* @@ -344,7 +344,7 @@ importers: specifier: ~6.0.3 version: 6.0.3 - ../../eslint-config: + ../../projects/eslint-config: dependencies: '@eslint-community/eslint-plugin-eslint-comments': specifier: ~4.7.1 @@ -372,7 +372,7 @@ importers: specifier: ~0.22.1 version: 0.22.1 - ../../eslint-config-jest: + ../../projects/eslint-config-jest: dependencies: '@trshcmpctr/eslint-config': specifier: workspace:* @@ -400,7 +400,7 @@ importers: specifier: ~0.22.1 version: 0.22.1 - ../../eslint-config-node: + ../../projects/eslint-config-node: dependencies: eslint-plugin-n: specifier: ~18.2.1 @@ -422,7 +422,7 @@ importers: specifier: ~0.22.1 version: 0.22.1 - ../../eslint-config-react: + ../../projects/eslint-config-react: dependencies: eslint: specifier: ~9.39.1 @@ -453,7 +453,7 @@ importers: specifier: ~0.22.1 version: 0.22.1 - ../../eslint-config-typescript: + ../../projects/eslint-config-typescript: dependencies: eslint: specifier: ~9.39.1 @@ -481,7 +481,7 @@ importers: specifier: ~0.22.1 version: 0.22.1 - ../../jest-stdout-reporter: + ../../projects/jest-stdout-reporter: dependencies: '@jest/reporters': specifier: ~30.4.1 @@ -503,13 +503,13 @@ importers: specifier: ~0.22.1 version: 0.22.1 - ../../markdownlint-config: + ../../projects/markdownlint-config: devDependencies: markdownlint-cli2: specifier: ~0.22.1 version: 0.22.1 - ../../scaffold: + ../../projects/scaffold: devDependencies: '@trshcmpctr/eslint-config': specifier: workspace:* @@ -530,7 +530,7 @@ importers: specifier: ~4.0.1 version: 4.0.5(@types/node@24.13.2) - ../../typescript: + ../../projects/typescript: devDependencies: '@trshcmpctr/markdownlint-config': specifier: workspace:* @@ -9279,7 +9279,7 @@ snapshots: '@types/connect-history-api-fallback@1.5.4': dependencies: - '@types/express-serve-static-core': 4.19.8 + '@types/express-serve-static-core': 5.1.1 '@types/node': 24.13.2 '@types/connect@3.4.38': diff --git a/common/config/rush/repo-state.json b/common/config/rush/repo-state.json index 73982e51..a84fc0ee 100644 --- a/common/config/rush/repo-state.json +++ b/common/config/rush/repo-state.json @@ -1,5 +1,5 @@ // DO NOT MODIFY THIS FILE MANUALLY BUT DO COMMIT IT. It is generated and used by Rush. { - "pnpmShrinkwrapHash": "ae268f2c2aa5c5e4953eb2f7ed978234258fd1ba", + "pnpmShrinkwrapHash": "02997c8ebf98069d76d94cd121ae07f10d01d9b5", "preferredVersionsHash": "bf21a9e8fbc5a3846fb05b4fa0859e0917b2202f" } diff --git a/client/.gitignore b/projects/client/.gitignore similarity index 100% rename from client/.gitignore rename to projects/client/.gitignore diff --git a/client/README.md b/projects/client/README.md similarity index 100% rename from client/README.md rename to projects/client/README.md diff --git a/client/__mocks__/styleMock.cjs b/projects/client/__mocks__/styleMock.cjs similarity index 100% rename from client/__mocks__/styleMock.cjs rename to projects/client/__mocks__/styleMock.cjs diff --git a/client/babel.config.js b/projects/client/babel.config.js similarity index 100% rename from client/babel.config.js rename to projects/client/babel.config.js diff --git a/client/babel.config.lib.js b/projects/client/babel.config.lib.js similarity index 100% rename from client/babel.config.lib.js rename to projects/client/babel.config.lib.js diff --git a/client/config/rush-project.json b/projects/client/config/rush-project.json similarity index 100% rename from client/config/rush-project.json rename to projects/client/config/rush-project.json diff --git a/client/cypress/cypress.config.ts b/projects/client/cypress/cypress.config.ts similarity index 100% rename from client/cypress/cypress.config.ts rename to projects/client/cypress/cypress.config.ts diff --git a/client/cypress/e2e/spec.cy.ts b/projects/client/cypress/e2e/spec.cy.ts similarity index 100% rename from client/cypress/e2e/spec.cy.ts rename to projects/client/cypress/e2e/spec.cy.ts diff --git a/client/cypress/support/commands.ts b/projects/client/cypress/support/commands.ts similarity index 100% rename from client/cypress/support/commands.ts rename to projects/client/cypress/support/commands.ts diff --git a/client/cypress/support/e2e.ts b/projects/client/cypress/support/e2e.ts similarity index 100% rename from client/cypress/support/e2e.ts rename to projects/client/cypress/support/e2e.ts diff --git a/client/cypress/tsconfig.json b/projects/client/cypress/tsconfig.json similarity index 100% rename from client/cypress/tsconfig.json rename to projects/client/cypress/tsconfig.json diff --git a/client/eslint.config.js b/projects/client/eslint.config.js similarity index 100% rename from client/eslint.config.js rename to projects/client/eslint.config.js diff --git a/client/jest-setup.ts b/projects/client/jest-setup.ts similarity index 100% rename from client/jest-setup.ts rename to projects/client/jest-setup.ts diff --git a/client/jest.config.js b/projects/client/jest.config.js similarity index 100% rename from client/jest.config.js rename to projects/client/jest.config.js diff --git a/client/package.json b/projects/client/package.json similarity index 96% rename from client/package.json rename to projects/client/package.json index ecfff24d..68a14d08 100644 --- a/client/package.json +++ b/projects/client/package.json @@ -3,11 +3,11 @@ "version": "1.0.0", "private": true, "description": "Frontend React app", - "homepage": "https://github.com/shanedg/trshcmpctr/tree/main/client#readme", + "homepage": "https://github.com/shanedg/trshcmpctr/tree/main/projects/client#readme", "repository": { "type": "git", "url": "https://github.com/shanedg/trshcmpctr.git", - "directory": "client" + "directory": "projects/client" }, "license": "UNLICENSED", "type": "module", diff --git a/client/src/App/App.css b/projects/client/src/App/App.css similarity index 100% rename from client/src/App/App.css rename to projects/client/src/App/App.css diff --git a/client/src/App/App.test.tsx b/projects/client/src/App/App.test.tsx similarity index 100% rename from client/src/App/App.test.tsx rename to projects/client/src/App/App.test.tsx diff --git a/client/src/App/App.tsx b/projects/client/src/App/App.tsx similarity index 100% rename from client/src/App/App.tsx rename to projects/client/src/App/App.tsx diff --git a/client/src/App/components/ErrorBoundary.tsx b/projects/client/src/App/components/ErrorBoundary.tsx similarity index 100% rename from client/src/App/components/ErrorBoundary.tsx rename to projects/client/src/App/components/ErrorBoundary.tsx diff --git a/client/src/App/components/ErrorCard.test.tsx b/projects/client/src/App/components/ErrorCard.test.tsx similarity index 100% rename from client/src/App/components/ErrorCard.test.tsx rename to projects/client/src/App/components/ErrorCard.test.tsx diff --git a/client/src/App/components/ErrorCard.tsx b/projects/client/src/App/components/ErrorCard.tsx similarity index 100% rename from client/src/App/components/ErrorCard.tsx rename to projects/client/src/App/components/ErrorCard.tsx diff --git a/client/src/App/components/Footer.tsx b/projects/client/src/App/components/Footer.tsx similarity index 100% rename from client/src/App/components/Footer.tsx rename to projects/client/src/App/components/Footer.tsx diff --git a/client/src/App/components/Game/CanvasScene.tsx b/projects/client/src/App/components/Game/CanvasScene.tsx similarity index 100% rename from client/src/App/components/Game/CanvasScene.tsx rename to projects/client/src/App/components/Game/CanvasScene.tsx diff --git a/client/src/App/components/Game/Game.tsx b/projects/client/src/App/components/Game/Game.tsx similarity index 100% rename from client/src/App/components/Game/Game.tsx rename to projects/client/src/App/components/Game/Game.tsx diff --git a/client/src/App/components/Game/Key.tsx b/projects/client/src/App/components/Game/Key.tsx similarity index 100% rename from client/src/App/components/Game/Key.tsx rename to projects/client/src/App/components/Game/Key.tsx diff --git a/client/src/App/components/Game/KeyPad.test.tsx b/projects/client/src/App/components/Game/KeyPad.test.tsx similarity index 100% rename from client/src/App/components/Game/KeyPad.test.tsx rename to projects/client/src/App/components/Game/KeyPad.test.tsx diff --git a/client/src/App/components/Game/KeyPad.tsx b/projects/client/src/App/components/Game/KeyPad.tsx similarity index 100% rename from client/src/App/components/Game/KeyPad.tsx rename to projects/client/src/App/components/Game/KeyPad.tsx diff --git a/client/src/App/components/Game/draw-cube.ts b/projects/client/src/App/components/Game/draw-cube.ts similarity index 100% rename from client/src/App/components/Game/draw-cube.ts rename to projects/client/src/App/components/Game/draw-cube.ts diff --git a/client/src/App/components/Game/draw-line.ts b/projects/client/src/App/components/Game/draw-line.ts similarity index 100% rename from client/src/App/components/Game/draw-line.ts rename to projects/client/src/App/components/Game/draw-line.ts diff --git a/client/src/App/components/Game/draw-point.ts b/projects/client/src/App/components/Game/draw-point.ts similarity index 100% rename from client/src/App/components/Game/draw-point.ts rename to projects/client/src/App/components/Game/draw-point.ts diff --git a/client/src/App/components/Game/draw-scene.ts b/projects/client/src/App/components/Game/draw-scene.ts similarity index 100% rename from client/src/App/components/Game/draw-scene.ts rename to projects/client/src/App/components/Game/draw-scene.ts diff --git a/client/src/App/components/Game/get-canvas-rendering-context-2d.ts b/projects/client/src/App/components/Game/get-canvas-rendering-context-2d.ts similarity index 100% rename from client/src/App/components/Game/get-canvas-rendering-context-2d.ts rename to projects/client/src/App/components/Game/get-canvas-rendering-context-2d.ts diff --git a/client/src/App/components/Game/index.ts b/projects/client/src/App/components/Game/index.ts similarity index 100% rename from client/src/App/components/Game/index.ts rename to projects/client/src/App/components/Game/index.ts diff --git a/client/src/App/components/Game/rotate.ts b/projects/client/src/App/components/Game/rotate.ts similarity index 100% rename from client/src/App/components/Game/rotate.ts rename to projects/client/src/App/components/Game/rotate.ts diff --git a/client/src/App/components/Game/use-animation-frame-manager.test.ts b/projects/client/src/App/components/Game/use-animation-frame-manager.test.ts similarity index 100% rename from client/src/App/components/Game/use-animation-frame-manager.test.ts rename to projects/client/src/App/components/Game/use-animation-frame-manager.test.ts diff --git a/client/src/App/components/Game/use-animation-frame-manager.ts b/projects/client/src/App/components/Game/use-animation-frame-manager.ts similarity index 100% rename from client/src/App/components/Game/use-animation-frame-manager.ts rename to projects/client/src/App/components/Game/use-animation-frame-manager.ts diff --git a/client/src/App/components/Game/use-canvas-rendering-context-2d.ts b/projects/client/src/App/components/Game/use-canvas-rendering-context-2d.ts similarity index 100% rename from client/src/App/components/Game/use-canvas-rendering-context-2d.ts rename to projects/client/src/App/components/Game/use-canvas-rendering-context-2d.ts diff --git a/client/src/App/components/Game/use-draw-scene.ts b/projects/client/src/App/components/Game/use-draw-scene.ts similarity index 100% rename from client/src/App/components/Game/use-draw-scene.ts rename to projects/client/src/App/components/Game/use-draw-scene.ts diff --git a/client/src/App/components/Game/use-key-presses.test.ts b/projects/client/src/App/components/Game/use-key-presses.test.ts similarity index 100% rename from client/src/App/components/Game/use-key-presses.test.ts rename to projects/client/src/App/components/Game/use-key-presses.test.ts diff --git a/client/src/App/components/Game/use-key-presses.ts b/projects/client/src/App/components/Game/use-key-presses.ts similarity index 100% rename from client/src/App/components/Game/use-key-presses.ts rename to projects/client/src/App/components/Game/use-key-presses.ts diff --git a/client/src/App/components/Game/use-update-position.ts b/projects/client/src/App/components/Game/use-update-position.ts similarity index 100% rename from client/src/App/components/Game/use-update-position.ts rename to projects/client/src/App/components/Game/use-update-position.ts diff --git a/client/src/App/components/Header.tsx b/projects/client/src/App/components/Header.tsx similarity index 100% rename from client/src/App/components/Header.tsx rename to projects/client/src/App/components/Header.tsx diff --git a/client/src/App/components/Home.tsx b/projects/client/src/App/components/Home.tsx similarity index 100% rename from client/src/App/components/Home.tsx rename to projects/client/src/App/components/Home.tsx diff --git a/client/src/App/components/LoadingContent.test.tsx b/projects/client/src/App/components/LoadingContent.test.tsx similarity index 100% rename from client/src/App/components/LoadingContent.test.tsx rename to projects/client/src/App/components/LoadingContent.test.tsx diff --git a/client/src/App/components/LoadingContent.tsx b/projects/client/src/App/components/LoadingContent.tsx similarity index 100% rename from client/src/App/components/LoadingContent.tsx rename to projects/client/src/App/components/LoadingContent.tsx diff --git a/client/src/App/components/LogoutLink.tsx b/projects/client/src/App/components/LogoutLink.tsx similarity index 100% rename from client/src/App/components/LogoutLink.tsx rename to projects/client/src/App/components/LogoutLink.tsx diff --git a/client/src/App/components/Nav.tsx b/projects/client/src/App/components/Nav.tsx similarity index 100% rename from client/src/App/components/Nav.tsx rename to projects/client/src/App/components/Nav.tsx diff --git a/client/src/App/components/NavigationChrome.tsx b/projects/client/src/App/components/NavigationChrome.tsx similarity index 100% rename from client/src/App/components/NavigationChrome.tsx rename to projects/client/src/App/components/NavigationChrome.tsx diff --git a/client/src/App/components/NewWorld.tsx b/projects/client/src/App/components/NewWorld.tsx similarity index 100% rename from client/src/App/components/NewWorld.tsx rename to projects/client/src/App/components/NewWorld.tsx diff --git a/client/src/App/components/Unauthorized.tsx b/projects/client/src/App/components/Unauthorized.tsx similarity index 100% rename from client/src/App/components/Unauthorized.tsx rename to projects/client/src/App/components/Unauthorized.tsx diff --git a/client/src/App/components/Welcome.test.tsx b/projects/client/src/App/components/Welcome.test.tsx similarity index 100% rename from client/src/App/components/Welcome.test.tsx rename to projects/client/src/App/components/Welcome.test.tsx diff --git a/client/src/App/components/Welcome.tsx b/projects/client/src/App/components/Welcome.tsx similarity index 100% rename from client/src/App/components/Welcome.tsx rename to projects/client/src/App/components/Welcome.tsx diff --git a/client/src/App/components/WorldDetail.tsx b/projects/client/src/App/components/WorldDetail.tsx similarity index 100% rename from client/src/App/components/WorldDetail.tsx rename to projects/client/src/App/components/WorldDetail.tsx diff --git a/client/src/App/components/Worlds.tsx b/projects/client/src/App/components/Worlds.tsx similarity index 100% rename from client/src/App/components/Worlds.tsx rename to projects/client/src/App/components/Worlds.tsx diff --git a/client/src/App/components/get-breadcrumbs.test.tsx b/projects/client/src/App/components/get-breadcrumbs.test.tsx similarity index 100% rename from client/src/App/components/get-breadcrumbs.test.tsx rename to projects/client/src/App/components/get-breadcrumbs.test.tsx diff --git a/client/src/App/components/get-breadcrumbs.ts b/projects/client/src/App/components/get-breadcrumbs.ts similarity index 100% rename from client/src/App/components/get-breadcrumbs.ts rename to projects/client/src/App/components/get-breadcrumbs.ts diff --git a/client/src/App/get-routes.test.tsx b/projects/client/src/App/get-routes.test.tsx similarity index 100% rename from client/src/App/get-routes.test.tsx rename to projects/client/src/App/get-routes.test.tsx diff --git a/client/src/App/get-routes.ts b/projects/client/src/App/get-routes.ts similarity index 100% rename from client/src/App/get-routes.ts rename to projects/client/src/App/get-routes.ts diff --git a/client/src/App/hooks/use-has-time-passed.test.ts b/projects/client/src/App/hooks/use-has-time-passed.test.ts similarity index 100% rename from client/src/App/hooks/use-has-time-passed.test.ts rename to projects/client/src/App/hooks/use-has-time-passed.test.ts diff --git a/client/src/App/hooks/use-has-time-passed.ts b/projects/client/src/App/hooks/use-has-time-passed.ts similarity index 100% rename from client/src/App/hooks/use-has-time-passed.ts rename to projects/client/src/App/hooks/use-has-time-passed.ts diff --git a/client/src/App/hooks/use-latest-request.test.tsx b/projects/client/src/App/hooks/use-latest-request.test.tsx similarity index 100% rename from client/src/App/hooks/use-latest-request.test.tsx rename to projects/client/src/App/hooks/use-latest-request.test.tsx diff --git a/client/src/App/hooks/use-latest-request.ts b/projects/client/src/App/hooks/use-latest-request.ts similarity index 100% rename from client/src/App/hooks/use-latest-request.ts rename to projects/client/src/App/hooks/use-latest-request.ts diff --git a/client/src/declarations.d.ts b/projects/client/src/declarations.d.ts similarity index 100% rename from client/src/declarations.d.ts rename to projects/client/src/declarations.d.ts diff --git a/client/src/favicon.ico b/projects/client/src/favicon.ico similarity index 100% rename from client/src/favicon.ico rename to projects/client/src/favicon.ico diff --git a/client/src/index.html b/projects/client/src/index.html similarity index 100% rename from client/src/index.html rename to projects/client/src/index.html diff --git a/client/src/index.ts b/projects/client/src/index.ts similarity index 100% rename from client/src/index.ts rename to projects/client/src/index.ts diff --git a/client/src/paths.test.tsx b/projects/client/src/paths.test.tsx similarity index 100% rename from client/src/paths.test.tsx rename to projects/client/src/paths.test.tsx diff --git a/client/src/paths.ts b/projects/client/src/paths.ts similarity index 100% rename from client/src/paths.ts rename to projects/client/src/paths.ts diff --git a/client/src/reset.css b/projects/client/src/reset.css similarity index 100% rename from client/src/reset.css rename to projects/client/src/reset.css diff --git a/client/src/style.css b/projects/client/src/style.css similarity index 100% rename from client/src/style.css rename to projects/client/src/style.css diff --git a/client/tsconfig.json b/projects/client/tsconfig.json similarity index 100% rename from client/tsconfig.json rename to projects/client/tsconfig.json diff --git a/client/webpack.config.js b/projects/client/webpack.config.js similarity index 100% rename from client/webpack.config.js rename to projects/client/webpack.config.js diff --git a/components/.gitignore b/projects/components/.gitignore similarity index 100% rename from components/.gitignore rename to projects/components/.gitignore diff --git a/components/README.md b/projects/components/README.md similarity index 100% rename from components/README.md rename to projects/components/README.md diff --git a/components/babel.config.js b/projects/components/babel.config.js similarity index 100% rename from components/babel.config.js rename to projects/components/babel.config.js diff --git a/components/eslint.config.js b/projects/components/eslint.config.js similarity index 100% rename from components/eslint.config.js rename to projects/components/eslint.config.js diff --git a/components/package.json b/projects/components/package.json similarity index 92% rename from components/package.json rename to projects/components/package.json index 2ccce24d..61433f33 100644 --- a/components/package.json +++ b/projects/components/package.json @@ -3,11 +3,11 @@ "version": "1.0.0", "private": true, "description": "Shared React components", - "homepage": "https://github.com/shanedg/trshcmpctr/tree/main/components#readme", + "homepage": "https://github.com/shanedg/trshcmpctr/tree/main/projects/components#readme", "repository": { "type": "git", "url": "https://github.com/shanedg/trshcmpctr.git", - "directory": "components" + "directory": "projects/components" }, "license": "UNLICENSED", "type": "module", diff --git a/components/src/Flex.tsx b/projects/components/src/Flex.tsx similarity index 100% rename from components/src/Flex.tsx rename to projects/components/src/Flex.tsx diff --git a/components/src/index.ts b/projects/components/src/index.ts similarity index 100% rename from components/src/index.ts rename to projects/components/src/index.ts diff --git a/components/src/types.ts b/projects/components/src/types.ts similarity index 100% rename from components/src/types.ts rename to projects/components/src/types.ts diff --git a/components/tsconfig.json b/projects/components/tsconfig.json similarity index 100% rename from components/tsconfig.json rename to projects/components/tsconfig.json diff --git a/deploy/.gitignore b/projects/deploy/.gitignore similarity index 100% rename from deploy/.gitignore rename to projects/deploy/.gitignore diff --git a/deploy/README.md b/projects/deploy/README.md similarity index 100% rename from deploy/README.md rename to projects/deploy/README.md diff --git a/deploy/client_config_ci.sh b/projects/deploy/client_config_ci.sh similarity index 100% rename from deploy/client_config_ci.sh rename to projects/deploy/client_config_ci.sh diff --git a/deploy/eslint.config.js b/projects/deploy/eslint.config.js similarity index 100% rename from deploy/eslint.config.js rename to projects/deploy/eslint.config.js diff --git a/deploy/package.json b/projects/deploy/package.json similarity index 89% rename from deploy/package.json rename to projects/deploy/package.json index 1d7c49a0..03a0c250 100644 --- a/deploy/package.json +++ b/projects/deploy/package.json @@ -3,11 +3,11 @@ "version": "1.0.0", "private": true, "description": "Deployment utilities for @trshcmpctr projects", - "homepage": "https://github.com/shanedg/trshcmpctr/tree/main/deploy#readme", + "homepage": "https://github.com/shanedg/trshcmpctr/tree/main/projects/deploy#readme", "repository": { "type": "git", "url": "https://github.com/shanedg/trshcmpctr.git", - "directory": "deploy" + "directory": "projects/deploy" }, "license": "UNLICENSED", "type": "module", diff --git a/deploy/src/aws-ec2-deploy.js b/projects/deploy/src/aws-ec2-deploy.js similarity index 100% rename from deploy/src/aws-ec2-deploy.js rename to projects/deploy/src/aws-ec2-deploy.js diff --git a/deploy/src/aws-s3-sync.js b/projects/deploy/src/aws-s3-sync.js similarity index 100% rename from deploy/src/aws-s3-sync.js rename to projects/deploy/src/aws-s3-sync.js diff --git a/deploy/src/aws-s3-upload-artifacts.js b/projects/deploy/src/aws-s3-upload-artifacts.js similarity index 100% rename from deploy/src/aws-s3-upload-artifacts.js rename to projects/deploy/src/aws-s3-upload-artifacts.js diff --git a/deploy/src/config.example.json b/projects/deploy/src/config.example.json similarity index 100% rename from deploy/src/config.example.json rename to projects/deploy/src/config.example.json diff --git a/deploy/src/ec2-user-data.sh b/projects/deploy/src/ec2-user-data.sh similarity index 100% rename from deploy/src/ec2-user-data.sh rename to projects/deploy/src/ec2-user-data.sh diff --git a/deploy/src/index.js b/projects/deploy/src/index.js similarity index 100% rename from deploy/src/index.js rename to projects/deploy/src/index.js diff --git a/discord/.gitignore b/projects/discord/.gitignore similarity index 100% rename from discord/.gitignore rename to projects/discord/.gitignore diff --git a/discord/README.md b/projects/discord/README.md similarity index 100% rename from discord/README.md rename to projects/discord/README.md diff --git a/discord/client_config_ci.sh b/projects/discord/client_config_ci.sh similarity index 100% rename from discord/client_config_ci.sh rename to projects/discord/client_config_ci.sh diff --git a/discord/cypress/cypress.config.js b/projects/discord/cypress/cypress.config.js similarity index 100% rename from discord/cypress/cypress.config.js rename to projects/discord/cypress/cypress.config.js diff --git a/discord/cypress/e2e/authenticate.cy.js b/projects/discord/cypress/e2e/authenticate.cy.js similarity index 100% rename from discord/cypress/e2e/authenticate.cy.js rename to projects/discord/cypress/e2e/authenticate.cy.js diff --git a/discord/cypress/support/commands.js b/projects/discord/cypress/support/commands.js similarity index 100% rename from discord/cypress/support/commands.js rename to projects/discord/cypress/support/commands.js diff --git a/discord/cypress/support/e2e.js b/projects/discord/cypress/support/e2e.js similarity index 100% rename from discord/cypress/support/e2e.js rename to projects/discord/cypress/support/e2e.js diff --git a/discord/eslint.config.js b/projects/discord/eslint.config.js similarity index 100% rename from discord/eslint.config.js rename to projects/discord/eslint.config.js diff --git a/discord/package.json b/projects/discord/package.json similarity index 94% rename from discord/package.json rename to projects/discord/package.json index ae12dc18..bbe903fd 100644 --- a/discord/package.json +++ b/projects/discord/package.json @@ -3,11 +3,11 @@ "version": "1.0.0", "private": true, "description": "discord", - "homepage": "https://github.com/shanedg/trshcmpctr/tree/main/discord#readme", + "homepage": "https://github.com/shanedg/trshcmpctr/tree/main/projects/discord#readme", "repository": { "type": "git", "url": "https://github.com/shanedg/trshcmpctr.git", - "directory": "discord" + "directory": "projects/discord" }, "license": "UNLICENSED", "type": "module", diff --git a/discord/src/authenticated-api/handle-api-error.js b/projects/discord/src/authenticated-api/handle-api-error.js similarity index 100% rename from discord/src/authenticated-api/handle-api-error.js rename to projects/discord/src/authenticated-api/handle-api-error.js diff --git a/discord/src/authenticated-api/handle-api-error.test.js b/projects/discord/src/authenticated-api/handle-api-error.test.js similarity index 100% rename from discord/src/authenticated-api/handle-api-error.test.js rename to projects/discord/src/authenticated-api/handle-api-error.test.js diff --git a/discord/src/authenticated-api/handle-endpoint-not-found.js b/projects/discord/src/authenticated-api/handle-endpoint-not-found.js similarity index 100% rename from discord/src/authenticated-api/handle-endpoint-not-found.js rename to projects/discord/src/authenticated-api/handle-endpoint-not-found.js diff --git a/discord/src/authenticated-api/handle-endpoint-not-found.test.js b/projects/discord/src/authenticated-api/handle-endpoint-not-found.test.js similarity index 100% rename from discord/src/authenticated-api/handle-endpoint-not-found.test.js rename to projects/discord/src/authenticated-api/handle-endpoint-not-found.test.js diff --git a/discord/src/authenticated-api/handle-get-guild-membership.js b/projects/discord/src/authenticated-api/handle-get-guild-membership.js similarity index 100% rename from discord/src/authenticated-api/handle-get-guild-membership.js rename to projects/discord/src/authenticated-api/handle-get-guild-membership.js diff --git a/discord/src/authenticated-api/handle-get-guild-membership.test.js b/projects/discord/src/authenticated-api/handle-get-guild-membership.test.js similarity index 100% rename from discord/src/authenticated-api/handle-get-guild-membership.test.js rename to projects/discord/src/authenticated-api/handle-get-guild-membership.test.js diff --git a/discord/src/authenticated-api/handle-get-worlds.js b/projects/discord/src/authenticated-api/handle-get-worlds.js similarity index 100% rename from discord/src/authenticated-api/handle-get-worlds.js rename to projects/discord/src/authenticated-api/handle-get-worlds.js diff --git a/discord/src/authenticated-api/handle-get-worlds.test.js b/projects/discord/src/authenticated-api/handle-get-worlds.test.js similarity index 100% rename from discord/src/authenticated-api/handle-get-worlds.test.js rename to projects/discord/src/authenticated-api/handle-get-worlds.test.js diff --git a/discord/src/authenticated-api/handle-launch-existing.js b/projects/discord/src/authenticated-api/handle-launch-existing.js similarity index 100% rename from discord/src/authenticated-api/handle-launch-existing.js rename to projects/discord/src/authenticated-api/handle-launch-existing.js diff --git a/discord/src/authenticated-api/handle-launch-existing.test.js b/projects/discord/src/authenticated-api/handle-launch-existing.test.js similarity index 100% rename from discord/src/authenticated-api/handle-launch-existing.test.js rename to projects/discord/src/authenticated-api/handle-launch-existing.test.js diff --git a/discord/src/authenticated-api/handle-launch-new.js b/projects/discord/src/authenticated-api/handle-launch-new.js similarity index 100% rename from discord/src/authenticated-api/handle-launch-new.js rename to projects/discord/src/authenticated-api/handle-launch-new.js diff --git a/discord/src/authenticated-api/handle-launch-new.test.js b/projects/discord/src/authenticated-api/handle-launch-new.test.js similarity index 100% rename from discord/src/authenticated-api/handle-launch-new.test.js rename to projects/discord/src/authenticated-api/handle-launch-new.test.js diff --git a/discord/src/authenticated-api/require-authentication.js b/projects/discord/src/authenticated-api/require-authentication.js similarity index 100% rename from discord/src/authenticated-api/require-authentication.js rename to projects/discord/src/authenticated-api/require-authentication.js diff --git a/discord/src/authenticated-api/require-authentication.test.js b/projects/discord/src/authenticated-api/require-authentication.test.js similarity index 100% rename from discord/src/authenticated-api/require-authentication.test.js rename to projects/discord/src/authenticated-api/require-authentication.test.js diff --git a/discord/src/authenticated-api/require-guild-membership.js b/projects/discord/src/authenticated-api/require-guild-membership.js similarity index 100% rename from discord/src/authenticated-api/require-guild-membership.js rename to projects/discord/src/authenticated-api/require-guild-membership.js diff --git a/discord/src/authenticated-api/require-guild-membership.test.js b/projects/discord/src/authenticated-api/require-guild-membership.test.js similarity index 100% rename from discord/src/authenticated-api/require-guild-membership.test.js rename to projects/discord/src/authenticated-api/require-guild-membership.test.js diff --git a/discord/src/authenticated-api/router.js b/projects/discord/src/authenticated-api/router.js similarity index 100% rename from discord/src/authenticated-api/router.js rename to projects/discord/src/authenticated-api/router.js diff --git a/discord/src/authenticated-api/router.test.js b/projects/discord/src/authenticated-api/router.test.js similarity index 100% rename from discord/src/authenticated-api/router.test.js rename to projects/discord/src/authenticated-api/router.test.js diff --git a/discord/src/authenticated-html-router.js b/projects/discord/src/authenticated-html-router.js similarity index 100% rename from discord/src/authenticated-html-router.js rename to projects/discord/src/authenticated-html-router.js diff --git a/discord/src/authenticated-html-router.test.js b/projects/discord/src/authenticated-html-router.test.js similarity index 100% rename from discord/src/authenticated-html-router.test.js rename to projects/discord/src/authenticated-html-router.test.js diff --git a/discord/src/config.example.json b/projects/discord/src/config.example.json similarity index 100% rename from discord/src/config.example.json rename to projects/discord/src/config.example.json diff --git a/discord/src/handlers/handle-authorization-code-grant.js b/projects/discord/src/handlers/handle-authorization-code-grant.js similarity index 100% rename from discord/src/handlers/handle-authorization-code-grant.js rename to projects/discord/src/handlers/handle-authorization-code-grant.js diff --git a/discord/src/handlers/handle-authorization-code-grant.test.js b/projects/discord/src/handlers/handle-authorization-code-grant.test.js similarity index 100% rename from discord/src/handlers/handle-authorization-code-grant.test.js rename to projects/discord/src/handlers/handle-authorization-code-grant.test.js diff --git a/discord/src/handlers/handle-error.js b/projects/discord/src/handlers/handle-error.js similarity index 100% rename from discord/src/handlers/handle-error.js rename to projects/discord/src/handlers/handle-error.js diff --git a/discord/src/handlers/handle-error.test.js b/projects/discord/src/handlers/handle-error.test.js similarity index 100% rename from discord/src/handlers/handle-error.test.js rename to projects/discord/src/handlers/handle-error.test.js diff --git a/discord/src/handlers/handle-logout.js b/projects/discord/src/handlers/handle-logout.js similarity index 100% rename from discord/src/handlers/handle-logout.js rename to projects/discord/src/handlers/handle-logout.js diff --git a/discord/src/handlers/handle-logout.test.js b/projects/discord/src/handlers/handle-logout.test.js similarity index 100% rename from discord/src/handlers/handle-logout.test.js rename to projects/discord/src/handlers/handle-logout.test.js diff --git a/discord/src/handlers/handle-redirect.js b/projects/discord/src/handlers/handle-redirect.js similarity index 100% rename from discord/src/handlers/handle-redirect.js rename to projects/discord/src/handlers/handle-redirect.js diff --git a/discord/src/handlers/handle-redirect.test.js b/projects/discord/src/handlers/handle-redirect.test.js similarity index 100% rename from discord/src/handlers/handle-redirect.test.js rename to projects/discord/src/handlers/handle-redirect.test.js diff --git a/discord/src/handlers/handle-render-authenticated.js b/projects/discord/src/handlers/handle-render-authenticated.js similarity index 100% rename from discord/src/handlers/handle-render-authenticated.js rename to projects/discord/src/handlers/handle-render-authenticated.js diff --git a/discord/src/handlers/handle-render-authenticated.test.js b/projects/discord/src/handlers/handle-render-authenticated.test.js similarity index 100% rename from discord/src/handlers/handle-render-authenticated.test.js rename to projects/discord/src/handlers/handle-render-authenticated.test.js diff --git a/discord/src/handlers/handle-render-login.js b/projects/discord/src/handlers/handle-render-login.js similarity index 100% rename from discord/src/handlers/handle-render-login.js rename to projects/discord/src/handlers/handle-render-login.js diff --git a/discord/src/handlers/handle-render-login.test.js b/projects/discord/src/handlers/handle-render-login.test.js similarity index 100% rename from discord/src/handlers/handle-render-login.test.js rename to projects/discord/src/handlers/handle-render-login.test.js diff --git a/discord/src/login-router.js b/projects/discord/src/login-router.js similarity index 100% rename from discord/src/login-router.js rename to projects/discord/src/login-router.js diff --git a/discord/src/login-router.test.js b/projects/discord/src/login-router.test.js similarity index 100% rename from discord/src/login-router.test.js rename to projects/discord/src/login-router.test.js diff --git a/discord/src/server.js b/projects/discord/src/server.js similarity index 100% rename from discord/src/server.js rename to projects/discord/src/server.js diff --git a/discord/src/trshcmpctr-discord.service b/projects/discord/src/trshcmpctr-discord.service similarity index 100% rename from discord/src/trshcmpctr-discord.service rename to projects/discord/src/trshcmpctr-discord.service diff --git a/discord/src/utils/auth-from-code.js b/projects/discord/src/utils/auth-from-code.js similarity index 100% rename from discord/src/utils/auth-from-code.js rename to projects/discord/src/utils/auth-from-code.js diff --git a/discord/src/utils/auth-from-code.test.js b/projects/discord/src/utils/auth-from-code.test.js similarity index 100% rename from discord/src/utils/auth-from-code.test.js rename to projects/discord/src/utils/auth-from-code.test.js diff --git a/discord/src/utils/get-fetch-with-oauth.js b/projects/discord/src/utils/get-fetch-with-oauth.js similarity index 100% rename from discord/src/utils/get-fetch-with-oauth.js rename to projects/discord/src/utils/get-fetch-with-oauth.js diff --git a/discord/src/utils/get-fetch-with-oauth.test.js b/projects/discord/src/utils/get-fetch-with-oauth.test.js similarity index 100% rename from discord/src/utils/get-fetch-with-oauth.test.js rename to projects/discord/src/utils/get-fetch-with-oauth.test.js diff --git a/discord/src/views/error.html b/projects/discord/src/views/error.html similarity index 100% rename from discord/src/views/error.html rename to projects/discord/src/views/error.html diff --git a/discord/src/views/login.html b/projects/discord/src/views/login.html similarity index 100% rename from discord/src/views/login.html rename to projects/discord/src/views/login.html diff --git a/eslint-config-jest/README.md b/projects/eslint-config-jest/README.md similarity index 100% rename from eslint-config-jest/README.md rename to projects/eslint-config-jest/README.md diff --git a/eslint-config-jest/eslint.config.js b/projects/eslint-config-jest/eslint.config.js similarity index 100% rename from eslint-config-jest/eslint.config.js rename to projects/eslint-config-jest/eslint.config.js diff --git a/eslint-config-jest/package.json b/projects/eslint-config-jest/package.json similarity index 87% rename from eslint-config-jest/package.json rename to projects/eslint-config-jest/package.json index 10e11856..f58d5f4d 100644 --- a/eslint-config-jest/package.json +++ b/projects/eslint-config-jest/package.json @@ -3,11 +3,11 @@ "version": "1.0.0", "private": true, "description": "ESLint config for Jest tests in JavaScript projects.", - "homepage": "https://github.com/shanedg/trshcmpctr/tree/main/eslint-config-jest#readme", + "homepage": "https://github.com/shanedg/trshcmpctr/tree/main/projects/eslint-config-jest#readme", "repository": { "type": "git", "url": "https://github.com/shanedg/trshcmpctr.git", - "directory": "eslint-config-jest" + "directory": "projects/eslint-config-jest" }, "license": "UNLICENSED", "type": "module", diff --git a/eslint-config-jest/src/eslint-config-jest.js b/projects/eslint-config-jest/src/eslint-config-jest.js similarity index 100% rename from eslint-config-jest/src/eslint-config-jest.js rename to projects/eslint-config-jest/src/eslint-config-jest.js diff --git a/eslint-config-node/README.md b/projects/eslint-config-node/README.md similarity index 100% rename from eslint-config-node/README.md rename to projects/eslint-config-node/README.md diff --git a/eslint-config-node/eslint.config.js b/projects/eslint-config-node/eslint.config.js similarity index 100% rename from eslint-config-node/eslint.config.js rename to projects/eslint-config-node/eslint.config.js diff --git a/eslint-config-node/package.json b/projects/eslint-config-node/package.json similarity index 86% rename from eslint-config-node/package.json rename to projects/eslint-config-node/package.json index 276886ae..5ad79b79 100644 --- a/eslint-config-node/package.json +++ b/projects/eslint-config-node/package.json @@ -3,11 +3,11 @@ "version": "1.0.0", "private": true, "description": "eslint-config-node", - "homepage": "https://github.com/shanedg/trshcmpctr/tree/main/eslint-node#readme", + "homepage": "https://github.com/shanedg/trshcmpctr/tree/main/projects/eslint-node#readme", "repository": { "type": "git", "url": "https://github.com/shanedg/trshcmpctr.git", - "directory": "eslint-config-node" + "directory": "projects/eslint-config-node" }, "license": "UNLICENSED", "type": "module", diff --git a/eslint-config-node/src/eslint-config-node.js b/projects/eslint-config-node/src/eslint-config-node.js similarity index 100% rename from eslint-config-node/src/eslint-config-node.js rename to projects/eslint-config-node/src/eslint-config-node.js diff --git a/eslint-config-react/README.md b/projects/eslint-config-react/README.md similarity index 100% rename from eslint-config-react/README.md rename to projects/eslint-config-react/README.md diff --git a/eslint-config-react/eslint.config.js b/projects/eslint-config-react/eslint.config.js similarity index 100% rename from eslint-config-react/eslint.config.js rename to projects/eslint-config-react/eslint.config.js diff --git a/eslint-config-react/package.json b/projects/eslint-config-react/package.json similarity index 87% rename from eslint-config-react/package.json rename to projects/eslint-config-react/package.json index d2d9e522..9c62332d 100644 --- a/eslint-config-react/package.json +++ b/projects/eslint-config-react/package.json @@ -3,11 +3,11 @@ "version": "1.0.0", "private": true, "description": "ESLint config for React in JavaScript projects.", - "homepage": "https://github.com/shanedg/trshcmpctr/tree/main/eslint-config-react#readme", + "homepage": "https://github.com/shanedg/trshcmpctr/tree/main/projects/eslint-config-react#readme", "repository": { "type": "git", "url": "https://github.com/shanedg/trshcmpctr.git", - "directory": "eslint-config-react" + "directory": "projects/eslint-config-react" }, "license": "UNLICENSED", "type": "module", diff --git a/eslint-config-react/src/eslint-config-react.js b/projects/eslint-config-react/src/eslint-config-react.js similarity index 100% rename from eslint-config-react/src/eslint-config-react.js rename to projects/eslint-config-react/src/eslint-config-react.js diff --git a/eslint-config-typescript/README.md b/projects/eslint-config-typescript/README.md similarity index 100% rename from eslint-config-typescript/README.md rename to projects/eslint-config-typescript/README.md diff --git a/eslint-config-typescript/eslint.config.js b/projects/eslint-config-typescript/eslint.config.js similarity index 100% rename from eslint-config-typescript/eslint.config.js rename to projects/eslint-config-typescript/eslint.config.js diff --git a/eslint-config-typescript/package.json b/projects/eslint-config-typescript/package.json similarity index 86% rename from eslint-config-typescript/package.json rename to projects/eslint-config-typescript/package.json index fe2367e8..66a3f7f9 100644 --- a/eslint-config-typescript/package.json +++ b/projects/eslint-config-typescript/package.json @@ -3,11 +3,11 @@ "version": "1.0.0", "private": true, "description": "ESLint config for TypeScript in JavaScript projects.", - "homepage": "https://github.com/shanedg/trshcmpctr/tree/main/eslint-config-typescript#readme", + "homepage": "https://github.com/shanedg/trshcmpctr/tree/main/projects/eslint-config-typescript#readme", "repository": { "type": "git", "url": "https://github.com/shanedg/trshcmpctr.git", - "directory": "eslint-config-typescript" + "directory": "projects/eslint-config-typescript" }, "license": "UNLICENSED", "type": "module", diff --git a/eslint-config-typescript/src/eslint-config-typescript.js b/projects/eslint-config-typescript/src/eslint-config-typescript.js similarity index 100% rename from eslint-config-typescript/src/eslint-config-typescript.js rename to projects/eslint-config-typescript/src/eslint-config-typescript.js diff --git a/eslint-config/README.md b/projects/eslint-config/README.md similarity index 100% rename from eslint-config/README.md rename to projects/eslint-config/README.md diff --git a/eslint-config/eslint.config.js b/projects/eslint-config/eslint.config.js similarity index 100% rename from eslint-config/eslint.config.js rename to projects/eslint-config/eslint.config.js diff --git a/eslint-config/package.json b/projects/eslint-config/package.json similarity index 88% rename from eslint-config/package.json rename to projects/eslint-config/package.json index da840da7..78bbed7a 100644 --- a/eslint-config/package.json +++ b/projects/eslint-config/package.json @@ -3,11 +3,11 @@ "version": "1.0.0", "private": true, "description": "Base ESLint config for JavaScript projects.", - "homepage": "https://github.com/shanedg/trshcmpctr/tree/main/eslint-config#readme", + "homepage": "https://github.com/shanedg/trshcmpctr/tree/main/projects/eslint-config#readme", "repository": { "type": "git", "url": "https://github.com/shanedg/trshcmpctr.git", - "directory": "eslint-config" + "directory": "projects/eslint-config" }, "license": "UNLICENSED", "type": "module", diff --git a/eslint-config/src/eslint-config.js b/projects/eslint-config/src/eslint-config.js similarity index 100% rename from eslint-config/src/eslint-config.js rename to projects/eslint-config/src/eslint-config.js diff --git a/jest-stdout-reporter/README.md b/projects/jest-stdout-reporter/README.md similarity index 100% rename from jest-stdout-reporter/README.md rename to projects/jest-stdout-reporter/README.md diff --git a/jest-stdout-reporter/eslint.config.js b/projects/jest-stdout-reporter/eslint.config.js similarity index 100% rename from jest-stdout-reporter/eslint.config.js rename to projects/jest-stdout-reporter/eslint.config.js diff --git a/jest-stdout-reporter/package.json b/projects/jest-stdout-reporter/package.json similarity index 86% rename from jest-stdout-reporter/package.json rename to projects/jest-stdout-reporter/package.json index 671d3a55..835a08b4 100644 --- a/jest-stdout-reporter/package.json +++ b/projects/jest-stdout-reporter/package.json @@ -3,11 +3,11 @@ "version": "1.0.0", "private": true, "description": "Wraps the default reporter to prevent Jest from logging normal output to stderr.", - "homepage": "https://github.com/shanedg/trshcmpctr/tree/main/jest-stdout-reporter#readme", + "homepage": "https://github.com/shanedg/trshcmpctr/tree/main/projects/jest-stdout-reporter#readme", "repository": { "type": "git", "url": "https://github.com/shanedg/trshcmpctr.git", - "directory": "jest-stdout-reporter" + "directory": "projects/jest-stdout-reporter" }, "license": "UNLICENSED", "type": "module", diff --git a/jest-stdout-reporter/src/jest-stdout-reporter.js b/projects/jest-stdout-reporter/src/jest-stdout-reporter.js similarity index 100% rename from jest-stdout-reporter/src/jest-stdout-reporter.js rename to projects/jest-stdout-reporter/src/jest-stdout-reporter.js diff --git a/markdownlint-config/README.md b/projects/markdownlint-config/README.md similarity index 100% rename from markdownlint-config/README.md rename to projects/markdownlint-config/README.md diff --git a/markdownlint-config/package.json b/projects/markdownlint-config/package.json similarity index 82% rename from markdownlint-config/package.json rename to projects/markdownlint-config/package.json index deff673b..e708af79 100644 --- a/markdownlint-config/package.json +++ b/projects/markdownlint-config/package.json @@ -3,11 +3,11 @@ "version": "1.0.0", "private": true, "description": "Shareable config for markdownlint (markdownlint-cli2).", - "homepage": "https://github.com/shanedg/trshcmpctr/tree/main/markdownlint-config#readme", + "homepage": "https://github.com/shanedg/trshcmpctr/tree/main/projects/markdownlint-config#readme", "repository": { "type": "git", "url": "https://github.com/shanedg/trshcmpctr.git", - "directory": "markdownlint-config" + "directory": "projects/markdownlint-config" }, "license": "UNLICENSED", "type": "module", diff --git a/markdownlint-config/src/.markdownlint-cli2.jsonc b/projects/markdownlint-config/src/.markdownlint-cli2.jsonc similarity index 100% rename from markdownlint-config/src/.markdownlint-cli2.jsonc rename to projects/markdownlint-config/src/.markdownlint-cli2.jsonc diff --git a/scaffold/README.md b/projects/scaffold/README.md similarity index 100% rename from scaffold/README.md rename to projects/scaffold/README.md diff --git a/scaffold/eslint.config.js b/projects/scaffold/eslint.config.js similarity index 100% rename from scaffold/eslint.config.js rename to projects/scaffold/eslint.config.js diff --git a/scaffold/package.json b/projects/scaffold/package.json similarity index 88% rename from scaffold/package.json rename to projects/scaffold/package.json index efa877bf..c2b82997 100644 --- a/scaffold/package.json +++ b/projects/scaffold/package.json @@ -3,11 +3,11 @@ "version": "1.0.0", "private": true, "description": "Quickly generate new package boilerplate.", - "homepage": "https://github.com/shanedg/trshcmpctr/tree/main/scaffold#readme", + "homepage": "https://github.com/shanedg/trshcmpctr/tree/main/projects/scaffold#readme", "repository": { "type": "git", "url": "https://github.com/shanedg/trshcmpctr.git", - "directory": "scaffold" + "directory": "projects/scaffold" }, "license": "UNLICENSED", "type": "module", diff --git a/scaffold/src/index.js b/projects/scaffold/src/index.js similarity index 79% rename from scaffold/src/index.js rename to projects/scaffold/src/index.js index feba1fb4..2f227733 100644 --- a/scaffold/src/index.js +++ b/projects/scaffold/src/index.js @@ -28,7 +28,7 @@ export default function (plop) { { type: 'input', name: 'path', - message: 'project path please', + message: 'project path please (omit "/projects")', }, ], @@ -45,7 +45,7 @@ export default function (plop) { // Update rush.json projects { type: 'append', - path: join(relativePathToRepoRoot, 'rush.json'), + path: join(relativePathToRepoRoot, '..', 'rush.json'), // This regular expression matches the start of the projects list. // The template is appended immediately after this line. pattern: /"projects": \[/, @@ -54,14 +54,6 @@ export default function (plop) { "projectFolder": "{{path}}" },` }, - - // Update vscode eslint plugin working directories - { - type: 'append', - path: join(relativePathToRepoRoot, '.vscode', 'settings.json'), - pattern: /"eslint.workingDirectories": \[/, - template: ' "{{path}}",', - }, ] }); } diff --git a/scaffold/src/templates/README.md.hbs b/projects/scaffold/src/templates/README.md.hbs similarity index 100% rename from scaffold/src/templates/README.md.hbs rename to projects/scaffold/src/templates/README.md.hbs diff --git a/scaffold/src/templates/eslint.config.js.hbs b/projects/scaffold/src/templates/eslint.config.js.hbs similarity index 100% rename from scaffold/src/templates/eslint.config.js.hbs rename to projects/scaffold/src/templates/eslint.config.js.hbs diff --git a/scaffold/src/templates/package.json.hbs b/projects/scaffold/src/templates/package.json.hbs similarity index 100% rename from scaffold/src/templates/package.json.hbs rename to projects/scaffold/src/templates/package.json.hbs diff --git a/scaffold/src/templates/src/index.js.hbs b/projects/scaffold/src/templates/src/index.js.hbs similarity index 100% rename from scaffold/src/templates/src/index.js.hbs rename to projects/scaffold/src/templates/src/index.js.hbs diff --git a/typescript/README.md b/projects/typescript/README.md similarity index 100% rename from typescript/README.md rename to projects/typescript/README.md diff --git a/typescript/package.json b/projects/typescript/package.json similarity index 84% rename from typescript/package.json rename to projects/typescript/package.json index 914f3ad3..fe70ed16 100644 --- a/typescript/package.json +++ b/projects/typescript/package.json @@ -3,11 +3,11 @@ "version": "1.0.0", "private": true, "description": "Shared base typescript config", - "homepage": "https://github.com/shanedg/trshcmpctr/tree/main/typescript#readme", + "homepage": "https://github.com/shanedg/trshcmpctr/tree/main/projects/typescript#readme", "repository": { "type": "git", "url": "https://github.com/shanedg/trshcmpctr.git", - "directory": "typescript" + "directory": "projects/typescript" }, "license": "UNLICENSED", "type": "module", diff --git a/typescript/src/tsconfig.json b/projects/typescript/src/tsconfig.json similarity index 100% rename from typescript/src/tsconfig.json rename to projects/typescript/src/tsconfig.json diff --git a/rush.json b/rush.json index 01359b4e..cc8cc31c 100644 --- a/rush.json +++ b/rush.json @@ -135,55 +135,55 @@ "projects": [ { "packageName": "@trshcmpctr/typescript", - "projectFolder": "typescript" + "projectFolder": "projects/typescript" }, { "packageName": "@trshcmpctr/components", - "projectFolder": "components" + "projectFolder": "projects/components" }, { "packageName": "@trshcmpctr/eslint-config-node", - "projectFolder": "eslint-config-node" + "projectFolder": "projects/eslint-config-node" }, { "packageName": "@trshcmpctr/deploy", - "projectFolder": "deploy" + "projectFolder": "projects/deploy" }, { "packageName": "@trshcmpctr/discord", - "projectFolder": "discord" + "projectFolder": "projects/discord" }, { "packageName": "@trshcmpctr/client", - "projectFolder": "client" + "projectFolder": "projects/client" }, { "packageName": "@trshcmpctr/jest-stdout-reporter", - "projectFolder": "jest-stdout-reporter" + "projectFolder": "projects/jest-stdout-reporter" }, { "packageName": "@trshcmpctr/eslint-config", - "projectFolder": "eslint-config" + "projectFolder": "projects/eslint-config" }, { "packageName": "@trshcmpctr/eslint-config-jest", - "projectFolder": "eslint-config-jest" + "projectFolder": "projects/eslint-config-jest" }, { "packageName": "@trshcmpctr/eslint-config-typescript", - "projectFolder": "eslint-config-typescript" + "projectFolder": "projects/eslint-config-typescript" }, { "packageName": "@trshcmpctr/eslint-config-react", - "projectFolder": "eslint-config-react" + "projectFolder": "projects/eslint-config-react" }, { "packageName": "@trshcmpctr/markdownlint-config", - "projectFolder": "markdownlint-config" + "projectFolder": "projects/markdownlint-config" }, { "packageName": "@trshcmpctr/scaffold", - "projectFolder": "scaffold" + "projectFolder": "projects/scaffold" } ] } From 2fd9ac8de6af2a46755dc73444f3011d3781feb6 Mon Sep 17 00:00:00 2001 From: Shane Garrity Date: Wed, 1 Jul 2026 03:43:25 -0400 Subject: [PATCH 2/6] chore: sort rush projects --- rush.json | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/rush.json b/rush.json index cc8cc31c..59d8cd45 100644 --- a/rush.json +++ b/rush.json @@ -134,17 +134,13 @@ */ "projects": [ { - "packageName": "@trshcmpctr/typescript", - "projectFolder": "projects/typescript" + "packageName": "@trshcmpctr/client", + "projectFolder": "projects/client" }, { "packageName": "@trshcmpctr/components", "projectFolder": "projects/components" }, - { - "packageName": "@trshcmpctr/eslint-config-node", - "projectFolder": "projects/eslint-config-node" - }, { "packageName": "@trshcmpctr/deploy", "projectFolder": "projects/deploy" @@ -153,14 +149,6 @@ "packageName": "@trshcmpctr/discord", "projectFolder": "projects/discord" }, - { - "packageName": "@trshcmpctr/client", - "projectFolder": "projects/client" - }, - { - "packageName": "@trshcmpctr/jest-stdout-reporter", - "projectFolder": "projects/jest-stdout-reporter" - }, { "packageName": "@trshcmpctr/eslint-config", "projectFolder": "projects/eslint-config" @@ -170,13 +158,21 @@ "projectFolder": "projects/eslint-config-jest" }, { - "packageName": "@trshcmpctr/eslint-config-typescript", - "projectFolder": "projects/eslint-config-typescript" + "packageName": "@trshcmpctr/eslint-config-node", + "projectFolder": "projects/eslint-config-node" }, { "packageName": "@trshcmpctr/eslint-config-react", "projectFolder": "projects/eslint-config-react" }, + { + "packageName": "@trshcmpctr/eslint-config-typescript", + "projectFolder": "projects/eslint-config-typescript" + }, + { + "packageName": "@trshcmpctr/jest-stdout-reporter", + "projectFolder": "projects/jest-stdout-reporter" + }, { "packageName": "@trshcmpctr/markdownlint-config", "projectFolder": "projects/markdownlint-config" @@ -184,6 +180,10 @@ { "packageName": "@trshcmpctr/scaffold", "projectFolder": "projects/scaffold" + }, + { + "packageName": "@trshcmpctr/typescript", + "projectFolder": "projects/typescript" } ] } From f8b003fa7b55f38dbc334880f7e7d555680c9b34 Mon Sep 17 00:00:00 2001 From: Shane Garrity Date: Wed, 8 Jul 2026 03:34:59 -0400 Subject: [PATCH 3/6] chore: sort vscode settings --- .vscode/settings.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 96480c75..152486d8 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -3,8 +3,8 @@ "projects/*" ], "files.associations": { - "rush.json": "jsonc", "command-line.json": "jsonc", - "common-versions.json": "jsonc" + "common-versions.json": "jsonc", + "rush.json": "jsonc" } } From 6a2e09159a2fca6f86d8d029b4bebcca16ef5547 Mon Sep 17 00:00:00 2001 From: Shane Garrity Date: Wed, 8 Jul 2026 03:37:45 -0400 Subject: [PATCH 4/6] build: layer most generic lint rules first Avoids duplication of eslint ecma version. --- projects/components/eslint.config.js | 2 +- projects/deploy/eslint.config.js | 9 +-------- projects/discord/eslint.config.js | 10 +--------- projects/eslint-config-jest/eslint.config.js | 2 +- projects/eslint-config-react/eslint.config.js | 2 +- projects/eslint-config-typescript/eslint.config.js | 2 +- projects/jest-stdout-reporter/eslint.config.js | 2 +- projects/scaffold/eslint.config.js | 2 +- projects/scaffold/src/templates/eslint.config.js.hbs | 2 +- 9 files changed, 9 insertions(+), 24 deletions(-) diff --git a/projects/components/eslint.config.js b/projects/components/eslint.config.js index f0862f4c..28aced05 100644 --- a/projects/components/eslint.config.js +++ b/projects/components/eslint.config.js @@ -13,6 +13,7 @@ export default defineConfig([ 'node_modules', ], }, + eslintConfig, { extends: [ eslintConfigNode, @@ -37,7 +38,6 @@ export default defineConfig([ }, eslintConfigTypescript, eslintConfigReact, - eslintConfig, { files: [ '**/*.ts', diff --git a/projects/deploy/eslint.config.js b/projects/deploy/eslint.config.js index feb81bde..6566d8e0 100644 --- a/projects/deploy/eslint.config.js +++ b/projects/deploy/eslint.config.js @@ -6,16 +6,9 @@ import eslintConfigNode from '@trshcmpctr/eslint-config-node'; export default defineConfig([ { extends: [ - eslintConfigNode, eslintConfig, + eslintConfigNode, ], - languageOptions: { - /** - * Node 24.16.8 supports virtually all features ES2025 and below: - * - */ - ecmaVersion: 2025, - }, rules: { // Node default resolution requires extensions for relative imports 'import/extensions': ['error', 'ignorePackages'], diff --git a/projects/discord/eslint.config.js b/projects/discord/eslint.config.js index 89a7c3df..b6337811 100644 --- a/projects/discord/eslint.config.js +++ b/projects/discord/eslint.config.js @@ -8,17 +8,9 @@ import eslintConfigNode from '@trshcmpctr/eslint-config-node'; export default defineConfig([ { extends: [ - eslintConfigNode, eslintConfig, + eslintConfigNode, ], - languageOptions: { - /** - * Import attributes are supported in 20.10.0 - * but eslint will only parse them starting in 2025. - * - */ - ecmaVersion: 2025, - }, rules: { // Default node resolution requires extensions for relative imports 'import/extensions': ['error', 'ignorePackages'], diff --git a/projects/eslint-config-jest/eslint.config.js b/projects/eslint-config-jest/eslint.config.js index 05c8b7a8..57cf206c 100644 --- a/projects/eslint-config-jest/eslint.config.js +++ b/projects/eslint-config-jest/eslint.config.js @@ -6,8 +6,8 @@ import eslintConfigNode from '@trshcmpctr/eslint-config-node'; export default defineConfig([ { extends: [ - eslintConfigNode, eslintConfig, + eslintConfigNode, ], rules: { // Default node resolution requires extensions for relative imports diff --git a/projects/eslint-config-react/eslint.config.js b/projects/eslint-config-react/eslint.config.js index 05c8b7a8..57cf206c 100644 --- a/projects/eslint-config-react/eslint.config.js +++ b/projects/eslint-config-react/eslint.config.js @@ -6,8 +6,8 @@ import eslintConfigNode from '@trshcmpctr/eslint-config-node'; export default defineConfig([ { extends: [ - eslintConfigNode, eslintConfig, + eslintConfigNode, ], rules: { // Default node resolution requires extensions for relative imports diff --git a/projects/eslint-config-typescript/eslint.config.js b/projects/eslint-config-typescript/eslint.config.js index 8b0c7990..5fce14de 100644 --- a/projects/eslint-config-typescript/eslint.config.js +++ b/projects/eslint-config-typescript/eslint.config.js @@ -6,8 +6,8 @@ import eslintConfigNode from '@trshcmpctr/eslint-config-node'; export default defineConfig([ { extends: [ - eslintConfigNode, eslintConfig, + eslintConfigNode, ], rules: { // Default node resolution requires extensions for relative imports diff --git a/projects/jest-stdout-reporter/eslint.config.js b/projects/jest-stdout-reporter/eslint.config.js index 05c8b7a8..57cf206c 100644 --- a/projects/jest-stdout-reporter/eslint.config.js +++ b/projects/jest-stdout-reporter/eslint.config.js @@ -6,8 +6,8 @@ import eslintConfigNode from '@trshcmpctr/eslint-config-node'; export default defineConfig([ { extends: [ - eslintConfigNode, eslintConfig, + eslintConfigNode, ], rules: { // Default node resolution requires extensions for relative imports diff --git a/projects/scaffold/eslint.config.js b/projects/scaffold/eslint.config.js index 05c8b7a8..57cf206c 100644 --- a/projects/scaffold/eslint.config.js +++ b/projects/scaffold/eslint.config.js @@ -6,8 +6,8 @@ import eslintConfigNode from '@trshcmpctr/eslint-config-node'; export default defineConfig([ { extends: [ - eslintConfigNode, eslintConfig, + eslintConfigNode, ], rules: { // Default node resolution requires extensions for relative imports diff --git a/projects/scaffold/src/templates/eslint.config.js.hbs b/projects/scaffold/src/templates/eslint.config.js.hbs index 05c8b7a8..57cf206c 100644 --- a/projects/scaffold/src/templates/eslint.config.js.hbs +++ b/projects/scaffold/src/templates/eslint.config.js.hbs @@ -6,8 +6,8 @@ import eslintConfigNode from '@trshcmpctr/eslint-config-node'; export default defineConfig([ { extends: [ - eslintConfigNode, eslintConfig, + eslintConfigNode, ], rules: { // Default node resolution requires extensions for relative imports From 2c88ff079a3ec1509bdc9bc20fd9c0a87b92ec5e Mon Sep 17 00:00:00 2001 From: Shane Garrity Date: Wed, 8 Jul 2026 04:13:12 -0400 Subject: [PATCH 5/6] build: consolidate node version support for linting Avoid duplication of supported node version across package.json engines. --- projects/components/package.json | 3 --- projects/deploy/package.json | 3 --- projects/discord/package.json | 3 --- projects/eslint-config-node/package.json | 3 --- projects/eslint-config-node/src/eslint-config-node.js | 6 ++++++ projects/eslint-config/package.json | 3 --- projects/scaffold/src/templates/package.json.hbs | 3 --- projects/typescript/package.json | 3 --- 8 files changed, 6 insertions(+), 21 deletions(-) diff --git a/projects/components/package.json b/projects/components/package.json index 61433f33..31b48a96 100644 --- a/projects/components/package.json +++ b/projects/components/package.json @@ -45,8 +45,5 @@ "globals": "~17.7.0", "markdownlint-cli2": "~0.22.1", "typescript": "~6.0.3" - }, - "engines": { - "node": ">=24.16.0" } } diff --git a/projects/deploy/package.json b/projects/deploy/package.json index 03a0c250..aef31467 100644 --- a/projects/deploy/package.json +++ b/projects/deploy/package.json @@ -33,8 +33,5 @@ "@trshcmpctr/markdownlint-config": "workspace:*", "eslint": "~9.39.1", "markdownlint-cli2": "~0.22.1" - }, - "engines": { - "node": ">=24.16.0" } } diff --git a/projects/discord/package.json b/projects/discord/package.json index bbe903fd..e1359271 100644 --- a/projects/discord/package.json +++ b/projects/discord/package.json @@ -66,8 +66,5 @@ "sinon": "~22.0.0", "start-server-and-test": "~3.0.5", "typescript": "~6.0.3" - }, - "engines": { - "node": ">=24.16.0" } } diff --git a/projects/eslint-config-node/package.json b/projects/eslint-config-node/package.json index 5ad79b79..0dd677e8 100644 --- a/projects/eslint-config-node/package.json +++ b/projects/eslint-config-node/package.json @@ -31,8 +31,5 @@ "@trshcmpctr/markdownlint-config": "workspace:*", "eslint": "~9.39.1", "markdownlint-cli2": "~0.22.1" - }, - "engines": { - "node": ">=24.16.0" } } diff --git a/projects/eslint-config-node/src/eslint-config-node.js b/projects/eslint-config-node/src/eslint-config-node.js index d3eb670a..d1a61c55 100644 --- a/projects/eslint-config-node/src/eslint-config-node.js +++ b/projects/eslint-config-node/src/eslint-config-node.js @@ -4,6 +4,8 @@ import globals from 'globals'; const { configs: nodeConfigs } = node; +const supportedNodeVersionRange = '>=24.16.0'; + export default defineConfig([ { extends: [ @@ -21,12 +23,16 @@ export default defineConfig([ rules: { // Redundant with import/no-unresolved and not as robust 'n/no-missing-import': 'off', + 'n/no-unsupported-features/es-syntax': ['error', { + version: supportedNodeVersionRange + }], 'n/no-unsupported-features/node-builtins': ['error', { ignores: [ // Support experimental fetch until stable in Node >=21: // https://nodejs.org/docs/latest-v20.x/api/globals.html#fetch 'fetch', ], + version: supportedNodeVersionRange, }], }, }, diff --git a/projects/eslint-config/package.json b/projects/eslint-config/package.json index 78bbed7a..730e9b2d 100644 --- a/projects/eslint-config/package.json +++ b/projects/eslint-config/package.json @@ -33,8 +33,5 @@ "eslint-plugin-n": "~18.2.1", "globals": "~17.7.0", "markdownlint-cli2": "~0.22.1" - }, - "engines": { - "node": ">=24.16.0" } } diff --git a/projects/scaffold/src/templates/package.json.hbs b/projects/scaffold/src/templates/package.json.hbs index 551ac795..717794ed 100644 --- a/projects/scaffold/src/templates/package.json.hbs +++ b/projects/scaffold/src/templates/package.json.hbs @@ -28,8 +28,5 @@ "@trshcmpctr/markdownlint-config": "workspace:*", "eslint": "~9.39.1", "markdownlint-cli2": "~0.22.1" - }, - "engines": { - "node": ">=24.16.0" } } diff --git a/projects/typescript/package.json b/projects/typescript/package.json index fe70ed16..887693b3 100644 --- a/projects/typescript/package.json +++ b/projects/typescript/package.json @@ -24,8 +24,5 @@ "devDependencies": { "@trshcmpctr/markdownlint-config": "workspace:*", "markdownlint-cli2": "~0.22.1" - }, - "engines": { - "node": ">=24.16.0" } } From 95b961368239d5f142b71b25b19cc3374244dea5 Mon Sep 17 00:00:00 2001 From: Shane Garrity Date: Wed, 8 Jul 2026 04:14:35 -0400 Subject: [PATCH 6/6] build(scaffold): avoid duplicating plop library version Make plop a regular dependency instead of a peer. --- common/config/rush/command-line.json | 2 +- common/config/rush/pnpm-lock.yaml | 7 +-- common/config/rush/repo-state.json | 2 +- projects/scaffold/package.json | 10 ++-- projects/scaffold/src/index.js | 73 ++++++---------------------- projects/scaffold/src/plopfile.js | 59 ++++++++++++++++++++++ 6 files changed, 84 insertions(+), 69 deletions(-) create mode 100644 projects/scaffold/src/plopfile.js diff --git a/common/config/rush/command-line.json b/common/config/rush/command-line.json index e227f9ff..ea16f18b 100644 --- a/common/config/rush/command-line.json +++ b/common/config/rush/command-line.json @@ -42,7 +42,7 @@ "name": "scaffold", "summary": "Generate a new project from a template", "commandKind": "global", - "shellCommand": "node common/scripts/install-run.js plop@4.0.1 plop --plopfile projects/scaffold/src/index.js" + "shellCommand": "node projects/scaffold/src/index.js" }, { "name": "test", diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 60f15eed..828e8ebd 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -510,6 +510,10 @@ importers: version: 0.22.1 ../../projects/scaffold: + dependencies: + plop: + specifier: ~4.0.1 + version: 4.0.5(@types/node@24.13.2) devDependencies: '@trshcmpctr/eslint-config': specifier: workspace:* @@ -526,9 +530,6 @@ importers: markdownlint-cli2: specifier: ~0.22.1 version: 0.22.1 - plop: - specifier: ~4.0.1 - version: 4.0.5(@types/node@24.13.2) ../../projects/typescript: devDependencies: diff --git a/common/config/rush/repo-state.json b/common/config/rush/repo-state.json index a84fc0ee..5733a95a 100644 --- a/common/config/rush/repo-state.json +++ b/common/config/rush/repo-state.json @@ -1,5 +1,5 @@ // DO NOT MODIFY THIS FILE MANUALLY BUT DO COMMIT IT. It is generated and used by Rush. { - "pnpmShrinkwrapHash": "02997c8ebf98069d76d94cd121ae07f10d01d9b5", + "pnpmShrinkwrapHash": "2a0f674fcd1926eb85202f8c142a4419f0a53763", "preferredVersionsHash": "bf21a9e8fbc5a3846fb05b4fa0859e0917b2202f" } diff --git a/projects/scaffold/package.json b/projects/scaffold/package.json index c2b82997..43c8907c 100644 --- a/projects/scaffold/package.json +++ b/projects/scaffold/package.json @@ -20,17 +20,17 @@ "build": "", "lint": "eslint --max-warnings=0 .", "lint:md": "markdownlint-cli2 --config node_modules/@trshcmpctr/markdownlint-config/src/.markdownlint-cli2.jsonc", + "start": "node src/index.js", "test": "" }, + "dependencies": { + "plop": "~4.0.1" + }, "devDependencies": { "@trshcmpctr/eslint-config": "workspace:*", "@trshcmpctr/eslint-config-node": "workspace:*", "@trshcmpctr/markdownlint-config": "workspace:*", "eslint": "~9.39.1", - "markdownlint-cli2": "~0.22.1", - "plop": "~4.0.1" - }, - "peerDependencies": { - "plop": "~4.0.1" + "markdownlint-cli2": "~0.22.1" } } diff --git a/projects/scaffold/src/index.js b/projects/scaffold/src/index.js index 2f227733..50e51561 100644 --- a/projects/scaffold/src/index.js +++ b/projects/scaffold/src/index.js @@ -1,59 +1,14 @@ -import { join } from 'node:path'; - -const relativePathToRepoRoot = '../../'; - -/** - * Plopfile - * See https://plopjs.com/documentation/ - * @param plop plop API object - */ -export default function (plop) { - plop.setGenerator('project', { - description: 'scaffold a new js project', - - // inquirer prompts - // https://www.npmjs.com/package/inquirer - prompts: [ - { - type: 'input', - name: 'scope', - message: 'project scope please (omit @-prefix, for "trshcmpctr")', - default: 'trshcmpctr' - }, - { - type: 'input', - name: 'name', - message: 'project name please', - }, - { - type: 'input', - name: 'path', - message: 'project path please (omit "/projects")', - }, - ], - - actions: [ - { - type: 'addMany', - destination: `${relativePathToRepoRoot}{{path}}/`, - base: 'templates', - templateFiles: '**/*.hbs', - // By default, globs don't match file names that start with dot, i.e. '.eslintrc.js.hbs'. - globOptions: { dot: true }, - }, - - // Update rush.json projects - { - type: 'append', - path: join(relativePathToRepoRoot, '..', 'rush.json'), - // This regular expression matches the start of the projects list. - // The template is appended immediately after this line. - pattern: /"projects": \[/, - template: ` { - "packageName": "@{{scope}}/{{name}}", - "projectFolder": "{{path}}" - },` - }, - ] - }); -} +import { dirname, join } from 'node:path'; +import { fileURLToPath } from 'node:url'; + +import { Plop, run } from 'plop'; + +Plop.prepare( + { + configPath: join( + dirname(fileURLToPath(import.meta.url)), + 'plopfile.js', + ), + }, + env => Plop.execute(env, run) +); diff --git a/projects/scaffold/src/plopfile.js b/projects/scaffold/src/plopfile.js new file mode 100644 index 00000000..600f4f03 --- /dev/null +++ b/projects/scaffold/src/plopfile.js @@ -0,0 +1,59 @@ +import { join } from 'node:path'; + +const relativePathToProjects = '../../'; + +/** + * Plopfile + * See https://plopjs.com/documentation/ + * @param plop plop API object + */ +export default function (plop) { + plop.setGenerator('project', { + description: 'scaffold a new js project', + + // inquirer prompts + // https://www.npmjs.com/package/inquirer + prompts: [ + { + type: 'input', + name: 'scope', + message: 'project scope please (omit @-prefix, for "trshcmpctr")', + default: 'trshcmpctr' + }, + { + type: 'input', + name: 'name', + message: 'project name please', + }, + { + type: 'input', + name: 'path', + message: 'project path please (omit "/projects")', + }, + ], + + actions: [ + { + type: 'addMany', + destination: `${relativePathToProjects}{{path}}/`, + base: 'templates', + templateFiles: '**/*.hbs', + // By default, globs don't match file names that start with dot, i.e. '.eslintrc.js.hbs'. + globOptions: { dot: true }, + }, + + // Update rush.json projects + { + type: 'append', + path: join(relativePathToProjects, '..', 'rush.json'), + // This regular expression matches the start of the projects list. + // The template is appended immediately after this line. + pattern: /"projects": \[/, + template: ` { + "packageName": "@{{scope}}/{{name}}", + "projectFolder": "{{path}}" + },` + }, + ] + }); +}