diff --git a/.changeset/twelve-cherries-exercise.md b/.changeset/twelve-cherries-exercise.md new file mode 100644 index 0000000000..ac40d9b9c8 --- /dev/null +++ b/.changeset/twelve-cherries-exercise.md @@ -0,0 +1,5 @@ +--- +"@pnpm/npm-registry-agent": minor +--- + +Export AgentOptions type. diff --git a/package.json b/package.json index 0fe5bf0140..40f33752b1 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "update-manifests": "ts-node utils/updater/src/index.ts" }, "devDependencies": { - "@changesets/cli": "^2.9.2", + "@changesets/cli": "^2.10.0", "@pnpm/registry-mock": "^2.0.1", "@pnpm/tsconfig": "workspace:*", "@pnpm/tslint-config": "workspace:*", diff --git a/packages/client/src/index.ts b/packages/client/src/index.ts index f34b218472..51fd8e894c 100644 --- a/packages/client/src/index.ts +++ b/packages/client/src/index.ts @@ -1,5 +1,5 @@ import createResolve, { ResolverFactoryOptions } from '@pnpm/default-resolver' -import { createFetchFromRegistry } from '@pnpm/fetch' +import { AgentOptions, createFetchFromRegistry } from '@pnpm/fetch' import { FetchFromRegistry, GetCredentials, RetryTimeoutOptions } from '@pnpm/fetching-types' import fetchFromGit from '@pnpm/git-fetcher' import createTarballFetcher from '@pnpm/tarball-fetcher' @@ -8,17 +8,9 @@ import mem = require('mem') export default function (opts: { authConfig: Record, - ca?: string, - cert?: string, - key?: string, - localAddress?: string, - noProxy?: string | boolean, - httpProxy?: string, - httpsProxy?: string, retry?: RetryTimeoutOptions, - strictSSL?: boolean, userAgent?: string, -} & ResolverFactoryOptions) { +} & ResolverFactoryOptions & AgentOptions) { const fetchFromRegistry = createFetchFromRegistry(opts) const getCredentials = mem((registry: string) => getCredentialsByURI(opts.authConfig, registry)) return { diff --git a/packages/fetch/src/fetchFromRegistry.ts b/packages/fetch/src/fetchFromRegistry.ts index eaffa772bd..a9c19de9c6 100644 --- a/packages/fetch/src/fetchFromRegistry.ts +++ b/packages/fetch/src/fetchFromRegistry.ts @@ -1,5 +1,5 @@ import { FetchFromRegistry } from '@pnpm/fetching-types' -import npmRegistryAgent from '@pnpm/npm-registry-agent' +import npmRegistryAgent, { AgentOptions } from '@pnpm/npm-registry-agent' import { URL } from 'url' import fetch, { isRedirect, Response } from './fetch' @@ -9,19 +9,13 @@ const CORGI_DOC = 'application/vnd.npm.install-v1+json; q=1.0, application/json; const JSON_DOC = 'application/json' const MAX_FOLLOWED_REDIRECTS = 20 +export { AgentOptions } + export default function ( defaultOpts: { fullMetadata?: boolean, - // proxy - proxy?: string, - localAddress?: string, - // ssl - ca?: string, - cert?: string, - key?: string, - strictSSL?: boolean, userAgent?: string, - } + } & AgentOptions ): FetchFromRegistry { return async (url, opts): Promise => { const headers = { diff --git a/packages/fetch/src/index.ts b/packages/fetch/src/index.ts index f71e891d48..7fbd94844a 100644 --- a/packages/fetch/src/index.ts +++ b/packages/fetch/src/index.ts @@ -1,6 +1,11 @@ import { FetchFromRegistry } from '@pnpm/fetching-types' import fetch, { RetryTimeoutOptions } from './fetch' -import createFetchFromRegistry from './fetchFromRegistry' +import createFetchFromRegistry, { AgentOptions } from './fetchFromRegistry' export default fetch -export { createFetchFromRegistry, FetchFromRegistry, RetryTimeoutOptions } +export { + AgentOptions, + createFetchFromRegistry, + FetchFromRegistry, + RetryTimeoutOptions, +} diff --git a/packages/npm-registry-agent/src/index.ts b/packages/npm-registry-agent/src/index.ts index 5eff82d315..61c0bb42da 100644 --- a/packages/npm-registry-agent/src/index.ts +++ b/packages/npm-registry-agent/src/index.ts @@ -9,21 +9,20 @@ const HttpsAgent = HttpAgent.HttpsAgent const AGENT_CACHE = new LRU({ max: 50 }) -export default function getAgent ( - uri: string, - opts: { - localAddress?: string, - strictSSL?: boolean, - ca?: string, - cert?: string, - key?: string, - maxSockets?: number, - timeout?: number, - httpProxy?: string, - httpsProxy?: string, - noProxy?: boolean | string, - } -) { +export type AgentOptions = { + ca?: string, + cert?: string, + httpProxy?: string, + httpsProxy?: string, + key?: string, + localAddress?: string, + maxSockets?: number, + noProxy?: boolean | string, + strictSSL?: boolean, + timeout?: number, +} + +export default function getAgent (uri: string, opts: AgentOptions) { const parsedUri = new URL(uri) const isHttps = parsedUri.protocol === 'https:' const pxuri = getProxyUri(uri, opts) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 92828f4778..92a32d7c5c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,7 +1,7 @@ importers: .: devDependencies: - '@changesets/cli': 2.9.2 + '@changesets/cli': 2.10.0 '@pnpm/registry-mock': 2.0.1 '@pnpm/tsconfig': 'link:utils/tsconfig' '@pnpm/tslint-config': 'link:utils/tslint-config' @@ -21,7 +21,7 @@ importers: verdaccio: 4.8.1 yarn: 1.22.4 specifiers: - '@changesets/cli': ^2.9.2 + '@changesets/cli': ^2.10.0 '@pnpm/registry-mock': ^2.0.1 '@pnpm/tsconfig': 'workspace:*' '@pnpm/tslint-config': 'workspace:*' @@ -3045,7 +3045,7 @@ packages: integrity: sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== /@babel/runtime/7.11.2: dependencies: - regenerator-runtime: 0.13.5 + regenerator-runtime: 0.13.7 resolution: integrity: sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw== /@bcoe/v8-coverage/0.2.3: @@ -3057,9 +3057,9 @@ packages: '@babel/runtime': 7.11.2 '@changesets/config': 1.3.0 '@changesets/get-version-range-type': 0.3.2 - '@changesets/git': 1.0.5 - '@changesets/types': 3.1.0 - '@manypkg/get-packages': 1.1.0 + '@changesets/git': 1.0.6 + '@changesets/types': 3.1.1 + '@manypkg/get-packages': 1.1.1 fs-extra: 7.0.1 lodash.startcase: 4.4.0 outdent: 0.5.0 @@ -3074,13 +3074,13 @@ packages: '@babel/runtime': 7.11.2 '@changesets/errors': 0.1.4 '@changesets/get-dependents-graph': 1.1.3 - '@changesets/types': 3.1.0 - '@manypkg/get-packages': 1.1.0 + '@changesets/types': 3.1.1 + '@manypkg/get-packages': 1.1.1 semver: 5.7.1 dev: true resolution: integrity: sha512-TvcqUhNhKoqwE+L8dFtcwwAmos4+fqwmSkOWP3TSjw7K/inz2wjC46bA7IFtbx2hrwEq1iG0RCweQZTS2vrx1w== - /@changesets/cli/2.9.2: + /@changesets/cli/2.10.0: dependencies: '@babel/runtime': 7.11.2 '@changesets/apply-release-plan': 4.0.0 @@ -3089,17 +3089,18 @@ packages: '@changesets/errors': 0.1.4 '@changesets/get-dependents-graph': 1.1.3 '@changesets/get-release-plan': 2.0.0 - '@changesets/git': 1.0.5 + '@changesets/git': 1.0.6 '@changesets/logger': 0.0.5 '@changesets/pre': 1.0.5 '@changesets/read': 0.4.6 - '@changesets/types': 3.1.0 + '@changesets/types': 3.1.1 '@changesets/write': 0.1.3 - '@manypkg/get-packages': 1.1.0 + '@manypkg/get-packages': 1.1.1 '@types/semver': 6.2.1 boxen: 1.3.0 chalk: 2.4.2 enquirer: 2.3.6 + external-editor: 3.1.0 fs-extra: 7.0.1 human-id: 1.0.2 is-ci: 2.0.0 @@ -3114,14 +3115,14 @@ packages: dev: true hasBin: true resolution: - integrity: sha512-1L9391G4YlofC1UbfwmBrsefwC03mJHK5Cn8oSozhQJMbRlCJLBJiOn5PHFruVMFcvACGER3R+2Yv62pGKneDw== + integrity: sha512-HVgfZrFlUbk34y+uYhgYnQsFRqjDDSxdhhZDQYtdMPprhXOmrCAih8frjSJl73sjU4s2TAlXb+d3/ZgTFeki9w== /@changesets/config/1.3.0: dependencies: '@changesets/errors': 0.1.4 '@changesets/get-dependents-graph': 1.1.3 '@changesets/logger': 0.0.5 - '@changesets/types': 3.1.0 - '@manypkg/get-packages': 1.1.0 + '@changesets/types': 3.1.1 + '@manypkg/get-packages': 1.1.1 fs-extra: 7.0.1 dev: true resolution: @@ -3134,8 +3135,8 @@ packages: integrity: sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q== /@changesets/get-dependents-graph/1.1.3: dependencies: - '@changesets/types': 3.1.0 - '@manypkg/get-packages': 1.1.0 + '@changesets/types': 3.1.1 + '@manypkg/get-packages': 1.1.1 chalk: 2.4.2 fs-extra: 7.0.1 semver: 5.7.1 @@ -3149,8 +3150,8 @@ packages: '@changesets/config': 1.3.0 '@changesets/pre': 1.0.5 '@changesets/read': 0.4.6 - '@changesets/types': 3.1.0 - '@manypkg/get-packages': 1.1.0 + '@changesets/types': 3.1.1 + '@manypkg/get-packages': 1.1.1 dev: true resolution: integrity: sha512-MHbgXMhkfWhXH1zUefrdtQ8IR+H46lAcKthKjptV28k0qGEcDk7KriYLukJ6BNkWiZkkZ/aycaivbNDclF9zaw== @@ -3158,17 +3159,17 @@ packages: dev: true resolution: integrity: sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg== - /@changesets/git/1.0.5: + /@changesets/git/1.0.6: dependencies: '@babel/runtime': 7.11.2 '@changesets/errors': 0.1.4 - '@changesets/types': 3.1.0 - '@manypkg/get-packages': 1.1.0 + '@changesets/types': 3.1.1 + '@manypkg/get-packages': 1.1.1 is-subdir: 1.1.1 spawndamnit: 2.0.0 dev: true resolution: - integrity: sha512-MgacjTRCrfFCffvoipqbtHSENydaO+HDR6z+gDQ49Gl2kHIat0iIazL1TBfEuW8H4eGCay+Naz/x6412ucUOTw== + integrity: sha512-e0M06XuME3W5lGhz+CO0vLc60u+hLk/pYjOx/6GXEWuQrwtGgeycFIfRgRt8qTs664o1oKtVHBbd7ItpoWgFfA== /@changesets/logger/0.0.5: dependencies: chalk: 2.4.2 @@ -3177,7 +3178,7 @@ packages: integrity: sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw== /@changesets/parse/0.3.6: dependencies: - '@changesets/types': 3.1.0 + '@changesets/types': 3.1.1 js-yaml: 3.14.0 dev: true resolution: @@ -3186,8 +3187,8 @@ packages: dependencies: '@babel/runtime': 7.11.2 '@changesets/errors': 0.1.4 - '@changesets/types': 3.1.0 - '@manypkg/get-packages': 1.1.0 + '@changesets/types': 3.1.1 + '@manypkg/get-packages': 1.1.1 fs-extra: 7.0.1 dev: true resolution: @@ -3195,24 +3196,24 @@ packages: /@changesets/read/0.4.6: dependencies: '@babel/runtime': 7.11.2 - '@changesets/git': 1.0.5 + '@changesets/git': 1.0.6 '@changesets/logger': 0.0.5 '@changesets/parse': 0.3.6 - '@changesets/types': 3.1.0 + '@changesets/types': 3.1.1 chalk: 2.4.2 fs-extra: 7.0.1 p-filter: 2.1.0 dev: true resolution: integrity: sha512-rOd8dsF/Lgyy2SYlDalb3Ts/meDI2AcKPXYhSXIW3k6+ZLlj6Pt+nmgV5Ut8euyH7loibklNTDemfvMffF4xig== - /@changesets/types/3.1.0: + /@changesets/types/3.1.1: dev: true resolution: - integrity: sha512-czOfaaxr5aGnNwVRgWr3n2CKoc3iRTfrHM4wUHQ+rBlLKKk9NzGwZ2EPsXkp4CUw4hWHGEOi8hdeIfDTWKrWgg== + integrity: sha512-XWGEGWXhM92zvBWiQt2sOwhjTt8eCQbrsRbqkv4WYwW3Zsl4qPpvhHsNt845S42dJXrxgjWvId+jxFQocCayNQ== /@changesets/write/0.1.3: dependencies: '@babel/runtime': 7.11.2 - '@changesets/types': 3.1.0 + '@changesets/types': 3.1.1 fs-extra: 7.0.1 human-id: 1.0.2 prettier: 1.19.1 @@ -3410,7 +3411,7 @@ packages: dev: true resolution: integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA== - /@manypkg/get-packages/1.1.0: + /@manypkg/get-packages/1.1.1: dependencies: '@babel/runtime': 7.11.2 '@manypkg/find-root': 1.1.0 @@ -3419,7 +3420,7 @@ packages: read-yaml-file: 1.1.0 dev: true resolution: - integrity: sha512-s1Bceeu/zy769nFJRa0F6WzHKf0J21vrRN1jrTeZJ+q3LDxspV3JbQkgCLgYVlWD0d81cXK1gCwR1+oJhBejHQ== + integrity: sha512-J6VClfQSVgR6958eIDTGjfdCrELy1eT+SHeoSMomnvRQVktZMnEA5edIr5ovRFNw5y+Bk/jyoevPzGYod96mhw== /@most/multicast/1.3.0_most@1.8.1: dependencies: '@most/prelude': 1.7.3 @@ -4686,9 +4687,9 @@ packages: /aws-sign2/0.7.0: resolution: integrity: sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - /aws4/1.10.0: + /aws4/1.10.1: resolution: - integrity: sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA== + integrity: sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA== /babel-polyfill/6.26.0: dependencies: babel-runtime: 6.26.0 @@ -5088,6 +5089,10 @@ packages: node: '>=10' resolution: integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + /chardet/0.7.0: + dev: true + resolution: + integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== /choices-separator/2.0.0: dependencies: ansi-dim: 0.1.1 @@ -6232,12 +6237,12 @@ packages: /execa/4.0.3: dependencies: cross-spawn: 7.0.3 - get-stream: 5.1.0 + get-stream: 5.2.0 human-signals: 1.1.1 is-stream: 2.0.0 merge-stream: 2.0.0 npm-run-path: 4.0.1 - onetime: 5.1.1 + onetime: 5.1.2 signal-exit: 3.0.3 strip-final-newline: 2.0.0 engines: @@ -6331,6 +6336,16 @@ packages: dev: true resolution: integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg== + /external-editor/3.1.0: + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + dev: true + engines: + node: '>=4' + resolution: + integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== /extglob/2.0.4: dependencies: array-unique: 0.3.2 @@ -6744,6 +6759,13 @@ packages: node: '>=8' resolution: integrity: sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== + /get-stream/5.2.0: + dependencies: + pump: 3.0.0 + engines: + node: '>=8' + resolution: + integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== /get-value/2.0.6: dev: true engines: @@ -9125,10 +9147,18 @@ packages: /onetime/5.1.1: dependencies: mimic-fn: 2.1.0 + dev: true engines: node: '>=6' resolution: integrity: sha512-ZpZpjcJeugQfWsfyQlshVoowIIQ1qBGSVll4rfDq6JJVO//fesjoX808hXWfBjY+ROZgpKDI5TRSRBSoJiZ8eg== + /onetime/5.1.2: + dependencies: + mimic-fn: 2.1.0 + engines: + node: '>=6' + resolution: + integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== /opencollective-postinstall/2.0.3: dev: true hasBin: true @@ -9170,7 +9200,6 @@ packages: resolution: integrity: sha1-/7xJiDNuDoM94MFox+8VISGqf7M= /os-tmpdir/1.0.2: - dev: false engines: node: '>=0.10.0' resolution: @@ -10156,8 +10185,12 @@ packages: resolution: integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== /regenerator-runtime/0.13.5: + dev: true resolution: integrity: sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== + /regenerator-runtime/0.13.7: + resolution: + integrity: sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== /regex-not/1.0.2: dependencies: extend-shallow: 3.0.2 @@ -10291,7 +10324,7 @@ packages: /request/2.88.0: dependencies: aws-sign2: 0.7.0 - aws4: 1.10.0 + aws4: 1.10.1 caseless: 0.12.0 combined-stream: 1.0.8 extend: 3.0.2 @@ -10319,7 +10352,7 @@ packages: /request/2.88.2: dependencies: aws-sign2: 0.7.0 - aws4: 1.10.0 + aws4: 1.10.1 caseless: 0.12.0 combined-stream: 1.0.8 extend: 3.0.2 @@ -11383,6 +11416,14 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-dkpaEa9QVhkhsTPztE5hhofg9cM= + /tmp/0.0.33: + dependencies: + os-tmpdir: 1.0.2 + dev: true + engines: + node: '>=0.6.0' + resolution: + integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== /to-absolute-glob/2.0.2: dependencies: is-absolute: 1.0.0