diff --git a/.circleci/config.yml b/.circleci/config.yml index ad2cc8799f..20f8e64c4d 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,120 +1,85 @@ version: 2.1 +orbs: + common: dailydotdev/common@0.0.14 + jobs: - install_deps: - docker: - - image: cimg/node:22.11 - steps: - - checkout - - run: - name: Install pnpm - command: npm i --prefix=$HOME/.local -g pnpm@9.14.4 - - restore_cache: - keys: - - deps-v7-{{ checksum "pnpm-lock.yaml" }} - - deps-v7-{{ .Branch }} - - run: - name: Install dependencies - command: pnpm install - - save_cache: - key: deps-v7-{{ checksum "pnpm-lock.yaml" }} - paths: - - ./node_modules - - ./packages/eslint-config/node_modules - - ./packages/eslint-rules/node_modules - - ./packages/prettier-config/node_modules - - ./packages/shared/node_modules - - ./packages/webapp/node_modules - - ./packages/extension/node_modules - test_extension: - docker: - - image: cimg/node:22.11 - parallelism: 1 + check-steps: + type: no-op + + setup-node: + executor: + name: common/node + tag: "22.16" steps: - - checkout - - restore_cache: - keys: - - deps-v7-{{ checksum "pnpm-lock.yaml" }} - - deps-v7-{{ .Branch }} - - run: - name: Test - command: | - npm run pretest - TEST=$(./node_modules/.bin/jest --listTests) - echo $TEST | circleci tests run --command="xargs ./node_modules/.bin/jest --ci --runInBand --reporters=default --reporters=jest-junit --" --split-by=timings - environment: - JEST_JUNIT_OUTPUT_DIR: ../../test-results - working_directory: packages/extension - - store_test_results: - path: ./test-results - test_webapp: - docker: - - image: cimg/node:22.11 - parallelism: 1 + - common/setup-node + + test-package: + parameters: + pkg: + type: string + executor: + name: common/node + tag: "22.16" + parallelism: 4 steps: - - checkout - - restore_cache: - keys: - - deps-v7-{{ checksum "pnpm-lock.yaml" }} - - deps-v7-{{ .Branch }} + - common/setup-node - run: name: Test command: | - npm run pretest TEST=$(./node_modules/.bin/jest --listTests) echo $TEST | circleci tests run --command="xargs ./node_modules/.bin/jest --ci --runInBand --reporters=default --reporters=jest-junit --" --split-by=timings environment: - JEST_JUNIT_OUTPUT_DIR: ../../test-results - working_directory: packages/webapp + JEST_JUNIT_OUTPUT_DIR: ./test-results + JEST_JUNIT_ADD_FILE_ATTRIBUTE: "true" + JEST_JUNIT_FILE_PATH_PREFIX: "/home/circleci/project/packages/<< parameters.pkg >>/" + working_directory: packages/<< parameters.pkg >> - store_test_results: - path: ./test-results - lint_shared: - docker: - - image: cimg/node:22.11 - resource_class: large + path: ./packages/<< parameters.pkg >>/test-results + - store_artifacts: + path: ./packages/<< parameters.pkg >>/test-results + lint-package: + parameters: + pkg: + type: string + executor: + name: common/node + tag: "22.16" + resource_class: small steps: - - checkout + - common/setup-node - restore_cache: keys: - - deps-v7-{{ checksum "pnpm-lock.yaml" }} - - deps-v7-{{ .Branch }} + - v1-eslintcache-<< parameters.pkg >>-{{ checksum "packages/<< parameters.pkg >>/package.json" }} + - v1-eslintcache-<< parameters.pkg >>- - run: name: Lint - command: npm run pretest - working_directory: packages/shared - test_shared: - docker: - - image: cimg/node:22.11 - parallelism: 1 - steps: - - checkout - - restore_cache: - keys: - - deps-v7-{{ checksum "pnpm-lock.yaml" }} - - deps-v7-{{ .Branch }} - - run: - name: Test + working_directory: packages/<< parameters.pkg >> command: | - TEST=$(./node_modules/.bin/jest --listTests) - echo $TEST | circleci tests run --command="xargs ./node_modules/.bin/jest --ci --runInBand --reporters=default --reporters=jest-junit --" --split-by=timings - environment: - JEST_JUNIT_OUTPUT_DIR: ../../test-results - working_directory: packages/shared - - store_test_results: - path: ./test-results + pnpm run lint + - save_cache: + key: v1-eslintcache-<< parameters.pkg >>-{{ checksum "packages/<< parameters.pkg >>/package.json" }} + paths: + - ./packages/<< parameters.pkg >>/.eslintcache workflows: build: jobs: - - install_deps - - test_extension: - requires: - - install_deps - - test_webapp: + - setup-node + - lint-package: requires: - - install_deps - - lint_shared: + - setup-node + matrix: + parameters: + pkg: ["extension", "webapp", "shared"] + + - test-package: requires: - - install_deps - - test_shared: + - setup-node + matrix: + parameters: + pkg: ["extension", "webapp", "shared"] + + - check-steps: requires: - - install_deps + - lint-package + - test-package diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index 919b82e74f..1f226bf3c4 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -19,7 +19,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: '22.11' + node-version: '22.16' - name: Install pnpm uses: pnpm/action-setup@v4 diff --git a/.gitignore b/.gitignore index e7b35c505c..e5d2bcc6c5 100644 --- a/.gitignore +++ b/.gitignore @@ -47,4 +47,6 @@ webapp.xml .idea/ # Figma MCP -figma-images/ \ No newline at end of file +figma-images/ + +.eslintcache diff --git a/.nvmrc b/.nvmrc index 8b84b727be..f2a2bc6165 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -22.11 +22.16 diff --git a/AGENTS.md b/AGENTS.md index 65151d50c1..e1a4bba76b 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -26,7 +26,7 @@ This is a pnpm monorepo containing the daily.dev application suite: ## Technology Stack -- **Node.js v22.11** (see `package.json` `volta` and `packageManager` properties, also `.nvmrc`) +- **Node.js v22.16** (see `package.json` `volta` and `packageManager` properties, also `.nvmrc`) - **pnpm 9.14.4** for package management (see `package.json` `packageManager` property) - **TypeScript** across all packages - **React 18.3.1** with Next.js 15 for webapp (Pages Router, NOT App Router/Server Components) diff --git a/Dockerfile b/Dockerfile index 97370657af..9e8fb58c2a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:22.11-alpine +FROM node:22.16-alpine RUN apk add g++ make python3 RUN mkdir -p /opt/app diff --git a/README.md b/README.md index 60ab07bda5..7382120e54 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ The decision was made to allow faster iterations and to keep features parity in ## Technologies -- Node v22.11 (a `.nvmrc` is presented for [nvm](https://github.com/nvm-sh/nvm) users). +- Node v22.16 (a `.nvmrc` is presented for [nvm](https://github.com/nvm-sh/nvm) users). - [pnpm](https://pnpm.io/workspaces) for managing the monorepo and dependencies. ## Projects diff --git a/packages/extension/package.json b/packages/extension/package.json index e506c16269..d9b6097fb4 100644 --- a/packages/extension/package.json +++ b/packages/extension/package.json @@ -4,8 +4,8 @@ "scripts": { "dev": "cross-env NODE_ENV=development cross-env TARGET_BROWSER=chrome webpack --watch", "build": "cross-env NODE_ENV=production cross-env TARGET_BROWSER=chrome webpack", - "lint:fix": "eslint . --ext .js,.jsx,.ts,.tsx --max-warnings 0 --fix", - "lint": "eslint . --ext .js,.jsx,.ts,.tsx --max-warnings 0", + "lint:fix": "eslint . --ext .js,.jsx,.ts,.tsx --max-warnings 0 --cache --fix", + "lint": "eslint . --ext .js,.jsx,.ts,.tsx --max-warnings 0 --cache", "pretest": "npm run lint", "test": "jest --runInBand" }, @@ -84,7 +84,7 @@ "html-webpack-plugin": "^5.5.3", "identity-obj-proxy": "^3.0.0", "jest": "^26.6.3", - "jest-junit": "^12.3.0", + "jest-junit": "^16.0.0", "mini-css-extract-plugin": "^1.6.2", "nock": "^13.2.4", "node-fetch": "^2.6.6", diff --git a/packages/playwright/package.json b/packages/playwright/package.json index c3ba77430c..9a036df421 100644 --- a/packages/playwright/package.json +++ b/packages/playwright/package.json @@ -18,7 +18,7 @@ "typescript": "^5.6.0" }, "engines": { - "node": ">=22.11.0" + "node": ">=22.16.0" }, "dependencies": { "dotenv": "^17.2.1" diff --git a/packages/shared/package.json b/packages/shared/package.json index 626385ee50..0de771503b 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -4,8 +4,8 @@ "main": "./src/index.ts", "license": "AGPL-3.0", "scripts": { - "lint:fix": "eslint . --ext .js,.jsx,.ts,.tsx --fix --max-warnings 0", - "lint": "eslint . --ext .js,.jsx,.ts,.tsx --max-warnings 0", + "lint:fix": "eslint . --ext .js,.jsx,.ts,.tsx --max-warnings 0 --cache --fix", + "lint": "eslint . --ext .js,.jsx,.ts,.tsx --max-warnings 0 --cache", "pretest": "npm run lint", "test": "jest --runInBand" }, @@ -77,7 +77,7 @@ "idb-keyval": "^5.1.5", "identity-obj-proxy": "^3.0.0", "jest": "^26.6.3", - "jest-junit": "^12.3.0", + "jest-junit": "^16.0.0", "next": "15.4.10", "nock": "^13.3.1", "postcss": "^8.4.47", diff --git a/packages/webapp/package.json b/packages/webapp/package.json index b630790170..ff017ab35e 100644 --- a/packages/webapp/package.json +++ b/packages/webapp/package.json @@ -8,8 +8,8 @@ "build": "next build", "build:notls": "NODE_TLS_REJECT_UNAUTHORIZED=0 pnpm run build", "start": "next start", - "lint:fix": "eslint . --ext .js,.jsx,.ts,.tsx --max-warnings 0 --fix", - "lint": "eslint . --ext .js,.jsx,.ts,.tsx --max-warnings 0", + "lint:fix": "eslint . --ext .js,.jsx,.ts,.tsx --max-warnings 0 --cache --fix", + "lint": "eslint . --ext .js,.jsx,.ts,.tsx --max-warnings 0 --cache", "pretest": "npm run lint", "test": "jest --runInBand", "deploy": "vercel" @@ -84,7 +84,7 @@ "fake-indexeddb": "^3.1.7", "identity-obj-proxy": "^3.0.0", "jest": "^26.6.3", - "jest-junit": "^12.3.0", + "jest-junit": "^16.0.0", "nock": "^13.2.4", "node-fetch": "^2.6.7", "postcss": "^8.4.47", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index eb8a08e498..60f46f0f07 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -292,8 +292,8 @@ importers: specifier: ^26.6.3 version: 26.6.3 jest-junit: - specifier: ^12.3.0 - version: 12.3.0 + specifier: ^16.0.0 + version: 16.0.0 mini-css-extract-plugin: specifier: ^1.6.2 version: 1.6.2(webpack@5.97.0) @@ -635,8 +635,8 @@ importers: specifier: ^26.6.3 version: 26.6.3 jest-junit: - specifier: ^12.3.0 - version: 12.3.0 + specifier: ^16.0.0 + version: 16.0.0 next: specifier: 15.4.10 version: 15.4.10(@babel/core@7.26.0)(@playwright/test@1.54.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.82.0) @@ -1027,8 +1027,8 @@ importers: specifier: ^26.6.3 version: 26.6.3 jest-junit: - specifier: ^12.3.0 - version: 12.3.0 + specifier: ^16.0.0 + version: 16.0.0 nock: specifier: ^13.2.4 version: 13.5.6 @@ -4054,10 +4054,6 @@ packages: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} - ansi-regex@4.1.1: - resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} - engines: {node: '>=6'} - ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -6490,8 +6486,8 @@ packages: resolution: {integrity: sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==} engines: {node: '>= 10.14.2'} - jest-junit@12.3.0: - resolution: {integrity: sha512-+NmE5ogsEjFppEl90GChrk7xgz8xzvF0f+ZT5AnhW6suJC93gvQtmQjfyjDnE0Z2nXJqEkxF0WXlvjG/J+wn/g==} + jest-junit@16.0.0: + resolution: {integrity: sha512-A94mmw6NfJab4Fg/BlvVOUXzXgF0XIH6EmTgJ5NDPp4xoKq0Kr7sErb+4Xs9nZvu58pJojz5RFGpqnZYJTrRfQ==} engines: {node: '>=10.12.0'} jest-leak-detector@26.6.2: @@ -8684,10 +8680,6 @@ packages: string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - strip-ansi@5.2.0: - resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} - engines: {node: '>=6'} - strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -12751,8 +12743,6 @@ snapshots: dependencies: type-fest: 0.21.3 - ansi-regex@4.1.1: {} - ansi-regex@5.0.1: {} ansi-regex@6.1.0: {} @@ -15598,10 +15588,10 @@ snapshots: - ts-node - utf-8-validate - jest-junit@12.3.0: + jest-junit@16.0.0: dependencies: mkdirp: 1.0.4 - strip-ansi: 5.2.0 + strip-ansi: 6.0.1 uuid: 8.3.2 xml: 1.0.1 @@ -18228,10 +18218,6 @@ snapshots: dependencies: safe-buffer: 5.2.1 - strip-ansi@5.2.0: - dependencies: - ansi-regex: 4.1.1 - strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1