diff --git a/.changeset/big-moons-jump.md b/.changeset/big-moons-jump.md new file mode 100644 index 0000000000..5ca3316549 --- /dev/null +++ b/.changeset/big-moons-jump.md @@ -0,0 +1,5 @@ +--- +"@pnpm/node.resolver": major +--- + +Initial release. diff --git a/packages/node.resolver/README.md b/packages/node.resolver/README.md new file mode 100644 index 0000000000..ce6bb82ef1 --- /dev/null +++ b/packages/node.resolver/README.md @@ -0,0 +1,15 @@ +# @pnpm/node.resolver + +> Resolves a Node.js version specifier to an exact Node.js version + +[![npm version](https://img.shields.io/npm/v/@pnpm/node.resolver.svg)](https://www.npmjs.com/package/@pnpm/node.resolver) + +## Installation + +```sh +pnpm add @pnpm/node.resolver +``` + +## License + +MIT diff --git a/packages/node.resolver/jest.config.js b/packages/node.resolver/jest.config.js new file mode 100644 index 0000000000..95f86a2128 --- /dev/null +++ b/packages/node.resolver/jest.config.js @@ -0,0 +1,3 @@ +const config = require('../../jest.config.js') + +module.exports = config diff --git a/packages/node.resolver/package.json b/packages/node.resolver/package.json new file mode 100644 index 0000000000..216abe21d9 --- /dev/null +++ b/packages/node.resolver/package.json @@ -0,0 +1,48 @@ +{ + "name": "@pnpm/node.resolver", + "version": "0.0.0", + "description": "Resolves a Node.js version specifier to an exact Node.js version", + "funding": "https://opencollective.com/pnpm", + "main": "lib/index.js", + "types": "lib/index.d.ts", + "files": [ + "lib", + "!*.map" + ], + "exports": { + ".": "./lib/index.js" + }, + "engines": { + "node": ">=14.6" + }, + "scripts": { + "lint": "eslint src/**/*.ts test/**/*.ts", + "_test": "jest", + "test": "pnpm run compile && pnpm run _test", + "prepublishOnly": "pnpm run compile", + "compile": "tsc --build && pnpm run lint --fix" + }, + "repository": "https://github.com/pnpm/pnpm/blob/main/packages/node.resolver", + "keywords": [ + "pnpm7", + "pnpm", + "env", + "node.js" + ], + "license": "MIT", + "bugs": { + "url": "https://github.com/pnpm/pnpm/issues" + }, + "homepage": "https://github.com/pnpm/pnpm/blob/main/packages/node.resolver#readme", + "dependencies": { + "@pnpm/fetching-types": "workspace:3.0.0", + "@pnpm/node.fetcher": "workspace:0.0.0", + "semver": "^7.3.4", + "version-selector-type": "^3.0.0" + }, + "devDependencies": { + "@pnpm/fetch": "workspace:5.0.3", + "@pnpm/node.resolver": "workspace:0.0.0", + "@types/semver": "^7.3.4" + } +} diff --git a/packages/plugin-commands-env/src/resolveNodeVersion.ts b/packages/node.resolver/src/index.ts similarity index 86% rename from packages/plugin-commands-env/src/resolveNodeVersion.ts rename to packages/node.resolver/src/index.ts index 084c80b50d..fdc8a675a0 100644 --- a/packages/plugin-commands-env/src/resolveNodeVersion.ts +++ b/packages/node.resolver/src/index.ts @@ -1,4 +1,4 @@ -import { FetchFromRegistry } from '@pnpm/fetch' +import { FetchFromRegistry } from '@pnpm/fetching-types' import semver from 'semver' import versionSelectorType from 'version-selector-type' @@ -7,7 +7,7 @@ interface NodeVersion { lts: false | string } -export default async function resolveNodeVersion (fetch: FetchFromRegistry, versionSpec: string, nodeMirrorBaseUrl: string): Promise { +export async function resolveNodeVersion (fetch: FetchFromRegistry, versionSpec: string, nodeMirrorBaseUrl: string): Promise { const response = await fetch(`${nodeMirrorBaseUrl}index.json`) const allVersions = (await response.json()) as NodeVersion[] if (versionSpec === 'latest') { diff --git a/packages/plugin-commands-env/test/resolveNodeVersion.test.ts b/packages/node.resolver/test/resolveNodeVersion.test.ts similarity index 92% rename from packages/plugin-commands-env/test/resolveNodeVersion.test.ts rename to packages/node.resolver/test/resolveNodeVersion.test.ts index df9337f7ad..efb8511a75 100644 --- a/packages/plugin-commands-env/test/resolveNodeVersion.test.ts +++ b/packages/node.resolver/test/resolveNodeVersion.test.ts @@ -1,5 +1,5 @@ import { createFetchFromRegistry } from '@pnpm/fetch' -import resolveNodeVersion from '../lib/resolveNodeVersion' +import { resolveNodeVersion } from '@pnpm/node.resolver' const fetch = createFetchFromRegistry({}) diff --git a/packages/node.resolver/tsconfig.json b/packages/node.resolver/tsconfig.json new file mode 100644 index 0000000000..cf8b24d085 --- /dev/null +++ b/packages/node.resolver/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "@pnpm/tsconfig", + "compilerOptions": { + "outDir": "lib", + "rootDir": "src" + }, + "include": [ + "src/**/*.ts", + "../../typings/**/*.d.ts" + ], + "references": [ + { + "path": "../fetch" + }, + { + "path": "../fetching-types" + }, + { + "path": "../node.fetcher" + } + ] +} diff --git a/packages/node.resolver/tsconfig.lint.json b/packages/node.resolver/tsconfig.lint.json new file mode 100644 index 0000000000..0dc5add6b7 --- /dev/null +++ b/packages/node.resolver/tsconfig.lint.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.json", + "include": [ + "src/**/*.ts", + "test/**/*.ts", + "../../typings/**/*.d.ts" + ] +} diff --git a/packages/plugin-commands-env/package.json b/packages/plugin-commands-env/package.json index 74a58e9ffe..989692284b 100644 --- a/packages/plugin-commands-env/package.json +++ b/packages/plugin-commands-env/package.json @@ -34,14 +34,12 @@ "@pnpm/config": "workspace:15.3.0", "@pnpm/error": "workspace:3.0.1", "@pnpm/fetch": "workspace:5.0.3", - "@pnpm/fetcher-base": "workspace:12.1.0", "@pnpm/node.fetcher": "workspace:0.0.0", + "@pnpm/node.resolver": "workspace:0.0.0", "@pnpm/store-path": "workspace:6.0.0", "@zkochan/cmd-shim": "^5.2.2", "load-json-file": "^6.2.0", "render-help": "^1.0.1", - "semver": "^7.3.4", - "version-selector-type": "^3.0.0", "write-json-file": "^4.3.0" }, "funding": "https://opencollective.com/pnpm", @@ -49,7 +47,6 @@ "@pnpm/plugin-commands-env": "workspace:2.1.12", "@pnpm/prepare": "workspace:*", "@types/adm-zip": "^0.4.34", - "@types/semver": "^7.3.4", "adm-zip": "^0.5.5", "execa": "npm:safe-execa@^0.1.1", "nock": "12.0.3", diff --git a/packages/plugin-commands-env/src/env.ts b/packages/plugin-commands-env/src/env.ts index 9126428721..7825e796b9 100644 --- a/packages/plugin-commands-env/src/env.ts +++ b/packages/plugin-commands-env/src/env.ts @@ -3,11 +3,11 @@ import path from 'path' import { docsUrl } from '@pnpm/cli-utils' import PnpmError from '@pnpm/error' import { createFetchFromRegistry } from '@pnpm/fetch' +import { resolveNodeVersion } from '@pnpm/node.resolver' import cmdShim from '@zkochan/cmd-shim' import renderHelp from 'render-help' import { getNodeDir, NvmNodeCommandOptions } from './node' import getNodeMirror from './getNodeMirror' -import resolveNodeVersion from './resolveNodeVersion' import { parseNodeEditionSpecifier } from './parseNodeEditionSpecifier' export function rcOptionsTypes () { diff --git a/packages/plugin-commands-env/tsconfig.json b/packages/plugin-commands-env/tsconfig.json index c7fb3acaf4..ef55a83e7c 100644 --- a/packages/plugin-commands-env/tsconfig.json +++ b/packages/plugin-commands-env/tsconfig.json @@ -25,10 +25,10 @@ "path": "../fetch" }, { - "path": "../fetcher-base" + "path": "../node.fetcher" }, { - "path": "../node.fetcher" + "path": "../node.resolver" }, { "path": "../store-path" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 50d85ade17..f64f848bbe 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1737,6 +1737,25 @@ importers: '@types/adm-zip': 0.4.34 node-fetch: 3.0.0-beta.9 + packages/node.resolver: + specifiers: + '@pnpm/fetch': workspace:5.0.3 + '@pnpm/fetching-types': workspace:3.0.0 + '@pnpm/node.fetcher': workspace:0.0.0 + '@pnpm/node.resolver': workspace:0.0.0 + '@types/semver': ^7.3.4 + semver: ^7.3.4 + version-selector-type: ^3.0.0 + dependencies: + '@pnpm/fetching-types': link:../fetching-types + '@pnpm/node.fetcher': link:../node.fetcher + semver: 7.3.7 + version-selector-type: 3.0.0 + devDependencies: + '@pnpm/fetch': link:../fetch + '@pnpm/node.resolver': 'link:' + '@types/semver': 7.3.9 + packages/normalize-registries: specifiers: '@pnpm/normalize-registries': workspace:3.0.3 @@ -2132,13 +2151,12 @@ importers: '@pnpm/config': workspace:15.3.0 '@pnpm/error': workspace:3.0.1 '@pnpm/fetch': workspace:5.0.3 - '@pnpm/fetcher-base': workspace:12.1.0 '@pnpm/node.fetcher': workspace:0.0.0 + '@pnpm/node.resolver': workspace:0.0.0 '@pnpm/plugin-commands-env': workspace:2.1.12 '@pnpm/prepare': workspace:* '@pnpm/store-path': workspace:6.0.0 '@types/adm-zip': ^0.4.34 - '@types/semver': ^7.3.4 '@zkochan/cmd-shim': ^5.2.2 adm-zip: ^0.5.5 execa: npm:safe-execa@^0.1.1 @@ -2147,28 +2165,23 @@ importers: node-fetch: 3.0.0-beta.9 path-name: ^1.0.0 render-help: ^1.0.1 - semver: ^7.3.4 - version-selector-type: ^3.0.0 write-json-file: ^4.3.0 dependencies: '@pnpm/cli-utils': link:../cli-utils '@pnpm/config': link:../config '@pnpm/error': link:../error '@pnpm/fetch': link:../fetch - '@pnpm/fetcher-base': link:../fetcher-base '@pnpm/node.fetcher': link:../node.fetcher + '@pnpm/node.resolver': link:../node.resolver '@pnpm/store-path': link:../store-path '@zkochan/cmd-shim': 5.2.2 load-json-file: 6.2.0 render-help: 1.0.2 - semver: 7.3.7 - version-selector-type: 3.0.0 write-json-file: 4.3.0 devDependencies: '@pnpm/plugin-commands-env': 'link:' '@pnpm/prepare': link:../../privatePackages/prepare '@types/adm-zip': 0.4.34 - '@types/semver': 7.3.9 adm-zip: 0.5.9 execa: /safe-execa/0.1.1 nock: 12.0.3