@polardbx/pxbaas 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.
Files changed (180) hide show
  1. package/README.md +224 -0
  2. package/dist/app/local-index.d.ts +70 -0
  3. package/dist/app/local-index.d.ts.map +1 -0
  4. package/dist/app/local-index.js +140 -0
  5. package/dist/app/local-index.js.map +1 -0
  6. package/dist/app/preflight.d.ts +24 -1
  7. package/dist/app/preflight.d.ts.map +1 -1
  8. package/dist/app/preflight.js +47 -11
  9. package/dist/app/preflight.js.map +1 -1
  10. package/dist/app/spec-lint.d.ts.map +1 -1
  11. package/dist/app/spec-lint.js +16 -0
  12. package/dist/app/spec-lint.js.map +1 -1
  13. package/dist/app/templates.d.ts +24 -0
  14. package/dist/app/templates.d.ts.map +1 -1
  15. package/dist/app/templates.js.map +1 -1
  16. package/dist/cli/help-guides.d.ts +17 -0
  17. package/dist/cli/help-guides.d.ts.map +1 -0
  18. package/dist/cli/help-guides.js +132 -0
  19. package/dist/cli/help-guides.js.map +1 -0
  20. package/dist/cli/root.d.ts.map +1 -1
  21. package/dist/cli/root.js +6 -0
  22. package/dist/cli/root.js.map +1 -1
  23. package/dist/commands/app/index.d.ts.map +1 -1
  24. package/dist/commands/app/index.js +687 -47
  25. package/dist/commands/app/index.js.map +1 -1
  26. package/dist/commands/completion/index.d.ts.map +1 -1
  27. package/dist/commands/completion/index.js +5 -1
  28. package/dist/commands/completion/index.js.map +1 -1
  29. package/dist/commands/data/index.d.ts +52 -0
  30. package/dist/commands/data/index.d.ts.map +1 -1
  31. package/dist/commands/data/index.js +201 -39
  32. package/dist/commands/data/index.js.map +1 -1
  33. package/dist/commands/db/index.d.ts +15 -0
  34. package/dist/commands/db/index.d.ts.map +1 -1
  35. package/dist/commands/db/index.js +200 -55
  36. package/dist/commands/db/index.js.map +1 -1
  37. package/dist/commands/functions/new.d.ts +4 -0
  38. package/dist/commands/functions/new.d.ts.map +1 -1
  39. package/dist/commands/functions/new.js +24 -9
  40. package/dist/commands/functions/new.js.map +1 -1
  41. package/dist/commands/gen/index.d.ts.map +1 -1
  42. package/dist/commands/gen/index.js +13 -10
  43. package/dist/commands/gen/index.js.map +1 -1
  44. package/dist/commands/guide/index.d.ts +8 -0
  45. package/dist/commands/guide/index.d.ts.map +1 -0
  46. package/dist/commands/guide/index.js +20 -0
  47. package/dist/commands/guide/index.js.map +1 -0
  48. package/dist/commands/instance/index.d.ts.map +1 -1
  49. package/dist/commands/instance/index.js +120 -0
  50. package/dist/commands/instance/index.js.map +1 -1
  51. package/dist/commands/login/index.d.ts.map +1 -1
  52. package/dist/commands/login/index.js +23 -63
  53. package/dist/commands/login/index.js.map +1 -1
  54. package/dist/commands/profile/import-env.d.ts +7 -2
  55. package/dist/commands/profile/import-env.d.ts.map +1 -1
  56. package/dist/commands/profile/import-env.js +141 -16
  57. package/dist/commands/profile/import-env.js.map +1 -1
  58. package/dist/commands/profile/index.d.ts.map +1 -1
  59. package/dist/commands/profile/index.js +16 -1
  60. package/dist/commands/profile/index.js.map +1 -1
  61. package/dist/commands/skill/index.d.ts.map +1 -1
  62. package/dist/commands/skill/index.js +89 -14
  63. package/dist/commands/skill/index.js.map +1 -1
  64. package/dist/commands/storage/index.d.ts.map +1 -1
  65. package/dist/commands/storage/index.js +209 -7
  66. package/dist/commands/storage/index.js.map +1 -1
  67. package/dist/commands/tenant/index.d.ts +19 -0
  68. package/dist/commands/tenant/index.d.ts.map +1 -0
  69. package/dist/commands/tenant/index.js +667 -0
  70. package/dist/commands/tenant/index.js.map +1 -0
  71. package/dist/commands/whoami/index.js +19 -0
  72. package/dist/commands/whoami/index.js.map +1 -1
  73. package/dist/credentials/credential-store.d.ts +30 -1
  74. package/dist/credentials/credential-store.d.ts.map +1 -1
  75. package/dist/credentials/credential-store.js +114 -12
  76. package/dist/credentials/credential-store.js.map +1 -1
  77. package/dist/credentials/env-file.d.ts +48 -7
  78. package/dist/credentials/env-file.d.ts.map +1 -1
  79. package/dist/credentials/env-file.js +91 -16
  80. package/dist/credentials/env-file.js.map +1 -1
  81. package/dist/credentials/index.d.ts +2 -0
  82. package/dist/credentials/index.d.ts.map +1 -1
  83. package/dist/credentials/index.js +2 -0
  84. package/dist/credentials/index.js.map +1 -1
  85. package/dist/credentials/jwt-introspect.d.ts +7 -0
  86. package/dist/credentials/jwt-introspect.d.ts.map +1 -1
  87. package/dist/credentials/jwt-introspect.js.map +1 -1
  88. package/dist/credentials/masker.d.ts +3 -0
  89. package/dist/credentials/masker.d.ts.map +1 -1
  90. package/dist/credentials/masker.js +3 -0
  91. package/dist/credentials/masker.js.map +1 -1
  92. package/dist/credentials/profile.d.ts +12 -0
  93. package/dist/credentials/profile.d.ts.map +1 -1
  94. package/dist/credentials/profile.js +23 -0
  95. package/dist/credentials/profile.js.map +1 -1
  96. package/dist/credentials/tty-guard.d.ts +10 -0
  97. package/dist/credentials/tty-guard.d.ts.map +1 -1
  98. package/dist/credentials/tty-guard.js +32 -0
  99. package/dist/credentials/tty-guard.js.map +1 -1
  100. package/dist/db/apply-schema.d.ts +98 -11
  101. package/dist/db/apply-schema.d.ts.map +1 -1
  102. package/dist/db/apply-schema.js +247 -80
  103. package/dist/db/apply-schema.js.map +1 -1
  104. package/dist/db/introspect.d.ts +54 -0
  105. package/dist/db/introspect.d.ts.map +1 -0
  106. package/dist/db/introspect.js +140 -0
  107. package/dist/db/introspect.js.map +1 -0
  108. package/dist/db/sql-file.d.ts +55 -0
  109. package/dist/db/sql-file.d.ts.map +1 -1
  110. package/dist/db/sql-file.js +417 -0
  111. package/dist/db/sql-file.js.map +1 -1
  112. package/dist/instance/zero-whitelist.d.ts +39 -0
  113. package/dist/instance/zero-whitelist.d.ts.map +1 -0
  114. package/dist/instance/zero-whitelist.js +67 -0
  115. package/dist/instance/zero-whitelist.js.map +1 -0
  116. package/dist/main.js +26 -3
  117. package/dist/main.js.map +1 -1
  118. package/dist/skill/agents-md.d.ts +25 -0
  119. package/dist/skill/agents-md.d.ts.map +1 -0
  120. package/dist/skill/agents-md.js +62 -0
  121. package/dist/skill/agents-md.js.map +1 -0
  122. package/dist/skill/hosts.d.ts +31 -7
  123. package/dist/skill/hosts.d.ts.map +1 -1
  124. package/dist/skill/hosts.js +65 -7
  125. package/dist/skill/hosts.js.map +1 -1
  126. package/dist/skill/installer.d.ts +15 -3
  127. package/dist/skill/installer.d.ts.map +1 -1
  128. package/dist/skill/installer.js +62 -24
  129. package/dist/skill/installer.js.map +1 -1
  130. package/dist/tenant/bundle.d.ts +66 -0
  131. package/dist/tenant/bundle.d.ts.map +1 -0
  132. package/dist/tenant/bundle.js +132 -0
  133. package/dist/tenant/bundle.js.map +1 -0
  134. package/dist/tenant/guide.d.ts +50 -0
  135. package/dist/tenant/guide.d.ts.map +1 -0
  136. package/dist/tenant/guide.js +152 -0
  137. package/dist/tenant/guide.js.map +1 -0
  138. package/dist/tenant/probe.d.ts +65 -0
  139. package/dist/tenant/probe.d.ts.map +1 -0
  140. package/dist/tenant/probe.js +159 -0
  141. package/dist/tenant/probe.js.map +1 -0
  142. package/dist/tenant/verify.d.ts +37 -0
  143. package/dist/tenant/verify.d.ts.map +1 -0
  144. package/dist/tenant/verify.js +132 -0
  145. package/dist/tenant/verify.js.map +1 -0
  146. package/dist/version.d.ts +29 -0
  147. package/dist/version.d.ts.map +1 -0
  148. package/dist/version.js +65 -0
  149. package/dist/version.js.map +1 -0
  150. package/package.json +3 -3
  151. package/skills/pxbaas-app-spec/SKILL.md +4 -2
  152. package/skills/pxbaas-app-spec/references/deploy-options.md +3 -2
  153. package/skills/pxbaas-app-spec/references/runtime-contract.md +2 -2
  154. package/skills/pxbaas-app-spec/references/templates-examples.md +7 -4
  155. package/skills/pxbaas-cli/SKILL.md +26 -8
  156. package/skills/pxbaas-cli/references/app-deploy.md +46 -3
  157. package/skills/pxbaas-cli/references/auth-and-credentials.md +30 -2
  158. package/skills/pxbaas-cli/references/data-postgrest.md +19 -3
  159. package/skills/pxbaas-cli/references/db-and-meta.md +17 -0
  160. package/skills/pxbaas-cli/references/multi-tenant-apps.md +35 -4
  161. package/skills/pxbaas-cli/references/provision.md +16 -1
  162. package/skills/pxbaas-cli/references/safety-and-two-phase.md +42 -13
  163. package/skills/pxbaas-cli/references/tenant-admin.md +122 -0
  164. package/skills/pxbaas-cli/references/troubleshooting.md +4 -1
  165. package/templates/webapp/csr-bff/db/rls.json +13 -0
  166. package/templates/webapp/csr-bff/db/schema.sql +8 -28
  167. package/templates/webapp/manifest.json +131 -8
  168. package/templates/webapp/react-vite-hono/backend/index.ts +21 -4
  169. package/templates/webapp/ssr-blog/db/rls.json +13 -0
  170. package/templates/webapp/ssr-blog/db/schema.sql +8 -28
  171. package/templates/webapp/ssr-hono/backend/index.ts +50 -31
  172. package/templates/webapp/ssr-shop/db/rls.json +16 -0
  173. package/templates/webapp/ssr-shop/db/schema.sql +12 -42
  174. package/dist/commands/login/login.d.ts +0 -3
  175. package/dist/commands/login/login.d.ts.map +0 -1
  176. package/dist/commands/login/login.js +0 -185
  177. package/dist/commands/login/login.js.map +0 -1
  178. /package/templates/webapp/vanilla-static/frontend/{app.js → dist/app.js} +0 -0
  179. /package/templates/webapp/vanilla-static/frontend/{index.html → dist/index.html} +0 -0
  180. /package/templates/webapp/vanilla-static/frontend/{style.css → dist/style.css} +0 -0
@@ -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, { ...options, json: options.json || program.opts().json });
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, options);
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 objects = await storageDriver.listObjects(bucket, prefix || undefined);
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
- throw new Error('storage cp not yet implemented');
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"}