diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index e67a49a..b0ec3e0 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -91,6 +91,45 @@ jobs: - name: Build ⚙️ run: pnpm build working-directory: packages/node-cli + style-tailwind: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + persist-credentials: false + - uses: actions/setup-node@v4 + with: + node-version: 20 + - uses: pnpm/action-setup@v3 + name: Install pnpm + with: + version: latest + run_install: false + - name: Get pnpm store directory + shell: bash + run: | + echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV + - uses: actions/cache@v4 + name: Setup pnpm cache + with: + path: ${{ env.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + - name: Install 🔧 + run: pnpm install + - name: Format 🔍 + run: | + pnpm format + pnpm lint + working-directory: packages/style-tailwind + - name: Test ✅ + run: pnpm test + working-directory: packages/style-tailwind + - name: Build ⚙️ + run: pnpm build + working-directory: packages/style-tailwind global: runs-on: ubuntu-latest steps: diff --git a/README.md b/README.md index 7778027..7dd8904 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,9 @@ The project is composed of multiple packages: - [documentation-portal](./packages/documentation-portal/README.md): the website that will host the design systems [STARTED] - a figma integration to extract the component from figma [DONE] - a figma plugin that will help check the code from Figma (see development status, etc) [NOT STARTED] -- a cli [dshub](./packages//node-cli/README.md) to extract the components from the code [STARTED] +- a cli [dshub](./packages/node-cli/README.md) to extract the components from the code [STARTED] +- a [tailwind plugin](./packages/style-tailwind/README.md) to set the theme from design tokens [STARTED] +- a cli to extract the components from the code [STARTED] - a VS Code plugin to help the developer to use the design system [NOT STARTED] - a eslint plugin to check the code against the design system [NOT STARTED] diff --git a/packages/style-tailwind/.gitignore b/packages/style-tailwind/.gitignore new file mode 100644 index 0000000..53c37a1 --- /dev/null +++ b/packages/style-tailwind/.gitignore @@ -0,0 +1 @@ +dist \ No newline at end of file diff --git a/packages/style-tailwind/.npmignore b/packages/style-tailwind/.npmignore new file mode 100644 index 0000000..7d7ccab --- /dev/null +++ b/packages/style-tailwind/.npmignore @@ -0,0 +1,6 @@ +src +.prettierignore +.prettierrc +eslint.config.mjs +jest.config.ts +tsconfig.json \ No newline at end of file diff --git a/packages/style-tailwind/.prettierignore b/packages/style-tailwind/.prettierignore new file mode 100644 index 0000000..89064b6 --- /dev/null +++ b/packages/style-tailwind/.prettierignore @@ -0,0 +1,10 @@ +build +old +CHANGELOG.md +public/icons/*.json +.cache +coverage +playwright-report +pnpm-lock.yaml +dist +templates \ No newline at end of file diff --git a/packages/style-tailwind/.prettierrc b/packages/style-tailwind/.prettierrc new file mode 100644 index 0000000..ed58ece --- /dev/null +++ b/packages/style-tailwind/.prettierrc @@ -0,0 +1,7 @@ +{ + "trailingComma": "all", + "tabWidth": 2, + "semi": false, + "singleQuote": true, + "arrowParens": "avoid" +} diff --git a/packages/style-tailwind/README.md b/packages/style-tailwind/README.md new file mode 100644 index 0000000..2e4fc76 --- /dev/null +++ b/packages/style-tailwind/README.md @@ -0,0 +1,32 @@ +# @design-system-hub/tailwind + +## Installation + +```bash +npm install @design-system-hub/tailwind +# or +yarn add @design-system-hub/tailwind +# or +pnpm add @design-system-hub/tailwind +``` + +## Usage + +This package is designed to work with the [dshub](../node-cli/README.md) CLI tool. + +Once you have run `dshub pull` and have the file `src/tailwind.css` in your project, you can set up tailwind to use CSS variables automatically. + +```ts +// tailwind.config.js + +import { generateTailwindConfig } from '@design-system-hub/tailwind' + +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: ['./src/**/*.{html,js,ts,jsx,tsx}'], + theme: { + extends: generateTailwindConfig(), + }, + plugins: [], +} +``` diff --git a/packages/style-tailwind/eslint.config.mjs b/packages/style-tailwind/eslint.config.mjs new file mode 100644 index 0000000..84bd57d --- /dev/null +++ b/packages/style-tailwind/eslint.config.mjs @@ -0,0 +1,34 @@ +import typescriptParser from '@typescript-eslint/parser' +import js from '@eslint/js' +import jest from 'eslint-plugin-jest' +import tseslint from 'typescript-eslint' +import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended' + +// Following this article: https://www.raulmelo.me/en/blog/migration-eslint-to-flat-config + +export default tseslint.config( + { + ignores: ['dist/**', 'node_modules/**'], + }, + js.configs.recommended, + { + files: ['**/*.js', '**/*.ts', '**/*.tsx'], + languageOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + parser: typescriptParser, + globals: { + document: 'readonly', + }, + }, + rules: { + 'no-console': ['error', { allow: ['warn', 'error'] }], + }, + }, + { + files: ['**/*.{test,spec}.tsx?'], + ...jest.configs['flat/recommended'], + }, + ...tseslint.configs.recommended, + eslintPluginPrettierRecommended, +) diff --git a/packages/style-tailwind/jest.config.ts b/packages/style-tailwind/jest.config.ts new file mode 100644 index 0000000..ae07aa3 --- /dev/null +++ b/packages/style-tailwind/jest.config.ts @@ -0,0 +1,12 @@ +import type { Config } from 'jest' + +const config: Config = { + testMatch: ['/src/**/*.test.{tsx,ts}'], + preset: 'ts-jest', + moduleNameMapper: { + '~/(.*)$': '/$1', + }, + verbose: true, +} + +export default config diff --git a/packages/style-tailwind/package.json b/packages/style-tailwind/package.json new file mode 100644 index 0000000..a6e8889 --- /dev/null +++ b/packages/style-tailwind/package.json @@ -0,0 +1,48 @@ +{ + "name": "@design-systems-hub/tailwind", + "description": "A library to override tailwind theme using design tokens", + "keywords": [ + "tailwind", + "design system", + "design system hub" + ], + "main": "dist/lib.js", + "version": "0.1.0", + "scripts": { + "lib": "tsx ./src/lib.ts", + "build": "ncc build ./src/lib.ts -o dist", + "test": "jest", + "lint": "eslint .", + "format": "prettier --check ." + }, + "dependencies": { + "tailwindcss": "^3.4.1", + "typescript": "^5.4.5" + }, + "devDependencies": { + "@eslint/js": "^8.57.0", + "@semantic-release/changelog": "^6.0.3", + "@semantic-release/commit-analyzer": "^11.1.0", + "@semantic-release/git": "^10.0.1", + "@semantic-release/github": "^9.2.6", + "@semantic-release/npm": "^11.0.3", + "@semantic-release/release-notes-generator": "^12.1.0", + "@tsconfig/node20": "^20.1.2", + "@tsconfig/strictest": "^2.0.3", + "@types/configstore": "^6.0.2", + "@types/jest": "^29.5.12", + "@types/node": "^20.12.12", + "@typescript-eslint/parser": "^7.1.1", + "@vercel/ncc": "^0.38.1", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-jest": "^27.9.0", + "eslint-plugin-prettier": "^5.1.3", + "jest": "^29.7.0", + "prettier": "^3.2.5", + "semantic-release": "^23.0.2", + "ts-jest": "^29.1.2", + "ts-node": "^10.9.2", + "tsx": "^4.7.1", + "typescript-eslint": "^7.1.1" + } +} diff --git a/packages/style-tailwind/src/actions/__fixtures__/empty/.gitignore b/packages/style-tailwind/src/actions/__fixtures__/empty/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/packages/style-tailwind/src/actions/__fixtures__/with-tokens/colors.json b/packages/style-tailwind/src/actions/__fixtures__/with-tokens/colors.json new file mode 100644 index 0000000..1c697f8 --- /dev/null +++ b/packages/style-tailwind/src/actions/__fixtures__/with-tokens/colors.json @@ -0,0 +1,25 @@ +{ + "$type": "color", + "slate": { + "500": { + "$value": "rgba(55, 65, 81, 1)" + }, + "900": { + "$value": "rgba(29, 0, 7, 1)" + } + }, + "white": { + "$value": "rgba(255, 255, 255, 1)" + }, + "primary": { + "500": { + "$value": "rgba(231, 30, 77, 1)" + }, + "600": { + "$value": "rgba(226, 26, 95, 1)" + }, + "700": { + "$value": "rgba(215, 4, 102, 1)" + } + } +} diff --git a/packages/style-tailwind/src/actions/__fixtures__/with-tokens/dimensions.json b/packages/style-tailwind/src/actions/__fixtures__/with-tokens/dimensions.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/packages/style-tailwind/src/actions/__fixtures__/with-tokens/dimensions.json @@ -0,0 +1 @@ +{} diff --git a/packages/style-tailwind/src/actions/__fixtures__/with-tokens/object-values.json b/packages/style-tailwind/src/actions/__fixtures__/with-tokens/object-values.json new file mode 100644 index 0000000..a070196 --- /dev/null +++ b/packages/style-tailwind/src/actions/__fixtures__/with-tokens/object-values.json @@ -0,0 +1,21 @@ +{ + "shadows": { + "$type": "shadow", + "raised": { + "$value": { + "color": "rgba(0, 0, 0, 0.25)", + "offsetX": 0, + "offsetY": 4, + "blur": 4 + } + }, + "overlay": { + "$value": { + "color": "rgba(0, 0, 0, 0.25)", + "offsetX": 0, + "offsetY": 15, + "blur": 11 + } + } + } +} diff --git a/packages/style-tailwind/src/actions/__fixtures__/with-tokens/text.json b/packages/style-tailwind/src/actions/__fixtures__/with-tokens/text.json new file mode 100644 index 0000000..7197a98 --- /dev/null +++ b/packages/style-tailwind/src/actions/__fixtures__/with-tokens/text.json @@ -0,0 +1,21 @@ +{ + "typography": { + "$type": "typography", + "h2": { + "$value": { + "fontFamily": "Geist", + "fontSize": 30, + "fontWeight": 600, + "lineHeight": 1 + } + }, + "h1": { + "$value": { + "fontFamily": "Geist", + "fontSize": 39, + "fontWeight": 700, + "lineHeight": 1 + } + } + } +} diff --git a/packages/style-tailwind/src/actions/__tests__/find-design-tokens.test.ts b/packages/style-tailwind/src/actions/__tests__/find-design-tokens.test.ts new file mode 100644 index 0000000..f0cfd7f --- /dev/null +++ b/packages/style-tailwind/src/actions/__tests__/find-design-tokens.test.ts @@ -0,0 +1,46 @@ +import path from 'node:path' +import { findDesignTokens } from '../find-design-tokens' + +describe('findDesignTokens', () => { + it('should return empty object', async () => { + const tokenPath = path.join(__dirname, '../__fixtures__/empty') + + const result = await findDesignTokens(tokenPath) + + expect(result).toEqual({}) + }) + + it('should return tokens', async () => { + const tokenPath = path.join(__dirname, '../__fixtures__/with-tokens') + + const result = await findDesignTokens(tokenPath) + + expect(result).toEqual({ + colors: { + $type: 'color', + primary: { + '500': { + $value: 'rgba(231, 30, 77, 1)', + }, + '600': { + $value: 'rgba(226, 26, 95, 1)', + }, + '700': { + $value: 'rgba(215, 4, 102, 1)', + }, + }, + slate: { + '500': { + $value: 'rgba(55, 65, 81, 1)', + }, + '900': { + $value: 'rgba(29, 0, 7, 1)', + }, + }, + white: { + $value: 'rgba(255, 255, 255, 1)', + }, + }, + }) + }) +}) diff --git a/packages/style-tailwind/src/actions/__tests__/generate-tailwind-theme.test.ts b/packages/style-tailwind/src/actions/__tests__/generate-tailwind-theme.test.ts new file mode 100644 index 0000000..cf0897a --- /dev/null +++ b/packages/style-tailwind/src/actions/__tests__/generate-tailwind-theme.test.ts @@ -0,0 +1,44 @@ +import { generateTailwindTheme } from '../generate-tailwind-theme' + +describe('generateTailwindTheme', () => { + it('should return empty config', () => { + const tokens = {} + + const result = generateTailwindTheme(tokens) + + expect(result).toEqual({ + colors: {}, + }) + }) + + it('should return config with primary', () => { + const tokens = { + colors: { + $type: 'color', + slate: { + '500': { + $value: 'rgba(55, 65, 81, 1)', + }, + '900': { + $value: 'rgba(29, 0, 7, 1)', + }, + }, + white: { + $value: 'rgba(255, 255, 255, 1)', + }, + }, + } + + const result = generateTailwindTheme(tokens) + + expect(result).toEqual({ + colors: { + slate: { + 500: 'var(--slate-500)', + 900: 'var(--slate-900)', + }, + white: 'var(--white)', + }, + }) + }) +}) diff --git a/packages/style-tailwind/src/actions/find-design-tokens.ts b/packages/style-tailwind/src/actions/find-design-tokens.ts new file mode 100644 index 0000000..1744889 --- /dev/null +++ b/packages/style-tailwind/src/actions/find-design-tokens.ts @@ -0,0 +1,28 @@ +import fs from 'node:fs/promises' +import { AllDesignTokens } from '../entities/design-token' +import path from 'node:path' + +export async function findDesignTokens( + tokenPath: string, +): Promise { + const files = await fs.readdir(tokenPath) + + const promises = files + .filter(f => f.startsWith('colors')) + .filter(f => f.endsWith('.json')) + .map(async file => ({ + name: file.replace('.json', ''), + content: JSON.parse( + await fs.readFile(path.join(tokenPath, file), 'utf-8'), + ), + })) + + const contents = await Promise.all(promises) + + return contents.reduce((acc, { name, content }) => { + return { + ...acc, + [name]: content, + } + }, {}) +} diff --git a/packages/style-tailwind/src/actions/generate-tailwind-theme.ts b/packages/style-tailwind/src/actions/generate-tailwind-theme.ts new file mode 100644 index 0000000..93e3e0b --- /dev/null +++ b/packages/style-tailwind/src/actions/generate-tailwind-theme.ts @@ -0,0 +1,42 @@ +import type { Config } from 'tailwindcss' +import { AllDesignTokens, DesignToken } from '../entities/design-token' + +function recursiveGenerateTailwindTheme( + tokens: DesignToken, + path: string = '', +) { + return Object.entries(tokens) + .filter(([key]) => key !== '$type') + .reduce((acc, [key, value]) => { + if (typeof value === 'string') { + return '' + } + + if ('$value' in value) { + return { + ...acc, + [key]: `var(--${path ? `${path}-` : ''}${key})`, + } + } + + return { + ...acc, + [key]: recursiveGenerateTailwindTheme( + value, + `${path}${path ? '-' : ''}${key}`, + ), + } + }, {}) +} + +export function generateTailwindTheme( + tokens: AllDesignTokens, +): Config['theme'] { + const tokensColors = tokens.colors ?? {} + + const colors = recursiveGenerateTailwindTheme(tokensColors) + + return { + colors, + } +} diff --git a/packages/style-tailwind/src/entities/design-token.ts b/packages/style-tailwind/src/entities/design-token.ts new file mode 100644 index 0000000..88c1413 --- /dev/null +++ b/packages/style-tailwind/src/entities/design-token.ts @@ -0,0 +1,7 @@ +export interface DesignToken { + [key: string]: DesignToken | string | { $value: string } +} + +export interface AllDesignTokens { + [key: string]: DesignToken & { $type: string } +} diff --git a/packages/style-tailwind/src/lib.ts b/packages/style-tailwind/src/lib.ts new file mode 100644 index 0000000..3d3aaaa --- /dev/null +++ b/packages/style-tailwind/src/lib.ts @@ -0,0 +1,9 @@ +import path from 'node:path' +import { generateTailwindTheme } from './actions/generate-tailwind-theme' +import { findDesignTokens } from './actions/find-design-tokens' + +export function generateTailwindConfig(folderName: string = '.tokens') { + const tokenPath = path.join(process.cwd(), folderName) + + return findDesignTokens(tokenPath).then(generateTailwindTheme) +} diff --git a/packages/style-tailwind/tsconfig.json b/packages/style-tailwind/tsconfig.json new file mode 100644 index 0000000..a94fd5c --- /dev/null +++ b/packages/style-tailwind/tsconfig.json @@ -0,0 +1,22 @@ +{ + "$schema": "http://json.schemastore.org/tsconfig", + "include": ["./src/**/*"], + "exclude": ["node_modules"], + "compilerOptions": { + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "target": "ESNext", + "isolatedModules": true, + "esModuleInterop": true, + "noEmit": true, + "outDir": "dist", + "lib": ["esnext"], + "resolveJsonModule": true + }, + "ts-node": { + "esm": true, + "experimentalSpecifierResolution": "node", + "files": true + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a579cc3..ecd8e69 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -173,7 +173,7 @@ importers: version: 2.3.0 tailwindcss-animate: specifier: ^1.0.7 - version: 1.0.7(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@20.12.12)(typescript@5.4.5))) + version: 1.0.7(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@20.13.0)(typescript@5.4.5))) vaul: specifier: ^0.9.1 version: 0.9.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -183,7 +183,7 @@ importers: devDependencies: '@testing-library/jest-dom': specifier: ^6.1.3 - version: 6.4.5(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.12.12)(ts-node@10.9.2(@types/node@20.12.12)(typescript@5.4.5))) + version: 6.4.5(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.13.0)(ts-node@10.9.2(@types/node@20.13.0)(typescript@5.4.5))) '@testing-library/react': specifier: ^14.0.0 version: 14.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -213,7 +213,7 @@ importers: version: 14.2.3(eslint@8.57.0)(typescript@5.4.5) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@20.12.12)(ts-node@10.9.2(@types/node@20.12.12)(typescript@5.4.5)) + version: 29.7.0(@types/node@20.13.0)(ts-node@10.9.2(@types/node@20.13.0)(typescript@5.4.5)) jest-environment-jsdom: specifier: ^29.7.0 version: 29.7.0 @@ -228,10 +228,10 @@ importers: version: 5.14.0 tailwindcss: specifier: ^3.4.1 - version: 3.4.3(ts-node@10.9.2(@types/node@20.12.12)(typescript@5.4.5)) + version: 3.4.3(ts-node@10.9.2(@types/node@20.13.0)(typescript@5.4.5)) ts-jest: specifier: ^29.1.2 - version: 29.1.4(@babel/core@7.24.5)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.5))(jest@29.7.0(@types/node@20.12.12)(ts-node@10.9.2(@types/node@20.12.12)(typescript@5.4.5)))(typescript@5.4.5) + version: 29.1.4(@babel/core@7.24.5)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.5))(jest@29.7.0(@types/node@20.13.0)(ts-node@10.9.2(@types/node@20.13.0)(typescript@5.4.5)))(typescript@5.4.5) packages/node-cli: dependencies: @@ -313,7 +313,7 @@ importers: version: 5.1.3(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.2.5) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@20.12.12)(ts-node@10.9.2(@types/node@20.12.12)(typescript@5.4.5)) + version: 29.7.0(@types/node@20.12.12)(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.12.12)(typescript@5.4.5)) prettier: specifier: ^3.2.5 version: 3.2.5 @@ -322,7 +322,7 @@ importers: version: 23.1.1(typescript@5.4.5) ts-jest: specifier: ^29.1.2 - version: 29.1.4(@babel/core@7.24.5)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.5))(jest@29.7.0(@types/node@20.12.12)(ts-node@10.9.2(@types/node@20.12.12)(typescript@5.4.5)))(typescript@5.4.5) + version: 29.1.4(@babel/core@7.24.5)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.5))(jest@29.7.0(@types/node@20.12.12)(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.12.12)(typescript@5.4.5)))(typescript@5.4.5) ts-node: specifier: ^10.9.2 version: 10.9.2(@swc/core@1.7.6)(@types/node@20.12.12)(typescript@5.4.5) @@ -333,6 +333,88 @@ importers: specifier: ^7.1.1 version: 7.11.0(eslint@8.57.0)(typescript@5.4.5) + packages/style-tailwind: + dependencies: + tailwindcss: + specifier: ^3.4.1 + version: 3.4.3(ts-node@10.9.2(@types/node@20.13.0)(typescript@5.4.5)) + typescript: + specifier: ^5.4.5 + version: 5.4.5 + devDependencies: + '@eslint/js': + specifier: ^8.57.0 + version: 8.57.0 + '@semantic-release/changelog': + specifier: ^6.0.3 + version: 6.0.3(semantic-release@23.1.1(typescript@5.4.5)) + '@semantic-release/commit-analyzer': + specifier: ^11.1.0 + version: 11.1.0(semantic-release@23.1.1(typescript@5.4.5)) + '@semantic-release/git': + specifier: ^10.0.1 + version: 10.0.1(semantic-release@23.1.1(typescript@5.4.5)) + '@semantic-release/github': + specifier: ^9.2.6 + version: 9.2.6(semantic-release@23.1.1(typescript@5.4.5)) + '@semantic-release/npm': + specifier: ^11.0.3 + version: 11.0.3(semantic-release@23.1.1(typescript@5.4.5)) + '@semantic-release/release-notes-generator': + specifier: ^12.1.0 + version: 12.1.0(semantic-release@23.1.1(typescript@5.4.5)) + '@tsconfig/node20': + specifier: ^20.1.2 + version: 20.1.4 + '@tsconfig/strictest': + specifier: ^2.0.3 + version: 2.0.5 + '@types/configstore': + specifier: ^6.0.2 + version: 6.0.2 + '@types/jest': + specifier: ^29.5.12 + version: 29.5.12 + '@types/node': + specifier: ^20.12.12 + version: 20.13.0 + '@typescript-eslint/parser': + specifier: ^7.1.1 + version: 7.11.0(eslint@8.57.0)(typescript@5.4.5) + '@vercel/ncc': + specifier: ^0.38.1 + version: 0.38.1 + eslint-config-prettier: + specifier: ^9.1.0 + version: 9.1.0(eslint@8.57.0) + eslint-plugin-jest: + specifier: ^27.9.0 + version: 27.9.0(@typescript-eslint/eslint-plugin@7.11.0(@typescript-eslint/parser@7.11.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(jest@29.7.0(@types/node@20.13.0)(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.13.0)(typescript@5.4.5)))(typescript@5.4.5) + eslint-plugin-prettier: + specifier: ^5.1.3 + version: 5.1.3(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.2.5) + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@20.13.0)(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.13.0)(typescript@5.4.5)) + prettier: + specifier: ^3.2.5 + version: 3.2.5 + semantic-release: + specifier: ^23.0.2 + version: 23.1.1(typescript@5.4.5) + ts-jest: + specifier: ^29.1.2 + version: 29.1.4(@babel/core@7.24.5)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.5))(jest@29.7.0(@types/node@20.13.0)(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.13.0)(typescript@5.4.5)))(typescript@5.4.5) + ts-node: + specifier: ^10.9.2 + version: 10.9.2(@swc/core@1.7.6)(@types/node@20.13.0)(typescript@5.4.5) + tsx: + specifier: ^4.7.1 + version: 4.11.0 + typescript-eslint: + specifier: ^7.1.1 + version: 7.11.0(eslint@8.57.0)(typescript@5.4.5) + packages: '@adobe/css-tools@4.3.3': @@ -4506,11 +4588,6 @@ packages: engines: {node: '>=16 || 14 >=14.17'} hasBin: true - glob@10.4.1: - resolution: {integrity: sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==} - engines: {node: '>=16 || 14 >=14.18'} - hasBin: true - glob@10.4.5: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true @@ -8454,21 +8531,56 @@ snapshots: jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0(ts-node@10.9.2(@types/node@20.12.12)(typescript@5.4.5))': + '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.12.12)(typescript@5.4.5))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.12.12 + '@types/node': 20.13.0 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.12.12)(ts-node@10.9.2(@types/node@20.12.12)(typescript@5.4.5)) + jest-config: 29.7.0(@types/node@20.13.0)(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.12.12)(typescript@5.4.5)) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.7 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + + '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.13.0)(typescript@5.4.5))': + dependencies: + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.13.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@20.13.0)(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.13.0)(typescript@5.4.5)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -8493,7 +8605,7 @@ snapshots: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.12.12 + '@types/node': 20.13.0 jest-mock: 29.7.0 '@jest/expect-utils@29.7.0': @@ -8511,7 +8623,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.12.12 + '@types/node': 20.13.0 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -8603,7 +8715,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.12.12 + '@types/node': 20.13.0 '@types/yargs': 17.0.32 chalk: 4.1.2 @@ -10828,7 +10940,7 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 - '@testing-library/jest-dom@6.4.5(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.12.12)(ts-node@10.9.2(@types/node@20.12.12)(typescript@5.4.5)))': + '@testing-library/jest-dom@6.4.5(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.13.0)(ts-node@10.9.2(@types/node@20.13.0)(typescript@5.4.5)))': dependencies: '@adobe/css-tools': 4.3.3 '@babel/runtime': 7.24.5 @@ -10841,7 +10953,7 @@ snapshots: optionalDependencies: '@jest/globals': 29.7.0 '@types/jest': 29.5.12 - jest: 29.7.0(@types/node@20.12.12)(ts-node@10.9.2(@types/node@20.12.12)(typescript@5.4.5)) + jest: 29.7.0(@types/node@20.13.0)(ts-node@10.9.2(@types/node@20.13.0)(typescript@5.4.5)) '@testing-library/react@14.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: @@ -10902,7 +11014,7 @@ snapshots: '@types/conventional-commits-parser@5.0.0': dependencies: - '@types/node': 20.12.12 + '@types/node': 20.13.0 '@types/debug@4.1.12': dependencies: @@ -10939,7 +11051,7 @@ snapshots: '@types/jsdom@20.0.1': dependencies: - '@types/node': 20.12.12 + '@types/node': 20.13.0 '@types/tough-cookie': 4.0.5 parse5: 7.1.2 @@ -11776,13 +11888,28 @@ snapshots: optionalDependencies: typescript: 5.4.5 - create-jest@29.7.0(@types/node@20.12.12)(ts-node@10.9.2(@types/node@20.12.12)(typescript@5.4.5)): + create-jest@29.7.0(@types/node@20.12.12)(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.12.12)(typescript@5.4.5)): + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@20.12.12)(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.12.12)(typescript@5.4.5)) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + create-jest@29.7.0(@types/node@20.13.0)(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.13.0)(typescript@5.4.5)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.12.12)(ts-node@10.9.2(@types/node@20.12.12)(typescript@5.4.5)) + jest-config: 29.7.0(@types/node@20.13.0)(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.13.0)(typescript@5.4.5)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -12293,13 +12420,24 @@ snapshots: - eslint-import-resolver-webpack - supports-color + eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@7.11.0(@typescript-eslint/parser@7.11.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(jest@29.7.0(@types/node@20.13.0)(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.13.0)(typescript@5.4.5)))(typescript@5.4.5): + dependencies: + '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.5) + eslint: 8.57.0 + optionalDependencies: + '@typescript-eslint/eslint-plugin': 7.11.0(@typescript-eslint/parser@7.11.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5) + jest: 29.7.0(@types/node@20.13.0)(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.13.0)(typescript@5.4.5)) + transitivePeerDependencies: + - supports-color + - typescript + eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@7.11.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(jest@29.7.0(@types/node@20.12.12)(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.12.12)(typescript@5.4.5)))(typescript@5.4.5): dependencies: '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.5) eslint: 8.57.0 optionalDependencies: '@typescript-eslint/eslint-plugin': 7.11.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5) - jest: 29.7.0(@types/node@20.12.12)(ts-node@10.9.2(@types/node@20.12.12)(typescript@5.4.5)) + jest: 29.7.0(@types/node@20.12.12)(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.12.12)(typescript@5.4.5)) transitivePeerDependencies: - supports-color - typescript @@ -12733,14 +12871,6 @@ snapshots: minipass: 7.1.2 path-scurry: 1.11.1 - glob@10.4.1: - dependencies: - foreground-child: 3.1.1 - jackspeak: 3.1.2 - minimatch: 9.0.4 - minipass: 7.1.2 - path-scurry: 1.11.1 - glob@10.4.5: dependencies: foreground-child: 3.1.1 @@ -13265,16 +13395,54 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@20.12.12)(ts-node@10.9.2(@types/node@20.12.12)(typescript@5.4.5)): + jest-cli@29.7.0(@types/node@20.12.12)(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.12.12)(typescript@5.4.5)): + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.12.12)(typescript@5.4.5)) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0(@types/node@20.12.12)(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.12.12)(typescript@5.4.5)) + exit: 0.1.2 + import-local: 3.1.0 + jest-config: 29.7.0(@types/node@20.12.12)(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.12.12)(typescript@5.4.5)) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jest-cli@29.7.0(@types/node@20.13.0)(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.13.0)(typescript@5.4.5)): + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.13.0)(typescript@5.4.5)) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0(@types/node@20.13.0)(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.13.0)(typescript@5.4.5)) + exit: 0.1.2 + import-local: 3.1.0 + jest-config: 29.7.0(@types/node@20.13.0)(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.13.0)(typescript@5.4.5)) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jest-cli@29.7.0(@types/node@20.13.0)(ts-node@10.9.2(@types/node@20.13.0)(typescript@5.4.5)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@20.12.12)(typescript@5.4.5)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.13.0)(typescript@5.4.5)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.12.12)(ts-node@10.9.2(@types/node@20.12.12)(typescript@5.4.5)) + create-jest: 29.7.0(@types/node@20.13.0)(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.13.0)(typescript@5.4.5)) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@20.12.12)(ts-node@10.9.2(@types/node@20.12.12)(typescript@5.4.5)) + jest-config: 29.7.0(@types/node@20.13.0)(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.13.0)(typescript@5.4.5)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -13284,7 +13452,7 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@20.12.12)(ts-node@10.9.2(@types/node@20.12.12)(typescript@5.4.5)): + jest-config@29.7.0(@types/node@20.12.12)(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.12.12)(typescript@5.4.5)): dependencies: '@babel/core': 7.24.5 '@jest/test-sequencer': 29.7.0 @@ -13315,6 +13483,68 @@ snapshots: - babel-plugin-macros - supports-color + jest-config@29.7.0(@types/node@20.13.0)(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.12.12)(typescript@5.4.5)): + dependencies: + '@babel/core': 7.24.5 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.24.5) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.7 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 20.13.0 + ts-node: 10.9.2(@swc/core@1.7.6)(@types/node@20.12.12)(typescript@5.4.5) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-config@29.7.0(@types/node@20.13.0)(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.13.0)(typescript@5.4.5)): + dependencies: + '@babel/core': 7.24.5 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.24.5) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.7 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 20.13.0 + ts-node: 10.9.2(@swc/core@1.7.6)(@types/node@20.13.0)(typescript@5.4.5) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + jest-diff@29.7.0: dependencies: chalk: 4.1.2 @@ -13340,7 +13570,7 @@ snapshots: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 '@types/jsdom': 20.0.1 - '@types/node': 20.12.12 + '@types/node': 20.13.0 jest-mock: 29.7.0 jest-util: 29.7.0 jsdom: 20.0.3 @@ -13403,7 +13633,7 @@ snapshots: jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 20.12.12 + '@types/node': 20.13.0 jest-util: 29.7.0 jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): @@ -13512,7 +13742,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 20.12.12 + '@types/node': 20.13.0 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -13545,12 +13775,36 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@20.12.12)(ts-node@10.9.2(@types/node@20.12.12)(typescript@5.4.5)): + jest@29.7.0(@types/node@20.12.12)(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.12.12)(typescript@5.4.5)): + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.12.12)(typescript@5.4.5)) + '@jest/types': 29.6.3 + import-local: 3.1.0 + jest-cli: 29.7.0(@types/node@20.12.12)(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.12.12)(typescript@5.4.5)) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jest@29.7.0(@types/node@20.13.0)(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.13.0)(typescript@5.4.5)): + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.13.0)(typescript@5.4.5)) + '@jest/types': 29.6.3 + import-local: 3.1.0 + jest-cli: 29.7.0(@types/node@20.13.0)(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.13.0)(typescript@5.4.5)) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jest@29.7.0(@types/node@20.13.0)(ts-node@10.9.2(@types/node@20.13.0)(typescript@5.4.5)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@20.12.12)(typescript@5.4.5)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.13.0)(typescript@5.4.5)) '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@20.12.12)(ts-node@10.9.2(@types/node@20.12.12)(typescript@5.4.5)) + jest-cli: 29.7.0(@types/node@20.13.0)(ts-node@10.9.2(@types/node@20.13.0)(typescript@5.4.5)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -14562,13 +14816,13 @@ snapshots: camelcase-css: 2.0.1 postcss: 8.4.38 - postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.12)(typescript@5.4.5)): + postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.13.0)(typescript@5.4.5)): dependencies: lilconfig: 3.1.1 yaml: 2.4.2 optionalDependencies: postcss: 8.4.38 - ts-node: 10.9.2(@swc/core@1.7.6)(@types/node@20.12.12)(typescript@5.4.5) + ts-node: 10.9.2(@swc/core@1.7.6)(@types/node@20.13.0)(typescript@5.4.5) postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(typescript@5.4.5)): dependencies: @@ -15263,7 +15517,7 @@ snapshots: dependencies: '@jridgewell/gen-mapping': 0.3.5 commander: 4.1.1 - glob: 10.4.1 + glob: 10.4.5 lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.6 @@ -15320,11 +15574,11 @@ snapshots: dependencies: '@babel/runtime': 7.24.5 - tailwindcss-animate@1.0.7(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@20.12.12)(typescript@5.4.5))): + tailwindcss-animate@1.0.7(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@20.13.0)(typescript@5.4.5))): dependencies: - tailwindcss: 3.4.3(ts-node@10.9.2(@types/node@20.12.12)(typescript@5.4.5)) + tailwindcss: 3.4.3(ts-node@10.9.2(@types/node@20.13.0)(typescript@5.4.5)) - tailwindcss@3.4.3(ts-node@10.9.2(@types/node@20.12.12)(typescript@5.4.5)): + tailwindcss@3.4.3(ts-node@10.9.2(@types/node@20.13.0)(typescript@5.4.5)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -15343,7 +15597,7 @@ snapshots: postcss: 8.4.38 postcss-import: 15.1.0(postcss@8.4.38) postcss-js: 4.0.1(postcss@8.4.38) - postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.12)(typescript@5.4.5)) + postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.13.0)(typescript@5.4.5)) postcss-nested: 6.0.1(postcss@8.4.38) postcss-selector-parser: 6.1.0 resolve: 1.22.8 @@ -15484,11 +15738,47 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-jest@29.1.4(@babel/core@7.24.5)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.5))(jest@29.7.0(@types/node@20.12.12)(ts-node@10.9.2(@types/node@20.12.12)(typescript@5.4.5)))(typescript@5.4.5): + ts-jest@29.1.4(@babel/core@7.24.5)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.5))(jest@29.7.0(@types/node@20.12.12)(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.12.12)(typescript@5.4.5)))(typescript@5.4.5): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.12.12)(ts-node@10.9.2(@types/node@20.12.12)(typescript@5.4.5)) + jest: 29.7.0(@types/node@20.12.12)(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.12.12)(typescript@5.4.5)) + jest-util: 29.7.0 + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.6.2 + typescript: 5.4.5 + yargs-parser: 21.1.1 + optionalDependencies: + '@babel/core': 7.24.5 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.24.5) + + ts-jest@29.1.4(@babel/core@7.24.5)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.5))(jest@29.7.0(@types/node@20.13.0)(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.13.0)(typescript@5.4.5)))(typescript@5.4.5): + dependencies: + bs-logger: 0.2.6 + fast-json-stable-stringify: 2.1.0 + jest: 29.7.0(@types/node@20.13.0)(ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.13.0)(typescript@5.4.5)) + jest-util: 29.7.0 + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.6.2 + typescript: 5.4.5 + yargs-parser: 21.1.1 + optionalDependencies: + '@babel/core': 7.24.5 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.24.5) + + ts-jest@29.1.4(@babel/core@7.24.5)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.5))(jest@29.7.0(@types/node@20.13.0)(ts-node@10.9.2(@types/node@20.13.0)(typescript@5.4.5)))(typescript@5.4.5): + dependencies: + bs-logger: 0.2.6 + fast-json-stable-stringify: 2.1.0 + jest: 29.7.0(@types/node@20.13.0)(ts-node@10.9.2(@types/node@20.13.0)(typescript@5.4.5)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -15522,6 +15812,26 @@ snapshots: optionalDependencies: '@swc/core': 1.7.6 + ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.13.0)(typescript@5.4.5): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.13.0 + acorn: 8.11.3 + acorn-walk: 8.3.2 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.4.5 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.7.6 + ts-node@10.9.2(typescript@5.4.5): dependencies: '@cspotcode/source-map-support': 0.8.1