mirror of
https://github.com/pnpm/pnpm.git
synced 2025-12-23 23:29:17 -05:00
feat: support scoped client certificates (#7626)
close #7427 --------- Co-authored-by: Zoltan Kochan <z@kochan.io>
This commit is contained in:
25
.changeset/breezy-points-chew.md
Normal file
25
.changeset/breezy-points-chew.md
Normal file
@@ -0,0 +1,25 @@
|
||||
---
|
||||
"@pnpm/plugin-commands-store-inspecting": minor
|
||||
"@pnpm/plugin-commands-publishing": minor
|
||||
"@pnpm/resolve-dependencies": minor
|
||||
"@pnpm/store-connection-manager": minor
|
||||
"@pnpm/plugin-commands-rebuild": minor
|
||||
"@pnpm/plugin-commands-env": minor
|
||||
"@pnpm/client": minor
|
||||
"@pnpm/core": minor
|
||||
"@pnpm/types": minor
|
||||
"@pnpm/config": minor
|
||||
"@pnpm/fetch": minor
|
||||
"pnpm": minor
|
||||
---
|
||||
|
||||
Added support for registry-scoped SSL configurations (cert, key, and ca). Three new settings supported: `<registryURL>:certfile`, `<registryURL>:keyfile`, and `<registryURL>:ca`. For instance:
|
||||
|
||||
```
|
||||
//registry.mycomp.com/:certfile=server-cert.pem
|
||||
//registry.mycomp.com/:keyfile=server-key.pem
|
||||
//registry.mycomp.com/:cafile=client-cert.pem
|
||||
```
|
||||
|
||||
Related issue: [#7427](https://github.com/pnpm/pnpm/issues/7427).
|
||||
Related PR: [#7626](https://github.com/pnpm/pnpm/pull/7626).
|
||||
@@ -3,6 +3,7 @@ import {
|
||||
type ProjectManifest,
|
||||
type ProjectsGraph,
|
||||
type Registries,
|
||||
type SslConfig,
|
||||
} from '@pnpm/types'
|
||||
import type { Hooks } from '@pnpm/pnpmfile'
|
||||
|
||||
@@ -166,6 +167,7 @@ export interface Config {
|
||||
packGzipLevel?: number
|
||||
|
||||
registries: Registries
|
||||
sslConfigs: Record<string, SslConfig>
|
||||
ignoreWorkspaceRootCheck: boolean
|
||||
workspaceRoot: boolean
|
||||
|
||||
|
||||
36
config/config/src/getNetworkConfigs.ts
Normal file
36
config/config/src/getNetworkConfigs.ts
Normal file
@@ -0,0 +1,36 @@
|
||||
import { type SslConfig } from '@pnpm/types'
|
||||
import normalizeRegistryUrl from 'normalize-registry-url'
|
||||
import fs from 'fs'
|
||||
|
||||
export interface GetNetworkConfigsResult {
|
||||
sslConfigs: Record<string, SslConfig>
|
||||
registries: Record<string, string>
|
||||
}
|
||||
|
||||
export function getNetworkConfigs (rawConfig: Record<string, object>): GetNetworkConfigsResult {
|
||||
// Get all the auth options that have :certfile or :keyfile in their name
|
||||
const sslConfigs: Record<string, SslConfig> = {}
|
||||
const registries: Record<string, string> = {}
|
||||
for (const [configKey, value] of Object.entries(rawConfig)) {
|
||||
if (configKey[0] === '@' && configKey.endsWith(':registry')) {
|
||||
registries[configKey.slice(0, configKey.indexOf(':'))] = normalizeRegistryUrl(value as unknown as string)
|
||||
} else if (configKey.includes(':certfile') || configKey.includes(':keyfile') || configKey.includes(':cafile')) {
|
||||
// Split by '/:' because the registry may contain a port
|
||||
const registry = configKey.split('/:')[0] + '/'
|
||||
if (!sslConfigs[registry]) {
|
||||
sslConfigs[registry] = { cert: '', key: '' }
|
||||
}
|
||||
if (configKey.includes(':certfile')) {
|
||||
sslConfigs[registry].cert = fs.readFileSync(value as unknown as string, 'utf8')
|
||||
} else if (configKey.includes(':keyfile')) {
|
||||
sslConfigs[registry].key = fs.readFileSync(value as unknown as string, 'utf8')
|
||||
} else if (configKey.includes(':cafile')) {
|
||||
sslConfigs[registry].ca = fs.readFileSync(value as unknown as string, 'utf8')
|
||||
}
|
||||
}
|
||||
}
|
||||
return {
|
||||
registries,
|
||||
sslConfigs,
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
import normalizeRegistryUrl from 'normalize-registry-url'
|
||||
|
||||
export function getScopeRegistries (rawConfig: Record<string, object>) {
|
||||
const registries: Record<string, string> = {}
|
||||
for (const configKey of Object.keys(rawConfig)) {
|
||||
if (configKey[0] === '@' && configKey.endsWith(':registry')) {
|
||||
registries[configKey.slice(0, configKey.indexOf(':'))] = normalizeRegistryUrl(rawConfig[configKey] as unknown as string)
|
||||
}
|
||||
}
|
||||
return registries
|
||||
}
|
||||
@@ -16,7 +16,7 @@ import realpathMissing from 'realpath-missing'
|
||||
import pathAbsolute from 'path-absolute'
|
||||
import which from 'which'
|
||||
import { checkGlobalBinDir } from './checkGlobalBinDir'
|
||||
import { getScopeRegistries } from './getScopeRegistries'
|
||||
import { getNetworkConfigs } from './getNetworkConfigs'
|
||||
import { getCacheDir, getConfigDir, getDataDir, getStateDir } from './dirs'
|
||||
import {
|
||||
type Config,
|
||||
@@ -319,10 +319,12 @@ export async function getConfig (
|
||||
cliOptions,
|
||||
{ 'user-agent': pnpmConfig.userAgent },
|
||||
] as any) // eslint-disable-line @typescript-eslint/no-explicit-any
|
||||
const networkConfigs = getNetworkConfigs(pnpmConfig.rawConfig)
|
||||
pnpmConfig.registries = {
|
||||
default: normalizeRegistryUrl(pnpmConfig.rawConfig.registry),
|
||||
...getScopeRegistries(pnpmConfig.rawConfig),
|
||||
...networkConfigs.registries,
|
||||
}
|
||||
pnpmConfig.sslConfigs = networkConfigs.sslConfigs
|
||||
pnpmConfig.useLockfile = (() => {
|
||||
if (typeof pnpmConfig.lockfile === 'boolean') return pnpmConfig.lockfile
|
||||
if (typeof pnpmConfig.packageLock === 'boolean') return pnpmConfig.packageLock
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
{
|
||||
"words": [
|
||||
"TLSV",
|
||||
"adduser",
|
||||
"adipiscing",
|
||||
"amet",
|
||||
@@ -24,6 +25,7 @@
|
||||
"cafs",
|
||||
"camelcase",
|
||||
"canonicalizer",
|
||||
"certfile",
|
||||
"clonedeep",
|
||||
"cmds",
|
||||
"colorterm",
|
||||
@@ -120,6 +122,7 @@
|
||||
"mintimeout",
|
||||
"monorepolint",
|
||||
"mountpoint",
|
||||
"mycomp",
|
||||
"mycompany",
|
||||
"myorg",
|
||||
"mypackage",
|
||||
|
||||
2
env/plugin-commands-env/src/node.ts
vendored
2
env/plugin-commands-env/src/node.ts
vendored
@@ -31,7 +31,7 @@ export type NvmNodeCommandOptions = Pick<Config,
|
||||
| 'storeDir'
|
||||
| 'useNodeVersion'
|
||||
| 'pnpmHomeDir'
|
||||
> & Partial<Pick<Config, 'configDir' | 'cliOptions'>> & {
|
||||
> & Partial<Pick<Config, 'configDir' | 'cliOptions' | 'sslConfigs'>> & {
|
||||
remote?: boolean
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ import { type StoreController } from '@pnpm/store-controller-types'
|
||||
import { type Registries } from '@pnpm/types'
|
||||
import loadJsonFile from 'load-json-file'
|
||||
|
||||
export interface StrictRebuildOptions {
|
||||
export type StrictRebuildOptions = {
|
||||
autoInstallPeers: boolean
|
||||
cacheDir: string
|
||||
childConcurrency: number
|
||||
@@ -48,7 +48,7 @@ export interface StrictRebuildOptions {
|
||||
deployAllFiles: boolean
|
||||
neverBuiltDependencies?: string[]
|
||||
onlyBuiltDependencies?: string[]
|
||||
}
|
||||
} & Pick<Config, 'sslConfigs'>
|
||||
|
||||
export type RebuildOptions = Partial<StrictRebuildOptions> &
|
||||
Pick<StrictRebuildOptions, 'storeDir' | 'storeController'> & Pick<Config, 'rootProjectManifest' | 'rootProjectManifestDir'>
|
||||
|
||||
@@ -34,20 +34,17 @@ export function createFuseHandlersFromLockfile (lockfile: Lockfile, cafsDir: str
|
||||
open (p: string, flags: string | number, cb: (exitCode: number, fd?: number) => void) {
|
||||
const dirEnt = getDirEnt(p)
|
||||
if (dirEnt?.entryType !== 'index') {
|
||||
// eslint-disable-next-line n/no-callback-literal
|
||||
cb(-1)
|
||||
return
|
||||
}
|
||||
const fileInfo = dirEnt.index.files[dirEnt.subPath]
|
||||
if (!fileInfo) {
|
||||
// eslint-disable-next-line n/no-callback-literal
|
||||
cb(-1)
|
||||
return
|
||||
}
|
||||
const filePathInStore = getFilePathByModeInCafs(cafsDir, fileInfo.integrity, fileInfo.mode)
|
||||
fs.open(filePathInStore, flags, (err, fd) => {
|
||||
if (err != null) {
|
||||
// eslint-disable-next-line n/no-callback-literal
|
||||
cb(-1)
|
||||
return
|
||||
}
|
||||
@@ -57,13 +54,12 @@ export function createFuseHandlersFromLockfile (lockfile: Lockfile, cafsDir: str
|
||||
},
|
||||
release (p: string, fd: number, cb: (exitCode: number) => void) {
|
||||
fs.close(fd, (err) => {
|
||||
cb((err != null) ? -1 : 0) // eslint-disable-line n/no-callback-literal
|
||||
cb((err != null) ? -1 : 0)
|
||||
})
|
||||
},
|
||||
read (p: string, fd: number, buffer: Buffer, length: number, position: number, cb: (readBytes: number) => void) {
|
||||
fs.read(fd, buffer, 0, length, position, (err, bytesRead) => {
|
||||
if (err != null) {
|
||||
// eslint-disable-next-line n/no-callback-literal
|
||||
cb(-1)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -35,12 +35,14 @@
|
||||
"dependencies": {
|
||||
"@pnpm/core-loggers": "workspace:*",
|
||||
"@pnpm/fetching-types": "workspace:*",
|
||||
"@pnpm/network.agent": "0.1.0",
|
||||
"@pnpm/network.agent": "^1.0.1",
|
||||
"@pnpm/types": "workspace:*",
|
||||
"@zkochan/retry": "^0.2.0",
|
||||
"node-fetch": "npm:@pnpm/node-fetch@1.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@pnpm/fetch": "workspace:*",
|
||||
"https-proxy-server-express": "0.1.2",
|
||||
"nock": "13.3.4"
|
||||
},
|
||||
"funding": "https://opencollective.com/pnpm",
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { URL } from 'url'
|
||||
import { type SslConfig } from '@pnpm/types'
|
||||
import { type FetchFromRegistry } from '@pnpm/fetching-types'
|
||||
import { getAgent, type AgentOptions } from '@pnpm/network.agent'
|
||||
import { fetch, isRedirect, type Response, type RequestInfo, type RequestInit } from './fetch'
|
||||
@@ -33,6 +34,7 @@ export function createFetchFromRegistry (
|
||||
defaultOpts: {
|
||||
fullMetadata?: boolean
|
||||
userAgent?: string
|
||||
sslConfigs?: Record<string, SslConfig>
|
||||
} & AgentOptions
|
||||
): FetchFromRegistry {
|
||||
return async (url, opts): Promise<Response> => {
|
||||
@@ -59,7 +61,10 @@ export function createFetchFromRegistry (
|
||||
// We should pass a URL object to node-fetch till this is not resolved:
|
||||
// https://github.com/bitinn/node-fetch/issues/245
|
||||
const response = await fetchWithAgent(urlObject, {
|
||||
agentOptions,
|
||||
agentOptions: {
|
||||
...agentOptions,
|
||||
clientCertificates: defaultOpts.sslConfigs,
|
||||
},
|
||||
// if verifying integrity, node-fetch must not decompress
|
||||
compress: opts?.compress ?? false,
|
||||
headers,
|
||||
|
||||
22
network/fetch/test/__certs__/ca-crt.pem
Normal file
22
network/fetch/test/__certs__/ca-crt.pem
Normal file
@@ -0,0 +1,22 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDpzCCAo+gAwIBAgIUBfn11L/8a6yyGNPKT+wsjQXxkJwwDQYJKoZIhvcNAQEL
|
||||
BQAwYzELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5ldyBZb3JrMREwDwYDVQQHDAhO
|
||||
ZXcgWW9yazENMAsGA1UECgwEcG5wbTELMAkGA1UECwwCSVQxEjAQBgNVBAMMCWxv
|
||||
Y2FsaG9zdDAeFw0yNDAxMTcxMDQxMTdaFw00NDAxMTIxMDQxMTdaMGMxCzAJBgNV
|
||||
BAYTAlVTMREwDwYDVQQIDAhOZXcgWW9yazERMA8GA1UEBwwITmV3IFlvcmsxDTAL
|
||||
BgNVBAoMBHBucG0xCzAJBgNVBAsMAklUMRIwEAYDVQQDDAlsb2NhbGhvc3QwggEi
|
||||
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCJw+DkWokdplyEWDi/AYbT7XeP
|
||||
ytgKdUJ2bfJBrj6G2JU6MAOZ/fzlZ1c2mD5U+gKIvr7rvsWKsLZohXIGsE5EjL7s
|
||||
/ruoYJo4jTD+gmdPaFCNXuDp6XmH1htf/msPo3Kv0eNL29Dx1l5pFvVrj96R+gsQ
|
||||
6V/ydqXxqgC3v89CUgjScApfjcCsnxqYp4Y+TtHUEzvHRgmHNpxXjJGrkjroofKi
|
||||
PkACxLSG8CIC+btIytwmjLyCfdqYtHaYpoIQwTK2ui7BAZ1Kl4LYBgfvNqfkr0uZ
|
||||
v4nwmB3z4RTWyBDL7xrfH5gR9f+d49ZwskZ2ztmMcRbGxbiAMjHzOPjiFLLPAgMB
|
||||
AAGjUzBRMB0GA1UdDgQWBBRFxjUWfdYIom50aQHSxft/r0/fNDAfBgNVHSMEGDAW
|
||||
gBRFxjUWfdYIom50aQHSxft/r0/fNDAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3
|
||||
DQEBCwUAA4IBAQAT4cgBafJA/KNBXLoOM5bixKn/Q1Rdef9ZkbTe0zPYu8+hfquc
|
||||
yVkk7o0VMYdT4JqdNsqJLHCe3fU4Ns7qXeumECUyW81L/PaFMYP4o5/02iTgcvSO
|
||||
7uEG5rJEQ4p3dPtgz4kP1Vkt5G+tMHsKY5okk9iaWNA7TxiG0avqFKIT8tFm1wMx
|
||||
VJ33DNM6jC55b5Z/zeiB7cxp+NrEmCHcyFwwpGNuPmQvBWOXttz0oriYjqRXc78Y
|
||||
fqOcQc1I8PaliLkJ5e5XUTtVCjMEU7pwz2LyhA7tGLTIx+skEltKQAxVgksQStxV
|
||||
ZWk1RfHDSczvFFzn57eAxpt8lohkf2Votsii
|
||||
-----END CERTIFICATE-----
|
||||
1
network/fetch/test/__certs__/ca-crt.srl
Normal file
1
network/fetch/test/__certs__/ca-crt.srl
Normal file
@@ -0,0 +1 @@
|
||||
28412AF275E88F449B30A1071D25827F67DB59AE
|
||||
30
network/fetch/test/__certs__/ca-key.pem
Normal file
30
network/fetch/test/__certs__/ca-key.pem
Normal file
@@ -0,0 +1,30 @@
|
||||
-----BEGIN ENCRYPTED PRIVATE KEY-----
|
||||
MIIFJDBWBgkqhkiG9w0BBQ0wSTAxBgkqhkiG9w0BBQwwJAQQsj4+WcsErreSm8GA
|
||||
usXR8AICCAAwDAYIKoZIhvcNAgkFADAUBggqhkiG9w0DBwQI2Ze4AnQo+8sEggTI
|
||||
MxH2IntXHK6TjTubMqpuwm/uaz4oPnz22nsXx3ZynqEV7I9lCisVqRGe/BmlSahD
|
||||
LnEnbjyqTxhpT/29wHVhVTvTLbHdQ+Zeasl67FRVtZGldNy1eWXQ/fcynvFOt5De
|
||||
Zk2OZ8ynW6bLdDn697UNGs8zXUSug9yYk3lF/R1//uluOCEhNLLI1+++8dgmoiD6
|
||||
9hxNt4O0/aU2xQVzy/7IalF+8yRCgWDO5lBJg1sYXpFrxU+zXN27r5pb1fQ3UFTj
|
||||
d6ihjifP4agMjdA7ubIbBsfI20+IQ3aI4zK2Se057DXMlaMJI7YIcB2E13B81zuw
|
||||
Tx8TBnYcNiWRMCdPdW4iNsaLGJBWIYE6gND6wSPFdJxDN3K5MuvsvD/zHi7HEpOW
|
||||
ry7o030Q4XNN/y9ZL5rH1bitVnO8GljZF2d4913iS70vbabXqZLuR59qfKfUv1/+
|
||||
ddly17oLhwoXxkowut8PCG0CejxToOSkD0rkvHl7wBhDPuiCcUGRaZKR69kuxO/d
|
||||
lPDDgDpDCRN3xAlHfBI+lB2nyICxk7/mJnOYi+uhg6X9lpD2EnryS46FZ5EllB+H
|
||||
pbgXiNFPGCulnREXyLOyD7sqmpuCYHehAIv6qiK3aFHk0F29SKJV0JI7yEYDDSYV
|
||||
2hna3aa7I8lf92oslAJp7DPjh9WmTKELRLoGElYzkYMlJLtMWMLJMqQt0lyzpW24
|
||||
fFDeQWjraZ0CfrpuftXwqvdrLhqwmLRUYFBFa0Y/gScsKGwiG8mX5It236oYcRAV
|
||||
yQS6d1SWkZ01PUEs8zryvOkErUd1WTxLz91ivVpizcg2I/gNYJYU4y9IAJrrw+nY
|
||||
hqDjZrvKl2lfxTHWViZRQ2a2sLQqrmquB+nee9/05XkQmwPKAzDIzYVBy3JOfMP5
|
||||
0UvdyHpGR3HsFIvguMmOzxetAWF1W5pYHyIzkMgWB4u/3WY4DooRejljEQ1s4pDS
|
||||
EE+SYNXNhb3z/lvsymYnUXzrZb1cVWSK9e638UOsvl7zXzLfK6LxX856HdobyS9q
|
||||
FK7CkKacxpgLw1IHa5Lh9ELCyWoKM21Cvx+PRKWPCy3qOTWKS5wbJLvU/0Occnvp
|
||||
0qnDBuqdX6oKGiL8Nl8vaY1PZ7I07P23cw5jcEK/zf6E6OFLuVU3fCuJvJ1MZWhk
|
||||
h/hJPoZQsOhFR24GmqZoZXj+H3iMvjos5OoX/itB1KmNvKWeQY6q7/ke7fA+ennR
|
||||
2ESV/zCthzRDL/1bs9ZePu9eKOc+2qpJZusJSMjip/KCapNCjis9huu3ri97+IBT
|
||||
brvIAX4rFupqmGQELtZGMqe7cktEc31NoAGNf+UWGfqqEWxgTzaPcXBsz3xBWfwJ
|
||||
wX1xcswMpTHoRDv3OpxG2Uo9Ff2ZxA7r2ZsLqZV8+p20fD70CwvZhhz4mPPjlTFo
|
||||
nRXoE10Sri5jwzjy/fb+mXj1oOYftMvbnRxhB6MBB+R5vFmvHtVMFP2q6L3cGvEj
|
||||
dBEcLElyN210Ybhp2JuvhJ+93LyjF93QQN7HYwLO9dqDJPFUjWBFduMy+EmdzCCr
|
||||
yR5knsEFkjXIqbuDgSIqdkljpTRKQuiXQQMl52YmiQMb4AEeJFhxW8RmPKWVwxTz
|
||||
9BzxrLP3jf6eWsWG6bUi+CI51Kmb8Oqk
|
||||
-----END ENCRYPTED PRIVATE KEY-----
|
||||
22
network/fetch/test/__certs__/client-crt.pem
Normal file
22
network/fetch/test/__certs__/client-crt.pem
Normal file
@@ -0,0 +1,22 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDlTCCAn2gAwIBAgIUKEEq8nXoj0SbMKEHHSWCf2fbWa4wDQYJKoZIhvcNAQEL
|
||||
BQAwYzELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5ldyBZb3JrMREwDwYDVQQHDAhO
|
||||
ZXcgWW9yazENMAsGA1UECgwEcG5wbTELMAkGA1UECwwCSVQxEjAQBgNVBAMMCWxv
|
||||
Y2FsaG9zdDAeFw0yNDAxMTcxMDQxNDFaFw00NDAxMTIxMDQxNDFaMGIxCzAJBgNV
|
||||
BAYTAlVTMREwDwYDVQQIDAhOZXcgWW9yazERMA8GA1UEBwwITmV3IFlvcmsxDTAL
|
||||
BgNVBAoMBHBucG0xCzAJBgNVBAsMAklUMREwDwYDVQQDDAhKb2huIERvZTCCASIw
|
||||
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALSL84hy3lcdWgmXr8zhErwpemVA
|
||||
gneW4JH4leYneuSztkOMEyXegExNY4mjYcPX75N0X7oJyK+sIdpMCU6JN2AttU8h
|
||||
BmSGd5cuDQ/ZgfMs36hnmUIrOL67QAsLa7MU7pG9XrZHpbG/MLP0fCO7+4aF3LCh
|
||||
7nt0aR1mFjhHJFn5CSgF0fuoSrvIzpSIjtdnX6ivF16AfU71UhhuW4aAlZPfybh7
|
||||
PzICBeIs6Qx8J7lICJUOaL+dIdGem+/oOHN0Td3V58enVfFGwbtJMzrjaeiGTNnU
|
||||
xv2WfnDThsXParTZ+rTBT0qL8LrUIYDgaPkeDum83EUvoHQO4g31xsxoTPsCAwEA
|
||||
AaNCMEAwHQYDVR0OBBYEFLJGGqvXCUyoGjMyaWPFNT55jIUBMB8GA1UdIwQYMBaA
|
||||
FEXGNRZ91giibnRpAdLF+3+vT980MA0GCSqGSIb3DQEBCwUAA4IBAQAa+0WrCAxF
|
||||
vahes28wJdmy38I9qc60P6ye6fcADCNqQYszC8Y6rAau65eKjorO/ypA3qPm7d8t
|
||||
9zydxYpScejE792G5UiWnFeWRLDfl2xaEElfIELdIzEvXDslrXRalIn1vakTTYXG
|
||||
cIGc5GgKN1Wq1aehQOKo5kwRuwd63hbnG0x3TrIx1BWUURa8J2R8gKbp9QNfgHmf
|
||||
EM66R+QwrLmboEKtB+3uVGxJUPugpfEPcwbhCdcyKNF9MgNzECjSn8jCkduqIHv5
|
||||
Mv9e6Cs1zjjksbknsrHW+Se9VfWEm0mcZw+xs5FAJ8fUBFcyouyHxqTGLSThbwAK
|
||||
JbIqq5FLFOco
|
||||
-----END CERTIFICATE-----
|
||||
17
network/fetch/test/__certs__/client-csr.pem
Normal file
17
network/fetch/test/__certs__/client-csr.pem
Normal file
@@ -0,0 +1,17 @@
|
||||
-----BEGIN CERTIFICATE REQUEST-----
|
||||
MIICpzCCAY8CAQAwYjELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5ldyBZb3JrMREw
|
||||
DwYDVQQHDAhOZXcgWW9yazENMAsGA1UECgwEcG5wbTELMAkGA1UECwwCSVQxETAP
|
||||
BgNVBAMMCEpvaG4gRG9lMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
|
||||
tIvziHLeVx1aCZevzOESvCl6ZUCCd5bgkfiV5id65LO2Q4wTJd6ATE1jiaNhw9fv
|
||||
k3RfugnIr6wh2kwJTok3YC21TyEGZIZ3ly4ND9mB8yzfqGeZQis4vrtACwtrsxTu
|
||||
kb1etkelsb8ws/R8I7v7hoXcsKHue3RpHWYWOEckWfkJKAXR+6hKu8jOlIiO12df
|
||||
qK8XXoB9TvVSGG5bhoCVk9/JuHs/MgIF4izpDHwnuUgIlQ5ov50h0Z6b7+g4c3RN
|
||||
3dXnx6dV8UbBu0kzOuNp6IZM2dTG/ZZ+cNOGxc9qtNn6tMFPSovwutQhgOBo+R4O
|
||||
6bzcRS+gdA7iDfXGzGhM+wIDAQABoAAwDQYJKoZIhvcNAQELBQADggEBABQOQj2X
|
||||
ox/SXBdBqPNhAM1TH0R0J+/83Du/nQmj2xPOTlIq35h0ZUzCS04SGK0dXBJnrRLs
|
||||
fTiZsYmuDLf3n5ggB84d1kljldZFnJyDXWU0gzbF04cBuA0+lvjTBSKHFahijndV
|
||||
dp/HHID9qhJiMIsf+moL/KU1UI/mMaQIf+59QSPlHngKol1yZuwiEtfBzPITL4qY
|
||||
nkDu9JlfRks+4q8ICnj3PlBNuMgVF+9cOe/QMmPP+JyT1YsWqINczJLHN1Mnj+yg
|
||||
GVZxqBmN6OTeWcFrZrHssSB/RCvec+0fD9/wwSvGwPDqECDhhgcFBBzV+jCISfP9
|
||||
MqLCYYYRWplklvk=
|
||||
-----END CERTIFICATE REQUEST-----
|
||||
28
network/fetch/test/__certs__/client-key.pem
Normal file
28
network/fetch/test/__certs__/client-key.pem
Normal file
@@ -0,0 +1,28 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC0i/OIct5XHVoJ
|
||||
l6/M4RK8KXplQIJ3luCR+JXmJ3rks7ZDjBMl3oBMTWOJo2HD1++TdF+6CcivrCHa
|
||||
TAlOiTdgLbVPIQZkhneXLg0P2YHzLN+oZ5lCKzi+u0ALC2uzFO6RvV62R6WxvzCz
|
||||
9Hwju/uGhdywoe57dGkdZhY4RyRZ+QkoBdH7qEq7yM6UiI7XZ1+orxdegH1O9VIY
|
||||
bluGgJWT38m4ez8yAgXiLOkMfCe5SAiVDmi/nSHRnpvv6DhzdE3d1efHp1XxRsG7
|
||||
STM642nohkzZ1Mb9ln5w04bFz2q02fq0wU9Ki/C61CGA4Gj5Hg7pvNxFL6B0DuIN
|
||||
9cbMaEz7AgMBAAECggEABHafQc92gAMplNTLU6POzEMJk745W3kp5RdBpsEcGyeh
|
||||
iQr0oDo0xBjNA1E8MKoXx0vttTzaWWlxJCM+vv0fwYDFG4cupXE4505hTp6AcBa7
|
||||
Er/jkeIH/ZhweArDZ1fMTA25QoVZQHXVtOUwOnaXvGwhGBFwwrGOiwZZOfFG90ho
|
||||
9uHO1gaWhrRJ4P07DJHxfwWGcFUbsmd88rExXS/I/ifu/zVE73no/J9kXlnscYig
|
||||
FNT9EbhXnd3cZ2Zfkfak/cLD/MMwCOTpq+T5YpK29bUsUySwGJiSB4h45jw69Zkm
|
||||
3qLy98y3vILlKoraXD6+sV4MH0WULvY/zoRjJa54bQKBgQDsZEO4Wyr6JerXHGSv
|
||||
mALXNVdOKWZp2tLD1cUY9772BDvXJ0vlE8EOoxlKjpHCt2/XR6uXZFOlgqZF/Lbz
|
||||
f0MWMIkIQNrPMWnudKBCbOnz1PZ3m81TAvx2TYFafqcldz8q/NTTYGvKYQ1ClyLT
|
||||
viehMhDoRpHMG0WEesEQ6iGJjQKBgQDDhdQa3VWy+n66JPvqjOWkSrs7cZXYOZBK
|
||||
IVoQA5R7yA+h6GPQgbfYvt824P5PSay/mHtMYse1Gxga+LtLYQaxrKds6dD00NSZ
|
||||
Nkh1azrRoNOjyc/ZUqOE0Q0OEMgrq50bixP4OlaT+OxX55q7KcaWkj0IaACyeVIU
|
||||
UoYBldxapwKBgQCAAF7HEd64qxV5u28twdMv8zs+IJ7LDOl5j2R1e5lUn8BDZYzs
|
||||
EwFDyr8kJwT4edm+qZlZlcLRaWhdl1T9jtilyEw7Qtr4vFoO++nXbiBUnumCpMPO
|
||||
glxwNtGnTdN2LxbuUQ9xEdHsORc0CqCaJWpSF8kd7TB/Y/kFnm6ymQTl9QKBgQCP
|
||||
3kaPKfPoSXe8QoB3Owuy0yZn/BE1VE3+rgHWLLwyRKh0C0p+3yRHQVN/zxhxgRWy
|
||||
uWFoeHrYoUIgfotaUN+bFx7u/jE6Ivt8bTvt4mQaYcu5BkOBdtRJY4XGpsSTlah5
|
||||
3uFn0o1oPk6x9AKf24J7wslUCSsSKEEkIQDn47yLmwKBgDbhGWZdGAL8r5SQy/76
|
||||
MKj+kvGQeGuH32OtnAP1z5yT8tDQ3XN5q1/nYXHqos/VACHcp/FaY3Dck+UeLobw
|
||||
5lRHq7GG2tXCTXIFVJ4WNqNGhTQV+woqpZ5UgZhHlkI9ni8Zy6VcP9OJeLZpwchl
|
||||
MBIuC60QuxBeGZNOcJyG3k5+
|
||||
-----END PRIVATE KEY-----
|
||||
22
network/fetch/test/__certs__/server-crt.pem
Normal file
22
network/fetch/test/__certs__/server-crt.pem
Normal file
@@ -0,0 +1,22 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDljCCAn6gAwIBAgIUKEEq8nXoj0SbMKEHHSWCf2fbWa0wDQYJKoZIhvcNAQEL
|
||||
BQAwYzELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5ldyBZb3JrMREwDwYDVQQHDAhO
|
||||
ZXcgWW9yazENMAsGA1UECgwEcG5wbTELMAkGA1UECwwCSVQxEjAQBgNVBAMMCWxv
|
||||
Y2FsaG9zdDAeFw0yNDAxMTcxMDQxMzFaFw00NDAxMTIxMDQxMzFaMGMxCzAJBgNV
|
||||
BAYTAlVTMREwDwYDVQQIDAhOZXcgWW9yazERMA8GA1UEBwwITmV3IFlvcmsxDTAL
|
||||
BgNVBAoMBHBucG0xCzAJBgNVBAsMAklUMRIwEAYDVQQDDAlsb2NhbGhvc3QwggEi
|
||||
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTnJiL8joJ931yrZ5Z7oImjRw9
|
||||
u0Aq7WVuwxDPPJURIeCd6RRW5lggiCz05uhNlKYNb7R5OaXDMSSVKc62y7y6/H3J
|
||||
Tmw2oaC1H869d2h04ohUMkVYOvVeealGQqmszKIy0RbqnVLRPDtdqpMouSxFNWe2
|
||||
ieBtWCuuR5tgomcg6ohioWArGP2gChab1WI9vqPzaQRbmO1FkDyUZlxMD+WLCqKV
|
||||
ULBtCW4Stfwne1DjWJu23yibTAZ8vrJavfWW0+MqjkG6TQroYaVTiHD0DXAWD4wl
|
||||
JFTe5cQfjR4QCn7JdlJZmnOFfuY3pIM8YTm18bqgUTg0VssySczOiISgabT9AgMB
|
||||
AAGjQjBAMB0GA1UdDgQWBBSlNwhSYvQgXSwu7tbabU15/QRz1TAfBgNVHSMEGDAW
|
||||
gBRFxjUWfdYIom50aQHSxft/r0/fNDANBgkqhkiG9w0BAQsFAAOCAQEAab/pE+zR
|
||||
JSNJg2OrurXlEdLgjpmczrbe3AddeLRxE6mEiNQADS66QmAMpNKNAyprYY+229VT
|
||||
SDFap37EXgtBMvbqFugXhhclT5lckVHwAt1tNxhaeiUZnyDa/nGghdQgX2UqwZ0t
|
||||
S35/lGKt8RA1Z1SRiT5Hnldp46mb5Hgkfe/yKQKtU0weCVR0JEHJ4MA3Mv2A+Pge
|
||||
NiKGf019ZuhmsaX5i1NC8HM9DvhH0MeTd07FDSLmyILdu6Ai+ebKnano3RVMFcnk
|
||||
pIu+qMnnhdp/sNw2C5KZ2QNjE1XHCXDGJtDGRPtHrvHGqVDsRGtW2MPK2Uda/a6o
|
||||
sZhEFANmSRKUkg==
|
||||
-----END CERTIFICATE-----
|
||||
17
network/fetch/test/__certs__/server-csr.pem
Normal file
17
network/fetch/test/__certs__/server-csr.pem
Normal file
@@ -0,0 +1,17 @@
|
||||
-----BEGIN CERTIFICATE REQUEST-----
|
||||
MIICqDCCAZACAQAwYzELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5ldyBZb3JrMREw
|
||||
DwYDVQQHDAhOZXcgWW9yazENMAsGA1UECgwEcG5wbTELMAkGA1UECwwCSVQxEjAQ
|
||||
BgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
|
||||
ANOcmIvyOgn3fXKtnlnugiaNHD27QCrtZW7DEM88lREh4J3pFFbmWCCILPTm6E2U
|
||||
pg1vtHk5pcMxJJUpzrbLvLr8fclObDahoLUfzr13aHTiiFQyRVg69V55qUZCqazM
|
||||
ojLRFuqdUtE8O12qkyi5LEU1Z7aJ4G1YK65Hm2CiZyDqiGKhYCsY/aAKFpvVYj2+
|
||||
o/NpBFuY7UWQPJRmXEwP5YsKopVQsG0JbhK1/Cd7UONYm7bfKJtMBny+slq99ZbT
|
||||
4yqOQbpNCuhhpVOIcPQNcBYPjCUkVN7lxB+NHhAKfsl2Ulmac4V+5jekgzxhObXx
|
||||
uqBRODRWyzJJzM6IhKBptP0CAwEAAaAAMA0GCSqGSIb3DQEBCwUAA4IBAQBrxzLs
|
||||
R3yfCivqGZOMSHDi7L7X1y2TRLbxvxJ2/Wk1Li3vedTWFZuPDUAtplXR4CKzQksp
|
||||
bCZtVPBsURveZrs4QfIYPg7NqQevAG/yYYT2jSfxJ1VBbuhX/qDtb7VcmPe2xA+K
|
||||
aWySheodqvycsSh4EHzy8Ra50mfEciTTqiUNgNQ4blVBohdbw2vkxXWWK4LdtpCh
|
||||
2k6aAdf6ifeQxcNjZFd23I/lFK5xqZUjDJvPUDQhu7p9JnoT9mDL5EvHSyiRAUMM
|
||||
mdUHQ7YJe7HsH5ONWHoa4EKZ+PvWjdjtsdfYLJhB5Uirleb2+0w6jHV0y7ujvBdx
|
||||
BwRVzpHakuvN/2Mn
|
||||
-----END CERTIFICATE REQUEST-----
|
||||
28
network/fetch/test/__certs__/server-key.pem
Normal file
28
network/fetch/test/__certs__/server-key.pem
Normal file
@@ -0,0 +1,28 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDTnJiL8joJ931y
|
||||
rZ5Z7oImjRw9u0Aq7WVuwxDPPJURIeCd6RRW5lggiCz05uhNlKYNb7R5OaXDMSSV
|
||||
Kc62y7y6/H3JTmw2oaC1H869d2h04ohUMkVYOvVeealGQqmszKIy0RbqnVLRPDtd
|
||||
qpMouSxFNWe2ieBtWCuuR5tgomcg6ohioWArGP2gChab1WI9vqPzaQRbmO1FkDyU
|
||||
ZlxMD+WLCqKVULBtCW4Stfwne1DjWJu23yibTAZ8vrJavfWW0+MqjkG6TQroYaVT
|
||||
iHD0DXAWD4wlJFTe5cQfjR4QCn7JdlJZmnOFfuY3pIM8YTm18bqgUTg0VssySczO
|
||||
iISgabT9AgMBAAECggEAHVoq1LqgL1K7fWU0wk+xkOxg3vUyxOGSAMeg9MX3/Vzg
|
||||
Hbc/YYBo9/Y7mirPTTeRwupcM7Z51jXiV6hpanSfNKaiQgKVQwyvUIBdem1uOUxU
|
||||
0az5bnAbKeQhRUQo6fWmh/r1vUxeOPSsXWU0LWFmESGDxc+hKDmjMXTwSfqs6GUv
|
||||
PKxWwhLHKKCF05NIVXJ646ZEmXxbFSBOORTIur0o4kXuEO1w88T+/NdiQ74cAcUU
|
||||
TsEY5KjDKZgoLlEMnG43HKkbD8G7fYhjiFLzupjY555NIifQ7LzkYAiSan2BqNV0
|
||||
1Vgp2rC1SFaDzX1vlK9SUt5uZV5vQjO8ByGjOq/UUQKBgQDqRUTbMd8nsJAKq5Zs
|
||||
gOyMgpGLucD5YL/hGlKEyny04rnkfbZyV5R9s0KHzmlkR6ewwUMTZ29j2bdsHiOB
|
||||
bHg4dh/Bnb4tNLXOpKUJC/R5cPU7v7UaTXUr8MVHil0NT6nsW1tEzju/I6G/KBND
|
||||
jAFX9cuLfCwJwqcvDBDLRENTtQKBgQDnPUtM/c0VnFqJFZlKLDQnWSdUXg+G7J4i
|
||||
zjWHLOzhV9mN9FvFJ0UvLVPaxFNkZUC/0i99I3tQoqAKnr0mhoGyiYH7VcYDTcJP
|
||||
OLImfJNdyVrIPNsDhoEbnQwsNxTjs86wWDGo08YaclCD5k969HMNryIozbcUYZjW
|
||||
eu7y3sY5KQKBgQDic+7pSz4A6aVzCwYvADioYhY60GX/KUyRVZZqkikV2QwEGJjh
|
||||
0lLRZxRqnlY1/yXTsB0chqGgDXZGZqO/mZBkU5rC165bmFYd1/1Hz2yUb2I+TUPM
|
||||
lw8qWGT6kH7+PQFuXajNy+TpEJJra1ujsZQi6I/G11LiZGyjB7C8K9JA+QKBgFxf
|
||||
e+kxqe9sGi6Q1j9vERZ24uMs//7iHvnAblmldKtAMMQoTVCgs155OPo3WyjL2eXG
|
||||
zPmsZuJ7VHtplh4BtWXg0G/af9NqCKkk+OWu9h+NBBrhVIw/+utQ/T/ccRfVCEgh
|
||||
sxTCJG0EJW3LXwy7AgsBXx/1raESq79iNHoIzB6hAoGALzyPorYuI8X2WM+MT2me
|
||||
B3TgH4zQMEzEtLoTikkm5t81b9za2Cfe+mv7aKImsYtkDZira7+ldRqlUXvTswUZ
|
||||
//OAfc0e1nHQJSUvFWH6ya4RiE20QaM8RzMComRD8i82WVZFFaqLJutCTfgcxlUp
|
||||
+X8N9jxLQfL805sNsCrbL4o=
|
||||
-----END PRIVATE KEY-----
|
||||
@@ -1,6 +1,11 @@
|
||||
/// <reference path="../../../__typings__/index.d.ts"/>
|
||||
import path from 'path'
|
||||
import { createFetchFromRegistry } from '@pnpm/fetch'
|
||||
import nock from 'nock'
|
||||
import { ProxyServer } from 'https-proxy-server-express'
|
||||
import fs from 'fs'
|
||||
|
||||
const CERTS_DIR = path.join(__dirname, '__certs__')
|
||||
|
||||
test('fetchFromRegistry', async () => {
|
||||
const fetchFromRegistry = createFetchFromRegistry({})
|
||||
@@ -68,3 +73,68 @@ test('switch to the correct agent for requests on redirect from http: to https:'
|
||||
|
||||
expect(status).toEqual(200)
|
||||
})
|
||||
|
||||
test('fetch from registry with client certificate authentication', async () => {
|
||||
const randomPort = Math.floor(Math.random() * 10000 + 10000)
|
||||
const proxyServer = new ProxyServer(randomPort, {
|
||||
key: fs.readFileSync(path.join(CERTS_DIR, 'server-key.pem')),
|
||||
cert: fs.readFileSync(path.join(CERTS_DIR, 'server-crt.pem')),
|
||||
ca: fs.readFileSync(path.join(CERTS_DIR, 'ca-crt.pem')),
|
||||
rejectUnauthorized: true,
|
||||
requestCert: true,
|
||||
}, 'https://registry.npmjs.org/')
|
||||
|
||||
await proxyServer.start()
|
||||
|
||||
const sslConfigs = {
|
||||
[`//localhost:${randomPort}/`]: {
|
||||
ca: fs.readFileSync(path.join(CERTS_DIR, 'ca-crt.pem'), 'utf8'),
|
||||
cert: fs.readFileSync(path.join(CERTS_DIR, 'client-crt.pem'), 'utf8'),
|
||||
key: fs.readFileSync(path.join(CERTS_DIR, 'client-key.pem'), 'utf8'),
|
||||
},
|
||||
}
|
||||
|
||||
const fetchFromRegistry = createFetchFromRegistry({
|
||||
sslConfigs,
|
||||
strictSsl: false,
|
||||
})
|
||||
|
||||
try {
|
||||
const res = await fetchFromRegistry(`https://localhost:${randomPort}/is-positive`)
|
||||
const metadata = await res.json() as any // eslint-disable-line
|
||||
expect(metadata.name).toEqual('is-positive')
|
||||
} finally {
|
||||
await proxyServer.stop()
|
||||
}
|
||||
})
|
||||
|
||||
test('fail if the client certificate is not provided', async () => {
|
||||
const randomPort = Math.floor(Math.random() * 10000 + 10000)
|
||||
const proxyServer = new ProxyServer(randomPort, {
|
||||
key: fs.readFileSync(path.join(CERTS_DIR, 'server-key.pem')),
|
||||
cert: fs.readFileSync(path.join(CERTS_DIR, 'server-crt.pem')),
|
||||
ca: fs.readFileSync(path.join(CERTS_DIR, 'ca-crt.pem')),
|
||||
rejectUnauthorized: true,
|
||||
requestCert: true,
|
||||
}, 'https://registry.npmjs.org/')
|
||||
|
||||
await proxyServer.start()
|
||||
|
||||
const fetchFromRegistry = createFetchFromRegistry({
|
||||
strictSsl: false,
|
||||
})
|
||||
|
||||
let err!: Error & { code: string }
|
||||
try {
|
||||
await fetchFromRegistry(`https://localhost:${randomPort}/is-positive`, {
|
||||
retry: {
|
||||
retries: 0,
|
||||
},
|
||||
})
|
||||
} catch (_err: any) { // eslint-disable-line
|
||||
err = _err
|
||||
} finally {
|
||||
await proxyServer.stop()
|
||||
}
|
||||
expect(err?.code).toMatch(/ECONNRESET|ERR_SSL_TLSV13_ALERT_CERTIFICATE_REQUIRED/)
|
||||
})
|
||||
|
||||
@@ -12,6 +12,9 @@
|
||||
{
|
||||
"path": "../../packages/core-loggers"
|
||||
},
|
||||
{
|
||||
"path": "../../packages/types"
|
||||
},
|
||||
{
|
||||
"path": "../fetching-types"
|
||||
}
|
||||
|
||||
@@ -19,6 +19,12 @@ export interface Registries {
|
||||
[scope: string]: string
|
||||
}
|
||||
|
||||
export interface SslConfig {
|
||||
cert: string
|
||||
key: string
|
||||
ca?: string
|
||||
}
|
||||
|
||||
export type HoistedDependencies = Record<string, Record<string, 'public' | 'private'>>
|
||||
|
||||
export interface PatchFile {
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
"@pnpm/network.auth-header": "workspace:*",
|
||||
"@pnpm/resolver-base": "workspace:*",
|
||||
"@pnpm/tarball-fetcher": "workspace:*",
|
||||
"@pnpm/types": "workspace:*",
|
||||
"ramda": "npm:@pnpm/ramda@0.28.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -4,6 +4,7 @@ import {
|
||||
type ResolverFactoryOptions,
|
||||
} from '@pnpm/default-resolver'
|
||||
import { type AgentOptions, createFetchFromRegistry } from '@pnpm/fetch'
|
||||
import { type SslConfig } from '@pnpm/types'
|
||||
import { type FetchFromRegistry, type GetAuthHeader, type RetryTimeoutOptions } from '@pnpm/fetching-types'
|
||||
import type { CustomFetchers, GitFetcher, DirectoryFetcher } from '@pnpm/fetcher-base'
|
||||
import { createDirectoryFetcher } from '@pnpm/directory-fetcher'
|
||||
@@ -18,7 +19,8 @@ export type ClientOptions = {
|
||||
authConfig: Record<string, string>
|
||||
customFetchers?: CustomFetchers
|
||||
ignoreScripts?: boolean
|
||||
rawConfig: object
|
||||
rawConfig: Record<string, string>
|
||||
sslConfigs?: Record<string, SslConfig>
|
||||
retry?: RetryTimeoutOptions
|
||||
timeout?: number
|
||||
unsafePerm?: boolean
|
||||
|
||||
@@ -30,6 +30,9 @@
|
||||
{
|
||||
"path": "../../network/fetching-types"
|
||||
},
|
||||
{
|
||||
"path": "../../packages/types"
|
||||
},
|
||||
{
|
||||
"path": "../../resolving/default-resolver"
|
||||
},
|
||||
|
||||
347
pnpm-lock.yaml
generated
347
pnpm-lock.yaml
generated
@@ -2489,8 +2489,11 @@ importers:
|
||||
specifier: ^5.0.0
|
||||
version: 5.0.0
|
||||
'@pnpm/network.agent':
|
||||
specifier: 0.1.0
|
||||
version: 0.1.0
|
||||
specifier: ^1.0.1
|
||||
version: 1.0.1
|
||||
'@pnpm/types':
|
||||
specifier: workspace:*
|
||||
version: link:../../packages/types
|
||||
'@zkochan/retry':
|
||||
specifier: ^0.2.0
|
||||
version: 0.2.0
|
||||
@@ -2501,6 +2504,9 @@ importers:
|
||||
'@pnpm/fetch':
|
||||
specifier: workspace:*
|
||||
version: 'link:'
|
||||
https-proxy-server-express:
|
||||
specifier: 0.1.2
|
||||
version: 0.1.2
|
||||
nock:
|
||||
specifier: 13.3.4
|
||||
version: 13.3.4
|
||||
@@ -2949,6 +2955,9 @@ importers:
|
||||
'@pnpm/tarball-fetcher':
|
||||
specifier: workspace:*
|
||||
version: link:../../fetching/tarball-fetcher
|
||||
'@pnpm/types':
|
||||
specifier: workspace:*
|
||||
version: link:../../packages/types
|
||||
ramda:
|
||||
specifier: npm:@pnpm/ramda@0.28.1
|
||||
version: /@pnpm/ramda@0.28.1
|
||||
@@ -8502,11 +8511,12 @@ packages:
|
||||
write-json-file: 5.0.0
|
||||
dev: true
|
||||
|
||||
/@pnpm/network.agent@0.1.0:
|
||||
resolution: {integrity: sha512-RurhhwXMdrKnr4swyx0E6g3tfsfP27kB7czoGTmEvSCgmrrZ5pGToZ0MahiwGRkpSRoTlUmVE97nwqjxCOfboA==}
|
||||
/@pnpm/network.agent@1.0.1:
|
||||
resolution: {integrity: sha512-yRm8MzpZvst5IYF5IUgK7q5SvcncCUWOVBqpl527Pz6BafmDlcxAYyFy7lV4AiQr+VZ9VWudQsaHQeaYikyDGw==}
|
||||
engines: {node: '>=12.22.0'}
|
||||
dependencies:
|
||||
'@pnpm/network.proxy-agent': 0.1.0
|
||||
'@pnpm/network.config': 1.0.1
|
||||
'@pnpm/network.proxy-agent': 1.0.1
|
||||
agentkeepalive: 4.2.1
|
||||
lru-cache: 7.10.1
|
||||
transitivePeerDependencies:
|
||||
@@ -8519,8 +8529,15 @@ packages:
|
||||
dependencies:
|
||||
graceful-fs: 4.2.10
|
||||
|
||||
/@pnpm/network.proxy-agent@0.1.0:
|
||||
resolution: {integrity: sha512-nl7xLKiYlkTEpaM0U4JaZ1ce6JSYIzuorH+JVn33jry/k3ombpK1xbOzFFwfFhWptXFN9IMcZACjQxmvBbElgg==}
|
||||
/@pnpm/network.config@1.0.1:
|
||||
resolution: {integrity: sha512-ZmTsSFxd4QT5+IZvwHtQjzSlkB7OXAty6MfSenRyHOvR1f8j3l1VDWVXJiNaiLrKeidiZH6ADfsMTr2N0CGDeA==}
|
||||
engines: {node: '>=12.22.0'}
|
||||
dependencies:
|
||||
nerf-dart: 1.0.0
|
||||
dev: false
|
||||
|
||||
/@pnpm/network.proxy-agent@1.0.1:
|
||||
resolution: {integrity: sha512-0q9Btpw43aTPzEJJmQY1TNBrwNlPINRae8EpO7VpqbmFflBRO6u6qady6XFfbi+wwPxpcpVOYr6rCDBzALXYHA==}
|
||||
engines: {node: '>=12.22.0'}
|
||||
dependencies:
|
||||
'@pnpm/error': 4.0.1
|
||||
@@ -9025,6 +9042,12 @@ packages:
|
||||
/@types/http-cache-semantics@4.0.4:
|
||||
resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==}
|
||||
|
||||
/@types/http-proxy@1.17.14:
|
||||
resolution: {integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==}
|
||||
dependencies:
|
||||
'@types/node': 18.19.15
|
||||
dev: true
|
||||
|
||||
/@types/ini@1.3.31:
|
||||
resolution: {integrity: sha512-8ecxxaG4AlVEM1k9+BsziMw8UsX0qy3jYI1ad/71RrDZ+rdL6aZB0wLfAuflQiDhkD5o4yJ0uPK3OSUic3fG0w==}
|
||||
dev: true
|
||||
@@ -11884,7 +11907,6 @@ packages:
|
||||
|
||||
/eventemitter3@4.0.7:
|
||||
resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==}
|
||||
dev: false
|
||||
|
||||
/execa@5.1.1:
|
||||
resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
|
||||
@@ -12190,6 +12212,16 @@ packages:
|
||||
readable-stream: 2.3.8
|
||||
dev: true
|
||||
|
||||
/follow-redirects@1.15.5:
|
||||
resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==}
|
||||
engines: {node: '>=4.0'}
|
||||
peerDependencies:
|
||||
debug: '*'
|
||||
peerDependenciesMeta:
|
||||
debug:
|
||||
optional: true
|
||||
dev: true
|
||||
|
||||
/for-each@0.3.3:
|
||||
resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
|
||||
dependencies:
|
||||
@@ -12824,6 +12856,35 @@ packages:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/http-proxy-middleware@2.0.6:
|
||||
resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
peerDependencies:
|
||||
'@types/express': ^4.17.13
|
||||
peerDependenciesMeta:
|
||||
'@types/express':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@types/http-proxy': 1.17.14
|
||||
http-proxy: 1.18.1
|
||||
is-glob: 4.0.3
|
||||
is-plain-obj: 3.0.0
|
||||
micromatch: 4.0.5
|
||||
transitivePeerDependencies:
|
||||
- debug
|
||||
dev: true
|
||||
|
||||
/http-proxy@1.18.1:
|
||||
resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==}
|
||||
engines: {node: '>=8.0.0'}
|
||||
dependencies:
|
||||
eventemitter3: 4.0.7
|
||||
follow-redirects: 1.15.5
|
||||
requires-port: 1.0.0
|
||||
transitivePeerDependencies:
|
||||
- debug
|
||||
dev: true
|
||||
|
||||
/http-signature@1.2.0:
|
||||
resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==}
|
||||
engines: {node: '>=0.8', npm: '>=1.3.7'}
|
||||
@@ -12861,6 +12922,17 @@ packages:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/https-proxy-server-express@0.1.2:
|
||||
resolution: {integrity: sha512-wG6/7qwT/DVwI2PW428uoanIjfq5VsfdauROg8HVPSvrXfS8CEoKGkmilanBX8kzUgj145ab3da2Qvci3UbQhw==}
|
||||
dependencies:
|
||||
express: 4.18.2
|
||||
http-proxy-middleware: 2.0.6
|
||||
transitivePeerDependencies:
|
||||
- '@types/express'
|
||||
- debug
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/human-id@1.0.2:
|
||||
resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==}
|
||||
dev: true
|
||||
@@ -13217,6 +13289,11 @@ packages:
|
||||
resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
/is-plain-obj@3.0.0:
|
||||
resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==}
|
||||
engines: {node: '>=10'}
|
||||
dev: true
|
||||
|
||||
/is-plain-obj@4.1.0:
|
||||
resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
|
||||
engines: {node: '>=12'}
|
||||
@@ -17987,258 +18064,6 @@ packages:
|
||||
dev: false
|
||||
|
||||
time:
|
||||
/@babel/core@7.23.9: '2024-01-25T16:57:56.838Z'
|
||||
/@babel/plugin-proposal-dynamic-import@7.18.6: '2022-06-27T19:49:50.843Z'
|
||||
/@babel/plugin-transform-modules-commonjs@7.23.3: '2023-11-09T07:04:12.992Z'
|
||||
/@babel/preset-typescript@7.23.3: '2023-11-09T07:04:16.375Z'
|
||||
/@babel/types@7.23.9: '2024-01-25T16:57:51.834Z'
|
||||
/@changesets/cli@2.27.1: '2023-11-28T11:18:23.079Z'
|
||||
/@commitlint/cli@17.8.1: '2023-10-20T12:09:20.185Z'
|
||||
/@commitlint/config-conventional@17.8.1: '2023-10-20T12:09:20.694Z'
|
||||
/@commitlint/prompt-cli@17.8.1: '2023-10-20T12:09:23.467Z'
|
||||
/@gwhitney/detect-indent@7.0.1: '2022-11-22T14:07:22.341Z'
|
||||
/@pnpm/builder.policy@1.1.0: '2023-10-07T22:16:55.698Z'
|
||||
/@pnpm/byline@1.0.0: '2021-10-31T23:25:00.031Z'
|
||||
/@pnpm/colorize-semver-diff@1.0.1: '2020-10-25T15:50:17.812Z'
|
||||
/@pnpm/config.env-replace@1.1.0: '2023-04-04T18:59:45.025Z'
|
||||
/@pnpm/exec@2.0.0: '2020-10-29T23:51:01.271Z'
|
||||
/@pnpm/fs.packlist@1.0.3: '2024-01-22T09:17:00.735Z'
|
||||
/@pnpm/hosted-git-info@1.0.0: '2024-02-05T14:40:06.830Z'
|
||||
/@pnpm/log.group@1.0.1: '2023-10-21T01:56:15.610Z'
|
||||
/@pnpm/logger@5.0.0: '2022-10-14T13:56:04.285Z'
|
||||
/@pnpm/meta-updater@1.0.0: '2023-08-02T15:08:06.459Z'
|
||||
/@pnpm/network.agent@0.1.0: '2023-02-18T01:03:06.709Z'
|
||||
/@pnpm/node-fetch@1.0.0: '2023-04-19T11:13:43.487Z'
|
||||
/@pnpm/nopt@0.2.1: '2021-06-01T19:45:54.552Z'
|
||||
/@pnpm/npm-conf@2.2.2: '2023-06-14T04:08:06.108Z'
|
||||
/@pnpm/npm-lifecycle@3.0.1: '2024-02-12T21:42:14.112Z'
|
||||
/@pnpm/npm-package-arg@1.0.0: '2022-06-28T12:48:31.287Z'
|
||||
/@pnpm/os.env.path-extender@0.2.12: '2023-10-21T04:28:56.803Z'
|
||||
/@pnpm/patch-package@0.0.0: '2023-06-17T11:49:20.604Z'
|
||||
/@pnpm/ramda@0.28.1: '2022-08-03T13:56:59.597Z'
|
||||
/@pnpm/registry-mock@3.25.0: '2024-02-08T22:03:39.172Z'
|
||||
/@pnpm/semver-diff@1.1.0: '2021-11-16T12:40:59.941Z'
|
||||
/@pnpm/tabtab@0.5.2: '2024-02-05T11:11:20.511Z'
|
||||
/@pnpm/util.lex-comparator@1.0.0: '2022-11-04T01:03:46.134Z'
|
||||
/@pnpm/which@3.0.1: '2023-05-14T22:08:27.551Z'
|
||||
/@reflink/reflink@0.1.16: '2024-01-02T17:41:22.200Z'
|
||||
/@rushstack/worker-pool@0.4.9: '2023-10-01T03:01:09.960Z'
|
||||
/@types/adm-zip@0.5.5: '2023-11-20T23:37:23.167Z'
|
||||
/@types/archy@0.0.33: '2023-09-22T20:01:08.161Z'
|
||||
/@types/byline@4.2.36: '2023-11-07T00:13:37.410Z'
|
||||
/@types/cross-spawn@6.0.6: '2023-11-20T23:55:06.550Z'
|
||||
/@types/fs-extra@9.0.13: '2021-09-21T19:02:27.512Z'
|
||||
/@types/graceful-fs@4.1.9: '2023-11-07T06:37:38.558Z'
|
||||
/@types/hosted-git-info@3.0.5: '2023-11-07T07:29:23.149Z'
|
||||
/@types/ini@1.3.31: '2021-10-07T21:01:49.672Z'
|
||||
/@types/is-gzip@2.0.0: '2020-08-21T05:11:34.796Z'
|
||||
/@types/is-windows@1.0.2: '2023-11-07T08:08:49.243Z'
|
||||
/@types/isexe@2.0.2: '2023-09-26T15:11:19.397Z'
|
||||
/@types/jest@29.5.12: '2024-02-01T17:07:05.881Z'
|
||||
/@types/js-yaml@4.0.9: '2023-11-07T20:20:13.264Z'
|
||||
/@types/lodash.clonedeep@4.5.9: '2023-11-07T09:58:37.962Z'
|
||||
/@types/lodash.throttle@4.1.7: '2022-04-18T23:23:51.676Z'
|
||||
/@types/micromatch@4.0.6: '2023-11-21T01:30:53.522Z'
|
||||
/@types/mz@2.7.8: '2023-11-21T00:37:43.061Z'
|
||||
/@types/node@18.19.15: '2024-02-08T20:37:07.254Z'
|
||||
/@types/normalize-package-data@2.4.4: '2023-11-07T12:04:03.711Z'
|
||||
/@types/normalize-path@3.0.2: '2023-11-07T12:04:09.416Z'
|
||||
/@types/object-hash@3.0.6: '2023-11-07T12:14:41.852Z'
|
||||
/@types/parse-json@4.0.2: '2023-11-07T12:35:13.182Z'
|
||||
/@types/proxyquire@1.3.31: '2023-11-07T13:34:37.730Z'
|
||||
/@types/ramda@0.28.20: '2022-11-11T10:32:59.530Z'
|
||||
/@types/retry@0.12.5: '2023-11-07T15:32:02.572Z'
|
||||
/@types/rimraf@3.0.2: '2021-08-18T21:02:03.570Z'
|
||||
/@types/semver@7.5.3: '2023-09-25T14:19:37.089Z'
|
||||
/@types/semver@7.5.7: '2024-02-11T14:35:16.597Z'
|
||||
/@types/signal-exit@3.0.4: '2023-11-07T16:33:34.502Z'
|
||||
/@types/sinon@10.0.20: '2023-10-18T15:02:12.573Z'
|
||||
/@types/ssri@7.1.5: '2023-11-21T01:08:19.305Z'
|
||||
/@types/table@6.0.0: '2020-09-17T17:56:44.787Z'
|
||||
/@types/tar-stream@2.2.3: '2023-09-12T12:36:52.726Z'
|
||||
/@types/tar@6.1.11: '2024-01-25T07:07:06.203Z'
|
||||
/@types/touch@3.1.5: '2023-11-07T18:04:29.681Z'
|
||||
/@types/uuid@8.3.4: '2022-01-06T07:32:21.196Z'
|
||||
/@types/validate-npm-package-name@4.0.2: '2023-11-07T18:40:02.727Z'
|
||||
/@types/which@2.0.2: '2023-02-14T10:32:38.403Z'
|
||||
/@types/wrap-ansi@8.0.2: '2023-10-18T19:10:52.205Z'
|
||||
/@types/write-file-atomic@4.0.3: '2023-11-07T19:26:42.209Z'
|
||||
/@types/yarnpkg__lockfile@1.1.9: '2023-11-07T19:39:01.690Z'
|
||||
/@typescript-eslint/eslint-plugin@6.18.1: '2024-01-08T22:37:31.558Z'
|
||||
/@typescript-eslint/parser@6.18.1: '2024-01-08T22:36:56.059Z'
|
||||
/@yarnpkg/core@4.0.3: '2024-01-30T15:48:34.196Z'
|
||||
/@yarnpkg/extensions@2.0.1: '2024-01-30T15:47:23.585Z'
|
||||
/@yarnpkg/lockfile@1.1.0: '2018-09-10T13:37:58.652Z'
|
||||
/@yarnpkg/nm@4.0.2: '2024-01-30T15:48:54.376Z'
|
||||
/@yarnpkg/parsers@3.0.0: '2023-10-22T16:54:15.950Z'
|
||||
/@yarnpkg/pnp@2.3.2: '2020-11-30T14:45:51.504Z'
|
||||
/@zkochan/cmd-shim@6.0.0: '2023-03-16T02:26:12.592Z'
|
||||
/@zkochan/diable@1.0.2: '2020-07-07T02:01:35.635Z'
|
||||
/@zkochan/js-yaml@0.0.6: '2022-05-10T14:42:39.813Z'
|
||||
/@zkochan/retry@0.2.0: '2020-06-06T23:36:55.687Z'
|
||||
/@zkochan/rimraf@2.1.3: '2023-08-19T10:36:23.394Z'
|
||||
/@zkochan/table@2.0.1: '2023-03-20T00:49:51.928Z'
|
||||
/adm-zip@0.5.10: '2022-12-20T11:08:08.848Z'
|
||||
/ansi-diff@1.1.1: '2018-06-16T13:37:28.365Z'
|
||||
/archy@1.0.0: '2014-09-14T07:57:58.806Z'
|
||||
/better-path-resolve@1.0.0: '2019-03-01T23:22:26.750Z'
|
||||
/bin-links@4.0.3: '2023-10-12T16:22:47.134Z'
|
||||
/boxen@5.1.2: '2021-09-17T05:31:40.311Z'
|
||||
/c8@7.14.0: '2023-05-28T16:35:16.590Z'
|
||||
/camelcase-keys@6.2.2: '2020-04-03T03:51:03.816Z'
|
||||
/camelcase@6.3.0: '2022-01-01T20:29:34.388Z'
|
||||
/can-link@2.0.0: '2021-02-11T22:53:11.538Z'
|
||||
/can-write-to-dir@1.1.1: '2021-04-01T00:51:46.475Z'
|
||||
/chalk@4.1.2: '2021-07-30T12:02:52.839Z'
|
||||
/ci-info@3.9.0: '2023-10-04T04:56:10.209Z'
|
||||
/cli-columns@4.0.0: '2021-09-23T18:51:13.897Z'
|
||||
/cli-truncate@2.1.0: '2019-12-06T07:47:55.662Z'
|
||||
/cmd-extension@1.0.2: '2021-09-28T21:08:51.481Z'
|
||||
/comver-to-semver@1.0.0: '2021-04-04T23:59:39.895Z'
|
||||
/concurrently@8.2.1: '2023-08-22T07:23:44.734Z'
|
||||
/cross-env@7.0.3: '2020-12-01T20:25:26.541Z'
|
||||
/cross-spawn@7.0.3: '2020-05-25T15:35:07.209Z'
|
||||
/cspell@7.3.8: '2023-10-13T17:12:23.371Z'
|
||||
/deep-require-cwd@1.0.0: '2017-05-08T20:09:31.558Z'
|
||||
/delay@5.0.0: '2021-02-01T15:29:35.501Z'
|
||||
/detect-libc@2.0.2: '2023-07-18T08:38:01.781Z'
|
||||
/didyoumean2@6.0.1: '2023-09-07T04:09:42.951Z'
|
||||
/dint@5.1.0: '2021-02-12T01:22:54.214Z'
|
||||
/dir-is-case-sensitive@2.0.0: '2021-02-11T22:53:28.072Z'
|
||||
/encode-registry@3.0.1: '2023-09-19T12:19:16.127Z'
|
||||
/enquirer@2.4.1: '2023-07-28T12:26:30.586Z'
|
||||
/esbuild@0.19.12: '2024-01-23T17:41:40.695Z'
|
||||
/escape-string-regexp@4.0.0: '2020-04-23T07:31:25.491Z'
|
||||
/eslint-config-standard-with-typescript@39.1.1: '2023-10-07T08:26:15.756Z'
|
||||
/eslint-plugin-import@2.29.1: '2023-12-14T18:54:57.111Z'
|
||||
/eslint-plugin-n@16.6.2: '2024-01-09T03:28:40.565Z'
|
||||
/eslint-plugin-node@11.1.0: '2020-03-28T11:46:46.795Z'
|
||||
/eslint-plugin-promise@6.1.1: '2022-10-19T21:06:14.552Z'
|
||||
/eslint@8.56.0: '2023-12-15T22:55:11.833Z'
|
||||
/exists-link@2.0.0: '2017-03-02T20:50:23.918Z'
|
||||
/fast-deep-equal@3.1.3: '2020-06-08T07:27:28.474Z'
|
||||
/fast-glob@3.3.2: '2023-11-06T12:41:11.203Z'
|
||||
/filenamify@4.3.0: '2021-04-26T16:15:18.365Z'
|
||||
/find-up@5.0.0: '2020-08-11T18:44:24.748Z'
|
||||
/fs-extra@11.2.0: '2023-11-28T00:46:35.100Z'
|
||||
/@pnpm/network.agent@1.0.1: '2024-02-13T13:27:13.674Z'
|
||||
/fuse-native@2.2.6: '2020-06-03T19:26:36.838Z'
|
||||
/get-npm-tarball-url@2.1.0: '2023-11-07T13:09:03.185Z'
|
||||
/get-port@5.1.1: '2020-01-15T08:08:35.951Z'
|
||||
/ghooks@2.0.4: '2018-04-29T00:47:15.439Z'
|
||||
/graceful-git@3.1.2: '2021-09-16T00:23:26.185Z'
|
||||
/graph-cycles@1.2.1: '2021-04-11T09:47:00.295Z'
|
||||
/husky@8.0.3: '2023-01-03T08:01:18.807Z'
|
||||
/hyperdrive-schemas@2.0.0: '2020-07-14T11:16:33.671Z'
|
||||
/ini@4.1.1: '2023-05-16T17:58:46.240Z'
|
||||
/is-gzip@2.0.0: '2017-08-13T15:56:02.298Z'
|
||||
/is-inner-link@4.0.0: '2021-02-11T22:54:33.386Z'
|
||||
/is-port-reachable@3.0.0: '2019-11-12T09:49:42.096Z'
|
||||
/is-subdir@1.2.0: '2021-01-05T16:52:45.485Z'
|
||||
/is-windows@1.0.2: '2018-02-14T07:36:43.207Z'
|
||||
/isexe@2.0.0: '2017-03-23T00:53:16.356Z'
|
||||
/jest-diff@29.7.0: '2023-09-12T06:43:43.883Z'
|
||||
/jest@29.7.0: '2023-09-12T06:44:08.561Z'
|
||||
/json5@2.2.3: '2022-12-31T17:11:32.047Z'
|
||||
/keyv@4.5.4: '2023-10-07T16:53:54.487Z'
|
||||
/lcov-result-merger@3.3.0: '2022-06-21T06:32:52.863Z'
|
||||
/load-json-file@6.2.0: '2019-07-11T08:30:09.981Z'
|
||||
/lodash.clonedeep@4.5.0: '2016-08-13T17:37:19.945Z'
|
||||
/lodash.throttle@4.1.1: '2016-08-13T17:45:38.195Z'
|
||||
/loud-rejection@2.2.0: '2019-09-28T16:02:58.271Z'
|
||||
/lru-cache@10.2.0: '2024-01-25T21:11:56.776Z'
|
||||
/make-empty-dir@2.1.0: '2023-08-19T10:36:58.989Z'
|
||||
/mdast-util-to-string@2.0.0: '2020-11-11T09:15:26.835Z'
|
||||
/mem@8.1.1: '2021-04-20T15:49:07.407Z'
|
||||
/micromatch@4.0.5: '2022-03-24T19:31:47.722Z'
|
||||
/nerf-dart@1.0.0: '2015-08-20T12:22:17.009Z'
|
||||
/nock@13.3.4: '2023-10-10T23:18:23.819Z'
|
||||
/node-gyp@10.0.1: '2023-11-02T18:13:42.360Z'
|
||||
/normalize-newline@3.0.0: '2016-09-06T12:35:43.571Z'
|
||||
/normalize-package-data@5.0.0: '2022-10-14T05:22:41.916Z'
|
||||
/normalize-path@3.0.0: '2018-04-19T14:54:47.609Z'
|
||||
/normalize-registry-url@2.0.0: '2021-11-22T21:36:37.421Z'
|
||||
/npm-packlist@5.1.3: '2022-08-25T19:33:59.963Z'
|
||||
/object-hash@3.0.0: '2022-02-18T15:10:47.040Z'
|
||||
/p-any@3.0.0: '2020-02-22T14:44:06.005Z'
|
||||
/p-defer@3.0.0: '2019-06-07T08:11:13.854Z'
|
||||
/p-every@2.0.0: '2019-03-15T09:22:34.849Z'
|
||||
/p-filter@2.1.0: '2019-04-04T04:54:11.010Z'
|
||||
/p-limit@3.1.0: '2020-11-25T07:42:37.364Z'
|
||||
/p-map-values@1.0.0: '2022-11-19T01:54:52.912Z'
|
||||
/p-memoize@4.0.1: '2020-09-24T12:12:05.234Z'
|
||||
/p-queue@6.6.2: '2020-10-11T19:09:45.773Z'
|
||||
/p-settle@4.1.1: '2020-05-29T08:07:35.109Z'
|
||||
/parse-json@5.2.0: '2021-01-18T11:15:13.459Z'
|
||||
/parse-npm-tarball-url@3.0.0: '2019-05-27T23:50:09.183Z'
|
||||
/path-absolute@1.0.1: '2018-11-28T20:25:53.253Z'
|
||||
/path-exists@4.0.0: '2019-04-04T03:29:16.887Z'
|
||||
/path-name@1.0.0: '2016-10-20T18:43:50.780Z'
|
||||
/path-temp@2.1.0: '2023-07-16T21:25:05.258Z'
|
||||
/pidtree@0.6.0: '2022-06-05T18:35:44.206Z'
|
||||
/preferred-pm@3.1.2: '2023-09-05T00:02:00.039Z'
|
||||
/pretty-bytes@5.6.0: '2021-02-21T14:04:35.036Z'
|
||||
/pretty-ms@7.0.1: '2020-09-24T09:37:39.213Z'
|
||||
/process-exists@4.1.0: '2021-07-09T07:06:51.313Z'
|
||||
/promise-share@1.0.0: '2019-09-13T19:01:32.578Z'
|
||||
/proxyquire@2.1.3: '2019-08-12T13:54:46.049Z'
|
||||
/ps-list@7.2.0: '2020-06-17T09:02:36.119Z'
|
||||
/publish-packed@4.1.2: '2023-12-24T23:27:28.807Z'
|
||||
/read-ini-file@4.0.0: '2022-12-23T20:19:57.971Z'
|
||||
/read-yaml-file@2.1.0: '2021-02-11T22:53:46.064Z'
|
||||
/realpath-missing@1.1.0: '2021-02-11T22:53:50.718Z'
|
||||
/remark-parse@9.0.0: '2020-10-14T08:48:35.392Z'
|
||||
/remark-stringify@9.0.1: '2020-12-09T17:54:33.099Z'
|
||||
/rename-overwrite@5.0.0: '2023-12-24T01:49:00.212Z'
|
||||
/render-help@1.0.3: '2023-01-29T01:46:41.262Z'
|
||||
/resolve-link-target@2.0.0: '2021-02-11T22:54:11.438Z'
|
||||
/rfc4648@1.5.3: '2023-10-27T18:22:37.670Z'
|
||||
/right-pad@1.0.1: '2016-08-04T20:06:31.415Z'
|
||||
/rimraf@3.0.2: '2020-02-09T06:18:37.504Z'
|
||||
/root-link-target@3.1.0: '2021-02-11T22:54:37.968Z'
|
||||
/run-groups@3.0.1: '2020-06-06T16:33:09.423Z'
|
||||
/rxjs@7.8.1: '2023-04-26T22:56:33.678Z'
|
||||
/safe-buffer@5.2.1: '2020-05-10T16:37:30.776Z'
|
||||
/safe-execa@0.1.2: '2022-07-18T01:09:17.517Z'
|
||||
/safe-execa@0.1.3: '2023-01-04T13:29:20.746Z'
|
||||
/safe-promise-defer@1.0.1: '2022-06-18T13:48:40.297Z'
|
||||
/sanitize-filename@1.6.3: '2019-08-26T02:10:56.988Z'
|
||||
/semver-range-intersect@0.3.1: '2019-07-20T15:11:40.243Z'
|
||||
/semver-utils@1.1.4: '2018-10-09T04:14:32.485Z'
|
||||
/semver@7.6.0: '2024-02-05T17:06:51.520Z'
|
||||
/shx@0.3.4: '2022-01-10T02:16:53.953Z'
|
||||
/signal-exit@3.0.7: '2022-02-03T21:05:34.544Z'
|
||||
/sinon@16.1.3: '2023-10-19T06:07:46.164Z'
|
||||
/sort-keys@4.2.0: '2020-12-30T07:11:45.350Z'
|
||||
/split-cmd@1.1.0: '2023-12-21T02:01:15.343Z'
|
||||
/ssri@10.0.5: '2023-08-14T18:54:54.458Z'
|
||||
/stacktracey@2.1.8: '2022-01-10T09:22:17.926Z'
|
||||
/string-length@4.0.2: '2021-03-17T06:47:19.439Z'
|
||||
/strip-ansi@6.0.1: '2021-09-23T16:34:41.798Z'
|
||||
/strip-bom@4.0.0: '2019-04-28T04:40:47.887Z'
|
||||
/strip-comments-strings@1.2.0: '2022-06-12T23:34:53.852Z'
|
||||
/symlink-dir@5.2.1: '2023-12-24T23:15:15.543Z'
|
||||
/syncpack@8.5.14: '2023-02-07T19:51:38.723Z'
|
||||
/tar-stream@2.2.0: '2020-12-29T10:22:57.508Z'
|
||||
/tar@6.2.0: '2023-09-05T05:33:49.378Z'
|
||||
/tempy@1.0.1: '2021-03-17T07:03:04.830Z'
|
||||
/touch@3.1.0: '2017-06-30T23:40:39.606Z'
|
||||
/tree-kill@1.2.2: '2019-12-11T18:34:21.876Z'
|
||||
/ts-jest@29.1.1: '2023-06-30T07:49:33.771Z'
|
||||
/ts-node@10.9.2: '2023-12-08T12:04:46.154Z'
|
||||
/typescript@5.3.3: '2023-12-06T19:07:51.067Z'
|
||||
/unified@9.2.2: '2021-07-01T16:39:11.345Z'
|
||||
/unique-string@2.0.0: '2019-04-29T04:18:06.804Z'
|
||||
/uuid@9.0.1: '2023-09-12T08:56:35.205Z'
|
||||
/v8-compile-cache@2.4.0: '2023-08-14T21:38:46.534Z'
|
||||
/validate-npm-package-name@5.0.0: '2022-10-14T05:22:33.343Z'
|
||||
/verdaccio@5.20.1: '2023-01-29T15:45:43.205Z'
|
||||
/version-selector-type@3.0.0: '2020-05-02T19:53:43.038Z'
|
||||
/which@4.0.0: '2023-08-29T18:39:57.339Z'
|
||||
/wrap-ansi@7.0.0: '2020-04-22T16:53:23.889Z'
|
||||
/write-file-atomic@5.0.1: '2023-04-26T19:28:58.689Z'
|
||||
/write-ini-file@4.0.1: '2022-12-23T20:19:59.977Z'
|
||||
/write-json-file@4.3.0: '2020-02-07T08:54:49.528Z'
|
||||
/write-json5-file@3.1.0: '2021-02-11T22:54:24.439Z'
|
||||
/write-pkg@4.0.0: '2019-04-29T10:37:09.855Z'
|
||||
/write-yaml-file@5.0.0: '2023-04-27T22:24:56.969Z'
|
||||
/yaml-tag@1.1.0: '2017-06-06T16:19:00.523Z'
|
||||
|
||||
@@ -42,6 +42,7 @@ Partial<Pick<Config,
|
||||
| 'offline'
|
||||
| 'selectedProjectsGraph'
|
||||
| 'strictSsl'
|
||||
| 'sslConfigs'
|
||||
| 'unsafePerm'
|
||||
| 'userAgent'
|
||||
| 'userConfig'
|
||||
|
||||
@@ -39,6 +39,7 @@ Config,
|
||||
| 'dir'
|
||||
| 'registries'
|
||||
| 'cacheDir'
|
||||
| 'sslConfigs'
|
||||
>
|
||||
|
||||
export async function handler (opts: CatIndexCommandOptions, params: string[]) {
|
||||
|
||||
@@ -44,7 +44,7 @@ export type CreateNewStoreControllerOptions = CreateResolverOptions & Pick<Confi
|
||||
> & {
|
||||
cafsLocker?: CafsLocker
|
||||
ignoreFile?: (filename: string) => boolean
|
||||
} & Partial<Pick<Config, 'userConfig' | 'deployAllFiles'>> & Pick<ClientOptions, 'resolveSymlinksInInjectedDirs'>
|
||||
} & Partial<Pick<Config, 'userConfig' | 'deployAllFiles' | 'sslConfigs'>> & Pick<ClientOptions, 'resolveSymlinksInInjectedDirs'>
|
||||
|
||||
export async function createNewStoreController (
|
||||
opts: CreateNewStoreControllerOptions
|
||||
@@ -69,6 +69,7 @@ export async function createNewStoreController (
|
||||
offline: opts.offline,
|
||||
preferOffline: opts.preferOffline,
|
||||
rawConfig: opts.rawConfig,
|
||||
sslConfigs: opts.sslConfigs,
|
||||
retry: {
|
||||
factor: opts.fetchRetryFactor,
|
||||
maxTimeout: opts.fetchRetryMaxtimeout,
|
||||
|
||||
Reference in New Issue
Block a user