@pnpm/network.auth-header 1101.1.3 → 1101.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
# @pnpm/network.auth-header
|
|
2
|
+
|
|
3
|
+
## 1101.1.5
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies:
|
|
8
|
+
- @pnpm/types@1101.5.0
|
|
9
|
+
|
|
10
|
+
## 1101.1.4
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- A `tokenHelper` command is now given a 60-second time limit. A helper that hangs (deadlock, stuck I/O) is killed and reported as an error instead of leaving the command waiting forever.
|
|
15
|
+
|
|
16
|
+
- Updated dependencies:
|
|
17
|
+
- @pnpm/types@1101.4.0
|
|
18
|
+
|
|
19
|
+
## 1101.1.3
|
|
20
|
+
|
|
21
|
+
### Patch Changes
|
|
22
|
+
|
|
23
|
+
- Updated dependencies [852d537]
|
|
24
|
+
- @pnpm/error@1100.0.1
|
|
25
|
+
|
|
26
|
+
## 1101.1.2
|
|
27
|
+
|
|
28
|
+
### Patch Changes
|
|
29
|
+
|
|
30
|
+
- 681b593: pnpm can now use different auth tokens for different package scopes, even when those scopes use the same registry URL.
|
|
31
|
+
|
|
32
|
+
Previously, auth was selected only by registry URL. If `@org-a` and `@org-b` both used `https://npm.pkg.github.com/`, they had to share the same token. This caused problems for registries that issue tokens per organization or per scope.
|
|
33
|
+
|
|
34
|
+
Configure a scope-specific token by adding the package scope after the registry URL in the auth key:
|
|
35
|
+
|
|
36
|
+
```ini
|
|
37
|
+
@org-a:registry=https://npm.pkg.github.com/
|
|
38
|
+
@org-b:registry=https://npm.pkg.github.com/
|
|
39
|
+
|
|
40
|
+
//npm.pkg.github.com/:@org-a:_authToken=${ORG_A_TOKEN}
|
|
41
|
+
//npm.pkg.github.com/:@org-b:_authToken=${ORG_B_TOKEN}
|
|
42
|
+
|
|
43
|
+
//npm.pkg.github.com/:_authToken=${FALLBACK_TOKEN}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
`pnpm login --registry=https://npm.pkg.github.com --scope=@org-a` writes the token to the same scope-specific auth key.
|
|
47
|
+
|
|
48
|
+
When installing or publishing `@org-a/*`, pnpm uses `ORG_A_TOKEN`. For `@org-b/*`, pnpm uses `ORG_B_TOKEN`. Packages without a matching scope continue to use the registry-wide fallback token.
|
|
49
|
+
|
|
50
|
+
- a31faa7: Updated dependency ranges. Notably:
|
|
51
|
+
|
|
52
|
+
- `@pnpm/logger` peer dependency range moved to `^1100.0.0`.
|
|
53
|
+
- `msgpackr` 1.11.8 → 2.0.4 (store index files remain byte-compatible in both directions).
|
|
54
|
+
- `open` ^7.4.2 → ^11.0.0, `memoize` ^10 → ^11, `cli-truncate` ^5 → ^6, `pidtree` ^0.6 → ^1.
|
|
55
|
+
- `@yarnpkg/core` 4.5.0 → 4.8.0, `@rushstack/worker-pool` 0.7.7 → 0.7.18, `@cyclonedx/cyclonedx-library` 10.0.0 → 10.1.0, `@pnpm/config.nerf-dart` ^1 → ^2, `@pnpm/log.group` 3.0.2 → 4.0.1, `@pnpm/util.lex-comparator` ^3 → ^4.
|
|
56
|
+
|
|
57
|
+
- Updated dependencies [681b593]
|
|
58
|
+
- @pnpm/types@1101.3.2
|
|
59
|
+
|
|
60
|
+
## 1101.1.1
|
|
61
|
+
|
|
62
|
+
### Patch Changes
|
|
63
|
+
|
|
64
|
+
- Updated dependencies [bf1b731]
|
|
65
|
+
- @pnpm/types@1101.3.1
|
|
66
|
+
|
|
67
|
+
## 1101.1.0
|
|
68
|
+
|
|
69
|
+
### Minor Changes
|
|
70
|
+
|
|
71
|
+
- 5192edf: The pnpr install accelerator now forwards the caller's per-registry credentials on `POST /v1/install`, so it can resolve, verify, and fetch private dependencies from external registries as the caller. The client sends an `Authorization` header identifying itself to the pnpr server plus an `authHeaders` map of the registry tokens (built with `@pnpm/network.auth-header`), and the server threads those credentials through resolution and fetch instead of reaching the registry anonymously. Externally-resolved private content carries no pnpr access policy, so the server gates it per user against the owning registry — serving a cache hit only to a user the registry has cleared — and re-checks access (clearing it on a `401`/`403`) rather than letting the store's possession of the bytes authorize anyone. Packages the registry serves anonymously are classified public once (globally) and then served to everyone without per-user access checks, so a registry that mixes public and private packages doesn't pay the per-user cost for its public ones.
|
|
72
|
+
|
|
73
|
+
### Patch Changes
|
|
74
|
+
|
|
75
|
+
- Updated dependencies [a017bf3]
|
|
76
|
+
- @pnpm/types@1101.3.0
|
|
77
|
+
|
|
78
|
+
## 1101.0.0
|
|
79
|
+
|
|
80
|
+
### Major Changes
|
|
81
|
+
|
|
82
|
+
- a23956e: Fix a credential disclosure issue where an unscoped `_authToken` (or `_auth`, or `username` + `_password`, or `tokenHelper`) defined in one source — `~/.npmrc`, `~/.config/pnpm/auth.ini`, a workspace `.npmrc`, CLI flags, etc. — would be sent as an `Authorization` header to whichever registry a different (potentially untrusted) source named. The same fix extends to client TLS credentials (`cert`, `key`) so they aren't presented to a registry their author didn't choose.
|
|
83
|
+
|
|
84
|
+
pnpm now rewrites each unscoped per-registry setting (`_authToken`, `_auth`, `username`, `_password`, `tokenHelper`, `cert`, `key`) to its URL-scoped form at load time, using the `registry=` value declared in the same source (or the npmjs default registry if the source declares none). A later layer overriding `registry=` therefore cannot pull an unscoped credential along, because it is already pinned to the URL its author intended. `ca`/`cafile` are intentionally not rescoped — they're trust anchors, not credentials, and corporate MITM-proxy setups rely on them applying globally.
|
|
85
|
+
|
|
86
|
+
Every rescope emits a deprecation warning telling the user where the setting was pinned and how to write it directly. npm has rejected unscoped credentials outright since `npm@9`, and pnpm intends to remove support in a future major release. To target a specific registry, write the setting URL-scoped (e.g. `//registry.example.com/:_authToken=...` or `//registry.example.com/:cert=...`).
|
|
87
|
+
|
|
88
|
+
`@pnpm/network.auth-header`: removed the `defaultRegistry` parameter from `createGetAuthHeaderByURI` and `getAuthHeadersFromCreds`. Now that credentials are URL-scoped at load time, the merged `configByUri` never contains the empty-string "default registry" placeholder slot, so re-keying it onto the merged default registry is no longer needed.
|
|
89
|
+
|
|
90
|
+
### Patch Changes
|
|
91
|
+
|
|
92
|
+
- Updated dependencies [35d2355]
|
|
93
|
+
- @pnpm/types@1101.2.0
|
|
94
|
+
|
|
95
|
+
## 1100.0.3
|
|
96
|
+
|
|
97
|
+
### Patch Changes
|
|
98
|
+
|
|
99
|
+
- Updated dependencies [64afc92]
|
|
100
|
+
- @pnpm/types@1101.1.1
|
|
101
|
+
|
|
102
|
+
## 1100.0.2
|
|
103
|
+
|
|
104
|
+
### Patch Changes
|
|
105
|
+
|
|
106
|
+
- Updated dependencies [b61e268]
|
|
107
|
+
- @pnpm/types@1101.1.0
|
|
108
|
+
|
|
109
|
+
## 1100.0.1
|
|
110
|
+
|
|
111
|
+
### Patch Changes
|
|
112
|
+
|
|
113
|
+
- Updated dependencies [ff28085]
|
|
114
|
+
- @pnpm/types@1101.0.0
|
|
115
|
+
|
|
116
|
+
## 1001.0.0
|
|
117
|
+
|
|
118
|
+
### Major Changes
|
|
119
|
+
|
|
120
|
+
- 491a84f: This package is now pure ESM.
|
|
121
|
+
- 7d2fd48: Node.js v18, 19, 20, and 21 support discontinued.
|
|
122
|
+
|
|
123
|
+
### Patch Changes
|
|
124
|
+
|
|
125
|
+
- fb8962f: Fix `_password` handling for the default registry to decode from base64 before use, consistent with scoped registry behavior.
|
|
126
|
+
- b1ad9c7: Prepended `Bearer` to the authorization token generated by `tokenHelper` executable if it is missing, properly aligning pnpm's handling of token helpers with npm.
|
|
127
|
+
- Updated dependencies [76718b3]
|
|
128
|
+
- Updated dependencies [a8f016c]
|
|
129
|
+
- Updated dependencies [cc1b8e3]
|
|
130
|
+
- Updated dependencies [491a84f]
|
|
131
|
+
- Updated dependencies [7d2fd48]
|
|
132
|
+
- Updated dependencies [efb48dc]
|
|
133
|
+
- Updated dependencies [cb367b9]
|
|
134
|
+
- Updated dependencies [7b1c189]
|
|
135
|
+
- Updated dependencies [8ffb1a7]
|
|
136
|
+
- Updated dependencies [05fb1ae]
|
|
137
|
+
- Updated dependencies [71de2b3]
|
|
138
|
+
- Updated dependencies [10bc391]
|
|
139
|
+
- Updated dependencies [831f574]
|
|
140
|
+
- Updated dependencies [2df8b71]
|
|
141
|
+
- Updated dependencies [15549a9]
|
|
142
|
+
- Updated dependencies [cc7c0d2]
|
|
143
|
+
- Updated dependencies [efb48dc]
|
|
144
|
+
- @pnpm/types@1001.0.0
|
|
145
|
+
- @pnpm/error@1001.0.0
|
|
146
|
+
|
|
147
|
+
## 1000.0.6
|
|
148
|
+
|
|
149
|
+
### Patch Changes
|
|
150
|
+
|
|
151
|
+
- @pnpm/error@1000.0.5
|
|
152
|
+
|
|
153
|
+
## 1000.0.5
|
|
154
|
+
|
|
155
|
+
### Patch Changes
|
|
156
|
+
|
|
157
|
+
- @pnpm/error@1000.0.4
|
|
158
|
+
|
|
159
|
+
## 1000.0.4
|
|
160
|
+
|
|
161
|
+
### Patch Changes
|
|
162
|
+
|
|
163
|
+
- @pnpm/error@1000.0.3
|
|
164
|
+
|
|
165
|
+
## 1000.0.3
|
|
166
|
+
|
|
167
|
+
### Patch Changes
|
|
168
|
+
|
|
169
|
+
- 51bd373: Replace nerf-dart with @pnpm/config.nerf-dart to fix warning on Node.js 24.
|
|
170
|
+
|
|
171
|
+
## 1000.0.2
|
|
172
|
+
|
|
173
|
+
### Patch Changes
|
|
174
|
+
|
|
175
|
+
- @pnpm/error@1000.0.2
|
|
176
|
+
|
|
177
|
+
## 1000.0.1
|
|
178
|
+
|
|
179
|
+
### Patch Changes
|
|
180
|
+
|
|
181
|
+
- @pnpm/error@1000.0.1
|
|
182
|
+
|
|
183
|
+
## 3.0.3
|
|
184
|
+
|
|
185
|
+
### Patch Changes
|
|
186
|
+
|
|
187
|
+
- @pnpm/error@6.0.3
|
|
188
|
+
|
|
189
|
+
## 3.0.2
|
|
190
|
+
|
|
191
|
+
### Patch Changes
|
|
192
|
+
|
|
193
|
+
- @pnpm/error@6.0.2
|
|
194
|
+
|
|
195
|
+
## 3.0.1
|
|
196
|
+
|
|
197
|
+
### Patch Changes
|
|
198
|
+
|
|
199
|
+
- Updated dependencies [a7aef51]
|
|
200
|
+
- @pnpm/error@6.0.1
|
|
201
|
+
|
|
202
|
+
## 3.0.0
|
|
203
|
+
|
|
204
|
+
### Major Changes
|
|
205
|
+
|
|
206
|
+
- 43cdd87: Node.js v16 support dropped. Use at least Node.js v18.12.
|
|
207
|
+
|
|
208
|
+
### Patch Changes
|
|
209
|
+
|
|
210
|
+
- Updated dependencies [3ded840]
|
|
211
|
+
- Updated dependencies [43cdd87]
|
|
212
|
+
- @pnpm/error@6.0.0
|
|
213
|
+
|
|
214
|
+
## 2.2.0
|
|
215
|
+
|
|
216
|
+
### Minor Changes
|
|
217
|
+
|
|
218
|
+
- 5a5e42551: Export the loadToken function.
|
|
219
|
+
|
|
220
|
+
## 2.1.0
|
|
221
|
+
|
|
222
|
+
### Minor Changes
|
|
223
|
+
|
|
224
|
+
- 3ac0487b3: Add support for basic authorization header [#7371](https://github.com/pnpm/pnpm/issues/7371).
|
|
225
|
+
|
|
226
|
+
## 2.0.6
|
|
227
|
+
|
|
228
|
+
### Patch Changes
|
|
229
|
+
|
|
230
|
+
- 23039a6d6: Fix missing auth tokens in registries with paths specified (e.g. //npm.pkg.github.com/pnpm). #5970 #2933
|
|
231
|
+
|
|
232
|
+
## 2.0.5
|
|
233
|
+
|
|
234
|
+
### Patch Changes
|
|
235
|
+
|
|
236
|
+
- aa20818a0: Authorization token should be found in the configuration, when the requested URL is explicitly specified with a default port (443 on HTTPS or 80 on HTTP) [#6863](https://github.com/pnpm/pnpm/pull/6864).
|
|
237
|
+
|
|
238
|
+
## 2.0.4
|
|
239
|
+
|
|
240
|
+
### Patch Changes
|
|
241
|
+
|
|
242
|
+
- e44031e71: Improve the performance of searching for auth tokens.
|
|
243
|
+
|
|
244
|
+
## 2.0.3
|
|
245
|
+
|
|
246
|
+
### Patch Changes
|
|
247
|
+
|
|
248
|
+
- 4e7afec90: Ignore the port in the URL, while searching for authentication token in the `.npmrc` file [#6354](https://github.com/pnpm/pnpm/issues/6354).
|
|
249
|
+
|
|
250
|
+
## 2.0.2
|
|
251
|
+
|
|
252
|
+
### Patch Changes
|
|
253
|
+
|
|
254
|
+
- @pnpm/error@5.0.2
|
|
255
|
+
|
|
256
|
+
## 2.0.1
|
|
257
|
+
|
|
258
|
+
### Patch Changes
|
|
259
|
+
|
|
260
|
+
- @pnpm/error@5.0.1
|
|
261
|
+
|
|
262
|
+
## 2.0.0
|
|
263
|
+
|
|
264
|
+
### Major Changes
|
|
265
|
+
|
|
266
|
+
- eceaa8b8b: Node.js 14 support dropped.
|
|
267
|
+
|
|
268
|
+
### Patch Changes
|
|
269
|
+
|
|
270
|
+
- Updated dependencies [eceaa8b8b]
|
|
271
|
+
- @pnpm/error@5.0.0
|
|
272
|
+
|
|
273
|
+
## 1.0.1
|
|
274
|
+
|
|
275
|
+
### Patch Changes
|
|
276
|
+
|
|
277
|
+
- @pnpm/error@4.0.1
|
|
278
|
+
|
|
279
|
+
## 1.0.0
|
|
280
|
+
|
|
281
|
+
### Major Changes
|
|
282
|
+
|
|
283
|
+
- 804de211e: Initial release.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pnpm/network.auth-header",
|
|
3
|
-
"version": "1101.1.
|
|
3
|
+
"version": "1101.1.5",
|
|
4
4
|
"description": "Gets the authorization header for the given URI",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pnpm",
|
|
@@ -30,12 +30,12 @@
|
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"@pnpm/config.nerf-dart": "^2.0.1",
|
|
32
32
|
"@pnpm/error": "1100.0.1",
|
|
33
|
-
"@pnpm/types": "1101.
|
|
33
|
+
"@pnpm/types": "1101.5.0"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@jest/globals": "30.4.1",
|
|
37
|
-
"
|
|
38
|
-
"
|
|
37
|
+
"@pnpm/network.auth-header": "1101.1.5",
|
|
38
|
+
"safe-buffer": "5.2.1"
|
|
39
39
|
},
|
|
40
40
|
"engines": {
|
|
41
41
|
"node": ">=22.13"
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { type RegistryConfig } from '@pnpm/types';
|
|
2
|
-
export interface AuthHeaders {
|
|
3
|
-
authHeaderValueByURI: Record<string, string>;
|
|
4
|
-
scopedAuthHeaderValueByURI: Record<string, Record<string, string>>;
|
|
5
|
-
}
|
|
6
|
-
export type AuthHeadersByScope = Record<string, Record<string, string>>;
|
|
7
|
-
export declare function getAuthHeadersFromCreds(configByUri: Record<string, RegistryConfig>): AuthHeaders;
|
|
8
|
-
export declare function getAuthHeadersByScope(authHeaders: AuthHeaders): AuthHeadersByScope;
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import { spawnSync } from 'node:child_process';
|
|
2
|
-
import { PnpmError } from '@pnpm/error';
|
|
3
|
-
import { DEFAULT_REGISTRY_SCOPE } from '@pnpm/types';
|
|
4
|
-
export function getAuthHeadersFromCreds(configByUri) {
|
|
5
|
-
const authHeaders = {
|
|
6
|
-
authHeaderValueByURI: {},
|
|
7
|
-
scopedAuthHeaderValueByURI: {},
|
|
8
|
-
};
|
|
9
|
-
for (const [uri, registryConfig] of Object.entries(configByUri)) {
|
|
10
|
-
const normalizedUri = normalizeAuthKey(uri);
|
|
11
|
-
const header = credsToHeader(registryConfig[DEFAULT_REGISTRY_SCOPE]);
|
|
12
|
-
if (header) {
|
|
13
|
-
authHeaders.authHeaderValueByURI[normalizedUri] = header;
|
|
14
|
-
}
|
|
15
|
-
for (const scope of getRegistryScopes(registryConfig)) {
|
|
16
|
-
if (scope === DEFAULT_REGISTRY_SCOPE)
|
|
17
|
-
continue;
|
|
18
|
-
const scopedCreds = registryConfig[scope];
|
|
19
|
-
const scopedHeader = credsToHeader(scopedCreds);
|
|
20
|
-
if (scopedHeader) {
|
|
21
|
-
authHeaders.scopedAuthHeaderValueByURI[normalizedUri] ??= {};
|
|
22
|
-
authHeaders.scopedAuthHeaderValueByURI[normalizedUri][scope] = scopedHeader;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
return authHeaders;
|
|
27
|
-
}
|
|
28
|
-
export function getAuthHeadersByScope(authHeaders) {
|
|
29
|
-
const result = {};
|
|
30
|
-
for (const [registryURI, authHeader] of Object.entries(authHeaders.authHeaderValueByURI)) {
|
|
31
|
-
result[registryURI] ??= {};
|
|
32
|
-
result[registryURI][DEFAULT_REGISTRY_SCOPE] = authHeader;
|
|
33
|
-
}
|
|
34
|
-
for (const [registryURI, scopedAuthHeaders] of Object.entries(authHeaders.scopedAuthHeaderValueByURI)) {
|
|
35
|
-
result[registryURI] ??= {};
|
|
36
|
-
for (const [scope, authHeader] of Object.entries(scopedAuthHeaders)) {
|
|
37
|
-
result[registryURI][scope] = authHeader;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
return result;
|
|
41
|
-
}
|
|
42
|
-
function getRegistryScopes(registryConfig) {
|
|
43
|
-
return Object.keys(registryConfig).filter((scope) => scope.startsWith('@'));
|
|
44
|
-
}
|
|
45
|
-
function normalizeAuthKey(uri) {
|
|
46
|
-
if (!uri)
|
|
47
|
-
return uri;
|
|
48
|
-
return uri.endsWith('/') ? uri : `${uri}/`;
|
|
49
|
-
}
|
|
50
|
-
function credsToHeader(creds) {
|
|
51
|
-
if (!creds)
|
|
52
|
-
return undefined;
|
|
53
|
-
if (creds.tokenHelper) {
|
|
54
|
-
return executeTokenHelper(creds.tokenHelper);
|
|
55
|
-
}
|
|
56
|
-
if (creds.authToken) {
|
|
57
|
-
return `Bearer ${creds.authToken}`;
|
|
58
|
-
}
|
|
59
|
-
if (creds.basicAuth) {
|
|
60
|
-
return `Basic ${Buffer.from(`${creds.basicAuth.username}:${creds.basicAuth.password}`, 'utf8').toString('base64')}`;
|
|
61
|
-
}
|
|
62
|
-
return undefined;
|
|
63
|
-
}
|
|
64
|
-
function executeTokenHelper(tokenHelper) {
|
|
65
|
-
const [cmd, ...args] = tokenHelper;
|
|
66
|
-
// On Windows, .bat/.cmd files require a shell to execute.
|
|
67
|
-
const shell = process.platform === 'win32' && /\.(?:bat|cmd)$/i.test(cmd);
|
|
68
|
-
const spawnResult = spawnSync(cmd, args, { stdio: 'pipe', shell });
|
|
69
|
-
if (spawnResult.status !== 0) {
|
|
70
|
-
throw new PnpmError('TOKEN_HELPER_ERROR_STATUS', `Error running "${cmd}" as a token helper. Exit code ${spawnResult.status?.toString() ?? ''}`);
|
|
71
|
-
}
|
|
72
|
-
const token = spawnResult.stdout.toString('utf8').trimEnd();
|
|
73
|
-
if (!token) {
|
|
74
|
-
throw new PnpmError('TOKEN_HELPER_EMPTY_TOKEN', `Token helper "${cmd}" returned an empty token`);
|
|
75
|
-
}
|
|
76
|
-
// If the token already contains an auth scheme (e.g. "Bearer ...", "Basic ..."),
|
|
77
|
-
// return it as-is.
|
|
78
|
-
if (/^[A-Z]+ /i.test(token)) {
|
|
79
|
-
return token;
|
|
80
|
-
}
|
|
81
|
-
return `Bearer ${token}`;
|
|
82
|
-
}
|
|
83
|
-
//# sourceMappingURL=getAuthHeadersFromConfig.js.map
|
package/lib/index.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { RegistryConfig } from '@pnpm/types';
|
|
2
|
-
import { type AuthHeaders, type AuthHeadersByScope, getAuthHeadersByScope, getAuthHeadersFromCreds } from './getAuthHeadersFromConfig.js';
|
|
3
|
-
export { type AuthHeaders, type AuthHeadersByScope, getAuthHeadersByScope, getAuthHeadersFromCreds };
|
|
4
|
-
interface GetAuthHeaderOptions {
|
|
5
|
-
pkgName?: string;
|
|
6
|
-
}
|
|
7
|
-
export declare function createGetAuthHeaderByURI(configByUri: Record<string, RegistryConfig>): (uri: string, opts?: GetAuthHeaderOptions) => string | undefined;
|