diff --git a/.cspell.json b/.cspell.json index 73006b14fd39..8a6d8b54cc41 100644 --- a/.cspell.json +++ b/.cspell.json @@ -79,6 +79,7 @@ "destructures", "discoverability", "dprint", + "dummypkg", "errored", "erroring", "ESLint", diff --git a/.github/actions/breaking-pr-check/action.yml b/.github/actions/breaking-pr-check/action.yml index f54443a4f433..7e158a90869d 100644 --- a/.github/actions/breaking-pr-check/action.yml +++ b/.github/actions/breaking-pr-check/action.yml @@ -2,5 +2,8 @@ name: Validate Breaking Change PR description: Validate breaking change PR title and description runs: - using: node20 - main: index.js + using: 'composite' + steps: + - shell: bash + run: yarn breaking-pr-check-action + working-directory: packages/repo-tools diff --git a/.github/actions/wait-for-netlify/action.yml b/.github/actions/wait-for-netlify/action.yml deleted file mode 100644 index 15111ea9c4d3..000000000000 --- a/.github/actions/wait-for-netlify/action.yml +++ /dev/null @@ -1,15 +0,0 @@ -name: Wait for the Netlify deployment for the current commit to be ready -description: Wait for the Netlify deployment for the current commit to be ready - -inputs: - netlify_token: - description: The value of secrets.NETLIFY_TOKEN - required: true - max_timeout: - description: The maximum length of time to keep retrying the Netlify api - retry_interval: - description: How long to wait between retries of the Netlify api - -runs: - using: node20 - main: index.js diff --git a/.github/actions/wait-for-netlify/index.js b/.github/actions/wait-for-netlify/index.js deleted file mode 100644 index f96f6bac7d0a..000000000000 --- a/.github/actions/wait-for-netlify/index.js +++ /dev/null @@ -1,108 +0,0 @@ -const core = require('@actions/core'); -const github = require('@actions/github'); - -const NETLIFY_SITE_ID = '128d21c7-b2fe-45ad-b141-9878fcf5de3a'; // https://app.netlify.com/sites/typescript-eslint/overview -const NETLIFY_TOKEN = core.getInput('netlify_token', { required: true }); -const MAX_TIMEOUT = core.getInput('max_timeout') || 300000; // 5 minutes -const RETRY_INTERVAL = core.getInput('retry_interval') || 5000; // 5 seconds - -const COMMIT_SHA = - github.context.eventName === 'pull_request' - ? github.context.payload.pull_request.head.sha - : github.context.sha; -const BRANCH = - github.context.eventName === 'pull_request' - ? github.context.payload.pull_request.head.ref - : github.context.ref_name; - -if (!COMMIT_SHA || !BRANCH) { - core.setFailed( - `Could not determine the full commit SHA and branch from the GitHub context: ${JSON.stringify( - github.context, - null, - 2, - )}`, - ); -} - -async function run() { - const { NetlifyAPI } = await import('netlify'); // ESM only, cannot be used with `require` - const client = new NetlifyAPI(NETLIFY_TOKEN); - - async function getReadyDeploymentForCommitRef() { - console.log( - `Checking if deployment for commit "${COMMIT_SHA}" on branch "${BRANCH}" has state "ready"...`, - ); - const deployments = await client.listSiteDeploys({ - site_id: NETLIFY_SITE_ID, - branch: BRANCH, - }); - console.log( - `Found ${deployments.length} deployments for this branch "${BRANCH}"`, - ); - const deploymentForCommit = deployments.find( - deployment => deployment.commit_ref === COMMIT_SHA, - ); - if (!deploymentForCommit) { - console.log( - `No deployment found yet for commit "${COMMIT_SHA}" on branch "${BRANCH}"`, - ); - return null; - } - if (deploymentForCommit.state !== 'ready') { - console.log( - `Resolve deployment for commit "${COMMIT_SHA}" on branch "${BRANCH}", but it is not ready yet. State: ${deploymentForCommit.state}`, - ); - return null; - } - return deploymentForCommit; - } - - async function waitUntilReadyDeployment() { - const maxTimeout = new Promise((_, reject) => { - const id = setTimeout(() => { - clearTimeout(id); - reject( - new Error( - `Error: Timed out in ${MAX_TIMEOUT}ms, based on the configured MAX_TIMEOUT.`, - ), - ); - }, MAX_TIMEOUT); - }); - - const isReady = new Promise(async (resolve, reject) => { - const checkReady = async () => { - try { - const readyDeployment = await getReadyDeploymentForCommitRef(); - if (readyDeployment) { - return resolve({ readyDeployment }); - } - console.log( - `Deployment is not ready yet. Retrying in ${RETRY_INTERVAL}ms based on the configured RETRY_INTERVAL...`, - ); - setTimeout(checkReady, RETRY_INTERVAL); - } catch (err) { - return reject(err); - } - }; - checkReady(); - }); - - return Promise.race([isReady, maxTimeout]); - } - - waitUntilReadyDeployment() - .then(({ readyDeployment }) => { - console.log( - `Resolved "ready" deployment with ID: ${readyDeployment.id}, URL: ${readyDeployment.deploy_ssl_url}`, - ); - core.setOutput('deploy_id', readyDeployment.id); - core.setOutput('url', readyDeployment.deploy_ssl_url); - process.exit(0); - }) - .catch(error => { - core.setFailed(error.message); - }); -} - -run(); diff --git a/eslint.config.mjs b/eslint.config.mjs index 3e71ec470c9d..a97c3456d422 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -53,6 +53,8 @@ export default tseslint.config( '**/__snapshots__/**', '**/.docusaurus/**', '**/build/**', + '.nx/cache', + '.yarn/*', // Files copied as part of the build 'packages/types/src/generated/**/*.ts', // Playground types downloaded from the web diff --git a/knip.ts b/knip.ts index 1ea468f97299..83179d3486dd 100644 --- a/knip.ts +++ b/knip.ts @@ -1,4 +1,4 @@ -import type { KnipConfig } from 'knip'; +import type { KnipConfig } from 'knip' with { 'resolution-mode': 'import' }; export default { rules: { @@ -31,9 +31,10 @@ export default { // imported in eslint.config.js '@typescript-eslint/utils', ], - entry: ['tools/release/changelog-renderer.js'], + entry: ['packages/repo-tools/src/release/changelog-renderer.js'], ignoreBinaries: [ // https://github.com/webpro/knip/issues/433 + 'breaking-pr-check-action', 'stylelint', ], }, @@ -58,6 +59,7 @@ export default { 'packages/parser': { ignore: ['tests/fixtures/**'], }, + 'packages/repo-tools/src/dummypkg': {}, 'packages/scope-manager': { ignore: ['tests/fixtures/**'], }, @@ -120,6 +122,5 @@ export default { 'src/mock/util.js', ], }, - 'tools/dummypkg': {}, }, } satisfies KnipConfig; diff --git a/nx.json b/nx.json index 3715d93d966b..930b55a2c987 100644 --- a/nx.json +++ b/nx.json @@ -6,10 +6,10 @@ "changelog": { "workspaceChangelog": { "createRelease": "github", - "renderer": "{workspaceRoot}/tools/release/changelog-renderer" + "renderer": "{workspaceRoot}/packages/repo-tools/src/release/changelog-renderer" }, "projectChangelogs": { - "renderer": "{workspaceRoot}/tools/release/changelog-renderer" + "renderer": "{workspaceRoot}/packages/repo-tools/src/release/changelog-renderer" } }, "version": { diff --git a/package.json b/package.json index 549a187742f0..d24309e59d67 100644 --- a/package.json +++ b/package.json @@ -40,21 +40,19 @@ "lint-markdown-fix": "yarn lint-markdown --fix", "lint-markdown": "markdownlint \"**/*.md\" --config=.markdownlint.json --ignore-path=.markdownlintignore", "lint-stylelint": "npx nx lint website stylelint", - "lint": "npx nx lint eslint-plugin --skip-nx-cache && npx nx run-many --target=lint --parallel --exclude eslint-plugin", + "lint": "npx nx lint eslint-plugin --skip-nx-cache && npx nx run-many --target=lint --parallel --exclude eslint-plugin && eslint . --ignore-pattern=packages --cache", "postinstall": "npx nx run repo-tools:postinstall-script", "pre-commit": "yarn lint-staged", - "release": "tsx tools/release/release.mts", + "release": "tsx packages/repo-tools/src/release/release.mts", "start": "npx nx run website:start", "test": "npx nx run-many --target=test --parallel --exclude integration-tests --exclude website --exclude website-eslint", "test-integration": "npx nx run integration-tests:test", - "typecheck": "npx nx run-many --target=typecheck --parallel" + "typecheck": "npx nx run-many --target=typecheck --parallel && tsc" }, "engines": { "node": "^18.18.0 || >=20.0.0" }, "devDependencies": { - "@actions/core": "^1.10.1", - "@actions/github": "^6.0.0", "@babel/code-frame": "^7.24.2", "@babel/core": "^7.24.4", "@babel/eslint-parser": "^7.24.1", @@ -79,7 +77,6 @@ "@types/node": "^20.12.5", "@types/semver": "^7.5.8", "@types/tmp": "^0.2.6", - "@types/yargs": "^17.0.32", "@typescript-eslint/eslint-plugin-internal": "workspace:^", "console-fail-test": "^0.2.3", "cross-fetch": "^4.0.0", @@ -97,7 +94,6 @@ "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-simple-import-sort": "^10.0.0", "eslint-plugin-unicorn": "^50.0.1", - "execa": "7.2.0", "glob": "^10.3.12", "globals": "^15.0.0", "husky": "^9.0.0", @@ -108,7 +104,6 @@ "make-dir": "^4.0.0", "markdownlint-cli": "^0.41.0", "ncp": "^2.0.0", - "netlify": "^13.1.14", "nx": "19.4.0", "prettier": "3.3.2", "pretty-format": "^29.7.0", @@ -116,17 +111,16 @@ "tmp": "^0.2.1", "tsx": "*", "typescript": ">=4.7.4 <5.6.0", - "typescript-eslint": "workspace:^", - "yargs": "17.7.2" + "typescript-eslint": "workspace:^" }, "resolutions": { "@jest/create-cache-key-function": "^29", "@jest/reporters": "^29", "@jest/test-result": "^29", "@microsoft/api-extractor@^7.38.0": "patch:@microsoft/api-extractor@npm%3A7.38.0#./.yarn/patches/@microsoft-api-extractor-npm-7.38.0-955f1e0725.patch", - "@types/eslint-scope": "link:./tools/dummypkg", - "@types/eslint": "link:./tools/dummypkg", - "@types/estree": "link:./tools/dummypkg", + "@types/eslint-scope": "link:./packages/repo-tools/src/dummypkg", + "@types/eslint": "link:./packages/repo-tools/src/dummypkg", + "@types/estree": "link:./packages/repo-tools/src/dummypkg", "@types/node": "^20.0.0", "@types/react": "^18.2.14", "eslint": "8.57.0", diff --git a/packages/repo-tools/package.json b/packages/repo-tools/package.json index 17ee7c7bf439..cf25c3a0f2c4 100644 --- a/packages/repo-tools/package.json +++ b/packages/repo-tools/package.json @@ -5,6 +5,7 @@ "//": "NOTE: intentionally no build step in this package", "scripts": { "apply-canary-version": "npx tsx ./src/apply-canary-version.mts", + "breaking-pr-check-action": "npx tsx ./src/breaking-pr-check-action.mts", "format": "npx prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore", "generate-configs": "npx tsx ./src/generate-configs.mts", "generate-contributors": "npx tsx ./src/generate-contributors.mts", @@ -16,8 +17,11 @@ "typecheck": "npx tsc --noEmit" }, "devDependencies": { + "@actions/core": "^1.10.1", + "@actions/github": "^6.0.0", "@jest/types": "29.6.3", "@nx/devkit": "*", + "@types/yargs": "^17.0.32", "@typescript-eslint/eslint-plugin": "7.15.0", "@typescript-eslint/scope-manager": "7.15.0", "@typescript-eslint/types": "7.15.0", @@ -25,9 +29,11 @@ "@typescript-eslint/utils": "7.15.0", "cross-fetch": "*", "execa": "*", + "nx": "19.4.0", "prettier": "^3.2.5", "rimraf": "*", "semver": "7.6.2", - "typescript": "*" + "typescript": "*", + "yargs": "^17.7.2" } } diff --git a/.github/actions/breaking-pr-check/index.js b/packages/repo-tools/src/breaking-pr-check-action.mts similarity index 55% rename from .github/actions/breaking-pr-check/index.js rename to packages/repo-tools/src/breaking-pr-check-action.mts index f8e590c2f192..510276744ec2 100644 --- a/.github/actions/breaking-pr-check/index.js +++ b/packages/repo-tools/src/breaking-pr-check-action.mts @@ -1,12 +1,13 @@ -const core = require('@actions/core'); -const github = require('@actions/github'); +import core from '@actions/core'; +import github from '@actions/github'; -function raiseError(message) { +function raiseError(message: string): never { throw new Error(message); } -async function getPullRequest() { - const client = github.getOctokit(process.env.GITHUB_TOKEN); +async function getPullRequest(): Promise { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const client = github.getOctokit(process.env.GITHUB_TOKEN!); const pr = github.context.payload.pull_request; if (!pr) { @@ -15,8 +16,9 @@ async function getPullRequest() { ); } - const owner = pr.base.user.login; - const repo = pr.base.repo.name; + const base = pr.base as { user: { login: string }; repo: { name: string } }; + const owner = base.user.login; + const repo = base.repo.name; const { data } = await client.rest.pulls.get({ owner, @@ -27,7 +29,7 @@ async function getPullRequest() { return data; } -function checkTitle(title) { +function checkTitle(title: string): void { if (/^[a-z]+(\([a-z-]+\))?!: /.test(title)) { raiseError( `Do not use exclamation mark ('!') to indicate breaking change in the PR Title.`, @@ -35,13 +37,16 @@ function checkTitle(title) { } } -function checkDescription(body, labels) { +function checkDescription( + body: string, + labels: (typeof pullRequest)['labels'], +): void { if (!labels.some(label => label.name === 'breaking change')) { return; } const [firstLine, secondLine] = body.split(/\r?\n/); - if (!firstLine || !/^BREAKING CHANGE:/.test(firstLine)) { + if (!firstLine.startsWith('BREAKING CHANGE:')) { raiseError( `Breaking change PR body should start with "BREAKING CHANGE:". See https://typescript-eslint.io/maintenance/releases#2-merging-breaking-changes.`, ); @@ -53,14 +58,10 @@ function checkDescription(body, labels) { } } -async function run() { - const pullRequest = await getPullRequest(); - try { - checkTitle(pullRequest.title); - checkDescription(pullRequest.body, pullRequest.labels); - } catch (e) { - core.setFailed(e.message); - } +const pullRequest = await getPullRequest(); +try { + checkTitle(pullRequest.title); + checkDescription(pullRequest.body ?? '', pullRequest.labels); +} catch (e) { + core.setFailed((e as Error).message); } - -run(); diff --git a/tools/dummypkg/README.md b/packages/repo-tools/src/dummypkg/README.md similarity index 100% rename from tools/dummypkg/README.md rename to packages/repo-tools/src/dummypkg/README.md diff --git a/tools/dummypkg/index.d.ts b/packages/repo-tools/src/dummypkg/index.d.ts similarity index 100% rename from tools/dummypkg/index.d.ts rename to packages/repo-tools/src/dummypkg/index.d.ts diff --git a/tools/dummypkg/index.js b/packages/repo-tools/src/dummypkg/index.js similarity index 100% rename from tools/dummypkg/index.js rename to packages/repo-tools/src/dummypkg/index.js diff --git a/tools/dummypkg/package.json b/packages/repo-tools/src/dummypkg/package.json similarity index 100% rename from tools/dummypkg/package.json rename to packages/repo-tools/src/dummypkg/package.json diff --git a/tools/release/changelog-renderer.js b/packages/repo-tools/src/release/changelog-renderer.js similarity index 100% rename from tools/release/changelog-renderer.js rename to packages/repo-tools/src/release/changelog-renderer.js diff --git a/tools/release/release.mts b/packages/repo-tools/src/release/release.mts similarity index 97% rename from tools/release/release.mts rename to packages/repo-tools/src/release/release.mts index 9ecdd34fd856..b70d8b8269f7 100644 --- a/tools/release/release.mts +++ b/packages/repo-tools/src/release/release.mts @@ -60,5 +60,6 @@ if (workspaceVersion === null) { dryRun: options.dryRun, verbose: options.verbose, }); + // eslint-disable-next-line no-process-exit process.exit(publishStatus); } diff --git a/tsconfig.json b/tsconfig.json index cea4b651f67e..95169a092c73 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -13,6 +13,7 @@ "eslint.config.mjs", "jest.config.base.js", "jest.config.js", - "jest.preset.js" + "jest.preset.js", + "knip.ts" ] } diff --git a/yarn.lock b/yarn.lock index 00e277cdab91..68a6cb6d928f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3857,13 +3857,6 @@ __metadata: languageName: node linkType: hard -"@netlify/open-api@npm:^2.33.0": - version: 2.33.1 - resolution: "@netlify/open-api@npm:2.33.1" - checksum: c34345f832aa5e567d5fe8c3205d36453e0243dadbec21be2b789a6a8c0413c7ec60cd5c2fa1b1c15b0d66efbbf573f59d544e7b4003329b653e9ebb10fcf1e0 - languageName: node - linkType: hard - "@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1": version: 5.1.1-v1 resolution: "@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1" @@ -5090,9 +5083,9 @@ __metadata: languageName: node linkType: hard -"@types/eslint-scope@link:./tools/dummypkg::locator=%40typescript-eslint%2Ftypescript-eslint%40workspace%3A.": +"@types/eslint-scope@link:./packages/repo-tools/src/dummypkg::locator=%40typescript-eslint%2Ftypescript-eslint%40workspace%3A.": version: 0.0.0-use.local - resolution: "@types/eslint-scope@link:./tools/dummypkg::locator=%40typescript-eslint%2Ftypescript-eslint%40workspace%3A." + resolution: "@types/eslint-scope@link:./packages/repo-tools/src/dummypkg::locator=%40typescript-eslint%2Ftypescript-eslint%40workspace%3A." languageName: node linkType: soft @@ -5114,9 +5107,9 @@ __metadata: languageName: node linkType: hard -"@types/estree@link:./tools/dummypkg::locator=%40typescript-eslint%2Ftypescript-eslint%40workspace%3A.": +"@types/estree@link:./packages/repo-tools/src/dummypkg::locator=%40typescript-eslint%2Ftypescript-eslint%40workspace%3A.": version: 0.0.0-use.local - resolution: "@types/estree@link:./tools/dummypkg::locator=%40typescript-eslint%2Ftypescript-eslint%40workspace%3A." + resolution: "@types/estree@link:./packages/repo-tools/src/dummypkg::locator=%40typescript-eslint%2Ftypescript-eslint%40workspace%3A." languageName: node linkType: soft @@ -5703,8 +5696,11 @@ __metadata: version: 0.0.0-use.local resolution: "@typescript-eslint/repo-tools@workspace:packages/repo-tools" dependencies: + "@actions/core": ^1.10.1 + "@actions/github": ^6.0.0 "@jest/types": 29.6.3 "@nx/devkit": "*" + "@types/yargs": ^17.0.32 "@typescript-eslint/eslint-plugin": 7.15.0 "@typescript-eslint/scope-manager": 7.15.0 "@typescript-eslint/types": 7.15.0 @@ -5712,10 +5708,12 @@ __metadata: "@typescript-eslint/utils": 7.15.0 cross-fetch: "*" execa: "*" + nx: 19.4.0 prettier: ^3.2.5 rimraf: "*" semver: 7.6.2 typescript: "*" + yargs: ^17.7.2 languageName: unknown linkType: soft @@ -5851,8 +5849,6 @@ __metadata: version: 0.0.0-use.local resolution: "@typescript-eslint/typescript-eslint@workspace:." dependencies: - "@actions/core": ^1.10.1 - "@actions/github": ^6.0.0 "@babel/code-frame": ^7.24.2 "@babel/core": ^7.24.4 "@babel/eslint-parser": ^7.24.1 @@ -5877,7 +5873,6 @@ __metadata: "@types/node": ^20.12.5 "@types/semver": ^7.5.8 "@types/tmp": ^0.2.6 - "@types/yargs": ^17.0.32 "@typescript-eslint/eslint-plugin-internal": "workspace:^" console-fail-test: ^0.2.3 cross-fetch: ^4.0.0 @@ -5895,7 +5890,6 @@ __metadata: eslint-plugin-react-hooks: ^4.6.0 eslint-plugin-simple-import-sort: ^10.0.0 eslint-plugin-unicorn: ^50.0.1 - execa: 7.2.0 glob: ^10.3.12 globals: ^15.0.0 husky: ^9.0.0 @@ -5906,7 +5900,6 @@ __metadata: make-dir: ^4.0.0 markdownlint-cli: ^0.41.0 ncp: ^2.0.0 - netlify: ^13.1.14 nx: 19.4.0 prettier: 3.3.2 pretty-format: ^29.7.0 @@ -5915,7 +5908,6 @@ __metadata: tsx: "*" typescript: ">=4.7.4 <5.6.0" typescript-eslint: "workspace:^" - yargs: 17.7.2 languageName: unknown linkType: soft @@ -8729,13 +8721,6 @@ __metadata: languageName: node linkType: hard -"data-uri-to-buffer@npm:^4.0.0": - version: 4.0.1 - resolution: "data-uri-to-buffer@npm:4.0.1" - checksum: 0d0790b67ffec5302f204c2ccca4494f70b4e2d940fea3d36b09f0bb2b8539c2e86690429eb1f1dc4bcc9e4df0644193073e63d9ee48ac9fce79ec1506e4aa4c - languageName: node - linkType: hard - "data-view-buffer@npm:^1.0.1": version: 1.0.1 resolution: "data-view-buffer@npm:1.0.1" @@ -10366,23 +10351,6 @@ __metadata: languageName: node linkType: hard -"execa@npm:7.2.0": - version: 7.2.0 - resolution: "execa@npm:7.2.0" - dependencies: - cross-spawn: ^7.0.3 - get-stream: ^6.0.1 - human-signals: ^4.3.0 - is-stream: ^3.0.0 - merge-stream: ^2.0.0 - npm-run-path: ^5.1.0 - onetime: ^6.0.0 - signal-exit: ^3.0.7 - strip-final-newline: ^3.0.0 - checksum: 14fd17ba0ca8c87b277584d93b1d9fc24f2a65e5152b31d5eb159a3b814854283eaae5f51efa9525e304447e2f757c691877f7adff8fde5746aae67eb1edd1cc - languageName: node - linkType: hard - "execa@npm:^5.0.0": version: 5.1.1 resolution: "execa@npm:5.1.1" @@ -10597,16 +10565,6 @@ __metadata: languageName: node linkType: hard -"fetch-blob@npm:^3.1.2, fetch-blob@npm:^3.1.4": - version: 3.2.0 - resolution: "fetch-blob@npm:3.2.0" - dependencies: - node-domexception: ^1.0.0 - web-streams-polyfill: ^3.0.3 - checksum: f19bc28a2a0b9626e69fd7cf3a05798706db7f6c7548da657cbf5026a570945f5eeaedff52007ea35c8bcd3d237c58a20bf1543bc568ab2422411d762dd3d5bf - languageName: node - linkType: hard - "figures@npm:3.2.0": version: 3.2.0 resolution: "figures@npm:3.2.0" @@ -10890,15 +10848,6 @@ __metadata: languageName: node linkType: hard -"formdata-polyfill@npm:^4.0.10": - version: 4.0.10 - resolution: "formdata-polyfill@npm:4.0.10" - dependencies: - fetch-blob: ^3.1.2 - checksum: 82a34df292afadd82b43d4a740ce387bc08541e0a534358425193017bf9fb3567875dc5f69564984b1da979979b70703aa73dee715a17b6c229752ae736dd9db - languageName: node - linkType: hard - "forwarded@npm:0.2.0": version: 0.2.0 resolution: "forwarded@npm:0.2.0" @@ -11955,13 +11904,6 @@ __metadata: languageName: node linkType: hard -"human-signals@npm:^4.3.0": - version: 4.3.1 - resolution: "human-signals@npm:4.3.1" - checksum: 6f12958df3f21b6fdaf02d90896c271df00636a31e2bbea05bddf817a35c66b38a6fdac5863e2df85bd52f34958997f1f50350ff97249e1dff8452865d5235d1 - languageName: node - linkType: hard - "human-signals@npm:^5.0.0": version: 5.0.0 resolution: "human-signals@npm:5.0.0" @@ -13851,13 +13793,6 @@ __metadata: languageName: node linkType: hard -"lodash-es@npm:^4.17.21": - version: 4.17.21 - resolution: "lodash-es@npm:4.17.21" - checksum: 05cbffad6e2adbb331a4e16fbd826e7faee403a1a04873b82b42c0f22090f280839f85b95393f487c1303c8a3d2a010048bf06151a6cbe03eee4d388fb0a12d2 - languageName: node - linkType: hard - "lodash.curry@npm:^4.1.1": version: 4.1.1 resolution: "lodash.curry@npm:4.1.1" @@ -14517,13 +14452,6 @@ __metadata: languageName: node linkType: hard -"micro-api-client@npm:^3.3.0": - version: 3.3.0 - resolution: "micro-api-client@npm:3.3.0" - checksum: db0ad27df4c58bfb10eb4a6ad14d242d8abbae1bca623db3b23568dae6b146338ecbd62563a41a756b7a75ea155c950ddb5d633859ca728072d1852ed29dd1e2 - languageName: node - linkType: hard - "micromark-core-commonmark@npm:^2.0.0": version: 2.0.0 resolution: "micromark-core-commonmark@npm:2.0.0" @@ -15423,21 +15351,6 @@ __metadata: languageName: node linkType: hard -"netlify@npm:^13.1.14": - version: 13.1.19 - resolution: "netlify@npm:13.1.19" - dependencies: - "@netlify/open-api": ^2.33.0 - lodash-es: ^4.17.21 - micro-api-client: ^3.3.0 - node-fetch: ^3.0.0 - omit.js: ^2.0.2 - p-wait-for: ^4.0.0 - qs: ^6.9.6 - checksum: 20ee83123214555e15f116d8caafb4f9212ef1c7a8dbee1d535fd723d323e51fae911ab67ee3c6ebe9e0aab0c98cd56d300838c468509172ca820692df22e5af - languageName: node - linkType: hard - "nise@npm:^5.1.4": version: 5.1.4 resolution: "nise@npm:5.1.4" @@ -15461,13 +15374,6 @@ __metadata: languageName: node linkType: hard -"node-domexception@npm:^1.0.0": - version: 1.0.0 - resolution: "node-domexception@npm:1.0.0" - checksum: ee1d37dd2a4eb26a8a92cd6b64dfc29caec72bff5e1ed9aba80c294f57a31ba4895a60fd48347cf17dd6e766da0ae87d75657dfd1f384ebfa60462c2283f5c7f - languageName: node - linkType: hard - "node-emoji@npm:^2.1.0": version: 2.1.3 resolution: "node-emoji@npm:2.1.3" @@ -15494,17 +15400,6 @@ __metadata: languageName: node linkType: hard -"node-fetch@npm:^3.0.0": - version: 3.3.1 - resolution: "node-fetch@npm:3.3.1" - dependencies: - data-uri-to-buffer: ^4.0.0 - fetch-blob: ^3.1.4 - formdata-polyfill: ^4.0.10 - checksum: 62145fd3ba4770a76110bc31fdc0054ab2f5442b5ce96e9c4b39fc9e94a3d305560eec76e1165d9259eab866e02a8eecf9301062bb5dfc9f08a4d08b69d223dd - languageName: node - linkType: hard - "node-forge@npm:^1": version: 1.3.1 resolution: "node-forge@npm:1.3.1" @@ -15868,13 +15763,6 @@ __metadata: languageName: node linkType: hard -"omit.js@npm:^2.0.2": - version: 2.0.2 - resolution: "omit.js@npm:2.0.2" - checksum: 5d802b9fd7640250aada82f3b9b7243b554b38911f29b3de0d1066c00f24dd4ee72d3b9c94c582e373fb6511bd21e107917d419a7b2a04287f26c31133b48a15 - languageName: node - linkType: hard - "on-finished@npm:2.4.1": version: 2.4.1 resolution: "on-finished@npm:2.4.1" @@ -16057,13 +15945,6 @@ __metadata: languageName: node linkType: hard -"p-timeout@npm:^5.0.0": - version: 5.1.0 - resolution: "p-timeout@npm:5.1.0" - checksum: f5cd4e17301ff1ff1d8dbf2817df0ad88c6bba99349fc24d8d181827176ad4f8aca649190b8a5b1a428dfd6ddc091af4606835d3e0cb0656e04045da5c9e270c - languageName: node - linkType: hard - "p-try@npm:^2.0.0": version: 2.2.0 resolution: "p-try@npm:2.2.0" @@ -16071,15 +15952,6 @@ __metadata: languageName: node linkType: hard -"p-wait-for@npm:^4.0.0": - version: 4.1.0 - resolution: "p-wait-for@npm:4.1.0" - dependencies: - p-timeout: ^5.0.0 - checksum: 4f3ad4aa52b86d9f73ad558dcb00f9df6727a2c6c42dc1ba46e5ae2505898801f09016d753fd9ecb26eac925ba33ff7f8dbc0981856132c895d9df87dbb25d57 - languageName: node - linkType: hard - "package-json-from-dist@npm:^1.0.0": version: 1.0.0 resolution: "package-json-from-dist@npm:1.0.0" @@ -17090,15 +16962,6 @@ __metadata: languageName: node linkType: hard -"qs@npm:^6.9.6": - version: 6.11.2 - resolution: "qs@npm:6.11.2" - dependencies: - side-channel: ^1.0.4 - checksum: e812f3c590b2262548647d62f1637b6989cc56656dc960b893fe2098d96e1bd633f36576f4cd7564dfbff9db42e17775884db96d846bebe4f37420d073ecdc0b - languageName: node - linkType: hard - "queue-microtask@npm:^1.2.2": version: 1.2.3 resolution: "queue-microtask@npm:1.2.3" @@ -20284,13 +20147,6 @@ __metadata: languageName: node linkType: hard -"web-streams-polyfill@npm:^3.0.3": - version: 3.2.1 - resolution: "web-streams-polyfill@npm:3.2.1" - checksum: b119c78574b6d65935e35098c2afdcd752b84268e18746606af149e3c424e15621b6f1ff0b42b2676dc012fc4f0d313f964b41a4b5031e525faa03997457da02 - languageName: node - linkType: hard - "webidl-conversions@npm:^3.0.0": version: 3.0.1 resolution: "webidl-conversions@npm:3.0.1" @@ -21060,7 +20916,7 @@ __metadata: languageName: node linkType: hard -"yargs@npm:17.7.2, yargs@npm:^17.3.1, yargs@npm:^17.6.2": +"yargs@npm:^17.3.1, yargs@npm:^17.6.2, yargs@npm:^17.7.2": version: 17.7.2 resolution: "yargs@npm:17.7.2" dependencies: pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy