@polardbx/pxbaas-client 0.0.0-stage → 0.1.0-beta.10
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 +56 -2
- package/dist/drivers/apps.driver.d.ts +128 -0
- package/dist/drivers/apps.driver.d.ts.map +1 -0
- package/dist/drivers/apps.driver.js +90 -0
- package/dist/drivers/apps.driver.js.map +1 -0
- package/dist/drivers/auth-admin.driver.d.ts +78 -0
- package/dist/drivers/auth-admin.driver.d.ts.map +1 -0
- package/dist/drivers/auth-admin.driver.js +145 -0
- package/dist/drivers/auth-admin.driver.js.map +1 -0
- package/dist/drivers/functions.driver.d.ts +75 -0
- package/dist/drivers/functions.driver.d.ts.map +1 -0
- package/dist/drivers/functions.driver.js +173 -0
- package/dist/drivers/functions.driver.js.map +1 -0
- package/dist/drivers/meta.driver.d.ts +80 -0
- package/dist/drivers/meta.driver.d.ts.map +1 -0
- package/dist/drivers/meta.driver.js +198 -0
- package/dist/drivers/meta.driver.js.map +1 -0
- package/dist/drivers/share-links.driver.d.ts +42 -0
- package/dist/drivers/share-links.driver.d.ts.map +1 -0
- package/dist/drivers/share-links.driver.js +55 -0
- package/dist/drivers/share-links.driver.js.map +1 -0
- package/dist/drivers/storage.driver.d.ts +87 -0
- package/dist/drivers/storage.driver.d.ts.map +1 -0
- package/dist/drivers/storage.driver.js +182 -0
- package/dist/drivers/storage.driver.js.map +1 -0
- package/dist/drivers/tenant-admin.driver.d.ts +130 -0
- package/dist/drivers/tenant-admin.driver.d.ts.map +1 -0
- package/dist/drivers/tenant-admin.driver.js +222 -0
- package/dist/drivers/tenant-admin.driver.js.map +1 -0
- package/dist/drivers/tenant-ddl.driver.d.ts +106 -0
- package/dist/drivers/tenant-ddl.driver.d.ts.map +1 -0
- package/dist/drivers/tenant-ddl.driver.js +131 -0
- package/dist/drivers/tenant-ddl.driver.js.map +1 -0
- package/dist/drivers/zero.driver.d.ts +125 -0
- package/dist/drivers/zero.driver.d.ts.map +1 -0
- package/dist/drivers/zero.driver.js +165 -0
- package/dist/drivers/zero.driver.js.map +1 -0
- package/dist/errors.d.ts +37 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +64 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +26 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/package.json +57 -3
package/dist/errors.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared API error formatting for all drivers.
|
|
3
|
+
*
|
|
4
|
+
* WHY: Storage/Meta error bodies are `{ statusCode, error, message }` where
|
|
5
|
+
* `error` is a coarse category (literally "Error" for Storage 400s) and
|
|
6
|
+
* `message` carries the actionable detail. Each driver used to prefer `error`
|
|
7
|
+
* and hard-coded 401/403/404 texts that swallowed the server `message`
|
|
8
|
+
* entirely, so users saw e.g. `Storage API error (400): Error` instead of
|
|
9
|
+
* `body must have required property 'prefix'`.
|
|
10
|
+
*
|
|
11
|
+
* Contract: always throws a plain `Error` whose message starts with
|
|
12
|
+
* `<source> API error (<status>): ` — upper layers match on that text, so do
|
|
13
|
+
* not introduce custom error classes or codes here.
|
|
14
|
+
*/
|
|
15
|
+
function asRecord(value) {
|
|
16
|
+
return typeof value === 'object' && value !== null ? value : undefined;
|
|
17
|
+
}
|
|
18
|
+
function firstString(...candidates) {
|
|
19
|
+
for (const candidate of candidates) {
|
|
20
|
+
if (typeof candidate === 'string' && candidate.trim() !== '')
|
|
21
|
+
return candidate;
|
|
22
|
+
}
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Build the error for a failed API call and throw it as a plain `Error`.
|
|
27
|
+
*/
|
|
28
|
+
export function formatApiError(source, info, options = {}) {
|
|
29
|
+
const { status, data } = info;
|
|
30
|
+
const body = asRecord(data);
|
|
31
|
+
// Share-Links nests details as `{ error: { message } }`; Meta/Storage use flat
|
|
32
|
+
// `{ error, message }`. `message` always wins over the coarse `error` category.
|
|
33
|
+
const nested = asRecord(body?.error);
|
|
34
|
+
const detail = firstString(body?.message, nested?.message, body?.error);
|
|
35
|
+
const friendly = status !== undefined
|
|
36
|
+
? options.statusTexts?.[status]
|
|
37
|
+
: undefined;
|
|
38
|
+
let message;
|
|
39
|
+
if (friendly) {
|
|
40
|
+
message = detail ? `${friendly} Server said: ${detail}` : friendly;
|
|
41
|
+
}
|
|
42
|
+
else if (detail) {
|
|
43
|
+
// Keep the category as a prefix only when it adds information beyond the detail.
|
|
44
|
+
const category = typeof body?.error === 'string' && body.error !== detail ? `${body.error}: ` : '';
|
|
45
|
+
message = `${category}${detail}`;
|
|
46
|
+
}
|
|
47
|
+
else if (body === undefined && info.fallbackMessage) {
|
|
48
|
+
// No JSON body at all (network failure / gateway HTML): keep the transport message.
|
|
49
|
+
message = info.fallbackMessage;
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
message = 'no error body';
|
|
53
|
+
}
|
|
54
|
+
if (info.debug) {
|
|
55
|
+
const method = info.debug.method ?? 'unknown';
|
|
56
|
+
const url = info.debug.url ?? 'unknown';
|
|
57
|
+
message += `\n[debug] ${method.toUpperCase()} ${url} -> ${status ?? 'unknown'}`;
|
|
58
|
+
if (info.debug.responseBody !== undefined) {
|
|
59
|
+
message += `\n[debug] response body: ${info.debug.responseBody}`;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
throw new Error(`${source} API error (${status ?? 'unknown'}): ${message}`);
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAsBH,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAE,KAAiC,CAAC,CAAC,CAAC,SAAS,CAAC;AACtG,CAAC;AAED,SAAS,WAAW,CAAC,GAAG,UAAqB;IAC3C,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,OAAO,SAAS,CAAC;IACjF,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAc,EACd,IAAkB,EAClB,UAAiC,EAAE;IAEnC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IAC9B,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5B,+EAA+E;IAC/E,gFAAgF;IAChF,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACxE,MAAM,QAAQ,GACZ,MAAM,KAAK,SAAS;QAClB,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,MAAyB,CAAC;QAClD,CAAC,CAAC,SAAS,CAAC;IAEhB,IAAI,OAAe,CAAC;IACpB,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,iBAAiB,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;IACrE,CAAC;SAAM,IAAI,MAAM,EAAE,CAAC;QAClB,iFAAiF;QACjF,MAAM,QAAQ,GAAG,OAAO,IAAI,EAAE,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACnG,OAAO,GAAG,GAAG,QAAQ,GAAG,MAAM,EAAE,CAAC;IACnC,CAAC;SAAM,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACtD,oFAAoF;QACpF,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC;IACjC,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,eAAe,CAAC;IAC5B,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,SAAS,CAAC;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,SAAS,CAAC;QACxC,OAAO,IAAI,aAAa,MAAM,CAAC,WAAW,EAAE,IAAI,GAAG,OAAO,MAAM,IAAI,SAAS,EAAE,CAAC;QAChF,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YAC1C,OAAO,IAAI,4BAA4B,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QACnE,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,eAAe,MAAM,IAAI,SAAS,MAAM,OAAO,EAAE,CAAC,CAAC;AAC9E,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @polardbx/pxbaas-client
|
|
3
|
+
*
|
|
4
|
+
* Shared HTTP client SDK for PolarDB-X BaaS data plane APIs.
|
|
5
|
+
*
|
|
6
|
+
* This package provides typed clients for:
|
|
7
|
+
* - Kong gateway routing
|
|
8
|
+
* - Meta API (/pg/*)
|
|
9
|
+
* - Functions Management API (/v1/projects/*)
|
|
10
|
+
* - Storage API (/storage/v1/*)
|
|
11
|
+
* - Auth Admin API (/auth/v1/admin/*)
|
|
12
|
+
* - REST API (/rest/v1/*)
|
|
13
|
+
*
|
|
14
|
+
* @packageDocumentation
|
|
15
|
+
*/
|
|
16
|
+
export * from "./types.js";
|
|
17
|
+
export * from "./errors.js";
|
|
18
|
+
export * from "./drivers/meta.driver.js";
|
|
19
|
+
export * from "./drivers/functions.driver.js";
|
|
20
|
+
export * from "./drivers/apps.driver.js";
|
|
21
|
+
export * from "./drivers/share-links.driver.js";
|
|
22
|
+
export * from "./drivers/storage.driver.js";
|
|
23
|
+
export * from "./drivers/auth-admin.driver.js";
|
|
24
|
+
export * from "./drivers/tenant-ddl.driver.js";
|
|
25
|
+
export * from "./drivers/tenant-admin.driver.js";
|
|
26
|
+
export * from "./drivers/zero.driver.js";
|
|
27
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAM5B,cAAc,0BAA0B,CAAC;AAGzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,6BAA6B,CAAC;AAG5C,cAAc,gCAAgC,CAAC;AAG/C,cAAc,gCAAgC,CAAC;AAG/C,cAAc,kCAAkC,CAAC;AAGjD,cAAc,0BAA0B,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @polardbx/pxbaas-client
|
|
3
|
+
*
|
|
4
|
+
* Shared HTTP client SDK for PolarDB-X BaaS data plane APIs.
|
|
5
|
+
*
|
|
6
|
+
* This package provides typed clients for:
|
|
7
|
+
* - Kong gateway routing
|
|
8
|
+
* - Meta API (/pg/*)
|
|
9
|
+
* - Functions Management API (/v1/projects/*)
|
|
10
|
+
* - Storage API (/storage/v1/*)
|
|
11
|
+
* - Auth Admin API (/auth/v1/admin/*)
|
|
12
|
+
* - REST API (/rest/v1/*)
|
|
13
|
+
*
|
|
14
|
+
* @packageDocumentation
|
|
15
|
+
*/
|
|
16
|
+
export * from "./types.js";
|
|
17
|
+
export * from "./errors.js";
|
|
18
|
+
// TODO: M1 - Add Kong client
|
|
19
|
+
// export * from './kong.js';
|
|
20
|
+
// M3 - Meta API driver
|
|
21
|
+
export * from "./drivers/meta.driver.js";
|
|
22
|
+
// M4 - Functions, Apps, and Storage drivers
|
|
23
|
+
export * from "./drivers/functions.driver.js";
|
|
24
|
+
export * from "./drivers/apps.driver.js";
|
|
25
|
+
export * from "./drivers/share-links.driver.js";
|
|
26
|
+
export * from "./drivers/storage.driver.js";
|
|
27
|
+
// M5 - Auth Admin driver
|
|
28
|
+
export * from "./drivers/auth-admin.driver.js";
|
|
29
|
+
// Tenant self-service DDL / RLS driver (multi-tenant, per-tenant service_role)
|
|
30
|
+
export * from "./drivers/tenant-ddl.driver.js";
|
|
31
|
+
// Tenant admin driver (platform-operator surface; dashboard Basic Auth)
|
|
32
|
+
export * from "./drivers/tenant-admin.driver.js";
|
|
33
|
+
// Zero provisioning driver (PolarDB-X Zero PXBaas)
|
|
34
|
+
export * from "./drivers/zero.driver.js";
|
|
35
|
+
// TODO: M5 - Add REST driver
|
|
36
|
+
// export * from './drivers/rest.driver.js';
|
|
37
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAE5B,6BAA6B;AAC7B,6BAA6B;AAE7B,uBAAuB;AACvB,cAAc,0BAA0B,CAAC;AAEzC,4CAA4C;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,6BAA6B,CAAC;AAE5C,yBAAyB;AACzB,cAAc,gCAAgC,CAAC;AAE/C,+EAA+E;AAC/E,cAAc,gCAAgC,CAAC;AAE/C,wEAAwE;AACxE,cAAc,kCAAkC,CAAC;AAEjD,mDAAmD;AACnD,cAAc,0BAA0B,CAAC;AAEzC,6BAA6B;AAC7B,4CAA4C"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core types for @polardbx/pxbaas-client
|
|
3
|
+
*/
|
|
4
|
+
export interface TenantProfile {
|
|
5
|
+
endpoint: string;
|
|
6
|
+
tenantId?: string;
|
|
7
|
+
anonKey: string;
|
|
8
|
+
serviceRoleKey: string;
|
|
9
|
+
}
|
|
10
|
+
export interface JwtPayload {
|
|
11
|
+
role: 'anon' | 'service_role';
|
|
12
|
+
tenant_id?: string;
|
|
13
|
+
iss: string;
|
|
14
|
+
iat: number;
|
|
15
|
+
exp: number;
|
|
16
|
+
}
|
|
17
|
+
export interface ApiResponse<T = unknown> {
|
|
18
|
+
data: T;
|
|
19
|
+
error?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface PaginatedResponse<T> extends ApiResponse<T[]> {
|
|
22
|
+
count: number;
|
|
23
|
+
offset: number;
|
|
24
|
+
limit: number;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,GAAG,cAAc,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACtC,IAAI,EAAE,CAAC,CAAC;IACR,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC,CAAE,SAAQ,WAAW,CAAC,CAAC,EAAE,CAAC;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,60 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@polardbx/pxbaas-client",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"version": "0.1.0-beta.10",
|
|
4
|
+
"description": "Shared HTTP client SDK for PolarDB-X BaaS data plane APIs",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"polardbx",
|
|
7
|
+
"baas",
|
|
8
|
+
"client",
|
|
9
|
+
"sdk",
|
|
10
|
+
"http"
|
|
11
|
+
],
|
|
12
|
+
"license": "MIT",
|
|
13
|
+
"repository": {
|
|
14
|
+
"type": "git",
|
|
15
|
+
"url": "https://github.com/polardbx/mysql-supabase.git",
|
|
16
|
+
"directory": "cli/packages/baas-client"
|
|
17
|
+
},
|
|
18
|
+
"publishConfig": {
|
|
19
|
+
"access": "public",
|
|
20
|
+
"registry": "https://registry.npmjs.org"
|
|
21
|
+
},
|
|
22
|
+
"type": "module",
|
|
23
|
+
"main": "./dist/index.js",
|
|
24
|
+
"types": "./dist/index.d.ts",
|
|
25
|
+
"exports": {
|
|
26
|
+
".": {
|
|
27
|
+
"import": "./dist/index.js",
|
|
28
|
+
"types": "./dist/index.d.ts"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"files": [
|
|
32
|
+
"dist"
|
|
33
|
+
],
|
|
34
|
+
"dependencies": {
|
|
35
|
+
"axios": "^1.6.0",
|
|
36
|
+
"form-data": "^4.0.0"
|
|
37
|
+
},
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"@types/node": "^20.11.0",
|
|
40
|
+
"@typescript-eslint/eslint-plugin": "^7.0.0",
|
|
41
|
+
"@typescript-eslint/parser": "^7.0.0",
|
|
42
|
+
"eslint": "^8.56.0",
|
|
43
|
+
"msw": "^2.2.0",
|
|
44
|
+
"typescript": "^5.3.0",
|
|
45
|
+
"vitest": "^1.2.0"
|
|
46
|
+
},
|
|
47
|
+
"engines": {
|
|
48
|
+
"node": "^22.23.4 || ^24.22.1 || >=26.12.1"
|
|
49
|
+
},
|
|
50
|
+
"scripts": {
|
|
51
|
+
"build": "tsc --build",
|
|
52
|
+
"dev": "tsc --watch",
|
|
53
|
+
"test": "vitest run",
|
|
54
|
+
"test:unit": "vitest run",
|
|
55
|
+
"lint": "eslint src --ext .ts",
|
|
56
|
+
"lint:fix": "eslint src --ext .ts --fix",
|
|
57
|
+
"typecheck": "tsc --noEmit",
|
|
58
|
+
"clean": "rm -rf dist *.tsbuildinfo"
|
|
59
|
+
}
|
|
6
60
|
}
|