From ece5a1aeb94e32e2b1f4a2a1c61813d0f13a8d98 Mon Sep 17 00:00:00 2001 From: Zoltan Kochan Date: Wed, 12 Apr 2023 11:47:28 +0300 Subject: [PATCH] refactor: create a package for hook types (#6380) --- .changeset/silver-cats-own.md | 5 +++ hooks/pnpmfile/package.json | 2 +- hooks/pnpmfile/src/requireHooks.ts | 2 +- hooks/pnpmfile/tsconfig.json | 4 +- hooks/types/README.md | 15 +++++++ hooks/types/package.json | 41 +++++++++++++++++++ .../hooks.ts => hooks/types/src/index.ts | 2 +- hooks/types/tsconfig.json | 20 +++++++++ hooks/types/tsconfig.lint.json | 8 ++++ pkg-manager/core/package.json | 1 + pkg-manager/core/src/index.ts | 1 - .../core/src/install/extendInstallOptions.ts | 2 +- pkg-manager/core/tsconfig.json | 3 ++ pnpm-lock.yaml | 31 ++++++++++---- 14 files changed, 122 insertions(+), 15 deletions(-) create mode 100644 .changeset/silver-cats-own.md create mode 100644 hooks/types/README.md create mode 100644 hooks/types/package.json rename pkg-manager/core/src/install/hooks.ts => hooks/types/src/index.ts (90%) create mode 100644 hooks/types/tsconfig.json create mode 100644 hooks/types/tsconfig.lint.json diff --git a/.changeset/silver-cats-own.md b/.changeset/silver-cats-own.md new file mode 100644 index 00000000000..42d9abd55c5 --- /dev/null +++ b/.changeset/silver-cats-own.md @@ -0,0 +1,5 @@ +--- +"@pnpm/hooks.types": major +--- + +Initial release. diff --git a/hooks/pnpmfile/package.json b/hooks/pnpmfile/package.json index 45aba9cfd67..4396eb1971a 100644 --- a/hooks/pnpmfile/package.json +++ b/hooks/pnpmfile/package.json @@ -33,9 +33,9 @@ "@pnpm/pnpmfile": "workspace:*" }, "dependencies": { - "@pnpm/core": "workspace:*", "@pnpm/core-loggers": "workspace:*", "@pnpm/error": "workspace:*", + "@pnpm/hooks.types": "workspace:*", "@pnpm/lockfile-types": "workspace:*", "@pnpm/store-controller-types": "workspace:*", "@pnpm/types": "workspace:*", diff --git a/hooks/pnpmfile/src/requireHooks.ts b/hooks/pnpmfile/src/requireHooks.ts index 9f5f4364bf7..3f2c2ddfd8d 100644 --- a/hooks/pnpmfile/src/requireHooks.ts +++ b/hooks/pnpmfile/src/requireHooks.ts @@ -1,5 +1,5 @@ import path from 'path' -import type { PreResolutionHook, PreResolutionHookContext, PreResolutionHookLogger } from '@pnpm/core' +import type { PreResolutionHook, PreResolutionHookContext, PreResolutionHookLogger } from '@pnpm/hooks.types' import { hookLogger } from '@pnpm/core-loggers' import pathAbsolute from 'path-absolute' import type { Lockfile } from '@pnpm/lockfile-types' diff --git a/hooks/pnpmfile/tsconfig.json b/hooks/pnpmfile/tsconfig.json index e921393356c..4c761f58f01 100644 --- a/hooks/pnpmfile/tsconfig.json +++ b/hooks/pnpmfile/tsconfig.json @@ -25,10 +25,10 @@ "path": "../../packages/types" }, { - "path": "../../pkg-manager/core" + "path": "../../store/store-controller-types" }, { - "path": "../../store/store-controller-types" + "path": "../types" } ], "composite": true diff --git a/hooks/types/README.md b/hooks/types/README.md new file mode 100644 index 00000000000..ed1dd804808 --- /dev/null +++ b/hooks/types/README.md @@ -0,0 +1,15 @@ +# @pnpm/hooks.types + +> Types for hooks + +[![npm version](https://img.shields.io/npm/v/@pnpm/hooks.types.svg)](https://www.npmjs.com/package/@pnpm/hooks.types) + +## Installation + +```sh +pnpm add @pnpm/hooks.types +``` + +## License + +MIT diff --git a/hooks/types/package.json b/hooks/types/package.json new file mode 100644 index 00000000000..3779313b78b --- /dev/null +++ b/hooks/types/package.json @@ -0,0 +1,41 @@ +{ + "name": "@pnpm/hooks.types", + "version": "0.0.0", + "description": "Types for hooks", + "main": "lib/index.js", + "types": "lib/index.d.ts", + "files": [ + "lib", + "!*.map" + ], + "engines": { + "node": ">=16.14" + }, + "scripts": { + "test": "pnpm run compile", + "prepublishOnly": "pnpm run compile", + "compile": "tsc --build && pnpm run lint --fix", + "lint": "eslint \"src/**/*.ts\"" + }, + "repository": "https://github.com/pnpm/pnpm/blob/main/hooks/types", + "keywords": [ + "pnpm8", + "pnpm" + ], + "license": "MIT", + "bugs": { + "url": "https://github.com/pnpm/pnpm/issues" + }, + "homepage": "https://github.com/pnpm/pnpm/blob/main/hooks/types#readme", + "devDependencies": { + "@pnpm/hooks.types": "workspace:*" + }, + "dependencies": { + "@pnpm/lockfile-types": "workspace:*", + "@pnpm/types": "workspace:*" + }, + "funding": "https://opencollective.com/pnpm", + "exports": { + ".": "./lib/index.js" + } +} diff --git a/pkg-manager/core/src/install/hooks.ts b/hooks/types/src/index.ts similarity index 90% rename from pkg-manager/core/src/install/hooks.ts rename to hooks/types/src/index.ts index 7e486d08508..a97f4da2f70 100644 --- a/pkg-manager/core/src/install/hooks.ts +++ b/hooks/types/src/index.ts @@ -1,4 +1,4 @@ -import type { Lockfile } from '@pnpm/lockfile-file' +import type { Lockfile } from '@pnpm/lockfile-types' import type { Registries } from '@pnpm/types' export interface PreResolutionHookContext { diff --git a/hooks/types/tsconfig.json b/hooks/types/tsconfig.json new file mode 100644 index 00000000000..1e5f5ac16f3 --- /dev/null +++ b/hooks/types/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "@pnpm/tsconfig", + "compilerOptions": { + "outDir": "lib", + "rootDir": "src" + }, + "include": [ + "src/**/*.ts", + "../../__typings__/**/*.d.ts" + ], + "references": [ + { + "path": "../../lockfile/lockfile-types" + }, + { + "path": "../../packages/types" + } + ], + "composite": true +} diff --git a/hooks/types/tsconfig.lint.json b/hooks/types/tsconfig.lint.json new file mode 100644 index 00000000000..1bbe711971a --- /dev/null +++ b/hooks/types/tsconfig.lint.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.json", + "include": [ + "src/**/*.ts", + "test/**/*.ts", + "../../__typings__/**/*.d.ts" + ] +} diff --git a/pkg-manager/core/package.json b/pkg-manager/core/package.json index f3408e6ccd8..0a36a0d1543 100644 --- a/pkg-manager/core/package.json +++ b/pkg-manager/core/package.json @@ -28,6 +28,7 @@ "@pnpm/headless": "workspace:*", "@pnpm/hoist": "workspace:*", "@pnpm/hooks.read-package-hook": "workspace:*", + "@pnpm/hooks.types": "workspace:*", "@pnpm/lifecycle": "workspace:*", "@pnpm/link-bins": "workspace:*", "@pnpm/lockfile-file": "workspace:*", diff --git a/pkg-manager/core/src/index.ts b/pkg-manager/core/src/index.ts index 3d99ddee171..1dd92c3b902 100644 --- a/pkg-manager/core/src/index.ts +++ b/pkg-manager/core/src/index.ts @@ -8,7 +8,6 @@ export type { } from '@pnpm/types' export type { HoistingLimits } from '@pnpm/headless' export * from './api' -export * from './install/hooks' export { type ProjectOptions, UnexpectedStoreError, UnexpectedVirtualStoreDirError } from '@pnpm/get-context' export type { InstallOptions } from './install/extendInstallOptions' diff --git a/pkg-manager/core/src/install/extendInstallOptions.ts b/pkg-manager/core/src/install/extendInstallOptions.ts index 86ef1732ffe..8aad88665b7 100644 --- a/pkg-manager/core/src/install/extendInstallOptions.ts +++ b/pkg-manager/core/src/install/extendInstallOptions.ts @@ -17,7 +17,7 @@ import { } from '@pnpm/types' import { pnpmPkgJson } from '../pnpmPkgJson' import { type ReporterFunction } from '../types' -import { type PreResolutionHookContext } from './hooks' +import { type PreResolutionHookContext } from '@pnpm/hooks.types' export interface StrictInstallOptions { autoInstallPeers: boolean diff --git a/pkg-manager/core/tsconfig.json b/pkg-manager/core/tsconfig.json index 475ecafffb5..e0873d83de6 100644 --- a/pkg-manager/core/tsconfig.json +++ b/pkg-manager/core/tsconfig.json @@ -42,6 +42,9 @@ { "path": "../../hooks/read-package-hook" }, + { + "path": "../../hooks/types" + }, { "path": "../../lockfile/filter-lockfile" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e44b99c61d3..6def6111598 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1582,15 +1582,15 @@ importers: hooks/pnpmfile: dependencies: - '@pnpm/core': - specifier: workspace:* - version: link:../../pkg-manager/core '@pnpm/core-loggers': specifier: workspace:* version: link:../../packages/core-loggers '@pnpm/error': specifier: workspace:* version: link:../../packages/error + '@pnpm/hooks.types': + specifier: workspace:* + version: link:../types '@pnpm/lockfile-types': specifier: workspace:* version: link:../../lockfile/lockfile-types @@ -1663,6 +1663,19 @@ importers: specifier: 4.0.0-rc.42 version: 4.0.0-rc.42(typanion@3.12.1) + hooks/types: + dependencies: + '@pnpm/lockfile-types': + specifier: workspace:* + version: link:../../lockfile/lockfile-types + '@pnpm/types': + specifier: workspace:* + version: link:../../packages/types + devDependencies: + '@pnpm/hooks.types': + specifier: workspace:* + version: 'link:' + lockfile/audit: dependencies: '@pnpm/error': @@ -2668,6 +2681,9 @@ importers: '@pnpm/hooks.read-package-hook': specifier: workspace:* version: link:../../hooks/read-package-hook + '@pnpm/hooks.types': + specifier: workspace:* + version: link:../../hooks/types '@pnpm/lifecycle': specifier: workspace:* version: link:../../exec/lifecycle @@ -8787,7 +8803,7 @@ packages: dependencies: '@types/http-cache-semantics': 4.0.1 '@types/keyv': 3.1.4 - '@types/node': 18.15.11 + '@types/node': 14.18.42 '@types/responselike': 1.0.0 /@types/concat-stream@2.0.0: @@ -8815,7 +8831,7 @@ packages: resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 18.15.11 + '@types/node': 14.18.42 dev: true /@types/graceful-fs@4.1.6: @@ -8889,7 +8905,7 @@ packages: /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 18.15.11 + '@types/node': 14.18.42 /@types/lodash@4.14.181: resolution: {integrity: sha512-n3tyKthHJbkiWhDZs3DkhkCzt2MexYHXlX0td5iMplyfwketaOeKboEVBqzceH7juqvEg3q5oUoBFxSLu7zFag==} @@ -8932,7 +8948,6 @@ packages: /@types/node@14.18.42: resolution: {integrity: sha512-xefu+RBie4xWlK8hwAzGh3npDz/4VhF6icY/shU+zv/1fNn+ZVG7T7CRwe9LId9sAYRPxI+59QBPuKL3WpyGRg==} - dev: true /@types/node@18.15.11: resolution: {integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==} @@ -8969,7 +8984,7 @@ packages: /@types/responselike@1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: - '@types/node': 18.15.11 + '@types/node': 14.18.42 /@types/retry@0.12.2: resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==}