@cpajs/cpa 0.0.0-stage → 0.0.1-alpha-2
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/LICENSE +21 -0
- package/README.md +142 -2
- package/dist/client/errors.d.ts +70 -0
- package/dist/client/errors.d.ts.map +1 -0
- package/dist/client/errors.js +91 -0
- package/dist/client/errors.js.map +1 -0
- package/dist/client/index.d.ts +46 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +65 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/resources/config.d.ts +61 -0
- package/dist/client/resources/config.d.ts.map +1 -0
- package/dist/client/resources/config.js +80 -0
- package/dist/client/resources/config.js.map +1 -0
- package/dist/client/resources/credentials.d.ts +64 -0
- package/dist/client/resources/credentials.d.ts.map +1 -0
- package/dist/client/resources/credentials.js +94 -0
- package/dist/client/resources/credentials.js.map +1 -0
- package/dist/client/resources/download.d.ts +8 -0
- package/dist/client/resources/download.d.ts.map +1 -0
- package/dist/client/resources/download.js +17 -0
- package/dist/client/resources/download.js.map +1 -0
- package/dist/client/resources/logs.d.ts +23 -0
- package/dist/client/resources/logs.d.ts.map +1 -0
- package/dist/client/resources/logs.js +37 -0
- package/dist/client/resources/logs.js.map +1 -0
- package/dist/client/resources/oauth.d.ts +43 -0
- package/dist/client/resources/oauth.d.ts.map +1 -0
- package/dist/client/resources/oauth.js +70 -0
- package/dist/client/resources/oauth.js.map +1 -0
- package/dist/client/resources/plugins.d.ts +25 -0
- package/dist/client/resources/plugins.d.ts.map +1 -0
- package/dist/client/resources/plugins.js +47 -0
- package/dist/client/resources/plugins.js.map +1 -0
- package/dist/client/resources/requests.d.ts +14 -0
- package/dist/client/resources/requests.d.ts.map +1 -0
- package/dist/client/resources/requests.js +16 -0
- package/dist/client/resources/requests.js.map +1 -0
- package/dist/client/resources/routing.d.ts +12 -0
- package/dist/client/resources/routing.d.ts.map +1 -0
- package/dist/client/resources/routing.js +20 -0
- package/dist/client/resources/routing.js.map +1 -0
- package/dist/client/resources/server.d.ts +17 -0
- package/dist/client/resources/server.d.ts.map +1 -0
- package/dist/client/resources/server.js +49 -0
- package/dist/client/resources/server.js.map +1 -0
- package/dist/client/resources/usage.d.ts +16 -0
- package/dist/client/resources/usage.d.ts.map +1 -0
- package/dist/client/resources/usage.js +20 -0
- package/dist/client/resources/usage.js.map +1 -0
- package/dist/client/transport.d.ts +60 -0
- package/dist/client/transport.d.ts.map +1 -0
- package/dist/client/transport.js +170 -0
- package/dist/client/transport.js.map +1 -0
- package/dist/client/types/common.d.ts +38 -0
- package/dist/client/types/common.d.ts.map +1 -0
- package/dist/client/types/common.js +4 -0
- package/dist/client/types/common.js.map +1 -0
- package/dist/client/types/config.d.ts +407 -0
- package/dist/client/types/config.d.ts.map +1 -0
- package/dist/client/types/config.js +9 -0
- package/dist/client/types/config.js.map +1 -0
- package/dist/client/types/credentials.d.ts +240 -0
- package/dist/client/types/credentials.d.ts.map +1 -0
- package/dist/client/types/credentials.js +4 -0
- package/dist/client/types/credentials.js.map +1 -0
- package/dist/client/types/index.d.ts +10 -0
- package/dist/client/types/index.d.ts.map +1 -0
- package/dist/client/types/index.js +2 -0
- package/dist/client/types/index.js.map +1 -0
- package/dist/client/types/oauth.d.ts +89 -0
- package/dist/client/types/oauth.d.ts.map +1 -0
- package/dist/client/types/oauth.js +4 -0
- package/dist/client/types/oauth.js.map +1 -0
- package/dist/client/types/observability.d.ts +111 -0
- package/dist/client/types/observability.d.ts.map +1 -0
- package/dist/client/types/observability.js +4 -0
- package/dist/client/types/observability.js.map +1 -0
- package/dist/client/types/plugins.d.ts +171 -0
- package/dist/client/types/plugins.d.ts.map +1 -0
- package/dist/client/types/plugins.js +4 -0
- package/dist/client/types/plugins.js.map +1 -0
- package/dist/client/types/requests.d.ts +16 -0
- package/dist/client/types/requests.d.ts.map +1 -0
- package/dist/client/types/requests.js +4 -0
- package/dist/client/types/requests.js.map +1 -0
- package/dist/client/types/routing.d.ts +50 -0
- package/dist/client/types/routing.d.ts.map +1 -0
- package/dist/client/types/routing.js +4 -0
- package/dist/client/types/routing.js.map +1 -0
- package/dist/client/types/server.d.ts +15 -0
- package/dist/client/types/server.d.ts.map +1 -0
- package/dist/client/types/server.js +4 -0
- package/dist/client/types/server.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/server/binary.d.ts +35 -0
- package/dist/server/binary.d.ts.map +1 -0
- package/dist/server/binary.js +108 -0
- package/dist/server/binary.js.map +1 -0
- package/dist/server/config.d.ts +37 -0
- package/dist/server/config.d.ts.map +1 -0
- package/dist/server/config.js +103 -0
- package/dist/server/config.js.map +1 -0
- package/dist/server/cpa-version.d.ts +12 -0
- package/dist/server/cpa-version.d.ts.map +1 -0
- package/dist/server/cpa-version.js +12 -0
- package/dist/server/cpa-version.js.map +1 -0
- package/dist/server/errors.d.ts +36 -0
- package/dist/server/errors.d.ts.map +1 -0
- package/dist/server/errors.js +26 -0
- package/dist/server/errors.js.map +1 -0
- package/dist/server/index.d.ts +18 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +208 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/process.d.ts +27 -0
- package/dist/server/process.d.ts.map +1 -0
- package/dist/server/process.js +114 -0
- package/dist/server/process.js.map +1 -0
- package/dist/server/readiness.d.ts +13 -0
- package/dist/server/readiness.d.ts.map +1 -0
- package/dist/server/readiness.js +56 -0
- package/dist/server/readiness.js.map +1 -0
- package/dist/server/redact.d.ts +3 -0
- package/dist/server/redact.d.ts.map +1 -0
- package/dist/server/redact.js +16 -0
- package/dist/server/redact.js.map +1 -0
- package/dist/server/targets.d.ts +48 -0
- package/dist/server/targets.d.ts.map +1 -0
- package/dist/server/targets.js +90 -0
- package/dist/server/targets.js.map +1 -0
- package/dist/server/types.d.ts +87 -0
- package/dist/server/types.d.ts.map +1 -0
- package/dist/server/types.js +2 -0
- package/dist/server/types.js.map +1 -0
- package/package.json +83 -4
- package/src/client/errors.ts +104 -0
- package/src/client/index.ts +95 -0
- package/src/client/resources/config.ts +124 -0
- package/src/client/resources/credentials.ts +133 -0
- package/src/client/resources/download.ts +21 -0
- package/src/client/resources/logs.ts +46 -0
- package/src/client/resources/oauth.ts +105 -0
- package/src/client/resources/plugins.ts +70 -0
- package/src/client/resources/requests.ts +20 -0
- package/src/client/resources/routing.ts +29 -0
- package/src/client/resources/server.ts +52 -0
- package/src/client/resources/usage.ts +27 -0
- package/src/client/transport.ts +215 -0
- package/src/client/types/common.ts +38 -0
- package/src/client/types/config.ts +248 -0
- package/src/client/types/credentials.ts +195 -0
- package/src/client/types/index.ts +9 -0
- package/src/client/types/oauth.ts +71 -0
- package/src/client/types/observability.ts +93 -0
- package/src/client/types/plugins.ts +136 -0
- package/src/client/types/requests.ts +19 -0
- package/src/client/types/routing.ts +44 -0
- package/src/client/types/server.ts +18 -0
- package/src/index.ts +2 -0
- package/src/server/binary.ts +128 -0
- package/src/server/config.ts +128 -0
- package/src/server/cpa-version.ts +11 -0
- package/src/server/errors.ts +48 -0
- package/src/server/index.ts +236 -0
- package/src/server/process.ts +124 -0
- package/src/server/readiness.ts +58 -0
- package/src/server/redact.ts +14 -0
- package/src/server/targets.ts +133 -0
- package/src/server/types.ts +93 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { CpaHttpError } from '../errors.js';
|
|
2
|
+
function readInfo(headers) {
|
|
3
|
+
const version = headers.get('X-CPA-VERSION');
|
|
4
|
+
if (version === null)
|
|
5
|
+
return undefined;
|
|
6
|
+
return {
|
|
7
|
+
version,
|
|
8
|
+
commit: headers.get('X-CPA-COMMIT') ?? '',
|
|
9
|
+
buildDate: headers.get('X-CPA-BUILD-DATE') ?? '',
|
|
10
|
+
supportPlugin: headers.get('X-CPA-SUPPORT-PLUGIN') === '1',
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
/** Server information: `/healthz`, version headers and `/v8/management/server/*`. */
|
|
14
|
+
export class ServerResource {
|
|
15
|
+
#t;
|
|
16
|
+
constructor(transport) {
|
|
17
|
+
this.#t = transport;
|
|
18
|
+
}
|
|
19
|
+
/** `GET /healthz` (no management key needed). */
|
|
20
|
+
async health(options = {}) {
|
|
21
|
+
return (await this.#t.request({ ...options, method: 'GET', path: '/healthz', root: true, anonymous: true })).data;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Version, commit, build date and plugin support of the running server,
|
|
25
|
+
* read from the `X-CPA-*` headers of a cheap authenticated request.
|
|
26
|
+
*/
|
|
27
|
+
async info(options = {}) {
|
|
28
|
+
let headers;
|
|
29
|
+
try {
|
|
30
|
+
headers = (await this.#t.request({ ...options, method: 'GET', path: '/config/config-version' })).headers;
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
// A config without `config-version` answers 404, which still carries the headers.
|
|
34
|
+
if (!(error instanceof CpaHttpError) || error.status !== 404)
|
|
35
|
+
throw error;
|
|
36
|
+
headers = error.headers;
|
|
37
|
+
}
|
|
38
|
+
const info = readInfo(headers);
|
|
39
|
+
if (!info)
|
|
40
|
+
throw new TypeError('The server did not send X-CPA-VERSION; is management enabled?');
|
|
41
|
+
return info;
|
|
42
|
+
}
|
|
43
|
+
/** Latest CLIProxyAPI release tag on GitHub (e.g. `"v8.0.43"`), fetched by the server. */
|
|
44
|
+
async latestVersion(options = {}) {
|
|
45
|
+
const res = await this.#t.request({ ...options, method: 'GET', path: '/server/latest-version' });
|
|
46
|
+
return res.data['latest-version'];
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/client/resources/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAI5C,SAAS,QAAQ,CAAC,OAAgB;IAChC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC7C,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACvC,OAAO;QACL,OAAO;QACP,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE;QACzC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,EAAE;QAChD,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,KAAK,GAAG;KAC3D,CAAC;AACJ,CAAC;AAED,qFAAqF;AACrF,MAAM,OAAO,cAAc;IAChB,EAAE,CAAY;IAEvB,YAAY,SAAoB;QAC9B,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC;IACtB,CAAC;IAED,iDAAiD;IACjD,KAAK,CAAC,MAAM,CAAC,OAAO,GAAmB,EAAE;QACvC,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,CAAkB,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACrI,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,IAAI,CAAC,OAAO,GAAmB,EAAE;QACrC,IAAI,OAAgB,CAAC;QACrB,IAAI,CAAC;YACH,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,CAAU,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QACpH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,kFAAkF;YAClF,IAAI,CAAC,CAAC,KAAK,YAAY,YAAY,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG;gBAAE,MAAM,KAAK,CAAC;YAC1E,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC1B,CAAC;QACD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,SAAS,CAAC,+DAA+D,CAAC,CAAC;QAChG,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0FAA0F;IAC1F,KAAK,CAAC,aAAa,CAAC,OAAO,GAAmB,EAAE;QAC9C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,CAAwB,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,CAAC;QACxH,OAAO,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACpC,CAAC;CACF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ApiKeyUsageResponse, UsageQueueResponse } from '../types/observability.ts';
|
|
2
|
+
import type { RequestOptions, Transport } from '../transport.ts';
|
|
3
|
+
/** `/v8/management/observability/usage/*`. */
|
|
4
|
+
export declare class UsageResource {
|
|
5
|
+
#private;
|
|
6
|
+
constructor(transport: Transport);
|
|
7
|
+
/** Request counters per config API key. Map keys are `"<base-url>|<api-key>"` with the raw key. */
|
|
8
|
+
apiKeys(options?: RequestOptions): Promise<ApiKeyUsageResponse>;
|
|
9
|
+
/**
|
|
10
|
+
* Removes and returns up to `count` (default 1) of the oldest queued usage
|
|
11
|
+
* records. Destructive: concurrent consumers split the records between them.
|
|
12
|
+
* Records are only queued while `observability.usage.usage-statistics-enabled` is on.
|
|
13
|
+
*/
|
|
14
|
+
popQueue(count?: number, options?: RequestOptions): Promise<UsageQueueResponse>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=usage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../../src/client/resources/usage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACzF,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjE,8CAA8C;AAC9C,qBAAa,aAAa;;IAGxB,YAAY,SAAS,EAAE,SAAS,EAE/B;IAED,mGAAmG;IAC7F,OAAO,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAExE;IAED;;;;OAIG;IACG,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAIxF;CACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** `/v8/management/observability/usage/*`. */
|
|
2
|
+
export class UsageResource {
|
|
3
|
+
#t;
|
|
4
|
+
constructor(transport) {
|
|
5
|
+
this.#t = transport;
|
|
6
|
+
}
|
|
7
|
+
/** Request counters per config API key. Map keys are `"<base-url>|<api-key>"` with the raw key. */
|
|
8
|
+
async apiKeys(options = {}) {
|
|
9
|
+
return (await this.#t.request({ ...options, method: 'GET', path: '/observability/usage/api-keys' })).data;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Removes and returns up to `count` (default 1) of the oldest queued usage
|
|
13
|
+
* records. Destructive: concurrent consumers split the records between them.
|
|
14
|
+
* Records are only queued while `observability.usage.usage-statistics-enabled` is on.
|
|
15
|
+
*/
|
|
16
|
+
async popQueue(count, options = {}) {
|
|
17
|
+
return (await this.#t.request({ ...options, method: 'GET', path: '/observability/usage/queue', query: { count } })).data;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=usage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../../../src/client/resources/usage.ts"],"names":[],"mappings":"AAGA,8CAA8C;AAC9C,MAAM,OAAO,aAAa;IACf,EAAE,CAAY;IAEvB,YAAY,SAAoB;QAC9B,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC;IACtB,CAAC;IAED,mGAAmG;IACnG,KAAK,CAAC,OAAO,CAAC,OAAO,GAAmB,EAAE;QACxC,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,CAAsB,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,+BAA+B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACjI,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,QAAQ,CAAC,KAAc,EAAE,OAAO,GAAmB,EAAE;QACzD,OAAO,CACL,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,CAAqB,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,4BAA4B,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAC/H,CAAC,IAAI,CAAC;IACT,CAAC;CACF"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export declare const MANAGEMENT_PREFIX = "/v8/management";
|
|
2
|
+
export type FetchLike = (input: Request) => Promise<Response>;
|
|
3
|
+
export type QueryValue = string | number | boolean | null | undefined | readonly (string | number | boolean)[];
|
|
4
|
+
export type Query = Readonly<Record<string, QueryValue>>;
|
|
5
|
+
export interface ClientOptions {
|
|
6
|
+
/**
|
|
7
|
+
* Server root, e.g. `http://127.0.0.1:8317` or `https://example.com/cpa`.
|
|
8
|
+
* A path prefix (reverse proxy) is kept; `/v8/management` is appended to it.
|
|
9
|
+
*/
|
|
10
|
+
baseUrl: string | URL;
|
|
11
|
+
/** Management key (`management.secret-key` or `MANAGEMENT_PASSWORD`), not a model API key. */
|
|
12
|
+
managementKey: string;
|
|
13
|
+
/** Custom fetch. Defaults to the global `fetch`. */
|
|
14
|
+
fetch?: (input: Request) => Promise<Response>;
|
|
15
|
+
/** Headers sent with every request. */
|
|
16
|
+
headers?: HeadersInit;
|
|
17
|
+
/** Default per-request timeout in ms. `0` or omitted disables it. */
|
|
18
|
+
timeoutMs?: number;
|
|
19
|
+
}
|
|
20
|
+
/** Per-call options accepted by every client method. */
|
|
21
|
+
export interface RequestOptions {
|
|
22
|
+
signal?: AbortSignal | undefined;
|
|
23
|
+
/** Overrides the client's default timeout; `0` disables it. */
|
|
24
|
+
timeoutMs?: number | undefined;
|
|
25
|
+
headers?: HeadersInit | undefined;
|
|
26
|
+
}
|
|
27
|
+
export type ResponseType = 'json' | 'text' | 'blob' | 'response';
|
|
28
|
+
export interface RawRequest extends RequestOptions {
|
|
29
|
+
method: string;
|
|
30
|
+
/** Path below `/v8/management` (e.g. `/config`), already encoded. */
|
|
31
|
+
path: string;
|
|
32
|
+
query?: Query;
|
|
33
|
+
/** Serialised with `JSON.stringify`, including strings and `null`. */
|
|
34
|
+
json?: unknown;
|
|
35
|
+
/** Sent as-is. Mutually exclusive with `json`. */
|
|
36
|
+
body?: BodyInit;
|
|
37
|
+
/** Content type for `body`. FormData sets its own. */
|
|
38
|
+
contentType?: string;
|
|
39
|
+
responseType?: ResponseType;
|
|
40
|
+
/** Skip the management key, for unauthenticated routes. */
|
|
41
|
+
anonymous?: boolean;
|
|
42
|
+
/** Resolve `path` against the server root instead of `/v8/management`. */
|
|
43
|
+
root?: boolean;
|
|
44
|
+
}
|
|
45
|
+
export interface TransportResponse<T> {
|
|
46
|
+
data: T;
|
|
47
|
+
status: number;
|
|
48
|
+
headers: Headers;
|
|
49
|
+
}
|
|
50
|
+
/** Joins the base URL and a management path while keeping any base path prefix. */
|
|
51
|
+
export declare function managementUrl(baseUrl: string | URL, path: string, root?: boolean): URL;
|
|
52
|
+
export declare class Transport {
|
|
53
|
+
#private;
|
|
54
|
+
constructor(options: ClientOptions);
|
|
55
|
+
get baseUrl(): URL;
|
|
56
|
+
request<T>(req: RawRequest): Promise<TransportResponse<T>>;
|
|
57
|
+
}
|
|
58
|
+
/** Encodes `a/b/c` or `['a', 'b', 'c']` as URL path segments. */
|
|
59
|
+
export declare function encodePath(path: string | readonly string[], what?: string): string;
|
|
60
|
+
//# sourceMappingURL=transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/client/transport.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB,mBAAmB,CAAC;AAElD,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAE9D,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;AAC/G,MAAM,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC;IACtB,8FAA8F;IAC9F,aAAa,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9C,uCAAuC;IACvC,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wDAAwD;AACxD,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACjC,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,OAAO,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CACnC;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;AAEjE,MAAM,WAAW,UAAW,SAAQ,cAAc;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,sEAAsE;IACtE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,kDAAkD;IAClD,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,2DAA2D;IAC3D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0EAA0E;IAC1E,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,IAAI,EAAE,CAAC,CAAC;IACR,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAWD,mFAAmF;AACnF,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,UAAQ,GAAG,GAAG,CAMpF;AAED,qBAAa,SAAS;;IAOpB,YAAY,OAAO,EAAE,aAAa,EAYjC;IAED,IAAI,OAAO,IAAI,GAAG,CAEjB;IAEK,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAmG/D;CACF;AAED,iEAAiE;AACjE,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EAAE,IAAI,SAAS,GAAG,MAAM,CASlF"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { CpaAbortError, CpaHttpError, CpaNetworkError, CpaResponseError, CpaTimeoutError } from './errors.js';
|
|
2
|
+
export const MANAGEMENT_PREFIX = '/v8/management';
|
|
3
|
+
function appendQuery(url, query) {
|
|
4
|
+
if (!query)
|
|
5
|
+
return;
|
|
6
|
+
for (const [key, value] of Object.entries(query)) {
|
|
7
|
+
if (value === undefined || value === null)
|
|
8
|
+
continue;
|
|
9
|
+
if (Array.isArray(value))
|
|
10
|
+
for (const item of value)
|
|
11
|
+
url.searchParams.append(key, String(item));
|
|
12
|
+
else
|
|
13
|
+
url.searchParams.append(key, String(value));
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/** Joins the base URL and a management path while keeping any base path prefix. */
|
|
17
|
+
export function managementUrl(baseUrl, path, root = false) {
|
|
18
|
+
const base = new URL(baseUrl);
|
|
19
|
+
const prefix = base.pathname.replace(/\/+$/, '');
|
|
20
|
+
const url = new URL(base.origin);
|
|
21
|
+
url.pathname = `${prefix}${root ? '' : MANAGEMENT_PREFIX}${path}`;
|
|
22
|
+
return url;
|
|
23
|
+
}
|
|
24
|
+
export class Transport {
|
|
25
|
+
#baseUrl;
|
|
26
|
+
#managementKey;
|
|
27
|
+
#fetch;
|
|
28
|
+
#headers;
|
|
29
|
+
#timeoutMs;
|
|
30
|
+
constructor(options) {
|
|
31
|
+
if (!options.baseUrl)
|
|
32
|
+
throw new TypeError('baseUrl is required.');
|
|
33
|
+
if (!options.managementKey)
|
|
34
|
+
throw new TypeError('managementKey is required.');
|
|
35
|
+
this.#baseUrl = new URL(options.baseUrl);
|
|
36
|
+
if (this.#baseUrl.protocol !== 'http:' && this.#baseUrl.protocol !== 'https:') {
|
|
37
|
+
throw new TypeError(`baseUrl must be http(s), got ${this.#baseUrl.protocol}`);
|
|
38
|
+
}
|
|
39
|
+
this.#managementKey = options.managementKey;
|
|
40
|
+
const custom = options.fetch;
|
|
41
|
+
this.#fetch = custom ? (request) => custom(request) : (request) => fetch(request);
|
|
42
|
+
this.#headers = new Headers(options.headers);
|
|
43
|
+
this.#timeoutMs = options.timeoutMs ?? 0;
|
|
44
|
+
}
|
|
45
|
+
get baseUrl() {
|
|
46
|
+
return new URL(this.#baseUrl);
|
|
47
|
+
}
|
|
48
|
+
async request(req) {
|
|
49
|
+
const url = managementUrl(this.#baseUrl, req.path, req.root);
|
|
50
|
+
appendQuery(url, req.query);
|
|
51
|
+
const target = { method: req.method, url: url.toString() };
|
|
52
|
+
const headers = new Headers(this.#headers);
|
|
53
|
+
new Headers(req.headers).forEach((value, key) => headers.set(key, value));
|
|
54
|
+
if (!req.anonymous)
|
|
55
|
+
headers.set('Authorization', `Bearer ${this.#managementKey}`);
|
|
56
|
+
let body;
|
|
57
|
+
if ('json' in req) {
|
|
58
|
+
body = JSON.stringify(req.json);
|
|
59
|
+
headers.set('Content-Type', 'application/json');
|
|
60
|
+
}
|
|
61
|
+
else if (req.body !== undefined) {
|
|
62
|
+
body = req.body;
|
|
63
|
+
if (req.contentType)
|
|
64
|
+
headers.set('Content-Type', req.contentType);
|
|
65
|
+
}
|
|
66
|
+
if (!headers.has('Accept'))
|
|
67
|
+
headers.set('Accept', req.responseType === 'json' || !req.responseType ? 'application/json' : '*/*');
|
|
68
|
+
const timeoutMs = req.timeoutMs ?? this.#timeoutMs;
|
|
69
|
+
const userSignal = req.signal;
|
|
70
|
+
let timedOut = false;
|
|
71
|
+
const classify = (error) => {
|
|
72
|
+
if (userSignal?.aborted)
|
|
73
|
+
return new CpaAbortError(`${target.method} ${target.url} was aborted`, target, { cause: userSignal.reason });
|
|
74
|
+
if (timedOut)
|
|
75
|
+
return new CpaTimeoutError(target, timeoutMs, { cause: error });
|
|
76
|
+
return new CpaNetworkError(`${target.method} ${target.url} failed: ${error?.message ?? String(error)}`, target, {
|
|
77
|
+
cause: error,
|
|
78
|
+
});
|
|
79
|
+
};
|
|
80
|
+
if (userSignal?.aborted)
|
|
81
|
+
throw classify(userSignal.reason);
|
|
82
|
+
// One controller owned by this call, rather than AbortSignal.any/timeout: on some Node
|
|
83
|
+
// versions signals derived that way can be garbage-collected before they fire.
|
|
84
|
+
const controller = new AbortController();
|
|
85
|
+
let rejectAborted = () => { };
|
|
86
|
+
const aborted = new Promise((_, reject) => {
|
|
87
|
+
rejectAborted = reject;
|
|
88
|
+
});
|
|
89
|
+
aborted.catch(() => { });
|
|
90
|
+
const abort = (reason) => {
|
|
91
|
+
controller.abort(reason);
|
|
92
|
+
rejectAborted(classify(reason));
|
|
93
|
+
};
|
|
94
|
+
const onUserAbort = () => abort(userSignal.reason);
|
|
95
|
+
userSignal?.addEventListener('abort', onUserAbort, { once: true });
|
|
96
|
+
let timer;
|
|
97
|
+
if (timeoutMs > 0) {
|
|
98
|
+
timer = setTimeout(() => {
|
|
99
|
+
timedOut = true;
|
|
100
|
+
abort(new DOMException(`Timed out after ${timeoutMs} ms`, 'TimeoutError'));
|
|
101
|
+
}, timeoutMs);
|
|
102
|
+
}
|
|
103
|
+
const release = () => {
|
|
104
|
+
clearTimeout(timer);
|
|
105
|
+
userSignal?.removeEventListener('abort', onUserAbort);
|
|
106
|
+
};
|
|
107
|
+
// Every await below races the abort, so a fetch that ignores its signal still settles.
|
|
108
|
+
const guard = (promise) => Promise.race([promise, aborted]);
|
|
109
|
+
const init = { method: req.method, headers, redirect: 'manual', signal: controller.signal };
|
|
110
|
+
if (body !== undefined)
|
|
111
|
+
init.body = body;
|
|
112
|
+
const responseType = req.responseType ?? 'json';
|
|
113
|
+
try {
|
|
114
|
+
let response;
|
|
115
|
+
try {
|
|
116
|
+
response = await guard(this.#fetch(new Request(url, init)));
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
throw error instanceof CpaAbortError || error instanceof CpaTimeoutError ? error : classify(error);
|
|
120
|
+
}
|
|
121
|
+
if (!response.ok) {
|
|
122
|
+
throw new CpaHttpError(target, response, await guard(response.text()));
|
|
123
|
+
}
|
|
124
|
+
if (responseType === 'response') {
|
|
125
|
+
return { data: response, status: response.status, headers: response.headers };
|
|
126
|
+
}
|
|
127
|
+
if (responseType === 'blob') {
|
|
128
|
+
return { data: (await guard(response.blob())), status: response.status, headers: response.headers };
|
|
129
|
+
}
|
|
130
|
+
const text = await guard(response.text());
|
|
131
|
+
if (responseType === 'text')
|
|
132
|
+
return { data: text, status: response.status, headers: response.headers };
|
|
133
|
+
if (text === '')
|
|
134
|
+
return { data: undefined, status: response.status, headers: response.headers };
|
|
135
|
+
try {
|
|
136
|
+
return { data: JSON.parse(text), status: response.status, headers: response.headers };
|
|
137
|
+
}
|
|
138
|
+
catch (cause) {
|
|
139
|
+
throw new CpaResponseError(`${target.method} ${target.url} returned invalid JSON`, target, response.status, text, { cause });
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
if (error instanceof CpaHttpError || error instanceof CpaResponseError || error instanceof CpaAbortError || error instanceof CpaTimeoutError) {
|
|
144
|
+
throw error;
|
|
145
|
+
}
|
|
146
|
+
throw classify(error);
|
|
147
|
+
}
|
|
148
|
+
finally {
|
|
149
|
+
// For `response`, the caller reads the body; the timeout covers the headers only,
|
|
150
|
+
// while the caller's own signal keeps working through the request's signal.
|
|
151
|
+
if (responseType === 'response')
|
|
152
|
+
clearTimeout(timer);
|
|
153
|
+
else
|
|
154
|
+
release();
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/** Encodes `a/b/c` or `['a', 'b', 'c']` as URL path segments. */
|
|
159
|
+
export function encodePath(path, what = 'path') {
|
|
160
|
+
const segments = typeof path === 'string' ? path.split('/').filter((s, i, all) => s !== '' || (i > 0 && i < all.length - 1)) : [...path];
|
|
161
|
+
for (const segment of segments) {
|
|
162
|
+
if (segment === '')
|
|
163
|
+
throw new TypeError(`${what} contains an empty segment.`);
|
|
164
|
+
if (typeof path !== 'string' && segment.includes('/')) {
|
|
165
|
+
throw new TypeError(`${what} segment "${segment}" contains "/", which CPA cannot address; edit its parent instead.`);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return segments.map(encodeURIComponent).join('/');
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/client/transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export interface StatusErrorBody {
|
|
2
|
+
status: 'error';
|
|
3
|
+
error: string;
|
|
4
|
+
}
|
|
5
|
+
export interface OkStatus {
|
|
6
|
+
status: 'ok';
|
|
7
|
+
}
|
|
8
|
+
export type AuthStatus = 'unknown' | 'active' | 'pending' | 'refreshing' | 'error' | 'disabled';
|
|
9
|
+
export type SIWCStatus = 'off' | 'valid' | 'invalid';
|
|
10
|
+
export type CooldownReason = 'credential_quota' | 'quota' | 'cloudflare_challenge' | 'model_not_supported' | 'invalid_grant' | 'unauthorized' | 'payment_required' | 'not_found' | 'transient_error' | 'unknown';
|
|
11
|
+
/** Any JSON value. */
|
|
12
|
+
export type JsonValue = string | number | boolean | null | JsonValue[] | {
|
|
13
|
+
[key: string]: JsonValue;
|
|
14
|
+
};
|
|
15
|
+
/** Ten-minute request bucket; `time` is `"HH:MM-HH:MM"` in the server's local time. */
|
|
16
|
+
export interface RecentRequestBucket {
|
|
17
|
+
time: string;
|
|
18
|
+
success: number;
|
|
19
|
+
failed: number;
|
|
20
|
+
}
|
|
21
|
+
export interface PartialFailure {
|
|
22
|
+
name: string;
|
|
23
|
+
error: string;
|
|
24
|
+
}
|
|
25
|
+
/** Error body from the auth middleware and most ops handlers. */
|
|
26
|
+
export interface CpaSimpleError {
|
|
27
|
+
error: string;
|
|
28
|
+
}
|
|
29
|
+
/** Error body from latest-version, plugins, plugin store, plugin delete. */
|
|
30
|
+
export interface CpaCodedError {
|
|
31
|
+
error: string;
|
|
32
|
+
message: string;
|
|
33
|
+
[extra: string]: unknown;
|
|
34
|
+
}
|
|
35
|
+
export type CpaErrorBody = CpaSimpleError | CpaCodedError;
|
|
36
|
+
/** Auth outcomes: 401 missing/invalid key; 403 banned / remote disabled / key not set; 404 management disabled (empty body). */
|
|
37
|
+
export type ManagementAuthErrorMessage = "missing management key" | "invalid management key" | "remote management disabled" | "remote management key not set" | `IP banned due to too many failed attempts. Try again in ${string}`;
|
|
38
|
+
//# sourceMappingURL=common.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/client/types/common.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAAG,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AACnE,MAAM,WAAW,QAAQ;IAAG,MAAM,EAAE,IAAI,CAAA;CAAE;AAE1C,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,YAAY,GAAG,OAAO,GAAG,UAAU,CAAC;AAChG,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,OAAO,GAAG,SAAS,CAAC;AACrD,MAAM,MAAM,cAAc,GACtB,kBAAkB,GAAG,OAAO,GAAG,sBAAsB,GAAG,qBAAqB,GAC7E,eAAe,GAAG,cAAc,GAAG,kBAAkB,GAAG,WAAW,GACnE,iBAAiB,GAAG,SAAS,CAAC;AAElC,sBAAsB;AACtB,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,EAAE,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAEtG,uFAAuF;AACvF,MAAM,WAAW,mBAAmB;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AAEtF,MAAM,WAAW,cAAc;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AAE/D,iEAAiE;AACjE,MAAM,WAAW,cAAc;IAAG,KAAK,EAAE,MAAM,CAAA;CAAE;AACjD,4EAA4E;AAC5E,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AACD,MAAM,MAAM,YAAY,GAAG,cAAc,GAAG,aAAa,CAAC;AAE1D,gIAAgI;AAChI,MAAM,MAAM,0BAA0B,GAClC,wBAAwB,GACxB,wBAAwB,GACxB,4BAA4B,GAC5B,+BAA+B,GAC/B,2DAA2D,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/client/types/common.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,8DAA8D"}
|