@polardbx/pxbaas-client 0.1.0-beta.1 → 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 +57 -0
- package/dist/drivers/apps.driver.d.ts +33 -0
- package/dist/drivers/apps.driver.d.ts.map +1 -1
- package/dist/drivers/apps.driver.js +8 -0
- package/dist/drivers/apps.driver.js.map +1 -1
- package/dist/drivers/meta.driver.d.ts +3 -0
- package/dist/drivers/meta.driver.d.ts.map +1 -1
- package/dist/drivers/meta.driver.js +22 -15
- package/dist/drivers/meta.driver.js.map +1 -1
- package/dist/drivers/share-links.driver.d.ts.map +1 -1
- package/dist/drivers/share-links.driver.js +7 -5
- package/dist/drivers/share-links.driver.js.map +1 -1
- package/dist/drivers/storage.driver.d.ts +21 -6
- package/dist/drivers/storage.driver.d.ts.map +1 -1
- package/dist/drivers/storage.driver.js +44 -33
- package/dist/drivers/storage.driver.js.map +1 -1
- 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 +51 -4
- package/dist/drivers/zero.driver.d.ts.map +1 -1
- package/dist/drivers/zero.driver.js +51 -3
- package/dist/drivers/zero.driver.js.map +1 -1
- 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 +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/README.md
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# @polardbx/pxbaas-client
|
|
2
|
+
|
|
3
|
+
Shared HTTP client SDK for [PolarDB-X BaaS](https://github.com/polardbx/mysql-supabase) (MySQL-Supabase) data plane APIs. This is the transport layer used by the [`@polardbx/pxbaas`](https://www.npmjs.com/package/@polardbx/pxbaas) CLI; you can also depend on it directly to script BaaS operations from Node.js.
|
|
4
|
+
|
|
5
|
+
Covered API surfaces:
|
|
6
|
+
|
|
7
|
+
- Meta API (`/pg/*`) — tables, schema, SQL query
|
|
8
|
+
- Functions Management API (`/v1/projects/*`) — Edge Function deploy/list/delete
|
|
9
|
+
- Apps & share-links drivers — webapp mounts and secure sharing
|
|
10
|
+
- Storage API (`/storage/v1/*`) — objects and buckets
|
|
11
|
+
- Auth Admin API (`/auth/v1/admin/*`) — user administration
|
|
12
|
+
- Tenant self-service DDL / RLS driver (multi-tenant, per-tenant `service_role`)
|
|
13
|
+
- Tenant admin driver (`/api/platform/tenants/*`, instance dashboard Basic auth, operator surface)
|
|
14
|
+
- Zero provisioning driver (PolarDB-X Zero PXBaas)
|
|
15
|
+
|
|
16
|
+
## Requirements
|
|
17
|
+
|
|
18
|
+
- Node.js >= 20
|
|
19
|
+
- ESM (`"type": "module"`); types ship in `dist/index.d.ts`
|
|
20
|
+
|
|
21
|
+
## Installation
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npm install @polardbx/pxbaas-client
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Usage
|
|
28
|
+
|
|
29
|
+
Drivers are constructed per endpoint with your tenant keys; keys are passed by the caller (the CLI sources them from its keyring-backed profile store).
|
|
30
|
+
|
|
31
|
+
```ts
|
|
32
|
+
import { MetaDriver } from "@polardbx/pxbaas-client";
|
|
33
|
+
|
|
34
|
+
const meta = new MetaDriver({
|
|
35
|
+
endpoint: "https://your-baas-endpoint",
|
|
36
|
+
anonKey: process.env.BAAS_ANON_KEY!,
|
|
37
|
+
serviceRoleKey: process.env.BAAS_SERVICE_ROLE_KEY, // admin operations
|
|
38
|
+
tenantId: process.env.BAAS_TENANT_ID, // multi-tenant deployments
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
const tables = await meta.listTables();
|
|
42
|
+
const rows = await meta.query("select 1");
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Other drivers (`FunctionsDriver`, `AppsDriver`, `ShareLinksDriver`, `StorageDriver`, `AuthAdminDriver`, `TenantDdlDriver`, `TenantAdminDriver`, `ZeroDriver`) follow the same options-object pattern; see `dist/index.d.ts` for the full typed surface.
|
|
46
|
+
|
|
47
|
+
### Secret handling in `TenantAdminDriver`
|
|
48
|
+
|
|
49
|
+
The upstream tenant endpoints return the tenant's `jwt_secret` (its signing master key) and both API keys in plaintext. The driver strips `jwt_secret` at parse time, so no method can hand it back, and normal reads (`list`, `get`) return redacted rows with key-presence booleans only. Tenant key material is reachable solely through `getKeys()` and `create()`, which return it in a dedicated `TenantKeyBundle` — never log or serialize that object; pass it to a keyring or a `0600` file. Keys issued by the platform are long-lived (~10 years) and currently cannot be revoked.
|
|
50
|
+
|
|
51
|
+
## Versioning
|
|
52
|
+
|
|
53
|
+
Versioned in lockstep with `@polardbx/pxbaas` (the CLI depends on this package via `workspace:*` in the monorepo, rewritten to the real version at publish time). Always upgrade both together.
|
|
54
|
+
|
|
55
|
+
## License
|
|
56
|
+
|
|
57
|
+
MIT
|
|
@@ -3,6 +3,13 @@ export type AppMountStatus = "ACTIVE" | "DISABLED";
|
|
|
3
3
|
export interface AppCapabilities {
|
|
4
4
|
schemaVersions: number[];
|
|
5
5
|
appEndpoint: string | null;
|
|
6
|
+
/**
|
|
7
|
+
* Effective Edge Function quota for this tenant (platform default → tenant
|
|
8
|
+
* override), or null/absent when the instance did not report it. The CLI
|
|
9
|
+
* preflight treats this as the authoritative limit instead of a hardcoded
|
|
10
|
+
* client default (gomoku retrospective 弯路5).
|
|
11
|
+
*/
|
|
12
|
+
maxFunctions?: number | null;
|
|
6
13
|
originMode?: AppOriginMode;
|
|
7
14
|
hostEnforced?: boolean;
|
|
8
15
|
publicExposureAllowed?: boolean;
|
|
@@ -65,6 +72,26 @@ export interface ChangeAppGenerationOptions {
|
|
|
65
72
|
expectedGeneration: number;
|
|
66
73
|
tenantId?: string;
|
|
67
74
|
}
|
|
75
|
+
export interface DestroyAppOptions {
|
|
76
|
+
/** Reclaim an orphan candidate the caller uploaded but never published. */
|
|
77
|
+
candidateFunctionSlug?: string;
|
|
78
|
+
/** Opt-in CAS guard; omit to destroy unconditionally. */
|
|
79
|
+
expectedGeneration?: number;
|
|
80
|
+
tenantId?: string;
|
|
81
|
+
}
|
|
82
|
+
export interface AppDestroyFunctionResult {
|
|
83
|
+
slug: string;
|
|
84
|
+
deleted: boolean;
|
|
85
|
+
error?: string;
|
|
86
|
+
}
|
|
87
|
+
export interface AppDestroyResult {
|
|
88
|
+
destroyed: boolean;
|
|
89
|
+
mountId: string;
|
|
90
|
+
appName: string;
|
|
91
|
+
tenantId: string;
|
|
92
|
+
alreadyGone?: boolean;
|
|
93
|
+
deletedFunctions: AppDestroyFunctionResult[];
|
|
94
|
+
}
|
|
68
95
|
export interface AppsDriverOptions {
|
|
69
96
|
endpoint: string;
|
|
70
97
|
serviceRoleKey: string;
|
|
@@ -89,6 +116,12 @@ export declare class AppsDriver {
|
|
|
89
116
|
publish(mountId: string, options: PublishAppOptions): Promise<AppMount>;
|
|
90
117
|
rollback(mountId: string, options: ChangeAppGenerationOptions): Promise<AppMount>;
|
|
91
118
|
unpublish(mountId: string, options: ChangeAppGenerationOptions): Promise<AppMount>;
|
|
119
|
+
/**
|
|
120
|
+
* Permanently tear down a Webapp: reclaim its edge-func candidates and delete
|
|
121
|
+
* the mount-id record. Idempotent (an already-gone mount returns destroyed).
|
|
122
|
+
* DB business tables are NOT touched.
|
|
123
|
+
*/
|
|
124
|
+
destroy(mountId: string, options?: DestroyAppOptions): Promise<AppDestroyResult>;
|
|
92
125
|
private request;
|
|
93
126
|
}
|
|
94
127
|
export declare function normalizeAppsError(error: unknown): AppsApiError;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apps.driver.d.ts","sourceRoot":"","sources":["../../src/drivers/apps.driver.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"apps.driver.d.ts","sourceRoot":"","sources":["../../src/drivers/apps.driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,6 +39,14 @@ export class AppsDriver {
|
|
|
39
39
|
async unpublish(mountId, options) {
|
|
40
40
|
return this.request(() => this.client.post(`/${encodeURIComponent(mountId)}/unpublish`, compact(options)));
|
|
41
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* Permanently tear down a Webapp: reclaim its edge-func candidates and delete
|
|
44
|
+
* the mount-id record. Idempotent (an already-gone mount returns destroyed).
|
|
45
|
+
* DB business tables are NOT touched.
|
|
46
|
+
*/
|
|
47
|
+
async destroy(mountId, options = {}) {
|
|
48
|
+
return this.request(() => this.client.post(`/${encodeURIComponent(mountId)}/destroy`, compact(options)));
|
|
49
|
+
}
|
|
42
50
|
async request(operation) {
|
|
43
51
|
try {
|
|
44
52
|
const response = await operation();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apps.driver.js","sourceRoot":"","sources":["../../src/drivers/apps.driver.ts"],"names":[],"mappings":"AAAA,OAAO,KAA8C,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"apps.driver.js","sourceRoot":"","sources":["../../src/drivers/apps.driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,12 +44,15 @@ export interface MetaDriverOptions {
|
|
|
44
44
|
serviceRoleKey?: string;
|
|
45
45
|
tenantId?: string;
|
|
46
46
|
timeout?: number;
|
|
47
|
+
/** Append method/url/status/response-body to thrown errors (CLI `--debug`). */
|
|
48
|
+
debug?: boolean;
|
|
47
49
|
}
|
|
48
50
|
export declare class MetaDriver {
|
|
49
51
|
private client;
|
|
50
52
|
private anonKey;
|
|
51
53
|
private serviceRoleKey?;
|
|
52
54
|
private tenantId?;
|
|
55
|
+
private debug;
|
|
53
56
|
constructor(options: MetaDriverOptions);
|
|
54
57
|
private getHeaders;
|
|
55
58
|
private handleError;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta.driver.d.ts","sourceRoot":"","sources":["../../src/drivers/meta.driver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"meta.driver.d.ts","sourceRoot":"","sources":["../../src/drivers/meta.driver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpD;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAiCD,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,cAAc,CAAC,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAU;gBAEX,OAAO,EAAE,iBAAiB;IAetC,OAAO,CAAC,UAAU;IAkBlB,OAAO,CAAC,WAAW;IA6BnB;;OAEG;IACG,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,GAAE,OAAe,GAAG,OAAO,CAAC,WAAW,CAAC;IAa/E;;OAEG;IACG,UAAU,CAAC,cAAc,GAAE,OAAc,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAoBvF;;OAEG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,GAAE,MAAiB,EAAE,cAAc,GAAE,OAAc,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAuB3H;;OAEG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,GAAE,MAAiB,EAAE,cAAc,GAAE,OAAc,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAmB1H;;OAEG;IACG,QAAQ,CAAC,cAAc,GAAE,OAAe,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAgBjF"}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
* - GET /pg/types - Get data types
|
|
10
10
|
*/
|
|
11
11
|
import axios from 'axios';
|
|
12
|
+
import { formatApiError } from '../errors.js';
|
|
12
13
|
/**
|
|
13
14
|
* PG-Meta returns BARE JSON arrays (pg-meta style), not a {data,error} envelope.
|
|
14
15
|
* Normalize either shape into a QueryResult.
|
|
@@ -47,10 +48,12 @@ export class MetaDriver {
|
|
|
47
48
|
anonKey;
|
|
48
49
|
serviceRoleKey;
|
|
49
50
|
tenantId;
|
|
51
|
+
debug;
|
|
50
52
|
constructor(options) {
|
|
51
53
|
this.anonKey = options.anonKey;
|
|
52
54
|
this.serviceRoleKey = options.serviceRoleKey;
|
|
53
55
|
this.tenantId = options.tenantId;
|
|
56
|
+
this.debug = options.debug ?? false;
|
|
54
57
|
this.client = axios.create({
|
|
55
58
|
baseURL: `${options.endpoint}/pg`,
|
|
56
59
|
timeout: options.timeout ?? 30000,
|
|
@@ -77,22 +80,26 @@ export class MetaDriver {
|
|
|
77
80
|
handleError(error) {
|
|
78
81
|
if (axios.isAxiosError(error)) {
|
|
79
82
|
const axiosError = error;
|
|
80
|
-
const
|
|
83
|
+
const config = axiosError.config;
|
|
81
84
|
const data = axiosError.response?.data;
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
85
|
+
formatApiError('Meta', {
|
|
86
|
+
status: axiosError.response?.status,
|
|
87
|
+
data,
|
|
88
|
+
fallbackMessage: axiosError.message,
|
|
89
|
+
debug: this.debug
|
|
90
|
+
? {
|
|
91
|
+
method: config?.method,
|
|
92
|
+
url: `${config?.baseURL ?? ''}${config?.url ?? ''}`,
|
|
93
|
+
responseBody: data === undefined ? undefined : JSON.stringify(data),
|
|
94
|
+
}
|
|
95
|
+
: undefined,
|
|
96
|
+
}, {
|
|
97
|
+
statusTexts: {
|
|
98
|
+
401: 'Authentication failed. Please check your API keys and run "pxbaas login" again.',
|
|
99
|
+
403: 'Permission denied. You may need service_role key for this operation.',
|
|
100
|
+
404: 'Resource not found. Please check the table name and try again.',
|
|
101
|
+
},
|
|
102
|
+
});
|
|
96
103
|
}
|
|
97
104
|
throw error;
|
|
98
105
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta.driver.js","sourceRoot":"","sources":["../../src/drivers/meta.driver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAoC,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"meta.driver.js","sourceRoot":"","sources":["../../src/drivers/meta.driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"share-links.driver.d.ts","sourceRoot":"","sources":["../../src/drivers/share-links.driver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"share-links.driver.d.ts","sourceRoot":"","sources":["../../src/drivers/share-links.driver.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAA;AAE9D,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,eAAe,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,iFAAiF;AACjF,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;gBAE1B,OAAO,EAAE,uBAAuB;IAQtC,MAAM,CACV,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE;QACP,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,gBAAgB,CAAC,EAAE,MAAM,CAAA;QACzB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,GACA,OAAO,CAAC,gBAAgB,CAAC;IActB,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IASnE,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAUjF,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;YAU5E,OAAO;CAgBtB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import axios from 'axios';
|
|
2
|
+
import { formatApiError } from '../errors.js';
|
|
2
3
|
export class ShareLinksDriver {
|
|
3
4
|
client;
|
|
4
5
|
constructor(options) {
|
|
@@ -40,11 +41,12 @@ export class ShareLinksDriver {
|
|
|
40
41
|
catch (error) {
|
|
41
42
|
if (axios.isAxiosError(error)) {
|
|
42
43
|
const axiosError = error;
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
axiosError.response?.
|
|
46
|
-
|
|
47
|
-
|
|
44
|
+
const data = axiosError.response?.data;
|
|
45
|
+
formatApiError('Share', {
|
|
46
|
+
status: axiosError.response?.status,
|
|
47
|
+
data,
|
|
48
|
+
fallbackMessage: axiosError.message,
|
|
49
|
+
});
|
|
48
50
|
}
|
|
49
51
|
throw error;
|
|
50
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"share-links.driver.js","sourceRoot":"","sources":["../../src/drivers/share-links.driver.ts"],"names":[],"mappings":"AAAA,OAAO,KAA8C,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"share-links.driver.js","sourceRoot":"","sources":["../../src/drivers/share-links.driver.ts"],"names":[],"mappings":"AAAA,OAAO,KAA8C,MAAM,OAAO,CAAA;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAiC7C,MAAM,OAAO,gBAAgB;IACV,MAAM,CAAe;IAEtC,YAAY,OAAgC;QAC1C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YACzB,OAAO,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,OAAO,CAAC,UAAU,IAAI,SAAS,EAAE;YAChG,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,MAAM;YAClC,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,OAAO,CAAC,cAAc,EAAE,EAAE;SAC/D,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CACV,YAAoB,EACpB,OAKC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAmB,GAAG,EAAE,CACzD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,kBAAkB,CAAC,YAAY,CAAC,SAAS,EAAE;YACxE,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,GAAG,CAAC,OAAO,CAAC,gBAAgB,KAAK,SAAS;gBACxC,CAAC,CAAC,EAAE,kBAAkB,EAAE,OAAO,CAAC,gBAAgB,EAAE;gBAClD,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7D,CAAC,CACH,CAAA;QACD,OAAO,QAAQ,CAAC,IAAI,CAAA;IACtB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,YAAoB,EAAE,QAAiB;QAChD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAA0B,GAAG,EAAE,CAChE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,kBAAkB,CAAC,YAAY,CAAC,SAAS,EAAE;YACvE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;SACvD,CAAC,CACH,CAAA;QACD,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAA;IACnC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,YAAoB,EAAE,OAAe,EAAE,QAAiB;QAChE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAY,GAAG,EAAE,CAClD,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,cAAc,kBAAkB,CAAC,YAAY,CAAC,WAAW,kBAAkB,CAAC,OAAO,CAAC,EAAE,EACtF,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAC3D,CACF,CAAA;QACD,OAAO,QAAQ,CAAC,IAAI,CAAA;IACtB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,YAAoB,EAAE,OAAe,EAAE,QAAiB;QACnE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAY,GAAG,EAAE,CAClD,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,cAAc,kBAAkB,CAAC,YAAY,CAAC,WAAW,kBAAkB,CAAC,OAAO,CAAC,SAAS,EAC7F,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CACxC,CACF,CAAA;QACD,OAAO,QAAQ,CAAC,IAAI,CAAA;IACtB,CAAC;IAEO,KAAK,CAAC,OAAO,CAAI,SAAqC;QAC5D,IAAI,CAAC;YACH,OAAO,MAAM,SAAS,EAAE,CAAA;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,MAAM,UAAU,GAAG,KAAmB,CAAA;gBACtC,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAA;gBACtC,cAAc,CAAC,OAAO,EAAE;oBACtB,MAAM,EAAE,UAAU,CAAC,QAAQ,EAAE,MAAM;oBACnC,IAAI;oBACJ,eAAe,EAAE,UAAU,CAAC,OAAO;iBACpC,CAAC,CAAA;YACJ,CAAC;YACD,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;CACF"}
|
|
@@ -27,16 +27,24 @@ export interface StorageObject {
|
|
|
27
27
|
last_accessed_at: string;
|
|
28
28
|
metadata: Record<string, unknown>;
|
|
29
29
|
}
|
|
30
|
+
/** Server response of POST /object/{bucket}/{path} (multi-tenant keys carry a `<tenantId>/` prefix). */
|
|
31
|
+
export interface UploadResult {
|
|
32
|
+
Key?: string;
|
|
33
|
+
Id?: string;
|
|
34
|
+
}
|
|
30
35
|
export interface StorageDriverOptions {
|
|
31
36
|
endpoint: string;
|
|
32
37
|
serviceRoleKey: string;
|
|
33
38
|
tenantId?: string;
|
|
34
39
|
timeout?: number;
|
|
40
|
+
/** Append method/url/status/response-body to thrown errors (CLI `--debug`). */
|
|
41
|
+
debug?: boolean;
|
|
35
42
|
}
|
|
36
43
|
export declare class StorageDriver {
|
|
37
44
|
private client;
|
|
38
45
|
private serviceRoleKey;
|
|
39
46
|
private tenantId?;
|
|
47
|
+
private debug;
|
|
40
48
|
constructor(options: StorageDriverOptions);
|
|
41
49
|
private getHeaders;
|
|
42
50
|
private handleError;
|
|
@@ -45,17 +53,24 @@ export declare class StorageDriver {
|
|
|
45
53
|
*/
|
|
46
54
|
listBuckets(): Promise<Bucket[]>;
|
|
47
55
|
/**
|
|
48
|
-
* List objects in a bucket
|
|
56
|
+
* List objects in a bucket.
|
|
57
|
+
*
|
|
58
|
+
* The server schema requires `prefix`, so it always defaults to '' and the
|
|
59
|
+
* key is always present in the request body — an omitted/undefined prefix
|
|
60
|
+
* used to make every root listing fail with 400.
|
|
49
61
|
*/
|
|
50
|
-
listObjects(bucket: string, prefix?: string): Promise<StorageObject[]>;
|
|
62
|
+
listObjects(bucket: string, prefix?: string, limit?: number): Promise<StorageObject[]>;
|
|
51
63
|
/**
|
|
52
|
-
* Upload a file to storage
|
|
64
|
+
* Upload a file to storage. Returns the server-assigned object key.
|
|
65
|
+
*
|
|
66
|
+
* Multi-tenant note: the server prefixes the stored key with `<tenantId>/`
|
|
67
|
+
* on its own — never prepend the tenant id client-side.
|
|
53
68
|
*/
|
|
54
|
-
upload(bucket: string, remotePath: string, localPath: string): Promise<
|
|
69
|
+
upload(bucket: string, remotePath: string, localPath: string, contentType?: string): Promise<UploadResult>;
|
|
55
70
|
/**
|
|
56
|
-
* Download a file from storage
|
|
71
|
+
* Download a file from storage. Returns the number of bytes written.
|
|
57
72
|
*/
|
|
58
|
-
download(bucket: string, remotePath: string, localPath: string): Promise<
|
|
73
|
+
download(bucket: string, remotePath: string, localPath: string): Promise<number>;
|
|
59
74
|
/**
|
|
60
75
|
* Delete an object from storage
|
|
61
76
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.driver.d.ts","sourceRoot":"","sources":["../../src/drivers/storage.driver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"storage.driver.d.ts","sourceRoot":"","sources":["../../src/drivers/storage.driver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAOH,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,wGAAwG;AACxG,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAU;gBAEX,OAAO,EAAE,oBAAoB;IAezC,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,WAAW;IA8BnB;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAatC;;;;;;OAMG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,MAAW,EAAE,KAAK,GAAE,MAAa,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IActG;;;;;OAKG;IACG,MAAM,CACV,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,CAAC;IAsBxB;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAkBtF;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW/D;;OAEG;IACG,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBzG;;OAEG;IACG,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAgB1G"}
|
|
@@ -11,16 +11,17 @@
|
|
|
11
11
|
* - POST /storage/v1/object/copy - Copy object
|
|
12
12
|
*/
|
|
13
13
|
import axios from 'axios';
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import { createReadStream } from 'node:fs';
|
|
14
|
+
import { readFile, writeFile } from 'node:fs/promises';
|
|
15
|
+
import { formatApiError } from '../errors.js';
|
|
17
16
|
export class StorageDriver {
|
|
18
17
|
client;
|
|
19
18
|
serviceRoleKey;
|
|
20
19
|
tenantId;
|
|
20
|
+
debug;
|
|
21
21
|
constructor(options) {
|
|
22
22
|
this.serviceRoleKey = options.serviceRoleKey;
|
|
23
23
|
this.tenantId = options.tenantId;
|
|
24
|
+
this.debug = options.debug ?? false;
|
|
24
25
|
this.client = axios.create({
|
|
25
26
|
baseURL: `${options.endpoint}/storage/v1`,
|
|
26
27
|
timeout: options.timeout ?? 60000,
|
|
@@ -45,23 +46,25 @@ export class StorageDriver {
|
|
|
45
46
|
const axiosError = error;
|
|
46
47
|
const status = axiosError.response?.status;
|
|
47
48
|
const data = axiosError.response?.data;
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
49
|
+
const config = axiosError.config;
|
|
50
|
+
formatApiError('Storage', {
|
|
51
|
+
status,
|
|
52
|
+
data,
|
|
53
|
+
fallbackMessage: axiosError.message,
|
|
54
|
+
debug: this.debug
|
|
55
|
+
? {
|
|
56
|
+
method: config?.method,
|
|
57
|
+
url: `${config?.baseURL ?? ''}${config?.url ?? ''}`,
|
|
58
|
+
responseBody: data === undefined ? undefined : JSON.stringify(data),
|
|
59
|
+
}
|
|
60
|
+
: undefined,
|
|
61
|
+
}, {
|
|
62
|
+
statusTexts: {
|
|
63
|
+
401: 'Authentication failed. Please check your service_role key and run "pxbaas login" again.',
|
|
64
|
+
403: 'Permission denied. Storage operations require service_role key.',
|
|
65
|
+
404: 'Object or bucket not found. Please check the path and try again.',
|
|
66
|
+
},
|
|
67
|
+
});
|
|
65
68
|
}
|
|
66
69
|
throw error;
|
|
67
70
|
}
|
|
@@ -78,11 +81,15 @@ export class StorageDriver {
|
|
|
78
81
|
}
|
|
79
82
|
}
|
|
80
83
|
/**
|
|
81
|
-
* List objects in a bucket
|
|
84
|
+
* List objects in a bucket.
|
|
85
|
+
*
|
|
86
|
+
* The server schema requires `prefix`, so it always defaults to '' and the
|
|
87
|
+
* key is always present in the request body — an omitted/undefined prefix
|
|
88
|
+
* used to make every root listing fail with 400.
|
|
82
89
|
*/
|
|
83
|
-
async listObjects(bucket, prefix) {
|
|
90
|
+
async listObjects(bucket, prefix = '', limit = 1000) {
|
|
84
91
|
try {
|
|
85
|
-
const response = await this.client.post(`/object/list/${bucket}`, { prefix, limit
|
|
92
|
+
const response = await this.client.post(`/object/list/${bucket}`, { prefix: prefix ?? '', limit }, { headers: this.getHeaders() });
|
|
86
93
|
return response.data ?? [];
|
|
87
94
|
}
|
|
88
95
|
catch (error) {
|
|
@@ -90,27 +97,29 @@ export class StorageDriver {
|
|
|
90
97
|
}
|
|
91
98
|
}
|
|
92
99
|
/**
|
|
93
|
-
* Upload a file to storage
|
|
100
|
+
* Upload a file to storage. Returns the server-assigned object key.
|
|
101
|
+
*
|
|
102
|
+
* Multi-tenant note: the server prefixes the stored key with `<tenantId>/`
|
|
103
|
+
* on its own — never prepend the tenant id client-side.
|
|
94
104
|
*/
|
|
95
|
-
async upload(bucket, remotePath, localPath) {
|
|
105
|
+
async upload(bucket, remotePath, localPath, contentType) {
|
|
96
106
|
try {
|
|
97
|
-
const
|
|
98
|
-
const
|
|
99
|
-
const filename = basename(localPath);
|
|
100
|
-
await this.client.post(`/object/${bucket}/${remotePath}`, fileStream, {
|
|
107
|
+
const body = await readFile(localPath);
|
|
108
|
+
const response = await this.client.post(`/object/${bucket}/${remotePath}`, body, {
|
|
101
109
|
headers: {
|
|
102
110
|
...this.getHeaders(),
|
|
103
|
-
'Content-Type': 'application/octet-stream',
|
|
104
|
-
'Content-Length':
|
|
111
|
+
'Content-Type': contentType ?? 'application/octet-stream',
|
|
112
|
+
'Content-Length': String(body.byteLength),
|
|
105
113
|
},
|
|
106
114
|
});
|
|
115
|
+
return response.data ?? {};
|
|
107
116
|
}
|
|
108
117
|
catch (error) {
|
|
109
118
|
this.handleError(error);
|
|
110
119
|
}
|
|
111
120
|
}
|
|
112
121
|
/**
|
|
113
|
-
* Download a file from storage
|
|
122
|
+
* Download a file from storage. Returns the number of bytes written.
|
|
114
123
|
*/
|
|
115
124
|
async download(bucket, remotePath, localPath) {
|
|
116
125
|
try {
|
|
@@ -118,7 +127,9 @@ export class StorageDriver {
|
|
|
118
127
|
headers: this.getHeaders(),
|
|
119
128
|
responseType: 'arraybuffer',
|
|
120
129
|
});
|
|
121
|
-
|
|
130
|
+
const data = Buffer.from(response.data);
|
|
131
|
+
await writeFile(localPath, data);
|
|
132
|
+
return data.byteLength;
|
|
122
133
|
}
|
|
123
134
|
catch (error) {
|
|
124
135
|
this.handleError(error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.driver.js","sourceRoot":"","sources":["../../src/drivers/storage.driver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAoC,MAAM,OAAO,CAAC;AACzD,OAAO,
|
|
1
|
+
{"version":3,"file":"storage.driver.js","sourceRoot":"","sources":["../../src/drivers/storage.driver.ts"],"names":[],"mappings":"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"}
|