diff --git a/.changeset/config.json b/.changeset/config.json index 7a78b803d..89689cedb 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -8,7 +8,7 @@ "baseBranch": "main", "updateInternalDependencies": "patch", "bumpVersionsWithWorkspaceProtocolOnly": true, - "ignore": ["@csnx/*"], + "ignore": ["github-pages", "configs"], "___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH": { "onlyUpdatePeerDependentsWhenOutOfRange": true } diff --git a/.changeset/lovely-moose-thank.md b/.changeset/lovely-moose-thank.md new file mode 100644 index 000000000..0a493bb0f --- /dev/null +++ b/.changeset/lovely-moose-thank.md @@ -0,0 +1,23 @@ +--- +'@guardian/source-react-components-development-kitchen': patch +'@guardian/eslint-plugin-source-react-components': patch +'@guardian/eslint-plugin-source-foundations': patch +'@guardian/eslint-config-typescript': patch +'@guardian/source-react-components': patch +'@guardian/identity-auth-frontend': patch +'@guardian/browserslist-config': patch +'@guardian/source-foundations': patch +'@guardian/cobalt-plugin-ts': patch +'@guardian/newsletter-types': patch +'@guardian/core-web-vitals': patch +'@guardian/design-tokens': patch +'@guardian/eslint-config': patch +'@guardian/identity-auth': patch +'@guardian/ab-react': patch +'@guardian/prettier': patch +'@guardian/tsconfig': patch +'@guardian/ab-core': patch +'@guardian/libs': patch +--- + +Now bundled using [`pkgroll`](https://www.npmjs.com/package/pkgroll). diff --git a/.eslintrc.cjs b/.eslintrc.cjs index d10ab8b00..3fb5afd03 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -6,32 +6,19 @@ module.exports = { // disable eslint on all files by default, for perf reasons // re-enabled in each projects own eslint config (ignorePatterns: ['!**/*']) ignorePatterns: ['**/*'], - plugins: ['@nx'], + parser: '@typescript-eslint/parser', + parserOptions: { + sourceType: 'module', + ecmaVersion: 2020, + }, overrides: [ - { - files: ['*.ts', '*.tsx', '*.js', '*.jsx'], - rules: { - '@nx/enforce-module-boundaries': [ - 'error', - { - enforceBuildableLibDependency: true, - depConstraints: [ - { - sourceTag: '*', - onlyDependOnLibsWithTags: ['*'], - }, - ], - }, - ], - }, - }, { files: ['*.js', '*.jsx', '*.mjs', '*.cjs'], - extends: ['plugin:@nx/javascript', '@guardian/eslint-config'], + extends: ['@guardian/eslint-config'], }, { files: ['*.ts', '*.tsx', '*.mts', '*.cts', '*.d.ts'], - extends: ['plugin:@nx/typescript', '@guardian/eslint-config-typescript'], + extends: ['@guardian/eslint-config-typescript'], settings: { 'import/resolver': { typescript: { @@ -46,6 +33,12 @@ module.exports = { 'import/no-default-export': 'off', }, }, + { + files: ['rollup.config.js'], + rules: { + 'import/no-default-export': 'off', + }, + }, { files: ['*.stories.*'], rules: { diff --git a/.github/actions/prepare-for-changesets/action.yml b/.github/actions/prepare-for-changesets/action.yml deleted file mode 100644 index 582f23b0d..000000000 --- a/.github/actions/prepare-for-changesets/action.yml +++ /dev/null @@ -1,31 +0,0 @@ -name: 'Prepare Nx project for changesets' -description: 'Sets things up so that changesets can run alongside Nx' - -runs: - using: 'composite' - steps: - # The Nx convention is to build projects to a root `dist` directory - # (outside their source directories), but changesets uses pnpm's workspace - # to look for the source directory of candidate packages when trying to - # publish. - # - # Therefore, after building the packages we are going to publish, we will - # rewrite the pnpm workspace file to point to the root `dist` directory - # instead. - # - # This will allow changesets to find the newly built assets to publish. - # - # Inspired by this article: - # https://dev.to/jmcdo29/automating-your-package-deployment-in-an-nx-monorepo-with-changeset-4em8 - - name: Prepare workspace for publishing - run: echo -e "packages:\n - 'dist/libs/**'" > pnpm-workspace.yaml - shell: bash - - # This is a workaround for bug in changesets where it throws if you tell - # it ignore a package it cannot find. We're ignoring @csnx/* packages to - # stop it trying to create release PRs for them, which works fine. But at - # this point in the lifecycle, we don't build any @csnx/* packages, so it - # throws an error looking for them in `dist/libs` (see above) to ignore. - - name: Create fake @csnx package (workaround for changesets bug) - run: mkdir -p dist/libs/@csnx/null && echo -e "{\"name\":\"@csnx/null\",\"private\":true}" > dist/libs/@csnx/null/package.json - shell: bash diff --git a/.github/actions/setup-node-env/action.yml b/.github/actions/setup-node-env/action.yml index 72bbca767..cdd13880c 100644 --- a/.github/actions/setup-node-env/action.yml +++ b/.github/actions/setup-node-env/action.yml @@ -18,6 +18,13 @@ runs: - run: pnpm install --frozen-lockfile shell: bash + # if cypress tests fail _and_ you have an update to the lockfile, you may + # need to do a single run with this uncommented... + # don't forget to check the version. + # i hate cypress. + # - run: pnpm dlx cypress@13.7.1 install --force + # shell: bash + # Restores cypress binary cache. If the binary is missing, it will be # downloaded and cached for next time. # https://docs.cypress.io/guides/continuous-integration/introduction#Caching @@ -25,4 +32,4 @@ runs: uses: actions/cache@v4 with: path: ~/.cache/Cypress - key: cypress-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }} + key: cypress-${{ runner.os }}-cypress-${{ hashFiles('pnpm-lock.yaml') }} diff --git a/.github/dependabot.yml b/.github/dependabot.yml index f82b9e566..1c3b53870 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -67,8 +67,6 @@ updates: dependencies: dependency-type: 'production' update-types: ['minor', 'patch'] - exclude-patterns: - - '@csnx*' # don't treat csnx packages as public devDependencies: dependency-type: 'development' update-types: ['minor', 'patch'] diff --git a/.github/workflows/canaries.yml b/.github/workflows/canaries.yml index 8ebeba59b..abf2b0bbf 100644 --- a/.github/workflows/canaries.yml +++ b/.github/workflows/canaries.yml @@ -27,10 +27,7 @@ jobs: - name: Version run: pnpm changeset version --snapshot canary - - run: pnpm nx run-many --target=build --all=true - - - name: Prepare Nx project for changesets - uses: ./.github/actions/prepare-for-changesets + - run: make build - name: Release uses: changesets/action@v1 diff --git a/.github/workflows/changesets.yml b/.github/workflows/changesets.yml index 222aa3c8f..4123c288a 100644 --- a/.github/workflows/changesets.yml +++ b/.github/workflows/changesets.yml @@ -30,9 +30,6 @@ jobs: - run: pnpm nx run-many --target=build --all=true - - name: Prepare Nx project for changesets - uses: ./.github/actions/prepare-for-changesets - # down to business... - name: Use GitHub App Token uses: actions/create-github-app-token@v1 diff --git a/.lintstagedrc.js b/.lintstagedrc.js index ca70b04d9..c63f31f0e 100644 --- a/.lintstagedrc.js +++ b/.lintstagedrc.js @@ -1,4 +1,4 @@ -module.exports = { +export default { '*': 'prettier --ignore-unknown --write --cache', 'package.json': 'sort-package-json', }; diff --git a/.storybook/main.js b/.storybook/main.js index 9b86e7c40..a8fbb2bd9 100644 --- a/.storybook/main.js +++ b/.storybook/main.js @@ -1,5 +1,4 @@ const path = require('path'); -const TsconfigPathsPlugin = require('tsconfig-paths-webpack-plugin'); const nodeModulesExclude = { and: [/node_modules/], not: [/@guardian\//], @@ -49,13 +48,6 @@ module.exports = { ).exclude = nodeModulesExclude; config.resolve.plugins ||= []; - config.resolve.plugins.push( - new TsconfigPathsPlugin({ - configFile: path.resolve(__dirname, '..', 'tsconfig.base.json'), - extensions: config.resolve.extensions, - mainFields: config.resolve.mainFields, - }), - ); return config; }, framework: { diff --git a/Makefile b/Makefile index 5ff6ba6b5..a2b853462 100644 --- a/Makefile +++ b/Makefile @@ -182,10 +182,6 @@ install: check-node-version @guardian/ab-react\:verify-dist: env @corepack pnpm nx run @guardian/ab-react:verify-dist --skip-nx-cache=$(SKIP_NX_CACHE) -.PHONY: @guardian/browserslist-config\:build -@guardian/browserslist-config\:build: env - @corepack pnpm nx run @guardian/browserslist-config:build --skip-nx-cache=$(SKIP_NX_CACHE) - .PHONY: @guardian/browserslist-config\:fix @guardian/browserslist-config\:fix: env @corepack pnpm nx run @guardian/browserslist-config:fix --skip-nx-cache=$(SKIP_NX_CACHE) @@ -198,14 +194,6 @@ install: check-node-version @guardian/browserslist-config\:update-readme: env @corepack pnpm nx run @guardian/browserslist-config:update-readme --skip-nx-cache=$(SKIP_NX_CACHE) -.PHONY: @guardian/browserslist-config\:verify-dist -@guardian/browserslist-config\:verify-dist: env - @corepack pnpm nx run @guardian/browserslist-config:verify-dist --skip-nx-cache=$(SKIP_NX_CACHE) - -.PHONY: @guardian/cobalt-plugin-ts\:build -@guardian/cobalt-plugin-ts\:build: env - @corepack pnpm nx run @guardian/cobalt-plugin-ts:build --skip-nx-cache=$(SKIP_NX_CACHE) - .PHONY: @guardian/cobalt-plugin-ts\:fix @guardian/cobalt-plugin-ts\:fix: env @corepack pnpm nx run @guardian/cobalt-plugin-ts:fix --skip-nx-cache=$(SKIP_NX_CACHE) @@ -246,18 +234,10 @@ install: check-node-version @guardian/design-tokens\:fix: env @corepack pnpm nx run @guardian/design-tokens:fix --skip-nx-cache=$(SKIP_NX_CACHE) -.PHONY: @guardian/design-tokens\:generate-tokens -@guardian/design-tokens\:generate-tokens: env - @corepack pnpm nx run @guardian/design-tokens:generate-tokens --skip-nx-cache=$(SKIP_NX_CACHE) - .PHONY: @guardian/design-tokens\:lint @guardian/design-tokens\:lint: env @corepack pnpm nx run @guardian/design-tokens:lint --skip-nx-cache=$(SKIP_NX_CACHE) -.PHONY: @guardian/eslint-config\:build -@guardian/eslint-config\:build: env - @corepack pnpm nx run @guardian/eslint-config:build --skip-nx-cache=$(SKIP_NX_CACHE) - .PHONY: @guardian/eslint-config\:fix @guardian/eslint-config\:fix: env @corepack pnpm nx run @guardian/eslint-config:fix --skip-nx-cache=$(SKIP_NX_CACHE) @@ -266,14 +246,6 @@ install: check-node-version @guardian/eslint-config\:lint: env @corepack pnpm nx run @guardian/eslint-config:lint --skip-nx-cache=$(SKIP_NX_CACHE) -.PHONY: @guardian/eslint-config\:verify-dist -@guardian/eslint-config\:verify-dist: env - @corepack pnpm nx run @guardian/eslint-config:verify-dist --skip-nx-cache=$(SKIP_NX_CACHE) - -.PHONY: @guardian/eslint-config-typescript\:build -@guardian/eslint-config-typescript\:build: env - @corepack pnpm nx run @guardian/eslint-config-typescript:build --skip-nx-cache=$(SKIP_NX_CACHE) - .PHONY: @guardian/eslint-config-typescript\:fix @guardian/eslint-config-typescript\:fix: env @corepack pnpm nx run @guardian/eslint-config-typescript:fix --skip-nx-cache=$(SKIP_NX_CACHE) @@ -282,10 +254,6 @@ install: check-node-version @guardian/eslint-config-typescript\:lint: env @corepack pnpm nx run @guardian/eslint-config-typescript:lint --skip-nx-cache=$(SKIP_NX_CACHE) -.PHONY: @guardian/eslint-config-typescript\:verify-dist -@guardian/eslint-config-typescript\:verify-dist: env - @corepack pnpm nx run @guardian/eslint-config-typescript:verify-dist --skip-nx-cache=$(SKIP_NX_CACHE) - .PHONY: @guardian/eslint-plugin-source-foundations\:build @guardian/eslint-plugin-source-foundations\:build: env @corepack pnpm nx run @guardian/eslint-plugin-source-foundations:build --skip-nx-cache=$(SKIP_NX_CACHE) @@ -426,10 +394,6 @@ install: check-node-version @guardian/newsletter-types\:lint: env @corepack pnpm nx run @guardian/newsletter-types:lint --skip-nx-cache=$(SKIP_NX_CACHE) -.PHONY: @guardian/prettier\:build -@guardian/prettier\:build: env - @corepack pnpm nx run @guardian/prettier:build --skip-nx-cache=$(SKIP_NX_CACHE) - .PHONY: @guardian/prettier\:fix @guardian/prettier\:fix: env @corepack pnpm nx run @guardian/prettier:fix --skip-nx-cache=$(SKIP_NX_CACHE) @@ -438,10 +402,6 @@ install: check-node-version @guardian/prettier\:lint: env @corepack pnpm nx run @guardian/prettier:lint --skip-nx-cache=$(SKIP_NX_CACHE) -.PHONY: @guardian/prettier\:verify-dist -@guardian/prettier\:verify-dist: env - @corepack pnpm nx run @guardian/prettier:verify-dist --skip-nx-cache=$(SKIP_NX_CACHE) - .PHONY: @guardian/source-foundations\:build @guardian/source-foundations\:build: env @corepack pnpm nx run @guardian/source-foundations:build --skip-nx-cache=$(SKIP_NX_CACHE) @@ -546,10 +506,6 @@ install: check-node-version @guardian/source-react-components-development-kitchen\:verify-dist: env @corepack pnpm nx run @guardian/source-react-components-development-kitchen:verify-dist --skip-nx-cache=$(SKIP_NX_CACHE) -.PHONY: @guardian/tsconfig\:build -@guardian/tsconfig\:build: env - @corepack pnpm nx run @guardian/tsconfig:build --skip-nx-cache=$(SKIP_NX_CACHE) - .PHONY: @guardian/tsconfig\:fix @guardian/tsconfig\:fix: env @corepack pnpm nx run @guardian/tsconfig:fix --skip-nx-cache=$(SKIP_NX_CACHE) @@ -558,10 +514,6 @@ install: check-node-version @guardian/tsconfig\:lint: env @corepack pnpm nx run @guardian/tsconfig:lint --skip-nx-cache=$(SKIP_NX_CACHE) -.PHONY: @guardian/tsconfig\:verify-dist -@guardian/tsconfig\:verify-dist: env - @corepack pnpm nx run @guardian/tsconfig:verify-dist --skip-nx-cache=$(SKIP_NX_CACHE) - .PHONY: github-pages\:build github-pages\:build: env @corepack pnpm nx run github-pages:build --skip-nx-cache=$(SKIP_NX_CACHE) diff --git a/README.md b/README.md index b430a2828..7ecfc6356 100644 --- a/README.md +++ b/README.md @@ -93,15 +93,12 @@ Project-specific tasks are defined as `scripts` in a `package.json` or `targets` #### @guardian/browserslist-config -- `make @guardian/browserslist-config:build` - `make @guardian/browserslist-config:fix` - `make @guardian/browserslist-config:lint` - `make @guardian/browserslist-config:update-readme` -- `make @guardian/browserslist-config:verify-dist` #### @guardian/cobalt-plugin-ts -- `make @guardian/cobalt-plugin-ts:build` - `make @guardian/cobalt-plugin-ts:fix` - `make @guardian/cobalt-plugin-ts:lint` @@ -118,22 +115,17 @@ Project-specific tasks are defined as `scripts` in a `package.json` or `targets` - `make @guardian/design-tokens:build` - `make @guardian/design-tokens:fix` -- `make @guardian/design-tokens:generate-tokens` - `make @guardian/design-tokens:lint` #### @guardian/eslint-config -- `make @guardian/eslint-config:build` - `make @guardian/eslint-config:fix` - `make @guardian/eslint-config:lint` -- `make @guardian/eslint-config:verify-dist` #### @guardian/eslint-config-typescript -- `make @guardian/eslint-config-typescript:build` - `make @guardian/eslint-config-typescript:fix` - `make @guardian/eslint-config-typescript:lint` -- `make @guardian/eslint-config-typescript:verify-dist` #### @guardian/eslint-plugin-source-foundations @@ -190,10 +182,8 @@ Project-specific tasks are defined as `scripts` in a `package.json` or `targets` #### @guardian/prettier -- `make @guardian/prettier:build` - `make @guardian/prettier:fix` - `make @guardian/prettier:lint` -- `make @guardian/prettier:verify-dist` #### @guardian/source-foundations @@ -232,10 +222,8 @@ Project-specific tasks are defined as `scripts` in a `package.json` or `targets` #### @guardian/tsconfig -- `make @guardian/tsconfig:build` - `make @guardian/tsconfig:fix` - `make @guardian/tsconfig:lint` -- `make @guardian/tsconfig:verify-dist` #### github-pages diff --git a/apps/github-pages/astro.config.mjs b/apps/github-pages/astro.config.mjs index aa034e6da..ab480910d 100644 --- a/apps/github-pages/astro.config.mjs +++ b/apps/github-pages/astro.config.mjs @@ -1,25 +1,10 @@ import { defineConfig } from 'astro/config'; -import tsConfig from '../../tsconfig.base.json'; -import path from 'node:path'; import svelte from '@astrojs/svelte'; -// duplicate the aliases defined in tsconfig.base.json -let alias = {}; -for (const [module, modulePath] of Object.entries( - tsConfig.compilerOptions.paths, -)) { - alias[module] = path.resolve('../../' + modulePath[0] + '.ts'); -} - // https://astro.build/config export default defineConfig({ site: 'https://guardian.github.io', base: '/csnx', integrations: [svelte()], - vite: { - resolve: { - alias, - }, - }, }); diff --git a/apps/github-pages/package.json b/apps/github-pages/package.json index f12803399..1dde5a12a 100644 --- a/apps/github-pages/package.json +++ b/apps/github-pages/package.json @@ -11,6 +11,7 @@ "devDependencies": { "@astrojs/check": "0.5.6", "@astrojs/svelte": "5.3.0", + "@guardian/libs": "workspace:*", "astro": "4.5.16", "svelte": "4.2.12", "typescript": "5.3.3", @@ -24,6 +25,9 @@ ], "output": [ "dist" + ], + "dependencies": [ + "../../libs/@guardian/libs:build" ] }, "start": { diff --git a/configs/jest.config.ts b/configs/jest.config.js similarity index 82% rename from configs/jest.config.ts rename to configs/jest.config.js index 18bab67cc..87c64736f 100644 --- a/configs/jest.config.ts +++ b/configs/jest.config.js @@ -1,6 +1,5 @@ -import type { Config } from 'jest'; - -export const config: Config = { +/** @typedef {import("jest").Config} Config */ +export const config = { clearMocks: true, moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'], diff --git a/configs/package.json b/configs/package.json new file mode 100644 index 000000000..02c857124 --- /dev/null +++ b/configs/package.json @@ -0,0 +1,15 @@ +{ + "name": "configs", + "version": "0.1.0", + "private": true, + "type": "module", + "devDependencies": { + "@rollup/plugin-commonjs": "25.0.7", + "@rollup/plugin-json": "6.1.0", + "@rollup/plugin-node-resolve": "15.2.3", + "rollup": "4.17.2", + "rollup-plugin-dts": "6.1.0", + "rollup-plugin-esbuild": "6.1.1", + "rollup-plugin-node-externals": "7.1.2" + } +} diff --git a/configs/rollup.config.js b/configs/rollup.config.js new file mode 100644 index 000000000..d234911b7 --- /dev/null +++ b/configs/rollup.config.js @@ -0,0 +1,51 @@ +import commonjs from '@rollup/plugin-commonjs'; +import json from '@rollup/plugin-json'; +import { nodeResolve } from '@rollup/plugin-node-resolve'; +import { dts } from 'rollup-plugin-dts'; +import esbuild from 'rollup-plugin-esbuild'; +import { nodeExternals } from 'rollup-plugin-node-externals'; + +/** @type {import("rollup").RollupOptions.input} */ +const input = { index: 'src/index.ts' }; + +/** @type {import("rollup").RollupOptions.output} */ +const output = { + dir: 'dist', + format: 'esm', + preserveModules: true, + preserveModulesRoot: 'src', +}; + +/** @type {import("rollup").RollupOptions.plugins} */ +const plugins = [ + nodeResolve({ + extensions: ['.mjs', '.js', '.jsx', '.ts', '.tsx', '.json'], + }), + commonjs(), + json(), + esbuild(), + nodeExternals(), +]; + +/** @type {import("rollup").RollupOptions} */ +export default [ + { + input, + output, + plugins, + }, + { + input, + output: { + ...output, + format: 'cjs', + entryFileNames: '[name].cjs', + }, + plugins, + }, + { + input, + output, + plugins: [dts()], + }, +]; diff --git a/libs/@guardian/ab-core/.eslintrc.cjs b/libs/@guardian/ab-core/.eslintrc.cjs index 3154fa87b..4702175fa 100644 --- a/libs/@guardian/ab-core/.eslintrc.cjs +++ b/libs/@guardian/ab-core/.eslintrc.cjs @@ -1,6 +1,11 @@ module.exports = { extends: ['../../../.eslintrc.cjs'], - ignorePatterns: ['!**/*', 'node_modules'], + ignorePatterns: [ + '!**/*', + 'node_modules', + 'jest.dist.*', // depends on build output, so don't lint it + 'dist', + ], overrides: [ { files: ['*.ts', '*.tsx'], diff --git a/libs/@guardian/ab-core/jest.config.js b/libs/@guardian/ab-core/jest.config.js new file mode 100644 index 000000000..33743cea6 --- /dev/null +++ b/libs/@guardian/ab-core/jest.config.js @@ -0,0 +1,11 @@ +import { config as baseConfig } from '../../../configs/jest.config.js'; + +/** @typedef {import("jest").Config} Config */ +const config = { + ...baseConfig, + displayName: '@guardian/ab-core', + testEnvironment: 'jest-environment-jsdom', +}; + +// eslint-disable-next-line import/no-default-export -- that's what jest likes +export default config; diff --git a/libs/@guardian/ab-core/jest.config.ts b/libs/@guardian/ab-core/jest.config.ts deleted file mode 100644 index d00f0c031..000000000 --- a/libs/@guardian/ab-core/jest.config.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* eslint-disable @nx/enforce-module-boundaries -- out root config lives in the root */ -/* eslint-disable import/no-default-export -- that's what jest likes */ - -import type { Config } from 'jest'; -import { config as baseConfig } from '../../../configs/jest.config'; - -const config: Config = { - ...baseConfig, - displayName: '@guardian/ab-core', - testEnvironment: 'jest-environment-jsdom', -}; - -export default config; diff --git a/libs/@guardian/libs/jest.dist.setup.ts b/libs/@guardian/ab-core/jest.dist.setup.js similarity index 51% rename from libs/@guardian/libs/jest.dist.setup.ts rename to libs/@guardian/ab-core/jest.dist.setup.js index ecd545f93..96fd6cc4b 100644 --- a/libs/@guardian/libs/jest.dist.setup.ts +++ b/libs/@guardian/ab-core/jest.dist.setup.js @@ -1,8 +1,6 @@ -/* eslint-disable -- this file will break unless the project is built, so let's not worry about it */ - // Mock `./src/index` with whatever `package.json` points at in dist. // This means we can run the unit tests against `dist` instead. -import * as dist from '../../../dist/libs/@guardian/libs'; +import * as dist from '.'; jest.mock('./src/index', () => dist); diff --git a/libs/@guardian/ab-core/package.json b/libs/@guardian/ab-core/package.json index f85b065f7..8136f09c5 100644 --- a/libs/@guardian/ab-core/package.json +++ b/libs/@guardian/ab-core/package.json @@ -5,14 +5,27 @@ "description": "A client-side library for A/B & multivariate testing", "license": "Apache-2.0", "sideEffects": false, + "type": "module", + "exports": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "files": [ + "dist" + ], "scripts": { + "build": "rm -rf dist && rollup -c", "dev": "jest --watch", "fix": "pnpm lint --fix", "lint": "eslint --cache .", "test": "jest", - "verify-dist": "jest --setupFilesAfterEnv ./jest.dist.setup.ts" + "verify-dist": "jest --setupFilesAfterEnv ./jest.dist.setup.js" }, "devDependencies": { + "rollup": "4.17.2", "tslib": "2.6.2", "typescript": "5.3.3" }, @@ -31,19 +44,14 @@ "nx": { "targets": { "build": { - "executor": "@csnx/npm-package:build", - "outputs": [ - "{options.outputPath}" + "inputs": [ + "{projectRoot}/src/**", + "{projectRoot}/package.json", + "{projectRoot}/tsconfig.json" ], - "options": { - "entry": "{projectRoot}/src/index.ts", - "tsConfig": "{projectRoot}/tsconfig.json", - "packageJson": "{projectRoot}/package.json", - "outputPath": "{workspaceRoot}/dist/{projectRoot}", - "assets": [ - "{projectRoot}/*.md" - ] - } + "outputs": [ + "{projectRoot}/dist" + ] }, "lint": { "inputs": [ diff --git a/libs/@guardian/ab-core/rollup.config.js b/libs/@guardian/ab-core/rollup.config.js new file mode 100644 index 000000000..1ab1d03d6 --- /dev/null +++ b/libs/@guardian/ab-core/rollup.config.js @@ -0,0 +1 @@ +export * as default from '../../../configs/rollup.config.js'; diff --git a/libs/@guardian/ab-core/tsconfig.spec.json b/libs/@guardian/ab-core/tsconfig.spec.json index d42f10920..1b175b148 100644 --- a/libs/@guardian/ab-core/tsconfig.spec.json +++ b/libs/@guardian/ab-core/tsconfig.spec.json @@ -6,7 +6,7 @@ "types": ["jest", "node"] }, "include": [ - "jest.config.ts", + "jest.config.js", "**/*.test.ts", "**/*.spec.ts", "**/*.test.tsx", diff --git a/libs/@guardian/ab-react/.eslintrc.cjs b/libs/@guardian/ab-react/.eslintrc.cjs index 3154fa87b..4702175fa 100644 --- a/libs/@guardian/ab-react/.eslintrc.cjs +++ b/libs/@guardian/ab-react/.eslintrc.cjs @@ -1,6 +1,11 @@ module.exports = { extends: ['../../../.eslintrc.cjs'], - ignorePatterns: ['!**/*', 'node_modules'], + ignorePatterns: [ + '!**/*', + 'node_modules', + 'jest.dist.*', // depends on build output, so don't lint it + 'dist', + ], overrides: [ { files: ['*.ts', '*.tsx'], diff --git a/libs/@guardian/ab-react/jest.config.ts b/libs/@guardian/ab-react/jest.config.js similarity index 62% rename from libs/@guardian/ab-react/jest.config.ts rename to libs/@guardian/ab-react/jest.config.js index 7e4e8cc26..677cc698b 100644 --- a/libs/@guardian/ab-react/jest.config.ts +++ b/libs/@guardian/ab-react/jest.config.js @@ -1,10 +1,9 @@ -/* eslint-disable @nx/enforce-module-boundaries -- out root config lives in the root */ /* eslint-disable import/no-default-export -- that's what jest likes */ -import type { Config } from 'jest'; -import { config as baseConfig } from '../../../configs/jest.config'; +import { config as baseConfig } from '../../../configs/jest.config.js'; -const config: Config = { +/** @typedef {import("jest").Config} Config */ +const config = { ...baseConfig, displayName: '@guardian/ab-react', testEnvironment: 'jest-environment-jsdom', diff --git a/libs/@guardian/ab-core/jest.dist.setup.ts b/libs/@guardian/ab-react/jest.dist.setup.js similarity index 51% rename from libs/@guardian/ab-core/jest.dist.setup.ts rename to libs/@guardian/ab-react/jest.dist.setup.js index c635ed17f..96fd6cc4b 100644 --- a/libs/@guardian/ab-core/jest.dist.setup.ts +++ b/libs/@guardian/ab-react/jest.dist.setup.js @@ -1,8 +1,6 @@ -/* eslint-disable -- this file will break unless the project is built, so let's not worry about it */ - // Mock `./src/index` with whatever `package.json` points at in dist. // This means we can run the unit tests against `dist` instead. -import * as dist from '../../../dist/libs/@guardian/ab-core'; +import * as dist from '.'; jest.mock('./src/index', () => dist); diff --git a/libs/@guardian/ab-react/package.json b/libs/@guardian/ab-react/package.json index 1adc58c75..1614ef3e8 100644 --- a/libs/@guardian/ab-react/package.json +++ b/libs/@guardian/ab-react/package.json @@ -5,12 +5,24 @@ "description": "A React library for A/B & multivariate testing", "license": "Apache-2.0", "sideEffects": false, + "type": "module", + "exports": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "files": [ + "dist" + ], "scripts": { + "build": "rm -rf dist && rollup -c", "dev": "jest --watch", "fix": "pnpm lint --fix", "lint": "eslint --cache .", "test": "jest", - "verify-dist": "jest --setupFilesAfterEnv ./jest.dist.setup.ts" + "verify-dist": "jest --setupFilesAfterEnv ./jest.dist.setup.js" }, "devDependencies": { "@guardian/ab-core": "7.0.0", @@ -18,17 +30,22 @@ "@types/react": "18.2.11", "react": "18.2.0", "react-dom": "18.2.0", + "rollup": "4.17.2", "tslib": "2.6.2", "typescript": "5.3.3" }, "peerDependencies": { "@guardian/ab-core": "^7.0.0", + "@types/react": "^18.2.11", "react": "^18.2.0", "react-dom": "^18.2.0", "tslib": "^2.6.2", "typescript": "~5.3.3" }, "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, "typescript": { "optional": true } @@ -39,19 +56,14 @@ "nx": { "targets": { "build": { - "executor": "@csnx/npm-package:build", - "outputs": [ - "{options.outputPath}" + "inputs": [ + "{projectRoot}/src/**", + "{projectRoot}/package.json", + "{projectRoot}/tsconfig.json" ], - "options": { - "entry": "{projectRoot}/src/index.ts", - "tsConfig": "{projectRoot}/tsconfig.json", - "packageJson": "{projectRoot}/package.json", - "outputPath": "{workspaceRoot}/dist/{projectRoot}", - "assets": [ - "{projectRoot}/*.md" - ] - } + "outputs": [ + "{projectRoot}/dist" + ] }, "lint": { "inputs": [ diff --git a/libs/@guardian/ab-react/rollup.config.js b/libs/@guardian/ab-react/rollup.config.js new file mode 100644 index 000000000..1ab1d03d6 --- /dev/null +++ b/libs/@guardian/ab-react/rollup.config.js @@ -0,0 +1 @@ +export * as default from '../../../configs/rollup.config.js'; diff --git a/libs/@guardian/ab-react/tsconfig.json b/libs/@guardian/ab-react/tsconfig.json index 5ddfffb73..583450c7e 100644 --- a/libs/@guardian/ab-react/tsconfig.json +++ b/libs/@guardian/ab-react/tsconfig.json @@ -1,6 +1,5 @@ { "extends": "../../../tsconfig.base.json", - "files": [], "include": ["."], "compilerOptions": { "jsxImportSource": "react" diff --git a/libs/@guardian/browserslist-config/.eslintrc.cjs b/libs/@guardian/browserslist-config/.eslintrc.cjs index c160d51bf..4f01fa8a4 100644 --- a/libs/@guardian/browserslist-config/.eslintrc.cjs +++ b/libs/@guardian/browserslist-config/.eslintrc.cjs @@ -1,6 +1,10 @@ module.exports = { extends: ['../../../.eslintrc.cjs'], - ignorePatterns: ['!**/*', 'node_modules'], + ignorePatterns: [ + '!**/*', + 'node_modules', + 'jest.dist.*', // depends on build output, so don't lint it + ], overrides: [ { files: ['*.ts', '*.tsx'], diff --git a/libs/@guardian/browserslist-config/dist.test.js b/libs/@guardian/browserslist-config/dist.test.js deleted file mode 100644 index 00cbb8813..000000000 --- a/libs/@guardian/browserslist-config/dist.test.js +++ /dev/null @@ -1,8 +0,0 @@ -const bundleExports = require('../../../dist/libs/@guardian/browserslist-config'); -const srcExports = require('.'); - -describe('The bundle', () => { - it('exports everything it should', () => { - expect(srcExports).toEqual(bundleExports); - }); -}); diff --git a/libs/@guardian/browserslist-config/jest.config.ts b/libs/@guardian/browserslist-config/jest.config.ts deleted file mode 100644 index 6a03f7522..000000000 --- a/libs/@guardian/browserslist-config/jest.config.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* eslint-disable @nx/enforce-module-boundaries -- out root config lives in the root */ -/* eslint-disable import/no-default-export -- that's what jest likes */ - -import type { Config } from 'jest'; -import { config as baseConfig } from '../../../configs/jest.config'; - -const config: Config = { - ...baseConfig, - displayName: '@guardian/browserslist-config', - testEnvironment: 'node', - transform: { - '^.+\\.[tj]sx?$': 'ts-jest', - }, -}; - -export default config; diff --git a/libs/@guardian/browserslist-config/package.json b/libs/@guardian/browserslist-config/package.json index 577893f8c..b142b8332 100644 --- a/libs/@guardian/browserslist-config/package.json +++ b/libs/@guardian/browserslist-config/package.json @@ -3,11 +3,14 @@ "version": "6.1.0", "description": "Browserslist config for Guardian websites", "main": "browserslist.js", + "files": [ + ".browserslistrc", + "browserslist-stats.json" + ], "scripts": { "fix": "pnpm lint --fix", "lint": "eslint --cache .", - "update-readme": "node ./scripts/update-readme.mjs", - "verify-dist": "jest" + "update-readme": "node ./scripts/update-readme.mjs" }, "devDependencies": { "@guardian/browserslist-config": "workspace:*", @@ -23,22 +26,6 @@ }, "nx": { "targets": { - "build": { - "executor": "@csnx/npm-package:build", - "outputs": [ - "{options.outputPath}" - ], - "options": { - "outputPath": "{workspaceRoot}/dist/{projectRoot}", - "packageJson": "{projectRoot}/package.json", - "assets": [ - "{projectRoot}/.browserslistrc", - "{projectRoot}/browserslist-stats.json", - "{projectRoot}/browserslist.js", - "{projectRoot}/*.md" - ] - } - }, "lint": { "inputs": [ "{projectRoot}/**", @@ -53,12 +40,6 @@ "outputs": [ "{projectRoot}" ] - }, - "verify-dist": { - "inputs": [ - "{projectRoot}/**", - "{workspaceRoot}/jest.*" - ] } } } diff --git a/libs/@guardian/cobalt-plugin-ts/.eslintrc.cjs b/libs/@guardian/cobalt-plugin-ts/.eslintrc.cjs index 0c139e643..ce9ae37cd 100644 --- a/libs/@guardian/cobalt-plugin-ts/.eslintrc.cjs +++ b/libs/@guardian/cobalt-plugin-ts/.eslintrc.cjs @@ -1,6 +1,10 @@ module.exports = { extends: ['../../../.eslintrc.cjs'], - ignorePatterns: ['!**/*', 'node_modules'], + ignorePatterns: [ + '!**/*', + 'node_modules', + 'jest.dist.*', // depends on build output, so don't lint it + ], overrides: [ { files: ['*.d.ts'], diff --git a/libs/@guardian/cobalt-plugin-ts/index.mjs b/libs/@guardian/cobalt-plugin-ts/index.js similarity index 97% rename from libs/@guardian/cobalt-plugin-ts/index.mjs rename to libs/@guardian/cobalt-plugin-ts/index.js index beb7980dd..6a099d5e1 100644 --- a/libs/@guardian/cobalt-plugin-ts/index.mjs +++ b/libs/@guardian/cobalt-plugin-ts/index.js @@ -13,7 +13,7 @@ import ts from 'typescript'; export default function pluginTS(options) { return { name: 'plugin-ts', - // eslint-disable-next-line @typescript-eslint/no-empty-function -- it needs to be present + config(/* config */) {}, async build({ tokens /* metadata, rawSchema */ }) { const header = `/** diff --git a/libs/@guardian/cobalt-plugin-ts/package.json b/libs/@guardian/cobalt-plugin-ts/package.json index bd3607c3c..d4b0f462f 100644 --- a/libs/@guardian/cobalt-plugin-ts/package.json +++ b/libs/@guardian/cobalt-plugin-ts/package.json @@ -3,7 +3,7 @@ "version": "0.1.0", "private": true, "type": "module", - "main": "./index.mjs", + "main": "./index.js", "scripts": { "fix": "pnpm lint --fix", "lint": "eslint --cache ." @@ -22,20 +22,6 @@ }, "nx": { "targets": { - "build": { - "executor": "@csnx/npm-package:build", - "outputs": [ - "{options.outputPath}" - ], - "options": { - "packageJson": "{projectRoot}/package.json", - "outputPath": "{workspaceRoot}/dist/{projectRoot}", - "assets": [ - "{projectRoot}/*.md", - "{projectRoot}/index.mjs" - ] - } - }, "lint": { "inputs": [ "{projectRoot}/**", diff --git a/libs/@guardian/core-web-vitals/.eslintrc.js b/libs/@guardian/core-web-vitals/.eslintrc.cjs similarity index 79% rename from libs/@guardian/core-web-vitals/.eslintrc.js rename to libs/@guardian/core-web-vitals/.eslintrc.cjs index 9bee1e043..54325ff0a 100644 --- a/libs/@guardian/core-web-vitals/.eslintrc.js +++ b/libs/@guardian/core-web-vitals/.eslintrc.cjs @@ -1,6 +1,11 @@ module.exports = { extends: ['../../../.eslintrc.cjs'], - ignorePatterns: ['!**/*', 'node_modules'], + ignorePatterns: [ + '!**/*', + 'node_modules', + 'jest.dist.*', // depends on build output, so don't lint it + 'dist', + ], overrides: [ { files: ['*.ts', '*.tsx'], diff --git a/libs/@guardian/core-web-vitals/jest.config.ts b/libs/@guardian/core-web-vitals/jest.config.js similarity index 63% rename from libs/@guardian/core-web-vitals/jest.config.ts rename to libs/@guardian/core-web-vitals/jest.config.js index f53c9bdb1..546cc2f3d 100644 --- a/libs/@guardian/core-web-vitals/jest.config.ts +++ b/libs/@guardian/core-web-vitals/jest.config.js @@ -1,10 +1,9 @@ -/* eslint-disable @nx/enforce-module-boundaries -- out root config lives in the root */ /* eslint-disable import/no-default-export -- that's what jest likes */ -import type { Config } from 'jest'; -import { config as baseConfig } from '../../../configs/jest.config'; +import { config as baseConfig } from '../../../configs/jest.config.js'; -const config: Config = { +/** @typedef {import("jest").Config} Config */ +const config = { ...baseConfig, displayName: '@guardian/core-web-vitals', testEnvironment: 'jest-environment-jsdom', diff --git a/libs/@guardian/ab-react/jest.dist.setup.ts b/libs/@guardian/core-web-vitals/jest.dist.setup.js similarity index 51% rename from libs/@guardian/ab-react/jest.dist.setup.ts rename to libs/@guardian/core-web-vitals/jest.dist.setup.js index 4cf2af25c..96fd6cc4b 100644 --- a/libs/@guardian/ab-react/jest.dist.setup.ts +++ b/libs/@guardian/core-web-vitals/jest.dist.setup.js @@ -1,8 +1,6 @@ -/* eslint-disable -- this file will break unless the project is built, so let's not worry about it */ - // Mock `./src/index` with whatever `package.json` points at in dist. // This means we can run the unit tests against `dist` instead. -import * as dist from '../../../dist/libs/@guardian/ab-react'; +import * as dist from '.'; jest.mock('./src/index', () => dist); diff --git a/libs/@guardian/core-web-vitals/jest.dist.setup.ts b/libs/@guardian/core-web-vitals/jest.dist.setup.ts deleted file mode 100644 index 76367df8d..000000000 --- a/libs/@guardian/core-web-vitals/jest.dist.setup.ts +++ /dev/null @@ -1,8 +0,0 @@ -/* eslint-disable -- this file will break unless the project is built, so let's not worry about it */ - -// Mock `./src/index` with whatever `package.json` points at in dist. -// This means we can run the unit tests against `dist` instead. - -import * as dist from '../../../dist/libs/@guardian/core-web-vitals'; - -jest.mock('./src/index', () => dist); diff --git a/libs/@guardian/core-web-vitals/package.json b/libs/@guardian/core-web-vitals/package.json index c3947bf2c..e0eba9dce 100644 --- a/libs/@guardian/core-web-vitals/package.json +++ b/libs/@guardian/core-web-vitals/package.json @@ -4,15 +4,28 @@ "private": false, "description": "Methods to help with the implementation of Google's Core Web Vitals", "sideEffects": false, + "type": "module", + "exports": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "files": [ + "dist" + ], "scripts": { + "build": "rm -rf dist && rollup -c", "dev": "jest --watch", "fix": "pnpm lint --fix", "lint": "eslint --cache .", "test": "jest", - "verify-dist": "jest --setupFilesAfterEnv ./jest.dist.setup.ts" + "verify-dist": "jest --setupFilesAfterEnv ./jest.dist.setup.js" }, "devDependencies": { "@guardian/libs": "16.0.0", + "rollup": "4.17.2", "tslib": "2.6.2", "typescript": "5.3.3", "web-vitals": "3.5.0" @@ -34,19 +47,14 @@ "nx": { "targets": { "build": { - "executor": "@csnx/npm-package:build", - "outputs": [ - "{options.outputPath}" + "inputs": [ + "{projectRoot}/src/**", + "{projectRoot}/package.json", + "{projectRoot}/tsconfig.json" ], - "options": { - "entry": "{projectRoot}/src/index.ts", - "tsConfig": "{projectRoot}/tsconfig.json", - "packageJson": "{projectRoot}/package.json", - "outputPath": "{workspaceRoot}/dist/{projectRoot}", - "assets": [ - "{projectRoot}/*.md" - ] - } + "outputs": [ + "{projectRoot}/dist" + ] }, "lint": { "inputs": [ diff --git a/libs/@guardian/core-web-vitals/rollup.config.js b/libs/@guardian/core-web-vitals/rollup.config.js new file mode 100644 index 000000000..1ab1d03d6 --- /dev/null +++ b/libs/@guardian/core-web-vitals/rollup.config.js @@ -0,0 +1 @@ +export * as default from '../../../configs/rollup.config.js'; diff --git a/libs/@guardian/core-web-vitals/tsconfig.spec.json b/libs/@guardian/core-web-vitals/tsconfig.spec.json index d42f10920..1b175b148 100644 --- a/libs/@guardian/core-web-vitals/tsconfig.spec.json +++ b/libs/@guardian/core-web-vitals/tsconfig.spec.json @@ -6,7 +6,7 @@ "types": ["jest", "node"] }, "include": [ - "jest.config.ts", + "jest.config.js", "**/*.test.ts", "**/*.spec.ts", "**/*.test.tsx", diff --git a/libs/@guardian/design-tokens/.eslintrc.cjs b/libs/@guardian/design-tokens/.eslintrc.cjs index 89b52e2ab..1577d2f42 100644 --- a/libs/@guardian/design-tokens/.eslintrc.cjs +++ b/libs/@guardian/design-tokens/.eslintrc.cjs @@ -1,6 +1,11 @@ module.exports = { extends: ['../../../.eslintrc.cjs'], - ignorePatterns: ['!**/*', 'node_modules'], + ignorePatterns: [ + '!**/*', + 'node_modules', + 'jest.dist.*', // depends on build output, so don't lint it + 'dist', + ], overrides: [ { files: ['tokens.d.ts'], diff --git a/libs/@guardian/design-tokens/package.json b/libs/@guardian/design-tokens/package.json index b221b0f67..f8d7fb3cf 100644 --- a/libs/@guardian/design-tokens/package.json +++ b/libs/@guardian/design-tokens/package.json @@ -3,10 +3,14 @@ "version": "0.1.0--pre.0", "private": true, "type": "module", - "main": "./tokens.js", + "main": "src/__generated__/tokens.js", + "types": "src/__generated__/tokens.d.ts", + "files": [ + "src/__generated__" + ], "scripts": { + "build": "co build && prettier --write src/__generated__/**", "fix": "pnpm lint --fix", - "generate-tokens": "co build && prettier --write tokens.d.ts tokens.js variables.css", "lint": "eslint --cache ." }, "devDependencies": { @@ -20,36 +24,15 @@ }, "nx": { "targets": { - "generate-tokens": { + "build": { "inputs": [ - "{projectRoot}/!(tokens|node_modules)/*", - "!{projectRoot}/**/*.md" + "{projectRoot}/tokens.config.js", + "{projectRoot}/package.json" ], "outputs": [ - "{projectRoot}/tokens.js", - "{projectRoot}/tokens.d.ts", - "{projectRoot}/variables.css" + "{projectRoot}/src/__generated__" ] }, - "build": { - "dependsOn": [ - "generate-tokens" - ], - "executor": "@csnx/npm-package:build", - "outputs": [ - "{options.outputPath}" - ], - "options": { - "packageJson": "{projectRoot}/package.json", - "outputPath": "{workspaceRoot}/dist/{projectRoot}", - "assets": [ - "{projectRoot}/*.md", - "{projectRoot}/tokens.js", - "{projectRoot}/tokens.d.ts", - "{projectRoot}/variables.css" - ] - } - }, "lint": { "inputs": [ "{projectRoot}/**", diff --git a/libs/@guardian/design-tokens/tokens.d.ts b/libs/@guardian/design-tokens/src/__generated__/tokens.d.ts similarity index 100% rename from libs/@guardian/design-tokens/tokens.d.ts rename to libs/@guardian/design-tokens/src/__generated__/tokens.d.ts diff --git a/libs/@guardian/design-tokens/tokens.js b/libs/@guardian/design-tokens/src/__generated__/tokens.js similarity index 100% rename from libs/@guardian/design-tokens/tokens.js rename to libs/@guardian/design-tokens/src/__generated__/tokens.js diff --git a/libs/@guardian/design-tokens/variables.css b/libs/@guardian/design-tokens/src/__generated__/variables.css similarity index 100% rename from libs/@guardian/design-tokens/variables.css rename to libs/@guardian/design-tokens/src/__generated__/variables.css diff --git a/libs/@guardian/design-tokens/tokens.config.js b/libs/@guardian/design-tokens/tokens.config.js index 5a18153f3..b318beef8 100644 --- a/libs/@guardian/design-tokens/tokens.config.js +++ b/libs/@guardian/design-tokens/tokens.config.js @@ -25,7 +25,7 @@ const pxToRem = (token) => { /** @type {import('@cobalt-ui/core').Config} */ export default { tokens: 'src/tokens.json', - outDir: '.', + outDir: './src/__generated__', plugins: [ pluginCSS({ p3: false, diff --git a/libs/@guardian/eslint-config-typescript/.eslintrc.cjs b/libs/@guardian/eslint-config-typescript/.eslintrc.cjs index c160d51bf..4f01fa8a4 100644 --- a/libs/@guardian/eslint-config-typescript/.eslintrc.cjs +++ b/libs/@guardian/eslint-config-typescript/.eslintrc.cjs @@ -1,6 +1,10 @@ module.exports = { extends: ['../../../.eslintrc.cjs'], - ignorePatterns: ['!**/*', 'node_modules'], + ignorePatterns: [ + '!**/*', + 'node_modules', + 'jest.dist.*', // depends on build output, so don't lint it + ], overrides: [ { files: ['*.ts', '*.tsx'], diff --git a/libs/@guardian/eslint-config-typescript/dist.test.js b/libs/@guardian/eslint-config-typescript/dist.test.js deleted file mode 100644 index f1cf6ab15..000000000 --- a/libs/@guardian/eslint-config-typescript/dist.test.js +++ /dev/null @@ -1,8 +0,0 @@ -const bundleExports = require('../../../dist/libs/@guardian/eslint-config-typescript'); -const srcExports = require('.'); - -describe('The bundle', () => { - it('exports everything it should', () => { - expect(srcExports).toEqual(bundleExports); - }); -}); diff --git a/libs/@guardian/eslint-config-typescript/jest.config.ts b/libs/@guardian/eslint-config-typescript/jest.config.ts deleted file mode 100644 index 08a436666..000000000 --- a/libs/@guardian/eslint-config-typescript/jest.config.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* eslint-disable @nx/enforce-module-boundaries -- out root config lives in the root */ -/* eslint-disable import/no-default-export -- that's what jest likes */ - -import type { Config } from 'jest'; -import { config as baseConfig } from '../../../configs/jest.config'; - -const config: Config = { - ...baseConfig, - displayName: '@guardian/eslint-config-typescript', - testEnvironment: 'node', - transform: { - '^.+\\.[tj]sx?$': 'ts-jest', - }, -}; - -export default config; diff --git a/libs/@guardian/eslint-config-typescript/package.json b/libs/@guardian/eslint-config-typescript/package.json index eafc416e5..d3e0c5d34 100644 --- a/libs/@guardian/eslint-config-typescript/package.json +++ b/libs/@guardian/eslint-config-typescript/package.json @@ -5,8 +5,7 @@ "main": "index.js", "scripts": { "fix": "pnpm lint --fix", - "lint": "eslint --cache .", - "verify-dist": "jest" + "lint": "eslint --cache ." }, "dependencies": { "@guardian/eslint-config": "workspace:*", @@ -27,20 +26,6 @@ }, "nx": { "targets": { - "build": { - "executor": "@csnx/npm-package:build", - "outputs": [ - "{options.outputPath}" - ], - "options": { - "outputPath": "{workspaceRoot}/dist/{projectRoot}", - "packageJson": "{projectRoot}/package.json", - "assets": [ - "{projectRoot}/index.js", - "{projectRoot}/*.md" - ] - } - }, "lint": { "inputs": [ "{projectRoot}/**", @@ -55,12 +40,6 @@ "outputs": [ "{projectRoot}" ] - }, - "verify-dist": { - "inputs": [ - "{projectRoot}/**", - "{workspaceRoot}/jest.*" - ] } } } diff --git a/libs/@guardian/eslint-config/.eslintrc.cjs b/libs/@guardian/eslint-config/.eslintrc.cjs index c160d51bf..4f01fa8a4 100644 --- a/libs/@guardian/eslint-config/.eslintrc.cjs +++ b/libs/@guardian/eslint-config/.eslintrc.cjs @@ -1,6 +1,10 @@ module.exports = { extends: ['../../../.eslintrc.cjs'], - ignorePatterns: ['!**/*', 'node_modules'], + ignorePatterns: [ + '!**/*', + 'node_modules', + 'jest.dist.*', // depends on build output, so don't lint it + ], overrides: [ { files: ['*.ts', '*.tsx'], diff --git a/libs/@guardian/eslint-config/dist.test.js b/libs/@guardian/eslint-config/dist.test.js deleted file mode 100644 index abe0b80c0..000000000 --- a/libs/@guardian/eslint-config/dist.test.js +++ /dev/null @@ -1,8 +0,0 @@ -const bundleExports = require('../../../dist/libs/@guardian/eslint-config'); -const srcExports = require('.'); - -describe('The bundle', () => { - it('exports everything it should', () => { - expect(srcExports).toEqual(bundleExports); - }); -}); diff --git a/libs/@guardian/eslint-config/jest.config.ts b/libs/@guardian/eslint-config/jest.config.ts deleted file mode 100644 index 963f4667d..000000000 --- a/libs/@guardian/eslint-config/jest.config.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* eslint-disable @nx/enforce-module-boundaries -- out root config lives in the root */ -/* eslint-disable import/no-default-export -- that's what jest likes */ - -import type { Config } from 'jest'; -import { config as baseConfig } from '../../../configs/jest.config'; - -const config: Config = { - ...baseConfig, - displayName: '@guardian/eslint-config', - testEnvironment: 'node', - transform: { - '^.+\\.[tj]sx?$': 'ts-jest', - }, -}; - -export default config; diff --git a/libs/@guardian/eslint-config/package.json b/libs/@guardian/eslint-config/package.json index 8d51cdc13..dfb1ea672 100644 --- a/libs/@guardian/eslint-config/package.json +++ b/libs/@guardian/eslint-config/package.json @@ -5,8 +5,7 @@ "main": "index.js", "scripts": { "fix": "pnpm lint --fix", - "lint": "eslint --cache .", - "verify-dist": "jest" + "lint": "eslint --cache ." }, "dependencies": { "eslint-config-prettier": "9.1.0", @@ -23,20 +22,6 @@ }, "nx": { "targets": { - "build": { - "executor": "@csnx/npm-package:build", - "outputs": [ - "{options.outputPath}" - ], - "options": { - "outputPath": "{workspaceRoot}/dist/{projectRoot}", - "packageJson": "{projectRoot}/package.json", - "assets": [ - "{projectRoot}/index.js", - "{projectRoot}/*.md" - ] - } - }, "lint": { "inputs": [ "{projectRoot}/**", @@ -51,12 +36,6 @@ "outputs": [ "{projectRoot}" ] - }, - "verify-dist": { - "inputs": [ - "{projectRoot}/**", - "{workspaceRoot}/jest.*" - ] } } } diff --git a/libs/@guardian/eslint-plugin-source-foundations/.eslintrc.cjs b/libs/@guardian/eslint-plugin-source-foundations/.eslintrc.cjs index 58d4db8c4..ef983a648 100644 --- a/libs/@guardian/eslint-plugin-source-foundations/.eslintrc.cjs +++ b/libs/@guardian/eslint-plugin-source-foundations/.eslintrc.cjs @@ -1,6 +1,11 @@ module.exports = { extends: ['../../../.eslintrc.cjs'], - ignorePatterns: ['!**/*', 'node_modules'], + ignorePatterns: [ + '!**/*', + 'node_modules', + 'jest.dist.*', // depends on build output, so don't lint it + 'dist', + ], overrides: [ { files: ['*.ts', '*.tsx'], diff --git a/libs/@guardian/eslint-plugin-source-foundations/jest.config.ts b/libs/@guardian/eslint-plugin-source-foundations/jest.config.js similarity index 63% rename from libs/@guardian/eslint-plugin-source-foundations/jest.config.ts rename to libs/@guardian/eslint-plugin-source-foundations/jest.config.js index c7a6e0f6f..cb1055048 100644 --- a/libs/@guardian/eslint-plugin-source-foundations/jest.config.ts +++ b/libs/@guardian/eslint-plugin-source-foundations/jest.config.js @@ -1,10 +1,9 @@ -/* eslint-disable @nx/enforce-module-boundaries -- out root config lives in the root */ /* eslint-disable import/no-default-export -- that's what jest likes */ -import type { Config } from 'jest'; -import { config as baseConfig } from '../../../configs/jest.config'; +import { config as baseConfig } from '../../../configs/jest.config.js'; -const config: Config = { +/** @typedef {import("jest").Config} Config */ +const config = { ...baseConfig, displayName: '@guardian/eslint-plugin-source-foundations', testEnvironment: 'node', diff --git a/libs/@guardian/source-react-components/jest.dist.setup.ts b/libs/@guardian/eslint-plugin-source-foundations/jest.dist.setup.js similarity index 75% rename from libs/@guardian/source-react-components/jest.dist.setup.ts rename to libs/@guardian/eslint-plugin-source-foundations/jest.dist.setup.js index 61e0fd40b..f17485880 100644 --- a/libs/@guardian/source-react-components/jest.dist.setup.ts +++ b/libs/@guardian/eslint-plugin-source-foundations/jest.dist.setup.js @@ -3,7 +3,6 @@ // Mock `src/index` with whatever the dist `package.json` points at. // This means we can run `src/index.test.ts` against `dist` instead. -// @ts-ignore -import * as dist from '../../../dist/libs/@guardian/source-react-components'; +import * as dist from '.'; jest.mock('./src/index', () => dist); diff --git a/libs/@guardian/eslint-plugin-source-foundations/package.json b/libs/@guardian/eslint-plugin-source-foundations/package.json index 676b4c01b..167bacd80 100644 --- a/libs/@guardian/eslint-plugin-source-foundations/package.json +++ b/libs/@guardian/eslint-plugin-source-foundations/package.json @@ -2,12 +2,24 @@ "name": "@guardian/eslint-plugin-source-foundations", "version": "18.0.0", "description": "ESLint plugin for Guardian projects using the `@guardian/source-foundations` package.", + "type": "module", + "exports": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "files": [ + "dist" + ], "scripts": { + "build": "rm -rf dist && rollup -c", "dev": "jest --watch", "fix": "pnpm lint --fix", "lint": "eslint --cache .", "test": "jest", - "verify-dist": "jest --setupFilesAfterEnv ./jest.dist.setup.ts" + "verify-dist": "jest --setupFilesAfterEnv ./jest.dist.setup.js" }, "dependencies": { "@typescript-eslint/eslint-plugin": "6.21.0", @@ -20,6 +32,7 @@ "@types/eslint": "8.56.1", "@types/estree": "1.0.5", "eslint": "8.56.0", + "rollup": "4.17.2", "tslib": "2.6.2", "typescript": "5.3.3", "wireit": "0.14.4" @@ -27,11 +40,15 @@ "peerDependencies": { "@guardian/libs": "^16.0.0", "@guardian/source-foundations": "^14.1.4", + "@types/eslint": "^8.56.1", "eslint": "^8.56.0", "tslib": "^2.6.2", "typescript": "~5.3.3" }, "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, "typescript": { "optional": true } @@ -39,19 +56,14 @@ "nx": { "targets": { "build": { - "executor": "@csnx/npm-package:build", - "outputs": [ - "{options.outputPath}" + "inputs": [ + "{projectRoot}/src/**", + "{projectRoot}/package.json", + "{projectRoot}/tsconfig.json" ], - "options": { - "entry": "{projectRoot}/src/index.ts", - "tsConfig": "{projectRoot}/tsconfig.json", - "packageJson": "{projectRoot}/package.json", - "outputPath": "{workspaceRoot}/dist/{projectRoot}", - "assets": [ - "{projectRoot}/*.md" - ] - } + "outputs": [ + "{projectRoot}/dist" + ] }, "lint": { "inputs": [ diff --git a/libs/@guardian/eslint-plugin-source-foundations/rollup.config.js b/libs/@guardian/eslint-plugin-source-foundations/rollup.config.js new file mode 100644 index 000000000..1ab1d03d6 --- /dev/null +++ b/libs/@guardian/eslint-plugin-source-foundations/rollup.config.js @@ -0,0 +1 @@ +export * as default from '../../../configs/rollup.config.js'; diff --git a/libs/@guardian/eslint-plugin-source-foundations/tsconfig.spec.json b/libs/@guardian/eslint-plugin-source-foundations/tsconfig.spec.json index 4e7173011..914db19cb 100644 --- a/libs/@guardian/eslint-plugin-source-foundations/tsconfig.spec.json +++ b/libs/@guardian/eslint-plugin-source-foundations/tsconfig.spec.json @@ -7,7 +7,7 @@ "types": ["jest", "node"] }, "include": [ - "jest.config.ts", + "jest.config.js", "**/*.test.ts", "**/*.spec.ts", "**/*.test.tsx", diff --git a/libs/@guardian/eslint-plugin-source-react-components/.eslintrc.cjs b/libs/@guardian/eslint-plugin-source-react-components/.eslintrc.cjs index 58d4db8c4..ef983a648 100644 --- a/libs/@guardian/eslint-plugin-source-react-components/.eslintrc.cjs +++ b/libs/@guardian/eslint-plugin-source-react-components/.eslintrc.cjs @@ -1,6 +1,11 @@ module.exports = { extends: ['../../../.eslintrc.cjs'], - ignorePatterns: ['!**/*', 'node_modules'], + ignorePatterns: [ + '!**/*', + 'node_modules', + 'jest.dist.*', // depends on build output, so don't lint it + 'dist', + ], overrides: [ { files: ['*.ts', '*.tsx'], diff --git a/libs/@guardian/eslint-plugin-source-react-components/jest.config.ts b/libs/@guardian/eslint-plugin-source-react-components/jest.config.js similarity index 63% rename from libs/@guardian/eslint-plugin-source-react-components/jest.config.ts rename to libs/@guardian/eslint-plugin-source-react-components/jest.config.js index a0392a7fa..8a01fa633 100644 --- a/libs/@guardian/eslint-plugin-source-react-components/jest.config.ts +++ b/libs/@guardian/eslint-plugin-source-react-components/jest.config.js @@ -1,10 +1,9 @@ -/* eslint-disable @nx/enforce-module-boundaries -- out root config lives in the root */ /* eslint-disable import/no-default-export -- that's what jest likes */ -import type { Config } from 'jest'; -import { config as baseConfig } from '../../../configs/jest.config'; +import { config as baseConfig } from '../../../configs/jest.config.js'; -const config: Config = { +/** @typedef {import("jest").Config} Config */ +const config = { ...baseConfig, displayName: '@guardian/eslint-plugin-source-react-components', testEnvironment: 'node', diff --git a/libs/@guardian/eslint-plugin-source-foundations/jest.dist.setup.ts b/libs/@guardian/eslint-plugin-source-react-components/jest.dist.setup.js similarity index 73% rename from libs/@guardian/eslint-plugin-source-foundations/jest.dist.setup.ts rename to libs/@guardian/eslint-plugin-source-react-components/jest.dist.setup.js index f6b8c6bdf..f17485880 100644 --- a/libs/@guardian/eslint-plugin-source-foundations/jest.dist.setup.ts +++ b/libs/@guardian/eslint-plugin-source-react-components/jest.dist.setup.js @@ -3,7 +3,6 @@ // Mock `src/index` with whatever the dist `package.json` points at. // This means we can run `src/index.test.ts` against `dist` instead. -// @ts-ignore -import * as dist from '../../../dist/libs/@guardian/eslint-plugin-source-foundations'; +import * as dist from '.'; jest.mock('./src/index', () => dist); diff --git a/libs/@guardian/eslint-plugin-source-react-components/jest.dist.setup.ts b/libs/@guardian/eslint-plugin-source-react-components/jest.dist.setup.ts deleted file mode 100644 index c98cf5cf9..000000000 --- a/libs/@guardian/eslint-plugin-source-react-components/jest.dist.setup.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* eslint-disable -- this file will break unless the project is built, so let's not worry about it */ - -// Mock `src/index` with whatever the dist `package.json` points at. -// This means we can run `src/index.test.ts` against `dist` instead. - -// @ts-ignore -import * as dist from '../../../dist/libs/@guardian/eslint-plugin-source-react-components'; - -jest.mock('./src/index', () => dist); diff --git a/libs/@guardian/eslint-plugin-source-react-components/package.json b/libs/@guardian/eslint-plugin-source-react-components/package.json index ce784fa86..cd7828773 100644 --- a/libs/@guardian/eslint-plugin-source-react-components/package.json +++ b/libs/@guardian/eslint-plugin-source-react-components/package.json @@ -2,12 +2,24 @@ "name": "@guardian/eslint-plugin-source-react-components", "version": "24.0.0", "description": "ESLint plugin for Guardian projects using the `@guardian/source-react-components` package.", + "type": "module", + "exports": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "files": [ + "dist" + ], "scripts": { + "build": "rm -rf dist && rollup -c", "dev": "jest --watch", "fix": "pnpm lint --fix", "lint": "eslint --cache .", "test": "jest", - "verify-dist": "jest --setupFilesAfterEnv ./jest.dist.setup.ts" + "verify-dist": "jest --setupFilesAfterEnv ./jest.dist.setup.js" }, "dependencies": { "@typescript-eslint/eslint-plugin": "6.21.0", @@ -22,18 +34,23 @@ "@types/estree": "1.0.5", "eslint": "8.56.0", "react": "18.2.0", + "rollup": "4.17.2", "tslib": "2.6.2", "typescript": "5.3.3" }, "peerDependencies": { "@guardian/libs": "^16.0.0", "@guardian/source-react-components": "^22.0.1", + "@types/eslint": "^8.56.1", "eslint": "^8.56.0", "react": "^18.2.0", "tslib": "^2.6.2", "typescript": "~5.3.3" }, "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, "typescript": { "optional": true } @@ -41,19 +58,14 @@ "nx": { "targets": { "build": { - "executor": "@csnx/npm-package:build", - "outputs": [ - "{options.outputPath}" + "inputs": [ + "{projectRoot}/src/**", + "{projectRoot}/package.json", + "{projectRoot}/tsconfig.json" ], - "options": { - "entry": "{projectRoot}/src/index.ts", - "tsConfig": "{projectRoot}/tsconfig.json", - "packageJson": "{projectRoot}/package.json", - "outputPath": "{workspaceRoot}/dist/{projectRoot}", - "assets": [ - "{projectRoot}/*.md" - ] - } + "outputs": [ + "{projectRoot}/dist" + ] }, "lint": { "inputs": [ diff --git a/libs/@guardian/eslint-plugin-source-react-components/rollup.config.js b/libs/@guardian/eslint-plugin-source-react-components/rollup.config.js new file mode 100644 index 000000000..1ab1d03d6 --- /dev/null +++ b/libs/@guardian/eslint-plugin-source-react-components/rollup.config.js @@ -0,0 +1 @@ +export * as default from '../../../configs/rollup.config.js'; diff --git a/libs/@guardian/eslint-plugin-source-react-components/tsconfig.spec.json b/libs/@guardian/eslint-plugin-source-react-components/tsconfig.spec.json index 4e7173011..914db19cb 100644 --- a/libs/@guardian/eslint-plugin-source-react-components/tsconfig.spec.json +++ b/libs/@guardian/eslint-plugin-source-react-components/tsconfig.spec.json @@ -7,7 +7,7 @@ "types": ["jest", "node"] }, "include": [ - "jest.config.ts", + "jest.config.js", "**/*.test.ts", "**/*.spec.ts", "**/*.test.tsx", diff --git a/libs/@guardian/identity-auth-frontend/.eslintrc.cjs b/libs/@guardian/identity-auth-frontend/.eslintrc.cjs index 571c2fbc2..bd301cafc 100644 --- a/libs/@guardian/identity-auth-frontend/.eslintrc.cjs +++ b/libs/@guardian/identity-auth-frontend/.eslintrc.cjs @@ -1,6 +1,11 @@ module.exports = { extends: ['../../../.eslintrc.cjs'], - ignorePatterns: ['!**/*', 'node_modules'], + ignorePatterns: [ + '!**/*', + 'node_modules', + 'jest.dist.*', // depends on build output, so don't lint it + 'dist', + ], overrides: [ { files: ['*.ts', '*.tsx'], diff --git a/libs/@guardian/identity-auth-frontend/jest.config.ts b/libs/@guardian/identity-auth-frontend/jest.config.js similarity index 64% rename from libs/@guardian/identity-auth-frontend/jest.config.ts rename to libs/@guardian/identity-auth-frontend/jest.config.js index 0c019c353..f80176f5e 100644 --- a/libs/@guardian/identity-auth-frontend/jest.config.ts +++ b/libs/@guardian/identity-auth-frontend/jest.config.js @@ -1,10 +1,9 @@ -/* eslint-disable @nx/enforce-module-boundaries -- out root config lives in the root */ /* eslint-disable import/no-default-export -- that's what jest likes */ -import type { Config } from 'jest'; -import { config as baseConfig } from '../../../configs/jest.config'; +import { config as baseConfig } from '../../../configs/jest.config.js'; -const config: Config = { +/** @typedef {import("jest").Config} Config */ +const config = { ...baseConfig, displayName: '@guardian/identity-auth-frontend', testEnvironment: 'jest-environment-jsdom', diff --git a/libs/@guardian/identity-auth/jest.dist.setup.ts b/libs/@guardian/identity-auth-frontend/jest.dist.setup.js similarity index 50% rename from libs/@guardian/identity-auth/jest.dist.setup.ts rename to libs/@guardian/identity-auth-frontend/jest.dist.setup.js index e7b958288..96fd6cc4b 100644 --- a/libs/@guardian/identity-auth/jest.dist.setup.ts +++ b/libs/@guardian/identity-auth-frontend/jest.dist.setup.js @@ -1,8 +1,6 @@ -/* eslint-disable -- this file will break unless the project is built, so let's not worry about it */ - // Mock `./src/index` with whatever `package.json` points at in dist. // This means we can run the unit tests against `dist` instead. -import * as dist from '../../../dist/libs/@guardian/identity-auth'; +import * as dist from '.'; jest.mock('./src/index', () => dist); diff --git a/libs/@guardian/identity-auth-frontend/jest.dist.setup.ts b/libs/@guardian/identity-auth-frontend/jest.dist.setup.ts deleted file mode 100644 index 6468f1c6d..000000000 --- a/libs/@guardian/identity-auth-frontend/jest.dist.setup.ts +++ /dev/null @@ -1,8 +0,0 @@ -/* eslint-disable -- this file will break unless the project is built, so let's not worry about it */ - -// Mock `./src/index` with whatever `package.json` points at in dist. -// This means we can run the unit tests against `dist` instead. - -import * as dist from '../../../dist/libs/@guardian/identity-auth-frontend'; - -jest.mock('./src/index', () => dist); diff --git a/libs/@guardian/identity-auth-frontend/package.json b/libs/@guardian/identity-auth-frontend/package.json index 5be91a14d..c2dac2116 100644 --- a/libs/@guardian/identity-auth-frontend/package.json +++ b/libs/@guardian/identity-auth-frontend/package.json @@ -5,17 +5,30 @@ "description": "", "license": "Apache-2.0", "sideEffects": false, + "type": "module", + "exports": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "files": [ + "dist" + ], "scripts": { + "build": "rm -rf dist && rollup -c", "dev": "jest --watch", "fix": "pnpm lint --fix", "lint": "eslint --cache .", "test": "jest", - "verify-dist": "jest --setupFilesAfterEnv ./jest.dist.setup.ts" + "verify-dist": "jest --setupFilesAfterEnv ./jest.dist.setup.js" }, "devDependencies": { "@guardian/identity-auth": "2.1.0", "@guardian/libs": "16.0.0", "jest-fetch-mock": "3.0.3", + "rollup": "4.17.2", "tslib": "2.6.2", "typescript": "5.3.3" }, @@ -36,19 +49,14 @@ "nx": { "targets": { "build": { - "executor": "@csnx/npm-package:build", - "outputs": [ - "{options.outputPath}" + "inputs": [ + "{projectRoot}/src/**", + "{projectRoot}/package.json", + "{projectRoot}/tsconfig.json" ], - "options": { - "entry": "{projectRoot}/src/index.ts", - "tsConfig": "{projectRoot}/tsconfig.json", - "packageJson": "{projectRoot}/package.json", - "outputPath": "{workspaceRoot}/dist/{projectRoot}", - "assets": [ - "{projectRoot}/*.md" - ] - } + "outputs": [ + "{projectRoot}/dist" + ] }, "lint": { "inputs": [ diff --git a/libs/@guardian/identity-auth-frontend/rollup.config.js b/libs/@guardian/identity-auth-frontend/rollup.config.js new file mode 100644 index 000000000..1ab1d03d6 --- /dev/null +++ b/libs/@guardian/identity-auth-frontend/rollup.config.js @@ -0,0 +1 @@ +export * as default from '../../../configs/rollup.config.js'; diff --git a/libs/@guardian/identity-auth-frontend/tsconfig.spec.json b/libs/@guardian/identity-auth-frontend/tsconfig.spec.json index a3093a7c2..fde3b6ad9 100644 --- a/libs/@guardian/identity-auth-frontend/tsconfig.spec.json +++ b/libs/@guardian/identity-auth-frontend/tsconfig.spec.json @@ -5,5 +5,5 @@ "module": "commonjs", "types": ["jest", "node"] }, - "include": ["jest.config.ts", "**/*.test.ts", "**/*.d.ts"] + "include": ["jest.config.js", "**/*.test.ts", "**/*.d.ts"] } diff --git a/libs/@guardian/identity-auth/.eslintrc.cjs b/libs/@guardian/identity-auth/.eslintrc.cjs index 3154fa87b..4702175fa 100644 --- a/libs/@guardian/identity-auth/.eslintrc.cjs +++ b/libs/@guardian/identity-auth/.eslintrc.cjs @@ -1,6 +1,11 @@ module.exports = { extends: ['../../../.eslintrc.cjs'], - ignorePatterns: ['!**/*', 'node_modules'], + ignorePatterns: [ + '!**/*', + 'node_modules', + 'jest.dist.*', // depends on build output, so don't lint it + 'dist', + ], overrides: [ { files: ['*.ts', '*.tsx'], diff --git a/libs/@guardian/identity-auth/jest.config.ts b/libs/@guardian/identity-auth/jest.config.js similarity index 63% rename from libs/@guardian/identity-auth/jest.config.ts rename to libs/@guardian/identity-auth/jest.config.js index 40e5b008a..880d757b6 100644 --- a/libs/@guardian/identity-auth/jest.config.ts +++ b/libs/@guardian/identity-auth/jest.config.js @@ -1,10 +1,9 @@ -/* eslint-disable @nx/enforce-module-boundaries -- out root config lives in the root */ /* eslint-disable import/no-default-export -- that's what jest likes */ -import type { Config } from 'jest'; -import { config as baseConfig } from '../../../configs/jest.config'; +import { config as baseConfig } from '../../../configs/jest.config.js'; -const config: Config = { +/** @typedef {import("jest").Config} Config */ +const config = { ...baseConfig, displayName: '@guardian/identity-auth', testEnvironment: 'jest-environment-jsdom', diff --git a/libs/@guardian/identity-auth/jest.dist.setup.js b/libs/@guardian/identity-auth/jest.dist.setup.js new file mode 100644 index 000000000..96fd6cc4b --- /dev/null +++ b/libs/@guardian/identity-auth/jest.dist.setup.js @@ -0,0 +1,6 @@ +// Mock `./src/index` with whatever `package.json` points at in dist. +// This means we can run the unit tests against `dist` instead. + +import * as dist from '.'; + +jest.mock('./src/index', () => dist); diff --git a/libs/@guardian/identity-auth/package.json b/libs/@guardian/identity-auth/package.json index 89537f5b5..693b79829 100644 --- a/libs/@guardian/identity-auth/package.json +++ b/libs/@guardian/identity-auth/package.json @@ -5,18 +5,31 @@ "description": "", "license": "Apache-2.0", "sideEffects": false, + "type": "module", + "exports": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "files": [ + "dist" + ], "scripts": { + "build": "rm -rf dist && rollup -c", "dev": "jest --watch", "fix": "pnpm lint --fix", "lint": "eslint --cache .", "test": "jest", - "verify-dist": "jest --setupFilesAfterEnv ./jest.dist.setup.ts" + "verify-dist": "jest --setupFilesAfterEnv ./jest.dist.setup.js" }, "devDependencies": { "@guardian/libs": "16.0.0", "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", "jest-fetch-mock": "3.0.3", + "rollup": "4.17.2", "ts-jest": "29.1.1", "tslib": "2.6.2", "typescript": "5.3.3" @@ -37,19 +50,14 @@ "nx": { "targets": { "build": { - "executor": "@csnx/npm-package:build", - "outputs": [ - "{options.outputPath}" + "inputs": [ + "{projectRoot}/src/**", + "{projectRoot}/package.json", + "{projectRoot}/tsconfig.json" ], - "options": { - "entry": "{projectRoot}/src/index.ts", - "tsConfig": "{projectRoot}/tsconfig.json", - "packageJson": "{projectRoot}/package.json", - "outputPath": "{workspaceRoot}/dist/{projectRoot}", - "assets": [ - "{projectRoot}/*.md" - ] - } + "outputs": [ + "{projectRoot}/dist" + ] }, "lint": { "inputs": [ diff --git a/libs/@guardian/identity-auth/rollup.config.js b/libs/@guardian/identity-auth/rollup.config.js new file mode 100644 index 000000000..1ab1d03d6 --- /dev/null +++ b/libs/@guardian/identity-auth/rollup.config.js @@ -0,0 +1 @@ +export * as default from '../../../configs/rollup.config.js'; diff --git a/libs/@guardian/identity-auth/tsconfig.spec.json b/libs/@guardian/identity-auth/tsconfig.spec.json index d42f10920..1b175b148 100644 --- a/libs/@guardian/identity-auth/tsconfig.spec.json +++ b/libs/@guardian/identity-auth/tsconfig.spec.json @@ -6,7 +6,7 @@ "types": ["jest", "node"] }, "include": [ - "jest.config.ts", + "jest.config.js", "**/*.test.ts", "**/*.spec.ts", "**/*.test.tsx", diff --git a/libs/@guardian/libs/.eslintrc.cjs b/libs/@guardian/libs/.eslintrc.cjs index 795f8bd13..3898e5d33 100644 --- a/libs/@guardian/libs/.eslintrc.cjs +++ b/libs/@guardian/libs/.eslintrc.cjs @@ -1,6 +1,11 @@ module.exports = { extends: ['../../../.eslintrc.cjs'], - ignorePatterns: ['!**/*', 'node_modules'], + ignorePatterns: [ + '!**/*', + 'node_modules', + 'jest.dist.*', // depends on build output, so don't lint it + 'dist', + ], overrides: [ { files: ['*.ts', '*.tsx'], diff --git a/libs/@guardian/libs/.lintstagedrc.js b/libs/@guardian/libs/.lintstagedrc.js index 98e6ac5d9..fbf888c04 100644 --- a/libs/@guardian/libs/.lintstagedrc.js +++ b/libs/@guardian/libs/.lintstagedrc.js @@ -1,6 +1,6 @@ -const config = require('../../../.lintstagedrc.js'); +import config from '../../../.lintstagedrc.js'; -module.exports = { +export default { 'src/logger/**/*|scripts/generateSvg.logger.subscriptions.*': 'node -r @swc-node/register scripts/generateSvg.logger.subscriptions.ts', ...config, diff --git a/libs/@guardian/libs/cypress.config.js b/libs/@guardian/libs/cypress.config.mjs similarity index 89% rename from libs/@guardian/libs/cypress.config.js rename to libs/@guardian/libs/cypress.config.mjs index 2449efa77..0bec5a8f5 100644 --- a/libs/@guardian/libs/cypress.config.js +++ b/libs/@guardian/libs/cypress.config.mjs @@ -1,6 +1,6 @@ /* eslint-disable import/no-default-export -- that's what cypress likes */ import { defineConfig } from 'cypress'; -import plugins from './cypress/plugins/index'; +import plugins from './cypress/plugins/index.mjs'; export default defineConfig({ viewportWidth: 1440, diff --git a/libs/@guardian/libs/cypress/plugins/index.js b/libs/@guardian/libs/cypress/plugins/index.mjs similarity index 100% rename from libs/@guardian/libs/cypress/plugins/index.js rename to libs/@guardian/libs/cypress/plugins/index.mjs diff --git a/libs/@guardian/libs/jest.config.ts b/libs/@guardian/libs/jest.config.js similarity index 62% rename from libs/@guardian/libs/jest.config.ts rename to libs/@guardian/libs/jest.config.js index 8bb16b257..ee0e36782 100644 --- a/libs/@guardian/libs/jest.config.ts +++ b/libs/@guardian/libs/jest.config.js @@ -1,10 +1,9 @@ -/* eslint-disable @nx/enforce-module-boundaries -- out root config lives in the root */ /* eslint-disable import/no-default-export -- that's what jest likes */ -import type { Config } from 'jest'; -import { config as baseConfig } from '../../../configs/jest.config'; +import { config as baseConfig } from '../../../configs/jest.config.js'; -const config: Config = { +/** @typedef {import("jest").Config} Config */ +const config = { ...baseConfig, displayName: '@guardian/libs', testEnvironment: './jest.testEnvironment.js', diff --git a/libs/@guardian/libs/jest.dist.config.ts b/libs/@guardian/libs/jest.dist.config.js similarity index 55% rename from libs/@guardian/libs/jest.dist.config.ts rename to libs/@guardian/libs/jest.dist.config.js index f814bf03d..e2bed9d32 100644 --- a/libs/@guardian/libs/jest.dist.config.ts +++ b/libs/@guardian/libs/jest.dist.config.js @@ -1,8 +1,12 @@ /* eslint-disable import/no-default-export -- it's what jest likes */ -import config from './jest.config'; -export default { - ...config, +import devConfig from './jest.config.js'; + +/** @typedef {import("jest").Config} Config */ +const config = { + ...devConfig, // only run tests in the src root in e2e mode testMatch: ['/src/?(*.)+(spec|test).[jt]s?(x)'], }; + +export default config; diff --git a/libs/@guardian/libs/jest.dist.setup.js b/libs/@guardian/libs/jest.dist.setup.js new file mode 100644 index 000000000..96fd6cc4b --- /dev/null +++ b/libs/@guardian/libs/jest.dist.setup.js @@ -0,0 +1,6 @@ +// Mock `./src/index` with whatever `package.json` points at in dist. +// This means we can run the unit tests against `dist` instead. + +import * as dist from '.'; + +jest.mock('./src/index', () => dist); diff --git a/libs/@guardian/libs/jest.testEnvironment.js b/libs/@guardian/libs/jest.testEnvironment.js index e91d44dbd..3fae66145 100644 --- a/libs/@guardian/libs/jest.testEnvironment.js +++ b/libs/@guardian/libs/jest.testEnvironment.js @@ -2,9 +2,9 @@ // https://stackoverflow.com/questions/74945569/cannot-access-built-in-node-js-fetch-function-from-jest-tests -import JSDOMEnvironment from 'jest-environment-jsdom'; +import { TestEnvironment } from 'jest-environment-jsdom'; -export default class FixJSDOMEnvironment extends JSDOMEnvironment { +export default class FixJSDOMEnvironment extends TestEnvironment { constructor(...args) { super(...args); this.global.fetch = fetch; diff --git a/libs/@guardian/libs/package.json b/libs/@guardian/libs/package.json index ee3f480de..5d3ac14e9 100644 --- a/libs/@guardian/libs/package.json +++ b/libs/@guardian/libs/package.json @@ -4,13 +4,25 @@ "private": false, "description": "A collection of JavaScript libraries and TypeScript types for Guardian projects", "sideEffects": false, + "type": "module", + "exports": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "files": [ + "dist" + ], "scripts": { + "build": "rm -rf dist && rollup -c", "dev": "jest --watch", "e2e": "wireit", "fix": "pnpm lint --fix", "lint": "eslint --cache .", "test": "jest", - "verify-dist": "jest -c=./jest.dist.config.ts --setupFilesAfterEnv ./jest.dist.setup.ts" + "verify-dist": "jest -c=./jest.dist.config.js --setupFilesAfterEnv ./jest.dist.setup.js" }, "devDependencies": { "@types/wcag-contrast": "3.0.3", @@ -19,6 +31,7 @@ "eslint-plugin-cypress": "2.15.1", "jest-fetch-mock": "3.0.3", "mockdate": "3.0.5", + "rollup": "4.17.2", "tslib": "2.6.2", "typescript": "5.3.3", "wcag-contrast": "3.0.0", @@ -39,19 +52,14 @@ "nx": { "targets": { "build": { - "executor": "@csnx/npm-package:build", - "outputs": [ - "{options.outputPath}" + "inputs": [ + "{projectRoot}/src/**", + "{projectRoot}/package.json", + "{projectRoot}/tsconfig.json" ], - "options": { - "entry": "{projectRoot}/src/index.ts", - "tsConfig": "{projectRoot}/tsconfig.json", - "packageJson": "{projectRoot}/package.json", - "outputPath": "{workspaceRoot}/dist/{projectRoot}", - "assets": [ - "{projectRoot}/*.md" - ] - } + "outputs": [ + "{projectRoot}/dist" + ] }, "lint": { "inputs": [ diff --git a/libs/@guardian/libs/rollup.config.js b/libs/@guardian/libs/rollup.config.js new file mode 100644 index 000000000..1ab1d03d6 --- /dev/null +++ b/libs/@guardian/libs/rollup.config.js @@ -0,0 +1 @@ +export * as default from '../../../configs/rollup.config.js'; diff --git a/libs/@guardian/libs/tsconfig.spec.json b/libs/@guardian/libs/tsconfig.spec.json index d42f10920..1b175b148 100644 --- a/libs/@guardian/libs/tsconfig.spec.json +++ b/libs/@guardian/libs/tsconfig.spec.json @@ -6,7 +6,7 @@ "types": ["jest", "node"] }, "include": [ - "jest.config.ts", + "jest.config.js", "**/*.test.ts", "**/*.spec.ts", "**/*.test.tsx", diff --git a/libs/@guardian/newsletter-types/.eslintrc.cjs b/libs/@guardian/newsletter-types/.eslintrc.cjs index 9bee1e043..54325ff0a 100644 --- a/libs/@guardian/newsletter-types/.eslintrc.cjs +++ b/libs/@guardian/newsletter-types/.eslintrc.cjs @@ -1,6 +1,11 @@ module.exports = { extends: ['../../../.eslintrc.cjs'], - ignorePatterns: ['!**/*', 'node_modules'], + ignorePatterns: [ + '!**/*', + 'node_modules', + 'jest.dist.*', // depends on build output, so don't lint it + 'dist', + ], overrides: [ { files: ['*.ts', '*.tsx'], diff --git a/libs/@guardian/newsletter-types/package.json b/libs/@guardian/newsletter-types/package.json index 445daeca6..306e73108 100644 --- a/libs/@guardian/newsletter-types/package.json +++ b/libs/@guardian/newsletter-types/package.json @@ -4,12 +4,25 @@ "private": false, "description": "A set of types describing the output of the Guardian newsletters API", "sideEffects": false, + "type": "module", + "exports": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "files": [ + "dist" + ], "scripts": { + "build": "rm -rf dist && rollup -c", "dev": "jest --watch", "fix": "pnpm lint --fix", "lint": "eslint --cache ." }, "devDependencies": { + "rollup": "4.17.2", "tslib": "2.6.2", "typescript": "5.3.3" }, @@ -28,19 +41,14 @@ "nx": { "targets": { "build": { - "executor": "@csnx/npm-package:build", - "outputs": [ - "{options.outputPath}" + "inputs": [ + "{projectRoot}/src/**", + "{projectRoot}/package.json", + "{projectRoot}/tsconfig.json" ], - "options": { - "entry": "{projectRoot}/src/index.ts", - "tsConfig": "{projectRoot}/tsconfig.json", - "packageJson": "{projectRoot}/package.json", - "outputPath": "{workspaceRoot}/dist/{projectRoot}", - "assets": [ - "{projectRoot}/*.md" - ] - } + "outputs": [ + "{projectRoot}/dist" + ] }, "lint": { "inputs": [ diff --git a/libs/@guardian/newsletter-types/rollup.config.js b/libs/@guardian/newsletter-types/rollup.config.js new file mode 100644 index 000000000..1ab1d03d6 --- /dev/null +++ b/libs/@guardian/newsletter-types/rollup.config.js @@ -0,0 +1 @@ +export * as default from '../../../configs/rollup.config.js'; diff --git a/libs/@guardian/prettier/.eslintrc.cjs b/libs/@guardian/prettier/.eslintrc.cjs index c160d51bf..4f01fa8a4 100644 --- a/libs/@guardian/prettier/.eslintrc.cjs +++ b/libs/@guardian/prettier/.eslintrc.cjs @@ -1,6 +1,10 @@ module.exports = { extends: ['../../../.eslintrc.cjs'], - ignorePatterns: ['!**/*', 'node_modules'], + ignorePatterns: [ + '!**/*', + 'node_modules', + 'jest.dist.*', // depends on build output, so don't lint it + ], overrides: [ { files: ['*.ts', '*.tsx'], diff --git a/libs/@guardian/prettier/dist.test.js b/libs/@guardian/prettier/dist.test.js deleted file mode 100644 index ba6f7cf53..000000000 --- a/libs/@guardian/prettier/dist.test.js +++ /dev/null @@ -1,8 +0,0 @@ -const bundleExports = require('../../../dist/libs/@guardian/prettier'); -const srcExports = require('.'); - -describe('The bundle', () => { - it('exports everything it should', () => { - expect(srcExports).toEqual(bundleExports); - }); -}); diff --git a/libs/@guardian/prettier/jest.config.ts b/libs/@guardian/prettier/jest.config.ts deleted file mode 100644 index 1414d0ccb..000000000 --- a/libs/@guardian/prettier/jest.config.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* eslint-disable @nx/enforce-module-boundaries -- out root config lives in the root */ -/* eslint-disable import/no-default-export -- that's what jest likes */ - -import type { Config } from 'jest'; -import { config as baseConfig } from '../../../configs/jest.config'; - -const config: Config = { - ...baseConfig, - displayName: '@guardian/source-react-components', - testEnvironment: 'node', -}; - -export default config; diff --git a/libs/@guardian/prettier/package.json b/libs/@guardian/prettier/package.json index f266d993e..26ba9776a 100644 --- a/libs/@guardian/prettier/package.json +++ b/libs/@guardian/prettier/package.json @@ -3,6 +3,9 @@ "version": "8.0.0", "description": "Prettier config for Guardian JavaScript & TypeScript projects", "main": "index.js", + "files": [ + "index.d.ts" + ], "scripts": { "fix": "pnpm lint --fix", "lint": "eslint --cache ." @@ -17,21 +20,6 @@ }, "nx": { "targets": { - "build": { - "executor": "@csnx/npm-package:build", - "outputs": [ - "{options.outputPath}" - ], - "options": { - "packageJson": "{projectRoot}/package.json", - "outputPath": "{workspaceRoot}/dist/{projectRoot}", - "assets": [ - "{projectRoot}/index.js", - "{projectRoot}/index.d.ts", - "{projectRoot}/*.md" - ] - } - }, "lint": { "inputs": [ "{projectRoot}/**", @@ -46,12 +34,6 @@ "outputs": [ "{projectRoot}" ] - }, - "verify-dist": { - "inputs": [ - "{projectRoot}/**", - "{workspaceRoot}/jest.*" - ] } } } diff --git a/libs/@guardian/source-foundations/.eslintrc.cjs b/libs/@guardian/source-foundations/.eslintrc.cjs index 794f35dc9..3653d6d3d 100644 --- a/libs/@guardian/source-foundations/.eslintrc.cjs +++ b/libs/@guardian/source-foundations/.eslintrc.cjs @@ -1,6 +1,13 @@ module.exports = { extends: ['../../../.eslintrc.cjs'], - ignorePatterns: ['!**/*', 'node_modules', '.wireit'], + ignorePatterns: [ + '!**/*', + 'node_modules', + 'jest.dist.*', // depends on build output, so don't lint it + '.wireit', + 'dist', + 'storybook-static', + ], overrides: [ { files: ['*.ts', '*.tsx'], diff --git a/libs/@guardian/source-foundations/jest.config.ts b/libs/@guardian/source-foundations/jest.config.js similarity index 70% rename from libs/@guardian/source-foundations/jest.config.ts rename to libs/@guardian/source-foundations/jest.config.js index 8b08452b0..0a6d674dd 100644 --- a/libs/@guardian/source-foundations/jest.config.ts +++ b/libs/@guardian/source-foundations/jest.config.js @@ -1,10 +1,9 @@ -/* eslint-disable @nx/enforce-module-boundaries -- out root config lives in the root */ /* eslint-disable import/no-default-export -- that's what jest likes */ -import type { Config } from 'jest'; -import { config as baseConfig } from '../../../configs/jest.config'; +import { config as baseConfig } from '../../../configs/jest.config.js'; -const config: Config = { +/** @typedef {import("jest").Config} Config */ +const config = { ...baseConfig, displayName: '@guardian/source-foundations', testEnvironment: 'node', diff --git a/libs/@guardian/source-foundations/jest.dist.setup.ts b/libs/@guardian/source-foundations/jest.dist.setup.js similarity index 61% rename from libs/@guardian/source-foundations/jest.dist.setup.ts rename to libs/@guardian/source-foundations/jest.dist.setup.js index ad9ce4156..3184b2909 100644 --- a/libs/@guardian/source-foundations/jest.dist.setup.ts +++ b/libs/@guardian/source-foundations/jest.dist.setup.js @@ -1,10 +1,7 @@ -/* eslint-disable -- this file will break unless the project is built, so let's not worry about it */ - // Mock `src/index` with whatever the dist `package.json` points at. // This means we can run `src/index.test.ts` against `dist` instead. -// @ts-ignore -import * as dist from '../../../dist/libs/@guardian/source-foundations'; +import * as dist from '.'; // Register our custom Jest matcher. import './lib/jest-matchers/toBeValidCSS'; diff --git a/libs/@guardian/source-foundations/package.json b/libs/@guardian/source-foundations/package.json index 830a5ff49..b8417a82b 100644 --- a/libs/@guardian/source-foundations/package.json +++ b/libs/@guardian/source-foundations/package.json @@ -3,14 +3,26 @@ "version": "15.0.0", "license": "Apache-2.0", "sideEffects": false, + "type": "module", + "exports": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "files": [ + "dist" + ], "scripts": { + "build": "rm -rf dist && rollup -c", "build-storybook": "wireit", "dev": "jest --watch", "fix": "pnpm lint --fix", "lint": "eslint --cache .", "storybook": "storybook dev --port 4401", "test": "jest", - "verify-dist": "jest --setupFilesAfterEnv ./jest.dist.setup.ts" + "verify-dist": "jest --setupFilesAfterEnv ./jest.dist.setup.js" }, "dependencies": { "mini-svg-data-uri": "1.4.4" @@ -21,6 +33,7 @@ "lightningcss": "1.24.0", "react": "18.2.0", "react-dom": "18.2.0", + "rollup": "4.17.2", "tslib": "2.6.2", "tsx": "4.7.1", "typescript": "5.3.3", @@ -38,19 +51,14 @@ "nx": { "targets": { "build": { - "executor": "@csnx/npm-package:build", - "outputs": [ - "{options.outputPath}" + "inputs": [ + "{projectRoot}/src/**", + "{projectRoot}/package.json", + "{projectRoot}/tsconfig.json" ], - "options": { - "entry": "{projectRoot}/src/index.ts", - "tsConfig": "{projectRoot}/tsconfig.json", - "packageJson": "{projectRoot}/package.json", - "outputPath": "{workspaceRoot}/dist/{projectRoot}", - "assets": [ - "{projectRoot}/*.md" - ] - } + "outputs": [ + "{projectRoot}/dist" + ] }, "lint": { "inputs": [ @@ -98,6 +106,10 @@ "wireit": { "build-storybook": { "command": "NODE_ENV=production storybook build --webpack-stats-json", + "//": "dependency should really be 'build' but that needs to be wireit'd first", + "dependencies": [ + "../design-tokens:build" + ], "files": [ "**/*.{ts,tsx,js,json,mdx,md}", "!storybook-static/**", diff --git a/libs/@guardian/source-foundations/rollup.config.js b/libs/@guardian/source-foundations/rollup.config.js new file mode 100644 index 000000000..1ab1d03d6 --- /dev/null +++ b/libs/@guardian/source-foundations/rollup.config.js @@ -0,0 +1 @@ +export * as default from '../../../configs/rollup.config.js'; diff --git a/libs/@guardian/source-foundations/scripts/build-type-presets.ts b/libs/@guardian/source-foundations/scripts/build-type-presets.ts index 4bc0bbea8..09ede8655 100644 --- a/libs/@guardian/source-foundations/scripts/build-type-presets.ts +++ b/libs/@guardian/source-foundations/scripts/build-type-presets.ts @@ -16,7 +16,7 @@ console.log('Building typography presets…'); const presetTotal = Object.keys(typographyPresets).length; -const outputPath = `${process.cwd()}/vendor/typography`; +const outputPath = `${process.cwd()}/src/__generated__/typography`; fs.mkdirSync(outputPath, { recursive: true }); const cssOutputPath = `${outputPath}/css.ts`; diff --git a/libs/@guardian/source-foundations/vendor/typography/css.ts b/libs/@guardian/source-foundations/src/__generated__/typography/css.ts similarity index 100% rename from libs/@guardian/source-foundations/vendor/typography/css.ts rename to libs/@guardian/source-foundations/src/__generated__/typography/css.ts diff --git a/libs/@guardian/source-foundations/vendor/typography/objects.ts b/libs/@guardian/source-foundations/src/__generated__/typography/objects.ts similarity index 100% rename from libs/@guardian/source-foundations/vendor/typography/objects.ts rename to libs/@guardian/source-foundations/src/__generated__/typography/objects.ts diff --git a/libs/@guardian/source-foundations/src/index.ts b/libs/@guardian/source-foundations/src/index.ts index 7d888637d..36342fc8c 100644 --- a/libs/@guardian/source-foundations/src/index.ts +++ b/libs/@guardian/source-foundations/src/index.ts @@ -33,8 +33,8 @@ export { export { space, remSpace } from './space/space'; // typography -export * from '../vendor/typography/css'; -export * from '../vendor/typography/objects'; +export * from './__generated__/typography/css'; +export * from './__generated__/typography/objects'; // utils export { appearance } from './utils/supports-queries'; diff --git a/libs/@guardian/source-foundations/src/tokens.test.ts b/libs/@guardian/source-foundations/src/tokens.test.ts index d308e013c..a189fea83 100644 --- a/libs/@guardian/source-foundations/src/tokens.test.ts +++ b/libs/@guardian/source-foundations/src/tokens.test.ts @@ -1,5 +1,5 @@ -import * as typePresetCss from '../vendor/typography/css'; -import * as typePresetObject from '../vendor/typography/objects'; +import * as typePresetCss from './__generated__/typography/css'; +import * as typePresetObject from './__generated__/typography/objects'; import { background, border, diff --git a/libs/@guardian/source-foundations/src/typography/stories/TypographyPresets.tsx b/libs/@guardian/source-foundations/src/typography/stories/TypographyPresets.tsx index 14fe52f4f..aa0004aa3 100644 --- a/libs/@guardian/source-foundations/src/typography/stories/TypographyPresets.tsx +++ b/libs/@guardian/source-foundations/src/typography/stories/TypographyPresets.tsx @@ -1,6 +1,6 @@ import { css } from '@emotion/react'; import { typographyPresets } from '@guardian/design-tokens'; -import * as presets from '../../../vendor/typography/css'; +import * as presets from '../../__generated__/typography/css'; import { palette } from '../../colour/palette'; import { space } from '../../space/space'; diff --git a/libs/@guardian/source-foundations/src/typography/stories/typography.mdx b/libs/@guardian/source-foundations/src/typography/stories/typography.mdx index a8b00f657..bf4035041 100644 --- a/libs/@guardian/source-foundations/src/typography/stories/typography.mdx +++ b/libs/@guardian/source-foundations/src/typography/stories/typography.mdx @@ -97,4 +97,3 @@ _Note:_ this font is not available on [theguardian.com](https://theguardian.com) ### Specimen -import {textEgyptian17} from 'libs/@guardian/source-foundations/vendor/typography/css'; diff --git a/libs/@guardian/source-foundations/tsconfig.spec.json b/libs/@guardian/source-foundations/tsconfig.spec.json index 4e7173011..914db19cb 100644 --- a/libs/@guardian/source-foundations/tsconfig.spec.json +++ b/libs/@guardian/source-foundations/tsconfig.spec.json @@ -7,7 +7,7 @@ "types": ["jest", "node"] }, "include": [ - "jest.config.ts", + "jest.config.js", "**/*.test.ts", "**/*.spec.ts", "**/*.test.tsx", diff --git a/libs/@guardian/source-react-components-development-kitchen/.eslintrc.cjs b/libs/@guardian/source-react-components-development-kitchen/.eslintrc.cjs index 0894444d4..f37db6613 100644 --- a/libs/@guardian/source-react-components-development-kitchen/.eslintrc.cjs +++ b/libs/@guardian/source-react-components-development-kitchen/.eslintrc.cjs @@ -1,6 +1,13 @@ module.exports = { extends: ['../../../.eslintrc.cjs'], - ignorePatterns: ['!**/*', 'node_modules', '.wireit'], + ignorePatterns: [ + '!**/*', + 'node_modules', + 'jest.dist.*', // depends on build output, so don't lint it + '.wireit', + 'dist', + 'storybook-static', + ], overrides: [ { files: ['*.ts', '*.tsx'], diff --git a/libs/@guardian/source-react-components-development-kitchen/jest.config.ts b/libs/@guardian/source-react-components-development-kitchen/jest.config.js similarity index 64% rename from libs/@guardian/source-react-components-development-kitchen/jest.config.ts rename to libs/@guardian/source-react-components-development-kitchen/jest.config.js index 7eb51e96a..9bedfcfa2 100644 --- a/libs/@guardian/source-react-components-development-kitchen/jest.config.ts +++ b/libs/@guardian/source-react-components-development-kitchen/jest.config.js @@ -1,10 +1,9 @@ -/* eslint-disable @nx/enforce-module-boundaries -- out root config lives in the root */ /* eslint-disable import/no-default-export -- that's what jest likes */ -import type { Config } from 'jest'; -import { config as baseConfig } from '../../../configs/jest.config'; +import { config as baseConfig } from '../../../configs/jest.config.js'; -const config: Config = { +/** @typedef {import("jest").Config} Config */ +const config = { ...baseConfig, displayName: '@guardian/source-react-components-development-kitchen', testEnvironment: 'node', diff --git a/libs/@guardian/source-react-components-development-kitchen/jest.dist.setup.js b/libs/@guardian/source-react-components-development-kitchen/jest.dist.setup.js new file mode 100644 index 000000000..2370d2e46 --- /dev/null +++ b/libs/@guardian/source-react-components-development-kitchen/jest.dist.setup.js @@ -0,0 +1,7 @@ +// Mock `src/index` with whatever the dist `package.json` points at. +// This means we can run `src/index.test.ts` against `dist` instead. + +// @ts-ignore +import * as dist from '.'; + +jest.mock('./src/index', () => dist); diff --git a/libs/@guardian/source-react-components-development-kitchen/jest.dist.setup.ts b/libs/@guardian/source-react-components-development-kitchen/jest.dist.setup.ts deleted file mode 100644 index a5f561c1a..000000000 --- a/libs/@guardian/source-react-components-development-kitchen/jest.dist.setup.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* eslint-disable -- this file will break unless the project is built, so let's not worry about it */ - -// Mock `src/index` with whatever the dist `package.json` points at. -// This means we can run `src/index.test.ts` against `dist` instead. - -// @ts-ignore -import * as dist from '../../../dist/libs/@guardian/source-react-components-development-kitchen'; - -jest.mock('./src/index', () => dist); diff --git a/libs/@guardian/source-react-components-development-kitchen/package.json b/libs/@guardian/source-react-components-development-kitchen/package.json index 3cc38acf2..9f3c763f7 100644 --- a/libs/@guardian/source-react-components-development-kitchen/package.json +++ b/libs/@guardian/source-react-components-development-kitchen/package.json @@ -2,23 +2,36 @@ "name": "@guardian/source-react-components-development-kitchen", "version": "20.0.2", "sideEffects": false, + "type": "module", + "exports": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "files": [ + "dist" + ], "scripts": { + "build": "rm -rf dist && rollup -c", "build-storybook": "wireit", "dev": "jest --watch", "fix": "pnpm lint --fix", "lint": "eslint --cache .", "storybook": "storybook dev --port 4403", "test": "jest", - "verify-dist": "jest --setupFilesAfterEnv ./jest.dist.setup.ts" + "verify-dist": "jest --setupFilesAfterEnv ./jest.dist.setup.js" }, "devDependencies": { "@babel/core": "7.24.0", "@emotion/react": "11.11.1", "@guardian/libs": "16.0.0", "@guardian/source-foundations": "14.2.2", - "@guardian/source-react-components": "23.0.0", + "@guardian/source-react-components": "23.0.1", "@types/react": "18.2.11", "react": "18.2.0", + "rollup": "4.17.2", "tslib": "2.6.2", "typescript": "5.3.3", "wireit": "0.14.4" @@ -27,12 +40,16 @@ "@emotion/react": "^11.11.1", "@guardian/libs": "^16.0.0", "@guardian/source-foundations": "^14.2.2", - "@guardian/source-react-components": "^23.0.0", + "@guardian/source-react-components": "^23.0.1", + "@types/react": "^18.2.11", "react": "^18.2.0", "tslib": "^2.6.2", "typescript": "~5.3.3" }, "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, "typescript": { "optional": true } @@ -40,19 +57,14 @@ "nx": { "targets": { "build": { - "executor": "@csnx/npm-package:build", - "outputs": [ - "{options.outputPath}" + "inputs": [ + "{projectRoot}/src/**", + "{projectRoot}/package.json", + "{projectRoot}/tsconfig.json" ], - "options": { - "entry": "{projectRoot}/src/index.ts", - "tsConfig": "{projectRoot}/tsconfig.json", - "packageJson": "{projectRoot}/package.json", - "outputPath": "{workspaceRoot}/dist/{projectRoot}", - "assets": [ - "{projectRoot}/*.md" - ] - } + "outputs": [ + "{projectRoot}/dist" + ] }, "lint": { "inputs": [ @@ -92,6 +104,7 @@ "wireit": { "build-storybook": { "command": "NODE_ENV=production storybook build --webpack-stats-json", + "dependencies": [], "files": [ "**/*.{ts,tsx,js,json,mdx,md}", "!storybook-static/**", diff --git a/libs/@guardian/source-react-components-development-kitchen/rollup.config.js b/libs/@guardian/source-react-components-development-kitchen/rollup.config.js new file mode 100644 index 000000000..1ab1d03d6 --- /dev/null +++ b/libs/@guardian/source-react-components-development-kitchen/rollup.config.js @@ -0,0 +1 @@ +export * as default from '../../../configs/rollup.config.js'; diff --git a/libs/@guardian/source-react-components-development-kitchen/tsconfig.spec.json b/libs/@guardian/source-react-components-development-kitchen/tsconfig.spec.json index 4e7173011..914db19cb 100644 --- a/libs/@guardian/source-react-components-development-kitchen/tsconfig.spec.json +++ b/libs/@guardian/source-react-components-development-kitchen/tsconfig.spec.json @@ -7,7 +7,7 @@ "types": ["jest", "node"] }, "include": [ - "jest.config.ts", + "jest.config.js", "**/*.test.ts", "**/*.spec.ts", "**/*.test.tsx", diff --git a/libs/@guardian/source-react-components/.eslintrc.cjs b/libs/@guardian/source-react-components/.eslintrc.cjs index cb03c4ffc..918c919f0 100644 --- a/libs/@guardian/source-react-components/.eslintrc.cjs +++ b/libs/@guardian/source-react-components/.eslintrc.cjs @@ -1,6 +1,12 @@ module.exports = { extends: ['../../../.eslintrc.cjs'], - ignorePatterns: ['!**/*', 'node_modules'], + ignorePatterns: [ + '!**/*', + 'node_modules', + 'jest.dist.*', // depends on build output, so don't lint it + 'dist', + 'storybook-static', + ], overrides: [ { files: ['*.ts', '*.tsx'], @@ -15,12 +21,5 @@ module.exports = { jest: true, }, }, - { - files: ['*.d.ts'], - parserOptions: { - project: ['libs/@guardian/prettier/tsconfig.json'], - }, - rules: {}, - }, ], }; diff --git a/libs/@guardian/source-react-components/jest.config.ts b/libs/@guardian/source-react-components/jest.config.js similarity index 62% rename from libs/@guardian/source-react-components/jest.config.ts rename to libs/@guardian/source-react-components/jest.config.js index 1414d0ccb..0e3cf6752 100644 --- a/libs/@guardian/source-react-components/jest.config.ts +++ b/libs/@guardian/source-react-components/jest.config.js @@ -1,10 +1,9 @@ -/* eslint-disable @nx/enforce-module-boundaries -- out root config lives in the root */ /* eslint-disable import/no-default-export -- that's what jest likes */ -import type { Config } from 'jest'; -import { config as baseConfig } from '../../../configs/jest.config'; +import { config as baseConfig } from '../../../configs/jest.config.js'; -const config: Config = { +/** @typedef {import("jest").Config} Config */ +const config = { ...baseConfig, displayName: '@guardian/source-react-components', testEnvironment: 'node', diff --git a/libs/@guardian/source-react-components/jest.dist.setup.js b/libs/@guardian/source-react-components/jest.dist.setup.js new file mode 100644 index 000000000..0df133ffc --- /dev/null +++ b/libs/@guardian/source-react-components/jest.dist.setup.js @@ -0,0 +1,6 @@ +// Mock `src/index` with whatever the dist `package.json` points at. +// This means we can run `src/index.test.ts` against `dist` instead. + +import * as dist from '.'; + +jest.mock('./src/index', () => dist); diff --git a/libs/@guardian/source-react-components/package.json b/libs/@guardian/source-react-components/package.json index 0bb8ec538..6bc7c514a 100644 --- a/libs/@guardian/source-react-components/package.json +++ b/libs/@guardian/source-react-components/package.json @@ -3,7 +3,19 @@ "version": "24.0.0", "license": "Apache-2.0", "sideEffects": false, + "type": "module", + "exports": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "files": [ + "dist" + ], "scripts": { + "build": "rm -rf dist && rollup -c", "build-storybook": "wireit", "create-icons": "ts-node scripts/create-icons", "dev": "jest --watch", @@ -11,7 +23,7 @@ "lint": "eslint --cache .", "storybook": "storybook dev --port 4402", "test": "jest", - "verify-dist": "jest --setupFilesAfterEnv ./jest.dist.setup.ts" + "verify-dist": "jest --setupFilesAfterEnv ./jest.dist.setup.js" }, "devDependencies": { "@babel/core": "7.24.0", @@ -31,6 +43,7 @@ "mkdirp": "3.0.1", "prettier": "3.2.2", "react": "18.2.0", + "rollup": "4.17.2", "ts-jest": "29.1.1", "ts-node": "10.9.2", "tslib": "2.6.2", @@ -40,11 +53,15 @@ "peerDependencies": { "@emotion/react": "^11.11.1", "@guardian/source-foundations": "^14.2.2", + "@types/react": "^18.2.11", "react": "^18.2.0", "tslib": "^2.6.2", "typescript": "~5.3.3" }, "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, "typescript": { "optional": true } @@ -52,19 +69,14 @@ "nx": { "targets": { "build": { - "executor": "@csnx/npm-package:build", - "outputs": [ - "{options.outputPath}" + "inputs": [ + "{projectRoot}/src/**", + "{projectRoot}/package.json", + "{projectRoot}/tsconfig.json" ], - "options": { - "entry": "{projectRoot}/src/index.ts", - "tsConfig": "{projectRoot}/tsconfig.json", - "packageJson": "{projectRoot}/package.json", - "outputPath": "{workspaceRoot}/dist/{projectRoot}", - "assets": [ - "{projectRoot}/*.md" - ] - } + "outputs": [ + "{projectRoot}/dist" + ] }, "lint": { "inputs": [ diff --git a/libs/@guardian/source-react-components/rollup.config.js b/libs/@guardian/source-react-components/rollup.config.js new file mode 100644 index 000000000..1ab1d03d6 --- /dev/null +++ b/libs/@guardian/source-react-components/rollup.config.js @@ -0,0 +1 @@ +export * as default from '../../../configs/rollup.config.js'; diff --git a/libs/@guardian/source-react-components/scripts/create-icons/create-icon-component.ts b/libs/@guardian/source-react-components/scripts/create-icons/create-icon-component.ts index f9955eb77..feae9be81 100644 --- a/libs/@guardian/source-react-components/scripts/create-icons/create-icon-component.ts +++ b/libs/@guardian/source-react-components/scripts/create-icons/create-icon-component.ts @@ -76,7 +76,7 @@ export const createIconComponent = async ({ import { css } from '@emotion/react'; import { iconSize, visuallyHidden } from '@guardian/source-foundations'; - import type { IconProps } from '../../src'; + import type { IconProps } from '../..'; ${variables.imports}; @@ -92,7 +92,7 @@ export const createIconComponent = async ({ import { css } from '@emotion/react'; import { iconSize, visuallyHidden } from '@guardian/source-foundations'; - import type { IconProps } from '../../src'; + import type { IconProps } from '../..'; ${variables.imports}; diff --git a/libs/@guardian/source-react-components/scripts/create-icons/index.ts b/libs/@guardian/source-react-components/scripts/create-icons/index.ts index 6275ff9f6..3cff1caf0 100644 --- a/libs/@guardian/source-react-components/scripts/create-icons/index.ts +++ b/libs/@guardian/source-react-components/scripts/create-icons/index.ts @@ -24,7 +24,14 @@ const SPECIAL_CASES = { isWide: ['direct-debit-wide'], }; -const VENDOR_ICON_PATH = path.resolve(__dirname, '..', '..', 'vendor', 'icons'); +const VENDOR_ICON_PATH = path.resolve( + __dirname, + '..', + '..', + 'src', + '__generated__', + 'icons', +); const warning = [ '// DO NOT EDIT', diff --git a/libs/@guardian/source-react-components/scripts/vendor/icons/README.md b/libs/@guardian/source-react-components/scripts/vendor/icons/README.md deleted file mode 100644 index 858853e77..000000000 --- a/libs/@guardian/source-react-components/scripts/vendor/icons/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# Icons - -**The contents of this directory are created automatically. Any edits will be -overwritten sooner or later.** - -The SVGs for these icons are automatically pulled in from the [source design file in -Figma](https://www.figma.com/file/Ai7AELHC6KCz38qKZkvuHo/%E2%97%90-Icons?node-id=55%3A2) -using the fetch-icons script via the Figma API: - -```sh -yarn workspace @guardian/source-react-components create-icons -``` diff --git a/libs/@guardian/source-react-components/vendor/icons/README.md b/libs/@guardian/source-react-components/src/__generated__/icons/README.md similarity index 100% rename from libs/@guardian/source-react-components/vendor/icons/README.md rename to libs/@guardian/source-react-components/src/__generated__/icons/README.md diff --git a/libs/@guardian/source-react-components/vendor/icons/SvgAlertPhone.tsx b/libs/@guardian/source-react-components/src/__generated__/icons/SvgAlertPhone.tsx similarity index 96% rename from libs/@guardian/source-react-components/vendor/icons/SvgAlertPhone.tsx rename to libs/@guardian/source-react-components/src/__generated__/icons/SvgAlertPhone.tsx index 1b2dfbc40..bfbd88bc0 100644 --- a/libs/@guardian/source-react-components/vendor/icons/SvgAlertPhone.tsx +++ b/libs/@guardian/source-react-components/src/__generated__/icons/SvgAlertPhone.tsx @@ -2,7 +2,7 @@ // this file is auto-generated by packages/@guardian/source-react-components/scripts/create-icons/index.ts import { css } from '@emotion/react'; import { iconSize, visuallyHidden } from '@guardian/source-foundations'; -import type { IconProps } from '../../src'; +import type { IconProps } from '../..'; const Svg = ({ size, theme }: IconProps) => ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( { - it('exports everything it should', () => { - expect(srcExports).toEqual(bundleExports); - }); -}); diff --git a/libs/@guardian/tsconfig/jest.config.ts b/libs/@guardian/tsconfig/jest.config.ts deleted file mode 100644 index 38f95c774..000000000 --- a/libs/@guardian/tsconfig/jest.config.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* eslint-disable @nx/enforce-module-boundaries -- out root config lives in the root */ -/* eslint-disable import/no-default-export -- that's what jest likes */ - -import type { Config } from 'jest'; -import { config as baseConfig } from '../../../configs/jest.config'; - -const config: Config = { - ...baseConfig, - displayName: '@guardian/tsconfig', - transform: { - '^.+\\.[tj]sx?$': 'ts-jest', - }, -}; - -export default config; diff --git a/libs/@guardian/tsconfig/package.json b/libs/@guardian/tsconfig/package.json index 8ad0cdb2a..f147832c3 100644 --- a/libs/@guardian/tsconfig/package.json +++ b/libs/@guardian/tsconfig/package.json @@ -5,25 +5,10 @@ "main": "tsconfig.json", "scripts": { "fix": "pnpm lint --fix", - "lint": "eslint --cache .", - "verify-dist": "jest" + "lint": "eslint --cache ." }, "nx": { "targets": { - "build": { - "executor": "@csnx/npm-package:build", - "outputs": [ - "{options.outputPath}" - ], - "options": { - "outputPath": "{workspaceRoot}/dist/{projectRoot}", - "assets": [ - "{projectRoot}/tsconfig.json", - "{projectRoot}/*.md" - ], - "packageJson": "{projectRoot}/package.json" - } - }, "lint": { "inputs": [ "{projectRoot}/**", @@ -38,12 +23,6 @@ "outputs": [ "{projectRoot}" ] - }, - "verify-dist": { - "inputs": [ - "{projectRoot}/**", - "{workspaceRoot}/jest.*" - ] } } } diff --git a/nx.json b/nx.json index 0598f5504..1f514416f 100644 --- a/nx.json +++ b/nx.json @@ -15,6 +15,12 @@ "test": { "dependsOn": ["^build"] }, + "lint": { + "dependsOn": ["^build"] + }, + "fix": { + "dependsOn": ["^build"] + }, "verify-dist": { "dependsOn": ["build", "^build"] } @@ -54,7 +60,8 @@ "{workspaceRoot}/**/tsconfig*.json", "{workspaceRoot}/.storybook/main.js", "{workspaceRoot}/.nvmrc", - "{workspaceRoot}/.eslintrc.*" + "{workspaceRoot}/.eslintrc.*", + "{workspaceRoot}/configs/rollup.config.js" ], "internalTools": [ "{workspaceRoot}/libs/@guardian/eslint-*/**/*", diff --git a/package.json b/package.json index a773c5fb1..c3dd15b88 100644 --- a/package.json +++ b/package.json @@ -2,6 +2,7 @@ "name": "@guardian/csnx", "version": "0.1.0", "private": "true", + "type": "module", "scripts": { "build": "./tools/scripts/use-make-instead", "prepare": "husky", @@ -60,7 +61,6 @@ "sort-package-json": "2.10.0", "storybook": "8.0.5", "ts-jest": "29.1.1", - "tsconfig-paths-webpack-plugin": "4.1.0", "typescript": "5.3.3", "update-section": "0.3.3", "webpack": "5.91.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6595c3e94..e264c0355 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -170,9 +170,6 @@ importers: ts-jest: specifier: 29.1.1 version: 29.1.1(@babel/core@7.24.0)(esbuild@0.20.2)(jest@29.7.0)(typescript@5.3.3) - tsconfig-paths-webpack-plugin: - specifier: 4.1.0 - version: 4.1.0 typescript: specifier: 5.3.3 version: 5.3.3 @@ -191,6 +188,9 @@ importers: '@astrojs/svelte': specifier: 5.3.0 version: 5.3.0(astro@4.5.16)(svelte@4.2.12)(typescript@5.3.3)(vite@5.2.11) + '@guardian/libs': + specifier: workspace:* + version: link:../../libs/@guardian/libs astro: specifier: 4.5.16 version: 4.5.16(@types/node@18.19.3)(typescript@5.3.3) @@ -210,8 +210,35 @@ importers: specifier: 0.14.4 version: 0.14.4 + configs: + devDependencies: + '@rollup/plugin-commonjs': + specifier: 25.0.7 + version: 25.0.7(rollup@4.17.2) + '@rollup/plugin-json': + specifier: 6.1.0 + version: 6.1.0(rollup@4.17.2) + '@rollup/plugin-node-resolve': + specifier: 15.2.3 + version: 15.2.3(rollup@4.17.2) + rollup: + specifier: 4.17.2 + version: 4.17.2 + rollup-plugin-dts: + specifier: 6.1.0 + version: 6.1.0(rollup@4.17.2)(typescript@5.3.3) + rollup-plugin-esbuild: + specifier: 6.1.1 + version: 6.1.1(esbuild@0.20.2)(rollup@4.17.2) + rollup-plugin-node-externals: + specifier: 7.1.2 + version: 7.1.2(rollup@4.17.2) + libs/@guardian/ab-core: devDependencies: + rollup: + specifier: 4.17.2 + version: 4.17.2 tslib: specifier: 2.6.2 version: 2.6.2 @@ -236,6 +263,9 @@ importers: react-dom: specifier: 18.2.0 version: 18.2.0(react@18.2.0) + rollup: + specifier: 4.17.2 + version: 4.17.2 tslib: specifier: 2.6.2 version: 2.6.2 @@ -284,6 +314,9 @@ importers: '@guardian/libs': specifier: 16.0.0 version: 16.0.0(tslib@2.6.2)(typescript@5.3.3) + rollup: + specifier: 4.17.2 + version: 4.17.2 tslib: specifier: 2.6.2 version: 2.6.2 @@ -387,6 +420,9 @@ importers: eslint: specifier: 8.56.0 version: 8.56.0 + rollup: + specifier: 4.17.2 + version: 4.17.2 tslib: specifier: 2.6.2 version: 2.6.2 @@ -430,6 +466,9 @@ importers: react: specifier: 18.2.0 version: 18.2.0 + rollup: + specifier: 4.17.2 + version: 4.17.2 tslib: specifier: 2.6.2 version: 2.6.2 @@ -451,6 +490,9 @@ importers: jest-fetch-mock: specifier: 3.0.3 version: 3.0.3 + rollup: + specifier: 4.17.2 + version: 4.17.2 ts-jest: specifier: 29.1.1 version: 29.1.1(@babel/core@7.24.0)(esbuild@0.20.2)(jest@29.7.0)(typescript@5.3.3) @@ -472,6 +514,9 @@ importers: jest-fetch-mock: specifier: 3.0.3 version: 3.0.3 + rollup: + specifier: 4.17.2 + version: 4.17.2 tslib: specifier: 2.6.2 version: 2.6.2 @@ -499,6 +544,9 @@ importers: mockdate: specifier: 3.0.5 version: 3.0.5 + rollup: + specifier: 4.17.2 + version: 4.17.2 tslib: specifier: 2.6.2 version: 2.6.2 @@ -514,6 +562,9 @@ importers: libs/@guardian/newsletter-types: devDependencies: + rollup: + specifier: 4.17.2 + version: 4.17.2 tslib: specifier: 2.6.2 version: 2.6.2 @@ -551,6 +602,9 @@ importers: react-dom: specifier: 18.2.0 version: 18.2.0(react@18.2.0) + rollup: + specifier: 4.17.2 + version: 4.17.2 tslib: specifier: 2.6.2 version: 2.6.2 @@ -617,6 +671,9 @@ importers: react: specifier: 18.2.0 version: 18.2.0 + rollup: + specifier: 4.17.2 + version: 4.17.2 ts-jest: specifier: 29.1.1 version: 29.1.1(@babel/core@7.24.0)(esbuild@0.20.2)(jest@29.7.0)(typescript@5.3.3) @@ -648,14 +705,17 @@ importers: specifier: 14.2.2 version: 14.2.2(tslib@2.6.2)(typescript@5.3.3) '@guardian/source-react-components': - specifier: 23.0.0 - version: 23.0.0(@emotion/react@11.11.1)(@guardian/source-foundations@14.2.2)(react@18.2.0)(tslib@2.6.2)(typescript@5.3.3) + specifier: 23.0.1 + version: 23.0.1(@emotion/react@11.11.1)(@guardian/source-foundations@14.2.2)(react@18.2.0)(tslib@2.6.2)(typescript@5.3.3) '@types/react': specifier: 18.2.11 version: 18.2.11 react: specifier: 18.2.0 version: 18.2.0 + rollup: + specifier: 4.17.2 + version: 4.17.2 tslib: specifier: 2.6.2 version: 2.6.2 @@ -668,51 +728,6 @@ importers: libs/@guardian/tsconfig: {} - tools/nx-plugins/npm-package: - dependencies: - '@guardian/libs': - specifier: workspace:* - version: link:../../../libs/@guardian/libs - '@rollup/plugin-commonjs': - specifier: 25.0.7 - version: 25.0.7(rollup@4.17.2) - '@rollup/plugin-json': - specifier: 6.1.0 - version: 6.1.0(rollup@4.17.2) - '@rollup/plugin-node-resolve': - specifier: 15.2.3 - version: 15.2.3(rollup@4.17.2) - cpy: - specifier: 10.1.0 - version: 10.1.0 - execa: - specifier: 7.1.1 - version: 7.1.1 - read-pkg: - specifier: 9.0.1 - version: 9.0.1 - rollup: - specifier: 4.17.2 - version: 4.17.2 - rollup-plugin-ts: - specifier: 3.4.5 - version: 3.4.5(@babel/core@7.24.0)(@babel/preset-env@7.24.0)(@babel/preset-typescript@7.24.1)(@swc/core@1.4.0)(@swc/helpers@0.5.3)(rollup@4.17.2)(typescript@5.3.3) - sort-package-json: - specifier: 2.10.0 - version: 2.10.0 - tslib: - specifier: 2.6.2 - version: 2.6.2 - type-fest: - specifier: 4.18.2 - version: 4.18.2 - typescript: - specifier: 5.3.3 - version: 5.3.3 - write-pkg: - specifier: 7.0.0 - version: 7.0.0 - packages: /@aashutoshrathi/word-wrap@1.2.6: @@ -733,6 +748,7 @@ packages: dependencies: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 + dev: true /@assemblyscript/loader@0.10.1: resolution: {integrity: sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==} @@ -878,14 +894,17 @@ packages: dependencies: '@babel/highlight': 7.24.2 picocolors: 1.0.0 + dev: true /@babel/compat-data@7.23.5: resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} engines: {node: '>=6.9.0'} + dev: true /@babel/compat-data@7.24.4: resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==} engines: {node: '>=6.9.0'} + dev: true /@babel/core@7.24.0: resolution: {integrity: sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==} @@ -908,6 +927,7 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color + dev: true /@babel/core@7.24.4: resolution: {integrity: sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==} @@ -917,7 +937,7 @@ packages: '@babel/code-frame': 7.24.2 '@babel/generator': 7.24.4 '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.4) + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4) '@babel/helpers': 7.24.4 '@babel/parser': 7.24.4 '@babel/template': 7.24.0 @@ -932,6 +952,29 @@ packages: - supports-color dev: true + /@babel/core@7.24.5: + resolution: {integrity: sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) + '@babel/helpers': 7.24.5 + '@babel/parser': 7.24.5 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.5 + '@babel/types': 7.24.5 + convert-source-map: 2.0.0 + debug: 4.3.4(supports-color@8.1.1) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/generator@7.24.4: resolution: {integrity: sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==} engines: {node: '>=6.9.0'} @@ -940,6 +983,7 @@ packages: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 + dev: true /@babel/generator@7.24.5: resolution: {integrity: sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==} @@ -955,13 +999,15 @@ packages: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.5 + '@babel/types': 7.24.0 + dev: true /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.24.5 + dev: true /@babel/helper-compilation-targets@7.23.6: resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} @@ -972,6 +1018,25 @@ packages: browserslist: 4.23.0 lru-cache: 5.1.1 semver: 6.3.1 + dev: true + + /@babel/helper-create-class-features-plugin@7.24.0(@babel/core@7.24.0): + resolution: {integrity: sha512-QAH+vfvts51BCsNZ2PhY6HAggnlS6omLLFTsIpeqZk/MmJ6cW7tgz5yRv0fMJThcr6FmbMrENh1RgrWPTYA76g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.24.5 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.24.5 + semver: 6.3.1 + dev: true /@babel/helper-create-class-features-plugin@7.24.5(@babel/core@7.24.0): resolution: {integrity: sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g==} @@ -989,6 +1054,7 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.24.5 semver: 6.3.1 + dev: true /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.0): resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} @@ -1000,6 +1066,7 @@ packages: '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.2 semver: 6.3.1 + dev: true /@babel/helper-define-polyfill-provider@0.5.0(@babel/core@7.24.0): resolution: {integrity: sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==} @@ -1014,6 +1081,7 @@ packages: resolve: 1.22.8 transitivePeerDependencies: - supports-color + dev: true /@babel/helper-define-polyfill-provider@0.6.0(@babel/core@7.24.0): resolution: {integrity: sha512-efwOM90nCG6YeT8o3PCyBVSxRfmILxCNL+TNI8CGQl7a62M0Wd9VkV+XHwIlkOz1r4b+lxu6gBjdWiOMdUCrCQ==} @@ -1028,6 +1096,7 @@ packages: resolve: 1.22.8 transitivePeerDependencies: - supports-color + dev: true /@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.0): resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} @@ -1047,44 +1116,57 @@ packages: /@babel/helper-environment-visitor@7.22.20: resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} engines: {node: '>=6.9.0'} + dev: true /@babel/helper-function-name@7.23.0: resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.24.0 - '@babel/types': 7.24.0 + '@babel/types': 7.24.5 + dev: true /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.24.5 + dev: true + + /@babel/helper-member-expression-to-functions@7.23.0: + resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.5 + dev: true /@babel/helper-member-expression-to-functions@7.24.5: resolution: {integrity: sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.24.5 + dev: true /@babel/helper-module-imports@7.21.4: resolution: {integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.5 + '@babel/types': 7.24.0 dev: true /@babel/helper-module-imports@7.22.15: resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.5 + '@babel/types': 7.24.0 + dev: true /@babel/helper-module-imports@7.24.3: resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.24.5 + dev: true /@babel/helper-module-transforms@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} @@ -1098,6 +1180,21 @@ packages: '@babel/helper-simple-access': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.20 + dev: true + + /@babel/helper-module-transforms@7.23.3(@babel/core@7.24.4): + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.24.5 + '@babel/helper-validator-identifier': 7.22.20 + dev: true /@babel/helper-module-transforms@7.24.5(@babel/core@7.24.0): resolution: {integrity: sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==} @@ -1111,14 +1208,15 @@ packages: '@babel/helper-simple-access': 7.24.5 '@babel/helper-split-export-declaration': 7.24.5 '@babel/helper-validator-identifier': 7.24.5 + dev: true - /@babel/helper-module-transforms@7.24.5(@babel/core@7.24.4): + /@babel/helper-module-transforms@7.24.5(@babel/core@7.24.5): resolution: {integrity: sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.4 + '@babel/core': 7.24.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-module-imports': 7.24.3 '@babel/helper-simple-access': 7.24.5 @@ -1131,14 +1229,17 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.24.5 + dev: true /@babel/helper-plugin-utils@7.24.0: resolution: {integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==} engines: {node: '>=6.9.0'} + dev: true /@babel/helper-plugin-utils@7.24.5: resolution: {integrity: sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==} engines: {node: '>=6.9.0'} + dev: true /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.24.0): resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} @@ -1150,6 +1251,19 @@ packages: '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-wrap-function': 7.22.20 + dev: true + + /@babel/helper-replace-supers@7.22.20(@babel/core@7.24.0): + resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + dev: true /@babel/helper-replace-supers@7.24.1(@babel/core@7.24.0): resolution: {integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==} @@ -1161,56 +1275,67 @@ packages: '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-member-expression-to-functions': 7.24.5 '@babel/helper-optimise-call-expression': 7.22.5 + dev: true /@babel/helper-simple-access@7.22.5: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.24.0 + dev: true /@babel/helper-simple-access@7.24.5: resolution: {integrity: sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.24.5 + dev: true /@babel/helper-skip-transparent-expression-wrappers@7.22.5: resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.24.5 + dev: true /@babel/helper-split-export-declaration@7.22.6: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.24.0 + dev: true /@babel/helper-split-export-declaration@7.24.5: resolution: {integrity: sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.24.5 + dev: true /@babel/helper-string-parser@7.23.4: resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} engines: {node: '>=6.9.0'} + dev: true /@babel/helper-string-parser@7.24.1: resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} engines: {node: '>=6.9.0'} + dev: true /@babel/helper-validator-identifier@7.22.20: resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} + dev: true /@babel/helper-validator-identifier@7.24.5: resolution: {integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==} engines: {node: '>=6.9.0'} + dev: true /@babel/helper-validator-option@7.23.5: resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} engines: {node: '>=6.9.0'} + dev: true /@babel/helper-wrap-function@7.22.20: resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} @@ -1219,6 +1344,7 @@ packages: '@babel/helper-function-name': 7.23.0 '@babel/template': 7.24.0 '@babel/types': 7.24.5 + dev: true /@babel/helpers@7.24.4: resolution: {integrity: sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==} @@ -1229,22 +1355,35 @@ packages: '@babel/types': 7.24.0 transitivePeerDependencies: - supports-color + dev: true + + /@babel/helpers@7.24.5: + resolution: {integrity: sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.5 + '@babel/types': 7.24.5 + transitivePeerDependencies: + - supports-color + dev: true /@babel/highlight@7.24.2: resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.24.5 + '@babel/helper-validator-identifier': 7.22.20 chalk: 2.4.2 js-tokens: 4.0.0 picocolors: 1.0.0 + dev: true /@babel/parser@7.23.5: resolution: {integrity: sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.23.5 + '@babel/types': 7.24.0 dev: true /@babel/parser@7.24.0: @@ -1252,7 +1391,7 @@ packages: engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.23.5 + '@babel/types': 7.24.0 dev: true /@babel/parser@7.24.4: @@ -1261,6 +1400,7 @@ packages: hasBin: true dependencies: '@babel/types': 7.24.0 + dev: true /@babel/parser@7.24.5: resolution: {integrity: sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==} @@ -1278,6 +1418,7 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==} @@ -1289,6 +1430,7 @@ packages: '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.24.0) + dev: true /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.7(@babel/core@7.24.0): resolution: {integrity: sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==} @@ -1299,6 +1441,7 @@ packages: '@babel/core': 7.24.0 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-proposal-decorators@7.24.1(@babel/core@7.24.0): resolution: {integrity: sha512-zPEvzFijn+hRvJuX2Vu3KbEBN39LN3f7tW3MQO2LsIs57B26KU+kUc82BdAktS1VCM6libzh45eKGI65lg0cpA==} @@ -1319,6 +1462,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 + dev: true /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.0): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} @@ -1327,6 +1471,16 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.5): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.0): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} @@ -1337,6 +1491,15 @@ packages: '@babel/helper-plugin-utils': 7.24.5 dev: true + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.5): + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + dev: true + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.0): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: @@ -1344,6 +1507,16 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.5): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.0): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} @@ -1353,6 +1526,7 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-syntax-decorators@7.24.1(@babel/core@7.24.0): resolution: {integrity: sha512-05RJdO/cCrtVWuAaSn1tS3bH8jbsJa/Y1uD186u6J4C/1mnHFxseeuWpsqr9anvo7TUulev7tm7GDwRV+VuhDw==} @@ -1371,6 +1545,7 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.0): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} @@ -1379,6 +1554,7 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-syntax-flow@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==} @@ -1398,6 +1574,7 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==} @@ -1407,6 +1584,7 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.0): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} @@ -1415,6 +1593,16 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.5): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.0): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} @@ -1423,18 +1611,29 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 + dev: true - /@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.0): - resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.5): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.24.0): + resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.5 + dev: true - /@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.4): - resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} + /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.24.4): + resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1443,6 +1642,16 @@ packages: '@babel/helper-plugin-utils': 7.24.5 dev: true + /@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.5 + dev: true + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.0): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: @@ -1450,6 +1659,16 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.5): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.0): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} @@ -1458,6 +1677,16 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.5): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.0): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} @@ -1466,6 +1695,16 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.5): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.0): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} @@ -1474,6 +1713,16 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.5): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.0): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} @@ -1482,6 +1731,16 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.5): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.0): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} @@ -1490,6 +1749,16 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.5): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.0): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} @@ -1499,6 +1768,7 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.0): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} @@ -1508,6 +1778,17 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.5): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.0): resolution: {integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==} @@ -1517,6 +1798,7 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.5 + dev: true /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.0): resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} @@ -1527,6 +1809,7 @@ packages: '@babel/core': 7.24.0 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==} @@ -1536,6 +1819,7 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-transform-async-generator-functions@7.23.9(@babel/core@7.24.0): resolution: {integrity: sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==} @@ -1548,6 +1832,7 @@ packages: '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.0) '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.0) + dev: true /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==} @@ -1559,6 +1844,7 @@ packages: '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.0) + dev: true /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==} @@ -1568,6 +1854,7 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.24.0): resolution: {integrity: sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==} @@ -1577,6 +1864,7 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==} @@ -1585,8 +1873,9 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.0) + '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.24.0) '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.24.0): resolution: {integrity: sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==} @@ -1606,9 +1895,10 @@ packages: '@babel/core': ^7.12.0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.0) + '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.24.0) '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.0) + dev: true /@babel/plugin-transform-classes@7.23.8(@babel/core@7.24.0): resolution: {integrity: sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==} @@ -1622,9 +1912,10 @@ packages: '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.0) - '@babel/helper-split-export-declaration': 7.24.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.24.0) + '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 + dev: true /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==} @@ -1635,6 +1926,7 @@ packages: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 '@babel/template': 7.24.0 + dev: true /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==} @@ -1644,6 +1936,7 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==} @@ -1654,6 +1947,7 @@ packages: '@babel/core': 7.24.0 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==} @@ -1663,6 +1957,7 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-transform-dynamic-import@7.23.4(@babel/core@7.24.0): resolution: {integrity: sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==} @@ -1673,6 +1968,7 @@ packages: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.0) + dev: true /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==} @@ -1683,6 +1979,7 @@ packages: '@babel/core': 7.24.0 '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-transform-export-namespace-from@7.23.4(@babel/core@7.24.0): resolution: {integrity: sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==} @@ -1693,6 +1990,7 @@ packages: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.0) + dev: true /@babel/plugin-transform-flow-strip-types@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==} @@ -1714,6 +2012,7 @@ packages: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + dev: true /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==} @@ -1725,6 +2024,7 @@ packages: '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-function-name': 7.23.0 '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-transform-json-strings@7.23.4(@babel/core@7.24.0): resolution: {integrity: sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==} @@ -1735,6 +2035,7 @@ packages: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.0) + dev: true /@babel/plugin-transform-literals@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==} @@ -1744,6 +2045,7 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.24.0): resolution: {integrity: sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==} @@ -1754,6 +2056,7 @@ packages: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.0) + dev: true /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==} @@ -1763,6 +2066,7 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==} @@ -1771,8 +2075,9 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.0) + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.0) '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} @@ -1781,9 +2086,10 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.0) + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.0) '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-simple-access': 7.24.5 + '@babel/helper-simple-access': 7.22.5 + dev: true /@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.0): resolution: {integrity: sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==} @@ -1795,6 +2101,7 @@ packages: '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.0) '@babel/helper-plugin-utils': 7.24.5 '@babel/helper-simple-access': 7.24.5 + dev: true /@babel/plugin-transform-modules-systemjs@7.23.9(@babel/core@7.24.0): resolution: {integrity: sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==} @@ -1804,9 +2111,10 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.0) + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.0) '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-validator-identifier': 7.22.20 + dev: true /@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==} @@ -1815,8 +2123,9 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.0) + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.0) '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.24.0): resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} @@ -1827,6 +2136,7 @@ packages: '@babel/core': 7.24.0 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-transform-new-target@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==} @@ -1836,6 +2146,7 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.24.0): resolution: {integrity: sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==} @@ -1846,6 +2157,7 @@ packages: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.0) + dev: true /@babel/plugin-transform-numeric-separator@7.23.4(@babel/core@7.24.0): resolution: {integrity: sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==} @@ -1856,6 +2168,7 @@ packages: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.0) + dev: true /@babel/plugin-transform-object-rest-spread@7.24.0(@babel/core@7.24.0): resolution: {integrity: sha512-y/yKMm7buHpFFXfxVFS4Vk1ToRJDilIa6fKRioB9Vjichv58TDGXTvqV0dN7plobAmTW5eSEGXDngE+Mm+uO+w==} @@ -1869,6 +2182,7 @@ packages: '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.0) '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.24.0) + dev: true /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==} @@ -1878,7 +2192,8 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.0) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.24.0) + dev: true /@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.24.0): resolution: {integrity: sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==} @@ -1889,6 +2204,7 @@ packages: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.0) + dev: true /@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.24.0): resolution: {integrity: sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==} @@ -1900,6 +2216,7 @@ packages: '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.0) + dev: true /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==} @@ -1909,6 +2226,7 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==} @@ -1917,8 +2235,9 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.0 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.0) + '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.24.0) '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.24.0): resolution: {integrity: sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==} @@ -1928,9 +2247,10 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.0) + '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.24.0) '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.0) + dev: true /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==} @@ -1940,6 +2260,7 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-transform-react-display-name@7.24.1(@babel/core@7.24.0): resolution: {integrity: sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw==} @@ -1969,10 +2290,10 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-module-imports': 7.24.3 + '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.0) - '@babel/types': 7.24.5 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.24.0) + '@babel/types': 7.24.0 dev: true /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.24.4): @@ -1983,10 +2304,10 @@ packages: dependencies: '@babel/core': 7.24.4 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-module-imports': 7.24.3 + '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.4) - '@babel/types': 7.24.5 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.24.4) + '@babel/types': 7.24.0 dev: true /@babel/plugin-transform-react-pure-annotations@7.24.1(@babel/core@7.24.0): @@ -2009,6 +2330,7 @@ packages: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 regenerator-transform: 0.15.2 + dev: true /@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==} @@ -2018,6 +2340,7 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-transform-runtime@7.24.3(@babel/core@7.24.0): resolution: {integrity: sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ==} @@ -2044,6 +2367,7 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-transform-spread@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==} @@ -2054,6 +2378,7 @@ packages: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + dev: true /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==} @@ -2063,6 +2388,7 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==} @@ -2072,6 +2398,7 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==} @@ -2081,6 +2408,7 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-transform-typescript@7.24.5(@babel/core@7.24.0): resolution: {integrity: sha512-E0VWu/hk83BIFUWnsKZ4D81KXjN5L3MobvevOHErASk9IPwKHOkTgvqzvNo1yP/ePJWqqK2SpUR5z+KQbl6NVw==} @@ -2093,6 +2421,7 @@ packages: '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.0) '@babel/helper-plugin-utils': 7.24.5 '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.0) + dev: true /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==} @@ -2102,6 +2431,7 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==} @@ -2112,6 +2442,7 @@ packages: '@babel/core': 7.24.0 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==} @@ -2122,6 +2453,7 @@ packages: '@babel/core': 7.24.0 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==} @@ -2132,6 +2464,7 @@ packages: '@babel/core': 7.24.0 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) '@babel/helper-plugin-utils': 7.24.0 + dev: true /@babel/preset-env@7.24.0(@babel/core@7.24.0): resolution: {integrity: sha512-ZxPEzV9IgvGn73iK0E6VB9/95Nd7aMFpbE0l8KQFDG70cOV9IxRP7Y2FUPmlK0v6ImlLqYX50iuZ3ZTVhOF2lA==} @@ -2222,6 +2555,7 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color + dev: true /@babel/preset-flow@7.24.0(@babel/core@7.24.0): resolution: {integrity: sha512-cum/nSi82cDaSJ21I4PgLTVlj0OXovFk6GRguJYe/IKg6y6JHLTbJhybtX4k35WT9wdeJfEVjycTixMhBHd0Dg==} @@ -2242,8 +2576,9 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.24.0 - '@babel/types': 7.24.5 + '@babel/types': 7.24.0 esutils: 2.0.3 + dev: true /@babel/preset-react@7.24.1(@babel/core@7.24.0): resolution: {integrity: sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA==} @@ -2272,6 +2607,7 @@ packages: '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.0) '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.0) '@babel/plugin-transform-typescript': 7.24.5(@babel/core@7.24.0) + dev: true /@babel/register@7.23.7(@babel/core@7.24.0): resolution: {integrity: sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ==} @@ -2289,6 +2625,7 @@ packages: /@babel/regjsgen@0.8.0: resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} + dev: true /@babel/runtime@7.21.5: resolution: {integrity: sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==} @@ -2316,6 +2653,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.1 + dev: true /@babel/template@7.24.0: resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} @@ -2324,6 +2662,7 @@ packages: '@babel/code-frame': 7.24.2 '@babel/parser': 7.24.4 '@babel/types': 7.24.0 + dev: true /@babel/traverse@7.24.1: resolution: {integrity: sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==} @@ -2336,11 +2675,12 @@ packages: '@babel/helper-hoist-variables': 7.22.5 '@babel/helper-split-export-declaration': 7.24.5 '@babel/parser': 7.24.4 - '@babel/types': 7.24.0 + '@babel/types': 7.24.5 debug: 4.3.4(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color + dev: true /@babel/traverse@7.24.5: resolution: {integrity: sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==} @@ -2364,8 +2704,8 @@ packages: resolution: {integrity: sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-string-parser': 7.24.1 - '@babel/helper-validator-identifier': 7.24.5 + '@babel/helper-string-parser': 7.23.4 + '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 dev: true @@ -2376,6 +2716,7 @@ packages: '@babel/helper-string-parser': 7.23.4 '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 + dev: true /@babel/types@7.24.5: resolution: {integrity: sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==} @@ -2384,6 +2725,7 @@ packages: '@babel/helper-string-parser': 7.24.1 '@babel/helper-validator-identifier': 7.24.5 to-fast-properties: 2.0.0 + dev: true /@base2/pretty-print-object@1.0.1: resolution: {integrity: sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==} @@ -3321,8 +3663,8 @@ packages: typescript: 5.3.3 dev: true - /@guardian/source-react-components@23.0.0(@emotion/react@11.11.1)(@guardian/source-foundations@14.2.2)(react@18.2.0)(tslib@2.6.2)(typescript@5.3.3): - resolution: {integrity: sha512-jBa9fsiG+V4DLfQwmPFy8sleJCDOYP5A1X0SeIPrPhQPDGXBAuwl9qNJMlR7N0MHCv7z1OchgDlHDQUf9S+Qlw==} + /@guardian/source-react-components@23.0.1(@emotion/react@11.11.1)(@guardian/source-foundations@14.2.2)(react@18.2.0)(tslib@2.6.2)(typescript@5.3.3): + resolution: {integrity: sha512-gBxO7c24VZsYBUPXy507LWwNY1xxnh4VwCDibTK3a2AJat9D6+BTEmNaWD5e5S8pzmr3RY6hSrePGanw8bPYyA==} peerDependencies: '@emotion/react': ^11.11.1 '@guardian/source-foundations': ^14.2.2 @@ -3418,7 +3760,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@18.19.3)(ts-node@10.9.2) + jest-config: 29.7.0(@types/node@18.19.3) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -3649,14 +3991,17 @@ packages: '@jridgewell/set-array': 1.2.1 '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.25 + dev: true /@jridgewell/resolve-uri@3.1.2: resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} + dev: true /@jridgewell/set-array@1.2.1: resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} + dev: true /@jridgewell/source-map@0.3.6: resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} @@ -3667,6 +4012,7 @@ packages: /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true /@jridgewell/trace-mapping@0.3.22: resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==} @@ -3680,6 +4026,7 @@ packages: dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.4.15 + dev: true /@jridgewell/trace-mapping@0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} @@ -3735,10 +4082,6 @@ packages: read-yaml-file: 1.1.0 dev: true - /@mdn/browser-compat-data@5.3.25: - resolution: {integrity: sha512-dzZ7Ot5SoiSrqzNR4+YqRrjRxm1K+0XEuTfIdRuUfGrAJp9EMmocLq7pXIJ4aXiX3T5+GZiXmylJzwWsTVYxWQ==} - dev: false - /@mdx-js/react@3.0.1(@types/react@18.2.11)(react@18.2.0): resolution: {integrity: sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A==} peerDependencies: @@ -3935,7 +4278,7 @@ packages: '@phenomnomnominal/tsquery': 5.0.1(typescript@5.3.3) chalk: 4.1.2 identity-obj-proxy: 3.0.0 - jest-config: 29.7.0(@types/node@18.19.3)(ts-node@10.9.2) + jest-config: 29.7.0(@types/node@18.19.3) jest-resolve: 29.7.0 jest-util: 29.7.0 minimatch: 9.0.3 @@ -4173,9 +4516,9 @@ packages: estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 - magic-string: 0.30.5 + magic-string: 0.30.8 rollup: 4.17.2 - dev: false + dev: true /@rollup/plugin-json@6.1.0(rollup@4.17.2): resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} @@ -4188,7 +4531,7 @@ packages: dependencies: '@rollup/pluginutils': 5.1.0(rollup@4.17.2) rollup: 4.17.2 - dev: false + dev: true /@rollup/plugin-node-resolve@15.2.3(rollup@4.17.2): resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} @@ -4206,7 +4549,7 @@ packages: is-module: 1.0.0 resolve: 1.22.8 rollup: 4.17.2 - dev: false + dev: true /@rollup/pluginutils@5.1.0(rollup@4.17.2): resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} @@ -4221,13 +4564,14 @@ packages: estree-walker: 2.0.2 picomatch: 2.3.1 rollup: 4.17.2 - dev: false + dev: true /@rollup/rollup-android-arm-eabi@4.17.2: resolution: {integrity: sha512-NM0jFxY8bB8QLkoKxIQeObCaDlJKewVlIEkuyYKm5An1tdVZ966w2+MPQ2l8LBZLjR+SgyV+nRkTIunzOYBMLQ==} cpu: [arm] os: [android] requiresBuild: true + dev: true optional: true /@rollup/rollup-android-arm64@4.17.2: @@ -4235,6 +4579,7 @@ packages: cpu: [arm64] os: [android] requiresBuild: true + dev: true optional: true /@rollup/rollup-darwin-arm64@4.17.2: @@ -4242,6 +4587,7 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true + dev: true optional: true /@rollup/rollup-darwin-x64@4.17.2: @@ -4249,6 +4595,7 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true + dev: true optional: true /@rollup/rollup-linux-arm-gnueabihf@4.17.2: @@ -4256,6 +4603,7 @@ packages: cpu: [arm] os: [linux] requiresBuild: true + dev: true optional: true /@rollup/rollup-linux-arm-musleabihf@4.17.2: @@ -4263,6 +4611,7 @@ packages: cpu: [arm] os: [linux] requiresBuild: true + dev: true optional: true /@rollup/rollup-linux-arm64-gnu@4.17.2: @@ -4270,6 +4619,7 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true + dev: true optional: true /@rollup/rollup-linux-arm64-musl@4.17.2: @@ -4277,6 +4627,7 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true + dev: true optional: true /@rollup/rollup-linux-powerpc64le-gnu@4.17.2: @@ -4284,6 +4635,7 @@ packages: cpu: [ppc64] os: [linux] requiresBuild: true + dev: true optional: true /@rollup/rollup-linux-riscv64-gnu@4.17.2: @@ -4291,6 +4643,7 @@ packages: cpu: [riscv64] os: [linux] requiresBuild: true + dev: true optional: true /@rollup/rollup-linux-s390x-gnu@4.17.2: @@ -4298,6 +4651,7 @@ packages: cpu: [s390x] os: [linux] requiresBuild: true + dev: true optional: true /@rollup/rollup-linux-x64-gnu@4.17.2: @@ -4305,6 +4659,7 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: true optional: true /@rollup/rollup-linux-x64-musl@4.17.2: @@ -4312,6 +4667,7 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: true optional: true /@rollup/rollup-win32-arm64-msvc@4.17.2: @@ -4319,6 +4675,7 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true + dev: true optional: true /@rollup/rollup-win32-ia32-msvc@4.17.2: @@ -4326,6 +4683,7 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true + dev: true optional: true /@rollup/rollup-win32-x64-msvc@4.17.2: @@ -4333,6 +4691,7 @@ packages: cpu: [x64] os: [win32] requiresBuild: true + dev: true optional: true /@shikijs/core@1.2.4: @@ -4625,7 +4984,7 @@ packages: hasBin: true dependencies: '@babel/core': 7.24.0 - '@babel/types': 7.24.5 + '@babel/types': 7.24.0 '@ndelangen/get-tarball': 3.0.9 '@storybook/codemod': 8.0.5 '@storybook/core-common': 8.0.5 @@ -4681,7 +5040,7 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/preset-env': 7.24.0(@babel/core@7.24.0) - '@babel/types': 7.24.5 + '@babel/types': 7.24.0 '@storybook/csf': 0.1.2 '@storybook/csf-tools': 8.0.5 '@storybook/node-logger': 8.0.5 @@ -4844,7 +5203,7 @@ packages: '@babel/generator': 7.24.4 '@babel/parser': 7.24.4 '@babel/traverse': 7.24.1 - '@babel/types': 7.24.5 + '@babel/types': 7.24.0 '@storybook/csf': 0.1.2 '@storybook/types': 8.0.5 fs-extra: 11.2.0 @@ -5283,7 +5642,7 @@ packages: resolution: {integrity: sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==} engines: {node: '>=14'} dependencies: - '@babel/types': 7.24.5 + '@babel/types': 7.24.0 entities: 4.5.0 dev: true @@ -5370,6 +5729,7 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true + dev: true optional: true /@swc/core-darwin-x64@1.4.0: @@ -5378,6 +5738,7 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true + dev: true optional: true /@swc/core-linux-arm-gnueabihf@1.4.0: @@ -5386,6 +5747,7 @@ packages: cpu: [arm] os: [linux] requiresBuild: true + dev: true optional: true /@swc/core-linux-arm64-gnu@1.4.0: @@ -5394,6 +5756,7 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true + dev: true optional: true /@swc/core-linux-arm64-musl@1.4.0: @@ -5402,6 +5765,7 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true + dev: true optional: true /@swc/core-linux-x64-gnu@1.4.0: @@ -5410,6 +5774,7 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: true optional: true /@swc/core-linux-x64-musl@1.4.0: @@ -5418,6 +5783,7 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: true optional: true /@swc/core-win32-arm64-msvc@1.4.0: @@ -5426,6 +5792,7 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true + dev: true optional: true /@swc/core-win32-ia32-msvc@1.4.0: @@ -5434,6 +5801,7 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true + dev: true optional: true /@swc/core-win32-x64-msvc@1.4.0: @@ -5442,6 +5810,7 @@ packages: cpu: [x64] os: [win32] requiresBuild: true + dev: true optional: true /@swc/core@1.4.0(@swc/helpers@0.5.3): @@ -5468,17 +5837,21 @@ packages: '@swc/core-win32-arm64-msvc': 1.4.0 '@swc/core-win32-ia32-msvc': 1.4.0 '@swc/core-win32-x64-msvc': 1.4.0 + dev: true /@swc/counter@0.1.3: resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + dev: true /@swc/helpers@0.5.3: resolution: {integrity: sha512-FaruWX6KdudYloq1AHD/4nU+UsMTdNE8CKyrseXWEcgjDAbvkwJg2QGPAnfIJLIWsjZOSPLOAykK6fuYp4vp4A==} dependencies: tslib: 2.6.2 + dev: true /@swc/types@0.1.5: resolution: {integrity: sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==} + dev: true /@swc/types@0.1.6: resolution: {integrity: sha512-/JLo/l2JsT/LRd80C3HfbmVpxOAJ11FO2RCEslFrgzLltoP9j8XIbsyDcfCt2WWyX+CM96rBoNM+IToAkFOugg==} @@ -5561,20 +5934,20 @@ packages: /@types/babel__generator@7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: - '@babel/types': 7.23.5 + '@babel/types': 7.24.0 dev: true /@types/babel__template@7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: '@babel/parser': 7.24.0 - '@babel/types': 7.23.5 + '@babel/types': 7.24.0 dev: true /@types/babel__traverse@7.20.4: resolution: {integrity: sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==} dependencies: - '@babel/types': 7.23.5 + '@babel/types': 7.24.0 dev: true /@types/babel__traverse@7.20.5: @@ -5667,6 +6040,7 @@ packages: /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + dev: true /@types/express-serve-static-core@4.17.43: resolution: {integrity: sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==} @@ -5790,10 +6164,6 @@ packages: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} dev: true - /@types/node@17.0.45: - resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - dev: false - /@types/node@18.19.3: resolution: {integrity: sha512-k5fggr14DwAytoA/t8rPrIz++lXK7/DqckthCmoZOKNsEbJkId4Z//BqgApXBUGrGddrigYa1oqheo/7YmW4rg==} dependencies: @@ -5808,10 +6178,7 @@ packages: /@types/normalize-package-data@2.4.4: resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} - - /@types/object-path@0.11.1: - resolution: {integrity: sha512-219LSCO9HPcoXcRTC6DbCs0FRhZgBnEMzf16RRqkT40WbkKx3mOeQuz3e2XqbfhOz/AHfbru0kzB1n1RCAsIIg==} - dev: false + dev: true /@types/parse-json@4.0.2: resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -5856,7 +6223,7 @@ packages: /@types/resolve@1.20.2: resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} - dev: false + dev: true /@types/resolve@1.20.6: resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==} @@ -5904,10 +6271,6 @@ packages: resolution: {integrity: sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==} dev: true - /@types/ua-parser-js@0.7.36: - resolution: {integrity: sha512-N1rW+njavs70y2cApeIw1vLMYXRwfBy+7trgavGuuTfOd7j1Yh7QTRc/yqsPl6ncokt72ZXuxEU0PiCp9bSwNQ==} - dev: false - /@types/unist@2.0.10: resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} dev: true @@ -6559,11 +6922,6 @@ packages: '@xtuc/long': 4.2.2 dev: true - /@wessberg/stringutil@1.0.19: - resolution: {integrity: sha512-9AZHVXWlpN8Cn9k5BC/O0Dzb9E9xfEMXzYrNunwvkUTvuK7xgQPVRZpLo+jWCOZ5r8oBa8NIrHuPEu1hzbb6bg==} - engines: {node: '>=8.0.0'} - dev: false - /@xtuc/ieee754@1.2.0: resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} dev: true @@ -6702,14 +7060,6 @@ packages: indent-string: 4.0.0 dev: true - /aggregate-error@4.0.1: - resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==} - engines: {node: '>=12'} - dependencies: - clean-stack: 4.2.0 - indent-string: 5.0.0 - dev: false - /ajv-formats@2.1.1(ajv@8.12.0): resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: @@ -6764,6 +7114,7 @@ packages: /ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} + dev: true /ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} @@ -6797,6 +7148,7 @@ packages: engines: {node: '>=4'} dependencies: color-convert: 1.9.3 + dev: true /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} @@ -6928,11 +7280,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /arrify@3.0.0: - resolution: {integrity: sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==} - engines: {node: '>=12'} - dev: false - /asn1@0.2.6: resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} dependencies: @@ -7127,6 +7474,24 @@ packages: - supports-color dev: true + /babel-jest@29.7.0(@babel/core@7.24.5): + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + dependencies: + '@babel/core': 7.24.5 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.6.3(@babel/core@7.24.5) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + /babel-loader@9.1.3(@babel/core@7.24.0)(webpack@5.91.0): resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==} engines: {node: '>= 14.15.0'} @@ -7217,6 +7582,7 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color + dev: true /babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.0): resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==} @@ -7240,6 +7606,7 @@ packages: core-js-compat: 3.36.0 transitivePeerDependencies: - supports-color + dev: true /babel-plugin-polyfill-regenerator@0.5.5(@babel/core@7.24.0): resolution: {integrity: sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==} @@ -7250,6 +7617,7 @@ packages: '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.24.0) transitivePeerDependencies: - supports-color + dev: true /babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.0): resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} @@ -7295,6 +7663,26 @@ packages: '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.0) dev: true + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.24.5): + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.5 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.5) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.5) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.5) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.5) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.5) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.5) + dev: true + /babel-preset-jest@29.6.3(@babel/core@7.24.0): resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -7306,6 +7694,17 @@ packages: babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.0) dev: true + /babel-preset-jest@29.6.3(@babel/core@7.24.5): + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.5 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.5) + dev: true + /bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} dev: true @@ -7497,22 +7896,6 @@ packages: pako: 0.2.9 dev: true - /browserslist-generator@2.1.0: - resolution: {integrity: sha512-ZFz4mAOgqm0cbwKaZsfJbYDbTXGoPANlte7qRsRJOfjB9KmmISQrXJxAVrnXG8C8v/QHNzXyeJt0Cfcks6zZvQ==} - engines: {node: '>=16.15.1', npm: '>=7.0.0', pnpm: '>=3.2.0', yarn: '>=1.13'} - dependencies: - '@mdn/browser-compat-data': 5.3.25 - '@types/object-path': 0.11.1 - '@types/semver': 7.5.8 - '@types/ua-parser-js': 0.7.36 - browserslist: 4.23.0 - caniuse-lite: 1.0.30001591 - isbot: 3.7.0 - object-path: 0.11.8 - semver: 7.5.4 - ua-parser-js: 1.0.35 - dev: false - /browserslist@4.23.0: resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -7522,6 +7905,7 @@ packages: electron-to-chromium: 1.4.715 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.23.0) + dev: true /bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} @@ -7561,7 +7945,7 @@ packages: /builtin-modules@3.3.0: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} - dev: false + dev: true /builtins@5.1.0: resolution: {integrity: sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==} @@ -7629,12 +8013,9 @@ packages: engines: {node: '>=14.16'} dev: true - /caniuse-lite@1.0.30001591: - resolution: {integrity: sha512-PCzRMei/vXjJyL5mJtzNiUCKP59dm8Apqc3PH8gJkMnMXZGox93RbE76jHsmLwmIo6/3nsYIpJtx0O7u5PqFuQ==} - dev: false - /caniuse-lite@1.0.30001600: resolution: {integrity: sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ==} + dev: true /case-sensitive-paths-webpack-plugin@2.4.0: resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==} @@ -7656,6 +8037,7 @@ packages: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 + dev: true /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} @@ -7776,13 +8158,6 @@ packages: engines: {node: '>=6'} dev: true - /clean-stack@4.2.0: - resolution: {integrity: sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==} - engines: {node: '>=12'} - dependencies: - escape-string-regexp: 5.0.0 - dev: false - /cli-boxes@3.0.0: resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} engines: {node: '>=10'} @@ -7896,6 +8271,7 @@ packages: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 + dev: true /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} @@ -7905,6 +8281,7 @@ packages: /color-name@1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} @@ -7991,16 +8368,7 @@ packages: /commondir@1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - - /compatfactory@3.0.0(typescript@5.3.3): - resolution: {integrity: sha512-WD5kF7koPwVoyKL8p0LlrmIZtilrD46sQStyzzxzTFinMKN2Dxk1hN+sddLSQU1mGIZvQfU8c+ONSghvvM40jg==} - engines: {node: '>=14.9.0'} - peerDependencies: - typescript: '>=3.x || >= 4.x || >= 5.x' - dependencies: - helpertypes: 0.0.19 - typescript: 5.3.3 - dev: false + dev: true /compressible@2.0.18: resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} @@ -8058,6 +8426,7 @@ packages: /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: true /cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} @@ -8072,6 +8441,7 @@ packages: resolution: {integrity: sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw==} dependencies: browserslist: 4.23.0 + dev: true /core-js-compat@3.37.0: resolution: {integrity: sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==} @@ -8125,28 +8495,24 @@ packages: typescript: 5.3.3 dev: true - /cp-file@10.0.0: - resolution: {integrity: sha512-vy2Vi1r2epK5WqxOLnskeKeZkdZvTKfFZQCplE3XWsP+SUJyd5XAUFC9lFgTjjXJF2GMne/UML14iEmkAaDfFg==} - engines: {node: '>=14.16'} + /create-jest@29.7.0(@types/node@18.19.3): + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 graceful-fs: 4.2.11 - nested-error-stacks: 2.1.1 - p-event: 5.0.1 - dev: false - - /cpy@10.1.0: - resolution: {integrity: sha512-VC2Gs20JcTyeQob6UViBLnyP0bYHkBh6EiKzot9vi2DmeGlFT9Wd7VG3NBrkNx/jYvFBeyDOMMHdHQhbtKLgHQ==} - engines: {node: '>=16'} - dependencies: - arrify: 3.0.0 - cp-file: 10.0.0 - globby: 13.2.2 - junk: 4.0.1 - micromatch: 4.0.5 - nested-error-stacks: 2.1.1 - p-filter: 3.0.0 - p-map: 6.0.0 - dev: false + jest-config: 29.7.0(@types/node@18.19.3) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true /create-jest@29.7.0(@types/node@18.19.3)(ts-node@10.9.2): resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} @@ -8195,13 +8561,6 @@ packages: shebang-command: 2.0.0 which: 2.0.2 - /crosspath@2.0.0: - resolution: {integrity: sha512-ju88BYCQ2uvjO2bR+SsgLSTwTSctU+6Vp2ePbKPgSCZyy4MWZxYsT738DlKVRE5utUjobjPRm1MkTYKJxCmpTA==} - engines: {node: '>=14.9.0'} - dependencies: - '@types/node': 17.0.45 - dev: false - /crypto-random-string@2.0.0: resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} engines: {node: '>=8'} @@ -8526,14 +8885,10 @@ packages: /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - /deepmerge-ts@5.1.0: - resolution: {integrity: sha512-eS8dRJOckyo9maw9Tu5O5RUi/4inFLrnoLkBe3cPfDMx3WZioXtmOew4TXQaxq7Rhl4xjDtR7c6x8nNTxOvbFw==} - engines: {node: '>=16.0.0'} - dev: false - /deepmerge@4.3.1: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} + dev: true /default-browser-id@3.0.0: resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} @@ -8616,6 +8971,7 @@ packages: /detect-indent@7.0.1: resolution: {integrity: sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==} engines: {node: '>=12.20'} + dev: true /detect-libc@1.0.3: resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} @@ -8638,6 +8994,7 @@ packages: /detect-newline@4.0.1: resolution: {integrity: sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true /detect-package-manager@2.0.1: resolution: {integrity: sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==} @@ -8852,6 +9209,7 @@ packages: /electron-to-chromium@1.4.715: resolution: {integrity: sha512-XzWNH4ZSa9BwVUQSDorPWAUQ5WGuYz7zJUNpNif40zFCiCl20t8zgylmreNmn26h5kiyw2lg7RfTmeMBsDklqg==} + dev: true /emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} @@ -8902,6 +9260,7 @@ packages: dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 + dev: false /enhanced-resolve@5.16.0: resolution: {integrity: sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==} @@ -8945,6 +9304,7 @@ packages: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 + dev: true /es-abstract@1.22.3: resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} @@ -9119,6 +9479,7 @@ packages: /escalade@3.1.2: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} + dev: true /escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} @@ -9140,6 +9501,7 @@ packages: /escape-string-regexp@5.0.0: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} + dev: true /escodegen@2.1.0: resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} @@ -9520,7 +9882,7 @@ packages: /estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - dev: false + dev: true /estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} @@ -9584,21 +9946,6 @@ packages: strip-final-newline: 2.0.0 dev: true - /execa@7.1.1: - resolution: {integrity: sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==} - engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 4.3.1 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.1.0 - onetime: 6.0.0 - signal-exit: 3.0.7 - strip-final-newline: 3.0.0 - dev: false - /execa@8.0.1: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} @@ -10084,6 +10431,7 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true + dev: true optional: true /function-bind@1.1.2: @@ -10104,6 +10452,7 @@ packages: /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} + dev: true /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} @@ -10138,6 +10487,7 @@ packages: /get-stdin@9.0.0: resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==} engines: {node: '>=12'} + dev: true /get-stream@5.2.0: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} @@ -10149,6 +10499,7 @@ packages: /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} + dev: true /get-stream@8.0.1: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} @@ -10195,6 +10546,7 @@ packages: /git-hooks-list@3.1.0: resolution: {integrity: sha512-LF8VeHeR7v+wAbXqfgRlTSX/1BJR9Q1vEMR8JAz1cEg6GX07+zyj3sAdDvYjj/xnlIfVuGgj4qBei1K3hKH+PA==} + dev: true /github-from-package@0.0.0: resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} @@ -10253,7 +10605,7 @@ packages: inherits: 2.0.4 minimatch: 5.1.6 once: 1.4.0 - dev: false + dev: true /global-dirs@3.0.1: resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} @@ -10265,6 +10617,7 @@ packages: /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} + dev: true /globals@13.24.0: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} @@ -10298,6 +10651,7 @@ packages: ignore: 5.3.1 merge2: 1.4.1 slash: 4.0.0 + dev: true /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} @@ -10364,6 +10718,7 @@ packages: /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} + dev: true /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} @@ -10537,11 +10892,6 @@ packages: hasBin: true dev: true - /helpertypes@0.0.19: - resolution: {integrity: sha512-J00e55zffgi3yVnUp0UdbMztNkr2PnizEkOe9URNohnrNhW5X0QpegkuLpOmFQInpi93Nb8MCjQRHAiCDF42NQ==} - engines: {node: '>=10.0.0'} - dev: false - /hoist-non-react-statics@3.3.2: resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} dependencies: @@ -10557,6 +10907,7 @@ packages: engines: {node: ^16.14.0 || >=18.0.0} dependencies: lru-cache: 10.2.2 + dev: true /html-encoding-sniffer@3.0.0: resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} @@ -10688,11 +11039,6 @@ packages: engines: {node: '>=10.17.0'} dev: true - /human-signals@4.3.1: - resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} - engines: {node: '>=14.18.0'} - dev: false - /human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} @@ -10775,14 +11121,10 @@ packages: engines: {node: '>=8'} dev: true - /indent-string@5.0.0: - resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} - engines: {node: '>=12'} - dev: false - /index-to-position@0.1.2: resolution: {integrity: sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==} engines: {node: '>=18'} + dev: true /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} @@ -10843,6 +11185,7 @@ packages: /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true /is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} @@ -10879,7 +11222,7 @@ packages: engines: {node: '>=6'} dependencies: builtin-modules: 3.3.0 - dev: false + dev: true /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} @@ -11000,7 +11343,7 @@ packages: /is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} - dev: false + dev: true /is-nan@1.3.2: resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} @@ -11041,6 +11384,7 @@ packages: /is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} + dev: true /is-plain-object@2.0.4: resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} @@ -11062,7 +11406,7 @@ packages: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} dependencies: '@types/estree': 1.0.5 - dev: false + dev: true /is-reference@3.0.2: resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} @@ -11094,6 +11438,7 @@ packages: /is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true /is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} @@ -11122,6 +11467,7 @@ packages: /is-typedarray@1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + dev: true /is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} @@ -11175,11 +11521,6 @@ packages: /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - /isbot@3.7.0: - resolution: {integrity: sha512-9BcjlI89966BqWJmYdTnRub85sit931MyCthSIPtgoOsTjoW7A2MVa09HzPpYE2+G4vyAxfDvR0AbUGV0FInQg==} - engines: {node: '>=12'} - dev: false - /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -11323,10 +11664,10 @@ packages: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@18.19.3)(ts-node@10.9.2) + create-jest: 29.7.0(@types/node@18.19.3) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@18.19.3)(ts-node@10.9.2) + jest-config: 29.7.0(@types/node@18.19.3) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -11365,7 +11706,7 @@ packages: - ts-node dev: true - /jest-config@29.7.0(@types/node@18.19.3)(ts-node@10.9.2): + /jest-config@29.7.0(@types/node@18.19.3): resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -11400,6 +11741,46 @@ packages: pretty-format: 29.7.0 slash: 3.0.0 strip-json-comments: 3.1.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + dev: true + + /jest-config@29.7.0(@types/node@18.19.3)(ts-node@10.9.2): + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.24.5 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.19.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.5 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 ts-node: 10.9.2(@swc/core@1.4.0)(@types/node@18.19.3)(typescript@5.3.3) transitivePeerDependencies: - babel-plugin-macros @@ -11418,11 +11799,11 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.5 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 '@types/node': 20.12.8 - babel-jest: 29.7.0(@babel/core@7.24.0) + babel-jest: 29.7.0(@babel/core@7.24.5) chalk: 4.1.2 ci-info: 3.9.0 deepmerge: 4.3.1 @@ -11692,7 +12073,7 @@ packages: dependencies: '@babel/core': 7.24.0 '@babel/generator': 7.24.5 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.24.0) '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.0) '@babel/types': 7.24.5 '@jest/expect-utils': 29.7.0 @@ -11819,6 +12200,7 @@ packages: /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: true /js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} @@ -11850,7 +12232,7 @@ packages: '@babel/core': 7.24.0 '@babel/parser': 7.24.5 '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.24.0) '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.24.0) '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.24.0) '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.24.0) @@ -11916,11 +12298,13 @@ packages: /jsesc@0.5.0: resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} hasBin: true + dev: true /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true + dev: true /json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -11929,11 +12313,6 @@ packages: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} dev: true - /json-parse-even-better-errors@3.0.1: - resolution: {integrity: sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dev: false - /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -11962,6 +12341,7 @@ packages: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true + dev: true /jsonc-eslint-parser@2.4.0: resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} @@ -12005,11 +12385,6 @@ packages: verror: 1.10.0 dev: true - /junk@4.0.1: - resolution: {integrity: sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ==} - engines: {node: '>=12.20'} - dev: false - /keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} dependencies: @@ -12166,6 +12541,7 @@ packages: /lines-and-columns@2.0.4: resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true /lint-staged@15.2.0: resolution: {integrity: sha512-TFZzUEV00f+2YLaVPWBWGAMq7So6yQx+GG8YRMDeOEIf95Zn5RyiLMsEiX4KTNl9vq/w+NqRJkLA1kPIo15ufQ==} @@ -12267,6 +12643,7 @@ packages: /lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + dev: true /lodash.memoize@4.1.2: resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} @@ -12344,6 +12721,7 @@ packages: /lru-cache@10.2.2: resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==} engines: {node: 14 || >=16.14} + dev: true /lru-cache@4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} @@ -12356,6 +12734,7 @@ packages: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: yallist: 3.1.1 + dev: true /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} @@ -12373,6 +12752,7 @@ packages: engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 + dev: true /magic-string@0.30.8: resolution: {integrity: sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==} @@ -12633,6 +13013,7 @@ packages: /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} @@ -12929,6 +13310,7 @@ packages: /mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} + dev: true /mimic-response@3.1.0: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} @@ -12956,6 +13338,7 @@ packages: engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 + dev: true /minimatch@9.0.3: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} @@ -13071,10 +13454,6 @@ packages: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} dev: true - /nested-error-stacks@2.1.1: - resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} - dev: false - /nice-napi@1.0.2: resolution: {integrity: sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==} os: ['!win32'] @@ -13175,6 +13554,7 @@ packages: /node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + dev: true /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} @@ -13185,16 +13565,6 @@ packages: validate-npm-package-license: 3.0.4 dev: true - /normalize-package-data@6.0.0: - resolution: {integrity: sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - hosted-git-info: 7.0.2 - is-core-module: 2.13.1 - semver: 7.5.4 - validate-npm-package-license: 3.0.4 - dev: false - /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -13217,13 +13587,6 @@ packages: path-key: 3.1.1 dev: true - /npm-run-path@5.1.0: - resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - path-key: 4.0.0 - dev: false - /npm-run-path@5.3.0: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -13355,11 +13718,6 @@ packages: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} - /object-path@0.11.8: - resolution: {integrity: sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA==} - engines: {node: '>= 10.12.0'} - dev: false - /object.assign@4.1.5: resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} engines: {node: '>= 0.4'} @@ -13430,6 +13788,7 @@ packages: engines: {node: '>=12'} dependencies: mimic-fn: 4.0.0 + dev: true /open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} @@ -13508,13 +13867,6 @@ packages: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} dev: true - /p-event@5.0.1: - resolution: {integrity: sha512-dd589iCQ7m1L0bmC5NLlVYfy3TbBEsMUfWx9PyAgPeIcFZ/E2yaTZ4Rz4MiBmmJShviiftHVXOqfnfzJ6kyMrQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - p-timeout: 5.1.0 - dev: false - /p-filter@2.1.0: resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} engines: {node: '>=8'} @@ -13522,13 +13874,6 @@ packages: p-map: 2.1.0 dev: true - /p-filter@3.0.0: - resolution: {integrity: sha512-QtoWLjXAW++uTX67HZQz1dbTpqBfiidsB6VtQUC9iR85S120+s0T5sO6s+B5MLzFcZkrEd/DGMmCjR+f2Qpxwg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - p-map: 5.5.0 - dev: false - /p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -13595,18 +13940,6 @@ packages: aggregate-error: 3.1.0 dev: true - /p-map@5.5.0: - resolution: {integrity: sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==} - engines: {node: '>=12'} - dependencies: - aggregate-error: 4.0.1 - dev: false - - /p-map@6.0.0: - resolution: {integrity: sha512-T8BatKGY+k5rU+Q/GTYgrEf2r4xRMevAN5mtXc2aPc4rS1j3s+vWTaO2Wag94neXuCAUAs8cxBL9EeB5EA6diw==} - engines: {node: '>=16'} - dev: false - /p-queue@8.0.1: resolution: {integrity: sha512-NXzu9aQJTAzbBqOt2hwsR63ea7yvxJc0PwN/zobNAudYfb1B7R08SzB4TsLeSbUCuG467NhnoT0oO6w1qRO+BA==} engines: {node: '>=18'} @@ -13615,11 +13948,6 @@ packages: p-timeout: 6.1.2 dev: true - /p-timeout@5.1.0: - resolution: {integrity: sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==} - engines: {node: '>=12'} - dev: false - /p-timeout@6.1.2: resolution: {integrity: sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==} engines: {node: '>=14.16'} @@ -13661,27 +13989,6 @@ packages: lines-and-columns: 1.2.4 dev: true - /parse-json@7.1.1: - resolution: {integrity: sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==} - engines: {node: '>=16'} - dependencies: - '@babel/code-frame': 7.24.2 - error-ex: 1.3.2 - json-parse-even-better-errors: 3.0.1 - lines-and-columns: 2.0.4 - type-fest: 3.13.1 - dev: false - - /parse-json@8.0.1: - resolution: {integrity: sha512-soKUg/q/8bcfuF3+plsbYldE74cVEVEPSC1BUPIGTaX1byXdz6Fo+CVYBdH0jj/5xWsFrNRksl11QkBgHqPQeQ==} - engines: {node: '>=18'} - dependencies: - '@babel/code-frame': 7.24.2 - index-to-position: 0.1.2 - json-parse-even-better-errors: 3.0.1 - type-fest: 4.18.2 - dev: false - /parse-json@8.1.0: resolution: {integrity: sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==} engines: {node: '>=18'} @@ -13746,6 +14053,7 @@ packages: /path-key@4.0.0: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} engines: {node: '>=12'} + dev: true /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -13800,6 +14108,7 @@ packages: /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: true /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} @@ -14315,27 +14624,6 @@ packages: type-fest: 0.6.0 dev: true - /read-pkg@8.1.0: - resolution: {integrity: sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==} - engines: {node: '>=16'} - dependencies: - '@types/normalize-package-data': 2.4.4 - normalize-package-data: 6.0.0 - parse-json: 7.1.1 - type-fest: 4.18.2 - dev: false - - /read-pkg@9.0.1: - resolution: {integrity: sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==} - engines: {node: '>=18'} - dependencies: - '@types/normalize-package-data': 2.4.4 - normalize-package-data: 6.0.0 - parse-json: 8.0.1 - type-fest: 4.18.2 - unicorn-magic: 0.1.0 - dev: false - /read-yaml-file@1.1.0: resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} engines: {node: '>=6'} @@ -14398,9 +14686,11 @@ packages: engines: {node: '>=4'} dependencies: regenerate: 1.4.2 + dev: true /regenerate@1.4.2: resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + dev: true /regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} @@ -14408,11 +14698,13 @@ packages: /regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + dev: true /regenerator-transform@0.15.2: resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} dependencies: '@babel/runtime': 7.24.5 + dev: true /regexp.prototype.flags@1.5.1: resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} @@ -14432,12 +14724,14 @@ packages: regjsparser: 0.9.1 unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.1.0 + dev: true /regjsparser@0.9.1: resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} hasBin: true dependencies: jsesc: 0.5.0 + dev: true /rehype-external-links@3.0.0: resolution: {integrity: sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw==} @@ -14712,53 +15006,45 @@ packages: dependencies: glob: 7.2.3 - /rollup-plugin-ts@3.4.5(@babel/core@7.24.0)(@babel/preset-env@7.24.0)(@babel/preset-typescript@7.24.1)(@swc/core@1.4.0)(@swc/helpers@0.5.3)(rollup@4.17.2)(typescript@5.3.3): - resolution: {integrity: sha512-9iCstRJpEZXSRQuXitlSZAzcGlrqTbJg1pE4CMbEi6xYldxVncdPyzA2I+j6vnh73wBymZckerS+Q/iEE/M3Ow==} - engines: {node: '>=16.15.1', npm: '>=7.0.0', pnpm: '>=3.2.0', yarn: '>=1.13'} - peerDependencies: - '@babel/core': '>=7.x' - '@babel/plugin-transform-runtime': '>=7.x' - '@babel/preset-env': '>=7.x' - '@babel/preset-typescript': '>=7.x' - '@babel/runtime': '>=7.x' - '@swc/core': '>=1.x' - '@swc/helpers': '>=0.2' - rollup: '>=1.x || >=2.x || >=3.x' - typescript: '>=3.2.x || >= 4.x || >= 5.x' - peerDependenciesMeta: - '@babel/core': - optional: true - '@babel/plugin-transform-runtime': - optional: true - '@babel/preset-env': - optional: true - '@babel/preset-typescript': - optional: true - '@babel/runtime': - optional: true - '@swc/core': - optional: true - '@swc/helpers': - optional: true + /rollup-plugin-dts@6.1.0(rollup@4.17.2)(typescript@5.3.3): + resolution: {integrity: sha512-ijSCPICkRMDKDLBK9torss07+8dl9UpY9z1N/zTeA1cIqdzMlpkV3MOOC7zukyvQfDyxa1s3Dl2+DeiP/G6DOw==} + engines: {node: '>=16'} + peerDependencies: + rollup: ^3.29.4 || ^4 + typescript: ^4.5 || ^5.0 dependencies: - '@babel/core': 7.24.0 - '@babel/preset-env': 7.24.0(@babel/core@7.24.0) - '@babel/preset-typescript': 7.24.1(@babel/core@7.24.0) - '@rollup/pluginutils': 5.1.0(rollup@4.17.2) - '@swc/core': 1.4.0(@swc/helpers@0.5.3) - '@swc/helpers': 0.5.3 - '@wessberg/stringutil': 1.0.19 - ansi-colors: 4.1.3 - browserslist: 4.23.0 - browserslist-generator: 2.1.0 - compatfactory: 3.0.0(typescript@5.3.3) - crosspath: 2.0.0 - magic-string: 0.30.5 + magic-string: 0.30.8 rollup: 4.17.2 - ts-clone-node: 3.0.0(typescript@5.3.3) - tslib: 2.6.2 typescript: 5.3.3 - dev: false + optionalDependencies: + '@babel/code-frame': 7.24.2 + dev: true + + /rollup-plugin-esbuild@6.1.1(esbuild@0.20.2)(rollup@4.17.2): + resolution: {integrity: sha512-CehMY9FAqJD5OUaE/Mi1r5z0kNeYxItmRO2zG4Qnv2qWKF09J2lTy5GUzjJR354ZPrLkCj4fiBN41lo8PzBUhw==} + engines: {node: '>=14.18.0'} + peerDependencies: + esbuild: '>=0.18.0' + rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.17.2) + debug: 4.3.4(supports-color@8.1.1) + es-module-lexer: 1.4.2 + esbuild: 0.20.2 + get-tsconfig: 4.7.2 + rollup: 4.17.2 + transitivePeerDependencies: + - supports-color + dev: true + + /rollup-plugin-node-externals@7.1.2(rollup@4.17.2): + resolution: {integrity: sha512-cVJFKs+ulZxpMmn/s+oi431d93Jq5+G7Sc5ixWDrL2k+Gj+MqXg0KMNWgKf8Mw5qpaG4jVDpsvuqFfiCvRcGeA==} + engines: {node: '>= 21 || ^20.6.0 || ^18.19.0'} + peerDependencies: + rollup: ^3.0.0 || ^4.0.0 + dependencies: + rollup: 4.17.2 + dev: true /rollup@4.17.2: resolution: {integrity: sha512-/9ClTJPByC0U4zNLowV1tMBe8yMEAxewtR3cUNX5BoEpGH3dQEWpJLr6CLp0fPdYRF/fzVOgvDb1zXuakwF5kQ==} @@ -14784,6 +15070,7 @@ packages: '@rollup/rollup-win32-ia32-msvc': 4.17.2 '@rollup/rollup-win32-x64-msvc': 4.17.2 fsevents: 2.3.3 + dev: true /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -15012,6 +15299,7 @@ packages: /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true /signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} @@ -15053,6 +15341,7 @@ packages: /slash@4.0.0: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} engines: {node: '>=12'} + dev: true /slice-ansi@3.0.0: resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} @@ -15108,15 +15397,9 @@ packages: tslib: 2.6.2 dev: true - /sort-keys@5.0.0: - resolution: {integrity: sha512-Pdz01AvCAottHTPQGzndktFNdbRA75BgOfeT1hH+AMnJFv8lynkPi42rfeEhpx1saTEI3YNMWxfqu0sFD1G8pw==} - engines: {node: '>=12'} - dependencies: - is-plain-obj: 4.1.0 - dev: false - /sort-object-keys@1.1.3: resolution: {integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==} + dev: true /sort-package-json@2.10.0: resolution: {integrity: sha512-MYecfvObMwJjjJskhxYfuOADkXp1ZMMnCFC8yhp+9HDsk7HhR336hd7eiBs96lTXfiqmUNI+WQCeCMRBhl251g==} @@ -15130,6 +15413,7 @@ packages: is-plain-obj: 4.1.0 semver: 7.5.4 sort-object-keys: 1.1.3 + dev: true /source-map-js@1.2.0: resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} @@ -15183,18 +15467,22 @@ packages: dependencies: spdx-expression-parse: 3.0.1 spdx-license-ids: 3.0.17 + dev: true /spdx-exceptions@2.5.0: resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + dev: true /spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.5.0 spdx-license-ids: 3.0.17 + dev: true /spdx-license-ids@3.0.17: resolution: {integrity: sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==} + dev: true /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} @@ -15407,6 +15695,7 @@ packages: /strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} + dev: true /strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} @@ -15461,6 +15750,7 @@ packages: engines: {node: '>=4'} dependencies: has-flag: 3.0.0 + dev: true /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} @@ -15720,6 +16010,7 @@ packages: /to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} + dev: true /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} @@ -15786,16 +16077,6 @@ packages: dependencies: typescript: 5.3.3 - /ts-clone-node@3.0.0(typescript@5.3.3): - resolution: {integrity: sha512-egavvyHbIoelkgh1IC2agNB1uMNjB8VJgh0g/cn0bg2XXTcrtjrGMzEk4OD3Fi2hocICjP3vMa56nkzIzq0FRg==} - engines: {node: '>=14.9.0'} - peerDependencies: - typescript: ^3.x || ^4.x || ^5.x - dependencies: - compatfactory: 3.0.0(typescript@5.3.3) - typescript: 5.3.3 - dev: false - /ts-dedent@2.2.0: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} @@ -15917,15 +16198,6 @@ packages: typescript: 5.3.3 dev: true - /tsconfig-paths-webpack-plugin@4.1.0: - resolution: {integrity: sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA==} - engines: {node: '>=10.13.0'} - dependencies: - chalk: 4.1.2 - enhanced-resolve: 5.15.0 - tsconfig-paths: 4.2.0 - dev: true - /tsconfig-paths@3.14.2: resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} dependencies: @@ -16051,14 +16323,10 @@ packages: engines: {node: '>=12.20'} dev: true - /type-fest@3.13.1: - resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} - engines: {node: '>=14.16'} - dev: false - /type-fest@4.18.2: resolution: {integrity: sha512-+suCYpfJLAe4OXS6+PPXjW3urOS4IoP9waSiLuXfLgqZODKw/aWwASvzqE886wA0kQgGy0mIWyhd87VpqIy6Xg==} engines: {node: '>=16'} + dev: true /type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} @@ -16102,12 +16370,6 @@ packages: for-each: 0.3.3 is-typed-array: 1.1.13 - /typedarray-to-buffer@3.1.5: - resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - dependencies: - is-typedarray: 1.0.0 - dev: false - /typesafe-path@0.2.2: resolution: {integrity: sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==} dev: true @@ -16123,10 +16385,6 @@ packages: engines: {node: '>=14.17'} hasBin: true - /ua-parser-js@1.0.35: - resolution: {integrity: sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA==} - dev: false - /ufo@1.5.0: resolution: {integrity: sha512-c7SxU8XB0LTO7hALl6CcE1Q92ZrLzr1iE0IVIsUa9SlFfkn2B2p6YLO6dLxOj7qCWY98PB3Q3EZbN6bEu8p7jA==} dev: true @@ -16158,6 +16416,7 @@ packages: /unicode-canonical-property-names-ecmascript@2.0.0: resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} engines: {node: '>=4'} + dev: true /unicode-match-property-ecmascript@2.0.0: resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} @@ -16165,19 +16424,17 @@ packages: dependencies: unicode-canonical-property-names-ecmascript: 2.0.0 unicode-property-aliases-ecmascript: 2.1.0 + dev: true /unicode-match-property-value-ecmascript@2.1.0: resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} engines: {node: '>=4'} + dev: true /unicode-property-aliases-ecmascript@2.1.0: resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} engines: {node: '>=4'} - - /unicorn-magic@0.1.0: - resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} - engines: {node: '>=18'} - dev: false + dev: true /unified@10.1.2: resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} @@ -16341,6 +16598,7 @@ packages: browserslist: 4.23.0 escalade: 3.1.2 picocolors: 1.0.0 + dev: true /update-section@0.3.3: resolution: {integrity: sha512-BpRZMZpgXLuTiKeiu7kK0nIPwGdyrqrs6EDSaXtjD/aQ2T+qVo9a5hRC3HN3iJjCMxNT/VxoLGQ7E/OzE5ucnw==} @@ -16416,6 +16674,7 @@ packages: dependencies: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 + dev: true /validate-npm-package-name@5.0.0: resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==} @@ -17004,15 +17263,6 @@ packages: signal-exit: 3.0.7 dev: true - /write-file-atomic@3.0.3: - resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} - dependencies: - imurmurhash: 0.1.4 - is-typedarray: 1.0.0 - signal-exit: 3.0.7 - typedarray-to-buffer: 3.1.5 - dev: false - /write-file-atomic@4.0.2: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -17021,28 +17271,6 @@ packages: signal-exit: 3.0.7 dev: true - /write-json-file@5.0.0: - resolution: {integrity: sha512-ddSsCLa4aQ3kI21BthINo4q905/wfhvQ3JL3774AcRjBaiQmfn5v4rw77jQ7T6CmAit9VOQO+FsLyPkwxoB1fw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - detect-indent: 7.0.1 - is-plain-obj: 4.1.0 - sort-keys: 5.0.0 - write-file-atomic: 3.0.3 - dev: false - - /write-pkg@7.0.0: - resolution: {integrity: sha512-wXBOrcEUstxZxfqy2hQO0O+c7wcwuVkZCCmBfaFtFssa5kcFqf7SQGYL6YtxKXt/O41z6reAPFJcumUyyiYnTQ==} - engines: {node: '>=16'} - deprecated: Renamed to write-package - dependencies: - deepmerge-ts: 5.1.0 - read-pkg: 8.1.0 - sort-keys: 5.0.0 - type-fest: 4.18.2 - write-json-file: 5.0.0 - dev: false - /ws@8.16.0: resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} engines: {node: '>=10.0.0'} @@ -17085,6 +17313,7 @@ packages: /yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index c1b172cad..7a359a0a0 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -2,3 +2,4 @@ packages: - 'apps/**' - 'libs/**' - 'tools/**' + - 'configs' diff --git a/tools/nx-plugins/npm-package/.eslintrc.js b/tools/nx-plugins/npm-package/.eslintrc.js deleted file mode 100644 index 141193947..000000000 --- a/tools/nx-plugins/npm-package/.eslintrc.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - extends: ['../../../.eslintrc.cjs'], - ignorePatterns: ['!**/*', 'node_modules'], - overrides: [ - { - files: ['*.ts', '*.tsx'], - parserOptions: { - project: ['tools/nx-plugins/npm-package/tsconfig.json'], - }, - rules: { - 'import/no-default-export': 'off', // Nx plugins export defaults - '@typescript-eslint/unbound-method': 'off', - }, - }, - ], -}; diff --git a/tools/nx-plugins/npm-package/build/get-compiler-options.ts b/tools/nx-plugins/npm-package/build/get-compiler-options.ts deleted file mode 100644 index 7b07e8842..000000000 --- a/tools/nx-plugins/npm-package/build/get-compiler-options.ts +++ /dev/null @@ -1,36 +0,0 @@ -import path from 'node:path'; -import type { ExecutorContext } from '@nx/devkit'; -import { - findConfigFile, - parseJsonConfigFileContent, - readConfigFile, - sys, -} from 'typescript'; -import type { BuildExecutorOptions } from './schema'; - -export const getCompilerOptions = ( - options: BuildExecutorOptions, - context: ExecutorContext, -) => { - const tsconfigPath = findConfigFile( - context.root, - sys.fileExists, - options.tsConfig, - ); - - if (tsconfigPath) { - // Read tsconfig.json file - const tsconfigFile = readConfigFile(tsconfigPath, sys.readFile); - - // Resolve extends - const parsedTsconfig = parseJsonConfigFileContent( - tsconfigFile.config, - sys, - path.dirname(tsconfigPath), - ); - - return parsedTsconfig.options; - } - - return {}; -}; diff --git a/tools/nx-plugins/npm-package/build/get-declared-deps.ts b/tools/nx-plugins/npm-package/build/get-declared-deps.ts deleted file mode 100644 index 59c1650e0..000000000 --- a/tools/nx-plugins/npm-package/build/get-declared-deps.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { isObject } from '@guardian/libs'; - -export const getDeclaredDeps = async (pkgPath: string) => { - /* eslint-disable @typescript-eslint/no-unsafe-assignment -- - json is an any - */ - const { dependencies, peerDependencies } = await import(pkgPath, { - assert: { type: 'json' }, - }); - - const deps: string[] = []; - - if (isObject(dependencies)) { - deps.push(...Object.keys(dependencies)); - } - - if (isObject(peerDependencies)) { - deps.push(...Object.keys(peerDependencies)); - } - /* eslint-enable @typescript-eslint/no-unsafe-assignment */ - - return deps; -}; diff --git a/tools/nx-plugins/npm-package/build/index.ts b/tools/nx-plugins/npm-package/build/index.ts deleted file mode 100644 index 2c8771ea9..000000000 --- a/tools/nx-plugins/npm-package/build/index.ts +++ /dev/null @@ -1,179 +0,0 @@ -import childProcess from 'node:child_process'; -import path from 'node:path'; -import util from 'node:util'; -import { isObject, isUndefined } from '@guardian/libs'; -import type { ExecutorContext } from '@nx/devkit'; -import { logger } from '@nx/devkit'; -import commonjs from '@rollup/plugin-commonjs'; -import json from '@rollup/plugin-json'; -import { nodeResolve } from '@rollup/plugin-node-resolve'; -import type Cpy from 'cpy'; -import type { OutputChunk } from 'rollup'; -import { rollup } from 'rollup'; -import ts from 'rollup-plugin-ts'; -import { ScriptTarget } from 'typescript'; -import { getCompilerOptions } from './get-compiler-options'; -import { getDeclaredDeps } from './get-declared-deps'; -import type { BuildExecutorOptions } from './schema'; -import { setPackageDefaults } from './set-package-defaults'; -import { writeResolvedPackageJson } from './write-resolved-package-json'; - -/** - * THIS IS KLUDGE #ES_NODE_MODULES - * - * lifted from https://github.com/nrwl/nx/pull/10414 - * - * @TODO once Nx allows esm imports, it should be removed - */ -// eslint-disable-next-line @typescript-eslint/no-implied-eval -- this is a kludge -const esmModuleImport = new Function('specifier', 'return import(specifier)'); - -const exec = util.promisify(childProcess.exec); - -// the order of these sets the order of the exports in the package.json -const formats = ['esm', 'cjs'] as const; - -type Format = (typeof formats)[number]; -type ImportType = 'import' | 'require'; - -// the exports field of the package.json -export type Exports = Record | undefined>; - -const getRollupConfig = ( - options: BuildExecutorOptions, - context: ExecutorContext, - format: Format, -) => { - const compilerOptions = getCompilerOptions(options, context); - - if (format === 'cjs') { - // Node 14 is eol 2023-04-30, so we should still support it - compilerOptions.target = ScriptTarget.ES2018; - } - - return { - strictDeprecations: true, - output: { - dir: `${options.outputPath}/${format}`, - format, - sourcemap: true, - preserveModules: true, - esModule: true, - }, - plugins: [ - nodeResolve({ - extensions: ['.ts', '.tsx', '.mjs', '.jsx', '.js', '.json'], - }), - ts({ - tsconfig: compilerOptions, - }), - json(), - commonjs(), - ], - }; -}; -export default async function buildExecutor( - options: BuildExecutorOptions, - context: ExecutorContext, -): Promise<{ success: boolean }> { - try { - options.pkgRoot = path.dirname(options.packageJson); - - // remove old build - await exec(`rm -rf ${options.outputPath}`); - - // create dist dir - await exec(`mkdir -p ${options.outputPath}`); - - // copy assets over - const { default: cpy } = (await esmModuleImport('cpy')) as { - default: typeof Cpy; - }; - await cpy(options.assets, options.outputPath, { - cwd: context.root, - flat: true, - }); - - // add a package.json with workspace deps resolved - await writeResolvedPackageJson(options, context); - - const packageExports: Exports = {}; - - if (options.entry) { - if (!options.tsConfig) { - logger.error( - "You must include a 'tsConfig' option when using the 'entry' option", - ); - return { success: false }; - } - - const input = isObject(options.entry) - ? options.entry - : { index: options.entry }; - - if (isUndefined(input.index)) { - logger.error( - "You must include a 'index' field when passing an object to the 'entry' option", - ); - return { success: false }; - } - - if ( - Object.keys(input).some( - (key) => key.startsWith('.') || key.startsWith('/'), - ) - ) { - logger.error("Keys in 'entry' option must not start with '.' or '/'"); - return { success: false }; - } - - // do not bundle dependencies - const deps = await getDeclaredDeps(options.packageJson); - const external = deps.map((dep) => new RegExp(`^${dep}`)); - - // create build for each module type - const builds = await Promise.all( - formats.map(async (format) => { - const { plugins, output } = getRollupConfig(options, context, format); - - const bundle = await rollup({ - input, - plugins, - external, - }); - const artefact = await bundle.write(output); - await bundle.close(); - - const outputs = artefact.output.filter( - (file) => file.type === 'chunk' && file.isEntry, - ) as OutputChunk[]; - - return outputs.map((output) => ({ - name: output.name, - path: `${format}/${output.fileName}`, - format, - })); - }), - ); - - for (const { name, path, format } of builds.flat()) { - const exportName = '.' + (name === 'index' ? '' : '/' + name); - - const packageExport = (packageExports[exportName] ||= {} as Record< - ImportType, - string - >); - - packageExport[format === 'cjs' ? 'require' : 'import'] = './' + path; - } - } - - // remove unwanted fields and set any necessary defaults in the package.json - await setPackageDefaults(options, packageExports); - - return { success: true }; - } catch (e) { - logger.error(e); - return { success: false }; - } -} diff --git a/tools/nx-plugins/npm-package/build/schema.d.ts b/tools/nx-plugins/npm-package/build/schema.d.ts deleted file mode 100644 index 8d37f258e..000000000 --- a/tools/nx-plugins/npm-package/build/schema.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -export interface BuildExecutorOptions { - entry?: string | Record; - outputPath: string; - tsConfig?: string; - packageJson: string; - assets: string[]; - pkgRoot: string; -} diff --git a/tools/nx-plugins/npm-package/build/schema.json b/tools/nx-plugins/npm-package/build/schema.json deleted file mode 100644 index 3d3e1c1f6..000000000 --- a/tools/nx-plugins/npm-package/build/schema.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema", - "type": "object", - "cli": "nx", - "properties": { - "entry": { - "oneOf": [ - { "type": "string" }, - { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - ], - "description": "The main entry-point file(s)." - }, - "outputPath": { - "type": "string", - "description": "The output path of the generated files." - }, - "tsConfig": { - "type": "string", - "description": "The path to the Typescript configuration file." - }, - "packageJson": { - "type": "string", - "description": "The path to package.json file." - }, - "assets": { - "type": "array", - "description": "List of static assets.", - "default": [], - "items": { - "type": "string" - } - } - }, - "required": ["outputPath", "packageJson"] -} diff --git a/tools/nx-plugins/npm-package/build/set-package-defaults.ts b/tools/nx-plugins/npm-package/build/set-package-defaults.ts deleted file mode 100644 index 063b9b08e..000000000 --- a/tools/nx-plugins/npm-package/build/set-package-defaults.ts +++ /dev/null @@ -1,88 +0,0 @@ -import path from 'node:path'; -import type * as ReadPackage from 'read-pkg'; -import type * as SortPkgJson from 'sort-package-json'; -import type { JsonObject } from 'type-fest'; -import type * as WritePackage from 'write-pkg'; -import type { BuildExecutorOptions } from './schema'; -import type { Exports } from './index'; - -/** - * THIS IS KLUDGE #ES_NODE_MODULES - * - * lifted from https://github.com/nrwl/nx/pull/10414 - * - * @TODO once Nx allows esm imports, it should be removed - */ -// eslint-disable-next-line @typescript-eslint/no-implied-eval -- this is a kludge -const esmModuleImport = new Function('specifier', 'return import(specifier)'); - -/** - * Sets some defaults in the package.json and removes things we - * don't want to publish. - */ -export const setPackageDefaults = async ( - options: BuildExecutorOptions, - packageExports: Exports, -) => { - const { readPackage } = (await esmModuleImport( - 'read-pkg', - )) as typeof ReadPackage; - const { writePackage } = (await esmModuleImport( - 'write-pkg', - )) as typeof WritePackage; - - const pkg = (await readPackage({ cwd: options.outputPath })) as Record< - string, - unknown - >; - - delete pkg.pnpm; - delete pkg.packageManager; - delete pkg.scripts; - delete pkg.devDependencies; - - const pkgDefaults: Record = { - license: 'MIT', - readme: 'README.md', - homepage: `https://github.com/guardian/csnx/tree/main/${options.pkgRoot}#readme`, - bugs: { - url: 'https://github.com/guardian/csnx/issues', - }, - repository: { - type: 'git', - url: 'git+https://github.com/guardian/csnx.git', - }, - }; - - if (!pkg.private) { - pkg.publishConfig = { - access: 'public', - }; - } - - const numberOfExports = Object.keys(packageExports).length; - - if (numberOfExports === 0) { - if (!pkg.main) { - throw new Error( - "You must add a 'main' field to your package.json, or pass an 'entry' option to the build executor", - ); - } - } else if (numberOfExports === 1) { - pkg.main = packageExports['.']?.require; - pkg.module = packageExports['.']?.import; - } else { - pkg.exports = packageExports; - } - - const { default: sortPkgJson } = (await esmModuleImport( - 'sort-package-json', - )) as typeof SortPkgJson; - - const sortedPkg = sortPkgJson({ - ...pkgDefaults, - ...pkg, - }) as JsonObject; - - await writePackage(path.join(options.outputPath, 'package.json'), sortedPkg); -}; diff --git a/tools/nx-plugins/npm-package/build/write-resolved-package-json.ts b/tools/nx-plugins/npm-package/build/write-resolved-package-json.ts deleted file mode 100644 index 790d91603..000000000 --- a/tools/nx-plugins/npm-package/build/write-resolved-package-json.ts +++ /dev/null @@ -1,56 +0,0 @@ -import path from 'node:path'; -import type { ExecutorContext } from '@nx/devkit'; -import type { execa as Execa } from 'execa'; -import type { BuildExecutorOptions } from './schema'; - -/** - * THIS IS KLUDGE #ES_NODE_MODULES - * - * lifted from https://github.com/nrwl/nx/pull/10414 - * - * @TODO once Nx allows esm imports, it should be removed - */ -// eslint-disable-next-line @typescript-eslint/no-implied-eval -- this is a kludge -const esmModuleImport = new Function('specifier', 'return import(specifier)'); - -/** Handles the use of `workspace:*`-style versions for dependencies in the same - * workspace (https://pnpm.io/workspaces). `pnpm` resolves them to the real path - * when running `pnpm publish` or `pnpm pack`, but because we're doing some - * slightly unorthodox stuff with Nx and changesets in the release process, we - * need these pre-resolved in the build output. - * */ -export const writeResolvedPackageJson = async ( - options: BuildExecutorOptions, - context: ExecutorContext, -) => { - const { execa } = (await esmModuleImport('execa')) as { - execa: typeof Execa; - }; - // `pnpm pack` the source package, into the output directory - const { stdout: tarballPath } = await execa( - `corepack`, - [ - `pnpm`, - `pack`, - `--pack-destination`, - path.resolve(context.root, options.outputPath), - ], - { - cwd: options.pkgRoot, - }, - ); - - // extract the package.json into the output directory - await execa(`tar`, [ - `-xvf`, - tarballPath.trim(), - `-C`, - options.outputPath, - `--strip-components`, - `1`, - `package/package.json`, - ]); - - // remove the tarball - await execa(`rm`, [`-rf`, tarballPath.trim()]); -}; diff --git a/tools/nx-plugins/npm-package/executors.json b/tools/nx-plugins/npm-package/executors.json deleted file mode 100644 index 7e474adfc..000000000 --- a/tools/nx-plugins/npm-package/executors.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema", - "executors": { - "build": { - "implementation": "./build/index.ts", - "schema": "./build/schema.json", - "description": "Bundles source code into an NPM package for publishing." - } - } -} diff --git a/tools/nx-plugins/npm-package/package.json b/tools/nx-plugins/npm-package/package.json deleted file mode 100644 index 407eaa740..000000000 --- a/tools/nx-plugins/npm-package/package.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "name": "@csnx/npm-package", - "private": true, - "scripts": { - "fix": "pnpm lint --fix", - "lint": "eslint --cache ." - }, - "dependencies": { - "@guardian/libs": "workspace:*", - "@rollup/plugin-commonjs": "25.0.7", - "@rollup/plugin-json": "6.1.0", - "@rollup/plugin-node-resolve": "15.2.3", - "cpy": "10.1.0", - "execa": "7.1.1", - "read-pkg": "9.0.1", - "rollup": "4.17.2", - "rollup-plugin-ts": "3.4.5", - "sort-package-json": "2.10.0", - "tslib": "2.6.2", - "type-fest": "4.18.2", - "typescript": "5.3.3", - "write-pkg": "7.0.0" - }, - "executors": "./executors.json", - "nx": { - "projectType": "library", - "tags": [ - "scope:tool" - ], - "targets": { - "lint": { - "inputs": [ - "{workspaceRoot}/tools/nx-plugins/npm-package/**/*", - "{workspaceRoot}/.eslintrc.js" - ] - }, - "fix": { - "inputs": [ - "{workspaceRoot}/tools/nx-plugins/npm-package/**/*", - "{workspaceRoot}/.eslintrc.js" - ], - "outputs": [ - "{workspaceRoot}/tools/nx-plugins/npm-package/" - ] - } - } - } -} diff --git a/tools/nx-plugins/npm-package/tsconfig.json b/tools/nx-plugins/npm-package/tsconfig.json deleted file mode 100644 index 3a236aa79..000000000 --- a/tools/nx-plugins/npm-package/tsconfig.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json" -} diff --git a/tsconfig.base.json b/tsconfig.base.json index 02d13de3a..5295eb35e 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -11,39 +11,6 @@ "jsx": "react-jsx", "jsxImportSource": "@emotion/react", "noEmit": true, - "paths": { - "@csnx/eslint": ["tools/nx-plugins/eslint"], - "@csnx/npm-package": ["tools/nx-plugins/npm-package"], - "@guardian/ab-core": ["libs/@guardian/ab-core/src/index"], - "@guardian/ab-react": ["libs/@guardian/ab-react/src/index"], - "@guardian/cobalt-plugin-ts": ["libs/@guardian/cobalt-plugin-ts/index"], - "@guardian/core-web-vitals": ["libs/@guardian/core-web-vitals/src/index"], - "@guardian/design-tokens": ["libs/@guardian/design-tokens/tokens"], - "@guardian/eslint-plugin-source-foundations": [ - "libs/@guardian/eslint-plugin-source-foundations/src/index" - ], - "@guardian/eslint-plugin-source-react-components": [ - "libs/@guardian/eslint-plugin-source-react-components/src/index" - ], - "@guardian/identity-auth": ["libs/@guardian/identity-auth/src/index"], - "@guardian/identity-auth-frontend": [ - "libs/@guardian/identity-auth-frontend/src/index" - ], - "@guardian/libs": ["libs/@guardian/libs/src/index"], - "@guardian/newsletters-types": [ - "libs/@guardian/newsletters-types/src/index" - ], - "@guardian/prettier": ["libs/@guardian/prettier/index"], - "@guardian/source-foundations": [ - "libs/@guardian/source-foundations/src/index" - ], - "@guardian/source-react-components": [ - "libs/@guardian/source-react-components/src/index" - ], - "@guardian/source-react-components-development-kitchen": [ - "libs/@guardian/source-react-components-development-kitchen/src/index" - ] - }, "rootDir": ".", "sourceMap": true, "moduleResolution": "bundler"