@polardbx/pxbaas 0.1.0-beta.3 → 0.1.0-beta.5
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 +40 -8
- package/dist/app/local-index.d.ts +70 -0
- package/dist/app/local-index.d.ts.map +1 -0
- package/dist/app/local-index.js +140 -0
- package/dist/app/local-index.js.map +1 -0
- package/dist/app/preflight.d.ts +12 -0
- package/dist/app/preflight.d.ts.map +1 -1
- package/dist/app/preflight.js +30 -17
- package/dist/app/preflight.js.map +1 -1
- package/dist/cli/root.d.ts.map +1 -1
- package/dist/cli/root.js +3 -0
- package/dist/cli/root.js.map +1 -1
- package/dist/commands/app/index.d.ts.map +1 -1
- package/dist/commands/app/index.js +398 -46
- package/dist/commands/app/index.js.map +1 -1
- package/dist/commands/completion/index.d.ts.map +1 -1
- package/dist/commands/completion/index.js +5 -1
- package/dist/commands/completion/index.js.map +1 -1
- package/dist/commands/data/index.d.ts +52 -0
- package/dist/commands/data/index.d.ts.map +1 -1
- package/dist/commands/data/index.js +201 -39
- package/dist/commands/data/index.js.map +1 -1
- package/dist/commands/db/index.d.ts +14 -0
- package/dist/commands/db/index.d.ts.map +1 -1
- package/dist/commands/db/index.js +126 -28
- package/dist/commands/db/index.js.map +1 -1
- package/dist/commands/functions/new.d.ts +4 -0
- package/dist/commands/functions/new.d.ts.map +1 -1
- package/dist/commands/functions/new.js +24 -9
- package/dist/commands/functions/new.js.map +1 -1
- package/dist/commands/login/index.d.ts.map +1 -1
- package/dist/commands/login/index.js +15 -30
- package/dist/commands/login/index.js.map +1 -1
- package/dist/commands/profile/import-env.d.ts +7 -2
- package/dist/commands/profile/import-env.d.ts.map +1 -1
- package/dist/commands/profile/import-env.js +141 -16
- package/dist/commands/profile/import-env.js.map +1 -1
- package/dist/commands/profile/index.d.ts.map +1 -1
- package/dist/commands/profile/index.js +13 -1
- package/dist/commands/profile/index.js.map +1 -1
- package/dist/commands/storage/index.d.ts.map +1 -1
- package/dist/commands/storage/index.js +209 -7
- package/dist/commands/storage/index.js.map +1 -1
- package/dist/commands/tenant/index.d.ts +19 -0
- package/dist/commands/tenant/index.d.ts.map +1 -0
- package/dist/commands/tenant/index.js +667 -0
- package/dist/commands/tenant/index.js.map +1 -0
- package/dist/commands/whoami/index.js +19 -0
- package/dist/commands/whoami/index.js.map +1 -1
- package/dist/credentials/credential-store.d.ts +30 -1
- package/dist/credentials/credential-store.d.ts.map +1 -1
- package/dist/credentials/credential-store.js +114 -12
- package/dist/credentials/credential-store.js.map +1 -1
- package/dist/credentials/env-file.d.ts +48 -7
- package/dist/credentials/env-file.d.ts.map +1 -1
- package/dist/credentials/env-file.js +91 -16
- package/dist/credentials/env-file.js.map +1 -1
- package/dist/credentials/jwt-introspect.d.ts +7 -0
- package/dist/credentials/jwt-introspect.d.ts.map +1 -1
- package/dist/credentials/jwt-introspect.js.map +1 -1
- package/dist/credentials/masker.d.ts +3 -0
- package/dist/credentials/masker.d.ts.map +1 -1
- package/dist/credentials/masker.js +3 -0
- package/dist/credentials/masker.js.map +1 -1
- package/dist/credentials/profile.d.ts +12 -0
- package/dist/credentials/profile.d.ts.map +1 -1
- package/dist/credentials/profile.js +23 -0
- package/dist/credentials/profile.js.map +1 -1
- package/dist/credentials/tty-guard.d.ts +10 -0
- package/dist/credentials/tty-guard.d.ts.map +1 -1
- package/dist/credentials/tty-guard.js +32 -0
- package/dist/credentials/tty-guard.js.map +1 -1
- package/dist/main.js +21 -2
- package/dist/main.js.map +1 -1
- package/dist/tenant/bundle.d.ts +66 -0
- package/dist/tenant/bundle.d.ts.map +1 -0
- package/dist/tenant/bundle.js +132 -0
- package/dist/tenant/bundle.js.map +1 -0
- package/dist/tenant/guide.d.ts +50 -0
- package/dist/tenant/guide.d.ts.map +1 -0
- package/dist/tenant/guide.js +152 -0
- package/dist/tenant/guide.js.map +1 -0
- package/dist/tenant/probe.d.ts +65 -0
- package/dist/tenant/probe.d.ts.map +1 -0
- package/dist/tenant/probe.js +159 -0
- package/dist/tenant/probe.js.map +1 -0
- package/dist/tenant/verify.d.ts +37 -0
- package/dist/tenant/verify.d.ts.map +1 -0
- package/dist/tenant/verify.js +132 -0
- package/dist/tenant/verify.js.map +1 -0
- package/dist/version.d.ts +29 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +65 -0
- package/dist/version.js.map +1 -0
- package/package.json +2 -2
- package/skills/pxbaas-app-spec/references/runtime-contract.md +1 -1
- package/skills/pxbaas-cli/SKILL.md +14 -5
- package/skills/pxbaas-cli/references/auth-and-credentials.md +19 -3
- package/skills/pxbaas-cli/references/data-postgrest.md +4 -3
- package/skills/pxbaas-cli/references/db-and-meta.md +5 -0
- package/skills/pxbaas-cli/references/safety-and-two-phase.md +42 -13
- package/skills/pxbaas-cli/references/tenant-admin.md +122 -0
- package/skills/pxbaas-cli/references/troubleshooting.md +4 -1
|
@@ -1,17 +1,75 @@
|
|
|
1
|
+
import { statSync } from 'node:fs';
|
|
2
|
+
import { stat } from 'node:fs/promises';
|
|
3
|
+
import { extname, isAbsolute, resolve } from 'node:path';
|
|
1
4
|
import { StorageDriver } from '@polardbx/pxbaas-client';
|
|
2
5
|
import { CredentialStore, ProfileManager, formatSuccess, formatError, } from '../../credentials/index.js';
|
|
6
|
+
// Common static-asset types for `storage cp` uploads; anything unknown falls
|
|
7
|
+
// back to application/octet-stream (server stores bytes as-is either way).
|
|
8
|
+
const CONTENT_TYPES = {
|
|
9
|
+
'.html': 'text/html; charset=utf-8',
|
|
10
|
+
'.htm': 'text/html; charset=utf-8',
|
|
11
|
+
'.css': 'text/css; charset=utf-8',
|
|
12
|
+
'.js': 'text/javascript; charset=utf-8',
|
|
13
|
+
'.mjs': 'text/javascript; charset=utf-8',
|
|
14
|
+
'.json': 'application/json',
|
|
15
|
+
'.map': 'application/json',
|
|
16
|
+
'.txt': 'text/plain; charset=utf-8',
|
|
17
|
+
'.md': 'text/markdown; charset=utf-8',
|
|
18
|
+
'.csv': 'text/csv; charset=utf-8',
|
|
19
|
+
'.xml': 'application/xml',
|
|
20
|
+
'.svg': 'image/svg+xml',
|
|
21
|
+
'.png': 'image/png',
|
|
22
|
+
'.jpg': 'image/jpeg',
|
|
23
|
+
'.jpeg': 'image/jpeg',
|
|
24
|
+
'.gif': 'image/gif',
|
|
25
|
+
'.webp': 'image/webp',
|
|
26
|
+
'.ico': 'image/x-icon',
|
|
27
|
+
'.pdf': 'application/pdf',
|
|
28
|
+
'.wasm': 'application/wasm',
|
|
29
|
+
'.woff': 'font/woff',
|
|
30
|
+
'.woff2': 'font/woff2',
|
|
31
|
+
'.ttf': 'font/ttf',
|
|
32
|
+
};
|
|
33
|
+
function inferContentType(filePath) {
|
|
34
|
+
return CONTENT_TYPES[extname(filePath).toLowerCase()] ?? 'application/octet-stream';
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Classify a `cp` operand: an absolute path, a `./`-style path or anything that
|
|
38
|
+
* exists on the local filesystem is local; everything else is a remote
|
|
39
|
+
* `bucket/key` reference. Checked first so a local file named like a bucket key
|
|
40
|
+
* (e.g. `report.txt` in cwd) is uploaded rather than read from Storage.
|
|
41
|
+
*/
|
|
42
|
+
function isLocalRef(ref) {
|
|
43
|
+
if (isAbsolute(ref) || ref.startsWith('./') || ref.startsWith('../') || ref === '.' || ref === '..') {
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
try {
|
|
47
|
+
statSync(ref);
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
3
54
|
export function registerStorageCommands(program) {
|
|
4
55
|
const storageCmd = program
|
|
5
56
|
.command('storage')
|
|
6
57
|
.description('Storage management');
|
|
58
|
+
// `--debug` is only declared on the program, so subcommand opts() never carry it.
|
|
59
|
+
const isDebug = () => Boolean(program.opts().debug);
|
|
7
60
|
// storage ls [bucket/path]
|
|
8
61
|
storageCmd
|
|
9
62
|
.command('ls [path]')
|
|
10
63
|
.description('List buckets or objects in a bucket')
|
|
64
|
+
.option('--limit <n>', 'Maximum number of objects to list', '1000')
|
|
11
65
|
.option('--json', 'Output in JSON format')
|
|
12
66
|
.action(async (path, options) => {
|
|
13
67
|
try {
|
|
14
|
-
await handleStorageLs(path, {
|
|
68
|
+
await handleStorageLs(path, {
|
|
69
|
+
...options,
|
|
70
|
+
debug: isDebug(),
|
|
71
|
+
json: options.json || program.opts().json,
|
|
72
|
+
});
|
|
15
73
|
}
|
|
16
74
|
catch (error) {
|
|
17
75
|
const message = error instanceof Error ? error.message : String(error);
|
|
@@ -24,9 +82,15 @@ export function registerStorageCommands(program) {
|
|
|
24
82
|
.command('cp <src> <dst>')
|
|
25
83
|
.description('Copy objects (local<->remote or remote<->remote)')
|
|
26
84
|
.option('--recursive', 'Copy recursively')
|
|
85
|
+
.option('--content-type <mime>', 'Override the Content-Type inferred from the file extension')
|
|
86
|
+
.option('--json', 'Output in JSON format')
|
|
27
87
|
.action(async (src, dst, options) => {
|
|
28
88
|
try {
|
|
29
|
-
await handleStorageCp(src, dst,
|
|
89
|
+
await handleStorageCp(src, dst, {
|
|
90
|
+
...options,
|
|
91
|
+
debug: isDebug(),
|
|
92
|
+
json: options.json || program.opts().json,
|
|
93
|
+
});
|
|
30
94
|
}
|
|
31
95
|
catch (error) {
|
|
32
96
|
const message = error instanceof Error ? error.message : String(error);
|
|
@@ -40,7 +104,7 @@ export function registerStorageCommands(program) {
|
|
|
40
104
|
.description('Move/rename objects (remote only)')
|
|
41
105
|
.action(async (src, dst) => {
|
|
42
106
|
try {
|
|
43
|
-
await handleStorageMv(src, dst);
|
|
107
|
+
await handleStorageMv(src, dst, { debug: isDebug() });
|
|
44
108
|
}
|
|
45
109
|
catch (error) {
|
|
46
110
|
const message = error instanceof Error ? error.message : String(error);
|
|
@@ -55,7 +119,7 @@ export function registerStorageCommands(program) {
|
|
|
55
119
|
.option('--recursive', 'Delete recursively')
|
|
56
120
|
.action(async (path, options) => {
|
|
57
121
|
try {
|
|
58
|
-
await handleStorageRm(path, options);
|
|
122
|
+
await handleStorageRm(path, { ...options, debug: isDebug() });
|
|
59
123
|
}
|
|
60
124
|
catch (error) {
|
|
61
125
|
const message = error instanceof Error ? error.message : String(error);
|
|
@@ -82,6 +146,7 @@ async function handleStorageLs(path, options) {
|
|
|
82
146
|
endpoint: currentProfile.endpoint,
|
|
83
147
|
serviceRoleKey: credentials.serviceRoleKey,
|
|
84
148
|
tenantId: currentProfile.tenantId,
|
|
149
|
+
debug: options.debug,
|
|
85
150
|
});
|
|
86
151
|
// Parse path
|
|
87
152
|
if (!path) {
|
|
@@ -109,8 +174,11 @@ async function handleStorageLs(path, options) {
|
|
|
109
174
|
// List objects in bucket
|
|
110
175
|
const parts = path.split('/');
|
|
111
176
|
const bucket = parts[0];
|
|
177
|
+
// Keep the empty string: the Storage list schema requires `prefix`, so
|
|
178
|
+
// `prefix || undefined` made every bucket-root listing fail with HTTP 400.
|
|
112
179
|
const prefix = parts.slice(1).join('/');
|
|
113
|
-
const
|
|
180
|
+
const limit = parseLimit(options.limit);
|
|
181
|
+
const objects = await storageDriver.listObjects(bucket, prefix, limit);
|
|
114
182
|
if (options.json) {
|
|
115
183
|
console.log(JSON.stringify({ bucket, prefix, count: objects.length, objects }, null, 2));
|
|
116
184
|
}
|
|
@@ -130,9 +198,141 @@ async function handleStorageLs(path, options) {
|
|
|
130
198
|
}
|
|
131
199
|
}
|
|
132
200
|
async function handleStorageCp(src, dst, options) {
|
|
133
|
-
|
|
201
|
+
if (options.recursive) {
|
|
202
|
+
// Fail loudly: silently copying only the first entry would look like success.
|
|
203
|
+
throw new Error('storage cp --recursive is not implemented yet. Copy files one by one (directories are not traversed).');
|
|
204
|
+
}
|
|
205
|
+
const srcIsLocal = isLocalRef(src);
|
|
206
|
+
// A remote reference is always `bucket/key`, so a slash-free operand can only be
|
|
207
|
+
// a local file — including a download target that does not exist yet.
|
|
208
|
+
const dstIsLocal = isLocalRef(dst) || !dst.includes('/');
|
|
209
|
+
if (!srcIsLocal && !src.includes('/')) {
|
|
210
|
+
throw new Error(`Local source not found: ${src}. Remote references must look like bucket/key (e.g., bkt/a.txt).`);
|
|
211
|
+
}
|
|
212
|
+
if (srcIsLocal && dstIsLocal) {
|
|
213
|
+
if (!dst.includes('/')) {
|
|
214
|
+
throw new Error(`Destination "${dst}" is not a remote reference. Expected bucket/key (e.g., bkt/a.txt): Storage requires an object key.`);
|
|
215
|
+
}
|
|
216
|
+
throw new Error('Both source and destination are local paths; storage cp needs exactly one remote side (bucket/key).');
|
|
217
|
+
}
|
|
218
|
+
const storageDriver = await createStorageDriver(options.debug);
|
|
219
|
+
if (!srcIsLocal && !dstIsLocal) {
|
|
220
|
+
// Remote -> remote reuses the verified move endpoint; `POST /object/copy`
|
|
221
|
+
// exists in the driver but is not exercised by this deployment's regression.
|
|
222
|
+
const [srcBucket, srcPath] = splitRemote(src);
|
|
223
|
+
const [dstBucket, dstPath] = splitRemote(dst);
|
|
224
|
+
await storageDriver.move(srcBucket, srcPath, dstBucket, dstPath);
|
|
225
|
+
if (options.json) {
|
|
226
|
+
console.log(JSON.stringify({ operation: 'remote-copy', source: src, destination: dst, viaMove: true }, null, 2));
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
console.log(formatSuccess(`Copied ${src} -> ${dst} (remote-to-remote reuses move; the source object is removed)`));
|
|
230
|
+
}
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
if (srcIsLocal) {
|
|
234
|
+
await uploadLocalFile(storageDriver, src, dst, options);
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
await downloadRemoteObject(storageDriver, src, dst, options);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
/** Split `bucket/key/...`; an object key is mandatory (a bare bucket name is ambiguous). */
|
|
241
|
+
function splitRemote(ref) {
|
|
242
|
+
const parts = ref.split('/');
|
|
243
|
+
if (parts.length < 2 || parts[1] === '') {
|
|
244
|
+
throw new Error(`Remote path must include bucket and object key (e.g., bucket/path/to/file), got: ${ref}`);
|
|
245
|
+
}
|
|
246
|
+
return [parts[0], parts.slice(1).join('/')];
|
|
247
|
+
}
|
|
248
|
+
async function uploadLocalFile(storageDriver, localPath, dst, options) {
|
|
249
|
+
const [bucket, remotePath] = splitRemote(dst);
|
|
250
|
+
const info = await stat(localPath).catch(() => {
|
|
251
|
+
throw new Error(`Local source not found or not readable: ${localPath}`);
|
|
252
|
+
});
|
|
253
|
+
if (!info.isFile()) {
|
|
254
|
+
throw new Error(`Local source is not a file: ${localPath}. Directory upload needs --recursive, which is not implemented yet.`);
|
|
255
|
+
}
|
|
256
|
+
await assertBucketExists(storageDriver, bucket);
|
|
257
|
+
const contentType = options.contentType ?? inferContentType(localPath);
|
|
258
|
+
const absolute = resolve(localPath);
|
|
259
|
+
// Print the intent BEFORE the request so a slow/failed upload still shows what was sent.
|
|
260
|
+
console.log(`Uploading ${absolute} -> ${bucket}/${remotePath} (${info.size} bytes, Content-Type: ${contentType})`);
|
|
261
|
+
const result = await storageDriver.upload(bucket, remotePath, absolute, contentType);
|
|
262
|
+
if (options.json) {
|
|
263
|
+
console.log(JSON.stringify({
|
|
264
|
+
operation: 'upload',
|
|
265
|
+
source: absolute,
|
|
266
|
+
bucket,
|
|
267
|
+
key: remotePath,
|
|
268
|
+
bytes: info.size,
|
|
269
|
+
contentType,
|
|
270
|
+
result,
|
|
271
|
+
}, null, 2));
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
console.log(formatSuccess(`Uploaded ${info.size} byte(s) to ${bucket}/${remotePath}`));
|
|
275
|
+
if (result.Key) {
|
|
276
|
+
// Multi-tenant: the server prefixes the stored key with `<tenantId>/` itself.
|
|
277
|
+
console.log(` Key: ${result.Key}`);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
async function downloadRemoteObject(storageDriver, src, localPath, options) {
|
|
281
|
+
const [bucket, remotePath] = splitRemote(src);
|
|
282
|
+
const absolute = resolve(localPath);
|
|
283
|
+
const existing = await stat(absolute).catch(() => undefined);
|
|
284
|
+
if (existing?.isDirectory()) {
|
|
285
|
+
throw new Error(`Local destination is a directory: ${absolute}. Provide a file path.`);
|
|
286
|
+
}
|
|
287
|
+
console.log(`Downloading ${bucket}/${remotePath} -> ${absolute}`);
|
|
288
|
+
const bytes = await storageDriver.download(bucket, remotePath, absolute);
|
|
289
|
+
if (options.json) {
|
|
290
|
+
console.log(JSON.stringify({
|
|
291
|
+
operation: 'download',
|
|
292
|
+
source: `${bucket}/${remotePath}`,
|
|
293
|
+
destination: absolute,
|
|
294
|
+
bytes,
|
|
295
|
+
}, null, 2));
|
|
296
|
+
return;
|
|
297
|
+
}
|
|
298
|
+
console.log(formatSuccess(`Downloaded ${bytes} byte(s) to ${absolute}`));
|
|
299
|
+
}
|
|
300
|
+
/** The CLI has no bucket-create command, so point the user at the way out instead of a bare 404. */
|
|
301
|
+
async function assertBucketExists(storageDriver, bucket) {
|
|
302
|
+
const buckets = await storageDriver.listBuckets();
|
|
303
|
+
if (buckets.some((b) => b.name === bucket))
|
|
304
|
+
return;
|
|
305
|
+
const known = buckets.map((b) => b.name).join(', ') || '(none)';
|
|
306
|
+
throw new Error(`Bucket "${bucket}" does not exist. Create it first (POST /storage/v1/bucket with {"name":"${bucket}"}); known buckets: ${known}`);
|
|
307
|
+
}
|
|
308
|
+
async function createStorageDriver(debug) {
|
|
309
|
+
const profileManager = new ProfileManager();
|
|
310
|
+
const currentProfile = await profileManager.getCurrentProfile();
|
|
311
|
+
if (!currentProfile) {
|
|
312
|
+
throw new Error('No active profile. Use "pxbaas login" to authenticate first.');
|
|
313
|
+
}
|
|
314
|
+
const credentialStore = new CredentialStore();
|
|
315
|
+
const credentials = await credentialStore.getCredentials(currentProfile.name);
|
|
316
|
+
if (!credentials) {
|
|
317
|
+
throw new Error(`No credentials found for profile: ${currentProfile.name}. Use "pxbaas login" to authenticate.`);
|
|
318
|
+
}
|
|
319
|
+
return new StorageDriver({
|
|
320
|
+
endpoint: currentProfile.endpoint,
|
|
321
|
+
serviceRoleKey: credentials.serviceRoleKey,
|
|
322
|
+
tenantId: currentProfile.tenantId,
|
|
323
|
+
debug,
|
|
324
|
+
});
|
|
325
|
+
}
|
|
326
|
+
function parseLimit(raw) {
|
|
327
|
+
if (raw === undefined)
|
|
328
|
+
return 1000;
|
|
329
|
+
const limit = Number(raw);
|
|
330
|
+
if (!Number.isInteger(limit) || limit <= 0) {
|
|
331
|
+
throw new Error(`--limit must be a positive integer, got: ${raw}`);
|
|
332
|
+
}
|
|
333
|
+
return limit;
|
|
134
334
|
}
|
|
135
|
-
async function handleStorageMv(src, dst) {
|
|
335
|
+
async function handleStorageMv(src, dst, options = {}) {
|
|
136
336
|
// Get current profile
|
|
137
337
|
const profileManager = new ProfileManager();
|
|
138
338
|
const currentProfile = await profileManager.getCurrentProfile();
|
|
@@ -160,6 +360,7 @@ async function handleStorageMv(src, dst) {
|
|
|
160
360
|
endpoint: currentProfile.endpoint,
|
|
161
361
|
serviceRoleKey: credentials.serviceRoleKey,
|
|
162
362
|
tenantId: currentProfile.tenantId,
|
|
363
|
+
debug: options.debug,
|
|
163
364
|
});
|
|
164
365
|
// Move object
|
|
165
366
|
await storageDriver.move(srcBucket, srcPath, dstBucket, dstPath);
|
|
@@ -190,6 +391,7 @@ async function handleStorageRm(path, options) {
|
|
|
190
391
|
endpoint: currentProfile.endpoint,
|
|
191
392
|
serviceRoleKey: credentials.serviceRoleKey,
|
|
192
393
|
tenantId: currentProfile.tenantId,
|
|
394
|
+
debug: options.debug,
|
|
193
395
|
});
|
|
194
396
|
// Delete object
|
|
195
397
|
await storageDriver.delete(bucket, objectPath);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/storage/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/storage/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `pxbaas tenant` — 多租户实例的**平台运营侧**命令组。
|
|
3
|
+
*
|
|
4
|
+
* 与数据面命令的分工:`db` / `data` / `app` 等用的是租户级 anon / service_role key;
|
|
5
|
+
* 本命令组用的是实例 dashboard 的 HTTP Basic 凭据(DASHBOARD_USERNAME / PASSWORD),
|
|
6
|
+
* 二者存在凭据存储的两本独立账上(`credentials/<profile>` vs `admin/<profile>`),
|
|
7
|
+
* 数据面命令读不到管理凭据,管理命令也不需要租户密钥。
|
|
8
|
+
*
|
|
9
|
+
* 三条不可让的纪律:
|
|
10
|
+
* 1. 管理凭据只能来自 TTY 掩码输入或 stdin 管道,**绝不进 argv**(`--dashboard-*` 已被
|
|
11
|
+
* assertNoKeyArgs 拒绝)。
|
|
12
|
+
* 2. 输出的租户信息一律经驱动层脱敏投影,**永不含 `jwt_secret`**(母密钥);密钥值只在
|
|
13
|
+
* 写钥匙串或写 0600 交付包时经手,不打印、不进 `--json`。
|
|
14
|
+
* 3. 建租户 / 补密钥等写操作先预览再授权(`--dry-run` / `--yes` / `--confirm`)。
|
|
15
|
+
* 其中「同名软删租户会被复活并重置密钥」属破坏性动作,必须 `--reactivate` 显式确认。
|
|
16
|
+
*/
|
|
17
|
+
import { Command } from 'commander';
|
|
18
|
+
export declare function registerTenantCommands(program: Command): void;
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/tenant/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+BpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiM7D"}
|