From 9075021ee7b7221a33d556531d533d8cc6fabc24 Mon Sep 17 00:00:00 2001 From: Victor Fernandez de Alba Date: Mon, 4 Nov 2024 16:58:15 +0100 Subject: [PATCH 01/47] Changelog --- packages/client/news/6466.internal | 1 + 1 file changed, 1 insertion(+) create mode 100644 packages/client/news/6466.internal diff --git a/packages/client/news/6466.internal b/packages/client/news/6466.internal new file mode 100644 index 0000000000..e38cefa66c --- /dev/null +++ b/packages/client/news/6466.internal @@ -0,0 +1 @@ +Replace `parcel` with `tsup`. @sneridagh From 60440ecd366a2d626fa2f5e00e97cc0f6d627f3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Fern=C3=A1ndez=20de=20Alba?= Date: Mon, 4 Nov 2024 20:33:16 +0100 Subject: [PATCH 02/47] Fix types, better exports and use tsup for build, remove parcel (#6461) Co-authored-by: Steve Piercy --- packages/client/news/6461.internal | 1 + packages/client/package.json | 4 +- packages/helpers/package.json | 2 +- packages/providers/news/6461.internal | 1 + packages/providers/package.json | 2 +- packages/registry/news/6461.bugfix | 1 + packages/registry/news/6461.internal | 1 + packages/registry/package.json | 43 +- .../src/addon-registry/addon-registry.ts | 47 +- .../addon-registry/create-addons-loader.ts | 3 +- .../src/addon-registry/create-theme-loader.ts | 2 +- packages/registry/tsconfig.json | 32 +- packages/registry/tsconfig.node.json | 8 +- packages/registry/tsup.config.ts | 9 + packages/scripts/i18n.cjs | 4 +- packages/scripts/news/6461.internal | 1 + packages/volto/news/6461.internal | 1 + packages/volto/package.json | 4 +- pnpm-lock.yaml | 603 ++++++++++++++++-- 19 files changed, 656 insertions(+), 113 deletions(-) create mode 100644 packages/client/news/6461.internal create mode 100644 packages/providers/news/6461.internal create mode 100644 packages/registry/news/6461.bugfix create mode 100644 packages/registry/news/6461.internal create mode 100644 packages/registry/tsup.config.ts create mode 100644 packages/scripts/news/6461.internal create mode 100644 packages/volto/news/6461.internal diff --git a/packages/client/news/6461.internal b/packages/client/news/6461.internal new file mode 100644 index 0000000000..96267e48f2 --- /dev/null +++ b/packages/client/news/6461.internal @@ -0,0 +1 @@ +Bump local `typescript` version. @sneridagh diff --git a/packages/client/package.json b/packages/client/package.json index d33b80c4f4..9e555c134b 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -83,8 +83,8 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "release-it": "17.1.1", - "tsup": "^8.0.2", - "typescript": "^5.4.5", + "tsup": "^8.3.5", + "typescript": "^5.6.3", "uuid": "^9.0.1", "vite": "^5.4.8", "vite-plugin-dts": "^3.7.3", diff --git a/packages/helpers/package.json b/packages/helpers/package.json index db697e84dc..55d7bd33c7 100644 --- a/packages/helpers/package.json +++ b/packages/helpers/package.json @@ -62,7 +62,7 @@ "parcel": "^2.12.0", "release-it": "^17.1.1", "tsconfig": "workspace:*", - "typescript": "^5.4.5", + "typescript": "^5.6.3", "vitest": "^2.1.3" } } diff --git a/packages/providers/news/6461.internal b/packages/providers/news/6461.internal new file mode 100644 index 0000000000..96267e48f2 --- /dev/null +++ b/packages/providers/news/6461.internal @@ -0,0 +1 @@ +Bump local `typescript` version. @sneridagh diff --git a/packages/providers/package.json b/packages/providers/package.json index 100c519771..6950e0b31a 100644 --- a/packages/providers/package.json +++ b/packages/providers/package.json @@ -79,7 +79,7 @@ "parcel": "^2.12.0", "release-it": "17.1.1", "tsconfig": "workspace:*", - "typescript": "^5.4.5", + "typescript": "^5.6.3", "vitest": "^2.1.3" } } diff --git a/packages/registry/news/6461.bugfix b/packages/registry/news/6461.bugfix new file mode 100644 index 0000000000..ec4a0ab820 --- /dev/null +++ b/packages/registry/news/6461.bugfix @@ -0,0 +1 @@ +Fix types for add-on's TypeScript. Fix `.tsconfig` for Node.js side. @sneridagh diff --git a/packages/registry/news/6461.internal b/packages/registry/news/6461.internal new file mode 100644 index 0000000000..47e581e30f --- /dev/null +++ b/packages/registry/news/6461.internal @@ -0,0 +1 @@ +Replace `parcel` with `tsup` for build. @sneridagh diff --git a/packages/registry/package.json b/packages/registry/package.json index 743a6c38d1..588d36f8d4 100644 --- a/packages/registry/package.json +++ b/packages/registry/package.json @@ -32,48 +32,34 @@ "access": "public" }, "type": "module", - "source": "src/index.ts", - "main": "dist/index.cjs", - "module": "dist/index.js", - "types": "dist/types.d.ts", + "main": "dist/index.js", "exports": { - "./src/*": "./src/*.cjs", + "./package.json": "./package.json", "./addon-registry": { - "require": "./dist/cjs/addon-registry.cjs", - "import": "./dist/esm/addon-registry.js", - "types": "./dist/esm/addon-registry.d.ts" + "import": "./dist/addon-registry/addon-registry.js", + "default": "./dist/addon-registry/addon-registry.cjs" }, "./create-addons-loader": { - "require": "./dist/cjs/create-addons-loader.cjs", - "import": "./dist/esm/create-addons-loader.js", - "types": "./dist/esm/create-addons-loader.d.ts" + "import": "./dist/addon-registry/create-addons-loader.js", + "default": "./dist/addon-registry/create-addons-loader.cjs" }, "./create-theme-loader": { - "require": "./dist/cjs/create-theme-loader.cjs", - "import": "./dist/esm/create-theme-loader.js", - "types": "./dist/esm/create-theme-loader.d.ts" + "import": "./dist/addon-registry/create-theme-loader.js", + "default": "./dist/addon-registry/create-theme-loader.cjs" }, "./vite-plugin": { "import": "./vite-plugin.js", "types": "./vite-plugin.d.ts" }, ".": { - "types": "./dist/types.d.ts", "import": "./dist/index.js", - "require": "./dist/index.cjs" - } - }, - "targets": { - "main": { - "includeNodeModules": false + "default": "./dist/index.cjs" } }, "scripts": { - "watch": "parcel watch", - "build": "parcel build && pnpm build:node:esm && pnpm build:node:cjs", - "build:force": "rm -rf dist && parcel build --no-cache && pnpm build:node:esm && pnpm build:node:cjs", - "build:node:esm": "tsc --project tsconfig.node.json || true", - "build:node:cjs": "tsc --project tsconfig.node.json --module commonjs --moduleResolution Node --outDir dist/cjs || true && make fix-build", + "build": "tsup", + "build:force": "rm -rf dist && tsup", + "check:exports": "attw --pack .", "test": "vitest", "test:debug": "vitest --inspect-brk --no-file-parallelism registry", "dry-release": "release-it --dry-run", @@ -99,8 +85,7 @@ "tmp": "0.2.1" }, "devDependencies": { - "@parcel/packager-ts": "^2.12.0", - "@parcel/transformer-typescript-types": "^2.12.0", + "@arethetypeswrong/cli": "^0.16.4", "@plone/types": "workspace:*", "@types/debug": "^4.1.12", "@types/glob": "^8.1.0", @@ -108,11 +93,11 @@ "@types/react": "^18", "@types/react-dom": "^18", "@types/tmp": "^0.2.6", - "parcel": "^2.12.0", "react": "^18.2.0", "react-dom": "^18.2.0", "release-it": "16.2.1", "tsconfig": "workspace:*", + "tsup": "^8.3.5", "typescript": "^5.6.3", "vite": "^5.4.8", "vitest": "^2.1.3" diff --git a/packages/registry/src/addon-registry/addon-registry.ts b/packages/registry/src/addon-registry/addon-registry.ts index 596d69e230..e4eb233c89 100644 --- a/packages/registry/src/addon-registry/addon-registry.ts +++ b/packages/registry/src/addon-registry/addon-registry.ts @@ -97,7 +97,10 @@ function buildDependencyGraph( } addons.forEach((loaderString) => { - const [name, extra] = loaderString.split(':'); + const [name, extra] = loaderString.split(':') as [ + string, + string | undefined, + ]; if (!graph.hasNode(name)) { graph.addNode(name, []); } @@ -199,7 +202,7 @@ class AddonRegistry { this.addonNames = this.resultantMergedAddons.map( (s: string) => s.split(':')[0], - ); + ) as Array; this.packages = {}; this.customizations = new Map(); @@ -215,14 +218,14 @@ class AddonRegistry { this.dependencyGraph = buildDependencyGraph( [ ...(Object.keys(this.coreAddons).map( - (key) => this.coreAddons[key].package, + (key) => this.coreAddons[key]?.package as string, ) || []), ...this.resultantMergedAddons, ...(process.env.ADDONS ? process.env.ADDONS.split(';') : []), ], (name) => { this.initPublishedPackage(name); - return this.packages[name].addons || []; + return this.packages[name]?.addons || []; }, ); @@ -361,14 +364,15 @@ class AddonRegistry { initDevelopmentPackage(name: string) { const [baseUrl, pathsConfig] = this.getTSConfigPaths(); if (pathsConfig && pathsConfig.hasOwnProperty(name)) { - const packagePath = `${this.projectRootPath}/${baseUrl}/${pathsConfig[name][0]}`; + const packagePath = `${this.projectRootPath}/${baseUrl}/${pathsConfig[name]![0]}`; const packageJsonPath = `${getPackageBasePath(packagePath)}/package.json`; const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8')); const innerAddons: Array = packageJson.addons || []; const innerAddonsNormalized = innerAddons.map((s) => s.split(':')[0]); if (this.addonNames.includes(name) && innerAddonsNormalized.length > 0) { innerAddonsNormalized.forEach((name) => { - if (!this.addonNames.includes(name)) this.addonNames.push(name); + if (!this.addonNames.includes(name as string)) + this.addonNames.push(name as string); }); } const pkg = { @@ -415,7 +419,8 @@ class AddonRegistry { const innerAddonsNormalized = innerAddons.map((s) => s.split(':')[0]); if (this.addonNames.includes(name) && innerAddonsNormalized.length > 0) { innerAddonsNormalized.forEach((name) => { - if (!this.addonNames.includes(name)) this.addonNames.push(name); + if (!this.addonNames.includes(name as string)) + this.addonNames.push(name as string); }); } const packageTSConfig = this.getTSConfigPaths(basePath); @@ -444,7 +449,7 @@ class AddonRegistry { // An add-on from the ADDONS env var can only be a published one initAddonFromEnvVar(name: string) { - const normalizedAddonName = name.split(':')[0]; + const normalizedAddonName = name.split(':')[0] as string; this.initPublishedPackage(normalizedAddonName); } @@ -460,14 +465,14 @@ class AddonRegistry { */ initAddonExtenders() { this.getAddons().forEach((addon) => { - const base = path.dirname(addon.packageJson); + const base = path.dirname(addon!.packageJson); const razzlePath = path.resolve(`${base}/razzle.extend.js`); if (fs.existsSync(razzlePath)) { - addon.razzleExtender = razzlePath; + addon!.razzleExtender = razzlePath; } const eslintPath = path.resolve(`${base}/eslint.extend.js`); if (fs.existsSync(eslintPath)) { - addon.eslintExtender = eslintPath; + addon!.eslintExtender = eslintPath; } }); } @@ -483,13 +488,13 @@ class AddonRegistry { getAddonExtenders() { return this.getAddons() - .map((o) => o.razzleExtender) + .map((o) => o?.razzleExtender) .filter((e) => e); } getEslintExtenders() { return this.getAddons() - .map((o) => o.eslintExtender) + .map((o) => o?.eslintExtender) .filter((e) => e); } @@ -503,11 +508,11 @@ class AddonRegistry { }; this.getAddonDependencies().forEach((addon) => { - const normalizedAddonName = addon.split(':')[0]; + const normalizedAddonName = addon.split(':')[0] as string; // We have two possible insertion points, variables and main - const customThemeVariables = `${this.packages[normalizedAddonName].modulePath}/theme/_variables.scss`; - const customThemeMain = `${this.packages[normalizedAddonName].modulePath}/theme/_main.scss`; + const customThemeVariables = `${this.packages[normalizedAddonName]?.modulePath}/theme/_variables.scss`; + const customThemeMain = `${this.packages[normalizedAddonName]?.modulePath}/theme/_main.scss`; if ( fs.existsSync(customThemeVariables) && normalizedAddonName !== this.theme @@ -555,12 +560,12 @@ class AddonRegistry { getResolveAliases() { const pairs: [string, string][] = Object.keys(this.packages).map((o) => [ o, - this.packages[o].modulePath, + this.packages[o]?.modulePath || '', ]); let aliasesFromTSPaths = {}; Object.keys(this.packages).forEach((o) => { - if (this.packages[o].tsConfigPaths) { + if (this.packages[o]?.tsConfigPaths) { aliasesFromTSPaths = { ...aliasesFromTSPaths, ...this.getAliasesFromTSConfig( @@ -734,8 +739,8 @@ class AddonRegistry { aliases = { ...aliases, ...this.getCustomizationPaths( - JSON.parse(fs.readFileSync(addon.packageJson, 'utf-8')), - getPackageBasePath(addon.modulePath), + JSON.parse(fs.readFileSync(addon!.packageJson, 'utf-8')), + getPackageBasePath(addon!.modulePath), ), }; }); @@ -805,7 +810,7 @@ class AddonRegistry { if (!seen.has(dep)) { seen.add(dep); - queue.push(dep); + queue.push(dep as string); } out += ` "${name}" -> "${dep}"\n`; } diff --git a/packages/registry/src/addon-registry/create-addons-loader.ts b/packages/registry/src/addon-registry/create-addons-loader.ts index 25b7d97545..3678242f75 100644 --- a/packages/registry/src/addon-registry/create-addons-loader.ts +++ b/packages/registry/src/addon-registry/create-addons-loader.ts @@ -46,10 +46,11 @@ Instead, change the "addons" setting in your package.json file. let extras: string[] | string[][] = []; // TODO: Improve this typing const addonConfigLoadInfo = addonConfigString.split(':'); const pkgName = addonConfigLoadInfo[0]; - const defaultImport = nameFromPackage(pkgName); + const defaultImport = nameFromPackage(pkgName as string); if (addonConfigLoadInfo.length > 1) { extras = addonConfigLoadInfo[1].split(','); } + // @ts-expect-error This forEach is a complete mess extras = extras.map((name) => [name, `${name}${counter++}`]); const line = `import ${defaultImport}${ extras.length diff --git a/packages/registry/src/addon-registry/create-theme-loader.ts b/packages/registry/src/addon-registry/create-theme-loader.ts index d5f4dbbc24..89a2911025 100644 --- a/packages/registry/src/addon-registry/create-theme-loader.ts +++ b/packages/registry/src/addon-registry/create-theme-loader.ts @@ -22,7 +22,7 @@ function nameFromPackage(name: string) { * Creates a static file with code necessary to load the addons configuration * */ -function getThemeLoaderCode(name, customThemeAddons = []) { +function getThemeLoaderCode(name: string, customThemeAddons = []) { let buf = `/* This file is autogenerated. Don't change it directly. Add a ./theme/_${name}.scss in your add-on to load your theme customizations in the current theme. diff --git a/packages/registry/tsconfig.json b/packages/registry/tsconfig.json index 1319106020..5ab3185eba 100644 --- a/packages/registry/tsconfig.json +++ b/packages/registry/tsconfig.json @@ -1,23 +1,30 @@ { "compilerOptions": { - "target": "ESNext", - "lib": ["DOM", "DOM.Iterable", "ESNext"], - "module": "commonjs", - "allowJs": true, - "skipLibCheck": true, "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "strictPropertyInitialization": false, - "moduleResolution": "Node", + "skipLibCheck": true, + "target": "es2022", + "allowJs": true, "resolveJsonModule": true, + "moduleDetection": "force", "isolatedModules": true, + "verbatimModuleSyntax": true, + + "strict": true, + "noImplicitOverride": true, + + "lib": ["es2022", "dom", "dom.iterable"], + "module": "preserve", "noEmit": true, + "jsx": "react-jsx", + + "allowSyntheticDefaultImports": true, + "forceConsistentCasingInFileNames": true, + "strictPropertyInitialization": false, + "paths": {} }, - "include": ["src/index.ts", "src/**/*.js", "src/**/*.cjs"], + "include": ["src/index.ts"], "exclude": [ "node_modules", "build", @@ -26,5 +33,6 @@ "src/**/*.test.{js,jsx,ts,tsx}", "src/**/*.spec.{js,jsx,ts,tsx}", "src/**/*.stories.{js,jsx,ts,tsx}" - ] + ], + "references": [{ "path": "./tsconfig.node.json" }] } diff --git a/packages/registry/tsconfig.node.json b/packages/registry/tsconfig.node.json index a25380a557..72d408d611 100644 --- a/packages/registry/tsconfig.node.json +++ b/packages/registry/tsconfig.node.json @@ -1,5 +1,6 @@ { "compilerOptions": { + "composite": true, /* Base Options: */ "esModuleInterop": true, "skipLibCheck": true, @@ -10,11 +11,10 @@ "isolatedModules": true, /* Strictness */ "strict": true, - "noUncheckedIndexedAccess": true, + "noImplicitOverride": true, /* If transpiling with TypeScript: */ - "moduleResolution": "NodeNext", - "module": "NodeNext", - "outDir": "dist/esm", + "module": "Preserve", + "outDir": "dist", "sourceMap": true, /* If your code doesn't run in the DOM: */ "lib": ["es2022"], diff --git a/packages/registry/tsup.config.ts b/packages/registry/tsup.config.ts new file mode 100644 index 0000000000..e5f2cb8fe2 --- /dev/null +++ b/packages/registry/tsup.config.ts @@ -0,0 +1,9 @@ +import { defineConfig } from 'tsup'; + +export default defineConfig({ + entryPoints: ['src/index.ts', 'src/addon-registry/**/*.ts'], + format: ['cjs', 'esm'], + dts: true, + outDir: 'dist', + clean: true, +}); diff --git a/packages/scripts/i18n.cjs b/packages/scripts/i18n.cjs index 439c860e67..e0c95cf399 100755 --- a/packages/scripts/i18n.cjs +++ b/packages/scripts/i18n.cjs @@ -283,14 +283,14 @@ function main({ addonMode }) { fs.existsSync( path.join( projectRootPath, - '/node_modules/@plone/registry/dist/cjs/addon-registry.cjs', + '/node_modules/@plone/registry/dist/addon-registry/addon-registry.cjs', ), ) ) { AddonRegistry = require( path.join( projectRootPath, - '/node_modules/@plone/registry/dist/cjs/addon-registry.cjs', + '/node_modules/@plone/registry/dist/addon-registry/addon-registry.cjs', ), ).AddonRegistry; // Detect where is the registry (if we are in Volto 18-alpha.46 or below) diff --git a/packages/scripts/news/6461.internal b/packages/scripts/news/6461.internal new file mode 100644 index 0000000000..7bbe93ec94 --- /dev/null +++ b/packages/scripts/news/6461.internal @@ -0,0 +1 @@ +Improve exports in `@plone/registry`. Adapt its detection in i18n script. @sneridagh diff --git a/packages/volto/news/6461.internal b/packages/volto/news/6461.internal new file mode 100644 index 0000000000..0c6205f6fb --- /dev/null +++ b/packages/volto/news/6461.internal @@ -0,0 +1 @@ +Improve exports in @plone/registry, adapt the Jest test setup. @sneridagh diff --git a/packages/volto/package.json b/packages/volto/package.json index da10ce6914..727196fd28 100644 --- a/packages/volto/package.json +++ b/packages/volto/package.json @@ -85,8 +85,8 @@ "@plone/volto/babel": "/babel.js", "@plone/volto/(.*)$": "/src/$1", "@plone/volto-slate/(.*)$": "/../volto-slate/src/$1", - "@plone/registry/addon-registry$": "/node_modules/@plone/registry/dist/esm/addon-registry.js", - "@plone/registry/create-addons-loader$": "/node_modules/@plone/registry/dist/esm/create-addons-loader.js", + "@plone/registry/addon-registry$": "/node_modules/@plone/registry/dist/addon-registry/addon-registry.js", + "@plone/registry/create-addons-loader$": "/node_modules/@plone/registry/dist/addon-registry/create-addons-loader.js", "@plone/registry": "/../registry/src", "@plone/registry/(.*)$": "/../registry/src/$1", "@plone/volto": "/src/index.js", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 835ea56f0c..d3b139d155 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -453,10 +453,10 @@ importers: specifier: 17.1.1 version: 17.1.1(typescript@5.6.3) tsup: - specifier: ^8.0.2 - version: 8.0.2(@microsoft/api-extractor@7.43.0(@types/node@20.12.7))(@swc/core@1.4.16(@swc/helpers@0.5.10))(postcss@8.4.47)(typescript@5.6.3) + specifier: ^8.3.5 + version: 8.3.5(@microsoft/api-extractor@7.43.0(@types/node@20.12.7))(@swc/core@1.4.16(@swc/helpers@0.5.10))(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.1)(typescript@5.6.3) typescript: - specifier: ^5.4.5 + specifier: ^5.6.3 version: 5.6.3 uuid: specifier: ^9.0.1 @@ -742,7 +742,7 @@ importers: specifier: workspace:* version: link:../tsconfig typescript: - specifier: ^5.4.5 + specifier: ^5.6.3 version: 5.6.3 vitest: specifier: ^2.1.3 @@ -809,7 +809,7 @@ importers: specifier: workspace:* version: link:../tsconfig typescript: - specifier: ^5.4.5 + specifier: ^5.6.3 version: 5.6.3 vitest: specifier: ^2.1.3 @@ -836,12 +836,9 @@ importers: specifier: 0.2.1 version: 0.2.1 devDependencies: - '@parcel/packager-ts': - specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/transformer-typescript-types': - specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)(typescript@5.6.3) + '@arethetypeswrong/cli': + specifier: ^0.16.4 + version: 0.16.4 '@plone/types': specifier: workspace:* version: link:../types @@ -863,9 +860,6 @@ importers: '@types/tmp': specifier: ^0.2.6 version: 0.2.6 - parcel: - specifier: ^2.12.0 - version: 2.12.0(@swc/helpers@0.5.10)(postcss@8.4.47)(relateurl@0.2.7)(srcset@4.0.0)(terser@5.30.3)(typescript@5.6.3) react: specifier: ^18.2.0 version: 18.2.0 @@ -878,6 +872,9 @@ importers: tsconfig: specifier: workspace:* version: link:../tsconfig + tsup: + specifier: ^8.3.5 + version: 8.3.5(@microsoft/api-extractor@7.43.0(@types/node@20.12.7))(@swc/core@1.4.16(@swc/helpers@0.5.10))(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.1)(typescript@5.6.3) typescript: specifier: ^5.6.3 version: 5.6.3 @@ -1775,6 +1772,18 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} + '@andrewbranch/untar.js@1.0.3': + resolution: {integrity: sha512-Jh15/qVmrLGhkKJBdXlK1+9tY4lZruYjsgkDFj08ZmDiWVBLJcqkok7Z0/R0In+i1rScBpJlSvrTS2Lm41Pbnw==} + + '@arethetypeswrong/cli@0.16.4': + resolution: {integrity: sha512-qMmdVlJon5FtA+ahn0c1oAVNxiq4xW5lqFiTZ21XHIeVwAVIQ+uRz4UEivqRMsjVV1grzRgJSKqaOrq1MvlVyQ==} + engines: {node: '>=18'} + hasBin: true + + '@arethetypeswrong/core@0.16.4': + resolution: {integrity: sha512-RI3HXgSuKTfcBf1hSEg1P9/cOvmI0flsMm6/QL3L3wju4AlHDqd55JFPfXs4pzgEAgy5L9pul4/HPPz99x2GvA==} + engines: {node: '>=18'} + '@aw-web-design/x-default-browser@1.4.126': resolution: {integrity: sha512-Xk1sIhyNC/esHGGVjL/niHLowM0csl/kFO5uawBy4IrWwy0o1G8LGt3jP6nmWGz+USxeeqbihAmp/oVZju6wug==} hasBin: true @@ -2825,6 +2834,12 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.24.0': + resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.17.6': resolution: {integrity: sha512-YnYSCceN/dUzUr5kdtUzB+wZprCafuD89Hs0Aqv9QSdwhYQybhXTaSTcrl6X/aWThn1a/j0eEpUBGOE7269REg==} engines: {node: '>=12'} @@ -2855,6 +2870,12 @@ packages: cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.24.0': + resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.17.6': resolution: {integrity: sha512-bSC9YVUjADDy1gae8RrioINU6e1lCkg3VGVwm0QQ2E1CWcC4gnMce9+B6RpxuSsrsXsk1yojn7sp1fnG8erE2g==} engines: {node: '>=12'} @@ -2885,6 +2906,12 @@ packages: cpu: [arm] os: [android] + '@esbuild/android-arm@0.24.0': + resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.17.6': resolution: {integrity: sha512-MVcYcgSO7pfu/x34uX9u2QIZHmXAB7dEiLQC5bBl5Ryqtpj9lT2sg3gNDEsrPEmimSJW2FXIaxqSQ501YLDsZQ==} engines: {node: '>=12'} @@ -2915,6 +2942,12 @@ packages: cpu: [x64] os: [android] + '@esbuild/android-x64@0.24.0': + resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.17.6': resolution: {integrity: sha512-bsDRvlbKMQMt6Wl08nHtFz++yoZHsyTOxnjfB2Q95gato+Yi4WnRl13oC2/PJJA9yLCoRv9gqT/EYX0/zDsyMA==} engines: {node: '>=12'} @@ -2945,6 +2978,12 @@ packages: cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.24.0': + resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.17.6': resolution: {integrity: sha512-xh2A5oPrYRfMFz74QXIQTQo8uA+hYzGWJFoeTE8EvoZGHb+idyV4ATaukaUvnnxJiauhs/fPx3vYhU4wiGfosg==} engines: {node: '>=12'} @@ -2975,6 +3014,12 @@ packages: cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.24.0': + resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.17.6': resolution: {integrity: sha512-EnUwjRc1inT4ccZh4pB3v1cIhohE2S4YXlt1OvI7sw/+pD+dIE4smwekZlEPIwY6PhU6oDWwITrQQm5S2/iZgg==} engines: {node: '>=12'} @@ -3005,6 +3050,12 @@ packages: cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.24.0': + resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.17.6': resolution: {integrity: sha512-Uh3HLWGzH6FwpviUcLMKPCbZUAFzv67Wj5MTwK6jn89b576SR2IbEp+tqUHTr8DIl0iDmBAf51MVaP7pw6PY5Q==} engines: {node: '>=12'} @@ -3035,6 +3086,12 @@ packages: cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.24.0': + resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.17.6': resolution: {integrity: sha512-bUR58IFOMJX523aDVozswnlp5yry7+0cRLCXDsxnUeQYJik1DukMY+apBsLOZJblpH+K7ox7YrKrHmJoWqVR9w==} engines: {node: '>=12'} @@ -3065,6 +3122,12 @@ packages: cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.24.0': + resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.17.6': resolution: {integrity: sha512-7YdGiurNt7lqO0Bf/U9/arrPWPqdPqcV6JCZda4LZgEn+PTQ5SMEI4MGR52Bfn3+d6bNEGcWFzlIxiQdS48YUw==} engines: {node: '>=12'} @@ -3095,6 +3158,12 @@ packages: cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.24.0': + resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.17.6': resolution: {integrity: sha512-ujp8uoQCM9FRcbDfkqECoARsLnLfCUhKARTP56TFPog8ie9JG83D5GVKjQ6yVrEVdMie1djH86fm98eY3quQkQ==} engines: {node: '>=12'} @@ -3125,6 +3194,12 @@ packages: cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.24.0': + resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.17.6': resolution: {integrity: sha512-y2NX1+X/Nt+izj9bLoiaYB9YXT/LoaQFYvCkVD77G/4F+/yuVXYCWz4SE9yr5CBMbOxOfBcy/xFL4LlOeNlzYQ==} engines: {node: '>=12'} @@ -3155,6 +3230,12 @@ packages: cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.24.0': + resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.17.6': resolution: {integrity: sha512-09AXKB1HDOzXD+j3FdXCiL/MWmZP0Ex9eR8DLMBVcHorrWJxWmY8Nms2Nm41iRM64WVx7bA/JVHMv081iP2kUA==} engines: {node: '>=12'} @@ -3185,6 +3266,12 @@ packages: cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.24.0': + resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.17.6': resolution: {integrity: sha512-AmLhMzkM8JuqTIOhxnX4ubh0XWJIznEynRnZAVdA2mMKE6FAfwT2TWKTwdqMG+qEaeyDPtfNoZRpJbD4ZBv0Tg==} engines: {node: '>=12'} @@ -3215,6 +3302,12 @@ packages: cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.24.0': + resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.17.6': resolution: {integrity: sha512-Y4Ri62PfavhLQhFbqucysHOmRamlTVK10zPWlqjNbj2XMea+BOs4w6ASKwQwAiqf9ZqcY9Ab7NOU4wIgpxwoSQ==} engines: {node: '>=12'} @@ -3245,6 +3338,12 @@ packages: cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.24.0': + resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.17.6': resolution: {integrity: sha512-SPUiz4fDbnNEm3JSdUW8pBJ/vkop3M1YwZAVwvdwlFLoJwKEZ9L98l3tzeyMzq27CyepDQ3Qgoba44StgbiN5Q==} engines: {node: '>=12'} @@ -3275,6 +3374,12 @@ packages: cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.24.0': + resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.17.6': resolution: {integrity: sha512-a3yHLmOodHrzuNgdpB7peFGPx1iJ2x6m+uDvhP2CKdr2CwOaqEFMeSqYAHU7hG+RjCq8r2NFujcd/YsEsFgTGw==} engines: {node: '>=12'} @@ -3305,6 +3410,12 @@ packages: cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.24.0': + resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-x64@0.17.6': resolution: {integrity: sha512-EanJqcU/4uZIBreTrnbnre2DXgXSa+Gjap7ifRfllpmyAU7YMvaXmljdArptTHmjrkkKm9BK6GH5D5Yo+p6y5A==} engines: {node: '>=12'} @@ -3335,12 +3446,24 @@ packages: cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.24.0': + resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + '@esbuild/openbsd-arm64@0.23.1': resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-arm64@0.24.0': + resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.17.6': resolution: {integrity: sha512-xaxeSunhQRsTNGFanoOkkLtnmMn5QbA0qBhNet/XLVsc+OVkpIWPHcr3zTW2gxVU5YOHFbIHR9ODuaUdNza2Vw==} engines: {node: '>=12'} @@ -3371,6 +3494,12 @@ packages: cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.24.0': + resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/sunos-x64@0.17.6': resolution: {integrity: sha512-gnMnMPg5pfMkZvhHee21KbKdc6W3GR8/JuE0Da1kjwpK6oiFU3nqfHuVPgUX2rsOx9N2SadSQTIYV1CIjYG+xw==} engines: {node: '>=12'} @@ -3401,6 +3530,12 @@ packages: cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.24.0': + resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.17.6': resolution: {integrity: sha512-G95n7vP1UnGJPsVdKXllAJPtqjMvFYbN20e8RK8LVLhlTiSOH1sd7+Gt7rm70xiG+I5tM58nYgwWrLs6I1jHqg==} engines: {node: '>=12'} @@ -3431,6 +3566,12 @@ packages: cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.24.0': + resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.17.6': resolution: {integrity: sha512-96yEFzLhq5bv9jJo5JhTs1gI+1cKQ83cUpyxHuGqXVwQtY5Eq54ZEsKs8veKtiKwlrNimtckHEkj4mRh4pPjsg==} engines: {node: '>=12'} @@ -3461,6 +3602,12 @@ packages: cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.24.0': + resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.17.6': resolution: {integrity: sha512-n6d8MOyUrNp6G4VSpRcgjs5xj4A91svJSaiwLIDWVWEsZtpN5FA9NlBbZHDmAJc2e8e6SF4tkBD3HAvPF+7igA==} engines: {node: '>=12'} @@ -3491,6 +3638,12 @@ packages: cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.24.0': + resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.4.0': resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -5625,6 +5778,10 @@ packages: resolution: {integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==} engines: {node: '>=6'} + '@sindresorhus/is@4.6.0': + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + '@sindresorhus/is@5.6.0': resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} engines: {node: '>=14.16'} @@ -7056,6 +7213,10 @@ packages: resolution: {integrity: sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==} engines: {node: '>=14.16'} + ansi-escapes@7.0.0: + resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} + engines: {node: '>=18'} + ansi-html-community@0.0.8: resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} engines: {'0': node >= 0.8.0} @@ -7077,6 +7238,10 @@ packages: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + ansi-styles@2.2.1: resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} engines: {node: '>=0.10.0'} @@ -7713,11 +7878,11 @@ packages: resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} engines: {node: '>=18'} - bundle-require@4.0.2: - resolution: {integrity: sha512-jwzPOChofl67PSTW2SGubV9HBQAhhR2i6nskiOThauo9dzwDUgOWQScFVaJkjEfYX+UXiD+LEx8EblQMc2wIag==} + bundle-require@5.0.0: + resolution: {integrity: sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} peerDependencies: - esbuild: '>=0.17' + esbuild: '>=0.18' bundlewatch@0.3.3: resolution: {integrity: sha512-qzSVWrZyyWXa546JpAPRPTFmnXms9YNVnfzB05DRJKmN6wRRa7SkxE4OgKQmbAY74Z6CM2mKAc6vwvd2R+1lUQ==} @@ -7907,6 +8072,10 @@ packages: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} + chokidar@4.0.1: + resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} + engines: {node: '>= 14.16.0'} + chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} @@ -7978,6 +8147,11 @@ packages: resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + cli-highlight@2.1.11: + resolution: {integrity: sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==} + engines: {node: '>=8.0.0', npm: '>=5.0.0'} + hasBin: true + cli-spinners@1.3.1: resolution: {integrity: sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==} engines: {node: '>=4'} @@ -7990,6 +8164,10 @@ packages: resolution: {integrity: sha512-Lm3L0p+/npIQWNIiyF/nAn7T5dnOwR3xNTHXYEBFBFVPXzCVNZ5lqEC/1eo/EVfpDsQ1I+TX4ORPQgp+UI0CRw==} engines: {node: 10.* || >= 12.*} + cli-table3@0.6.5: + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} + engines: {node: 10.* || >= 12.*} + cli-table@0.3.11: resolution: {integrity: sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==} engines: {node: '>= 0.2.0'} @@ -8020,6 +8198,9 @@ packages: cliui@6.0.0: resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} @@ -8120,6 +8301,10 @@ packages: comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + commander@11.1.0: resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} engines: {node: '>=16'} @@ -9123,6 +9308,9 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + emojilib@2.4.0: + resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==} + emojis-list@3.0.0: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} engines: {node: '>= 4'} @@ -9172,6 +9360,10 @@ packages: engines: {node: '>=4'} hasBin: true + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} + enzyme-shallow-equal@1.0.7: resolution: {integrity: sha512-/um0GFqUXnpM9SvKtje+9Tjoz3f1fpBC3eXRFrNs8kpYn69JljciYP7KZTqM/YQbUY9KUjvKB4jo/q+L6WGGvg==} @@ -9284,6 +9476,11 @@ packages: engines: {node: '>=18'} hasBin: true + esbuild@0.24.0: + resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==} + engines: {node: '>=18'} + hasBin: true + escalade@3.1.2: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} @@ -9731,6 +9928,14 @@ packages: fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + fdir@6.4.2: + resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + fetch-blob@3.2.0: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} @@ -9738,6 +9943,9 @@ packages: fetch-retry@5.0.6: resolution: {integrity: sha512-3yurQZ2hD9VISAhJJP9bpYFNQrHHBXE2JxxjY5aLEcDi46RmAzJE2OC9FAde0yis5ElW0jTTzs0zfg/Cca4XqQ==} + fflate@0.8.2: + resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} + figgy-pudding@3.5.2: resolution: {integrity: sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==} deprecated: This module is no longer supported. @@ -10415,6 +10623,9 @@ packages: hex-color-regex@1.1.0: resolution: {integrity: sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==} + highlight.js@10.7.3: + resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} + history@4.10.1: resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==} @@ -12184,6 +12395,9 @@ packages: resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} engines: {node: 14 || >=16.14} + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} @@ -12283,6 +12497,17 @@ packages: peerDependencies: react: '>= 0.14.0' + marked-terminal@7.2.1: + resolution: {integrity: sha512-rQ1MoMFXZICWNsKMiiHwP/Z+92PLKskTPXj+e7uwXmuMPkNn7iTqC+IvDekVm1MPeC9wYQeLxeFaOvudRR/XbQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + marked: '>=1 <15' + + marked@9.1.6: + resolution: {integrity: sha512-jcByLnIFkd5gSXZmjNvS1TlmRhCXZjIzHYlaGkPlLIekG55JDR2Z4va9tZwCiP+/RDERiNhMOFu01xd6O5ct1Q==} + engines: {node: '>= 16'} + hasBin: true + mathml-tag-names@2.1.3: resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==} @@ -12936,6 +13161,10 @@ packages: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} + node-emoji@2.1.3: + resolution: {integrity: sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==} + engines: {node: '>=18'} + node-fetch-native@1.6.4: resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} @@ -13442,6 +13671,12 @@ packages: parse-url@8.1.0: resolution: {integrity: sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==} + parse5-htmlparser2-tree-adapter@6.0.1: + resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==} + + parse5@5.1.1: + resolution: {integrity: sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==} + parse5@6.0.1: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} @@ -13554,10 +13789,17 @@ packages: picocolors@1.1.0: resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + pidtree@0.6.0: resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} engines: {node: '>=0.10'} @@ -13688,6 +13930,24 @@ packages: ts-node: optional: true + postcss-load-config@6.0.1: + resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} + engines: {node: '>= 18'} + peerDependencies: + jiti: '>=1.21.0' + postcss: '>=8.0.9' + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + jiti: + optional: true + postcss: + optional: true + tsx: + optional: true + yaml: + optional: true + postcss-loader@4.3.0: resolution: {integrity: sha512-M/dSoIiNDOo8Rk0mUqoj4kpGq91gcxCfb9PoyZVdZ76/AuhxylHDYZblNE8o+EQ9AMSASeMFEKxZf5aU6wlx1Q==} engines: {node: '>= 10.13.0'} @@ -14623,6 +14883,10 @@ packages: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} + readdirp@4.0.2: + resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} + engines: {node: '>= 14.16.0'} + recast@0.23.6: resolution: {integrity: sha512-9FHoNjX1yjuesMwuthAmPKabxYQdOgihFYmT5ebXfYGBcnqXZf3WOVz+5foEZ8Y83P4ZY6yQD5GMmtV+pgCCAQ==} engines: {node: '>= 4'} @@ -15293,6 +15557,10 @@ packages: sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + skin-tone@2.0.0: + resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} + engines: {node: '>=8'} + slash@1.0.0: resolution: {integrity: sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==} engines: {node: '>=0.10.0'} @@ -15806,6 +16074,10 @@ packages: resolution: {integrity: sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==} engines: {node: '>=14.18'} + supports-hyperlinks@3.1.0: + resolution: {integrity: sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==} + engines: {node: '>=14.18'} + supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -16000,6 +16272,13 @@ packages: tinyexec@0.3.0: resolution: {integrity: sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==} + tinyexec@0.3.1: + resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==} + + tinyglobby@0.2.10: + resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==} + engines: {node: '>=12.0.0'} + tinypool@1.0.1: resolution: {integrity: sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -16183,8 +16462,8 @@ packages: tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - tsup@8.0.2: - resolution: {integrity: sha512-NY8xtQXdH7hDUAZwcQdY/Vzlw9johQsaqf7iwZ6g1DOUlFYQ5/AtVAjTvihhEyeRlGo4dLRVHtrRaL35M1daqQ==} + tsup@8.3.5: + resolution: {integrity: sha512-Tunf6r6m6tnZsG9GYWndg0z8dEV7fD733VBFzFJ5Vcm1FtlXB8xBD/rtrBi2a3YKEV7hHtxiZtW5EAVADoe1pA==} engines: {node: '>=18'} hasBin: true peerDependencies: @@ -16297,6 +16576,11 @@ packages: engines: {node: '>=14.17'} hasBin: true + typescript@5.6.1-rc: + resolution: {integrity: sha512-E3b2+1zEFu84jB0YQi9BORDjz9+jGbwwy1Zi3G0LUNw7a7cePUrHMRNy8aPh53nXpkFGVHSxIZo5vKTfYaFiBQ==} + engines: {node: '>=14.17'} + hasBin: true + typescript@5.6.3: resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} engines: {node: '>=14.17'} @@ -16352,6 +16636,10 @@ packages: resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} engines: {node: '>=4'} + unicode-emoji-modifier-base@1.0.0: + resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} + engines: {node: '>=4'} + unicode-match-property-ecmascript@2.0.0: resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} engines: {node: '>=4'} @@ -17311,6 +17599,10 @@ packages: resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} engines: {node: '>=8'} + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + yargs@17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} @@ -17381,6 +17673,28 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 + '@andrewbranch/untar.js@1.0.3': {} + + '@arethetypeswrong/cli@0.16.4': + dependencies: + '@arethetypeswrong/core': 0.16.4 + chalk: 4.1.2 + cli-table3: 0.6.4 + commander: 10.0.1 + marked: 9.1.6 + marked-terminal: 7.2.1(marked@9.1.6) + semver: 7.6.3 + + '@arethetypeswrong/core@0.16.4': + dependencies: + '@andrewbranch/untar.js': 1.0.3 + cjs-module-lexer: 1.2.3 + fflate: 0.8.2 + lru-cache: 10.4.3 + semver: 7.6.3 + typescript: 5.6.1-rc + validate-npm-package-name: 5.0.0 + '@aw-web-design/x-default-browser@1.4.126': dependencies: default-browser-id: 3.0.0 @@ -18692,6 +19006,9 @@ snapshots: '@esbuild/aix-ppc64@0.23.1': optional: true + '@esbuild/aix-ppc64@0.24.0': + optional: true + '@esbuild/android-arm64@0.17.6': optional: true @@ -18707,6 +19024,9 @@ snapshots: '@esbuild/android-arm64@0.23.1': optional: true + '@esbuild/android-arm64@0.24.0': + optional: true + '@esbuild/android-arm@0.17.6': optional: true @@ -18722,6 +19042,9 @@ snapshots: '@esbuild/android-arm@0.23.1': optional: true + '@esbuild/android-arm@0.24.0': + optional: true + '@esbuild/android-x64@0.17.6': optional: true @@ -18737,6 +19060,9 @@ snapshots: '@esbuild/android-x64@0.23.1': optional: true + '@esbuild/android-x64@0.24.0': + optional: true + '@esbuild/darwin-arm64@0.17.6': optional: true @@ -18752,6 +19078,9 @@ snapshots: '@esbuild/darwin-arm64@0.23.1': optional: true + '@esbuild/darwin-arm64@0.24.0': + optional: true + '@esbuild/darwin-x64@0.17.6': optional: true @@ -18767,6 +19096,9 @@ snapshots: '@esbuild/darwin-x64@0.23.1': optional: true + '@esbuild/darwin-x64@0.24.0': + optional: true + '@esbuild/freebsd-arm64@0.17.6': optional: true @@ -18782,6 +19114,9 @@ snapshots: '@esbuild/freebsd-arm64@0.23.1': optional: true + '@esbuild/freebsd-arm64@0.24.0': + optional: true + '@esbuild/freebsd-x64@0.17.6': optional: true @@ -18797,6 +19132,9 @@ snapshots: '@esbuild/freebsd-x64@0.23.1': optional: true + '@esbuild/freebsd-x64@0.24.0': + optional: true + '@esbuild/linux-arm64@0.17.6': optional: true @@ -18812,6 +19150,9 @@ snapshots: '@esbuild/linux-arm64@0.23.1': optional: true + '@esbuild/linux-arm64@0.24.0': + optional: true + '@esbuild/linux-arm@0.17.6': optional: true @@ -18827,6 +19168,9 @@ snapshots: '@esbuild/linux-arm@0.23.1': optional: true + '@esbuild/linux-arm@0.24.0': + optional: true + '@esbuild/linux-ia32@0.17.6': optional: true @@ -18842,6 +19186,9 @@ snapshots: '@esbuild/linux-ia32@0.23.1': optional: true + '@esbuild/linux-ia32@0.24.0': + optional: true + '@esbuild/linux-loong64@0.17.6': optional: true @@ -18857,6 +19204,9 @@ snapshots: '@esbuild/linux-loong64@0.23.1': optional: true + '@esbuild/linux-loong64@0.24.0': + optional: true + '@esbuild/linux-mips64el@0.17.6': optional: true @@ -18872,6 +19222,9 @@ snapshots: '@esbuild/linux-mips64el@0.23.1': optional: true + '@esbuild/linux-mips64el@0.24.0': + optional: true + '@esbuild/linux-ppc64@0.17.6': optional: true @@ -18887,6 +19240,9 @@ snapshots: '@esbuild/linux-ppc64@0.23.1': optional: true + '@esbuild/linux-ppc64@0.24.0': + optional: true + '@esbuild/linux-riscv64@0.17.6': optional: true @@ -18902,6 +19258,9 @@ snapshots: '@esbuild/linux-riscv64@0.23.1': optional: true + '@esbuild/linux-riscv64@0.24.0': + optional: true + '@esbuild/linux-s390x@0.17.6': optional: true @@ -18917,6 +19276,9 @@ snapshots: '@esbuild/linux-s390x@0.23.1': optional: true + '@esbuild/linux-s390x@0.24.0': + optional: true + '@esbuild/linux-x64@0.17.6': optional: true @@ -18932,6 +19294,9 @@ snapshots: '@esbuild/linux-x64@0.23.1': optional: true + '@esbuild/linux-x64@0.24.0': + optional: true + '@esbuild/netbsd-x64@0.17.6': optional: true @@ -18947,9 +19312,15 @@ snapshots: '@esbuild/netbsd-x64@0.23.1': optional: true + '@esbuild/netbsd-x64@0.24.0': + optional: true + '@esbuild/openbsd-arm64@0.23.1': optional: true + '@esbuild/openbsd-arm64@0.24.0': + optional: true + '@esbuild/openbsd-x64@0.17.6': optional: true @@ -18965,6 +19336,9 @@ snapshots: '@esbuild/openbsd-x64@0.23.1': optional: true + '@esbuild/openbsd-x64@0.24.0': + optional: true + '@esbuild/sunos-x64@0.17.6': optional: true @@ -18980,6 +19354,9 @@ snapshots: '@esbuild/sunos-x64@0.23.1': optional: true + '@esbuild/sunos-x64@0.24.0': + optional: true + '@esbuild/win32-arm64@0.17.6': optional: true @@ -18995,6 +19372,9 @@ snapshots: '@esbuild/win32-arm64@0.23.1': optional: true + '@esbuild/win32-arm64@0.24.0': + optional: true + '@esbuild/win32-ia32@0.17.6': optional: true @@ -19010,6 +19390,9 @@ snapshots: '@esbuild/win32-ia32@0.23.1': optional: true + '@esbuild/win32-ia32@0.24.0': + optional: true + '@esbuild/win32-x64@0.17.6': optional: true @@ -19025,6 +19408,9 @@ snapshots: '@esbuild/win32-x64@0.23.1': optional: true + '@esbuild/win32-x64@0.24.0': + optional: true + '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': dependencies: eslint: 8.57.0 @@ -22350,6 +22736,8 @@ snapshots: '@sindresorhus/is@0.14.0': {} + '@sindresorhus/is@4.6.0': {} + '@sindresorhus/is@5.6.0': {} '@sindresorhus/merge-streams@2.3.0': {} @@ -23971,7 +24359,7 @@ snapshots: graphemer: 1.4.0 ignore: 5.3.1 natural-compare-lite: 1.4.0 - semver: 7.6.0 + semver: 7.6.3 tsutils: 3.21.0(typescript@5.6.3) optionalDependencies: typescript: 5.6.3 @@ -24709,6 +25097,10 @@ snapshots: ansi-escapes@6.2.1: {} + ansi-escapes@7.0.0: + dependencies: + environment: 1.1.0 + ansi-html-community@0.0.8: {} ansi-regex@2.1.1: {} @@ -24719,6 +25111,8 @@ snapshots: ansi-regex@6.0.1: {} + ansi-regex@6.1.0: {} + ansi-styles@2.2.1: {} ansi-styles@3.2.1: @@ -25665,9 +26059,9 @@ snapshots: dependencies: run-applescript: 7.0.0 - bundle-require@4.0.2(esbuild@0.19.12): + bundle-require@5.0.0(esbuild@0.24.0): dependencies: - esbuild: 0.19.12 + esbuild: 0.24.0 load-tsconfig: 0.2.5 bundlewatch@0.3.3(debug@4.3.2): @@ -25953,7 +26347,7 @@ snapshots: chokidar@3.6.0: dependencies: anymatch: 3.1.3 - braces: 3.0.2 + braces: 3.0.3 glob-parent: 5.1.2 is-binary-path: 2.1.0 is-glob: 4.0.3 @@ -25962,6 +26356,10 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + chokidar@4.0.1: + dependencies: + readdirp: 4.0.2 + chownr@1.1.4: {} chownr@2.0.0: {} @@ -26017,6 +26415,15 @@ snapshots: dependencies: restore-cursor: 4.0.0 + cli-highlight@2.1.11: + dependencies: + chalk: 4.1.2 + highlight.js: 10.7.3 + mz: 2.6.0 + parse5: 5.1.1 + parse5-htmlparser2-tree-adapter: 6.0.1 + yargs: 16.2.0 + cli-spinners@1.3.1: {} cli-spinners@2.9.2: {} @@ -26027,6 +26434,12 @@ snapshots: optionalDependencies: '@colors/colors': 1.5.0 + cli-table3@0.6.5: + dependencies: + string-width: 4.2.3 + optionalDependencies: + '@colors/colors': 1.5.0 + cli-table@0.3.11: dependencies: colors: 1.0.3 @@ -26059,6 +26472,12 @@ snapshots: strip-ansi: 6.0.1 wrap-ansi: 6.2.0 + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + cliui@8.0.1: dependencies: string-width: 4.2.3 @@ -26150,6 +26569,8 @@ snapshots: comma-separated-tokens@2.0.3: {} + commander@10.0.1: {} + commander@11.1.0: {} commander@2.20.3: {} @@ -27200,6 +27621,8 @@ snapshots: emoji-regex@9.2.2: {} + emojilib@2.4.0: {} + emojis-list@3.0.0: {} encodeurl@1.0.2: {} @@ -27240,6 +27663,8 @@ snapshots: envinfo@7.12.0: {} + environment@1.1.0: {} + enzyme-shallow-equal@1.0.7: dependencies: hasown: 2.0.2 @@ -27536,6 +27961,33 @@ snapshots: '@esbuild/win32-ia32': 0.23.1 '@esbuild/win32-x64': 0.23.1 + esbuild@0.24.0: + optionalDependencies: + '@esbuild/aix-ppc64': 0.24.0 + '@esbuild/android-arm': 0.24.0 + '@esbuild/android-arm64': 0.24.0 + '@esbuild/android-x64': 0.24.0 + '@esbuild/darwin-arm64': 0.24.0 + '@esbuild/darwin-x64': 0.24.0 + '@esbuild/freebsd-arm64': 0.24.0 + '@esbuild/freebsd-x64': 0.24.0 + '@esbuild/linux-arm': 0.24.0 + '@esbuild/linux-arm64': 0.24.0 + '@esbuild/linux-ia32': 0.24.0 + '@esbuild/linux-loong64': 0.24.0 + '@esbuild/linux-mips64el': 0.24.0 + '@esbuild/linux-ppc64': 0.24.0 + '@esbuild/linux-riscv64': 0.24.0 + '@esbuild/linux-s390x': 0.24.0 + '@esbuild/linux-x64': 0.24.0 + '@esbuild/netbsd-x64': 0.24.0 + '@esbuild/openbsd-arm64': 0.24.0 + '@esbuild/openbsd-x64': 0.24.0 + '@esbuild/sunos-x64': 0.24.0 + '@esbuild/win32-arm64': 0.24.0 + '@esbuild/win32-ia32': 0.24.0 + '@esbuild/win32-x64': 0.24.0 + escalade@3.1.2: {} escalade@3.2.0: {} @@ -28294,6 +28746,10 @@ snapshots: dependencies: pend: 1.2.0 + fdir@6.4.2(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + fetch-blob@3.2.0: dependencies: node-domexception: 1.0.0 @@ -28301,6 +28757,8 @@ snapshots: fetch-retry@5.0.6: {} + fflate@0.8.2: {} + figgy-pudding@3.5.2: {} figures@3.2.0: @@ -29136,6 +29594,8 @@ snapshots: hex-color-regex@1.1.0: {} + highlight.js@10.7.3: {} + history@4.10.1: dependencies: '@babel/runtime': 7.20.6 @@ -31406,6 +31866,8 @@ snapshots: lru-cache@10.2.0: {} + lru-cache@10.4.3: {} + lru-cache@4.1.5: dependencies: pseudomap: 1.0.2 @@ -31555,6 +32017,19 @@ snapshots: dependencies: react: 18.2.0 + marked-terminal@7.2.1(marked@9.1.6): + dependencies: + ansi-escapes: 7.0.0 + ansi-regex: 6.1.0 + chalk: 5.3.0 + cli-highlight: 2.1.11 + cli-table3: 0.6.5 + marked: 9.1.6 + node-emoji: 2.1.3 + supports-hyperlinks: 3.1.0 + + marked@9.1.6: {} + mathml-tag-names@2.1.3: {} mdast-util-definitions@5.1.2: @@ -32694,6 +33169,13 @@ snapshots: node-domexception@1.0.0: {} + node-emoji@2.1.3: + dependencies: + '@sindresorhus/is': 4.6.0 + char-regex: 1.0.2 + emojilib: 2.4.0 + skin-tone: 2.0.0 + node-fetch-native@1.6.4: {} node-fetch@1.7.3: @@ -33396,6 +33878,12 @@ snapshots: dependencies: parse-path: 7.0.0 + parse5-htmlparser2-tree-adapter@6.0.1: + dependencies: + parse5: 6.0.1 + + parse5@5.1.1: {} + parse5@6.0.1: {} parse5@7.1.2: @@ -33482,8 +33970,12 @@ snapshots: picocolors@1.1.0: {} + picocolors@1.1.1: {} + picomatch@2.3.1: {} + picomatch@4.0.2: {} + pidtree@0.6.0: {} pify@2.3.0: {} @@ -33601,12 +34093,13 @@ snapshots: optionalDependencies: postcss: 8.4.31 - postcss-load-config@4.0.2(postcss@8.4.47): + postcss-load-config@6.0.1(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.1): dependencies: lilconfig: 3.1.1 - yaml: 2.4.1 optionalDependencies: + jiti: 1.21.6 postcss: 8.4.47 + tsx: 4.19.1 postcss-loader@4.3.0(postcss@8.4.31)(webpack@5.90.1(esbuild@0.20.2)): dependencies: @@ -33615,7 +34108,7 @@ snapshots: loader-utils: 2.0.4 postcss: 8.4.31 schema-utils: 3.3.0 - semver: 7.6.0 + semver: 7.6.3 webpack: 5.90.1(esbuild@0.20.2) postcss-loader@7.0.2(postcss@8.4.31)(webpack@5.90.1(esbuild@0.20.2)): @@ -34991,6 +35484,8 @@ snapshots: dependencies: picomatch: 2.3.1 + readdirp@4.0.2: {} + recast@0.23.6: dependencies: ast-types: 0.16.1 @@ -35581,7 +36076,7 @@ snapshots: loader-utils: 2.0.4 neo-async: 2.6.2 schema-utils: 3.3.0 - semver: 7.6.0 + semver: 7.6.3 webpack: 5.90.1(esbuild@0.20.2) optionalDependencies: sass: 1.75.0 @@ -35894,6 +36389,10 @@ snapshots: sisteransi@1.0.5: {} + skin-tone@2.0.0: + dependencies: + unicode-emoji-modifier-base: 1.0.0 + slash@1.0.0: {} slash@3.0.0: {} @@ -36519,6 +37018,11 @@ snapshots: has-flag: 4.0.0 supports-color: 7.2.0 + supports-hyperlinks@3.1.0: + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + supports-preserve-symlinks-flag@1.0.0: {} svg-loader@0.0.2: {} @@ -36736,6 +37240,13 @@ snapshots: tinyexec@0.3.0: {} + tinyexec@0.3.1: {} + + tinyglobby@0.2.10: + dependencies: + fdir: 6.4.2(picomatch@4.0.2) + picomatch: 4.0.2 + tinypool@1.0.1: {} tinyrainbow@1.2.0: {} @@ -36891,21 +37402,23 @@ snapshots: tslib@2.6.2: {} - tsup@8.0.2(@microsoft/api-extractor@7.43.0(@types/node@20.12.7))(@swc/core@1.4.16(@swc/helpers@0.5.10))(postcss@8.4.47)(typescript@5.6.3): + tsup@8.3.5(@microsoft/api-extractor@7.43.0(@types/node@20.12.7))(@swc/core@1.4.16(@swc/helpers@0.5.10))(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.1)(typescript@5.6.3): dependencies: - bundle-require: 4.0.2(esbuild@0.19.12) + bundle-require: 5.0.0(esbuild@0.24.0) cac: 6.7.14 - chokidar: 3.6.0 - debug: 4.3.4(supports-color@8.1.1) - esbuild: 0.19.12 - execa: 5.1.1 - globby: 11.1.0 + chokidar: 4.0.1 + consola: 3.2.3 + debug: 4.3.7 + esbuild: 0.24.0 joycon: 3.1.1 - postcss-load-config: 4.0.2(postcss@8.4.47) + picocolors: 1.1.1 + postcss-load-config: 6.0.1(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.1) resolve-from: 5.0.0 - rollup: 4.14.3 + rollup: 4.24.0 source-map: 0.8.0-beta.0 sucrase: 3.35.0 + tinyexec: 0.3.1 + tinyglobby: 0.2.10 tree-kill: 1.2.2 optionalDependencies: '@microsoft/api-extractor': 7.43.0(@types/node@20.12.7) @@ -36913,8 +37426,10 @@ snapshots: postcss: 8.4.47 typescript: 5.6.3 transitivePeerDependencies: + - jiti - supports-color - - ts-node + - tsx + - yaml tsutils@3.21.0(typescript@5.6.3): dependencies: @@ -37011,6 +37526,8 @@ snapshots: typescript@5.4.2: {} + typescript@5.6.1-rc: {} + typescript@5.6.3: {} ua-parser-js@0.7.37: {} @@ -37071,6 +37588,8 @@ snapshots: unicode-canonical-property-names-ecmascript@2.0.0: {} + unicode-emoji-modifier-base@1.0.0: {} + unicode-match-property-ecmascript@2.0.0: dependencies: unicode-canonical-property-names-ecmascript: 2.0.0 @@ -38313,6 +38832,16 @@ snapshots: y18n: 4.0.3 yargs-parser: 18.1.3 + yargs@16.2.0: + dependencies: + cliui: 7.0.4 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + yargs@17.7.2: dependencies: cliui: 8.0.1 From 57731c7615465f58d1514b91aca75102ae36b232 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Fern=C3=A1ndez=20de=20Alba?= Date: Mon, 4 Nov 2024 22:09:43 +0100 Subject: [PATCH 03/47] [client] Replace `parcel` with `tsup` (#6466) --- packages/client/.parcelrc | 9 ---- packages/client/package.json | 30 ++++-------- packages/client/src/API.ts | 2 +- packages/client/src/client.ts | 2 +- packages/client/src/restapi/actions/get.ts | 6 +-- packages/client/src/restapi/addons/get.ts | 6 +-- .../client/src/restapi/addons/get_list.ts | 6 +-- packages/client/src/restapi/addons/install.ts | 4 +- .../src/restapi/addons/install_profile.ts | 4 +- .../client/src/restapi/addons/unistall.ts | 4 +- packages/client/src/restapi/addons/upgrade.ts | 4 +- packages/client/src/restapi/aliases/add.ts | 4 +- .../src/restapi/aliases/add_multiple.ts | 4 +- packages/client/src/restapi/aliases/delete.ts | 4 +- packages/client/src/restapi/aliases/get.ts | 6 +-- .../client/src/restapi/aliases/get_list.ts | 6 +-- .../client/src/restapi/breadcrumbs/get.ts | 6 +-- packages/client/src/restapi/comments/add.ts | 4 +- .../client/src/restapi/comments/delete.ts | 4 +- packages/client/src/restapi/comments/get.ts | 6 +-- .../client/src/restapi/comments/update.ts | 4 +- packages/client/src/restapi/content/add.ts | 6 +-- packages/client/src/restapi/content/delete.ts | 4 +- packages/client/src/restapi/content/get.ts | 6 +-- packages/client/src/restapi/content/update.ts | 6 +-- .../src/restapi/contextnavigation/get.ts | 6 +-- .../client/src/restapi/controlpanels/add.ts | 4 +- .../src/restapi/controlpanels/delete.ts | 4 +- .../client/src/restapi/controlpanels/get.ts | 6 +-- .../src/restapi/controlpanels/get_list.ts | 6 +-- .../src/restapi/controlpanels/update.ts | 4 +- packages/client/src/restapi/copymove/copy.ts | 6 +-- packages/client/src/restapi/copymove/move.ts | 6 +-- packages/client/src/restapi/database/get.ts | 6 +-- .../src/restapi/email-notification/post.ts | 4 +- .../client/src/restapi/email-send/post.ts | 4 +- packages/client/src/restapi/groups/add.ts | 6 +-- packages/client/src/restapi/groups/delete.ts | 4 +- packages/client/src/restapi/groups/get.ts | 6 +-- .../client/src/restapi/groups/get_list.ts | 6 +-- packages/client/src/restapi/groups/update.ts | 4 +- packages/client/src/restapi/history/get.ts | 6 +-- .../src/restapi/history/get_versioned.ts | 4 +- packages/client/src/restapi/history/revert.ts | 4 +- .../client/src/restapi/linkintegrity/get.ts | 2 +- packages/client/src/restapi/lock/add.ts | 6 +-- packages/client/src/restapi/lock/delete.ts | 6 +-- packages/client/src/restapi/lock/get.ts | 6 +-- packages/client/src/restapi/lock/update.ts | 4 +- packages/client/src/restapi/login/post.ts | 6 +-- packages/client/src/restapi/navigation/get.ts | 6 +-- packages/client/src/restapi/navroot/get.ts | 6 +-- packages/client/src/restapi/principals/get.ts | 6 +-- .../client/src/restapi/querysources/get.ts | 6 +-- .../src/restapi/querystring-search/get.ts | 6 +-- .../src/restapi/querystring-search/post.ts | 6 +-- .../client/src/restapi/querystring/get.ts | 6 +-- packages/client/src/restapi/registry/get.ts | 4 +- .../client/src/restapi/registry/get_list.ts | 6 +-- .../client/src/restapi/registry/update.ts | 4 +- packages/client/src/restapi/relations/add.ts | 4 +- .../client/src/restapi/relations/delete.ts | 4 +- packages/client/src/restapi/relations/fix.ts | 4 +- packages/client/src/restapi/relations/get.ts | 6 +-- .../client/src/restapi/relations/get_list.ts | 6 +-- packages/client/src/restapi/roles/get.ts | 6 +-- packages/client/src/restapi/rules/add.ts | 6 +-- packages/client/src/restapi/rules/delete.ts | 4 +- packages/client/src/restapi/rules/get.ts | 6 +-- packages/client/src/restapi/rules/update.ts | 6 +-- packages/client/src/restapi/search/get.ts | 6 +-- packages/client/src/restapi/site/get.ts | 6 +-- packages/client/src/restapi/sources/get.ts | 6 +-- packages/client/src/restapi/system/get.ts | 6 +-- .../client/src/restapi/transactions/get.ts | 6 +-- .../client/src/restapi/transactions/revert.ts | 6 +-- .../client/src/restapi/translations/get.ts | 6 +-- .../client/src/restapi/translations/link.ts | 4 +- .../client/src/restapi/translations/unlink.ts | 4 +- packages/client/src/restapi/types/add.ts | 6 +-- packages/client/src/restapi/types/get.ts | 6 +-- packages/client/src/restapi/types/get_list.ts | 6 +-- .../src/restapi/types/get_type_field.ts | 6 +-- packages/client/src/restapi/types/update.ts | 4 +- packages/client/src/restapi/upgrade/get.ts | 6 +-- packages/client/src/restapi/upgrade/run.ts | 6 +-- packages/client/src/restapi/users/add.ts | 6 +-- packages/client/src/restapi/users/delete.ts | 4 +- packages/client/src/restapi/users/get.ts | 6 +-- packages/client/src/restapi/users/get_list.ts | 6 +-- .../src/restapi/users/reset_password.ts | 4 +- .../users/reset_password_with_token.ts | 4 +- packages/client/src/restapi/users/update.ts | 4 +- .../src/restapi/users/update_password.ts | 4 +- packages/client/src/restapi/userschema/get.ts | 6 +-- .../client/src/restapi/vocabularies/get.ts | 6 +-- .../src/restapi/vocabularies/get_list.ts | 6 +-- packages/client/src/restapi/workflow/add.ts | 6 +-- packages/client/src/restapi/workflow/get.ts | 6 +-- .../client/src/restapi/workingcopy/add.ts | 6 +-- .../src/restapi/workingcopy/check-in.ts | 4 +- .../client/src/restapi/workingcopy/delete.ts | 4 +- .../client/src/restapi/workingcopy/get.ts | 6 +-- packages/client/src/utils/misc.ts | 2 +- packages/client/tsconfig.json | 29 +++++++----- packages/client/tsup.config.ts | 9 ++++ pnpm-lock.yaml | 47 ++----------------- 107 files changed, 302 insertions(+), 344 deletions(-) delete mode 100644 packages/client/.parcelrc create mode 100644 packages/client/tsup.config.ts diff --git a/packages/client/.parcelrc b/packages/client/.parcelrc deleted file mode 100644 index db2d15099d..0000000000 --- a/packages/client/.parcelrc +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "@parcel/config-default", - "transformers": { - "*.{js,mjs,jsm,jsx,es6,cjs,ts,tsx}": [ - "@parcel/transformer-js", - "@parcel/transformer-react-refresh-wrap" - ] - } -} diff --git a/packages/client/package.json b/packages/client/package.json index 9e555c134b..f1a310635e 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -19,20 +19,15 @@ "type": "module", "files": [ "dist", - "src", "README.md" ], - "source": "./src/index.ts", - "main": "./dist/index.cjs", - "module": "./dist/index.js", - "types": "./dist/index.d.ts", + "main": "./dist/index.js", "exports": { + "./package.json": "./package.json", ".": { - "types": "./dist/index.d.ts", "import": "./dist/index.js", - "require": "./dist/index.cjs" - }, - "./src/*": "./src/*" + "default": "./dist/index.cjs" + } }, "homepage": "https://plone.org", "keywords": [ @@ -46,11 +41,11 @@ "react-query" ], "scripts": { - "watch": "parcel watch", - "build": "parcel build", - "build:force": "parcel build --no-cache", + "build": "tsup", + "build:force": "tsup", "test": "vitest", - "check-ts": "tsc --project tsconfig.json", + "check:exports": "attw --pack .", + "check:ts": "tsc --project tsconfig.json", "coverage": "vitest run --coverage --no-threads", "dry-release": "release-it --dry-run", "release": "release-it", @@ -61,13 +56,7 @@ "access": "public" }, "devDependencies": { - "@parcel/config-default": "^2.12.0", - "@parcel/core": "^2.12.0", - "@parcel/packager-ts": "^2.12.0", - "@parcel/transformer-js": "^2.12.0", - "@parcel/transformer-react-refresh-wrap": "^2.12.0", - "@parcel/transformer-typescript-types": "^2.12.0", - "@parcel/optimizer-terser": "2.12.0", + "@arethetypeswrong/cli": "^0.16.4", "@plone/types": "workspace: *", "@testing-library/jest-dom": "5.16.5", "@testing-library/react": "13.4.0", @@ -79,7 +68,6 @@ "@vitest/coverage-v8": "^1.3.1", "glob": "7.1.6", "jsdom": "^21.1.1", - "parcel": "^2.12.0", "react": "^18.2.0", "react-dom": "^18.2.0", "release-it": "17.1.1", diff --git a/packages/client/src/API.ts b/packages/client/src/API.ts index 5862f3084d..12e53ff42e 100644 --- a/packages/client/src/API.ts +++ b/packages/client/src/API.ts @@ -1,5 +1,5 @@ import axios, { AxiosRequestConfig, AxiosResponse } from 'axios'; -import { PloneClientConfig } from './validation/config'; +import type { PloneClientConfig } from './validation/config'; import qs from 'query-string'; import debugFactory from 'debug'; diff --git a/packages/client/src/client.ts b/packages/client/src/client.ts index 93fdb7e4b6..b0d5e5289a 100644 --- a/packages/client/src/client.ts +++ b/packages/client/src/client.ts @@ -109,7 +109,7 @@ import { queryWithConfig, mutationHookFromMutation, } from './utils/misc'; -import { PloneClientConfig } from './validation/config'; +import type { PloneClientConfig } from './validation/config'; const PLONECLIENT_DEFAULT_CONFIG = { apiPath: 'http://localhost:8080/Plone' }; diff --git a/packages/client/src/restapi/actions/get.ts b/packages/client/src/restapi/actions/get.ts index 5ad55b06b3..7d9ffd3c8b 100644 --- a/packages/client/src/restapi/actions/get.ts +++ b/packages/client/src/restapi/actions/get.ts @@ -1,6 +1,6 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; -import { ActionsResponse } from '@plone/types'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; +import type { ActionsResponse } from '@plone/types'; import { z } from 'zod'; const getActionsSchema = z.object({ diff --git a/packages/client/src/restapi/addons/get.ts b/packages/client/src/restapi/addons/get.ts index f4ce7c67cb..2fdf5669d3 100644 --- a/packages/client/src/restapi/addons/get.ts +++ b/packages/client/src/restapi/addons/get.ts @@ -1,6 +1,6 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; -import { GetAddonResponse } from '@plone/types'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; +import type { GetAddonResponse } from '@plone/types'; import { z } from 'zod'; const getAddonSchema = z.object({ diff --git a/packages/client/src/restapi/addons/get_list.ts b/packages/client/src/restapi/addons/get_list.ts index 16a9b54f59..f283e21c38 100644 --- a/packages/client/src/restapi/addons/get_list.ts +++ b/packages/client/src/restapi/addons/get_list.ts @@ -1,6 +1,6 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; -import { Addons } from '@plone/types'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; +import type { Addons } from '@plone/types'; export type AddonsArgs = { config: PloneClientConfig; diff --git a/packages/client/src/restapi/addons/install.ts b/packages/client/src/restapi/addons/install.ts index 39d1cd516a..1e0812fe00 100644 --- a/packages/client/src/restapi/addons/install.ts +++ b/packages/client/src/restapi/addons/install.ts @@ -1,5 +1,5 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; import { z } from 'zod'; const installAddonSchema = z.object({ diff --git a/packages/client/src/restapi/addons/install_profile.ts b/packages/client/src/restapi/addons/install_profile.ts index eff76e0bb8..3be0e2a5bd 100644 --- a/packages/client/src/restapi/addons/install_profile.ts +++ b/packages/client/src/restapi/addons/install_profile.ts @@ -1,5 +1,5 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; import { z } from 'zod'; const installAddonProfileSchema = z.object({ diff --git a/packages/client/src/restapi/addons/unistall.ts b/packages/client/src/restapi/addons/unistall.ts index ca4033a1a4..e0b480a4a5 100644 --- a/packages/client/src/restapi/addons/unistall.ts +++ b/packages/client/src/restapi/addons/unistall.ts @@ -1,5 +1,5 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; import { z } from 'zod'; const uninstallAddonSchema = z.object({ diff --git a/packages/client/src/restapi/addons/upgrade.ts b/packages/client/src/restapi/addons/upgrade.ts index f1275b53cb..b75f0400d6 100644 --- a/packages/client/src/restapi/addons/upgrade.ts +++ b/packages/client/src/restapi/addons/upgrade.ts @@ -1,5 +1,5 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; import { z } from 'zod'; const upgradeAddonSchema = z.object({ diff --git a/packages/client/src/restapi/aliases/add.ts b/packages/client/src/restapi/aliases/add.ts index 07e9eee3ff..2d9bfd80ca 100644 --- a/packages/client/src/restapi/aliases/add.ts +++ b/packages/client/src/restapi/aliases/add.ts @@ -1,7 +1,7 @@ import { z } from 'zod'; -import { apiRequest, ApiRequestParams } from '../../API'; +import { apiRequest, type ApiRequestParams } from '../../API'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; import { createAliasesDataSchema } from '../../validation/aliases'; diff --git a/packages/client/src/restapi/aliases/add_multiple.ts b/packages/client/src/restapi/aliases/add_multiple.ts index 2cd990bc41..77c1c6a518 100644 --- a/packages/client/src/restapi/aliases/add_multiple.ts +++ b/packages/client/src/restapi/aliases/add_multiple.ts @@ -1,7 +1,7 @@ import { z } from 'zod'; -import { apiRequest, ApiRequestParams } from '../../API'; +import { apiRequest, type ApiRequestParams } from '../../API'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; import { createAliasesMultipleDataSchema } from '../../validation/aliases'; diff --git a/packages/client/src/restapi/aliases/delete.ts b/packages/client/src/restapi/aliases/delete.ts index af2401daf8..73d408cc7b 100644 --- a/packages/client/src/restapi/aliases/delete.ts +++ b/packages/client/src/restapi/aliases/delete.ts @@ -1,7 +1,7 @@ -import { apiRequest, ApiRequestParams } from '../../API'; +import { apiRequest, type ApiRequestParams } from '../../API'; import { z } from 'zod'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; import { deleteAliasesDataSchema } from '../../validation/aliases'; diff --git a/packages/client/src/restapi/aliases/get.ts b/packages/client/src/restapi/aliases/get.ts index 7919d859a4..e535175537 100644 --- a/packages/client/src/restapi/aliases/get.ts +++ b/packages/client/src/restapi/aliases/get.ts @@ -1,6 +1,6 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; -import { GetAliasesResponse } from '@plone/types'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; +import type { GetAliasesResponse } from '@plone/types'; import { z } from 'zod'; const getAliasesSchema = z.object({ diff --git a/packages/client/src/restapi/aliases/get_list.ts b/packages/client/src/restapi/aliases/get_list.ts index a19d8e193f..767325feb1 100644 --- a/packages/client/src/restapi/aliases/get_list.ts +++ b/packages/client/src/restapi/aliases/get_list.ts @@ -1,6 +1,6 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; -import { GetAliasesListResponse } from '@plone/types'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; +import type { GetAliasesListResponse } from '@plone/types'; export type AliasesListArgs = { config: PloneClientConfig; diff --git a/packages/client/src/restapi/breadcrumbs/get.ts b/packages/client/src/restapi/breadcrumbs/get.ts index b882abdc7a..65a8e1095a 100644 --- a/packages/client/src/restapi/breadcrumbs/get.ts +++ b/packages/client/src/restapi/breadcrumbs/get.ts @@ -1,6 +1,6 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; -import { BreadcrumbsResponse } from '@plone/types'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; +import type { BreadcrumbsResponse } from '@plone/types'; import { z } from 'zod'; const getBreadcrumbsSchema = z.object({ diff --git a/packages/client/src/restapi/comments/add.ts b/packages/client/src/restapi/comments/add.ts index 601ec9f2a8..961c7c092c 100644 --- a/packages/client/src/restapi/comments/add.ts +++ b/packages/client/src/restapi/comments/add.ts @@ -1,7 +1,7 @@ import { z } from 'zod'; -import { apiRequest, ApiRequestParams } from '../../API'; +import { apiRequest, type ApiRequestParams } from '../../API'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; import { newCommentDataSchema as createCommentDataSchema } from '../../validation/comments'; diff --git a/packages/client/src/restapi/comments/delete.ts b/packages/client/src/restapi/comments/delete.ts index 70c0353960..403999308c 100644 --- a/packages/client/src/restapi/comments/delete.ts +++ b/packages/client/src/restapi/comments/delete.ts @@ -1,7 +1,7 @@ import { z } from 'zod'; -import { apiRequest, ApiRequestParams } from '../../API'; +import { apiRequest, type ApiRequestParams } from '../../API'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; diff --git a/packages/client/src/restapi/comments/get.ts b/packages/client/src/restapi/comments/get.ts index 3d225e39e8..9495f96354 100644 --- a/packages/client/src/restapi/comments/get.ts +++ b/packages/client/src/restapi/comments/get.ts @@ -1,7 +1,7 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; import { z } from 'zod'; -import { GetCommentsResponse } from '@plone/types'; +import type { GetCommentsResponse } from '@plone/types'; const getCommentsSchema = z.object({ path: z.string(), diff --git a/packages/client/src/restapi/comments/update.ts b/packages/client/src/restapi/comments/update.ts index a0cde49faa..32a3efd4b5 100644 --- a/packages/client/src/restapi/comments/update.ts +++ b/packages/client/src/restapi/comments/update.ts @@ -1,7 +1,7 @@ import { z } from 'zod'; -import { apiRequest, ApiRequestParams } from '../../API'; +import { apiRequest, type ApiRequestParams } from '../../API'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; import { newCommentDataSchema as updateCommentDataSchema } from '../../validation/comments'; diff --git a/packages/client/src/restapi/content/add.ts b/packages/client/src/restapi/content/add.ts index 1cff2e06b3..671b1b1406 100644 --- a/packages/client/src/restapi/content/add.ts +++ b/packages/client/src/restapi/content/add.ts @@ -1,11 +1,11 @@ import { z } from 'zod'; -import { apiRequest, ApiRequestParams } from '../../API'; +import { apiRequest, type ApiRequestParams } from '../../API'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; import { createContentDataSchema } from '../../validation/content'; -import { CreateContentResponse } from '@plone/types'; +import type { CreateContentResponse } from '@plone/types'; export const createContentArgsSchema = z.object({ path: z.string(), diff --git a/packages/client/src/restapi/content/delete.ts b/packages/client/src/restapi/content/delete.ts index fbf8ec0230..95ce268eeb 100644 --- a/packages/client/src/restapi/content/delete.ts +++ b/packages/client/src/restapi/content/delete.ts @@ -1,7 +1,7 @@ -import { apiRequest, ApiRequestParams } from '../../API'; +import { apiRequest, type ApiRequestParams } from '../../API'; import { z } from 'zod'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; diff --git a/packages/client/src/restapi/content/get.ts b/packages/client/src/restapi/content/get.ts index 18103e1427..5d5cf8fa96 100644 --- a/packages/client/src/restapi/content/get.ts +++ b/packages/client/src/restapi/content/get.ts @@ -1,6 +1,6 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; -import { Content } from '@plone/types'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; +import type { Content } from '@plone/types'; import { z } from 'zod'; const getContentArgsSchema = z.object({ diff --git a/packages/client/src/restapi/content/update.ts b/packages/client/src/restapi/content/update.ts index fe751e7a68..83ee95571b 100644 --- a/packages/client/src/restapi/content/update.ts +++ b/packages/client/src/restapi/content/update.ts @@ -1,11 +1,11 @@ -import { apiRequest, ApiRequestParams } from '../../API'; +import { apiRequest, type ApiRequestParams } from '../../API'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; import { z } from 'zod'; import { updateContentDataSchema } from '../../validation/content'; -import { UpdateContentResponse } from '@plone/types'; +import type { UpdateContentResponse } from '@plone/types'; export const updateContentArgsSchema = z.object({ path: z.string(), diff --git a/packages/client/src/restapi/contextnavigation/get.ts b/packages/client/src/restapi/contextnavigation/get.ts index af0c1b7398..ca586a2e8a 100644 --- a/packages/client/src/restapi/contextnavigation/get.ts +++ b/packages/client/src/restapi/contextnavigation/get.ts @@ -1,6 +1,6 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; -import { ContextNavigationResponse } from '@plone/types'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; +import type { ContextNavigationResponse } from '@plone/types'; import { z } from 'zod'; const getContextNavigationSchema = z.object({ diff --git a/packages/client/src/restapi/controlpanels/add.ts b/packages/client/src/restapi/controlpanels/add.ts index 9b25859833..a48fefda63 100644 --- a/packages/client/src/restapi/controlpanels/add.ts +++ b/packages/client/src/restapi/controlpanels/add.ts @@ -1,7 +1,7 @@ import { z } from 'zod'; -import { ApiRequestParams, apiRequest } from '../../API'; +import { type ApiRequestParams, apiRequest } from '../../API'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; diff --git a/packages/client/src/restapi/controlpanels/delete.ts b/packages/client/src/restapi/controlpanels/delete.ts index 5abff355f8..34cdfe983b 100644 --- a/packages/client/src/restapi/controlpanels/delete.ts +++ b/packages/client/src/restapi/controlpanels/delete.ts @@ -1,7 +1,7 @@ import { z } from 'zod'; -import { ApiRequestParams, apiRequest } from '../../API'; +import { type ApiRequestParams, apiRequest } from '../../API'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; diff --git a/packages/client/src/restapi/controlpanels/get.ts b/packages/client/src/restapi/controlpanels/get.ts index 3cb54124dc..2c18b4a25a 100644 --- a/packages/client/src/restapi/controlpanels/get.ts +++ b/packages/client/src/restapi/controlpanels/get.ts @@ -1,7 +1,7 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; import { z } from 'zod'; -import { GetControlpanelResponse } from '@plone/types'; +import type { GetControlpanelResponse } from '@plone/types'; const getControlpanelSchema = z.object({ path: z.string(), diff --git a/packages/client/src/restapi/controlpanels/get_list.ts b/packages/client/src/restapi/controlpanels/get_list.ts index e5c171c8e5..24f9b54cc6 100644 --- a/packages/client/src/restapi/controlpanels/get_list.ts +++ b/packages/client/src/restapi/controlpanels/get_list.ts @@ -1,6 +1,6 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; -import { GetControlpanelsResponse } from '@plone/types'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; +import type { GetControlpanelsResponse } from '@plone/types'; export type ControlpanelsArgs = { config: PloneClientConfig; diff --git a/packages/client/src/restapi/controlpanels/update.ts b/packages/client/src/restapi/controlpanels/update.ts index cdd7815db3..1eb8ff8482 100644 --- a/packages/client/src/restapi/controlpanels/update.ts +++ b/packages/client/src/restapi/controlpanels/update.ts @@ -1,7 +1,7 @@ import { z } from 'zod'; -import { ApiRequestParams, apiRequest } from '../../API'; +import { type ApiRequestParams, apiRequest } from '../../API'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; diff --git a/packages/client/src/restapi/copymove/copy.ts b/packages/client/src/restapi/copymove/copy.ts index bf300f958f..e62302a1a7 100644 --- a/packages/client/src/restapi/copymove/copy.ts +++ b/packages/client/src/restapi/copymove/copy.ts @@ -1,8 +1,8 @@ import { z } from 'zod'; -import { ApiRequestParams, apiRequest } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; +import { type ApiRequestParams, apiRequest } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; import { copyMoveDataSchema as copyDataSchema } from '../../validation/copymove'; -import { CopyMoveResponse as CopyResponse } from '@plone/types'; +import type { CopyMoveResponse as CopyResponse } from '@plone/types'; export type CopyArgs = z.infer & { config: PloneClientConfig; diff --git a/packages/client/src/restapi/copymove/move.ts b/packages/client/src/restapi/copymove/move.ts index 6f1015caad..ebd11e193e 100644 --- a/packages/client/src/restapi/copymove/move.ts +++ b/packages/client/src/restapi/copymove/move.ts @@ -1,8 +1,8 @@ import { z } from 'zod'; -import { ApiRequestParams, apiRequest } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; +import { type ApiRequestParams, apiRequest } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; import { copyMoveDataSchema as moveDataSchema } from '../../validation/copymove'; -import { CopyMoveResponse as MoveResponse } from '@plone/types'; +import type { CopyMoveResponse as MoveResponse } from '@plone/types'; export type MoveArgs = z.infer & { config: PloneClientConfig; diff --git a/packages/client/src/restapi/database/get.ts b/packages/client/src/restapi/database/get.ts index 53769b3c41..5a10438edd 100644 --- a/packages/client/src/restapi/database/get.ts +++ b/packages/client/src/restapi/database/get.ts @@ -1,6 +1,6 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; -import { DatabaseResponse } from '@plone/types'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; +import type { DatabaseResponse } from '@plone/types'; export type DatabaseArgs = { config: PloneClientConfig; diff --git a/packages/client/src/restapi/email-notification/post.ts b/packages/client/src/restapi/email-notification/post.ts index 54a81b340b..718ab59f7b 100644 --- a/packages/client/src/restapi/email-notification/post.ts +++ b/packages/client/src/restapi/email-notification/post.ts @@ -1,7 +1,7 @@ import { z } from 'zod'; -import { apiRequest, ApiRequestParams } from '../../API'; +import { apiRequest, type ApiRequestParams } from '../../API'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; diff --git a/packages/client/src/restapi/email-send/post.ts b/packages/client/src/restapi/email-send/post.ts index f1d5863ed0..23cc727f2e 100644 --- a/packages/client/src/restapi/email-send/post.ts +++ b/packages/client/src/restapi/email-send/post.ts @@ -1,7 +1,7 @@ import { z } from 'zod'; -import { apiRequest, ApiRequestParams } from '../../API'; +import { apiRequest, type ApiRequestParams } from '../../API'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; diff --git a/packages/client/src/restapi/groups/add.ts b/packages/client/src/restapi/groups/add.ts index b9dd8fa2cc..27f0fc8d17 100644 --- a/packages/client/src/restapi/groups/add.ts +++ b/packages/client/src/restapi/groups/add.ts @@ -1,11 +1,11 @@ import { z } from 'zod'; -import { ApiRequestParams, apiRequest } from '../../API'; +import { type ApiRequestParams, apiRequest } from '../../API'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; import { createGroupDataSchema } from '../../validation/groups'; -import { CreateGroupResponse } from '@plone/types'; +import type { CreateGroupResponse } from '@plone/types'; export const createGroupArgsSchema = z.object({ data: createGroupDataSchema, diff --git a/packages/client/src/restapi/groups/delete.ts b/packages/client/src/restapi/groups/delete.ts index 4d2565ae3d..e135f1b691 100644 --- a/packages/client/src/restapi/groups/delete.ts +++ b/packages/client/src/restapi/groups/delete.ts @@ -1,7 +1,7 @@ -import { apiRequest, ApiRequestParams } from '../../API'; +import { apiRequest, type ApiRequestParams } from '../../API'; import { z } from 'zod'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; diff --git a/packages/client/src/restapi/groups/get.ts b/packages/client/src/restapi/groups/get.ts index 7048b40fb9..3d23c1690e 100644 --- a/packages/client/src/restapi/groups/get.ts +++ b/packages/client/src/restapi/groups/get.ts @@ -1,7 +1,7 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; import { z } from 'zod'; -import { GetGroupResponse } from '@plone/types'; +import type { GetGroupResponse } from '@plone/types'; const getGroupSchema = z.object({ groupId: z.string(), diff --git a/packages/client/src/restapi/groups/get_list.ts b/packages/client/src/restapi/groups/get_list.ts index 7c7928bbec..e3b1724492 100644 --- a/packages/client/src/restapi/groups/get_list.ts +++ b/packages/client/src/restapi/groups/get_list.ts @@ -1,6 +1,6 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; -import { GetGroupsResponse } from '@plone/types'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; +import type { GetGroupsResponse } from '@plone/types'; export type GroupsArgs = { config: PloneClientConfig; diff --git a/packages/client/src/restapi/groups/update.ts b/packages/client/src/restapi/groups/update.ts index c189643e2a..d31ca1a680 100644 --- a/packages/client/src/restapi/groups/update.ts +++ b/packages/client/src/restapi/groups/update.ts @@ -1,7 +1,7 @@ import { z } from 'zod'; -import { ApiRequestParams, apiRequest } from '../../API'; +import { type ApiRequestParams, apiRequest } from '../../API'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; import { updateGroupDataSchema } from '../../validation/groups'; diff --git a/packages/client/src/restapi/history/get.ts b/packages/client/src/restapi/history/get.ts index 15e2ca1169..70f2d2bfbf 100644 --- a/packages/client/src/restapi/history/get.ts +++ b/packages/client/src/restapi/history/get.ts @@ -1,7 +1,7 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; import { z } from 'zod'; -import { GetHistoryResponse } from '@plone/types'; +import type { GetHistoryResponse } from '@plone/types'; const getHistorySchema = z.object({ path: z.string(), diff --git a/packages/client/src/restapi/history/get_versioned.ts b/packages/client/src/restapi/history/get_versioned.ts index de016b50fd..b6e33c86f9 100644 --- a/packages/client/src/restapi/history/get_versioned.ts +++ b/packages/client/src/restapi/history/get_versioned.ts @@ -1,5 +1,5 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; import { z } from 'zod'; const getHistoryVersionedSchema = z.object({ diff --git a/packages/client/src/restapi/history/revert.ts b/packages/client/src/restapi/history/revert.ts index 3e0ad44580..616e4053f4 100644 --- a/packages/client/src/restapi/history/revert.ts +++ b/packages/client/src/restapi/history/revert.ts @@ -1,7 +1,7 @@ import { z } from 'zod'; -import { apiRequest, ApiRequestParams } from '../../API'; +import { apiRequest, type ApiRequestParams } from '../../API'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; import { revertHistoryDataSchema } from '../../validation/history'; diff --git a/packages/client/src/restapi/linkintegrity/get.ts b/packages/client/src/restapi/linkintegrity/get.ts index 9af2dd5551..8cf9f359eb 100644 --- a/packages/client/src/restapi/linkintegrity/get.ts +++ b/packages/client/src/restapi/linkintegrity/get.ts @@ -1,5 +1,5 @@ import { z } from 'zod'; -import { apiRequest, ApiRequestParams } from '../../API'; +import { apiRequest, type ApiRequestParams } from '../../API'; import { PloneClientConfigSchema } from '../../validation/config'; const getLinkintegriyArgsSchema = z.object({ diff --git a/packages/client/src/restapi/lock/add.ts b/packages/client/src/restapi/lock/add.ts index 2ba71b85c3..608b3e38a6 100644 --- a/packages/client/src/restapi/lock/add.ts +++ b/packages/client/src/restapi/lock/add.ts @@ -1,11 +1,11 @@ import { z } from 'zod'; -import { ApiRequestParams, apiRequest } from '../../API'; +import { type ApiRequestParams, apiRequest } from '../../API'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; import { createLockDataSchema } from '../../validation/lock'; -import { CreateLockResponse } from '@plone/types'; +import type { CreateLockResponse } from '@plone/types'; export const createLockArgsSchema = z.object({ path: z.string(), diff --git a/packages/client/src/restapi/lock/delete.ts b/packages/client/src/restapi/lock/delete.ts index c18cd46d17..ee06ad8d62 100644 --- a/packages/client/src/restapi/lock/delete.ts +++ b/packages/client/src/restapi/lock/delete.ts @@ -1,11 +1,11 @@ -import { apiRequest, ApiRequestParams } from '../../API'; +import { apiRequest, type ApiRequestParams } from '../../API'; import { z } from 'zod'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; import { deleteLockDataSchema } from '../../validation/lock'; -import { LockInfo as DeleteLockResponse } from '@plone/types'; +import type { LockInfo as DeleteLockResponse } from '@plone/types'; export const deleteLockArgsSchema = z.object({ path: z.string(), diff --git a/packages/client/src/restapi/lock/get.ts b/packages/client/src/restapi/lock/get.ts index 9c1962e16a..9c09841968 100644 --- a/packages/client/src/restapi/lock/get.ts +++ b/packages/client/src/restapi/lock/get.ts @@ -1,7 +1,7 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; import { z } from 'zod'; -import { LockInfo as GetLockResponse } from '@plone/types'; +import type { LockInfo as GetLockResponse } from '@plone/types'; const getLockSchema = z.object({ path: z.string(), diff --git a/packages/client/src/restapi/lock/update.ts b/packages/client/src/restapi/lock/update.ts index d9c0a3553a..42fc26866c 100644 --- a/packages/client/src/restapi/lock/update.ts +++ b/packages/client/src/restapi/lock/update.ts @@ -1,6 +1,6 @@ -import { apiRequest, ApiRequestParams } from '../../API'; +import { apiRequest, type ApiRequestParams } from '../../API'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; import { z } from 'zod'; diff --git a/packages/client/src/restapi/login/post.ts b/packages/client/src/restapi/login/post.ts index 5d893fef9f..e35f1d87f6 100644 --- a/packages/client/src/restapi/login/post.ts +++ b/packages/client/src/restapi/login/post.ts @@ -1,10 +1,10 @@ -import { Login } from '@plone/types'; -import { apiRequest, ApiRequestParams } from '../../API'; +import { apiRequest, type ApiRequestParams } from '../../API'; import { z } from 'zod'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; +import type { Login } from '@plone/types'; export const loginArgsSchema = z.object({ username: z.string(), diff --git a/packages/client/src/restapi/navigation/get.ts b/packages/client/src/restapi/navigation/get.ts index d5b6577a17..71e64fb94f 100644 --- a/packages/client/src/restapi/navigation/get.ts +++ b/packages/client/src/restapi/navigation/get.ts @@ -1,6 +1,6 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; -import { NavigationResponse } from '@plone/types'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; +import type { NavigationResponse } from '@plone/types'; import { z } from 'zod'; const getNavigationSchema = z.object({ diff --git a/packages/client/src/restapi/navroot/get.ts b/packages/client/src/restapi/navroot/get.ts index a43d9d1d51..d5dea3d4f2 100644 --- a/packages/client/src/restapi/navroot/get.ts +++ b/packages/client/src/restapi/navroot/get.ts @@ -1,6 +1,6 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; -import { GetNavrootResponse } from '@plone/types'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; +import type { GetNavrootResponse } from '@plone/types'; import { z } from 'zod'; const getNavrootSchema = z.object({ diff --git a/packages/client/src/restapi/principals/get.ts b/packages/client/src/restapi/principals/get.ts index d42abc930c..4ae976781e 100644 --- a/packages/client/src/restapi/principals/get.ts +++ b/packages/client/src/restapi/principals/get.ts @@ -1,7 +1,7 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; import { z } from 'zod'; -import { GetPrincipalsResponse } from '@plone/types'; +import type { GetPrincipalsResponse } from '@plone/types'; const getPrincipalsSchema = z.object({ search: z.string(), diff --git a/packages/client/src/restapi/querysources/get.ts b/packages/client/src/restapi/querysources/get.ts index 46949b2d5c..47207b9507 100644 --- a/packages/client/src/restapi/querysources/get.ts +++ b/packages/client/src/restapi/querysources/get.ts @@ -1,7 +1,7 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; import { z } from 'zod'; -import { GetQuerysourceResponse } from '@plone/types'; +import type { GetQuerysourceResponse } from '@plone/types'; const getQuerysourceSchema = z.object({ path: z.string(), diff --git a/packages/client/src/restapi/querystring-search/get.ts b/packages/client/src/restapi/querystring-search/get.ts index 926453dfbd..588b50eddc 100644 --- a/packages/client/src/restapi/querystring-search/get.ts +++ b/packages/client/src/restapi/querystring-search/get.ts @@ -1,8 +1,8 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; import { z } from 'zod'; import { querystringSearchDataSchema as getQuerystringSearchSchema } from '../../validation/querystring-search'; -import { QuerystringSearchResponse as GetQuerystringSearchResponse } from '@plone/types'; +import type { QuerystringSearchResponse as GetQuerystringSearchResponse } from '@plone/types'; export type QuerystringSearchArgs = z.infer< typeof getQuerystringSearchSchema diff --git a/packages/client/src/restapi/querystring-search/post.ts b/packages/client/src/restapi/querystring-search/post.ts index 95c07e6be5..decf6dad71 100644 --- a/packages/client/src/restapi/querystring-search/post.ts +++ b/packages/client/src/restapi/querystring-search/post.ts @@ -1,11 +1,11 @@ import { z } from 'zod'; -import { ApiRequestParams, apiRequest } from '../../API'; +import { type ApiRequestParams, apiRequest } from '../../API'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; import { querystringSearchDataSchema as postQuerystringSearchDataSchema } from '../../validation/querystring-search'; -import { QuerystringSearchResponse as PostQuerystringSearchResponse } from '@plone/types'; +import type { QuerystringSearchResponse as PostQuerystringSearchResponse } from '@plone/types'; export const postQuerystringSearchArgsSchema = z.object({ data: postQuerystringSearchDataSchema, diff --git a/packages/client/src/restapi/querystring/get.ts b/packages/client/src/restapi/querystring/get.ts index 008f1747ea..acea020e41 100644 --- a/packages/client/src/restapi/querystring/get.ts +++ b/packages/client/src/restapi/querystring/get.ts @@ -1,6 +1,6 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; -import { GetQueryStringResponse } from '@plone/types'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; +import type { GetQueryStringResponse } from '@plone/types'; export type QueryStringArgs = { config: PloneClientConfig; diff --git a/packages/client/src/restapi/registry/get.ts b/packages/client/src/restapi/registry/get.ts index d4642ee39a..90784f77fe 100644 --- a/packages/client/src/restapi/registry/get.ts +++ b/packages/client/src/restapi/registry/get.ts @@ -1,5 +1,5 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; import { z } from 'zod'; const getRegistrySchema = z.object({ diff --git a/packages/client/src/restapi/registry/get_list.ts b/packages/client/src/restapi/registry/get_list.ts index c3c43faaa9..438a12a771 100644 --- a/packages/client/src/restapi/registry/get_list.ts +++ b/packages/client/src/restapi/registry/get_list.ts @@ -1,6 +1,6 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; -import { GetRegistriesResponse } from '@plone/types'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; +import type { GetRegistriesResponse } from '@plone/types'; export type GetRegistriesArgs = { config: PloneClientConfig; diff --git a/packages/client/src/restapi/registry/update.ts b/packages/client/src/restapi/registry/update.ts index ee24c141e6..0bd30eeff9 100644 --- a/packages/client/src/restapi/registry/update.ts +++ b/packages/client/src/restapi/registry/update.ts @@ -1,7 +1,7 @@ import { z } from 'zod'; -import { apiRequest, ApiRequestParams } from '../../API'; +import { apiRequest, type ApiRequestParams } from '../../API'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; import { updateRegistryDataSchema } from '../../validation/registry'; diff --git a/packages/client/src/restapi/relations/add.ts b/packages/client/src/restapi/relations/add.ts index c979571172..70a90b1673 100644 --- a/packages/client/src/restapi/relations/add.ts +++ b/packages/client/src/restapi/relations/add.ts @@ -1,7 +1,7 @@ import { z } from 'zod'; -import { ApiRequestParams, apiRequest } from '../../API'; +import { type ApiRequestParams, apiRequest } from '../../API'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; import { createRelationsDataSchema } from '../../validation/relations'; diff --git a/packages/client/src/restapi/relations/delete.ts b/packages/client/src/restapi/relations/delete.ts index 6276712db2..97eef66aab 100644 --- a/packages/client/src/restapi/relations/delete.ts +++ b/packages/client/src/restapi/relations/delete.ts @@ -1,7 +1,7 @@ import { z } from 'zod'; -import { apiRequest, ApiRequestParams } from '../../API'; +import { apiRequest, type ApiRequestParams } from '../../API'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; import { deleteRelationsDataSchema } from '../../validation/relations'; diff --git a/packages/client/src/restapi/relations/fix.ts b/packages/client/src/restapi/relations/fix.ts index 53daba35be..e52b0306fd 100644 --- a/packages/client/src/restapi/relations/fix.ts +++ b/packages/client/src/restapi/relations/fix.ts @@ -1,7 +1,7 @@ import { z } from 'zod'; -import { apiRequest, ApiRequestParams } from '../../API'; +import { apiRequest, type ApiRequestParams } from '../../API'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; import { fixRelationsDataSchema } from '../../validation/relations'; diff --git a/packages/client/src/restapi/relations/get.ts b/packages/client/src/restapi/relations/get.ts index 6ac85f6a14..44e608a276 100644 --- a/packages/client/src/restapi/relations/get.ts +++ b/packages/client/src/restapi/relations/get.ts @@ -1,7 +1,7 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; import { z } from 'zod'; -import { GetRelationsResponse } from '@plone/types'; +import type { GetRelationsResponse } from '@plone/types'; export const getRelationsSchema = z .object({ diff --git a/packages/client/src/restapi/relations/get_list.ts b/packages/client/src/restapi/relations/get_list.ts index e37cdc2381..07490cf19f 100644 --- a/packages/client/src/restapi/relations/get_list.ts +++ b/packages/client/src/restapi/relations/get_list.ts @@ -1,6 +1,6 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; -import { GetRelationsListResponse } from '@plone/types'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; +import type { GetRelationsListResponse } from '@plone/types'; export type GetRelationsListArgs = { config: PloneClientConfig; diff --git a/packages/client/src/restapi/roles/get.ts b/packages/client/src/restapi/roles/get.ts index 96dfd7e18a..6fb5d23504 100644 --- a/packages/client/src/restapi/roles/get.ts +++ b/packages/client/src/restapi/roles/get.ts @@ -1,6 +1,6 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; -import { GetRolesResponse } from '@plone/types'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; +import type { GetRolesResponse } from '@plone/types'; export type GetRolesArgs = { config: PloneClientConfig; diff --git a/packages/client/src/restapi/rules/add.ts b/packages/client/src/restapi/rules/add.ts index b187c64b4d..10009142c0 100644 --- a/packages/client/src/restapi/rules/add.ts +++ b/packages/client/src/restapi/rules/add.ts @@ -1,10 +1,10 @@ import { z } from 'zod'; -import { ApiRequestParams, apiRequest } from '../../API'; +import { type ApiRequestParams, apiRequest } from '../../API'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; -import { RuleRespose as CreateRuleResponse } from '@plone/types'; +import type { RuleRespose as CreateRuleResponse } from '@plone/types'; export const createRuleArgsSchema = z.object({ ruleId: z.string(), diff --git a/packages/client/src/restapi/rules/delete.ts b/packages/client/src/restapi/rules/delete.ts index 343e71cd65..9f53b63508 100644 --- a/packages/client/src/restapi/rules/delete.ts +++ b/packages/client/src/restapi/rules/delete.ts @@ -1,7 +1,7 @@ -import { apiRequest, ApiRequestParams } from '../../API'; +import { apiRequest, type ApiRequestParams } from '../../API'; import { z } from 'zod'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; import { deleteRulesDataSchema } from '../../validation/rules'; diff --git a/packages/client/src/restapi/rules/get.ts b/packages/client/src/restapi/rules/get.ts index a5b9f930f1..141204c5f8 100644 --- a/packages/client/src/restapi/rules/get.ts +++ b/packages/client/src/restapi/rules/get.ts @@ -1,6 +1,6 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; -import { GetRulesResponse } from '@plone/types'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; +import type { GetRulesResponse } from '@plone/types'; export type GetRulesArgs = { config: PloneClientConfig; diff --git a/packages/client/src/restapi/rules/update.ts b/packages/client/src/restapi/rules/update.ts index 302a0d0592..73260fb05c 100644 --- a/packages/client/src/restapi/rules/update.ts +++ b/packages/client/src/restapi/rules/update.ts @@ -1,11 +1,11 @@ import { z } from 'zod'; -import { apiRequest, ApiRequestParams } from '../../API'; +import { apiRequest, type ApiRequestParams } from '../../API'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; import { updateRulesDataSchema } from '../../validation/rules'; -import { RuleRespose as UpdateRuleRespose } from '@plone/types'; +import type { RuleRespose as UpdateRuleRespose } from '@plone/types'; export const updateRulesArgsSchema = z.object({ data: updateRulesDataSchema, diff --git a/packages/client/src/restapi/search/get.ts b/packages/client/src/restapi/search/get.ts index 53e44aadd0..ab75b82fd9 100644 --- a/packages/client/src/restapi/search/get.ts +++ b/packages/client/src/restapi/search/get.ts @@ -1,8 +1,8 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; import { z } from 'zod'; import { getSearchSchema } from '../../validation/search'; -import { GetSearchResponse } from '@plone/types'; +import type { GetSearchResponse } from '@plone/types'; import { flattenToDottedNotation } from '../../utils/misc'; export type SearchArgs = z.infer & { diff --git a/packages/client/src/restapi/site/get.ts b/packages/client/src/restapi/site/get.ts index a857df017d..dcfe189eb6 100644 --- a/packages/client/src/restapi/site/get.ts +++ b/packages/client/src/restapi/site/get.ts @@ -1,6 +1,6 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; -import { GetSiteResponse } from '@plone/types'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; +import type { GetSiteResponse } from '@plone/types'; export type SiteArgs = { config: PloneClientConfig; diff --git a/packages/client/src/restapi/sources/get.ts b/packages/client/src/restapi/sources/get.ts index 7fc5fa4e0d..fc4a6ecbb5 100644 --- a/packages/client/src/restapi/sources/get.ts +++ b/packages/client/src/restapi/sources/get.ts @@ -1,7 +1,7 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; import { z } from 'zod'; -import { GetSourceResponse } from '@plone/types'; +import type { GetSourceResponse } from '@plone/types'; const getSourceSchema = z.object({ path: z.string(), diff --git a/packages/client/src/restapi/system/get.ts b/packages/client/src/restapi/system/get.ts index 41c447bc6e..ed801c6e4d 100644 --- a/packages/client/src/restapi/system/get.ts +++ b/packages/client/src/restapi/system/get.ts @@ -1,6 +1,6 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; -import { GetSystemResponse } from '@plone/types'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; +import type { GetSystemResponse } from '@plone/types'; export type GetSystemArgs = { config: PloneClientConfig; diff --git a/packages/client/src/restapi/transactions/get.ts b/packages/client/src/restapi/transactions/get.ts index c9f7f5ffb5..c45b3790ca 100644 --- a/packages/client/src/restapi/transactions/get.ts +++ b/packages/client/src/restapi/transactions/get.ts @@ -1,6 +1,6 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; -import { GetTransactionsResponse } from '@plone/types'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; +import type { GetTransactionsResponse } from '@plone/types'; export type GetTransactionsArgs = { config: PloneClientConfig; diff --git a/packages/client/src/restapi/transactions/revert.ts b/packages/client/src/restapi/transactions/revert.ts index e9e5f45fbc..1e9723620c 100644 --- a/packages/client/src/restapi/transactions/revert.ts +++ b/packages/client/src/restapi/transactions/revert.ts @@ -1,11 +1,11 @@ import { z } from 'zod'; -import { ApiRequestParams, apiRequest } from '../../API'; +import { type ApiRequestParams, apiRequest } from '../../API'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; import { revertTransactionsDataSchema } from '../../validation/transactions'; -import { RevertTransactionsResponse } from '@plone/types'; +import type { RevertTransactionsResponse } from '@plone/types'; export const revertTransactionsArgsSchema = z.object({ data: revertTransactionsDataSchema, diff --git a/packages/client/src/restapi/translations/get.ts b/packages/client/src/restapi/translations/get.ts index 726112310a..fb383f0bd2 100644 --- a/packages/client/src/restapi/translations/get.ts +++ b/packages/client/src/restapi/translations/get.ts @@ -1,6 +1,6 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; -import { GetTranslationResponse } from '@plone/types'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; +import type { GetTranslationResponse } from '@plone/types'; import { z } from 'zod'; const getTranslationSchema = z.object({ diff --git a/packages/client/src/restapi/translations/link.ts b/packages/client/src/restapi/translations/link.ts index 4b5a34c2b5..468aa23654 100644 --- a/packages/client/src/restapi/translations/link.ts +++ b/packages/client/src/restapi/translations/link.ts @@ -1,7 +1,7 @@ import { z } from 'zod'; -import { apiRequest, ApiRequestParams } from '../../API'; +import { apiRequest, type ApiRequestParams } from '../../API'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; import { linkTranslationDataSchema } from '../../validation/translations'; diff --git a/packages/client/src/restapi/translations/unlink.ts b/packages/client/src/restapi/translations/unlink.ts index ab360e7ff0..321ee63a07 100644 --- a/packages/client/src/restapi/translations/unlink.ts +++ b/packages/client/src/restapi/translations/unlink.ts @@ -1,7 +1,7 @@ import { z } from 'zod'; -import { ApiRequestParams, apiRequest } from '../../API'; +import { type ApiRequestParams, apiRequest } from '../../API'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; import { unlinkTranslationDataSchema } from '../../validation/translations'; diff --git a/packages/client/src/restapi/types/add.ts b/packages/client/src/restapi/types/add.ts index 7516b00227..6182a97126 100644 --- a/packages/client/src/restapi/types/add.ts +++ b/packages/client/src/restapi/types/add.ts @@ -1,11 +1,11 @@ import { z } from 'zod'; -import { ApiRequestParams, apiRequest } from '../../API'; +import { type ApiRequestParams, apiRequest } from '../../API'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; import { createTypeFieldDataSchema } from '../../validation/types'; -import { CreateTypeFieldResponse } from '@plone/types'; +import type { CreateTypeFieldResponse } from '@plone/types'; export const createTypeFieldArgsSchema = z.object({ contentPath: z.string(), diff --git a/packages/client/src/restapi/types/get.ts b/packages/client/src/restapi/types/get.ts index ccbf2278a5..86dd3c5a11 100644 --- a/packages/client/src/restapi/types/get.ts +++ b/packages/client/src/restapi/types/get.ts @@ -1,7 +1,7 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; import { z } from 'zod'; -import { GetTypeResponse } from '@plone/types'; +import type { GetTypeResponse } from '@plone/types'; const getTypeSchema = z.object({ contentPath: z.string(), diff --git a/packages/client/src/restapi/types/get_list.ts b/packages/client/src/restapi/types/get_list.ts index 314b2d273d..31cb883e7b 100644 --- a/packages/client/src/restapi/types/get_list.ts +++ b/packages/client/src/restapi/types/get_list.ts @@ -1,6 +1,6 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; -import { GetTypesResponse } from '@plone/types'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; +import type { GetTypesResponse } from '@plone/types'; export type GetTypesArgs = { config: PloneClientConfig; diff --git a/packages/client/src/restapi/types/get_type_field.ts b/packages/client/src/restapi/types/get_type_field.ts index 32a0f771ba..2891792e44 100644 --- a/packages/client/src/restapi/types/get_type_field.ts +++ b/packages/client/src/restapi/types/get_type_field.ts @@ -1,7 +1,7 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; import { z } from 'zod'; -import { GetTypeFieldResponse } from '@plone/types'; +import type { GetTypeFieldResponse } from '@plone/types'; const getTypeFieldSchema = z.object({ contentFieldPath: z.string(), diff --git a/packages/client/src/restapi/types/update.ts b/packages/client/src/restapi/types/update.ts index c3e0eff2ef..bae958ffc0 100644 --- a/packages/client/src/restapi/types/update.ts +++ b/packages/client/src/restapi/types/update.ts @@ -1,7 +1,7 @@ import { z } from 'zod'; -import { apiRequest, ApiRequestParams } from '../../API'; +import { apiRequest, type ApiRequestParams } from '../../API'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; import { updateTypeFieldDataSchema } from '../../validation/types'; diff --git a/packages/client/src/restapi/upgrade/get.ts b/packages/client/src/restapi/upgrade/get.ts index 4edb5f08f4..1f05437ada 100644 --- a/packages/client/src/restapi/upgrade/get.ts +++ b/packages/client/src/restapi/upgrade/get.ts @@ -1,6 +1,6 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; -import { GetUpgradeResponse } from '@plone/types'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; +import type { GetUpgradeResponse } from '@plone/types'; export type GetUpgradeArgs = { config: PloneClientConfig; diff --git a/packages/client/src/restapi/upgrade/run.ts b/packages/client/src/restapi/upgrade/run.ts index c9cb34faab..3d847045fd 100644 --- a/packages/client/src/restapi/upgrade/run.ts +++ b/packages/client/src/restapi/upgrade/run.ts @@ -1,11 +1,11 @@ import { z } from 'zod'; -import { ApiRequestParams, apiRequest } from '../../API'; +import { type ApiRequestParams, apiRequest } from '../../API'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; import { runUpgradeDataSchema } from '../../validation/upgrade'; -import { RunUpgradeResponse } from '@plone/types'; +import type { RunUpgradeResponse } from '@plone/types'; export const runUpgradeArgsSchema = z.object({ data: runUpgradeDataSchema, diff --git a/packages/client/src/restapi/users/add.ts b/packages/client/src/restapi/users/add.ts index e9896013dc..de76be19d1 100644 --- a/packages/client/src/restapi/users/add.ts +++ b/packages/client/src/restapi/users/add.ts @@ -1,11 +1,11 @@ import { z } from 'zod'; -import { ApiRequestParams, apiRequest } from '../../API'; +import { type ApiRequestParams, apiRequest } from '../../API'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; import { createUserDataSchema } from '../../validation/users'; -import { User as CreateUserResponse } from '@plone/types'; +import type { User as CreateUserResponse } from '@plone/types'; export const createUserArgsSchema = z.object({ data: createUserDataSchema, diff --git a/packages/client/src/restapi/users/delete.ts b/packages/client/src/restapi/users/delete.ts index c3f5c175cc..59203b8bc2 100644 --- a/packages/client/src/restapi/users/delete.ts +++ b/packages/client/src/restapi/users/delete.ts @@ -1,7 +1,7 @@ -import { apiRequest, ApiRequestParams } from '../../API'; +import { apiRequest, type ApiRequestParams } from '../../API'; import { z } from 'zod'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; diff --git a/packages/client/src/restapi/users/get.ts b/packages/client/src/restapi/users/get.ts index 1f8ab45bfb..dd29774f12 100644 --- a/packages/client/src/restapi/users/get.ts +++ b/packages/client/src/restapi/users/get.ts @@ -1,7 +1,7 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; import { z } from 'zod'; -import { User as GetUserResponse } from '@plone/types'; +import type { User as GetUserResponse } from '@plone/types'; const getUserSchema = z.object({ userId: z.string(), diff --git a/packages/client/src/restapi/users/get_list.ts b/packages/client/src/restapi/users/get_list.ts index f441084903..d0319f2e62 100644 --- a/packages/client/src/restapi/users/get_list.ts +++ b/packages/client/src/restapi/users/get_list.ts @@ -1,7 +1,7 @@ import { z } from 'zod'; -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; -import { GetUsersResponse } from '@plone/types'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; +import type { GetUsersResponse } from '@plone/types'; const getUsersSchema = z.object({ query: z.string().optional(), diff --git a/packages/client/src/restapi/users/reset_password.ts b/packages/client/src/restapi/users/reset_password.ts index 6b831048e8..ec13bc4f5c 100644 --- a/packages/client/src/restapi/users/reset_password.ts +++ b/packages/client/src/restapi/users/reset_password.ts @@ -1,7 +1,7 @@ import { z } from 'zod'; -import { ApiRequestParams, apiRequest } from '../../API'; +import { type ApiRequestParams, apiRequest } from '../../API'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; diff --git a/packages/client/src/restapi/users/reset_password_with_token.ts b/packages/client/src/restapi/users/reset_password_with_token.ts index 65d9ead9e1..8355b11544 100644 --- a/packages/client/src/restapi/users/reset_password_with_token.ts +++ b/packages/client/src/restapi/users/reset_password_with_token.ts @@ -1,7 +1,7 @@ import { z } from 'zod'; -import { ApiRequestParams, apiRequest } from '../../API'; +import { type ApiRequestParams, apiRequest } from '../../API'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; import { resetPasswordWithTokenDataSchema } from '../../validation/users'; diff --git a/packages/client/src/restapi/users/update.ts b/packages/client/src/restapi/users/update.ts index 83f71fb396..cc0e7a36ef 100644 --- a/packages/client/src/restapi/users/update.ts +++ b/packages/client/src/restapi/users/update.ts @@ -1,7 +1,7 @@ import { z } from 'zod'; -import { apiRequest, ApiRequestParams } from '../../API'; +import { apiRequest, type ApiRequestParams } from '../../API'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; import { updateUserDataSchema } from '../../validation/users'; diff --git a/packages/client/src/restapi/users/update_password.ts b/packages/client/src/restapi/users/update_password.ts index d5a52996df..21b29143b6 100644 --- a/packages/client/src/restapi/users/update_password.ts +++ b/packages/client/src/restapi/users/update_password.ts @@ -1,7 +1,7 @@ import { z } from 'zod'; -import { ApiRequestParams, apiRequest } from '../../API'; +import { type ApiRequestParams, apiRequest } from '../../API'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; import { updatePasswordDataSchema } from '../../validation/users'; diff --git a/packages/client/src/restapi/userschema/get.ts b/packages/client/src/restapi/userschema/get.ts index c5cf6c55d3..2d7e0fbf17 100644 --- a/packages/client/src/restapi/userschema/get.ts +++ b/packages/client/src/restapi/userschema/get.ts @@ -1,6 +1,6 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; -import { GetUserschemaResponse } from '@plone/types'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; +import type { GetUserschemaResponse } from '@plone/types'; export type GetUserschemaArgs = { config: PloneClientConfig; diff --git a/packages/client/src/restapi/vocabularies/get.ts b/packages/client/src/restapi/vocabularies/get.ts index b25c9b00cf..a8e00488c3 100644 --- a/packages/client/src/restapi/vocabularies/get.ts +++ b/packages/client/src/restapi/vocabularies/get.ts @@ -1,7 +1,7 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; -import { GetVocabulariesResponse } from '@plone/types'; import { z } from 'zod'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; +import type { GetVocabulariesResponse } from '@plone/types'; const getVocabulariesSchema = z.object({ path: z.string(), diff --git a/packages/client/src/restapi/vocabularies/get_list.ts b/packages/client/src/restapi/vocabularies/get_list.ts index 1a6b18b83a..312be656aa 100644 --- a/packages/client/src/restapi/vocabularies/get_list.ts +++ b/packages/client/src/restapi/vocabularies/get_list.ts @@ -1,6 +1,6 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; -import { GetVocabulariesListResponse } from '@plone/types'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; +import type { GetVocabulariesListResponse } from '@plone/types'; export type VocabulariesListArgs = { config: PloneClientConfig; diff --git a/packages/client/src/restapi/workflow/add.ts b/packages/client/src/restapi/workflow/add.ts index 91b355bff9..86988f021c 100644 --- a/packages/client/src/restapi/workflow/add.ts +++ b/packages/client/src/restapi/workflow/add.ts @@ -1,11 +1,11 @@ import { z } from 'zod'; -import { apiRequest, ApiRequestParams } from '../../API'; +import { apiRequest, type ApiRequestParams } from '../../API'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; import { createWorkflowDataSchema } from '../../validation/workflow'; -import { CreateWorkflowResponse } from '@plone/types'; +import type { CreateWorkflowResponse } from '@plone/types'; export const createWorkflowArgsSchema = z.object({ path: z.string(), diff --git a/packages/client/src/restapi/workflow/get.ts b/packages/client/src/restapi/workflow/get.ts index 7b0e733dfe..1e1f16801d 100644 --- a/packages/client/src/restapi/workflow/get.ts +++ b/packages/client/src/restapi/workflow/get.ts @@ -1,7 +1,7 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; -import { WorkflowResponse } from '@plone/types'; import { z } from 'zod'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; +import type { WorkflowResponse } from '@plone/types'; const getWorkflowSchema = z.object({ path: z.string(), diff --git a/packages/client/src/restapi/workingcopy/add.ts b/packages/client/src/restapi/workingcopy/add.ts index b5d3bcfa49..534a00eae0 100644 --- a/packages/client/src/restapi/workingcopy/add.ts +++ b/packages/client/src/restapi/workingcopy/add.ts @@ -1,10 +1,10 @@ import { z } from 'zod'; -import { apiRequest, ApiRequestParams } from '../../API'; +import { apiRequest, type ApiRequestParams } from '../../API'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; -import { CreateWorkingcopyResponse } from '@plone/types'; +import type { CreateWorkingcopyResponse } from '@plone/types'; export const createWorkingcopyArgsSchema = z.object({ path: z.string(), diff --git a/packages/client/src/restapi/workingcopy/check-in.ts b/packages/client/src/restapi/workingcopy/check-in.ts index d2c91d7c81..36627ac325 100644 --- a/packages/client/src/restapi/workingcopy/check-in.ts +++ b/packages/client/src/restapi/workingcopy/check-in.ts @@ -1,7 +1,7 @@ import { z } from 'zod'; -import { apiRequest, ApiRequestParams } from '../../API'; +import { apiRequest, type ApiRequestParams } from '../../API'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; diff --git a/packages/client/src/restapi/workingcopy/delete.ts b/packages/client/src/restapi/workingcopy/delete.ts index 9efab73607..11db8c026c 100644 --- a/packages/client/src/restapi/workingcopy/delete.ts +++ b/packages/client/src/restapi/workingcopy/delete.ts @@ -1,7 +1,7 @@ -import { apiRequest, ApiRequestParams } from '../../API'; +import { apiRequest, type ApiRequestParams } from '../../API'; import { z } from 'zod'; import { - PloneClientConfig, + type PloneClientConfig, PloneClientConfigSchema, } from '../../validation/config'; diff --git a/packages/client/src/restapi/workingcopy/get.ts b/packages/client/src/restapi/workingcopy/get.ts index 1149d49863..4426a0314a 100644 --- a/packages/client/src/restapi/workingcopy/get.ts +++ b/packages/client/src/restapi/workingcopy/get.ts @@ -1,7 +1,7 @@ -import { apiRequest, ApiRequestParams } from '../../API'; -import { PloneClientConfig } from '../../validation/config'; import { z } from 'zod'; -import { GetWorkingcopyResponse } from '@plone/types'; +import { apiRequest, type ApiRequestParams } from '../../API'; +import type { PloneClientConfig } from '../../validation/config'; +import type { GetWorkingcopyResponse } from '@plone/types'; const getWorkingcopySchema = z.object({ path: z.string(), diff --git a/packages/client/src/utils/misc.ts b/packages/client/src/utils/misc.ts index 6486c48f7d..d668d3971e 100644 --- a/packages/client/src/utils/misc.ts +++ b/packages/client/src/utils/misc.ts @@ -4,7 +4,7 @@ import { useMutation, useQuery, } from '@tanstack/react-query'; -import { PloneClientConfig } from '../validation/config'; +import type { PloneClientConfig } from '../validation/config'; /* configGetter is required instead of using the config directly to make sure diff --git a/packages/client/tsconfig.json b/packages/client/tsconfig.json index dfe27120f2..8d104e76ee 100644 --- a/packages/client/tsconfig.json +++ b/packages/client/tsconfig.json @@ -1,21 +1,28 @@ { "compilerOptions": { - "target": "ESNext", - "useDefineForClassFields": true, - "lib": ["DOM", "DOM.Iterable", "ESNext"], - "allowJs": false, - "skipLibCheck": true, "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "module": "ESNext", - "moduleResolution": "Node", + "skipLibCheck": true, + "target": "es2022", + "allowJs": true, "resolveJsonModule": true, + "moduleDetection": "force", "isolatedModules": true, + "verbatimModuleSyntax": true, + + "strict": true, + "noImplicitOverride": true, + + "lib": ["es2022", "dom", "dom.iterable"], + "module": "preserve", "noEmit": true, + "jsx": "react-jsx", - "types": ["vite", "vitest/globals"] + + "allowSyntheticDefaultImports": true, + "forceConsistentCasingInFileNames": true, + "strictPropertyInitialization": false, + + "useDefineForClassFields": true }, "exclude": ["node_modules", "dist", "coverage", "src/**/*.test.{ts,tsx}"], "include": ["src"], diff --git a/packages/client/tsup.config.ts b/packages/client/tsup.config.ts new file mode 100644 index 0000000000..82b88a425c --- /dev/null +++ b/packages/client/tsup.config.ts @@ -0,0 +1,9 @@ +import { defineConfig } from 'tsup'; + +export default defineConfig({ + entryPoints: ['src/index.ts'], + format: ['cjs', 'esm'], + dts: true, + outDir: 'dist', + clean: true, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d3b139d155..a1570cd860 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -386,27 +386,9 @@ importers: specifier: ^3.22.4 version: 3.22.5 devDependencies: - '@parcel/config-default': - specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)(postcss@8.4.47)(relateurl@0.2.7)(srcset@4.0.0)(terser@5.30.3)(typescript@5.6.3) - '@parcel/core': - specifier: ^2.12.0 - version: 2.12.0(@swc/helpers@0.5.10) - '@parcel/optimizer-terser': - specifier: 2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/packager-ts': - specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/transformer-js': - specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10)) - '@parcel/transformer-react-refresh-wrap': - specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/transformer-typescript-types': - specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)(typescript@5.6.3) + '@arethetypeswrong/cli': + specifier: ^0.16.4 + version: 0.16.4 '@plone/types': specifier: 'workspace: *' version: link:../types @@ -440,9 +422,6 @@ importers: jsdom: specifier: ^21.1.1 version: 21.1.2 - parcel: - specifier: ^2.12.0 - version: 2.12.0(@swc/helpers@0.5.10)(postcss@8.4.47)(relateurl@0.2.7)(srcset@4.0.0)(terser@5.30.3)(typescript@5.6.3) react: specifier: ^18.2.0 version: 18.2.0 @@ -4468,10 +4447,6 @@ packages: resolution: {integrity: sha512-iBi6LZB3lm6WmbXfzi8J3DCVPmn4FN2lw7DGXxUXu7MouDPVWfTsM6U/5TkSHJRNRogZ2gqy5q9g34NPxHbJcw==} engines: {node: '>= 12.0.0', parcel: ^2.12.0} - '@parcel/optimizer-terser@2.12.0': - resolution: {integrity: sha512-cIAJ+nLPk7MUGiSbsam8vM8gQNiaVavKhJN13PsEBzv0QLOQm0TCl02cGC9WJIukyc90AO5p3MnFP4/1U1M8iA==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - '@parcel/package-manager@2.12.0': resolution: {integrity: sha512-0nvAezcjPx9FT+hIL+LS1jb0aohwLZXct7jAh7i0MLMtehOi0z1Sau+QpgMlA9rfEZZ1LIeFdnZZwqSy7Ccspw==} engines: {node: '>= 12.0.0'} @@ -20777,18 +20752,6 @@ snapshots: - '@parcel/core' - '@swc/helpers' - '@parcel/optimizer-terser@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': - dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.12.0 - nullthrows: 1.1.1 - terser: 5.30.3 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - '@parcel/package-manager@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': dependencies: '@parcel/core': 2.12.0(@swc/helpers@0.5.10) @@ -24479,7 +24442,7 @@ snapshots: globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.4 - semver: 7.6.0 + semver: 7.6.3 ts-api-utils: 1.3.0(typescript@5.6.3) optionalDependencies: typescript: 5.6.3 @@ -24510,7 +24473,7 @@ snapshots: '@typescript-eslint/types': 7.7.0 '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.6.3) eslint: 8.57.0 - semver: 7.6.0 + semver: 7.6.3 transitivePeerDependencies: - supports-color - typescript From bb03e8fae38675f7b8ca4d4bbf32803665af5317 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Fern=C3=A1ndez=20de=20Alba?= Date: Mon, 4 Nov 2024 22:30:31 +0100 Subject: [PATCH 04/47] Replace `parcel` with `tsup`. Better types, better tsconfig. Move to ESM. (#6467) --- packages/components/.parcelrc | 9 --- packages/components/news/6467.internal | 1 + packages/components/package.json | 31 +++----- .../components/BlockToolbar/BlockToolbar.tsx | 5 +- .../src/components/Button/Button.tsx | 4 +- .../src/components/Calendar/Calendar.tsx | 4 +- .../src/components/Checkbox/Checkbox.tsx | 2 +- .../CheckboxGroup/CheckboxGroup.tsx | 4 +- .../src/components/ColorArea/ColorArea.tsx | 2 +- .../src/components/ColorField/ColorField.tsx | 4 +- .../components/ColorPicker/ColorPicker.tsx | 2 +- .../components/ColorSlider/ColorSlider.tsx | 2 +- .../components/ColorSwatch/ColorSwatch.tsx | 2 +- .../ColorSwatchPicker/ColorSwatchPicker.tsx | 4 +- .../src/components/ColorWheel/ColorWheel.tsx | 2 +- .../src/components/ComboBox/ComboBox.tsx | 6 +- .../src/components/DateField/DateField.tsx | 6 +- .../src/components/DatePicker/DatePicker.tsx | 6 +- .../DateRangePicker/DateRangePicker.tsx | 6 +- .../src/components/Dialog/Dialog.tsx | 2 +- .../src/components/Disclosure/Disclosure.tsx | 2 +- .../DisclosureGroup/DisclosureGroup.tsx | 2 +- .../components/src/components/Form/Form.tsx | 2 +- .../src/components/GridList/GridList.tsx | 4 +- .../components/src/components/Icon/Icon.tsx | 4 +- .../src/components/ListBox/ListBox.tsx | 4 +- .../components/src/components/Menu/Menu.tsx | 8 +- .../components/src/components/Meter/Meter.tsx | 2 +- .../components/src/components/Modal/Modal.tsx | 5 +- .../components/NumberField/NumberField.tsx | 4 +- .../src/components/Popover/Popover.tsx | 2 +- .../components/ProgressBar/ProgressBar.tsx | 2 +- .../src/components/RadioGroup/RadioGroup.tsx | 4 +- .../RangeCalendar/RangeCalendar.tsx | 4 +- .../components/SearchField/SearchField.tsx | 4 +- .../src/components/Select/Select.stories.tsx | 5 -- .../src/components/Select/Select.tsx | 15 ++-- .../src/components/Slider/Slider.tsx | 2 +- .../src/components/Switch/Switch.tsx | 2 +- .../components/src/components/Tabs/Tabs.tsx | 2 +- .../src/components/TagGroup/TagGroup.tsx | 6 +- .../TextAreaField/TextAreaField.tsx | 4 +- .../src/components/TextField/TextField.tsx | 4 +- .../src/components/TimeField/TimeField.tsx | 6 +- .../components/ToggleButton/ToggleButton.tsx | 2 +- .../src/components/Toolbar/Toolbar.tsx | 5 +- .../src/components/Tooltip/Tooltip.tsx | 2 +- .../src/components/quanta/Select/Select.tsx | 11 ++- .../quanta/TextAreaField/TextAreaField.tsx | 2 +- .../components/quanta/TextField/TextField.tsx | 2 +- packages/components/tsconfig.json | 27 ++++--- packages/components/tsup.config.ts | 9 +++ .../{vite.config.mts => vite.config.ts} | 0 .../{vitest.config.mts => vitest.config.ts} | 0 pnpm-lock.yaml | 79 +++++++------------ 55 files changed, 168 insertions(+), 174 deletions(-) delete mode 100644 packages/components/.parcelrc create mode 100644 packages/components/news/6467.internal create mode 100644 packages/components/tsup.config.ts rename packages/components/{vite.config.mts => vite.config.ts} (100%) rename packages/components/{vitest.config.mts => vitest.config.ts} (100%) diff --git a/packages/components/.parcelrc b/packages/components/.parcelrc deleted file mode 100644 index db2d15099d..0000000000 --- a/packages/components/.parcelrc +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "@parcel/config-default", - "transformers": { - "*.{js,mjs,jsm,jsx,es6,cjs,ts,tsx}": [ - "@parcel/transformer-js", - "@parcel/transformer-react-refresh-wrap" - ] - } -} diff --git a/packages/components/news/6467.internal b/packages/components/news/6467.internal new file mode 100644 index 0000000000..97beb403a0 --- /dev/null +++ b/packages/components/news/6467.internal @@ -0,0 +1 @@ +Replace `parcel` with `tsup`. Better types, better tsconfig. Move to ESM. @sneridagh diff --git a/packages/components/package.json b/packages/components/package.json index d76dbe9972..846ac78695 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -16,23 +16,20 @@ "bugs": { "url": "https://github.com/plone/components/issues" }, + "type": "module", "files": [ "dist", "src", "README.md" ], - "source": "./src/index.ts", - "main": "./dist/main.js", - "module": "./dist/module.mjs", - "types": "./dist/index.d.ts", + "main": "./dist/index.js", "exports": { + "./package.json": "./package.json", ".": { - "types": "./dist/index.d.ts", - "import": "./dist/module.mjs", - "require": "./dist/main.js" + "import": "./dist/index.js", + "default": "./dist/index.cjs" }, - "./dist/*.css": "./dist/*.css", - "./src/*": "./src/*" + "./dist/*.css": "./dist/*.css" }, "homepage": "https://plone.org", "keywords": [ @@ -45,12 +42,13 @@ "quanta" ], "scripts": { - "build": "parcel build && pnpm build:css", - "build:force": "parcel build --no-cache && pnpm build:css", + "build": "tsup && pnpm build:css", + "build:force": "tsup && pnpm build:css", "build:css": "pnpm build:basic && pnpm build:quanta", "build:basic": "lightningcss --browserslist --bundle --sourcemap src/styles/basic/main.css -o basic.css && mv basic.css* dist/.", "build:quanta": "lightningcss --browserslist --bundle --sourcemap src/styles/quanta/main.css -o quanta.css && mv quanta.css* dist/.", - "check-ts": "tsc --project tsconfig.json", + "check:exports": "attw --pack .", + "check:ts": "tsc --project tsconfig.json", "test": "vitest --passWithNoTests", "coverage": "vitest run --coverage --no-threads", "lint": "pnpm eslint && pnpm prettier && pnpm stylelint && pnpm check-ts", @@ -77,12 +75,7 @@ "not dead" ], "devDependencies": { - "@parcel/config-default": "^2.12.0", - "@parcel/core": "^2.12.0", - "@parcel/packager-ts": "^2.12.0", - "@parcel/transformer-js": "^2.12.0", - "@parcel/transformer-react-refresh-wrap": "^2.12.0", - "@parcel/transformer-typescript-types": "^2.12.0", + "@arethetypeswrong/cli": "^0.16.4", "@plone/types": "workspace: *", "@react-types/shared": "^3.22.0", "@storybook/addon-essentials": "^8.0.4", @@ -107,9 +100,9 @@ "jsdom": "^22.1.0", "lightningcss": "^1.24.0", "lightningcss-cli": "^1.24.0", - "parcel": "^2.12.0", "release-it": "17.1.1", "storybook": "^8.0.4", + "tsup": "^8.3.5", "typescript": "^5.6.3", "vite": "^5.4.8", "vitest": "^2.1.3", diff --git a/packages/components/src/components/BlockToolbar/BlockToolbar.tsx b/packages/components/src/components/BlockToolbar/BlockToolbar.tsx index 62f1b47922..f76ba5ef83 100644 --- a/packages/components/src/components/BlockToolbar/BlockToolbar.tsx +++ b/packages/components/src/components/BlockToolbar/BlockToolbar.tsx @@ -1,5 +1,8 @@ import React from 'react'; -import { Toolbar as RACToolbar, ToolbarProps } from 'react-aria-components'; +import { + Toolbar as RACToolbar, + type ToolbarProps, +} from 'react-aria-components'; export function BlockToolbar(props: ToolbarProps) { return ; diff --git a/packages/components/src/components/Button/Button.tsx b/packages/components/src/components/Button/Button.tsx index 9e8c76b371..c466e8a1dd 100644 --- a/packages/components/src/components/Button/Button.tsx +++ b/packages/components/src/components/Button/Button.tsx @@ -1,5 +1,5 @@ -import React, { forwardRef, ForwardedRef } from 'react'; -import { Button as RACButton, ButtonProps } from 'react-aria-components'; +import React, { forwardRef, type ForwardedRef } from 'react'; +import { Button as RACButton, type ButtonProps } from 'react-aria-components'; export const Button = forwardRef(function _Button( props: ButtonProps, diff --git a/packages/components/src/components/Calendar/Calendar.tsx b/packages/components/src/components/Calendar/Calendar.tsx index 37f3b489c4..faf32a12d7 100644 --- a/packages/components/src/components/Calendar/Calendar.tsx +++ b/packages/components/src/components/Calendar/Calendar.tsx @@ -4,8 +4,8 @@ import { Calendar as RACCalendar, CalendarCell, CalendarGrid, - CalendarProps as RACCalendarProps, - DateValue, + type CalendarProps as RACCalendarProps, + type DateValue, Heading, Text, } from 'react-aria-components'; diff --git a/packages/components/src/components/Checkbox/Checkbox.tsx b/packages/components/src/components/Checkbox/Checkbox.tsx index a24407dd5b..47eaca3ef5 100644 --- a/packages/components/src/components/Checkbox/Checkbox.tsx +++ b/packages/components/src/components/Checkbox/Checkbox.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { Checkbox as RACCheckbox, - CheckboxProps as RACCheckboxProps, + type CheckboxProps as RACCheckboxProps, } from 'react-aria-components'; interface CheckboxProps extends RACCheckboxProps { diff --git a/packages/components/src/components/CheckboxGroup/CheckboxGroup.tsx b/packages/components/src/components/CheckboxGroup/CheckboxGroup.tsx index 0c29059708..d0106355dd 100644 --- a/packages/components/src/components/CheckboxGroup/CheckboxGroup.tsx +++ b/packages/components/src/components/CheckboxGroup/CheckboxGroup.tsx @@ -1,10 +1,10 @@ import React from 'react'; import { CheckboxGroup as RACCheckboxGroup, - CheckboxGroupProps as RACCheckboxGroupProps, + type CheckboxGroupProps as RACCheckboxGroupProps, FieldError, Text, - ValidationResult, + type ValidationResult, } from 'react-aria-components'; export interface CheckboxGroupProps diff --git a/packages/components/src/components/ColorArea/ColorArea.tsx b/packages/components/src/components/ColorArea/ColorArea.tsx index 8464766f70..3f060b6721 100644 --- a/packages/components/src/components/ColorArea/ColorArea.tsx +++ b/packages/components/src/components/ColorArea/ColorArea.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { ColorArea as RACColorArea, - ColorAreaProps, + type ColorAreaProps, ColorThumb, } from 'react-aria-components'; diff --git a/packages/components/src/components/ColorField/ColorField.tsx b/packages/components/src/components/ColorField/ColorField.tsx index fff7c0f912..ac3f00f62e 100644 --- a/packages/components/src/components/ColorField/ColorField.tsx +++ b/packages/components/src/components/ColorField/ColorField.tsx @@ -1,12 +1,12 @@ import * as React from 'react'; import { ColorField as RACColorField, - ColorFieldProps as RACColorFieldProps, + type ColorFieldProps as RACColorFieldProps, FieldError, Input, Label, Text, - ValidationResult, + type ValidationResult, } from 'react-aria-components'; export interface ColorFieldProps extends RACColorFieldProps { diff --git a/packages/components/src/components/ColorPicker/ColorPicker.tsx b/packages/components/src/components/ColorPicker/ColorPicker.tsx index b5256e24c2..4bedc19b43 100644 --- a/packages/components/src/components/ColorPicker/ColorPicker.tsx +++ b/packages/components/src/components/ColorPicker/ColorPicker.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import { Button, ColorPicker as RACColorPicker, - ColorPickerProps as RACColorPickerProps, + type ColorPickerProps as RACColorPickerProps, Dialog, DialogTrigger, Popover, diff --git a/packages/components/src/components/ColorSlider/ColorSlider.tsx b/packages/components/src/components/ColorSlider/ColorSlider.tsx index 55b81b9351..de9afa32c2 100644 --- a/packages/components/src/components/ColorSlider/ColorSlider.tsx +++ b/packages/components/src/components/ColorSlider/ColorSlider.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { ColorSlider as RACColorSlider, - ColorSliderProps as RACColorSliderProps, + type ColorSliderProps as RACColorSliderProps, ColorThumb, Label, SliderOutput, diff --git a/packages/components/src/components/ColorSwatch/ColorSwatch.tsx b/packages/components/src/components/ColorSwatch/ColorSwatch.tsx index b80a13c31c..1415622497 100644 --- a/packages/components/src/components/ColorSwatch/ColorSwatch.tsx +++ b/packages/components/src/components/ColorSwatch/ColorSwatch.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { ColorSwatch as RACColorSwatch, - ColorSwatchProps, + type ColorSwatchProps, } from 'react-aria-components'; export function ColorSwatch(props: ColorSwatchProps) { diff --git a/packages/components/src/components/ColorSwatchPicker/ColorSwatchPicker.tsx b/packages/components/src/components/ColorSwatchPicker/ColorSwatchPicker.tsx index 9ecdc9dac1..2d1598980a 100644 --- a/packages/components/src/components/ColorSwatchPicker/ColorSwatchPicker.tsx +++ b/packages/components/src/components/ColorSwatchPicker/ColorSwatchPicker.tsx @@ -2,8 +2,8 @@ import * as React from 'react'; import { ColorSwatchPicker as AriaColorSwatchPicker, ColorSwatchPickerItem as AriaColorSwatchPickerItem, - ColorSwatchPickerItemProps, - ColorSwatchPickerProps, + type ColorSwatchPickerItemProps, + type ColorSwatchPickerProps, } from 'react-aria-components'; import { ColorSwatch } from '../ColorSwatch/ColorSwatch'; diff --git a/packages/components/src/components/ColorWheel/ColorWheel.tsx b/packages/components/src/components/ColorWheel/ColorWheel.tsx index a9dff1f543..fd601243bb 100644 --- a/packages/components/src/components/ColorWheel/ColorWheel.tsx +++ b/packages/components/src/components/ColorWheel/ColorWheel.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import { ColorThumb, ColorWheel as AriaColorWheel, - ColorWheelProps as AriaColorWheelProps, + type ColorWheelProps as AriaColorWheelProps, ColorWheelTrack, } from 'react-aria-components'; diff --git a/packages/components/src/components/ComboBox/ComboBox.tsx b/packages/components/src/components/ComboBox/ComboBox.tsx index f3cc54422c..dae5e3767d 100644 --- a/packages/components/src/components/ComboBox/ComboBox.tsx +++ b/packages/components/src/components/ComboBox/ComboBox.tsx @@ -2,16 +2,16 @@ import React from 'react'; import { Button, ComboBox as RACComboBox, - ComboBoxProps as RACComboBoxProps, + type ComboBoxProps as RACComboBoxProps, FieldError, Input, Label, ListBox, ListBoxItem, - ListBoxItemProps, + type ListBoxItemProps, Popover, Text, - ValidationResult, + type ValidationResult, } from 'react-aria-components'; export interface ComboBoxProps diff --git a/packages/components/src/components/DateField/DateField.tsx b/packages/components/src/components/DateField/DateField.tsx index 8f41e0a680..6bbca4b9c8 100644 --- a/packages/components/src/components/DateField/DateField.tsx +++ b/packages/components/src/components/DateField/DateField.tsx @@ -1,14 +1,14 @@ import React from 'react'; import { DateField as RACDateField, - DateFieldProps as RACDateFieldProps, + type DateFieldProps as RACDateFieldProps, DateInput, DateSegment, - DateValue, + type DateValue, FieldError, Label, Text, - ValidationResult, + type ValidationResult, } from 'react-aria-components'; export interface DateFieldProps diff --git a/packages/components/src/components/DatePicker/DatePicker.tsx b/packages/components/src/components/DatePicker/DatePicker.tsx index b49bc7e493..9db14f1278 100644 --- a/packages/components/src/components/DatePicker/DatePicker.tsx +++ b/packages/components/src/components/DatePicker/DatePicker.tsx @@ -6,9 +6,9 @@ import { CalendarGrid, DateInput, DatePicker as RACDatePicker, - DatePickerProps as RACDatePickerProps, + type DatePickerProps as RACDatePickerProps, DateSegment, - DateValue, + type DateValue, Dialog, FieldError, Group, @@ -16,7 +16,7 @@ import { Label, Popover, Text, - ValidationResult, + type ValidationResult, } from 'react-aria-components'; export interface DatePickerProps diff --git a/packages/components/src/components/DateRangePicker/DateRangePicker.tsx b/packages/components/src/components/DateRangePicker/DateRangePicker.tsx index 55b76c5fde..9a00fd0a44 100644 --- a/packages/components/src/components/DateRangePicker/DateRangePicker.tsx +++ b/packages/components/src/components/DateRangePicker/DateRangePicker.tsx @@ -5,9 +5,9 @@ import { CalendarGrid, DateInput, DateRangePicker as RACDateRangePicker, - DateRangePickerProps as RACDateRangePickerProps, + type DateRangePickerProps as RACDateRangePickerProps, DateSegment, - DateValue, + type DateValue, Dialog, FieldError, Group, @@ -16,7 +16,7 @@ import { Popover, RangeCalendar, Text, - ValidationResult, + type ValidationResult, } from 'react-aria-components'; export interface DateRangePickerProps diff --git a/packages/components/src/components/Dialog/Dialog.tsx b/packages/components/src/components/Dialog/Dialog.tsx index 39de5afd8e..503f87f9d5 100644 --- a/packages/components/src/components/Dialog/Dialog.tsx +++ b/packages/components/src/components/Dialog/Dialog.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { Dialog as RACDialog, DialogProps } from 'react-aria-components'; +import { Dialog as RACDialog, type DialogProps } from 'react-aria-components'; export function Dialog(props: DialogProps) { return ; diff --git a/packages/components/src/components/Disclosure/Disclosure.tsx b/packages/components/src/components/Disclosure/Disclosure.tsx index 8e062a8d61..1820159bee 100644 --- a/packages/components/src/components/Disclosure/Disclosure.tsx +++ b/packages/components/src/components/Disclosure/Disclosure.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { UNSTABLE_Disclosure as RACDisclosure, - DisclosureProps, + type DisclosureProps, } from 'react-aria-components'; /** diff --git a/packages/components/src/components/DisclosureGroup/DisclosureGroup.tsx b/packages/components/src/components/DisclosureGroup/DisclosureGroup.tsx index 4196e558c6..7588d0d580 100644 --- a/packages/components/src/components/DisclosureGroup/DisclosureGroup.tsx +++ b/packages/components/src/components/DisclosureGroup/DisclosureGroup.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { UNSTABLE_DisclosureGroup as RACDisclosureGroup, - DisclosureGroupProps, + type DisclosureGroupProps, } from 'react-aria-components'; /** diff --git a/packages/components/src/components/Form/Form.tsx b/packages/components/src/components/Form/Form.tsx index f2f2e9b70a..03fd907bef 100644 --- a/packages/components/src/components/Form/Form.tsx +++ b/packages/components/src/components/Form/Form.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { Form as RACForm, FormProps } from 'react-aria-components'; +import { Form as RACForm, type FormProps } from 'react-aria-components'; export function Form(props: FormProps) { return ; diff --git a/packages/components/src/components/GridList/GridList.tsx b/packages/components/src/components/GridList/GridList.tsx index d195b71cfd..088235641d 100644 --- a/packages/components/src/components/GridList/GridList.tsx +++ b/packages/components/src/components/GridList/GridList.tsx @@ -3,8 +3,8 @@ import { Button, GridList as RACGridList, GridListItem as RACGridListItem, - GridListItemProps, - GridListProps, + type GridListItemProps, + type GridListProps, } from 'react-aria-components'; import { Checkbox } from '../Checkbox/Checkbox'; diff --git a/packages/components/src/components/Icon/Icon.tsx b/packages/components/src/components/Icon/Icon.tsx index 0056688024..c55a91521e 100644 --- a/packages/components/src/components/Icon/Icon.tsx +++ b/packages/components/src/components/Icon/Icon.tsx @@ -1,4 +1,4 @@ -import React, { ReactElement } from 'react'; +import React, { type ReactElement } from 'react'; import type { AriaLabelingProps, DOMProps, @@ -7,7 +7,7 @@ import type { } from '@react-types/shared'; import { baseStyleProps, - StyleHandlers, + type StyleHandlers, useSlotProps, useStyleProps, } from '@react-spectrum/utils'; diff --git a/packages/components/src/components/ListBox/ListBox.tsx b/packages/components/src/components/ListBox/ListBox.tsx index ac90dbe68f..244efb16a4 100644 --- a/packages/components/src/components/ListBox/ListBox.tsx +++ b/packages/components/src/components/ListBox/ListBox.tsx @@ -2,8 +2,8 @@ import React from 'react'; import { ListBox as RACListBox, ListBoxItem as RACListBoxItem, - ListBoxItemProps, - ListBoxProps, + type ListBoxItemProps, + type ListBoxProps, } from 'react-aria-components'; export function ListBox({ diff --git a/packages/components/src/components/Menu/Menu.tsx b/packages/components/src/components/Menu/Menu.tsx index db153971a6..14834205cd 100644 --- a/packages/components/src/components/Menu/Menu.tsx +++ b/packages/components/src/components/Menu/Menu.tsx @@ -2,12 +2,12 @@ import React from 'react'; import { Menu as RACMenu, MenuItem as RACMenuItem, - MenuItemProps, - MenuProps, + type MenuItemProps, + type MenuProps, MenuTrigger, - MenuTriggerProps, + type MenuTriggerProps, Popover, - PressEvent, + type PressEvent, } from 'react-aria-components'; import { Button } from '../Button/Button'; diff --git a/packages/components/src/components/Meter/Meter.tsx b/packages/components/src/components/Meter/Meter.tsx index fb06f8c57c..71da9815c6 100644 --- a/packages/components/src/components/Meter/Meter.tsx +++ b/packages/components/src/components/Meter/Meter.tsx @@ -2,7 +2,7 @@ import React from 'react'; import { Label, Meter as RACMeter, - MeterProps as RACMeterProps, + type MeterProps as RACMeterProps, } from 'react-aria-components'; export interface MeterProps extends RACMeterProps { diff --git a/packages/components/src/components/Modal/Modal.tsx b/packages/components/src/components/Modal/Modal.tsx index 83eb2e061c..2ef1c970cb 100644 --- a/packages/components/src/components/Modal/Modal.tsx +++ b/packages/components/src/components/Modal/Modal.tsx @@ -1,5 +1,8 @@ import React from 'react'; -import { Modal as RACModal, ModalOverlayProps } from 'react-aria-components'; +import { + Modal as RACModal, + type ModalOverlayProps, +} from 'react-aria-components'; export function Modal(props: ModalOverlayProps) { return ; diff --git a/packages/components/src/components/NumberField/NumberField.tsx b/packages/components/src/components/NumberField/NumberField.tsx index 98781966fe..462910c32d 100644 --- a/packages/components/src/components/NumberField/NumberField.tsx +++ b/packages/components/src/components/NumberField/NumberField.tsx @@ -5,9 +5,9 @@ import { Input, Label, NumberField as RACNumberField, - NumberFieldProps as RACNumberFieldProps, + type NumberFieldProps as RACNumberFieldProps, Text, - ValidationResult, + type ValidationResult, } from 'react-aria-components'; import { Button } from '../Button/Button'; import { AddIcon } from '../Icons/AddIcon'; diff --git a/packages/components/src/components/Popover/Popover.tsx b/packages/components/src/components/Popover/Popover.tsx index a79c3d1418..8a0614c9b6 100644 --- a/packages/components/src/components/Popover/Popover.tsx +++ b/packages/components/src/components/Popover/Popover.tsx @@ -2,7 +2,7 @@ import React from 'react'; import { OverlayArrow, Popover as RACPopover, - PopoverProps as RACPopoverProps, + type PopoverProps as RACPopoverProps, } from 'react-aria-components'; import { Dialog } from '../Dialog/Dialog'; diff --git a/packages/components/src/components/ProgressBar/ProgressBar.tsx b/packages/components/src/components/ProgressBar/ProgressBar.tsx index cb72f500f5..2fa1f49ca8 100644 --- a/packages/components/src/components/ProgressBar/ProgressBar.tsx +++ b/packages/components/src/components/ProgressBar/ProgressBar.tsx @@ -2,7 +2,7 @@ import React from 'react'; import { Label, ProgressBar as RACProgressBar, - ProgressBarProps as RACProgressBarProps, + type ProgressBarProps as RACProgressBarProps, } from 'react-aria-components'; export interface ProgressBarProps extends RACProgressBarProps { diff --git a/packages/components/src/components/RadioGroup/RadioGroup.tsx b/packages/components/src/components/RadioGroup/RadioGroup.tsx index 90fea840d4..7090d0f15a 100644 --- a/packages/components/src/components/RadioGroup/RadioGroup.tsx +++ b/packages/components/src/components/RadioGroup/RadioGroup.tsx @@ -3,9 +3,9 @@ import { FieldError, Label, RadioGroup as RACRadioGroup, - RadioGroupProps as RACRadioGroupProps, + type RadioGroupProps as RACRadioGroupProps, Text, - ValidationResult, + type ValidationResult, } from 'react-aria-components'; export interface RadioGroupProps extends Omit { diff --git a/packages/components/src/components/RangeCalendar/RangeCalendar.tsx b/packages/components/src/components/RangeCalendar/RangeCalendar.tsx index 7881028477..63e32cdcab 100644 --- a/packages/components/src/components/RangeCalendar/RangeCalendar.tsx +++ b/packages/components/src/components/RangeCalendar/RangeCalendar.tsx @@ -3,10 +3,10 @@ import { Button, CalendarCell, CalendarGrid, - DateValue, + type DateValue, Heading, RangeCalendar as RACRangeCalendar, - RangeCalendarProps as RACRangeCalendarProps, + type RangeCalendarProps as RACRangeCalendarProps, Text, } from 'react-aria-components'; diff --git a/packages/components/src/components/SearchField/SearchField.tsx b/packages/components/src/components/SearchField/SearchField.tsx index 57f7946d4f..dc5c3964b3 100644 --- a/packages/components/src/components/SearchField/SearchField.tsx +++ b/packages/components/src/components/SearchField/SearchField.tsx @@ -5,9 +5,9 @@ import { Input, Label, SearchField as RACSearchField, - SearchFieldProps as RACSearchFieldProps, + type SearchFieldProps as RACSearchFieldProps, Text, - ValidationResult, + type ValidationResult, } from 'react-aria-components'; export interface SearchFieldProps extends RACSearchFieldProps { diff --git a/packages/components/src/components/Select/Select.stories.tsx b/packages/components/src/components/Select/Select.stories.tsx index 97842eda90..7adb2e0afc 100644 --- a/packages/components/src/components/Select/Select.stories.tsx +++ b/packages/components/src/components/Select/Select.stories.tsx @@ -4,11 +4,6 @@ import type { Meta, StoryObj } from '@storybook/react'; import '../../styles/basic/Select.css'; -export interface SelectItemObject { - label: string; - value: string; -} - // More on how to set up stories at: https://storybook.js.org/docs/7.0/react/writing-stories/introduction const meta = { title: 'Forms/Select', diff --git a/packages/components/src/components/Select/Select.tsx b/packages/components/src/components/Select/Select.tsx index d57402e238..5cb8f71488 100644 --- a/packages/components/src/components/Select/Select.tsx +++ b/packages/components/src/components/Select/Select.tsx @@ -5,15 +5,15 @@ import { Label, ListBox, ListBoxItem, - ListBoxItemProps, + type ListBoxItemProps, Popover, PopoverContext, Select as RACSelect, - SelectProps as RACSelectProps, + type SelectProps as RACSelectProps, SelectValue, Text, useContextProps, - ValidationResult, + type ValidationResult, } from 'react-aria-components'; import { ChevrondownIcon } from '../Icons/ChevrondownIcon'; @@ -43,7 +43,7 @@ export interface SelectProps * the data. * */ -export function Select({ +export function Select({ label, description, errorMessage, @@ -73,7 +73,7 @@ export function Select({ {children} ) : ( - {(item: SelectItemObject) => ( + {(item) => ( {item.value} )} @@ -85,6 +85,11 @@ export function Select({ ); } +export type SelectItemObject = { + label: string; + value: string; +}; + export function SelectItem(props: ListBoxItemProps) { return ; } diff --git a/packages/components/src/components/Slider/Slider.tsx b/packages/components/src/components/Slider/Slider.tsx index f09e907195..4fab667edf 100644 --- a/packages/components/src/components/Slider/Slider.tsx +++ b/packages/components/src/components/Slider/Slider.tsx @@ -3,7 +3,7 @@ import { Label, Slider as RACSlider, SliderOutput, - SliderProps as RACSliderProps, + type SliderProps as RACSliderProps, SliderThumb, SliderTrack, } from 'react-aria-components'; diff --git a/packages/components/src/components/Switch/Switch.tsx b/packages/components/src/components/Switch/Switch.tsx index 5f0f2d0b64..0cd187b092 100644 --- a/packages/components/src/components/Switch/Switch.tsx +++ b/packages/components/src/components/Switch/Switch.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { Switch as RACSwitch, - SwitchProps as RACSwitchProps, + type SwitchProps as RACSwitchProps, } from 'react-aria-components'; export interface SwitchProps extends Omit { diff --git a/packages/components/src/components/Tabs/Tabs.tsx b/packages/components/src/components/Tabs/Tabs.tsx index a0d4ab8cfd..7190ee2cee 100644 --- a/packages/components/src/components/Tabs/Tabs.tsx +++ b/packages/components/src/components/Tabs/Tabs.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { Tabs as RACTabs, TabsProps } from 'react-aria-components'; +import { Tabs as RACTabs, type TabsProps } from 'react-aria-components'; export function Tabs(props: TabsProps) { return ; diff --git a/packages/components/src/components/TagGroup/TagGroup.tsx b/packages/components/src/components/TagGroup/TagGroup.tsx index 1424dea383..05230519f1 100644 --- a/packages/components/src/components/TagGroup/TagGroup.tsx +++ b/packages/components/src/components/TagGroup/TagGroup.tsx @@ -4,10 +4,10 @@ import { Label, Tag as RACTag, TagGroup as RACTagGroup, - TagGroupProps as RACTagGroupProps, + type TagGroupProps as RACTagGroupProps, TagList, - TagListProps, - TagProps, + type TagListProps, + type TagProps, Text, } from 'react-aria-components'; diff --git a/packages/components/src/components/TextAreaField/TextAreaField.tsx b/packages/components/src/components/TextAreaField/TextAreaField.tsx index e79f5e78bb..76ee55ea8d 100644 --- a/packages/components/src/components/TextAreaField/TextAreaField.tsx +++ b/packages/components/src/components/TextAreaField/TextAreaField.tsx @@ -5,8 +5,8 @@ import { Label, Text, TextField as RACTextField, - TextFieldProps as RACTextFieldProps, - ValidationResult, + type TextFieldProps as RACTextFieldProps, + type ValidationResult, } from 'react-aria-components'; export interface TextAreaFieldProps extends RACTextFieldProps { diff --git a/packages/components/src/components/TextField/TextField.tsx b/packages/components/src/components/TextField/TextField.tsx index 2b29fa3e79..1190aea2a1 100644 --- a/packages/components/src/components/TextField/TextField.tsx +++ b/packages/components/src/components/TextField/TextField.tsx @@ -5,8 +5,8 @@ import { Label, Text, TextField as RACTextField, - TextFieldProps as RACTextFieldProps, - ValidationResult, + type TextFieldProps as RACTextFieldProps, + type ValidationResult, } from 'react-aria-components'; export interface TextFieldProps extends RACTextFieldProps { diff --git a/packages/components/src/components/TimeField/TimeField.tsx b/packages/components/src/components/TimeField/TimeField.tsx index 4133c46c1c..c92e531326 100644 --- a/packages/components/src/components/TimeField/TimeField.tsx +++ b/packages/components/src/components/TimeField/TimeField.tsx @@ -6,9 +6,9 @@ import { Label, Text, TimeField as RACTimeField, - TimeFieldProps as RACTimeFieldProps, - TimeValue, - ValidationResult, + type TimeFieldProps as RACTimeFieldProps, + type TimeValue, + type ValidationResult, } from 'react-aria-components'; export interface TimeFieldProps diff --git a/packages/components/src/components/ToggleButton/ToggleButton.tsx b/packages/components/src/components/ToggleButton/ToggleButton.tsx index f7599fd6af..546d47fc2b 100644 --- a/packages/components/src/components/ToggleButton/ToggleButton.tsx +++ b/packages/components/src/components/ToggleButton/ToggleButton.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { ToggleButton as RACToggleButton, - ToggleButtonProps, + type ToggleButtonProps, } from 'react-aria-components'; export function ToggleButton(props: ToggleButtonProps) { diff --git a/packages/components/src/components/Toolbar/Toolbar.tsx b/packages/components/src/components/Toolbar/Toolbar.tsx index f2b151bcce..b99af182f4 100644 --- a/packages/components/src/components/Toolbar/Toolbar.tsx +++ b/packages/components/src/components/Toolbar/Toolbar.tsx @@ -1,5 +1,8 @@ import React from 'react'; -import { Toolbar as RACToolbar, ToolbarProps } from 'react-aria-components'; +import { + Toolbar as RACToolbar, + type ToolbarProps, +} from 'react-aria-components'; export function Toolbar(props: ToolbarProps) { return ; diff --git a/packages/components/src/components/Tooltip/Tooltip.tsx b/packages/components/src/components/Tooltip/Tooltip.tsx index 17213e6ce3..b629c5f39e 100644 --- a/packages/components/src/components/Tooltip/Tooltip.tsx +++ b/packages/components/src/components/Tooltip/Tooltip.tsx @@ -2,7 +2,7 @@ import React from 'react'; import { OverlayArrow, Tooltip as RACTooltip, - TooltipProps as RACTooltipProps, + type TooltipProps as RACTooltipProps, } from 'react-aria-components'; export interface TooltipProps extends Omit { diff --git a/packages/components/src/components/quanta/Select/Select.tsx b/packages/components/src/components/quanta/Select/Select.tsx index 6e43494084..0f446c6b7d 100644 --- a/packages/components/src/components/quanta/Select/Select.tsx +++ b/packages/components/src/components/quanta/Select/Select.tsx @@ -1,8 +1,15 @@ import React from 'react'; import { SelectContext, PopoverContext } from 'react-aria-components'; -import { Select, SelectItem, SelectProps } from '../../Select/Select'; +import { + Select, + SelectItem, + type SelectProps, + type SelectItemObject, +} from '../../Select/Select'; -export function QuantaSelect(props: SelectProps) { +export function QuantaSelect( + props: SelectProps, +) { return ( diff --git a/packages/components/src/components/quanta/TextAreaField/TextAreaField.tsx b/packages/components/src/components/quanta/TextAreaField/TextAreaField.tsx index 449dd56d6d..b092fa86aa 100644 --- a/packages/components/src/components/quanta/TextAreaField/TextAreaField.tsx +++ b/packages/components/src/components/quanta/TextAreaField/TextAreaField.tsx @@ -2,7 +2,7 @@ import React from 'react'; import { TextFieldContext } from 'react-aria-components'; import { TextAreaField, - TextAreaFieldProps, + type TextAreaFieldProps, } from '../../TextAreaField/TextAreaField'; export function QuantaTextAreaField(props: TextAreaFieldProps) { diff --git a/packages/components/src/components/quanta/TextField/TextField.tsx b/packages/components/src/components/quanta/TextField/TextField.tsx index eb222e5078..08e8ae7df9 100644 --- a/packages/components/src/components/quanta/TextField/TextField.tsx +++ b/packages/components/src/components/quanta/TextField/TextField.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { TextFieldContext } from 'react-aria-components'; -import { TextField, TextFieldProps } from '../../TextField/TextField'; +import { TextField, type TextFieldProps } from '../../TextField/TextField'; export function QuantaTextField(props: TextFieldProps) { return ( diff --git a/packages/components/tsconfig.json b/packages/components/tsconfig.json index 7bb0a59429..c682dc35d7 100644 --- a/packages/components/tsconfig.json +++ b/packages/components/tsconfig.json @@ -1,20 +1,25 @@ { "compilerOptions": { - "target": "ESNext", - "useDefineForClassFields": true, - "lib": ["DOM", "DOM.Iterable", "ESNext"], - "allowJs": false, - "skipLibCheck": true, "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "module": "ESNext", - "moduleResolution": "Node", + "skipLibCheck": true, + "target": "es2022", + "allowJs": true, "resolveJsonModule": true, + "moduleDetection": "force", "isolatedModules": true, + "verbatimModuleSyntax": true, + + "strict": true, + "noImplicitOverride": true, + + "lib": ["es2022", "dom", "dom.iterable"], + "module": "preserve", "noEmit": true, - "jsx": "react", + + "jsx": "react-jsx", + + "allowSyntheticDefaultImports": true, + "forceConsistentCasingInFileNames": true }, "include": ["src", "./setupTesting.ts"], "exclude": [ diff --git a/packages/components/tsup.config.ts b/packages/components/tsup.config.ts new file mode 100644 index 0000000000..82b88a425c --- /dev/null +++ b/packages/components/tsup.config.ts @@ -0,0 +1,9 @@ +import { defineConfig } from 'tsup'; + +export default defineConfig({ + entryPoints: ['src/index.ts'], + format: ['cjs', 'esm'], + dts: true, + outDir: 'dist', + clean: true, +}); diff --git a/packages/components/vite.config.mts b/packages/components/vite.config.ts similarity index 100% rename from packages/components/vite.config.mts rename to packages/components/vite.config.ts diff --git a/packages/components/vitest.config.mts b/packages/components/vitest.config.ts similarity index 100% rename from packages/components/vitest.config.mts rename to packages/components/vitest.config.ts diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a1570cd860..ffd7a3055d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -477,24 +477,9 @@ importers: specifier: ^16.8.0 || ^17.0.0 || ^18.0.0 version: 18.2.0(react@18.2.0) devDependencies: - '@parcel/config-default': - specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)(postcss@8.4.47)(relateurl@0.2.7)(srcset@4.0.0)(terser@5.30.3)(typescript@5.6.3) - '@parcel/core': - specifier: ^2.12.0 - version: 2.12.0(@swc/helpers@0.5.10) - '@parcel/packager-ts': - specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/transformer-js': - specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10)) - '@parcel/transformer-react-refresh-wrap': - specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/transformer-typescript-types': - specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)(typescript@5.6.3) + '@arethetypeswrong/cli': + specifier: ^0.16.4 + version: 0.16.4 '@plone/types': specifier: 'workspace: *' version: link:../types @@ -567,15 +552,15 @@ importers: lightningcss-cli: specifier: ^1.24.0 version: 1.24.1 - parcel: - specifier: ^2.12.0 - version: 2.12.0(@swc/helpers@0.5.10)(postcss@8.4.47)(relateurl@0.2.7)(srcset@4.0.0)(terser@5.30.3)(typescript@5.6.3) release-it: specifier: 17.1.1 version: 17.1.1(typescript@5.6.3) storybook: specifier: ^8.0.4 version: 8.0.8(@babel/preset-env@7.24.4(@babel/core@7.24.4))(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + tsup: + specifier: ^8.3.5 + version: 8.3.5(@microsoft/api-extractor@7.43.0(@types/node@20.12.7))(@swc/core@1.4.16(@swc/helpers@0.5.10))(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.1)(typescript@5.6.3) typescript: specifier: ^5.6.3 version: 5.6.3 @@ -7209,10 +7194,6 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} - ansi-regex@6.1.0: resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} engines: {node: '>=12'} @@ -17654,7 +17635,7 @@ snapshots: dependencies: '@arethetypeswrong/core': 0.16.4 chalk: 4.1.2 - cli-table3: 0.6.4 + cli-table3: 0.6.5 commander: 10.0.1 marked: 9.1.6 marked-terminal: 7.2.1(marked@9.1.6) @@ -17681,12 +17662,12 @@ snapshots: '@babel/code-frame@7.24.2': dependencies: '@babel/highlight': 7.24.2 - picocolors: 1.1.0 + picocolors: 1.1.1 '@babel/code-frame@7.25.7': dependencies: '@babel/highlight': 7.25.7 - picocolors: 1.1.0 + picocolors: 1.1.1 '@babel/compat-data@7.24.4': {} @@ -17931,14 +17912,14 @@ snapshots: '@babel/helper-validator-identifier': 7.22.20 chalk: 2.4.2 js-tokens: 4.0.0 - picocolors: 1.1.0 + picocolors: 1.1.1 '@babel/highlight@7.25.7': dependencies: '@babel/helper-validator-identifier': 7.25.7 chalk: 2.4.2 js-tokens: 4.0.0 - picocolors: 1.1.0 + picocolors: 1.1.1 '@babel/parser@7.24.4': dependencies: @@ -20937,7 +20918,7 @@ snapshots: browserslist: 4.23.0 json5: 2.2.3 nullthrows: 1.1.1 - semver: 7.6.0 + semver: 7.6.3 transitivePeerDependencies: - '@parcel/core' - '@swc/helpers' @@ -20964,7 +20945,7 @@ snapshots: posthtml: 0.16.6 posthtml-parser: 0.10.2 posthtml-render: 3.0.0 - semver: 7.6.0 + semver: 7.6.3 srcset: 4.0.0 transitivePeerDependencies: - '@parcel/core' @@ -20993,7 +20974,7 @@ snapshots: browserslist: 4.23.0 nullthrows: 1.1.1 regenerator-runtime: 0.13.11 - semver: 7.6.0 + semver: 7.6.3 '@parcel/transformer-json@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': dependencies: @@ -21012,7 +20993,7 @@ snapshots: clone: 2.1.2 nullthrows: 1.1.1 postcss-value-parser: 4.2.0 - semver: 7.6.0 + semver: 7.6.3 transitivePeerDependencies: - '@parcel/core' - '@swc/helpers' @@ -21025,7 +21006,7 @@ snapshots: posthtml: 0.16.6 posthtml-parser: 0.10.2 posthtml-render: 3.0.0 - semver: 7.6.0 + semver: 7.6.3 transitivePeerDependencies: - '@parcel/core' - '@swc/helpers' @@ -21055,7 +21036,7 @@ snapshots: posthtml: 0.16.6 posthtml-parser: 0.10.2 posthtml-render: 3.0.0 - semver: 7.6.0 + semver: 7.6.3 transitivePeerDependencies: - '@parcel/core' - '@swc/helpers' @@ -22978,7 +22959,7 @@ snapshots: magic-string: 0.30.10 path-browserify: 1.0.1 process: 0.11.10 - semver: 7.6.0 + semver: 7.6.3 style-loader: 3.3.1(webpack@5.90.1(esbuild@0.20.2)) terser-webpack-plugin: 5.3.6(esbuild@0.20.2)(webpack@5.90.1(esbuild@0.20.2)) ts-dedent: 2.2.0 @@ -23041,7 +23022,7 @@ snapshots: prettier: 3.2.5 prompts: 2.4.2 read-pkg-up: 7.0.1 - semver: 7.6.0 + semver: 7.6.3 strip-json-comments: 3.1.1 tempy: 1.0.1 tiny-invariant: 1.3.3 @@ -23158,7 +23139,7 @@ snapshots: '@types/semver': 7.5.8 better-opn: 3.0.2 chalk: 4.1.2 - cli-table3: 0.6.4 + cli-table3: 0.6.5 compression: 1.7.4 detect-port: 1.5.1 express: 4.19.2 @@ -23299,7 +23280,7 @@ snapshots: react-docgen: 7.0.3 react-dom: 18.2.0(react@18.2.0) resolve: 1.22.8 - semver: 7.6.0 + semver: 7.6.3 tsconfig-paths: 4.2.0 webpack: 5.90.1(esbuild@0.20.2) optionalDependencies: @@ -24459,7 +24440,7 @@ snapshots: '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.6.3) eslint: 8.57.0 eslint-scope: 5.1.1 - semver: 7.6.0 + semver: 7.6.3 transitivePeerDependencies: - supports-color - typescript @@ -25072,8 +25053,6 @@ snapshots: ansi-regex@5.0.1: {} - ansi-regex@6.0.1: {} - ansi-regex@6.1.0: {} ansi-styles@2.2.1: {} @@ -26310,7 +26289,7 @@ snapshots: chokidar@3.6.0: dependencies: anymatch: 3.1.3 - braces: 3.0.3 + braces: 3.0.2 glob-parent: 5.1.2 is-binary-path: 2.1.0 is-glob: 4.0.3 @@ -34329,7 +34308,7 @@ snapshots: postcss@8.4.47: dependencies: nanoid: 3.3.7 - picocolors: 1.1.0 + picocolors: 1.1.1 source-map-js: 1.2.1 posthtml-parser@0.10.2: @@ -36796,7 +36775,7 @@ snapshots: strip-ansi@7.1.0: dependencies: - ansi-regex: 6.0.1 + ansi-regex: 6.1.0 strip-bom-buf@1.0.0: dependencies: @@ -37777,13 +37756,13 @@ snapshots: dependencies: browserslist: 4.23.0 escalade: 3.1.2 - picocolors: 1.1.0 + picocolors: 1.1.1 update-browserslist-db@1.1.1(browserslist@4.24.0): dependencies: browserslist: 4.24.0 escalade: 3.2.0 - picocolors: 1.1.0 + picocolors: 1.1.1 update-notifier@5.1.0: dependencies: @@ -37815,7 +37794,7 @@ snapshots: is-yarn-global: 0.4.1 latest-version: 7.0.0 pupa: 3.1.0 - semver: 7.5.4 + semver: 7.6.3 semver-diff: 4.0.0 xdg-basedir: 5.1.0 @@ -38081,7 +38060,7 @@ snapshots: cac: 6.7.14 debug: 4.3.4(supports-color@8.1.1) pathe: 1.1.2 - picocolors: 1.1.0 + picocolors: 1.1.1 vite: 5.4.9(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3) transitivePeerDependencies: - '@types/node' From ac52b6bc748d75e81ace38b8007bc2ed1a32d92a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Fern=C3=A1ndez=20de=20Alba?= Date: Mon, 4 Nov 2024 22:42:37 +0100 Subject: [PATCH 05/47] Replace parcel with tsup. Better types, better tsconfig. Move to ESM. (#6468) --- packages/providers/news/6468.internal | 1 + packages/providers/package.json | 30 ++++++---------- packages/providers/src/AppRouter.tsx | 9 +++-- packages/providers/src/PloneProvider.tsx | 17 +++++---- packages/providers/tsconfig.json | 25 +++++++++++-- packages/providers/tsup.config.ts | 9 +++++ pnpm-lock.yaml | 45 ++++++++++-------------- 7 files changed, 79 insertions(+), 57 deletions(-) create mode 100644 packages/providers/news/6468.internal create mode 100644 packages/providers/tsup.config.ts diff --git a/packages/providers/news/6468.internal b/packages/providers/news/6468.internal new file mode 100644 index 0000000000..97beb403a0 --- /dev/null +++ b/packages/providers/news/6468.internal @@ -0,0 +1 @@ +Replace `parcel` with `tsup`. Better types, better tsconfig. Move to ESM. @sneridagh diff --git a/packages/providers/package.json b/packages/providers/package.json index 6950e0b31a..c46caa84d0 100644 --- a/packages/providers/package.json +++ b/packages/providers/package.json @@ -28,22 +28,19 @@ "publishConfig": { "access": "public" }, - "source": "./src/index.ts", - "main": "./dist/main.js", - "module": "./dist/module.mjs", - "types": "./dist/index.d.ts", + "type": "module", + "main": "./dist/index.js", "exports": { + "./package.json": "./package.json", ".": { - "types": "./dist/index.d.ts", - "import": "./dist/module.mjs", - "require": "./dist/main.js" - }, - "./src/*": "./src/*" + "import": "./dist/index.js", + "default": "./dist/index.cjs" + } }, "scripts": { - "watch": "parcel watch", - "build": "parcel build", - "build:force": "rm -rf dist && parcel build --no-cache", + "build": "tsup", + "build:force": "tsup", + "check:exports": "attw --pack .", "test": "vitest", "dry-release": "release-it --dry-run", "release": "release-it", @@ -67,18 +64,13 @@ "react-aria-components": "^1.4.0" }, "devDependencies": { - "@parcel/config-default": "^2.12.0", - "@parcel/core": "^2.12.0", - "@parcel/packager-ts": "^2.12.0", - "@parcel/transformer-js": "^2.12.0", - "@parcel/transformer-react-refresh-wrap": "^2.12.0", - "@parcel/transformer-typescript-types": "^2.12.0", + "@arethetypeswrong/cli": "^0.16.4", "@plone/types": "workspace:*", "@types/react": "^18", "@types/react-dom": "^18", - "parcel": "^2.12.0", "release-it": "17.1.1", "tsconfig": "workspace:*", + "tsup": "^8.3.5", "typescript": "^5.6.3", "vitest": "^2.1.3" } diff --git a/packages/providers/src/AppRouter.tsx b/packages/providers/src/AppRouter.tsx index 86b2547114..cf4005fa6b 100644 --- a/packages/providers/src/AppRouter.tsx +++ b/packages/providers/src/AppRouter.tsx @@ -1,4 +1,9 @@ -import React, { createContext, ReactNode, useContext, useMemo } from 'react'; +import React, { + createContext, + type ReactNode, + useContext, + useMemo, +} from 'react'; import { RouterProvider } from 'react-aria-components'; import { flattenToAppURL as defaultFlattenToAppURL } from './utils'; @@ -17,7 +22,7 @@ interface AppRouter { useLocation: () => Location | undefined; useParams: (opts?: any) => Record; navigate: (path: string) => void; - useHref: (to: string, options?: any) => string; + useHref?: (to: string, options?: any) => string; flattenToAppURL: (path: string | undefined) => string | undefined; } diff --git a/packages/providers/src/PloneProvider.tsx b/packages/providers/src/PloneProvider.tsx index 31bae3d27f..0912536a22 100644 --- a/packages/providers/src/PloneProvider.tsx +++ b/packages/providers/src/PloneProvider.tsx @@ -1,23 +1,26 @@ -import React, { createContext, ReactNode, useContext, useMemo } from 'react'; +import React, { + createContext, + type ReactNode, + useContext, + useMemo, +} from 'react'; import { QueryClient } from '@tanstack/react-query'; -import { AppRouterProvider, Location } from './AppRouter'; +import { AppRouterProvider, type Location } from './AppRouter'; import { PloneClientProvider } from './PloneClient'; import PloneClient from '@plone/client'; import { flattenToAppURL as defaultFlattenToAppURL } from './utils'; interface PloneProvider { - ploneClient: InstanceType; - queryClient: QueryClient; + ploneClient?: InstanceType; + queryClient?: QueryClient; useLocation: () => Location | undefined; useParams: (opts?: any) => Record; navigate: (path: string) => void; - useHref: (to: string, options?: any) => string; + useHref?: (to: string, options?: any) => string; flattenToAppURL: (path: string | undefined) => string | undefined; } const PloneProviderContext = createContext({ - ploneClient: null, - queryClient: null, useLocation: () => ({ href: '', pathname: '', diff --git a/packages/providers/tsconfig.json b/packages/providers/tsconfig.json index 86da1e79f4..24722f2f4c 100644 --- a/packages/providers/tsconfig.json +++ b/packages/providers/tsconfig.json @@ -1,6 +1,27 @@ { - "extends": "tsconfig/react-library.json", - "include": ["src", "src/**/*.js"], + "compilerOptions": { + "esModuleInterop": true, + "skipLibCheck": true, + "target": "es2022", + "allowJs": true, + "resolveJsonModule": true, + "moduleDetection": "force", + "isolatedModules": true, + "verbatimModuleSyntax": true, + + "strict": true, + "noImplicitOverride": true, + + "lib": ["es2022", "dom", "dom.iterable"], + "module": "preserve", + "noEmit": true, + + "jsx": "react-jsx", + + "allowSyntheticDefaultImports": true, + "forceConsistentCasingInFileNames": true + }, + "include": ["src"], "exclude": [ "node_modules", "build", diff --git a/packages/providers/tsup.config.ts b/packages/providers/tsup.config.ts new file mode 100644 index 0000000000..82b88a425c --- /dev/null +++ b/packages/providers/tsup.config.ts @@ -0,0 +1,9 @@ +import { defineConfig } from 'tsup'; + +export default defineConfig({ + entryPoints: ['src/index.ts'], + format: ['cjs', 'esm'], + dts: true, + outDir: 'dist', + clean: true, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ffd7a3055d..c296d8b543 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -736,24 +736,9 @@ importers: specifier: ^16.8.0 || ^17.0.0 || ^18.0.0 version: 18.2.0(react@18.2.0) devDependencies: - '@parcel/config-default': - specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)(postcss@8.4.47)(relateurl@0.2.7)(srcset@4.0.0)(terser@5.30.3)(typescript@5.6.3) - '@parcel/core': - specifier: ^2.12.0 - version: 2.12.0(@swc/helpers@0.5.10) - '@parcel/packager-ts': - specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/transformer-js': - specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10)) - '@parcel/transformer-react-refresh-wrap': - specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/transformer-typescript-types': - specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)(typescript@5.6.3) + '@arethetypeswrong/cli': + specifier: ^0.16.4 + version: 0.16.4 '@plone/types': specifier: workspace:* version: link:../types @@ -763,15 +748,15 @@ importers: '@types/react-dom': specifier: ^18 version: 18.2.25 - parcel: - specifier: ^2.12.0 - version: 2.12.0(@swc/helpers@0.5.10)(postcss@8.4.47)(relateurl@0.2.7)(srcset@4.0.0)(terser@5.30.3)(typescript@5.6.3) release-it: specifier: 17.1.1 version: 17.1.1(typescript@5.6.3) tsconfig: specifier: workspace:* version: link:../tsconfig + tsup: + specifier: ^8.3.5 + version: 8.3.5(@microsoft/api-extractor@7.43.0(@types/node@20.12.7))(@swc/core@1.4.16(@swc/helpers@0.5.10))(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.1)(typescript@5.6.3) typescript: specifier: ^5.6.3 version: 5.6.3 @@ -7194,6 +7179,10 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} + ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + ansi-regex@6.1.0: resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} engines: {node: '>=12'} @@ -17662,7 +17651,7 @@ snapshots: '@babel/code-frame@7.24.2': dependencies: '@babel/highlight': 7.24.2 - picocolors: 1.1.1 + picocolors: 1.1.0 '@babel/code-frame@7.25.7': dependencies: @@ -17912,14 +17901,14 @@ snapshots: '@babel/helper-validator-identifier': 7.22.20 chalk: 2.4.2 js-tokens: 4.0.0 - picocolors: 1.1.1 + picocolors: 1.1.0 '@babel/highlight@7.25.7': dependencies: '@babel/helper-validator-identifier': 7.25.7 chalk: 2.4.2 js-tokens: 4.0.0 - picocolors: 1.1.1 + picocolors: 1.1.0 '@babel/parser@7.24.4': dependencies: @@ -25053,6 +25042,8 @@ snapshots: ansi-regex@5.0.1: {} + ansi-regex@6.0.1: {} + ansi-regex@6.1.0: {} ansi-styles@2.2.1: {} @@ -36775,7 +36766,7 @@ snapshots: strip-ansi@7.1.0: dependencies: - ansi-regex: 6.1.0 + ansi-regex: 6.0.1 strip-bom-buf@1.0.0: dependencies: @@ -37756,7 +37747,7 @@ snapshots: dependencies: browserslist: 4.23.0 escalade: 3.1.2 - picocolors: 1.1.1 + picocolors: 1.1.0 update-browserslist-db@1.1.1(browserslist@4.24.0): dependencies: @@ -38060,7 +38051,7 @@ snapshots: cac: 6.7.14 debug: 4.3.4(supports-color@8.1.1) pathe: 1.1.2 - picocolors: 1.1.1 + picocolors: 1.1.0 vite: 5.4.9(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3) transitivePeerDependencies: - '@types/node' From 147799bc788a15ace69267a99d1f71946a8fcf52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Fern=C3=A1ndez=20de=20Alba?= Date: Tue, 5 Nov 2024 10:30:43 +0100 Subject: [PATCH 06/47] Get rid of all appearances of parcel in core. (#6469) --- .gitignore | 2 - .npmrc | 1 - package.json | 2 - packages/blocks/.npmignore | 2 - packages/blocks/package.json | 8 - packages/components/.gitignore | 2 - packages/helpers/package.json | 13 +- packages/providers/.npmignore | 2 - packages/providers/.parcelrc | 9 - packages/registry/.gitignore | 1 - packages/registry/.npmignore | 2 - packages/slots/package.json | 10 - packages/volto/news/6469.internal | 1 + pnpm-lock.yaml | 1246 +---------------------------- 14 files changed, 18 insertions(+), 1283 deletions(-) delete mode 100644 packages/providers/.parcelrc create mode 100644 packages/volto/news/6469.internal diff --git a/.gitignore b/.gitignore index 99907cc0fd..bf0baa3966 100644 --- a/.gitignore +++ b/.gitignore @@ -72,6 +72,4 @@ docs/_build/ /.tool-versions docs/source/news -.turbo -.parcel-cache/ tsconfig.tsbuildinfo diff --git a/.npmrc b/.npmrc index 71c684383d..bc0f657128 100644 --- a/.npmrc +++ b/.npmrc @@ -3,4 +3,3 @@ public-hoist-pattern[]=*prettier* public-hoist-pattern[]=*stylelint* public-hoist-pattern[]=*cypress* public-hoist-pattern[]=*process* -public-hoist-pattern[]=*parcel* diff --git a/package.json b/package.json index 6414015cca..1cf8ebd0e3 100644 --- a/package.json +++ b/package.json @@ -31,8 +31,6 @@ "update:browserlist": "pnpm --filter @plone/volto add caniuse-lite && pnpm --filter @plone/volto remove caniuse-lite" }, "devDependencies": { - "@parcel/packager-ts": "^2.12.0", - "@parcel/transformer-typescript-types": "^2.12.0", "concurrently": "^8.2.2", "husky": "9.0.11", "lint-staged": "15.2.2", diff --git a/packages/blocks/.npmignore b/packages/blocks/.npmignore index 0d8afd5727..a6d10baa1e 100644 --- a/packages/blocks/.npmignore +++ b/packages/blocks/.npmignore @@ -2,7 +2,5 @@ news towncrier.toml .changelog.draft node_modules/ -.parcel-cache -.parcelrc .release-it.json .eslintrc.js diff --git a/packages/blocks/package.json b/packages/blocks/package.json index d8b191191e..05d801297d 100644 --- a/packages/blocks/package.json +++ b/packages/blocks/package.json @@ -29,11 +29,6 @@ "access": "public" }, "main": "src/index.ts", - "targets": { - "main": { - "includeNodeModules": false - } - }, "scripts": { "test": "vitest", "dry-release": "release-it --dry-run", @@ -52,13 +47,10 @@ }, "dependencies": {}, "devDependencies": { - "@parcel/packager-ts": "^2.12.0", - "@parcel/transformer-typescript-types": "^2.12.0", "@plone/registry": "workspace:*", "@plone/types": "workspace:*", "@types/react": "^18", "@types/react-dom": "^18", - "parcel": "^2.12.0", "release-it": "17.1.1", "tsconfig": "workspace:*", "typescript": "^5.6.3", diff --git a/packages/components/.gitignore b/packages/components/.gitignore index ead174f021..3fbb0086d7 100644 --- a/packages/components/.gitignore +++ b/packages/components/.gitignore @@ -12,5 +12,3 @@ lib !.yarn/releases !.yarn/sdks !.yarn/versions - -.parcel-cache/ diff --git a/packages/helpers/package.json b/packages/helpers/package.json index 55d7bd33c7..33cf0204a5 100644 --- a/packages/helpers/package.json +++ b/packages/helpers/package.json @@ -29,14 +29,9 @@ "access": "public" }, "main": "src/index.ts", - "targets": { - "main": { - "includeNodeModules": false - } - }, "scripts": { - "watch": "parcel watch", - "build": "parcel build", + "watch": "tsup", + "build": "tsup", "test": "vitest", "dry-release": "release-it --dry-run", "release": "release-it", @@ -54,14 +49,12 @@ }, "dependencies": {}, "devDependencies": { - "@parcel/packager-ts": "^2.12.0", - "@parcel/transformer-typescript-types": "^2.12.0", "@plone/types": "workspace:*", "@types/react": "^18", "@types/react-dom": "^18", - "parcel": "^2.12.0", "release-it": "^17.1.1", "tsconfig": "workspace:*", + "tsup": "^8.3.5", "typescript": "^5.6.3", "vitest": "^2.1.3" } diff --git a/packages/providers/.npmignore b/packages/providers/.npmignore index 0d8afd5727..a6d10baa1e 100644 --- a/packages/providers/.npmignore +++ b/packages/providers/.npmignore @@ -2,7 +2,5 @@ news towncrier.toml .changelog.draft node_modules/ -.parcel-cache -.parcelrc .release-it.json .eslintrc.js diff --git a/packages/providers/.parcelrc b/packages/providers/.parcelrc deleted file mode 100644 index db2d15099d..0000000000 --- a/packages/providers/.parcelrc +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "@parcel/config-default", - "transformers": { - "*.{js,mjs,jsm,jsx,es6,cjs,ts,tsx}": [ - "@parcel/transformer-js", - "@parcel/transformer-react-refresh-wrap" - ] - } -} diff --git a/packages/registry/.gitignore b/packages/registry/.gitignore index 2c29928dd0..290e94407a 100644 --- a/packages/registry/.gitignore +++ b/packages/registry/.gitignore @@ -1,4 +1,3 @@ -.parcel-cache/ dist /bin /lib diff --git a/packages/registry/.npmignore b/packages/registry/.npmignore index 0d8afd5727..a6d10baa1e 100644 --- a/packages/registry/.npmignore +++ b/packages/registry/.npmignore @@ -2,7 +2,5 @@ news towncrier.toml .changelog.draft node_modules/ -.parcel-cache -.parcelrc .release-it.json .eslintrc.js diff --git a/packages/slots/package.json b/packages/slots/package.json index 2daece72e1..9766de2823 100644 --- a/packages/slots/package.json +++ b/packages/slots/package.json @@ -29,14 +29,7 @@ "access": "public" }, "main": "src/index.ts", - "targets": { - "main": { - "includeNodeModules": false - } - }, "scripts": { - "watch": "parcel watch", - "build": "parcel build", "test": "vitest", "dry-release": "release-it --dry-run", "release": "release-it", @@ -57,12 +50,9 @@ "@plone/registry": "workspace:*" }, "devDependencies": { - "@parcel/packager-ts": "^2.12.0", - "@parcel/transformer-typescript-types": "^2.12.0", "@plone/types": "workspace:*", "@types/react": "^18", "@types/react-dom": "^18", - "parcel": "^2.12.0", "release-it": "17.1.1", "tsconfig": "workspace:*", "typescript": "^5.6.3", diff --git a/packages/volto/news/6469.internal b/packages/volto/news/6469.internal new file mode 100644 index 0000000000..69b74070dc --- /dev/null +++ b/packages/volto/news/6469.internal @@ -0,0 +1 @@ +Removed `parcel` completely from core. @sneridagh diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c296d8b543..28674fea48 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,12 +17,6 @@ importers: .: devDependencies: - '@parcel/packager-ts': - specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/transformer-typescript-types': - specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)(typescript@5.6.3) concurrently: specifier: ^8.2.2 version: 8.2.2 @@ -334,12 +328,6 @@ importers: specifier: ^16.8.0 || ^17.0.0 || ^18.0.0 version: 18.2.0(react@18.2.0) devDependencies: - '@parcel/packager-ts': - specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/transformer-typescript-types': - specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)(typescript@5.6.3) '@plone/registry': specifier: workspace:* version: link:../registry @@ -352,9 +340,6 @@ importers: '@types/react-dom': specifier: ^18 version: 18.2.25 - parcel: - specifier: ^2.12.0 - version: 2.12.0(@swc/helpers@0.5.10)(postcss@8.4.47)(relateurl@0.2.7)(srcset@4.0.0)(terser@5.30.3)(typescript@5.6.3) release-it: specifier: 17.1.1 version: 17.1.1(typescript@5.6.3) @@ -433,7 +418,7 @@ importers: version: 17.1.1(typescript@5.6.3) tsup: specifier: ^8.3.5 - version: 8.3.5(@microsoft/api-extractor@7.43.0(@types/node@20.12.7))(@swc/core@1.4.16(@swc/helpers@0.5.10))(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.1)(typescript@5.6.3) + version: 8.3.5(@microsoft/api-extractor@7.43.0(@types/node@20.12.7))(@swc/core@1.4.16)(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.1)(typescript@5.6.3) typescript: specifier: ^5.6.3 version: 5.6.3 @@ -560,7 +545,7 @@ importers: version: 8.0.8(@babel/preset-env@7.24.4(@babel/core@7.24.4))(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) tsup: specifier: ^8.3.5 - version: 8.3.5(@microsoft/api-extractor@7.43.0(@types/node@20.12.7))(@swc/core@1.4.16(@swc/helpers@0.5.10))(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.1)(typescript@5.6.3) + version: 8.3.5(@microsoft/api-extractor@7.43.0(@types/node@20.12.7))(@swc/core@1.4.16)(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.1)(typescript@5.6.3) typescript: specifier: ^5.6.3 version: 5.6.3 @@ -681,12 +666,6 @@ importers: specifier: ^16.8.0 || ^17.0.0 || ^18.0.0 version: 18.2.0(react@18.2.0) devDependencies: - '@parcel/packager-ts': - specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/transformer-typescript-types': - specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)(typescript@5.6.3) '@plone/types': specifier: workspace:* version: link:../types @@ -696,15 +675,15 @@ importers: '@types/react-dom': specifier: ^18 version: 18.2.25 - parcel: - specifier: ^2.12.0 - version: 2.12.0(@swc/helpers@0.5.10)(postcss@8.4.47)(relateurl@0.2.7)(srcset@4.0.0)(terser@5.30.3)(typescript@5.6.3) release-it: specifier: ^17.1.1 version: 17.1.1(typescript@5.6.3) tsconfig: specifier: workspace:* version: link:../tsconfig + tsup: + specifier: ^8.3.5 + version: 8.3.5(@microsoft/api-extractor@7.43.0(@types/node@20.12.7))(@swc/core@1.4.16)(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.1)(typescript@5.6.3) typescript: specifier: ^5.6.3 version: 5.6.3 @@ -756,7 +735,7 @@ importers: version: link:../tsconfig tsup: specifier: ^8.3.5 - version: 8.3.5(@microsoft/api-extractor@7.43.0(@types/node@20.12.7))(@swc/core@1.4.16(@swc/helpers@0.5.10))(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.1)(typescript@5.6.3) + version: 8.3.5(@microsoft/api-extractor@7.43.0(@types/node@20.12.7))(@swc/core@1.4.16)(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.1)(typescript@5.6.3) typescript: specifier: ^5.6.3 version: 5.6.3 @@ -823,7 +802,7 @@ importers: version: link:../tsconfig tsup: specifier: ^8.3.5 - version: 8.3.5(@microsoft/api-extractor@7.43.0(@types/node@20.12.7))(@swc/core@1.4.16(@swc/helpers@0.5.10))(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.1)(typescript@5.6.3) + version: 8.3.5(@microsoft/api-extractor@7.43.0(@types/node@20.12.7))(@swc/core@1.4.16)(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.1)(typescript@5.6.3) typescript: specifier: ^5.6.3 version: 5.6.3 @@ -901,12 +880,6 @@ importers: specifier: ^16.8.0 || ^17.0.0 || ^18.0.0 version: 18.2.0(react@18.2.0) devDependencies: - '@parcel/packager-ts': - specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/transformer-typescript-types': - specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)(typescript@5.6.3) '@plone/types': specifier: workspace:* version: link:../types @@ -916,9 +889,6 @@ importers: '@types/react-dom': specifier: ^18 version: 18.2.25 - parcel: - specifier: ^2.12.0 - version: 2.12.0(@swc/helpers@0.5.10)(postcss@8.4.47)(relateurl@0.2.7)(srcset@4.0.0)(terser@5.30.3)(typescript@5.6.3) release-it: specifier: 17.1.1 version: 17.1.1(typescript@5.6.3) @@ -3885,46 +3855,10 @@ packages: '@leichtgewicht/ip-codec@2.0.5': resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} - '@lezer/common@1.2.1': - resolution: {integrity: sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==} - - '@lezer/lr@1.4.0': - resolution: {integrity: sha512-Wst46p51km8gH0ZUmeNrtpRYmdlRHUpN1DQd3GFAyKANi8WVz8c2jHYTf1CVScFaCjQw1iO3ZZdqGDxQPRErTg==} - '@ljharb/through@2.3.13': resolution: {integrity: sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ==} engines: {node: '>= 0.4'} - '@lmdb/lmdb-darwin-arm64@2.8.5': - resolution: {integrity: sha512-KPDeVScZgA1oq0CiPBcOa3kHIqU+pTOwRFDIhxvmf8CTNvqdZQYp5cCKW0bUk69VygB2PuTiINFWbY78aR2pQw==} - cpu: [arm64] - os: [darwin] - - '@lmdb/lmdb-darwin-x64@2.8.5': - resolution: {integrity: sha512-w/sLhN4T7MW1nB3R/U8WK5BgQLz904wh+/SmA2jD8NnF7BLLoUgflCNxOeSPOWp8geP6nP/+VjWzZVip7rZ1ug==} - cpu: [x64] - os: [darwin] - - '@lmdb/lmdb-linux-arm64@2.8.5': - resolution: {integrity: sha512-vtbZRHH5UDlL01TT5jB576Zox3+hdyogvpcbvVJlmU5PdL3c5V7cj1EODdh1CHPksRl+cws/58ugEHi8bcj4Ww==} - cpu: [arm64] - os: [linux] - - '@lmdb/lmdb-linux-arm@2.8.5': - resolution: {integrity: sha512-c0TGMbm2M55pwTDIfkDLB6BpIsgxV4PjYck2HiOX+cy/JWiBXz32lYbarPqejKs9Flm7YVAKSILUducU9g2RVg==} - cpu: [arm] - os: [linux] - - '@lmdb/lmdb-linux-x64@2.8.5': - resolution: {integrity: sha512-Xkc8IUx9aEhP0zvgeKy7IQ3ReX2N8N1L0WPcQwnZweWmOuKfwpS3GRIYqLtK5za/w3E60zhFfNdS+3pBZPytqQ==} - cpu: [x64] - os: [linux] - - '@lmdb/lmdb-win32-x64@2.8.5': - resolution: {integrity: sha512-4wvrf5BgnR8RpogHhtpCPJMKBmvyZPhhUtEwMJbXh0ni2BucpfF07jlmyM11zRqQ2XIq6PbC2j7W7UCCcm1rRQ==} - cpu: [x64] - os: [win32] - '@loadable/babel-plugin@5.13.2': resolution: {integrity: sha512-vSZUVeTH1S1sDbk8Tzft0plZSkN7W4zmVR5w/Bmy4UmvBiu9lin7ztrDpoUTUzxpoups+OJbTc/OosvN0aMXWg==} engines: {node: '>=8'} @@ -3976,40 +3910,6 @@ packages: '@microsoft/tsdoc@0.14.2': resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} - '@mischnic/json-sourcemap@0.1.1': - resolution: {integrity: sha512-iA7+tyVqfrATAIsIRWQG+a7ZLLD0VaOCKV2Wd/v4mqIU3J9c4jx9p7S0nw1XH3gJCKNBOOwACOPYYSUu9pgT+w==} - engines: {node: '>=12.0.0'} - - '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.2': - resolution: {integrity: sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ==} - cpu: [arm64] - os: [darwin] - - '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.2': - resolution: {integrity: sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw==} - cpu: [x64] - os: [darwin] - - '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.2': - resolution: {integrity: sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg==} - cpu: [arm64] - os: [linux] - - '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.2': - resolution: {integrity: sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA==} - cpu: [arm] - os: [linux] - - '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.2': - resolution: {integrity: sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA==} - cpu: [x64] - os: [linux] - - '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.2': - resolution: {integrity: sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ==} - cpu: [x64] - os: [win32] - '@ndelangen/get-tarball@3.0.9': resolution: {integrity: sha512-9JKTEik4vq+yGosHYhZ1tiH/3WpUS0Nh0kej4Agndhox8pAdWhEx5knFVRcb/ya9knCRCs1rPxNrSXTDdfVqpA==} @@ -4334,238 +4234,6 @@ packages: '@octokit/types@9.3.2': resolution: {integrity: sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==} - '@parcel/bundler-default@2.12.0': - resolution: {integrity: sha512-3ybN74oYNMKyjD6V20c9Gerdbh7teeNvVMwIoHIQMzuIFT6IGX53PyOLlOKRLbjxMc0TMimQQxIt2eQqxR5LsA==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - - '@parcel/cache@2.12.0': - resolution: {integrity: sha512-FX5ZpTEkxvq/yvWklRHDESVRz+c7sLTXgFuzz6uEnBcXV38j6dMSikflNpHA6q/L4GKkCqRywm9R6XQwhwIMyw==} - engines: {node: '>= 12.0.0'} - peerDependencies: - '@parcel/core': ^2.12.0 - - '@parcel/codeframe@2.12.0': - resolution: {integrity: sha512-v2VmneILFiHZJTxPiR7GEF1wey1/IXPdZMcUlNXBiPZyWDfcuNgGGVQkx/xW561rULLIvDPharOMdxz5oHOKQg==} - engines: {node: '>= 12.0.0'} - - '@parcel/compressor-raw@2.12.0': - resolution: {integrity: sha512-h41Q3X7ZAQ9wbQ2csP8QGrwepasLZdXiuEdpUryDce6rF9ZiHoJ97MRpdLxOhOPyASTw/xDgE1xyaPQr0Q3f5A==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - - '@parcel/config-default@2.12.0': - resolution: {integrity: sha512-dPNe2n9eEsKRc1soWIY0yToMUPirPIa2QhxcCB3Z5RjpDGIXm0pds+BaiqY6uGLEEzsjhRO0ujd4v2Rmm0vuFg==} - peerDependencies: - '@parcel/core': ^2.12.0 - - '@parcel/core@2.12.0': - resolution: {integrity: sha512-s+6pwEj+GfKf7vqGUzN9iSEPueUssCCQrCBUlcAfKrJe0a22hTUCjewpB0I7lNrCIULt8dkndD+sMdOrXsRl6Q==} - engines: {node: '>= 12.0.0'} - - '@parcel/diagnostic@2.12.0': - resolution: {integrity: sha512-8f1NOsSFK+F4AwFCKynyIu9Kr/uWHC+SywAv4oS6Bv3Acig0gtwUjugk0C9UaB8ztBZiW5TQZhw+uPZn9T/lJA==} - engines: {node: '>= 12.0.0'} - - '@parcel/events@2.12.0': - resolution: {integrity: sha512-nmAAEIKLjW1kB2cUbCYSmZOGbnGj8wCzhqnK727zCCWaA25ogzAtt657GPOeFyqW77KyosU728Tl63Fc8hphIA==} - engines: {node: '>= 12.0.0'} - - '@parcel/fs@2.12.0': - resolution: {integrity: sha512-NnFkuvou1YBtPOhTdZr44WN7I60cGyly2wpHzqRl62yhObyi1KvW0SjwOMa0QGNcBOIzp4G0CapoZ93hD0RG5Q==} - engines: {node: '>= 12.0.0'} - peerDependencies: - '@parcel/core': ^2.12.0 - - '@parcel/graph@3.2.0': - resolution: {integrity: sha512-xlrmCPqy58D4Fg5umV7bpwDx5Vyt7MlnQPxW68vae5+BA4GSWetfZt+Cs5dtotMG2oCHzZxhIPt7YZ7NRyQzLA==} - engines: {node: '>= 12.0.0'} - - '@parcel/logger@2.12.0': - resolution: {integrity: sha512-cJ7Paqa7/9VJ7C+KwgJlwMqTQBOjjn71FbKk0G07hydUEBISU2aDfmc/52o60ErL9l+vXB26zTrIBanbxS8rVg==} - engines: {node: '>= 12.0.0'} - - '@parcel/markdown-ansi@2.12.0': - resolution: {integrity: sha512-WZz3rzL8k0H3WR4qTHX6Ic8DlEs17keO9gtD4MNGyMNQbqQEvQ61lWJaIH0nAtgEetu0SOITiVqdZrb8zx/M7w==} - engines: {node: '>= 12.0.0'} - - '@parcel/namer-default@2.12.0': - resolution: {integrity: sha512-9DNKPDHWgMnMtqqZIMiEj/R9PNWW16lpnlHjwK3ciRlMPgjPJ8+UNc255teZODhX0T17GOzPdGbU/O/xbxVPzA==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - - '@parcel/node-resolver-core@3.3.0': - resolution: {integrity: sha512-rhPW9DYPEIqQBSlYzz3S0AjXxjN6Ub2yS6tzzsW/4S3Gpsgk/uEq4ZfxPvoPf/6TgZndVxmKwpmxaKtGMmf3cA==} - engines: {node: '>= 12.0.0'} - - '@parcel/optimizer-css@2.12.0': - resolution: {integrity: sha512-ifbcC97fRzpruTjaa8axIFeX4MjjSIlQfem3EJug3L2AVqQUXnM1XO8L0NaXGNLTW2qnh1ZjIJ7vXT/QhsphsA==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - - '@parcel/optimizer-htmlnano@2.12.0': - resolution: {integrity: sha512-MfPMeCrT8FYiOrpFHVR+NcZQlXAptK2r4nGJjfT+ndPBhEEZp4yyL7n1y7HfX9geg5altc4WTb4Gug7rCoW8VQ==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - - '@parcel/optimizer-image@2.12.0': - resolution: {integrity: sha512-bo1O7raeAIbRU5nmNVtx8divLW9Xqn0c57GVNGeAK4mygnQoqHqRZ0mR9uboh64pxv6ijXZHPhKvU9HEpjPjBQ==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - peerDependencies: - '@parcel/core': ^2.12.0 - - '@parcel/optimizer-svgo@2.12.0': - resolution: {integrity: sha512-Kyli+ZZXnoonnbeRQdoWwee9Bk2jm/49xvnfb+2OO8NN0d41lblBoRhOyFiScRnJrw7eVl1Xrz7NTkXCIO7XFQ==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - - '@parcel/optimizer-swc@2.12.0': - resolution: {integrity: sha512-iBi6LZB3lm6WmbXfzi8J3DCVPmn4FN2lw7DGXxUXu7MouDPVWfTsM6U/5TkSHJRNRogZ2gqy5q9g34NPxHbJcw==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - - '@parcel/package-manager@2.12.0': - resolution: {integrity: sha512-0nvAezcjPx9FT+hIL+LS1jb0aohwLZXct7jAh7i0MLMtehOi0z1Sau+QpgMlA9rfEZZ1LIeFdnZZwqSy7Ccspw==} - engines: {node: '>= 12.0.0'} - peerDependencies: - '@parcel/core': ^2.12.0 - - '@parcel/packager-css@2.12.0': - resolution: {integrity: sha512-j3a/ODciaNKD19IYdWJT+TP+tnhhn5koBGBWWtrKSu0UxWpnezIGZetit3eE+Y9+NTePalMkvpIlit2eDhvfJA==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - - '@parcel/packager-html@2.12.0': - resolution: {integrity: sha512-PpvGB9hFFe+19NXGz2ApvPrkA9GwEqaDAninT+3pJD57OVBaxB8U+HN4a5LICKxjUppPPqmrLb6YPbD65IX4RA==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - - '@parcel/packager-js@2.12.0': - resolution: {integrity: sha512-viMF+FszITRRr8+2iJyk+4ruGiL27Y6AF7hQ3xbJfzqnmbOhGFtLTQwuwhOLqN/mWR2VKdgbLpZSarWaO3yAMg==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - - '@parcel/packager-raw@2.12.0': - resolution: {integrity: sha512-tJZqFbHqP24aq1F+OojFbQIc09P/u8HAW5xfndCrFnXpW4wTgM3p03P0xfw3gnNq+TtxHJ8c3UFE5LnXNNKhYA==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - - '@parcel/packager-svg@2.12.0': - resolution: {integrity: sha512-ldaGiacGb2lLqcXas97k8JiZRbAnNREmcvoY2W2dvW4loVuDT9B9fU777mbV6zODpcgcHWsLL3lYbJ5Lt3y9cg==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - - '@parcel/packager-ts@2.12.0': - resolution: {integrity: sha512-8wR0BNN2NBD+IIU0tjioK+lRD4p2Qi/fKxDH5ixEW912tRV+Vd4kE8k++U6YQIpSlK4FRnjFod5zYYhNSLuiXg==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - - '@parcel/packager-wasm@2.12.0': - resolution: {integrity: sha512-fYqZzIqO9fGYveeImzF8ll6KRo2LrOXfD+2Y5U3BiX/wp9wv17dz50QLDQm9hmTcKGWxK4yWqKQh+Evp/fae7A==} - engines: {node: '>=12.0.0', parcel: ^2.12.0} - - '@parcel/plugin@2.12.0': - resolution: {integrity: sha512-nc/uRA8DiMoe4neBbzV6kDndh/58a4wQuGKw5oEoIwBCHUvE2W8ZFSu7ollSXUGRzfacTt4NdY8TwS73ScWZ+g==} - engines: {node: '>= 12.0.0'} - - '@parcel/profiler@2.12.0': - resolution: {integrity: sha512-q53fvl5LDcFYzMUtSusUBZSjQrKjMlLEBgKeQHFwkimwR1mgoseaDBDuNz0XvmzDzF1UelJ02TUKCGacU8W2qA==} - engines: {node: '>= 12.0.0'} - - '@parcel/reporter-cli@2.12.0': - resolution: {integrity: sha512-TqKsH4GVOLPSCanZ6tcTPj+rdVHERnt5y4bwTM82cajM21bCX1Ruwp8xOKU+03091oV2pv5ieB18pJyRF7IpIw==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - - '@parcel/reporter-dev-server@2.12.0': - resolution: {integrity: sha512-tIcDqRvAPAttRlTV28dHcbWT5K2r/MBFks7nM4nrEDHWtnrCwimkDmZTc1kD8QOCCjGVwRHcQybpHvxfwol6GA==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - - '@parcel/reporter-tracer@2.12.0': - resolution: {integrity: sha512-g8rlu9GxB8Ut/F8WGx4zidIPQ4pcYFjU9bZO+fyRIPrSUFH2bKijCnbZcr4ntqzDGx74hwD6cCG4DBoleq2UlQ==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - - '@parcel/resolver-default@2.12.0': - resolution: {integrity: sha512-uuhbajTax37TwCxu7V98JtRLiT6hzE4VYSu5B7Qkauy14/WFt2dz6GOUXPgVsED569/hkxebPx3KCMtZW6cHHA==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - - '@parcel/runtime-browser-hmr@2.12.0': - resolution: {integrity: sha512-4ZLp2FWyD32r0GlTulO3+jxgsA3oO1P1b5oO2IWuWilfhcJH5LTiazpL5YdusUjtNn9PGN6QLAWfxmzRIfM+Ow==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - - '@parcel/runtime-js@2.12.0': - resolution: {integrity: sha512-sBerP32Z1crX5PfLNGDSXSdqzlllM++GVnVQVeM7DgMKS8JIFG3VLi28YkX+dYYGtPypm01JoIHCkvwiZEcQJg==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - - '@parcel/runtime-react-refresh@2.12.0': - resolution: {integrity: sha512-SCHkcczJIDFTFdLTzrHTkQ0aTrX3xH6jrA4UsCBL6ji61+w+ohy4jEEe9qCgJVXhnJfGLE43HNXek+0MStX+Mw==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - - '@parcel/runtime-service-worker@2.12.0': - resolution: {integrity: sha512-BXuMBsfiwpIEnssn+jqfC3jkgbS8oxeo3C7xhSQsuSv+AF2FwY3O3AO1c1RBskEW3XrBLNINOJujroNw80VTKA==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - - '@parcel/rust@2.12.0': - resolution: {integrity: sha512-005cldMdFZFDPOjbDVEXcINQ3wT4vrxvSavRWI3Az0e3E18exO/x/mW9f648KtXugOXMAqCEqhFHcXECL9nmMw==} - engines: {node: '>= 12.0.0'} - - '@parcel/source-map@2.1.1': - resolution: {integrity: sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew==} - engines: {node: ^12.18.3 || >=14} - - '@parcel/transformer-babel@2.12.0': - resolution: {integrity: sha512-zQaBfOnf/l8rPxYGnsk/ufh/0EuqvmnxafjBIpKZ//j6rGylw5JCqXSb1QvvAqRYruKeccxGv7+HrxpqKU6V4A==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - - '@parcel/transformer-css@2.12.0': - resolution: {integrity: sha512-vXhOqoAlQGATYyQ433Z1DXKmiKmzOAUmKysbYH3FD+LKEKLMEl/pA14goqp00TW+A/EjtSKKyeMyHlMIIUqj4Q==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - - '@parcel/transformer-html@2.12.0': - resolution: {integrity: sha512-5jW4dFFBlYBvIQk4nrH62rfA/G/KzVzEDa6S+Nne0xXhglLjkm64Ci9b/d4tKZfuGWUbpm2ASAq8skti/nfpXw==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - - '@parcel/transformer-image@2.12.0': - resolution: {integrity: sha512-8hXrGm2IRII49R7lZ0RpmNk27EhcsH+uNKsvxuMpXPuEnWgC/ha/IrjaI29xCng1uGur74bJF43NUSQhR4aTdw==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - peerDependencies: - '@parcel/core': ^2.12.0 - - '@parcel/transformer-js@2.12.0': - resolution: {integrity: sha512-OSZpOu+FGDbC/xivu24v092D9w6EGytB3vidwbdiJ2FaPgfV7rxS0WIUjH4I0OcvHAcitArRXL0a3+HrNTdQQw==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - peerDependencies: - '@parcel/core': ^2.12.0 - - '@parcel/transformer-json@2.12.0': - resolution: {integrity: sha512-Utv64GLRCQILK5r0KFs4o7I41ixMPllwOLOhkdjJKvf1hZmN6WqfOmB1YLbWS/y5Zb/iB52DU2pWZm96vLFQZQ==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - - '@parcel/transformer-postcss@2.12.0': - resolution: {integrity: sha512-FZqn+oUtiLfPOn67EZxPpBkfdFiTnF4iwiXPqvst3XI8H+iC+yNgzmtJkunOOuylpYY6NOU5jT8d7saqWSDv2Q==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - - '@parcel/transformer-posthtml@2.12.0': - resolution: {integrity: sha512-z6Z7rav/pcaWdeD+2sDUcd0mmNZRUvtHaUGa50Y2mr+poxrKilpsnFMSiWBT+oOqPt7j71jzDvrdnAF4XkCljg==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - - '@parcel/transformer-raw@2.12.0': - resolution: {integrity: sha512-Ht1fQvXxix0NncdnmnXZsa6hra20RXYh1VqhBYZLsDfkvGGFnXIgO03Jqn4Z8MkKoa0tiNbDhpKIeTjyclbBxQ==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - - '@parcel/transformer-react-refresh-wrap@2.12.0': - resolution: {integrity: sha512-GE8gmP2AZtkpBIV5vSCVhewgOFRhqwdM5Q9jNPOY5PKcM3/Ff0qCqDiTzzGLhk0/VMBrdjssrfZkVx6S/lHdJw==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - - '@parcel/transformer-svg@2.12.0': - resolution: {integrity: sha512-cZJqGRJ4JNdYcb+vj94J7PdOuTnwyy45dM9xqbIMH+HSiiIkfrMsdEwYft0GTyFTdsnf+hdHn3tau7Qa5hhX+A==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - - '@parcel/transformer-typescript-types@2.12.0': - resolution: {integrity: sha512-uxF4UBMYvbjiV3zHTWMrZX8cFD92VUvD3ArcGi5WEtuVROUm9Sc47o0mOzxKfMFlJu2KOfZVHYlzK9f/UKA2kQ==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} - peerDependencies: - typescript: '>=3.0.0' - - '@parcel/ts-utils@2.12.0': - resolution: {integrity: sha512-zou+W6dcqnXXUOfN5zGM+ePIWbYOhGp8bVB2jICoNkoKmNAHd4l4zeHl5yQXnbZfynVw88cZVqxtXS8tYebelg==} - engines: {node: '>= 12.0.0'} - peerDependencies: - typescript: '>=3.0.0' - - '@parcel/types@2.12.0': - resolution: {integrity: sha512-8zAFiYNCwNTQcglIObyNwKfRYQK5ELlL13GuBOrSMxueUiI5ylgsGbTS1N7J3dAGZixHO8KhHGv5a71FILn9rQ==} - - '@parcel/utils@2.12.0': - resolution: {integrity: sha512-z1JhLuZ8QmDaYoEIuUCVZlhcFrS7LMfHrb2OCRui5SQFntRWBH2fNM6H/fXXUkT9SkxcuFP2DUA6/m4+Gkz72g==} - engines: {node: '>= 12.0.0'} - '@parcel/watcher-android-arm64@2.4.1': resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==} engines: {node: '>= 10.0.0'} @@ -4654,12 +4322,6 @@ packages: resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==} engines: {node: '>= 10.0.0'} - '@parcel/workers@2.12.0': - resolution: {integrity: sha512-zv5We5Jmb+ZWXlU6A+AufyjY4oZckkxsZ8J4dvyWL0W8IQvGO1JB4FGeryyttzQv3RM3OxcN/BpTGPiDG6keBw==} - engines: {node: '>= 12.0.0'} - peerDependencies: - '@parcel/core': ^2.12.0 - '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -7016,9 +6678,6 @@ packages: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} - abortcontroller-polyfill@1.7.5: - resolution: {integrity: sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==} - accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} @@ -7643,9 +7302,6 @@ packages: bare-events@2.2.2: resolution: {integrity: sha512-h7z00dWdG0PYOQEvChhOSWvOfkIKsdZGkWr083FgN/HyoQuebSew/cgirYqh9SCuy/hRvxc5Vy6Fw8xAmYHLkQ==} - base-x@3.0.9: - resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==} - base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -9196,10 +8852,6 @@ packages: resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} engines: {node: '>=12'} - dotenv@7.0.0: - resolution: {integrity: sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==} - engines: {node: '>=6'} - dotenv@8.6.0: resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} engines: {node: '>=10'} @@ -9288,10 +8940,6 @@ packages: entities@2.2.0: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} - entities@3.0.1: - resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==} - engines: {node: '>=0.12'} - entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -10219,10 +9867,6 @@ packages: get-port-please@3.1.2: resolution: {integrity: sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==} - get-port@4.2.0: - resolution: {integrity: sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==} - engines: {node: '>=6'} - get-port@5.1.1: resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} engines: {node: '>=8'} @@ -10635,41 +10279,9 @@ packages: peerDependencies: webpack: ^5.20.0 - htmlnano@2.1.0: - resolution: {integrity: sha512-jVGRE0Ep9byMBKEu0Vxgl8dhXYOUk0iNQ2pjsG+BcRB0u0oDF5A9p/iBGMg/PGKYUyMD0OAGu8dVT5Lzj8S58g==} - peerDependencies: - cssnano: ^6.0.0 - postcss: ^8.3.11 - purgecss: ^5.0.0 - relateurl: ^0.2.7 - srcset: 4.0.0 - svgo: ^3.0.2 - terser: ^5.10.0 - uncss: ^0.17.3 - peerDependenciesMeta: - cssnano: - optional: true - postcss: - optional: true - purgecss: - optional: true - relateurl: - optional: true - srcset: - optional: true - svgo: - optional: true - terser: - optional: true - uncss: - optional: true - htmlparser2@6.1.0: resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} - htmlparser2@7.2.0: - resolution: {integrity: sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==} - http-cache-semantics@4.1.1: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} @@ -11141,9 +10753,6 @@ packages: resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} engines: {node: '>=12'} - is-json@2.0.1: - resolution: {integrity: sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==} - is-lambda@1.0.1: resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} @@ -12156,10 +11765,6 @@ packages: resolution: {integrity: sha512-ovJXBXkKGfq+CwmKTjluEqFi3p4h8xvkxGQQAQan22YCgef4KZ1mKGjzfGh6PL6AW5Csw0QiQPNuQyH+6Xk3hA==} engines: {node: '>=18.0.0'} - lmdb@2.8.5: - resolution: {integrity: sha512-9bMdFfc80S+vSldBmG3HOuLVHnxRdNTlpzR6QDnzqCQtCzGUEAGTzBKYMeIM+I/sU4oZfgbcbS7X7F65/z/oxQ==} - hasBin: true - load-tsconfig@0.2.5: resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -12987,13 +12592,6 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - msgpackr-extract@3.0.2: - resolution: {integrity: sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A==} - hasBin: true - - msgpackr@1.10.1: - resolution: {integrity: sha512-r5VRLv9qouXuLiIBrLpl2d5ZvPt8svdQTl5/vMvE4nzDMyEX4sgW5yWhuBBj5UmgwOTWj8CIdSXn5sAfsHAWIQ==} - muggle-string@0.3.1: resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==} @@ -13091,9 +12689,6 @@ packages: node-abort-controller@3.1.1: resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} - node-addon-api@6.1.0: - resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} - node-addon-api@7.1.0: resolution: {integrity: sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==} engines: {node: ^16 || ^18 || >= 20} @@ -13133,14 +12728,6 @@ packages: resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} engines: {node: '>= 6.13.0'} - node-gyp-build-optional-packages@5.0.7: - resolution: {integrity: sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w==} - hasBin: true - - node-gyp-build-optional-packages@5.1.1: - resolution: {integrity: sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==} - hasBin: true - node-gyp-build@4.8.0: resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==} hasBin: true @@ -13303,9 +12890,6 @@ packages: peerDependencies: webpack: ^4.0.0 || ^5.0.0 - nullthrows@1.1.1: - resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} - nwsapi@2.2.7: resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} @@ -13458,9 +13042,6 @@ packages: resolution: {integrity: sha512-ANIvzobt1rls2BDny5fWZ3ZVKyD6nscLvfFRpQgfWsythlcsVUC9kL0zq6j2Z5z9wwp1kd7wpsD/T9qNPVLCaQ==} engines: {node: '>=18'} - ordered-binary@1.5.1: - resolution: {integrity: sha512-5VyHfHY3cd0iza71JepYG50My+YUbrFtGoUz2ooEydPyPM7Aai/JW098juLr+RG6+rDJuzNNTsEQu2DZa1A41A==} - os-name@5.1.0: resolution: {integrity: sha512-YEIoAnM6zFmzw3PQ201gCVCIWbXNyKObGlVvpAVvraAeOHnlYVKFssbA/riRX5R40WA6kKrZ7Dr7dWzO3nKSeQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -13582,11 +13163,6 @@ packages: param-case@3.0.4: resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} - parcel@2.12.0: - resolution: {integrity: sha512-W+gxAq7aQ9dJIg/XLKGcRT0cvnStFAQHPaI0pvD0U2l6IVLueUAm3nwN7lkY62zZNmlvNx6jNtE4wlbS+CyqSg==} - engines: {node: '>= 12.0.0'} - hasBin: true - parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -14078,22 +13654,6 @@ packages: resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} engines: {node: ^10 || ^12 || >=14} - posthtml-parser@0.10.2: - resolution: {integrity: sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg==} - engines: {node: '>=12'} - - posthtml-parser@0.11.0: - resolution: {integrity: sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==} - engines: {node: '>=12'} - - posthtml-render@3.0.0: - resolution: {integrity: sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==} - engines: {node: '>=12'} - - posthtml@0.16.6: - resolution: {integrity: sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==} - engines: {node: '>=12.0.0'} - preferred-pm@3.1.3: resolution: {integrity: sha512-MkXsENfftWSRpzCzImcp4FRsCc3y1opwB73CfCNWyzMqArju2CrlMHlqB7VexKiPEOjGMbttv1r9fSCn5S610w==} engines: {node: '>=10'} @@ -15693,10 +15253,6 @@ packages: sprintf-js@1.1.3: resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} - srcset@4.0.0: - resolution: {integrity: sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==} - engines: {node: '>=12'} - sshpk@1.18.0: resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} engines: {node: '>=0.10.0'} @@ -16103,10 +15659,6 @@ packages: resolution: {integrity: sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==} engines: {node: '>=10'} - term-size@2.2.1: - resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} - engines: {node: '>=8'} - terminal-link@2.1.1: resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} engines: {node: '>=8'} @@ -16887,10 +16439,6 @@ packages: utila@0.4.0: resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} - utility-types@3.11.0: - resolution: {integrity: sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==} - engines: {node: '>= 4'} - utils-merge@1.0.1: resolution: {integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=} engines: {node: '>= 0.4.0'} @@ -17183,9 +16731,6 @@ packages: weak-key@1.0.3: resolution: {integrity: sha512-+rUqNjaFsPhwrPdfmrHhKxbufsSUojAbX26PBawFWRHmKn01V1z6GWiizkpbXt225MxrvFm/ULYVxdFpkdY3cQ==} - weak-lru-cache@1.2.2: - resolution: {integrity: sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==} - web-encoding@1.1.5: resolution: {integrity: sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==} @@ -17651,7 +17196,7 @@ snapshots: '@babel/code-frame@7.24.2': dependencies: '@babel/highlight': 7.24.2 - picocolors: 1.1.0 + picocolors: 1.1.1 '@babel/code-frame@7.25.7': dependencies: @@ -17908,7 +17453,7 @@ snapshots: '@babel/helper-validator-identifier': 7.25.7 chalk: 2.4.2 js-tokens: 4.0.0 - picocolors: 1.1.0 + picocolors: 1.1.1 '@babel/parser@7.24.4': dependencies: @@ -19885,34 +19430,10 @@ snapshots: '@leichtgewicht/ip-codec@2.0.5': {} - '@lezer/common@1.2.1': {} - - '@lezer/lr@1.4.0': - dependencies: - '@lezer/common': 1.2.1 - '@ljharb/through@2.3.13': dependencies: call-bind: 1.0.7 - '@lmdb/lmdb-darwin-arm64@2.8.5': - optional: true - - '@lmdb/lmdb-darwin-x64@2.8.5': - optional: true - - '@lmdb/lmdb-linux-arm64@2.8.5': - optional: true - - '@lmdb/lmdb-linux-arm@2.8.5': - optional: true - - '@lmdb/lmdb-linux-x64@2.8.5': - optional: true - - '@lmdb/lmdb-win32-x64@2.8.5': - optional: true - '@loadable/babel-plugin@5.13.2(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -20014,30 +19535,6 @@ snapshots: '@microsoft/tsdoc@0.14.2': {} - '@mischnic/json-sourcemap@0.1.1': - dependencies: - '@lezer/common': 1.2.1 - '@lezer/lr': 1.4.0 - json5: 2.2.3 - - '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.2': - optional: true - - '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.2': - optional: true - - '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.2': - optional: true - - '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.2': - optional: true - - '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.2': - optional: true - - '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.2': - optional: true - '@ndelangen/get-tarball@3.0.9': dependencies: gunzip-maybe: 1.4.2 @@ -20497,581 +19994,6 @@ snapshots: dependencies: '@octokit/openapi-types': 18.1.1 - '@parcel/bundler-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': - dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/graph': 3.2.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/rust': 2.12.0 - '@parcel/utils': 2.12.0 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - '@parcel/cache@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': - dependencies: - '@parcel/core': 2.12.0(@swc/helpers@0.5.10) - '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/logger': 2.12.0 - '@parcel/utils': 2.12.0 - lmdb: 2.8.5 - transitivePeerDependencies: - - '@swc/helpers' - - '@parcel/codeframe@2.12.0': - dependencies: - chalk: 4.1.2 - - '@parcel/compressor-raw@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': - dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - '@parcel/config-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)(postcss@8.4.47)(relateurl@0.2.7)(srcset@4.0.0)(terser@5.30.3)(typescript@5.6.3)': - dependencies: - '@parcel/bundler-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/compressor-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/core': 2.12.0(@swc/helpers@0.5.10) - '@parcel/namer-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/optimizer-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/optimizer-htmlnano': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)(postcss@8.4.47)(relateurl@0.2.7)(srcset@4.0.0)(terser@5.30.3)(typescript@5.6.3) - '@parcel/optimizer-image': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/optimizer-svgo': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/optimizer-swc': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/packager-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/packager-html': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/packager-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/packager-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/packager-svg': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/packager-wasm': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/reporter-dev-server': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/resolver-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/runtime-browser-hmr': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/runtime-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/runtime-react-refresh': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/runtime-service-worker': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/transformer-babel': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/transformer-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/transformer-html': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/transformer-image': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/transformer-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10)) - '@parcel/transformer-json': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/transformer-postcss': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/transformer-posthtml': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/transformer-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/transformer-react-refresh-wrap': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/transformer-svg': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - transitivePeerDependencies: - - '@swc/helpers' - - cssnano - - postcss - - purgecss - - relateurl - - srcset - - terser - - typescript - - uncss - - '@parcel/core@2.12.0(@swc/helpers@0.5.10)': - dependencies: - '@mischnic/json-sourcemap': 0.1.1 - '@parcel/cache': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/diagnostic': 2.12.0 - '@parcel/events': 2.12.0 - '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/graph': 3.2.0 - '@parcel/logger': 2.12.0 - '@parcel/package-manager': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/profiler': 2.12.0 - '@parcel/rust': 2.12.0 - '@parcel/source-map': 2.1.1 - '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10)) - abortcontroller-polyfill: 1.7.5 - base-x: 3.0.9 - browserslist: 4.23.0 - clone: 2.1.2 - dotenv: 7.0.0 - dotenv-expand: 5.1.0 - json5: 2.2.3 - msgpackr: 1.10.1 - nullthrows: 1.1.1 - semver: 7.6.0 - transitivePeerDependencies: - - '@swc/helpers' - - '@parcel/diagnostic@2.12.0': - dependencies: - '@mischnic/json-sourcemap': 0.1.1 - nullthrows: 1.1.1 - - '@parcel/events@2.12.0': {} - - '@parcel/fs@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': - dependencies: - '@parcel/core': 2.12.0(@swc/helpers@0.5.10) - '@parcel/rust': 2.12.0 - '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/utils': 2.12.0 - '@parcel/watcher': 2.4.1 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10)) - transitivePeerDependencies: - - '@swc/helpers' - - '@parcel/graph@3.2.0': - dependencies: - nullthrows: 1.1.1 - - '@parcel/logger@2.12.0': - dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/events': 2.12.0 - - '@parcel/markdown-ansi@2.12.0': - dependencies: - chalk: 4.1.2 - - '@parcel/namer-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': - dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - '@parcel/node-resolver-core@3.3.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))': - dependencies: - '@mischnic/json-sourcemap': 0.1.1 - '@parcel/diagnostic': 2.12.0 - '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/rust': 2.12.0 - '@parcel/utils': 2.12.0 - nullthrows: 1.1.1 - semver: 7.6.3 - transitivePeerDependencies: - - '@parcel/core' - - '@parcel/optimizer-css@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': - dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.12.0 - browserslist: 4.23.0 - lightningcss: 1.24.1 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - '@parcel/optimizer-htmlnano@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)(postcss@8.4.47)(relateurl@0.2.7)(srcset@4.0.0)(terser@5.30.3)(typescript@5.6.3)': - dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - htmlnano: 2.1.0(postcss@8.4.47)(relateurl@0.2.7)(srcset@4.0.0)(svgo@2.8.0)(terser@5.30.3)(typescript@5.6.3) - nullthrows: 1.1.1 - posthtml: 0.16.6 - svgo: 2.8.0 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - cssnano - - postcss - - purgecss - - relateurl - - srcset - - terser - - typescript - - uncss - - '@parcel/optimizer-image@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': - dependencies: - '@parcel/core': 2.12.0(@swc/helpers@0.5.10) - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/rust': 2.12.0 - '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10)) - transitivePeerDependencies: - - '@swc/helpers' - - '@parcel/optimizer-svgo@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': - dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/utils': 2.12.0 - svgo: 2.8.0 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - '@parcel/optimizer-swc@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': - dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.12.0 - '@swc/core': 1.4.16(@swc/helpers@0.5.10) - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - '@parcel/package-manager@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': - dependencies: - '@parcel/core': 2.12.0(@swc/helpers@0.5.10) - '@parcel/diagnostic': 2.12.0 - '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/logger': 2.12.0 - '@parcel/node-resolver-core': 3.3.0(@parcel/core@2.12.0(@swc/helpers@0.5.10)) - '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10)) - '@swc/core': 1.4.16(@swc/helpers@0.5.10) - semver: 7.6.3 - transitivePeerDependencies: - - '@swc/helpers' - - '@parcel/packager-css@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': - dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.12.0 - lightningcss: 1.24.1 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - '@parcel/packager-html@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': - dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/utils': 2.12.0 - nullthrows: 1.1.1 - posthtml: 0.16.6 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - '@parcel/packager-js@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': - dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/rust': 2.12.0 - '@parcel/source-map': 2.1.1 - '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/utils': 2.12.0 - globals: 13.24.0 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - '@parcel/packager-raw@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': - dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - '@parcel/packager-svg@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': - dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/utils': 2.12.0 - posthtml: 0.16.6 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - '@parcel/packager-ts@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': - dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - '@parcel/packager-wasm@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': - dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - '@parcel/plugin@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': - dependencies: - '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - '@parcel/profiler@2.12.0': - dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/events': 2.12.0 - chrome-trace-event: 1.0.3 - - '@parcel/reporter-cli@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': - dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/utils': 2.12.0 - chalk: 4.1.2 - term-size: 2.2.1 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - '@parcel/reporter-dev-server@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': - dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/utils': 2.12.0 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - '@parcel/reporter-tracer@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': - dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/utils': 2.12.0 - chrome-trace-event: 1.0.3 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - '@parcel/resolver-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': - dependencies: - '@parcel/node-resolver-core': 3.3.0(@parcel/core@2.12.0(@swc/helpers@0.5.10)) - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - '@parcel/runtime-browser-hmr@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': - dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/utils': 2.12.0 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - '@parcel/runtime-js@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': - dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/utils': 2.12.0 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - '@parcel/runtime-react-refresh@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': - dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/utils': 2.12.0 - react-error-overlay: 6.0.9 - react-refresh: 0.14.0 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - '@parcel/runtime-service-worker@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': - dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/utils': 2.12.0 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - '@parcel/rust@2.12.0': {} - - '@parcel/source-map@2.1.1': - dependencies: - detect-libc: 1.0.3 - - '@parcel/transformer-babel@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': - dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.12.0 - browserslist: 4.23.0 - json5: 2.2.3 - nullthrows: 1.1.1 - semver: 7.6.3 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - '@parcel/transformer-css@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': - dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.12.0 - browserslist: 4.23.0 - lightningcss: 1.24.1 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - '@parcel/transformer-html@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': - dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/rust': 2.12.0 - nullthrows: 1.1.1 - posthtml: 0.16.6 - posthtml-parser: 0.10.2 - posthtml-render: 3.0.0 - semver: 7.6.3 - srcset: 4.0.0 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - '@parcel/transformer-image@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': - dependencies: - '@parcel/core': 2.12.0(@swc/helpers@0.5.10) - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10)) - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@swc/helpers' - - '@parcel/transformer-js@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))': - dependencies: - '@parcel/core': 2.12.0(@swc/helpers@0.5.10) - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/rust': 2.12.0 - '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10)) - '@swc/helpers': 0.5.10 - browserslist: 4.23.0 - nullthrows: 1.1.1 - regenerator-runtime: 0.13.11 - semver: 7.6.3 - - '@parcel/transformer-json@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': - dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - json5: 2.2.3 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - '@parcel/transformer-postcss@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': - dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/rust': 2.12.0 - '@parcel/utils': 2.12.0 - clone: 2.1.2 - nullthrows: 1.1.1 - postcss-value-parser: 4.2.0 - semver: 7.6.3 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - '@parcel/transformer-posthtml@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': - dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/utils': 2.12.0 - nullthrows: 1.1.1 - posthtml: 0.16.6 - posthtml-parser: 0.10.2 - posthtml-render: 3.0.0 - semver: 7.6.3 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - '@parcel/transformer-raw@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': - dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - '@parcel/transformer-react-refresh-wrap@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': - dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/utils': 2.12.0 - react-refresh: 0.14.0 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - '@parcel/transformer-svg@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': - dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/rust': 2.12.0 - nullthrows: 1.1.1 - posthtml: 0.16.6 - posthtml-parser: 0.10.2 - posthtml-render: 3.0.0 - semver: 7.6.3 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - '@parcel/transformer-typescript-types@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)(typescript@5.6.3)': - dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/source-map': 2.1.1 - '@parcel/ts-utils': 2.12.0(typescript@5.6.3) - '@parcel/utils': 2.12.0 - nullthrows: 1.1.1 - typescript: 5.6.3 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - '@parcel/ts-utils@2.12.0(typescript@5.6.3)': - dependencies: - nullthrows: 1.1.1 - typescript: 5.6.3 - - '@parcel/types@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)': - dependencies: - '@parcel/cache': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/diagnostic': 2.12.0 - '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/package-manager': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/source-map': 2.1.1 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10)) - utility-types: 3.11.0 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - '@parcel/utils@2.12.0': - dependencies: - '@parcel/codeframe': 2.12.0 - '@parcel/diagnostic': 2.12.0 - '@parcel/logger': 2.12.0 - '@parcel/markdown-ansi': 2.12.0 - '@parcel/rust': 2.12.0 - '@parcel/source-map': 2.1.1 - chalk: 4.1.2 - nullthrows: 1.1.1 - '@parcel/watcher-android-arm64@2.4.1': optional: true @@ -21138,16 +20060,6 @@ snapshots: '@parcel/watcher-win32-ia32': 2.4.1 '@parcel/watcher-win32-x64': 2.4.1 - '@parcel/workers@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))': - dependencies: - '@parcel/core': 2.12.0(@swc/helpers@0.5.10) - '@parcel/diagnostic': 2.12.0 - '@parcel/logger': 2.12.0 - '@parcel/profiler': 2.12.0 - '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/utils': 2.12.0 - nullthrows: 1.1.1 - '@pkgjs/parseargs@0.11.0': optional: true @@ -23479,7 +22391,7 @@ snapshots: '@swc/core-win32-x64-msvc@1.4.16': optional: true - '@swc/core@1.4.16(@swc/helpers@0.5.10)': + '@swc/core@1.4.16': dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.6 @@ -23494,7 +22406,7 @@ snapshots: '@swc/core-win32-arm64-msvc': 1.4.16 '@swc/core-win32-ia32-msvc': 1.4.16 '@swc/core-win32-x64-msvc': 1.4.16 - '@swc/helpers': 0.5.10 + optional: true '@swc/counter@0.1.3': {} @@ -23510,6 +22422,7 @@ snapshots: '@swc/types@0.1.6': dependencies: '@swc/counter': 0.1.3 + optional: true '@szmarczak/http-timer@1.1.2': dependencies: @@ -24881,8 +23794,6 @@ snapshots: dependencies: event-target-shim: 5.0.1 - abortcontroller-polyfill@1.7.5: {} - accepts@1.3.8: dependencies: mime-types: 2.1.35 @@ -25749,10 +24660,6 @@ snapshots: bare-events@2.2.2: optional: true - base-x@3.0.9: - dependencies: - safe-buffer: 5.2.1 - base64-js@1.5.1: {} base@0.11.2: @@ -27507,8 +26414,6 @@ snapshots: dotenv@16.4.5: {} - dotenv@7.0.0: {} - dotenv@8.6.0: {} duplexer3@0.1.5: {} @@ -27588,8 +26493,6 @@ snapshots: entities@2.2.0: {} - entities@3.0.1: {} - entities@4.5.0: {} env-paths@2.2.1: {} @@ -29071,8 +27974,6 @@ snapshots: get-port-please@3.1.2: {} - get-port@4.2.0: {} - get-port@5.1.1: {} get-port@7.1.0: {} @@ -29604,20 +28505,6 @@ snapshots: tapable: 2.2.1 webpack: 5.90.1(esbuild@0.20.2) - htmlnano@2.1.0(postcss@8.4.47)(relateurl@0.2.7)(srcset@4.0.0)(svgo@2.8.0)(terser@5.30.3)(typescript@5.6.3): - dependencies: - cosmiconfig: 8.3.6(typescript@5.6.3) - posthtml: 0.16.6 - timsort: 0.3.0 - optionalDependencies: - postcss: 8.4.47 - relateurl: 0.2.7 - srcset: 4.0.0 - svgo: 2.8.0 - terser: 5.30.3 - transitivePeerDependencies: - - typescript - htmlparser2@6.1.0: dependencies: domelementtype: 2.3.0 @@ -29625,13 +28512,6 @@ snapshots: domutils: 2.8.0 entities: 2.2.0 - htmlparser2@7.2.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 4.3.1 - domutils: 2.8.0 - entities: 3.0.1 - http-cache-semantics@4.1.1: {} http-deceiver@1.2.7: {} @@ -30139,8 +29019,6 @@ snapshots: is-interactive@2.0.0: {} - is-json@2.0.1: {} - is-lambda@1.0.1: {} is-map@2.0.3: {} @@ -31618,21 +30496,6 @@ snapshots: rfdc: 1.3.1 wrap-ansi: 9.0.0 - lmdb@2.8.5: - dependencies: - msgpackr: 1.10.1 - node-addon-api: 6.1.0 - node-gyp-build-optional-packages: 5.1.1 - ordered-binary: 1.5.1 - weak-lru-cache: 1.2.2 - optionalDependencies: - '@lmdb/lmdb-darwin-arm64': 2.8.5 - '@lmdb/lmdb-darwin-x64': 2.8.5 - '@lmdb/lmdb-linux-arm': 2.8.5 - '@lmdb/lmdb-linux-arm64': 2.8.5 - '@lmdb/lmdb-linux-x64': 2.8.5 - '@lmdb/lmdb-win32-x64': 2.8.5 - load-tsconfig@0.2.5: {} load-yaml-file@0.2.0: @@ -32878,22 +31741,6 @@ snapshots: ms@2.1.3: {} - msgpackr-extract@3.0.2: - dependencies: - node-gyp-build-optional-packages: 5.0.7 - optionalDependencies: - '@msgpackr-extract/msgpackr-extract-darwin-arm64': 3.0.2 - '@msgpackr-extract/msgpackr-extract-darwin-x64': 3.0.2 - '@msgpackr-extract/msgpackr-extract-linux-arm': 3.0.2 - '@msgpackr-extract/msgpackr-extract-linux-arm64': 3.0.2 - '@msgpackr-extract/msgpackr-extract-linux-x64': 3.0.2 - '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.2 - optional: true - - msgpackr@1.10.1: - optionalDependencies: - msgpackr-extract: 3.0.2 - muggle-string@0.3.1: {} multicast-dns@7.2.5: @@ -33092,8 +31939,6 @@ snapshots: node-abort-controller@3.1.1: {} - node-addon-api@6.1.0: {} - node-addon-api@7.1.0: {} node-dir@0.1.17: @@ -33130,13 +31975,6 @@ snapshots: node-forge@1.3.1: {} - node-gyp-build-optional-packages@5.0.7: - optional: true - - node-gyp-build-optional-packages@5.1.1: - dependencies: - detect-libc: 2.0.3 - node-gyp-build@4.8.0: {} node-gyp@8.4.1: @@ -33356,8 +32194,6 @@ snapshots: schema-utils: 3.3.0 webpack: 5.90.1(esbuild@0.20.2) - nullthrows@1.1.1: {} - nwsapi@2.2.7: {} nypm@0.3.8: @@ -33571,8 +32407,6 @@ snapshots: string-width: 7.1.0 strip-ansi: 7.1.0 - ordered-binary@1.5.1: {} - os-name@5.1.0: dependencies: macos-release: 3.2.0 @@ -33741,33 +32575,6 @@ snapshots: dot-case: 3.0.4 tslib: 2.6.2 - parcel@2.12.0(@swc/helpers@0.5.10)(postcss@8.4.47)(relateurl@0.2.7)(srcset@4.0.0)(terser@5.30.3)(typescript@5.6.3): - dependencies: - '@parcel/config-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10)(postcss@8.4.47)(relateurl@0.2.7)(srcset@4.0.0)(terser@5.30.3)(typescript@5.6.3) - '@parcel/core': 2.12.0(@swc/helpers@0.5.10) - '@parcel/diagnostic': 2.12.0 - '@parcel/events': 2.12.0 - '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/logger': 2.12.0 - '@parcel/package-manager': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/reporter-cli': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/reporter-dev-server': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/reporter-tracer': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.10))(@swc/helpers@0.5.10) - '@parcel/utils': 2.12.0 - chalk: 4.1.2 - commander: 7.2.0 - get-port: 4.2.0 - transitivePeerDependencies: - - '@swc/helpers' - - cssnano - - postcss - - purgecss - - relateurl - - srcset - - terser - - typescript - - uncss - parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -34302,23 +33109,6 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - posthtml-parser@0.10.2: - dependencies: - htmlparser2: 7.2.0 - - posthtml-parser@0.11.0: - dependencies: - htmlparser2: 7.2.0 - - posthtml-render@3.0.0: - dependencies: - is-json: 2.0.1 - - posthtml@0.16.6: - dependencies: - posthtml-parser: 0.11.0 - posthtml-render: 3.0.0 - preferred-pm@3.1.3: dependencies: find-up: 5.0.0 @@ -36558,8 +35348,6 @@ snapshots: sprintf-js@1.1.3: {} - srcset@4.0.0: {} - sshpk@1.18.0: dependencies: asn1: 0.2.6 @@ -37064,8 +35852,6 @@ snapshots: type-fest: 0.16.0 unique-string: 2.0.0 - term-size@2.2.1: {} - terminal-link@2.1.1: dependencies: ansi-escapes: 4.3.2 @@ -37335,7 +36121,7 @@ snapshots: tslib@2.6.2: {} - tsup@8.3.5(@microsoft/api-extractor@7.43.0(@types/node@20.12.7))(@swc/core@1.4.16(@swc/helpers@0.5.10))(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.1)(typescript@5.6.3): + tsup@8.3.5(@microsoft/api-extractor@7.43.0(@types/node@20.12.7))(@swc/core@1.4.16)(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.1)(typescript@5.6.3): dependencies: bundle-require: 5.0.0(esbuild@0.24.0) cac: 6.7.14 @@ -37355,7 +36141,7 @@ snapshots: tree-kill: 1.2.2 optionalDependencies: '@microsoft/api-extractor': 7.43.0(@types/node@20.12.7) - '@swc/core': 1.4.16(@swc/helpers@0.5.10) + '@swc/core': 1.4.16 postcss: 8.4.47 typescript: 5.6.3 transitivePeerDependencies: @@ -37880,8 +36666,6 @@ snapshots: utila@0.4.0: {} - utility-types@3.11.0: {} - utils-merge@1.0.1: {} uuid@3.4.0: {} @@ -38350,8 +37134,6 @@ snapshots: weak-key@1.0.3: {} - weak-lru-cache@1.2.2: {} - web-encoding@1.1.5: dependencies: util: 0.12.5 From c37e4cec9b97c021da7bf20d19210d14a2c00763 Mon Sep 17 00:00:00 2001 From: Victor Fernandez de Alba Date: Tue, 5 Nov 2024 10:36:24 +0100 Subject: [PATCH 07/47] Release @plone/registry 2.1.0 --- packages/registry/CHANGELOG.md | 15 +++++++++++++++ packages/registry/news/6458.bugfix | 1 - packages/registry/news/6458.feature | 1 - packages/registry/news/6461.bugfix | 1 - packages/registry/news/6461.internal | 1 - packages/registry/package.json | 2 +- 6 files changed, 16 insertions(+), 5 deletions(-) delete mode 100644 packages/registry/news/6458.bugfix delete mode 100644 packages/registry/news/6458.feature delete mode 100644 packages/registry/news/6461.bugfix delete mode 100644 packages/registry/news/6461.internal diff --git a/packages/registry/CHANGELOG.md b/packages/registry/CHANGELOG.md index d35a65a0fa..6476128e9a 100644 --- a/packages/registry/CHANGELOG.md +++ b/packages/registry/CHANGELOG.md @@ -8,6 +8,21 @@ +## 2.1.0 (2024-11-05) + +### Feature + +- Allow any type `js`, `cjs`, `mjs`, `ts` as configuration for the add-on registry. @sneridagh [#6458](https://github.com/plone/volto/issues/6458) + +### Bugfix + +- Fix ERR_REQUIRE from ESM module requiring CJS module. @sneridagh [#6458](https://github.com/plone/volto/issues/6458) +- Fix types for add-on's TypeScript. Fix `.tsconfig` for Node.js side. @sneridagh [#6461](https://github.com/plone/volto/issues/6461) + +### Internal + +- Replace `parcel` with `tsup` for build. @sneridagh [#6461](https://github.com/plone/volto/issues/6461) + ## 2.0.0 (2024-10-31) ### Internal diff --git a/packages/registry/news/6458.bugfix b/packages/registry/news/6458.bugfix deleted file mode 100644 index e5a6eceff0..0000000000 --- a/packages/registry/news/6458.bugfix +++ /dev/null @@ -1 +0,0 @@ -Fix ERR_REQUIRE from ESM module requiring CJS module. @sneridagh diff --git a/packages/registry/news/6458.feature b/packages/registry/news/6458.feature deleted file mode 100644 index 30054385d5..0000000000 --- a/packages/registry/news/6458.feature +++ /dev/null @@ -1 +0,0 @@ -Allow any type `js`, `cjs`, `mjs`, `ts` as configuration for the add-on registry. @sneridagh diff --git a/packages/registry/news/6461.bugfix b/packages/registry/news/6461.bugfix deleted file mode 100644 index ec4a0ab820..0000000000 --- a/packages/registry/news/6461.bugfix +++ /dev/null @@ -1 +0,0 @@ -Fix types for add-on's TypeScript. Fix `.tsconfig` for Node.js side. @sneridagh diff --git a/packages/registry/news/6461.internal b/packages/registry/news/6461.internal deleted file mode 100644 index 47e581e30f..0000000000 --- a/packages/registry/news/6461.internal +++ /dev/null @@ -1 +0,0 @@ -Replace `parcel` with `tsup` for build. @sneridagh diff --git a/packages/registry/package.json b/packages/registry/package.json index 588d36f8d4..2f4d144163 100644 --- a/packages/registry/package.json +++ b/packages/registry/package.json @@ -9,7 +9,7 @@ ], "funding": "https://github.com/sponsors/plone", "license": "MIT", - "version": "2.0.0", + "version": "2.1.0", "repository": { "type": "git", "url": "https://github.com/plone/volto.git" From 28223ca3a3b68492aec916b4f678a4963723ecbb Mon Sep 17 00:00:00 2001 From: Victor Fernandez de Alba Date: Tue, 5 Nov 2024 10:38:15 +0100 Subject: [PATCH 08/47] Release @plone/scripts 3.8.0 --- packages/scripts/CHANGELOG.md | 6 ++++++ packages/scripts/news/6461.internal | 1 - packages/scripts/package.json | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) delete mode 100644 packages/scripts/news/6461.internal diff --git a/packages/scripts/CHANGELOG.md b/packages/scripts/CHANGELOG.md index f1c4f0278b..a1d800312d 100644 --- a/packages/scripts/CHANGELOG.md +++ b/packages/scripts/CHANGELOG.md @@ -8,6 +8,12 @@ +## 3.8.0 (2024-11-05) + +### Internal + +- Improve exports in `@plone/registry`. Adapt its detection in i18n script. @sneridagh [#6461](https://github.com/plone/volto/issues/6461) + ## 3.7.0 (2024-10-27) ### Feature diff --git a/packages/scripts/news/6461.internal b/packages/scripts/news/6461.internal deleted file mode 100644 index 7bbe93ec94..0000000000 --- a/packages/scripts/news/6461.internal +++ /dev/null @@ -1 +0,0 @@ -Improve exports in `@plone/registry`. Adapt its detection in i18n script. @sneridagh diff --git a/packages/scripts/package.json b/packages/scripts/package.json index 412e88fcee..4242deb4aa 100644 --- a/packages/scripts/package.json +++ b/packages/scripts/package.json @@ -9,7 +9,7 @@ } ], "license": "MIT", - "version": "3.7.0", + "version": "3.8.0", "repository": { "type": "git", "url": "git@github.com:plone/volto.git" From 1a53887a21bedecc2e1cb0edcfa96b1063834738 Mon Sep 17 00:00:00 2001 From: Victor Fernandez de Alba Date: Tue, 5 Nov 2024 10:39:06 +0100 Subject: [PATCH 09/47] Release @plone/client 1.0.0-alpha.20 --- packages/client/CHANGELOG.md | 7 +++++++ packages/client/news/6461.internal | 1 - packages/client/news/6466.internal | 1 - packages/client/package.json | 2 +- 4 files changed, 8 insertions(+), 3 deletions(-) delete mode 100644 packages/client/news/6461.internal delete mode 100644 packages/client/news/6466.internal diff --git a/packages/client/CHANGELOG.md b/packages/client/CHANGELOG.md index 0761493643..57c72746b1 100644 --- a/packages/client/CHANGELOG.md +++ b/packages/client/CHANGELOG.md @@ -8,6 +8,13 @@ +## 1.0.0-alpha.20 (2024-11-05) + +### Internal + +- Bump local `typescript` version. @sneridagh [#6461](https://github.com/plone/volto/pull/6461) +- Replace `parcel` with `tsup`. @sneridagh [#6466](https://github.com/plone/volto/pull/6466) + ## 1.0.0-alpha.19 (2024-10-18) ### Feature diff --git a/packages/client/news/6461.internal b/packages/client/news/6461.internal deleted file mode 100644 index 96267e48f2..0000000000 --- a/packages/client/news/6461.internal +++ /dev/null @@ -1 +0,0 @@ -Bump local `typescript` version. @sneridagh diff --git a/packages/client/news/6466.internal b/packages/client/news/6466.internal deleted file mode 100644 index e38cefa66c..0000000000 --- a/packages/client/news/6466.internal +++ /dev/null @@ -1 +0,0 @@ -Replace `parcel` with `tsup`. @sneridagh diff --git a/packages/client/package.json b/packages/client/package.json index f1a310635e..327f15c87c 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -8,7 +8,7 @@ } ], "license": "MIT", - "version": "1.0.0-alpha.19", + "version": "1.0.0-alpha.20", "repository": { "type": "git", "url": "git@github.com:plone/volto.git" From 2480f48420717b47b65b998191616e5d244c5501 Mon Sep 17 00:00:00 2001 From: Victor Fernandez de Alba Date: Tue, 5 Nov 2024 10:39:46 +0100 Subject: [PATCH 10/47] Release @plone/components 2.1.0 --- packages/components/CHANGELOG.md | 6 ++++++ packages/components/news/6467.internal | 1 - packages/components/package.json | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) delete mode 100644 packages/components/news/6467.internal diff --git a/packages/components/CHANGELOG.md b/packages/components/CHANGELOG.md index 2ae08a29e3..83d893def4 100644 --- a/packages/components/CHANGELOG.md +++ b/packages/components/CHANGELOG.md @@ -8,6 +8,12 @@ +## 2.1.0 (2024-11-05) + +### Internal + +- Replace `parcel` with `tsup`. Better types, better tsconfig. Move to ESM. @sneridagh [#6467](https://github.com/plone/volto/issues/6467) + ## 2.0.0 (2024-10-31) ### Internal diff --git a/packages/components/news/6467.internal b/packages/components/news/6467.internal deleted file mode 100644 index 97beb403a0..0000000000 --- a/packages/components/news/6467.internal +++ /dev/null @@ -1 +0,0 @@ -Replace `parcel` with `tsup`. Better types, better tsconfig. Move to ESM. @sneridagh diff --git a/packages/components/package.json b/packages/components/package.json index 846ac78695..fdb81c1c26 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -8,7 +8,7 @@ } ], "license": "MIT", - "version": "2.0.0", + "version": "2.1.0", "repository": { "type": "git", "url": "http://github.com/plone/components.git" From ec3732ccee1c4bb1dbb33c83300ecbadbab4883d Mon Sep 17 00:00:00 2001 From: Victor Fernandez de Alba Date: Tue, 5 Nov 2024 10:40:38 +0100 Subject: [PATCH 11/47] Release @plone/providers 1.0.0-alpha.4 --- packages/providers/CHANGELOG.md | 7 +++++++ packages/providers/news/6461.internal | 1 - packages/providers/news/6468.internal | 1 - packages/providers/package.json | 2 +- 4 files changed, 8 insertions(+), 3 deletions(-) delete mode 100644 packages/providers/news/6461.internal delete mode 100644 packages/providers/news/6468.internal diff --git a/packages/providers/CHANGELOG.md b/packages/providers/CHANGELOG.md index c8326e298c..437b1e65b6 100644 --- a/packages/providers/CHANGELOG.md +++ b/packages/providers/CHANGELOG.md @@ -8,6 +8,13 @@ +## 1.0.0-alpha.4 (2024-11-05) + +### Internal + +- Bump local `typescript` version. @sneridagh [#6461](https://github.com/plone/volto/issues/6461) +- Replace `parcel` with `tsup`. Better types, better tsconfig. Move to ESM. @sneridagh [#6468](https://github.com/plone/volto/issues/6468) + ## 1.0.0-alpha.3 (2024-10-18) ## 1.0.0-alpha.2 (2024-10-18) diff --git a/packages/providers/news/6461.internal b/packages/providers/news/6461.internal deleted file mode 100644 index 96267e48f2..0000000000 --- a/packages/providers/news/6461.internal +++ /dev/null @@ -1 +0,0 @@ -Bump local `typescript` version. @sneridagh diff --git a/packages/providers/news/6468.internal b/packages/providers/news/6468.internal deleted file mode 100644 index 97beb403a0..0000000000 --- a/packages/providers/news/6468.internal +++ /dev/null @@ -1 +0,0 @@ -Replace `parcel` with `tsup`. Better types, better tsconfig. Move to ESM. @sneridagh diff --git a/packages/providers/package.json b/packages/providers/package.json index c46caa84d0..845e39c0d5 100644 --- a/packages/providers/package.json +++ b/packages/providers/package.json @@ -9,7 +9,7 @@ ], "funding": "https://github.com/sponsors/plone", "license": "MIT", - "version": "1.0.0-alpha.3", + "version": "1.0.0-alpha.4", "repository": { "type": "git", "url": "https://github.com/plone/volto.git" From 4f52faf314706f04488c532b13a706beeefd77d7 Mon Sep 17 00:00:00 2001 From: Victor Fernandez de Alba Date: Tue, 5 Nov 2024 10:42:07 +0100 Subject: [PATCH 12/47] Release 18.0.1 --- docs/source/release-notes/index.md | 17 +++++++++++++++-- packages/volto/CHANGELOG.md | 15 +++++++++++++++ packages/volto/news/6458.bugfix | 1 - packages/volto/news/6460.documentation | 1 - packages/volto/news/6461.internal | 1 - packages/volto/news/6469.internal | 1 - packages/volto/package.json | 2 +- 7 files changed, 31 insertions(+), 7 deletions(-) delete mode 100644 packages/volto/news/6458.bugfix delete mode 100644 packages/volto/news/6460.documentation delete mode 100644 packages/volto/news/6461.internal delete mode 100644 packages/volto/news/6469.internal diff --git a/docs/source/release-notes/index.md b/docs/source/release-notes/index.md index 5a57570ddc..0f12ffbb6e 100644 --- a/docs/source/release-notes/index.md +++ b/docs/source/release-notes/index.md @@ -17,9 +17,22 @@ myst: -## 18.0.0 (2024-10-31) +## 18.0.1 (2024-11-05) + +### Bugfix + +- Fix ERR_REQUIRE from ESM module requiring CJS module in `@plone/registry` fix tests. @sneridagh [#6458](https://github.com/plone/volto/issues/6458) + +### Internal -## 18.0.0 (Unreleased) +- Improve exports in @plone/registry, adapt the Jest test setup. @sneridagh [#6461](https://github.com/plone/volto/issues/6461) +- Removed `parcel` completely from core. @sneridagh [#6469](https://github.com/plone/volto/issues/6469) + +### Documentation + +- Fix display of nvm version when installing it for Contributing to Volto. @stevepiercy [#6460](https://github.com/plone/volto/issues/6460) + +## 18.0.0 (2024-10-31) (Summary) diff --git a/packages/volto/CHANGELOG.md b/packages/volto/CHANGELOG.md index 59175be216..0f12ffbb6e 100644 --- a/packages/volto/CHANGELOG.md +++ b/packages/volto/CHANGELOG.md @@ -17,6 +17,21 @@ myst: +## 18.0.1 (2024-11-05) + +### Bugfix + +- Fix ERR_REQUIRE from ESM module requiring CJS module in `@plone/registry` fix tests. @sneridagh [#6458](https://github.com/plone/volto/issues/6458) + +### Internal + +- Improve exports in @plone/registry, adapt the Jest test setup. @sneridagh [#6461](https://github.com/plone/volto/issues/6461) +- Removed `parcel` completely from core. @sneridagh [#6469](https://github.com/plone/volto/issues/6469) + +### Documentation + +- Fix display of nvm version when installing it for Contributing to Volto. @stevepiercy [#6460](https://github.com/plone/volto/issues/6460) + ## 18.0.0 (2024-10-31) (Summary) diff --git a/packages/volto/news/6458.bugfix b/packages/volto/news/6458.bugfix deleted file mode 100644 index d7e24d1c7c..0000000000 --- a/packages/volto/news/6458.bugfix +++ /dev/null @@ -1 +0,0 @@ -Fix ERR_REQUIRE from ESM module requiring CJS module in `@plone/registry` fix tests. @sneridagh diff --git a/packages/volto/news/6460.documentation b/packages/volto/news/6460.documentation deleted file mode 100644 index f3c2c72632..0000000000 --- a/packages/volto/news/6460.documentation +++ /dev/null @@ -1 +0,0 @@ -Fix display of nvm version when installing it for Contributing to Volto. @stevepiercy diff --git a/packages/volto/news/6461.internal b/packages/volto/news/6461.internal deleted file mode 100644 index 0c6205f6fb..0000000000 --- a/packages/volto/news/6461.internal +++ /dev/null @@ -1 +0,0 @@ -Improve exports in @plone/registry, adapt the Jest test setup. @sneridagh diff --git a/packages/volto/news/6469.internal b/packages/volto/news/6469.internal deleted file mode 100644 index 69b74070dc..0000000000 --- a/packages/volto/news/6469.internal +++ /dev/null @@ -1 +0,0 @@ -Removed `parcel` completely from core. @sneridagh diff --git a/packages/volto/package.json b/packages/volto/package.json index 727196fd28..8692e39148 100644 --- a/packages/volto/package.json +++ b/packages/volto/package.json @@ -9,7 +9,7 @@ } ], "license": "MIT", - "version": "18.0.0", + "version": "18.0.1", "repository": { "type": "git", "url": "git@github.com:plone/volto.git" From b139107ed3de3593a0346cf35d64863b515524aa Mon Sep 17 00:00:00 2001 From: Victor Fernandez de Alba Date: Tue, 5 Nov 2024 10:58:07 +0100 Subject: [PATCH 13/47] Repackage registry --- packages/registry/.npmignore | 4 ++++ packages/registry/news/+repackage.internal | 1 + packages/registry/package.json | 5 +++++ 3 files changed, 10 insertions(+) create mode 100644 packages/registry/news/+repackage.internal diff --git a/packages/registry/.npmignore b/packages/registry/.npmignore index a6d10baa1e..7e2134f27e 100644 --- a/packages/registry/.npmignore +++ b/packages/registry/.npmignore @@ -4,3 +4,7 @@ towncrier.toml node_modules/ .release-it.json .eslintrc.js +lib +bin +docs +include diff --git a/packages/registry/news/+repackage.internal b/packages/registry/news/+repackage.internal new file mode 100644 index 0000000000..cabfa5d180 --- /dev/null +++ b/packages/registry/news/+repackage.internal @@ -0,0 +1 @@ +Repackage registry, the previous build was including the docs. @sneridagh diff --git a/packages/registry/package.json b/packages/registry/package.json index 2f4d144163..567f75af69 100644 --- a/packages/registry/package.json +++ b/packages/registry/package.json @@ -31,6 +31,11 @@ "publishConfig": { "access": "public" }, + "files": [ + "dist", + "README.md", + "vite-plugin.*" + ], "type": "module", "main": "dist/index.js", "exports": { From 1ce478fcb5da8e417841ac8544d01d0958f7674b Mon Sep 17 00:00:00 2001 From: Victor Fernandez de Alba Date: Tue, 5 Nov 2024 10:58:53 +0100 Subject: [PATCH 14/47] Release @plone/registry 2.1.1 --- packages/registry/CHANGELOG.md | 6 ++++++ packages/registry/news/+repackage.internal | 1 - packages/registry/package.json | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) delete mode 100644 packages/registry/news/+repackage.internal diff --git a/packages/registry/CHANGELOG.md b/packages/registry/CHANGELOG.md index 6476128e9a..7ff8dc3134 100644 --- a/packages/registry/CHANGELOG.md +++ b/packages/registry/CHANGELOG.md @@ -8,6 +8,12 @@ +## 2.1.1 (2024-11-05) + +### Internal + +- Repackage registry, the previous build was including the docs. @sneridagh + ## 2.1.0 (2024-11-05) ### Feature diff --git a/packages/registry/news/+repackage.internal b/packages/registry/news/+repackage.internal deleted file mode 100644 index cabfa5d180..0000000000 --- a/packages/registry/news/+repackage.internal +++ /dev/null @@ -1 +0,0 @@ -Repackage registry, the previous build was including the docs. @sneridagh diff --git a/packages/registry/package.json b/packages/registry/package.json index 567f75af69..e1f3d00821 100644 --- a/packages/registry/package.json +++ b/packages/registry/package.json @@ -9,7 +9,7 @@ ], "funding": "https://github.com/sponsors/plone", "license": "MIT", - "version": "2.1.0", + "version": "2.1.1", "repository": { "type": "git", "url": "https://github.com/plone/volto.git" From ba55450f06938c3ddad762b9aeb17b3aaf64dcb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Fern=C3=A1ndez=20de=20Alba?= Date: Tue, 5 Nov 2024 13:50:36 +0100 Subject: [PATCH 15/47] Fix packaging and plone/components src export (#6470) --- packages/components/news/+packagingfix.internal | 1 + packages/components/package.json | 3 ++- packages/providers/news/+packagingfix.internal | 1 + packages/providers/package.json | 4 ++++ packages/registry/news/+packagingfix.internal | 1 + packages/registry/package.json | 2 +- packages/scripts/.npmignore | 2 ++ packages/scripts/news/+packagingfix.internal | 1 + packages/volto/news/6470.internal | 1 + 9 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 packages/components/news/+packagingfix.internal create mode 100644 packages/providers/news/+packagingfix.internal create mode 100644 packages/registry/news/+packagingfix.internal create mode 100644 packages/scripts/news/+packagingfix.internal create mode 100644 packages/volto/news/6470.internal diff --git a/packages/components/news/+packagingfix.internal b/packages/components/news/+packagingfix.internal new file mode 100644 index 0000000000..ce96b58681 --- /dev/null +++ b/packages/components/news/+packagingfix.internal @@ -0,0 +1 @@ +Improve packaging and bring back the export for `src` folder. @sneridagh diff --git a/packages/components/package.json b/packages/components/package.json index fdb81c1c26..30d0f355b9 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -29,7 +29,8 @@ "import": "./dist/index.js", "default": "./dist/index.cjs" }, - "./dist/*.css": "./dist/*.css" + "./dist/*.css": "./dist/*.css", + "./src/*": "./src/*" }, "homepage": "https://plone.org", "keywords": [ diff --git a/packages/providers/news/+packagingfix.internal b/packages/providers/news/+packagingfix.internal new file mode 100644 index 0000000000..a6235ea0a4 --- /dev/null +++ b/packages/providers/news/+packagingfix.internal @@ -0,0 +1 @@ +Improve packaging. @sneridagh diff --git a/packages/providers/package.json b/packages/providers/package.json index 845e39c0d5..e2b7ca1105 100644 --- a/packages/providers/package.json +++ b/packages/providers/package.json @@ -29,6 +29,10 @@ "access": "public" }, "type": "module", + "files": [ + "dist", + "README.md" + ], "main": "./dist/index.js", "exports": { "./package.json": "./package.json", diff --git a/packages/registry/news/+packagingfix.internal b/packages/registry/news/+packagingfix.internal new file mode 100644 index 0000000000..a6235ea0a4 --- /dev/null +++ b/packages/registry/news/+packagingfix.internal @@ -0,0 +1 @@ +Improve packaging. @sneridagh diff --git a/packages/registry/package.json b/packages/registry/package.json index e1f3d00821..2aaa6cc8d0 100644 --- a/packages/registry/package.json +++ b/packages/registry/package.json @@ -31,12 +31,12 @@ "publishConfig": { "access": "public" }, + "type": "module", "files": [ "dist", "README.md", "vite-plugin.*" ], - "type": "module", "main": "dist/index.js", "exports": { "./package.json": "./package.json", diff --git a/packages/scripts/.npmignore b/packages/scripts/.npmignore index f7657cc352..bd26255519 100644 --- a/packages/scripts/.npmignore +++ b/packages/scripts/.npmignore @@ -2,6 +2,8 @@ news towncrier.toml .changelog.draft node_modules/ +.release-it.json +.eslintrc.cjs # yarn 3 .pnp.* diff --git a/packages/scripts/news/+packagingfix.internal b/packages/scripts/news/+packagingfix.internal new file mode 100644 index 0000000000..a6235ea0a4 --- /dev/null +++ b/packages/scripts/news/+packagingfix.internal @@ -0,0 +1 @@ +Improve packaging. @sneridagh diff --git a/packages/volto/news/6470.internal b/packages/volto/news/6470.internal new file mode 100644 index 0000000000..a8e4095f3e --- /dev/null +++ b/packages/volto/news/6470.internal @@ -0,0 +1 @@ +Fix missing export src in @plone/components Also improve packaging in packages. @sneridagh From 743b1902dfd1f6cd6530b4f5dab6e308b619535b Mon Sep 17 00:00:00 2001 From: Victor Fernandez de Alba Date: Tue, 5 Nov 2024 13:52:08 +0100 Subject: [PATCH 16/47] Release @plone/components 2.1.1 --- packages/components/CHANGELOG.md | 6 ++++++ packages/components/news/+packagingfix.internal | 1 - packages/components/package.json | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) delete mode 100644 packages/components/news/+packagingfix.internal diff --git a/packages/components/CHANGELOG.md b/packages/components/CHANGELOG.md index 83d893def4..7e797d13b9 100644 --- a/packages/components/CHANGELOG.md +++ b/packages/components/CHANGELOG.md @@ -8,6 +8,12 @@ +## 2.1.1 (2024-11-05) + +### Internal + +- Improve packaging and bring back the export for `src` folder. @sneridagh + ## 2.1.0 (2024-11-05) ### Internal diff --git a/packages/components/news/+packagingfix.internal b/packages/components/news/+packagingfix.internal deleted file mode 100644 index ce96b58681..0000000000 --- a/packages/components/news/+packagingfix.internal +++ /dev/null @@ -1 +0,0 @@ -Improve packaging and bring back the export for `src` folder. @sneridagh diff --git a/packages/components/package.json b/packages/components/package.json index 30d0f355b9..11df63e9d3 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -8,7 +8,7 @@ } ], "license": "MIT", - "version": "2.1.0", + "version": "2.1.1", "repository": { "type": "git", "url": "http://github.com/plone/components.git" From 98ab5e852cc783c4be3783aa2943ef94cad7cea3 Mon Sep 17 00:00:00 2001 From: Victor Fernandez de Alba Date: Tue, 5 Nov 2024 13:52:42 +0100 Subject: [PATCH 17/47] Release @plone/scripts 3.8.1 --- packages/scripts/CHANGELOG.md | 6 ++++++ packages/scripts/news/+packagingfix.internal | 1 - packages/scripts/package.json | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) delete mode 100644 packages/scripts/news/+packagingfix.internal diff --git a/packages/scripts/CHANGELOG.md b/packages/scripts/CHANGELOG.md index a1d800312d..87d5fcec90 100644 --- a/packages/scripts/CHANGELOG.md +++ b/packages/scripts/CHANGELOG.md @@ -8,6 +8,12 @@ +## 3.8.1 (2024-11-05) + +### Internal + +- Improve packaging. @sneridagh + ## 3.8.0 (2024-11-05) ### Internal diff --git a/packages/scripts/news/+packagingfix.internal b/packages/scripts/news/+packagingfix.internal deleted file mode 100644 index a6235ea0a4..0000000000 --- a/packages/scripts/news/+packagingfix.internal +++ /dev/null @@ -1 +0,0 @@ -Improve packaging. @sneridagh diff --git a/packages/scripts/package.json b/packages/scripts/package.json index 4242deb4aa..843127008c 100644 --- a/packages/scripts/package.json +++ b/packages/scripts/package.json @@ -9,7 +9,7 @@ } ], "license": "MIT", - "version": "3.8.0", + "version": "3.8.1", "repository": { "type": "git", "url": "git@github.com:plone/volto.git" From f7514b89d4681540199c16a588c858113404c9f4 Mon Sep 17 00:00:00 2001 From: Victor Fernandez de Alba Date: Tue, 5 Nov 2024 13:53:19 +0100 Subject: [PATCH 18/47] Release @plone/providers 1.0.0-alpha.5 --- packages/providers/CHANGELOG.md | 6 ++++++ packages/providers/news/+packagingfix.internal | 1 - packages/providers/package.json | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) delete mode 100644 packages/providers/news/+packagingfix.internal diff --git a/packages/providers/CHANGELOG.md b/packages/providers/CHANGELOG.md index 437b1e65b6..9ee556346e 100644 --- a/packages/providers/CHANGELOG.md +++ b/packages/providers/CHANGELOG.md @@ -8,6 +8,12 @@ +## 1.0.0-alpha.5 (2024-11-05) + +### Internal + +- Improve packaging. @sneridagh + ## 1.0.0-alpha.4 (2024-11-05) ### Internal diff --git a/packages/providers/news/+packagingfix.internal b/packages/providers/news/+packagingfix.internal deleted file mode 100644 index a6235ea0a4..0000000000 --- a/packages/providers/news/+packagingfix.internal +++ /dev/null @@ -1 +0,0 @@ -Improve packaging. @sneridagh diff --git a/packages/providers/package.json b/packages/providers/package.json index e2b7ca1105..9840705f8f 100644 --- a/packages/providers/package.json +++ b/packages/providers/package.json @@ -9,7 +9,7 @@ ], "funding": "https://github.com/sponsors/plone", "license": "MIT", - "version": "1.0.0-alpha.4", + "version": "1.0.0-alpha.5", "repository": { "type": "git", "url": "https://github.com/plone/volto.git" From 38aab6d1653ae01df008fb4c580b64e5c860b920 Mon Sep 17 00:00:00 2001 From: Victor Fernandez de Alba Date: Tue, 5 Nov 2024 13:55:07 +0100 Subject: [PATCH 19/47] Release 18.0.2 --- docs/source/release-notes/index.md | 6 ++++++ packages/volto/CHANGELOG.md | 6 ++++++ packages/volto/news/6470.internal | 1 - packages/volto/package.json | 2 +- 4 files changed, 13 insertions(+), 2 deletions(-) delete mode 100644 packages/volto/news/6470.internal diff --git a/docs/source/release-notes/index.md b/docs/source/release-notes/index.md index 0f12ffbb6e..6b754c0fe0 100644 --- a/docs/source/release-notes/index.md +++ b/docs/source/release-notes/index.md @@ -17,6 +17,12 @@ myst: +## 18.0.2 (2024-11-05) + +### Internal + +- Fix missing export src in @plone/components Also improve packaging in packages. @sneridagh [#6470](https://github.com/plone/volto/issues/6470) + ## 18.0.1 (2024-11-05) ### Bugfix diff --git a/packages/volto/CHANGELOG.md b/packages/volto/CHANGELOG.md index 0f12ffbb6e..6b754c0fe0 100644 --- a/packages/volto/CHANGELOG.md +++ b/packages/volto/CHANGELOG.md @@ -17,6 +17,12 @@ myst: +## 18.0.2 (2024-11-05) + +### Internal + +- Fix missing export src in @plone/components Also improve packaging in packages. @sneridagh [#6470](https://github.com/plone/volto/issues/6470) + ## 18.0.1 (2024-11-05) ### Bugfix diff --git a/packages/volto/news/6470.internal b/packages/volto/news/6470.internal deleted file mode 100644 index a8e4095f3e..0000000000 --- a/packages/volto/news/6470.internal +++ /dev/null @@ -1 +0,0 @@ -Fix missing export src in @plone/components Also improve packaging in packages. @sneridagh diff --git a/packages/volto/package.json b/packages/volto/package.json index 8692e39148..42953abf90 100644 --- a/packages/volto/package.json +++ b/packages/volto/package.json @@ -9,7 +9,7 @@ } ], "license": "MIT", - "version": "18.0.1", + "version": "18.0.2", "repository": { "type": "git", "url": "git@github.com:plone/volto.git" From 81f9a2ab530adfb5c6f444202213281704a27a21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Fern=C3=A1ndez=20de=20Alba?= Date: Tue, 5 Nov 2024 16:39:46 +0100 Subject: [PATCH 20/47] Fix weird issue in images build with typings (#6471) --- .eslintrc.cjs | 1 + packages/registry/.eslintrc.cjs | 1 + packages/registry/news/6471.bugfix | 1 + .../src/addon-registry/create-addons-loader.ts | 3 +-- .../src/addon-registry/create-theme-loader.ts | 14 ++++++-------- 5 files changed, 10 insertions(+), 10 deletions(-) create mode 100644 packages/registry/news/6471.bugfix diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 0e5d22de5d..215aafba63 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -56,6 +56,7 @@ const config = { ], rules: { '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/ban-ts-comment': 0, }, }, { diff --git a/packages/registry/.eslintrc.cjs b/packages/registry/.eslintrc.cjs index 8614b4cd25..f7665b4d37 100644 --- a/packages/registry/.eslintrc.cjs +++ b/packages/registry/.eslintrc.cjs @@ -74,6 +74,7 @@ module.exports = { }, rules: { 'no-prototype-builtins': 0, + '@typescript-eslint/ban-ts-comment': 0, }, }, ], diff --git a/packages/registry/news/6471.bugfix b/packages/registry/news/6471.bugfix new file mode 100644 index 0000000000..4a7740049b --- /dev/null +++ b/packages/registry/news/6471.bugfix @@ -0,0 +1 @@ +Fix weird typings issue happening in docker build but not locally. @sneridagh diff --git a/packages/registry/src/addon-registry/create-addons-loader.ts b/packages/registry/src/addon-registry/create-addons-loader.ts index 3678242f75..cd5b4f6989 100644 --- a/packages/registry/src/addon-registry/create-addons-loader.ts +++ b/packages/registry/src/addon-registry/create-addons-loader.ts @@ -125,8 +125,7 @@ export function createAddonsLoader( } const code = getAddonsLoaderCode(addons, addonsInfo, loadProjectConfig); - // @ts-expect-error No clue why it's complaining - fs.writeFileSync(addonsLoaderPath, Buffer.from(code)); + fs.writeFileSync(addonsLoaderPath, code); return addonsLoaderPath; } diff --git a/packages/registry/src/addon-registry/create-theme-loader.ts b/packages/registry/src/addon-registry/create-theme-loader.ts index 89a2911025..cd5cde78d4 100644 --- a/packages/registry/src/addon-registry/create-theme-loader.ts +++ b/packages/registry/src/addon-registry/create-theme-loader.ts @@ -22,7 +22,10 @@ function nameFromPackage(name: string) { * Creates a static file with code necessary to load the addons configuration * */ -function getThemeLoaderCode(name: string, customThemeAddons = []) { +function getThemeLoaderCode( + name: string, + customThemeAddons: Array = [], +) { let buf = `/* This file is autogenerated. Don't change it directly. Add a ./theme/_${name}.scss in your add-on to load your theme customizations in the current theme. @@ -49,14 +52,9 @@ export function createThemeAddonsLoader({ const addonsThemeLoaderMainPath = tmp.tmpNameSync({ postfix: '.scss' }); fs.writeFileSync( addonsThemeLoaderVariablesPath, - //@ts-expect-error No clue why this is erroring - new Buffer.from(getThemeLoaderCode('variables', variables)), - ); - fs.writeFileSync( - addonsThemeLoaderMainPath, - //@ts-expect-error No clue why this is erroring - new Buffer.from(getThemeLoaderCode('main', main)), + getThemeLoaderCode('variables', variables), ); + fs.writeFileSync(addonsThemeLoaderMainPath, getThemeLoaderCode('main', main)); return [addonsThemeLoaderVariablesPath, addonsThemeLoaderMainPath]; } From 427c60209319f13cad1db409a54a1286f1d4cbb6 Mon Sep 17 00:00:00 2001 From: Victor Fernandez de Alba Date: Tue, 5 Nov 2024 16:40:46 +0100 Subject: [PATCH 21/47] Preparing for 18.0.3 --- packages/volto/news/6471.bugfix | 1 + 1 file changed, 1 insertion(+) create mode 100644 packages/volto/news/6471.bugfix diff --git a/packages/volto/news/6471.bugfix b/packages/volto/news/6471.bugfix new file mode 100644 index 0000000000..3168518ee3 --- /dev/null +++ b/packages/volto/news/6471.bugfix @@ -0,0 +1 @@ +Fixed image generation because of a bug in the docker build with registry typings. @sneridagh From 3ce85c63161204d41eca11c585ba40334b581793 Mon Sep 17 00:00:00 2001 From: Victor Fernandez de Alba Date: Tue, 5 Nov 2024 16:41:28 +0100 Subject: [PATCH 22/47] Release @plone/registry 2.1.2 --- packages/registry/CHANGELOG.md | 10 ++++++++++ packages/registry/news/+packagingfix.internal | 1 - packages/registry/news/6471.bugfix | 1 - packages/registry/package.json | 2 +- 4 files changed, 11 insertions(+), 3 deletions(-) delete mode 100644 packages/registry/news/+packagingfix.internal delete mode 100644 packages/registry/news/6471.bugfix diff --git a/packages/registry/CHANGELOG.md b/packages/registry/CHANGELOG.md index 7ff8dc3134..da8626074f 100644 --- a/packages/registry/CHANGELOG.md +++ b/packages/registry/CHANGELOG.md @@ -8,6 +8,16 @@ +## 2.1.2 (2024-11-05) + +### Bugfix + +- Fix weird typings issue happening in docker build but not locally. @sneridagh [#6471](https://github.com/plone/volto/issues/6471) + +### Internal + +- Improve packaging. @sneridagh + ## 2.1.1 (2024-11-05) ### Internal diff --git a/packages/registry/news/+packagingfix.internal b/packages/registry/news/+packagingfix.internal deleted file mode 100644 index a6235ea0a4..0000000000 --- a/packages/registry/news/+packagingfix.internal +++ /dev/null @@ -1 +0,0 @@ -Improve packaging. @sneridagh diff --git a/packages/registry/news/6471.bugfix b/packages/registry/news/6471.bugfix deleted file mode 100644 index 4a7740049b..0000000000 --- a/packages/registry/news/6471.bugfix +++ /dev/null @@ -1 +0,0 @@ -Fix weird typings issue happening in docker build but not locally. @sneridagh diff --git a/packages/registry/package.json b/packages/registry/package.json index 2aaa6cc8d0..ee487c8bf8 100644 --- a/packages/registry/package.json +++ b/packages/registry/package.json @@ -9,7 +9,7 @@ ], "funding": "https://github.com/sponsors/plone", "license": "MIT", - "version": "2.1.1", + "version": "2.1.2", "repository": { "type": "git", "url": "https://github.com/plone/volto.git" From 0a7bd484b88dff8061b27bca4e31450a2b914fd4 Mon Sep 17 00:00:00 2001 From: Victor Fernandez de Alba Date: Tue, 5 Nov 2024 16:42:52 +0100 Subject: [PATCH 23/47] Release 18.0.3 --- docs/source/release-notes/index.md | 6 ++++++ packages/volto/CHANGELOG.md | 6 ++++++ packages/volto/news/6471.bugfix | 1 - packages/volto/package.json | 2 +- 4 files changed, 13 insertions(+), 2 deletions(-) delete mode 100644 packages/volto/news/6471.bugfix diff --git a/docs/source/release-notes/index.md b/docs/source/release-notes/index.md index 6b754c0fe0..81082946b3 100644 --- a/docs/source/release-notes/index.md +++ b/docs/source/release-notes/index.md @@ -17,6 +17,12 @@ myst: +## 18.0.3 (2024-11-05) + +### Bugfix + +- Fixed image generation because of a bug in the docker build with registry typings. @sneridagh [#6471](https://github.com/plone/volto/issues/6471) + ## 18.0.2 (2024-11-05) ### Internal diff --git a/packages/volto/CHANGELOG.md b/packages/volto/CHANGELOG.md index 6b754c0fe0..81082946b3 100644 --- a/packages/volto/CHANGELOG.md +++ b/packages/volto/CHANGELOG.md @@ -17,6 +17,12 @@ myst: +## 18.0.3 (2024-11-05) + +### Bugfix + +- Fixed image generation because of a bug in the docker build with registry typings. @sneridagh [#6471](https://github.com/plone/volto/issues/6471) + ## 18.0.2 (2024-11-05) ### Internal diff --git a/packages/volto/news/6471.bugfix b/packages/volto/news/6471.bugfix deleted file mode 100644 index 3168518ee3..0000000000 --- a/packages/volto/news/6471.bugfix +++ /dev/null @@ -1 +0,0 @@ -Fixed image generation because of a bug in the docker build with registry typings. @sneridagh diff --git a/packages/volto/package.json b/packages/volto/package.json index 42953abf90..f09d892ea6 100644 --- a/packages/volto/package.json +++ b/packages/volto/package.json @@ -9,7 +9,7 @@ } ], "license": "MIT", - "version": "18.0.2", + "version": "18.0.3", "repository": { "type": "git", "url": "git@github.com:plone/volto.git" From d6f2b46678d025ee2670852fbd234ced54e864cb Mon Sep 17 00:00:00 2001 From: David Glick Date: Tue, 5 Nov 2024 12:18:42 -0800 Subject: [PATCH 24/47] URL Management control panel: show errors from CSV upload (#6473) --- packages/volto/news/6473.bugfix | 1 + .../components/manage/Controlpanels/Aliases.jsx | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 packages/volto/news/6473.bugfix diff --git a/packages/volto/news/6473.bugfix b/packages/volto/news/6473.bugfix new file mode 100644 index 0000000000..f69b52f0e1 --- /dev/null +++ b/packages/volto/news/6473.bugfix @@ -0,0 +1 @@ +URL Management control panel: Show errors from a failed CSV upload. @davisagli diff --git a/packages/volto/src/components/manage/Controlpanels/Aliases.jsx b/packages/volto/src/components/manage/Controlpanels/Aliases.jsx index d607e4949b..7b8375da93 100644 --- a/packages/volto/src/components/manage/Controlpanels/Aliases.jsx +++ b/packages/volto/src/components/manage/Controlpanels/Aliases.jsx @@ -156,6 +156,7 @@ const Aliases = (props) => { const [editingData, setEditingData] = useState(null); const [uploadModalOpen, setUploadModalOpen] = useState(false); const [uploadError, setUploadError] = useState(null); + const [csvErrors, setCSVErrors] = useState([]); const isClient = useClient(); const updateResults = useCallback(() => { @@ -273,6 +274,7 @@ const Aliases = (props) => { .then(() => { updateResults(); setUploadError(null); + setCSVErrors([]); setUploadModalOpen(false); toast.success( { }) .catch((error) => { setUploadError(error.response?.body?.message); + setCSVErrors(error.response?.body?.csv_errors ?? []); }); }); }; @@ -388,6 +391,20 @@ const Aliases = (props) => { /people/JoeT,/Users/joe-thurston,2018-12-31,false

+ {csvErrors.length ? ( +
+
+                                Errors:{'\n'}
+                                {csvErrors.map(
+                                  (err) =>
+                                    `${err.line_number}: ${err.line} - ${err.message}\n`,
+                                )}
+                              
+
+ ) : null} } schema={{ From 5d08348bf443a67241a995e6c917eadf6d81b1fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Fern=C3=A1ndez=20de=20Alba?= Date: Wed, 6 Nov 2024 00:08:24 +0100 Subject: [PATCH 25/47] First batch of the overhaul of the add-ons section (#6397) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Steve Piercy Co-authored-by: Katja Süss --- docs/source/_static/plone-home-page.png | Bin 0 -> 123366 bytes docs/source/addons/best-practices.md | 90 --- docs/source/addons/index.md | 544 ------------------ docs/source/addons/theme.md | 230 -------- docs/source/conceptual-guides/add-ons.md | 234 ++++++++ docs/source/conceptual-guides/index.md | 19 + docs/source/configuration/how-to.md | 3 +- docs/source/contributing/developing-core.md | 2 +- docs/source/contributing/language-features.md | 87 ++- .../development/add-ons/best-practices.md | 82 +++ .../add-ons/create-an-add-on-17.md | 20 + .../add-ons/create-an-add-on-18.md | 200 +++++++ .../add-ons/extend-eslint-add-on.md | 43 ++ .../add-ons/extend-webpack-add-on.md | 55 ++ .../{addons => development/add-ons}/i18n.md | 16 +- docs/source/development/add-ons/index.md | 30 + .../add-ons/install-an-add-on-dev-17.md | 124 ++++ .../add-ons/install-an-add-on-dev-18.md | 143 +++++ .../development/add-ons/install-an-add-on.md | 69 +++ .../add-ons/load-add-on-configuration.md | 65 +++ .../add-ons}/public-folder.md | 9 +- .../development/add-ons/test-add-ons-17.md | 104 ++++ .../development/add-ons/test-add-ons-18.md | 63 ++ docs/source/development/add-ons/theme.md | 248 ++++++++ .../add-ons/troubleshoot-transpilation.md | 78 +++ docs/source/development/i18n.md | 2 +- docs/source/development/index.md | 1 + docs/source/index.md | 1 + docs/source/theming/index.md | 16 + packages/volto/news/6397.documentation | 1 + 30 files changed, 1652 insertions(+), 927 deletions(-) create mode 100644 docs/source/_static/plone-home-page.png delete mode 100644 docs/source/addons/best-practices.md delete mode 100644 docs/source/addons/index.md delete mode 100644 docs/source/addons/theme.md create mode 100644 docs/source/conceptual-guides/add-ons.md create mode 100644 docs/source/conceptual-guides/index.md create mode 100644 docs/source/development/add-ons/best-practices.md create mode 100644 docs/source/development/add-ons/create-an-add-on-17.md create mode 100644 docs/source/development/add-ons/create-an-add-on-18.md create mode 100644 docs/source/development/add-ons/extend-eslint-add-on.md create mode 100644 docs/source/development/add-ons/extend-webpack-add-on.md rename docs/source/{addons => development/add-ons}/i18n.md (61%) create mode 100644 docs/source/development/add-ons/index.md create mode 100644 docs/source/development/add-ons/install-an-add-on-dev-17.md create mode 100644 docs/source/development/add-ons/install-an-add-on-dev-18.md create mode 100644 docs/source/development/add-ons/install-an-add-on.md create mode 100644 docs/source/development/add-ons/load-add-on-configuration.md rename docs/source/{addons => development/add-ons}/public-folder.md (70%) create mode 100644 docs/source/development/add-ons/test-add-ons-17.md create mode 100644 docs/source/development/add-ons/test-add-ons-18.md create mode 100644 docs/source/development/add-ons/theme.md create mode 100644 docs/source/development/add-ons/troubleshoot-transpilation.md create mode 100644 packages/volto/news/6397.documentation diff --git a/docs/source/_static/plone-home-page.png b/docs/source/_static/plone-home-page.png new file mode 100644 index 0000000000000000000000000000000000000000..b2321e0eaf76b0bfe72d03a81725099c8e195af6 GIT binary patch literal 123366 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

tLmaIhuyA{(H0;1>y&`$I2y<$!3n)rw56 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] [options] -``` - -Volto will automatically provide aliases for your (unreleased) package, so that -once you've released it, you don't need to change import paths, since you can -use the final ones from the very beginning. This means that you can use imports -such as `import { Something } from '@plone/my-volto-add-on'` without any extra -configuration. - -### Use mrs-developer to manage the development cycle - -#### Add mrs-developer dependency and related script - -[Eric Brehault](https://github.com/ebrehault) ported this amazing Python tool, -which provides a way to pull a package from git and set it up as a dependency -for the current project codebase. - -To facilitate add-on development lifecycle we recommend using -[mrs-developer](https://www.npmjs.com/package/mrs-developer). - -By doing this, you can develop both the project and the add-on product as if -they were both part of the current codebase. Once the add-on development is -done, you can publish the package to an npm repository. - -```shell -yarn add mrs-developer -``` - -Then, in `package.json`: - -```{code-block} json -:emphasize-lines: 2 -"scripts": { - "develop": "missdev --config=jsconfig.json --output=addons", -} -``` - -We can configure `mrs-developer` to use any directory that you want. Here we -are telling it to create the directory `src/addons` and put the packages -managed by `mrs-developer` inside. - -#### mrs.developer.json - -This is the configuration file that instructs `mrs-developer` from where it has -to pull the packages. So, create `mrs.developer.json` and add: - -```json -{ - "acme-volto-foo-add-on": { - "package": "@acme/volto-foo-add-on", - "url": "git@github.com:acme/my-volto-add-on.git", - "path": "src" - } -} -``` - -Then run: - -```shell -make develop -``` - -Now the add-on is found in `src/addons/`. - -```{note} -`package` property is optional, set it up only if your package has a scope. -`src` is required if the content of your add-on is located in the `src` -directory (but, as that is the convention recommended for all Volto add-on -packages, you will always include it) -``` - -If you want to know more about `mrs-developer` config options, please refer to -[its npm page](https://www.npmjs.com/package/mrs-developer). - -#### tsconfig.json / jsconfig.json - -`mrs-developer` automatically creates this file for you, but if you choose not -to use mrs-developer, you'll have to add something like this to your -`tsconfig.json` or `jsconfig.json` file in the Volto project root: - -```json -{ - "compilerOptions": { - "paths": { - "acme-volto-foo-add-on": [ - "addons/acme-volto-foo-add-on/src" - ] - }, - "baseUrl": "src" - } -} -``` - -```{warning} -Please note that both `paths` and `baseUrl` are required to match your -project layout. -``` - -```{tip} -You should use the `src` path inside your package and point the `main` key -in `package.json` to the `index.js` file in `src/index.js`. -``` - -### Customizations - -add-on packages can include customization folders, just like the Volto projects. -The customizations are resolved in the order: add-ons (as sorted in the `addons` -key of your project's `package.json`) then the customizations in the Volto -project, last one wins. - -```{tip} -See the {ref}`advanced-customization-scenarios-label` -section on how to enhance this pattern and how to include customizations -inside add-ons. -``` - -### Providing add-on configuration - -The default export of your add-on main `index.js` file should be a function with -the signature ``config => config``. -That is, it should take the ``global`` configuration object and return it, -possibly mutated or changed. So your main `index.js` will look like: - -```js -export default function applyConfig(config) { - config.blocks.blocksConfig.faq_viewer = { - id: 'faq_viewer', - title: 'FAQ Viewer', - edit: FAQBlockEdit, - view: FAQBlockView, - icon: chartIcon, - group: 'common', - restricted: false, - mostUsed: true, - sidebarTab: 1, - }; - return config; -} -``` - -And the `package.json` file of your add-on: - -```json -{ - "main": "src/index.js", -} -``` - -```{warning} -An add-on's default configuration method will always be loaded. -``` - -#### Multiple add-on configurations - -You can export additional configuration functions from your add-on's main -`index.js`. - -```js -import applyConfig, {loadOptionalBlocks,overrideSomeDefaultBlock} from './config'; - -export { loadOptionalBlocks, overrideSomeDefaultBlock }; -export default applyConfig; -``` - -## Add third-party dependencies to your add-on - -If you're developing the add-on and you wish to add an external dependency, you'll have to switch your project to be a [Yarn Workspaces root](https://yarnpkg.com/features/workspaces). - -So you'll need to add, in your Volto project's `package.json`: - -```json -"private": true, -"workspaces": [], -``` - -Then populate the `workspaces` key with the path to your development add-ons: - -```json -"workspaces": [ - "src/addons/my-volto-add-on" -] -``` -You'll have to manage the add-on dependencies via the workspace root (your Volto -project). For example, to add a new dependency: - -```shell -yarn workspace @plone/my-volto-add-on add some-third-party-package -``` - -You can run `yarn workspaces info` to see a list of workspaces defined. - -In case you want to add new dependencies to the Volto project, now you'll have -to run the `yarn add` command with the `-W` switch: - -```shell -yarn add -W some-dependency -``` - -## Extending Razzle from an add-on - -Just like you can extend Razzle's configuration from the project, you can do so -with an add-on, as well. You should provide a `razzle.extend.js` file in your -add-on root folder. An example of such file where the theme.config alias is -changed, to enable a custom Semantic theme inside the add-on: - - -```js -const plugins = (defaultPlugins) => { - return defaultPlugins; -}; -const modify = (config, { target, dev }, webpack) => { - const themeConfigPath = `${__dirname}/theme/theme.config`; - config.resolve.alias['../../theme.config$'] = themeConfigPath; - - return config; -}; - -module.exports = { - plugins, - modify, -}; -``` - -## Extending Eslint configuration from an add-on - -Starting with Volto v16.4.0, you can also customize the Eslint configuration -from an add-on. You should provide a `eslint.extend.js` file in your -add-on root folder, which exports a `modify(defaultConfig)` function. For -example, to host some code outside the regular `src/` folder of your add-on, -this `eslint.extend.js` file is needed: - -```js -const path = require('path'); - -module.exports = { - modify(defaultConfig) { - const aliasMap = defaultConfig.settings['import/resolver'].alias.map; - const addonPath = aliasMap.find( - ([name]) => name === '@plone-collective/some-volto-add-on', - )[1]; - - const extraPath = path.resolve(`${addonPath}/../extra`); - aliasMap.push(['@plone-collective/extra', extraPath]); - - return defaultConfig; - }, -}; -``` - -This would allow the `@plone-collective/some-volto-add-on` to host some code -outside of its normal `src/` folder, let's say in the `extra` folder, and that -code would be available under the `@plone-collective/extra` name. Note: this is -taking care only of the Eslint integration. For proper language support, you'll -still need to do it in the `razzle.extend.js` of your add-on. - -## add-on dependencies - -Sometimes your add-on depends on another add-on. You can declare add-on dependency -in your add-on's `addons` key, just like you do in your project. By doing so, -that other add-on's configuration loader is executed first, so you can depend on -the configuration being already applied. Another benefit is that you'll have -to declare only the "top level" add-on in your project, the dependencies will be -discovered and automatically treated as Volto add-ons. For example, `volto-slate` -depends on `volto-object-widget`'s configuration being already applied, so -`volto-slate` can declare in its `package.json`: - -```json -{ - "name": "volto-slate", - - "addons": ["@eeacms/volto-object-widget"] -} -``` - -And of course, the dependency add-on can depend, on its turn, on other add-ons -which will be loaded as well. Circular dependencies should be avoided. - -## Problems with untranspiled add-on dependencies - -When using external add-ons in your project, sometimes you will run into add-ons -that are not securely transpiled or haven't been transpiled at all. In that case -you might see an error like the following: - -```console -Module parse failed: Unexpected token (10:41) in @react-leaflet/core/esm/path.js -... -const options = props.pathOptions ?? {}; -... -``` - -Babel automatically transpiles the code in your add-on, but `node_modules` are -excluded from this process, so we need to include the add-on path in the list of -modules to be transpiled. This can be accomplished by customizing the webpack -configuration in the `razzle.config.js` file in your add-on. For example, -suppose that we want to use react-leaflet, which has a known transpilation -issue: - -```js -const path = require('path'); -const makeLoaderFinder = require('razzle-dev-utils/makeLoaderFinder'); - -const babelLoaderFinder = makeLoaderFinder('babel-loader'); - -const jsConfig = require('./jsconfig').compilerOptions; - -const pathsConfig = jsConfig.paths; -let voltoPath = './node_modules/@plone/volto'; -Object.keys(pathsConfig).forEach((pkg) => { - if (pkg === '@plone/volto') { - voltoPath = `./${jsConfig.baseUrl}/${pathsConfig[pkg][0]}`; - } -}); - -const { modifyWebpackConfig, plugins } = require(`${voltoPath}/razzle.config`); - -const customModifyWebpackConfig = ({ env, webpackConfig, webpackObject, options }) => { - const config = modifyWebpackConfig({ - env, - webpackConfig, - webpackObject, - options, - }); - const babelLoader = config.module.rules.find(babelLoaderFinder); - const { include } = babelLoader; - const corePath = path.join( - path.dirname(require.resolve('@react-leaflet/core')), - '..', - ); - const esmPath = path.join( - path.dirname(require.resolve('react-leaflet')), - '..', - ); - - include.push(corePath); - include.push(esmPath); - return config; -}; - -module.exports = { modifyWebpackConfig: customModifyWebpackConfig, plugins }; -``` - -First we need some setup to get the webpack configuration from Volto's configuration. -Once we have that, we need to resolve the path to the desired add-ons and push it -into the Babel loader include list. After this, the add-ons will load correctly. - -## Testing add-ons - -We should let jest know about our aliases and make them available to it to -resolve them, so in `package.json`: - -```{code-block} json -:emphasize-lines: 6 - -"jest": { - "moduleNameMapper": { - "@plone/volto/(.*)$": "/node_modules/@plone/volto/src/$1", - "@package/(.*)$": "/src/$1", - "@plone/some-volto-add-on/(.*)$": "/src/addons/@plone/some-volto-add-on/src/$1", - "my-volto-add-on/(.*)$": "/src/addons/my-volto-add-on/src/$1", - "~/(.*)$": "/src/$1" - }, -``` - -```{tip} -We're in the process of moving the default scaffolding generators to -provide a `jest.config.js` file in Volto, making this step unneeded. -``` - -You can use `yarn test src/addons/add-on-name` to run tests. - -## Code linting - -If you have generated your Volto project recently (after the summer of 2020), -you don't have to do anything to have automatic integration with ESLint, -otherwise make sure to upgrade your project's `.eslintrc` to the `.eslintrc.js` -version, according to the {doc}`../upgrade-guide/index`. diff --git a/docs/source/addons/theme.md b/docs/source/addons/theme.md deleted file mode 100644 index 99251fd370..0000000000 --- a/docs/source/addons/theme.md +++ /dev/null @@ -1,230 +0,0 @@ ---- -myst: - html_meta: - "description": "Create a theme add-on" - "property=og:description": "Create a theme add-on" - "property=og:title": "Create a theme add-on" - "keywords": "Volto, Plone, Semantic UI, CSS, Volto theme" ---- - -# Create a Volto theme add-on - -We can create a Volto Add-on that acts as a Volto theme Add-on, so we can detach it from the project files. -The advantage is that you convert the project Volto theme in a pluggable one, so you can deploy the same theme in different projects. -You can even have themes depending on conditions that you could inject on build time. -This is the purpose of `volto.config.js`, the ability of declaring `add-ons` and the active `theme` programmatically. See {ref}`volto-config-js` for more information. -For convenience, it can also be set via a `THEME` environment variable. - -1. Add a `theme` key in your `volto.config.js` file in the root of your project: - -```js -module.exports = { - addons: [], - theme: 'volto-my-theme' -}; -``` - -or add a key in your `package.json` project: - -```json -"theme": "volto-my-theme" -``` - -or via a `THEME` variable: - -```shell -THEME='volto-my-theme' pnpm start -``` - -2. Create a directory `src/theme` in your add-on, then add this file `theme.config`, replacing `` with your add-on name: - -```less -/******************************* - Theme Selection -*******************************/ - -/* To override a theme for an individual element specify theme name below */ - -/* Global */ -@site : 'pastanaga'; -@reset : 'pastanaga'; - -/* Elements */ -@button : 'pastanaga'; -@container : 'pastanaga'; -@divider : 'pastanaga'; -@flag : 'pastanaga'; -@header : 'pastanaga'; -@icon : 'pastanaga'; -@image : 'pastanaga'; -@input : 'pastanaga'; -@label : 'pastanaga'; -@list : 'pastanaga'; -@loader : 'pastanaga'; -@placeholder : 'pastanaga'; -@rail : 'pastanaga'; -@reveal : 'pastanaga'; -@segment : 'pastanaga'; -@step : 'pastanaga'; - -/* Collections */ -@breadcrumb : 'pastanaga'; -@form : 'pastanaga'; -@grid : 'pastanaga'; -@menu : 'pastanaga'; -@message : 'pastanaga'; -@table : 'pastanaga'; - -/* Modules */ -@accordion : 'pastanaga'; -@checkbox : 'pastanaga'; -@dimmer : 'pastanaga'; -@dropdown : 'pastanaga'; -@embed : 'pastanaga'; -@modal : 'pastanaga'; -@nag : 'pastanaga'; -@popup : 'pastanaga'; -@progress : 'pastanaga'; -@rating : 'pastanaga'; -@search : 'pastanaga'; -@shape : 'pastanaga'; -@sidebar : 'pastanaga'; -@sticky : 'pastanaga'; -@tab : 'pastanaga'; -@transition : 'pastanaga'; - -/* Views */ -@ad : 'pastanaga'; -@card : 'pastanaga'; -@comment : 'pastanaga'; -@feed : 'pastanaga'; -@item : 'pastanaga'; -@statistic : 'pastanaga'; - -/* Extras */ -@main : 'pastanaga'; -@custom : 'pastanaga'; - -/******************************* - Folders -*******************************/ - -/* Path to theme packages */ -@themesFolder : '~volto-themes'; - -/* Path to site override folder */ -@siteFolder : "/theme"; - -/******************************* - Import Theme -*******************************/ - -@import (multiple) "~semantic-ui-less/theme.less"; -@fontPath : "~volto-themes/@{theme}/assets/fonts"; - -.loadAddonOverrides() { - @import (optional) "@{siteFolder}/@{addon}/@{addontype}s/@{addonelement}.overrides"; -} - -/* End Config */ -``` - -3. Declare the theme as an add-on by adding its name to the value for the `addons` key in either `volto.config.js` or `package.json` of your project. -4. After starting Volto, the theme should be active. - Now you can add overrides to the default theme in `src/theme`, same as you would in a project. -5. Now you can safely delete your project's `theme` folder, since the one in the add-on will take precedence and a project can only have one active theme at a time. - -## Using your own theming escape hatch - -Volto theming uses Semantic UI theming capabilities to define and extend a theme for your site. -However, while maintaining and playing well with the Semantic UI Volto base, using a traditional CSS approach can be done using the LESS preprocessor-based `extras` escape hatch. - -At the same time, one can either discard or complement the extras escape hatch and add your own, by customizing the `theme.js` module in Volto. - -```js -import 'semantic-ui-less/semantic.less'; -import '@plone/volto/../theme/themes/pastanaga/extras/extras.less'; - -// You can add more entry points for theming -import '@kitconcept/volto-light-theme/theme/main.scss'; -``` - -Customizing it is a special use case in Volto: add a `./@root/theme.js` file structure in your `customizations` folder in your add-on or project. - -You may want to do this to create a complete new theming experience adapted to your way of doing things that do not match the current Volto theming experience. -For example, if you want to use another preprocessor in the theme, like SCSS. -Maybe because your client forces you to have another entirely base of pre-made components based on another library other than Semantic UI: -See {ref}`volto-custom-theming-strategy` for an example of a custom theme escape hatch. - -While building your own escape hatch for theming, you can use the preprocessor of your choice (in the example, SCSS) while maintaining the "base" Volto theme, but customizing it using the resultant CSS. - -You can see an example of such a theme in: https://github.com/kitconcept/volto-light-theme - -## Modify a custom theme from another add-on - -Sometimes you have a custom theme that you want to reuse through all your projects, but with some differences, maintaining the base. -Usually, the only option would be to use an add-on that adds more CSS to the base theme, using imports that will load after the theme. -However, there is a problem with this approach. -You cannot use existing theme variables, including breakpoints, on these new styles. -Similarly, it gets somewhat detached from the normal flow of the loaded theme. -The same applies for add-ons, as they are detached from the current theme. -One could use a Semantic UI approach for making this work, but it's Semantic UI bound. - -```{warning} -This is only possible when using your own escape hatch, and works only with SCSS-based themes, and not with Semantic UI themes, since it enables a couple of entry points that only support SCSS files. -For an example of how it could be used, see: https://github.com/kitconcept/volto-light-theme -``` - -If your custom escape hatch defines a custom theme using SCSS, you can take advantage of this feature. -Although not limited to this, it would be possible to extend this feature to add more entry points, using another preprocessor or theming approach. - -This feature enables two entry points: variables and main. -From your add-on code, you can extend an existing theme by creating a file corresponding to each entry point: - -* `./src/theme/_variables.scss` -* `./src/theme/_main.scss` - -### Variables (`addonsThemeCustomizationsVariables`) - -Use this entry point file to modify the original variables of the current loaded theme by adding the entry point before the theme variable definitions. -In the theme, it should be imported as shown below: - -```scss hl_lines="2" -@import 'addonsThemeCustomizationsVariables'; -@import 'variables'; -@import 'typography'; -@import 'utils'; -@import 'layout'; -``` - -```{warning} -Following SCSS best practices, your theme variables should be "overridable" using the `!default` flag. -This assigns a value to a variable _only_ if that variable isn't defined or its value is [`null`](https://sass-lang.com/documentation/values/null). -Otherwise, the existing value will be used. -For more information, see https://sass-lang.com/documentation/variables#default-values -``` - -Volto will not only load your add-on entry point files, but it will also detect all the add-ons that have these entry point files and import them grouped under a single file. -It will also automatically add an `addonsThemeCustomizationsVariables` alias that can be referenced from the theme as shown above. - -### Main (`addonsThemeCustomizationsMain`) - -This entry point is intended to add your own style definitions, complementing those in the theme. -You should add it after all the CSS of your theme: - -```scss hl_lines="6" -@import 'blocks/search'; -@import 'blocks/listing'; - -@import 'temp'; - -@import 'addonsThemeCustomizationsMain'; - -/* No CSS beyond this point */ -``` - -Volto will also detect all the add-ons that have these entry point files, and import them grouped under a single file, and will automatically add an `addonsThemeCustomizationsMain` alias that can be referenced from the theme as shown above. - -```{note} -It will only work in combination with the theme declaration in `volto.config.js` or in `package.json`. -``` diff --git a/docs/source/conceptual-guides/add-ons.md b/docs/source/conceptual-guides/add-ons.md new file mode 100644 index 0000000000..da1d986f5d --- /dev/null +++ b/docs/source/conceptual-guides/add-ons.md @@ -0,0 +1,234 @@ +--- +myst: + html_meta: + "description": "Volto add-ons extend the core functionality of the Plone CMS user interface." + "property=og:description": "Volto add-ons extend the core functionality of the Plone CMS user interface." + "property=og:title": "Volto add-ons" + "keywords": "Volto, add-on, extensions, user interface, frontend, Plone" +--- + +# Volto add-on concepts + +This guide describes Volto add-on concepts. + + +## What is a Volto add-on? + +Volto add-ons are just CommonJS or ESM packages. +Their main purpose is to encapsulate logic, configuration, components, customizations, and even themes in a reusable way. + +Suppose you want to have more control and flexibility beyond the plain Volto project when building a site. +You can build a Volto {term}`add-on` and make it available as a generic JavaScript package. +Then you can reuse and include it in any Volto project. + +An add-on can configure or provide any of the following aspects of Volto. + +- Provide additional views and blocks. +- Override or extend Volto's built-in views, blocks, and settings. +- Shadow or customize Volto's, or another add-on's, modules. +- Register custom routes. +- Provide custom {term}`Redux` actions and reducers. +- Register custom Express middleware for Volto's server process. +- Tweak Volto's webpack configuration, loading custom Razzle and webpack plugins. +- Provide even a custom theme. + + +## Volto registry + +Volto has a built-in extensible and pluggable system to enhance the Plone CMS user interface. +It helps developers extend Volto in a pluggable way through {term}`add-on`s. +This system is implemented through Volto's registry. + +For Volto 17 and earlier, the registry was integrated into Volto core. + +From Volto 18 onward, the Volto registry is in its own package [`@plone/registry`](https://plone-registry.readthedocs.io/). + + +## Add-on configuration pipeline + +A Volto app's configuration is determined through a pipeline starting with Volto's default configuration, then each of your app's add-ons' configuration. +In Volto 17 and earlier, you can also use project configuration at the end of the pipeline after any add-ons. + +```{deprecated} Volto 18.0.0 +The project configuration approach is deprecated and will be removed in Volto 19. +``` + +Add-ons are applied in the order they are declared in the `addons` key of {file}`package.json` or programmatically via a provided configuration file. +Add-ons can override configuration coming from other add-ons, providing a hierarchy of configuration stacks. + +Add-ons can be chained, where each one can configure the app in some way. +If needed, each add-on in the chain can override or extend the previous configuration that other add-ons set. +Thus, the order in which you register add-ons matters. + +Add-ons can define shadowed components. +"Component shadowing" is a technique for overriding modules of other packages at build time. +This technique builds upon the `resolve.aliases` facilities of bundlers, so modules can be replaced when the app is being built. + +Volto will automatically provide aliases for your package. +Once you've released it, you don't need to change import paths, since you can use the final ones from the very beginning. +This means that you can use imports, such as `import { Something } from '@plone/my-volto-add-on'` without any extra configuration. + +```{note} +By declaring a JavaScript package as a Volto add-on, Volto provides several integration features. +These include {doc}`JavaScript language features <../contributing/language-features>` with transpilation by Babel, whole-process customization via {file}`razzle.extend.js`, and integration with Volto's {term}`configuration registry`. +``` + + +### Use cases + +In practice with the configuration pipeline, for example, you can create a "policy" core add-on for your project, and use another add-on for your project's theme. +This way the project itself renders as a simple boilerplate, which you can extend or rebuild at any time. + +You can also reuse add-ons across projects, and adjust them using other add-ons, depending on the other projects' requirements. + + +% TODO: Should this section be moved to a how-to guide? +## Add-on configuration + +The default export of your add-on's main {file}`index.js` file should be a function with the signature `config => config`. +That is, it should take the `global` configuration object and return it, possibly mutated or changed. +An {file}`index.js` file should contain the following code. + +```js +export default function applyConfig(config) { + config.blocks.blocksConfig.faq_viewer = { + id: 'faq_viewer', + title: 'FAQ Viewer', + edit: FAQBlockEdit, + view: FAQBlockView, + icon: chartIcon, + group: 'common', + restricted: false, + mostUsed: true, + sidebarTab: 1, + security: { + addPermission: [], + view: [], + }, + }; + return config; +} +``` + +And the {file}`package.json` file of your add-on should contain the following code. + +```json +{ + "main": "src/index.js", +} +``` + +In effect, Volto does the equivalent of the following pseudocode: + +```js +import installMyVoltoAddon from 'my-volto-addon' + +// ... in the configuration registry setup step: +const configRegistry = installMyVoltoAddon(defaultRegistry); +``` + +The Volto add-on needs to export a default function that receives the Volto configuration registry. +Then it is free to change the registry. +Finally, it must return that registry. + +Volto will execute all the add-on configuration functions in a chain to compute the final configuration registry. + +```{note} +An add-on's default configuration method will always be loaded. +``` + +```{seealso} +See [@kitconcept/volto-button-block](https://github.com/kitconcept/volto-button-block) as an example. +``` + + +### Provide optional add-on configurations + +You can export additional configuration functions from your add-on's main {file}`index.js`. + +```js +import applyConfig, {loadOptionalBlocks,overrideSomeDefaultBlock} from './config'; + +export { loadOptionalBlocks, overrideSomeDefaultBlock }; +export default applyConfig; +``` + +```{seealso} +{doc}`../development/add-ons/load-add-on-configuration` +``` + + +% TODO: Should this section be moved to a how-to guide? +### Define your add-ons programmatically + +The `addons` key in the {file}`package.json` file alone might not be flexible enough in complex scenarios. +You can programmatically load your add-ons outside your {file}`package.json` file using a {file}`volto.config.js` file with the following content. + +```js +module.exports = { + addons: ['@eeacms/volto-accordion-block'] +} +``` + +This creates an "escape hatch", where you can use logic and environment conditions to define the add-ons to load in the current project, as in the next example. +The add-ons that you define here will be added to the existing ones in {file}`package.json`. + +```js +let addons = []; +if (process.env.MY_SPECIAL_ENV_VAR) { // Does not have to be RAZZLE_ + addons = ['volto-my-awesome-special-add-on']; +} + +if (process.env.MARKER_FOR_MY_SECRET_PROJECT) { // Does not have to be RAZZLE_ + addons = [ + '@kitconcept/volto-heading-block', + '@kitconcept/volto-slider-block', + 'volto-my-secret-project-add-on', + ]; +} + +module.exports = { + addons: addons, +}; +``` + +```{important} +You must add the `addons` key with the value of your add-on package's name wherever you configure it. +In Plone terminology, it is like including a Python egg in the `zcml` section of `zc.buildout`. +``` + +```{seealso} +{doc}`../configuration/volto-config-js` +``` + + +## Add-on dependencies + +Add-ons can depend on any other JavaScript package, including other Volto add-ons. +To do this, specify the name of your Volto add-on dependency in your `dependencies` key of your {file}`package.json` file. +Then create a new `addons` key in the {file}`package.json` file of your add-on, where you specify the extra Volto add-on dependency. +By doing this, the add-ons can "chain load" one another. + +```json +{ + "name": "volto-slate", + + "addons": ["@eeacms/volto-object-widget"] +} +``` + + +## Publish an add-on + +Volto add-ons should not be transpiled. +They should be released as "source" packages. + +Their primary entry point (the `main` key of their {file}`package.json`) must point to a module that exports a default function, which acts as a default configuration loader for that package. + +You can publish an add-on to an npm registry or to a remote repository host such as GitHub or GitLab, like any other package. +If you publish your add-on to the [npm Registry](https://www.npmjs.com/) or make your repository public, as a bonus, you will benefit from collaborating on open source software. + + +% Where does this go? +By using [`mrs-developer`](https://github.com/collective/mrs-developer), it's possible to have a workflow similar to `zc.buildout`'s `mr.developer`, where you can "checkout" an add-on for development. +[Eric Brehault](https://github.com/ebrehault) ported this amazing Python tool. diff --git a/docs/source/conceptual-guides/index.md b/docs/source/conceptual-guides/index.md new file mode 100644 index 0000000000..a81d8cd024 --- /dev/null +++ b/docs/source/conceptual-guides/index.md @@ -0,0 +1,19 @@ +--- +myst: + html_meta: + "description": "Volto conceptual guides" + "property=og:description": "Volto conceptual guides" + "property=og:title": "Conceptual guides" + "keywords": "Volto, user interface, frontend, Plone, conceptual guides" +--- + +# Conceptual guides + +This section of the documentation contains conceptual guides for various aspects of Volto. + +```{toctree} +:hidden: +:maxdepth: 2 + +add-ons +``` diff --git a/docs/source/configuration/how-to.md b/docs/source/configuration/how-to.md index a1023c1837..b8f8da6147 100644 --- a/docs/source/configuration/how-to.md +++ b/docs/source/configuration/how-to.md @@ -35,7 +35,8 @@ Both use the same method, using a function as the default export. This function add-ons, it must be provided in the main `index.js` module of the add-on. For project's it must be provided in the `src/config.js` module of the project. -See the {doc}`../addons/index` section for extended information on how to work with add-ons. +See the {doc}`../conceptual-guides/add-ons` and {doc}`../development/add-ons/index` sections for extended information on how to work with add-ons. + ## Extending configuration in a project diff --git a/docs/source/contributing/developing-core.md b/docs/source/contributing/developing-core.md index 0e961feb81..cad81c3685 100644 --- a/docs/source/contributing/developing-core.md +++ b/docs/source/contributing/developing-core.md @@ -165,7 +165,7 @@ cd volto Install the frontend dependencies. ```shell -pnpm install +make install ``` diff --git a/docs/source/contributing/language-features.md b/docs/source/contributing/language-features.md index 258582172a..7102420229 100644 --- a/docs/source/contributing/language-features.md +++ b/docs/source/contributing/language-features.md @@ -1,73 +1,64 @@ --- myst: html_meta: - "description": "Volto is developed using Babel to transpile modern JavaScript to JavaScript that browsers are able to understand and execute." - "property=og:description": "Volto is developed using Babel to transpile modern JavaScript to JavaScript that browsers are able to understand and execute." - "property=og:title": "Language features and conventions" - "keywords": "Volto, Plone, frontend, React, Babel, translations, language, internationalization, i18n, localization, transpilation" + "description": "Volto uses several tools and follows conventions that provide features and browser support for the JavaScript language." + "property=og:description": "Volto uses several tools and follows conventions that provide features and browser support for the JavaScript language." + "property=og:title": "JavaScript language features and browser support" + "keywords": "Volto, Plone, frontend, React, Babel, JavaScript, transpilation" --- +% Mixture of conceptual guide and how-to guide +# JavaScript language features and browser support -# Language features and conventions +Volto uses several tools and follows conventions that provide features and browser support for the JavaScript language. + +% Conceptual guide ## Babel -Volto is developed using Babel to transpile modern JavaScript to JavaScript that -browsers are able to understand and execute. +Babel transpiles {term}`ECMAScript` code, including React and JSX, into a backwards compatible version of JavaScript in current and older browsers or environments. -Ecma International's TC39 (https://tc39.es/) is a group of JavaScript developers, -implementers, academics, and more, collaborating with the community to maintain and -evolve the definition of JavaScript. They stablished a process -(https://tc39.es/process-document/) where the proposals are discussed, developed, and -eventually approved (or dropped). The process has five stages (0 to 4) where reaching -the stage 4 means the proposal is accepted and it becomes part of the JavaScript -specification. +Babel provides features and syntax that you can use in code when you develop on Volto. +These features derive from the proposals that the {term}`TC39` produces. -Babel enables a series of features and syntax that the developer can use in code to -develop Volto on. These features are the proposals the TC39 is working on in the -different stages of evolution. +Volto uses `babel-razzle-preset`, which in turns uses `@babel/preset-env`, which together enable the use of all [TC39 finished proposals](https://github.com/tc39/proposals/blob/HEAD/finished-proposals.md#finished-proposals). -Volto uses `babel-razzle-preset` which in turns uses `@babel/preset-env` which enables -the use of all TC39 proposals currently in TC39's stage 4 -(https://github.com/tc39/proposals/blob/HEAD/finished-proposals.md#finished-proposals). -### Browser compatibility +% How-to guide +## Browser compatibility -Babel preset-env uses `browserlist` which gives the ability to micromanage the -transformations needed by the current project depending of the browser support you are -currently targeting. +`@babel/preset-env` uses `browserslist`, which you can use to manage the transformations needed to target specific browser support in your project. +This reduces the size of bundles, as Babel will apply only the required transforms that your target environment needs. -By doing this, it enables the bundles to be smaller, as the resulting code does not need to -support old browsers (thus, transform your code to ES5 compatible code) as Babel will -apply only the required transforms that your target environments need. For more -information: https://babeljs.io/docs/babel-preset-env#browserslist-integration +```{seealso} +https://babeljs.io/docs/babel-preset-env#browserslist-integration +``` -Volto project generators use this browserlist by default (you can find it in your local `package.json`): +Volto project generators use `browserslist` queries by default, which is in your local {file}`package.json`. +You can adjust this file according to the environments you want to target. ```json - "browserslist": [ - ">1%", - "last 4 versions", - "Firefox ESR", - "not ie 11", - "not dead" - ], +"browserslist": [ + ">1%", + "last 4 versions", + "Firefox ESR", + "not ie 11", + "not dead" +], +``` + +```{seealso} +For usage and syntax, see the `browserslist` documentation of [Queries](https://github.com/browserslist/browserslist#queries). ``` -which you can adjust depending on the environments you are targeting in your local -`package.json` file. You can find more information about how the queries in `broserlist` -works in: https://github.com/browserslist/browserslist#queries -### Support to deprecated browsers +% How-to guide +## Support of deprecated browsers ```{warning} -Volto does not support deprecated browsers from its vendor (eg. IE11). +Volto does not support deprecated browsers, such as Internet Explorer 11. ``` -If you still need to support deprecated browsers, you should use `browserslist` in your -project to enable the required transforms for the target deprecated environments you -have to support. +If you still need to support deprecated browsers, you should use `browserslist` in your project to enable the required transforms for the target deprecated environments you must support. -However, Volto (or its dependencies) might not be compatible with old browsers anyways, -and you might need to provide some other workarounds to make the build work (and the -deprecated browser not crash). You can refer to {doc}`this (outdated) -document <../development/ie11compat>` in order to get some hints on how to do it. +However, Volto or its dependencies might not be compatible with old browsers. +You might need to create some workarounds to make the build work, and the deprecated browser not crash. diff --git a/docs/source/development/add-ons/best-practices.md b/docs/source/development/add-ons/best-practices.md new file mode 100644 index 0000000000..c023301634 --- /dev/null +++ b/docs/source/development/add-ons/best-practices.md @@ -0,0 +1,82 @@ +--- +myst: + html_meta: + "description": "Best practices for developing Volto add-ons" + "property=og:description": "Best practices for developing Volto add-ons" + "property=og:title": "Best practices for add-ons" + "keywords": "Volto, Plone, frontend, React, best, practices, add-ons" +--- + +# Best practices for add-ons + +This document describes the best practices when you develop your add-on. + + +## Integrate your add-on with Volto's add-on framework + +Just like Plone add-ons provide some features by default, Volto add-ons should register some features by default. +For example, if your add-on provides widgets, then register the most basic configuration of that widget with a name that it uses. + +For more complicated cases, see if you can structure your code to use the `settings` {term}`configuration registry`, or stash your configuration in your block registration. + +Let's say you're building a color picker widget. +You might want to provide a palette of colors from which to choose. +Your widget should integrate with a default `settings.colorWidgetPalette`, which would be a list of colors. + +You should also provide a widget factory, so it can be used to create multiple instances of that color widget with custom color palettes. + + +## Provide additional configuration + +An add-on can ship with multiple {term}`Volto configuration loader`s. +This makes it possible to provide multiple configuration methods for specific demonstration purposes. +Alternatively you could ship your add-on with a default "shallow" integration, then provide another separate configuration loader for a deeper integration. + + +## Avoid shadowing core Volto files + +This rule is meant to be broken. +If you need to customize a specific file in Volto core and you have multiple projects, it may be better to create an add-on that holds that customized file. +Doing so creates a single place to maintain that "file fork". +Otherwise, it's best to avoid shipping generic add-ons with Volto core customizations. + +If you customize core Volto files, you should warn consumers of your add-on in its description. + +If your use case is generic enough, [file a feature request](https://github.com/plone/volto/issues/new?assignees=&labels=04+type%3A+enhancement&projects=&template=feature_request.md&title=) to discuss with the Volto Team whether your customization should be included directly in core. + + +## Documentation + +"If it ain't documented, it's broken." + +At least create a README with a brief description and a screenshot or video of what your add-on does. + +Ideally, the README should include requirements or compatability with various versions of Volto and Plone, and installation and configuration instructions. + + +## Test the add-on + +```{versionadded} Volto 18.0.0-alpha.43 +``` + +Cookieplone provides a self-bootstrapping and testing framework in Volto 18. +See {doc}`test-add-ons-18`. + +Previously in Volto 17 and early alpha versions of Volto 18, it was not easy to ship an add-on with a self-bootstrapping and testing framework. +However, for these older versions of Volto you can create a separate minimal Volto project that can hold the Cypress integration tests and trigger the CI tests. + + +## Use appropriate npm Registry tags + +If you release your add-on to the [npm Registry](https://www.npmjs.com/), consider adding the following tags, next to your add-on-specific tags. + +- `volto-addon` +- `volto` +- `plone` +- `react` + + +## Add to `collective/awesome-volto` + +Consider adding your add-on to the [`collective/awesome-volto`](https://github.com/collective/awesome-volto) add-ons list. +This list provides visibility to your add-on, as well as further solidifies Volto's position in the Plone community. diff --git a/docs/source/development/add-ons/create-an-add-on-17.md b/docs/source/development/add-ons/create-an-add-on-17.md new file mode 100644 index 0000000000..6034a5ef57 --- /dev/null +++ b/docs/source/development/add-ons/create-an-add-on-17.md @@ -0,0 +1,20 @@ +--- +myst: + html_meta: + "description": "How to create an add-on for Volto 17" + "property=og:description": "How to create an add-on for Volto 17" + "property=og:title": "Create an add-on for Volto 17" + "keywords": "add-on, Volto, create" +--- + +# Create an add-on for Volto 17 + +Volto add-on packages are just CommonJS packages. +The only requirement is that they point the `main` key of their {file}`package.json` to a module that exports as a default function, acting as a {term}`Volto configuration loader`. + +You can use Plone's Yeoman-based generator [`generator-volto`](https://github.com/plone/generator-volto) to create a Volto add-on. + +```shell +npm install -g @plone/generator-volto +yo @plone/volto:addon [] [options] +``` diff --git a/docs/source/development/add-ons/create-an-add-on-18.md b/docs/source/development/add-ons/create-an-add-on-18.md new file mode 100644 index 0000000000..15ffca9d6a --- /dev/null +++ b/docs/source/development/add-ons/create-an-add-on-18.md @@ -0,0 +1,200 @@ +--- +myst: + html_meta: + "description": "How to create an add-on for Volto 18" + "property=og:description": "How to create an add-on for Volto 18" + "property=og:title": "Create an add-on for Volto 18" + "keywords": "add-on, Volto, create, development" +--- + +# Create an add-on for Volto 18 + +This chapter describes how you can create an add-on using Volto 18 or later for the Plone user interface, while having full control over its development and deployment. + +```{versionadded} Volto 18.0.0-alpha.43 +{term}`Cookieplone` is now the method to create a Plone add-on with Volto version 18.0.0-alpha.43 and above. +``` + +## System requirements + +Follow the section {ref}`plone:create-project-cookieplone-system-requirements` to set up your system. + + +## Generate the add-on project + +To develop an add-on for only the frontend, then run the following command to generate your add-on project using the `frontend_addon` Cookieplone template. +To develop add-ons for each the frontend and backend that work together, then instead use the Cookieplone template `project` in the command. +See {doc}`plone:install/create-project-cookieplone` for details of the latter scenario. +The following output assumes the former scenario. + +```shell +pipx run cookieplone frontend_addon +``` + +```console +❯ pipx run cookieplone frontend_addon +⚠️ cookieplone is already on your PATH and installed at + /Users//.local/bin/cookieplone. Downloading and running anyway. +╭──────────────────────────────── cookieplone ─────────────────────────────────╮ +│ │ +│ .xxxxxxxxxxxxxx. │ +│ ;xxxxxxxxxxxxxxxxxxxxxx; │ +│ ;xxxxxxxxxxxxxxxxxxxxxxxxxxxx; │ +│ xxxxxxxxxx xxxxxxxxxx │ +│ xxxxxxxx. .xxxxxxxx │ +│ xxxxxxx xxxxxxx: xxxxxxx │ +│ :xxxxxx xxxxxxxxxx xxxxxx: │ +│ :xxxxx+ xxxxxxxxxxx +xxxxx: │ +│ .xxxxx. :xxxxxxxxxx .xxxxx. │ +│ xxxxx+ ;xxxxxxxx +xxxxx │ +│ xxxxx +xx. xxxxx. │ +│ xxxxx: .xxxxxxxx :xxxxx │ +│ xxxxx .xxxxxxxxxx xxxxx │ +│ xxxxx xxxxxxxxxxx xxxxx │ +│ xxxxx .xxxxxxxxxx xxxxx │ +│ xxxxx: .xxxxxxxx :xxxxx │ +│ .xxxxx ;xx. ... xxxxx. │ +│ xxxxx+ :xxxxxxxx +xxxxx │ +│ .xxxxx. :xxxxxxxxxx .xxxxx. │ +│ :xxxxx+ xxxxxxxxxxx ;xxxxx: │ +│ :xxxxxx xxxxxxxxxx xxxxxx: │ +│ xxxxxxx xxxxxxx; xxxxxxx │ +│ xxxxxxxx. .xxxxxxxx │ +│ xxxxxxxxxx xxxxxxxxxx │ +│ ;xxxxxxxxxxxxxxxxxxxxxxxxxxxx+ │ +│ ;xxxxxxxxxxxxxxxxxxxxxx; │ +│ .xxxxxxxxxxxxxx. │ +│ │ +╰──────────────────────────────────────────────────────────────────────────────╯ +You've downloaded /Users//.cookiecutters/cookieplone-templates before. +Is it okay to delete and re-download it? [y/n] (y): +╭─────────────────────────── Volto Addon Generator ────────────────────────────╮ +│ │ +│ Creating a new Volto Addon │ +│ │ +│ Sanity check results: │ +│ │ +│ │ +│ - Node: ✓ │ +│ - git: ✓ │ +│ │ +╰──────────────────────────────────────────────────────────────────────────────╯ + [1/8] Add-on Title (Volto Add-on): + [2/8] Add-on (Short name of the addon) (volto-addon): + [3/8] A short description of your addon (A new add-on for Volto): + [4/8] Author (Plone Community): + [5/8] Author E-mail (collective@plone.org): + [6/8] GitHub Username or Organization (collective): + [7/8] Package name on NPM (volto-addon): + [8/8] Volto version (18.0.0-alpha.46): +╭────────────────────────── Volto Add-on generation ───────────────────────────╮ +│ │ +│ Summary: │ +│ │ +│ - Volto version: 18.0.0-alpha.46 │ +│ - Output folder: /Users//Development/plone/volto-addon │ +│ │ +│ │ +╰──────────────────────────────────────────────────────────────────────────────╯ +╭─────────────────────── 🎉 New addon was generated 🎉 ────────────────────────╮ +│ │ +│ volto-addon │ +│ │ +│ Now, enter the generated directory and finish the install: │ +│ │ +│ cd volto-addon │ +│ make install │ +│ │ +│ start coding, and push to your organization. │ +│ │ +│ Sorry for the convenience, │ +│ The Plone Community. │ +│ │ +│ https://plone.org/ │ +╰──────────────────────────────────────────────────────────────────────────────╯ +``` + +Cookieplone creates a folder with the name of the add-on, in this example, `volto-addon`. + +Change your current working directory to {file}`volto-addon`. + +```shell +cd volto-addon +``` + +To install the add-on setup, use the following command. + +```shell +make install +``` + + +## Start Plone backend Docker container + +In the currently open shell session, issue the following command. + +```shell +make backend-docker-start +``` + +```console +❯ make backend-docker-start +==> Start Docker-based Plone Backend +======================================================================================= +Creating Plone volto SITE: Plone +Aditional profiles: +THIS IS NOT MEANT TO BE USED IN PRODUCTION +Read about it: https://6.docs.plone.org/install/containers/images/backend.html +======================================================================================= +Ignoring index for /app/var/filestorage/Data.fs +INFO:Plone Site Creation:Creating a new Plone site @ Plone +INFO:Plone Site Creation: - Using the voltolighttheme distribution and answers from /app/scripts/default.json +INFO:Plone Site Creation: - Stopping site creation, as there is already a site with id Plone at the instance. Set DELETE_EXISTING=1 to delete the existing site before creating a new one. +Using default configuration +2024-10-11 16:12:47 INFO [chameleon.config:39][MainThread] directory cache: /app/var/cache. +2024-10-11 16:12:48 INFO [plone.restapi.patches:16][MainThread] PATCH: Disabled ZPublisher.HTTPRequest.ZopeFieldStorage.VALUE_LIMIT. This enables file uploads larger than 1MB. +2024-10-11 16:12:49 INFO [plone.volto:23][MainThread] Aliasing collective.folderish classes to plone.volto classes. +2024-10-11 16:12:50 INFO [Zope:42][MainThread] Ready to handle requests +Starting server in PID 1. +2024-10-11 16:12:50 INFO [waitress:486][MainThread] Serving on http://0.0.0.0:8080 +``` + +This will start a clean Plone server for development purposes so you can start developing your add-on. + + +## Start Plone development frontend + +Create a second shell session in a new window. +Change your current working directory to {file}`volto-addon`. +Start the Plone development frontend with the following command. + +```shell +make start +``` + +```console +webpack 5.90.1 compiled successfully in 11004 ms +sswp> Handling Hot Module Reloading +Using volto.config.js in: //frontend/volto.config.js +✅ Server-side HMR Enabled! +Volto is running in SEAMLESS mode +Proxying API requests from http://localhost:3000/++api++ to http://localhost:8080/Plone +🎭 Volto started at 0.0.0.0:3000 🚀 +``` + +Note that the Plone frontend uses an internal proxy server to connect with the Plone backend. +Open a browser at the following URL to visit your Plone site. + +http://localhost:3000 + +You will see a page similar to the following. + +```{image} /_static/plone-home-page.png +:alt: Plone home page +:class: figure +``` + +Your newly created add-on will be installed with vanilla core Volto. +You can start developing it in the add-on package located in {file}`packages/volto-addon`. + +You can stop the site with {kbd}`ctrl-c`. diff --git a/docs/source/development/add-ons/extend-eslint-add-on.md b/docs/source/development/add-ons/extend-eslint-add-on.md new file mode 100644 index 0000000000..6017463332 --- /dev/null +++ b/docs/source/development/add-ons/extend-eslint-add-on.md @@ -0,0 +1,43 @@ +--- +myst: + html_meta: + "description": "Extend ESLint configuration from an add-on" + "property=og:description": "Extend ESLint configuration from an add-on" + "property=og:title": "Extend ESLint configuration from an add-on" + "keywords": "Volto, add-on, extensions, frontend, Plone, configuration, ESLint, lint" +--- + +# Extend ESLint configuration from an add-on + +```{versionadded} Volto 16.4.0 +``` + +Starting with Volto v16.4.0, you can customize the ESLint configuration from an add-on. +You should provide a {file}`eslint.extend.js` file in your add-on's root folder, which exports a `modify(defaultConfig)` function. +For example, to host some code outside the regular {file}`src/` folder of your add-on, you need to add the following {file}`eslint.extend.js` file: + +```js +const path = require('path'); + +module.exports = { + modify(defaultConfig) { + const aliasMap = defaultConfig.settings['import/resolver'].alias.map; + const addonPath = aliasMap.find( + ([name]) => name === '@plone-collective/some-volto-add-on', + )[1]; + + const extraPath = path.resolve(`${addonPath}/../extra`); + aliasMap.push(['@plone-collective/extra', extraPath]); + + return defaultConfig; + }, +}; +``` + +This allows the add-on `@plone-collective/some-volto-add-on` to host some code outside its normal {file}`src/` folder. +If you put that code in the {file}`extra` folder, that code would be available under the `@plone-collective/extra` name. + +```{note} +This takes care only of the ESLint integration. +For proper language support, you'll still need to configure it in the {file}`razzle.extend.js` file of your add-on. +``` diff --git a/docs/source/development/add-ons/extend-webpack-add-on.md b/docs/source/development/add-ons/extend-webpack-add-on.md new file mode 100644 index 0000000000..c7fbd69aed --- /dev/null +++ b/docs/source/development/add-ons/extend-webpack-add-on.md @@ -0,0 +1,55 @@ +--- +myst: + html_meta: + "description": "Extend webpack setup from an add-on with razzle.extend.js" + "property=og:description": "Extend webpack setup from an add-on with razzle.extend.js" + "property=og:title": "Extend webpack setup from an add-on" + "keywords": "Volto, Plone, webpack, add-on, razzle.extend.js, Razzle" +--- + +# Extend webpack setup from an add-on + +```{deprecated} Volto 18 +The project configuration approach as described in this document is deprecated in Volto 18 and will be removed in Volto 19. +You should instead follow the add-on approach as described in {doc}`../../conceptual-guides/add-ons`. +``` + +Just like you can extend Razzle's configuration from the project, you can do the same with an add-on. +You should provide a {file}`razzle.extend.js` file in your add-on root folder. +The following code example manages two things. + +- Add a new webpack plugin, [`webpack-bundle-analyzer`](https://www.npmjs.com/package/webpack-bundle-analyzer). +- Reconfigure the `theme.config` alias, to enable a custom Semantic UI theme inside the add-on. + + ```js + const analyzerPlugin = { + name: 'bundle-analyzer', + options: { + analyzerHost: '0.0.0.0', + analyzerMode: 'static', + generateStatsFile: true, + statsFilename: 'stats.json', + reportFilename: 'reports.html', + openAnalyzer: false, + }, + }; + + const plugins = (defaultPlugins) => { + return defaultPlugins.concat([analyzerPlugin]); + }; + const modify = (config, { target, dev }, webpack) => { + const themeConfigPath = `${__dirname}/theme/theme.config`; + config.resolve.alias['../../theme.config$'] = themeConfigPath; + + return config; + }; + + module.exports = { + plugins, + modify, + }; + ``` + +```{seealso} +[`volto-searchlib`'s {file}`razzle.extend.js`](https://github.com/eea/volto-searchlib/blob/d84fec8eec1def0088d8025eaf5d7197074b95a7/razzle.extend.js) file for an example of how to include additional paths for the Babel configuration, and how to add additional webpack name aliases. +``` diff --git a/docs/source/addons/i18n.md b/docs/source/development/add-ons/i18n.md similarity index 61% rename from docs/source/addons/i18n.md rename to docs/source/development/add-ons/i18n.md index 9df832da70..ab8d838f8f 100644 --- a/docs/source/addons/i18n.md +++ b/docs/source/development/add-ons/i18n.md @@ -4,17 +4,19 @@ myst: "description": "Internationalize your add-on and override translations" "property=og:description": "Internationalize your add-on and override translations" "property=og:title": "Add-on Internationalization" - "keywords": "Internationalization, i18n, add-on" + "keywords": "Volto, internationalization, i18n, add-on" --- -# Add-on Internationalization +# Add-on internationalization + +The {term}`internationalization` (i18n) workflow in and add-on is similar to core Volto. +You develop your add-on, then add the translations to your code. -The internationalization workflow is the same as in main Volto: you develop your add-on, then add the translations to your code. See {ref}`create-i18n-strings` for how to mark strings and phrases as translatable. -Your add-on has a `locales` folder with a `.pot` file. +Your add-on has a {file}`locales` folder with a `.pot` file. -1. Create the following structure in your add-ons `locales` folder for every language you want to support. +1. Create the following structure in your add-ons {file}`locales` folder for every language you want to support. As an example for the language Italian: ```text @@ -24,14 +26,14 @@ Your add-on has a `locales` folder with a `.pot` file. ``` 1. Run `pnpm i18n` in the context of your add-on. -1. Go to each `.po` file in your `locales` folder, and write the translations for each translation literal. +1. Go to each `.po` file in your {file}`locales` folder, and write the translations for each translation literal. In the context of your project, run `pnpm i18n` to merge the add-on translations with the ones of your project. ## Override translations -If you have multiple add-ons installed in your project, the translations are loaded in the order your add-ons are listed in `package.json`. +If you have multiple add-ons installed in your project, the translations are loaded in the order your add-ons are listed in {file}`package.json`. If two add-ons provide different translations for the same message, then the last defined add-on wins. When running `pnpm i18n` in the context of your project, the project's own locales are processed last and can override translations from any add-on. diff --git a/docs/source/development/add-ons/index.md b/docs/source/development/add-ons/index.md new file mode 100644 index 0000000000..97296c4a12 --- /dev/null +++ b/docs/source/development/add-ons/index.md @@ -0,0 +1,30 @@ +--- +myst: + html_meta: + "description": "How to develop Volto add-ons" + "property=og:description": "How to develop Volto add-ons" + "property=og:title": "Develop Volto add-ons" + "keywords": "Volto, Plone, CMS, add-on" +--- + +# Develop Volto add-ons + +```{toctree} +:maxdepth: 1 + +install-an-add-on +install-an-add-on-dev-18 +install-an-add-on-dev-17 +load-add-on-configuration +create-an-add-on-18 +create-an-add-on-17 +test-add-ons-18 +test-add-ons-17 +extend-webpack-add-on +extend-eslint-add-on +troubleshoot-transpilation +i18n +best-practices +theme +public-folder +``` diff --git a/docs/source/development/add-ons/install-an-add-on-dev-17.md b/docs/source/development/add-ons/install-an-add-on-dev-17.md new file mode 100644 index 0000000000..8c938c6391 --- /dev/null +++ b/docs/source/development/add-ons/install-an-add-on-dev-17.md @@ -0,0 +1,124 @@ +--- +myst: + html_meta: + "description": "How to install an add-on in development mode in Volto 17 in your Plone project" + "property=og:description": "How to install an add-on in development mode in Volto 17 in your Plone project" + "property=og:title": "Install an add-on in development mode in Volto 17" + "keywords": "Volto, Plone, add-on, stable, development, mode" +--- + +# Install an add-on in development mode in Volto 17 + +Use [`mrs-developer`](https://www.npmjs.com/package/mrs-developer) to manage the development cycle of Volto add-ons. +This tool pulls the remote code and configures the current project, making the add-on available for the build. +By doing this, you can develop both the project and the add-on product as if they were both part of the current codebase. + +`mrs-developer` is included and installed by default when you generate a project with the generator. +Use the following command to install the configuration of `mrs.developer.json` in your project. + +```shell +make install +``` + + +## Configure `mrs-developer` + +{file}`mrs.developer.json` is the configuration file that instructs `mrs-developer` from where it should pull the packages. +The generator includes an empty one for you. +Edit {file}`mrs.developer.json` and add the following code. + +```json +{ + "acme-volto-foo-addon": { + "package": "@acme/volto-foo-addon", + "url": "git@github.com:acme/my-volto-addon.git", + "path": "src" + } +} +``` + +Then run: + +```bash +make install +``` + +Now the add-on appears in `src/addons/`. + +```{note} +The `package` property is optional. +Use it only if your package has a namespace. + +`src` is required if the content of your add-on is located in the `src` directory. +Since that is the convention for all Volto add-on packages, you must always include it. +``` + +```{seealso} +See [`mrs-developer` configuration options](https://www.npmjs.com/package/mrs-developer). +``` + + +## Resolve import paths + +Your project uses a file to configure import paths, either {file}`tsconfig.json` or {file}`jsconfig.json` at the Volto project root. +`mrs-developer` automatically manages the content of this file for you. +If you choose not to use `mrs-developer`, you'll have to manually add configuration to this file. + +```json +{ + "compilerOptions": { + "paths": { + "acme-volto-foo-addon": [ + "addons/acme-volto-foo-addon/src" + ] + }, + "baseUrl": "src" + } +} +``` + + +```{warning} +Both values for `paths` and `baseUrl` must match your project's layout. +``` + +```{tip} +You should use the `src` path inside your package and point the `main` key in {file}`package.json` to the {file}`index.js` file in {file}`src/index.js`. +``` + + +## Add-on development lifecycle + +If you want to "disable" using the development version of an add-on, or keep a more stable version of `mrs.developer.json` in your source code repository, you can set its status by adding a `develop` key to {file}`mrs.developer.json` as shown. + +```json +{ + "acme-volto-foo-addon": { + "package": "@acme/volto-foo-addon", + "url": "git@github.com:acme/my-volto-addon.git", + "path": "src", + "develop": true + } +} +``` + +Whenever you change a value in your {file}`mrs.developer.json`, you must run `make install` again. + + +## Add-on dependencies, yarn workspaces + +If your add-on needs to bring in additional JavaScript package dependencies, you'll have to set your add-on package as a "Yarn workspace". +You should add a `workspaces` key to the {file}`package.json` of your Volto project. + +```json +"workspaces": ["src/addons/my-volto-addon"], +``` + +It is common practice to use a star (`*`) glob pattern for the workspaces. + +```json +"workspaces": ["src/addons/*"], +``` + +If you do this, make sure to always clean up the `src/addons` folder whenever you toggle the development status of an add-on, as the existence of the add-on folder under `src/addons` will still influence yarn. +To do so, run `make install` again to remove the no longer required package. diff --git a/docs/source/development/add-ons/install-an-add-on-dev-18.md b/docs/source/development/add-ons/install-an-add-on-dev-18.md new file mode 100644 index 0000000000..7828759fc7 --- /dev/null +++ b/docs/source/development/add-ons/install-an-add-on-dev-18.md @@ -0,0 +1,143 @@ +--- +myst: + html_meta: + "description": "How to install an add-on in development mode in Volto 18 in your Plone project" + "property=og:description": "How to install an add-on in development mode in Volto 18 in your Plone project" + "property=og:title": "Install an add-on in development mode in Volto 18" + "keywords": "Volto, Plone, add-on, development, mode" +--- + +# Install an add-on in development mode in Volto 18 + +Use [`mrs-developer`](https://www.npmjs.com/package/mrs-developer) to manage the development cycle of Volto add-ons. +This tool pulls the remote code and configures the current project, making the add-on available for the build. +By doing this, you can develop both the project and the add-on product as if they were both part of the current codebase. + +`mrs-developer` is included and installed by default when you generate a project with Cookieplone. +Use the following command to install the configuration of `mrs.developer.json` in your project. + +```shell +make install +``` + +Next, you need to add the add-on to the `addons` key of your Plone project's {file}`package.json`. + +```json +{ + "name": "my-volto-project", + "addons": [ + "name-of-add-on" + ] +} +``` + +```{seealso} +Alternatively, you can use {file}`volto.config.js` to declare add-ons in your Plone project. +See {doc}`../../configuration/volto-config-js`. +``` + +## Configure `mrs-developer` + +{file}`mrs.developer.json` is the configuration file that instructs `mrs-developer` from where it should pull the packages. +Cookieplone includes an empty one for you. +Edit {file}`mrs.developer.json` and add the following code. + +```json +{ + "acme-volto-foo-addon": { + "output": "packages", + "package": "@acme/volto-foo-addon", + "url": "git@github.com:acme/my-volto-addon.git", + "path": "src" + } +} +``` + +Then run: + +```bash +make install +``` + +Now the add-on appears in `packages/acme-volto-foo-addon/`. + +```{note} +The `package` property is optional. +Use it only if your package has a namespace. + +`src` is required if the content of your add-on is located in the `src` directory. +Since that is the convention for all Volto add-on packages, you must always include it. +``` + +```{seealso} +See [`mrs-developer` configuration options](https://www.npmjs.com/package/mrs-developer). +``` + + +## Resolve import paths + +```{versionadded} Volto 18.0.0-alpha.43 +``` + +The Cookieplone setup uses `pnpm` to resolve import paths. +You have nothing to do here. + + +## Add-on development lifecycle + +If you want to "disable" using the development version of an add-on, or keep a more stable version of `mrs.developer.json` in your source code repository, you can set its status by adding a `develop` key to {file}`mrs.developer.json` as shown. + +```json +{ + "acme-volto-foo-addon": { + "output": "packages", + "package": "@acme/volto-foo-addon", + "url": "git@github.com:acme/my-volto-addon.git", + "path": "src", + "develop": true + } +} +``` + +Whenever you change a value in your {file}`mrs.developer.json`, you must run `make install` again. + + +## Add-on dependencies + +If your add-on needs to bring in additional JavaScript package dependencies, you'll have to declare them as normal package dependencies. + + +## `pnpm` workspaces + +You need to configure your add-ons using a `pnpm` workspace. +You can configure them using the file {file}`pnpm-workspace.yaml` and declare all your development add-ons in there. + +```yaml +packages: + - 'core/packages/*' + - 'packages/*' +``` + +If the add-on you are developing was created using {term}`Cookieplone`, then you have to add the following to {file}`pnpm-workspace.yaml` detect them. + +```yaml +packages: + - 'core/packages' + - 'packages/my-policy-addon' + - 'packages/**/packages/*' +``` + +Note the nesting of `packages` since a {term}`Cookieplone` generated add-on will have a `packages` folder in itself. +You can explicitly declare the add-ons, too. + +```yaml +packages: + - 'core/packages' + - 'packages/my-policy-addon' + - 'packages/my-development-mode-addon/packages/my-development-mode-addon' + - 'packages/**/packages/*' +``` + +```{important} +Run `make install` after any change in {file}`pnpm-workspace.yaml` to update the setup. +``` diff --git a/docs/source/development/add-ons/install-an-add-on.md b/docs/source/development/add-ons/install-an-add-on.md new file mode 100644 index 0000000000..8dfc9df327 --- /dev/null +++ b/docs/source/development/add-ons/install-an-add-on.md @@ -0,0 +1,69 @@ +--- +myst: + html_meta: + "description": "How to install an add-on in Volto" + "property=og:description": "How to install an add-on in Volto" + "property=og:title": "Install an add-on in Volto" + "keywords": "add-on, Volto, install" +--- + +# Install an add-on in Volto + +This document describes how to install an add-on in Volto. + +You can install an add-on just like any other JavaScript package from the [npm Registry](https://www.npmjs.com/). + +`````{tab-set} +:sync-group: install-add-on + +````{tab-item} Volto 18 +:sync: volto-18 +```shell +pnpm --filter add +``` +```` + +````{tab-item} Volto 17 +:sync: volto-17 +```shell +yarn add +``` +```` +````` + +If the add-on is not published on the npm Registry, [you can install it directly from GitHub](https://pnpm.io/cli/add#install-from-git-repository). + + +`````{tab-set} +:sync-group: install-add-on + +````{tab-item} Volto 18 +:sync: volto-18 +```shell +pnpm add collective/volto-dropdownmenu +``` +```` + +````{tab-item} Volto 17 +:sync: volto-17 +```shell +yarn add collective/volto-dropdownmenu +``` +```` +````` + +Next, you need to add the add-on to the `addons` key of your Plone project's {file}`package.json`. + +```json +{ + "name": "my-volto-project", + "addons": [ + "name-of-add-on" + ] +} +``` + +```{seealso} +Alternatively, you can use {file}`volto.config.js` to declare add-ons in your Plone project. +See {doc}`../../configuration/volto-config-js`. +``` diff --git a/docs/source/development/add-ons/load-add-on-configuration.md b/docs/source/development/add-ons/load-add-on-configuration.md new file mode 100644 index 0000000000..33f0a21c9b --- /dev/null +++ b/docs/source/development/add-ons/load-add-on-configuration.md @@ -0,0 +1,65 @@ +--- +myst: + html_meta: + "description": "Load configuration from add-ons" + "property=og:description": "Load configuration from add-ons" + "property=og:title": "Load configuration from add-ons" + "keywords": "Volto, add-on, extensions, frontend, Plone, configuration" +--- + +# Load configuration from add-ons + +As a convenience, an add-on can export configuration functions that can mutate in-place the overall Volto {term}`configuration registry`. +An add-on can export multiple configuration methods, making it possible to selectively choose which specific add-on functionality you want to load. + +Some add-ons might allow the Volto project to selectively load some of their configuration, so they may offer additional configuration functions. +You can load them by overloading the add-on name in the `addons` {file}`package.json` key, as shown. + +```{code-block} json +:emphasize-lines: 4 + +{ + "name": "my-nice-volto-project", + "addons": [ + "acme-volto-foo-add-on:loadOptionalBlocks,overrideSomeDefaultBlock", + "volto-ga" + ], +} +``` + +```{note} +The additional comma-separated names should be exported from the add-on package's {file}`index.js`. +The main configuration function should be exported as the default. +An add-on's default configuration method will always be loaded. +``` + +If for some reason you want to manually load the add-on, you can edit your project's {file}`config.js` module: + +```js +import loadExampleAddon, { enableOptionalBlocks } from 'volto-example-add-on'; +import * as voltoConfig from '@plone/volto/config'; + +const config = enableOptionalBlocks(loadExampleAddon(voltoConfig)); + +export blocks = { + ...config.blocks, +} +``` + +Volto provides a helper method `applyConfig` to do the same. + +```js +import { applyConfig } from '@plone/volto/helpers'; +import * as voltoConfig from '@plone/volto/config'; + +const config = applyConfig([ + enableOptionalBlocks, + loadExampleAddon +], voltoConfig); + +export blocks = { + ...config.blocks, +} +``` + +The `applyConfig` helper ensures that each configuration method returns the configuration object, avoiding errors when developing add-ons. diff --git a/docs/source/addons/public-folder.md b/docs/source/development/add-ons/public-folder.md similarity index 70% rename from docs/source/addons/public-folder.md rename to docs/source/development/add-ons/public-folder.md index 188a9e155a..aec4ab220c 100644 --- a/docs/source/addons/public-folder.md +++ b/docs/source/development/add-ons/public-folder.md @@ -1,10 +1,10 @@ --- myst: html_meta: - "description": "How to add static served files from your add-on to your build" - "property=og:description": "How to add static served files to the build from an add-on" + "description": "How to add static files from your add-on to your build" + "property=og:description": "How to add static files from your add-on to your build" "property=og:title": "Add static files from your add-on to your build" - "keywords": "Volto, Plone, Semantic UI, CSS, Volto theme, add-on, static, assets, files, build" + "keywords": "Volto, Plone, Semantic UI, CSS, theme, add-on, static, assets, files, build" --- # Add static files from your add-on to your build @@ -22,8 +22,7 @@ It is useful to define static files such as the following: ## Procedure to include static files -Create a folder named `public` at the root of your add-on, and add the static files to it. +Create a folder named {file}`public` at the root of your add-on, and add the static files to it. The build process will copy the files, taking into account all add-ons' defined order. The build process copies first the static files defined by Volto, then the static files from add-ons as defined by their configuration order. The last defined file overwrites any previously defined files. - diff --git a/docs/source/development/add-ons/test-add-ons-17.md b/docs/source/development/add-ons/test-add-ons-17.md new file mode 100644 index 0000000000..047c508869 --- /dev/null +++ b/docs/source/development/add-ons/test-add-ons-17.md @@ -0,0 +1,104 @@ +--- +myst: + html_meta: + "description": "How to test add-ons in Volto 17" + "property=og:description": "How to test add-ons in Volto 17" + "property=og:title": "Test add-ons in Volto 17" + "keywords": "Volto, Plone, testing, CI, add-ons" +--- + +# Test add-ons in Volto 17 + +Volto uses {term}`Jest` for unit tests. +You must configure {file}`package.json` to let Jest know about your aliases and make them available to it to resolve them. + +```{code-block} json +:emphasize-lines: 6 + +"jest": { + "moduleNameMapper": { + "@plone/volto/(.*)$": "/node_modules/@plone/volto/src/$1", + "@package/(.*)$": "/src/$1", + "@plone/some-volto-addon/(.*)$": "/src/addons/@plone/some-volto-addon/src/$1", + "my-volto-addon/(.*)$": "/src/addons/my-volto-addon/src/$1", + "~/(.*)$": "/src/$1" + } +} +``` + +You can use `yarn test src/addons/addon-name` to run tests. + + +## Override Jest configuration + +In {term}`CI` or for testing add-ons, it's useful to modify Jest's {file}`package.json` configuration file. +You can use a {file}`jest.config.js` file, or point the test runner to a file of your choice, using the `RAZZLE_JEST_CONFIG` environment variable. + +```shell +RAZZLE_JEST_CONFIG=my-custom-jest-config.js yarn test +``` + +Both configurations are merged in a way that the keys of the configuration provided override the initial {file}`package.json` configuration, either in Volto or in your projects. + + +## Test add-ons in isolation + +Testing an add-on in isolation, as you would when you develop a Plone Python backend add-on, can be a bit challenging, since an add-on needs a working project in order to bootstrap itself. +The latest generator has the boilerplate needed to bootstrap a dockerized environment where you can run any test to your add-on. + + +### Set up the environment + +Run the following command once. + +```shell +make dev +``` + + +### Build the containers manually + +Run the following commands. + +```shell +make build-backend +make build-addon +``` + + +### Unit tests + +Run the following command. + +```shell +make test +``` + + +### Acceptance tests + +Use {term}`Cypress` to run acceptance tests. +Run the following command once. + +```shell +make install-acceptance +``` + +To start the servers, run the following command. + +```shell +make start-test-acceptance-server +``` + +You run the frontend in development mode, so you can develop while writing tests. +Run the following command to run Cypress tests afterward. + +```shell +make test-acceptance +``` + +When finished, shut down the backend server. + +```shell +make stop-test-acceptance-server +``` diff --git a/docs/source/development/add-ons/test-add-ons-18.md b/docs/source/development/add-ons/test-add-ons-18.md new file mode 100644 index 0000000000..cb55a72ad3 --- /dev/null +++ b/docs/source/development/add-ons/test-add-ons-18.md @@ -0,0 +1,63 @@ +--- +myst: + html_meta: + "description": "Test add-ons in Volto 18" + "property=og:description": "Test add-ons in Volto 18" + "property=og:title": "Test add-ons in Volto 18" + "keywords": "Volto, Plone, testing, test, CI, add-ons" +--- + +# Test add-ons in Volto 18 + +```{warning} +This guide assumes that you've used {term}`Cookieplone` to create your add-on boilerplate. +``` + +Volto uses {term}`Jest` for unit tests. +You can create unit tests for testing your add-on. + +Run the following command. + +```shell +make test +``` + +## Override Jest configuration + +In {term}`CI` or for testing add-ons, it's useful to modify Jest's {file}`package.json` configuration file. +You can use the file {file}`jest.config.js` provided by the boilerplate. +The test command will load it and apply it. + +```{warning} +Do not modify the existing keys in there if you don't know what you are doing, since some of them are required for the tests to run properly in the Volto context. +``` + +Both configurations are merged in a way that the keys of the configuration provided override the initial {file}`package.json` configuration, either in Volto or in your projects. + +```{note} +For more background on testing add-ons in Volto 18, see {doc}`../../contributing/testing`, since the developer experience has been unified for both add-ons and Volto core. +``` + +### Acceptance tests + +Use {term}`Cypress` to run acceptance tests. + +To start the backend server, run the following command. +This will start a Docker container with a vanilla Plone backend. + +```shell +make acceptance-backend-start +``` + +To start the frontend acceptance server in development mode, run the following command. + +```shell +make acceptance-frontend-dev-start +``` + +You can run the frontend in development mode, so you can develop while writing tests. +Run the following command to run Cypress tests afterward. + +```shell +make acceptance-test +``` diff --git a/docs/source/development/add-ons/theme.md b/docs/source/development/add-ons/theme.md new file mode 100644 index 0000000000..914e3b1295 --- /dev/null +++ b/docs/source/development/add-ons/theme.md @@ -0,0 +1,248 @@ +--- +myst: + html_meta: + "description": "How to create a Volto theme add-on" + "property=og:description": "How to create a Volto theme add-on" + "property=og:title": "Create a Volto theme add-on" + "keywords": "Volto, Plone, Semantic UI, CSS, theme, add-on" +--- + +# Create a Volto theme add-on + +You can create a Volto theme add-on, keeping it separate from your project files. +By making your Volto theme add-on pluggable, you can deploy the same theme in different projects. +You can even create themes that depend on conditions that you inject at build time. + +The file {file}`volto.config.js` provides the ability to programmatically declare add-ons and the active theme. +See {ref}`volto-config-js` for more information. +For convenience, it can also be set via a `THEME` environment variable. + +1. In your {file}`volto.config.js` file at the root of your project, add a `theme` key with the value of your theme's name. + + ```js + module.exports = { + addons: [], + theme: 'volto-my-theme' + }; + ``` + + Alternatively, you can add a `theme` key in your {file}`package.json` project. + + ```json + "theme": "volto-my-theme" + ``` + + Or you can set the theme name through the `THEME` environment variable. + + ```shell + THEME='volto-my-theme' pnpm start + ``` + +2. Create a directory {file}`src/theme` in your add-on. + Inside that directory, create a new file {file}`theme.config`, adding the following content, but replacing `` with your add-on name. + + ```less + /******************************* + Theme Selection + *******************************/ + + /* To override a theme for an individual element specify theme name below */ + + /* Global */ + @site : 'pastanaga'; + @reset : 'pastanaga'; + + /* Elements */ + @button : 'pastanaga'; + @container : 'pastanaga'; + @divider : 'pastanaga'; + @flag : 'pastanaga'; + @header : 'pastanaga'; + @icon : 'pastanaga'; + @image : 'pastanaga'; + @input : 'pastanaga'; + @label : 'pastanaga'; + @list : 'pastanaga'; + @loader : 'pastanaga'; + @placeholder : 'pastanaga'; + @rail : 'pastanaga'; + @reveal : 'pastanaga'; + @segment : 'pastanaga'; + @step : 'pastanaga'; + + /* Collections */ + @breadcrumb : 'pastanaga'; + @form : 'pastanaga'; + @grid : 'pastanaga'; + @menu : 'pastanaga'; + @message : 'pastanaga'; + @table : 'pastanaga'; + + /* Modules */ + @accordion : 'pastanaga'; + @checkbox : 'pastanaga'; + @dimmer : 'pastanaga'; + @dropdown : 'pastanaga'; + @embed : 'pastanaga'; + @modal : 'pastanaga'; + @nag : 'pastanaga'; + @popup : 'pastanaga'; + @progress : 'pastanaga'; + @rating : 'pastanaga'; + @search : 'pastanaga'; + @shape : 'pastanaga'; + @sidebar : 'pastanaga'; + @sticky : 'pastanaga'; + @tab : 'pastanaga'; + @transition : 'pastanaga'; + + /* Views */ + @ad : 'pastanaga'; + @card : 'pastanaga'; + @comment : 'pastanaga'; + @feed : 'pastanaga'; + @item : 'pastanaga'; + @statistic : 'pastanaga'; + + /* Extras */ + @main : 'pastanaga'; + @custom : 'pastanaga'; + + /******************************* + Folders + *******************************/ + + /* Path to theme packages */ + @themesFolder : '~volto-themes'; + + /* Path to site override folder */ + @siteFolder : "/theme"; + + /******************************* + Import Theme + *******************************/ + + @import (multiple) "~semantic-ui-less/theme.less"; + @fontPath : "~volto-themes/@{theme}/assets/fonts"; + + .loadAddonOverrides() { + @import (optional) "@{siteFolder}/@{addon}/@{addontype}s/@{addonelement}.overrides"; + } + + /* End Config */ + ``` + +3. Declare the theme as an add-on by adding its name to the value for the `addons` key in either {file}`volto.config.js` or {file}`package.json` in your project. + +4. After starting Volto, the theme should be active. + Now you can add overrides to the default theme in {file}`src/theme`, the same as you would in a project. + +5. Finally, you can safely delete your project's original {file}`theme` folder, since the one in the add-on will take precedence, and a project can only have one active theme at a time. + + +## Using your own theming escape hatch + +Volto theming uses Semantic UI theming capabilities to define and extend a theme for your site. +However, while maintaining and playing well with the Semantic UI Volto base, you can use a traditional CSS approach using the LESS preprocessor-based `extras` escape hatch. + +At the same time, you can either discard or complement the `extras` escape hatch and add your own, by customizing the {file}`theme.js` module in Volto. + +```js +import 'semantic-ui-less/semantic.less'; +import '@plone/volto/../theme/themes/pastanaga/extras/extras.less'; + +// You can add more entry points for theming +import '@kitconcept/volto-light-theme/theme/main.scss'; +``` + +Customizing the base theme is a special use case in Volto. +To begin, add a {file}`./@root/theme.js` file structure in your {file}`customizations` folder in your add-on or project. + +You may want to do this to create a completely new theming experience adapted to your way of doing things that do not match the current Volto theming experience. +For example, if you want to use another preprocessor in the theme, such as SCSS. +Or perhaps your client requires the base consist entirely of pre-made components based on another library beside Semantic UI. +See {ref}`volto-custom-theming-strategy` for an example of a custom theme escape hatch. + +While building your own escape hatch for theming, you can use the preprocessor of your choice, while maintaining the "base" Volto theme, but customizing it using the resultant CSS. + +You can see an example of such a theme in [Volto Light Theme](https://github.com/kitconcept/volto-light-theme). + + +## Modify a custom theme from another add-on + +Sometimes you have a custom theme that you want to reuse through all your projects, but with some differences, maintaining the base. +Usually, the only option would be to use an add-on that adds more CSS to the base theme, using imports that will load after the theme. +However, there is a problem with this approach. +You cannot use existing theme variables, including breakpoints, on these new styles. +Similarly, it gets somewhat detached from the normal flow of the loaded theme. +The same applies for add-ons, as they are detached from the current theme. +You could use a Semantic UI approach for making this work, but then it's bound to Semantic UI. + +```{warning} +This is only possible when using your own escape hatch, and works only with SCSS-based themes, and not with Semantic UI themes, since it enables a couple of entry points that only support SCSS files. +For an example of how it could be used, see [Volto Light Theme](https://github.com/kitconcept/volto-light-theme). +``` + +If your custom escape hatch defines a custom theme using SCSS, you can take advantage of this feature. +Although not limited to this, it would be possible to extend this feature to add more entry points, using another preprocessor or theming approach. + +This feature enables two entry point files, {file}`_variables.scss` and {file}`_main.scss`. +From your add-on code, you can extend an existing theme by creating a file corresponding to each entry point: + +- {file}`./src/theme/_variables.scss` +- {file}`./src/theme/_main.scss` + + +### Variables + +You can use the entry point `addonsThemeCustomizationsVariables` to modify the original variables of the currently loaded theme by adding the entry point before the theme variable definitions. +In the theme, it should be imported as shown below. + +```{code-block} scss +:emphasize-lines: 2 + +@import 'addonsThemeCustomizationsVariables'; +@import 'variables'; +@import 'typography'; +@import 'utils'; +@import 'layout'; +``` + +````{warning} +Following SCSS best practices, your theme variables should be "overridable" using the `!default` flag. +This assigns a value to a variable _only_ if that variable isn't defined or its value is [`null`](https://sass-lang.com/documentation/values/null). +Otherwise, the existing value will be used. + +```{seealso} +https://sass-lang.com/documentation/variables#default-values +``` +```` + +Volto will not only load your add-on entry point files, but it will also detect all the add-ons that have these entry point files, and import them grouped under a single file. +It will also automatically add an `addonsThemeCustomizationsVariables` alias that you can reference from the theme as shown above. + + +### Main + +You can use the entry point `addonsThemeCustomizationsMain` to add your own style definitions, complementing those in the theme. +You should add it after all the CSS of your theme: + +```{code-block} scss +:emphasize-lines: 6 + +@import 'blocks/search'; +@import 'blocks/listing'; + +@import 'temp'; + +@import 'addonsThemeCustomizationsMain'; + +/* No CSS beyond this point */ +``` + +Volto will also detect all the add-ons that have these entry point files, and import them grouped under a single file. +It will also automatically add an `addonsThemeCustomizationsMain` alias that you can reference from the theme as shown above. + +```{note} +It will only work in combination with the theme declaration in {file}`volto.config.js` or in {file}`package.json`. +``` diff --git a/docs/source/development/add-ons/troubleshoot-transpilation.md b/docs/source/development/add-ons/troubleshoot-transpilation.md new file mode 100644 index 0000000000..2cf7e761b6 --- /dev/null +++ b/docs/source/development/add-ons/troubleshoot-transpilation.md @@ -0,0 +1,78 @@ +--- +myst: + html_meta: + "description": "Troubleshoot untranspiled add-on dependencies" + "property=og:description": "Troubleshoot untranspiled add-on dependencies" + "property=og:title": "Troubleshoot untranspiled add-on dependencies" + "keywords": "Volto, add-on, extensions, frontend, Plone, configuration, troubleshoot" +--- + +# Troubleshoot untranspiled add-on dependencies + +```{note} +In Volto 18 and later, Babel improved support for ES specifications, such as for the null coalescence operator. +However the following procedure can be useful in other scenarios. +``` + +When using external add-ons in your project, sometimes you will run into add-ons that are not securely transpiled or haven't been transpiled at all. +In that case, you might see an error such as the following: + +```console +Module parse failed: Unexpected token (10:41) in @react-leaflet/core/esm/path.js +... +const options = props.pathOptions ?? {}; +... +``` + +Babel automatically transpiles the code in your add-on, but {file}`node_modules` are excluded from this process. +You need to include the add-on path in the list of modules to be transpiled. +To do so, customize the webpack configuration in the {file}`razzle.config.js` file in your add-on. +For example, suppose that you want to use react-leaflet, which has a known transpilation issue. + +```js +const path = require('path'); +const makeLoaderFinder = require('razzle-dev-utils/makeLoaderFinder'); + +const babelLoaderFinder = makeLoaderFinder('babel-loader'); + +const jsConfig = require('./jsconfig').compilerOptions; + +const pathsConfig = jsConfig.paths; +let voltoPath = './node_modules/@plone/volto'; +Object.keys(pathsConfig).forEach((pkg) => { + if (pkg === '@plone/volto') { + voltoPath = `./${jsConfig.baseUrl}/${pathsConfig[pkg][0]}`; + } +}); + +const { modifyWebpackConfig, plugins } = require(`${voltoPath}/razzle.config`); + +const customModifyWebpackConfig = ({ env, webpackConfig, webpackObject, options }) => { + const config = modifyWebpackConfig({ + env, + webpackConfig, + webpackObject, + options, + }); + const babelLoader = config.module.rules.find(babelLoaderFinder); + const { include } = babelLoader; + const corePath = path.join( + path.dirname(require.resolve('@react-leaflet/core')), + '..', + ); + const esmPath = path.join( + path.dirname(require.resolve('react-leaflet')), + '..', + ); + + include.push(corePath); + include.push(esmPath); + return config; +}; + +module.exports = { modifyWebpackConfig: customModifyWebpackConfig, plugins }; +``` + +First you need some setup to get the webpack configuration from Volto's configuration. +Once you have that, you need to resolve the path to the desired add-ons, and push it into the Babel loader include list. +After this, the add-ons will load correctly. diff --git a/docs/source/development/i18n.md b/docs/source/development/i18n.md index f9f2f4dd03..7fb232a9b6 100644 --- a/docs/source/development/i18n.md +++ b/docs/source/development/i18n.md @@ -11,7 +11,7 @@ myst: {term}`Internationalization` (i18n) is the process of creating user interfaces which are suitable for different languages and cultural contexts. -This chapter describes the most common use cases for internationalization when developing your {doc}`../addons/index` or contributing to the Volto core itself. +This chapter describes the most common use cases for internationalization when developing your {doc}`../development/add-ons/index` or contributing to the Volto core itself. ## Process and file structure overview diff --git a/docs/source/development/index.md b/docs/source/development/index.md index a1e5952999..b0e1d64b1a 100644 --- a/docs/source/development/index.md +++ b/docs/source/development/index.md @@ -21,6 +21,7 @@ Or jump in to any topic listed below. overview creating-project +add-ons/index folder-structure environment-variables customizing-components diff --git a/docs/source/index.md b/docs/source/index.md index 2b47ebce16..e96dcc0e1d 100644 --- a/docs/source/index.md +++ b/docs/source/index.md @@ -71,6 +71,7 @@ tutorials/index contributing/index release-notes/index release-management-notes/index +conceptual-guides/index ``` % Only check change log entries in Volto documentation—not when it is included in the main Plone documentation—to ensure links work and do not redirect. diff --git a/docs/source/theming/index.md b/docs/source/theming/index.md index fe401772f3..e2577b2c31 100644 --- a/docs/source/theming/index.md +++ b/docs/source/theming/index.md @@ -9,6 +9,10 @@ myst: # Theming +This section of the documentation describes theming in Volto. + + +## Conceptual guides ```{toctree} :maxdepth: 1 @@ -17,7 +21,19 @@ about-semantic semanticui-theming theming-engine theming-strategy +``` + + +## How-to guides + +```{toctree} +:maxdepth: 1 + custom-styling using-third-party-themes theming-a-base-theme ``` + +```{seealso} +For how to create your theme as an add-on in Volto 18 and later, see {doc}`../development/add-ons/theme`. +``` diff --git a/packages/volto/news/6397.documentation b/packages/volto/news/6397.documentation new file mode 100644 index 0000000000..21135b8b4a --- /dev/null +++ b/packages/volto/news/6397.documentation @@ -0,0 +1 @@ +Overhaul and update of the add-ons section in documentation. @sneridagh From 5c0dd143fca3b0c6be46e384eefbda12be06b536 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Fern=C3=A1ndez=20de=20Alba?= Date: Wed, 6 Nov 2024 17:23:09 +0100 Subject: [PATCH 26/47] React Router 7 experimental PoC (#6472) --- PACKAGES.md | 22 +- apps/rr7/.eslintrc.cjs | 80 + apps/rr7/.gitignore | 7 + apps/rr7/README.md | 30 + apps/rr7/app/client.ts | 8 + apps/rr7/app/config.ts | 15 + apps/rr7/app/root.tsx | 98 ++ apps/rr7/app/routes.ts | 7 + apps/rr7/app/routes/$.tsx | 2 + apps/rr7/app/routes/home.tsx | 79 + apps/rr7/app/utils.ts | 17 + apps/rr7/package.json | 39 + apps/rr7/public/favicon.ico | Bin 0 -> 15086 bytes apps/rr7/tsconfig.json | 33 + apps/rr7/vite.config.ts | 28 + docs/source/contributing/developing-core.md | 13 +- packages/volto/news/6472.internal | 1 + pnpm-lock.yaml | 1445 ++++++++++++++++--- 18 files changed, 1727 insertions(+), 197 deletions(-) create mode 100644 apps/rr7/.eslintrc.cjs create mode 100644 apps/rr7/.gitignore create mode 100644 apps/rr7/README.md create mode 100644 apps/rr7/app/client.ts create mode 100644 apps/rr7/app/config.ts create mode 100644 apps/rr7/app/root.tsx create mode 100644 apps/rr7/app/routes.ts create mode 100644 apps/rr7/app/routes/$.tsx create mode 100644 apps/rr7/app/routes/home.tsx create mode 100644 apps/rr7/app/utils.ts create mode 100644 apps/rr7/package.json create mode 100644 apps/rr7/public/favicon.ico create mode 100644 apps/rr7/tsconfig.json create mode 100644 apps/rr7/vite.config.ts create mode 100644 packages/volto/news/6472.internal diff --git a/PACKAGES.md b/PACKAGES.md index 12193c73fe..5093ba58e9 100644 --- a/PACKAGES.md +++ b/PACKAGES.md @@ -28,25 +28,31 @@ Core packages must not depend on any other `@plone/*` package, with only one exc They must be published and bundled in a traditional (transpiled) way. The bundle of these packages must work on both CommonJS and ECMAScript Module (ESM) environments. -## Feature packages - -- `@plone/contents` - - ## Utility packages -- `@plone/blocks` +- `@plone/providers` - `@plone/helpers` - `@plone/drivers` - `@plone/rsc` - ### Rules Utility packages can depend on core packages and other utility packages. They must be published in a traditional way, bundled. This bundle must work on both CommonJS and ESM environments. +## Feature packages + +- `@plone/blocks` +- `@plone/slots` +- `@plone/contents` + +### Rules + +Feature packages (or add-on packages) can depend on any other package. +They must not be transpiled, but as source. +They must provide a default configuration registry loader as default main entry point export. +They must be able to be loaded as any other add-on. ## Development utility packages @@ -55,7 +61,7 @@ They contain utilities that are useful for the development of a Volto project. Some of them are released: - `@plone/scripts` -- `@plone/generator-volto` +- `@plone/generator-volto` (deprecated) Some of them are used by the build, and separated in packages for convenience. diff --git a/apps/rr7/.eslintrc.cjs b/apps/rr7/.eslintrc.cjs new file mode 100644 index 0000000000..b4a6a65b4d --- /dev/null +++ b/apps/rr7/.eslintrc.cjs @@ -0,0 +1,80 @@ +/** + * This is intended to be a basic starting point for linting in your app. + * It relies on recommended configs out of the box for simplicity, but you can + * and should modify this configuration to best suit your team's needs. + */ + +/** @type {import('eslint').Linter.Config} */ +module.exports = { + root: true, + parserOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + ecmaFeatures: { + jsx: true, + }, + }, + env: { + browser: true, + commonjs: true, + es6: true, + }, + + // Base config + extends: ['eslint:recommended'], + + overrides: [ + // React + { + files: ['**/*.{js,jsx,ts,tsx}'], + plugins: ['react', 'jsx-a11y'], + extends: [ + 'plugin:react/recommended', + 'plugin:react/jsx-runtime', + 'plugin:react-hooks/recommended', + 'plugin:jsx-a11y/recommended', + ], + settings: { + react: { + version: 'detect', + }, + formComponents: ['Form'], + linkComponents: [ + { name: 'Link', linkAttribute: 'to' }, + { name: 'NavLink', linkAttribute: 'to' }, + ], + }, + }, + + // Typescript + { + files: ['**/*.{ts,tsx}'], + plugins: ['@typescript-eslint', 'import'], + parser: '@typescript-eslint/parser', + settings: { + 'import/internal-regex': '^~/', + 'import/resolver': { + node: { + extensions: ['.ts', '.tsx'], + }, + typescript: { + alwaysTryTypes: true, + }, + }, + }, + extends: [ + 'plugin:@typescript-eslint/recommended', + 'plugin:import/recommended', + 'plugin:import/typescript', + ], + }, + + // Node + { + files: ['.eslintrc.js'], + env: { + node: true, + }, + }, + ], +}; diff --git a/apps/rr7/.gitignore b/apps/rr7/.gitignore new file mode 100644 index 0000000000..f1eb112b25 --- /dev/null +++ b/apps/rr7/.gitignore @@ -0,0 +1,7 @@ +node_modules + +/.cache +/build +.env +.react-router +.registry.loader.js diff --git a/apps/rr7/README.md b/apps/rr7/README.md new file mode 100644 index 0000000000..4b8067e628 --- /dev/null +++ b/apps/rr7/README.md @@ -0,0 +1,30 @@ +# Plone on React Router 7 + +This is a proof of concept of a [React Router](https://reactrouter.com/dev/docs) app, using the `@plone/*` libraries. +This is intended to serve as both a playground for the development of both packages and as a demo of Plone using Remix. + +> [!WARNING] +> This package or app is experimental. +> The community offers no support whatsoever for it. +> Breaking changes may occur without notice. + +## Development + +To start, from the root of the monorepo: + +```shell +pnpm install +pnpm --filter plone-remix run dev +``` + +Then start the Plone backend: + +% TODO MAKEFILE +```shell +make backend-docker-start +``` + + +## About this app + +- [Remix Docs](https://remix.run/docs/en/main) diff --git a/apps/rr7/app/client.ts b/apps/rr7/app/client.ts new file mode 100644 index 0000000000..0eec9cd62e --- /dev/null +++ b/apps/rr7/app/client.ts @@ -0,0 +1,8 @@ +import ploneClient from '@plone/client'; +import config from '@plone/registry'; + +const cli = ploneClient.initialize({ + apiPath: config.settings.apiPath, +}); + +export { cli as ploneClient }; diff --git a/apps/rr7/app/config.ts b/apps/rr7/app/config.ts new file mode 100644 index 0000000000..e7133efdce --- /dev/null +++ b/apps/rr7/app/config.ts @@ -0,0 +1,15 @@ +import config from '@plone/registry'; +import { blocksConfig, slate } from '@plone/blocks'; + +const settings = { + apiPath: 'http://localhost:3000', + slate, +}; + +// @ts-expect-error We need to fix typing +config.set('settings', settings); + +// @ts-expect-error We need to fix typing +config.set('blocks', { blocksConfig }); + +export default config; diff --git a/apps/rr7/app/root.tsx b/apps/rr7/app/root.tsx new file mode 100644 index 0000000000..50808c5b17 --- /dev/null +++ b/apps/rr7/app/root.tsx @@ -0,0 +1,98 @@ +import { useState } from 'react'; +import { + Links, + Meta, + Outlet, + Scripts, + ScrollRestoration, + useHref, + useLocation, + useNavigate, + useParams, +} from 'react-router'; +import type { LinksFunction } from 'react-router'; + +import { QueryClient } from '@tanstack/react-query'; +import { ReactQueryDevtools } from '@tanstack/react-query-devtools'; +import PloneClient from '@plone/client'; +import { PloneProvider } from '@plone/providers'; +import { flattenToAppURL } from './utils'; +import config from '@plone/registry'; +import './config'; + +import '@plone/components/dist/basic.css'; + +function useHrefLocal(to: string) { + return useHref(flattenToAppURL(to)); +} + +export const links: LinksFunction = () => [ + { rel: 'preconnect', href: 'https://fonts.googleapis.com' }, + { + rel: 'preconnect', + href: 'https://fonts.gstatic.com', + crossOrigin: 'anonymous', + }, + { + rel: 'stylesheet', + href: 'https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap', + }, +]; + +export function Layout({ children }: { children: React.ReactNode }) { + return ( + + + + + + + + + {children} + + + + + ); +} + +export default function App() { + const [queryClient] = useState( + () => + new QueryClient({ + defaultOptions: { + queries: { + // With SSR, we usually want to set some default staleTime + // above 0 to avoid refetching immediately on the client + staleTime: 60 * 1000, + }, + }, + }), + ); + + const [ploneClient] = useState(() => + PloneClient.initialize({ + apiPath: config.settings.apiPath, + }), + ); + + const RRNavigate = useNavigate(); + const navigate = (to: string) => { + return RRNavigate(flattenToAppURL(to)); + }; + + return ( + + + + + ); +} diff --git a/apps/rr7/app/routes.ts b/apps/rr7/app/routes.ts new file mode 100644 index 0000000000..579d64cd84 --- /dev/null +++ b/apps/rr7/app/routes.ts @@ -0,0 +1,7 @@ +import type { RouteConfig } from '@react-router/dev/routes'; +import { index, route } from '@react-router/dev/routes'; + +export const routes: RouteConfig = [ + index('routes/home.tsx'), + route('*', 'routes/$.tsx'), +]; diff --git a/apps/rr7/app/routes/$.tsx b/apps/rr7/app/routes/$.tsx new file mode 100644 index 0000000000..5216c4d188 --- /dev/null +++ b/apps/rr7/app/routes/$.tsx @@ -0,0 +1,2 @@ +import Content, { loader } from './home'; +export { loader, Content as default }; diff --git a/apps/rr7/app/routes/home.tsx b/apps/rr7/app/routes/home.tsx new file mode 100644 index 0000000000..c470ad9f42 --- /dev/null +++ b/apps/rr7/app/routes/home.tsx @@ -0,0 +1,79 @@ +import type { LoaderArgs } from '../routes/+types.home'; +import { + dehydrate, + QueryClient, + HydrationBoundary, + useQuery, + useQueryClient, +} from '@tanstack/react-query'; +import { flattenToAppURL } from '../utils'; +import { useLoaderData, useLocation } from 'react-router'; +import { usePloneClient } from '@plone/providers'; +import { Breadcrumbs, RenderBlocks } from '@plone/components'; +import config from '@plone/registry'; +import { ploneClient } from '../client'; + +import type { MetaFunction } from 'react-router'; + +export const meta: MetaFunction = () => { + return [ + { title: 'Plone on React Router 7' }, + { name: 'description', content: 'Welcome to Plone!' }, + ]; +}; + +const expand = ['breadcrumbs', 'navigation']; + +// eslint-disable-next-line @typescript-eslint/no-unused-vars +export async function loader({ params, request }: LoaderArgs) { + const queryClient = new QueryClient({ + defaultOptions: { + queries: { + // With SSR, we usually want to set some default staleTime + // above 0 to avoid refetching immediately on the client + staleTime: 60 * 1000, + }, + }, + }); + + const { getContentQuery } = ploneClient; + + await queryClient.prefetchQuery( + getContentQuery({ path: flattenToAppURL(request.url), expand }), + ); + + return { dehydratedState: dehydrate(queryClient) }; +} + +function Page() { + const { getContentQuery } = usePloneClient(); + const pathname = useLocation().pathname; + const { data } = useQuery(getContentQuery({ path: pathname, expand })); + + if (!data) return 'Loading...'; + return ( + <> + + + + ); +} + +export default function Content() { + const { dehydratedState } = useLoaderData(); + const queryClient = useQueryClient(); + + return ( + + + + ); +} diff --git a/apps/rr7/app/utils.ts b/apps/rr7/app/utils.ts new file mode 100644 index 0000000000..c297613f90 --- /dev/null +++ b/apps/rr7/app/utils.ts @@ -0,0 +1,17 @@ +import config from './config'; + +/** + * Flatten to app server URL - Given a URL if it starts with the API server URL + * this method flattens it (removes) the server part + * TODO: Update it when implementing non-root based app location (on a + * directory other than /, eg. /myapp) + * @method flattenToAppURL + */ +export function flattenToAppURL(url: string) { + const { settings } = config; + + return ( + url && + url.replace(settings.apiPath, '').replace('http://localhost:3000', '') + ); +} diff --git a/apps/rr7/package.json b/apps/rr7/package.json new file mode 100644 index 0000000000..fa204ea503 --- /dev/null +++ b/apps/rr7/package.json @@ -0,0 +1,39 @@ +{ + "name": "plone-rr7", + "private": true, + "sideEffects": false, + "type": "module", + "scripts": { + "dev": "react-router dev", + "build": "react-router build", + "start:prod": "react-router-serve ./build/server/index.js", + "typecheck": "react-router typegen && tsc", + "typegen": "react-router typegen" + }, + "dependencies": { + "@react-router/node": "7.0.0-pre.4", + "@react-router/serve": "7.0.0-pre.4", + "@tanstack/react-query": "^5.59.0", + "@tanstack/react-query-devtools": "^5.59.0", + "isbot": "^5.1.17", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-router": "7.0.0-pre.4" + }, + "devDependencies": { + "@plone/blocks": "workspace:*", + "@plone/client": "workspace:*", + "@plone/components": "workspace:*", + "@plone/providers": "workspace:*", + "@plone/registry": "workspace:*", + "@react-router/dev": "7.0.0-pre.4", + "@types/react": "^18.3.9", + "@types/react-dom": "^18.3.0", + "typescript": "^5.6.3", + "vite": "^5.4.9", + "vite-tsconfig-paths": "^5.0.1" + }, + "engines": { + "node": ">=20.0.0" + } +} diff --git a/apps/rr7/public/favicon.ico b/apps/rr7/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..5dbdfcddcb14182535f6d32d1c900681321b1aa3 GIT binary patch literal 15086 zcmeI33v3ic7{|AFEmuJ-;v>ep_G*NPi6KM`qNryCe1PIJ8siIN1WZ(7qVa)RVtmC% z)Ch?tN+afMKm;5@rvorJk zcXnoOc4q51HBQnQH_jn!cAg&XI1?PlX>Kl^k8qq0;zkha`kY$Fxt#=KNJAE9CMdpW zqr4#g8`nTw191(+H4xW8Tmyru2I^3=J1G3emPxkPXA=3{vvuvse_WWSshqaqls^-m zgB7q8&Vk*aYRe?sn$n53dGH#%3y%^vxv{pL*-h0Z4bmb_(k6{FL7HWIz(V*HT#IcS z-wE{)+0x1U!RUPt3gB97%p}@oHxF4|6S*+Yw=_tLtxZ~`S=z6J?O^AfU>7qOX`JNBbV&8+bO0%@fhQitKIJ^O^ zpgIa__qD_y07t@DFlBJ)8SP_#^j{6jpaXt{U%=dx!qu=4u7^21lWEYHPPY5U3TcoQ zX_7W+lvZi>TapNk_X>k-KO%MC9iZp>1E`N34gHKd9tK&){jq2~7OsJ>!G0FzxQFw6G zm&Vb(2#-T|rM|n3>uAsG_hnbvUKFf3#ay@u4uTzia~NY%XgCHfx4^To4BDU@)HlV? z@EN=g^ymETa1sQK{kRwyE4Ax8?wT&GvaG@ASO}{&a17&^v`y z!oPdiSiia^oov(Z)QhG2&|FgE{M9_4hJROGbnj>#$~ZF$-G^|zPj*QApltKe?;u;uKHJ~-V!=VLkg7Kgct)l7u39f@%VG8e3f$N-B zAu3a4%ZGf)r+jPAYCSLt73m_J3}p>}6Tx0j(wg4vvKhP!DzgiWANiE;Ppvp}P2W@m z-VbYn+NXFF?6ngef5CfY6ZwKnWvNV4z6s^~yMXw2i5mv}jC$6$46g?G|CPAu{W5qF zDobS=zb2ILX9D827g*NtGe5w;>frjanY{f)hrBP_2ehBt1?`~ypvg_Ot4x1V+43P@Ve8>qd)9NX_jWdLo`Zfy zoeam9)@Dpym{4m@+LNxXBPjPKA7{3a&H+~xQvr>C_A;7=JrfK~$M2pCh>|xLz>W6SCs4qC|#V`)# z)0C|?$o>jzh<|-cpf

K7osU{Xp5PG4-K+L2G=)c3f&}H&M3wo7TlO_UJjQ-Oq&_ zjAc9=nNIYz{c3zxOiS5UfcE1}8#iI4@uy;$Q7>}u`j+OU0N<*Ezx$k{x_27+{s2Eg z`^=rhtIzCm!_UcJ?Db~Lh-=_))PT3{Q0{Mwdq;0>ZL%l3+;B&4!&xm#%HYAK|;b456Iv&&f$VQHf` z>$*K9w8T+paVwc7fLfMlhQ4)*zL_SG{~v4QR;IuX-(oRtYAhWOlh`NLoX0k$RUYMi z2Y!bqpdN}wz8q`-%>&Le@q|jFw92ErW-hma-le?S z-@OZt2EEUm4wLsuEMkt4zlyy29_3S50JAcQHTtgTC{P~%-mvCTzrjXOc|{}N`Cz`W zSj7CrXfa7lcsU0J(0uSX6G`54t^7}+OLM0n(|g4waOQ}bd3%!XLh?NX9|8G_|06Ie zD5F1)w5I~!et7lA{G^;uf7aqT`KE&2qx9|~O;s6t!gb`+zVLJyT2T)l*8l(j literal 0 HcmV?d00001 diff --git a/apps/rr7/tsconfig.json b/apps/rr7/tsconfig.json new file mode 100644 index 0000000000..29b2316386 --- /dev/null +++ b/apps/rr7/tsconfig.json @@ -0,0 +1,33 @@ +{ + "include": [ + "**/*.ts", + "**/*.tsx", + "**/.server/**/*.ts", + "**/.server/**/*.tsx", + "**/.client/**/*.ts", + "**/.client/**/*.tsx", + ".react-router/types/**/*" + ], + "compilerOptions": { + "lib": ["DOM", "DOM.Iterable", "ES2022"], + "types": ["@react-router/node", "vite/client"], + "isolatedModules": true, + "esModuleInterop": true, + "jsx": "react-jsx", + "module": "ESNext", + "moduleResolution": "Bundler", + "resolveJsonModule": true, + "target": "ES2022", + "strict": true, + "allowJs": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "baseUrl": ".", + "paths": { + "~/*": ["./app/*"] + }, + "noEmit": true, + "rootDirs": [".", "./.react-router/types"], + "plugins": [{ "name": "@react-router/dev" }] + } +} diff --git a/apps/rr7/vite.config.ts b/apps/rr7/vite.config.ts new file mode 100644 index 0000000000..723e0323af --- /dev/null +++ b/apps/rr7/vite.config.ts @@ -0,0 +1,28 @@ +import { reactRouter } from '@react-router/dev/vite'; +import tsconfigPaths from 'vite-tsconfig-paths'; +import { defineConfig } from 'vite'; +import { PloneRegistryVitePlugin } from '@plone/registry/vite-plugin'; + +export default defineConfig({ + plugins: [ + reactRouter({ + // Server-side render by default, to enable SPA mode set this to `false` + ssr: true, + }), + tsconfigPaths(), + PloneRegistryVitePlugin(), + ], + server: { + port: 3000, + proxy: { + '^/\\+\\+api\\+\\+($$|/.*)': { + target: + 'http://localhost:8080/VirtualHostBase/http/localhost:3000/Plone/++api++/VirtualHostRoot', + rewrite: (path) => { + console.log(path); + return path.replace('/++api++', ''); + }, + }, + }, + }, +}); diff --git a/docs/source/contributing/developing-core.md b/docs/source/contributing/developing-core.md index cad81c3685..f0507b2ede 100644 --- a/docs/source/contributing/developing-core.md +++ b/docs/source/contributing/developing-core.md @@ -48,7 +48,8 @@ Volto has the following folder structure. ├─ apps/ │ ├─ plone │ ├─ nextjs -│ └─ remix +│ ├─ remix +│ └─ rr7 ├─ packages/ │ ├─ volto │ ├─ client @@ -399,6 +400,16 @@ You can try it out using the following command. pnpm --filter plone-remix dev ``` +### React Router 7 + +This frontend is a proof of concept using React Router 7 with Plone. + +You can try it out using the following command. + +```shell +pnpm --filter plone-rr7 dev +``` + ### Vite build (client only) This frontend is a proof of concept using a custom client build based in Vite with Plone. diff --git a/packages/volto/news/6472.internal b/packages/volto/news/6472.internal new file mode 100644 index 0000000000..af14cbd425 --- /dev/null +++ b/packages/volto/news/6472.internal @@ -0,0 +1 @@ +Added React Router 7 experimental PoC. @sneridagh diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 28674fea48..d17950b412 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -158,6 +158,67 @@ importers: specifier: ^4.2.1 version: 4.3.2(typescript@5.6.3)(vite@5.4.9(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3)) + apps/rr7: + dependencies: + '@react-router/node': + specifier: 7.0.0-pre.4 + version: 7.0.0-pre.4(react-router@7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.6.3) + '@react-router/serve': + specifier: 7.0.0-pre.4 + version: 7.0.0-pre.4(react-router@7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.6.3) + '@tanstack/react-query': + specifier: ^5.59.0 + version: 5.59.15(react@18.2.0) + '@tanstack/react-query-devtools': + specifier: ^5.59.0 + version: 5.59.15(@tanstack/react-query@5.59.15(react@18.2.0))(react@18.2.0) + isbot: + specifier: ^5.1.17 + version: 5.1.17 + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + react-router: + specifier: 7.0.0-pre.4 + version: 7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + devDependencies: + '@plone/blocks': + specifier: workspace:* + version: link:../../packages/blocks + '@plone/client': + specifier: workspace:* + version: link:../../packages/client + '@plone/components': + specifier: workspace:* + version: link:../../packages/components + '@plone/providers': + specifier: workspace:* + version: link:../../packages/providers + '@plone/registry': + specifier: workspace:* + version: link:../../packages/registry + '@react-router/dev': + specifier: 7.0.0-pre.4 + version: 7.0.0-pre.4(@react-router/serve@7.0.0-pre.4(react-router@7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.6.3))(@types/node@20.12.7)(babel-plugin-macros@3.1.0)(less@3.11.1)(lightningcss@1.24.1)(react-router@7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(sass@1.75.0)(terser@5.30.3)(typescript@5.6.3)(vite@5.4.9(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3)) + '@types/react': + specifier: ^18.3.9 + version: 18.3.12 + '@types/react-dom': + specifier: ^18.3.0 + version: 18.3.1 + typescript: + specifier: ^5.6.3 + version: 5.6.3 + vite: + specifier: ^5.4.9 + version: 5.4.9(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3) + vite-tsconfig-paths: + specifier: ^5.0.1 + version: 5.1.0(typescript@5.6.3)(vite@5.4.9(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3)) + apps/vite: dependencies: '@plone/blocks': @@ -494,7 +555,7 @@ importers: version: 8.0.8(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.6.3) '@storybook/react-vite': specifier: ^8.0.4 - version: 8.0.8(@preact/preset-vite@2.8.2(@babel/core@7.24.4)(vite@5.4.8(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3)))(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@4.24.0)(typescript@5.6.3)(vite@5.4.8(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3)) + version: 8.0.8(@preact/preset-vite@2.8.2(@babel/core@7.25.8)(vite@5.4.8(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3)))(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@4.24.0)(typescript@5.6.3)(vite@5.4.8(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3)) '@storybook/theming': specifier: ^8.0.4 version: 8.0.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -542,7 +603,7 @@ importers: version: 17.1.1(typescript@5.6.3) storybook: specifier: ^8.0.4 - version: 8.0.8(@babel/preset-env@7.24.4(@babel/core@7.24.4))(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 8.0.8(@babel/preset-env@7.24.4(@babel/core@7.25.8))(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) tsup: specifier: ^8.3.5 version: 8.3.5(@microsoft/api-extractor@7.43.0(@types/node@20.12.7))(@swc/core@1.4.16)(jiti@1.21.6)(postcss@8.4.47)(tsx@4.19.1)(typescript@5.6.3) @@ -1515,7 +1576,7 @@ importers: version: 1.14.0 storybook: specifier: ^8.0.4 - version: 8.0.8(@babel/preset-env@7.24.4(@babel/core@7.24.4))(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 8.0.8(@babel/preset-env@7.24.4(@babel/core@7.25.8))(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) style-loader: specifier: 3.3.1 version: 3.3.1(webpack@5.90.1(esbuild@0.20.2)) @@ -1608,7 +1669,7 @@ importers: version: 3.12.1(react@18.2.0) react-redux: specifier: 8.1.2 - version: 8.1.2(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(redux@4.2.1) + version: 8.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(redux@4.2.1) react-router-dom: specifier: 5.2.0 version: 5.2.0(react@18.2.0) @@ -1660,7 +1721,7 @@ importers: version: 6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.12.7))(vitest@2.1.3(@types/node@20.12.7)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3)) '@testing-library/react': specifier: 12.1.5 - version: 12.1.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 12.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) axe-core: specifier: 4.8.4 version: 4.8.4 @@ -4672,6 +4733,52 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-router/dev@7.0.0-pre.4': + resolution: {integrity: sha512-yuOXu7NsH8njE+zFIJBt+hVd8J1F6TqpJ19RQlM5uRkgwD8PMkAvBVz95yBi69C+88pRndM0G2aGgKxBJQpffQ==} + engines: {node: '>=20.0.0'} + hasBin: true + peerDependencies: + '@react-router/serve': ^7.0.0-pre.4 + react-router: ^7.0.0-pre.4 + typescript: ^5.1.0 + vite: ^5.1.0 + wrangler: ^3.28.2 + peerDependenciesMeta: + '@react-router/serve': + optional: true + typescript: + optional: true + wrangler: + optional: true + + '@react-router/express@7.0.0-pre.4': + resolution: {integrity: sha512-uJG98BGHBO01utPZ668vZoPOn+M+TXW1XgRNCigF/d/XWK/uZjHV+4kzotfSAKdjE53GY9ZPcIit1MRNqX+Pyg==} + engines: {node: '>=20.0.0'} + peerDependencies: + express: ^4.17.1 + react-router: 7.0.0-pre.4 + typescript: ^5.1.0 + peerDependenciesMeta: + typescript: + optional: true + + '@react-router/node@7.0.0-pre.4': + resolution: {integrity: sha512-8Jv/UMzHfUFxVrt1SS3csPBn932Uqh6OOQCITAWxfATnF9eeLABMc3qPA2PdF1qg06ZhykYLoSh3r2oo9Bnhow==} + engines: {node: '>=20.0.0'} + peerDependencies: + react-router: 7.0.0-pre.4 + typescript: ^5.1.0 + peerDependenciesMeta: + typescript: + optional: true + + '@react-router/serve@7.0.0-pre.4': + resolution: {integrity: sha512-Zh76x3X20PU7vt0t2DADsQxvpjcLxY29pJ/nF/uPG1KU+MwWM/EuQfIHWvKjng9FnlCgTKzYMjUu8essQpZKaw==} + engines: {node: '>=20.0.0'} + hasBin: true + peerDependencies: + react-router: 7.0.0-pre.4 + '@react-spectrum/utils@3.11.11': resolution: {integrity: sha512-Fed8tePDyxfG7CND6H+3Os+5DKwdaOl8VXznTtGNFD44gjCI8/LDxk+9YRN8SQCHMnFkEFobCDme98wFWDdpCQ==} peerDependencies: @@ -6221,6 +6328,9 @@ packages: '@types/react-dom@18.2.25': resolution: {integrity: sha512-o/V48vf4MQh7juIKZU2QGDfli6p1+OOi5oXx36Hffpc9adsHeXjVp8rHuPkjd8VT8sOJ2Zp05HR7CdpGTIUFUA==} + '@types/react-dom@18.3.1': + resolution: {integrity: sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==} + '@types/react-redux@7.1.33': resolution: {integrity: sha512-NF8m5AjWCkert+fosDsN3hAlHzpjSiXlVy9EgQEmLoBhaNXbmyeGs/aj5dQzKuF+/q+S7JQagorGDW8pJ28Hmg==} @@ -6242,6 +6352,9 @@ packages: '@types/react@18.2.79': resolution: {integrity: sha512-RwGAGXPl9kSXwdNTafkOEuFrTBD5SA2B3iEB96xi8+xu5ddUa/cpvyVCSNn+asgLCTHkb5ZxN8gbuibYJi4s1w==} + '@types/react@18.3.12': + resolution: {integrity: sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==} + '@types/resolve@1.20.2': resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} @@ -7082,6 +7195,13 @@ packages: resolution: {integrity: sha512-OGYhWUO72V6DafbF8PM8rm3EPbfuyMZcJhtm5/n26IDwO18pohE4eNazLoCGhPiXOCD0gEGmrbU3849QvM8bbw==} engines: {node: '>=8.10', npm: '>=6.4.1'} + autoprefixer@10.4.20: + resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + autoprefixer@10.4.8: resolution: {integrity: sha512-75Jr6Q/XpTqEf6D2ltS5uMewJIx5irCU1oBYJrWjFenq/m12WRRrz6g15L1EIoYvPLXTbEry7rDOwrcYNj77xw==} engines: {node: ^10 || ^12 || >=14} @@ -8100,6 +8220,10 @@ packages: resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} engines: {node: '>= 0.6'} + cookie@1.0.1: + resolution: {integrity: sha512-Xd8lFX4LM9QEEwxQpF9J9NTUh8pmdJO0cyRJhFiDoLTk2eH8FXlRv2IFGYVadZpqI3j8fhNrSdKCeYPxiAhLXw==} + engines: {node: '>=18'} + cookiejar@2.1.4: resolution: {integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==} @@ -13646,10 +13770,6 @@ packages: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} - postcss@8.4.38: - resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} - engines: {node: ^10 || ^12 || >=14} - postcss@8.4.47: resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} engines: {node: ^10 || ^12 || >=14} @@ -14076,6 +14196,11 @@ packages: peerDependencies: react: ^18.2.0 + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + react-dropzone@11.1.0: resolution: {integrity: sha512-gJT6iJadyTbevrigm6KZFaei/yNWfokzs1idumO7fXtRNPiGFDUpsQ+trHWwUO3yWOtJibpbo5tLZggjm+KV5w==} engines: {node: '>= 8'} @@ -14256,6 +14381,16 @@ packages: peerDependencies: react: '>=16.8' + react-router@7.0.0-pre.4: + resolution: {integrity: sha512-MY2c3qzSdVgeAKOwDVgHrRvuJn8xV0LDrHDvO3/uUBNKlXCO+YVWYLdKNaFrdatYC9fs+rpTSdumhBc+mX1zSg==} + engines: {node: '>=20.0.0'} + peerDependencies: + react: '>=18' + react-dom: '>=18' + peerDependenciesMeta: + react-dom: + optional: true + react-select-async-paginate@0.5.3: resolution: {integrity: sha512-SWX1twi/jzViDpQa1nS+xyjrFtn9RBezbL4aIjcJXCABKMY+8JhH4iAKqAW3pryZbm439/DaMtQeZADH17v7bQ==} peerDependencies: @@ -14342,6 +14477,10 @@ packages: resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} engines: {node: '>=0.10.0'} + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + read-cmd-shim@3.0.1: resolution: {integrity: sha512-kEmDUoYf/CDy8yZbLTmhB1X9kkjf9Q80PCNsDMb7ufrGd6zZSQA1+UyjrO+pZm5K/S4OXCWJeiIt1JA8kAsa6g==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -14849,6 +14988,9 @@ packages: scheduler@0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + schema-utils@2.7.1: resolution: {integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==} engines: {node: '>= 8.9.0'} @@ -16469,6 +16611,14 @@ packages: resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} engines: {node: '>=10.12.0'} + valibot@0.41.0: + resolution: {integrity: sha512-igDBb8CTYr8YTQlOKgaN9nSS0Be7z+WRuaeYqGf3Cjz3aKmSnqEmYnkfVjzIuumGqfHpa3fLIvMEAfhrpqN8ng==} + peerDependencies: + typescript: '>=5' + peerDependenciesMeta: + typescript: + optional: true + validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} @@ -16526,6 +16676,11 @@ packages: engines: {node: ^18.0.0 || >=20.0.0} hasBin: true + vite-node@1.6.0: + resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + vite-node@2.1.3: resolution: {integrity: sha512-I1JadzO+xYX887S39Do+paRePCKoiDrWRRjp9kkG5he0t7RXNvPAJPCQSJqbGN4uCrFFeS3Kj3sLqY8NMYBEdA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -16555,6 +16710,14 @@ packages: vite: optional: true + vite-tsconfig-paths@5.1.0: + resolution: {integrity: sha512-Y1PLGHCJfAq1Zf4YIGEsmuU/NCX1epoZx9zwSr32Gjn3aalwQHRKr5aUmbo6r0JHeHkqmWpmDg7WOynhYXw1og==} + peerDependencies: + vite: '*' + peerDependenciesMeta: + vite: + optional: true + vite@5.2.9: resolution: {integrity: sha512-uOQWfuZBlc6Y3W/DTuQ1Sr+oIXWvqljLvS881SVmAj00d5RdgShLcuXWxseWPd4HXwiYBFW/vXHfKFeqj9uQnw==} engines: {node: ^18.0.0 || >=20.0.0} @@ -17271,11 +17434,11 @@ snapshots: '@babel/helper-annotate-as-pure@7.22.5': dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.25.8 '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.25.8 '@babel/helper-compilation-targets@7.23.6': dependencies: @@ -17306,6 +17469,19 @@ snapshots: '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 + '@babel/helper-create-class-features-plugin@7.24.4(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@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.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.25.8) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 + '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -17313,11 +17489,29 @@ snapshots: regexpu-core: 5.3.2 semver: 6.3.1 + '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-annotate-as-pure': 7.22.5 + regexpu-core: 5.3.2 + semver: 6.3.1 + '@babel/helper-define-polyfill-provider@0.6.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-compilation-targets': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + debug: 4.3.4(supports-color@8.1.1) + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-define-polyfill-provider@0.6.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-compilation-targets': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 debug: 4.3.4(supports-color@8.1.1) lodash.debounce: 4.0.8 resolve: 1.22.8 @@ -17329,15 +17523,15 @@ snapshots: '@babel/helper-function-name@7.23.0': dependencies: '@babel/template': 7.24.0 - '@babel/types': 7.24.0 + '@babel/types': 7.25.8 '@babel/helper-hoist-variables@7.22.5': dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.25.8 '@babel/helper-member-expression-to-functions@7.23.0': dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.25.8 '@babel/helper-module-imports@7.24.3': dependencies: @@ -17359,6 +17553,15 @@ snapshots: '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.20 + '@babel/helper-module-transforms@7.23.3(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@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.22.6 + '@babel/helper-validator-identifier': 7.22.20 + '@babel/helper-module-transforms@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -17371,7 +17574,7 @@ snapshots: '@babel/helper-optimise-call-expression@7.22.5': dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.25.8 '@babel/helper-plugin-utils@7.24.0': {} @@ -17384,6 +17587,13 @@ snapshots: '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-wrap-function': 7.22.20 + '@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-wrap-function': 7.22.20 + '@babel/helper-replace-supers@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -17391,9 +17601,16 @@ snapshots: '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-simple-access@7.22.5': dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.25.8 '@babel/helper-simple-access@7.25.7': dependencies: @@ -17404,11 +17621,11 @@ snapshots: '@babel/helper-skip-transparent-expression-wrappers@7.22.5': dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.25.8 '@babel/helper-split-export-declaration@7.22.6': dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.25.8 '@babel/helper-string-parser@7.24.1': {} @@ -17425,8 +17642,8 @@ snapshots: '@babel/helper-wrap-function@7.22.20': dependencies: '@babel/helper-function-name': 7.23.0 - '@babel/template': 7.24.0 - '@babel/types': 7.24.0 + '@babel/template': 7.25.7 + '@babel/types': 7.25.8 '@babel/helpers@7.24.4': dependencies: @@ -17443,7 +17660,7 @@ snapshots: '@babel/highlight@7.24.2': dependencies: - '@babel/helper-validator-identifier': 7.22.20 + '@babel/helper-validator-identifier': 7.25.7 chalk: 2.4.2 js-tokens: 4.0.0 picocolors: 1.1.0 @@ -17469,11 +17686,22 @@ snapshots: '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.4(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -17481,24 +17709,43 @@ snapshots: '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.24.4) '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-proposal-decorators@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.24.4) + '@babel/core': 7.25.8 + '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.25.8) '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-decorators': 7.24.1(@babel/core@7.24.4) + + '@babel/plugin-proposal-decorators@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.25.8) + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-decorators': 7.24.1(@babel/core@7.25.8) '@babel/plugin-proposal-export-default-from@7.18.10(@babel/core@7.24.4)': dependencies: @@ -17524,12 +17771,24 @@ snapshots: '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.4) + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.8) + '@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.4) + '@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.8) + '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.24.4)': dependencies: '@babel/compat-data': 7.24.4 @@ -17546,23 +17805,34 @@ snapshots: '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.4) - '@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.24.4)': + '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.24.4) + '@babel/core': 7.25.8 '@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.25.8) + + '@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.25.8) + '@babel/helper-plugin-utils': 7.25.7 '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 - '@babel/plugin-proposal-private-property-in-object@7.21.11(@babel/core@7.24.4)': + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.24.4 + '@babel/core': 7.25.8 + + '@babel/plugin-proposal-private-property-in-object@7.21.11(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.24.4) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.4) + '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.25.8) + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.8) '@babel/plugin-proposal-throw-expressions@7.18.6(@babel/core@7.24.4)': dependencies: @@ -17605,16 +17875,31 @@ snapshots: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-decorators@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-plugin-utils': 7.25.7 + + '@babel/plugin-syntax-decorators@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-export-default-from@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -17625,21 +17910,41 @@ snapshots: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-flow@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-plugin-utils': 7.25.7 + + '@babel/plugin-syntax-flow@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 '@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -17665,6 +17970,11 @@ snapshots: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-jsx@7.25.7(@babel/core@7.24.4)': + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-jsx@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -17735,6 +18045,11 @@ snapshots: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-throw-expressions@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -17755,6 +18070,11 @@ snapshots: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-typescript@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -17766,11 +18086,22 @@ snapshots: '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.25.8) + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-async-generator-functions@7.24.3(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -17779,6 +18110,14 @@ snapshots: '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.4) '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.4) + '@babel/plugin-transform-async-generator-functions@7.24.3(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.25.8) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.8) + '@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -17786,22 +18125,45 @@ snapshots: '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.4) + '@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.25.8) + '@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-block-scoping@7.24.4(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-block-scoping@7.24.4(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.24.4) '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.25.8) + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-class-static-block@7.24.4(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -17809,6 +18171,13 @@ snapshots: '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.4) + '@babel/plugin-transform-class-static-block@7.24.4(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.25.8) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.8) + '@babel/plugin-transform-classes@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -17821,51 +18190,103 @@ snapshots: '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 + '@babel/plugin-transform-classes@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-compilation-targets': 7.25.7 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.25.8) + '@babel/helper-split-export-declaration': 7.22.6 + globals: 11.12.0 + '@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 '@babel/template': 7.24.0 + '@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/template': 7.24.0 + '@babel/plugin-transform-destructuring@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-destructuring@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.25.8) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.4) + '@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.8) + '@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.4) - '@babel/plugin-transform-flow-strip-types@7.24.1(@babel/core@7.24.4)': + '@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.24.4 + '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.8) + + '@babel/plugin-transform-flow-strip-types@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.25.8) '@babel/plugin-transform-for-of@7.24.1(@babel/core@7.24.4)': dependencies: @@ -17873,6 +18294,12 @@ snapshots: '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-transform-for-of@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-transform-function-name@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -17880,34 +18307,69 @@ snapshots: '@babel/helper-function-name': 7.23.0 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-function-name@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.4) + '@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.8) + '@babel/plugin-transform-literals@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-literals@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.4) + '@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.8) + '@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4) '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.25.8) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -17915,6 +18377,15 @@ snapshots: '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-simple-access': 7.22.5 + '@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.8) + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-simple-access': 7.22.5 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -17923,35 +18394,72 @@ snapshots: '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-validator-identifier': 7.22.20 + '@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.25.8) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-validator-identifier': 7.22.20 + '@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4) '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.25.8) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.25.8) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-new-target@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-new-target@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.4) + '@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.8) + '@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.4) + '@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.8) + '@babel/plugin-transform-object-rest-spread@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -17960,36 +18468,74 @@ snapshots: '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.4) '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-object-rest-spread@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.8) + '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-object-super@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-object-super@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.4) + '@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.8) + '@babel/plugin-transform-optional-chaining@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-plugin-utils': 7.25.7 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.4) + '@babel/plugin-transform-optional-chaining@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.8) + '@babel/plugin-transform-parameters@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-parameters@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.24.4) '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.25.8) + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-private-property-in-object@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -17998,21 +18544,44 @@ snapshots: '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.4) + '@babel/plugin-transform-private-property-in-object@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.25.8) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.8) + '@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-react-display-name@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-react-display-name@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.4) + '@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.25.8) + '@babel/plugin-transform-react-jsx-self@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -18039,8 +18608,17 @@ snapshots: '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-module-imports': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.4) - '@babel/types': 7.24.0 + '@babel/plugin-syntax-jsx': 7.25.7(@babel/core@7.24.4) + '@babel/types': 7.25.8 + + '@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-jsx': 7.25.7(@babel/core@7.25.8) + '@babel/types': 7.25.8 '@babel/plugin-transform-react-pure-annotations@7.24.1(@babel/core@7.24.4)': dependencies: @@ -18048,17 +18626,34 @@ snapshots: '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-react-pure-annotations@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 regenerator-transform: 0.15.2 + '@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + regenerator-transform: 0.15.2 + '@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-runtime@7.24.3(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -18071,32 +18666,70 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-runtime@7.24.3(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.25.8) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.25.8) + babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.25.8) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-spread@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-transform-spread@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-typeof-symbol@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-typeof-symbol@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-typescript@7.24.4(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -18105,29 +18738,60 @@ snapshots: '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-typescript@7.24.4(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.25.8) + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-typescript': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.25.8) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.25.8) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.25.8) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/preset-env@7.24.4(@babel/core@7.24.4)': dependencies: '@babel/compat-data': 7.24.4 @@ -18215,12 +18879,99 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/preset-flow@7.24.1(@babel/core@7.24.4)': + '@babel/preset-env@7.24.4(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.24.4) + '@babel/compat-data': 7.24.4 + '@babel/core': 7.25.8 + '@babel/helper-compilation-targets': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-validator-option': 7.25.7 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.4(@babel/core@7.25.8) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.8) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.8) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.8) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.8) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.8) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.8) + '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.8) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.8) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.8) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.8) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.8) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.8) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.8) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.8) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.8) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.8) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.25.8) + '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-async-generator-functions': 7.24.3(@babel/core@7.25.8) + '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-block-scoping': 7.24.4(@babel/core@7.25.8) + '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-class-static-block': 7.24.4(@babel/core@7.25.8) + '@babel/plugin-transform-classes': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-destructuring': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-duplicate-keys': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-dynamic-import': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-exponentiation-operator': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-json-strings': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-logical-assignment-operators': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-modules-amd': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-modules-systemjs': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-modules-umd': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.25.8) + '@babel/plugin-transform-new-target': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-object-rest-spread': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-optional-catch-binding': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-private-property-in-object': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-regenerator': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-reserved-words': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-typeof-symbol': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-unicode-escapes': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-unicode-property-regex': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.25.8) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.25.8) + babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.25.8) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.25.8) + babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.25.8) + core-js-compat: 3.37.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/preset-flow@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-validator-option': 7.25.7 + '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.25.8) '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.4)': dependencies: @@ -18229,6 +18980,13 @@ snapshots: '@babel/types': 7.20.5 esutils: 2.0.3 + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/types': 7.20.5 + esutils: 2.0.3 + '@babel/preset-react@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -18239,6 +18997,16 @@ snapshots: '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.24.4) '@babel/plugin-transform-react-pure-annotations': 7.24.1(@babel/core@7.24.4) + '@babel/preset-react@7.24.1(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.25.8) + '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.25.8) + '@babel/plugin-transform-react-pure-annotations': 7.24.1(@babel/core@7.25.8) + '@babel/preset-typescript@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -18247,10 +19015,23 @@ snapshots: '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.4) '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.4) '@babel/plugin-transform-typescript': 7.24.4(@babel/core@7.24.4) + transitivePeerDependencies: + - supports-color - '@babel/register@7.23.7(@babel/core@7.24.4)': + '@babel/preset-typescript@7.24.1(@babel/core@7.25.8)': dependencies: - '@babel/core': 7.24.4 + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-validator-option': 7.25.7 + '@babel/plugin-syntax-jsx': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-typescript': 7.24.4(@babel/core@7.25.8) + transitivePeerDependencies: + - supports-color + + '@babel/register@7.23.7(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 clone-deep: 4.0.1 find-cache-dir: 2.1.0 make-dir: 2.1.0 @@ -19494,10 +20275,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@mdx-js/react@3.0.1(@types/react@18.2.79)(react@18.2.0)': + '@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.2.0)': dependencies: '@types/mdx': 2.0.13 - '@types/react': 18.2.79 + '@types/react': 18.3.12 react: 18.2.0 '@microsoft/api-extractor-model@7.28.13(@types/node@20.12.7)': @@ -20024,12 +20805,12 @@ snapshots: '@parcel/watcher-wasm@2.3.0': dependencies: is-glob: 4.0.3 - micromatch: 4.0.5 + micromatch: 4.0.8 '@parcel/watcher-wasm@2.4.1': dependencies: is-glob: 4.0.3 - micromatch: 4.0.5 + micromatch: 4.0.8 '@parcel/watcher-win32-arm64@2.4.1': optional: true @@ -20044,7 +20825,7 @@ snapshots: dependencies: detect-libc: 1.0.3 is-glob: 4.0.3 - micromatch: 4.0.5 + micromatch: 4.0.8 node-addon-api: 7.1.0 optionalDependencies: '@parcel/watcher-android-arm64': 2.4.1 @@ -20100,14 +20881,14 @@ snapshots: '@popperjs/core@2.11.8': {} - '@preact/preset-vite@2.8.2(@babel/core@7.24.4)(vite@5.4.8(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3))': + '@preact/preset-vite@2.8.2(@babel/core@7.25.8)(vite@5.4.8(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3))': dependencies: - '@babel/core': 7.24.4 - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.4) - '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.24.4) + '@babel/core': 7.25.8 + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.25.8) + '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.25.8) '@prefresh/vite': 2.4.5(vite@5.4.8(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3)) '@rollup/pluginutils': 4.2.1 - babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.24.4) + babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.25.8) debug: 4.3.4(supports-color@8.1.1) kolorist: 1.8.0 magic-string: 0.30.5 @@ -20149,6 +20930,13 @@ snapshots: optionalDependencies: '@types/react': 18.2.79 + '@radix-ui/react-compose-refs@1.0.1(@types/react@18.3.12)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.20.6 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.3.12 + '@radix-ui/react-slot@1.0.2(@types/react@18.2.79)(react@18.2.0)': dependencies: '@babel/runtime': 7.20.6 @@ -20157,6 +20945,14 @@ snapshots: optionalDependencies: '@types/react': 18.2.79 + '@radix-ui/react-slot@1.0.2(@types/react@18.3.12)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.20.6 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.12)(react@18.2.0) + react: 18.2.0 + optionalDependencies: + '@types/react': 18.3.12 + '@react-aria/accordion@3.0.0-alpha.34(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@react-aria/button': 3.10.0(react@18.2.0) @@ -20742,6 +21538,88 @@ snapshots: '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-router/dev@7.0.0-pre.4(@react-router/serve@7.0.0-pre.4(react-router@7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.6.3))(@types/node@20.12.7)(babel-plugin-macros@3.1.0)(less@3.11.1)(lightningcss@1.24.1)(react-router@7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(sass@1.75.0)(terser@5.30.3)(typescript@5.6.3)(vite@5.4.9(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3))': + dependencies: + '@babel/core': 7.25.8 + '@babel/generator': 7.25.7 + '@babel/parser': 7.25.8 + '@babel/plugin-syntax-decorators': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-syntax-jsx': 7.25.7(@babel/core@7.25.8) + '@babel/preset-typescript': 7.24.1(@babel/core@7.25.8) + '@babel/traverse': 7.25.7 + '@babel/types': 7.25.8 + '@npmcli/package-json': 4.0.1 + '@react-router/node': 7.0.0-pre.4(react-router@7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.6.3) + arg: 5.0.2 + babel-dead-code-elimination: 1.0.6 + chalk: 4.1.2 + chokidar: 4.0.1 + dedent: 1.5.3(babel-plugin-macros@3.1.0) + es-module-lexer: 1.5.0 + exit-hook: 2.2.1 + fs-extra: 10.1.0 + gunzip-maybe: 1.4.2 + jsesc: 3.0.2 + lodash: 4.17.21 + pathe: 1.1.2 + picocolors: 1.1.1 + picomatch: 2.3.1 + prettier: 2.8.8 + react-refresh: 0.14.0 + react-router: 7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + semver: 7.6.3 + set-cookie-parser: 2.6.0 + valibot: 0.41.0(typescript@5.6.3) + vite: 5.4.9(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3) + vite-node: 1.6.0(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3) + optionalDependencies: + '@react-router/serve': 7.0.0-pre.4(react-router@7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.6.3) + typescript: 5.6.3 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - bluebird + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + '@react-router/express@7.0.0-pre.4(express@4.19.2)(react-router@7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.6.3)': + dependencies: + '@react-router/node': 7.0.0-pre.4(react-router@7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.6.3) + express: 4.19.2 + react-router: 7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + optionalDependencies: + typescript: 5.6.3 + + '@react-router/node@7.0.0-pre.4(react-router@7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.6.3)': + dependencies: + '@web3-storage/multipart-parser': 1.0.0 + react-router: 7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + source-map-support: 0.5.21 + stream-slice: 0.1.2 + undici: 6.20.1 + optionalDependencies: + typescript: 5.6.3 + + '@react-router/serve@7.0.0-pre.4(react-router@7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.6.3)': + dependencies: + '@react-router/express': 7.0.0-pre.4(express@4.19.2)(react-router@7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.6.3) + '@react-router/node': 7.0.0-pre.4(react-router@7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.6.3) + compression: 1.7.4 + express: 4.19.2 + get-port: 5.1.1 + morgan: 1.10.0 + react-router: 7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + source-map-support: 0.5.21 + transitivePeerDependencies: + - supports-color + - typescript + '@react-spectrum/utils@3.11.11(react@18.2.0)': dependencies: '@react-aria/i18n': 3.12.3(react@18.2.0) @@ -21649,10 +22527,10 @@ snapshots: '@storybook/addon-docs@8.0.8(encoding@0.1.13)': dependencies: '@babel/core': 7.24.4 - '@mdx-js/react': 3.0.1(@types/react@18.2.79)(react@18.2.0) - '@storybook/blocks': 8.0.8(@types/react@18.2.79)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@mdx-js/react': 3.0.1(@types/react@18.3.12)(react@18.2.0) + '@storybook/blocks': 8.0.8(@types/react@18.3.12)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/client-logger': 8.0.8 - '@storybook/components': 8.0.8(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/components': 8.0.8(@types/react@18.3.12)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/csf-plugin': 8.0.8 '@storybook/csf-tools': 8.0.8 '@storybook/global': 5.0.0 @@ -21661,7 +22539,7 @@ snapshots: '@storybook/react-dom-shim': 8.0.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/theming': 8.0.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/types': 8.0.8 - '@types/react': 18.2.79 + '@types/react': 18.3.12 fs-extra: 11.2.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -21788,6 +22666,40 @@ snapshots: - encoding - supports-color + '@storybook/blocks@8.0.8(@types/react@18.3.12)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@storybook/channels': 8.0.8 + '@storybook/client-logger': 8.0.8 + '@storybook/components': 8.0.8(@types/react@18.3.12)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/core-events': 8.0.8 + '@storybook/csf': 0.1.4 + '@storybook/docs-tools': 8.0.8(encoding@0.1.13) + '@storybook/global': 5.0.0 + '@storybook/icons': 1.2.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/manager-api': 8.0.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/preview-api': 8.0.8 + '@storybook/theming': 8.0.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/types': 8.0.8 + '@types/lodash': 4.17.0 + color-convert: 2.0.1 + dequal: 2.0.3 + lodash: 4.17.21 + markdown-to-jsx: 7.3.2(react@18.2.0) + memoizerific: 1.11.3 + polished: 4.3.1 + react-colorful: 5.6.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + telejson: 7.2.0 + tocbot: 4.27.0 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + optionalDependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - encoding + - supports-color + '@storybook/builder-manager@8.0.8(encoding@0.1.13)': dependencies: '@fal-works/esbuild-plugin-global-externals': 2.1.2 @@ -21808,7 +22720,7 @@ snapshots: - encoding - supports-color - '@storybook/builder-vite@8.0.8(@preact/preset-vite@2.8.2(@babel/core@7.24.4)(vite@5.4.8(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3)))(encoding@0.1.13)(typescript@5.6.3)(vite@5.4.8(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3))': + '@storybook/builder-vite@8.0.8(@preact/preset-vite@2.8.2(@babel/core@7.25.8)(vite@5.4.8(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3)))(encoding@0.1.13)(typescript@5.6.3)(vite@5.4.8(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3))': dependencies: '@storybook/channels': 8.0.8 '@storybook/client-logger': 8.0.8 @@ -21829,7 +22741,7 @@ snapshots: ts-dedent: 2.2.0 vite: 5.4.8(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3) optionalDependencies: - '@preact/preset-vite': 2.8.2(@babel/core@7.24.4)(vite@5.4.8(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3)) + '@preact/preset-vite': 2.8.2(@babel/core@7.25.8)(vite@5.4.8(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3)) typescript: 5.6.3 transitivePeerDependencies: - encoding @@ -21890,7 +22802,7 @@ snapshots: telejson: 7.2.0 tiny-invariant: 1.3.3 - '@storybook/cli@8.0.8(@babel/preset-env@7.24.4(@babel/core@7.24.4))(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@storybook/cli@8.0.8(@babel/preset-env@7.24.4(@babel/core@7.25.8))(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/core': 7.24.4 '@babel/types': 7.24.0 @@ -21917,7 +22829,7 @@ snapshots: get-npm-tarball-url: 2.1.0 giget: 1.2.3 globby: 11.1.0 - jscodeshift: 0.15.2(@babel/preset-env@7.24.4(@babel/core@7.24.4)) + jscodeshift: 0.15.2(@babel/preset-env@7.24.4(@babel/core@7.25.8)) leven: 3.1.0 ora: 5.4.1 prettier: 3.2.5 @@ -21943,9 +22855,9 @@ snapshots: '@storybook/codemod@8.0.8': dependencies: - '@babel/core': 7.24.4 - '@babel/preset-env': 7.24.4(@babel/core@7.24.4) - '@babel/types': 7.24.0 + '@babel/core': 7.25.8 + '@babel/preset-env': 7.24.4(@babel/core@7.25.8) + '@babel/types': 7.25.8 '@storybook/csf': 0.1.4 '@storybook/csf-tools': 8.0.8 '@storybook/node-logger': 8.0.8 @@ -21953,7 +22865,7 @@ snapshots: '@types/cross-spawn': 6.0.6 cross-spawn: 7.0.3 globby: 11.1.0 - jscodeshift: 0.15.2(@babel/preset-env@7.24.4(@babel/core@7.24.4)) + jscodeshift: 0.15.2(@babel/preset-env@7.24.4(@babel/core@7.25.8)) lodash: 4.17.21 prettier: 3.2.5 recast: 0.23.6 @@ -21977,6 +22889,22 @@ snapshots: transitivePeerDependencies: - '@types/react' + '@storybook/components@8.0.8(@types/react@18.3.12)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/react-slot': 1.0.2(@types/react@18.3.12)(react@18.2.0) + '@storybook/client-logger': 8.0.8 + '@storybook/csf': 0.1.4 + '@storybook/global': 5.0.0 + '@storybook/icons': 1.2.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/theming': 8.0.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/types': 8.0.8 + memoizerific: 1.11.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + util-deprecate: 1.0.2 + transitivePeerDependencies: + - '@types/react' + '@storybook/core-common@8.0.8(encoding@0.1.13)': dependencies: '@storybook/core-events': 8.0.8 @@ -22018,7 +22946,7 @@ snapshots: '@storybook/core-server@8.0.8(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@aw-web-design/x-default-browser': 1.4.126 - '@babel/core': 7.24.4 + '@babel/core': 7.25.8 '@discoveryjs/json-ext': 0.5.7 '@storybook/builder-manager': 8.0.8(encoding@0.1.13) '@storybook/channels': 8.0.8 @@ -22088,10 +23016,10 @@ snapshots: '@storybook/csf-tools@8.0.8': dependencies: - '@babel/generator': 7.24.4 - '@babel/parser': 7.24.4 - '@babel/traverse': 7.24.1 - '@babel/types': 7.24.0 + '@babel/generator': 7.25.7 + '@babel/parser': 7.25.8 + '@babel/traverse': 7.25.7 + '@babel/types': 7.25.8 '@storybook/csf': 0.1.4 '@storybook/types': 8.0.8 fs-extra: 11.2.0 @@ -22219,7 +23147,7 @@ snapshots: endent: 2.1.0 find-cache-dir: 3.3.2 flat-cache: 3.2.0 - micromatch: 4.0.5 + micromatch: 4.0.8 react-docgen-typescript: 2.2.2(typescript@5.6.3) tslib: 2.6.2 typescript: 5.6.3 @@ -22232,11 +23160,11 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - '@storybook/react-vite@8.0.8(@preact/preset-vite@2.8.2(@babel/core@7.24.4)(vite@5.4.8(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3)))(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@4.24.0)(typescript@5.6.3)(vite@5.4.8(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3))': + '@storybook/react-vite@8.0.8(@preact/preset-vite@2.8.2(@babel/core@7.25.8)(vite@5.4.8(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3)))(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@4.24.0)(typescript@5.6.3)(vite@5.4.8(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3))': dependencies: '@joshwooding/vite-plugin-react-docgen-typescript': 0.3.0(typescript@5.6.3)(vite@5.4.8(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3)) '@rollup/pluginutils': 5.1.0(rollup@4.24.0) - '@storybook/builder-vite': 8.0.8(@preact/preset-vite@2.8.2(@babel/core@7.24.4)(vite@5.4.8(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3)))(encoding@0.1.13)(typescript@5.6.3)(vite@5.4.8(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3)) + '@storybook/builder-vite': 8.0.8(@preact/preset-vite@2.8.2(@babel/core@7.25.8)(vite@5.4.8(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3)))(encoding@0.1.13)(typescript@5.6.3)(vite@5.4.8(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3)) '@storybook/node-logger': 8.0.8 '@storybook/react': 8.0.8(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.6.3) find-up: 5.0.0 @@ -22735,19 +23663,19 @@ snapshots: react-dom: 18.2.0(react@18.2.0) react-test-renderer: 18.2.0(react@18.2.0) - '@testing-library/react@12.1.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@testing-library/react@12.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.20.6 '@testing-library/dom': 8.20.1 '@types/react-dom': 17.0.25 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) '@testing-library/react@13.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.20.6 '@testing-library/dom': 8.20.1 - '@types/react-dom': 18.2.25 + '@types/react-dom': 18.3.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -22755,7 +23683,7 @@ snapshots: dependencies: '@babel/runtime': 7.20.6 '@testing-library/dom': 9.3.4 - '@types/react-dom': 18.2.25 + '@types/react-dom': 18.3.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -22763,7 +23691,7 @@ snapshots: dependencies: '@babel/runtime': 7.20.6 '@testing-library/dom': 9.3.4 - '@types/react-dom': 18.2.25 + '@types/react-dom': 18.3.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -22821,7 +23749,7 @@ snapshots: '@types/babel__traverse@7.20.5': dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.25.8 '@types/babel__traverse@7.20.6': dependencies: @@ -22935,7 +23863,7 @@ snapshots: '@types/hoist-non-react-statics@3.3.5': dependencies: - '@types/react': 18.2.79 + '@types/react': 18.3.12 hoist-non-react-statics: 3.3.2 '@types/html-minifier-terser@6.1.0': {} @@ -22987,7 +23915,7 @@ snapshots: '@types/loadable__component@5.13.9': dependencies: - '@types/react': 18.2.79 + '@types/react': 18.3.12 '@types/lodash@4.17.0': {} @@ -23049,33 +23977,37 @@ snapshots: '@types/react-dom@18.2.12': dependencies: - '@types/react': 18.2.79 + '@types/react': 18.3.12 '@types/react-dom@18.2.25': dependencies: '@types/react': 18.2.79 + '@types/react-dom@18.3.1': + dependencies: + '@types/react': 18.3.12 + '@types/react-redux@7.1.33': dependencies: '@types/hoist-non-react-statics': 3.3.5 - '@types/react': 18.2.79 + '@types/react': 18.3.12 hoist-non-react-statics: 3.3.2 redux: 4.2.1 '@types/react-router-dom@5.3.3': dependencies: '@types/history': 4.7.11 - '@types/react': 18.2.79 + '@types/react': 18.3.12 '@types/react-router': 5.1.20 '@types/react-router@5.1.20': dependencies: '@types/history': 4.7.11 - '@types/react': 18.2.79 + '@types/react': 18.3.12 '@types/react-test-renderer@18.0.7': dependencies: - '@types/react': 18.2.79 + '@types/react': 18.3.12 '@types/react@17.0.80': dependencies: @@ -23094,6 +24026,11 @@ snapshots: '@types/prop-types': 15.7.12 csstype: 3.1.3 + '@types/react@18.3.12': + dependencies: + '@types/prop-types': 15.7.12 + csstype: 3.1.3 + '@types/resolve@1.20.2': {} '@types/resolve@1.20.6': {} @@ -23151,7 +24088,7 @@ snapshots: '@types/testing-library__react@9.1.3': dependencies: - '@types/react-dom': 18.2.25 + '@types/react-dom': 18.3.1 '@types/testing-library__dom': 7.5.0 pretty-format: 25.5.0 @@ -23375,7 +24312,7 @@ snapshots: '@vanilla-extract/babel-plugin-debug-ids@1.0.5': dependencies: - '@babel/core': 7.24.4 + '@babel/core': 7.25.8 transitivePeerDependencies: - supports-color @@ -23432,7 +24369,7 @@ snapshots: estree-walker: 2.0.2 glob: 7.1.6 graceful-fs: 4.2.11 - micromatch: 4.0.5 + micromatch: 4.0.8 node-gyp-build: 4.8.0 resolve-from: 5.0.0 transitivePeerDependencies: @@ -23463,7 +24400,7 @@ snapshots: '@vinxi/plugin-directives@0.4.3(vinxi@0.4.3(@types/node@20.12.7)(encoding@0.1.13)(ioredis@5.4.1)(less@3.11.1)(lightningcss@1.24.1)(magicast@0.3.4)(sass@1.75.0)(terser@5.30.3)(webpack-sources@3.2.3))': dependencies: - '@babel/parser': 7.24.4 + '@babel/parser': 7.25.8 acorn: 8.13.0 acorn-jsx: 5.3.2(acorn@8.13.0) acorn-loose: 8.4.0 @@ -23659,7 +24596,7 @@ snapshots: '@vue/compiler-core@3.4.23': dependencies: - '@babel/parser': 7.24.4 + '@babel/parser': 7.25.8 '@vue/shared': 3.4.23 entities: 4.5.0 estree-walker: 2.0.2 @@ -24227,6 +25164,26 @@ snapshots: autobind-decorator@2.4.0: {} + autoprefixer@10.4.20(postcss@8.4.31): + dependencies: + browserslist: 4.24.0 + caniuse-lite: 1.0.30001676 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.1.1 + postcss: 8.4.31 + postcss-value-parser: 4.2.0 + + autoprefixer@10.4.20(postcss@8.4.47): + dependencies: + browserslist: 4.24.0 + caniuse-lite: 1.0.30001676 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.1.1 + postcss: 8.4.47 + postcss-value-parser: 4.2.0 + autoprefixer@10.4.8(postcss@8.4.31): dependencies: browserslist: 4.23.0 @@ -24293,9 +25250,9 @@ snapshots: esutils: 2.0.3 js-tokens: 3.0.2 - babel-core@7.0.0-bridge.0(@babel/core@7.24.4): + babel-core@7.0.0-bridge.0(@babel/core@7.25.8): dependencies: - '@babel/core': 7.24.4 + '@babel/core': 7.25.8 babel-dead-code-elimination@1.0.6: dependencies: @@ -24394,7 +25351,7 @@ snapshots: babel-plugin-istanbul@6.1.1: dependencies: - '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-plugin-utils': 7.25.7 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.2.1 @@ -24404,7 +25361,7 @@ snapshots: babel-plugin-jest-hoist@26.6.2: dependencies: - '@babel/template': 7.24.0 + '@babel/template': 7.25.7 '@babel/types': 7.20.5 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.5 @@ -24440,6 +25397,15 @@ snapshots: transitivePeerDependencies: - supports-color + babel-plugin-polyfill-corejs2@0.4.10(@babel/core@7.25.8): + dependencies: + '@babel/compat-data': 7.25.8 + '@babel/core': 7.25.8 + '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.25.8) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.4): dependencies: '@babel/core': 7.24.4 @@ -24448,6 +25414,14 @@ snapshots: transitivePeerDependencies: - supports-color + babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.25.8): + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.25.8) + core-js-compat: 3.37.0 + transitivePeerDependencies: + - supports-color + babel-plugin-polyfill-regenerator@0.6.1(@babel/core@7.24.4): dependencies: '@babel/core': 7.24.4 @@ -24455,6 +25429,13 @@ snapshots: transitivePeerDependencies: - supports-color + babel-plugin-polyfill-regenerator@0.6.1(@babel/core@7.25.8): + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.25.8) + transitivePeerDependencies: + - supports-color + babel-plugin-react-intl@5.1.17: dependencies: '@babel/core': 7.24.4 @@ -24489,9 +25470,9 @@ snapshots: lodash: 4.17.21 traverse: 0.6.6 - babel-plugin-transform-hook-names@1.0.2(@babel/core@7.24.4): + babel-plugin-transform-hook-names@1.0.2(@babel/core@7.25.8): dependencies: - '@babel/core': 7.24.4 + '@babel/core': 7.25.8 optional: true babel-plugin-transform-react-remove-prop-types@0.4.24: {} @@ -24593,20 +25574,20 @@ snapshots: babel-preset-react-app@10.0.1: dependencies: - '@babel/core': 7.24.4 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.4) - '@babel/plugin-proposal-decorators': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.4) - '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.24.4) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.4) - '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.24.4) - '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.24.4) - '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-runtime': 7.24.3(@babel/core@7.24.4) - '@babel/preset-env': 7.24.4(@babel/core@7.24.4) - '@babel/preset-react': 7.24.1(@babel/core@7.24.4) - '@babel/preset-typescript': 7.24.1(@babel/core@7.24.4) + '@babel/core': 7.25.8 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.25.8) + '@babel/plugin-proposal-decorators': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.25.8) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.25.8) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.25.8) + '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.25.8) + '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.25.8) + '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-runtime': 7.24.3(@babel/core@7.25.8) + '@babel/preset-env': 7.24.4(@babel/core@7.25.8) + '@babel/preset-react': 7.24.1(@babel/core@7.25.8) + '@babel/preset-typescript': 7.24.1(@babel/core@7.25.8) '@babel/runtime': 7.20.6 babel-plugin-macros: 3.1.0 babel-plugin-transform-react-remove-prop-types: 0.4.24 @@ -24852,7 +25833,7 @@ snapshots: browserslist@4.24.0: dependencies: - caniuse-lite: 1.0.30001669 + caniuse-lite: 1.0.30001676 electron-to-chromium: 1.5.41 node-releases: 2.0.18 update-browserslist-db: 1.1.1(browserslist@4.24.0) @@ -25099,7 +26080,7 @@ snapshots: caniuse-api@3.0.0: dependencies: - browserslist: 4.23.0 + browserslist: 4.24.0 caniuse-lite: 1.0.30001676 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 @@ -25187,7 +26168,7 @@ snapshots: chokidar@3.6.0: dependencies: anymatch: 3.1.3 - braces: 3.0.2 + braces: 3.0.3 glob-parent: 5.1.2 is-binary-path: 2.1.0 is-glob: 4.0.3 @@ -25587,6 +26568,8 @@ snapshots: cookie@0.7.1: {} + cookie@1.0.1: {} + cookiejar@2.1.4: {} copy-concurrently@1.0.5: @@ -25619,7 +26602,7 @@ snapshots: core-js-compat@3.37.0: dependencies: - browserslist: 4.23.0 + browserslist: 4.24.0 core-js-pure@3.37.0: {} @@ -25749,13 +26732,13 @@ snapshots: css-loader@5.2.7(webpack@5.90.1(esbuild@0.20.2)): dependencies: - icss-utils: 5.1.0(postcss@8.4.31) + icss-utils: 5.1.0(postcss@8.4.47) loader-utils: 2.0.4 - postcss: 8.4.31 - postcss-modules-extract-imports: 3.1.0(postcss@8.4.31) - postcss-modules-local-by-default: 4.0.5(postcss@8.4.31) - postcss-modules-scope: 3.2.0(postcss@8.4.31) - postcss-modules-values: 4.0.0(postcss@8.4.31) + postcss: 8.4.47 + postcss-modules-extract-imports: 3.1.0(postcss@8.4.47) + postcss-modules-local-by-default: 4.0.5(postcss@8.4.47) + postcss-modules-scope: 3.2.0(postcss@8.4.47) + postcss-modules-values: 4.0.0(postcss@8.4.47) postcss-value-parser: 4.2.0 schema-utils: 3.3.0 semver: 7.6.0 @@ -25828,7 +26811,7 @@ snapshots: css-tree@2.3.1: dependencies: mdn-data: 2.0.30 - source-map-js: 1.2.0 + source-map-js: 1.2.1 css-what@3.4.2: {} @@ -26092,8 +27075,9 @@ snapshots: dedent@0.7.0: {} - dedent@1.5.3: - optional: true + dedent@1.5.3(babel-plugin-macros@3.1.0): + optionalDependencies: + babel-plugin-macros: 3.1.0 deep-copy@1.4.2: {} @@ -27542,7 +28526,7 @@ snapshots: '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.5 + micromatch: 4.0.8 fast-json-parse@1.0.3: {} @@ -27765,7 +28749,7 @@ snapshots: fork-ts-checker-webpack-plugin@4.1.6(eslint@8.57.0)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack@5.90.1(esbuild@0.20.2)): dependencies: - '@babel/code-frame': 7.10.4 + '@babel/code-frame': 7.25.7 chalk: 2.4.2 micromatch: 3.1.10 minimatch: 3.1.2 @@ -28572,7 +29556,7 @@ snapshots: http-proxy: 1.18.1(debug@4.3.2) is-glob: 4.0.3 is-plain-obj: 3.0.0 - micromatch: 4.0.5 + micromatch: 4.0.8 optionalDependencies: '@types/express': 4.17.21 transitivePeerDependencies: @@ -29210,8 +30194,8 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: - '@babel/core': 7.24.4 - '@babel/parser': 7.24.4 + '@babel/core': 7.25.8 + '@babel/parser': 7.25.8 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -29321,7 +30305,7 @@ snapshots: '@types/node': 20.12.7 chalk: 4.1.2 co: 4.6.0 - dedent: 1.5.3 + dedent: 1.5.3(babel-plugin-macros@3.1.0) is-generator-fn: 2.1.0 jest-each: 29.7.0 jest-matcher-utils: 29.7.0 @@ -29620,7 +30604,7 @@ snapshots: '@types/stack-utils': 2.0.3 chalk: 4.1.2 graceful-fs: 4.2.11 - micromatch: 4.0.5 + micromatch: 4.0.8 pretty-format: 26.6.2 slash: 3.0.0 stack-utils: 2.0.6 @@ -29632,7 +30616,7 @@ snapshots: '@types/stack-utils': 2.0.3 chalk: 4.1.2 graceful-fs: 4.2.11 - micromatch: 4.0.5 + micromatch: 4.0.8 pretty-format: 29.7.0 slash: 3.0.0 stack-utils: 2.0.6 @@ -29879,7 +30863,7 @@ snapshots: chalk: 4.1.2 graceful-fs: 4.2.11 is-ci: 2.0.0 - micromatch: 4.0.5 + micromatch: 4.0.8 jest-util@29.7.0: dependencies: @@ -30019,30 +31003,30 @@ snapshots: jsbn@1.1.0: {} - jscodeshift@0.15.2(@babel/preset-env@7.24.4(@babel/core@7.24.4)): + jscodeshift@0.15.2(@babel/preset-env@7.24.4(@babel/core@7.25.8)): dependencies: - '@babel/core': 7.24.4 - '@babel/parser': 7.24.4 - '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.4) - '@babel/preset-flow': 7.24.1(@babel/core@7.24.4) - '@babel/preset-typescript': 7.24.1(@babel/core@7.24.4) - '@babel/register': 7.23.7(@babel/core@7.24.4) - babel-core: 7.0.0-bridge.0(@babel/core@7.24.4) + '@babel/core': 7.25.8 + '@babel/parser': 7.25.8 + '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.25.8) + '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.25.8) + '@babel/preset-flow': 7.24.1(@babel/core@7.25.8) + '@babel/preset-typescript': 7.24.1(@babel/core@7.25.8) + '@babel/register': 7.23.7(@babel/core@7.25.8) + babel-core: 7.0.0-bridge.0(@babel/core@7.25.8) chalk: 4.1.2 flow-parser: 0.234.0 graceful-fs: 4.2.11 - micromatch: 4.0.5 + micromatch: 4.0.8 neo-async: 2.6.2 node-dir: 0.1.17 recast: 0.23.6 temp: 0.8.4 write-file-atomic: 2.4.3 optionalDependencies: - '@babel/preset-env': 7.24.4(@babel/core@7.24.4) + '@babel/preset-env': 7.24.4(@babel/core@7.25.8) transitivePeerDependencies: - supports-color @@ -30702,8 +31686,8 @@ snapshots: magicast@0.2.11: dependencies: - '@babel/parser': 7.24.4 - '@babel/types': 7.24.0 + '@babel/parser': 7.25.8 + '@babel/types': 7.25.8 recast: 0.23.6 magicast@0.3.4: @@ -32780,7 +33764,7 @@ snapshots: postcss-colormin@4.0.3: dependencies: - browserslist: 4.23.0 + browserslist: 4.24.0 color: 3.2.1 has: 1.0.4 postcss: 7.0.39 @@ -32826,6 +33810,13 @@ snapshots: optionalDependencies: postcss: 8.4.31 + postcss-load-config@3.1.4(postcss@8.4.47): + dependencies: + lilconfig: 2.1.0 + yaml: 1.10.2 + optionalDependencies: + postcss: 8.4.47 + postcss-load-config@4.0.2(postcss@8.4.31): dependencies: lilconfig: 3.1.1 @@ -32851,6 +33842,16 @@ snapshots: semver: 7.6.3 webpack: 5.90.1(esbuild@0.20.2) + postcss-loader@4.3.0(postcss@8.4.47)(webpack@5.90.1(esbuild@0.20.2)): + dependencies: + cosmiconfig: 7.1.0 + klona: 2.0.6 + loader-utils: 2.0.4 + postcss: 8.4.47 + schema-utils: 3.3.0 + semver: 7.6.3 + webpack: 5.90.1(esbuild@0.20.2) + postcss-loader@7.0.2(postcss@8.4.31)(webpack@5.90.1(esbuild@0.20.2)): dependencies: cosmiconfig: 7.1.0 @@ -32868,7 +33869,7 @@ snapshots: postcss-merge-rules@4.0.3: dependencies: - browserslist: 4.23.0 + browserslist: 4.24.0 caniuse-api: 3.0.0 cssnano-util-same-parent: 4.0.1 postcss: 7.0.39 @@ -32890,7 +33891,7 @@ snapshots: postcss-minify-params@4.0.2: dependencies: alphanum-sort: 1.0.2 - browserslist: 4.23.0 + browserslist: 4.24.0 cssnano-util-get-arguments: 4.0.0 postcss: 7.0.39 postcss-value-parser: 3.3.1 @@ -32995,7 +33996,7 @@ snapshots: postcss-normalize-unicode@4.0.1: dependencies: - browserslist: 4.23.0 + browserslist: 4.24.0 postcss: 7.0.39 postcss-value-parser: 3.3.1 @@ -33023,7 +34024,7 @@ snapshots: postcss-reduce-initial@4.0.3: dependencies: - browserslist: 4.23.0 + browserslist: 4.24.0 caniuse-api: 3.0.0 has: 1.0.4 postcss: 7.0.39 @@ -33037,13 +34038,13 @@ snapshots: postcss-resolve-nested-selector@0.1.1: {} - postcss-safe-parser@7.0.0(postcss@8.4.38): + postcss-safe-parser@7.0.0(postcss@8.4.47): dependencies: - postcss: 8.4.38 + postcss: 8.4.47 postcss-scss@3.0.5: dependencies: - postcss: 8.4.31 + postcss: 8.4.47 postcss-scss@4.0.6(postcss@8.4.31): dependencies: @@ -33097,12 +34098,6 @@ snapshots: picocolors: 1.0.0 source-map-js: 1.2.0 - postcss@8.4.38: - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.2.0 - postcss@8.4.47: dependencies: nanoid: 3.3.7 @@ -33416,7 +34411,7 @@ snapshots: razzle-plugin-scss@4.2.18(mini-css-extract-plugin@2.7.2(webpack@5.90.1(esbuild@0.20.2)))(postcss@8.4.31)(razzle-dev-utils@4.2.18(eslint@8.57.0)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1(esbuild@0.20.2)))(webpack@5.90.1(esbuild@0.20.2)))(razzle@4.2.18(@babel/core@7.24.4)(babel-preset-razzle@4.2.18)(eslint@8.57.0)(html-webpack-plugin@5.5.0(webpack@5.90.1(esbuild@0.20.2)))(mini-css-extract-plugin@2.7.2(webpack@5.90.1(esbuild@0.20.2)))(razzle-dev-utils@4.2.18(eslint@8.57.0)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1(esbuild@0.20.2)))(webpack@5.90.1(esbuild@0.20.2)))(sockjs-client@1.4.0)(type-fest@3.13.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1(esbuild@0.20.2)))(webpack-hot-middleware@2.26.1)(webpack@5.90.1(esbuild@0.20.2)))(webpack@5.90.1(esbuild@0.20.2)): dependencies: - autoprefixer: 10.4.8(postcss@8.4.31) + autoprefixer: 10.4.20(postcss@8.4.31) css-loader: 5.2.7(webpack@5.90.1(esbuild@0.20.2)) deepmerge: 4.3.1 mini-css-extract-plugin: 2.7.2(webpack@5.90.1(esbuild@0.20.2)) @@ -33443,7 +34438,7 @@ snapshots: dependencies: '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.4) '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(react-refresh@0.14.0)(sockjs-client@1.4.0)(type-fest@3.13.1)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1(esbuild@0.20.2)))(webpack-hot-middleware@2.26.1)(webpack@5.90.1(esbuild@0.20.2)) - autoprefixer: 10.4.8(postcss@8.4.31) + autoprefixer: 10.4.20(postcss@8.4.47) babel-jest: 26.6.3(@babel/core@7.24.4) babel-loader: 8.3.0(@babel/core@7.24.4)(webpack@5.90.1(esbuild@0.20.2)) babel-plugin-transform-define: 2.1.4 @@ -33466,9 +34461,9 @@ snapshots: mri: 1.2.0 null-loader: 4.0.1(webpack@5.90.1(esbuild@0.20.2)) pnp-webpack-plugin: 1.7.0(typescript@5.6.3) - postcss: 8.4.31 - postcss-load-config: 3.1.4(postcss@8.4.31) - postcss-loader: 4.3.0(postcss@8.4.31)(webpack@5.90.1(esbuild@0.20.2)) + postcss: 8.4.47 + postcss-load-config: 3.1.4(postcss@8.4.47) + postcss-loader: 4.3.0(postcss@8.4.47)(webpack@5.90.1(esbuild@0.20.2)) process: 0.11.10 razzle-dev-utils: 4.2.18(eslint@8.57.0)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1(esbuild@0.20.2)))(webpack@5.90.1(esbuild@0.20.2)) razzle-start-server-webpack-plugin: 4.2.18(webpack@5.90.1(esbuild@0.20.2)) @@ -33800,6 +34795,12 @@ snapshots: react: 18.2.0 scheduler: 0.23.0 + react-dom@18.3.1(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + react-dropzone@11.1.0(react@18.2.0): dependencies: attr-accept: 2.2.2 @@ -33939,6 +34940,21 @@ snapshots: react-dom: 18.2.0(react@18.2.0) redux: 4.2.1 + react-redux@8.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(redux@4.2.1): + dependencies: + '@babel/runtime': 7.20.6 + '@types/hoist-non-react-statics': 3.3.5 + '@types/use-sync-external-store': 0.0.3 + hoist-non-react-statics: 3.3.2 + react: 18.2.0 + react-is: 18.2.0 + use-sync-external-store: 1.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + react-dom: 18.2.0(react@18.2.0) + redux: 4.2.1 + react-refresh@0.14.0: {} react-router-config@5.1.1(react-router@5.2.0(react@18.2.0))(react@18.2.0): @@ -33990,6 +35006,18 @@ snapshots: '@remix-run/router': 1.20.0 react: 18.2.0 + react-router@7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + '@types/cookie': 0.6.0 + '@web3-storage/multipart-parser': 1.0.0 + cookie: 1.0.1 + react: 18.2.0 + set-cookie-parser: 2.6.0 + source-map: 0.7.4 + turbo-stream: 2.4.0 + optionalDependencies: + react-dom: 18.2.0(react@18.2.0) + react-select-async-paginate@0.5.3(react-dom@18.2.0(react@18.2.0))(react-select@4.3.1(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0): dependencies: '@babel/runtime': 7.20.6 @@ -34136,6 +35164,10 @@ snapshots: dependencies: loose-envify: 1.4.0 + react@18.3.1: + dependencies: + loose-envify: 1.4.0 + read-cmd-shim@3.0.1: {} read-package-json-fast@2.0.3: @@ -34808,7 +35840,7 @@ snapshots: dependencies: chokidar: 3.6.0 immutable: 4.3.5 - source-map-js: 1.2.0 + source-map-js: 1.2.1 sax@1.2.4: {} @@ -34824,6 +35856,10 @@ snapshots: dependencies: loose-envify: 1.4.0 + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + schema-utils@2.7.1: dependencies: '@types/json-schema': 7.0.15 @@ -35427,9 +36463,9 @@ snapshots: store2@2.14.3: {} - storybook@8.0.8(@babel/preset-env@7.24.4(@babel/core@7.24.4))(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + storybook@8.0.8(@babel/preset-env@7.24.4(@babel/core@7.25.8))(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: - '@storybook/cli': 8.0.8(@babel/preset-env@7.24.4(@babel/core@7.24.4))(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/cli': 8.0.8(@babel/preset-env@7.24.4(@babel/core@7.25.8))(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) transitivePeerDependencies: - '@babel/preset-env' - bufferutil @@ -35616,7 +36652,7 @@ snapshots: stylehacks@4.0.3: dependencies: - browserslist: 4.23.0 + browserslist: 4.24.0 postcss: 7.0.39 postcss-selector-parser: 3.1.2 @@ -35666,9 +36702,9 @@ snapshots: micromatch: 4.0.5 normalize-path: 3.0.0 picocolors: 1.0.0 - postcss: 8.4.38 + postcss: 8.4.47 postcss-resolve-nested-selector: 0.1.1 - postcss-safe-parser: 7.0.0(postcss@8.4.38) + postcss-safe-parser: 7.0.0(postcss@8.4.47) postcss-selector-parser: 6.0.16 postcss-value-parser: 4.2.0 resolve-from: 5.0.0 @@ -35778,7 +36814,7 @@ snapshots: css-select: 4.3.0 css-tree: 1.1.3 csso: 4.2.0 - picocolors: 1.0.0 + picocolors: 1.1.1 stable: 0.1.8 symbol-observable@1.2.0: {} @@ -36694,6 +37730,10 @@ snapshots: convert-source-map: 2.0.0 optional: true + valibot@0.41.0(typescript@5.6.3): + optionalDependencies: + typescript: 5.6.3 + validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 @@ -36746,9 +37786,9 @@ snapshots: vinxi@0.4.3(@types/node@20.12.7)(encoding@0.1.13)(ioredis@5.4.1)(less@3.11.1)(lightningcss@1.24.1)(magicast@0.3.4)(sass@1.75.0)(terser@5.30.3)(webpack-sources@3.2.3): dependencies: - '@babel/core': 7.24.4 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.4) - '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.4) + '@babel/core': 7.25.8 + '@babel/plugin-syntax-jsx': 7.25.7(@babel/core@7.25.8) + '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.25.8) '@types/micromatch': 4.0.7 '@vinxi/listhen': 1.5.6 boxen: 7.1.1 @@ -36765,7 +37805,7 @@ snapshots: h3: 1.11.1 hookable: 5.5.3 http-proxy: 1.18.1(debug@4.3.2) - micromatch: 4.0.5 + micromatch: 4.0.8 nitropack: 2.9.7(encoding@0.1.13)(magicast@0.3.4)(webpack-sources@3.2.3) node-fetch-native: 1.6.4 path-to-regexp: 6.2.2 @@ -36848,6 +37888,24 @@ snapshots: - supports-color - terser + vite-node@1.6.0(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3): + dependencies: + cac: 6.7.14 + debug: 4.3.4(supports-color@8.1.1) + pathe: 1.1.2 + picocolors: 1.1.1 + vite: 5.4.9(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + vite-node@2.1.3(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3): dependencies: cac: 6.7.14 @@ -36898,10 +37956,21 @@ snapshots: - supports-color - typescript + vite-tsconfig-paths@5.1.0(typescript@5.6.3)(vite@5.4.9(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3)): + dependencies: + debug: 4.3.4(supports-color@8.1.1) + globrex: 0.1.2 + tsconfck: 3.0.3(typescript@5.6.3) + optionalDependencies: + vite: 5.4.9(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3) + transitivePeerDependencies: + - supports-color + - typescript + vite@5.2.9(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3): dependencies: esbuild: 0.20.2 - postcss: 8.4.38 + postcss: 8.4.47 rollup: 4.14.3 optionalDependencies: '@types/node': 20.12.7 From 71a0a9d9dde5dd89242727ce930a3b4dc41273a6 Mon Sep 17 00:00:00 2001 From: Steve Piercy Date: Thu, 7 Nov 2024 18:15:17 -0800 Subject: [PATCH 27/47] Docs 6472 tidy (#6475) --- PACKAGES.md | 23 ++++++++++++++--------- apps/rr7/README.md | 4 ++-- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/PACKAGES.md b/PACKAGES.md index 5093ba58e9..5e12ae1955 100644 --- a/PACKAGES.md +++ b/PACKAGES.md @@ -17,9 +17,9 @@ It's published "as is", so you can import the type definitions from anywhere in ## Core packages -- `@plone/registry` - `@plone/client` - `@plone/components` +- `@plone/registry` ### Rules @@ -28,31 +28,36 @@ Core packages must not depend on any other `@plone/*` package, with only one exc They must be published and bundled in a traditional (transpiled) way. The bundle of these packages must work on both CommonJS and ECMAScript Module (ESM) environments. + ## Utility packages -- `@plone/providers` -- `@plone/helpers` - `@plone/drivers` +- `@plone/helpers` +- `@plone/providers` - `@plone/rsc` + ### Rules Utility packages can depend on core packages and other utility packages. -They must be published in a traditional way, bundled. +They must be published in the traditional way, as a bundle. This bundle must work on both CommonJS and ESM environments. + ## Feature packages - `@plone/blocks` -- `@plone/slots` - `@plone/contents` +- `@plone/slots` + ### Rules -Feature packages (or add-on packages) can depend on any other package. -They must not be transpiled, but as source. -They must provide a default configuration registry loader as default main entry point export. -They must be able to be loaded as any other add-on. +Feature packages, or add-on packages, can depend on any other package. +You must distribute them as source code, and not transpile them. +They must provide a default configuration registry loader as the default main entry point export. +They must be loadable as any other add-on. + ## Development utility packages diff --git a/apps/rr7/README.md b/apps/rr7/README.md index 4b8067e628..d6b9daf12c 100644 --- a/apps/rr7/README.md +++ b/apps/rr7/README.md @@ -10,14 +10,14 @@ This is intended to serve as both a playground for the development of both packa ## Development -To start, from the root of the monorepo: +To start, from the root of the monorepo, issue the following commands. ```shell pnpm install pnpm --filter plone-remix run dev ``` -Then start the Plone backend: +Then start the Plone backend. % TODO MAKEFILE ```shell From ee572e07a9a0f55950d3bb23a38918e98d512781 Mon Sep 17 00:00:00 2001 From: Fred van Dijk Date: Fri, 8 Nov 2024 07:08:22 +0100 Subject: [PATCH 28/47] Dutch Translations update. (#6476) --- .../locales/nl/LC_MESSAGES/volto.po | 148 ++ packages/volto-slate/news/6476.feature | 1 + .../volto/locales/nl/LC_MESSAGES/volto.po | 1704 ++++++++--------- packages/volto/news/6476.feature | 1 + 4 files changed, 1002 insertions(+), 852 deletions(-) create mode 100644 packages/volto-slate/locales/nl/LC_MESSAGES/volto.po create mode 100644 packages/volto-slate/news/6476.feature create mode 100644 packages/volto/news/6476.feature diff --git a/packages/volto-slate/locales/nl/LC_MESSAGES/volto.po b/packages/volto-slate/locales/nl/LC_MESSAGES/volto.po new file mode 100644 index 0000000000..beaf619400 --- /dev/null +++ b/packages/volto-slate/locales/nl/LC_MESSAGES/volto.po @@ -0,0 +1,148 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language: \n" +"Language-Team: \n" +"Content-Type: \n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#: editor/plugins/Link/index +msgid "Add link" +msgstr "Koppeling toevoegen" + +#: widgets/HtmlSlateWidget +msgid "An error has occurred while editing "{name}" field. We have been notified and we are looking into it. Please save your work and retry. If the issue persists please contact the site administrator." +msgstr "Er is een fout opgetreden bij het bewerken van het "{name}" veld. We zijn op de hoogte gebracht en gaan dit onderzoeken. Bewaar je werk en probeer opnieuw aub. Indien het probleem blijft, contacteer dan de site beheerder." + +#: widgets/RichTextWidgetView +msgid "An error has occurred while rendering "{name}" field. We have been notified and we are looking into it. If the issue persists please contact the site administrator." +msgstr "Er is een fout opgetreden bij het weergeven van het "{name}" veld. We zijn op de hoogte gebracht en gaan dit onderzoeken. Indien het probleem blijft, contacteer dan de site beheerder." + +#: blocks/Table/TableBlockEdit +msgid "Bottom" +msgstr "Onderaan" + +#: blocks/Table/TableBlockEdit +msgid "Center" +msgstr "Centreren" + +#: blocks/Table/TableBlockEdit +#: editor/plugins/Table/index +msgid "Delete col" +msgstr "Kolom verwijderen" + +#: blocks/Table/TableBlockEdit +#: editor/plugins/Table/index +msgid "Delete row" +msgstr "Rij verwijderen" + +#: editor/plugins/Table/index +msgid "Delete table" +msgstr "Tabel verwijderen" + +#: blocks/Table/TableBlockEdit +msgid "Divide each row into separate cells" +msgstr "Verdeel elke rij in meerdere cellen" + +#: elementEditor/messages +msgid "Edit element" +msgstr "Element bewerken" + +#: editor/plugins/AdvancedLink/index +#: editor/plugins/Link/index +msgid "Edit link" +msgstr "Koppeling bewerken" + +#: blocks/Table/TableBlockEdit +msgid "Fixed width table cells" +msgstr "Tabelcellen met vaste breedte" + +#: blocks/Table/TableBlockEdit +msgid "Hide headers" +msgstr "Koppen verbergen" + +#: blocks/Table/TableBlockEdit +#: editor/plugins/Table/index +msgid "Insert col after" +msgstr "Kolom rechts invoegen" + +#: blocks/Table/TableBlockEdit +#: editor/plugins/Table/index +msgid "Insert col before" +msgstr "Kolom links invoegen" + +#: blocks/Table/TableBlockEdit +#: editor/plugins/Table/index +msgid "Insert row after" +msgstr "Rij onder toevoegen" + +#: blocks/Table/TableBlockEdit +#: editor/plugins/Table/index +msgid "Insert row before" +msgstr "Rij boven invoegen" + +#: blocks/Table/TableBlockEdit +msgid "Left" +msgstr "Links" + +#: blocks/Table/TableBlockEdit +msgid "Make the table compact" +msgstr "Maak tabel compacter" + +#: blocks/Table/TableBlockEdit +msgid "Make the table sortable" +msgstr "Maak tabel sorteerbaar" + +#: blocks/Table/TableBlockEdit +msgid "Middle" +msgstr "Midden" + +#: blocks/Text/SlashMenu +msgid "No matching blocks" +msgstr "Geen overeenkomstige blokken" + +#: blocks/Table/TableBlockEdit +msgid "Reduce complexity" +msgstr "Complexiteit verminderen" + +#: elementEditor/messages +msgid "Remove element" +msgstr "Element verwijderen" + +#: editor/plugins/AdvancedLink/index +msgid "Remove link" +msgstr "Koppeling verwijderen" + +#: blocks/Table/TableBlockEdit +msgid "Right" +msgstr "Rechts" + +#: blocks/Table/TableBlockEdit +msgid "Stripe alternate rows with color" +msgstr "Markeer afwisselend rijen met kleur" + +#: blocks/Table/TableBlockEdit +msgid "Table" +msgstr "Tabel" + +#: blocks/Table/TableBlockEdit +msgid "Table color inverted" +msgstr "Tabelkleur omgekeerd" + +#: blocks/Table/TableBlockEdit +msgid "Top" +msgstr "Top" + +#: blocks/Text/DefaultTextBlockEditor +#: blocks/Text/DetachedTextBlockEditor +msgid "Type text…" +msgstr "Typ tekst…" + +#: blocks/Table/TableBlockEdit +msgid "Visible only in view mode" +msgstr "Enkel zichtbaar in weergavemodus" diff --git a/packages/volto-slate/news/6476.feature b/packages/volto-slate/news/6476.feature new file mode 100644 index 0000000000..97ed49fe87 --- /dev/null +++ b/packages/volto-slate/news/6476.feature @@ -0,0 +1 @@ +Update Dutch translations. @fredvd \ No newline at end of file diff --git a/packages/volto/locales/nl/LC_MESSAGES/volto.po b/packages/volto/locales/nl/LC_MESSAGES/volto.po index ab60d22d27..132d848892 100644 --- a/packages/volto/locales/nl/LC_MESSAGES/volto.po +++ b/packages/volto/locales/nl/LC_MESSAGES/volto.po @@ -18,32 +18,32 @@ msgstr "" #. Default: "

Add some HTML here

" #: components/manage/Blocks/HTML/Edit msgid "

Add some HTML here

" -msgstr "" +msgstr "

Voeg hier HTML toe

" #. Default: "Account Registration Completed" #: components/theme/Register/Register msgid "Account Registration Completed" -msgstr "" +msgstr "Account registratie voltooid" #. Default: "Account activation completed" #: components/theme/PasswordReset/PasswordReset msgid "Account activation completed" -msgstr "" +msgstr "Account activatie voltooid" #. Default: "Action" #: components/manage/Controlpanels/ModerateComments msgid "Action" -msgstr "" +msgstr "Actie" #. Default: "Action changed" #: components/manage/Controlpanels/Rules/ConfigureRule msgid "Action changed" -msgstr "" +msgstr "Actie gewijzigd" #. Default: "Action:" #: components/manage/Controlpanels/Rules/ConfigureRule msgid "Action: " -msgstr "" +msgstr "Actie:" #. Default: "Actions" #: components/manage/Actions/Actions @@ -58,17 +58,17 @@ msgstr "Acties" #. Default: "Activate and deactivate add-ons in the lists below." #: components/manage/Controlpanels/AddonsControlpanel msgid "Activate and deactivate" -msgstr "" +msgstr "Activeer en deactiveer modules in de lijsten hieronder." #. Default: "Active" #: components/manage/Rules/Rules msgid "Active" -msgstr "" +msgstr "Actief" #. Default: "Active content rules in this Page" #: components/manage/Rules/Rules msgid "Active content rules in this Page" -msgstr "" +msgstr "Actieve inhoudsregels in deze pagina" #. Default: "Add" #: components/manage/Aliases/Aliases @@ -79,248 +79,248 @@ msgstr "" #: components/manage/Widgets/SchemaWidget #: helpers/MessageLabels/MessageLabels msgid "Add" -msgstr "" +msgstr "Toevoegen" #. Default: "Add" #: components/manage/Widgets/ObjectListWidget msgid "Add (object list)" -msgstr "" +msgstr "Toevoegen" #. Default: "To make new add-ons show up here, add them to your configuration, build, and restart the server process. For detailed instructions see" #: components/manage/Controlpanels/AddonsControlpanel msgid "Add Addons" -msgstr "" +msgstr "Om nieuwe modules hier te laten verschijnen voeg je ze toe in jouw configuratie, bouw en herstart dan het serverproces. Voor gedetailleerde instructies zie" #. Default: "Add Alternative URL" #: components/manage/Controlpanels/Aliases msgid "Add Alternative URL" -msgstr "" +msgstr "Alternatieve URL toevoegen" #. Default: "Add Content…" #: components/manage/Toolbar/Types msgid "Add Content" -msgstr "" +msgstr "Inhoud toevoegen…" #. Default: "Add Content Rule" #: components/manage/Controlpanels/Rules/AddRule msgid "Add Content Rule" -msgstr "" +msgstr "Inhoudsregel toevoegen" #. Default: "Add Rule" #: components/manage/Controlpanels/Rules/AddRule msgid "Add Rule" -msgstr "" +msgstr "Regel toevoegen" #. Default: "Add Translation…" #: components/manage/Toolbar/Types msgid "Add Translation…" -msgstr "" +msgstr "Vertaling toevoegen…" #. Default: "Add User" #: helpers/MessageLabels/MessageLabels msgid "Add User" -msgstr "" +msgstr "Gebruiker toevoegen" #. Default: "Add a description…" #: components/manage/Blocks/Description/Edit msgid "Add a description…" -msgstr "" +msgstr "Beschrijving toevoegen…" #. Default: "Add a new alternative url" #: components/manage/Aliases/Aliases msgid "Add a new alternative url" -msgstr "" +msgstr "Een nieuwe alternatieve URL toevoegen" #. Default: "Action added" #: components/manage/Controlpanels/Rules/ConfigureRule msgid "Add action" -msgstr "" +msgstr "Actie toegevoegd" #. Default: "Add block" #: components/manage/BlockChooser/BlockChooserButton msgid "Add block" -msgstr "" +msgstr "Blok toevoegen" #. Default: "Add block in position {index}" #: components/manage/Blocks/Container/NewBlockAddButton msgid "Add block in position {index}" -msgstr "" +msgstr "Plaats blok in positie {index}" #. Default: "Add block…" #: helpers/MessageLabels/MessageLabels msgid "Add block…" -msgstr "" +msgstr "Blok toevoegen…" #. Default: "Condition added" #: components/manage/Controlpanels/Rules/ConfigureRule msgid "Add condition" -msgstr "" +msgstr "Conditie toevoegen" #. Default: "Add content rule" #: components/manage/Controlpanels/Rules/Rules msgid "Add content rule" -msgstr "" +msgstr "Inhoudsregel toevoegen" #. Default: "Add criteria" #: components/manage/Widgets/QueryWidget msgid "Add criteria" -msgstr "" +msgstr "Criteria toevoegen" #. Default: "Add date" #: components/manage/Widgets/RecurrenceWidget/RecurrenceWidget msgid "Add date" -msgstr "" +msgstr "Datum toevoegen" #. Default: "Add element to container" #: components/manage/Blocks/Container/SimpleContainerToolbar msgid "Add element to container" -msgstr "" +msgstr "Element aan container toevoegen" #. Default: "Add field" #: components/manage/Widgets/SchemaWidget msgid "Add field" -msgstr "" +msgstr "Veld toevoegen" #. Default: "Add fieldset" #: components/manage/Widgets/SchemaWidget msgid "Add fieldset" -msgstr "" +msgstr "Veldenset toevoegen" #. Default: "Add group" #: helpers/MessageLabels/MessageLabels msgid "Add group" -msgstr "" +msgstr "Groep toevoegen" #. Default: "Add new content type" #: components/manage/Controlpanels/ContentTypes msgid "Add new content type" -msgstr "" +msgstr "Nieuw contenttype toevoegen" #. Default: "Add new group" #: helpers/MessageLabels/MessageLabels msgid "Add new group" -msgstr "" +msgstr "Nieuwe groep toevoegen" #. Default: "Add new user" #: helpers/MessageLabels/MessageLabels msgid "Add new user" -msgstr "" +msgstr "Nieuwe gebruiker toevoegen" #. Default: "Add to Groups" #: helpers/MessageLabels/MessageLabels msgid "Add to Groups" -msgstr "" +msgstr "Aan groepen toevoegen" #. Default: "Add users to group" #: helpers/MessageLabels/MessageLabels msgid "Add users to group" -msgstr "" +msgstr "Gebruikers aan groep toevoegen" #. Default: "Add term" #: components/manage/Widgets/VocabularyTermsWidget msgid "Add vocabulary term" -msgstr "" +msgstr "Woordenboekterm toevoegen" #. Default: "Add {type}" #: components/manage/Add/Add msgid "Add {type}" -msgstr "Voeg {type} toe" +msgstr "Toevoegen {type}" #. Default: "Add-Ons" #: components/manage/Controlpanels/Controlpanels msgid "Add-Ons" -msgstr "" +msgstr "Modules" #. Default: "Add-on Configuration" #: components/manage/Controlpanels/Controlpanels msgid "Add-on Configuration" -msgstr "" +msgstr "Module configuratie" #. Default: "Add-ons" #: components/manage/Controlpanels/AddonsControlpanel msgid "Add-ons" -msgstr "" +msgstr "Modules" #. Default: "Add-ons Settings" #: components/manage/Controlpanels/AddonsControlpanel msgid "Add-ons Settings" -msgstr "" +msgstr "Instellingen modules" #. Default: "Added" #: components/manage/Rules/Rules msgid "Added" -msgstr "" +msgstr "Toegevoegd" #. Default: "Additional date" #: components/manage/Widgets/RecurrenceWidget/Occurences msgid "Additional date" -msgstr "" +msgstr "Bijkomende datum" #. Default: "Addon could not be installed" #: components/manage/Controlpanels/AddonsControlpanel msgid "Addon could not be installed" -msgstr "" +msgstr "Module kon niet geïnstalleerd worden" #. Default: "Addon could not be uninstalled" #: components/manage/Controlpanels/AddonsControlpanel msgid "Addon could not be uninstalled" -msgstr "" +msgstr "Module kon niet gedeïnstalleerd worden" #. Default: "Addon could not be upgraded" #: components/manage/Controlpanels/AddonsControlpanel msgid "Addon could not be upgraded" -msgstr "" +msgstr "Module kon niet bijgewerkt worden" #. Default: "Addon installed succesfuly" #: components/manage/Controlpanels/AddonsControlpanel msgid "Addon installed succesfuly" -msgstr "" +msgstr "Module succesvol geïnstalleerd" #. Default: "Addon uninstalled succesfuly" #: components/manage/Controlpanels/AddonsControlpanel msgid "Addon uninstalled succesfuly" -msgstr "" +msgstr "Module succesvol gedeïnstalleerd" #. Default: "Addon upgraded succesfuly" #: components/manage/Controlpanels/AddonsControlpanel msgid "Addon upgraded succesfuly" -msgstr "" +msgstr "Module succesvol bijgewerkt" #. Default: "Advanced facet?" #: components/manage/Blocks/Search/schema msgid "Advanced facet?" -msgstr "" +msgstr "Geavanceerd facet?" #. Default: "Advanced facets are initially hidden and displayed on demand" #: components/manage/Blocks/Search/schema msgid "Advanced facets are initially hidden and displayed on demand" -msgstr "" +msgstr "Geavanceerde facetten zijn initieel verborgen en worden getoond op vraag" #. Default: "Album view" #: config/Views msgid "Album view" -msgstr "" +msgstr "Album weergave" #. Default: "Alias" #: components/manage/Controlpanels/Aliases msgid "Alias" -msgstr "" +msgstr "Alias" #. Default: "Alias has been added" #: components/manage/Aliases/Aliases #: components/manage/Controlpanels/Aliases msgid "Alias has been added" -msgstr "" +msgstr "Alias werd toegevoegd" #. Default: "Aliases have been removed." #: components/manage/Controlpanels/Aliases msgid "Aliases have been removed." -msgstr "" +msgstr "Aliassen werden gewist." #. Default: "Aliases have been uploaded." #: components/manage/Controlpanels/Aliases msgid "Aliases have been uploaded." -msgstr "" +msgstr "Aliassen werden opgeladen." #. Default: "Alignment" #: components/manage/Blocks/Image/schema @@ -329,7 +329,7 @@ msgstr "" #: components/manage/Blocks/Teaser/schema #: components/manage/Blocks/Video/schema msgid "Alignment" -msgstr "" +msgstr "Uitlijning" #. Default: "All" #: components/manage/Contents/Contents @@ -339,80 +339,80 @@ msgstr "Alles" #. Default: "All content" #: config/Views msgid "All content" -msgstr "" +msgstr "Alle inhoud" #. Default: "Existing alternative URLs for this site" #: components/manage/Controlpanels/Aliases msgid "All existing alternative urls for this site" -msgstr "" +msgstr "Alle bestaande alternatieve URLs voor deze site" #. Default: "Alphabetically" #: components/theme/Search/Search msgid "Alphabetically" -msgstr "" +msgstr "Alfabetisch" #. Default: "Alt text" #: components/manage/Blocks/Image/schema #: components/manage/Blocks/LeadImage/LeadImageSidebar #: components/manage/Blocks/Maps/schema msgid "Alt text" -msgstr "" +msgstr "Alt tekst" #. Default: "Leave empty if the image is purely decorative." #: components/manage/Blocks/Image/schema msgid "Alt text hint" -msgstr "" +msgstr "Laat leeg indien de afbeelding puur decoratief is." #. Default: "Describe the purpose of the image." #: components/manage/Blocks/Image/schema msgid "Alt text hint link text" -msgstr "" +msgstr "Beschrijf het doel van de afbeelding." #. Default: "Alternative URL path (Required)" #: components/manage/Controlpanels/Aliases msgid "Alternative url path (Required)" -msgstr "" +msgstr "Alternatief URL-pad (vereist)" #. Default: "Alternative url path must start with a slash." #: components/manage/Aliases/Aliases #: components/manage/Controlpanels/Aliases msgid "Alternative url path must start with a slash." -msgstr "" +msgstr "Alternatief URL-pad moet beginnen met een slash." #. Default: "Alternative URL path → target URL path (date and time of creation, manually created yes/no)" #: components/manage/Controlpanels/Aliases msgid "Alternative url path → target url path (date and time of creation, manually created yes/no)" -msgstr "" +msgstr "Alternatief URL-pad → doel URL-pad (datum en tijd van aanmaak, manueel aangemaakt ja/nee)" #. Default: "Applied to subfolders" #: components/manage/Rules/Rules msgid "Applied to subfolders" -msgstr "" +msgstr "Toegepast op submappen" #. Default: "Applies to subfolders?" #: components/manage/Rules/Rules msgid "Applies to subfolders?" -msgstr "" +msgstr "Van toepassing op submappen?" #. Default: "Apply to subfolders" #: components/manage/Rules/Rules msgid "Apply to subfolders" -msgstr "" +msgstr "Toepassen op submappen?" #. Default: "Apply working copy" #: components/manage/Toolbar/More msgid "Apply working copy" -msgstr "" +msgstr "Werkkopie toepassen" #. Default: "Are you sure you want to delete this field?" #: components/manage/Widgets/SchemaWidget msgid "Are you sure you want to delete this field?" -msgstr "" +msgstr "Ben je zeker om dit veld te verwijderen?" #. Default: "Are you sure you want to delete this fieldset including all fields?" #: components/manage/Widgets/SchemaWidget msgid "Are you sure you want to delete this fieldset including all fields?" -msgstr "" +msgstr "Ben je zeker om deze veldenset te verwijderen inclusief alle velden?" #. Default: "Ascending" #: components/manage/Blocks/Search/components/SortOn @@ -423,27 +423,27 @@ msgstr "Oplopend" #. Default: "Assign the {role} role to {entry}" #: components/manage/Sharing/Sharing msgid "Assign the {role} role to {entry}" -msgstr "" +msgstr "Wijs de {role} rol toe aan {entry}" #. Default: "Assignments" #: components/manage/Controlpanels/Rules/ConfigureRule msgid "Assignments" -msgstr "" +msgstr "Toewijzingen" #. Default: "Automatically" #: components/manage/Controlpanels/Aliases msgid "Automatically" -msgstr "" +msgstr "Automatisch" #. Default: "Available" #: components/manage/Controlpanels/AddonsControlpanel msgid "Available" -msgstr "" +msgstr "Beschikbaar" #. Default: "Available content rules:" #: components/manage/Rules/Rules msgid "Available content rules:" -msgstr "" +msgstr "Beschikbare inhoudsregels" #. Default: "Back" #: components/manage/Aliases/Aliases @@ -477,7 +477,7 @@ msgstr "" #: components/theme/ContactForm/ContactForm #: helpers/MessageLabels/MessageLabels msgid "Back" -msgstr "" +msgstr "Terug" #. Default: "Base" #: components/manage/Diff/Diff @@ -487,32 +487,32 @@ msgstr "Basis" #. Default: "Base search query" #: components/manage/Blocks/Search/schema msgid "Base search query" -msgstr "" +msgstr "Basis zoekopdracht" #. Default: "Block" #: components/manage/Sidebar/Sidebar msgid "Block" -msgstr "" +msgstr "Blok" #. Default: "Both" #: components/manage/Controlpanels/Aliases msgid "Both" -msgstr "" +msgstr "Beide" #. Default: "Both email address and password are case sensitive, check that caps lock is not enabled." #: components/theme/Login/Login msgid "Both email address and password are case sensitive, check that caps lock is not enabled." -msgstr "" +msgstr "E-mailadres en wachtwoord zijn beide hoofdlettergevoelig, controleer of de hoofdletterknop uit staat." #. Default: "Breadcrumbs" #: components/theme/Breadcrumbs/Breadcrumbs msgid "Breadcrumbs" -msgstr "" +msgstr "Broodkruimels" #. Default: "Broken relations" #: components/manage/Controlpanels/Relations/BrokenRelations msgid "Broken relations" -msgstr "" +msgstr "Gebroken relaties" #. Default: "Browse" #: components/manage/Contents/ContentsUploadModal @@ -523,37 +523,37 @@ msgstr "Bladeren" #. Default: "Browse the site, drop an image, or use a URL" #: components/manage/Widgets/ImageWidget msgid "Browse the site, drop an image, or type a URL" -msgstr "" +msgstr "Blader door de site, zet een afbeelding neer of typ een URL" #. Default: "Bulk upload CSV" #: components/manage/Controlpanels/Aliases msgid "BulkUploadAltUrls" -msgstr "" +msgstr "Bulk CSV opladen" #. Default: "By default, permissions from the container of this item are inherited. If you disable this, only the explicitly defined sharing permissions will be valid. In the overview, the symbol {inherited} indicates an inherited value. Similarly, the symbol {global} indicates a global role, which is managed by the site administrator." #: components/manage/Sharing/Sharing msgid "By default, permissions from the container of this item are inherited. If you disable this, only the explicitly defined sharing permissions will be valid. In the overview, the symbol {inherited} indicates an inherited value. Similarly, the symbol {global} indicates a global role, which is managed by the site administrator." -msgstr "Standaard worden de rechten overgenomen van de bovenliggende map. Als u dit uitgeschakeld, worden alleen de expliciet toegekende rechten gebruikt. In het overzicht geeft het symbool ${image_confirm_icon} een overgenomen waarde aan. Vergelijkbaar geeft het icoon ${image_link_icon} een globale rol aan, die wordt beheerd door de websitebeheerder." +msgstr "Standaard worden de rechten overgenomen van de bovenliggende map. Als je dit uitgeschakeld, worden alleen de expliciet toegekende rechten toegepast. In het overzicht geeft het symbool ${image_confirm_icon} een overgenomen waarde aan. Vergelijkbaar geeft het icoon ${image_link_icon} een globale rol aan, die wordt beheerd door de websitebeheerder." #. Default: "CSV file" #: components/manage/Controlpanels/Aliases msgid "CSVFile" -msgstr "" +msgstr "CSV-bestand" #. Default: "Cache Name" #: components/manage/Controlpanels/DatabaseInformation msgid "Cache Name" -msgstr "" +msgstr "Cache naam" #. Default: "Can not edit Layout for {type} content-type as it doesn't have support for Volto Blocks enabled" #: components/manage/Controlpanels/ContentTypeLayout msgid "Can not edit Layout for {type} content-type as it doesn't have support for Volto Blocks enabled" -msgstr "" +msgstr "Kan lay-out niet bewerken voor het {type} contenttype omdat deze geen ondersteuning voor Volto blokken heeft geactiveerd" -#. Default: "Can not edit Layout for {type} content-type as the Blocks behavior is enabled and read-only" +#. Default: "Can not edit Layout for {type}-contenttype as the Blocks behavior is enabled and read-only" #: components/manage/Controlpanels/ContentTypeLayout msgid "Can not edit Layout for {type} content-type as the Blocks behavior is enabled and read-only" -msgstr "" +msgstr "Kan lay-out niet bewerken voor het {type}-contenttype omdat het blokkengedrag geactiveerd en enkel lezen is" #. Default: "Cancel" #: components/manage/Add/Add @@ -576,14 +576,14 @@ msgstr "Annuleren" #. Default: "Cell" #: config/Blocks msgid "Cell" -msgstr "" +msgstr "Cel" #. Default: "Center" #: components/manage/Blocks/Maps/Edit #: components/manage/Sidebar/AlignBlock #: components/manage/Widgets/AlignWidget msgid "Center" -msgstr "" +msgstr "Centreren" #. Default: "Change Note" #: components/manage/History/History @@ -603,12 +603,12 @@ msgstr "Status wijzigen" #. Default: "Change workflow state recursively" #: components/manage/Contents/ContentsWorkflowModal msgid "Change workflow state recursively" -msgstr "" +msgstr "Werkstroomstatus recursief wijzigen" #. Default: "Changes applied" #: components/manage/Toolbar/More msgid "Changes applied." -msgstr "" +msgstr "Wijzigingen zijn toegepast" #. Default: "Changes saved" #: components/manage/Preferences/ChangePassword @@ -622,106 +622,106 @@ msgstr "Wijzigingen zijn opgeslagen" #: components/manage/Controlpanels/ContentTypeSchema #: components/manage/Controlpanels/Controlpanel msgid "Changes saved." -msgstr "" +msgstr "Wijzigingen zijn opgeslagen." #. Default: "Check this box to customize the title, description, or image of the target content item for this teaser. Leave it unchecked to show updates to the target content item if it is edited later." #: components/manage/Blocks/Teaser/schema msgid "Check this box to customize the title, description, or image of the target content item for this teaser. Leave it unchecked to show updates to the target content item if it is edited later." -msgstr "" +msgstr "Vink dit vakje aan om titel, beschrijving of afbeelding van een doel inhoudsitem voor dit voorproefje te wijzigen. Laat het uitgevinkt om updates te tonen voor het doel inhoudsitem indien het later bewerkt zou worden." #. Default: "Checkbox" #: components/manage/Widgets/SchemaWidget msgid "Checkbox" -msgstr "" +msgstr "Selectievakje" #. Default: "Choices" #: components/manage/Widgets/SelectWidget msgid "Choices" -msgstr "" +msgstr "Keuzes" #. Default: "Choose Image" #: components/manage/Sidebar/ObjectBrowserBody msgid "Choose Image" -msgstr "" +msgstr "Kies afbeelding" #. Default: "Choose Target" #: components/manage/Sidebar/ObjectBrowserBody msgid "Choose Target" -msgstr "" +msgstr "Kies doel" #. Default: "Choose a file" #: components/manage/Widgets/FileWidget #: components/manage/Widgets/RegistryImageWidget msgid "Choose a file" -msgstr "" +msgstr "Kies een bestand" #. Default: "Clear" #: components/manage/AnchorPlugin/components/LinkButton/AddLinkForm #: components/manage/Blocks/HTML/Edit msgid "Clear" -msgstr "" +msgstr "Leegmaken" #. Default: "Clear filters" #: components/manage/Blocks/Search/components/FilterList msgid "Clear filters" -msgstr "" +msgstr "Filters leegmaken" #. Default: "Clear search" #: components/manage/BlockChooser/BlockChooserSearch msgid "Clear search" -msgstr "" +msgstr "Zoek leegmaken" #. Default: "Click to download full sized image" #: components/theme/View/ImageView msgid "Click to download full sized image" -msgstr "" +msgstr "Klik om de afbeelding in volle grootte te downloaden" #. Default: "Close" #: components/manage/Widgets/SelectWidget msgid "Close" -msgstr "" +msgstr "Sluiten" #. Default: "Close menu" #: components/theme/Navigation/Navigation msgid "Close menu" -msgstr "" +msgstr "Menu sluiten" #. Default: "Code" #: components/manage/Blocks/HTML/Edit msgid "Code" -msgstr "" +msgstr "Code" #. Default: "Collapse item" #: components/manage/Widgets/ObjectListWidget msgid "Collapse item" -msgstr "" +msgstr "Item inklappen" #. Default: "Collection" #: components/manage/Toolbar/Toolbar msgid "Collection" -msgstr "" +msgstr "Verzameling" #. Default: "Color" #: components/manage/Widgets/ColorPickerWidget msgid "Color" -msgstr "" +msgstr "Kleur" #. Default: "Comment" #: components/manage/Controlpanels/ModerateComments #: components/theme/Comments/CommentEditModal #: components/theme/Comments/Comments msgid "Comment" -msgstr "" +msgstr "Commentaar" #. Default: "Commenter" #: components/manage/Controlpanels/ModerateComments msgid "Commenter" -msgstr "" +msgstr "Commentaargever" #. Default: "Comments" #: components/theme/Comments/Comments msgid "Comments" -msgstr "" +msgstr "Commentaren" #. Default: "Compare" #: components/manage/Diff/Diff @@ -731,32 +731,32 @@ msgstr "Vergelijken" #. Default: "Condition changed" #: components/manage/Controlpanels/Rules/ConfigureRule msgid "Condition changed" -msgstr "" +msgstr "Conditie gewijzigd" #. Default: "Condition:" #: components/manage/Controlpanels/Rules/ConfigureRule msgid "Condition: " -msgstr "" +msgstr "Conditie:" #. Default: "Configuration Versions" #: components/manage/Controlpanels/UpgradeControlPanel msgid "Configuration Versions" -msgstr "" +msgstr "Configuratie versies" #. Default: "Configure Content Rule" #: components/manage/Controlpanels/Rules/EditRule msgid "Configure Content Rule" -msgstr "" +msgstr "Configureer inhoudsregel" #. Default: "Configure Content Rule: {title}" #: components/manage/Controlpanels/Rules/ConfigureRule msgid "Configure Content Rule: {title}" -msgstr "" +msgstr "Configureer inhoudsregel: {title}" #. Default: "Configure content rule" #: components/manage/Controlpanels/Rules/ConfigureRule msgid "Configure content rule" -msgstr "" +msgstr "Configureer inhoudsregel" #. Default: "Confirm password" #: components/manage/Preferences/ChangePassword @@ -767,63 +767,63 @@ msgstr "Wachtwoord bevestigen" #. Default: "Connection refused" #: components/theme/ConnectionRefused/ConnectionRefused msgid "Connection refused" -msgstr "" +msgstr "Verbinding geweigerd" #. Default: "Contact form" #: components/theme/ContactForm/ContactForm msgid "Contact form" -msgstr "" +msgstr "Contactformulier" #. Default: "Contained items" #: components/manage/Blocks/Listing/Edit msgid "Contained items" -msgstr "" +msgstr "Inbegrepen items" #. Default: "Container settings" #: components/manage/Blocks/Container/SimpleContainerToolbar msgid "Container settings" -msgstr "" +msgstr "Container instellingen" #. Default: "Content" #: components/manage/Controlpanels/Controlpanels msgid "Content" -msgstr "" +msgstr "Inhoud" #. Default: "Content Rule" #: components/manage/Controlpanels/Rules/Rules msgid "Content Rule" -msgstr "" +msgstr "Inhoudsregel" #. Default: "Content Rules" #: components/manage/Controlpanels/Controlpanels #: components/manage/Controlpanels/Rules/Rules msgid "Content Rules" -msgstr "" +msgstr "Inhoudsregels" #. Default: "Content rules for {title}" #: components/manage/Rules/Rules msgid "Content rules for {title}" -msgstr "" +msgstr "Inhoudsregels voor {title}" #. Default: "Content rules from parent folders" #: components/manage/Rules/Rules msgid "Content rules from parent folders" -msgstr "" +msgstr "Inhoudsregels van bovenliggende mappen" #. Default: "Content that links to or references {title}" #: components/manage/LinksToItem/LinksToItem msgid "Content that links to or references {title}" -msgstr "" +msgstr "Inhoud die linkt of refereert naar {title}" #. Default: "Content type created" #: components/manage/Controlpanels/ContentTypes msgid "Content type created" -msgstr "" +msgstr "Contenttype aangemaakt" #. Default: "Content type deleted" #: components/manage/Controlpanels/ContentTypes msgid "Content type deleted" -msgstr "" +msgstr "Contenttype gewist" #. Default: "Contents" #: components/manage/Contents/Contents @@ -834,7 +834,7 @@ msgstr "Inhoud" #. Default: "Controls" #: components/manage/Blocks/Search/schema msgid "Controls" -msgstr "" +msgstr "Controles" #. Default: "Copy" #: components/manage/Actions/Actions @@ -846,7 +846,7 @@ msgstr "Kopiëren" #. Default: "Copy blocks" #: helpers/MessageLabels/MessageLabels msgid "Copy blocks" -msgstr "" +msgstr "Kopieer blokken" #. Default: "Copyright" #: components/theme/Footer/Footer @@ -856,42 +856,42 @@ msgstr "Copyright" #. Default: "Copyright statement or other rights information on this item." #: components/manage/Contents/ContentsPropertiesModal msgid "Copyright statement or other rights information on this item." -msgstr "Auteursrechten of andere rechtsinformatie van dit item." +msgstr "Auteursrechten of andere rechteninformatie van dit item." #. Default: "Create or delete relations to target" #: helpers/MessageLabels/MessageLabels msgid "Create or delete relations to target" -msgstr "" +msgstr "Maak of wis relaties naar doel" #. Default: "Create working copy" #: components/manage/Toolbar/More msgid "Create working copy" -msgstr "" +msgstr "Maak werkkopij" #. Default: "Created after" #: components/manage/Controlpanels/Aliases msgid "Created after" -msgstr "" +msgstr "Gemaakt na" #. Default: "Created before" #: components/manage/Controlpanels/Aliases msgid "Created before" -msgstr "" +msgstr "Gemaakt voor" #. Default: "Created by {creator} on {date}" #: components/manage/WorkingCopyToastsFactory/WorkingCopyToastsFactory msgid "Created by {creator} on {date}" -msgstr "" +msgstr "Gemaakt door {creator} op {date}" #. Default: "Created on" #: components/manage/Contents/Contents msgid "Created on" -msgstr "" +msgstr "Gemaakt op" #. Default: "Creator" #: components/manage/Contents/Contents msgid "Creator" -msgstr "" +msgstr "Auteur" #. Default: "Creators" #: components/manage/Contents/ContentsPropertiesModal @@ -902,17 +902,17 @@ msgstr "Auteurs" #: components/manage/Widgets/QuerystringWidget #: components/manage/Widgets/QueryWidget msgid "Criteria" -msgstr "" +msgstr "Criteria" #. Default: "Current active configuration" #: components/manage/Controlpanels/UpgradeControlPanel msgid "Current active configuration" -msgstr "" +msgstr "Huidige actieve configuratie" #. Default: "Current filters applied" #: components/manage/Blocks/Search/components/FilterList msgid "Current filters applied" -msgstr "" +msgstr "Huidig toegepaste filters" #. Default: "Current password" #: components/manage/Preferences/ChangePassword @@ -922,7 +922,7 @@ msgstr "Huidig wachtwoord" #. Default: "Customize teaser content" #: components/manage/Blocks/Teaser/schema msgid "Customize teaser content" -msgstr "" +msgstr "Wijzig inhoud voorproefje" #. Default: "Cut" #: components/manage/Actions/Actions @@ -934,32 +934,32 @@ msgstr "Knippen" #. Default: "Cut blocks" #: helpers/MessageLabels/MessageLabels msgid "Cut blocks" -msgstr "" +msgstr "Blokken knippen" #. Default: "Daily" #: components/manage/Widgets/RecurrenceWidget/RecurrenceWidget msgid "Daily" -msgstr "" +msgstr "Dagelijks" #. Default: "Database" #: components/manage/Controlpanels/Controlpanels msgid "Database" -msgstr "" +msgstr "Databank" #. Default: "Database Information" #: components/manage/Controlpanels/DatabaseInformation msgid "Database Information" -msgstr "" +msgstr "Databank informatie" #. Default: "Database Location" #: components/manage/Controlpanels/DatabaseInformation msgid "Database Location" -msgstr "" +msgstr "Databank locatie" #. Default: "Database Size" #: components/manage/Controlpanels/DatabaseInformation msgid "Database Size" -msgstr "" +msgstr "Databank grootte" #. Default: "Database main" #: components/manage/Controlpanels/DatabaseInformation @@ -971,12 +971,12 @@ msgstr "" #: components/manage/Controlpanels/ModerateComments #: components/manage/Widgets/DatetimeWidget msgid "Date" -msgstr "" +msgstr "Datum" #. Default: "Date (newest first)" #: components/theme/Search/Search msgid "Date (newest first)" -msgstr "" +msgstr "Datum (nieuwste eerst)" #. Default: "Default" #: components/manage/Contents/ContentsPropertiesModal @@ -1000,7 +1000,7 @@ msgstr "Standaard" #. Default: "Default view" #: config/Views msgid "Default view" -msgstr "" +msgstr "Standaard weergave" #. Default: "Delete" #: components/manage/Contents/Contents @@ -1019,67 +1019,67 @@ msgstr "Verwijderen" #. Default: "Delete Group" #: helpers/MessageLabels/MessageLabels msgid "Delete Group" -msgstr "" +msgstr "Groep verwijderen" #. Default: "Delete Type" #: components/manage/Controlpanels/ContentTypes msgid "Delete Type" -msgstr "" +msgstr "Type verwijderen" #. Default: "Delete User" #: helpers/MessageLabels/MessageLabels msgid "Delete User" -msgstr "" +msgstr "Gebruiker verwijderen" #. Default: "Action deleted" #: components/manage/Controlpanels/Rules/ConfigureRule msgid "Delete action" -msgstr "" +msgstr "Actie verwijderen" #. Default: "Delete blocks" #: helpers/MessageLabels/MessageLabels msgid "Delete blocks" -msgstr "" +msgstr "Blokken verwijderen" #. Default: "Delete col" #: config/Blocks msgid "Delete col" -msgstr "" +msgstr "Kolom verwijderen" #. Default: "Condition deleted" #: components/manage/Controlpanels/Rules/ConfigureRule msgid "Delete condition" -msgstr "" +msgstr "Conditie verwijderd" #. Default: "Delete row" #: config/Blocks msgid "Delete row" -msgstr "" +msgstr "Rij verwijderen" #. Default: "Delete selected items?" #: components/manage/Contents/Contents msgid "Delete selected items?" -msgstr "" +msgstr "Geselecteerde items verwijderen?" #. Default: "Delete this item?" #: components/manage/Contents/Contents msgid "Delete this item?" -msgstr "" +msgstr "Dit item verwijderen?" #. Default: "Deleted" #: components/manage/Controlpanels/Rules/Rules msgid "Deleted" -msgstr "" +msgstr "Verwijderd" #. Default: "Deleting this item breaks {brokenReferences} {variation}." #: components/manage/Contents/Contents msgid "Deleting this item breaks {brokenReferences} {variation}." -msgstr "" +msgstr "Dit item verwijderen breekt {brokenReferences} {variation}." #. Default: "Depth" #: components/manage/Widgets/QuerystringWidget msgid "Depth" -msgstr "" +msgstr "Diepte" #. Default: "Descending" #: components/manage/Blocks/Search/components/SortOn @@ -1110,22 +1110,22 @@ msgstr "Verschil tussen revisie {one} en {two} van {title}" #. Default: "Disable" #: components/manage/Rules/Rules msgid "Disable" -msgstr "" +msgstr "Uitschakelen" #. Default: "Disable apply to subfolders" #: components/manage/Rules/Rules msgid "Disable apply to subfolders" -msgstr "" +msgstr "Toepassen op submappen uitschakelen" #. Default: "Disabled" #: components/manage/Rules/Rules msgid "Disabled" -msgstr "" +msgstr "Uitgeschakeld" #. Default: "Disabled apply to subfolders" #: components/manage/Rules/Rules msgid "Disabled apply to subfolders" -msgstr "" +msgstr "Toepassen op submappen uitgeschakeld" #. Default: "Distributed under the {license}." #: components/theme/Footer/Footer @@ -1135,71 +1135,71 @@ msgstr "Gedistribueerd onder de {license}." #. Default: "Add border to inner columns" #: config/Blocks msgid "Divide each row into separate cells" -msgstr "" +msgstr "Verdeel elke rij in meerdere cellen" #. Default: "Do you really want to delete the group {groupname}?" #: components/manage/Controlpanels/Groups/GroupsControlpanel msgid "Do you really want to delete the group {groupname}?" -msgstr "" +msgstr "Wil je de groep {groupname} echt verwijderen?" #. Default: "Do you really want to delete type {typename}?" #: components/manage/Controlpanels/ContentTypes msgid "Do you really want to delete the type {typename}?" -msgstr "" +msgstr "Wil je het type {typename} echt verwijderen?" #. Default: "Do you really want to delete the user {username}?" #: components/manage/Controlpanels/Users/UsersControlpanel msgid "Do you really want to delete the user {username}?" -msgstr "" +msgstr "Wil je de gebruiker {username} echt verwijderen?" #. Default: "Do you really want to delete this item?" #: components/manage/Delete/Delete msgid "Do you really want to delete this item?" -msgstr "Weet u zeker dat u dit item wilt verwijderen?" +msgstr "Weet je zeker dat je dit item wilt verwijderen?" #. Default: "Document" #: components/manage/Multilingual/TranslationObject #: components/manage/Sidebar/Sidebar msgid "Document" -msgstr "" +msgstr "Document" #. Default: "Document view" #: config/Views msgid "Document view" -msgstr "" +msgstr "Document weergave" #. Default: "Download Event" #: components/theme/EventDetails/EventDetails msgid "Download Event" -msgstr "" +msgstr "Evenement downloaden" #. Default: "Drag and drop files from your computer onto this area or click the “Browse” button." #: components/manage/Contents/ContentsUploadModal msgid "Drag and drop files from your computer onto this area or click the “Browse” button." -msgstr "Drag en drop bestanden van uw computer naar dit gebied of klik op de “Bladeren” knop." +msgstr "Sleep en zet bestanden neer van je computer naar dit gebied of klik op de “Bladeren” knop." #. Default: "Drop file here to replace the existing file" #: components/manage/Widgets/FileWidget #: components/manage/Widgets/RegistryImageWidget msgid "Drop file here to replace the existing file" -msgstr "" +msgstr "Zet bestand hier neer om het bestaande bestand te vervangen" #. Default: "Drop file here to upload a new file" #: components/manage/Widgets/FileWidget #: components/manage/Widgets/RegistryImageWidget msgid "Drop file here to upload a new file" -msgstr "" +msgstr "Zet bestand hier neer om een nieuw bestand op te laden" #. Default: "Drop files here ..." #: components/manage/Widgets/FileWidget #: components/manage/Widgets/RegistryImageWidget msgid "Drop files here ..." -msgstr "" +msgstr "Zet bestanden hier neer..." #. Default: "Dry run selected, transaction aborted." #: components/manage/Controlpanels/UpgradeControlPanel msgid "Dry run selected, transaction aborted." -msgstr "" +msgstr "Geselecteerde proefdraaien, transactie afbreken." #. Default: "E-mail" #: components/theme/Register/Register @@ -1209,7 +1209,7 @@ msgstr "E-mailadres" #. Default: "E-mail addresses do not match." #: components/theme/PasswordReset/PasswordReset msgid "E-mail addresses do not match." -msgstr "" +msgstr "E-mailadressen komen niet overeen." #. Default: "Edit" #: components/manage/Contents/ContentsItem @@ -1227,37 +1227,37 @@ msgstr "Bewerken" #. Default: "Edit Alternative URL" #: components/manage/Controlpanels/Aliases msgid "Edit Alternative URL" -msgstr "" +msgstr "Alternatieve URL bewerken" #. Default: "Edit Rule" #: components/manage/Controlpanels/Rules/EditRule msgid "Edit Rule" -msgstr "" +msgstr "Regel bewerken" #. Default: "Edit comment" #: components/theme/Comments/CommentEditModal msgid "Edit comment" -msgstr "" +msgstr "Commentaar bewerken" #. Default: "Edit field" #: components/manage/Widgets/SchemaWidget msgid "Edit field" -msgstr "" +msgstr "Veld bewerken" #. Default: "Edit fieldset" #: components/manage/Widgets/SchemaWidget msgid "Edit fieldset" -msgstr "" +msgstr "Veldenset bewerken" #. Default: "Edit recurrence" #: components/manage/Widgets/RecurrenceWidget/RecurrenceWidget msgid "Edit recurrence" -msgstr "" +msgstr "Herhaling bewerken" #. Default: "Edit values" #: components/manage/Form/InlineForm msgid "Edit values" -msgstr "" +msgstr "Waarden bewerken" #. Default: "Edit {title}" #: components/manage/Edit/Edit @@ -1267,68 +1267,68 @@ msgstr "{title} bewerken" #. Default: "Email" #: helpers/MessageLabels/MessageLabels msgid "Email" -msgstr "" +msgstr "E-mail" #. Default: "Email sent" #: components/theme/ContactForm/ContactForm msgid "Email sent" -msgstr "" +msgstr "E-mail verzonden" #. Default: "Embed code error, please follow the instructions and try again." #: components/manage/Blocks/Maps/Edit msgid "Embed code error, please follow the instructions and try again." -msgstr "" +msgstr "Insluitcode fout, volg de instructies en probeer opnieuw aub." #. Default: "Empty object list" #: components/manage/Widgets/ObjectListWidget msgid "Empty object list" -msgstr "" +msgstr "Lege objectenlijst" #. Default: "Enable" #: components/manage/Rules/Rules msgid "Enable" -msgstr "" +msgstr "Activeren" #. Default: "Enable editable Blocks" #: components/manage/Controlpanels/ContentTypeLayout msgid "Enable editable Blocks" -msgstr "" +msgstr "Editeerbare blokken activeren" #. Default: "Enabled" #: components/manage/Rules/Rules msgid "Enabled" -msgstr "" +msgstr "Geactiveerd" #. Default: "Enabled here?" #: components/manage/Rules/Rules msgid "Enabled here?" -msgstr "" +msgstr "Hier geactiveerd?" #. Default: "Enabled?" #: components/manage/Rules/Rules msgid "Enabled?" -msgstr "" +msgstr "Geactiveerd?" #. Default: "End Date" #: components/manage/Blocks/Search/components/DateRangeFacet #: components/manage/Contents/Contents msgid "End Date" -msgstr "" +msgstr "Einddatum" #. Default: "Enter URL or select an item" #: components/manage/AnchorPlugin/components/LinkButton/AddLinkForm msgid "Enter URL or select an item" -msgstr "" +msgstr "Vul de URL in of selecteer een item" #. Default: "Enter a username above to search or click 'Show All'" #: helpers/MessageLabels/MessageLabels msgid "Enter a username above to search or click 'Show All'" -msgstr "" +msgstr "Vul hierboven een gebruikersnaam in om te zoeken of klik 'Toon alles'" #. Default: "Enter an email address. This will be your login name. We respect your privacy, and will not give the address away to any third parties or expose it anywhere." #: components/theme/Register/Register msgid "Enter an email address. This will be your login name. We respect your privacy, and will not give the address away to any third parties or expose it anywhere." -msgstr "" +msgstr "Vul een e-mailadres in. Dit zal jouw inlognaam worden. Wij respecteren jouw privacy en zullen het niet delen met eender welke derde partij of het ergens blootstellen." #. Default: "Enter full name, e.g. John Smith." #: components/theme/Register/Register @@ -1338,32 +1338,32 @@ msgstr "Vul de volledige naam in, bijvoorbeeld Jan Smit." #. Default: "Enter map Embed Code" #: components/manage/Blocks/Maps/Edit msgid "Enter map Embed Code" -msgstr "" +msgstr "Vul de insluitcode van de kaart in" #. Default: "Enter the absolute path of the target. Target must exist or be an existing alternative URL path to the target." #: components/manage/Controlpanels/Aliases msgid "Enter the absolute path of the target. Target must exist or be an existing alternative url path to the target." -msgstr "" +msgstr "Vul het absolute pad van het doel in. Het doel moet bestaan of is een bestaand alternatief URL-pad naar het doel." #. Default: "Enter the absolute path where the alternative URL should exist. The path must start with '/'. Only URLs that result in a 404 not found page will result in a redirect occurring." #: components/manage/Controlpanels/Aliases msgid "Enter the absolute path where the alternative url should exist. The path must start with '/'. Only URLs that result in a 404 not found page will result in a redirect occurring." -msgstr "" +msgstr "Vul het absolute pad in waar de alternatieve URL zou moeten staan. Het pad moet beginnen met '/'. Enkel URLs die een 404 pagina niet gevonden geven zullen doorverwezen worden." #. Default: "Enter the absolute path where the alternative url should exist. The path must start with '/'. Only urls that result in a 404 not found page will result in a redirect occurring." #: components/manage/Aliases/Aliases msgid "Enter the absolute path where the alternative url should exist. The path must start with '/'. Only urls that result in a 404 not found page will result in a redirect occurring." -msgstr "" +msgstr "Vul het absolute pad in waar de alternatieve URL zou moeten staan. Het pad moet beginnen met '/'. Enkel URLs die een 404 pagina niet gevonden geven zullen doorverwezen worden." #. Default: "Enter your current password." #: components/manage/Preferences/ChangePassword msgid "Enter your current password." -msgstr "Voer uw huidige wachtwoord in." +msgstr "Voer jouw huidige wachtwoord in." #. Default: "Enter your email for verification." #: components/theme/PasswordReset/PasswordReset msgid "Enter your email for verification." -msgstr "" +msgstr "Voer jouw e-mail in voor verificatie." #. Default: "Enter your new password. Minimum 8 characters." #: components/manage/Preferences/ChangePassword @@ -1374,12 +1374,12 @@ msgstr "Geef een nieuw wachtwoord op. Minimaal 8 karakters." #. Default: "Enter your username for verification." #: components/theme/PasswordReset/PasswordReset msgid "Enter your username for verification." -msgstr "" +msgstr "Voer jouw gebruikersnaam in voor verificatie." #. Default: "Entries" #: components/manage/Blocks/ToC/Schema msgid "Entries" -msgstr "" +msgstr "Vermeldingen" #. Default: "Error" #: components/manage/Add/Add @@ -1395,37 +1395,37 @@ msgstr "" #: components/theme/Login/Login #: helpers/MessageLabels/MessageLabels msgid "Error" -msgstr "" +msgstr "Fout" #. Default: "Event" #: components/manage/Controlpanels/Rules/Rules msgid "Event" -msgstr "" +msgstr "Evenement" #. Default: "Event end date must be on or after {startDateValueOrStartFieldName}" #: helpers/MessageLabels/MessageLabels msgid "Event end date must be on or after {startDateValueOrStartFieldName}" -msgstr "" +msgstr "Einddatum evenement moet op of na {startDateValueOrStartFieldName} zijn" #. Default: "Event listing" #: config/Views msgid "Event listing" -msgstr "" +msgstr "Evenementenlijst" #. Default: "Event start date must be on or before {endDateValueOrEndFieldName}" #: helpers/MessageLabels/MessageLabels msgid "Event start date must be on or before {endDateValueOrEndFieldName}" -msgstr "" +msgstr "Begindatum evenement moet op of voor {endDateValueOrEndFieldName} zijn" #. Default: "Event view" #: config/Views msgid "Event view" -msgstr "" +msgstr "Evenement weergave" #. Default: "Example" #: components/manage/Controlpanels/Aliases msgid "Example" -msgstr "" +msgstr "Voorbeeld" #. Default: "Exclude from navigation" #: components/manage/Contents/ContentsPropertiesModal @@ -1435,22 +1435,22 @@ msgstr "Sluit uit van de navigatiestructuur" #. Default: "Exclude this occurence" #: components/manage/Widgets/RecurrenceWidget/Occurences msgid "Exclude this occurence" -msgstr "" +msgstr "Deze gebeurtenis uitsluiten" #. Default: "Excluded from navigation" #: components/manage/Contents/Contents msgid "Excluded from navigation" -msgstr "" +msgstr "Uitgesloteh van navigatiestructuur" #. Default: "Existing alternative urls for this item" #: components/manage/Aliases/Aliases msgid "Existing alternative urls for this item" -msgstr "" +msgstr "Bestaande alternatieve URLs voor dit item" #. Default: "Expand sidebar" #: components/manage/Sidebar/Sidebar msgid "Expand sidebar" -msgstr "" +msgstr "Zijbalk uitvouwen" #. Default: "Expiration Date" #: components/manage/Contents/ContentsPropertiesModal @@ -1460,62 +1460,62 @@ msgstr "Vervaldatum" #. Default: "Expiration date" #: components/manage/Contents/Contents msgid "Expiration date" -msgstr "" +msgstr "Vervaldatum" #. Default: "Expired" #: components/manage/Contents/ContentsItem msgid "Expired" -msgstr "" +msgstr "Vervallen" #. Default: "External URL" #: components/manage/Blocks/LeadImage/LeadImageSidebar msgid "External URL" -msgstr "" +msgstr "Externe URL" #. Default: "Facet" #: components/manage/Blocks/Search/schema msgid "Facet" -msgstr "" +msgstr "Facet" #. Default: "Facet widget" #: components/manage/Blocks/Search/schema msgid "Facet widget" -msgstr "" +msgstr "Facet widget" #. Default: "Facets" #: components/manage/Blocks/Search/schema msgid "Facets" -msgstr "" +msgstr "Facetten" #. Default: "Facets on left side" #: config/Blocks msgid "Facets on left side" -msgstr "" +msgstr "Facetten aan linkerzijde" #. Default: "Facets on right side" #: config/Blocks msgid "Facets on right side" -msgstr "" +msgstr "Facetten aan rechterzijde" #. Default: "Facets on top" #: config/Blocks msgid "Facets on top" -msgstr "" +msgstr "Facetten bovenaan" #. Default: "Failed to undo transactions" #: components/manage/Controlpanels/UndoControlpanel msgid "Failed To Undo Transactions" -msgstr "" +msgstr "Transactie ongedaan maken mislukt" #. Default: "Field" #: components/manage/Blocks/Search/schema msgid "Field" -msgstr "" +msgstr "Veld" #. Default: "File" #: components/manage/Toolbar/Toolbar msgid "File" -msgstr "" +msgstr "Bestand" #. Default: "File size" #: components/manage/Contents/ContentsUploadModal @@ -1525,7 +1525,7 @@ msgstr "Bestandsgrootte" #. Default: "File view" #: config/Views msgid "File view" -msgstr "" +msgstr "Bestand weergave" #. Default: "Filename" #: components/manage/Contents/ContentsUploadModal @@ -1535,28 +1535,28 @@ msgstr "Bestandsnaam" #. Default: "Files uploaded: {uploadedFiles}" #: components/manage/Contents/ContentsUploadModal msgid "Files uploaded: {uploadedFiles}" -msgstr "Geüploade bestanden: {uploadedFiles}" +msgstr "Opgeladen bestanden: {uploadedFiles}" #. Default: "Filter" #: components/manage/Controlpanels/Aliases #: helpers/MessageLabels/MessageLabels msgid "Filter" -msgstr "" +msgstr "Filter" #. Default: "Filter Rules:" #: components/manage/Controlpanels/Rules/Rules msgid "Filter Rules:" -msgstr "" +msgstr "Filter regels:" #. Default: "Filter by path" #: components/manage/Controlpanels/Aliases msgid "Filter by prefix" -msgstr "" +msgstr "Filter op pad" #. Default: "Filter users by groups" #: helpers/MessageLabels/MessageLabels msgid "Filter users by groups" -msgstr "" +msgstr "Filter gebruikers per groep" #. Default: "Filter…" #: components/manage/Contents/Contents @@ -1566,54 +1566,54 @@ msgstr "Filter…" #. Default: "First" #: components/manage/Widgets/RecurrenceWidget/WeekdayOfTheMonthIndexField msgid "First" -msgstr "" +msgstr "Eerste" #. Default: "Fix relations" #: helpers/MessageLabels/MessageLabels msgid "Fix relations" -msgstr "" +msgstr "Herstel relaties" #. Default: "Fixed width columns" #: config/Blocks msgid "Fixed width table cells" -msgstr "" +msgstr "Vaste kolombreedte" #. Default: "Fold" #: components/manage/BlockChooser/BlockChooser msgid "Fold" -msgstr "" +msgstr "Opvouwen" #. Default: "Folder" #: components/manage/Contents/Contents msgid "Folder" -msgstr "" +msgstr "Map" #. Default: "Folder listing" #: config/Views msgid "Folder listing" -msgstr "" +msgstr "Mappenlijst" #. Default: "Forbidden" #: components/theme/Forbidden/Forbidden msgid "Forbidden" -msgstr "" +msgstr "Verboden" #. Default: "Fourth" #: components/manage/Widgets/RecurrenceWidget/WeekdayOfTheMonthIndexField msgid "Fourth" -msgstr "" +msgstr "Vierde" #. Default: "From" #: components/theme/ContactForm/ContactForm msgid "From" -msgstr "" +msgstr "Van" #. Default: "Full" #: components/manage/Blocks/Maps/Edit #: components/manage/Sidebar/AlignBlock #: components/manage/Widgets/AlignWidget msgid "Full" -msgstr "" +msgstr "Volledig" #. Default: "Full Name" #: components/theme/Register/Register @@ -1623,7 +1623,7 @@ msgstr "Volledige naam" #. Default: "Fullname" #: helpers/MessageLabels/MessageLabels msgid "Fullname" -msgstr "" +msgstr "Volledige naam" #. Default: "GNU GPL license" #: components/theme/Footer/Footer @@ -1633,113 +1633,113 @@ msgstr "GNU GPL licentie" #. Default: "General" #: components/manage/Controlpanels/Controlpanels msgid "General" -msgstr "" +msgstr "Algemeen" #. Default: "Global role" #: components/manage/Sharing/Sharing msgid "Global role" -msgstr "" +msgstr "Globale rol" #. Default: "Google Maps Embedded Block" #: components/manage/Blocks/Maps/Edit msgid "Google Maps Embedded Block" -msgstr "" +msgstr "Google Maps insluit blok" #. Default: "Grid" #: components/manage/Blocks/Grid/schema msgid "Grid" -msgstr "" +msgstr "Rooster" #. Default: "Group" #: components/manage/Sharing/Sharing msgid "Group" -msgstr "" +msgstr "Groep" #. Default: "Group created" #: helpers/MessageLabels/MessageLabels msgid "Group created" -msgstr "" +msgstr "Groep aangemaakt" #. Default: "Group deleted" #: helpers/MessageLabels/MessageLabels msgid "Group deleted" -msgstr "" +msgstr "Groep gewist" #. Default: "Group roles updated" #: helpers/MessageLabels/MessageLabels msgid "Group roles updated" -msgstr "" +msgstr "Groepsrollen bijgewerkt" #. Default: "Groupname" #: components/manage/Controlpanels/Groups/GroupsControlpanel #: helpers/MessageLabels/MessageLabels msgid "Groupname" -msgstr "" +msgstr "Groepsnaam" #. Default: "Groups" #: components/manage/Controlpanels/Controlpanels #: components/manage/Controlpanels/Groups/GroupsControlpanel #: helpers/MessageLabels/MessageLabels msgid "Groups" -msgstr "" +msgstr "Groepen" #. Default: "Groups are logical collections of users, such as departments and business units. Groups are not directly related to permissions on a global level, you normally use Roles for that - and let certain Groups have a particular role. The symbol{plone_svg}indicates a role inherited from membership in another group." #: components/manage/Controlpanels/Groups/GroupsControlpanel msgid "Groups are logical collections of users, such as departments and business units. Groups are not directly related to permissions on a global level, you normally use Roles for that - and let certain Groups have a particular role. The symbol{plone_svg}indicates a role inherited from membership in another group." -msgstr "" +msgstr "Groepen zijn logische verzamelingen van gebruikers, zoals afdelingen of bedrijfstakken. Groepen zijnn niet rechtstreeks gerelateerd aan rechten op het globale niveau - je gebruikt daar Rollen voor, waar je bepaalde groepen een specifieke rol geeft. Het symbool {plone_svg} duidt op een overgeërfde rol uit een andere groep." #. Default: "Header cell" #: config/Blocks msgid "Header cell" -msgstr "" +msgstr "Kopcel" #. Default: "Headline" #: components/manage/Blocks/Grid/schema #: components/manage/Blocks/Listing/schema #: components/manage/Blocks/Search/schema msgid "Headline" -msgstr "" +msgstr "Hoofding" #. Default: "Headline level" #: components/manage/Blocks/Listing/schema msgid "Headline level" -msgstr "" +msgstr "Hoofding niveau" #. Default: "Hidden facets will still filter the results if proper parameters are passed in URLs" #: components/manage/Blocks/Search/schema msgid "Hidden facets will still filter the results if proper parameters are passed in URLs" -msgstr "" +msgstr "Verborgen facetten zullen de resultaten blijven filteren indien de gepaste parameters in de URLs zijn meegegeven" #. Default: "Hide Replies" #: components/theme/Comments/Comments msgid "Hide Replies" -msgstr "" +msgstr "Antwoorden verbergen" #. Default: "Hide facet?" #: components/manage/Blocks/Search/schema msgid "Hide facet?" -msgstr "" +msgstr "Facet verbergen?" #. Default: "Hide filters" #: components/manage/Blocks/Search/components/Facets msgid "Hide filters" -msgstr "" +msgstr "Filters verbergen" #. Default: "Hide title" #: components/manage/Blocks/ToC/Schema msgid "Hide title" -msgstr "" +msgstr "Titel verbergen" #. Default: "History" #: components/manage/History/History #: components/manage/Toolbar/More msgid "History" -msgstr "" +msgstr "Geschiedenis" #. Default: "#" #: components/manage/History/History msgid "History Version Number" -msgstr "" +msgstr "Versienummer geschiedenis" #. Default: "History of {title}" #: components/manage/History/History @@ -1759,17 +1759,17 @@ msgstr "Home" #. Default: "ID" #: components/manage/Contents/Contents msgid "ID" -msgstr "" +msgstr "ID" #. Default: "Icon View" #: components/manage/Sidebar/ObjectBrowserBody msgid "Icon View" -msgstr "" +msgstr "Icoon weergave" #. Default: "If all of the following conditions are met:" #: components/manage/Controlpanels/Rules/ConfigureRule msgid "If all of the following conditions are met:" -msgstr "" +msgstr "Indien elk van volgende condities van toepassing zijn:" #. Default: "If selected, this item will not appear in the navigation tree" #: components/manage/Contents/ContentsPropertiesModal @@ -1779,50 +1779,50 @@ msgstr "Indien geselecteerd, wordt het item niet getoond in de navigatiestructuu #. Default: "If this date is in the future, the content will not show up in listings and searches until this date." #: components/manage/Contents/ContentsPropertiesModal msgid "If this date is in the future, the content will not show up in listings and searches until this date." -msgstr "Wanneer deze datum in de toekomst is zal de inhoud niet langer zichtbaar zijn in lijsten en zoekresultaten totdat deze datum bereikt is." +msgstr "Indien dit een datum in de toekomst is, zal de inhoud niet langer zichtbaar zijn in lijsten en zoekresultaten totdat deze datum bereikt is." #. Default: "If you are certain this user has abandoned the object, you may unlock the object. You will then be able to edit it." #: components/manage/LockingToastsFactory/LockingToastsFactory msgid "If you are certain this user has abandoned the object, you may unlock the object. You will then be able to edit it." -msgstr "" +msgstr "Als je zeker bent dat deze gebruiker het object heeft verlaten, kan je het object ontgrendelen. Dan kan je kan het bewerken." #. Default: "If you are certain you have the correct web address but are encountering an error, please contact the {site_admin}." #: components/theme/NotFound/NotFound #: components/theme/Unauthorized/Unauthorized msgid "If you are certain you have the correct web address but are encountering an error, please contact the {site_admin}." -msgstr "Indien u er zeker van bent dat u het webadres goed heeft, maar toch een foutmelding krijgt, neem dan contact op met {site_admin}." +msgstr "Als je zeker bent dat je het webadres goed hebt, maar toch een foutmelding krijgt, neem dan contact op met {site_admin}." #. Default: "Image" #: components/manage/Blocks/Image/ImageSidebar #: components/manage/Blocks/Image/schema #: components/manage/Blocks/LeadImage/LeadImageSidebar msgid "Image" -msgstr "" +msgstr "Afbeelding" #. Default: "Image gallery" #: config/Blocks msgid "Image gallery" -msgstr "" +msgstr "Afbeeldingen galerij" #. Default: "Image override" #: components/manage/Blocks/Teaser/schema msgid "Image override" -msgstr "" +msgstr "Afbeelding overschrijven" #. Default: "Image size" #: components/manage/Blocks/Image/schema msgid "Image size" -msgstr "" +msgstr "Afbeelding grootte" #. Default: "Image view" #: config/Views msgid "Image view" -msgstr "" +msgstr "Afbeelding weergave" #. Default: "Include this occurrence" #: components/manage/Widgets/RecurrenceWidget/Occurences msgid "Include this occurence" -msgstr "" +msgstr "Deze gebeurtenis opnemen" #. Default: "Info" #: components/manage/Controlpanels/ContentType @@ -1830,12 +1830,12 @@ msgstr "" #: components/manage/Controlpanels/ContentTypeSchema #: components/manage/Controlpanels/Controlpanel msgid "Info" -msgstr "" +msgstr "Info" #. Default: "You have selected the option 'many users' or 'many groups'. Thus this control panel asks for input to show users and groups. If you want to see users and groups instantaneous, head over to user group settings. See the button on the left." #: components/manage/Controlpanels/Users/UserGroupMembershipControlPanel msgid "InfoUserGroupSettings" -msgstr "" +msgstr "Je hebt de optie 'veel gebruikers' of 'veel groepen' geselecteerd. Daarom vraag dit paneel om een invoer om gebruikers of groepen weer te geven. Indien je gebruikers of groepen meteen wil zien, ga naar de gebruikersgroep instellingen. Zie knop aan linkerzijde." #. Default: "Inherit permissions from higher levels" #: components/manage/Sharing/Sharing @@ -1845,113 +1845,113 @@ msgstr "Rechten overnemen van bovenliggende map" #. Default: "Inherited value" #: components/manage/Sharing/Sharing msgid "Inherited value" -msgstr "" +msgstr "Overgeërfde waarde" #. Default: "Insert col after" #: config/Blocks msgid "Insert col after" -msgstr "" +msgstr "Kolom rechts invoegen" #. Default: "Insert col before" #: config/Blocks msgid "Insert col before" -msgstr "" +msgstr "Kolom links invoegen" #. Default: "Insert row after" #: config/Blocks msgid "Insert row after" -msgstr "" +msgstr "Rij onder invoegen" #. Default: "Insert row before" #: config/Blocks msgid "Insert row before" -msgstr "" +msgstr "Rij boven toevoegen" #. Default: "Inspect relations" #: helpers/MessageLabels/MessageLabels msgid "Inspect relations" -msgstr "" +msgstr "Relaties inspecteren" #. Default: "Install" #: components/manage/Controlpanels/AddonsControlpanel msgid "Install" -msgstr "" +msgstr "Installeren" #. Default: "Installed" #: components/manage/Controlpanels/AddonsControlpanel msgid "Installed" -msgstr "" +msgstr "Geïnstalleerd" #. Default: "Installed version" #: components/manage/Controlpanels/AddonsControlpanel msgid "Installed version" -msgstr "" +msgstr "Geïnstalleerde versie" #. Default: "Installing a third party add-on" #: components/manage/Controlpanels/AddonsControlpanel msgid "Installing a third party add-on" -msgstr "" +msgstr "Installeer een derde partij module" #. Default: "days" #: components/manage/Widgets/RecurrenceWidget/RecurrenceWidget msgid "Interval Daily" -msgstr "" +msgstr "Herhaal dagelijks" #. Default: "Month(s)" #: components/manage/Widgets/RecurrenceWidget/RecurrenceWidget msgid "Interval Monthly" -msgstr "" +msgstr "Herhaal maandelijks" #. Default: "week(s)" #: components/manage/Widgets/RecurrenceWidget/RecurrenceWidget msgid "Interval Weekly" -msgstr "" +msgstr "Herhaal wekeloijks" #. Default: "year(s)" #: components/manage/Widgets/RecurrenceWidget/RecurrenceWidget msgid "Interval Yearly" -msgstr "" +msgstr "Herhaal jaarlijks" #. Default: "Invalid block - Will be removed on saving" #: components/manage/Blocks/Block/DefaultView #: components/theme/View/RenderBlocks msgid "Invalid Block" -msgstr "" +msgstr "Ongeldig blok - wordt verwijderd bij opslaan" #. Default: "Invalid teaser source" #: components/manage/Blocks/Teaser/Data msgid "Invalid teaser source" -msgstr "" +msgstr "Ongeldige bron voorproefje" #. Default: "It is not allowed to define both the password and to request sending the password reset message by e-mail. You need to select one of them." #: helpers/MessageLabels/MessageLabels msgid "It is not allowed to define both the password and to request sending the password reset message by e-mail. You need to select one of them." -msgstr "" +msgstr "Het is niet toegestaan ​​om zowel het wachtwoord in te stellen als het verzoek om het wachtwoordherstelbericht per e-mail te verzenden. Je moet een van beide kiezen." #. Default: "Item batch size" #: components/manage/Widgets/QuerystringWidget msgid "Item batch size" -msgstr "" +msgstr "Item batch grootte" #. Default: "Item successfully moved." #: components/manage/Contents/Contents msgid "Item successfully moved." -msgstr "" +msgstr "Item succesvol verplaatst." #. Default: "Item(s) copied." #: components/manage/Contents/Contents msgid "Item(s) copied." -msgstr "Item(s) gekopieerd" +msgstr "Item(s) gekopieerd." #. Default: "Item(s) cut." #: components/manage/Contents/Contents msgid "Item(s) cut." -msgstr "Item(d) geknipt." +msgstr "Item(s) geknipt." #. Default: "Item(s) has been updated." #: components/manage/Contents/Contents msgid "Item(s) has been updated." -msgstr "" +msgstr "Item(s) werd(en) bijgewerkt." #. Default: "Item(s) pasted." #: components/manage/Actions/Actions @@ -1962,12 +1962,12 @@ msgstr "Item(s) geplakt." #. Default: "Item(s) state has been updated." #: components/manage/Contents/Contents msgid "Item(s) state has been updated." -msgstr "" +msgstr "Status van item(s) werd(en) bijgewerkt." #. Default: "Items" #: components/manage/Controlpanels/ContentTypes msgid "Items" -msgstr "" +msgstr "Items" #. Default: "Items must be unique." #: components/manage/Form/ModalForm @@ -1978,7 +1978,7 @@ msgstr "Items moeten uniek zijn." #. Default: "Label" #: components/manage/Blocks/Search/schema msgid "Label" -msgstr "" +msgstr "Label" #. Default: "Language" #: components/manage/Preferences/PersonalPreferences @@ -1988,27 +1988,27 @@ msgstr "Taal" #. Default: "Language independent field." #: components/manage/Widgets/FormFieldWrapper msgid "Language independent field." -msgstr "" +msgstr "Taalonafhankelijk veld." #. Default: "This is a language independent field. Any value you enter here will overwrite the corresponding field of all members of the translation group when you save this form." #: components/manage/Widgets/FormFieldWrapper msgid "Language independent icon title" -msgstr "" +msgstr "Dit is een taalonafhankelijk veld. Elke hier ingevoerde waarde, overschrijft het overeenkomstige veld van alle leden van de vertaalgroep wanneer je dit formulier opslaat." #. Default: "Large" #: components/manage/Widgets/ImageSizeWidget msgid "Large" -msgstr "" +msgstr "Groot" #. Default: "Last" #: components/manage/Widgets/RecurrenceWidget/WeekdayOfTheMonthIndexField msgid "Last" -msgstr "" +msgstr "Laatste" #. Default: "Last comment date" #: components/manage/Contents/Contents msgid "Last comment date" -msgstr "" +msgstr "Laatste commentaardatum" #. Default: "Last modified" #: components/manage/Contents/ContentsUploadModal @@ -2018,119 +2018,119 @@ msgstr "Laatst gewijzigd" #. Default: "Latest available configuration" #: components/manage/Controlpanels/UpgradeControlPanel msgid "Latest available configuration" -msgstr "" +msgstr "Laatst beschikbare configuratie" #. Default: "Latest version" #: components/manage/Controlpanels/AddonsControlpanel msgid "Latest version" -msgstr "" +msgstr "Laatste versie" #. Default: "Layout" #: components/manage/Controlpanels/ContentTypesActions msgid "Layout" -msgstr "" +msgstr "Lay-out" #. Default: "Lead Image" #: components/manage/Blocks/LeadImage/LeadImageSidebar msgid "Lead Image" -msgstr "" +msgstr "Leidende afbeelding" #. Default: "Left" #: components/manage/Blocks/Maps/Edit #: components/manage/Sidebar/AlignBlock #: components/manage/Widgets/AlignWidget msgid "Left" -msgstr "" +msgstr "Links" #. Default: "Less filters" #: components/manage/Blocks/Search/components/Facets msgid "Less filters" -msgstr "" +msgstr "Minder filters" #. Default: "Link" #: components/manage/Toolbar/Toolbar msgid "Link" -msgstr "" +msgstr "Koppeling" #. Default: "Anchor link copied to the clipboard" #: helpers/MessageLabels/MessageLabels msgid "Link copied to clipboard" -msgstr "" +msgstr "Koppeling gekopieerd naar klembord" #. Default: "Link more" #: components/manage/Blocks/Listing/schema msgid "Link more" -msgstr "" +msgstr "Meer koppelen" #. Default: "Link redirect view" #: config/Views msgid "Link redirect view" -msgstr "" +msgstr "Doorverwijsweergave koppelen" #. Default: "Link settings" #: components/manage/Blocks/Image/schema msgid "Link settings" -msgstr "" +msgstr "Instellingen koppeling" #. Default: "Link Title" #: components/manage/Blocks/Listing/schema msgid "Link title" -msgstr "" +msgstr "Titel koppelen" #. Default: "Link to" #: components/manage/Blocks/Image/schema #: components/manage/Blocks/LeadImage/LeadImageSidebar #: components/manage/Blocks/Listing/schema msgid "Link to" -msgstr "" +msgstr "Koppelen naar" #. Default: "Link translation for" #: components/manage/Multilingual/ManageTranslations msgid "Link translation for" -msgstr "" +msgstr "Vertaling koppelen voor" #. Default: "Linking this item with hyperlink in text" #: components/manage/LinksToItem/LinksToItem msgid "Linking this item with hyperlink in text" -msgstr "" +msgstr "Dit item koppelen met een hyperlink in de tekst" #. Default: "Links and references" #: components/manage/LinksToItem/LinksToItem #: components/manage/Toolbar/More msgid "Links and references" -msgstr "" +msgstr "Koppelingen en referenties" #. Default: "List View" #: components/manage/Sidebar/ObjectBrowserBody msgid "List View" -msgstr "" +msgstr "Lijst weergave" #. Default: "Listing" #: components/manage/Blocks/Listing/schema msgid "Listing" -msgstr "" +msgstr "Lijst" #. Default: "Listing view" #: config/Views msgid "Listing view" -msgstr "" +msgstr "Lijst weergave" #. Default: "Load more..." #: components/theme/Comments/Comments msgid "Load more" -msgstr "" +msgstr "Meer laden..." #. Default: "Loading." #: components/manage/Controlpanels/Groups/GroupsControlpanel #: components/manage/Controlpanels/Users/UsersControlpanel #: components/manage/Form/ModalForm msgid "Loading" -msgstr "" +msgstr "Laden" #. Default: "Login" #: components/theme/Login/Login msgid "Log In" -msgstr "" +msgstr "Aanmelden" #. Default: "Log in" #: components/theme/Anontools/Anontools @@ -2141,17 +2141,17 @@ msgstr "Inloggen" #. Default: "Logged out" #: components/theme/Logout/Logout msgid "Logged out" -msgstr "" +msgstr "Afgemeld" #. Default: "Login" #: components/theme/Login/Login msgid "Login" -msgstr "" +msgstr "Login" #. Default: "Login Failed" #: components/theme/Login/Login msgid "Login Failed" -msgstr "" +msgstr "Aanmelden mislukt" #. Default: "Login Name" #: components/theme/Login/Login @@ -2161,155 +2161,155 @@ msgstr "Gebruikersnaam" #. Default: "Logo of" #: components/theme/Logo/Logo msgid "Logo of" -msgstr "" +msgstr "Logo van" #. Default: "Logout" #: components/manage/Toolbar/PersonalTools msgid "Logout" -msgstr "" +msgstr "Afmelden" #. Default: "Made by {creator} on {date}. This is not a working copy anymore, but the main content." #: components/manage/Toolbar/More msgid "Made by {creator} on {date}. This is not a working copy anymore, but the main content." -msgstr "" +msgstr "Gemaakt door {creator} op {date}. Dit is geen werkkopij meer, maar de inhoud zelf." #. Default: "Reduce cell padding" #: config/Blocks msgid "Make the table compact" -msgstr "" +msgstr "Verminder celvulling" #. Default: "Manage Translations" #: components/manage/Multilingual/ManageTranslations #: components/manage/Toolbar/More msgid "Manage Translations" -msgstr "" +msgstr "Vertalingen beheren" #. Default: "Manage content…" #: components/manage/Toolbar/More msgid "Manage content…" -msgstr "" +msgstr "Inhoud beheren…" #. Default: "Manage translations for {title}" #: components/manage/Multilingual/ManageTranslations msgid "Manage translations for {title}" -msgstr "" +msgstr "Vertaling beheren voor {title}" #. Default: "Manual" #: components/manage/Controlpanels/Aliases msgid "Manual" -msgstr "" +msgstr "Manueel" #. Default: "Manually" #: components/manage/Controlpanels/Aliases msgid "Manually" -msgstr "" +msgstr "Manueel" #. Default: "Manually or automatically added?" #: components/manage/Controlpanels/Aliases msgid "Manually or automatically added?" -msgstr "" +msgstr "Manueel of automatisch toegevoegd?" #. Default: "Many relations found. Please search." #: helpers/MessageLabels/MessageLabels msgid "Many relations found. Please search." -msgstr "" +msgstr "Veel relaties gevonden. Zoek aub." #. Default: "Maps" #: components/manage/Blocks/Maps/MapsSidebar #: components/manage/Blocks/Maps/schema msgid "Maps" -msgstr "" +msgstr "Kaarten" #. Default: "Maps URL" #: components/manage/Blocks/Maps/schema msgid "Maps URL" -msgstr "" +msgstr "Kaarten URL" #. Default: "Maximum length is {len}." #: helpers/MessageLabels/MessageLabels msgid "Maximum length is {len}." -msgstr "" +msgstr "Maximum lengte is {len}." #. Default: "Maximum value is {len}." #: helpers/MessageLabels/MessageLabels msgid "Maximum value is {len}." -msgstr "" +msgstr "Maximum lengte is {len}." #. Default: "Medium" #: components/manage/Widgets/ImageSizeWidget msgid "Medium" -msgstr "" +msgstr "Gemiddeld" #. Default: "Membership updated" #: helpers/MessageLabels/MessageLabels msgid "Membership updated" -msgstr "" +msgstr "Lidmaatschap bijgewerkt" #. Default: "Message" #: components/theme/ContactForm/ContactForm msgid "Message" -msgstr "" +msgstr "Bericht" #. Default: "Minimum length is {len}." #: components/manage/Form/ModalForm #: helpers/MessageLabels/MessageLabels msgid "Minimum length is {len}." -msgstr "Minimum lengte is {len}" +msgstr "Minimum lengte is {len}." #. Default: "Minimum value is {len}." #: helpers/MessageLabels/MessageLabels msgid "Minimum value is {len}." -msgstr "" +msgstr "Minimum lengte is {len}." #. Default: "Moderate Comments" #: components/manage/Controlpanels/Controlpanels msgid "Moderate Comments" -msgstr "" +msgstr "Commentaren modereren" #. Default: "Moderate comments" #: components/manage/Controlpanels/ModerateComments msgid "Moderate comments" -msgstr "" +msgstr "Commentaren modereren" #. Default: "Monday and Friday" #: components/manage/Widgets/RecurrenceWidget/RecurrenceWidget msgid "Monday and Friday" -msgstr "" +msgstr "Maandag en vrijdag" #. Default: "Day" #: components/manage/Widgets/RecurrenceWidget/ByMonthDayField msgid "Month day" -msgstr "" +msgstr "Dag van de maand" #. Default: "Monthly" #: components/manage/Widgets/RecurrenceWidget/RecurrenceWidget msgid "Monthly" -msgstr "" +msgstr "Maandelijks" #. Default: "More" #: components/manage/Toolbar/Toolbar msgid "More" -msgstr "" +msgstr "Meer" #. Default: "More filters" #: components/manage/Blocks/Search/components/Facets msgid "More filters" -msgstr "" +msgstr "Meer filters" #. Default: "More information about the upgrade procedure can be found in the documentation section of plone.org in the Upgrade Guide." #: components/manage/Controlpanels/UpgradeControlPanel msgid "More information about the upgrade procedure can be found in the documentation section of plone.org in the Upgrade Guide." -msgstr "" +msgstr "Meer informatie over de upgrade procedure kan je vinden in de documentatierubriek van plone.org in de Upgrade gids." #. Default: "Mosaic layout" #: config/Views msgid "Mosaic layout" -msgstr "" +msgstr "Mosaic lay-out" #. Default: "Move down" #: components/manage/Controlpanels/Rules/ConfigureRule msgid "Move down" -msgstr "" +msgstr "Beweeg omlaag" #. Default: "Move to bottom of folder" #: components/manage/Contents/ContentsItem @@ -2324,17 +2324,17 @@ msgstr "Verplaats naar boven in de map" #. Default: "Move up" #: components/manage/Controlpanels/Rules/ConfigureRule msgid "Move up" -msgstr "" +msgstr "Beweeg omhoog" #. Default: "Multiple choices?" #: components/manage/Blocks/Search/schema msgid "Multiple choices?" -msgstr "" +msgstr "Meerdere keuzes?" #. Default: "My email is" #: components/theme/PasswordReset/PasswordReset msgid "My email is" -msgstr "" +msgstr "Mijn e-mail is" #. Default: "My user name is" #: components/theme/PasswordReset/PasswordReset @@ -2350,17 +2350,17 @@ msgstr "Naam" #. Default: "Narrow" #: components/manage/Widgets/AlignWidget msgid "Narrow" -msgstr "" +msgstr "Smal" #. Default: "Navigate back" #: error msgid "Navigate back" -msgstr "" +msgstr "Navigeer terug" #. Default: "Navigation" #: components/theme/Navigation/ContextNavigation msgid "Navigation" -msgstr "" +msgstr "Navigatie" #. Default: "New password" #: components/manage/Preferences/ChangePassword @@ -2371,98 +2371,98 @@ msgstr "Nieuw wachtwoord" #. Default: "News Item" #: components/manage/Toolbar/Toolbar msgid "News Item" -msgstr "" +msgstr "Nieuwsbericht" #. Default: "News item view" #: config/Views msgid "News item view" -msgstr "" +msgstr "Nieuwsbericht weergave" #. Default: "No" #: components/manage/Contents/ContentsItem #: components/manage/Controlpanels/ContentTypes msgid "No" -msgstr "" +msgstr "Nee" #. Default: "No transactions found" #: components/manage/Controlpanels/UndoControlpanel msgid "No Transactions Found" -msgstr "" +msgstr "Geen transacties gevonden" #. Default: "No transactions selected" #: components/manage/Controlpanels/UndoControlpanel msgid "No Transactions Selected" -msgstr "" +msgstr "Geen transacties geselecteerd" #. Default: "No transactions selected to do undo" #: components/manage/Controlpanels/UndoControlpanel msgid "No Transactions Selected To Do Undo" -msgstr "" +msgstr "Geen transacties geselecteerd om ongedaan te maken" #. Default: "No Video selected" #: components/manage/Blocks/Video/VideoSidebar msgid "No Video selected" -msgstr "" +msgstr "Geen video geselecteerd" #. Default: "No addons found" #: components/manage/Controlpanels/VersionOverview msgid "No addons found" -msgstr "" +msgstr "Geen modules gevonden" #. Default: "No broken relations found." #: components/manage/Controlpanels/Relations/RelationsMatrix msgid "No broken relations found." -msgstr "" +msgstr "Geen gebroken relaties gevonden." #. Default: "There is no connection to the server, due to a timeout o no network connection." #: components/theme/RequestTimeout/RequestTimeout msgid "No connection to the server" -msgstr "" +msgstr "Er is geen verbinding naar de server, wegens een timeout of geen netwerkverbinding." #. Default: "No image selected" #: components/manage/Blocks/Image/ImageSidebar msgid "No image selected" -msgstr "" +msgstr "Geen afbeelding geselecteerd" #. Default: "No image set in Lead Image content field" #: components/manage/Blocks/LeadImage/LeadImageSidebar msgid "No image set in Lead Image content field" -msgstr "" +msgstr "Geen afbeelding ingesteld in het inhoiudsveld Leidende afbeelding" #. Default: "No image set in image content field" #: components/manage/Blocks/LeadImage/LeadImageSidebar msgid "No image set in image content field" -msgstr "" +msgstr "Geen afbeelding ingesteld in het inhoudsveld Afbeelding" #. Default: "No images found." #: components/manage/Blocks/Listing/GalleryNoResultsComponent msgid "No images found." -msgstr "" +msgstr "Geen afbeeldingen gevonden." #. Default: "No items found in this container." #: components/manage/Blocks/Listing/ListingBody msgid "No items found in this container." -msgstr "" +msgstr "Geen items gevonden in deze container." #. Default: "No items selected" #: components/manage/Widgets/ObjectBrowserWidget msgid "No items selected" -msgstr "" +msgstr "Geen items geselecteerd" #. Default: "No links to this item found." #: components/manage/LinksToItem/LinksToItem msgid "No links to this item found." -msgstr "" +msgstr "Geen koppelingen naar dit item gevonden." #. Default: "No map selected" #: components/manage/Blocks/Maps/MapsSidebar msgid "No map selected" -msgstr "" +msgstr "Geen kaart geselecteerd" #. Default: "No occurences set" #: components/manage/Widgets/RecurrenceWidget/Occurences msgid "No occurences set" -msgstr "" +msgstr "Geen gebeurtenissen ingesteld" #. Default: "No options" #: components/manage/Widgets/ArrayWidget @@ -2470,41 +2470,41 @@ msgstr "" #: components/manage/Widgets/SelectWidget #: components/manage/Widgets/TokenWidget msgid "No options" -msgstr "" +msgstr "Geen opties" #. Default: "No relation found" #: helpers/MessageLabels/MessageLabels msgid "No relation found" -msgstr "" +msgstr "Geen relaties gevonden" #. Default: "No results found" #: components/manage/BlockChooser/BlockChooser #: components/theme/Search/Search msgid "No results found" -msgstr "" +msgstr "Geen resultaten gevonden" #. Default: "No results found." #: components/manage/Blocks/Listing/DefaultNoResultsComponent #: components/manage/Widgets/ReferenceWidget msgid "No results found." -msgstr "" +msgstr "Geen resultaten gevonden." #. Default: "No selection" #: components/manage/Blocks/Search/components/SortOn #: components/manage/Widgets/QuerySortOnWidget #: components/manage/Widgets/QuerystringWidget msgid "No selection" -msgstr "" +msgstr "Geen selectie" #. Default: "This addon does not provide an uninstall profile." #: components/manage/Controlpanels/AddonsControlpanel msgid "No uninstall profile" -msgstr "" +msgstr "Geen deïnstalleer profiel" #. Default: "No user found" #: helpers/MessageLabels/MessageLabels msgid "No user found" -msgstr "" +msgstr "Geen gebruiker gevonden" #. Default: "No value" #: components/manage/Widgets/ArrayWidget @@ -2512,43 +2512,43 @@ msgstr "" #: components/manage/Widgets/SelectUtils #: components/manage/Widgets/SelectWidget msgid "No value" -msgstr "" +msgstr "Geen waarde" #. Default: "No workflow" #: components/manage/Workflow/Workflow msgid "No workflow" -msgstr "" +msgstr "Geen werkstroom" #. Default: "None" #: components/manage/Contents/Contents #: components/manage/Contents/ContentsItem msgid "None" -msgstr "Niks" +msgstr "Geen" #. Default: "Note" #: components/manage/Controlpanels/UndoControlpanel msgid "Note" -msgstr "" +msgstr "Opmerking" #. Default: "Note that roles set here apply directly to a user. The symbol{plone_svg}indicates a role inherited from membership in a group." #: components/manage/Controlpanels/Users/UsersControlpanel msgid "Note that roles set here apply directly to a user. The symbol{plone_svg}indicates a role inherited from membership in a group." -msgstr "" +msgstr "Merk op dat de hier ingestelde rollen ditrect toegepast worden op een gebruiker. Het symbool {plone_svg} duidt op een overgeërfde rol van een groepslidmaatschap." #. Default: "Number of active objects" #: components/manage/Controlpanels/DatabaseInformation msgid "Number of active objects" -msgstr "" +msgstr "Aantal actieve objecten" #. Default: "Object Size" #: components/manage/Contents/Contents msgid "Object Size" -msgstr "" +msgstr "Object grootte" #. Default: "occurrence(s)" #: components/manage/Widgets/RecurrenceWidget/EndField msgid "Occurences" -msgstr "" +msgstr "Gebeurtenissen" #. Default: "Ok" #: components/manage/Delete/Delete @@ -2558,55 +2558,55 @@ msgstr "Ok" #. Default: "Only 7-bit bytes characters are allowed. Cannot contain uppercase letters, special characters: <, >, &, #, /, ?, or others that are illegal in URLs. Cannot start with: _, aq_, @@, ++. Cannot end with __. Cannot be: request,contributors, ., .., "". Cannot contain new lines." #: components/manage/Widgets/IdWidget msgid "Only 7-bit bytes characters are allowed. Cannot contain uppercase letters, special characters: <, >, &, #, /, ?, or others that are illegal in URLs. Cannot start with: _, aq_, @@, ++. Cannot end with __. Cannot be: request,contributors, ., .., "". Cannot contain new lines." -msgstr "" +msgstr "Enkel 7-bit byte-karakters zijn toegestaan. Kan geen hoofdletters, speciale tekens: <, >, &, #, /, ?, of andere bevatten die niet in URLs mogen voorkomen. Mag niet beginnen met: _, aq_, @@, ++. Mag niet eindigen met __. Kan geen: request,contributors, ., .., \"\" zijn. Mag geen regelomloop (newline) bevatten." #. Default: "Open in a new tab" #: components/manage/Blocks/Image/schema #: components/manage/Blocks/LeadImage/LeadImageSidebar #: components/manage/Blocks/Teaser/schema msgid "Open in a new tab" -msgstr "" +msgstr "In een nieuwe tab openen" #. Default: "Open menu" #: components/theme/Navigation/Navigation msgid "Open menu" -msgstr "" +msgstr "Menu openen" #. Default: "Open object browser" #: components/manage/AnchorPlugin/components/LinkButton/AddLinkForm #: components/manage/Widgets/ObjectBrowserWidget msgid "Open object browser" -msgstr "" +msgstr "Objectverkenner openen" #. Default: "Order" #: components/manage/Sidebar/Sidebar msgid "Order" -msgstr "" +msgstr "Sorteren" #. Default: "Ordered" #: components/manage/Blocks/ToC/Schema msgid "Ordered" -msgstr "" +msgstr "Gesorteerd" #. Default: "Origin" #: components/manage/Blocks/LeadImage/LeadImageSidebar msgid "Origin" -msgstr "" +msgstr "Afkomst" #. Default: "Overview of relations of all content items" #: components/manage/LinksToItem/LinksToItem msgid "Overview of relations of all content items" -msgstr "" +msgstr "Overzicht van relaties voor alle inhoudsitems" #. Default: "Page" #: components/manage/Toolbar/Toolbar msgid "Page" -msgstr "" +msgstr "Pagina" #. Default: "Parent fieldset" #: components/manage/Widgets/SchemaWidget msgid "Parent fieldset" -msgstr "" +msgstr "Bovenliggende veldenset" #. Default: "Password" #: components/theme/Login/Login @@ -2618,12 +2618,12 @@ msgstr "Wachtwoord" #: components/theme/PasswordReset/PasswordReset #: components/theme/PasswordReset/RequestPasswordReset msgid "Password reset" -msgstr "" +msgstr "Wachtwoordherstel" #. Default: "Passwords do not match." #: components/theme/PasswordReset/PasswordReset msgid "Passwords do not match." -msgstr "" +msgstr "Wachtwoorden komen niet overeen." #. Default: "Paste" #: components/manage/Actions/Actions @@ -2634,22 +2634,22 @@ msgstr "Plakken" #. Default: "Paste blocks" #: helpers/MessageLabels/MessageLabels msgid "Paste blocks" -msgstr "" +msgstr "Blokken plakken" #. Default: "Perform the following actions:" #: components/manage/Controlpanels/Rules/ConfigureRule msgid "Perform the following actions:" -msgstr "" +msgstr "Voer volgende acties uit:" #. Default: "Permissions have been updated successfully" #: components/manage/Sharing/Sharing msgid "Permissions have been updated successfully" -msgstr "" +msgstr "Rechten zijn succesvol bijgewerkt" #. Default: "Permissions updated" #: components/manage/Sharing/Sharing msgid "Permissions updated" -msgstr "" +msgstr "Rechten bijgewerkt" #. Default: "Personal Information" #: components/manage/Toolbar/Toolbar @@ -2666,57 +2666,57 @@ msgstr "Persoonlijke voorkeuren" #: components/manage/Toolbar/More #: components/manage/Toolbar/Toolbar msgid "Personal tools" -msgstr "" +msgstr "Persoonlijke hulpmiddelen" #. Default: "Persons responsible for creating the content of this item. Please enter a list of user names, one per line. The principal creator should come first." #: components/manage/Contents/ContentsPropertiesModal msgid "Persons responsible for creating the content of this item. Please enter a list of user names, one per line. The principal creator should come first." -msgstr "Gebruikers die verantwoordelijk zijn voor de inhoud van dit item. De eindverantwoordelijke vermeldt u als eerste." +msgstr "Personen die verantwoordelijk zijn voor het maken van inhoud voor dit item. De eindverantwoordelijke vermeld je als eerste." #. Default: "Please choose an existing content as source for this element" #: components/manage/Blocks/Teaser/DefaultBody msgid "Please choose an existing content as source for this element" -msgstr "" +msgstr "Kies een bestaande inhoud als bron voor dit element aub" #. Default: "Please continue with the upgrade." #: components/manage/Controlpanels/Controlpanels msgid "Please continue with the upgrade." -msgstr "" +msgstr "Ga verder met de upgrade aub." #. Default: "Please ensure you have a backup of your site before performing the upgrade." #: components/manage/Controlpanels/UpgradeControlPanel msgid "Please ensure you have a backup of your site before performing the upgrade." -msgstr "" +msgstr "Zorg dat je een backup van de site hebt vooraleer de upgrade uit te voeren aub." #. Default: "Please enter a valid URL by deleting the block and adding a new video block." #: components/manage/Blocks/Video/Body msgid "Please enter a valid URL by deleting the block and adding a new video block." -msgstr "" +msgstr "Vul een geldige URL in door het blok te verwijderen en het toevoegen van een nieuw video blok." #. Default: "Please enter the Embed Code provided by Google Maps -> Share -> Embed map. It should contain the +```{youtube} kHec4MXH8vo +:privacy_mode: +:width: 100% +``` ## Presentations at Plone Conferences (PloneConf) and other events diff --git a/docs/source/user-manual/copy-paste-blocks.md b/docs/source/user-manual/copy-paste-blocks.md index f15f3b1616..4fbc68e769 100644 --- a/docs/source/user-manual/copy-paste-blocks.md +++ b/docs/source/user-manual/copy-paste-blocks.md @@ -28,6 +28,7 @@ This will select all the blocks between the start and end blocks, allowing you t ````{only} not text ```{video} ../_static/user-manual/blocks/block-copy-cut.mp4 +:alt: Copy or cut a block in Volto ``` ```` @@ -44,5 +45,6 @@ Also if you hold the {kbd}`ctrl` key while clicking the paste button, it keeps t ````{only} not text ```{video} ../_static/user-manual/blocks/block-paste.mp4 +:alt: Paste a block in Volto ``` ```` diff --git a/packages/volto/news/6486.documentation b/packages/volto/news/6486.documentation new file mode 100644 index 0000000000..66b5bd33a6 --- /dev/null +++ b/packages/volto/news/6486.documentation @@ -0,0 +1 @@ +Add support for sphinxcontrib-youtube. @stevepiercy diff --git a/requirements-docs.txt b/requirements-docs.txt index 406c7f60cd..3dad3b11f9 100644 --- a/requirements-docs.txt +++ b/requirements-docs.txt @@ -6,5 +6,6 @@ sphinx-autobuild sphinx-copybutton sphinx-examples sphinxcontrib-video +sphinxcontrib-youtube sphinxext-opengraph vale From d320bfe4737048d0add47f246ddec8d2830dceca Mon Sep 17 00:00:00 2001 From: Andrea Cecchi Date: Tue, 19 Nov 2024 03:11:31 +0100 Subject: [PATCH 35/47] Do not break toolbar if layout id is not registerd in layoutViewsNamesMapping (#6485) Co-authored-by: David Glick --- packages/volto/news/6485.bugfix | 1 + .../volto/src/components/manage/Display/Display.jsx | 12 +++++++----- 2 files changed, 8 insertions(+), 5 deletions(-) create mode 100644 packages/volto/news/6485.bugfix diff --git a/packages/volto/news/6485.bugfix b/packages/volto/news/6485.bugfix new file mode 100644 index 0000000000..3813144e9b --- /dev/null +++ b/packages/volto/news/6485.bugfix @@ -0,0 +1 @@ +Do not break toolbar if layout id is not registered in layoutViewsNamesMapping. @cekk diff --git a/packages/volto/src/components/manage/Display/Display.jsx b/packages/volto/src/components/manage/Display/Display.jsx index 5b098644ea..7633b804a1 100644 --- a/packages/volto/src/components/manage/Display/Display.jsx +++ b/packages/volto/src/components/manage/Display/Display.jsx @@ -123,13 +123,15 @@ const DisplaySelect = (props) => { ? state.content.data[getLayoutFieldname(state.content.data)] : '', ); + const layoutMappingId = config.views.layoutViewsNamesMapping?.[layout]; const [selectedOption, setselectedOption] = useState({ value: layout, - label: - intl.formatMessage({ - id: config.views.layoutViewsNamesMapping?.[layout], - defaultMessage: config.views.layoutViewsNamesMapping?.[layout], - }) || layout, + label: layoutMappingId + ? intl.formatMessage({ + id: layoutMappingId, + defaultMessage: layoutMappingId, + }) + : layout, }); const type = useSelector((state) => From 3eb23a4e94e5b71c62a8f8083162867370fc53da Mon Sep 17 00:00:00 2001 From: Giulia Ghisini <51911425+giuliaghisini@users.noreply.github.com> Date: Tue, 19 Nov 2024 12:04:10 +0100 Subject: [PATCH 36/47] fix: BodyClass depending on sections (#6487) Co-authored-by: Steve Piercy --- packages/volto/news/6487.bugfix | 1 + packages/volto/src/components/theme/App/App.jsx | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 packages/volto/news/6487.bugfix diff --git a/packages/volto/news/6487.bugfix b/packages/volto/news/6487.bugfix new file mode 100644 index 0000000000..7b2f017ba8 --- /dev/null +++ b/packages/volto/news/6487.bugfix @@ -0,0 +1 @@ +Replace _all_ spaces with `-` in `BodyClass` classes, instead of with `-` or `` depending on the content type or section. @giuliaghisini diff --git a/packages/volto/src/components/theme/App/App.jsx b/packages/volto/src/components/theme/App/App.jsx index a7a65415f0..c3076a7fc4 100644 --- a/packages/volto/src/components/theme/App/App.jsx +++ b/packages/volto/src/components/theme/App/App.jsx @@ -141,7 +141,7 @@ export class App extends Component { {this.props.content && this.props.content['@type'] && ( )} @@ -155,7 +155,7 @@ export class App extends Component { [`is-adding-contenttype-${decodeURIComponent( this.props.location?.search?.replace('?type=', ''), ) - .replace(' ', '') + .replaceAll(' ', '-') .toLowerCase()}`]: this.props.location?.search, 'is-authenticated': !!this.props.token, 'is-anonymous': !this.props.token, From 76136354610c4e4f457e0ecdf12e7eb11f08b910 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20S=C3=BCss?= Date: Wed, 20 Nov 2024 10:11:00 +0100 Subject: [PATCH 37/47] More privacy concerning youtube links and fixing link check warnings for youtube playlist links (#6494) --- .../source/configuration/volto-slate/index.md | 2 +- docs/source/tutorials/index.md | 43 ++++++++++--------- packages/volto/news/4203.documentation | 1 + 3 files changed, 24 insertions(+), 22 deletions(-) create mode 100644 packages/volto/news/4203.documentation diff --git a/docs/source/configuration/volto-slate/index.md b/docs/source/configuration/volto-slate/index.md index d8f51c4726..475cc3653c 100644 --- a/docs/source/configuration/volto-slate/index.md +++ b/docs/source/configuration/volto-slate/index.md @@ -13,7 +13,7 @@ myst: `volto-slate` is an interactive default text editor for Volto, developed on top of {term}`Slate` and integrated into the core system. It offers enhanced WYSIWYG functionality and behavior. -See a [brief elevator pitch for `volto-slate`](https://www.youtube.com/watch?v=SOz-rk5e4_w). +See a [brief elevator pitch for `volto-slate`](https://www.youtube-nocookie.com/embed/SOz-rk5e4_w?privacy_mode=1). We believe that Volto's rich text form editor (the Volto Composite Page editor) needs strong integration between the rich text capabilities and the rest of the Volto blocks. Some examples of the kind of strong integration we have in mind: diff --git a/docs/source/tutorials/index.md b/docs/source/tutorials/index.md index 8a473b16ca..adde4f061b 100644 --- a/docs/source/tutorials/index.md +++ b/docs/source/tutorials/index.md @@ -32,6 +32,7 @@ You can watch the talk during the World Plone Day 2021: ```{youtube} kHec4MXH8vo :privacy_mode: +:url_parameters: ?privacy_mode=1 :width: 100% ``` @@ -43,43 +44,43 @@ In recent years the React based Volto frontend for Plone has been presented in m ### PloneConf 2023 -- [State of Plone Keynote](https://www.youtube.com/watch?v=jl19wuC0wtw&%3Blist=PLGN9BI-OAQkSXMXVBXLWQAQr0AF2xM_NU&%3Bindex=1) -- [Piero Nicolli - Theming Volto in 2024](https://www.youtube.com/watch?v=LkPOsIn1jYY&%3Blist=PLGN9BI-OAQkSXMXVBXLWQAQr0AF2xM_NU&%3Bindex=6) -- [Víctor Fernández de Alba - Breaking boundaries: Plone as headless CMS](https://www.youtube.com/watch?v=43LVtjYyo28&list=PLGN9BI-OAQkSXMXVBXLWQAQr0AF2xM_NU&index=7) -- [Rob Gietema - How to build a site using Nick](https://www.youtube.com/watch?v=ZbdYvNAnamM&list=PLGN9BI-OAQkSXMXVBXLWQAQr0AF2xM_NU&index=18) -- [Alok Kumar - Is your Volto add-on developer friendly?](https://www.youtube.com/watch?v=E6fH3NhR2Hc&list=PLGN9BI-OAQkSXMXVBXLWQAQr0AF2xM_NU&index=20) -- [Dylan Jay and Jefferson Bledsoe - How to implement a Gov Design System in Plone 6](https://www.youtube.com/watch?v=_XmKc7jNIE8&list=PLGN9BI-OAQkSXMXVBXLWQAQr0AF2xM_NU&index=25) -- [Víctor Fernández de Alba - Volto-light-theme: Volto Theming, Reimagined](https://www.youtube.com/watch?v=t2X2NO62J-8) +- [State of Plone Keynote](https://www.youtube-nocookie.com/embed/jl19wuC0wtw?list=PLGN9BI-OAQkSXMXVBXLWQAQr0AF2xM_NU&index=1&privacy_mode=1) +- [Piero Nicolli - Theming Volto in 2024](https://www.youtube-nocookie.com/embed/LkPOsIn1jYY?list=PLGN9BI-OAQkSXMXVBXLWQAQr0AF2xM_NU&index=6&privacy_mode=1) +- [Víctor Fernández de Alba - Breaking boundaries: Plone as headless CMS](https://www.youtube-nocookie.com/embed/43LVtjYyo28?list=PLGN9BI-OAQkSXMXVBXLWQAQr0AF2xM_NU&index=7&privacy_mode=1) +- [Rob Gietema - How to build a site using Nick](https://www.youtube-nocookie.com/embed/ZbdYvNAnamM?list=PLGN9BI-OAQkSXMXVBXLWQAQr0AF2xM_NU&index=18&privacy_mode=1) +- [Alok Kumar - Is your Volto add-on developer friendly?](https://www.youtube-nocookie.com/embed/E6fH3NhR2Hc?list=PLGN9BI-OAQkSXMXVBXLWQAQr0AF2xM_NU&index=20&privacy_mode=1) +- [Dylan Jay and Jefferson Bledsoe - How to implement a Gov Design System in Plone 6](https://www.youtube-nocookie.com/embed/_XmKc7jNIE8?list=PLGN9BI-OAQkSXMXVBXLWQAQr0AF2xM_NU&index=25&privacy_mode=1) +- [Víctor Fernández de Alba - Volto-light-theme: Volto Theming, Reimagined](https://www.youtube-nocookie.com/embed/t2X2NO62J-8) ### PloneConf 2022 -[PloneConf 2022 full Playlist on Youtube](https://www.youtube.com/playlist?list=PLGN9BI-OAQkQxqQcCZeJefMC8XlA_qv3Z) +[PloneConf 2022 full Playlist on Youtube](https://www.youtube-nocookie.com/embed/playlist?list=PLGN9BI-OAQkQxqQcCZeJefMC8XlA_qv3Z&privacy_mode=1) Plone 6 site presentations: -- [Rai Way: Plone6 supporting the world of italian information, sports and entertainment](https://www.youtube.com/watch?v=hHHGlSjf5O4&list=PLGN9BI-OAQkQxqQcCZeJefMC8XlA_qv3Z) -- [How Plone Powers Hundreds of Websites at one of the Largest Research Institutions in Europe](https://www.youtube.com/watch?v=bxWt-GEmPcc&%3Blist=PLGN9BI-OAQkQxqQcCZeJefMC8XlA_qv3Z) +- [Rai Way: Plone6 supporting the world of italian information, sports and entertainment](https://www.youtube-nocookie.com/embed/hHHGlSjf5O4?list=PLGN9BI-OAQkQxqQcCZeJefMC8XlA_qv3Z&privacy_mode=1) +- [How Plone Powers Hundreds of Websites at one of the Largest Research Institutions in Europe](https://www.youtube-nocookie.com/embed/bxWt-GEmPcc?list=PLGN9BI-OAQkQxqQcCZeJefMC8XlA_qv3Z&privacy_mode=1) Developer/integrator talks: -- [Anatomy of a Volto project](https://www.youtube.com/watch?v=JtNufyFlgc8&list=PLGN9BI-OAQkQxqQcCZeJefMC8XlA_qv3Z) -- [Creating a Volto Theme](https://www.youtube.com/watch?v=AMHN74Jr27Y&%3Blist=PLGN9BI-OAQkQxqQcCZeJefMC8XlA_qv3Z) -- [A Deep Dive Into Internals Of Volto](https://www.youtube.com/watch?v=sMeTDRgp3uI&list=PLGN9BI-OAQkQxqQcCZeJefMC8XlA_qv3Z) -- [DevOps Bird's Eye View on the Plone 6 Backend](https://www.youtube.com/watch?v=L5PvGwWC9P4&%3Blist=PLGN9BI-OAQkQxqQcCZeJefMC8XlA_qv3Z) +- [Anatomy of a Volto project](https://www.youtube-nocookie.com/embed/JtNufyFlgc8?list=PLGN9BI-OAQkQxqQcCZeJefMC8XlA_qv3Z&privacy_mode=1) +- [Creating a Volto Theme](https://www.youtube-nocookie.com/embed/AMHN74Jr27Y?list=PLGN9BI-OAQkQxqQcCZeJefMC8XlA_qv3Z&privacy_mode=1) +- [A Deep Dive Into Internals Of Volto](https://www.youtube-nocookie.com/embed/sMeTDRgp3uI?list=PLGN9BI-OAQkQxqQcCZeJefMC8XlA_qv3Z&privacy_mode=1) +- [DevOps Bird's Eye View on the Plone 6 Backend](https://www.youtube-nocookie.com/embed/L5PvGwWC9P4?list=PLGN9BI-OAQkQxqQcCZeJefMC8XlA_qv3Z&privacy_mode=1) ### Previous PloneConfs -- [PloneConf 2021 full Playlist on YouTube](https://www.youtube.com/playlist?list=PLGN9BI-OAQkQDLQinBwdEXpebDTQCwdGi) -- [PloneConf 2020 full Playlist on YouTube](https://www.youtube.com/playlist?list=PLGN9BI-OAQkTJPayNdKIZ8lLDm5RVOLV3) +- [PloneConf 2021 full Playlist on YouTube](https://www.youtube-nocookie.com/embed/playlist?list=PLGN9BI-OAQkQDLQinBwdEXpebDTQCwdGi&privacy_mode=1) +- [PloneConf 2020 full Playlist on YouTube](https://www.youtube-nocookie.com/embed/playlist?list=PLGN9BI-OAQkTJPayNdKIZ8lLDm5RVOLV3&privacy_mode=1) ## World Plone Day 2022 -World Plone Day is a 24-hour streaming event, with the goal was to promote and educate the public about the benefits of using Plone and of being part of the Plone community. [Full World Plone Day 2022 playlist on Youtube](https://www.youtube.com/playlist?list=PLGN9BI-OAQkQmEqf6O8jeyoFY1b2hD1uL) +World Plone Day is a 24-hour streaming event, with the goal was to promote and educate the public about the benefits of using Plone and of being part of the Plone community. [Full World Plone Day 2022 playlist on Youtube](https://www.youtube-nocookie.com/embed/playlist?list=PLGN9BI-OAQkQmEqf6O8jeyoFY1b2hD1uL&privacy_mode=1) -- [Plone 6 Volto's Seamless Mode](https://www.youtube.com/watch?v=Mj8pHRBls-w&list=PLGN9BI-OAQkQmEqf6O8jeyoFY1b2hD1uL) -- [Volto add ons separator and carousel](https://www.youtube.com/watch?v=eyTMI5TYcVg&list=PLGN9BI-OAQkQmEqf6O8jeyoFY1b2hD1uL) -- [Weekly Volto Live – Retrospective](https://www.youtube.com/watch?v=WT6OjkSrB20&%3Blist=PLGN9BI-OAQkQmEqf6O8jeyoFY1b2hD1uL) -- [Migrating from Classic to Volto](https://www.youtube.com/watch?v=09fg456T90s&list=PLGN9BI-OAQkQmEqf6O8jeyoFY1b2hD1uL) +- [Plone 6 Volto's Seamless Mode](https://www.youtube-nocookie.com/embed/Mj8pHRBls-w?list=PLGN9BI-OAQkQmEqf6O8jeyoFY1b2hD1uL&privacy_mode=1) +- [Volto add ons separator and carousel](https://www.youtube-nocookie.com/embed/eyTMI5TYcVg?list=PLGN9BI-OAQkQmEqf6O8jeyoFY1b2hD1uL&privacy_mode=1) +- [Weekly Volto Live – Retrospective](https://www.youtube-nocookie.com/embed/WT6OjkSrB20?list=PLGN9BI-OAQkQmEqf6O8jeyoFY1b2hD1uL&privacy_mode=1) +- [Migrating from Classic to Volto](https://www.youtube-nocookie.com/embed/09fg456T90s?list=PLGN9BI-OAQkQmEqf6O8jeyoFY1b2hD1uL&privacy_mode=1) diff --git a/packages/volto/news/4203.documentation b/packages/volto/news/4203.documentation new file mode 100644 index 0000000000..f74508685a --- /dev/null +++ b/packages/volto/news/4203.documentation @@ -0,0 +1 @@ +More privacy concerning youtube links and fixing link check warnings for youtube playlist links. @stevepiercy @ksuess \ No newline at end of file From 4dc81eda2a3af96c8fbe508dfca8a76fe6216d6c Mon Sep 17 00:00:00 2001 From: Steve Piercy Date: Thu, 21 Nov 2024 02:51:29 -0800 Subject: [PATCH 38/47] Refactor documentation includes to align with main documentation pattern (#6495) --- .../branch-policy.md => _inc/_branch-policy.md} | 0 .../install-docker.md => _inc/_install-docker.md} | 0 .../install-git.md => _inc/_install-git.md} | 0 .../install-make.md => _inc/_install-make.md} | 0 .../install-nodejs.md => _inc/_install-nodejs.md} | 0 .../install-nvm.md => _inc/_install-nvm.md} | 0 .../_install-operating-system.md} | 0 docs/source/conf.py | 2 +- docs/source/contributing/developing-core.md | 12 ++++++------ docs/source/contributing/index.md | 2 +- docs/source/contributing/version-policy.md | 2 +- packages/volto/news/6495.documentation | 1 + 12 files changed, 10 insertions(+), 9 deletions(-) rename docs/source/{contributing/branch-policy.md => _inc/_branch-policy.md} (100%) rename docs/source/{contributing/install-docker.md => _inc/_install-docker.md} (100%) rename docs/source/{contributing/install-git.md => _inc/_install-git.md} (100%) rename docs/source/{contributing/install-make.md => _inc/_install-make.md} (100%) rename docs/source/{contributing/install-nodejs.md => _inc/_install-nodejs.md} (100%) rename docs/source/{contributing/install-nvm.md => _inc/_install-nvm.md} (100%) rename docs/source/{contributing/install-operating-system.md => _inc/_install-operating-system.md} (100%) create mode 100644 packages/volto/news/6495.documentation diff --git a/docs/source/contributing/branch-policy.md b/docs/source/_inc/_branch-policy.md similarity index 100% rename from docs/source/contributing/branch-policy.md rename to docs/source/_inc/_branch-policy.md diff --git a/docs/source/contributing/install-docker.md b/docs/source/_inc/_install-docker.md similarity index 100% rename from docs/source/contributing/install-docker.md rename to docs/source/_inc/_install-docker.md diff --git a/docs/source/contributing/install-git.md b/docs/source/_inc/_install-git.md similarity index 100% rename from docs/source/contributing/install-git.md rename to docs/source/_inc/_install-git.md diff --git a/docs/source/contributing/install-make.md b/docs/source/_inc/_install-make.md similarity index 100% rename from docs/source/contributing/install-make.md rename to docs/source/_inc/_install-make.md diff --git a/docs/source/contributing/install-nodejs.md b/docs/source/_inc/_install-nodejs.md similarity index 100% rename from docs/source/contributing/install-nodejs.md rename to docs/source/_inc/_install-nodejs.md diff --git a/docs/source/contributing/install-nvm.md b/docs/source/_inc/_install-nvm.md similarity index 100% rename from docs/source/contributing/install-nvm.md rename to docs/source/_inc/_install-nvm.md diff --git a/docs/source/contributing/install-operating-system.md b/docs/source/_inc/_install-operating-system.md similarity index 100% rename from docs/source/contributing/install-operating-system.md rename to docs/source/_inc/_install-operating-system.md diff --git a/docs/source/conf.py b/docs/source/conf.py index f2d9aed9a7..2080b93576 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -118,7 +118,7 @@ # This pattern also affects html_static_path and html_extra_path. exclude_patterns = [ "spelling_wordlist.txt", - "contributing/branch-policy.md", + "_inc/*", ] suppress_warnings = [ diff --git a/docs/source/contributing/developing-core.md b/docs/source/contributing/developing-core.md index f0507b2ede..f0ffb5462e 100644 --- a/docs/source/contributing/developing-core.md +++ b/docs/source/contributing/developing-core.md @@ -76,7 +76,7 @@ Volto has the following folder structure. To set up a Volto core development environment, your system must satisfy the following prerequisites. -```{include} ./install-operating-system.md +```{include} ../_inc/_install-operating-system.md ``` - {term}`nvm` @@ -94,7 +94,7 @@ When developing a project using Plone, Yarn or other package managers may be use ### nvm -```{include} ./install-nvm.md +```{include} ../_inc/_install-nvm.md ``` @@ -103,7 +103,7 @@ When developing a project using Plone, Yarn or other package managers may be use We recommend that you install Node.js using nvm. Alternatively you can install Node.js using Homebrew or other package installer. -```{include} ./install-nodejs.md +```{include} ../_inc/_install-nodejs.md ``` @@ -136,19 +136,19 @@ Compare the output to the [latest pnpm release number](https://www.npmjs.com/pac ### Make -```{include} ./install-make.md +```{include} ../_inc/_install-make.md ``` ### Docker -```{include} ./install-docker.md +```{include} ../_inc/_install-docker.md ``` ### Git -```{include} ../contributing/install-git.md +```{include} ../_inc/_install-git.md ``` diff --git a/docs/source/contributing/index.md b/docs/source/contributing/index.md index cc6b8d03b2..46f2240f2b 100644 --- a/docs/source/contributing/index.md +++ b/docs/source/contributing/index.md @@ -44,7 +44,7 @@ The Volto Team reviews pull requests only from people with a GitHub account who ## Branch policy -```{include} ./branch-policy.md +```{include} ../_inc/_branch-policy.md ``` diff --git a/docs/source/contributing/version-policy.md b/docs/source/contributing/version-policy.md index 19bac961b8..fe42d3d1d5 100644 --- a/docs/source/contributing/version-policy.md +++ b/docs/source/contributing/version-policy.md @@ -92,7 +92,7 @@ We do not guarantee that outdated browsers, such as Internet Explorer 11, are su ## Branch policy -```{include} ./branch-policy.md +```{include} ../_inc/_branch-policy.md ``` diff --git a/packages/volto/news/6495.documentation b/packages/volto/news/6495.documentation new file mode 100644 index 0000000000..ad974979eb --- /dev/null +++ b/packages/volto/news/6495.documentation @@ -0,0 +1 @@ +Refactor documentation includes to align with main documentation pattern. @stevepiercy From 33bb9b17768bff09bd9560b585efc9e44787db8a Mon Sep 17 00:00:00 2001 From: Steve Piercy Date: Thu, 21 Nov 2024 10:15:29 -0800 Subject: [PATCH 39/47] Update instructions to install pipx in `RELEASING.md` (#6496) --- RELEASING.md | 8 +++++--- packages/volto/news/6496.internal | 1 + 2 files changed, 6 insertions(+), 3 deletions(-) create mode 100644 packages/volto/news/6496.internal diff --git a/RELEASING.md b/RELEASING.md index 55a6def6e7..44e2dac6a0 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -44,13 +44,15 @@ The release process calls `towncrier`. It is a Python library that uses the Python utility `pipx`. This utility allows you to call and execute Python modules without installing them as a prerequisite in your system. It works similar to the NodeJS `npx` utility. -On macOS, you can install `pipx` into your system: + +Install {term}`pipx` for your active Python, and ensure it is on your `$PATH`. +Carefully read the console output for further instructions, if needed. ```shell -brew install pipx +python3 -m pip install pipx +pipx ensurepath ``` -Or follow detailed instructions in the `pipx` documentation for [Installation](https://pypa.github.io/pipx/installation/). ## Running the release process diff --git a/packages/volto/news/6496.internal b/packages/volto/news/6496.internal new file mode 100644 index 0000000000..14a6ca8375 --- /dev/null +++ b/packages/volto/news/6496.internal @@ -0,0 +1 @@ +Update instructions to install `pipx` in `RELEASING.md`. @stevepiercy From 08e087f7f275d437f9b4b562a326474cdb6d7bd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Fern=C3=A1ndez=20de=20Alba?= Date: Thu, 21 Nov 2024 21:02:10 +0100 Subject: [PATCH 40/47] [components] Update RAC to 1.5.0, fix Disclosure import (#6498) --- packages/components/news/6498.feature | 1 + packages/components/package.json | 6 +- .../Disclosure/Disclosure.stories.tsx | 2 +- .../src/components/Disclosure/Disclosure.tsx | 5 +- .../DisclosureGroup.stories.tsx | 4 +- .../DisclosureGroup/DisclosureGroup.tsx | 5 +- packages/providers/news/6498.feature | 1 + packages/providers/package.json | 2 +- pnpm-lock.yaml | 1773 ++++++++++++++++- 9 files changed, 1720 insertions(+), 79 deletions(-) create mode 100644 packages/components/news/6498.feature create mode 100644 packages/providers/news/6498.feature diff --git a/packages/components/news/6498.feature b/packages/components/news/6498.feature new file mode 100644 index 0000000000..6f5c7d369c --- /dev/null +++ b/packages/components/news/6498.feature @@ -0,0 +1 @@ +Update RAC to 1.5.0 @sneridagh diff --git a/packages/components/package.json b/packages/components/package.json index 11df63e9d3..c855eadb00 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -110,11 +110,11 @@ "vitest-axe": "^0.1.0" }, "dependencies": { - "@react-aria/utils": "^3.25.3", - "@react-spectrum/utils": "^3.11.11", + "@react-aria/utils": "^3.26.0", + "@react-spectrum/utils": "^3.12.0", "@storybook/test": "^8.0.4", "clsx": "^2.1.1", - "react-aria-components": "^1.4.0" + "react-aria-components": "^1.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0", diff --git a/packages/components/src/components/Disclosure/Disclosure.stories.tsx b/packages/components/src/components/Disclosure/Disclosure.stories.tsx index 6f41082267..c318a693b4 100644 --- a/packages/components/src/components/Disclosure/Disclosure.stories.tsx +++ b/packages/components/src/components/Disclosure/Disclosure.stories.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import { Disclosure } from './Disclosure'; import { Button, - UNSTABLE_DisclosurePanel as DisclosurePanel, + DisclosurePanel as DisclosurePanel, } from 'react-aria-components'; import type { Meta, StoryObj } from '@storybook/react'; diff --git a/packages/components/src/components/Disclosure/Disclosure.tsx b/packages/components/src/components/Disclosure/Disclosure.tsx index 1820159bee..7322a5818b 100644 --- a/packages/components/src/components/Disclosure/Disclosure.tsx +++ b/packages/components/src/components/Disclosure/Disclosure.tsx @@ -1,14 +1,11 @@ import * as React from 'react'; import { - UNSTABLE_Disclosure as RACDisclosure, + Disclosure as RACDisclosure, type DisclosureProps, } from 'react-aria-components'; /** * A Disclosure is used to show or hide content that is not visible by default. - * - * NOTE: This component is in alpha in RAC thus it's unstable and is subjects of change - * in the API, behavior, and appearance. */ export function Disclosure(props: DisclosureProps) { return ; diff --git a/packages/components/src/components/DisclosureGroup/DisclosureGroup.stories.tsx b/packages/components/src/components/DisclosureGroup/DisclosureGroup.stories.tsx index 1871ade147..c51881e461 100644 --- a/packages/components/src/components/DisclosureGroup/DisclosureGroup.stories.tsx +++ b/packages/components/src/components/DisclosureGroup/DisclosureGroup.stories.tsx @@ -2,8 +2,8 @@ import * as React from 'react'; import { DisclosureGroup } from './DisclosureGroup'; import { Button, - UNSTABLE_Disclosure as Disclosure, - UNSTABLE_DisclosurePanel as DisclosurePanel, + Disclosure as Disclosure, + DisclosurePanel as DisclosurePanel, } from 'react-aria-components'; import type { Meta, StoryObj } from '@storybook/react'; diff --git a/packages/components/src/components/DisclosureGroup/DisclosureGroup.tsx b/packages/components/src/components/DisclosureGroup/DisclosureGroup.tsx index 7588d0d580..980950ee75 100644 --- a/packages/components/src/components/DisclosureGroup/DisclosureGroup.tsx +++ b/packages/components/src/components/DisclosureGroup/DisclosureGroup.tsx @@ -1,14 +1,11 @@ import * as React from 'react'; import { - UNSTABLE_DisclosureGroup as RACDisclosureGroup, + DisclosureGroup as RACDisclosureGroup, type DisclosureGroupProps, } from 'react-aria-components'; /** * A DisclosureGroup is used to group Disclosures together to create an accordion. - * - * NOTE: This component is in alpha in RAC thus it's unstable and is subjects of change - * in the API, behavior, and appearance. */ export function DisclosureGroup(props: DisclosureGroupProps) { return ; diff --git a/packages/providers/news/6498.feature b/packages/providers/news/6498.feature new file mode 100644 index 0000000000..6f5c7d369c --- /dev/null +++ b/packages/providers/news/6498.feature @@ -0,0 +1 @@ +Update RAC to 1.5.0 @sneridagh diff --git a/packages/providers/package.json b/packages/providers/package.json index 9840705f8f..cd9222cee3 100644 --- a/packages/providers/package.json +++ b/packages/providers/package.json @@ -65,7 +65,7 @@ "@plone/components": "workspace:*", "@plone/registry": "workspace:*", "@tanstack/react-query": "^5.59.0", - "react-aria-components": "^1.4.0" + "react-aria-components": "^1.5.0" }, "devDependencies": { "@arethetypeswrong/cli": "^0.16.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d17950b412..cb14ba6eb6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -502,11 +502,11 @@ importers: packages/components: dependencies: '@react-aria/utils': - specifier: ^3.25.3 - version: 3.25.3(react@18.2.0) + specifier: ^3.26.0 + version: 3.26.0(react@18.2.0) '@react-spectrum/utils': - specifier: ^3.11.11 - version: 3.11.11(react@18.2.0) + specifier: ^3.12.0 + version: 3.12.0(react@18.2.0) '@storybook/test': specifier: ^8.0.4 version: 8.0.8(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.12.7))(vitest@2.1.3(@types/node@20.12.7)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3)) @@ -517,8 +517,8 @@ importers: specifier: ^16.8.0 || ^17.0.0 || ^18.0.0 version: 18.2.0 react-aria-components: - specifier: ^1.4.0 - version: 1.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^1.5.0 + version: 1.5.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react-dom: specifier: ^16.8.0 || ^17.0.0 || ^18.0.0 version: 18.2.0(react@18.2.0) @@ -770,8 +770,8 @@ importers: specifier: ^16.8.0 || ^17.0.0 || ^18.0.0 version: 18.2.0 react-aria-components: - specifier: ^1.4.0 - version: 1.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^1.5.0 + version: 1.5.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react-dom: specifier: ^16.8.0 || ^17.0.0 || ^18.0.0 version: 18.2.0(react@18.2.0) @@ -3723,15 +3723,27 @@ packages: '@internationalized/date@3.5.6': resolution: {integrity: sha512-jLxQjefH9VI5P9UQuqB6qNKnvFt1Ky1TPIzHGsIlCi7sZZoMR8SdYbBGRvM0y+Jtb+ez4ieBzmiAUcpmPYpyOw==} + '@internationalized/date@3.6.0': + resolution: {integrity: sha512-+z6ti+CcJnRlLHok/emGEsWQhe7kfSmEW+/6qCzvKY67YPh7YOBfvc7+/+NXq+zJlbArg30tYpqLjNgcAYv2YQ==} + '@internationalized/message@3.1.5': resolution: {integrity: sha512-hjEpLKFlYA3m5apldLqzHqw531qqfOEq0HlTWdfyZmcloWiUbWsYXD6YTiUmQmOtarthzhdjCAwMVrB8a4E7uA==} + '@internationalized/message@3.1.6': + resolution: {integrity: sha512-JxbK3iAcTIeNr1p0WIFg/wQJjIzJt9l/2KNY/48vXV7GRGZSv3zMxJsce008fZclk2cDC8y0Ig3odceHO7EfNQ==} + '@internationalized/number@3.5.4': resolution: {integrity: sha512-h9huwWjNqYyE2FXZZewWqmCdkw1HeFds5q4Siuoms3hUQC5iPJK3aBmkFZoDSLN4UD0Bl8G22L/NdHpeOr+/7A==} + '@internationalized/number@3.6.0': + resolution: {integrity: sha512-PtrRcJVy7nw++wn4W2OuePQQfTqDzfusSuY1QTtui4wa7r+rGVtR75pO8CyKvHvzyQYi3Q1uO5sY0AsB4e65Bw==} + '@internationalized/string@3.2.4': resolution: {integrity: sha512-BcyadXPn89Ae190QGZGDUZPqxLj/xsP4U1Br1oSy8yfIjmpJ8cJtGYleaodqW/EmzFjwELtwDojLkf3FhV6SjA==} + '@internationalized/string@3.2.5': + resolution: {integrity: sha512-rKs71Zvl2OKOHM+mzAFMIyqR5hI1d1O6BBkMK2/lkfg3fkmVh9Eeg0awcA8W2WqYqDOv6a86DIOlFpggwLtbuw==} + '@ioredis/commands@1.2.0': resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} @@ -4487,52 +4499,109 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-aria/breadcrumbs@3.5.19': + resolution: {integrity: sha512-mVngOPFYVVhec89rf/CiYQGTfaLRfHFtX+JQwY7sNYNqSA+gO8p4lNARe3Be6bJPgH+LUQuruIY9/ZDL6LT3HA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-aria/button@3.10.0': resolution: {integrity: sha512-mhbn2tEsr991sjG6YMH6oN3ELWb4YvZZ8mnZHMNLa3l8T00PV0ClvQBsUndo6uSvuTHhpFzmMMkJFhYYUwCKlw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-aria/button@3.11.0': + resolution: {integrity: sha512-b37eIV6IW11KmNIAm65F3SEl2/mgj5BrHIysW6smZX3KoKWTGYsYfcQkmtNgY0GOSFfDxMCoolsZ6mxC00nSDA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-aria/calendar@3.5.12': resolution: {integrity: sha512-C8VRjRwEVPaGoCtjOlC0lb3mVSz4ajbal8jfvcbp7LOqCcmOVTUbiM7EPTy60EfZRanFNSp2D1ZstEZDU+cqsg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-aria/calendar@3.6.0': + resolution: {integrity: sha512-tZ3nd5DP8uxckbj83Pt+4RqgcTWDlGi7njzc7QqFOG2ApfnYDUXbIpb/Q4KY6JNlJskG8q33wo0XfOwNy8J+eg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-aria/checkbox@3.14.7': resolution: {integrity: sha512-aqVxXcr/8P7pQ7R34DlJX2SdBvWtHof9lLTVBY/9tgMplcKIoVBdlVUYPtqWxT3tGan+rruPQHbzTx8zJRFJyg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-aria/checkbox@3.15.0': + resolution: {integrity: sha512-z/8xd4em7o0MroBXwkkwv7QRwiJaA1FwqMhRUb7iqtBGP2oSytBEDf0N7L09oci32a1P4ZPz2rMK5GlLh/PD6g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-aria/collections@3.0.0-alpha.5': resolution: {integrity: sha512-8m8yZe1c5PYCylEN4lcG3ZL/1nyrON95nVsoknC8shY1uKP01oJd7w+f6hvVza0tJRQuVe4zW3gO4FVjv33a5g==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-aria/collections@3.0.0-alpha.6': + resolution: {integrity: sha512-A+7Eap/zvsghMb5/C3EAPn41axSzRhtX2glQRXSBj1mK31CTPCZ9BhrMIMC5DL7ZnfA7C+Ysilo9nI2YQh5PMg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-aria/color@3.0.0': resolution: {integrity: sha512-IwHI4e2fUHUOZHRrL2MsxGZFp/RCR2cLjm39gT41jVSuH4zjxueUf96NDm6c7FD0mB5vfk0jo+KJMnShL1a2rg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-aria/color@3.0.2': + resolution: {integrity: sha512-dSM5qQRcR1gRGYCBw0IGRmc29gjfoht3cQleKb8MMNcgHYa2oi5VdCs2yKXmYFwwVC6uPtnlNy9S6e0spqdr+w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-aria/combobox@3.10.4': resolution: {integrity: sha512-jzLyRwpwH5SCfQl5giLSwLaw9EKlRiMG39kDZLRB4MQ1MN4sIdIP2TXBbdYcSLtYjduJm2JfRvs2ezI+QI+umA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-aria/combobox@3.11.0': + resolution: {integrity: sha512-s88YMmPkMO1WSoiH1KIyZDLJqUwvM2wHXXakj3cYw1tBHGo4rOUFq+JWQIbM5EDO4HOR4AUUqzIUd0NO7t3zyg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-aria/datepicker@3.11.3': resolution: {integrity: sha512-HwGxDctFry5ew3Cu7gWpUVodaCg//V6NCihSRjLvnW/TWG+UFLzTafxTqqm8eRbicT3DJlXCLOUPk8Ek0txW6A==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-aria/datepicker@3.12.0': + resolution: {integrity: sha512-VYNXioLfddIHpwQx211+rTYuunDmI7VHWBRetCpH3loIsVFuhFSRchTQpclAzxolO3g0vO7pMVj9VYt7Swp6kg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-aria/dialog@3.5.18': resolution: {integrity: sha512-j0x0OwDZKyW2GqBZl2Dw/pHl0uSCzhHOg5jNeulkZC8xQa8COuksQf5NFzPmgRPnzqpbgvSzCSs41ymS8spmFg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-aria/dialog@3.5.20': + resolution: {integrity: sha512-l0GZVLgeOd3kL3Yj8xQW7wN3gn9WW3RLd/SGI9t7ciTq+I/FhftjXCWzXLlOCCTLMf+gv7eazecECtmoWUaZWQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/disclosure@3.0.0': + resolution: {integrity: sha512-xO9QTQSvymujTjCs1iCQ4+dKZvtF/rVVaFZBKlUtqIqwTHMdqeZu4fh5miLEnTyVLNHMGzLrFggsd8Q+niC9Og==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-aria/disclosure@3.0.0-alpha.0': resolution: {integrity: sha512-/tleriRORdkRJf2JXjiRfhLfXA5WY0nPT3DoodZJgD5Fj/aCjrWXarVGUQuEk9vsH5pwinQiQB5So+cA+xF+UQ==} peerDependencies: @@ -4545,11 +4614,27 @@ packages: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-aria/dnd@3.8.0': + resolution: {integrity: sha512-JiqHY3E9fDU5Kb4gN22cuK6QNlpMCGe6ngR/BV+Q8mLEsdoWcoUAYOtYXVNNTRvCdVbEWI87FUU+ThyPpoDhNQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-aria/focus@3.18.3': resolution: {integrity: sha512-WKUElg+5zS0D3xlVn8MntNnkzJql2J6MuzAMP8Sv5WTgFDse/XGR842dsxPTIyKKdrWVCRegCuwa4m3n/GzgJw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-aria/focus@3.19.0': + resolution: {integrity: sha512-hPF9EXoUQeQl1Y21/rbV2H4FdUR2v+4/I0/vB+8U3bT1CJ+1AFj1hc/rqx2DqEwDlEwOHN+E4+mRahQmlybq0A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/form@3.0.11': + resolution: {integrity: sha512-oXzjTiwVuuWjZ8muU0hp3BrDH5qjVctLOF50mjPvqUbvXQTHhoDxWweyIXPQjGshaqBd2w4pWaE4A2rG2O/apw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-aria/form@3.0.9': resolution: {integrity: sha512-9M6IfC5t47G19c8roHWnkKd275BrECTzyTsc4rzf5OepJfHfG4evST6x+4gGOFYi8soC9XoQdJl4TRh/mft+gw==} peerDependencies: @@ -4561,6 +4646,18 @@ packages: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-aria/grid@3.11.0': + resolution: {integrity: sha512-lN5FpQgu2Rq0CzTPWmzRpq6QHcMmzsXYeClsgO3108uVp1/genBNAObYVTxGOKe/jb9q99trz8EtIn05O6KN1g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/gridlist@3.10.0': + resolution: {integrity: sha512-UcblfSZ7kJBrjg9mQ5VbnRevN81UiYB4NuL5PwIpBpridO7tnl4ew6+96PYU7Wj1chHhPS3x0b0zmuSVN7A0LA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-aria/gridlist@3.9.4': resolution: {integrity: sha512-gGzS4ToSynn2KBycf9UCsWIJIbVl4RjoCjPF4NnukwzHmrXwbtZnlF0xsORQ5QxfqHH9UehTAHWFvOOHJSZZ2w==} peerDependencies: @@ -4572,63 +4669,130 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-aria/i18n@3.12.4': + resolution: {integrity: sha512-j9+UL3q0Ls8MhXV9gtnKlyozq4aM95YywXqnmJtzT1rYeBx7w28hooqrWkCYLfqr4OIryv1KUnPiCSLwC2OC7w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-aria/interactions@3.22.3': resolution: {integrity: sha512-RRUb/aG+P0IKTIWikY/SylB6bIbLZeztnZY2vbe7RAG5MgVaCgn5HQ45SI15GlTmhsFG8CnF6slJsUFJiNHpbQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-aria/interactions@3.22.5': + resolution: {integrity: sha512-kMwiAD9E0TQp+XNnOs13yVJghiy8ET8L0cbkeuTgNI96sOAp/63EJ1FSrDf17iD8sdjt41LafwX/dKXW9nCcLQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-aria/label@3.7.12': resolution: {integrity: sha512-u9xT90lAlgb7xiv+p0md9QwCHz65XL7tjS5e29e88Rs3ptkv3aQubTqxVOUTEwzbNUT4A1QqTjUm1yfHewIRUw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-aria/label@3.7.13': + resolution: {integrity: sha512-brSAXZVTey5RG/Ex6mTrV/9IhGSQFU4Al34qmjEDho+Z2qT4oPwf8k7TRXWWqzOU0ugYxekYbsLd2zlN3XvWcg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-aria/link@3.7.5': resolution: {integrity: sha512-j0F1BIdNoE7Tl+0KzzjbrmYuxt4aWAmDZDHvJKiYg71Jb1BAPz71eE1O1ybMoO04+OG/6HrRZTragfSQLAJ58A==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-aria/link@3.7.7': + resolution: {integrity: sha512-eVBRcHKhNSsATYWv5wRnZXRqPVcKAWWakyvfrYePIKpC3s4BaHZyTGYdefk8ZwZdEOuQZBqLMnjW80q1uhtkuA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-aria/listbox@3.13.4': resolution: {integrity: sha512-2aG4jzlB+srYBeM9ap/BNZe0E04yMjY2dPGXcigkaSJt6/yYAHCygXuouf2MzvBfkdV4QWyHIIgWZmAXXl6reg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-aria/listbox@3.13.6': + resolution: {integrity: sha512-6hEXEXIZVau9lgBZ4VVjFR3JnGU+fJaPmV3HP0UZ2ucUptfG0MZo24cn+ZQJsWiuaCfNFv5b8qribiv+BcO+Kg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-aria/live-announcer@3.4.0': resolution: {integrity: sha512-VBxEdMq2SbtRbNTQNcDR2G6E3lEl5cJSBiHTTO8Ln1AL76LiazrylIXGgoktqzCfRQmyq0v8CHk1cNKDU9mvJg==} + '@react-aria/live-announcer@3.4.1': + resolution: {integrity: sha512-4X2mcxgqLvvkqxv2l1n00jTzUxxe0kkLiapBGH1LHX/CxA1oQcHDqv8etJ2ZOwmS/MSBBiWnv3DwYHDOF6ubig==} + '@react-aria/menu@3.15.4': resolution: {integrity: sha512-4wfq8Lb7AltgSzBHdtypiPOnsRm8hHv7PUuHhlq/VT9yAkEFk4Flc7vKVF6VSFqrnCfyCf66B5aeapjNInAONg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-aria/menu@3.16.0': + resolution: {integrity: sha512-TNk+Vd3TbpBPUxEloAdHRTaRxf9JBK7YmkHYiq0Yj5Lc22KS0E2eTyhpPM9xJvEWN2TlC5TEvNfdyui2kYWFFQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-aria/meter@3.4.17': resolution: {integrity: sha512-08wbQhfvVWzpWilhn/WD7cQ7TqafS/66umTk7+X6BW6TrS1//6loNNJV62IC3F7sskel4iEAtl2gW0WpW8zEdg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-aria/meter@3.4.18': + resolution: {integrity: sha512-tTX3LLlmDIHqrC42dkdf+upb1c4UbhlpZ52gqB64lZD4OD4HE+vMTwNSe+7MRKMLvcdKPWCRC35PnxIHZ15kfQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-aria/numberfield@3.11.7': resolution: {integrity: sha512-9bqg4sKqc5XLppHzJFRhgtkoeMu0N6Zg0AuVSiE/3CxE5Ad+y8tKpFEx9zh4o5BItyOWy18w5ZXnKjJGjd7waQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-aria/numberfield@3.11.9': + resolution: {integrity: sha512-3tiGPx2y4zyOV7PmdBASes99ZZsFTZAJTnU45Z+p1CW4131lw7y2ZhbojBl7U6DaXAJvi1z6zY6cq2UE9w5a0Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-aria/overlays@3.23.3': resolution: {integrity: sha512-vRW4DL466a27BBIP6dQqmmei4nX/nsur6DyF0Hmd46ygwOdvdA+5MwvXZUz9yUamB79UeS9BMQZuBVwhjoMwBQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-aria/overlays@3.24.0': + resolution: {integrity: sha512-0kAXBsMNTc/a3M07tK9Cdt/ea8CxTAEJ223g8YgqImlmoBBYAL7dl5G01IOj67TM64uWPTmZrOklBchHWgEm3A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-aria/progress@3.4.17': resolution: {integrity: sha512-5+01WNibLoNS5KcfU5p6vg7Lhz17plqqzv/uITx28zzj3saaj0VLR7n57Ig2fXe8ZEQoUS89BS3sIEsIf96S1A==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-aria/progress@3.4.18': + resolution: {integrity: sha512-FOLgJ9t9i1u3oAAimybJG6r7/soNPBnJfWo4Yr6MmaUv90qVGa1h6kiuM5m9H/bm5JobAebhdfHit9lFlgsCmg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/radio@3.10.10': + resolution: {integrity: sha512-NVdeOVrsrHgSfwL2jWCCXFsWZb+RMRZErj5vthHQW4nkHECGOzeX56VaLWTSvdoCPqi9wdIX8A6K9peeAIgxzA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-aria/radio@3.10.8': resolution: {integrity: sha512-/vKQhKqpoCB/VqHuc46OOU+31HFtg6svcYzHBbz0wN/DSVCygYeTfB/36kY7x2GWWkT0pCsB4OcHJ+/0G3EfkQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-aria/searchfield@3.7.11': + resolution: {integrity: sha512-wFf6QxtBFfoxy0ANxI0+ftFEBGynVCY0+ce4H4Y9LpUTQsIKMp3sdc7LoUFORWw5Yee6Eid5cFPQX0Ymnk+ZJg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-aria/searchfield@3.7.9': resolution: {integrity: sha512-EHODG7HDFthwG5tx4fh+WP2hjNOp/rPAqdNScKBAN73nEf0F/qQpIwmdZF0EycCOzGSM5hhihjm0yMtTFYuzOQ==} peerDependencies: @@ -4640,22 +4804,50 @@ packages: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-aria/select@3.15.0': + resolution: {integrity: sha512-zgBOUNy81aJplfc3NKDJMv8HkXjBGzaFF3XDzNfW8vJ7nD9rcTRUN5SQ1XCEnKMv12B/Euk9zt6kd+tX0wk1vQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-aria/selection@3.20.0': resolution: {integrity: sha512-h3giMcXo4SMZRL5HrqZvOLNTsdh5jCXwLUx0wpj/2EF0tcYQL6WDfn1iJ+rHARkUIs7X70fUV8iwlbUySZy1xg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-aria/selection@3.21.0': + resolution: {integrity: sha512-52JJ6hlPcM+gt0VV3DBmz6Kj1YAJr13TfutrKfGWcK36LvNCBm1j0N+TDqbdnlp8Nue6w0+5FIwZq44XPYiBGg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-aria/separator@3.4.3': resolution: {integrity: sha512-L+eCmSGfRJ9jScHZqBkmOkp44LBARisDjRdYbGrLlsAEcOiHUXufnfpxz2rgkUGBdUgnI9hIk12q5kdy0UxGjg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-aria/separator@3.4.4': + resolution: {integrity: sha512-dH+qt0Mdh0nhKXCHW6AR4DF8DKLUBP26QYWaoThPdBwIpypH/JVKowpPtWms1P4b36U6XzHXHnTTEn/ZVoCqNA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-aria/slider@3.7.12': resolution: {integrity: sha512-yZWBGxDHBL5Gjjdnz+igdO7VfYND9iZsSqynadZthWtfy1jA+qBR25I+Soc0D9gkr/2/JUJkFgkllYF1RzWMUQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-aria/slider@3.7.14': + resolution: {integrity: sha512-7rOiKjLkEZ0j7mPMlwrqivc+K4OSfL14slaQp06GHRiJkhiWXh2/drPe15hgNq55HmBQBpA0umKMkJcqVgmXPA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/spinbutton@3.6.10': + resolution: {integrity: sha512-nhYEYk7xUNOZDaqiQ5w/nHH9ouqjJbabTWXH+KK7UR1oVGfo4z1wG94l8KWF3Z6SGGnBxzLJyTBguZ4g9aYTSg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-aria/spinbutton@3.6.9': resolution: {integrity: sha512-m+uVJdiIc2LrLVDGjU7p8P2O2gUvTN26GR+NgH4rl+tUSuAB0+T1rjls/C+oXEqQjCpQihEB9Bt4M+VHpzmyjA==} peerDependencies: @@ -4668,6 +4860,17 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-aria/ssr@3.9.7': + resolution: {integrity: sha512-GQygZaGlmYjmYM+tiNBA5C6acmiDWF52Nqd40bBp0Znk4M4hP+LTmI0lpI1BuKMw45T8RIhrAsICIfKwZvi2Gg==} + engines: {node: '>= 12'} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/switch@3.6.10': + resolution: {integrity: sha512-FtaI9WaEP1tAmra1sYlAkYXg9x75P5UtgY8pSbe9+1WRyWbuE1QZT+RNCTi3IU4fZ7iJQmXH6+VaMyzPlSUagw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-aria/switch@3.6.8': resolution: {integrity: sha512-6Q0w7o+liB0ztKPL9UaRfX+hPPuy71AL3SuVCMK7RKfPqZwcmlwUDp2gr3j5fvs8gLev0r42XtEBqmGwkHTkEw==} peerDependencies: @@ -4679,33 +4882,71 @@ packages: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-aria/table@3.16.0': + resolution: {integrity: sha512-9xF9S3CJ7XRiiK92hsIKxPedD0kgcQWwqTMtj3IBynpQ4vsnRiW3YNIzrn9C3apjknRZDTSta8O2QPYCUMmw2A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-aria/tabs@3.9.6': resolution: {integrity: sha512-iPQ2Im+srnSB06xIdVNHZZDJnZmUR0IG0MZAp6FXmbkCeLAd9tZQHgSFYwswBfgAStNnyFQHP5aSBJOJMRCACg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-aria/tabs@3.9.8': + resolution: {integrity: sha512-Nur/qRFBe+Zrt4xcCJV/ULXCS3Mlae+B89bp1Gl20vSDqk6uaPtGk+cS5k03eugOvas7AQapqNJsJgKd66TChw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-aria/tag@3.4.6': resolution: {integrity: sha512-Uf1sPabwJx99diyXJTaVguiYozS49opjQxmK1PPbb87ipNN1YlSDVbP05IelVMbnbxXHudsRmzPOBmmblcj1GQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-aria/tag@3.4.8': + resolution: {integrity: sha512-exWl52bsFtJuzaqMYvSnLteUoPqb3Wf+uICru/yRtREJsWVqjJF38NCVlU73Yqd9qMPTctDrboSZFAWAWKDxoA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-aria/textfield@3.14.9': resolution: {integrity: sha512-LPwZhthDVLyvnzXWco4eyYCD2pFmQ4Vw9ha9tb3QkZUIP6j8E52y76j0c59Nq7XYus3IHatVe7yYQk7kbo8Zrg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-aria/textfield@3.15.0': + resolution: {integrity: sha512-V5mg7y1OR6WXYHdhhm4FC7QyGc9TideVRDFij1SdOJrIo5IFB7lvwpOS0GmgwkVbtr71PTRMjZnNbrJUFU6VNA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/toggle@3.10.10': + resolution: {integrity: sha512-QwMT/vTNrbrILxWVHfd9zVQ3mV2NdBwyRu+DphVQiFAXcmc808LEaIX2n0lI6FCsUDC9ZejCyvzd91/YemdZ1Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-aria/toggle@3.10.8': resolution: {integrity: sha512-N6WTgE8ByMYY+ZygUUPGON2vW5NrxwU91H98+Nozl+Rq6ZYR2fD9i8oRtLtrYPxjU2HmaFwDyQdWvmMJZuDxig==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-aria/toolbar@3.0.0-beta.11': + resolution: {integrity: sha512-LM3jTRFNDgoEpoL568WaiuqiVM7eynSQLJis1hV0vlVnhTd7M7kzt7zoOjzxVb5Uapz02uCp1Fsm4wQMz09qwQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-aria/toolbar@3.0.0-beta.9': resolution: {integrity: sha512-P80zgbPb0aIg22fHlgHRXXUSpNSAOnh1ljsLiSHAGdXPrC5nRijYwwKi7DNRsXqD+ljEJwF6ekZPo95dXXeYAA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-aria/tooltip@3.7.10': + resolution: {integrity: sha512-Udi3XOnrF/SYIz72jw9bgB74MG/yCOzF5pozHj2FH2HiJlchYv/b6rHByV/77IZemdlkmL/uugrv/7raPLSlnw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-aria/tooltip@3.7.8': resolution: {integrity: sha512-dlWfS3w8E6dw5Xoist4cVX2GQE5oh3VQr88dRyLto7BAPLFrp3I+8c9mZCVUobLS/f5QcQzLkqw750s4ENCyiw==} peerDependencies: @@ -4717,22 +4958,44 @@ packages: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-aria/tree@3.0.0-beta.2': + resolution: {integrity: sha512-lH3hVl2VgG3YLN+ee1zQzm+2F+BGLd/HBhfMYPuI3IjHvDb+m+jCJXHdBOGrfG2Qydk2LYheqX8QXCluulu0qQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-aria/utils@3.25.3': resolution: {integrity: sha512-PR5H/2vaD8fSq0H/UB9inNbc8KDcVmW6fYAfSWkkn+OAdhTTMVKqXXrZuZBWyFfSD5Ze7VN6acr4hrOQm2bmrA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-aria/utils@3.26.0': + resolution: {integrity: sha512-LkZouGSjjQ0rEqo4XJosS4L3YC/zzQkfRM3KoqK6fUOmUJ9t0jQ09WjiF+uOoG9u+p30AVg3TrZRUWmoTS+koQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-aria/virtualizer@4.0.3': resolution: {integrity: sha512-neSf+EXtqmQiccHcp9CS2RbH3xA6FuZggLzGsM1NoqDdXIL7TLfc7lhaqi8VAZ03e1FCUSye08BCRk3DdpUiyA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-aria/virtualizer@4.1.0': + resolution: {integrity: sha512-ziSq3Y7iuaAMJWGZU1RRs/TykuPapQfx8dyH2eyKPLgEjBUoXRGWE7n6jklBwal14b0lPK0wkCzRoQbkUvX3cg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-aria/visually-hidden@3.8.16': resolution: {integrity: sha512-3zThVIzEprez4A/GajOut6/JQ4WCu2ROHGZ1xH1+2GFjBJQaTfPBIjg6UIwaT7sgHRQIik8QidogLqXHbp81yA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-aria/visually-hidden@3.8.18': + resolution: {integrity: sha512-l/0igp+uub/salP35SsNWq5mGmg3G5F5QMS1gDZ8p28n7CgjvzyiGhJbbca7Oxvaw1HRFzVl9ev+89I7moNnFQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-router/dev@7.0.0-pre.4': resolution: {integrity: sha512-yuOXu7NsH8njE+zFIJBt+hVd8J1F6TqpJ19RQlM5uRkgwD8PMkAvBVz95yBi69C+88pRndM0G2aGgKxBJQpffQ==} engines: {node: '>=20.0.0'} @@ -4779,16 +5042,26 @@ packages: peerDependencies: react-router: 7.0.0-pre.4 - '@react-spectrum/utils@3.11.11': - resolution: {integrity: sha512-Fed8tePDyxfG7CND6H+3Os+5DKwdaOl8VXznTtGNFD44gjCI8/LDxk+9YRN8SQCHMnFkEFobCDme98wFWDdpCQ==} + '@react-spectrum/utils@3.12.0': + resolution: {integrity: sha512-r3IAp9h766gATsYT6B66GmjgsTuhXSrEqKuPJenkPzshBeQPrD57ai0fyj5ihtiM3BINbkCQ+AXLrAmJunOV/A==} peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 '@react-stately/calendar@3.5.5': resolution: {integrity: sha512-HzaiDRhrmaYIly8hRsjjIrydLkldiw1Ws6T/130NLQOt+VPwRW/x0R+nil42mA9LZ6oV0XN0NpmG5tn7TaKRGw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-stately/calendar@3.6.0': + resolution: {integrity: sha512-GqUtOtGnwWjtNrJud8nY/ywI4VBP5byToNVRTnxbMl+gYO1Qe/uc5NG7zjwMxhb2kqSBHZFdkF0DXVqG2Ul+BA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-stately/checkbox@3.6.10': + resolution: {integrity: sha512-LHm7i4YI8A/RdgWAuADrnSAYIaYYpQeZqsp1a03Og0pJHAlZL0ymN3y2IFwbZueY0rnfM+yF+kWNXjJqbKrFEQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-stately/checkbox@3.6.9': resolution: {integrity: sha512-JrY3ecnK/SSJPxw+qhGhg3YV4e0CpUcPDrVwY3mSiAE932DPd19xr+qVCknJ34H7JYYt/q0l2z0lmgPnl96RTg==} peerDependencies: @@ -4799,26 +5072,56 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-stately/collections@3.12.0': + resolution: {integrity: sha512-MfR9hwCxe5oXv4qrLUnjidwM50U35EFmInUeFf8i9mskYwWlRYS0O1/9PZ0oF1M0cKambaRHKEy98jczgb9ycA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-stately/color@3.8.0': resolution: {integrity: sha512-lBH91HEStZeayhE/FkDMt9WC0UISQiAn8DoD2hfpTGeeWscX/soyxZA7oVL7zBOG9RfDBMNzF+CybVROrWSKAQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-stately/color@3.8.1': + resolution: {integrity: sha512-7eN7K+KJRu+rxK351eGrzoq2cG+yipr90i5b1cUu4lioYmcH4WdsfjmM5Ku6gypbafH+kTDfflvO6hiY1NZH+A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-stately/combobox@3.10.0': resolution: {integrity: sha512-4W4HCCjjoddW/LZM3pSSeLoV7ncYXlaICKmqlBcbtLR5jY4U5Kx+pPpy3oJ1vCdjDHatIxZ0tVKEBP7vBQVeGQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-stately/combobox@3.10.1': + resolution: {integrity: sha512-Rso+H+ZEDGFAhpKWbnRxRR/r7YNmYVtt+Rn0eNDNIUp3bYaxIBCdCySyAtALs4I8RZXZQ9zoUznP7YeVwG3cLg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-stately/data@3.11.7': resolution: {integrity: sha512-2YJ+Lmca18f/h7jiZiU9j2IhBJl6BFO1BWlwvcCAH/eCWTdveX8gzsUdW++0szzpJaoCilTCYoi8z7QWyVH9jQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-stately/data@3.12.0': + resolution: {integrity: sha512-6PiW2oA56lcH1CVjDcajutzsv91w/PER8K61/OGxtNFFUWaIZH80RWmK4kjU/Lf0vygzXCxout3kEb388lUk0w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-stately/datepicker@3.10.3': resolution: {integrity: sha512-6PJW1QMwk6BQMktV9L6DA4f2rfAdLfbq3iTNLy4qxd5IfNPLMUZiJGGTj+cuqx0WcEl+q5irp+YhKBpbmhPZHg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-stately/datepicker@3.11.0': + resolution: {integrity: sha512-d9MJF34A0VrhL5y5S8mAISA8uwfNCQKmR2k4KoQJm3De1J8SQeNzSjLviAwh1faDow6FXGlA6tVbTrHyDcBgBg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-stately/disclosure@3.0.0': + resolution: {integrity: sha512-Z9+fi0/41ZXHjGopORQza7mk4lFEFslKhy65ehEo6O6j2GuIV0659ExIVDsmJoJSFjXCfGh0sX8oTSOlXi9gqg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-stately/disclosure@3.0.0-alpha.0': resolution: {integrity: sha512-CbFUrEwhsP5+44PMHipn/Cd61VTvqyKmx1yeNDyvj/4bYhmxYLgQp/Ma+iEqe23JkXJh2JO/ws3l9FnebScCJQ==} peerDependencies: @@ -4829,14 +5132,32 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-stately/dnd@3.5.0': + resolution: {integrity: sha512-ZcWFw1npEDnATiy3TEdzA1skQ3UEIyfbNA6VhPNO8yiSVLxoxBOaEaq8VVS72fRGAtxud6dgOy8BnsP9JwDClQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-stately/flags@3.0.4': resolution: {integrity: sha512-RNJEkOALwKg+JeYsfNlfPc4GXm7hiBLX0yuHOkRapWEyDOfi0cinkV/TZG4goOZdQ5tBpHmemf2qqiHAxqHlzQ==} + '@react-stately/flags@3.0.5': + resolution: {integrity: sha512-6wks4csxUwPCp23LgJSnkBRhrWpd9jGd64DjcCTNB2AHIFu7Ab1W59pJpUL6TW7uAxVxdNKjgn6D1hlBy8qWsA==} + '@react-stately/form@3.0.6': resolution: {integrity: sha512-KMsxm3/V0iCv/6ikt4JEjVM3LW2AgCzo7aNotMzRobtwIo0RwaUo7DQNY00rGgFQ3/IjzI6DcVo13D+AVE/zXg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-stately/form@3.1.0': + resolution: {integrity: sha512-E2wxNQ0QaTyDHD0nJFtTSnEH9A3bpJurwxhS4vgcUmESHgjFEMLlC9irUSZKgvOgb42GAq+fHoWBsgKeTp9Big==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-stately/grid@3.10.0': + resolution: {integrity: sha512-ii+DdsOBvCnHMgL0JvUfFwO1kiAPP19Bpdpl6zn/oOltk6F5TmnoyNrzyz+2///1hCiySI3FE1O7ujsAQs7a6Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-stately/grid@3.9.3': resolution: {integrity: sha512-P5KgCNYwm/n8bbLx6527li89RQWoESikrsg2MMyUpUd6IJ321t2pGONGRRQzxE0SBMolPRDJKV0Do2OlsjYKhQ==} peerDependencies: @@ -4847,86 +5168,171 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-stately/layout@4.1.0': + resolution: {integrity: sha512-pSBqn+4EeOaf2QMK+w2SHgsWKYHdgMZWY3qgJijdzWGZ4JpYmHuiD0yOq80qFdUwxcexPW3vFg3hqIQlMpXeCw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-stately/list@3.11.0': resolution: {integrity: sha512-O+BxXcbtoLZWn4QIT54RoFUaM+QaJQm6s0ZBJ3Jv4ILIhukVOc55ra+aWMVlXFQSpbf6I3hyVP6cz1yyvd5Rtw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-stately/list@3.11.1': + resolution: {integrity: sha512-UCOpIvqBOjwLtk7zVTYWuKU1m1Oe61Q5lNar/GwHaV1nAiSQ8/yYlhr40NkBEs9X3plEfsV28UIpzOrYnu1tPg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-stately/menu@3.8.3': resolution: {integrity: sha512-sV63V+cMgzipx/N7dq5GaXoItfXIfFEpCtlk3PM2vKstlCJalszXrdo+x996bkeU96h0plB7znAlhlXOeTKzUg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-stately/menu@3.9.0': + resolution: {integrity: sha512-++sm0fzZeUs9GvtRbj5RwrP+KL9KPANp9f4SvtI3s+MP+Y/X3X7LNNePeeccGeyikB5fzMsuyvd82bRRW9IhDQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-stately/numberfield@3.9.7': resolution: {integrity: sha512-PjSgCCpYasGCEAznFQNqa2JhhEQ5+/2eMiV7ZI5j76q3edTNF8G5OOCl2RazDbzFp6vDAnRVT7Kctx5Tl5R/Zw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-stately/numberfield@3.9.8': + resolution: {integrity: sha512-J6qGILxDNEtu7yvd3/y+FpbrxEaAeIODwlrFo6z1kvuDlLAm/KszXAc75yoDi0OtakFTCMP6/HR5VnHaQdMJ3w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-stately/overlays@3.6.11': resolution: {integrity: sha512-usuxitwOx4FbmOW7Og4VM8R8ZjerbHZLLbFaxZW7pWLs7Ypway1YhJ3SWcyNTYK7NEk4o602kSoU6MSev1Vgag==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-stately/overlays@3.6.12': + resolution: {integrity: sha512-QinvZhwZgj8obUyPIcyURSCjTZlqZYRRCS60TF8jH8ZpT0tEAuDb3wvhhSXuYA3Xo9EHLwvLjEf3tQKKdAQArw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-stately/radio@3.10.8': resolution: {integrity: sha512-VRq6Gzsbk3jzX6hdrSoDoSra9vLRsOi2pLkvW/CMrJ0GSgMwr8jjvJKnNFvYJ3eYQb20EwkarsOAfk7vPSIt/Q==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-stately/radio@3.10.9': + resolution: {integrity: sha512-kUQ7VdqFke8SDRCatw2jW3rgzMWbvw+n2imN2THETynI47NmNLzNP11dlGO2OllRtTrsLhmBNlYHa3W62pFpAw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-stately/searchfield@3.5.7': resolution: {integrity: sha512-VxEG4tWDypdXQ8f7clZBu5Qmc4osqDBeA/gNMA2i1j/h2zRVcCJ0fRCHuDeXLSWBqF1XXAI4TWV53fBBwJusbg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-stately/searchfield@3.5.8': + resolution: {integrity: sha512-jtquvGadx1DmtQqPKaVO6Qg/xpBjNxsOd59ciig9xRxpxV+90i996EX1E2R6R+tGJdSM1pD++7PVOO4yE++HOg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-stately/select@3.6.8': resolution: {integrity: sha512-fLAVzGeYSdYdBdrEVws6Pb1ywFPdapA0eWphoW5s3fS0/pKcVWwbCHeHlaBEi1ISyqEubQZFGQdeFKm/M46Hew==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-stately/select@3.6.9': + resolution: {integrity: sha512-vASUDv7FhEYQURzM+JIwcusPv7/x/l3zHc/oKJPvoCl3aa9pwS8hZwS82SC00o2iFnrDscfDJju4IE/cd4hucg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-stately/selection@3.17.0': resolution: {integrity: sha512-It3LRTaFOavybuDBvBH2mvCh73OL4awqvN4tZ0JzLzMtaYSBe9+YmFasYrzB0o7ca17B2q1tpUmsNWaAgIqbLA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-stately/selection@3.18.0': + resolution: {integrity: sha512-6EaNNP3exxBhW2LkcRR4a3pg+3oDguZlBSqIVVR7lyahv/D8xXHRC4dX+m0mgGHJpsgjs7664Xx6c8v193TFxg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-stately/slider@3.5.8': resolution: {integrity: sha512-EDgbrxMq1w3+XTN72MGl3YtAG/j65EYX1Uc3Fh56K00+inJbTdRWyYTrb3NA310fXCd0WFBbzExuH2ohlKQycg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-stately/slider@3.6.0': + resolution: {integrity: sha512-w5vJxVh267pmD1X+Ppd9S3ZzV1hcg0cV8q5P4Egr160b9WMcWlUspZPtsthwUlN7qQe/C8y5IAhtde4s29eNag==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-stately/table@3.12.3': resolution: {integrity: sha512-8uGrLcNJYeMbFtzRQZFWCBj5kV+7v3jzwoKIL1j9TmYUKow1PTDMQbPJpAZLQhnC2wVMlaFVgDbedSlbBij7Zg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-stately/table@3.13.0': + resolution: {integrity: sha512-mRbNYrwQIE7xzVs09Lk3kPteEVFVyOc20vA8ph6EP54PiUf/RllJpxZe/WUYLf4eom9lUkRYej5sffuUBpxjCA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-stately/tabs@3.6.10': resolution: {integrity: sha512-F7wfoiNsrBy7c02AYHyE1USGgj05HQ0hp7uXmQjp2LEa+AA0NKKi3HdswTHHySxb0ZRuoEE7E7vp/gXQYx2/Ow==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-stately/tabs@3.7.0': + resolution: {integrity: sha512-ox4hTkfZCoR4Oyr3Op3rBlWNq2Wxie04vhEYpTZQ2hobR3l4fYaOkd7CPClILktJ3TC104j8wcb0knWxIBRx9w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-stately/toggle@3.7.8': resolution: {integrity: sha512-ySOtkByvIY54yIu8IZ4lnvomQA0H+/mkZnd6T5fKN3tjvIzHmkUk3TAPmNInUxHX148tSW6mWwec0xvjYqEd6w==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-stately/toggle@3.8.0': + resolution: {integrity: sha512-pyt/k/J8BwE/2g6LL6Z6sMSWRx9HEJB83Sm/MtovXnI66sxJ2EfQ1OaXB7Su5PEL9OMdoQF6Mb+N1RcW3zAoPw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-stately/tooltip@3.4.13': resolution: {integrity: sha512-zQ+8FQ7Pi0Cz852dltXb6yaryjE18K3byK4tIO3e5vnrZHEGvfdxowc+v9ak5UV93kVrYoOVmfZHRcEaTXTBNA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-stately/tooltip@3.5.0': + resolution: {integrity: sha512-+xzPNztJDd2XJD0X3DgWKlrgOhMqZpSzsIssXeJgO7uCnP8/Z513ESaipJhJCFC8fxj5caO/DK4Uu8hEtlB8cQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-stately/tree@3.8.5': resolution: {integrity: sha512-0/tYhsKWQQJTOZFDwh8hY3Qk6ejNFRldGrLeK5kS22UZdvsMFyh7WAi40FTCJy561/VoB0WqQI4oyNPOa9lYWg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-stately/tree@3.8.6': + resolution: {integrity: sha512-lblUaxf1uAuIz5jm6PYtcJ+rXNNVkqyFWTIMx6g6gW/mYvm8GNx1G/0MLZE7E6CuDGaO9dkLSY2bB1uqyKHidA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-stately/utils@3.10.4': resolution: {integrity: sha512-gBEQEIMRh5f60KCm7QKQ2WfvhB2gLUr9b72sqUdIZ2EG+xuPgaIlCBeSicvjmjBvYZwOjoOEnmIkcx2GHp/HWw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-stately/utils@3.10.5': + resolution: {integrity: sha512-iMQSGcpaecghDIh3mZEpZfoFH3ExBwTtuBEcvZ2XnGzCgQjeYXcMdIUwAfVQLXFTdHUHGF6Gu6/dFrYsCzySBQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-stately/virtualizer@4.1.0': resolution: {integrity: sha512-MOaqpY3NloXrpCBvVUb3HL1p3Bh4YRtUq8D2ufC909u5vM6n6G5Swk1XPJ9KHfaftGhb5serwLkm2/Aha5CTbA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-stately/virtualizer@4.2.0': + resolution: {integrity: sha512-aTMpa9AQoz/xLqn8AI1BR/caUUY7/OUo9GbuF434w2u5eGCL7+SAn3Fmq7WSCwqYyDsO+jEIERek4JTX7pEW0A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-types/accordion@3.0.0-alpha.24': resolution: {integrity: sha512-hwDT4TJH7aHCG8m9QsTP+7xgW7x7k2TY+WHlMRr6qDS6WhTCwd41dCdagxC0SZtulzZuWqISBxZifVrh4Tynew==} peerDependencies: @@ -4937,46 +5343,96 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-types/breadcrumbs@3.7.9': + resolution: {integrity: sha512-eARYJo8J+VfNV8vP4uw3L2Qliba9wLV2bx9YQCYf5Lc/OE5B/y4gaTLz+Y2P3Rtn6gBPLXY447zCs5i7gf+ICg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-types/button@3.10.0': resolution: {integrity: sha512-rAyU+N9VaHLBdZop4zasn8IDwf9I5Q1EzHUKMtzIFf5aUlMUW+K460zI/l8UESWRSWAXK9/WPSXGxfcoCEjvAA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-types/button@3.10.1': + resolution: {integrity: sha512-XTtap8o04+4QjPNAshFWOOAusUTxQlBjU2ai0BTVLShQEjHhRVDBIWsI2B2FKJ4KXT6AZ25llaxhNrreWGonmA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-types/calendar@3.4.10': resolution: {integrity: sha512-PyjqxwJxSW2IpQx6y0D9O34fRCWn1gv9q0qFhgaIigIQrPg8zTE/CC7owHLxAtgCnnCt8exJ5rqi414csaHKlA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-types/calendar@3.5.0': + resolution: {integrity: sha512-O3IRE7AGwAWYnvJIJ80cOy7WwoJ0m8GtX/qSmvXQAjC4qx00n+b5aFNBYAQtcyc3RM5QpW6obs9BfwGetFiI8w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-types/checkbox@3.8.4': resolution: {integrity: sha512-fvZrlQmlFNsYHZpl7GVmyYQlKdUtO5MczMSf8z3TlSiCb5Kl3ha9PsZgLhJqGuVnzB2ArIBz0eZrYa3k0PhcpA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-types/checkbox@3.9.0': + resolution: {integrity: sha512-9hbHx0Oo2Hp5a8nV8Q75LQR0DHtvOIJbFaeqESSopqmV9EZoYjtY/h0NS7cZetgahQgnqYWQi44XGooMDCsmxA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-types/color@3.0.0': resolution: {integrity: sha512-VUH8CROAM69GsMBilrJ1xyAdVsWL01nXQYrkZJxAEApv1OrcpIGSdsXLcGrjsrhjjiNVXxWFnqYRMsKkLzIl7g==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-types/color@3.0.1': + resolution: {integrity: sha512-KemFziO3GbmT3HEKrgOGdqNA6Gsmy9xrwFO3f8qXSG7gVz6M27Ic4R9HVQv4iAjap5uti6W13/pk2bc/jLVcEA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-types/combobox@3.13.0': resolution: {integrity: sha512-kH/a+Fjpr54M2JbHg9RXwMjZ9O+XVsdOuE5JCpWRibJP1Mfl1md8gY6y6zstmVY8COrSqFvMZWB+PzwaTWjTGw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-types/combobox@3.13.1': + resolution: {integrity: sha512-7xr+HknfhReN4QPqKff5tbKTe2kGZvH+DGzPYskAtb51FAAiZsKo+WvnNAvLwg3kRoC9Rkn4TAiVBp/HgymRDw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-types/datepicker@3.8.3': resolution: {integrity: sha512-Y4qfPRBB6uzocosCOWSYMuwiZ3YXwLWQYiFB4KCglkvHyltbNz76LgoBEnclYA5HjwosIk4XywiXvHSYry8JnQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-types/datepicker@3.9.0': + resolution: {integrity: sha512-dbKL5Qsm2MQwOTtVQdOcKrrphcXAqDD80WLlSQrBLg+waDuuQ7H+TrvOT0thLKloNBlFUGnZZfXGRHINpih/0g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-types/dialog@3.5.13': resolution: {integrity: sha512-9k8daVcAqQsySkzDY6NIVlyGxtpEip4TKuLyzAehthbv78GQardD5fHdjQ6eXPRS4I2qZrmytrFFrlOnwWVGHw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-types/dialog@3.5.14': + resolution: {integrity: sha512-OXWMjrALwrlgw8aHD8SeRm/s3tbAssdaEh2h73KUSeFau3fU3n5mfKv+WnFqsEaOtN261o48l7hTlS6615H9AA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-types/form@3.7.7': resolution: {integrity: sha512-CVRjCawPhYRHi/LuikOC2kz5vgvmjjKmF4/wUgR2QzD1Ok4wY1ZGSx9M9EZptCIZAt2mToR6woyLUdtzy+foeQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-types/form@3.7.8': + resolution: {integrity: sha512-0wOS97/X0ijTVuIqik1lHYTZnk13QkvMTKvIEhM7c6YMU3vPiirBwLbT2kJiAdwLiymwcCkrBdDF1NTRG6kPFA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-types/grid@3.2.10': + resolution: {integrity: sha512-Z5cG0ITwqjUE4kWyU5/7VqiPl4wqMJ7kG/ZP7poAnLmwRsR8Ai0ceVn+qzp5nTA19cgURi8t3LsXn3Ar1FBoog==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-types/grid@3.2.9': resolution: {integrity: sha512-eMw0d2UIZ4QTzGgD1wGGPw0cv67KjAOCp4TcwWjgDV7Wa5SVV/UvOmpnIVDyfhkG/4KRI5OR9h+isy76B726qA==} peerDependencies: @@ -4987,41 +5443,86 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-types/link@3.5.9': + resolution: {integrity: sha512-JcKDiDMqrq/5Vpn+BdWQEuXit4KN4HR/EgIi3yKnNbYkLzxBoeQZpQgvTaC7NEQeZnSqkyXQo3/vMUeX/ZNIKw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-types/listbox@3.5.2': resolution: {integrity: sha512-ML/Bt/MeO0FiixcuFQ+smpu1WguxTOqHDjSnhc1vcNxVQFWQOhyVy01LAY2J/T9TjfjyYGD41vyMTI0f6fcLEQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-types/listbox@3.5.3': + resolution: {integrity: sha512-v1QXd9/XU3CCKr2Vgs7WLcTr6VMBur7CrxHhWZQQFExsf9bgJ/3wbUdjy4aThY/GsYHiaS38EKucCZFr1QAfqA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-types/menu@3.9.12': resolution: {integrity: sha512-1SPnkHKJdvOfwv9fEgK1DI6DYRs4D3hW2XcWlLhVXSjaC68CzOHGwFhKIKvZiDTW/11L770PRSEloIxHR09uFQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-types/menu@3.9.13': + resolution: {integrity: sha512-7SuX6E2tDsqQ+HQdSvIda1ji/+ujmR86dtS9CUu5yWX91P25ufRjZ72EvLRqClWNQsj1Xl4+2zBDLWlceznAjw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-types/meter@3.4.4': resolution: {integrity: sha512-0SEmPkShByC1gYkW7l+iJPg8QfEe2VrgwTciAtTfC4KIqAYmJVQtq6L+4d72EMxOh8RpQHePaY/RFHEJXAh72A==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-types/meter@3.4.5': + resolution: {integrity: sha512-04w1lEtvP/c3Ep8ND8hhH2rwjz2MtQ8o8SNLhahen3u0rX3jKOgD4BvHujsyvXXTMjj1Djp74sGzNawb4Ppi9w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-types/numberfield@3.8.6': resolution: {integrity: sha512-VtWEMAXUO1S9EEZI8whc7xv6DVccxhbWsRthMCg/LxiwU3U5KAveadNc2c5rtXkRpd3cnD5xFzz3dExXdmHkAg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-types/numberfield@3.8.7': + resolution: {integrity: sha512-KccMPi39cLoVkB2T0V7HW6nsxQVAwt89WWCltPZJVGzsebv/k0xTQlPVAgrUake4kDLoE687e3Fr/Oe3+1bDhw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-types/overlays@3.8.10': resolution: {integrity: sha512-IcnB+VYfAJazRjWhBKZTmVMh3KTp/B1rRbcKkPx6t8djP9UQhKcohP7lAALxjJ56Jjz/GFC6rWyUcnYH0NFVRA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-types/overlays@3.8.11': + resolution: {integrity: sha512-aw7T0rwVI3EuyG5AOaEIk8j7dZJQ9m34XAztXJVZ/W2+4pDDkLDbJ/EAPnuo2xGYRGhowuNDn4tDju01eHYi+w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-types/progress@3.5.7': resolution: {integrity: sha512-EqMDHmlpoZUZzTjdejGIkSM0pS2LBI9NdadHf3bDNTycHv+5L1xpMHUg8RGOW8a3sRVLRvfN1aO9l75QZkyj+w==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-types/progress@3.5.8': + resolution: {integrity: sha512-PR0rN5mWevfblR/zs30NdZr+82Gka/ba7UHmYOW9/lkKlWeD7PHgl1iacpd/3zl/jUF22evAQbBHmk1mS6Mpqw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-types/radio@3.8.4': resolution: {integrity: sha512-GCuOwQL19iwKa74NAIk9hv4ivyI8oW1+ZCuc2fzyDdeQjzTIlv3qrIyShwpVy1IoI7/4DYTMZm/YXPoKhu5TTA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-types/radio@3.8.5': + resolution: {integrity: sha512-gSImTPid6rsbJmwCkTliBIU/npYgJHOFaI3PNJo7Y0QTAnFelCtYeFtBiWrFodSArSv7ASqpLLUEj9hZu/rxIg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-types/searchfield@3.5.10': + resolution: {integrity: sha512-7wW4pJzbReawoGPu8a4l+CODTCDN088EN/ysUzl622ewim57PjArjix+lpO4+aEtJqS9HKpq8UEbjwo9axpcUA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-types/searchfield@3.5.9': resolution: {integrity: sha512-c/x8BWpH1Zq+fWpeBtzw2AhQhGi7ahWPicV7PlnqwIGO0MrH/QCjX0dj+I+1xpcAh8Eq6ECa79HE74Rw6aJmFg==} peerDependencies: @@ -5032,6 +5533,11 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-types/select@3.9.8': + resolution: {integrity: sha512-RGsYj2oFjXpLnfcvWMBQnkcDuKkwT43xwYWZGI214/gp/B64tJiIUgTM5wFTRAeGDX23EePkhCQF+9ctnqFd6g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-types/shared@3.22.1': resolution: {integrity: sha512-PCpa+Vo6BKnRMuOEzy5zAZ3/H5tnQg1e80khMhK2xys0j6ZqzkgQC+fHMNZ7VDFNLqqNMj/o0eVeSBDh2POjkw==} peerDependencies: @@ -5042,26 +5548,56 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-types/shared@3.26.0': + resolution: {integrity: sha512-6FuPqvhmjjlpEDLTiYx29IJCbCNWPlsyO+ZUmCUXzhUv2ttShOXfw8CmeHWHftT/b2KweAWuzqSlfeXPR76jpw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-types/slider@3.7.6': resolution: {integrity: sha512-z72wnEzSge6qTD9TUoUPp1A4j4jXk/MVii6rGE78XeE/Pq7HyyjU5bCagryMr9PC9MKa/oTiHcshKqWBDf57GA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-types/slider@3.7.7': + resolution: {integrity: sha512-lYTR9zXQV2fSEm/G3gwDENWiki1IXd/oorsgf0zu1DBi2SQDbOsLsGUXiwvD24Xy6OkUuhAqjLPPexezo7+u9g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-types/switch@3.5.6': resolution: {integrity: sha512-gJ8t2yTCgcitz4ON4ELcLLmtlDkn2MUjjfu3ez/cwA1X/NUluPYkhXj5Z6H+KOlnveqrKCZDRoTgK74cQ6Cvfg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-types/switch@3.5.7': + resolution: {integrity: sha512-1IKiq510rPTHumEZuhxuazuXBa2Cuxz6wBIlwf3NCVmgWEvU+uk1ETG0sH2yymjwCqhtJDKXi+qi9HSgPEDwAg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-types/table@3.10.2': resolution: {integrity: sha512-YzA4hcsYfnFFpA2UyGb1KKhLpWgaj5daApqjp126tCIosl8k1KxZmhKD50cwH0Jm19lALJseqo5VdlcJtcr4qg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-types/table@3.10.3': + resolution: {integrity: sha512-Ac+W+m/zgRzlTU8Z2GEg26HkuJFswF9S6w26r+R3MHwr8z2duGPvv37XRtE1yf3dbpRBgHEAO141xqS2TqGwNg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-types/tabs@3.3.10': resolution: {integrity: sha512-s/Bw/HCIdWJPBw4O703ghKqhjGsIerRMIDxA88hbQYzfTDD6bkFDjCnsP2Tyy1G8Dg2rSPFUEE+k+PpLzqeEfQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-types/tabs@3.3.11': + resolution: {integrity: sha512-BjF2TqBhZaIcC4lc82R5pDJd1F7kstj1K0Nokhz99AGYn8C0ITdp6lR+DPVY9JZRxKgP9R2EKfWGI90Lo7NQdA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-types/textfield@3.10.0': + resolution: {integrity: sha512-ShU3d6kLJGQjPXccVFjM3KOXdj3uyhYROqH9YgSIEVxgA9W6LRflvk/IVBamD9pJYTPbwmVzuP0wQkTDupfZ1w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-types/textfield@3.9.7': resolution: {integrity: sha512-vU5+QCOF9HgWGjAmmy+cpJibVW5voFomC5POmYHokm7kivYcMMjlonsgWwg/0xXrqE2qosH3tpz4jFoEuig1NQ==} peerDependencies: @@ -5072,6 +5608,11 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-types/tooltip@3.4.13': + resolution: {integrity: sha512-KPekFC17RTT8kZlk7ZYubueZnfsGTDOpLw7itzolKOXGddTXsrJGBzSB4Bb060PBVllaDO0MOrhPap8OmrIl1Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@redux-devtools/extension@3.3.0': resolution: {integrity: sha512-X34S/rC8S/M1BIrkYD1mJ5f8vlH0BDqxXrs96cvxSBo4FhMdbhU+GUGsmNYov1xjSyLMHgo8NYrUG8bNX7525g==} peerDependencies: @@ -14120,12 +14661,24 @@ packages: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-aria-components@1.5.0: + resolution: {integrity: sha512-wzf0g6cvWrqAJd4FkisAfFnslx6AJREgOd/NEmVE/RGuDxGTzss4awcwbo98rIVmqbTTFApiygy0SyWGrRZfDA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-aria@3.35.0: resolution: {integrity: sha512-cbbd3iIveLDRnpVrpc1iuz8OMlDdH6u8EjncW3MQuYOiEGaho9xcDtWMKiSEIZASEnd7LK4Rgm5iVPr2O+cssw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-aria@3.36.0: + resolution: {integrity: sha512-AK5XyIhAN+e5HDlwlF+YwFrOrVI7RYmZ6kg/o7ZprQjkYqYKapXeUpWscmNm/3H2kDboE5Z4ymUnK6ZhobLqOw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-beautiful-dnd@13.0.0: resolution: {integrity: sha512-87It8sN0ineoC3nBW0SbQuTFXM6bUqM62uJGY4BtTf0yzPl8/3+bHMWkgIe0Z6m8e+gJgjWxefGRVfpE3VcdEg==} peerDependencies: @@ -14431,6 +14984,11 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-stately@3.34.0: + resolution: {integrity: sha512-0N9tZ8qQ/CxpJH7ao0O6gr+8955e7VrOskg9N+TIxkFknPetwOCtgppMYhnTfteBV8WfM/vv4OC1NbkgYTqXJA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-test-renderer@18.2.0: resolution: {integrity: sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA==} peerDependencies: @@ -18090,7 +18648,7 @@ snapshots: dependencies: '@babel/core': 7.25.8 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.25.8) - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.24.4)': dependencies: @@ -18883,9 +19441,9 @@ snapshots: dependencies: '@babel/compat-data': 7.24.4 '@babel/core': 7.25.8 - '@babel/helper-compilation-targets': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-validator-option': 7.25.7 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-validator-option': 7.23.5 '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.4(@babel/core@7.25.8) '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.25.8) '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.25.8) @@ -19792,19 +20350,36 @@ snapshots: dependencies: '@swc/helpers': 0.5.10 + '@internationalized/date@3.6.0': + dependencies: + '@swc/helpers': 0.5.10 + '@internationalized/message@3.1.5': dependencies: '@swc/helpers': 0.5.10 intl-messageformat: 10.5.11 + '@internationalized/message@3.1.6': + dependencies: + '@swc/helpers': 0.5.10 + intl-messageformat: 10.5.11 + '@internationalized/number@3.5.4': dependencies: '@swc/helpers': 0.5.10 + '@internationalized/number@3.6.0': + dependencies: + '@swc/helpers': 0.5.10 + '@internationalized/string@3.2.4': dependencies: '@swc/helpers': 0.5.10 + '@internationalized/string@3.2.5': + dependencies: + '@swc/helpers': 0.5.10 + '@ioredis/commands@1.2.0': {} '@isaacs/cliui@8.0.2': @@ -20957,7 +21532,7 @@ snapshots: dependencies: '@react-aria/button': 3.10.0(react@18.2.0) '@react-aria/selection': 3.20.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-stately/tree': 3.8.5(react@18.2.0) '@react-types/accordion': 3.0.0-alpha.24(react@18.2.0) '@react-types/shared': 3.25.0(react@18.2.0) @@ -20969,30 +21544,52 @@ snapshots: dependencies: '@react-aria/i18n': 3.12.3(react@18.2.0) '@react-aria/link': 3.7.5(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-types/breadcrumbs': 3.7.8(react@18.2.0) '@react-types/shared': 3.25.0(react@18.2.0) '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-aria/breadcrumbs@3.5.19(react@18.2.0)': + dependencies: + '@react-aria/i18n': 3.12.4(react@18.2.0) + '@react-aria/link': 3.7.7(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-types/breadcrumbs': 3.7.9(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-aria/button@3.10.0(react@18.2.0)': dependencies: '@react-aria/focus': 3.18.3(react@18.2.0) '@react-aria/interactions': 3.22.3(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-stately/toggle': 3.7.8(react@18.2.0) '@react-types/button': 3.10.0(react@18.2.0) '@react-types/shared': 3.25.0(react@18.2.0) '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-aria/button@3.11.0(react@18.2.0)': + dependencies: + '@react-aria/focus': 3.19.0(react@18.2.0) + '@react-aria/interactions': 3.22.5(react@18.2.0) + '@react-aria/toolbar': 3.0.0-beta.11(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-stately/toggle': 3.8.0(react@18.2.0) + '@react-types/button': 3.10.1(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-aria/calendar@3.5.12(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@internationalized/date': 3.5.6 '@react-aria/i18n': 3.12.3(react@18.2.0) '@react-aria/interactions': 3.22.3(react@18.2.0) '@react-aria/live-announcer': 3.4.0 - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-stately/calendar': 3.5.5(react@18.2.0) '@react-types/button': 3.10.0(react@18.2.0) '@react-types/calendar': 3.4.10(react@18.2.0) @@ -21001,13 +21598,28 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + '@react-aria/calendar@3.6.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@internationalized/date': 3.6.0 + '@react-aria/i18n': 3.12.4(react@18.2.0) + '@react-aria/interactions': 3.22.5(react@18.2.0) + '@react-aria/live-announcer': 3.4.1 + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-stately/calendar': 3.6.0(react@18.2.0) + '@react-types/button': 3.10.1(react@18.2.0) + '@react-types/calendar': 3.5.0(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + '@react-aria/checkbox@3.14.7(react@18.2.0)': dependencies: '@react-aria/form': 3.0.9(react@18.2.0) '@react-aria/interactions': 3.22.3(react@18.2.0) '@react-aria/label': 3.7.12(react@18.2.0) '@react-aria/toggle': 3.10.8(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-stately/checkbox': 3.6.9(react@18.2.0) '@react-stately/form': 3.0.6(react@18.2.0) '@react-stately/toggle': 3.7.8(react@18.2.0) @@ -21016,16 +21628,41 @@ snapshots: '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-aria/checkbox@3.15.0(react@18.2.0)': + dependencies: + '@react-aria/form': 3.0.11(react@18.2.0) + '@react-aria/interactions': 3.22.5(react@18.2.0) + '@react-aria/label': 3.7.13(react@18.2.0) + '@react-aria/toggle': 3.10.10(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-stately/checkbox': 3.6.10(react@18.2.0) + '@react-stately/form': 3.1.0(react@18.2.0) + '@react-stately/toggle': 3.8.0(react@18.2.0) + '@react-types/checkbox': 3.9.0(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-aria/collections@3.0.0-alpha.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@react-aria/ssr': 3.9.6(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-types/shared': 3.25.0(react@18.2.0) '@swc/helpers': 0.5.10 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) use-sync-external-store: 1.2.0(react@18.2.0) + '@react-aria/collections@3.0.0-alpha.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/ssr': 3.9.7(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + use-sync-external-store: 1.2.2(react@18.2.0) + '@react-aria/color@3.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@react-aria/i18n': 3.12.3(react@18.2.0) @@ -21034,7 +21671,7 @@ snapshots: '@react-aria/slider': 3.7.12(react@18.2.0) '@react-aria/spinbutton': 3.6.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@react-aria/textfield': 3.14.9(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-aria/visually-hidden': 3.8.16(react@18.2.0) '@react-stately/color': 3.8.0(react@18.2.0) '@react-stately/form': 3.0.6(react@18.2.0) @@ -21044,6 +21681,24 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + '@react-aria/color@3.0.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/i18n': 3.12.4(react@18.2.0) + '@react-aria/interactions': 3.22.5(react@18.2.0) + '@react-aria/numberfield': 3.11.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/slider': 3.7.14(react@18.2.0) + '@react-aria/spinbutton': 3.6.10(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/textfield': 3.15.0(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-aria/visually-hidden': 3.8.18(react@18.2.0) + '@react-stately/color': 3.8.1(react@18.2.0) + '@react-stately/form': 3.1.0(react@18.2.0) + '@react-types/color': 3.0.1(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + '@react-aria/combobox@3.10.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@react-aria/i18n': 3.12.3(react@18.2.0) @@ -21053,7 +21708,7 @@ snapshots: '@react-aria/overlays': 3.23.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@react-aria/selection': 3.20.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@react-aria/textfield': 3.14.9(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-stately/collections': 3.11.0(react@18.2.0) '@react-stately/combobox': 3.10.0(react@18.2.0) '@react-stately/form': 3.0.6(react@18.2.0) @@ -21064,6 +21719,26 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + '@react-aria/combobox@3.11.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/i18n': 3.12.4(react@18.2.0) + '@react-aria/listbox': 3.13.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/live-announcer': 3.4.1 + '@react-aria/menu': 3.16.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/overlays': 3.24.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/selection': 3.21.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/textfield': 3.15.0(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-stately/collections': 3.12.0(react@18.2.0) + '@react-stately/combobox': 3.10.1(react@18.2.0) + '@react-stately/form': 3.1.0(react@18.2.0) + '@react-types/button': 3.10.1(react@18.2.0) + '@react-types/combobox': 3.13.1(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + '@react-aria/datepicker@3.11.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@internationalized/date': 3.5.6 @@ -21075,7 +21750,7 @@ snapshots: '@react-aria/interactions': 3.22.3(react@18.2.0) '@react-aria/label': 3.7.12(react@18.2.0) '@react-aria/spinbutton': 3.6.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-stately/datepicker': 3.10.3(react@18.2.0) '@react-stately/form': 3.0.6(react@18.2.0) '@react-types/button': 3.10.0(react@18.2.0) @@ -21087,23 +21762,67 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + '@react-aria/datepicker@3.12.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@internationalized/date': 3.6.0 + '@internationalized/number': 3.6.0 + '@internationalized/string': 3.2.5 + '@react-aria/focus': 3.19.0(react@18.2.0) + '@react-aria/form': 3.0.11(react@18.2.0) + '@react-aria/i18n': 3.12.4(react@18.2.0) + '@react-aria/interactions': 3.22.5(react@18.2.0) + '@react-aria/label': 3.7.13(react@18.2.0) + '@react-aria/spinbutton': 3.6.10(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-stately/datepicker': 3.11.0(react@18.2.0) + '@react-stately/form': 3.1.0(react@18.2.0) + '@react-types/button': 3.10.1(react@18.2.0) + '@react-types/calendar': 3.5.0(react@18.2.0) + '@react-types/datepicker': 3.9.0(react@18.2.0) + '@react-types/dialog': 3.5.14(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + '@react-aria/dialog@3.5.18(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@react-aria/focus': 3.18.3(react@18.2.0) '@react-aria/overlays': 3.23.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-types/dialog': 3.5.13(react@18.2.0) '@react-types/shared': 3.25.0(react@18.2.0) '@swc/helpers': 0.5.10 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + '@react-aria/dialog@3.5.20(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/focus': 3.19.0(react@18.2.0) + '@react-aria/overlays': 3.24.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-types/dialog': 3.5.14(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@react-aria/disclosure@3.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/ssr': 3.9.7(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-stately/disclosure': 3.0.0(react@18.2.0) + '@react-types/button': 3.10.1(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + '@react-aria/disclosure@3.0.0-alpha.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@react-aria/button': 3.10.0(react@18.2.0) '@react-aria/selection': 3.20.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@react-aria/ssr': 3.9.6(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-stately/disclosure': 3.0.0-alpha.0(react@18.2.0) '@react-stately/toggle': 3.7.8(react@18.2.0) '@react-stately/tree': 3.8.5(react@18.2.0) @@ -21120,7 +21839,7 @@ snapshots: '@react-aria/interactions': 3.22.3(react@18.2.0) '@react-aria/live-announcer': 3.4.0 '@react-aria/overlays': 3.23.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-stately/dnd': 3.4.3(react@18.2.0) '@react-types/button': 3.10.0(react@18.2.0) '@react-types/shared': 3.25.0(react@18.2.0) @@ -21128,19 +21847,52 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + '@react-aria/dnd@3.8.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@internationalized/string': 3.2.5 + '@react-aria/i18n': 3.12.4(react@18.2.0) + '@react-aria/interactions': 3.22.5(react@18.2.0) + '@react-aria/live-announcer': 3.4.1 + '@react-aria/overlays': 3.24.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-stately/dnd': 3.5.0(react@18.2.0) + '@react-types/button': 3.10.1(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + '@react-aria/focus@3.18.3(react@18.2.0)': dependencies: '@react-aria/interactions': 3.22.3(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-types/shared': 3.25.0(react@18.2.0) '@swc/helpers': 0.5.10 clsx: 2.1.1 react: 18.2.0 + '@react-aria/focus@3.19.0(react@18.2.0)': + dependencies: + '@react-aria/interactions': 3.22.5(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + clsx: 2.1.1 + react: 18.2.0 + + '@react-aria/form@3.0.11(react@18.2.0)': + dependencies: + '@react-aria/interactions': 3.22.5(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-stately/form': 3.1.0(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-aria/form@3.0.9(react@18.2.0)': dependencies: '@react-aria/interactions': 3.22.3(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-stately/form': 3.0.6(react@18.2.0) '@react-types/shared': 3.25.0(react@18.2.0) '@swc/helpers': 0.5.10 @@ -21153,7 +21905,7 @@ snapshots: '@react-aria/interactions': 3.22.3(react@18.2.0) '@react-aria/live-announcer': 3.4.0 '@react-aria/selection': 3.20.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-stately/collections': 3.11.0(react@18.2.0) '@react-stately/grid': 3.9.3(react@18.2.0) '@react-stately/selection': 3.17.0(react@18.2.0) @@ -21164,6 +21916,40 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + '@react-aria/grid@3.11.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/focus': 3.19.0(react@18.2.0) + '@react-aria/i18n': 3.12.4(react@18.2.0) + '@react-aria/interactions': 3.22.5(react@18.2.0) + '@react-aria/live-announcer': 3.4.1 + '@react-aria/selection': 3.21.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-stately/collections': 3.12.0(react@18.2.0) + '@react-stately/grid': 3.10.0(react@18.2.0) + '@react-stately/selection': 3.18.0(react@18.2.0) + '@react-types/checkbox': 3.9.0(react@18.2.0) + '@react-types/grid': 3.2.10(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@react-aria/gridlist@3.10.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/focus': 3.19.0(react@18.2.0) + '@react-aria/grid': 3.11.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/i18n': 3.12.4(react@18.2.0) + '@react-aria/interactions': 3.22.5(react@18.2.0) + '@react-aria/selection': 3.21.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-stately/collections': 3.12.0(react@18.2.0) + '@react-stately/list': 3.11.1(react@18.2.0) + '@react-stately/tree': 3.8.6(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + '@react-aria/gridlist@3.9.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@react-aria/focus': 3.18.3(react@18.2.0) @@ -21171,7 +21957,7 @@ snapshots: '@react-aria/i18n': 3.12.3(react@18.2.0) '@react-aria/interactions': 3.22.3(react@18.2.0) '@react-aria/selection': 3.20.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-stately/collections': 3.11.0(react@18.2.0) '@react-stately/list': 3.11.0(react@18.2.0) '@react-stately/tree': 3.8.5(react@18.2.0) @@ -21187,42 +21973,79 @@ snapshots: '@internationalized/number': 3.5.4 '@internationalized/string': 3.2.4 '@react-aria/ssr': 3.9.6(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-types/shared': 3.25.0(react@18.2.0) '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-aria/i18n@3.12.4(react@18.2.0)': + dependencies: + '@internationalized/date': 3.6.0 + '@internationalized/message': 3.1.6 + '@internationalized/number': 3.6.0 + '@internationalized/string': 3.2.5 + '@react-aria/ssr': 3.9.7(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-aria/interactions@3.22.3(react@18.2.0)': dependencies: '@react-aria/ssr': 3.9.6(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-types/shared': 3.25.0(react@18.2.0) '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-aria/interactions@3.22.5(react@18.2.0)': + dependencies: + '@react-aria/ssr': 3.9.7(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-aria/label@3.7.12(react@18.2.0)': dependencies: - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-types/shared': 3.25.0(react@18.2.0) '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-aria/label@3.7.13(react@18.2.0)': + dependencies: + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-aria/link@3.7.5(react@18.2.0)': dependencies: '@react-aria/focus': 3.18.3(react@18.2.0) '@react-aria/interactions': 3.22.3(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-types/link': 3.5.8(react@18.2.0) '@react-types/shared': 3.25.0(react@18.2.0) '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-aria/link@3.7.7(react@18.2.0)': + dependencies: + '@react-aria/focus': 3.19.0(react@18.2.0) + '@react-aria/interactions': 3.22.5(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-types/link': 3.5.9(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-aria/listbox@3.13.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@react-aria/interactions': 3.22.3(react@18.2.0) '@react-aria/label': 3.7.12(react@18.2.0) '@react-aria/selection': 3.20.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-stately/collections': 3.11.0(react@18.2.0) '@react-stately/list': 3.11.0(react@18.2.0) '@react-types/listbox': 3.5.2(react@18.2.0) @@ -21231,10 +22054,28 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + '@react-aria/listbox@3.13.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/interactions': 3.22.5(react@18.2.0) + '@react-aria/label': 3.7.13(react@18.2.0) + '@react-aria/selection': 3.21.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-stately/collections': 3.12.0(react@18.2.0) + '@react-stately/list': 3.11.1(react@18.2.0) + '@react-types/listbox': 3.5.3(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + '@react-aria/live-announcer@3.4.0': dependencies: '@swc/helpers': 0.5.10 + '@react-aria/live-announcer@3.4.1': + dependencies: + '@swc/helpers': 0.5.10 + '@react-aria/menu@3.15.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@react-aria/focus': 3.18.3(react@18.2.0) @@ -21242,7 +22083,7 @@ snapshots: '@react-aria/interactions': 3.22.3(react@18.2.0) '@react-aria/overlays': 3.23.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@react-aria/selection': 3.20.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-stately/collections': 3.11.0(react@18.2.0) '@react-stately/menu': 3.8.3(react@18.2.0) '@react-stately/tree': 3.8.5(react@18.2.0) @@ -21253,6 +22094,25 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + '@react-aria/menu@3.16.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/focus': 3.19.0(react@18.2.0) + '@react-aria/i18n': 3.12.4(react@18.2.0) + '@react-aria/interactions': 3.22.5(react@18.2.0) + '@react-aria/overlays': 3.24.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/selection': 3.21.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-stately/collections': 3.12.0(react@18.2.0) + '@react-stately/menu': 3.9.0(react@18.2.0) + '@react-stately/selection': 3.18.0(react@18.2.0) + '@react-stately/tree': 3.8.6(react@18.2.0) + '@react-types/button': 3.10.1(react@18.2.0) + '@react-types/menu': 3.9.13(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + '@react-aria/meter@3.4.17(react@18.2.0)': dependencies: '@react-aria/progress': 3.4.17(react@18.2.0) @@ -21261,13 +22121,21 @@ snapshots: '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-aria/meter@3.4.18(react@18.2.0)': + dependencies: + '@react-aria/progress': 3.4.18(react@18.2.0) + '@react-types/meter': 3.4.5(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-aria/numberfield@3.11.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@react-aria/i18n': 3.12.3(react@18.2.0) '@react-aria/interactions': 3.22.3(react@18.2.0) '@react-aria/spinbutton': 3.6.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@react-aria/textfield': 3.14.9(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-stately/form': 3.0.6(react@18.2.0) '@react-stately/numberfield': 3.9.7(react@18.2.0) '@react-types/button': 3.10.0(react@18.2.0) @@ -21277,13 +22145,29 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + '@react-aria/numberfield@3.11.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/i18n': 3.12.4(react@18.2.0) + '@react-aria/interactions': 3.22.5(react@18.2.0) + '@react-aria/spinbutton': 3.6.10(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/textfield': 3.15.0(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-stately/form': 3.1.0(react@18.2.0) + '@react-stately/numberfield': 3.9.8(react@18.2.0) + '@react-types/button': 3.10.1(react@18.2.0) + '@react-types/numberfield': 3.8.7(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + '@react-aria/overlays@3.23.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@react-aria/focus': 3.18.3(react@18.2.0) '@react-aria/i18n': 3.12.3(react@18.2.0) '@react-aria/interactions': 3.22.3(react@18.2.0) '@react-aria/ssr': 3.9.6(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-aria/visually-hidden': 3.8.16(react@18.2.0) '@react-stately/overlays': 3.6.11(react@18.2.0) '@react-types/button': 3.10.0(react@18.2.0) @@ -21293,16 +22177,56 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + '@react-aria/overlays@3.24.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/focus': 3.19.0(react@18.2.0) + '@react-aria/i18n': 3.12.4(react@18.2.0) + '@react-aria/interactions': 3.22.5(react@18.2.0) + '@react-aria/ssr': 3.9.7(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-aria/visually-hidden': 3.8.18(react@18.2.0) + '@react-stately/overlays': 3.6.12(react@18.2.0) + '@react-types/button': 3.10.1(react@18.2.0) + '@react-types/overlays': 3.8.11(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + '@react-aria/progress@3.4.17(react@18.2.0)': dependencies: '@react-aria/i18n': 3.12.3(react@18.2.0) '@react-aria/label': 3.7.12(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-types/progress': 3.5.7(react@18.2.0) '@react-types/shared': 3.25.0(react@18.2.0) '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-aria/progress@3.4.18(react@18.2.0)': + dependencies: + '@react-aria/i18n': 3.12.4(react@18.2.0) + '@react-aria/label': 3.7.13(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-types/progress': 3.5.8(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + + '@react-aria/radio@3.10.10(react@18.2.0)': + dependencies: + '@react-aria/focus': 3.19.0(react@18.2.0) + '@react-aria/form': 3.0.11(react@18.2.0) + '@react-aria/i18n': 3.12.4(react@18.2.0) + '@react-aria/interactions': 3.22.5(react@18.2.0) + '@react-aria/label': 3.7.13(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-stately/radio': 3.10.9(react@18.2.0) + '@react-types/radio': 3.8.5(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-aria/radio@3.10.8(react@18.2.0)': dependencies: '@react-aria/focus': 3.18.3(react@18.2.0) @@ -21310,18 +22234,30 @@ snapshots: '@react-aria/i18n': 3.12.3(react@18.2.0) '@react-aria/interactions': 3.22.3(react@18.2.0) '@react-aria/label': 3.7.12(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-stately/radio': 3.10.8(react@18.2.0) '@react-types/radio': 3.8.4(react@18.2.0) '@react-types/shared': 3.25.0(react@18.2.0) '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-aria/searchfield@3.7.11(react@18.2.0)': + dependencies: + '@react-aria/i18n': 3.12.4(react@18.2.0) + '@react-aria/textfield': 3.15.0(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-stately/searchfield': 3.5.8(react@18.2.0) + '@react-types/button': 3.10.1(react@18.2.0) + '@react-types/searchfield': 3.5.10(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-aria/searchfield@3.7.9(react@18.2.0)': dependencies: '@react-aria/i18n': 3.12.3(react@18.2.0) '@react-aria/textfield': 3.14.9(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-stately/searchfield': 3.5.7(react@18.2.0) '@react-types/button': 3.10.0(react@18.2.0) '@react-types/searchfield': 3.5.9(react@18.2.0) @@ -21338,7 +22274,7 @@ snapshots: '@react-aria/listbox': 3.13.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@react-aria/menu': 3.15.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@react-aria/selection': 3.20.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-aria/visually-hidden': 3.8.16(react@18.2.0) '@react-stately/select': 3.6.8(react@18.2.0) '@react-types/button': 3.10.0(react@18.2.0) @@ -21348,43 +22284,105 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + '@react-aria/select@3.15.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/form': 3.0.11(react@18.2.0) + '@react-aria/i18n': 3.12.4(react@18.2.0) + '@react-aria/interactions': 3.22.5(react@18.2.0) + '@react-aria/label': 3.7.13(react@18.2.0) + '@react-aria/listbox': 3.13.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/menu': 3.16.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/selection': 3.21.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-aria/visually-hidden': 3.8.18(react@18.2.0) + '@react-stately/select': 3.6.9(react@18.2.0) + '@react-types/button': 3.10.1(react@18.2.0) + '@react-types/select': 3.9.8(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + '@react-aria/selection@3.20.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@react-aria/focus': 3.18.3(react@18.2.0) '@react-aria/i18n': 3.12.3(react@18.2.0) '@react-aria/interactions': 3.22.3(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-stately/selection': 3.17.0(react@18.2.0) '@react-types/shared': 3.25.0(react@18.2.0) '@swc/helpers': 0.5.10 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + '@react-aria/selection@3.21.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/focus': 3.19.0(react@18.2.0) + '@react-aria/i18n': 3.12.4(react@18.2.0) + '@react-aria/interactions': 3.22.5(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-stately/selection': 3.18.0(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + '@react-aria/separator@3.4.3(react@18.2.0)': dependencies: - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-types/shared': 3.25.0(react@18.2.0) '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-aria/separator@3.4.4(react@18.2.0)': + dependencies: + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-aria/slider@3.7.12(react@18.2.0)': dependencies: '@react-aria/focus': 3.18.3(react@18.2.0) '@react-aria/i18n': 3.12.3(react@18.2.0) '@react-aria/interactions': 3.22.3(react@18.2.0) '@react-aria/label': 3.7.12(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-stately/slider': 3.5.8(react@18.2.0) '@react-types/shared': 3.25.0(react@18.2.0) '@react-types/slider': 3.7.6(react@18.2.0) '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-aria/slider@3.7.14(react@18.2.0)': + dependencies: + '@react-aria/focus': 3.19.0(react@18.2.0) + '@react-aria/i18n': 3.12.4(react@18.2.0) + '@react-aria/interactions': 3.22.5(react@18.2.0) + '@react-aria/label': 3.7.13(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-stately/slider': 3.6.0(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@react-types/slider': 3.7.7(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + + '@react-aria/spinbutton@3.6.10(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/i18n': 3.12.4(react@18.2.0) + '@react-aria/live-announcer': 3.4.1 + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-types/button': 3.10.1(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + '@react-aria/spinbutton@3.6.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@react-aria/i18n': 3.12.3(react@18.2.0) '@react-aria/live-announcer': 3.4.0 - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-types/button': 3.10.0(react@18.2.0) '@react-types/shared': 3.25.0(react@18.2.0) '@swc/helpers': 0.5.10 @@ -21396,6 +22394,20 @@ snapshots: '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-aria/ssr@3.9.7(react@18.2.0)': + dependencies: + '@swc/helpers': 0.5.10 + react: 18.2.0 + + '@react-aria/switch@3.6.10(react@18.2.0)': + dependencies: + '@react-aria/toggle': 3.10.10(react@18.2.0) + '@react-stately/toggle': 3.8.0(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@react-types/switch': 3.5.7(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-aria/switch@3.6.8(react@18.2.0)': dependencies: '@react-aria/toggle': 3.10.8(react@18.2.0) @@ -21412,7 +22424,7 @@ snapshots: '@react-aria/i18n': 3.12.3(react@18.2.0) '@react-aria/interactions': 3.22.3(react@18.2.0) '@react-aria/live-announcer': 3.4.0 - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-aria/visually-hidden': 3.8.16(react@18.2.0) '@react-stately/collections': 3.11.0(react@18.2.0) '@react-stately/flags': 3.0.4 @@ -21425,12 +22437,32 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + '@react-aria/table@3.16.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/focus': 3.19.0(react@18.2.0) + '@react-aria/grid': 3.11.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/i18n': 3.12.4(react@18.2.0) + '@react-aria/interactions': 3.22.5(react@18.2.0) + '@react-aria/live-announcer': 3.4.1 + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-aria/visually-hidden': 3.8.18(react@18.2.0) + '@react-stately/collections': 3.12.0(react@18.2.0) + '@react-stately/flags': 3.0.5 + '@react-stately/table': 3.13.0(react@18.2.0) + '@react-types/checkbox': 3.9.0(react@18.2.0) + '@react-types/grid': 3.2.10(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@react-types/table': 3.10.3(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + '@react-aria/tabs@3.9.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@react-aria/focus': 3.18.3(react@18.2.0) '@react-aria/i18n': 3.12.3(react@18.2.0) '@react-aria/selection': 3.20.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-stately/tabs': 3.6.10(react@18.2.0) '@react-types/shared': 3.25.0(react@18.2.0) '@react-types/tabs': 3.3.10(react@18.2.0) @@ -21438,6 +22470,19 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + '@react-aria/tabs@3.9.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/focus': 3.19.0(react@18.2.0) + '@react-aria/i18n': 3.12.4(react@18.2.0) + '@react-aria/selection': 3.21.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-stately/tabs': 3.7.0(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@react-types/tabs': 3.3.11(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + '@react-aria/tag@3.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@react-aria/gridlist': 3.9.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -21445,7 +22490,7 @@ snapshots: '@react-aria/interactions': 3.22.3(react@18.2.0) '@react-aria/label': 3.7.12(react@18.2.0) '@react-aria/selection': 3.20.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-stately/list': 3.11.0(react@18.2.0) '@react-types/button': 3.10.0(react@18.2.0) '@react-types/shared': 3.25.0(react@18.2.0) @@ -21453,12 +22498,27 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + '@react-aria/tag@3.4.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/gridlist': 3.10.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/i18n': 3.12.4(react@18.2.0) + '@react-aria/interactions': 3.22.5(react@18.2.0) + '@react-aria/label': 3.7.13(react@18.2.0) + '@react-aria/selection': 3.21.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-stately/list': 3.11.1(react@18.2.0) + '@react-types/button': 3.10.1(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + '@react-aria/textfield@3.14.9(react@18.2.0)': dependencies: '@react-aria/focus': 3.18.3(react@18.2.0) '@react-aria/form': 3.0.9(react@18.2.0) '@react-aria/label': 3.7.12(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-stately/form': 3.0.6(react@18.2.0) '@react-stately/utils': 3.10.4(react@18.2.0) '@react-types/shared': 3.25.0(react@18.2.0) @@ -21466,31 +22526,75 @@ snapshots: '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-aria/textfield@3.15.0(react@18.2.0)': + dependencies: + '@react-aria/focus': 3.19.0(react@18.2.0) + '@react-aria/form': 3.0.11(react@18.2.0) + '@react-aria/label': 3.7.13(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-stately/form': 3.1.0(react@18.2.0) + '@react-stately/utils': 3.10.5(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@react-types/textfield': 3.10.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + + '@react-aria/toggle@3.10.10(react@18.2.0)': + dependencies: + '@react-aria/focus': 3.19.0(react@18.2.0) + '@react-aria/interactions': 3.22.5(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-stately/toggle': 3.8.0(react@18.2.0) + '@react-types/checkbox': 3.9.0(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-aria/toggle@3.10.8(react@18.2.0)': dependencies: '@react-aria/focus': 3.18.3(react@18.2.0) '@react-aria/interactions': 3.22.3(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-stately/toggle': 3.7.8(react@18.2.0) '@react-types/checkbox': 3.8.4(react@18.2.0) '@react-types/shared': 3.25.0(react@18.2.0) '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-aria/toolbar@3.0.0-beta.11(react@18.2.0)': + dependencies: + '@react-aria/focus': 3.19.0(react@18.2.0) + '@react-aria/i18n': 3.12.4(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-aria/toolbar@3.0.0-beta.9(react@18.2.0)': dependencies: '@react-aria/focus': 3.18.3(react@18.2.0) '@react-aria/i18n': 3.12.3(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-types/shared': 3.25.0(react@18.2.0) '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-aria/tooltip@3.7.10(react@18.2.0)': + dependencies: + '@react-aria/focus': 3.19.0(react@18.2.0) + '@react-aria/interactions': 3.22.5(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-stately/tooltip': 3.5.0(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@react-types/tooltip': 3.4.13(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-aria/tooltip@3.7.8(react@18.2.0)': dependencies: '@react-aria/focus': 3.18.3(react@18.2.0) '@react-aria/interactions': 3.22.3(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-stately/tooltip': 3.4.13(react@18.2.0) '@react-types/shared': 3.25.0(react@18.2.0) '@react-types/tooltip': 3.4.12(react@18.2.0) @@ -21502,7 +22606,7 @@ snapshots: '@react-aria/gridlist': 3.9.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@react-aria/i18n': 3.12.3(react@18.2.0) '@react-aria/selection': 3.20.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-stately/tree': 3.8.5(react@18.2.0) '@react-types/button': 3.10.0(react@18.2.0) '@react-types/shared': 3.25.0(react@18.2.0) @@ -21510,6 +22614,19 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + '@react-aria/tree@3.0.0-beta.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/gridlist': 3.10.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/i18n': 3.12.4(react@18.2.0) + '@react-aria/selection': 3.21.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-stately/tree': 3.8.6(react@18.2.0) + '@react-types/button': 3.10.1(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + '@react-aria/utils@3.25.3(react@18.2.0)': dependencies: '@react-aria/ssr': 3.9.6(react@18.2.0) @@ -21519,25 +22636,53 @@ snapshots: clsx: 2.1.1 react: 18.2.0 + '@react-aria/utils@3.26.0(react@18.2.0)': + dependencies: + '@react-aria/ssr': 3.9.7(react@18.2.0) + '@react-stately/utils': 3.10.5(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + clsx: 2.1.1 + react: 18.2.0 + '@react-aria/virtualizer@4.0.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@react-aria/i18n': 3.12.3(react@18.2.0) '@react-aria/interactions': 3.22.3(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-stately/virtualizer': 4.1.0(react@18.2.0) '@react-types/shared': 3.25.0(react@18.2.0) '@swc/helpers': 0.5.10 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + '@react-aria/virtualizer@4.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/i18n': 3.12.4(react@18.2.0) + '@react-aria/interactions': 3.22.5(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-stately/virtualizer': 4.2.0(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + '@react-aria/visually-hidden@3.8.16(react@18.2.0)': dependencies: '@react-aria/interactions': 3.22.3(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-types/shared': 3.25.0(react@18.2.0) '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-aria/visually-hidden@3.8.18(react@18.2.0)': + dependencies: + '@react-aria/interactions': 3.22.5(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-router/dev@7.0.0-pre.4(@react-router/serve@7.0.0-pre.4(react-router@7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.6.3))(@types/node@20.12.7)(babel-plugin-macros@3.1.0)(less@3.11.1)(lightningcss@1.24.1)(react-router@7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(sass@1.75.0)(terser@5.30.3)(typescript@5.6.3)(vite@5.4.9(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3))': dependencies: '@babel/core': 7.25.8 @@ -21620,12 +22765,12 @@ snapshots: - supports-color - typescript - '@react-spectrum/utils@3.11.11(react@18.2.0)': + '@react-spectrum/utils@3.12.0(react@18.2.0)': dependencies: - '@react-aria/i18n': 3.12.3(react@18.2.0) - '@react-aria/ssr': 3.9.6(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) - '@react-types/shared': 3.25.0(react@18.2.0) + '@react-aria/i18n': 3.12.4(react@18.2.0) + '@react-aria/ssr': 3.9.7(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) '@swc/helpers': 0.5.10 clsx: 2.1.1 react: 18.2.0 @@ -21639,6 +22784,24 @@ snapshots: '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-stately/calendar@3.6.0(react@18.2.0)': + dependencies: + '@internationalized/date': 3.6.0 + '@react-stately/utils': 3.10.5(react@18.2.0) + '@react-types/calendar': 3.5.0(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + + '@react-stately/checkbox@3.6.10(react@18.2.0)': + dependencies: + '@react-stately/form': 3.1.0(react@18.2.0) + '@react-stately/utils': 3.10.5(react@18.2.0) + '@react-types/checkbox': 3.9.0(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-stately/checkbox@3.6.9(react@18.2.0)': dependencies: '@react-stately/form': 3.0.6(react@18.2.0) @@ -21654,6 +22817,12 @@ snapshots: '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-stately/collections@3.12.0(react@18.2.0)': + dependencies: + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-stately/color@3.8.0(react@18.2.0)': dependencies: '@internationalized/number': 3.5.4 @@ -21668,6 +22837,20 @@ snapshots: '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-stately/color@3.8.1(react@18.2.0)': + dependencies: + '@internationalized/number': 3.6.0 + '@internationalized/string': 3.2.5 + '@react-aria/i18n': 3.12.4(react@18.2.0) + '@react-stately/form': 3.1.0(react@18.2.0) + '@react-stately/numberfield': 3.9.8(react@18.2.0) + '@react-stately/slider': 3.6.0(react@18.2.0) + '@react-stately/utils': 3.10.5(react@18.2.0) + '@react-types/color': 3.0.1(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-stately/combobox@3.10.0(react@18.2.0)': dependencies: '@react-stately/collections': 3.11.0(react@18.2.0) @@ -21681,12 +22864,31 @@ snapshots: '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-stately/combobox@3.10.1(react@18.2.0)': + dependencies: + '@react-stately/collections': 3.12.0(react@18.2.0) + '@react-stately/form': 3.1.0(react@18.2.0) + '@react-stately/list': 3.11.1(react@18.2.0) + '@react-stately/overlays': 3.6.12(react@18.2.0) + '@react-stately/select': 3.6.9(react@18.2.0) + '@react-stately/utils': 3.10.5(react@18.2.0) + '@react-types/combobox': 3.13.1(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-stately/data@3.11.7(react@18.2.0)': dependencies: '@react-types/shared': 3.25.0(react@18.2.0) '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-stately/data@3.12.0(react@18.2.0)': + dependencies: + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-stately/datepicker@3.10.3(react@18.2.0)': dependencies: '@internationalized/date': 3.5.6 @@ -21699,6 +22901,25 @@ snapshots: '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-stately/datepicker@3.11.0(react@18.2.0)': + dependencies: + '@internationalized/date': 3.6.0 + '@internationalized/string': 3.2.5 + '@react-stately/form': 3.1.0(react@18.2.0) + '@react-stately/overlays': 3.6.12(react@18.2.0) + '@react-stately/utils': 3.10.5(react@18.2.0) + '@react-types/datepicker': 3.9.0(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + + '@react-stately/disclosure@3.0.0(react@18.2.0)': + dependencies: + '@react-stately/utils': 3.10.5(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-stately/disclosure@3.0.0-alpha.0(react@18.2.0)': dependencies: '@react-stately/utils': 3.10.4(react@18.2.0) @@ -21713,16 +22934,42 @@ snapshots: '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-stately/dnd@3.5.0(react@18.2.0)': + dependencies: + '@react-stately/selection': 3.18.0(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-stately/flags@3.0.4': dependencies: '@swc/helpers': 0.5.10 + '@react-stately/flags@3.0.5': + dependencies: + '@swc/helpers': 0.5.10 + '@react-stately/form@3.0.6(react@18.2.0)': dependencies: '@react-types/shared': 3.25.0(react@18.2.0) '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-stately/form@3.1.0(react@18.2.0)': + dependencies: + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + + '@react-stately/grid@3.10.0(react@18.2.0)': + dependencies: + '@react-stately/collections': 3.12.0(react@18.2.0) + '@react-stately/selection': 3.18.0(react@18.2.0) + '@react-types/grid': 3.2.10(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-stately/grid@3.9.3(react@18.2.0)': dependencies: '@react-stately/collections': 3.11.0(react@18.2.0) @@ -21743,6 +22990,17 @@ snapshots: '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-stately/layout@4.1.0(react@18.2.0)': + dependencies: + '@react-stately/collections': 3.12.0(react@18.2.0) + '@react-stately/table': 3.13.0(react@18.2.0) + '@react-stately/virtualizer': 4.2.0(react@18.2.0) + '@react-types/grid': 3.2.10(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@react-types/table': 3.10.3(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-stately/list@3.11.0(react@18.2.0)': dependencies: '@react-stately/collections': 3.11.0(react@18.2.0) @@ -21752,6 +23010,15 @@ snapshots: '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-stately/list@3.11.1(react@18.2.0)': + dependencies: + '@react-stately/collections': 3.12.0(react@18.2.0) + '@react-stately/selection': 3.18.0(react@18.2.0) + '@react-stately/utils': 3.10.5(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-stately/menu@3.8.3(react@18.2.0)': dependencies: '@react-stately/overlays': 3.6.11(react@18.2.0) @@ -21760,6 +23027,14 @@ snapshots: '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-stately/menu@3.9.0(react@18.2.0)': + dependencies: + '@react-stately/overlays': 3.6.12(react@18.2.0) + '@react-types/menu': 3.9.13(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-stately/numberfield@3.9.7(react@18.2.0)': dependencies: '@internationalized/number': 3.5.4 @@ -21769,6 +23044,15 @@ snapshots: '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-stately/numberfield@3.9.8(react@18.2.0)': + dependencies: + '@internationalized/number': 3.6.0 + '@react-stately/form': 3.1.0(react@18.2.0) + '@react-stately/utils': 3.10.5(react@18.2.0) + '@react-types/numberfield': 3.8.7(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-stately/overlays@3.6.11(react@18.2.0)': dependencies: '@react-stately/utils': 3.10.4(react@18.2.0) @@ -21776,6 +23060,13 @@ snapshots: '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-stately/overlays@3.6.12(react@18.2.0)': + dependencies: + '@react-stately/utils': 3.10.5(react@18.2.0) + '@react-types/overlays': 3.8.11(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-stately/radio@3.10.8(react@18.2.0)': dependencies: '@react-stately/form': 3.0.6(react@18.2.0) @@ -21785,6 +23076,15 @@ snapshots: '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-stately/radio@3.10.9(react@18.2.0)': + dependencies: + '@react-stately/form': 3.1.0(react@18.2.0) + '@react-stately/utils': 3.10.5(react@18.2.0) + '@react-types/radio': 3.8.5(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-stately/searchfield@3.5.7(react@18.2.0)': dependencies: '@react-stately/utils': 3.10.4(react@18.2.0) @@ -21792,6 +23092,13 @@ snapshots: '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-stately/searchfield@3.5.8(react@18.2.0)': + dependencies: + '@react-stately/utils': 3.10.5(react@18.2.0) + '@react-types/searchfield': 3.5.10(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-stately/select@3.6.8(react@18.2.0)': dependencies: '@react-stately/form': 3.0.6(react@18.2.0) @@ -21802,6 +23109,16 @@ snapshots: '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-stately/select@3.6.9(react@18.2.0)': + dependencies: + '@react-stately/form': 3.1.0(react@18.2.0) + '@react-stately/list': 3.11.1(react@18.2.0) + '@react-stately/overlays': 3.6.12(react@18.2.0) + '@react-types/select': 3.9.8(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-stately/selection@3.17.0(react@18.2.0)': dependencies: '@react-stately/collections': 3.11.0(react@18.2.0) @@ -21810,6 +23127,14 @@ snapshots: '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-stately/selection@3.18.0(react@18.2.0)': + dependencies: + '@react-stately/collections': 3.12.0(react@18.2.0) + '@react-stately/utils': 3.10.5(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-stately/slider@3.5.8(react@18.2.0)': dependencies: '@react-stately/utils': 3.10.4(react@18.2.0) @@ -21818,6 +23143,14 @@ snapshots: '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-stately/slider@3.6.0(react@18.2.0)': + dependencies: + '@react-stately/utils': 3.10.5(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@react-types/slider': 3.7.7(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-stately/table@3.12.3(react@18.2.0)': dependencies: '@react-stately/collections': 3.11.0(react@18.2.0) @@ -21831,6 +23164,19 @@ snapshots: '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-stately/table@3.13.0(react@18.2.0)': + dependencies: + '@react-stately/collections': 3.12.0(react@18.2.0) + '@react-stately/flags': 3.0.5 + '@react-stately/grid': 3.10.0(react@18.2.0) + '@react-stately/selection': 3.18.0(react@18.2.0) + '@react-stately/utils': 3.10.5(react@18.2.0) + '@react-types/grid': 3.2.10(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@react-types/table': 3.10.3(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-stately/tabs@3.6.10(react@18.2.0)': dependencies: '@react-stately/list': 3.11.0(react@18.2.0) @@ -21839,6 +23185,14 @@ snapshots: '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-stately/tabs@3.7.0(react@18.2.0)': + dependencies: + '@react-stately/list': 3.11.1(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@react-types/tabs': 3.3.11(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-stately/toggle@3.7.8(react@18.2.0)': dependencies: '@react-stately/utils': 3.10.4(react@18.2.0) @@ -21846,6 +23200,14 @@ snapshots: '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-stately/toggle@3.8.0(react@18.2.0)': + dependencies: + '@react-stately/utils': 3.10.5(react@18.2.0) + '@react-types/checkbox': 3.9.0(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-stately/tooltip@3.4.13(react@18.2.0)': dependencies: '@react-stately/overlays': 3.6.11(react@18.2.0) @@ -21853,6 +23215,13 @@ snapshots: '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-stately/tooltip@3.5.0(react@18.2.0)': + dependencies: + '@react-stately/overlays': 3.6.12(react@18.2.0) + '@react-types/tooltip': 3.4.13(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-stately/tree@3.8.5(react@18.2.0)': dependencies: '@react-stately/collections': 3.11.0(react@18.2.0) @@ -21862,18 +23231,39 @@ snapshots: '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-stately/tree@3.8.6(react@18.2.0)': + dependencies: + '@react-stately/collections': 3.12.0(react@18.2.0) + '@react-stately/selection': 3.18.0(react@18.2.0) + '@react-stately/utils': 3.10.5(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-stately/utils@3.10.4(react@18.2.0)': dependencies: '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-stately/utils@3.10.5(react@18.2.0)': + dependencies: + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-stately/virtualizer@4.1.0(react@18.2.0)': dependencies: - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-types/shared': 3.25.0(react@18.2.0) '@swc/helpers': 0.5.10 react: 18.2.0 + '@react-stately/virtualizer@4.2.0(react@18.2.0)': + dependencies: + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@swc/helpers': 0.5.10 + react: 18.2.0 + '@react-types/accordion@3.0.0-alpha.24(react@18.2.0)': dependencies: '@react-types/shared': 3.25.0(react@18.2.0) @@ -21885,33 +23275,66 @@ snapshots: '@react-types/shared': 3.25.0(react@18.2.0) react: 18.2.0 + '@react-types/breadcrumbs@3.7.9(react@18.2.0)': + dependencies: + '@react-types/link': 3.5.9(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + react: 18.2.0 + '@react-types/button@3.10.0(react@18.2.0)': dependencies: '@react-types/shared': 3.25.0(react@18.2.0) react: 18.2.0 + '@react-types/button@3.10.1(react@18.2.0)': + dependencies: + '@react-types/shared': 3.26.0(react@18.2.0) + react: 18.2.0 + '@react-types/calendar@3.4.10(react@18.2.0)': dependencies: '@internationalized/date': 3.5.6 '@react-types/shared': 3.25.0(react@18.2.0) react: 18.2.0 + '@react-types/calendar@3.5.0(react@18.2.0)': + dependencies: + '@internationalized/date': 3.6.0 + '@react-types/shared': 3.26.0(react@18.2.0) + react: 18.2.0 + '@react-types/checkbox@3.8.4(react@18.2.0)': dependencies: '@react-types/shared': 3.25.0(react@18.2.0) react: 18.2.0 + '@react-types/checkbox@3.9.0(react@18.2.0)': + dependencies: + '@react-types/shared': 3.26.0(react@18.2.0) + react: 18.2.0 + '@react-types/color@3.0.0(react@18.2.0)': dependencies: '@react-types/shared': 3.25.0(react@18.2.0) '@react-types/slider': 3.7.6(react@18.2.0) react: 18.2.0 + '@react-types/color@3.0.1(react@18.2.0)': + dependencies: + '@react-types/shared': 3.26.0(react@18.2.0) + '@react-types/slider': 3.7.7(react@18.2.0) + react: 18.2.0 + '@react-types/combobox@3.13.0(react@18.2.0)': dependencies: '@react-types/shared': 3.25.0(react@18.2.0) react: 18.2.0 + '@react-types/combobox@3.13.1(react@18.2.0)': + dependencies: + '@react-types/shared': 3.26.0(react@18.2.0) + react: 18.2.0 + '@react-types/datepicker@3.8.3(react@18.2.0)': dependencies: '@internationalized/date': 3.5.6 @@ -21920,17 +23343,41 @@ snapshots: '@react-types/shared': 3.25.0(react@18.2.0) react: 18.2.0 + '@react-types/datepicker@3.9.0(react@18.2.0)': + dependencies: + '@internationalized/date': 3.6.0 + '@react-types/calendar': 3.5.0(react@18.2.0) + '@react-types/overlays': 3.8.11(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + react: 18.2.0 + '@react-types/dialog@3.5.13(react@18.2.0)': dependencies: '@react-types/overlays': 3.8.10(react@18.2.0) '@react-types/shared': 3.25.0(react@18.2.0) react: 18.2.0 + '@react-types/dialog@3.5.14(react@18.2.0)': + dependencies: + '@react-types/overlays': 3.8.11(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + react: 18.2.0 + '@react-types/form@3.7.7(react@18.2.0)': dependencies: '@react-types/shared': 3.25.0(react@18.2.0) react: 18.2.0 + '@react-types/form@3.7.8(react@18.2.0)': + dependencies: + '@react-types/shared': 3.26.0(react@18.2.0) + react: 18.2.0 + + '@react-types/grid@3.2.10(react@18.2.0)': + dependencies: + '@react-types/shared': 3.26.0(react@18.2.0) + react: 18.2.0 + '@react-types/grid@3.2.9(react@18.2.0)': dependencies: '@react-types/shared': 3.25.0(react@18.2.0) @@ -21941,42 +23388,89 @@ snapshots: '@react-types/shared': 3.25.0(react@18.2.0) react: 18.2.0 + '@react-types/link@3.5.9(react@18.2.0)': + dependencies: + '@react-types/shared': 3.26.0(react@18.2.0) + react: 18.2.0 + '@react-types/listbox@3.5.2(react@18.2.0)': dependencies: '@react-types/shared': 3.25.0(react@18.2.0) react: 18.2.0 + '@react-types/listbox@3.5.3(react@18.2.0)': + dependencies: + '@react-types/shared': 3.26.0(react@18.2.0) + react: 18.2.0 + '@react-types/menu@3.9.12(react@18.2.0)': dependencies: '@react-types/overlays': 3.8.10(react@18.2.0) '@react-types/shared': 3.25.0(react@18.2.0) react: 18.2.0 + '@react-types/menu@3.9.13(react@18.2.0)': + dependencies: + '@react-types/overlays': 3.8.11(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + react: 18.2.0 + '@react-types/meter@3.4.4(react@18.2.0)': dependencies: '@react-types/progress': 3.5.7(react@18.2.0) react: 18.2.0 + '@react-types/meter@3.4.5(react@18.2.0)': + dependencies: + '@react-types/progress': 3.5.8(react@18.2.0) + react: 18.2.0 + '@react-types/numberfield@3.8.6(react@18.2.0)': dependencies: '@react-types/shared': 3.25.0(react@18.2.0) react: 18.2.0 + '@react-types/numberfield@3.8.7(react@18.2.0)': + dependencies: + '@react-types/shared': 3.26.0(react@18.2.0) + react: 18.2.0 + '@react-types/overlays@3.8.10(react@18.2.0)': dependencies: '@react-types/shared': 3.25.0(react@18.2.0) react: 18.2.0 + '@react-types/overlays@3.8.11(react@18.2.0)': + dependencies: + '@react-types/shared': 3.26.0(react@18.2.0) + react: 18.2.0 + '@react-types/progress@3.5.7(react@18.2.0)': dependencies: '@react-types/shared': 3.25.0(react@18.2.0) react: 18.2.0 + '@react-types/progress@3.5.8(react@18.2.0)': + dependencies: + '@react-types/shared': 3.26.0(react@18.2.0) + react: 18.2.0 + '@react-types/radio@3.8.4(react@18.2.0)': dependencies: '@react-types/shared': 3.25.0(react@18.2.0) react: 18.2.0 + '@react-types/radio@3.8.5(react@18.2.0)': + dependencies: + '@react-types/shared': 3.26.0(react@18.2.0) + react: 18.2.0 + + '@react-types/searchfield@3.5.10(react@18.2.0)': + dependencies: + '@react-types/shared': 3.26.0(react@18.2.0) + '@react-types/textfield': 3.10.0(react@18.2.0) + react: 18.2.0 + '@react-types/searchfield@3.5.9(react@18.2.0)': dependencies: '@react-types/shared': 3.25.0(react@18.2.0) @@ -21988,6 +23482,11 @@ snapshots: '@react-types/shared': 3.25.0(react@18.2.0) react: 18.2.0 + '@react-types/select@3.9.8(react@18.2.0)': + dependencies: + '@react-types/shared': 3.26.0(react@18.2.0) + react: 18.2.0 + '@react-types/shared@3.22.1(react@18.2.0)': dependencies: react: 18.2.0 @@ -21996,27 +23495,57 @@ snapshots: dependencies: react: 18.2.0 + '@react-types/shared@3.26.0(react@18.2.0)': + dependencies: + react: 18.2.0 + '@react-types/slider@3.7.6(react@18.2.0)': dependencies: '@react-types/shared': 3.25.0(react@18.2.0) react: 18.2.0 + '@react-types/slider@3.7.7(react@18.2.0)': + dependencies: + '@react-types/shared': 3.26.0(react@18.2.0) + react: 18.2.0 + '@react-types/switch@3.5.6(react@18.2.0)': dependencies: '@react-types/shared': 3.25.0(react@18.2.0) react: 18.2.0 + '@react-types/switch@3.5.7(react@18.2.0)': + dependencies: + '@react-types/shared': 3.26.0(react@18.2.0) + react: 18.2.0 + '@react-types/table@3.10.2(react@18.2.0)': dependencies: '@react-types/grid': 3.2.9(react@18.2.0) '@react-types/shared': 3.25.0(react@18.2.0) react: 18.2.0 + '@react-types/table@3.10.3(react@18.2.0)': + dependencies: + '@react-types/grid': 3.2.10(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + react: 18.2.0 + '@react-types/tabs@3.3.10(react@18.2.0)': dependencies: '@react-types/shared': 3.25.0(react@18.2.0) react: 18.2.0 + '@react-types/tabs@3.3.11(react@18.2.0)': + dependencies: + '@react-types/shared': 3.26.0(react@18.2.0) + react: 18.2.0 + + '@react-types/textfield@3.10.0(react@18.2.0)': + dependencies: + '@react-types/shared': 3.26.0(react@18.2.0) + react: 18.2.0 + '@react-types/textfield@3.9.7(react@18.2.0)': dependencies: '@react-types/shared': 3.25.0(react@18.2.0) @@ -22028,6 +23557,12 @@ snapshots: '@react-types/shared': 3.25.0(react@18.2.0) react: 18.2.0 + '@react-types/tooltip@3.4.13(react@18.2.0)': + dependencies: + '@react-types/overlays': 3.8.11(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + react: 18.2.0 + '@redux-devtools/extension@3.3.0(redux@4.2.1)': dependencies: '@babel/runtime': 7.24.4 @@ -34609,6 +36144,43 @@ snapshots: react-stately: 3.33.0(react@18.2.0) use-sync-external-store: 1.2.0(react@18.2.0) + react-aria-components@1.5.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + '@internationalized/date': 3.6.0 + '@internationalized/string': 3.2.5 + '@react-aria/collections': 3.0.0-alpha.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/color': 3.0.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/disclosure': 3.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/dnd': 3.8.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/focus': 3.19.0(react@18.2.0) + '@react-aria/interactions': 3.22.5(react@18.2.0) + '@react-aria/live-announcer': 3.4.1 + '@react-aria/menu': 3.16.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/toolbar': 3.0.0-beta.11(react@18.2.0) + '@react-aria/tree': 3.0.0-beta.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-aria/virtualizer': 4.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-stately/color': 3.8.1(react@18.2.0) + '@react-stately/disclosure': 3.0.0(react@18.2.0) + '@react-stately/layout': 4.1.0(react@18.2.0) + '@react-stately/menu': 3.9.0(react@18.2.0) + '@react-stately/selection': 3.18.0(react@18.2.0) + '@react-stately/table': 3.13.0(react@18.2.0) + '@react-stately/utils': 3.10.5(react@18.2.0) + '@react-stately/virtualizer': 4.2.0(react@18.2.0) + '@react-types/color': 3.0.1(react@18.2.0) + '@react-types/form': 3.7.8(react@18.2.0) + '@react-types/grid': 3.2.10(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + '@react-types/table': 3.10.3(react@18.2.0) + '@swc/helpers': 0.5.10 + client-only: 0.0.1 + react: 18.2.0 + react-aria: 3.36.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-dom: 18.2.0(react@18.2.0) + react-stately: 3.34.0(react@18.2.0) + use-sync-external-store: 1.2.2(react@18.2.0) + react-aria@3.35.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@internationalized/string': 3.2.4 @@ -34646,12 +36218,56 @@ snapshots: '@react-aria/tag': 3.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@react-aria/textfield': 3.14.9(react@18.2.0) '@react-aria/tooltip': 3.7.8(react@18.2.0) - '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) '@react-aria/visually-hidden': 3.8.16(react@18.2.0) '@react-types/shared': 3.25.0(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + react-aria@3.36.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + '@internationalized/string': 3.2.5 + '@react-aria/breadcrumbs': 3.5.19(react@18.2.0) + '@react-aria/button': 3.11.0(react@18.2.0) + '@react-aria/calendar': 3.6.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/checkbox': 3.15.0(react@18.2.0) + '@react-aria/color': 3.0.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/combobox': 3.11.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/datepicker': 3.12.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/dialog': 3.5.20(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/disclosure': 3.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/dnd': 3.8.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/focus': 3.19.0(react@18.2.0) + '@react-aria/gridlist': 3.10.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/i18n': 3.12.4(react@18.2.0) + '@react-aria/interactions': 3.22.5(react@18.2.0) + '@react-aria/label': 3.7.13(react@18.2.0) + '@react-aria/link': 3.7.7(react@18.2.0) + '@react-aria/listbox': 3.13.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/menu': 3.16.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/meter': 3.4.18(react@18.2.0) + '@react-aria/numberfield': 3.11.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/overlays': 3.24.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/progress': 3.4.18(react@18.2.0) + '@react-aria/radio': 3.10.10(react@18.2.0) + '@react-aria/searchfield': 3.7.11(react@18.2.0) + '@react-aria/select': 3.15.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/selection': 3.21.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/separator': 3.4.4(react@18.2.0) + '@react-aria/slider': 3.7.14(react@18.2.0) + '@react-aria/ssr': 3.9.7(react@18.2.0) + '@react-aria/switch': 3.6.10(react@18.2.0) + '@react-aria/table': 3.16.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/tabs': 3.9.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/tag': 3.4.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/textfield': 3.15.0(react@18.2.0) + '@react-aria/tooltip': 3.7.10(react@18.2.0) + '@react-aria/utils': 3.26.0(react@18.2.0) + '@react-aria/visually-hidden': 3.8.18(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-beautiful-dnd@13.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@babel/runtime': 7.20.6 @@ -35094,6 +36710,35 @@ snapshots: '@react-types/shared': 3.25.0(react@18.2.0) react: 18.2.0 + react-stately@3.34.0(react@18.2.0): + dependencies: + '@react-stately/calendar': 3.6.0(react@18.2.0) + '@react-stately/checkbox': 3.6.10(react@18.2.0) + '@react-stately/collections': 3.12.0(react@18.2.0) + '@react-stately/color': 3.8.1(react@18.2.0) + '@react-stately/combobox': 3.10.1(react@18.2.0) + '@react-stately/data': 3.12.0(react@18.2.0) + '@react-stately/datepicker': 3.11.0(react@18.2.0) + '@react-stately/disclosure': 3.0.0(react@18.2.0) + '@react-stately/dnd': 3.5.0(react@18.2.0) + '@react-stately/form': 3.1.0(react@18.2.0) + '@react-stately/list': 3.11.1(react@18.2.0) + '@react-stately/menu': 3.9.0(react@18.2.0) + '@react-stately/numberfield': 3.9.8(react@18.2.0) + '@react-stately/overlays': 3.6.12(react@18.2.0) + '@react-stately/radio': 3.10.9(react@18.2.0) + '@react-stately/searchfield': 3.5.8(react@18.2.0) + '@react-stately/select': 3.6.9(react@18.2.0) + '@react-stately/selection': 3.18.0(react@18.2.0) + '@react-stately/slider': 3.6.0(react@18.2.0) + '@react-stately/table': 3.13.0(react@18.2.0) + '@react-stately/tabs': 3.7.0(react@18.2.0) + '@react-stately/toggle': 3.8.0(react@18.2.0) + '@react-stately/tooltip': 3.5.0(react@18.2.0) + '@react-stately/tree': 3.8.6(react@18.2.0) + '@react-types/shared': 3.26.0(react@18.2.0) + react: 18.2.0 + react-test-renderer@18.2.0(react@18.2.0): dependencies: react: 18.2.0 From d35e940285a6017eccc449f674340d2299df312c Mon Sep 17 00:00:00 2001 From: Victor Fernandez de Alba Date: Thu, 21 Nov 2024 21:03:59 +0100 Subject: [PATCH 41/47] Release @plone/components 2.2.0 --- packages/components/CHANGELOG.md | 6 ++++++ packages/components/news/6498.feature | 1 - packages/components/package.json | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) delete mode 100644 packages/components/news/6498.feature diff --git a/packages/components/CHANGELOG.md b/packages/components/CHANGELOG.md index 7e797d13b9..8b6360ff57 100644 --- a/packages/components/CHANGELOG.md +++ b/packages/components/CHANGELOG.md @@ -8,6 +8,12 @@ +## 2.2.0 (2024-11-21) + +### Feature + +- Update RAC to 1.5.0 @sneridagh [#6498](https://github.com/plone/volto/issues/6498) + ## 2.1.1 (2024-11-05) ### Internal diff --git a/packages/components/news/6498.feature b/packages/components/news/6498.feature deleted file mode 100644 index 6f5c7d369c..0000000000 --- a/packages/components/news/6498.feature +++ /dev/null @@ -1 +0,0 @@ -Update RAC to 1.5.0 @sneridagh diff --git a/packages/components/package.json b/packages/components/package.json index c855eadb00..18004f5337 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -8,7 +8,7 @@ } ], "license": "MIT", - "version": "2.1.1", + "version": "2.2.0", "repository": { "type": "git", "url": "http://github.com/plone/components.git" From bda7f1f094a1b95eb392647f70d4cd4624716cfb Mon Sep 17 00:00:00 2001 From: Victor Fernandez de Alba Date: Thu, 21 Nov 2024 22:22:30 +0100 Subject: [PATCH 42/47] Release @plone/providers 1.0.0-alpha.6 --- packages/providers/CHANGELOG.md | 6 ++++++ packages/providers/news/6498.feature | 1 - packages/providers/package.json | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) delete mode 100644 packages/providers/news/6498.feature diff --git a/packages/providers/CHANGELOG.md b/packages/providers/CHANGELOG.md index 9ee556346e..96a8e9b472 100644 --- a/packages/providers/CHANGELOG.md +++ b/packages/providers/CHANGELOG.md @@ -8,6 +8,12 @@ +## 1.0.0-alpha.6 (2024-11-21) + +### Feature + +- Update RAC to 1.5.0 @sneridagh [#6498](https://github.com/plone/volto/issues/6498) + ## 1.0.0-alpha.5 (2024-11-05) ### Internal diff --git a/packages/providers/news/6498.feature b/packages/providers/news/6498.feature deleted file mode 100644 index 6f5c7d369c..0000000000 --- a/packages/providers/news/6498.feature +++ /dev/null @@ -1 +0,0 @@ -Update RAC to 1.5.0 @sneridagh diff --git a/packages/providers/package.json b/packages/providers/package.json index cd9222cee3..8a12623112 100644 --- a/packages/providers/package.json +++ b/packages/providers/package.json @@ -9,7 +9,7 @@ ], "funding": "https://github.com/sponsors/plone", "license": "MIT", - "version": "1.0.0-alpha.5", + "version": "1.0.0-alpha.6", "repository": { "type": "git", "url": "https://github.com/plone/volto.git" From 1c26bab305ea84a47dac67d459c0825d5d0abeae Mon Sep 17 00:00:00 2001 From: Victor Fernandez de Alba Date: Thu, 21 Nov 2024 22:23:47 +0100 Subject: [PATCH 43/47] Release 18.1.1 --- docs/source/release-notes/index.md | 18 ++++++++++++++++++ packages/volto/CHANGELOG.md | 18 ++++++++++++++++++ packages/volto/news/4203.documentation | 1 - packages/volto/news/6482.documentation | 1 - packages/volto/news/6485.bugfix | 1 - packages/volto/news/6486.documentation | 1 - packages/volto/news/6487.bugfix | 1 - packages/volto/news/6495.documentation | 1 - packages/volto/news/6496.internal | 1 - packages/volto/package.json | 2 +- 10 files changed, 37 insertions(+), 8 deletions(-) delete mode 100644 packages/volto/news/4203.documentation delete mode 100644 packages/volto/news/6482.documentation delete mode 100644 packages/volto/news/6485.bugfix delete mode 100644 packages/volto/news/6486.documentation delete mode 100644 packages/volto/news/6487.bugfix delete mode 100644 packages/volto/news/6495.documentation delete mode 100644 packages/volto/news/6496.internal diff --git a/docs/source/release-notes/index.md b/docs/source/release-notes/index.md index ba882e6e51..040f15972a 100644 --- a/docs/source/release-notes/index.md +++ b/docs/source/release-notes/index.md @@ -17,6 +17,24 @@ myst: +## 18.1.1 (2024-11-21) + +### Bugfix + +- Do not break toolbar if layout id is not registered in layoutViewsNamesMapping. @cekk [#6485](https://github.com/plone/volto/issues/6485) +- Replace _all_ spaces with `-` in `BodyClass` classes, instead of with `-` or `` depending on the content type or section. @giuliaghisini [#6487](https://github.com/plone/volto/issues/6487) + +### Internal + +- Update instructions to install `pipx` in `RELEASING.md`. @stevepiercy [#6496](https://github.com/plone/volto/issues/6496) + +### Documentation + +- More privacy concerning youtube links and fixing link check warnings for youtube playlist links. @stevepiercy @ksuess [#4203](https://github.com/plone/volto/issues/4203) +- Remove conflicting `searchtools.js` file from documentation to allow default Sphinx search in main Plone documentation. @stevepiercy [#6482](https://github.com/plone/volto/issues/6482) +- Add support for sphinxcontrib-youtube. @stevepiercy [#6486](https://github.com/plone/volto/issues/6486) +- Refactor documentation includes to align with main documentation pattern. @stevepiercy [#6495](https://github.com/plone/volto/issues/6495) + ## 18.1.0 (2024-11-11) ### Feature diff --git a/packages/volto/CHANGELOG.md b/packages/volto/CHANGELOG.md index ba882e6e51..040f15972a 100644 --- a/packages/volto/CHANGELOG.md +++ b/packages/volto/CHANGELOG.md @@ -17,6 +17,24 @@ myst: +## 18.1.1 (2024-11-21) + +### Bugfix + +- Do not break toolbar if layout id is not registered in layoutViewsNamesMapping. @cekk [#6485](https://github.com/plone/volto/issues/6485) +- Replace _all_ spaces with `-` in `BodyClass` classes, instead of with `-` or `` depending on the content type or section. @giuliaghisini [#6487](https://github.com/plone/volto/issues/6487) + +### Internal + +- Update instructions to install `pipx` in `RELEASING.md`. @stevepiercy [#6496](https://github.com/plone/volto/issues/6496) + +### Documentation + +- More privacy concerning youtube links and fixing link check warnings for youtube playlist links. @stevepiercy @ksuess [#4203](https://github.com/plone/volto/issues/4203) +- Remove conflicting `searchtools.js` file from documentation to allow default Sphinx search in main Plone documentation. @stevepiercy [#6482](https://github.com/plone/volto/issues/6482) +- Add support for sphinxcontrib-youtube. @stevepiercy [#6486](https://github.com/plone/volto/issues/6486) +- Refactor documentation includes to align with main documentation pattern. @stevepiercy [#6495](https://github.com/plone/volto/issues/6495) + ## 18.1.0 (2024-11-11) ### Feature diff --git a/packages/volto/news/4203.documentation b/packages/volto/news/4203.documentation deleted file mode 100644 index f74508685a..0000000000 --- a/packages/volto/news/4203.documentation +++ /dev/null @@ -1 +0,0 @@ -More privacy concerning youtube links and fixing link check warnings for youtube playlist links. @stevepiercy @ksuess \ No newline at end of file diff --git a/packages/volto/news/6482.documentation b/packages/volto/news/6482.documentation deleted file mode 100644 index 89da57ce3d..0000000000 --- a/packages/volto/news/6482.documentation +++ /dev/null @@ -1 +0,0 @@ -Remove conflicting `searchtools.js` file from documentation to allow default Sphinx search in main Plone documentation. @stevepiercy diff --git a/packages/volto/news/6485.bugfix b/packages/volto/news/6485.bugfix deleted file mode 100644 index 3813144e9b..0000000000 --- a/packages/volto/news/6485.bugfix +++ /dev/null @@ -1 +0,0 @@ -Do not break toolbar if layout id is not registered in layoutViewsNamesMapping. @cekk diff --git a/packages/volto/news/6486.documentation b/packages/volto/news/6486.documentation deleted file mode 100644 index 66b5bd33a6..0000000000 --- a/packages/volto/news/6486.documentation +++ /dev/null @@ -1 +0,0 @@ -Add support for sphinxcontrib-youtube. @stevepiercy diff --git a/packages/volto/news/6487.bugfix b/packages/volto/news/6487.bugfix deleted file mode 100644 index 7b2f017ba8..0000000000 --- a/packages/volto/news/6487.bugfix +++ /dev/null @@ -1 +0,0 @@ -Replace _all_ spaces with `-` in `BodyClass` classes, instead of with `-` or `` depending on the content type or section. @giuliaghisini diff --git a/packages/volto/news/6495.documentation b/packages/volto/news/6495.documentation deleted file mode 100644 index ad974979eb..0000000000 --- a/packages/volto/news/6495.documentation +++ /dev/null @@ -1 +0,0 @@ -Refactor documentation includes to align with main documentation pattern. @stevepiercy diff --git a/packages/volto/news/6496.internal b/packages/volto/news/6496.internal deleted file mode 100644 index 14a6ca8375..0000000000 --- a/packages/volto/news/6496.internal +++ /dev/null @@ -1 +0,0 @@ -Update instructions to install `pipx` in `RELEASING.md`. @stevepiercy diff --git a/packages/volto/package.json b/packages/volto/package.json index f72d9ebb99..78baf16759 100644 --- a/packages/volto/package.json +++ b/packages/volto/package.json @@ -9,7 +9,7 @@ } ], "license": "MIT", - "version": "18.1.0", + "version": "18.1.1", "repository": { "type": "git", "url": "git@github.com:plone/volto.git" From 1aff8d0451f5cb375ca9f5afe9b2b72a0555afd8 Mon Sep 17 00:00:00 2001 From: Steve Piercy Date: Sat, 23 Nov 2024 17:09:00 -0800 Subject: [PATCH 44/47] Add new Volto trainings to tutorials (#6499) --- docs/source/tutorials/index.md | 2 ++ packages/volto/news/6499.documentation | 1 + 2 files changed, 3 insertions(+) create mode 100644 packages/volto/news/6499.documentation diff --git a/docs/source/tutorials/index.md b/docs/source/tutorials/index.md index adde4f061b..4a1ce15a4e 100644 --- a/docs/source/tutorials/index.md +++ b/docs/source/tutorials/index.md @@ -18,6 +18,8 @@ On the [Plone Training website](https://training.plone.org), you'll find Volto-d - [Mastering Plone 6 Development](https://training.plone.org/mastering-plone/) The comprehensive training on Plone 6 with best practice tips for developers and integrators. +- [Customizing Volto Light Theme](https://training.plone.org/customizing-volto-light-theme/index.html) +- [Volto Customization for JavaScript Beginners](https://training.plone.org/volto-customization/index.html) - [Volto Hands-On](https://training.plone.org/voltohandson/index.html) - [Volto Add-ons Development](https://training.plone.org/voltoaddons/index.html) - [Effective Volto](https://training.plone.org/effective-volto/index.html) diff --git a/packages/volto/news/6499.documentation b/packages/volto/news/6499.documentation new file mode 100644 index 0000000000..30b4d41068 --- /dev/null +++ b/packages/volto/news/6499.documentation @@ -0,0 +1 @@ +Add new Volto trainings to tutorials. @stevepiercy From 17ab4b26f0ab321a248459ddc85d5ca69a7defec Mon Sep 17 00:00:00 2001 From: Steve Piercy Date: Sat, 23 Nov 2024 23:19:44 -0800 Subject: [PATCH 45/47] Update browserslist (#6501) --- docs/source/contributing/language-features.md | 1 - packages/volto/news/6501.bugfix | 1 + packages/volto/package.json | 1 - 3 files changed, 1 insertion(+), 2 deletions(-) create mode 100644 packages/volto/news/6501.bugfix diff --git a/docs/source/contributing/language-features.md b/docs/source/contributing/language-features.md index 7102420229..979fed7793 100644 --- a/docs/source/contributing/language-features.md +++ b/docs/source/contributing/language-features.md @@ -41,7 +41,6 @@ You can adjust this file according to the environments you want to target. ">1%", "last 4 versions", "Firefox ESR", - "not ie 11", "not dead" ], ``` diff --git a/packages/volto/news/6501.bugfix b/packages/volto/news/6501.bugfix new file mode 100644 index 0000000000..90818d36c8 --- /dev/null +++ b/packages/volto/news/6501.bugfix @@ -0,0 +1 @@ +Remove `not ie 11` from browserslist configuration, because it is now included in `not dead`. @stevepiercy diff --git a/packages/volto/package.json b/packages/volto/package.json index 78baf16759..8e002cf546 100644 --- a/packages/volto/package.json +++ b/packages/volto/package.json @@ -171,7 +171,6 @@ ">1%", "last 4 versions", "Firefox ESR", - "not ie 11", "not dead" ], "engines": { From 2d479891bd3cbafa95c3b3db0cf28102e171624e Mon Sep 17 00:00:00 2001 From: Steve Piercy Date: Sun, 24 Nov 2024 04:11:52 -0800 Subject: [PATCH 46/47] Fix linkcheck (#6502) --- docs/source/conf.py | 7 ++----- packages/registry/docs/conf.py | 2 +- packages/registry/news/6502.documentation | 1 + packages/volto/news/6502.documentation | 1 + 4 files changed, 5 insertions(+), 6 deletions(-) create mode 100644 packages/registry/news/6502.documentation create mode 100644 packages/volto/news/6502.documentation diff --git a/docs/source/conf.py b/docs/source/conf.py index 2080b93576..4c010d58b4 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -90,11 +90,8 @@ # Ignore github.com pages with anchors r"https://github.com/.*#.*", # Ignore other specific anchors - # r"https://chromewebstore.google.com/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi", # TODO retest with latest Sphinx when upgrading theme. chromewebstore recently changed its URL and has "too many redirects". - # r"https://chromewebstore.google.com/detail/redux-devtools/lmhkpmbekcpmknklioeibfkpmmfibljd", # TODO retest with latest Sphinx when upgrading theme. chromewebstore recently changed its URL and has "too many redirects". r"https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors#Identifying_the_issue", r"https://docs.cypress.io/guides/references/migration-guide#Migrating-to-Cypress-version-10-0", - # r"https://stackoverflow.com", # volto and documentation # TODO retest with latest Sphinx. ] linkcheck_anchors = True linkcheck_timeout = 5 @@ -180,7 +177,7 @@ "path_to_docs": "docs", "repository_branch": "main", "repository_url": "https://github.com/plone/volto", - "search_bar_text": "Search", # TODO: Confirm usage of search_bar_text in plone-sphinx-theme + "search_bar_text": "Search", "use_edit_page_button": True, "use_issues_button": True, "use_repository_button": True, @@ -188,7 +185,7 @@ # Announce that we have an opensearch plugin # https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-html_use_opensearch -html_use_opensearch = "https://6.docs.plone.org" # TODO: Confirm usage of opensearch in theme +html_use_opensearch = "https://6.docs.plone.org" # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". diff --git a/packages/registry/docs/conf.py b/packages/registry/docs/conf.py index 796fc4b620..fa39be8168 100644 --- a/packages/registry/docs/conf.py +++ b/packages/registry/docs/conf.py @@ -177,7 +177,7 @@ # Announce that we have an opensearch plugin # https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-html_use_opensearch -html_use_opensearch = "https://plone-registry.readthedocs.io/" # TODO: Confirm usage of opensearch in theme +html_use_opensearch = "https://plone-registry.readthedocs.io" # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". diff --git a/packages/registry/news/6502.documentation b/packages/registry/news/6502.documentation new file mode 100644 index 0000000000..d46a5b6816 --- /dev/null +++ b/packages/registry/news/6502.documentation @@ -0,0 +1 @@ +`html_use_opensearch` value must not have a trailing slash. Clean up comments. @stevepiercy diff --git a/packages/volto/news/6502.documentation b/packages/volto/news/6502.documentation new file mode 100644 index 0000000000..d46a5b6816 --- /dev/null +++ b/packages/volto/news/6502.documentation @@ -0,0 +1 @@ +`html_use_opensearch` value must not have a trailing slash. Clean up comments. @stevepiercy From 596ae97cc3657e88210aa77cebe6e49ec3a1a66d Mon Sep 17 00:00:00 2001 From: ana-oprea <80201759+ana-oprea@users.noreply.github.com> Date: Tue, 26 Nov 2024 12:50:12 +0200 Subject: [PATCH 47/47] Add Accessibility acceptance tests for content-types (#6339) Co-authored-by: ichim-david Co-authored-by: Jefferson Bledsoe Co-authored-by: Wagner Trezub <60133113+Wagner3UB@users.noreply.github.com> --- .../volto/cypress/tests/core/a11y/content.js | 100 ++++++++++++++++++ .../cypress/tests/core/basic/metadata.js | 1 + packages/volto/news/6339.internal | 1 + 3 files changed, 102 insertions(+) create mode 100644 packages/volto/cypress/tests/core/a11y/content.js create mode 100644 packages/volto/news/6339.internal diff --git a/packages/volto/cypress/tests/core/a11y/content.js b/packages/volto/cypress/tests/core/a11y/content.js new file mode 100644 index 0000000000..c266399a4b --- /dev/null +++ b/packages/volto/cypress/tests/core/a11y/content.js @@ -0,0 +1,100 @@ +describe('Accessibility Tests Content Types', () => { + beforeEach(() => { + cy.autologin(); + cy.visit('/'); + cy.injectAxe(); // make sure axe is available on the page + }); + + it('Event tested for a11y axe violations', () => { + cy.get('#toolbar-add').click(); + cy.get('#toolbar-add-event').click(); + cy.get('.documentFirstHeading').type('Test Event Content Type'); + + cy.get('#toolbar-save').click(); + + cy.wait(1000); + cy.get('.ics-download').contains('Download Event').focus(); + cy.checkA11y(); + }); + + it('File tested for a11y axe violations', () => { + cy.get('#toolbar-add').click(); + cy.get('#toolbar-add-file').click(); + cy.get('#field-title').type('Test File Content Type'); + cy.get('#field-description').type( + 'A11y cypress test for File content type', + ); + + cy.get('input[id="field-file"]').attachFile('file.pdf', { + subjectType: 'input', + }); + + cy.get('#toolbar-save').focus().click(); + + cy.wait(1000); + cy.contains('file.pdf').focus(); + cy.checkA11y(); + }); + + it('Image tested for a11y axe violations', () => { + cy.get('#toolbar-add').click(); + cy.get('#toolbar-add-image').click(); + cy.get('#field-title').type('Test Image Content Type'); + cy.get('#field-description').type('Image description'); + cy.fixture('image.png', 'base64') + .then((fc) => { + return Cypress.Blob.base64StringToBlob(fc); + }) + .then((fileContent) => { + cy.get('input#field-image').attachFile( + { fileContent, fileName: 'image.png', mimeType: 'image/png' }, + { subjectType: 'input' }, + ); + cy.get('#field-image-image').parent().parent().contains('image.png'); + }); + cy.get('#toolbar-save').click(); + + cy.wait(1000); + cy.get('#view img').should('have.attr', 'alt', 'Test Image Content Type'); + cy.checkA11y(); + }); + + it('Link tested for a11y axe violations', () => { + cy.get('#toolbar-add').click(); + cy.get('#toolbar-add-link').click(); + cy.get('#field-title').type('Test Link Content Type'); + cy.get('#field-description').type( + 'A11y cypress test for Link content type', + ); + cy.get('#field-remoteUrl').type('https://google.com'); + cy.get('#toolbar-save').click(); + + cy.wait(1000); + cy.get('a.external') + .should('have.attr', 'href', 'https://google.com') + .focus(); + cy.checkA11y(); + }); + + it('News Item tested for a11y axe violations', () => { + cy.get('#toolbar-add').click(); + cy.get('#toolbar-add-news-item').click(); + cy.get('.documentFirstHeading').type('Test News Content Type'); + cy.get('#field-description').type('test summary'); + cy.get('#field-subjects').type('test'); + cy.get('#toolbar-save').click(); + + cy.wait(1000); + cy.checkA11y(); + }); + + it('Page tested for a11y axe violations', () => { + cy.get('#toolbar-add').click(); + cy.get('#toolbar-add-document').click(); + cy.get('.documentFirstHeading').type('My Page'); + cy.get('#toolbar-save').click(); + + cy.wait(1000); + cy.checkA11y(); + }); +}); diff --git a/packages/volto/cypress/tests/core/basic/metadata.js b/packages/volto/cypress/tests/core/basic/metadata.js index 6d5b414aad..7c7924cd1e 100644 --- a/packages/volto/cypress/tests/core/basic/metadata.js +++ b/packages/volto/cypress/tests/core/basic/metadata.js @@ -41,6 +41,7 @@ describe('Add Content Tests', () => { }); it('After removing value of widget the focus should be removed from the field', () => { + cy.wait(2000); cy.get('#field-creators').type('aaa'); cy.get('#field-creators') .type('aaa{Enter}') diff --git a/packages/volto/news/6339.internal b/packages/volto/news/6339.internal new file mode 100644 index 0000000000..972df6ac4d --- /dev/null +++ b/packages/volto/news/6339.internal @@ -0,0 +1 @@ +Add Accessibility acceptance tests for content types. @ana-oprea @ichim-david