@takaro/apiclient 0.0.0-dev.d961046 → 0.0.0-dev.da96df8
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/dist/.source-hash +1 -0
- package/dist/generated/api.d.ts +19470 -14049
- package/dist/generated/api.d.ts.map +1 -1
- package/dist/generated/api.js +9188 -6224
- package/dist/generated/api.js.map +1 -1
- package/dist/generated/common.d.ts +1 -1
- package/dist/generated/common.d.ts.map +1 -1
- package/dist/generated-management/api.d.ts +11847 -5632
- package/dist/generated-management/api.d.ts.map +1 -1
- package/dist/generated-management/api.js +2620 -252
- package/dist/generated-management/api.js.map +1 -1
- package/dist/generated-management/common.d.ts +1 -1
- package/dist/generated-management/common.d.ts.map +1 -1
- package/dist/lib/adminClient.d.ts +4 -1
- package/dist/lib/adminClient.d.ts.map +1 -1
- package/dist/lib/adminClient.js +10 -1
- package/dist/lib/adminClient.js.map +1 -1
- package/dist/lib/apiKey.d.ts +0 -15
- package/dist/lib/apiKey.d.ts.map +1 -1
- package/dist/lib/apiKey.js +2 -19
- package/dist/lib/apiKey.js.map +1 -1
- package/dist/lib/baseClient.d.ts +3 -16
- package/dist/lib/baseClient.d.ts.map +1 -1
- package/dist/lib/baseClient.js +5 -19
- package/dist/lib/baseClient.js.map +1 -1
- package/dist/lib/client.d.ts +9 -23
- package/dist/lib/client.d.ts.map +1 -1
- package/dist/lib/client.js +27 -23
- package/dist/lib/client.js.map +1 -1
- package/dist/lib/distributorClient.d.ts +0 -6
- package/dist/lib/distributorClient.d.ts.map +1 -1
- package/dist/lib/distributorClient.js +1 -7
- package/dist/lib/distributorClient.js.map +1 -1
- package/dist/lib/staffClient.d.ts +12 -0
- package/dist/lib/staffClient.d.ts.map +1 -0
- package/dist/lib/staffClient.js +26 -0
- package/dist/lib/staffClient.js.map +1 -0
- package/dist/main.d.ts +4 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +4 -5
- package/dist/main.js.map +1 -1
- package/package.json +3 -3
package/dist/lib/adminClient.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DistributorApi, DomainApi } from '../generated-management/index.js';
|
|
1
|
+
import { DistributorApi, DomainApi, FixtureHistoryApi, StaffTakaroAiApi } from '../generated-management/index.js';
|
|
2
2
|
import { BaseApiClient } from './baseClient.js';
|
|
3
3
|
export class AdminClient extends BaseApiClient {
|
|
4
4
|
constructor(config) {
|
|
@@ -15,6 +15,9 @@ export class AdminClient extends BaseApiClient {
|
|
|
15
15
|
});
|
|
16
16
|
return axios;
|
|
17
17
|
}
|
|
18
|
+
get takaroAi() {
|
|
19
|
+
return new StaffTakaroAiApi({ isJsonMime: this.isJsonMime }, '', this.axios);
|
|
20
|
+
}
|
|
18
21
|
get domain() {
|
|
19
22
|
return new DomainApi({
|
|
20
23
|
isJsonMime: this.isJsonMime,
|
|
@@ -25,5 +28,11 @@ export class AdminClient extends BaseApiClient {
|
|
|
25
28
|
isJsonMime: this.isJsonMime,
|
|
26
29
|
}, '', this.axios);
|
|
27
30
|
}
|
|
31
|
+
/** The Fixture History Writer (GH #3730) — off unless the API enables it. */
|
|
32
|
+
get fixtureHistory() {
|
|
33
|
+
return new FixtureHistoryApi({
|
|
34
|
+
isJsonMime: this.isJsonMime,
|
|
35
|
+
}, '', this.axios);
|
|
36
|
+
}
|
|
28
37
|
}
|
|
29
38
|
//# sourceMappingURL=adminClient.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adminClient.js","sourceRoot":"","sources":["../../src/lib/adminClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"adminClient.js","sourceRoot":"","sources":["../../src/lib/adminClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAClH,OAAO,EAAE,aAAa,EAA6B,MAAM,iBAAiB,CAAC;AAS3E,MAAM,OAAO,WAAY,SAAQ,aAAoC;IACnE,YAAY,MAA6B;QACvC,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAChE,CAAC;IAEO,kBAAkB,CAAC,KAAa,EAAE,KAAoB;QAC5D,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YAC/C,IAAI,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACpC,OAAO,OAAO,CAAC;YACjB,CAAC;YAED,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,GAAG,KAAK,CAAC;YAChD,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,gBAAgB,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/E,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,SAAS,CAClB;YACE,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,EACD,EAAE,EACF,IAAI,CAAC,KAAK,CACX,CAAC;IACJ,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,cAAc,CACvB;YACE,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,EACD,EAAE,EACF,IAAI,CAAC,KAAK,CACX,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,IAAI,cAAc;QAChB,OAAO,IAAI,iBAAiB,CAC1B;YACE,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,EACD,EAAE,EACF,IAAI,CAAC,KAAK,CACX,CAAC;IACJ,CAAC;CACF"}
|
package/dist/lib/apiKey.d.ts
CHANGED
|
@@ -1,18 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A local, dependency-free copy of the Takaro API key checksum, so a mistyped or truncated key is
|
|
3
|
-
* rejected before a request is ever made.
|
|
4
|
-
*
|
|
5
|
-
* This is deliberately a SECOND implementation of the base62 CRC32 in `@takaro/util`. This package
|
|
6
|
-
* is published with axios as its only runtime dependency and runs in the browser, so it cannot
|
|
7
|
-
* import `@takaro/util` or reach for `node:zlib`/`node:crypto`. The alphabet, the checksum length
|
|
8
|
-
* and the padding below must therefore match `packages/lib-util/src/copyOnceToken.ts`
|
|
9
|
-
* character-for-character; the unit test cross-checks the two against a real generated key.
|
|
10
|
-
*/
|
|
11
|
-
/**
|
|
12
|
-
* True when `key` looks like a Takaro API key and its trailing checksum matches its body.
|
|
13
|
-
* Never throws — any input at all is a legitimate question to ask of this function.
|
|
14
|
-
*/
|
|
15
1
|
export declare function isValidApiKeyFormat(key: string): boolean;
|
|
16
|
-
/** Throws with a message that says what is wrong with the key. */
|
|
17
2
|
export declare function assertValidApiKey(key: string): void;
|
|
18
3
|
//# sourceMappingURL=apiKey.d.ts.map
|
package/dist/lib/apiKey.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiKey.d.ts","sourceRoot":"","sources":["../../src/lib/apiKey.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"apiKey.d.ts","sourceRoot":"","sources":["../../src/lib/apiKey.ts"],"names":[],"mappings":"AAsCA,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAWxD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAOnD"}
|
package/dist/lib/apiKey.js
CHANGED
|
@@ -1,19 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
* rejected before a request is ever made.
|
|
4
|
-
*
|
|
5
|
-
* This is deliberately a SECOND implementation of the base62 CRC32 in `@takaro/util`. This package
|
|
6
|
-
* is published with axios as its only runtime dependency and runs in the browser, so it cannot
|
|
7
|
-
* import `@takaro/util` or reach for `node:zlib`/`node:crypto`. The alphabet, the checksum length
|
|
8
|
-
* and the padding below must therefore match `packages/lib-util/src/copyOnceToken.ts`
|
|
9
|
-
* character-for-character; the unit test cross-checks the two against a real generated key.
|
|
10
|
-
*/
|
|
1
|
+
// Second implementation of @takaro/util's base62 CRC32 (this package runs in the browser);
|
|
2
|
+
// must stay byte-identical to lib-util/src/copyOnceToken.ts.
|
|
11
3
|
const TAKARO_KEY_PREFIX = 'takaro_';
|
|
12
|
-
// Must stay byte-identical to BASE62_ALPHABET in @takaro/util's copyOnceToken.ts.
|
|
13
4
|
const BASE62_ALPHABET = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
|
|
14
5
|
const CHECKSUM_LENGTH = 6;
|
|
15
|
-
// The shortest key Takaro issues is `takaro_pat_` + 40 random + 6 checksum. Anything under the
|
|
16
|
-
// prefix plus a checksum cannot be a key at all.
|
|
17
6
|
const MIN_KEY_LENGTH = TAKARO_KEY_PREFIX.length + CHECKSUM_LENGTH + 1;
|
|
18
7
|
const CRC32_TABLE = (() => {
|
|
19
8
|
const table = new Int32Array(256);
|
|
@@ -29,7 +18,6 @@ const CRC32_TABLE = (() => {
|
|
|
29
18
|
function crc32(input) {
|
|
30
19
|
let crc = -1;
|
|
31
20
|
for (let i = 0; i < input.length; i++) {
|
|
32
|
-
// The token alphabet is ASCII-only, so a charCodeAt is the byte.
|
|
33
21
|
crc = (crc >>> 8) ^ CRC32_TABLE[(crc ^ input.charCodeAt(i)) & 0xff];
|
|
34
22
|
}
|
|
35
23
|
return (crc ^ -1) >>> 0;
|
|
@@ -43,10 +31,6 @@ function crc32Base62(input) {
|
|
|
43
31
|
} while (remaining > 0);
|
|
44
32
|
return encoded.padStart(CHECKSUM_LENGTH, '0');
|
|
45
33
|
}
|
|
46
|
-
/**
|
|
47
|
-
* True when `key` looks like a Takaro API key and its trailing checksum matches its body.
|
|
48
|
-
* Never throws — any input at all is a legitimate question to ask of this function.
|
|
49
|
-
*/
|
|
50
34
|
export function isValidApiKeyFormat(key) {
|
|
51
35
|
if (typeof key !== 'string' || key.length < MIN_KEY_LENGTH || !key.startsWith(TAKARO_KEY_PREFIX)) {
|
|
52
36
|
return false;
|
|
@@ -59,7 +43,6 @@ export function isValidApiKeyFormat(key) {
|
|
|
59
43
|
const body = key.slice(0, -CHECKSUM_LENGTH);
|
|
60
44
|
return crc32Base62(body) === key.slice(-CHECKSUM_LENGTH);
|
|
61
45
|
}
|
|
62
|
-
/** Throws with a message that says what is wrong with the key. */
|
|
63
46
|
export function assertValidApiKey(key) {
|
|
64
47
|
if (typeof key !== 'string' || !key.startsWith(TAKARO_KEY_PREFIX)) {
|
|
65
48
|
throw new Error(`Invalid Takaro API key: it does not start with '${TAKARO_KEY_PREFIX}'`);
|
package/dist/lib/apiKey.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiKey.js","sourceRoot":"","sources":["../../src/lib/apiKey.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"apiKey.js","sourceRoot":"","sources":["../../src/lib/apiKey.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/baseClient.d.ts
CHANGED
|
@@ -1,22 +1,12 @@
|
|
|
1
1
|
import { MetaApi } from '../generated/api.js';
|
|
2
|
-
import { type AxiosInstance } from 'axios';
|
|
3
|
-
/**
|
|
4
|
-
* Axios defaults to NO timeout, so a request whose TCP connection stalls blocks its
|
|
5
|
-
* await forever. During incident run-29688761260 a single POST hung for ~80 minutes
|
|
6
|
-
* (Tempo trace 15f5708701c38676355a0e42cb9f7ffe: a client span with no server span),
|
|
7
|
-
* freezing 3 of 4 CI shards until the 53-minute job timeout.
|
|
8
|
-
*
|
|
9
|
-
* 120s is deliberately generous — the goal is "not infinite", not "tight". The slowest
|
|
10
|
-
* legitimate single call is a domain create under full 4-shard CI load at roughly 30s.
|
|
11
|
-
* Individual long-running calls should pass a per-request `{ timeout }` override rather
|
|
12
|
-
* than raising this.
|
|
13
|
-
*/
|
|
2
|
+
import { type AxiosInstance, type AxiosRequestConfig } from 'axios';
|
|
14
3
|
export declare const DEFAULT_REQUEST_TIMEOUT_MS = 120000;
|
|
15
4
|
export interface IBaseApiClientConfig {
|
|
16
5
|
url: string;
|
|
17
6
|
log?: Logger | false;
|
|
18
7
|
/** Per-request timeout in ms. Defaults to DEFAULT_REQUEST_TIMEOUT_MS. */
|
|
19
8
|
timeoutMs?: number;
|
|
9
|
+
axiosFactory?: (config: AxiosRequestConfig) => AxiosInstance;
|
|
20
10
|
}
|
|
21
11
|
interface Logger {
|
|
22
12
|
info: (msg: string, meta?: unknown) => void;
|
|
@@ -34,10 +24,7 @@ export declare class BaseApiClient<T extends IBaseApiClientConfig> {
|
|
|
34
24
|
get axiosInstance(): AxiosInstance;
|
|
35
25
|
isJsonMime(mime: string): mime is "application/json";
|
|
36
26
|
private addLoggers;
|
|
37
|
-
/**
|
|
38
|
-
* Wait until the API reports that it is healthy
|
|
39
|
-
* @param timeout in milliseconds
|
|
40
|
-
*/
|
|
27
|
+
/** Polls until the API reports healthy, or throws after `timeout` ms. */
|
|
41
28
|
waitUntilHealthy(timeout?: number): Promise<void>;
|
|
42
29
|
get meta(): MetaApi;
|
|
43
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseClient.d.ts","sourceRoot":"","sources":["../../src/lib/baseClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAc,EAAmB,KAAK,aAAa,
|
|
1
|
+
{"version":3,"file":"baseClient.d.ts","sourceRoot":"","sources":["../../src/lib/baseClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAc,EAAmB,KAAK,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAG5F,eAAO,MAAM,0BAA0B,SAAU,CAAC;AAElD,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACrB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,aAAa,CAAC;CAC9D;AAED,UAAU,MAAM;IACd,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CAC9C;AAED,qBAAa,aAAa,CAAC,CAAC,SAAS,oBAAoB;IAS3C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IARxC,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC;IAC/B,SAAS,CAAC,GAAG,EAAE,MAAM,CAKnB;gBAE6B,MAAM,EAAE,CAAC;IAsBxC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAIpC,SAAS,CAAC,QAAQ,EAAE,MAAM;IAI1B,IAAI,aAAa,kBAEhB;IAED,UAAU,CAAC,IAAI,EAAE,MAAM;IAIvB,OAAO,CAAC,UAAU;IAgElB,yEAAyE;IACnE,gBAAgB,CAAC,OAAO,SAAS;IAqBvC,IAAI,IAAI,YAQP;CACF"}
|
package/dist/lib/baseClient.js
CHANGED
|
@@ -1,16 +1,6 @@
|
|
|
1
1
|
import { MetaApi } from '../generated/api.js';
|
|
2
2
|
import axios from 'axios';
|
|
3
|
-
|
|
4
|
-
* Axios defaults to NO timeout, so a request whose TCP connection stalls blocks its
|
|
5
|
-
* await forever. During incident run-29688761260 a single POST hung for ~80 minutes
|
|
6
|
-
* (Tempo trace 15f5708701c38676355a0e42cb9f7ffe: a client span with no server span),
|
|
7
|
-
* freezing 3 of 4 CI shards until the 53-minute job timeout.
|
|
8
|
-
*
|
|
9
|
-
* 120s is deliberately generous — the goal is "not infinite", not "tight". The slowest
|
|
10
|
-
* legitimate single call is a domain create under full 4-shard CI load at roughly 30s.
|
|
11
|
-
* Individual long-running calls should pass a per-request `{ timeout }` override rather
|
|
12
|
-
* than raising this.
|
|
13
|
-
*/
|
|
3
|
+
// Axios defaults to NO timeout, so a stalled connection blocks forever (run-29688761260).
|
|
14
4
|
export const DEFAULT_REQUEST_TIMEOUT_MS = 120_000;
|
|
15
5
|
export class BaseApiClient {
|
|
16
6
|
constructor(config) {
|
|
@@ -21,9 +11,7 @@ export class BaseApiClient {
|
|
|
21
11
|
warn: () => { },
|
|
22
12
|
debug: () => { },
|
|
23
13
|
};
|
|
24
|
-
// Browsers refuse to let JS set
|
|
25
|
-
// Only include it when running outside a browser context (Node.js / server-side).
|
|
26
|
-
// Use globalThis so this compiles under both DOM and non-DOM TypeScript lib targets.
|
|
14
|
+
// Browsers refuse to let JS set User-Agent ("forbidden header"); include it only outside a browser.
|
|
27
15
|
const isBrowser = globalThis.window !== undefined &&
|
|
28
16
|
globalThis.document !== undefined;
|
|
29
17
|
const axiosConfig = {
|
|
@@ -35,7 +23,8 @@ export class BaseApiClient {
|
|
|
35
23
|
withCredentials: true,
|
|
36
24
|
timeout: this.config.timeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS,
|
|
37
25
|
};
|
|
38
|
-
|
|
26
|
+
const createAxios = this.config.axiosFactory ?? ((config) => axios.create(config));
|
|
27
|
+
this.axios = this.addLoggers(createAxios(axiosConfig));
|
|
39
28
|
if (this.config.log) {
|
|
40
29
|
this.log = this.config.log;
|
|
41
30
|
}
|
|
@@ -100,10 +89,7 @@ export class BaseApiClient {
|
|
|
100
89
|
});
|
|
101
90
|
return axios;
|
|
102
91
|
}
|
|
103
|
-
/**
|
|
104
|
-
* Wait until the API reports that it is healthy
|
|
105
|
-
* @param timeout in milliseconds
|
|
106
|
-
*/
|
|
92
|
+
/** Polls until the API reports healthy, or throws after `timeout` ms. */
|
|
107
93
|
async waitUntilHealthy(timeout = 600000) {
|
|
108
94
|
const start = Date.now();
|
|
109
95
|
let isHealthy = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseClient.js","sourceRoot":"","sources":["../../src/lib/baseClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAuE,MAAM,OAAO,CAAC;AAE5F
|
|
1
|
+
{"version":3,"file":"baseClient.js","sourceRoot":"","sources":["../../src/lib/baseClient.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/client.d.ts
CHANGED
|
@@ -1,28 +1,16 @@
|
|
|
1
|
-
import { CronJobApi, FunctionApi, GameServerApi, RoleApi, UserApi, ModuleApi, HookApi, PlayerApi, SettingsApi, CommandApi, VariableApi, DiscordApi, EventApi, PlayerOnGameServerApi, ItemApi, ShopOrderApi, ShopListingApi, ShopCategoryApi, ShopActionApi, StorefrontConfigApi, TrackingApi, EntityApi, AnalyticsApi, InviteLinkApi, ApiKeyApi } from '../generated/api.js';
|
|
1
|
+
import { CronJobApi, ExecutionApi, FunctionApi, GameServerApi, RoleApi, UserApi, ModuleApi, HookApi, PlayerApi, SettingsApi, CommandApi, VariableApi, DiscordApi, EventApi, PlayerOnGameServerApi, ItemApi, ShopOrderApi, ShopListingApi, ShopCategoryApi, ShopActionApi, StorefrontConfigApi, StorefrontDomainApi, TrackingApi, EntityApi, AnalyticsApi, InviteLinkApi, ApiKeyApi, ThreadApi, CsmmImportApi } from '../generated/api.js';
|
|
2
2
|
import { BaseApiClient, type IBaseApiClientConfig } from './baseClient.js';
|
|
3
3
|
export interface IApiClientConfig extends IBaseApiClientConfig {
|
|
4
4
|
auth: {
|
|
5
|
-
/**
|
|
6
|
-
* @deprecated Keycloak's password grant is for the browser login page only. Scripted callers
|
|
7
|
-
* authenticate with `apiKey` (a Takaro API Key) — see `docs/api/authentication.md`. Still
|
|
8
|
-
* supported; nothing breaks today.
|
|
9
|
-
*/
|
|
5
|
+
/** @deprecated Browser login page only; scripted callers use `apiKey` instead (`docs/api/authentication.md`). */
|
|
10
6
|
username?: string;
|
|
11
|
-
/**
|
|
12
|
-
* @deprecated Keycloak's password grant is for the browser login page only. Scripted callers
|
|
13
|
-
* authenticate with `apiKey` (a Takaro API Key) — see `docs/api/authentication.md`. Still
|
|
14
|
-
* supported; nothing breaks today.
|
|
15
|
-
*/
|
|
7
|
+
/** @deprecated Browser login page only; scripted callers use `apiKey` instead (`docs/api/authentication.md`). */
|
|
16
8
|
password?: string;
|
|
17
9
|
/** A Takaro-minted internal token (`POST /token`), sent as `Authorization: Bearer <jwt>`. */
|
|
18
10
|
token?: string;
|
|
19
11
|
/** A Takaro API key secret (`takaro_pat_…`), sent as `Authorization: Bearer <key>`. */
|
|
20
12
|
apiKey?: string;
|
|
21
|
-
/**
|
|
22
|
-
* A Distributor Key secret (`takaro_dist_…`) for a white-label call, sent as
|
|
23
|
-
* `Authorization: Bearer <key>`. Requires `domainId`: a Distributor Key names the Domain it acts in
|
|
24
|
-
* on every request, and Takaro refuses it without the header.
|
|
25
|
-
*/
|
|
13
|
+
/** A Distributor Key secret (`takaro_dist_…`) for a white-label call. Requires `domainId`. */
|
|
26
14
|
distributorKey?: string;
|
|
27
15
|
/** The Domain a `distributorKey` acts in, sent as `X-Takaro-Domain`. Required with it. */
|
|
28
16
|
domainId?: string;
|
|
@@ -33,13 +21,7 @@ export declare class Client extends BaseApiClient<IApiClientConfig> {
|
|
|
33
21
|
constructor(config: IApiClientConfig);
|
|
34
22
|
set username(username: string);
|
|
35
23
|
set password(password: string);
|
|
36
|
-
/**
|
|
37
|
-
* @deprecated Exchanges `auth.username` / `auth.password` for a token through Keycloak's
|
|
38
|
-
* resource-owner password grant, which exists for the hosted browser login page. Scripted
|
|
39
|
-
* callers should pass `auth.apiKey` (a Takaro API Key) to the constructor instead — no `login()`
|
|
40
|
-
* round trip, no user credential to store. See `docs/api/authentication.md`. This method is not
|
|
41
|
-
* being removed and existing callers keep working unchanged.
|
|
42
|
-
*/
|
|
24
|
+
/** @deprecated Password grant for the hosted browser login page; pass `auth.apiKey` instead (`docs/api/authentication.md`). */
|
|
43
25
|
login(): Promise<string>;
|
|
44
26
|
logout(): void;
|
|
45
27
|
permissionCodesToInputs(permissions: string[]): Promise<{
|
|
@@ -50,6 +32,7 @@ export declare class Client extends BaseApiClient<IApiClientConfig> {
|
|
|
50
32
|
get role(): RoleApi;
|
|
51
33
|
get gameserver(): GameServerApi;
|
|
52
34
|
get cronjob(): CronJobApi;
|
|
35
|
+
get execution(): ExecutionApi;
|
|
53
36
|
get function(): FunctionApi;
|
|
54
37
|
get module(): ModuleApi;
|
|
55
38
|
get hook(): HookApi;
|
|
@@ -65,10 +48,13 @@ export declare class Client extends BaseApiClient<IApiClientConfig> {
|
|
|
65
48
|
get shopAction(): ShopActionApi;
|
|
66
49
|
get shopOrder(): ShopOrderApi;
|
|
67
50
|
get storefrontConfig(): StorefrontConfigApi;
|
|
51
|
+
get storefrontDomain(): StorefrontDomainApi;
|
|
68
52
|
get tracking(): TrackingApi;
|
|
69
53
|
get entity(): EntityApi;
|
|
70
54
|
get analytics(): AnalyticsApi;
|
|
71
55
|
get inviteLink(): InviteLinkApi;
|
|
56
|
+
get csmmImport(): CsmmImportApi;
|
|
57
|
+
get thread(): ThreadApi;
|
|
72
58
|
get apiKey(): ApiKeyApi;
|
|
73
59
|
}
|
|
74
60
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/lib/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/lib/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,WAAW,EACX,aAAa,EACb,OAAO,EACP,OAAO,EACP,SAAS,EACT,OAAO,EACP,SAAS,EACT,WAAW,EACX,UAAU,EACV,WAAW,EACX,UAAU,EACV,QAAQ,EACR,qBAAqB,EACrB,OAAO,EACP,YAAY,EACZ,cAAc,EACd,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,WAAW,EACX,SAAS,EACT,YAAY,EACZ,aAAa,EACb,SAAS,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/lib/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,YAAY,EACZ,WAAW,EACX,aAAa,EACb,OAAO,EACP,OAAO,EACP,SAAS,EACT,OAAO,EACP,SAAS,EACT,WAAW,EACX,UAAU,EACV,WAAW,EACX,UAAU,EACV,QAAQ,EACR,qBAAqB,EACrB,OAAO,EACP,YAAY,EACZ,cAAc,EACd,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,SAAS,EACT,YAAY,EACZ,aAAa,EACb,SAAS,EACT,SAAS,EACT,aAAa,EACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAG3E,MAAM,WAAW,gBAAiB,SAAQ,oBAAoB;IAC5D,IAAI,EAAE;QACJ,iHAAiH;QACjH,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,iHAAiH;QACjH,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,6FAA6F;QAC7F,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,uFAAuF;QACvF,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,8FAA8F;QAC9F,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,0FAA0F;QAC1F,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,qBAAa,MAAO,SAAQ,aAAa,CAAC,gBAAgB,CAAC;IAClD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;gBAChB,MAAM,EAAE,gBAAgB;IA+BpC,IAAI,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAE5B;IAED,IAAI,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAE5B;IAED,+HAA+H;IAClH,KAAK;IAmBX,MAAM;IAIA,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE;;;IAe1D,IAAI,IAAI,YAQP;IAED,IAAI,IAAI,YAQP;IAED,IAAI,IAAI,YAQP;IAED,IAAI,UAAU,kBAQb;IAED,IAAI,OAAO,eAQV;IAED,IAAI,SAAS,iBAQZ;IAED,IAAI,QAAQ,gBAQX;IAED,IAAI,MAAM,cAQT;IAED,IAAI,IAAI,YAQP;IAED,IAAI,OAAO,eAQV;IAED,IAAI,MAAM,cAQT;IAED,IAAI,QAAQ,gBAQX;IAED,IAAI,QAAQ,gBAQX;IAED,IAAI,OAAO,eAQV;IAED,IAAI,KAAK,aAQR;IAED,IAAI,kBAAkB,0BAQrB;IAED,IAAI,WAAW,mBAQd;IAED,IAAI,YAAY,oBAQf;IAED,IAAI,UAAU,kBAQb;IAED,IAAI,SAAS,iBAQZ;IAED,IAAI,gBAAgB,wBAQnB;IAED,IAAI,gBAAgB,wBAQnB;IAED,IAAI,QAAQ,gBAQX;IAED,IAAI,MAAM,cAQT;IAED,IAAI,SAAS,iBAQZ;IAED,IAAI,UAAU,kBAQb;IAED,IAAI,UAAU,kBAQb;IAED,IAAI,MAAM,cAQT;IAED,IAAI,MAAM,cAQT;CACF"}
|
package/dist/lib/client.js
CHANGED
|
@@ -1,27 +1,19 @@
|
|
|
1
|
-
import { CronJobApi, FunctionApi, GameServerApi, RoleApi, UserApi, ModuleApi, HookApi, PlayerApi, SettingsApi, CommandApi, VariableApi, DiscordApi, EventApi, PlayerOnGameServerApi, ItemApi, ShopOrderApi, ShopListingApi, ShopCategoryApi, ShopActionApi, StorefrontConfigApi, TrackingApi, EntityApi, AnalyticsApi, InviteLinkApi, ApiKeyApi, } from '../generated/api.js';
|
|
1
|
+
import { CronJobApi, ExecutionApi, FunctionApi, GameServerApi, RoleApi, UserApi, ModuleApi, HookApi, PlayerApi, SettingsApi, CommandApi, VariableApi, DiscordApi, EventApi, PlayerOnGameServerApi, ItemApi, ShopOrderApi, ShopListingApi, ShopCategoryApi, ShopActionApi, StorefrontConfigApi, StorefrontDomainApi, TrackingApi, EntityApi, AnalyticsApi, InviteLinkApi, ApiKeyApi, ThreadApi, CsmmImportApi, } from '../generated/api.js';
|
|
2
2
|
import { BaseApiClient } from './baseClient.js';
|
|
3
3
|
import { assertValidApiKey } from './apiKey.js';
|
|
4
4
|
export class Client extends BaseApiClient {
|
|
5
5
|
constructor(config) {
|
|
6
6
|
super(config);
|
|
7
|
-
// `token
|
|
8
|
-
// setting both means `apiKey` wins. Nothing passes both, and a caller that did would see an
|
|
9
|
-
// obvious 401 on its first call. `distributorKey` writes the same header again, but it is
|
|
10
|
-
// rejected outright rather than allowed to win silently: it is the newest of the three, so a
|
|
11
|
-
// caller combining them has a bug, and the symptom would otherwise be an opaque 401 much later.
|
|
7
|
+
// `token`/`apiKey`/`distributorKey` write the same header; last-set wins, `distributorKey` rejects combination.
|
|
12
8
|
if (this.config.auth.token) {
|
|
13
9
|
this.axios.defaults.headers.common.Authorization = `Bearer ${this.config.auth.token}`;
|
|
14
10
|
}
|
|
15
|
-
// Validated here
|
|
16
|
-
// not as an opaque 401 from some later call. The test is `!== undefined`, not truthiness: the
|
|
17
|
-
// commonest mistake of all is an unset `process.env.TAKARO_API_KEY`, and `''` or `null` must
|
|
18
|
-
// throw here rather than construct a client that quietly attaches no credential.
|
|
11
|
+
// Validated here, not on first use. `!== undefined`, not truthiness: an unset env var must throw.
|
|
19
12
|
if (this.config.auth.apiKey !== undefined) {
|
|
20
13
|
assertValidApiKey(this.config.auth.apiKey);
|
|
21
14
|
this.axios.defaults.headers.common.Authorization = `Bearer ${this.config.auth.apiKey}`;
|
|
22
15
|
}
|
|
23
|
-
// White-label
|
|
24
|
-
// env var must throw where it was typed, not construct a credential-less client.
|
|
16
|
+
// White-label, GH #3839. Same `!== undefined` reason as the `apiKey` block above.
|
|
25
17
|
if (this.config.auth.distributorKey !== undefined) {
|
|
26
18
|
if (this.config.auth.token !== undefined || this.config.auth.apiKey !== undefined) {
|
|
27
19
|
throw new Error('auth.distributorKey cannot be combined with auth.token or auth.apiKey');
|
|
@@ -29,15 +21,13 @@ export class Client extends BaseApiClient {
|
|
|
29
21
|
if (!this.config.auth.domainId) {
|
|
30
22
|
throw new Error('auth.distributorKey requires auth.domainId: a Distributor key names the Domain it acts in');
|
|
31
23
|
}
|
|
32
|
-
//
|
|
33
|
-
// passes unchanged.
|
|
24
|
+
// Matches the bare `takaro_` prefix plus checksum, so a Distributor Key passes unchanged.
|
|
34
25
|
assertValidApiKey(this.config.auth.distributorKey);
|
|
35
26
|
this.axios.defaults.headers.common.Authorization = `Bearer ${this.config.auth.distributorKey}`;
|
|
36
27
|
this.setDomain(this.config.auth.domainId);
|
|
37
28
|
}
|
|
38
29
|
}
|
|
39
|
-
// The setters and login() below ARE the deprecated password mode's implementation
|
|
40
|
-
// the deprecated fields by construction; the rule would otherwise flag the feature for existing.
|
|
30
|
+
// The setters and login() below ARE the deprecated password mode's implementation.
|
|
41
31
|
/* eslint-disable @typescript-eslint/no-deprecated */
|
|
42
32
|
set username(username) {
|
|
43
33
|
this.config.auth.username = username;
|
|
@@ -45,13 +35,7 @@ export class Client extends BaseApiClient {
|
|
|
45
35
|
set password(password) {
|
|
46
36
|
this.config.auth.password = password;
|
|
47
37
|
}
|
|
48
|
-
/**
|
|
49
|
-
* @deprecated Exchanges `auth.username` / `auth.password` for a token through Keycloak's
|
|
50
|
-
* resource-owner password grant, which exists for the hosted browser login page. Scripted
|
|
51
|
-
* callers should pass `auth.apiKey` (a Takaro API Key) to the constructor instead — no `login()`
|
|
52
|
-
* round trip, no user credential to store. See `docs/api/authentication.md`. This method is not
|
|
53
|
-
* being removed and existing callers keep working unchanged.
|
|
54
|
-
*/
|
|
38
|
+
/** @deprecated Password grant for the hosted browser login page; pass `auth.apiKey` instead (`docs/api/authentication.md`). */
|
|
55
39
|
async login() {
|
|
56
40
|
if (!this.config.auth.username || !this.config.auth.password) {
|
|
57
41
|
throw new Error('No username or password provided');
|
|
@@ -106,6 +90,11 @@ export class Client extends BaseApiClient {
|
|
|
106
90
|
isJsonMime: this.isJsonMime,
|
|
107
91
|
}, '', this.axios);
|
|
108
92
|
}
|
|
93
|
+
get execution() {
|
|
94
|
+
return new ExecutionApi({
|
|
95
|
+
isJsonMime: this.isJsonMime,
|
|
96
|
+
}, '', this.axios);
|
|
97
|
+
}
|
|
109
98
|
get function() {
|
|
110
99
|
return new FunctionApi({
|
|
111
100
|
isJsonMime: this.isJsonMime,
|
|
@@ -181,6 +170,11 @@ export class Client extends BaseApiClient {
|
|
|
181
170
|
isJsonMime: this.isJsonMime,
|
|
182
171
|
}, '', this.axios);
|
|
183
172
|
}
|
|
173
|
+
get storefrontDomain() {
|
|
174
|
+
return new StorefrontDomainApi({
|
|
175
|
+
isJsonMime: this.isJsonMime,
|
|
176
|
+
}, '', this.axios);
|
|
177
|
+
}
|
|
184
178
|
get tracking() {
|
|
185
179
|
return new TrackingApi({
|
|
186
180
|
isJsonMime: this.isJsonMime,
|
|
@@ -201,6 +195,16 @@ export class Client extends BaseApiClient {
|
|
|
201
195
|
isJsonMime: this.isJsonMime,
|
|
202
196
|
}, '', this.axios);
|
|
203
197
|
}
|
|
198
|
+
get csmmImport() {
|
|
199
|
+
return new CsmmImportApi({
|
|
200
|
+
isJsonMime: this.isJsonMime,
|
|
201
|
+
}, '', this.axios);
|
|
202
|
+
}
|
|
203
|
+
get thread() {
|
|
204
|
+
return new ThreadApi({
|
|
205
|
+
isJsonMime: this.isJsonMime,
|
|
206
|
+
}, '', this.axios);
|
|
207
|
+
}
|
|
204
208
|
get apiKey() {
|
|
205
209
|
return new ApiKeyApi({
|
|
206
210
|
isJsonMime: this.isJsonMime,
|
package/dist/lib/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/lib/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,WAAW,EACX,aAAa,EACb,OAAO,EACP,OAAO,EACP,SAAS,EACT,OAAO,EACP,SAAS,EACT,WAAW,EACX,UAAU,EACV,WAAW,EACX,UAAU,EACV,QAAQ,EACR,qBAAqB,EACrB,OAAO,EACP,YAAY,EACZ,cAAc,EACd,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,WAAW,EACX,SAAS,EACT,YAAY,EACZ,aAAa,EACb,SAAS,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/lib/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,17 +2,11 @@ import { DistributorSelfServiceApi } from '../generated-management/api.js';
|
|
|
2
2
|
import { BaseApiClient, type IBaseApiClientConfig } from './baseClient.js';
|
|
3
3
|
export interface IDistributorApiClientConfig extends IBaseApiClientConfig {
|
|
4
4
|
auth: {
|
|
5
|
-
/** A Distributor Key secret (`takaro_dist_…`), sent as `Authorization: Bearer <key>`. */
|
|
6
5
|
distributorKey: string;
|
|
7
6
|
};
|
|
8
7
|
}
|
|
9
|
-
/**
|
|
10
|
-
* The client an integrating Distributor uses against the Management API (ADR 0023). Authenticated
|
|
11
|
-
* by a Distributor Key, never by the admin secret — those are two separate doors.
|
|
12
|
-
*/
|
|
13
8
|
export declare class DistributorClient extends BaseApiClient<IDistributorApiClientConfig> {
|
|
14
9
|
constructor(config: IDistributorApiClientConfig);
|
|
15
|
-
/** The Distributor's own self-service routes: who am I, and its key lifecycle. */
|
|
16
10
|
get self(): DistributorSelfServiceApi;
|
|
17
11
|
}
|
|
18
12
|
//# sourceMappingURL=distributorClient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"distributorClient.d.ts","sourceRoot":"","sources":["../../src/lib/distributorClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAG3E,MAAM,WAAW,2BAA4B,SAAQ,oBAAoB;IACvE,IAAI,EAAE;QACJ,
|
|
1
|
+
{"version":3,"file":"distributorClient.d.ts","sourceRoot":"","sources":["../../src/lib/distributorClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAG3E,MAAM,WAAW,2BAA4B,SAAQ,oBAAoB;IACvE,IAAI,EAAE;QACJ,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AAGD,qBAAa,iBAAkB,SAAQ,aAAa,CAAC,2BAA2B,CAAC;gBACnE,MAAM,EAAE,2BAA2B;IAO/C,IAAI,IAAI,8BAEP;CACF"}
|
|
@@ -1,19 +1,13 @@
|
|
|
1
1
|
import { DistributorSelfServiceApi } from '../generated-management/api.js';
|
|
2
2
|
import { BaseApiClient } from './baseClient.js';
|
|
3
3
|
import { assertValidApiKey } from './apiKey.js';
|
|
4
|
-
|
|
5
|
-
* The client an integrating Distributor uses against the Management API (ADR 0023). Authenticated
|
|
6
|
-
* by a Distributor Key, never by the admin secret — those are two separate doors.
|
|
7
|
-
*/
|
|
4
|
+
// Distributor Key only, never the admin secret (ADR 0023).
|
|
8
5
|
export class DistributorClient extends BaseApiClient {
|
|
9
6
|
constructor(config) {
|
|
10
7
|
super(config);
|
|
11
|
-
// Validated where it was typed, not as an opaque 401 later. isValidApiKeyFormat matches the
|
|
12
|
-
// bare `takaro_` prefix plus the checksum, so a Distributor Key passes unchanged.
|
|
13
8
|
assertValidApiKey(config.auth.distributorKey);
|
|
14
9
|
this.axios.defaults.headers.common.Authorization = `Bearer ${config.auth.distributorKey}`;
|
|
15
10
|
}
|
|
16
|
-
/** The Distributor's own self-service routes: who am I, and its key lifecycle. */
|
|
17
11
|
get self() {
|
|
18
12
|
return new DistributorSelfServiceApi({ isJsonMime: this.isJsonMime }, '', this.axios);
|
|
19
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"distributorClient.js","sourceRoot":"","sources":["../../src/lib/distributorClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAA6B,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"distributorClient.js","sourceRoot":"","sources":["../../src/lib/distributorClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAA6B,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAQhD,2DAA2D;AAC3D,MAAM,OAAO,iBAAkB,SAAQ,aAA0C;IAC/E,YAAY,MAAmC;QAC7C,KAAK,CAAC,MAAM,CAAC,CAAC;QAEd,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,GAAG,UAAU,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;IAC5F,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,yBAAyB,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACxF,CAAC;CACF"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { DistributorApi, DomainApi, PlatformStatsApi, StaffMeApi, StaffPlanApi, StaffTakaroAiApi } from '../generated-management/api.js';
|
|
2
|
+
import { BaseApiClient, type IBaseApiClientConfig } from './baseClient.js';
|
|
3
|
+
export declare class StaffClient extends BaseApiClient<IBaseApiClientConfig> {
|
|
4
|
+
get staff(): StaffMeApi;
|
|
5
|
+
get stats(): PlatformStatsApi;
|
|
6
|
+
get domains(): DomainApi;
|
|
7
|
+
get distributors(): DistributorApi;
|
|
8
|
+
get plans(): StaffPlanApi;
|
|
9
|
+
/** Takaro AI staff controls: global multiplier, Domain override, spend. */
|
|
10
|
+
get takaroAi(): StaffTakaroAiApi;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=staffClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"staffClient.d.ts","sourceRoot":"","sources":["../../src/lib/staffClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,gBAAgB,EACjB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAI3E,qBAAa,WAAY,SAAQ,aAAa,CAAC,oBAAoB,CAAC;IAClE,IAAI,KAAK,eAER;IAED,IAAI,KAAK,qBAER;IAED,IAAI,OAAO,cAEV;IAED,IAAI,YAAY,mBAEf;IAED,IAAI,KAAK,iBAER;IAED,2EAA2E;IAC3E,IAAI,QAAQ,qBAEX;CACF"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { DistributorApi, DomainApi, PlatformStatsApi, StaffMeApi, StaffPlanApi, StaffTakaroAiApi, } from '../generated-management/api.js';
|
|
2
|
+
import { BaseApiClient } from './baseClient.js';
|
|
3
|
+
// Staff admin dashboard client against the Management API (ADR 0023, ADR 0026); authenticated by
|
|
4
|
+
// the Staff session cookie alone (dashboard and API share one origin, ADR 0026 decision 1).
|
|
5
|
+
export class StaffClient extends BaseApiClient {
|
|
6
|
+
get staff() {
|
|
7
|
+
return new StaffMeApi({ isJsonMime: this.isJsonMime }, '', this.axios);
|
|
8
|
+
}
|
|
9
|
+
get stats() {
|
|
10
|
+
return new PlatformStatsApi({ isJsonMime: this.isJsonMime }, '', this.axios);
|
|
11
|
+
}
|
|
12
|
+
get domains() {
|
|
13
|
+
return new DomainApi({ isJsonMime: this.isJsonMime }, '', this.axios);
|
|
14
|
+
}
|
|
15
|
+
get distributors() {
|
|
16
|
+
return new DistributorApi({ isJsonMime: this.isJsonMime }, '', this.axios);
|
|
17
|
+
}
|
|
18
|
+
get plans() {
|
|
19
|
+
return new StaffPlanApi({ isJsonMime: this.isJsonMime }, '', this.axios);
|
|
20
|
+
}
|
|
21
|
+
/** Takaro AI staff controls: global multiplier, Domain override, spend. */
|
|
22
|
+
get takaroAi() {
|
|
23
|
+
return new StaffTakaroAiApi({ isJsonMime: this.isJsonMime }, '', this.axios);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=staffClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"staffClient.js","sourceRoot":"","sources":["../../src/lib/staffClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,gBAAgB,GACjB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,aAAa,EAA6B,MAAM,iBAAiB,CAAC;AAE3E,iGAAiG;AACjG,4FAA4F;AAC5F,MAAM,OAAO,WAAY,SAAQ,aAAmC;IAClE,IAAI,KAAK;QACP,OAAO,IAAI,UAAU,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,gBAAgB,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/E,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,SAAS,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACxE,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,cAAc,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7E,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,YAAY,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3E,CAAC;IAED,2EAA2E;IAC3E,IAAI,QAAQ;QACV,OAAO,IAAI,gBAAgB,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/E,CAAC;CACF"}
|
package/dist/main.d.ts
CHANGED
|
@@ -5,8 +5,11 @@ export { AdminClient } from './lib/adminClient.js';
|
|
|
5
5
|
export { Client } from './lib/client.js';
|
|
6
6
|
export { DistributorClient } from './lib/distributorClient.js';
|
|
7
7
|
export type { IDistributorApiClientConfig } from './lib/distributorClient.js';
|
|
8
|
+
export { StaffClient } from './lib/staffClient.js';
|
|
8
9
|
export { isValidApiKeyFormat, assertValidApiKey } from './lib/apiKey.js';
|
|
9
10
|
export type ITakaroAPIAxiosResponse<T> = AxiosResponse<T>;
|
|
10
11
|
export * from './generated/api.js';
|
|
11
|
-
export { DistributorApi, DistributorSelfServiceApi, DomainApi } from './generated-management/api.js';
|
|
12
|
+
export { DistributorApi, DistributorSelfServiceApi, DomainApi, PlatformStatsApi, StaffAuthApi, StaffMeApi, StaffMeOutputDTOTierEnum, StaffPlanApi, StaffTakaroAiApi, TakaroAiDomainOutputDTOOverrideStateEnum, DomainStateCountDTOStateEnum, DomainSearchInputAllowedFiltersStateEnum, DistributorKeyOutputDTOStatusEnum, } from './generated-management/api.js';
|
|
13
|
+
export type { DomainBackingCountsDTO, DomainStateCountDTO, DomainsPerDistributorDTO, DomainsPerWeekDTO, PlatformStatsOutputDTO, TakaroAiDomainOutputDTO, TakaroAiPlatformOutputDTO, TakaroAiStaffChangeOutputDTO, StaffMeOutputDTO, DomainSearchInputDTO, DomainSearchInputAllowedFilters, DomainSearchInputAllowedSearch, ManagementDomainOutputArrayDTOAPI, DomainApiKeyCreateInputDTO, DomainAttachResultDTO, DistributorSearchInputDTO, DistributorOutputArrayDTOAPI, DistributorOutputDTOAPI, DistributorKeyOutputDTO, DistributorKeyOutputArrayDTOAPI, DistributorKeyCreateInputDTO, DistributorKeyCreateResultDTO, DistributorKeySearchInputDTO, PlanOutputDTO, PlanOutputArrayDTOAPI, PlanLimitsDTO, PlanPriceDTO, StaffRoleOutputDTO, StaffRoleOutputArrayDTOAPI, } from './generated-management/api.js';
|
|
14
|
+
export type { DistributorOutputDTO as StaffDistributorOutputDTO, DistributorCreateInputDTO as StaffDistributorCreateInputDTO, DistributorUpdateInputDTO as StaffDistributorUpdateInputDTO, } from './generated-management/api.js';
|
|
12
15
|
//# sourceMappingURL=main.d.ts.map
|
package/dist/main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,YAAY,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzE,MAAM,MAAM,uBAAuB,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;AAC1D,cAAc,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,YAAY,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzE,MAAM,MAAM,uBAAuB,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;AAC1D,cAAc,oBAAoB,CAAC;AAInC,OAAO,EACL,cAAc,EACd,yBAAyB,EACzB,SAAS,EACT,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,wBAAwB,EACxB,YAAY,EACZ,gBAAgB,EAChB,wCAAwC,EACxC,4BAA4B,EAC5B,wCAAwC,EACxC,iCAAiC,GAClC,MAAM,+BAA+B,CAAC;AAEvC,YAAY,EACV,sBAAsB,EACtB,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,yBAAyB,EACzB,4BAA4B,EAC5B,gBAAgB,EAChB,oBAAoB,EACpB,+BAA+B,EAC/B,8BAA8B,EAC9B,iCAAiC,EACjC,0BAA0B,EAC1B,qBAAqB,EACrB,yBAAyB,EACzB,4BAA4B,EAC5B,uBAAuB,EACvB,uBAAuB,EACvB,+BAA+B,EAC/B,4BAA4B,EAC5B,6BAA6B,EAC7B,4BAA4B,EAC5B,aAAa,EACb,qBAAqB,EACrB,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,+BAA+B,CAAC;AAIvC,YAAY,EACV,oBAAoB,IAAI,yBAAyB,EACjD,yBAAyB,IAAI,8BAA8B,EAC3D,yBAAyB,IAAI,8BAA8B,GAC5D,MAAM,+BAA+B,CAAC"}
|
package/dist/main.js
CHANGED
|
@@ -2,11 +2,10 @@ export { isAxiosError } from 'axios';
|
|
|
2
2
|
export { AdminClient } from './lib/adminClient.js';
|
|
3
3
|
export { Client } from './lib/client.js';
|
|
4
4
|
export { DistributorClient } from './lib/distributorClient.js';
|
|
5
|
+
export { StaffClient } from './lib/staffClient.js';
|
|
5
6
|
export { isValidApiKeyFormat, assertValidApiKey } from './lib/apiKey.js';
|
|
6
7
|
export * from './generated/api.js';
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
|
|
10
|
-
// TypeScript fail the build, which is the drift gate we want.
|
|
11
|
-
export { DistributorApi, DistributorSelfServiceApi, DomainApi } from './generated-management/api.js';
|
|
8
|
+
// Domain lifecycle routes live on the Management API's own tree (ADR 0023), re-exported by name,
|
|
9
|
+
// not `export *`: both trees share DTOs, and a colliding name fails the build — our drift gate.
|
|
10
|
+
export { DistributorApi, DistributorSelfServiceApi, DomainApi, PlatformStatsApi, StaffAuthApi, StaffMeApi, StaffMeOutputDTOTierEnum, StaffPlanApi, StaffTakaroAiApi, TakaroAiDomainOutputDTOOverrideStateEnum, DomainStateCountDTOStateEnum, DomainSearchInputAllowedFiltersStateEnum, DistributorKeyOutputDTOStatusEnum, } from './generated-management/api.js';
|
|
12
11
|
//# sourceMappingURL=main.js.map
|