@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.
Files changed (50) hide show
  1. package/README.md +56 -2
  2. package/dist/drivers/apps.driver.d.ts +128 -0
  3. package/dist/drivers/apps.driver.d.ts.map +1 -0
  4. package/dist/drivers/apps.driver.js +90 -0
  5. package/dist/drivers/apps.driver.js.map +1 -0
  6. package/dist/drivers/auth-admin.driver.d.ts +78 -0
  7. package/dist/drivers/auth-admin.driver.d.ts.map +1 -0
  8. package/dist/drivers/auth-admin.driver.js +145 -0
  9. package/dist/drivers/auth-admin.driver.js.map +1 -0
  10. package/dist/drivers/functions.driver.d.ts +75 -0
  11. package/dist/drivers/functions.driver.d.ts.map +1 -0
  12. package/dist/drivers/functions.driver.js +173 -0
  13. package/dist/drivers/functions.driver.js.map +1 -0
  14. package/dist/drivers/meta.driver.d.ts +80 -0
  15. package/dist/drivers/meta.driver.d.ts.map +1 -0
  16. package/dist/drivers/meta.driver.js +198 -0
  17. package/dist/drivers/meta.driver.js.map +1 -0
  18. package/dist/drivers/share-links.driver.d.ts +42 -0
  19. package/dist/drivers/share-links.driver.d.ts.map +1 -0
  20. package/dist/drivers/share-links.driver.js +55 -0
  21. package/dist/drivers/share-links.driver.js.map +1 -0
  22. package/dist/drivers/storage.driver.d.ts +87 -0
  23. package/dist/drivers/storage.driver.d.ts.map +1 -0
  24. package/dist/drivers/storage.driver.js +182 -0
  25. package/dist/drivers/storage.driver.js.map +1 -0
  26. package/dist/drivers/tenant-admin.driver.d.ts +130 -0
  27. package/dist/drivers/tenant-admin.driver.d.ts.map +1 -0
  28. package/dist/drivers/tenant-admin.driver.js +222 -0
  29. package/dist/drivers/tenant-admin.driver.js.map +1 -0
  30. package/dist/drivers/tenant-ddl.driver.d.ts +106 -0
  31. package/dist/drivers/tenant-ddl.driver.d.ts.map +1 -0
  32. package/dist/drivers/tenant-ddl.driver.js +131 -0
  33. package/dist/drivers/tenant-ddl.driver.js.map +1 -0
  34. package/dist/drivers/zero.driver.d.ts +125 -0
  35. package/dist/drivers/zero.driver.d.ts.map +1 -0
  36. package/dist/drivers/zero.driver.js +165 -0
  37. package/dist/drivers/zero.driver.js.map +1 -0
  38. package/dist/errors.d.ts +37 -0
  39. package/dist/errors.d.ts.map +1 -0
  40. package/dist/errors.js +64 -0
  41. package/dist/errors.js.map +1 -0
  42. package/dist/index.d.ts +27 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +37 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/types.d.ts +26 -0
  47. package/dist/types.d.ts.map +1 -0
  48. package/dist/types.js +5 -0
  49. package/dist/types.js.map +1 -0
  50. 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"}
@@ -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"}
@@ -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,5 @@
1
+ /**
2
+ * Core types for @polardbx/pxbaas-client
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -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.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
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
  }