qca-sdk 0.3.0 → 0.4.0
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/README.md +86 -1
- package/dist/core/auth.d.ts +12 -0
- package/dist/core/auth.d.ts.map +1 -0
- package/dist/core/auth.js +34 -0
- package/dist/core/auth.js.map +1 -0
- package/dist/core/client.d.ts +4 -0
- package/dist/core/client.d.ts.map +1 -1
- package/dist/core/client.js +16 -6
- package/dist/core/client.js.map +1 -1
- package/dist/core/credentials.d.ts +3 -0
- package/dist/core/credentials.d.ts.map +1 -1
- package/dist/core/credentials.js +3 -1
- package/dist/core/credentials.js.map +1 -1
- package/dist/core/service-account-credential.d.ts +20 -0
- package/dist/core/service-account-credential.d.ts.map +1 -0
- package/dist/core/service-account-credential.js +139 -0
- package/dist/core/service-account-credential.js.map +1 -0
- package/dist/esm/core/auth.d.ts +12 -0
- package/dist/esm/core/auth.d.ts.map +1 -0
- package/dist/esm/core/auth.js +30 -0
- package/dist/esm/core/auth.js.map +1 -0
- package/dist/esm/core/client.d.ts +4 -0
- package/dist/esm/core/client.d.ts.map +1 -1
- package/dist/esm/core/client.js +16 -6
- package/dist/esm/core/client.js.map +1 -1
- package/dist/esm/core/credentials.d.ts +3 -0
- package/dist/esm/core/credentials.d.ts.map +1 -1
- package/dist/esm/core/credentials.js +1 -0
- package/dist/esm/core/credentials.js.map +1 -1
- package/dist/esm/core/service-account-credential.d.ts +20 -0
- package/dist/esm/core/service-account-credential.d.ts.map +1 -0
- package/dist/esm/core/service-account-credential.js +135 -0
- package/dist/esm/core/service-account-credential.js.map +1 -0
- package/dist/esm/forward/index.d.ts +2 -1
- package/dist/esm/forward/index.d.ts.map +1 -1
- package/dist/esm/forward/index.js +1 -1
- package/dist/esm/forward/index.js.map +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/forward/index.d.ts +2 -1
- package/dist/forward/index.d.ts.map +1 -1
- package/dist/forward/index.js +2 -1
- package/dist/forward/index.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +6 -3
package/README.md
CHANGED
|
@@ -110,7 +110,7 @@ remains available.
|
|
|
110
110
|
|
|
111
111
|
### Configuration
|
|
112
112
|
|
|
113
|
-
`
|
|
113
|
+
`accessToken` accepts a string or a function returning a string or a promise, re-resolved before every request attempt. `pat` remains available for existing PAT integrations. `QODER_ACCESS_TOKEN` supplies the selected mode's token; PAT mode falls back to `QODER_PAT`. A `Credential` object can be supplied instead; see the authentication section for automatic SA exchange.
|
|
114
114
|
|
|
115
115
|
The base URL comes from `QODER_FORWARD_BASE_URL` for Forward and `QODER_BASE_URL` for Managed, defaulting to `https://api.qoder.com/api/v1/forward` and `https://api.qoder.com/api/v1/cloud`. Explicit constructor options always win.
|
|
116
116
|
|
|
@@ -126,6 +126,91 @@ const client = new ManagedClient({
|
|
|
126
126
|
});
|
|
127
127
|
```
|
|
128
128
|
|
|
129
|
+
## PAT and Service Account authentication
|
|
130
|
+
|
|
131
|
+
PAT and SA are parallel modes. Existing `pat` calls keep working. For an existing
|
|
132
|
+
SAT use `{ authMode: 'sa', accessToken }`. `accessToken` also accepts a callback.
|
|
133
|
+
`QODER_ACCESS_TOKEN` supplies the selected mode's token; only PAT mode falls back
|
|
134
|
+
to `QODER_PAT`. Ordinary clients never automatically read `QODER_SA_KEY`.
|
|
135
|
+
|
|
136
|
+
For automatic SAT exchange, explicitly construct a shared credential:
|
|
137
|
+
|
|
138
|
+
```ts
|
|
139
|
+
import { ForwardClient, ManagedClient, ServiceAccountCredential } from 'qca-sdk';
|
|
140
|
+
|
|
141
|
+
const credential = ServiceAccountCredential.fromEnv({
|
|
142
|
+
region: 'global',
|
|
143
|
+
scopes: ['qca.access', 'forward.access'],
|
|
144
|
+
});
|
|
145
|
+
const forward = new ForwardClient({ credential });
|
|
146
|
+
const managed = new ManagedClient({ credential });
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
For CN, use `region: 'cn'` and matching `https://api.qoder.com.cn/api/v1/forward/`
|
|
150
|
+
and `https://api.qoder.com.cn/api/v1/cloud/` BaseURLs. Managed-only integrations
|
|
151
|
+
can request `['qca.access']`. Scopes and Service Account permissions/workspace
|
|
152
|
+
bindings must be configured server-side; the SDK does not provision them.
|
|
153
|
+
|
|
154
|
+
The credential lazily exchanges the SA Key, caches the server's actual lifetime,
|
|
155
|
+
and renews on the next request in the refresh window. Concurrent callers share
|
|
156
|
+
one exchange. A transient failure can reuse a still-safe SAT; authentication or
|
|
157
|
+
invalid-response failures cannot. Failures enter a bounded cooldown. There is
|
|
158
|
+
no PAT fallback, background refresh, or automatic replay of a 401 write request.
|
|
159
|
+
The independent exchange timeout includes reading its body (default 30 seconds).
|
|
160
|
+
Cancelling a business request ends that caller's wait; the shared exchange can
|
|
161
|
+
continue and cache its result. Already-open streams are not closed by cache expiry.
|
|
162
|
+
|
|
163
|
+
Do not combine `accessToken` with `pat` or `credential`, or an SA credential with
|
|
164
|
+
a static token. Legacy `pat` + custom credential retains provider precedence.
|
|
165
|
+
Request Authorization headers still override automatic injection. `withOptions`
|
|
166
|
+
retains mode and source; explicitly changing `authMode` clears the other mode's
|
|
167
|
+
credentials before applying new options.
|
|
168
|
+
|
|
169
|
+
Run the read-only CN/Global SA smoke separately with `npm run test:live:sa`, setting
|
|
170
|
+
`QODER_SA_CN_KEY` and `QODER_SA_GLOBAL_KEY` in `.env.live` or the process environment.
|
|
171
|
+
Process variables take precedence; `LIVE_ENV_FILE` selects another file.
|
|
172
|
+
Both keys are checked before the first API call. For write/read, Session SSE and
|
|
173
|
+
cleanup verification, run `npm run test:live:sa:execution` with
|
|
174
|
+
`QODER_SA_LIVE_ALLOW_WRITE=true` and `QODER_SA_LIVE_ALLOW_EXECUTION=true`.
|
|
175
|
+
`QODER_SA_MODEL` defaults to `auto`. Ordinary offline and PAT suites do not require
|
|
176
|
+
SA credentials; `QODER_AUTH_MODE` switches examples, not the PAT test suites. See the
|
|
177
|
+
[official authentication contract](https://docs.qoder.com/cloud-agents/api/conventions/authentication).
|
|
178
|
+
|
|
179
|
+
### Authentication examples
|
|
180
|
+
|
|
181
|
+
The two read-only examples under `examples/auth/` show client construction directly:
|
|
182
|
+
SA Key exchange with automatic caching/renewal, and direct SAT access with renewal
|
|
183
|
+
managed by the caller. Each lists Forward templates and Managed agents; no model
|
|
184
|
+
execution or resources are created. The SA needs both API scopes/permissions and
|
|
185
|
+
its Managed workspace binding in the selected region.
|
|
186
|
+
|
|
187
|
+
```sh
|
|
188
|
+
npm run build
|
|
189
|
+
# Configure QODER_SA_REGION=cn|global and only the credential needed by the demo.
|
|
190
|
+
node --env-file=.env.live examples/auth/sa-key.mjs # QODER_SA_KEY; leave QODER_ACCESS_TOKEN empty
|
|
191
|
+
node --env-file=.env.live examples/auth/sa-token.mjs # QODER_ACCESS_TOKEN; leave QODER_SA_KEY empty
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
The existing business examples keep PAT as the default. Node's `--env-file` can
|
|
195
|
+
load `.env.live`; the example helpers themselves read process environment variables.
|
|
196
|
+
Set `QODER_AUTH_MODE=sa` to select SA explicitly, then configure exactly one of
|
|
197
|
+
`QODER_SA_KEY` and `QODER_ACCESS_TOKEN`. `QODER_SA_REGION=cn|global` selects both the
|
|
198
|
+
business and exchange hosts. Leave the unused credential empty. Ambient PATs are
|
|
199
|
+
ignored in SA mode; missing SA credentials and conflicting Key/SAT inputs fail
|
|
200
|
+
before a request is sent. This selection is example configuration, not implicit
|
|
201
|
+
SDK behavior.
|
|
202
|
+
|
|
203
|
+
```sh
|
|
204
|
+
# Reuse the same models or Session program with SA authentication.
|
|
205
|
+
QODER_AUTH_MODE=sa QODER_SA_REGION=cn node --env-file=.env.live examples/forward/models.mjs
|
|
206
|
+
QODER_AUTH_MODE=sa QODER_SA_REGION=global node --env-file=.env.live examples/managed/session.mjs
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
For a centralized SAT service, use
|
|
210
|
+
`new ForwardClient({ authMode: 'sa', accessToken: () => tokenManager.getValidSAT() })`.
|
|
211
|
+
The callback may return a promise and is called before each HTTP attempt; the token
|
|
212
|
+
manager is responsible for renewing the SAT.
|
|
213
|
+
|
|
129
214
|
## Request and response types
|
|
130
215
|
|
|
131
216
|
Every operation is typed. The two APIs define independent type sets, so request and response types are exported from the subpath entry points rather than the package root:
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type Credential } from './credentials.js';
|
|
2
|
+
export type AuthMode = 'pat' | 'sa';
|
|
3
|
+
export type TokenSource = string | (() => string | Promise<string>);
|
|
4
|
+
export interface AuthOptions {
|
|
5
|
+
authMode?: AuthMode;
|
|
6
|
+
pat?: TokenSource;
|
|
7
|
+
accessToken?: TokenSource;
|
|
8
|
+
credential?: Credential;
|
|
9
|
+
}
|
|
10
|
+
export declare function resolveAuthMode(options: AuthOptions): AuthMode;
|
|
11
|
+
export declare function resolveToken(options: AuthOptions, mode: AuthMode): Promise<string | undefined>;
|
|
12
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/core/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAW,MAAM,kBAAkB,CAAC;AAI5D,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC;AACpC,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AACpE,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,GAAG,CAAC,EAAE,WAAW,CAAC;IAClB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,QAAQ,CAY9D;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CASpG"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveAuthMode = resolveAuthMode;
|
|
4
|
+
exports.resolveToken = resolveToken;
|
|
5
|
+
const credentials_js_1 = require("./credentials.js");
|
|
6
|
+
const service_account_credential_js_1 = require("./service-account-credential.js");
|
|
7
|
+
const error_js_1 = require("./error.js");
|
|
8
|
+
function resolveAuthMode(options) {
|
|
9
|
+
const nativeSA = options.credential instanceof service_account_credential_js_1.ServiceAccountCredential;
|
|
10
|
+
const mode = options.authMode ?? (nativeSA ? 'sa' : 'pat');
|
|
11
|
+
if (mode !== 'pat' && mode !== 'sa')
|
|
12
|
+
throw new error_js_1.QoderError('authMode must be pat or sa');
|
|
13
|
+
if (mode === 'sa' && options.pat !== undefined)
|
|
14
|
+
throw new error_js_1.QoderError('pat cannot be used in SA mode');
|
|
15
|
+
if (nativeSA && (mode !== 'sa' || options.pat !== undefined || options.accessToken !== undefined)) {
|
|
16
|
+
throw new error_js_1.QoderError('ServiceAccountCredential requires SA mode without a static token');
|
|
17
|
+
}
|
|
18
|
+
if (options.accessToken !== undefined && (options.pat !== undefined || options.credential !== undefined)) {
|
|
19
|
+
throw new error_js_1.QoderError('accessToken cannot be combined with pat or credential');
|
|
20
|
+
}
|
|
21
|
+
return mode;
|
|
22
|
+
}
|
|
23
|
+
async function resolveToken(options, mode) {
|
|
24
|
+
const source = options.credential ?? options.accessToken ?? options.pat;
|
|
25
|
+
if (source !== undefined) {
|
|
26
|
+
const token = typeof source === 'object' ? await source.getToken()
|
|
27
|
+
: typeof source === 'function' ? await source() : source;
|
|
28
|
+
if (typeof token !== 'string' || !token.trim())
|
|
29
|
+
throw new error_js_1.QoderError('Configured credential returned an empty access token');
|
|
30
|
+
return token;
|
|
31
|
+
}
|
|
32
|
+
return (0, credentials_js_1.readEnv)('QODER_ACCESS_TOKEN') || (mode === 'pat' ? (0, credentials_js_1.readEnv)('QODER_PAT') : undefined);
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/core/auth.ts"],"names":[],"mappings":";;AAaA,0CAYC;AAED,oCASC;AApCD,qDAA4D;AAC5D,mFAA2E;AAC3E,yCAAwC;AAWxC,SAAgB,eAAe,CAAC,OAAoB;IAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,YAAY,wDAAwB,CAAC;IACxE,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC3D,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI;QAAE,MAAM,IAAI,qBAAU,CAAC,4BAA4B,CAAC,CAAC;IACxF,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS;QAAE,MAAM,IAAI,qBAAU,CAAC,+BAA+B,CAAC,CAAC;IACtG,IAAI,QAAQ,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,EAAE,CAAC;QAClG,MAAM,IAAI,qBAAU,CAAC,kEAAkE,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,EAAE,CAAC;QACzG,MAAM,IAAI,qBAAU,CAAC,uDAAuD,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAEM,KAAK,UAAU,YAAY,CAAC,OAAoB,EAAE,IAAc;IACrE,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC;IACxE,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE;YAChE,CAAC,CAAC,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QAC3D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YAAE,MAAM,IAAI,qBAAU,CAAC,sDAAsD,CAAC,CAAC;QAC7H,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAA,wBAAO,EAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAA,wBAAO,EAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAC9F,CAAC"}
|
package/dist/core/client.d.ts
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { APIPromise } from './api-promise.js';
|
|
2
2
|
import { type Credential } from './credentials.js';
|
|
3
|
+
import { type AuthMode } from './auth.js';
|
|
3
4
|
import { PagePromise, type PaginationMode } from './pagination.js';
|
|
4
5
|
export type HeadersLike = HeadersInit | Record<string, string | null | undefined>;
|
|
5
6
|
export type Middleware = (request: Request, next: (request: Request) => Promise<Response>) => Promise<Response>;
|
|
6
7
|
export interface ClientOptions {
|
|
8
|
+
authMode?: AuthMode;
|
|
9
|
+
accessToken?: string | (() => string | Promise<string>);
|
|
7
10
|
pat?: string | (() => string | Promise<string>);
|
|
8
11
|
credential?: Credential;
|
|
9
12
|
baseURL?: string;
|
|
@@ -32,6 +35,7 @@ export declare function mergeHeaders(...sources: (HeadersLike | undefined)[]): H
|
|
|
32
35
|
export declare function stringifyQuery(query: object, arrayFormat?: 'repeat' | 'brackets'): string;
|
|
33
36
|
export declare class APIClient {
|
|
34
37
|
readonly mode: 'forward' | 'managed';
|
|
38
|
+
readonly authMode: AuthMode;
|
|
35
39
|
readonly baseURL: string;
|
|
36
40
|
readonly maxRetries: number;
|
|
37
41
|
readonly timeout: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,KAAK,UAAU,EAAW,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"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"}
|
package/dist/core/client.js
CHANGED
|
@@ -5,6 +5,8 @@ exports.mergeHeaders = mergeHeaders;
|
|
|
5
5
|
exports.stringifyQuery = stringifyQuery;
|
|
6
6
|
const api_promise_js_1 = require("./api-promise.js");
|
|
7
7
|
const credentials_js_1 = require("./credentials.js");
|
|
8
|
+
const auth_js_1 = require("./auth.js");
|
|
9
|
+
const service_account_credential_js_1 = require("./service-account-credential.js");
|
|
8
10
|
const error_js_1 = require("./error.js");
|
|
9
11
|
const pagination_js_1 = require("./pagination.js");
|
|
10
12
|
const streaming_js_1 = require("./streaming.js");
|
|
@@ -77,6 +79,7 @@ async function wait(ms, signal, timedOut) {
|
|
|
77
79
|
}
|
|
78
80
|
class APIClient {
|
|
79
81
|
mode;
|
|
82
|
+
authMode;
|
|
80
83
|
baseURL;
|
|
81
84
|
maxRetries;
|
|
82
85
|
timeout;
|
|
@@ -86,13 +89,16 @@ class APIClient {
|
|
|
86
89
|
controllers = new WeakMap();
|
|
87
90
|
constructor(options = {}, mode = 'managed') {
|
|
88
91
|
this.mode = mode;
|
|
89
|
-
this.
|
|
92
|
+
this.authMode = (0, auth_js_1.resolveAuthMode)(options);
|
|
93
|
+
this.options = { ...options, authMode: this.authMode };
|
|
90
94
|
this.defaultHeaders = options.defaultHeaders;
|
|
91
95
|
this.baseURL = (options.baseURL ?? (0, credentials_js_1.readEnv)(mode === 'forward' ? 'QODER_FORWARD_BASE_URL' : 'QODER_BASE_URL')
|
|
92
96
|
?? `https://api.qoder.com/api/v1/${mode === 'forward' ? 'forward' : 'cloud'}`).replace(/\/+$/, '');
|
|
93
97
|
const url = new URL(this.baseURL);
|
|
94
98
|
if (!['http:', 'https:'].includes(url.protocol) || url.username || url.password)
|
|
95
99
|
throw new error_js_1.QoderError('Invalid baseURL');
|
|
100
|
+
if (options.credential instanceof service_account_credential_js_1.ServiceAccountCredential)
|
|
101
|
+
options.credential.validateRegion(url.hostname);
|
|
96
102
|
this.maxRetries = options.maxRetries ?? 2;
|
|
97
103
|
this.timeout = options.timeout ?? 600_000;
|
|
98
104
|
this.validateOptions(this.maxRetries, this.timeout);
|
|
@@ -103,8 +109,14 @@ class APIClient {
|
|
|
103
109
|
/** Create a client of the same type, replacing supplied options and retaining the rest. */
|
|
104
110
|
withOptions(options) {
|
|
105
111
|
const Client = this.constructor;
|
|
112
|
+
const inherited = { ...this.options };
|
|
113
|
+
if (options.authMode !== undefined && options.authMode !== this.authMode) {
|
|
114
|
+
delete inherited.pat;
|
|
115
|
+
delete inherited.accessToken;
|
|
116
|
+
delete inherited.credential;
|
|
117
|
+
}
|
|
106
118
|
return new Client({
|
|
107
|
-
...
|
|
119
|
+
...inherited,
|
|
108
120
|
baseURL: this.baseURL,
|
|
109
121
|
maxRetries: this.maxRetries,
|
|
110
122
|
timeout: this.timeout,
|
|
@@ -122,7 +134,7 @@ class APIClient {
|
|
|
122
134
|
if (headers.get('authorization')) {
|
|
123
135
|
return;
|
|
124
136
|
}
|
|
125
|
-
throw new Error('Could not resolve authentication method.
|
|
137
|
+
throw new Error('Could not resolve authentication method. Configure accessToken or credential, or QODER_ACCESS_TOKEN (QODER_PAT is supported in PAT mode).');
|
|
126
138
|
}
|
|
127
139
|
request(options) {
|
|
128
140
|
return new api_promise_js_1.APIPromise(this.execute(options), async (response) => {
|
|
@@ -253,9 +265,7 @@ class APIClient {
|
|
|
253
265
|
if (!storage) {
|
|
254
266
|
attemptHeaders.set('X-Qoder-Retry-Count', String(attempt));
|
|
255
267
|
if (!attemptHeaders.has('authorization')) {
|
|
256
|
-
const
|
|
257
|
-
const configured = this.options.pat;
|
|
258
|
-
const token = await withSignal(Promise.resolve(credential ? credential.getToken() : typeof configured === 'function' ? configured() : configured ?? (0, credentials_js_1.readEnv)('QODER_PAT')), signal, () => timedOut);
|
|
268
|
+
const token = await withSignal((0, auth_js_1.resolveToken)(this.options, this.authMode), signal, () => timedOut);
|
|
259
269
|
if (token)
|
|
260
270
|
attemptHeaders.set('Authorization', `Bearer ${token}`);
|
|
261
271
|
}
|
package/dist/core/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":";;;AAwCA,oCAcC;AAED,wCAYC;AApED,qDAA8C;AAC9C,qDAA4D;AAC5D,uCAAyE;AACzE,mFAA2E;AAC3E,yCAAoH;AACpH,mDAA4F;AAC5F,iDAAwC;AACxC,8CAAwC;AACxC,6DAAuD;AAgCvD,SAAgB,YAAY,CAAC,GAAG,OAAoC;IAClE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,IAAI,MAAM,YAAY,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACvD,IAAI,OAAO,CAAC,MAAqB,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;QACtF,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAClD,IAAI,KAAK,KAAK,IAAI;oBAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;qBACnC,IAAI,KAAK,KAAK,SAAS;oBAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAgB,cAAc,CAAC,KAAa,EAAE,cAAqC,QAAQ;IACzF,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,KAAc,EAAE,EAAE;QAC7C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO;QAClD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAAC,KAAK,MAAM,IAAI,IAAI,KAAK;gBAAE,MAAM,CAAC,WAAW,KAAK,UAAU,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAAC,CAAC;aACtI,IAAI,KAAK,YAAY,IAAI;YAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;aACnE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACnC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,MAAM,CAAC,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;QACtF,CAAC;;YAAM,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC;IACF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACrE,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC3B,CAAC;AAED,SAAS,UAAU,CAAC,MAAmB,EAAE,QAAiB;IACxD,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,oCAAyB,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;QAC5F,CAAC,CAAC,IAAI,4BAAiB,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AAC7E,CAAC;AAED,KAAK,UAAU,UAAU,CAAI,OAAuB,EAAE,MAAmB,EAAE,QAAuB;IAChG,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,KAAK,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC9C,MAAM,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACxC,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC3D,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3G,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,IAAI,CAAC,EAAU,EAAE,MAAmB,EAAE,QAAuB;IAC1E,IAAI,KAAgD,CAAC;IACrD,IAAI,CAAC;QAAC,MAAM,UAAU,CAAC,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,GAAG,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAAC,CAAC;YACzG,CAAC;QAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAAC,CAAC;AAClC,CAAC;AAED,MAAa,SAAS;IAU8B;IATzC,QAAQ,CAAW;IACnB,OAAO,CAAS;IAChB,UAAU,CAAS;IACnB,OAAO,CAAS;IAChB,cAAc,CAA0B;IAC9B,OAAO,CAAgB;IACzB,SAAS,CAA0B;IACnC,WAAW,GAAG,IAAI,OAAO,EAA6B,CAAC;IAExE,YAAY,UAAyB,EAAE,EAAW,OAA8B,SAAS;QAAvC,SAAI,GAAJ,IAAI,CAAmC;QACvF,IAAI,CAAC,QAAQ,GAAG,IAAA,yBAAe,EAAC,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACvD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;QAC7C,IAAI,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,IAAA,wBAAO,EAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,gBAAgB,CAAC;eACvG,gCAAgC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACrG,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ;YAAE,MAAM,IAAI,qBAAU,CAAC,iBAAiB,CAAC,CAAC;QACzH,IAAI,OAAO,CAAC,UAAU,YAAY,wDAAwB;YAAE,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5G,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC;QAC1C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC;QACnD,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,qBAAU,CAAC,oCAAoC,CAAC,CAAC;IAClF,CAAC;IAED,2FAA2F;IAC3F,WAAW,CAAC,OAA+B;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAgF,CAAC;QACrG,MAAM,SAAS,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QACtC,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YACzE,OAAO,SAAS,CAAC,GAAG,CAAC;YACrB,OAAO,SAAS,CAAC,WAAW,CAAC;YAC7B,OAAO,SAAS,CAAC,UAAU,CAAC;QAC9B,CAAC;QACD,OAAO,IAAI,MAAM,CAAC;YAChB,GAAG,SAAS;YACZ,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,SAAS;YACrB,GAAG,OAAO;SACX,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IAEO,eAAe,CAAC,OAAe,EAAE,OAAe;QACtD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC;YAAE,MAAM,IAAI,qBAAU,CAAC,2CAA2C,CAAC,CAAC;QACjH,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC;YAAE,MAAM,IAAI,qBAAU,CAAC,uCAAuC,CAAC,CAAC;IAC9G,CAAC;IAES,eAAe,CAAC,OAAgB;QACxC,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;YACjC,OAAO;QACT,CAAC;QAED,MAAM,IAAI,KAAK,CACb,2IAA2I,CAC5I,CAAC;IACJ,CAAC;IAED,OAAO,CAAI,OAA0B;QACnC,OAAO,IAAI,2BAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;YAC9D,IAAI,OAAO,CAAC,YAAY,KAAK,UAAU,IAAI,OAAO,CAAC,YAAY,KAAK,QAAQ;gBAAE,OAAO,QAAa,CAAC;YACnG,IAAI,OAAO,CAAC,YAAY,KAAK,QAAQ;gBAAE,OAAO,IAAI,qBAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAM,CAAC;YACxG,IAAI,OAAO,CAAC,YAAY,KAAK,MAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC1F,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;gBAC9B,OAAO,SAAc,CAAC;YACxB,CAAC;YACD,OAAO,IAAI,CAAC,iBAAiB,CAAI,QAAQ,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAI,QAAkB;QACnD,MAAM,IAAI,GAAY,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACtE,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE;gBACzC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;gBACjF,UAAU,EAAE,KAAK;aAClB,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAS,CAAC;IACnB,CAAC;IAED,UAAU,CAAI,IAAY,EAAE,QAAgB,EAAE,EAAE,UAA0B,EAAE,EAAE,aAA6B,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;QACpJ,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;QAC5E,OAAO,IAAI,2BAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAC1G,IAAI,oBAAI,CAAI,IAAI,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,iBAAiB,CAAkB,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;IACtJ,CAAC;IAED,8FAA8F;IAC9F,YAAY,CAAC,IAAY,EAAE,UAA0B,EAAE;QACrD,MAAM,QAAQ,GAAG,CAAC,KAAK,IAAI,EAAE;YAC3B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAkB,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;YAC5G,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ;gBAAE,MAAM,IAAI,qBAAU,CAAC,2BAA2B,CAAC,CAAC;YACnI,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,IAAI,CAAC,CAAC;QAC3K,CAAC,CAAC,EAAE,CAAC;QACL,OAAO,IAAI,2BAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC;IAEO,SAAS,CAAC,MAAc,EAAE,OAAgB,EAAE,UAAmB,EAAE,QAAmB;QAC1F,IAAI,CAAC,UAAU;YAAE,OAAO,KAAK,CAAC;QAC9B,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAClF,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC3B,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAChF,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,OAAO;YAAE,OAAO,KAAK,CAAC;QACrE,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC;QACnE,OAAO,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,CAAC;IACtF,CAAC;IAEO,UAAU,CAAC,QAA8B,EAAE,OAAe;QAChE,IAAI,KAAyB,CAAC;QAC9B,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAClD,IAAI,EAAE,EAAE,CAAC;gBACP,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;gBAC9B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;oBAAE,KAAK,GAAG,MAAM,CAAC;YAC5C,CAAC;YACD,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAClD,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;gBACpB,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;gBAClC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;YAClF,CAAC;QACH,CAAC;QACD,+DAA+D;QAC/D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAC3E,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;IACzE,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,OAA0B,EAAE,OAAO,GAAG,KAAK;QAC/D,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC;QACtD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC;QAChD,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACvC,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC,MAAM,CAAC;QACpE,IAAI,YAAY,CAAC,OAAO;YAAE,MAAM,UAAU,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAChE,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7G,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,cAAc,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAClI,IAAI,KAAK;gBAAE,GAAG,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;QAC9D,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QACzF,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;YACrD,MAAM,EAAE,OAAO,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,kBAAkB;YACpF,YAAY,EAAE,UAAU,oBAAO,EAAE;YACjC,GAAG,IAAA,oCAAe,GAAE;YACpB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9E,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,OAAO,CAAC,cAAc,KAAK,SAAS;YAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;QACjG,IAAI,IAA0B,CAAC;QAC/B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;gBAAC,IAAI,GAAG,KAAK,CAAC;gBAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAAC,CAAC;iBAC3E,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,YAAY,WAAW,IAAI,KAAK,YAAY,UAAU,IAAI,KAAK,YAAY,eAAe,IAAI,KAAK,YAAY,cAAc;gBAAE,IAAI,GAAG,KAAiB,CAAC;iBACvN,CAAC;gBAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;oBAAE,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;YAAC,CAAC;QAC3H,CAAC;QACD,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,YAAY,cAAc,CAAC,CAAC;QACrD,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;YACzC,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC5D,IAAI,YAAY,CAAC,OAAO;gBAAE,OAAO,EAAE,CAAC;;gBAC/B,YAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACrE,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACzE,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;YACjC,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,IAAI,UAA8B,CAAC;YACnC,IAAI,CAAC;gBACH,IAAI,MAAM,CAAC,OAAO;oBAAE,MAAM,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;gBACvD,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,cAAc,CAAC,GAAG,CAAC,qBAAqB,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC3D,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;wBACzC,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,IAAA,sBAAY,EAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;wBAClG,IAAI,KAAK;4BAAE,cAAc,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,KAAK,EAAE,CAAC,CAAC;oBACpE,CAAC;oBACD,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;gBACvC,CAAC;gBACD,IAAI,QAAkB,CAAC;gBACvB,IAAI,CAAC;oBACH,MAAM,IAAI,GAAsC,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;oBAC1I,IAAI,IAAI,YAAY,cAAc;wBAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;oBACzD,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;oBAChE,wFAAwF;oBACxF,MAAM,UAAU,GAA4B,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;wBACrE,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,QAAQ,GAAG,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;wBACxG,IAAI,CAAC;4BACH,OAAO,MAAM,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;wBACpG,CAAC;gCAAS,CAAC;4BAAC,YAAY,CAAC,KAAK,CAAC,CAAC;wBAAC,CAAC;oBACpC,CAAC,CAAC;oBACF,IAAI,YAA+B,CAAC;oBACpC,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;wBACtB,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,CACjC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,EACpD,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;wBAClC,YAAY,GAAG,IAAI,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;oBAC9C,CAAC;;wBAAM,YAAY,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;oBACvD,QAAQ,GAAG,MAAM,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;oBAClE,IAAI,CAAC,CAAC,QAAQ,YAAY,QAAQ,CAAC;wBAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;gBACrF,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,YAAY,CAAC,OAAO;wBAAE,MAAM,UAAU,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;oBAChE,IAAI,OAAO,GAAG,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE,UAAU,CAAC,EAAE,CAAC;wBAC5E,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;wBACjD,SAAS;oBACX,CAAC;oBACD,IAAI,QAAQ;wBAAE,MAAM,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;oBAC7C,MAAM,IAAI,6BAAkB,CAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;gBACrE,CAAC;gBACD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACjB,IAAI,OAAO,GAAG,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC;wBACtF,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;wBAChD,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;wBAC9B,SAAS;oBACX,CAAC;oBACD,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;oBACtE,IAAI,KAAK,GAAY,GAAG,CAAC;oBACzB,IAAI,CAAC;wBAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAC,4BAA4B,CAAC,CAAC;oBACvE,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC5H,MAAM,OAAO,GAAG,mBAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;oBACjG,OAAO,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC;oBACxE,MAAM,OAAO,CAAC;gBAChB,CAAC;gBACD,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;gBACjF,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;gBAC1C,SAAS,GAAG,IAAI,CAAC;gBACjB,OAAO,OAAO,CAAC;YACjB,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,SAAS;oBAAE,OAAO,EAAE,CAAC;gBAC1B,IAAI,UAAU,KAAK,SAAS;oBAAE,MAAM,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;YAClF,CAAC;QACH,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,QAAkB,EAAE,UAA2B,EAAE,OAAmB,EAAE,QAAuB;QAChH,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAAC,OAAO,EAAE,CAAC;YAAC,OAAO,QAAQ,CAAC;QAAC,CAAC;QACnD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,IAAI,cAAc,CAAa;YAC1C,KAAK,CAAC,IAAI,CAAC,MAAM;gBACf,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;oBAC5E,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;wBAAC,OAAO,EAAE,CAAC;wBAAC,MAAM,CAAC,WAAW,EAAE,CAAC;wBAAC,MAAM,CAAC,KAAK,EAAE,CAAC;oBAAC,CAAC;;wBAChE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACpC,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAAC,OAAO,EAAE,CAAC;oBAAC,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;oBAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAAC,CAAC;YAC5F,CAAC;YACD,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,OAAO,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SACjE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3H,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;QAC9D,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAzPD,8BAyPC"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
export interface Credential {
|
|
2
2
|
getToken(): string | Promise<string>;
|
|
3
3
|
}
|
|
4
|
+
export { ServiceAccountCredential } from './service-account-credential.js';
|
|
5
|
+
export type { ServiceAccountCredentialOptions } from './service-account-credential.js';
|
|
6
|
+
export type { AuthMode } from './auth.js';
|
|
4
7
|
export declare function readEnv(name: string): string | undefined;
|
|
5
8
|
export declare class PATCredential implements Credential {
|
|
6
9
|
private readonly token;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/core/credentials.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,QAAQ,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACtC;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAExD;AAED,qBAAa,aAAc,YAAW,UAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,MAAM;IAI1C,MAAM,CAAC,OAAO,CAAC,IAAI,SAAc,GAAG,aAAa;IAIjD,QAAQ,IAAI,MAAM;CACnB"}
|
|
1
|
+
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/core/credentials.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,QAAQ,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACtC;AAED,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,YAAY,EAAE,+BAA+B,EAAE,MAAM,iCAAiC,CAAC;AACvF,YAAY,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE1C,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAExD;AAED,qBAAa,aAAc,YAAW,UAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,MAAM;IAI1C,MAAM,CAAC,OAAO,CAAC,IAAI,SAAc,GAAG,aAAa;IAIjD,QAAQ,IAAI,MAAM;CACnB"}
|
package/dist/core/credentials.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PATCredential = void 0;
|
|
3
|
+
exports.PATCredential = exports.ServiceAccountCredential = void 0;
|
|
4
4
|
exports.readEnv = readEnv;
|
|
5
|
+
var service_account_credential_js_1 = require("./service-account-credential.js");
|
|
6
|
+
Object.defineProperty(exports, "ServiceAccountCredential", { enumerable: true, get: function () { return service_account_credential_js_1.ServiceAccountCredential; } });
|
|
5
7
|
function readEnv(name) {
|
|
6
8
|
return globalThis.process?.env?.[name];
|
|
7
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/core/credentials.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/core/credentials.ts"],"names":[],"mappings":";;;AAQA,0BAEC;AAND,iFAA2E;AAAlE,yIAAA,wBAAwB,OAAA;AAIjC,SAAgB,OAAO,CAAC,IAAY;IAClC,OAAQ,UAAoF,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;AACpH,CAAC;AAED,MAAa,aAAa;IACK;IAA7B,YAA6B,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;QACxC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,WAAW;QAC/B,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,QAAQ,KAAa,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;CAC1C;AAVD,sCAUC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Credential } from './credentials.js';
|
|
2
|
+
export interface ServiceAccountCredentialOptions {
|
|
3
|
+
saKey: string;
|
|
4
|
+
region: 'cn' | 'global';
|
|
5
|
+
scopes: readonly string[];
|
|
6
|
+
ttlSeconds?: number;
|
|
7
|
+
/** Exchange timeout in milliseconds, including response body reading. */
|
|
8
|
+
timeout?: number;
|
|
9
|
+
fetch?: typeof globalThis.fetch;
|
|
10
|
+
}
|
|
11
|
+
/** Lazy, instance-owned SAT cache. Share an instance between clients in the same region. */
|
|
12
|
+
export declare class ServiceAccountCredential implements Credential {
|
|
13
|
+
#private;
|
|
14
|
+
readonly region: 'cn' | 'global';
|
|
15
|
+
constructor(options: ServiceAccountCredentialOptions);
|
|
16
|
+
static fromEnv(options: Omit<ServiceAccountCredentialOptions, 'saKey'>): ServiceAccountCredential;
|
|
17
|
+
validateRegion(host: string): void;
|
|
18
|
+
getToken(): Promise<string>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=service-account-credential.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-account-credential.d.ts","sourceRoot":"","sources":["../../src/core/service-account-credential.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAInD,MAAM,WAAW,+BAA+B;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,IAAI,GAAG,QAAQ,CAAC;IACxB,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AAED,4FAA4F;AAC5F,qBAAa,wBAAyB,YAAW,UAAU;;IACzD,QAAQ,CAAC,MAAM,EAAE,IAAI,GAAG,QAAQ,CAAC;gBAcrB,OAAO,EAAE,+BAA+B;IAkBpD,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,+BAA+B,EAAE,OAAO,CAAC,GAAG,wBAAwB;IAIjG,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKlC,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;CA+E5B"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ServiceAccountCredential = void 0;
|
|
4
|
+
const credentials_js_1 = require("./credentials.js");
|
|
5
|
+
const error_js_1 = require("./error.js");
|
|
6
|
+
/** Lazy, instance-owned SAT cache. Share an instance between clients in the same region. */
|
|
7
|
+
class ServiceAccountCredential {
|
|
8
|
+
region;
|
|
9
|
+
#key;
|
|
10
|
+
#scope;
|
|
11
|
+
#ttl;
|
|
12
|
+
#timeout;
|
|
13
|
+
#fetch;
|
|
14
|
+
#token;
|
|
15
|
+
#refreshAt = 0;
|
|
16
|
+
#safeUntil = 0;
|
|
17
|
+
#inflight;
|
|
18
|
+
#failure;
|
|
19
|
+
#retryAt = 0;
|
|
20
|
+
#transient = false;
|
|
21
|
+
constructor(options) {
|
|
22
|
+
if (!options.saKey?.trim())
|
|
23
|
+
throw new error_js_1.QoderError('saKey must not be empty');
|
|
24
|
+
if (options.region !== 'cn' && options.region !== 'global')
|
|
25
|
+
throw new error_js_1.QoderError('region must be cn or global');
|
|
26
|
+
if (!Array.isArray(options.scopes) || !options.scopes.length
|
|
27
|
+
|| options.scopes.some(scope => typeof scope !== 'string' || !scope || /\s/.test(scope))) {
|
|
28
|
+
throw new error_js_1.QoderError('scopes must be a nonempty array of scope names');
|
|
29
|
+
}
|
|
30
|
+
this.region = options.region;
|
|
31
|
+
this.#key = options.saKey;
|
|
32
|
+
this.#scope = [...new Set(options.scopes)].join(' ');
|
|
33
|
+
this.#ttl = options.ttlSeconds ?? 3600;
|
|
34
|
+
if (!Number.isInteger(this.#ttl) || this.#ttl < 1 || this.#ttl > 43200)
|
|
35
|
+
throw new error_js_1.QoderError('ttlSeconds must be an integer from 1 to 43200');
|
|
36
|
+
this.#timeout = options.timeout ?? 30_000;
|
|
37
|
+
if (!Number.isFinite(this.#timeout) || this.#timeout <= 0 || this.#timeout > 2 ** 31 - 1)
|
|
38
|
+
throw new error_js_1.QoderError('Invalid exchange timeout');
|
|
39
|
+
this.#fetch = options.fetch ?? globalThis.fetch;
|
|
40
|
+
if (!this.#fetch)
|
|
41
|
+
throw new error_js_1.QoderError('A fetch implementation is required');
|
|
42
|
+
}
|
|
43
|
+
static fromEnv(options) {
|
|
44
|
+
return new ServiceAccountCredential({ ...options, saKey: (0, credentials_js_1.readEnv)('QODER_SA_KEY') ?? '' });
|
|
45
|
+
}
|
|
46
|
+
validateRegion(host) {
|
|
47
|
+
const expected = host === 'api.qoder.com.cn' ? 'cn' : host === 'api.qoder.com' ? 'global' : undefined;
|
|
48
|
+
if (expected && expected !== this.region)
|
|
49
|
+
throw new error_js_1.QoderError('SA credential region does not match baseURL');
|
|
50
|
+
}
|
|
51
|
+
getToken() {
|
|
52
|
+
const now = performance.now();
|
|
53
|
+
if (now < this.#retryAt)
|
|
54
|
+
return this.#fallback();
|
|
55
|
+
if (this.#token && now < this.#refreshAt)
|
|
56
|
+
return Promise.resolve(this.#token);
|
|
57
|
+
if (!this.#inflight) {
|
|
58
|
+
const task = this.#exchange();
|
|
59
|
+
this.#inflight = task;
|
|
60
|
+
// Clear only this generation; rejection is shared and cached during cooldown.
|
|
61
|
+
void task.then(() => { this.#inflight = undefined; }, () => { this.#inflight = undefined; });
|
|
62
|
+
}
|
|
63
|
+
return this.#inflight;
|
|
64
|
+
}
|
|
65
|
+
#fallback() {
|
|
66
|
+
if (this.#transient && this.#token && performance.now() < this.#safeUntil)
|
|
67
|
+
return Promise.resolve(this.#token);
|
|
68
|
+
return Promise.reject(this.#failure);
|
|
69
|
+
}
|
|
70
|
+
async #exchange() {
|
|
71
|
+
const started = performance.now();
|
|
72
|
+
const controller = new AbortController();
|
|
73
|
+
const timer = setTimeout(() => controller.abort(), this.#timeout);
|
|
74
|
+
let response;
|
|
75
|
+
let bodyRead = false;
|
|
76
|
+
try {
|
|
77
|
+
const host = this.region === 'cn' ? 'https://openapi.qoder.com.cn' : 'https://openapi.qoder.sh';
|
|
78
|
+
response = await this.#fetch(`${host}/api/v1/serviceToken/exchange`, {
|
|
79
|
+
method: 'POST', redirect: 'error', credentials: 'omit', signal: controller.signal,
|
|
80
|
+
headers: { Authorization: `Bearer ${this.#key}`, 'Content-Type': 'application/json', Accept: 'application/json' },
|
|
81
|
+
body: JSON.stringify({ grant_type: 'client_credentials', audience: 'qoder', scope: this.#scope, ttl_seconds: this.#ttl }),
|
|
82
|
+
});
|
|
83
|
+
const text = await response.text();
|
|
84
|
+
bodyRead = true;
|
|
85
|
+
let body = {};
|
|
86
|
+
try {
|
|
87
|
+
body = JSON.parse(text);
|
|
88
|
+
}
|
|
89
|
+
catch { /* Handled as an invalid response below. */ }
|
|
90
|
+
if (!response.ok) {
|
|
91
|
+
const detail = body?.error && typeof body.error === 'object' ? body.error : body;
|
|
92
|
+
const safe = (value) => typeof value === 'string' ? value.split(this.#key).join('[redacted]').split(this.#token ?? '\0').join('[redacted]').slice(0, 256) : undefined;
|
|
93
|
+
throw error_js_1.APIError.generate(response.status, { code: safe(detail?.code), request_id: safe(body?.request_id) }, 'Service account token exchange failed', new Headers({ 'x-request-id': safe(response.headers.get('x-request-id') ?? response.headers.get('request-id')) ?? '' }));
|
|
94
|
+
}
|
|
95
|
+
const ttl = typeof body?.expires_in === 'string' && /^\d+$/.test(body.expires_in) ? Number(body.expires_in) : body?.expires_in;
|
|
96
|
+
if (typeof body?.access_token !== 'string' || !body.access_token.trim()
|
|
97
|
+
|| typeof body.token_type !== 'string' || body.token_type.toLowerCase() !== 'bearer'
|
|
98
|
+
|| typeof ttl !== 'number' || !Number.isSafeInteger(ttl) || ttl <= 0 || ttl > 43200
|
|
99
|
+
|| (body.expires_at !== undefined && (typeof body.expires_at !== 'string'
|
|
100
|
+
|| !/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/.test(body.expires_at)
|
|
101
|
+
|| !Number.isFinite(Date.parse(body.expires_at))))) {
|
|
102
|
+
throw new error_js_1.QoderError('Invalid service account token exchange response');
|
|
103
|
+
}
|
|
104
|
+
const safeUntil = started + (ttl - Math.min(5, ttl * 0.05)) * 1000;
|
|
105
|
+
if (performance.now() >= safeUntil)
|
|
106
|
+
throw new error_js_1.QoderError('Exchanged token has insufficient remaining lifetime');
|
|
107
|
+
this.#token = body.access_token;
|
|
108
|
+
this.#safeUntil = safeUntil;
|
|
109
|
+
this.#refreshAt = started + (ttl - Math.min(60, ttl * 0.1)) * 1000;
|
|
110
|
+
this.#retryAt = 0;
|
|
111
|
+
this.#failure = undefined;
|
|
112
|
+
return this.#token;
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
const failure = controller.signal.aborted ? new error_js_1.APIConnectionTimeoutError('Service account token exchange timed out')
|
|
116
|
+
: bodyRead && error instanceof error_js_1.QoderError ? error : new error_js_1.APIConnectionError('Service account token exchange connection failed');
|
|
117
|
+
this.#failure = failure;
|
|
118
|
+
this.#transient = failure instanceof error_js_1.APIConnectionError
|
|
119
|
+
|| (failure instanceof error_js_1.APIError && (failure.status === 429 || (failure.status !== undefined && failure.status >= 500)));
|
|
120
|
+
let cooldown = 5000;
|
|
121
|
+
if (response?.status === 429) {
|
|
122
|
+
const value = response.headers.get('retry-after');
|
|
123
|
+
if (value) {
|
|
124
|
+
const seconds = Number(value);
|
|
125
|
+
const delay = Number.isFinite(seconds) ? seconds * 1000 : Date.parse(value) - Date.now();
|
|
126
|
+
if (Number.isFinite(delay) && delay > 0 && delay <= 2 ** 31 - 1)
|
|
127
|
+
cooldown = Math.max(cooldown, delay);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
this.#retryAt = performance.now() + cooldown;
|
|
131
|
+
return this.#fallback();
|
|
132
|
+
}
|
|
133
|
+
finally {
|
|
134
|
+
clearTimeout(timer);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
exports.ServiceAccountCredential = ServiceAccountCredential;
|
|
139
|
+
//# sourceMappingURL=service-account-credential.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-account-credential.js","sourceRoot":"","sources":["../../src/core/service-account-credential.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type Credential } from './credentials.js';
|
|
2
|
+
export type AuthMode = 'pat' | 'sa';
|
|
3
|
+
export type TokenSource = string | (() => string | Promise<string>);
|
|
4
|
+
export interface AuthOptions {
|
|
5
|
+
authMode?: AuthMode;
|
|
6
|
+
pat?: TokenSource;
|
|
7
|
+
accessToken?: TokenSource;
|
|
8
|
+
credential?: Credential;
|
|
9
|
+
}
|
|
10
|
+
export declare function resolveAuthMode(options: AuthOptions): AuthMode;
|
|
11
|
+
export declare function resolveToken(options: AuthOptions, mode: AuthMode): Promise<string | undefined>;
|
|
12
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/core/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAW,MAAM,kBAAkB,CAAC;AAI5D,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC;AACpC,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AACpE,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,GAAG,CAAC,EAAE,WAAW,CAAC;IAClB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,QAAQ,CAY9D;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CASpG"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { readEnv } from './credentials.js';
|
|
2
|
+
import { ServiceAccountCredential } from './service-account-credential.js';
|
|
3
|
+
import { QoderError } from './error.js';
|
|
4
|
+
export function resolveAuthMode(options) {
|
|
5
|
+
const nativeSA = options.credential instanceof ServiceAccountCredential;
|
|
6
|
+
const mode = options.authMode ?? (nativeSA ? 'sa' : 'pat');
|
|
7
|
+
if (mode !== 'pat' && mode !== 'sa')
|
|
8
|
+
throw new QoderError('authMode must be pat or sa');
|
|
9
|
+
if (mode === 'sa' && options.pat !== undefined)
|
|
10
|
+
throw new QoderError('pat cannot be used in SA mode');
|
|
11
|
+
if (nativeSA && (mode !== 'sa' || options.pat !== undefined || options.accessToken !== undefined)) {
|
|
12
|
+
throw new QoderError('ServiceAccountCredential requires SA mode without a static token');
|
|
13
|
+
}
|
|
14
|
+
if (options.accessToken !== undefined && (options.pat !== undefined || options.credential !== undefined)) {
|
|
15
|
+
throw new QoderError('accessToken cannot be combined with pat or credential');
|
|
16
|
+
}
|
|
17
|
+
return mode;
|
|
18
|
+
}
|
|
19
|
+
export async function resolveToken(options, mode) {
|
|
20
|
+
const source = options.credential ?? options.accessToken ?? options.pat;
|
|
21
|
+
if (source !== undefined) {
|
|
22
|
+
const token = typeof source === 'object' ? await source.getToken()
|
|
23
|
+
: typeof source === 'function' ? await source() : source;
|
|
24
|
+
if (typeof token !== 'string' || !token.trim())
|
|
25
|
+
throw new QoderError('Configured credential returned an empty access token');
|
|
26
|
+
return token;
|
|
27
|
+
}
|
|
28
|
+
return readEnv('QODER_ACCESS_TOKEN') || (mode === 'pat' ? readEnv('QODER_PAT') : undefined);
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/core/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAWxC,MAAM,UAAU,eAAe,CAAC,OAAoB;IAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,YAAY,wBAAwB,CAAC;IACxE,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC3D,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI;QAAE,MAAM,IAAI,UAAU,CAAC,4BAA4B,CAAC,CAAC;IACxF,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS;QAAE,MAAM,IAAI,UAAU,CAAC,+BAA+B,CAAC,CAAC;IACtG,IAAI,QAAQ,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,EAAE,CAAC;QAClG,MAAM,IAAI,UAAU,CAAC,kEAAkE,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,EAAE,CAAC;QACzG,MAAM,IAAI,UAAU,CAAC,uDAAuD,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAoB,EAAE,IAAc;IACrE,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC;IACxE,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE;YAChE,CAAC,CAAC,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QAC3D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YAAE,MAAM,IAAI,UAAU,CAAC,sDAAsD,CAAC,CAAC;QAC7H,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAC9F,CAAC"}
|