diff --git a/.meta-updater/catalog/package.json b/.meta-updater/catalog/package.json deleted file mode 100644 index 494272bf9..000000000 --- a/.meta-updater/catalog/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "devDependencies": { - "rollup": "^4.34.8" - } -} diff --git a/.meta-updater/formats/code.mjs b/.meta-updater/formats/code.mjs deleted file mode 100644 index 830b35b09..000000000 --- a/.meta-updater/formats/code.mjs +++ /dev/null @@ -1,27 +0,0 @@ -import { readFileSync, writeFileSync } from 'node:fs'; - -import { createFormat } from '@pnpm/meta-updater'; -import { equals } from 'ramda'; -import { update } from '../update.mjs'; - -/** - * @import { FormatPlugin } from '@pnpm/meta-updater'; - */ - -/** - * @returns {FormatPlugin} - */ -export const code = createFormat({ - read({ resolvedPath }) { - return readFileSync(resolvedPath, { encoding: 'utf-8' }); - }, - update(actual, updater, options) { - return updater(actual, options); - }, - equal(expected, actual) { - return equals(actual, expected); - }, - async write(expected, options) { - await update(options.resolvedPath, expected, writeFileSync); - }, -}); diff --git a/.meta-updater/formats/json.mjs b/.meta-updater/formats/json.mjs deleted file mode 100644 index 7427e6df1..000000000 --- a/.meta-updater/formats/json.mjs +++ /dev/null @@ -1,60 +0,0 @@ -// @ts-check - -import { basename } from 'node:path'; - -import { createFormat } from '@pnpm/meta-updater'; -import {} from '@pnpm/workspace.find-packages'; -import { loadJsonFile } from 'load-json-file'; -import { equals } from 'ramda'; -import { writeJsonFile } from 'write-json-file'; -import { update } from '../update.mjs'; - -/** - * @import { PackageJson } from 'type-fest'; - * @import { FormatPlugin } from '@pnpm/meta-updater'; - * @import {ProjectManifest} from '@pnpm/types'; - */ - -/** - * @type {FormatPlugin>} - */ -export const json = createFormat({ - read({ resolvedPath }) { - return loadJsonFile(resolvedPath); - }, - update(actual, updater, options) { - return updater(actual, options); - }, - equal(expected, actual) { - return equals(actual, expected); - }, - async write(expected, options) { - await update(options.resolvedPath, expected, async (content, path) => { - if (content && basename(path) === 'package.json') { - await options._writeProjectManifest(/** @type {ProjectManifest} */ (content)); - } else { - await writeJsonFile(path, content, { detectIndent: true }); - } - }); - }, -}); - -/** - * @type {FormatPlugin} - */ -export const packageJson = createFormat({ - read({ resolvedPath }) { - return loadJsonFile(resolvedPath); - }, - update(actual, updater, options) { - return updater(actual, options); - }, - equal(expected, actual) { - return equals(actual, expected); - }, - async write(expected, options) { - await update(options.resolvedPath, expected, async (content) => { - await options._writeProjectManifest(/** @type {ProjectManifest} */ (content)); - }); - }, -}); diff --git a/.meta-updater/main.mjs b/.meta-updater/main.mjs deleted file mode 100644 index 2c7793a6e..000000000 --- a/.meta-updater/main.mjs +++ /dev/null @@ -1,205 +0,0 @@ -// @ts-check -import { createUpdateOptions } from '@pnpm/meta-updater'; -import repo, { getPackageInfo, WORKSPACE_ROOT } from '@glimmer-workspace/repo-metadata'; -import { json, packageJson } from './formats/json.mjs'; -import { code } from './formats/code.mjs'; -import catalog from './catalog/package.json' with { type: 'json' }; - -/** - * @import { PackageInfo } from '@glimmer-workspace/repo-metadata'; - * @import { JsonObject, JsonValue } from 'type-fest'; - */ - -const REMOVE = undefined; - -export default () => - createUpdateOptions({ - files: { - 'package.json [#manifest]': (actual) => { - if (!actual || !actual.name) return actual; - - const pkg = getPackageInfo(actual.name); - let publishConfig = /** @type { JsonObject} */ (actual.publishConfig ??= {}); - - if (pkg) { - const isPublished = !pkg.private; - const isRoot = pkg.name === 'glimmer-engine'; - - const scripts = /** @type { JsonObject } */ (actual.scripts ??= {}); - - // replaced with prepack - delete scripts['test:types']; - delete scripts['test:lint']; - - const updateRepo = () => { - update(actual, 'repository', { - type: 'git', - url: 'git+https://github.com/glimmerjs/glimmer-vm.git', - ...(pkg.root - ? { - directory: pkg.root, - } - : {}), - }); - }; - - if (isPublished) { - updateRepo(); - update(publishConfig, 'access', 'public'); - } else if (pkg['repo-meta']?.built) { - delete publishConfig['access']; - } else { - publishConfig = actual.publishConfig = {}; - - update(actual, 'version', repo.workspace.version); - /** - * Needed for release automation - */ - if (isRoot) { - updateRepo(); - update(scripts, 'test:lint', 'eslint . --quiet'); - } else { - delete actual.repository; - } - delete scripts['test:publint']; - cleanup(actual, 'publishConfig'); - return actual; - } - - update(scripts, 'test:publint', 'publint'); - - const devDependencies = /** @type { JsonObject } */ (actual.devDependencies ??= {}); - - for (const [name, version] of Object.entries(catalog.devDependencies)) { - if (name in devDependencies) { - update(devDependencies, name, version); - } - } - - // Packages are built if they're published and have at least one `.ts` entry point that is - // not a `.d.ts` file **or** if they are explicitly marked as built via `repo-meta.built`. - if (pkg['repo-meta']?.built) { - update(devDependencies, '@glimmer-workspace/env', 'workspace:*'); - - update(scripts, 'prepack', 'rollup -c rollup.config.mjs'); - - update(actual, 'files', ['dist']); - - if (pkg.name === '@glimmer/vm-babel-plugins') { - update(publishConfig, 'exports', { - '.': { - development: { - default: './dist/dev/index.js', - }, - ...(pkg['repo-meta']?.supportcjs - ? { - require: { - default: './dist/dev/index.cjs', - }, - } - : {}), - default: { - default: './dist/prod/index.js', - }, - }, - }); - } else { - update(publishConfig, 'types', 'dist/dev/index.d.ts'); - update(publishConfig, 'exports', { - '.': { - development: { - types: './dist/dev/index.d.ts', - default: './dist/dev/index.js', - }, - ...(pkg['repo-meta']?.supportcjs - ? { - require: { - default: './dist/dev/index.cjs', - }, - } - : {}), - default: { - types: './dist/prod/index.d.ts', - default: './dist/prod/index.js', - }, - }, - }); - } - } else { - delete publishConfig['exports']; - delete scripts['prepack']; - } - } - - cleanup(actual, 'publishConfig'); - cleanup(actual, 'devDependencies'); - return actual; - }, - - 'rollup.config.mjs [#code]': (actual, { manifest }) => { - if (!manifest.name) return actual; - - const pkg = getPackageInfo(manifest.name); - - if (pkg?.root === '') { - return actual; - } - - // If the package needs to be built, generate a rollup config - // that builds the package. This will be used by the `build` - // script, which is set up below in `package.json`. - if (pkg?.['repo-meta']?.built) { - return ( - [ - `import { Package } from '@glimmer-workspace/build-support';`, - `export default Package.config(import.meta);`, - ].join('\n\n') + '\n' - ); - } - - return null; - }, - }, - formats: { - '#manifest': packageJson, - '#code': code, - '.json': json, - }, - }); - -/** - * Update an existing field. The code is structured this way to keep the - * diff reported by `meta-updater --test` as small as possible. - * - * @template {JsonObject} const T - * @template {keyof T} const K - * @template {T[K]} const Updates - * - * @param {T} parent - * @param {K} key - * @param {Updates} value - * @returns {void} - */ -function update(parent, key, value) { - const prev = JSON.stringify(parent[key]); - const next = JSON.stringify(value); - - if (prev !== next) { - parent[key] = value; - } -} - -/** - * @template {JsonObject} const T - * @template {keyof T} const K - * - * @param {T} parent - * @param {K} key - * @returns {void} - */ -function cleanup(parent, key) { - const value = parent[key]; - if (value !== null && typeof value === 'object' && Object.keys(value).length === 0) { - delete parent[key]; - } -} diff --git a/.meta-updater/package.json b/.meta-updater/package.json deleted file mode 100644 index 94ac00d3a..000000000 --- a/.meta-updater/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "private": true, - "name": "@glimmer-workspace/meta-updater", - "version": "0.92.0", - "exports": "./main.mjs", - "keywords": [ - "node" - ], - "scripts": {}, - "dependencies": { - "@pnpm/find-workspace-dir": "^1000.0.2", - "@pnpm/meta-updater": "^2.0.3", - "@pnpm/read-package-json": "^1000.0.3", - "globby": "^14.1.0", - "load-json-file": "^7.0.1", - "minimatch": "^10.0.1", - "ramda": "^0.30.1", - "write-json-file": "^6.0.0", - "zx": "^8.3.2" - }, - "devDependencies": { - "@glimmer-workspace/env": "workspace:*", - "@glimmer-workspace/repo-metadata": "workspace:*", - "@pnpm/types": "^1000.1.1", - "@pnpm/workspace.find-packages": "^1000.0.10", - "@types/node": "^22.13.4", - "@types/ramda": "^0.30.2", - "type-fest": "^4.35.0" - } -} diff --git a/.meta-updater/update.mjs b/.meta-updater/update.mjs deleted file mode 100644 index 08f89836a..000000000 --- a/.meta-updater/update.mjs +++ /dev/null @@ -1,32 +0,0 @@ -import { WORKSPACE_ROOT } from '@glimmer-workspace/repo-metadata'; -import { dirname, basename, relative } from 'node:path'; -import { $ } from 'zx'; -import chalk from 'chalk'; - -/** - * @template T - * @param {string} file - * @param {T} contents - * @param {(content: T, file: string) => void | Promise} writer - */ -export async function update(file, contents, writer) { - // since we're actually writing a file, it's a good place to log that fact that we're updating - // the file. In `--test` mode, the `meta-updater` harness prints out the dry run information - // and the `write` function will never be called. - const dir = dirname(file); - const base = basename(file); - const relativeDir = relative(WORKSPACE_ROOT, dir); - const [prefix, rest] = relativeDir.startsWith('packages/') - ? ['packages/', relativeDir.slice('packages/'.length)] - : ['', relativeDir]; - - console.error( - `${chalk.green.bold('updating')} ${chalk.gray.dim(prefix)}${chalk.magenta.underline( - rest - )}${chalk.gray(`/`)}${chalk.cyanBright(base)}` - ); - - await writer(contents, file); - await $({ verbose: false })`eslint --fix ${file}`; - await $({ verbose: false })`prettier --write ${file}`; -} diff --git a/eslint.config.js b/eslint.config.js index 63c97959d..6cb4975a6 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -10,6 +10,7 @@ import { node, config, } from '@glimmer-workspace/eslint-plugin'; +import { WORKSPACE_ROOT } from '@glimmer-workspace/repo-metadata'; /** @internal */ export default config( @@ -88,5 +89,28 @@ export default config( }, rules: { 'n/no-process-exit': 'error' }, }), + { + name: 'CLI scripts', + files: [ + 'bin/**/*.{js,ts,mjs,mts}', + 'repo-metadata/lib/update.ts', + 'repo-metadata/lib/package-updater.ts', + ], + languageOptions: { + parser: tslint.parser, + ecmaVersion: 'latest', + sourceType: 'module', + parserOptions: { + projectService: true, + tsconfigRootDir: WORKSPACE_ROOT, + }, + }, + plugins: { + '@typescript-eslint': tslint.plugin, + }, + rules: { + 'n/no-process-exit': 'off', + }, + }, jsons ); diff --git a/package.json b/package.json index 390f78402..564ce3c76 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "repo:lint:pub": "turbo run test:publint", "repo:lint:types": "turbo run //#test:types", "repo:prepack": "turbo run prepack", - "repo:update:conventions": "pnpm meta-updater", + "repo:update:conventions": "node --experimental-strip-types --no-warnings ./repo-metadata/lib/package-updater.ts", "repo:update:metadata": "node --experimental-strip-types --no-warnings ./repo-metadata/lib/update.ts", "smoke:setup": "node --disable-warning=ExperimentalWarning --experimental-strip-types ./smoke-tests/node/setup.ts", "start": "vite", @@ -61,8 +61,6 @@ "@glimmer-workspace/integration-tests": "workspace:*", "@glimmer-workspace/repo-metadata": "workspace:*", "@glimmer/env": "0.1.7", - "@pnpm/meta-updater": "^2.0.3", - "@pnpm/workspace.find-packages": "^1000.0.10", "@rollup/plugin-sucrase": "^5.0.2", "@rollup/plugin-terser": "^0.4.4", "@tsconfig/strictest": "^2.0.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d5d6f111f..4f395f7eb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -65,12 +65,6 @@ importers: '@glimmer/env': specifier: 0.1.7 version: 0.1.7 - '@pnpm/meta-updater': - specifier: ^2.0.3 - version: 2.0.3 - '@pnpm/workspace.find-packages': - specifier: ^1000.0.10 - version: 1000.0.10(@pnpm/logger@1000.0.0) '@rollup/plugin-sucrase': specifier: ^5.0.2 version: 5.0.2(rollup@4.34.8) @@ -273,58 +267,6 @@ importers: specifier: ^8.3.2 version: 8.3.2 - .meta-updater: - dependencies: - '@pnpm/find-workspace-dir': - specifier: ^1000.0.2 - version: 1000.0.2 - '@pnpm/meta-updater': - specifier: ^2.0.3 - version: 2.0.3 - '@pnpm/read-package-json': - specifier: ^1000.0.3 - version: 1000.0.3 - globby: - specifier: ^14.1.0 - version: 14.1.0 - load-json-file: - specifier: ^7.0.1 - version: 7.0.1 - minimatch: - specifier: ^10.0.1 - version: 10.0.1 - ramda: - specifier: ^0.30.1 - version: 0.30.1 - write-json-file: - specifier: ^6.0.0 - version: 6.0.0 - zx: - specifier: ^8.3.2 - version: 8.3.2 - devDependencies: - '@glimmer-workspace/env': - specifier: workspace:* - version: link:../packages/@glimmer-workspace/env - '@glimmer-workspace/repo-metadata': - specifier: workspace:* - version: link:../repo-metadata - '@pnpm/types': - specifier: ^1000.1.1 - version: 1000.1.1 - '@pnpm/workspace.find-packages': - specifier: ^1000.0.10 - version: 1000.0.10(@pnpm/logger@5.2.0) - '@types/node': - specifier: ^22.13.4 - version: 22.13.4 - '@types/ramda': - specifier: ^0.30.2 - version: 0.30.2 - type-fest: - specifier: ^4.35.0 - version: 4.35.0 - bin: dependencies: '@glimmer-workspace/repo-metadata': @@ -1687,19 +1629,37 @@ importers: chalk: specifier: ^5.4.1 version: 5.4.1 + deepmerge: + specifier: ^4.3.1 + version: 4.3.1 execa: specifier: ^9.5.2 version: 9.5.2 + fs-extra: + specifier: ^11.2.0 + version: 11.3.0 + globby: + specifier: ^14.1.0 + version: 14.1.0 + handlebars: + specifier: ^4.7.8 + version: 4.7.8 + read-pkg: + specifier: ^9.0.1 + version: 9.0.1 + write-pkg: + specifier: ^7.0.0 + version: 7.0.0 yaml: specifier: ^2.7.0 version: 2.7.0 devDependencies: - '@pnpm/types': - specifier: ^1000.1.1 - version: 1000.1.1 - '@pnpm/workspace.find-packages': - specifier: ^1000.0.10 - version: 1000.0.10(@pnpm/logger@1000.0.0) + '@types/fs-extra': + specifier: ^11.0.4 + version: 11.0.4 + '@types/handlebars': + specifier: ^4.1.0 + version: 4.1.0 '@types/node': specifier: ^22.13.4 version: 22.13.4 @@ -2991,34 +2951,18 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@pnpm/catalogs.config@0.1.1': - resolution: {integrity: sha512-9djTcIYTeK3JpqB1EO57Bbd7hJyMhvYXCGzfMqypWgpJlpjKSgta6XrmcmqN+/NRhLO/l3AbF5hvfnXApYTq7Q==} - engines: {node: '>=18.12'} - '@pnpm/catalogs.config@1000.0.2': resolution: {integrity: sha512-2GCYZwxmgw6w0bpB71VbbXapgIcSSFOF9vnS+YLyTdy8JaIYoag2XkhXP1cMu24THPRXeo/zKTyziEsqgr1u8w==} engines: {node: '>=18.12'} - '@pnpm/catalogs.protocol-parser@0.1.0': - resolution: {integrity: sha512-T3WvT+IBHsoDwv8RBQo3b+SBnXTQMpHZ1Yo7tJWcImBzrkuc4eP7KYB/yGP240PNgyrvCTrnuImRX9MNZD5flg==} - engines: {node: '>=18.12'} - '@pnpm/catalogs.protocol-parser@1000.0.0': resolution: {integrity: sha512-8eC25RAiu8BTaEseQmbo5xemlSwl06pMsUVORiYGX7JZEDb0UQVXOnbqFFJMPe/dyO8uwGXnDb350nauMzaraA==} engines: {node: '>=18.12'} - '@pnpm/catalogs.resolver@0.1.1': - resolution: {integrity: sha512-xg7dOTLEcD8d5AcZMRYWrkSkQsl5lElCxdkeQpCEg6964H9oG71gU6gBJeJiNcaqY3RF8bWLo58ArvYWruNyrQ==} - engines: {node: '>=18.12'} - '@pnpm/catalogs.resolver@1000.0.2': resolution: {integrity: sha512-5xp3InFRgl6YzovSYoKs0NTalcVKRj4KkD/d0zIBsKp2cae0G/t2ZZVq3J5rS1Ytf4qkv4oe5SZWpd1oV7Hkew==} engines: {node: '>=18.12'} - '@pnpm/catalogs.types@0.1.0': - resolution: {integrity: sha512-i52GQCj77GqebPBmmxxTcBRYch8eIdXGC+1REkv//272YNMt5bv5Okq0DvtE8A8RkPurGxFdYVXuqqrTdgBZEw==} - engines: {node: '>=18.12'} - '@pnpm/catalogs.types@1000.0.0': resolution: {integrity: sha512-xRf72lk7xHNvbenA4sp4Of/90QDdRW0CRYT+V+EbqpUXu1xsXtedHai34cTU6VGe7C1hUukxxE9eYTtIpYrx5g==} engines: {node: '>=18.12'} @@ -3027,22 +2971,12 @@ packages: resolution: {integrity: sha512-zNLog8D3vG9O0waUH5Rkzo3xow/LBPoD2VW7uZ+JLauEE4oVIS59EonrR08+GVt/lAVJ3y1F8wBxKw1c/pcU5A==} engines: {node: '>=18.12'} - '@pnpm/cli-meta@6.2.2': - resolution: {integrity: sha512-0U0F2/ycStOJcO62/Ut7cjTtrioSB2luj3O/ozvs2THJsMlxKBcUYUeD4KMUVkcQoe5f7BKWxcYyBkYGPD8isQ==} - engines: {node: '>=18.12'} - '@pnpm/cli-utils@1000.0.10': resolution: {integrity: sha512-iCcn7eGlKk6/oJPr1yatF5HBdrR16cdXOodrNUVWoZ8G43Y6gDR0wOw8kHs4+y3K8sxAMo4rFW5EDcMbixVO/A==} engines: {node: '>=18.12'} peerDependencies: '@pnpm/logger': '>=5.1.0 <1001.0.0' - '@pnpm/cli-utils@4.0.9': - resolution: {integrity: sha512-ygbodtgLnWN5kUWcaHXS5/ZQqYmN47hiazxYxd6WsZB4XMQZlCgSlBS8p92yoj/wjbCr8OTjAV8Cgnu9f/MBVw==} - engines: {node: '>=18.12'} - peerDependencies: - '@pnpm/logger': ^5.1.0 - '@pnpm/config.env-replace@1.1.0': resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} engines: {node: '>=12.22.0'} @@ -3055,46 +2989,20 @@ packages: resolution: {integrity: sha512-eFu2+c91XW8+ql7yFfx9Xr7w2Z+uDdKpYpdGpP8kAA3NdZnZ1l18HLwrAdD3GoY1TWyoxI7b9uVcXEASy3r6/A==} engines: {node: '>=18.12'} - '@pnpm/config@21.8.6': - resolution: {integrity: sha512-IuZPHRkW136FrNfrdwTkw2wzekxMHDnhC/9sjkSz4HrCez2zfIOtDr0dqkkpAfCtruoPim9hi1YovMkhue6Mzg==} - engines: {node: '>=18.12'} - - '@pnpm/constants@10.0.0': - resolution: {integrity: sha512-dxIXcW1F1dxIGfye2JXE7Q8WVwYB0axVzdBOkvE1WKIVR4xjB8e6k/Dkjo7DpbyfW5Vu2k21p6dyM32YLSAWoQ==} - engines: {node: '>=18.12'} - '@pnpm/constants@1001.1.0': resolution: {integrity: sha512-xb9dfSGi1qfUKY3r4Zy9JdC9+ZeaDxwfE7HrrGIEsBVY1hvIn6ntbR7A97z3nk44yX7vwbINNf9sizTp0WEtEw==} engines: {node: '>=18.12'} - '@pnpm/constants@9.0.0': - resolution: {integrity: sha512-cyZ12A7j1BzeQ9nr5HBdlSLxN1VWnCG/1xjdgDUL/WDlgmVa3k6TI2CktTHjR5w/rWbKudpIaMAmJJk9w+cTRQ==} - engines: {node: '>=18.12'} - - '@pnpm/core-loggers@10.0.7': - resolution: {integrity: sha512-evM0PRk8Wz8pUQ+kSDgepLEA2Pm1jYMSiy7grjTiCx+8y89K8lMaycAemZk9BfZTr0m+/rBlwUZliDIEKWuisA==} - engines: {node: '>=18.12'} - peerDependencies: - '@pnpm/logger': ^5.1.0 - '@pnpm/core-loggers@1000.1.2': resolution: {integrity: sha512-jOxjLqoC8mSX+vAj9JragTeqbZBWKswb/KX2MKKv+v1hKhyNqDPtNwJFBA1xnmNnuJnJ0fuFYUDV6tivktCFxA==} engines: {node: '>=18.12'} peerDependencies: '@pnpm/logger': '>=5.1.0 <1001.0.0' - '@pnpm/crypto.base32-hash@3.0.1': - resolution: {integrity: sha512-DM4RR/tvB7tMb2FekL0Q97A5PCXNyEC+6ht8SaufAUFSJNxeozqHw9PHTZR03mzjziPzNQLOld0pNINBX3srtw==} - engines: {node: '>=18.12'} - '@pnpm/crypto.hash@1000.0.0': resolution: {integrity: sha512-itIFxA9NUD27VSHob9bjqOH9ixfJaJJi5txqK+2GSQK2L+6I+zus0x/DxK6ezV7wWbPopBu2IM6vGV56fCTb/w==} engines: {node: '>=18.12'} - '@pnpm/crypto.polyfill@1.0.0': - resolution: {integrity: sha512-WbmsqqcUXKKaAF77ox1TQbpZiaQcr26myuMUu+WjUtoWYgD3VP6iKYEvSx35SZ6G2L316lu+pv+40A2GbWJc1w==} - engines: {node: '>=18.12'} - '@pnpm/crypto.polyfill@1000.0.0': resolution: {integrity: sha512-viLJ4o3syjKiF1HVgZSnwVZlImAwQubNzdH/Ccm6lS0PZzwh94diLniSC/vBqaPgRmFkr6kspm/2vPfXA4vLsQ==} engines: {node: '>=18.12'} @@ -3103,34 +3011,16 @@ packages: resolution: {integrity: sha512-zrCfk0HUQM8WhxCi3C0waGDKO0/gB4r3LgAUOQB4YTHPNr+m+iubznY0I5G776OqJfsPeLi4bByg4Y1wK29xlg==} engines: {node: '>=18.12'} - '@pnpm/dedupe.issues-renderer@2.0.0': - resolution: {integrity: sha512-UFKcCGUtL+2vbjXPCdw5H3Y/xj6iqVS86ChJSZj6GVODNR+gWO9j0HYMYVBFiQVOIm/7p86Rudyrm3cxmIEmWw==} - engines: {node: '>=18.12'} - '@pnpm/dedupe.types@1000.0.0': resolution: {integrity: sha512-+d8Q576BxRZgt03O+JZXK3C1xVJeAr4Hs35Y8SCl01KpQ0Z7xzfJWahpee7iFc5jELiwjCQg2sISTwtZZQFltA==} engines: {node: '>=18.12'} - '@pnpm/dedupe.types@2.0.0': - resolution: {integrity: sha512-iCv/dc5dyXN/egiIu89qQn6yuLsQhiFjn0t1N+UKf4jSdMp59WFHjGh04jSsbxbGG91s6K9SQghOBW8BbZjinw==} - engines: {node: '>=18.12'} - '@pnpm/default-reporter@1001.3.1': resolution: {integrity: sha512-4Zmm8QgY5vM0D2oZ1cEnYMf7VTwS4IX6Ei9ozYC9vx8k8QLHsKtUuErLzY+3Az9dQYJV++rzTpnHldGkGZQmlQ==} engines: {node: '>=18.12'} peerDependencies: '@pnpm/logger': '>=5.1.0 <1001.0.0' - '@pnpm/default-reporter@14.0.6': - resolution: {integrity: sha512-P3SR3K7DLpf5xGFLzxsIyy7SoJGlRsaBzBKIcBvsZIUe8OYR3f3qf5P5cLwieCPFK29Z7CAAcJCliZr9qFJflw==} - engines: {node: '>=18.12'} - peerDependencies: - '@pnpm/logger': ^5.1.0 - - '@pnpm/env.system-node-version@1.0.1': - resolution: {integrity: sha512-oRNq2uMkKye/8ujRAVbcW4qGL99E6bXP6BTjpN7o3IN1nBHuQ4uj/8g3PFJJMzw+80vH3QDMQUF41ABXJN0sRQ==} - engines: {node: '>=18.12'} - '@pnpm/env.system-node-version@1000.0.2': resolution: {integrity: sha512-648LcCKAV46yJjO74Em0HoOb5IVcXnVIgMC7EOiN5+kSKP855h1v+pg0dDuLO+W4xOV9/BmL6CJ/pscniTNWgw==} engines: {node: '>=18.12'} @@ -3139,66 +3029,26 @@ packages: resolution: {integrity: sha512-2SfE4FFL73rE1WVIoESbqlj4sLy5nWW4M/RVdHvCRJPjlQHa9MH7m7CVJM204lz6I+eHoB+E7rL3zmpJR5wYnQ==} engines: {node: '>=18.12'} - '@pnpm/error@6.0.2': - resolution: {integrity: sha512-3/wWJYjUyO9ToLaZpBASYIBg87C4DBZ8yfzrt0cSCTbRFDBUNdH0dzwfVKEqhR7A9tpRMyeoRIzPUVxWc+U+RQ==} - engines: {node: '>=18.12'} - - '@pnpm/error@6.0.3': - resolution: {integrity: sha512-OIYhG7HQh4zUFh2s8/6bp7glVRjNxms7bpzXVOLV7pyRa+rSYFmqJ8zDsBC64k58nuaxS85Ip+SCDjFxsFGeOg==} - engines: {node: '>=18.12'} - '@pnpm/fetcher-base@1000.0.3': resolution: {integrity: sha512-jnv/FP1K7k1QF4ralk5TwHALOA5DRP8LWSYJRc7qk5O8so48E9I0H46/AXQz4ZSd36TGY5xObt1UmoNIqdTOAA==} engines: {node: '>=18.12'} - '@pnpm/fetcher-base@16.0.7': - resolution: {integrity: sha512-rIbfSa0XB9x75LRJsrMknmngwaxVHSSU9FL6IC2MwIE6dcrC240Daue4kzhwE/T9Iyzph6Egi/SR0VGzyBzcVA==} - engines: {node: '>=18.12'} - - '@pnpm/find-workspace-dir@1000.0.2': - resolution: {integrity: sha512-zhPR22Hl4JcxCesMUt7VOsy6XdJkN7yttG1x+T7XcQF4dZeOh36PpduGRhxAKv8eI9xFIdu4mcQRGIZt6leO7g==} - engines: {node: '>=18.12'} - - '@pnpm/find-workspace-dir@7.0.3': - resolution: {integrity: sha512-eGjkyHSufkHyZ66WpygWnslcRePB0U1lJg1dF3rgWqTChpregYoDyNGDzK7l9Gk+CHVgGZZS5aWp7uKKVmAAEg==} - engines: {node: '>=18.12'} - '@pnpm/fs.find-packages@1000.0.5': resolution: {integrity: sha512-+OGmy5jFZsaZlG6fKYrtutGl4Wa28et/djVMzCn9o6vXRuIczYMWx3niWaaEECuBkf7AleOrR5/revSWKrfteQ==} engines: {node: '>=18.12'} - '@pnpm/fs.find-packages@4.0.5': - resolution: {integrity: sha512-k1OUvdId9p2SFYsZajxNF6W3BT0HTCq/jcUJ6Yseu+pI2hSnMxhufOpQkHXvdPNK4Bqw0UtbbYEjb8t+k85Hag==} - engines: {node: '>=18.12'} - '@pnpm/git-utils@1000.0.0': resolution: {integrity: sha512-W6isNTNgB26n6dZUgwCw6wly+uHQ2Zh5QiRKY1HHMbLAlsnZOxsSNGnuS9euKWHxDftvPfU7uR8XB5x95T5zPQ==} engines: {node: '>=18.12'} - '@pnpm/git-utils@2.0.0': - resolution: {integrity: sha512-k1rv4Zvno/5zJAqE/Mh9V0ehlm14NsYwpXTdaGMtyhkoHvlSckRfr23OIOIM7Q/TRX+LhqyJ2kep50SY2TsZ+g==} - engines: {node: '>=18.12'} - '@pnpm/graceful-fs@1000.0.0': resolution: {integrity: sha512-RvMEliAmcfd/4UoaYQ93DLQcFeqit78jhYmeJJVPxqFGmj0jEcb9Tu0eAOXr7tGP3eJHpgvPbTU4o6pZ1bJhxg==} engines: {node: '>=18.12'} - '@pnpm/graceful-fs@4.0.0': - resolution: {integrity: sha512-933nhV2Prp51522poxX6Chvb7kEW3U3kzVWoqDU1+icB+QE7z/2qQ8wYHsBt4jm0Uil/sF67t77ugOr8bR63kg==} - engines: {node: '>=18.12'} - '@pnpm/hooks.types@1001.0.2': resolution: {integrity: sha512-mbpq/K4xWNWdGmvCWBBOwYWj1yuZIpF28Y4TfX6rFrCK2RoMrhTaO92OPp1ap7QyCSNOrRHEeDwafPBj5l0/fw==} engines: {node: '>=18.12'} - '@pnpm/hooks.types@2.0.9': - resolution: {integrity: sha512-tiDFwNcqeFwXi+PIImZOaPxWc4fpS6msXTua+4vHQTit7xrRoUAJSq0cHzoAzRc1XaoHrlhl4D4nvCBU7rx4Aw==} - engines: {node: '>=18.12'} - - '@pnpm/lockfile.types@1.0.3': - resolution: {integrity: sha512-A7vUWktnhDkrIs+WmXm7AdffJVyVYJpQUEouya/DYhB+Y+tQ3BXjZ6CV0KybqLgI/8AZErgCJqFxA0GJH6QDjA==} - engines: {node: '>=18.12'} - '@pnpm/lockfile.types@1001.0.2': resolution: {integrity: sha512-drx2TRYPWriUQDvFHygJ/MuacQ7BRvGvptENNX2QXAsnHx8G5ZYnF21XDc6fCkPG6f83Rw1PcHOaUHObLZbEeA==} engines: {node: '>=18.12'} @@ -3207,31 +3057,14 @@ packages: resolution: {integrity: sha512-v5WO9L4pT7ZjZpf7a/a3H3Xj59JPHNMFJwRS7m/01VMWrKjs89CdVIE5e/N6DwuzP750j0iKozTw6UrCVEfQjA==} engines: {node: '>=18.12'} - '@pnpm/logger@5.2.0': - resolution: {integrity: sha512-dCdSs2wPCweMkRLdISAKBOKSWeq/9iS9aanWgjoUkFs06KN2o5XGFg53oCXg/KbZhF9AXS3vMHPwTebzCeAEsA==} - engines: {node: '>=18.12'} - '@pnpm/manifest-utils@1000.0.4': resolution: {integrity: sha512-rD6dcpSD1V7oQX9DGRG2tmfrWUuYN8FJb5ckqjFmebs3eR9whihA9/SGXZEhYotDeweuay2j4esdkGFGhoAx5A==} engines: {node: '>=18.12'} - '@pnpm/manifest-utils@6.0.9': - resolution: {integrity: sha512-UVWhZezZs5as/IHdX79b4j/e7rECuiazdigiutZw9O2OVLAaoKmNb4ThWxV1m45vRo41c5XS4Tannmns5IRRXQ==} - engines: {node: '>=18.12'} - '@pnpm/matcher@1000.0.0': resolution: {integrity: sha512-MKulLUYdMFvZ3UOFsqpqn7nrA3OnHs210jYmI8Wxyczh1nG7icY49sUtlpYsEEbBA1arJpAXDGyU4hx58dk9Lg==} engines: {node: '>=18.12'} - '@pnpm/matcher@6.0.0': - resolution: {integrity: sha512-c2diPZzejRYnL6b00Ko70TnOlbsqydUOvAjOZ7THTs0ptXG/AARcwNp9YO5EXFq775TTmsSUBo99qisYF1ogNA==} - engines: {node: '>=18.12'} - - '@pnpm/meta-updater@2.0.3': - resolution: {integrity: sha512-wVQLcAjcg5SuMpWY2KhgjfdijlvB2U3L7PajmUy6BVCS6n5yEFRkEGt1PQ/8La1bZeoPRIPUB4P5tjb3Nh3ZQA==} - engines: {node: '>=18.12.0'} - hasBin: true - '@pnpm/network.ca-file@1.0.2': resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} engines: {node: '>=12.22.0'} @@ -3250,32 +3083,14 @@ packages: peerDependencies: '@pnpm/logger': '>=5.1.0 <1001.0.0' - '@pnpm/package-is-installable@9.0.12': - resolution: {integrity: sha512-P3yl07RP1R47bN0nnT8QPHRnXOzcfpZkO1rMHx6XKGArBj2tNwfPxHW7Ij2cZGgYZNSGebZt45uFz+GVXvPSYQ==} - engines: {node: '>=18.12'} - peerDependencies: - '@pnpm/logger': ^5.1.0 - '@pnpm/parse-overrides@1000.0.2': resolution: {integrity: sha512-NII/zHEDIqtSNkDS39TD0r6ukKdZaQPwn6EjDEHYFacgbHN2d3i261paQvm0Pm0oX4svV+5x5YWHUTIbQJItDg==} engines: {node: '>=18.12'} - '@pnpm/parse-overrides@5.1.1': - resolution: {integrity: sha512-r5rYru63Gm33Q4qx3pbXOUnjE7IjJRQ2NJT6QGJpKe2PaqArFw3WGprZIGzApXXERRm88Lux6ofQKet28Gt1pQ==} - engines: {node: '>=18.12'} - '@pnpm/parse-wanted-dependency@1000.0.0': resolution: {integrity: sha512-SKK9m7leIQ0u6S+/LXREF0wTrFnyKiirLza6Dt0l7CL9pZdZtuI3mMvz6gNBFnIjTKJPwacdqRywT3bfK8W+FQ==} engines: {node: '>=18.12'} - '@pnpm/parse-wanted-dependency@6.0.0': - resolution: {integrity: sha512-01hKf1qHKREZDOwa5wRXk01P+xBGOeZf/idg17si8ji7UWpdWEQkrUVmGfv3sT04XoiwIb7kaRiKPQT7ooB4fA==} - engines: {node: '>=18.12'} - - '@pnpm/patching.types@1.0.0': - resolution: {integrity: sha512-juCdQCC1USqLcOhVPl1tYReoTO9YH4fTullMnFXXcmpsDM7Dkn3tzuOQKC3oPoJ2ozv+0EeWWMtMGqn2+IM3pQ==} - engines: {node: '>=18.12'} - '@pnpm/patching.types@1000.0.0': resolution: {integrity: sha512-IzNrirYIcquD0tRGKkzj8q5eKh0zOVDL6rOu/sQSrlF6qWTu8YaWCI5LQoZPa1B5IGQTCJwhcoZlnGBHZyEXAg==} engines: {node: '>=18.12'} @@ -3286,71 +3101,33 @@ packages: peerDependencies: '@pnpm/logger': '>=5.1.0 <1001.0.0' - '@pnpm/pnpmfile@6.0.13': - resolution: {integrity: sha512-kDpybXK94Hq1lx+75PUsPqHVRKID4HDEnwcofpKGg6aCSs2Gb482UnFes3cSE+BVCYm2bVK5najSkiZIaRV71g==} - engines: {node: '>=18.12'} - peerDependencies: - '@pnpm/logger': ^5.1.0 - '@pnpm/ramda@0.28.1': resolution: {integrity: sha512-zcAG+lvU0fMziNeGXpPyCyCJYp5ZVrPElEE4t14jAmViaihohocZ+dDkcRIyAomox8pQsuZnv1EyHR+pOhmUWw==} - '@pnpm/read-package-json@1000.0.3': - resolution: {integrity: sha512-yEdYl5GJox8RQNovwa+rQcXUJ5xjTQ99gGNqu07uDRAMsAS9cPrMSuYx4IXa9oZ7/gqGnAZuzYTPTtKXbXHBeA==} - engines: {node: '>=18.12'} - '@pnpm/read-project-manifest@1000.0.5': resolution: {integrity: sha512-DSnPRfQ2PjcICaGbmUWoC7W28x9pssVHkQIGafd62ljF4AMWhfWyZqlnZQOmiUBHoFDtYYkEXyC6drZ2Pko6lw==} engines: {node: '>=18.12'} - '@pnpm/read-project-manifest@6.0.9': - resolution: {integrity: sha512-baFgIFtnGCGcWYzwDmGbRSPoolmC6l47uMXuJBRgmTVDDI/x9qJFZ8hFBugVVz4ALbPxA8ajS618WZ+gLla4/A==} - engines: {node: '>=18.12'} - '@pnpm/render-peer-issues@1000.0.4': resolution: {integrity: sha512-4TpIH4KRwi/tTkJQaU3/2A8/um50hdkHGjPzukdKjU837H/ZfZ0ARQQOPYR0axcuCHUov4l5gqQJ6q3Kmb26gQ==} engines: {node: '>=18.12'} - '@pnpm/render-peer-issues@5.0.10': - resolution: {integrity: sha512-+w/ZSaCEOToZtQXniZoQnxwjgs6bL8R/8S1UOl6jnXrPr70ZtgAORfZle/vXVdbqef3T63ZiX9F9uGOMCNTghA==} - engines: {node: '>=18.12'} - '@pnpm/resolver-base@1000.1.2': resolution: {integrity: sha512-kU8vG7Tt18nIwzIpu0oWejdzg5uFPKSh6mPN/wvVNQZO1T3zcQtgILs28fY8u7ONZPHKV4lcbbEFI/KDiGewFg==} engines: {node: '>=18.12'} - '@pnpm/resolver-base@13.0.4': - resolution: {integrity: sha512-d6GtsaXDN1VmVdeB6ohrhwGwQfvYpEX/XkBZyRT0Hp772WabWVfaulvicwdh/8o7Rpzy7IV/2hKnDpodUY00lw==} - engines: {node: '>=18.12'} - '@pnpm/store-controller-types@1001.0.1': resolution: {integrity: sha512-J0RGzZKgabxTcEQigs3lTiC4qtsJ6wM7Vtcr4l5hqWfMkDuHNoWI4n3bB/VtzMQ33WPldFpWnYFNJGLNJjOHbA==} engines: {node: '>=18.12'} - '@pnpm/store-controller-types@18.1.6': - resolution: {integrity: sha512-XmNJkoprEg4m8enIJWF0aZHTH+vodl040z8V8Tww3ednxwcbd+JI15O6VzQN+c9E3UJfUa5U8iaTpndLaOTDTQ==} - engines: {node: '>=18.12'} - '@pnpm/text.comments-parser@1000.0.0': resolution: {integrity: sha512-ivv/esrETOq9uMiKOC0ddVZ1BktEGsfsMQ9RWmrDpwPiqFSqWsIspnquxTBmm5GflC5N06fbqjGOpulZVYo3vQ==} engines: {node: '>=18.12'} - '@pnpm/text.comments-parser@3.0.0': - resolution: {integrity: sha512-BSGvYd59kPKVTUk1InekEp+TiPnJ8650/bQyiOUFSvqHi61YipcR+E4H2i3xTnk2e+GHdGbXvEtAZbQmyxb0/g==} - engines: {node: '>=18.12'} - '@pnpm/types@1000.1.1': resolution: {integrity: sha512-5zrv7B+4mW/6iiYS/BrFZWbMqLHjKmaBrMcw+F8LcuMQ7p4SQX4ANoycpr1VIQpn4+xQ0ckyuadfxBttpzicbg==} engines: {node: '>=18.12'} - '@pnpm/types@11.1.0': - resolution: {integrity: sha512-wnlOhu7hjv9/qsf2cbK0YqpaV9c4LS69Utxd+r8hq/GWhyrOHcM1QOlfQb0Mzci0q4DDgB8VXT4dhBnEBL4c5g==} - engines: {node: '>=18.12'} - - '@pnpm/types@12.2.0': - resolution: {integrity: sha512-5RtwWhX39j89/Tmyv2QSlpiNjErA357T/8r1Dkg+2lD3P7RuS7Xi2tChvmOC3VlezEFNcWnEGCOeKoGRkDuqFA==} - engines: {node: '>=18.12'} - '@pnpm/util.lex-comparator@3.0.0': resolution: {integrity: sha512-ead+l3IiuVXwKDf/QJPX6G93cwhXki3yOVEA/VdAO7AhZ5vUuSBxHe6gQKEbB0QacJ4H5VsYxeM1xUgwjjOO/Q==} engines: {node: '>=18.12'} @@ -3366,32 +3143,14 @@ packages: peerDependencies: '@pnpm/logger': '>=5.1.0 <1001.0.0' - '@pnpm/workspace.find-packages@4.0.14': - resolution: {integrity: sha512-y2pz6tUEFeiQ/Y9lTxswGlMbnHDiVaUq99gxC4vp0iZ4h+QnqpeN5yrUbQ4Iqkbzzm0gV4/PsePvGHXfWhzqUg==} - engines: {node: '>=18.12'} - peerDependencies: - '@pnpm/logger': ^5.1.0 - '@pnpm/workspace.read-manifest@1000.0.2': resolution: {integrity: sha512-MKWL07/ZHmvOZG8UzbIBMib4EiYi8+rXpk49a8ditR2E/RsIj3p0ICKG9S2nFfIjeJCEOtxO6HDXXQIn4iYyiw==} engines: {node: '>=18.12'} - '@pnpm/workspace.read-manifest@2.2.1': - resolution: {integrity: sha512-HdS8Q0nhOO5kBqDYbUFFRv6Zp2TMlaf7Zne8nmrp7xL3k2gi2UU16kmmV+cY5dmINsKslulHDHJIC59J7I+xZg==} - engines: {node: '>=18.12'} - - '@pnpm/workspace.read-manifest@2.2.2': - resolution: {integrity: sha512-ryiFUKQfu5sYAtX/jsYRHsTHoB6p6rNBZQkXODlmMczcGeIE78cuz1xf5+xS6Dq2CayiqImuSmCiWbT5uT90Nw==} - engines: {node: '>=18.12'} - '@pnpm/write-project-manifest@1000.0.2': resolution: {integrity: sha512-vIwllRvCfSlaIlbE7GJwDStiwigisYI4IstouP5a1Th8nP+QutJZeqPRNCQWjaWn4XTCs0kcPWBg2sOA2D8+Mw==} engines: {node: '>=18.12'} - '@pnpm/write-project-manifest@6.0.7': - resolution: {integrity: sha512-UbY9aXp39wVffFX4FZ35NwF9pnl+ccq5i1yaBKamNB1kC8dU7oB/FgFrCva5cC6ox1y5ynze2SB8fj7uF7+kCw==} - engines: {node: '>=18.12'} - '@publint/pack@0.1.1': resolution: {integrity: sha512-TvCl79Y8v18ZhFGd5mjO1kYPovSBq3+4LVCi5Nfl1JI8fS8i8kXbgQFGwBJRXczim8GlW8c2LMBKTtExYXOy/A==} engines: {node: '>=18'} @@ -3848,6 +3607,10 @@ packages: '@types/glob@8.1.0': resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==} + '@types/handlebars@4.1.0': + resolution: {integrity: sha512-gq9YweFKNNB1uFK71eRqsd4niVkXrxHugqWFQkeLRJvGjnxsLr16bYtcsG4tOFwmYi0Bax+wCkbf1reUfdl4kA==} + deprecated: This is a stub types definition. handlebars provides its own type definitions, so you do not need this installed. + '@types/http-errors@2.0.4': resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} @@ -3896,9 +3659,6 @@ packages: '@types/qunit@2.19.12': resolution: {integrity: sha512-II+C1wgzUia0g+tGAH+PBb4XiTm8/C/i6sN23r21NNskBYOYrv+qnW0tFQ/IxZzKVwrK4CTglf8YO3poJUclQA==} - '@types/ramda@0.30.2': - resolution: {integrity: sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA==} - '@types/range-parser@1.2.7': resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} @@ -4689,10 +4449,6 @@ packages: resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} engines: {node: '>=8'} - camelcase-keys@8.0.2: - resolution: {integrity: sha512-qMKdlOfsjlezMqxkUGGMaWWs17i2HoL15tM+wtx8ld4nLrUwU58TFdvyGOz/piNP842KeO8yXvggVQSdQ828NA==} - engines: {node: '>=14.16'} - camelcase@5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} @@ -4701,10 +4457,6 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - camelcase@7.0.1: - resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} - engines: {node: '>=14.16'} - camelcase@8.0.0: resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} engines: {node: '>=16'} @@ -5427,10 +5179,6 @@ packages: resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} engines: {node: '>=10'} - decamelize@6.0.0: - resolution: {integrity: sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - decode-uri-component@0.2.2: resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} engines: {node: '>=0.10'} @@ -5450,6 +5198,10 @@ packages: deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + deepmerge-ts@5.1.0: + resolution: {integrity: sha512-eS8dRJOckyo9maw9Tu5O5RUi/4inFLrnoLkBe3cPfDMx3WZioXtmOew4TXQaxq7Rhl4xjDtR7c6x8nNTxOvbFw==} + engines: {node: '>=16.0.0'} + deepmerge@4.3.1: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} @@ -6687,14 +6439,14 @@ packages: resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} engines: {node: '>=10'} - hosted-git-info@5.2.1: - resolution: {integrity: sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - hosted-git-info@6.1.3: resolution: {integrity: sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hosted-git-info@7.0.2: + resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} + engines: {node: ^16.14.0 || >=18.0.0} + hosted-git-info@8.0.2: resolution: {integrity: sha512-sYKnA7eGln5ov8T8gnYlkSOxFJvywzEx9BueN6xo/GKO8PGiI6uK6xx+DIGe45T3bdVjLAQDQW1aicT8z8JwQg==} engines: {node: ^18.17.0 || >=20.5.0} @@ -6832,9 +6584,9 @@ packages: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} - indent-string@5.0.0: - resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} - engines: {node: '>=12'} + index-to-position@1.1.0: + resolution: {integrity: sha512-XPdx9Dq4t9Qk1mTMbWONJqU7boCoumEH7fRET37HX5+khDUl3J2W6PdALxhILYlIYx2amlwYcRPp28p0tSiojg==} + engines: {node: '>=18'} individual@3.0.0: resolution: {integrity: sha512-rUY5vtT748NMRbEMrTNiFfy29BgGZwGXUi2NFUVMWQrogSLzlJvQV9eeMWi+g1aVaQ53tpyLAQtd5x/JH0Nh1g==} @@ -7288,6 +7040,10 @@ packages: json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + json-parse-even-better-errors@3.0.2: + resolution: {integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + json-parse-even-better-errors@4.0.0: resolution: {integrity: sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA==} engines: {node: ^18.17.0 || >=20.5.0} @@ -7398,6 +7154,10 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + lines-and-columns@2.0.4: + resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + linkify-it@4.0.1: resolution: {integrity: sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==} @@ -7430,10 +7190,6 @@ packages: resolution: {integrity: sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==} engines: {node: '>=8'} - load-json-file@7.0.1: - resolution: {integrity: sha512-Gnxj3ev3mB5TkVBGad0JM6dmLiQL+o0t23JPBZ9sd+yvSLk05mFoqKBw5N8gbbkU4TNXyqCgIrl/VM17OgUIgQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - load-tsconfig@0.2.5: resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -7709,10 +7465,6 @@ packages: resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} engines: {node: '>= 0.10.0'} - meow@11.0.0: - resolution: {integrity: sha512-Cl0yeeIrko6d94KpUo1M+0X1sB14ikoaqlIGuTH1fW4I+E3+YljL54/hb/BWmVfrV9tTV9zU04+xjw08Fh2WkA==} - engines: {node: '>=14.16'} - meow@9.0.0: resolution: {integrity: sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==} engines: {node: '>=10'} @@ -8009,13 +7761,9 @@ packages: resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} engines: {node: '>=10'} - normalize-package-data@4.0.1: - resolution: {integrity: sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - normalize-package-data@5.0.0: - resolution: {integrity: sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + normalize-package-data@6.0.2: + resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} + engines: {node: ^16.14.0 || >=18.0.0} normalize-path@2.1.1: resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} @@ -8331,6 +8079,14 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} + parse-json@7.1.1: + resolution: {integrity: sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==} + engines: {node: '>=16'} + + parse-json@8.3.0: + resolution: {integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==} + engines: {node: '>=18'} + parse-ms@2.1.0: resolution: {integrity: sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==} engines: {node: '>=6'} @@ -8773,10 +8529,6 @@ packages: resolution: {integrity: sha512-+OZRqZYx1pjZ7H5Jis8bPFXkiT7lwA46UzAT4IjuzFVKwkJK+TwIx1TCqrqNCf8U3e5O12mEJEz1BXslkCLWfQ==} engines: {node: '>=10'} - print-diff@2.0.0: - resolution: {integrity: sha512-8dp/OpRSNveJHqOluVCcMyJWnE8LDLRrlvHFAoaxbM9GKUqOUs0aZhdzS34Em5YAiZC9lwwJJUlxScsunrktmw==} - engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} - printable-characters@1.0.42: resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==} @@ -8900,10 +8652,6 @@ packages: resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} engines: {node: '>=8'} - quick-lru@6.1.2: - resolution: {integrity: sha512-AAFUA5O1d83pIHEhJwWCq/RQcRukCkn/NSm2QsTEMle5f2hP0ChI2+3Xb051PZCkLryI/Ir1MVKviT2FIloaTQ==} - engines: {node: '>=12'} - quick-temp@0.1.8: resolution: {integrity: sha512-YsmIFfD9j2zaFwJkzI6eMG7y0lQP7YeWzgtFgNl38pGWZBSXJooZbOWwkcRot7Vt0Fg9L23pX0tqWU3VvLDsiA==} @@ -8918,9 +8666,6 @@ packages: radix3@1.1.2: resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} - ramda@0.30.1: - resolution: {integrity: sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==} - randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} @@ -8948,10 +8693,6 @@ packages: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} - read-pkg-up@9.1.0: - resolution: {integrity: sha512-vaMRR1AC1nrd5CQM0PhlRsO5oc2AAigqr7cCrZ/MW/Rsaflz4RlgzkpL4qoU/z1F6wrbd85iFv1OQj/y5RdGvg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - read-pkg@3.0.0: resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} engines: {node: '>=4'} @@ -8960,9 +8701,13 @@ packages: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} - read-pkg@7.1.0: - resolution: {integrity: sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg==} - engines: {node: '>=12.20'} + read-pkg@8.1.0: + resolution: {integrity: sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==} + engines: {node: '>=16'} + + read-pkg@9.0.1: + resolution: {integrity: sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==} + engines: {node: '>=18'} read-yaml-file@2.1.0: resolution: {integrity: sha512-UkRNRIwnhG+y7hpqnycCL/xbTk7+ia9VuVTC0S+zVbwd65DI9eUpRMfsWIGrCWxTU/mi+JW8cHQCrv+zfCbEPQ==} @@ -8997,10 +8742,6 @@ packages: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} - redent@4.0.0: - resolution: {integrity: sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==} - engines: {node: '>=12'} - redeyed@1.0.1: resolution: {integrity: sha512-8eEWsNCkV2rvwKLS1Cvp5agNjMhwRe2um+y32B2+3LqOzg4C9BBPs6vzAfV16Ivb8B9HPNKIqd8OrdBws8kNlQ==} @@ -9172,9 +8913,6 @@ packages: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rfc4648@1.5.4: - resolution: {integrity: sha512-rRg/6Lb+IGfJqO05HZkN50UtY7K/JhxJag1kP23+zyMfrvoB0B7RWv06MbOzoc79RgCdNTiUaNsTT1AJZ7Z+cg==} - rimraf@2.5.4: resolution: {integrity: sha512-Lw7SHMjssciQb/rRz7JyPIy9+bbUshEucPoLRvWqy09vC5zQixl8Uet+Zl+SROBB/JMWHJRdCk1qdxNWHNMvlQ==} deprecated: Rimraf versions prior to v4 are no longer supported @@ -9733,10 +9471,6 @@ packages: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} - strip-indent@4.0.0: - resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} - engines: {node: '>=12'} - strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} @@ -9987,10 +9721,6 @@ packages: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} - trim-newlines@4.1.1: - resolution: {integrity: sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==} - engines: {node: '>=12'} - ts-api-utils@1.4.3: resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} engines: {node: '>=16'} @@ -10020,9 +9750,6 @@ packages: '@swc/wasm': optional: true - ts-toolbelt@9.6.0: - resolution: {integrity: sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==} - tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} @@ -10110,10 +9837,6 @@ packages: resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} engines: {node: '>=10'} - type-fest@2.19.0: - resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} - engines: {node: '>=12.20'} - type-fest@3.13.1: resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} engines: {node: '>=14.16'} @@ -10122,6 +9845,10 @@ packages: resolution: {integrity: sha512-2/AwEFQDFEy30iOLjrvHDIH7e4HEWH+f1Yl1bI5XMqzuoCUqwYCdxachgsgv0og/JdVZUhbfjcJAoHj5L1753A==} engines: {node: '>=16'} + type-fest@4.41.0: + resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} + engines: {node: '>=16'} + type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} @@ -10148,9 +9875,6 @@ packages: typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - types-ramda@0.30.1: - resolution: {integrity: sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==} - typescript-eslint@8.24.1: resolution: {integrity: sha512-cw3rEdzDqBs70TIcb0Gdzbt6h11BSs2pS0yaq7hDWDBtCCSei1pPSUXE9qUdQ/Wm9NgFg8mKtMt1b8fTHIl1jA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -10546,9 +10270,10 @@ packages: resolution: {integrity: sha512-ddSsCLa4aQ3kI21BthINo4q905/wfhvQ3JL3774AcRjBaiQmfn5v4rw77jQ7T6CmAit9VOQO+FsLyPkwxoB1fw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - write-json-file@6.0.0: - resolution: {integrity: sha512-MNHcU3f9WxnNyR6MxsYSj64Jz0+dwIpisWKWq9gqLj/GwmA9INg3BZ3vt70/HB3GEwrnDQWr4RPrywnhNzmUFA==} - engines: {node: '>=18'} + write-pkg@7.0.0: + resolution: {integrity: sha512-wXBOrcEUstxZxfqy2hQO0O+c7wcwuVkZCCmBfaFtFssa5kcFqf7SQGYL6YtxKXt/O41z6reAPFJcumUyyiYnTQ==} + engines: {node: '>=16'} + deprecated: Renamed to write-package write-yaml-file@5.0.0: resolution: {integrity: sha512-FdNA4RyH1L43TlvGG8qOMIfcEczwA5ij+zLXUy3Z83CjxhLvcV7/Q/8pk22wnCgYw7PJhtK+7lhO+qqyT4NdvQ==} @@ -12046,30 +11771,17 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@pnpm/catalogs.config@0.1.1': - dependencies: - '@pnpm/error': 6.0.2 - '@pnpm/catalogs.config@1000.0.2': dependencies: '@pnpm/error': 1000.0.2 - '@pnpm/catalogs.protocol-parser@0.1.0': {} - '@pnpm/catalogs.protocol-parser@1000.0.0': {} - '@pnpm/catalogs.resolver@0.1.1': - dependencies: - '@pnpm/catalogs.protocol-parser': 0.1.0 - '@pnpm/error': 6.0.3 - '@pnpm/catalogs.resolver@1000.0.2': dependencies: '@pnpm/catalogs.protocol-parser': 1000.0.0 '@pnpm/error': 1000.0.2 - '@pnpm/catalogs.types@0.1.0': {} - '@pnpm/catalogs.types@1000.0.0': {} '@pnpm/cli-meta@1000.0.2': @@ -12077,11 +11789,6 @@ snapshots: '@pnpm/types': 1000.1.1 load-json-file: 6.2.0 - '@pnpm/cli-meta@6.2.2': - dependencies: - '@pnpm/types': 12.2.0 - load-json-file: 6.2.0 - '@pnpm/cli-utils@1000.0.10(@pnpm/logger@1000.0.0)': dependencies: '@pnpm/cli-meta': 1000.0.2 @@ -12096,34 +11803,6 @@ snapshots: chalk: 4.1.2 load-json-file: 6.2.0 - '@pnpm/cli-utils@1000.0.10(@pnpm/logger@5.2.0)': - dependencies: - '@pnpm/cli-meta': 1000.0.2 - '@pnpm/config': 1002.3.1(@pnpm/logger@5.2.0) - '@pnpm/default-reporter': 1001.3.1(@pnpm/logger@5.2.0) - '@pnpm/error': 1000.0.2 - '@pnpm/logger': 5.2.0 - '@pnpm/manifest-utils': 1000.0.4(@pnpm/logger@5.2.0) - '@pnpm/package-is-installable': 1000.0.4(@pnpm/logger@5.2.0) - '@pnpm/read-project-manifest': 1000.0.5 - '@pnpm/types': 1000.1.1 - chalk: 4.1.2 - load-json-file: 6.2.0 - - '@pnpm/cli-utils@4.0.9(@pnpm/logger@5.2.0)': - dependencies: - '@pnpm/cli-meta': 6.2.2 - '@pnpm/config': 21.8.6(@pnpm/logger@5.2.0) - '@pnpm/default-reporter': 14.0.6(@pnpm/logger@5.2.0) - '@pnpm/error': 6.0.2 - '@pnpm/logger': 5.2.0 - '@pnpm/manifest-utils': 6.0.9(@pnpm/logger@5.2.0) - '@pnpm/package-is-installable': 9.0.12(@pnpm/logger@5.2.0) - '@pnpm/read-project-manifest': 6.0.9 - '@pnpm/types': 12.2.0 - chalk: 4.1.2 - load-json-file: 6.2.0 - '@pnpm/config.env-replace@1.1.0': {} '@pnpm/config.env-replace@3.0.0': {} @@ -12158,98 +11837,17 @@ snapshots: transitivePeerDependencies: - '@pnpm/logger' - '@pnpm/config@1002.3.1(@pnpm/logger@5.2.0)': + '@pnpm/constants@1001.1.0': {} + + '@pnpm/core-loggers@1000.1.2(@pnpm/logger@1000.0.0)': dependencies: - '@pnpm/catalogs.config': 1000.0.2 - '@pnpm/catalogs.types': 1000.0.0 - '@pnpm/config.env-replace': 3.0.0 - '@pnpm/constants': 1001.1.0 - '@pnpm/error': 1000.0.2 - '@pnpm/git-utils': 1000.0.0 - '@pnpm/matcher': 1000.0.0 - '@pnpm/npm-conf': 3.0.0 - '@pnpm/pnpmfile': 1001.0.4(@pnpm/logger@5.2.0) - '@pnpm/read-project-manifest': 1000.0.5 + '@pnpm/logger': 1000.0.0 '@pnpm/types': 1000.1.1 - '@pnpm/workspace.read-manifest': 1000.0.2 - better-path-resolve: 1.0.0 - camelcase: 6.3.0 - camelcase-keys: 6.2.2 - can-write-to-dir: 1.1.1 - is-subdir: 1.2.0 - is-windows: 1.0.2 - normalize-registry-url: 2.0.0 - path-absolute: 1.0.1 - path-name: 1.0.0 - ramda: '@pnpm/ramda@0.28.1' - read-ini-file: 4.0.0 - realpath-missing: 1.1.0 - which: '@pnpm/which@3.0.1' - transitivePeerDependencies: - - '@pnpm/logger' - '@pnpm/config@21.8.6(@pnpm/logger@5.2.0)': - dependencies: - '@pnpm/catalogs.config': 0.1.1 - '@pnpm/catalogs.types': 0.1.0 - '@pnpm/config.env-replace': 3.0.0 - '@pnpm/constants': 9.0.0 - '@pnpm/error': 6.0.2 - '@pnpm/git-utils': 2.0.0 - '@pnpm/matcher': 6.0.0 - '@pnpm/npm-conf': 2.3.1 - '@pnpm/pnpmfile': 6.0.13(@pnpm/logger@5.2.0) - '@pnpm/read-project-manifest': 6.0.9 - '@pnpm/types': 12.2.0 - '@pnpm/workspace.read-manifest': 2.2.1 - better-path-resolve: 1.0.0 - camelcase: 6.3.0 - camelcase-keys: 6.2.2 - can-write-to-dir: 1.1.1 - is-subdir: 1.2.0 - is-windows: 1.0.2 - normalize-registry-url: 2.0.0 - path-absolute: 1.0.1 - path-name: 1.0.0 - ramda: '@pnpm/ramda@0.28.1' - read-ini-file: 4.0.0 - realpath-missing: 1.1.0 - which: '@pnpm/which@3.0.1' - transitivePeerDependencies: - - '@pnpm/logger' - - '@pnpm/constants@10.0.0': {} - - '@pnpm/constants@1001.1.0': {} - - '@pnpm/constants@9.0.0': {} - - '@pnpm/core-loggers@10.0.7(@pnpm/logger@5.2.0)': - dependencies: - '@pnpm/logger': 5.2.0 - '@pnpm/types': 12.2.0 - - '@pnpm/core-loggers@1000.1.2(@pnpm/logger@1000.0.0)': - dependencies: - '@pnpm/logger': 1000.0.0 - '@pnpm/types': 1000.1.1 - - '@pnpm/core-loggers@1000.1.2(@pnpm/logger@5.2.0)': - dependencies: - '@pnpm/logger': 5.2.0 - '@pnpm/types': 1000.1.1 - - '@pnpm/crypto.base32-hash@3.0.1': - dependencies: - '@pnpm/crypto.polyfill': 1.0.0 - rfc4648: 1.5.4 - - '@pnpm/crypto.hash@1000.0.0': + '@pnpm/crypto.hash@1000.0.0': dependencies: '@pnpm/crypto.polyfill': 1000.0.0 - '@pnpm/crypto.polyfill@1.0.0': {} - '@pnpm/crypto.polyfill@1000.0.0': {} '@pnpm/dedupe.issues-renderer@1000.0.1': @@ -12258,16 +11856,8 @@ snapshots: archy: 1.0.0 chalk: 4.1.2 - '@pnpm/dedupe.issues-renderer@2.0.0': - dependencies: - '@pnpm/dedupe.types': 2.0.0 - archy: 1.0.0 - chalk: 4.1.2 - '@pnpm/dedupe.types@1000.0.0': {} - '@pnpm/dedupe.types@2.0.0': {} - '@pnpm/default-reporter@1001.3.1(@pnpm/logger@1000.0.0)': dependencies: '@pnpm/cli-meta': 1000.0.2 @@ -12292,60 +11882,6 @@ snapshots: stacktracey: 2.1.8 string-length: 4.0.2 - '@pnpm/default-reporter@1001.3.1(@pnpm/logger@5.2.0)': - dependencies: - '@pnpm/cli-meta': 1000.0.2 - '@pnpm/config': 1002.3.1(@pnpm/logger@5.2.0) - '@pnpm/core-loggers': 1000.1.2(@pnpm/logger@5.2.0) - '@pnpm/dedupe.issues-renderer': 1000.0.1 - '@pnpm/dedupe.types': 1000.0.0 - '@pnpm/error': 1000.0.2 - '@pnpm/logger': 5.2.0 - '@pnpm/render-peer-issues': 1000.0.4 - '@pnpm/types': 1000.1.1 - ansi-diff: 1.2.0 - boxen: 5.1.2 - chalk: 4.1.2 - cli-truncate: 2.1.0 - normalize-path: 3.0.0 - pretty-bytes: 5.6.0 - pretty-ms: 7.0.1 - ramda: '@pnpm/ramda@0.28.1' - rxjs: 7.8.1 - semver: 7.7.1 - stacktracey: 2.1.8 - string-length: 4.0.2 - - '@pnpm/default-reporter@14.0.6(@pnpm/logger@5.2.0)': - dependencies: - '@pnpm/cli-meta': 6.2.2 - '@pnpm/config': 21.8.6(@pnpm/logger@5.2.0) - '@pnpm/core-loggers': 10.0.7(@pnpm/logger@5.2.0) - '@pnpm/dedupe.issues-renderer': 2.0.0 - '@pnpm/dedupe.types': 2.0.0 - '@pnpm/error': 6.0.2 - '@pnpm/logger': 5.2.0 - '@pnpm/render-peer-issues': 5.0.10 - '@pnpm/types': 12.2.0 - ansi-diff: 1.2.0 - boxen: 5.1.2 - chalk: 4.1.2 - cli-truncate: 2.1.0 - normalize-path: 3.0.0 - pretty-bytes: 5.6.0 - pretty-ms: 7.0.1 - ramda: '@pnpm/ramda@0.28.1' - rxjs: 7.8.1 - semver: 7.7.1 - stacktracey: 2.1.8 - string-length: 4.0.2 - - '@pnpm/env.system-node-version@1.0.1': - dependencies: - '@pnpm/cli-meta': 6.2.2 - execa: safe-execa@0.1.2 - mem: 8.1.1 - '@pnpm/env.system-node-version@1000.0.2': dependencies: '@pnpm/cli-meta': 1000.0.2 @@ -12356,36 +11892,12 @@ snapshots: dependencies: '@pnpm/constants': 1001.1.0 - '@pnpm/error@6.0.2': - dependencies: - '@pnpm/constants': 9.0.0 - - '@pnpm/error@6.0.3': - dependencies: - '@pnpm/constants': 10.0.0 - '@pnpm/fetcher-base@1000.0.3': dependencies: '@pnpm/resolver-base': 1000.1.2 '@pnpm/types': 1000.1.1 '@types/ssri': 7.1.5 - '@pnpm/fetcher-base@16.0.7': - dependencies: - '@pnpm/resolver-base': 13.0.4 - '@pnpm/types': 12.2.0 - '@types/ssri': 7.1.5 - - '@pnpm/find-workspace-dir@1000.0.2': - dependencies: - '@pnpm/error': 1000.0.2 - find-up: 5.0.0 - - '@pnpm/find-workspace-dir@7.0.3': - dependencies: - '@pnpm/error': 6.0.3 - find-up: 5.0.0 - '@pnpm/fs.find-packages@1000.0.5': dependencies: '@pnpm/read-project-manifest': 1000.0.5 @@ -12394,45 +11906,19 @@ snapshots: fast-glob: 3.3.3 p-filter: 2.1.0 - '@pnpm/fs.find-packages@4.0.5': - dependencies: - '@pnpm/read-project-manifest': 6.0.9 - '@pnpm/types': 12.2.0 - '@pnpm/util.lex-comparator': 3.0.0 - fast-glob: 3.3.3 - p-filter: 2.1.0 - '@pnpm/git-utils@1000.0.0': dependencies: execa: safe-execa@0.1.2 - '@pnpm/git-utils@2.0.0': - dependencies: - execa: safe-execa@0.1.2 - '@pnpm/graceful-fs@1000.0.0': dependencies: graceful-fs: 4.2.11 - '@pnpm/graceful-fs@4.0.0': - dependencies: - graceful-fs: 4.2.11 - '@pnpm/hooks.types@1001.0.2': dependencies: '@pnpm/lockfile.types': 1001.0.2 '@pnpm/types': 1000.1.1 - '@pnpm/hooks.types@2.0.9': - dependencies: - '@pnpm/lockfile.types': 1.0.3 - '@pnpm/types': 12.2.0 - - '@pnpm/lockfile.types@1.0.3': - dependencies: - '@pnpm/patching.types': 1.0.0 - '@pnpm/types': 12.2.0 - '@pnpm/lockfile.types@1001.0.2': dependencies: '@pnpm/patching.types': 1000.0.0 @@ -12443,11 +11929,6 @@ snapshots: bole: 5.0.17 ndjson: 2.0.0 - '@pnpm/logger@5.2.0': - dependencies: - bole: 5.0.17 - ndjson: 2.0.0 - '@pnpm/manifest-utils@1000.0.4(@pnpm/logger@1000.0.0)': dependencies: '@pnpm/core-loggers': 1000.1.2(@pnpm/logger@1000.0.0) @@ -12456,43 +11937,10 @@ snapshots: transitivePeerDependencies: - '@pnpm/logger' - '@pnpm/manifest-utils@1000.0.4(@pnpm/logger@5.2.0)': - dependencies: - '@pnpm/core-loggers': 1000.1.2(@pnpm/logger@5.2.0) - '@pnpm/error': 1000.0.2 - '@pnpm/types': 1000.1.1 - transitivePeerDependencies: - - '@pnpm/logger' - - '@pnpm/manifest-utils@6.0.9(@pnpm/logger@5.2.0)': - dependencies: - '@pnpm/core-loggers': 10.0.7(@pnpm/logger@5.2.0) - '@pnpm/error': 6.0.2 - '@pnpm/types': 12.2.0 - transitivePeerDependencies: - - '@pnpm/logger' - '@pnpm/matcher@1000.0.0': dependencies: escape-string-regexp: 4.0.0 - '@pnpm/matcher@6.0.0': - dependencies: - escape-string-regexp: 4.0.0 - - '@pnpm/meta-updater@2.0.3': - dependencies: - '@pnpm/find-workspace-dir': 7.0.3 - '@pnpm/logger': 5.2.0 - '@pnpm/types': 11.1.0 - '@pnpm/workspace.find-packages': 4.0.14(@pnpm/logger@5.2.0) - '@pnpm/workspace.read-manifest': 2.2.2 - load-json-file: 7.0.1 - meow: 11.0.0 - print-diff: 2.0.0 - ramda: 0.30.1 - write-json-file: 5.0.0 - '@pnpm/network.ca-file@1.0.2': dependencies: graceful-fs: 4.2.10 @@ -12522,32 +11970,6 @@ snapshots: mem: 8.1.1 semver: 7.7.1 - '@pnpm/package-is-installable@1000.0.4(@pnpm/logger@5.2.0)': - dependencies: - '@pnpm/cli-meta': 1000.0.2 - '@pnpm/core-loggers': 1000.1.2(@pnpm/logger@5.2.0) - '@pnpm/env.system-node-version': 1000.0.2 - '@pnpm/error': 1000.0.2 - '@pnpm/logger': 5.2.0 - '@pnpm/types': 1000.1.1 - detect-libc: 2.0.3 - execa: safe-execa@0.1.2 - mem: 8.1.1 - semver: 7.7.1 - - '@pnpm/package-is-installable@9.0.12(@pnpm/logger@5.2.0)': - dependencies: - '@pnpm/cli-meta': 6.2.2 - '@pnpm/core-loggers': 10.0.7(@pnpm/logger@5.2.0) - '@pnpm/env.system-node-version': 1.0.1 - '@pnpm/error': 6.0.2 - '@pnpm/logger': 5.2.0 - '@pnpm/types': 12.2.0 - detect-libc: 2.0.3 - execa: safe-execa@0.1.2 - mem: 8.1.1 - semver: 7.7.1 - '@pnpm/parse-overrides@1000.0.2': dependencies: '@pnpm/catalogs.resolver': 1000.0.2 @@ -12555,23 +11977,10 @@ snapshots: '@pnpm/error': 1000.0.2 '@pnpm/parse-wanted-dependency': 1000.0.0 - '@pnpm/parse-overrides@5.1.1': - dependencies: - '@pnpm/catalogs.resolver': 0.1.1 - '@pnpm/catalogs.types': 0.1.0 - '@pnpm/error': 6.0.2 - '@pnpm/parse-wanted-dependency': 6.0.0 - '@pnpm/parse-wanted-dependency@1000.0.0': dependencies: validate-npm-package-name: 5.0.0 - '@pnpm/parse-wanted-dependency@6.0.0': - dependencies: - validate-npm-package-name: 5.0.0 - - '@pnpm/patching.types@1.0.0': {} - '@pnpm/patching.types@1000.0.0': {} '@pnpm/pnpmfile@1001.0.4(@pnpm/logger@1000.0.0)': @@ -12587,41 +11996,8 @@ snapshots: chalk: 4.1.2 path-absolute: 1.0.1 - '@pnpm/pnpmfile@1001.0.4(@pnpm/logger@5.2.0)': - dependencies: - '@pnpm/core-loggers': 1000.1.2(@pnpm/logger@5.2.0) - '@pnpm/crypto.hash': 1000.0.0 - '@pnpm/error': 1000.0.2 - '@pnpm/hooks.types': 1001.0.2 - '@pnpm/lockfile.types': 1001.0.2 - '@pnpm/logger': 5.2.0 - '@pnpm/store-controller-types': 1001.0.1 - '@pnpm/types': 1000.1.1 - chalk: 4.1.2 - path-absolute: 1.0.1 - - '@pnpm/pnpmfile@6.0.13(@pnpm/logger@5.2.0)': - dependencies: - '@pnpm/core-loggers': 10.0.7(@pnpm/logger@5.2.0) - '@pnpm/crypto.base32-hash': 3.0.1 - '@pnpm/error': 6.0.2 - '@pnpm/hooks.types': 2.0.9 - '@pnpm/lockfile.types': 1.0.3 - '@pnpm/logger': 5.2.0 - '@pnpm/store-controller-types': 18.1.6 - '@pnpm/types': 12.2.0 - chalk: 4.1.2 - path-absolute: 1.0.1 - '@pnpm/ramda@0.28.1': {} - '@pnpm/read-package-json@1000.0.3': - dependencies: - '@pnpm/error': 1000.0.2 - '@pnpm/types': 1000.1.1 - load-json-file: 6.2.0 - normalize-package-data: 5.0.0 - '@pnpm/read-project-manifest@1000.0.5': dependencies: '@gwhitney/detect-indent': 7.0.1 @@ -12638,23 +12014,6 @@ snapshots: sort-keys: 4.2.0 strip-bom: 4.0.0 - '@pnpm/read-project-manifest@6.0.9': - dependencies: - '@gwhitney/detect-indent': 7.0.1 - '@pnpm/error': 6.0.2 - '@pnpm/graceful-fs': 4.0.0 - '@pnpm/text.comments-parser': 3.0.0 - '@pnpm/types': 12.2.0 - '@pnpm/write-project-manifest': 6.0.7 - fast-deep-equal: 3.1.3 - is-windows: 1.0.2 - json5: 2.2.3 - lodash.clonedeep: 4.5.0 - parse-json: 5.2.0 - read-yaml-file: 2.1.0 - sort-keys: 4.2.0 - strip-bom: 4.0.0 - '@pnpm/render-peer-issues@1000.0.4': dependencies: '@pnpm/error': 1000.0.2 @@ -12666,51 +12025,22 @@ snapshots: cli-columns: 4.0.0 semver: 7.7.1 - '@pnpm/render-peer-issues@5.0.10': - dependencies: - '@pnpm/error': 6.0.2 - '@pnpm/matcher': 6.0.0 - '@pnpm/parse-overrides': 5.1.1 - '@pnpm/types': 12.2.0 - archy: 1.0.0 - chalk: 4.1.2 - cli-columns: 4.0.0 - semver: 7.7.1 - '@pnpm/resolver-base@1000.1.2': dependencies: '@pnpm/types': 1000.1.1 - '@pnpm/resolver-base@13.0.4': - dependencies: - '@pnpm/types': 12.2.0 - '@pnpm/store-controller-types@1001.0.1': dependencies: '@pnpm/fetcher-base': 1000.0.3 '@pnpm/resolver-base': 1000.1.2 '@pnpm/types': 1000.1.1 - '@pnpm/store-controller-types@18.1.6': - dependencies: - '@pnpm/fetcher-base': 16.0.7 - '@pnpm/resolver-base': 13.0.4 - '@pnpm/types': 12.2.0 - '@pnpm/text.comments-parser@1000.0.0': dependencies: strip-comments-strings: 1.2.0 - '@pnpm/text.comments-parser@3.0.0': - dependencies: - strip-comments-strings: 1.2.0 - '@pnpm/types@1000.1.1': {} - '@pnpm/types@11.1.0': {} - - '@pnpm/types@12.2.0': {} - '@pnpm/util.lex-comparator@3.0.0': {} '@pnpm/which@3.0.1': @@ -12726,41 +12056,12 @@ snapshots: '@pnpm/types': 1000.1.1 '@pnpm/util.lex-comparator': 3.0.0 - '@pnpm/workspace.find-packages@1000.0.10(@pnpm/logger@5.2.0)': - dependencies: - '@pnpm/cli-utils': 1000.0.10(@pnpm/logger@5.2.0) - '@pnpm/constants': 1001.1.0 - '@pnpm/fs.find-packages': 1000.0.5 - '@pnpm/logger': 5.2.0 - '@pnpm/types': 1000.1.1 - '@pnpm/util.lex-comparator': 3.0.0 - - '@pnpm/workspace.find-packages@4.0.14(@pnpm/logger@5.2.0)': - dependencies: - '@pnpm/cli-utils': 4.0.9(@pnpm/logger@5.2.0) - '@pnpm/fs.find-packages': 4.0.5 - '@pnpm/logger': 5.2.0 - '@pnpm/types': 12.2.0 - '@pnpm/util.lex-comparator': 3.0.0 - '@pnpm/workspace.read-manifest@1000.0.2': dependencies: '@pnpm/constants': 1001.1.0 '@pnpm/error': 1000.0.2 read-yaml-file: 2.1.0 - '@pnpm/workspace.read-manifest@2.2.1': - dependencies: - '@pnpm/constants': 9.0.0 - '@pnpm/error': 6.0.2 - read-yaml-file: 2.1.0 - - '@pnpm/workspace.read-manifest@2.2.2': - dependencies: - '@pnpm/constants': 10.0.0 - '@pnpm/error': 6.0.3 - read-yaml-file: 2.1.0 - '@pnpm/write-project-manifest@1000.0.2': dependencies: '@pnpm/text.comments-parser': 1000.0.0 @@ -12769,14 +12070,6 @@ snapshots: write-file-atomic: 5.0.1 write-yaml-file: 5.0.0 - '@pnpm/write-project-manifest@6.0.7': - dependencies: - '@pnpm/text.comments-parser': 3.0.0 - '@pnpm/types': 12.2.0 - json5: 2.2.3 - write-file-atomic: 5.0.1 - write-yaml-file: 5.0.0 - '@publint/pack@0.1.1': {} '@puppeteer/browsers@2.6.1': @@ -13231,6 +12524,10 @@ snapshots: '@types/minimatch': 5.1.2 '@types/node': 22.13.4 + '@types/handlebars@4.1.0': + dependencies: + handlebars: 4.7.8 + '@types/http-errors@2.0.4': {} '@types/js-yaml@4.0.9': {} @@ -13269,10 +12566,6 @@ snapshots: '@types/qunit@2.19.12': {} - '@types/ramda@0.30.2': - dependencies: - types-ramda: 0.30.1 - '@types/range-parser@1.2.7': {} '@types/resolve@1.20.2': {} @@ -14446,19 +13739,10 @@ snapshots: map-obj: 4.3.0 quick-lru: 4.0.1 - camelcase-keys@8.0.2: - dependencies: - camelcase: 7.0.1 - map-obj: 4.3.0 - quick-lru: 6.1.2 - type-fest: 2.19.0 - camelcase@5.3.1: {} camelcase@6.3.0: {} - camelcase@7.0.1: {} - camelcase@8.0.0: {} can-symlink@1.0.0: @@ -15068,8 +14352,6 @@ snapshots: decamelize@4.0.0: {} - decamelize@6.0.0: {} - decode-uri-component@0.2.2: {} decompress-response@3.3.0: @@ -15082,6 +14364,8 @@ snapshots: deep-is@0.1.4: {} + deepmerge-ts@5.1.0: {} + deepmerge@4.3.1: {} default-browser-id@5.0.0: {} @@ -16914,13 +16198,13 @@ snapshots: dependencies: lru-cache: 6.0.0 - hosted-git-info@5.2.1: + hosted-git-info@6.1.3: dependencies: lru-cache: 7.18.3 - hosted-git-info@6.1.3: + hosted-git-info@7.0.2: dependencies: - lru-cache: 7.18.3 + lru-cache: 10.4.3 hosted-git-info@8.0.2: dependencies: @@ -17070,7 +16354,7 @@ snapshots: indent-string@4.0.0: {} - indent-string@5.0.0: {} + index-to-position@1.1.0: {} individual@3.0.0: {} @@ -17473,6 +16757,8 @@ snapshots: json-parse-even-better-errors@2.3.1: {} + json-parse-even-better-errors@3.0.2: {} + json-parse-even-better-errors@4.0.0: {} json-query@2.2.2: {} @@ -17601,6 +16887,8 @@ snapshots: lines-and-columns@1.2.4: {} + lines-and-columns@2.0.4: {} + linkify-it@4.0.1: dependencies: uc.micro: 1.0.6 @@ -17657,8 +16945,6 @@ snapshots: strip-bom: 4.0.0 type-fest: 0.6.0 - load-json-file@7.0.1: {} - load-tsconfig@0.2.5: {} loader-utils@3.3.1: {} @@ -17936,21 +17222,6 @@ snapshots: memorystream@0.3.1: {} - meow@11.0.0: - dependencies: - '@types/minimist': 1.2.5 - camelcase-keys: 8.0.2 - decamelize: 6.0.0 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 4.0.1 - read-pkg-up: 9.1.0 - redent: 4.0.0 - trim-newlines: 4.1.1 - type-fest: 3.13.1 - yargs-parser: 21.1.1 - meow@9.0.0: dependencies: '@types/minimist': 1.2.5 @@ -18272,17 +17543,9 @@ snapshots: semver: 7.7.1 validate-npm-package-license: 3.0.4 - normalize-package-data@4.0.1: + normalize-package-data@6.0.2: dependencies: - hosted-git-info: 5.2.1 - is-core-module: 2.16.1 - semver: 7.7.1 - validate-npm-package-license: 3.0.4 - - normalize-package-data@5.0.0: - dependencies: - hosted-git-info: 6.1.3 - is-core-module: 2.16.1 + hosted-git-info: 7.0.2 semver: 7.7.1 validate-npm-package-license: 3.0.4 @@ -18646,6 +17909,20 @@ snapshots: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 + parse-json@7.1.1: + dependencies: + '@babel/code-frame': 7.26.2 + error-ex: 1.3.2 + json-parse-even-better-errors: 3.0.2 + lines-and-columns: 2.0.4 + type-fest: 3.13.1 + + parse-json@8.3.0: + dependencies: + '@babel/code-frame': 7.26.2 + index-to-position: 1.1.0 + type-fest: 4.41.0 + parse-ms@2.1.0: {} parse-ms@4.0.0: {} @@ -19017,10 +18294,6 @@ snapshots: dependencies: babel-plugin-preval: 5.1.0 - print-diff@2.0.0: - dependencies: - diff: 5.2.0 - printable-characters@1.0.42: {} printf@0.6.1: {} @@ -19154,8 +18427,6 @@ snapshots: quick-lru@4.0.1: {} - quick-lru@6.1.2: {} - quick-temp@0.1.8: dependencies: mktemp: 0.4.0 @@ -19172,8 +18443,6 @@ snapshots: radix3@1.1.2: {} - ramda@0.30.1: {} - randombytes@2.1.0: dependencies: safe-buffer: 5.2.1 @@ -19210,12 +18479,6 @@ snapshots: read-pkg: 5.2.0 type-fest: 0.8.1 - read-pkg-up@9.1.0: - dependencies: - find-up: 6.3.0 - read-pkg: 7.1.0 - type-fest: 2.19.0 - read-pkg@3.0.0: dependencies: load-json-file: 4.0.0 @@ -19229,12 +18492,20 @@ snapshots: parse-json: 5.2.0 type-fest: 0.6.0 - read-pkg@7.1.0: + read-pkg@8.1.0: dependencies: '@types/normalize-package-data': 2.4.4 - normalize-package-data: 3.0.3 - parse-json: 5.2.0 - type-fest: 2.19.0 + normalize-package-data: 6.0.2 + parse-json: 7.1.1 + type-fest: 4.35.0 + + read-pkg@9.0.1: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 6.0.2 + parse-json: 8.3.0 + type-fest: 4.35.0 + unicorn-magic: 0.1.0 read-yaml-file@2.1.0: dependencies: @@ -19281,11 +18552,6 @@ snapshots: indent-string: 4.0.0 strip-indent: 3.0.0 - redent@4.0.0: - dependencies: - indent-string: 5.0.0 - strip-indent: 4.0.0 - redeyed@1.0.1: dependencies: esprima: 3.0.0 @@ -19476,8 +18742,6 @@ snapshots: reusify@1.0.4: {} - rfc4648@1.5.4: {} - rimraf@2.5.4: dependencies: glob: 7.2.3 @@ -20137,10 +19401,6 @@ snapshots: dependencies: min-indent: 1.0.1 - strip-indent@4.0.0: - dependencies: - min-indent: 1.0.1 - strip-json-comments@2.0.1: {} strip-json-comments@3.1.1: {} @@ -20609,8 +19869,6 @@ snapshots: trim-newlines@3.0.1: {} - trim-newlines@4.1.1: {} - ts-api-utils@1.4.3(typescript@5.7.3): dependencies: typescript: 5.7.3 @@ -20641,8 +19899,6 @@ snapshots: optionalDependencies: '@swc/core': 1.9.3 - ts-toolbelt@9.6.0: {} - tsconfig-paths@3.15.0: dependencies: '@types/json5': 0.0.29 @@ -20718,12 +19974,12 @@ snapshots: type-fest@1.4.0: {} - type-fest@2.19.0: {} - type-fest@3.13.1: {} type-fest@4.35.0: {} + type-fest@4.41.0: {} + type-is@1.6.18: dependencies: media-typer: 0.3.0 @@ -20768,10 +20024,6 @@ snapshots: dependencies: is-typedarray: 1.0.0 - types-ramda@0.30.1: - dependencies: - ts-toolbelt: 9.6.0 - typescript-eslint@8.24.1(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3): dependencies: '@typescript-eslint/eslint-plugin': 8.24.1(@typescript-eslint/parser@8.24.1(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3))(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) @@ -21192,12 +20444,13 @@ snapshots: sort-keys: 5.1.0 write-file-atomic: 3.0.3 - write-json-file@6.0.0: + write-pkg@7.0.0: dependencies: - detect-indent: 7.0.1 - is-plain-obj: 4.1.0 + deepmerge-ts: 5.1.0 + read-pkg: 8.1.0 sort-keys: 5.1.0 - write-file-atomic: 5.0.1 + type-fest: 4.35.0 + write-json-file: 5.0.0 write-yaml-file@5.0.0: dependencies: diff --git a/repo-metadata/lib/package-updater.ts b/repo-metadata/lib/package-updater.ts new file mode 100644 index 000000000..d3b8976a0 --- /dev/null +++ b/repo-metadata/lib/package-updater.ts @@ -0,0 +1,337 @@ +/* eslint-disable no-console */ +import { existsSync, readFileSync, writeFileSync } from 'node:fs'; +import { join } from 'node:path'; + +import chalk from 'chalk'; +import deepmerge from 'deepmerge'; +import { globby } from 'globby'; +import Handlebars from 'handlebars'; +import { readPackage } from 'read-pkg'; +import { writePackage } from 'write-pkg'; + +import type { PackageInfo } from './types.js'; + +import { getPackageInfo, WORKSPACE_ROOT } from '../index.js'; +import metadata from '../metadata.json' with { type: 'json' }; + +interface PackageManifest { + name?: string; + version?: string; + private?: boolean; + type?: 'module' | 'commonjs'; + repository?: { + type: string; + url: string; + directory?: string; + }; + publishConfig?: { + access?: string; + exports?: Record; + types?: string; + }; + scripts?: Record; + files?: string[]; + dependencies?: Record; + devDependencies?: Record; + [key: string]: unknown; +} + +interface UpdateContext { + manifest: PackageManifest; + packageInfo: PackageInfo; + isPublished: boolean; + isRoot: boolean; + isBuilt: boolean; +} + +// Catalog of devDependencies to sync +const CATALOG = { + devDependencies: { + rollup: '^4.34.8', + }, +}; + +// Handlebars template for rollup.config.mjs +const ROLLUP_CONFIG_TEMPLATE = + Handlebars.compile(`import { Package } from '@glimmer-workspace/build-support'; + +export default Package.config(import.meta); +`); + +export class PackageUpdater { + private workspaceRoot: string; + + constructor(workspaceRoot: string = WORKSPACE_ROOT) { + this.workspaceRoot = workspaceRoot; + } + + async updateAllPackages(): Promise { + console.log(chalk.blue('Updating package conventions...')); + + // Discover all packages using globby (replacing @pnpm/workspace.find-packages) + const packagePaths = await globby( + [ + 'packages/@glimmer/*/package.json', + 'packages/@glimmer-workspace/*/package.json', + 'packages/@types/*/package.json', + ], + { + cwd: this.workspaceRoot, + absolute: true, + } + ); + + let updatedCount = 0; + + console.log(chalk.gray(`Found ${packagePaths.length} packages to check`)); + + for (const packagePath of packagePaths) { + const updated = await this.updatePackage(packagePath); + if (updated) { + updatedCount++; + } + } + + console.log(chalk.green(`Updated ${updatedCount} packages`)); + } + + private async updatePackage(packagePath: string): Promise { + try { + // Read package.json using read-pkg for normalization + const manifest = await readPackage({ cwd: packagePath.replace('/package.json', '') }); + + if (!manifest.name) { + return false; + } + + const packageInfo = getPackageInfo(manifest.name); + if (!packageInfo) { + console.log(chalk.yellow(`No metadata found for ${manifest.name}`)); + return false; + } + + const context: UpdateContext = { + manifest, + packageInfo, + isPublished: !packageInfo.private, + isRoot: packageInfo.name === 'glimmer-engine', + isBuilt: packageInfo['repo-meta']?.built === true, + }; + + // Update package.json + const updatedManifest = this.updatePackageManifest(context); + const manifestChanged = JSON.stringify(manifest) !== JSON.stringify(updatedManifest); + + // Generate rollup.config.mjs if needed + const rollupConfigPath = join(packagePath.replace('/package.json', ''), 'rollup.config.mjs'); + const rollupConfigChanged = this.updateRollupConfig(context, rollupConfigPath); + + if (manifestChanged) { + await writePackage(packagePath.replace('/package.json', ''), updatedManifest); + this.logUpdate(packageInfo.root, 'package.json'); + } + + // Log status for packages that are already up to date + if (!manifestChanged && !rollupConfigChanged) { + console.log(chalk.gray(` ✓ ${packageInfo.name} is up to date`)); + } + + return manifestChanged || rollupConfigChanged; + } catch (error) { + console.error(chalk.red(`Failed to update package at ${packagePath}:`), error); + return false; + } + } + + private updatePackageManifest(context: UpdateContext): PackageManifest { + const { manifest, packageInfo, isPublished, isRoot, isBuilt } = context; + + // Start with a deep copy + const updated = deepmerge({}, manifest) as PackageManifest; + + // Initialize required objects + updated.publishConfig = updated.publishConfig || {}; + updated.scripts = updated.scripts || {}; + + // Clean up legacy scripts (replaced with prepack) + delete updated.scripts['test:types']; + delete updated.scripts['test:lint']; + + // Repository configuration + if (isPublished || isRoot) { + updated.repository = { + type: 'git', + url: 'git+https://github.com/glimmerjs/glimmer-vm.git', + ...(packageInfo.root ? { directory: packageInfo.root } : {}), + }; + } else { + delete updated.repository; + } + + // Published package configuration + if (isPublished) { + updated.publishConfig.access = 'public'; + } + + // Private package configuration + if (!isPublished && !isBuilt) { + // Reset publishConfig for private non-built packages + updated.publishConfig = {}; + updated.version = metadata.workspace.version; // Use workspace version + + // Root package special handling + if (isRoot) { + // Only add test:lint if it doesn't already exist + if (!updated.scripts['test:lint']) { + updated.scripts['test:lint'] = 'eslint . --quiet'; + } + } else { + delete updated.repository; + } + + delete updated.scripts['test:publint']; + this.cleanup(updated, 'publishConfig'); + return updated; + } + + // Built packages and published packages + updated.scripts['test:publint'] = 'publint'; + + // Sync devDependencies from catalog + updated.devDependencies = updated.devDependencies || {}; + for (const [name, version] of Object.entries(CATALOG.devDependencies)) { + if (name in updated.devDependencies) { + updated.devDependencies[name] = version; + } + } + + // Built package configuration + if (isBuilt) { + updated.devDependencies['@glimmer-workspace/env'] = 'workspace:*'; + updated.scripts['prepack'] = 'rollup -c rollup.config.mjs'; + updated.files = ['dist']; + + // Configure exports + if (packageInfo.name === '@glimmer/vm-babel-plugins') { + // Special case for babel plugins + updated.publishConfig.exports = { + '.': { + development: { + default: './dist/dev/index.js', + }, + ...(packageInfo['repo-meta']?.supportcjs + ? { + require: { + default: './dist/dev/index.cjs', + }, + } + : {}), + default: { + default: './dist/prod/index.js', + }, + }, + }; + } else { + // Standard built package exports + updated.publishConfig.types = 'dist/dev/index.d.ts'; + updated.publishConfig.exports = { + '.': { + development: { + types: './dist/dev/index.d.ts', + default: './dist/dev/index.js', + }, + ...(packageInfo['repo-meta']?.supportcjs + ? { + require: { + default: './dist/dev/index.cjs', + }, + } + : {}), + default: { + types: './dist/prod/index.d.ts', + default: './dist/prod/index.js', + }, + }, + }; + } + } else { + // Non-built packages + delete updated.publishConfig.exports; + delete updated.scripts['prepack']; + } + + // Cleanup empty objects + this.cleanup(updated, 'publishConfig'); + this.cleanup(updated, 'devDependencies'); + + return updated; + } + + private updateRollupConfig(context: UpdateContext, rollupConfigPath: string): boolean { + const { packageInfo, isBuilt, isRoot } = context; + + if (isRoot) { + // Root package doesn't get a rollup config + if (existsSync(rollupConfigPath)) { + // Remove existing rollup config if present + writeFileSync(rollupConfigPath, ''); + this.logUpdate(packageInfo.root, 'rollup.config.mjs (removed)'); + return true; + } + return false; + } + + if (isBuilt) { + // Generate rollup config for built packages + const configContent = ROLLUP_CONFIG_TEMPLATE({}); + const existingContent = existsSync(rollupConfigPath) + ? readFileSync(rollupConfigPath, 'utf8') + : ''; + + if (existingContent !== configContent) { + writeFileSync(rollupConfigPath, configContent); + this.logUpdate(packageInfo.root, 'rollup.config.mjs'); + return true; + } + } else { + // Remove rollup config for non-built packages + if (existsSync(rollupConfigPath)) { + writeFileSync(rollupConfigPath, ''); + this.logUpdate(packageInfo.root, 'rollup.config.mjs (removed)'); + return true; + } + } + + return false; + } + + private cleanup(obj: Record, key: string): void { + const value = obj[key]; + if (value !== null && typeof value === 'object' && Object.keys(value).length === 0) { + obj[key] = undefined; + } + } + + private logUpdate(packageRoot: string, file: string): void { + const [prefix, rest] = packageRoot.startsWith('packages/') + ? ['packages/', packageRoot.slice('packages/'.length)] + : ['', packageRoot || '{root}']; + + console.log( + `${chalk.green.bold('updating')} ${chalk.gray.dim(prefix)}${chalk.magenta.underline( + rest + )}${chalk.gray('/')}${chalk.cyanBright(file)}` + ); + } +} + +// CLI execution +if (import.meta.url === `file://${process.argv[1]}`) { + const updater = new PackageUpdater(); + try { + await updater.updateAllPackages(); + } catch (error: unknown) { + console.error(chalk.red('Failed to update packages:'), error); + process.exit(1); + } +} diff --git a/repo-metadata/lib/update.ts b/repo-metadata/lib/update.ts index 22d05c4ea..2b43994a2 100644 --- a/repo-metadata/lib/update.ts +++ b/repo-metadata/lib/update.ts @@ -4,9 +4,7 @@ import { existsSync, readFileSync, writeFileSync } from 'node:fs'; import { readFile } from 'node:fs/promises'; import { join, relative, resolve } from 'node:path'; -import type { Project, ProjectManifest } from '@pnpm/types'; import type { PackageEntryPoints } from 'pkg-entry-points'; -import { findWorkspacePackages } from '@pnpm/workspace.find-packages'; import chalk from 'chalk'; import { execa } from 'execa'; import { getPackageEntryPointsSync } from 'pkg-entry-points'; @@ -14,14 +12,58 @@ import YAML from 'yaml'; import type { PackageInfo, RepoMetaForPackage } from './types'; +interface PnpmPackage { + name: string; + version: string; + path: string; + private?: boolean; + dependencies?: Record; + devDependencies?: Record; +} + +interface WorkspacePackage { + rootDir: string; + manifest: ManifestExt; +} + const workspaceRoot = new URL('../..', import.meta.url).pathname; const metadataRoot = new URL('..', import.meta.url).pathname; const workspaceFile = await readFile(join(workspaceRoot, 'pnpm-workspace.yaml'), 'utf8'); const workspaceInfo = YAML.parse(workspaceFile) as { packages: string[] }; -const packages = await findWorkspacePackages(workspaceRoot, { - patterns: workspaceInfo.packages, +// Get workspace packages using pnpm list instead of @pnpm/workspace.find-packages +// to avoid peer dependency issues with @pnpm/* internal packages +let pnpmPackages: PnpmPackage[]; +try { + const { stdout } = await execa('pnpm', ['list', '--recursive', '--json', '--depth=0'], { + cwd: workspaceRoot, + }); + pnpmPackages = JSON.parse(stdout) as PnpmPackage[]; +} catch (error) { + console.error(chalk.red('Failed to get workspace packages with pnpm list:'), error); + throw new Error('Failed to get workspace packages'); +} + +const packages: WorkspacePackage[] = pnpmPackages.map((pkg) => { + // Read the actual package.json to get all fields including repo-meta + const packageJsonPath = join(pkg.path, 'package.json'); + + if (!existsSync(packageJsonPath)) { + console.error(chalk.red(`Missing package.json at ${packageJsonPath}`)); + throw new Error(`Missing package.json at ${packageJsonPath}`); + } + + try { + const fullManifest = JSON.parse(readFileSync(packageJsonPath, 'utf8')) as ManifestExt; + return { + rootDir: pkg.path, + manifest: fullManifest, + }; + } catch (error) { + console.error(chalk.red(`Failed to read/parse package.json at ${packageJsonPath}:`), error); + throw new Error(`Failed to read/parse package.json at ${packageJsonPath}`); + } }); if (process.argv.includes('--print-list')) { @@ -35,7 +77,10 @@ if (process.argv.includes('--print-list')) { process.exit(0); } -interface ManifestExt extends ProjectManifest { +interface ManifestExt { + name?: string; + version?: string; + private?: boolean; type?: 'module' | 'commonjs'; 'repo-meta'?: RepoMetaForPackage; } @@ -48,14 +93,14 @@ const WARNINGS: Record< } > = {}; -function warn(pkg: Project, code: string, field: string, expected?: string) { +function warn(pkg: WorkspacePackage, code: string, field: string, expected?: string) { const pkgRoot = relative(workspaceRoot, pkg.rootDir); let { problems } = (WARNINGS[pkgRoot] ??= { name: pkg.manifest.name, problems: {} }); problems[field] = { code, expected }; } const packagesMetadata = packages.map((pkg) => { - const manifest = pkg.manifest as ManifestExt; + const manifest = pkg.manifest; const { name, type, private: isPrivate = false } = manifest; assert(name, `Missing name in ${relative(workspaceRoot, pkg.rootDir)}/package.json`); @@ -142,7 +187,11 @@ if (prev && next === JSON.stringify(JSON.parse(prev), null, 2)) { console.error(`No changes in ${relative(workspaceRoot, outFile)}`); } else { writeFileSync(outFile, next, 'utf-8'); - await execa({ cwd: workspaceRoot })`pnpm prettier --write ${outFile}`; + try { + await execa({ cwd: workspaceRoot })`pnpm prettier --write ${outFile}`; + } catch (error) { + console.error(chalk.yellow('Warning: Failed to format metadata.json with prettier:'), error); + } console.error(`Updated ${relative(workspaceRoot, outFile)}`); } diff --git a/repo-metadata/metadata.json b/repo-metadata/metadata.json index 67b44db03..5c6960fb6 100644 --- a/repo-metadata/metadata.json +++ b/repo-metadata/metadata.json @@ -14,19 +14,6 @@ "built": false } }, - { - "root": ".meta-updater", - "name": "@glimmer-workspace/meta-updater", - "version": "0.92.0", - "type": "commonjs", - "private": true, - "repo-meta": { - "built": false - }, - "entryPoints": { - ".": [[["default"], "./main.mjs"]] - } - }, { "root": "bin", "name": "@glimmer-workspace/bin", diff --git a/repo-metadata/package.json b/repo-metadata/package.json index 2be2d7b8e..77b8aeb6b 100644 --- a/repo-metadata/package.json +++ b/repo-metadata/package.json @@ -13,12 +13,18 @@ "scripts": {}, "dependencies": { "chalk": "^5.4.1", + "deepmerge": "^4.3.1", "execa": "^9.5.2", + "fs-extra": "^11.2.0", + "globby": "^14.1.0", + "handlebars": "^4.7.8", + "read-pkg": "^9.0.1", + "write-pkg": "^7.0.0", "yaml": "^2.7.0" }, "devDependencies": { - "@pnpm/types": "^1000.1.1", - "@pnpm/workspace.find-packages": "^1000.0.10", + "@types/fs-extra": "^11.0.4", + "@types/handlebars": "^4.1.0", "@types/node": "^22.13.4", "pkg-entry-points": "^1.1.1" } diff --git a/rollup.config.mjs b/rollup.config.mjs index 55535ff64..e69de29bb 100644 --- a/rollup.config.mjs +++ b/rollup.config.mjs @@ -1,23 +0,0 @@ -import { Package } from '@glimmer-workspace/build-support'; -import { execSync } from 'child_process'; - -const BUILD_PACKAGES = process.env.GLIMMER_BUILD_PACKAGES - ? process.env.GLIMMER_BUILD_PACKAGES.split(',') - : null; - -export default getPackages() - .filter((pkg) => { - return BUILD_PACKAGES ? BUILD_PACKAGES.includes(pkg.name) : true; - }) - .flatMap((pkg) => Package.config(pkg.path)); - -/** @typedef {{ name: string; version: string; path: string; main: string; private: boolean; }} PnpmPackage */ - -function getPackages() { - /** @type {PnpmPackage[]} */ - const allPackages = JSON.parse( - execSync(`pnpm -r ls --depth -1 --json`, { encoding: 'utf-8' }).trim() - ); - - return allPackages.filter((pkg) => pkg.private !== true && pkg.name !== '@glimmer/interfaces'); -}