local-serverless-stack 0.11.0 → 0.13.0
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/CHANGELOG.md +11 -3
- package/README.md +107 -11
- package/dist/server/engine/emulators/s3/index.d.ts +13 -0
- package/dist/server/engine/emulators/s3/index.d.ts.map +1 -1
- package/dist/server/engine/emulators/s3/index.js +154 -1
- package/dist/server/engine/emulators/s3/index.js.map +1 -1
- package/dist/server/index.js +2 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/routes/secrets.d.ts +3 -0
- package/dist/server/routes/secrets.d.ts.map +1 -0
- package/dist/server/routes/secrets.js +0 -0
- package/dist/server/routes/secrets.js.map +1 -0
- package/dist/server/services/secrets-explorer.d.ts +39 -0
- package/dist/server/services/secrets-explorer.d.ts.map +1 -0
- package/dist/server/services/secrets-explorer.js +105 -0
- package/dist/server/services/secrets-explorer.js.map +1 -0
- package/dist/ui/assets/{ApisPage-DyjG-weG.js → ApisPage-Dg-fuYQY.js} +1 -1
- package/dist/ui/assets/{BucketDetailPage-Bvrk1L6q.js → BucketDetailPage-By9deUkc.js} +1 -1
- package/dist/ui/assets/{BucketsPage-KgeLoK6e.js → BucketsPage-idHR6yXh.js} +1 -1
- package/dist/ui/assets/{DynamoPage-C8rwaEIi.js → DynamoPage-k8NQGeJ_.js} +1 -1
- package/dist/ui/assets/{DynamoTablePage-CN5P5f7S.js → DynamoTablePage-C-LPU3I7.js} +1 -1
- package/dist/ui/assets/{LambdaDetailPage-BPhEkF44.js → LambdaDetailPage-D8HVidB_.js} +1 -1
- package/dist/ui/assets/{LambdasPage-Dz4wxjVd.js → LambdasPage-B19rwgUM.js} +1 -1
- package/dist/ui/assets/{OpenSearchCollectionPage-B3s964oC.js → OpenSearchCollectionPage-Bmc8gI8s.js} +1 -1
- package/dist/ui/assets/{OpenSearchPage-0fTJJovd.js → OpenSearchPage-CDFY7dS9.js} +1 -1
- package/dist/ui/assets/OverviewPage-CWrXkA8s.js +1 -0
- package/dist/ui/assets/{QueueDetailPage-peLph1_v.js → QueueDetailPage-CGcXlOrN.js} +1 -1
- package/dist/ui/assets/{QueuesPage-CF9yiBkq.js → QueuesPage-BMU0DBMz.js} +1 -1
- package/dist/ui/assets/SecretsPage-Dnkt3P3P.css +1 -0
- package/dist/ui/assets/SecretsPage-RgJc26ab.js +1 -0
- package/dist/ui/assets/{ServiceDetailPage-ZGLPswmY.js → ServiceDetailPage-BZnTIbac.js} +1 -1
- package/dist/ui/assets/{ServicesPage-DsoZBBxo.js → ServicesPage-BJCWxYkd.js} +1 -1
- package/dist/ui/assets/_plugin-vue_export-helper-DlAUqK2U.js +1 -0
- package/dist/ui/assets/{index-BP9zQ9L-.js → index-DGkmrq2b.js} +9 -9
- package/dist/ui/index.html +1 -1
- package/package.json +2 -1
- package/dist/ui/assets/OverviewPage-B13l71G0.js +0 -1
package/dist/server/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;AACtB,MAAM,aAAa,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC;AAClD,MAAM,IAAI,GAAG,aAAa,CAAC,gBAAgB,EAAE,CAAC;AAC9C,IAAI,iBAAiB,GAAuB,IAAI,CAAC;AACjD,IAAI,WAAW,GAA6B,IAAI,CAAC;AAEjD,aAAa;AACb,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AAChB,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAExB,aAAa;AACb,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;AACzC,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;AAC3C,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;AACrC,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;AACvC,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;AACnC,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;AACrC,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;AAC7C,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;AACvC,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;AACrC,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;AACvC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AAEjC,eAAe;AACf,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;IACnC,MAAM,MAAM,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC;IAC3C,GAAG,CAAC,IAAI,CAAC;QACP,MAAM,EAAE,IAAI;QACZ,kEAAkE;QAClE,mCAAmC;QACnC,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE;QAC9B,MAAM,EAAE,MAAM,CAAC,YAAY,EAAE;QAC7B,WAAW,EAAE;YACX,OAAO,EAAE,aAAa,CAAC,mBAAmB,EAAE;YAC5C,OAAO,EAAE,OAAO,CAAC,iBAAiB,EAAE,SAAS,CAAC;YAC9C,IAAI,EAAE,aAAa,CAAC,kBAAkB,EAAE;SACzC;QACD,WAAW,EAAE;YACX,OAAO,EAAE,aAAa,CAAC,oBAAoB,EAAE,CAAC,OAAO;YACrD,OAAO,EAAE,WAAW,KAAK,IAAI;YAC7B,IAAI,EAAE,aAAa,CAAC,oBAAoB,EAAE,CAAC,IAAI;SAChD;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,0CAA0C;AAC1C,uDAAuD;AACvD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAClD,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;AACrC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;IACzB,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;AACrD,CAAC,CAAC,CAAC;AAEH,8BAA8B;AAC9B,KAAK,UAAU,KAAK;IAClB,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAElD,6EAA6E;QAC7E,MAAM,MAAM,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QAErB,uEAAuE;QACvE,sEAAsE;QACtE,yEAAyE;QACzE,wEAAwE;QACxE,oBAAoB;QACpB,MAAM,UAAU,GAAG,aAAa,CAAC,oBAAoB,EAAE,CAAC;QACxD,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,IAAI,CAAC;gBACH,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;gBACtE,WAAW,GAAG,MAAM,gBAAgB,CAAC;oBACnC,IAAI,EAAE,UAAU,CAAC,IAAI;oBACrB,OAAO,EAAE,UAAU,CAAC,OAAO;oBAC3B,MAAM,EAAE,aAAa,CAAC,SAAS,EAAE;iBAClC,CAAC,CAAC;gBACH,OAAO,CAAC,GAAG,CACT,8CAA8C,WAAW,CAAC,QAAQ,KAAK;oBACrE,4DAA4D,CAC/D,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CACV,mFAAmF,EACnF,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAC/C,CAAC;YACJ,CAAC;QACH,CAAC;QAED,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;YACpB,OAAO,CAAC,GAAG,CAAC,wCAAwC,IAAI,EAAE,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,OAAO,EAAE,gBAAgB,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACnF,CAAC,CAAC,CAAC;QAEH,cAAc,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,CAAC;QAE5C,wEAAwE;QACxE,oCAAoC;QACpC,aAAa,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC;YACtC,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC;YAChF,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;SACtE,CAAC,CAAC;QAEH,0EAA0E;QAC1E,kDAAkD;QAClD,MAAM,gBAAgB,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,CAAC;QAEpD,0BAA0B;QAC1B,IAAI,aAAa,CAAC,mBAAmB,EAAE,EAAE,CAAC;YACxC,MAAM,SAAS,GAAG,aAAa,CAAC,kBAAkB,EAAE,CAAC;YACrD,iBAAiB,GAAG,gBAAgB,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,SAAS,CAAC,CAAC;QACxE,CAAC;QAED,8BAA8B;QAC9B,aAAa,CAAC,YAAY,EAAE,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,oBAAoB;AACpB,KAAK,UAAU,QAAQ;IACrB,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAChD,cAAc,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,aAAa,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,CAAC;IACzC,MAAM,cAAc,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,CAAC;IAC7C,MAAM,oBAAoB,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,CAAC;IACnD,cAAc,CAAC,OAAO,EAAE,CAAC;IACzB,MAAM,cAAc,CAAC,OAAO,EAAE,CAAC;IAC/B,MAAM,WAAW,EAAE,KAAK,EAAE,CAAC;IAC3B,WAAW,GAAG,IAAI,CAAC;IACnB,MAAM,aAAa,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;IACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC/B,wEAAwE;AACxE,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAEhC,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../../src/server/routes/secrets.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,MAAM,4CAAW,CAAC;AA+DxB,OAAO,EAAE,MAAM,IAAI,aAAa,EAAE,CAAC"}
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../../src/server/routes/secrets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export interface SecretSummary {
|
|
2
|
+
name: string;
|
|
3
|
+
arn?: string;
|
|
4
|
+
description?: string;
|
|
5
|
+
lastChangedDate?: string;
|
|
6
|
+
lastAccessedDate?: string;
|
|
7
|
+
createdDate?: string;
|
|
8
|
+
deletedDate?: string;
|
|
9
|
+
tags: Array<{
|
|
10
|
+
key: string;
|
|
11
|
+
value: string;
|
|
12
|
+
}>;
|
|
13
|
+
versionCount: number;
|
|
14
|
+
}
|
|
15
|
+
export interface SecretDetail extends SecretSummary {
|
|
16
|
+
versionStages: Record<string, string[]>;
|
|
17
|
+
kmsKeyId?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface SecretValue {
|
|
20
|
+
name: string;
|
|
21
|
+
versionId?: string;
|
|
22
|
+
versionStages: string[];
|
|
23
|
+
secretString?: string;
|
|
24
|
+
secretBinary?: string;
|
|
25
|
+
createdDate?: string;
|
|
26
|
+
}
|
|
27
|
+
export declare class SecretsExplorer {
|
|
28
|
+
private static instance;
|
|
29
|
+
private clients;
|
|
30
|
+
private defaultRegion;
|
|
31
|
+
private constructor();
|
|
32
|
+
static getInstance(): SecretsExplorer;
|
|
33
|
+
setDefaultRegion(region: string): void;
|
|
34
|
+
private clientFor;
|
|
35
|
+
listSecrets(region?: string): Promise<SecretSummary[]>;
|
|
36
|
+
describeSecret(secretId: string, region?: string): Promise<SecretDetail | null>;
|
|
37
|
+
getSecretValue(secretId: string, region?: string): Promise<SecretValue | null>;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=secrets-explorer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secrets-explorer.d.ts","sourceRoot":"","sources":["../../../src/server/services/secrets-explorer.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5C,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAa,SAAQ,aAAa;IAEjD,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,EAAE,CAAC;IAExB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAkB;IACzC,OAAO,CAAC,OAAO,CAA2C;IAC1D,OAAO,CAAC,aAAa,CAAe;IAEpC,OAAO;IAEP,MAAM,CAAC,WAAW,IAAI,eAAe;IAKrC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAItC,OAAO,CAAC,SAAS;IAWX,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAYtD,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAwB/E,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;CAgBrF"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
// Read-only Secrets Manager explorer for the dashboard: lists secrets, reads
|
|
2
|
+
// one secret's metadata (version stages, tags) and — on explicit request —
|
|
3
|
+
// reveals the current value. Talks the AWS wire against the active engine
|
|
4
|
+
// endpoint, so it works identically on the self engine and LocalStack. Mirrors
|
|
5
|
+
// the DynamoExplorer/S3Explorer pattern (per-region memoized client, region
|
|
6
|
+
// from the request, AWS errors mapped to plain messages).
|
|
7
|
+
import { SecretsManagerClient, ListSecretsCommand, DescribeSecretCommand, GetSecretValueCommand, } from '@aws-sdk/client-secrets-manager';
|
|
8
|
+
import { LocalStackManager } from './localstack-manager.js';
|
|
9
|
+
export class SecretsExplorer {
|
|
10
|
+
static instance;
|
|
11
|
+
clients = new Map();
|
|
12
|
+
defaultRegion = 'us-east-1';
|
|
13
|
+
constructor() { }
|
|
14
|
+
static getInstance() {
|
|
15
|
+
if (!SecretsExplorer.instance)
|
|
16
|
+
SecretsExplorer.instance = new SecretsExplorer();
|
|
17
|
+
return SecretsExplorer.instance;
|
|
18
|
+
}
|
|
19
|
+
setDefaultRegion(region) {
|
|
20
|
+
if (region)
|
|
21
|
+
this.defaultRegion = region;
|
|
22
|
+
}
|
|
23
|
+
clientFor(region) {
|
|
24
|
+
const r = region || this.defaultRegion;
|
|
25
|
+
let client = this.clients.get(r);
|
|
26
|
+
if (!client) {
|
|
27
|
+
const baseConfig = LocalStackManager.getInstance().getConfig();
|
|
28
|
+
client = new SecretsManagerClient({ ...baseConfig, region: r });
|
|
29
|
+
this.clients.set(r, client);
|
|
30
|
+
}
|
|
31
|
+
return client;
|
|
32
|
+
}
|
|
33
|
+
async listSecrets(region) {
|
|
34
|
+
const client = this.clientFor(region);
|
|
35
|
+
const summaries = [];
|
|
36
|
+
let nextToken;
|
|
37
|
+
do {
|
|
38
|
+
const page = await client.send(new ListSecretsCommand({ NextToken: nextToken, MaxResults: 100 }));
|
|
39
|
+
for (const entry of page.SecretList ?? [])
|
|
40
|
+
summaries.push(toSummary(entry));
|
|
41
|
+
nextToken = page.NextToken;
|
|
42
|
+
} while (nextToken);
|
|
43
|
+
return summaries.sort((a, b) => a.name.localeCompare(b.name));
|
|
44
|
+
}
|
|
45
|
+
async describeSecret(secretId, region) {
|
|
46
|
+
try {
|
|
47
|
+
const res = await this.clientFor(region).send(new DescribeSecretCommand({ SecretId: secretId }));
|
|
48
|
+
return {
|
|
49
|
+
name: res.Name ?? secretId,
|
|
50
|
+
arn: res.ARN,
|
|
51
|
+
description: res.Description,
|
|
52
|
+
lastChangedDate: res.LastChangedDate?.toISOString(),
|
|
53
|
+
lastAccessedDate: res.LastAccessedDate?.toISOString(),
|
|
54
|
+
createdDate: res.CreatedDate?.toISOString(),
|
|
55
|
+
deletedDate: res.DeletedDate?.toISOString(),
|
|
56
|
+
tags: (res.Tags ?? []).map(tag => ({ key: tag.Key ?? '', value: tag.Value ?? '' })),
|
|
57
|
+
versionCount: Object.keys(res.VersionIdsToStages ?? {}).length,
|
|
58
|
+
versionStages: res.VersionIdsToStages ?? {},
|
|
59
|
+
kmsKeyId: res.KmsKeyId,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
if (isNotFound(error))
|
|
64
|
+
return null;
|
|
65
|
+
throw error;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// Reveals the current secret value — an explicit, separate call so a plain
|
|
69
|
+
// list never ships secret material to the browser.
|
|
70
|
+
async getSecretValue(secretId, region) {
|
|
71
|
+
try {
|
|
72
|
+
const res = await this.clientFor(region).send(new GetSecretValueCommand({ SecretId: secretId }));
|
|
73
|
+
return {
|
|
74
|
+
name: res.Name ?? secretId,
|
|
75
|
+
versionId: res.VersionId,
|
|
76
|
+
versionStages: res.VersionStages ?? [],
|
|
77
|
+
secretString: res.SecretString,
|
|
78
|
+
secretBinary: res.SecretBinary ? Buffer.from(res.SecretBinary).toString('base64') : undefined,
|
|
79
|
+
createdDate: res.CreatedDate?.toISOString(),
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
if (isNotFound(error))
|
|
84
|
+
return null;
|
|
85
|
+
throw error;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
function toSummary(entry) {
|
|
90
|
+
return {
|
|
91
|
+
name: entry.Name ?? '',
|
|
92
|
+
arn: entry.ARN,
|
|
93
|
+
description: entry.Description,
|
|
94
|
+
lastChangedDate: entry.LastChangedDate?.toISOString(),
|
|
95
|
+
lastAccessedDate: entry.LastAccessedDate?.toISOString(),
|
|
96
|
+
createdDate: entry.CreatedDate?.toISOString(),
|
|
97
|
+
deletedDate: entry.DeletedDate?.toISOString(),
|
|
98
|
+
tags: (entry.Tags ?? []).map(tag => ({ key: tag.Key ?? '', value: tag.Value ?? '' })),
|
|
99
|
+
versionCount: Object.keys(entry.SecretVersionsToStages ?? {}).length,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
function isNotFound(error) {
|
|
103
|
+
return error instanceof Error && error.name === 'ResourceNotFoundException';
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=secrets-explorer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secrets-explorer.js","sourceRoot":"","sources":["../../../src/server/services/secrets-explorer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{k as V,l as E,o as G,m as i,e as c,U as a,t as _,Z as e,j as s,w as X,x as N,G as Y,i as u,T as r,f,g as p,s as Z,z as x,F as T,n as H,q as J,A as S,y as I,u as h,R as P,d as y,p as z,v as K,r as b,b as O,a as R,c as Q}from"./index-
|
|
1
|
+
import{k as V,l as E,o as G,m as i,e as c,U as a,t as _,Z as e,j as s,w as X,x as N,G as Y,i as u,T as r,f,g as p,s as Z,z as x,F as T,n as H,q as J,A as S,y as I,u as h,R as P,d as y,p as z,v as K,r as b,b as O,a as R,c as Q}from"./index-DGkmrq2b.js";const W={key:1,style:{display:"flex","justify-content":"center",padding:"2rem"}},ee={style:{"text-decoration":"underline","text-decoration-style":"dotted","text-underline-offset":"3px"}},te={class:"mono"},ae={key:1,class:"muted"},ne={class:"mono",style:{"font-size":"0.8rem"}},oe={class:"mono",style:{"font-size":"0.8rem"}},le={class:"mono",style:{"font-size":"0.75rem"}},se={key:0,class:"mono",style:{"font-size":"0.75rem"}},re={key:1,class:"muted"},ie=V({__name:"ApisView",setup(F){const k=Q(),d=b([]),v=b(!0),g=b(null),m=b({});let $=null;const j=[{key:"method",label:"Method"},{key:"path",label:"Path"},{key:"functionName",label:"→ Function"},{key:"eventType",label:"Type"},{key:"authorizerName",label:"Auth"},{key:"actions",label:"",align:"right"}],B=[{key:"name",label:"Name"},{key:"type",label:"Type"},{key:"payloadVersion",label:"Payload"},{key:"resultTtlInSeconds",label:"TTL",align:"right"},{key:"identitySource",label:"Identity source"},{key:"target",label:"Function / ARN"}],w=O(()=>({services:d.value.length,routes:d.value.reduce((l,n)=>l+n.routes.length,0),online:d.value.filter(l=>l.status==="online").length}));function L(l){return l.routes.map(n=>({...n}))}function U(l){return l.authorizers.map(n=>({...n,identitySource:n.identitySource.join(", "),target:n.functionName||n.arn||""}))}async function A(){try{d.value=await R.listApis(),g.value=null}catch(l){g.value=l.message||"Failed to load APIs"}finally{v.value=!1}}async function D(l){if(!m.value[l]){m.value={...m.value,[l]:!0};try{const n=await R.clearAuthorizerCache({service:l});k.add({title:"Authorizer cache cleared",description:`${n.removed} cached result${n.removed===1?"":"s"} removed`,variant:"success"})}catch(n){k.add({title:"Failed to clear authorizer cache",description:n.message,variant:"danger"})}finally{m.value={...m.value,[l]:!1}}}}function M(l,n){var t;const o=`curl -X ${n.method} http://localhost:${l.apiPort}${n.path}`;(t=navigator.clipboard)==null||t.writeText(o).then(()=>{k.add({title:"curl command copied",description:o,variant:"success"})})}function C(l){switch(l){case"online":return"success";case"port-conflict":return"warning";default:return"neutral"}}function q(l){return l==="ANY"?"info":"neutral"}return E(()=>{A(),$=window.setInterval(A,1e4)}),G(()=>{$&&window.clearInterval($)}),(l,n)=>(i(),c(a(_),{direction:"vertical",gap:"1.25rem"},{default:e(()=>[s(a(X),{columns:3,gap:"1rem"},{default:e(()=>[s(a(N),{label:"Services with APIs",value:w.value.services,tone:"info",loading:v.value},null,8,["value","loading"]),s(a(N),{label:"Routes",value:w.value.routes,tone:"info",loading:v.value},null,8,["value","loading"]),s(a(N),{label:"Listeners online",value:w.value.online,tone:"success",loading:v.value},null,8,["value","loading"])]),_:1}),g.value?(i(),c(a(Y),{key:0,variant:"danger",dismissible:"",onDismiss:n[0]||(n[0]=o=>g.value=null)},{default:e(()=>[u(r(g.value),1)]),_:1})):f("",!0),v.value&&!d.value.length?(i(),p("div",W,[s(a(Z),{label:"Loading APIs..."})])):d.value.length?f("",!0):(i(),c(a(x),{key:2,title:"No APIs registered",description:"Register a microservice that defines http or httpApi events to see its routes here."})),(i(!0),p(T,null,H(d.value,o=>(i(),c(a(J),{key:o.service,variant:"outline"},{header:e(()=>[s(a(_),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between",wrap:""},{default:e(()=>[s(a(_),{direction:"horizontal",gap:"0.5rem",align:"center",wrap:""},{default:e(()=>[s(a(P),{to:`/services/${encodeURIComponent(o.service)}`,style:{color:"inherit","text-decoration":"none"}},{default:e(()=>[y("strong",ee,r(o.service),1)]),_:2},1032,["to"]),o.apiPort?(i(),c(a(z),{key:0,tone:"info",variant:"soft"},{default:e(()=>[u(":"+r(o.apiPort),1)]),_:2},1024)):f("",!0),s(a(z),{tone:C(o.status),variant:"soft"},{default:e(()=>[u(r(o.status),1)]),_:2},1032,["tone"]),o.invokePort?(i(),c(a(z),{key:1,tone:C(o.invokeStatus),variant:"soft"},{default:e(()=>[u(" invoke :"+r(o.invokePort),1)]),_:2},1032,["tone"])):f("",!0),o.stage?(i(),c(a(h),{key:2,size:"sm",variant:"soft"},{default:e(()=>[u("stage: "+r(o.stage),1)]),_:2},1024)):f("",!0)]),_:2},1024),s(a(I),{size:"sm",variant:"ghost",loading:m.value[o.service],onClick:t=>D(o.service)},{default:e(()=>[...n[1]||(n[1]=[u(" Clear authorizer cache ",-1)])]),_:1},8,["loading","onClick"])]),_:2},1024)]),default:e(()=>[s(a(_),{direction:"vertical",gap:"0.75rem"},{default:e(()=>[o.routes.length?(i(),c(a(S),{key:0,columns:j,rows:L(o)},{"cell-method":e(({row:t})=>[s(a(z),{tone:q(String(t.method)),variant:"soft"},{default:e(()=>[u(r(t.method),1)]),_:2},1032,["tone"])]),"cell-path":e(({row:t})=>[y("span",te,r(t.path),1)]),"cell-functionName":e(({row:t})=>[s(a(P),{to:`/lambdas/${encodeURIComponent(String(t.functionName))}`,style:{"text-decoration":"none"}},{default:e(()=>[s(a(h),{size:"sm",variant:"soft",clickable:""},{default:e(()=>[u(r(t.functionName),1)]),_:2},1024)]),_:2},1032,["to"])]),"cell-eventType":e(({row:t})=>[s(a(h),{size:"sm",variant:"soft"},{default:e(()=>[u(r(t.payloadVersion==="2.0"?"v2":"v1"),1)]),_:2},1024)]),"cell-authorizerName":e(({row:t})=>[t.authorizerName?(i(),c(a(h),{key:0,size:"sm",variant:"soft"},{default:e(()=>[u(r(t.authorizerName),1)]),_:2},1024)):(i(),p("span",ae,"—"))]),"cell-actions":e(({row:t})=>[s(a(_),{direction:"horizontal",gap:"0.375rem",justify:"flex-end"},{default:e(()=>[s(a(I),{size:"sm",variant:"ghost",onClick:ue=>M(o,t)},{default:e(()=>[...n[2]||(n[2]=[u(" Copy curl ",-1)])]),_:1},8,["onClick"])]),_:2},1024)]),_:2},1032,["rows"])):(i(),c(a(x),{key:1,title:"No routes",description:"This service exposes no http or httpApi routes."})),o.authorizers.length?(i(),p(T,{key:2},[s(a(K)),n[3]||(n[3]=y("strong",{style:{"font-size":"0.85rem"}},"Authorizers",-1)),s(a(S),{columns:B,rows:U(o)},{"cell-name":e(({row:t})=>[y("span",ne,r(t.name),1)]),"cell-type":e(({row:t})=>[s(a(h),{size:"sm",variant:"soft"},{default:e(()=>[u(r(t.type),1)]),_:2},1024)]),"cell-payloadVersion":e(({row:t})=>[s(a(h),{size:"sm",variant:"soft"},{default:e(()=>[u(r(t.payloadVersion==="2.0"?"v2":"v1"),1)]),_:2},1024)]),"cell-resultTtlInSeconds":e(({row:t})=>[y("span",oe,r(t.resultTtlInSeconds)+"s",1)]),"cell-identitySource":e(({row:t})=>[y("span",le,r(t.identitySource||"—"),1)]),"cell-target":e(({row:t})=>[t.target?(i(),p("span",se,r(t.target),1)):(i(),p("span",re,"—"))]),_:1},8,["rows"])],64)):f("",!0)]),_:2},1024)]),_:2},1024))),128))]),_:1}))}}),de=V({__name:"ApisPage",setup(F){return(k,d)=>(i(),c(ie))}});export{de as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{k as E,l as X,Y,e as k,U as t,t as c,Z as n,a as b,m as d,j as o,y as g,i as r,d as m,T as p,p as Z,f as M,G as I,g as U,s as F,x as $,w as J,E as S,_ as Q,X as ee,q as _,z as te,A as ae,$ as le,F as ne,c as oe,r as u,b as ie,W as re}from"./index-
|
|
1
|
+
import{k as E,l as X,Y,e as k,U as t,t as c,Z as n,a as b,m as d,j as o,y as g,i as r,d as m,T as p,p as Z,f as M,G as I,g as U,s as F,x as $,w as J,E as S,_ as Q,X as ee,q as _,z as te,A as ae,$ as le,F as ne,c as oe,r as u,b as ie,W as re}from"./index-DGkmrq2b.js";const ue={style:{"font-size":"1.1rem"}},se={key:1,style:{display:"flex","justify-content":"center",padding:"2rem"}},de={key:0,style:{display:"flex","justify-content":"center",padding:"2rem"}},ce=["href"],fe=["href"],ve=E({__name:"BucketDetail",props:{bucketName:{}},emits:["back"],setup(z,{emit:N}){const s=z,K=N,f=oe(),i=u(null),y=u([]),V=u(""),T=u(!0),B=u(!1),j=u(null),w=u(""),x=u(""),h=u("text/plain"),C=u(!1),L=[{key:"key",label:"Key"},{key:"size",label:"Size",align:"right"},{key:"lastModified",label:"Modified"},{key:"actions",label:"",align:"right"}],q=ie(()=>y.value.reduce((l,e)=>l+(e.size||0),0));function O(l){if(l==null)return"—";if(l===0)return"0 B";const e=["B","KB","MB","GB","TB"],a=Math.floor(Math.log(l)/Math.log(1024));return`${(l/Math.pow(1024,a)).toFixed(a===0?0:1)} ${e[a]}`}function A(l){return l?new Date(l).toLocaleString():"—"}async function D(){try{i.value=await b.getBucket(s.bucketName),j.value=null}catch(l){j.value=l.message||"Failed to load bucket",i.value=null}finally{T.value=!1}}async function v(){B.value=!0;try{const l=await b.listBucketObjects(s.bucketName,{prefix:V.value||void 0,maxKeys:200});y.value=l.objects}catch(l){f.add({title:"Failed to load objects",description:l.message,variant:"danger"})}finally{B.value=!1}}function G(l){return b.bucketObjectContentUrl(s.bucketName,l,!1)}function R(l){return b.bucketObjectContentUrl(s.bucketName,l,!0)}async function H(l){if(confirm(`Delete object "${l}"?`))try{await b.deleteBucketObject(s.bucketName,l),f.add({title:"Object deleted",variant:"info"}),await v()}catch(e){f.add({title:"Failed to delete object",description:e.message,variant:"danger"})}}async function P(){if(!w.value||!x.value){f.add({title:"Key and body are required",variant:"warning"});return}C.value=!0;try{await b.putBucketObject(s.bucketName,{key:w.value,body:x.value,contentType:h.value||void 0}),f.add({title:"Object uploaded",variant:"info"}),w.value="",x.value="",await v(),await D()}catch(l){f.add({title:"Failed to upload object",description:l.message,variant:"danger"})}finally{C.value=!1}}return X(()=>{D(),v()}),Y(()=>s.bucketName,()=>{D(),v()}),(l,e)=>(d(),k(t(c),{direction:"vertical",gap:"1rem"},{default:n(()=>[o(t(c),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:n(()=>[o(t(c),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:n(()=>{var a;return[o(t(g),{size:"sm",variant:"ghost",onClick:e[0]||(e[0]=W=>K("back"))},{default:n(()=>[...e[9]||(e[9]=[r("← Buckets",-1)])]),_:1}),m("strong",ue,p(z.bucketName),1),(a=i.value)!=null&&a.versioning?(d(),k(t(Z),{key:0,tone:"info",variant:"soft"},{default:n(()=>[...e[10]||(e[10]=[r("Versioning",-1)])]),_:1})):M("",!0)]}),_:1}),o(t(g),{size:"sm",variant:"ghost",loading:B.value,onClick:e[1]||(e[1]=a=>v())},{default:n(()=>[...e[11]||(e[11]=[r("Refresh",-1)])]),_:1},8,["loading"])]),_:1}),j.value?(d(),k(t(I),{key:0,variant:"danger",dismissible:"",onDismiss:e[2]||(e[2]=a=>j.value=null)},{default:n(()=>[r(p(j.value),1)]),_:1})):M("",!0),T.value&&!i.value?(d(),U("div",se,[o(t(F),{label:"Loading bucket..."})])):i.value?(d(),U(ne,{key:2},[o(t(J),{columns:4,gap:"0.75rem"},{default:n(()=>[o(t($),{label:"Objects",value:i.value.objectCount??0,tone:"info"},null,8,["value"]),o(t($),{label:"Size",value:O(i.value.totalSize),tone:"neutral"},null,8,["value"]),o(t($),{label:"Versioning",value:i.value.versioning?"Enabled":"Disabled",tone:i.value.versioning?"success":"neutral"},null,8,["value","tone"]),o(t($),{label:"Notifications",value:i.value.notifications??0,tone:(i.value.notifications??0)>0?"info":"neutral"},null,8,["value","tone"])]),_:1}),o(t(_),{variant:"outline"},{header:n(()=>[...e[12]||(e[12]=[m("strong",null,"Upload object",-1)])]),default:n(()=>[o(t(c),{direction:"vertical",gap:"0.5rem"},{default:n(()=>[o(t(S),{modelValue:w.value,"onUpdate:modelValue":e[3]||(e[3]=a=>w.value=a),placeholder:"object/key.txt",label:"Key"},null,8,["modelValue"]),o(t(S),{modelValue:h.value,"onUpdate:modelValue":e[4]||(e[4]=a=>h.value=a),placeholder:"text/plain",label:"Content-Type"},null,8,["modelValue"]),e[14]||(e[14]=m("label",{class:"muted",style:{"font-size":"0.875rem"}},"Body",-1)),Q(m("textarea",{"onUpdate:modelValue":e[5]||(e[5]=a=>x.value=a),rows:"4",style:{width:"100%","font-family":"var(--tree-font-mono, monospace)",padding:"0.5rem"},placeholder:"Hello, world!"},null,512),[[ee,x.value]]),o(t(c),{direction:"horizontal",justify:"flex-end"},{default:n(()=>[o(t(g),{size:"sm",loading:C.value,onClick:P},{default:n(()=>[...e[13]||(e[13]=[r("Upload",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),o(t(_),{variant:"outline"},{header:n(()=>[o(t(c),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:n(()=>[m("strong",null,"Objects ("+p(y.value.length)+" · "+p(O(q.value))+")",1),o(t(c),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:n(()=>[o(t(S),{modelValue:V.value,"onUpdate:modelValue":e[6]||(e[6]=a=>V.value=a),placeholder:"prefix filter",size:"sm",onKeyup:e[7]||(e[7]=le(a=>v(),["enter"]))},null,8,["modelValue"]),o(t(g),{size:"sm",variant:"ghost",onClick:e[8]||(e[8]=a=>v())},{default:n(()=>[...e[15]||(e[15]=[r("Apply",-1)])]),_:1})]),_:1})]),_:1})]),default:n(()=>[B.value?(d(),U("div",de,[o(t(F),{label:"Loading objects..."})])):y.value.length?(d(),k(t(ae),{key:2,columns:L,rows:y.value},{"cell-key":n(({row:a})=>[m("a",{href:G(String(a.key)),target:"_blank",rel:"noopener noreferrer",style:{"text-decoration":"none","font-weight":"500"}},p(a.key),9,ce)]),"cell-size":n(({row:a})=>[r(p(O(Number(a.size))),1)]),"cell-lastModified":n(({row:a})=>[r(p(A(a.lastModified)),1)]),"cell-actions":n(({row:a})=>[o(t(c),{direction:"horizontal",gap:"0.25rem",justify:"flex-end"},{default:n(()=>[m("a",{href:R(String(a.key)),target:"_blank",rel:"noopener noreferrer",style:{"text-decoration":"none"}},[o(t(g),{size:"sm",variant:"ghost"},{default:n(()=>[...e[16]||(e[16]=[r("Download",-1)])]),_:1})],8,fe),o(t(g),{size:"sm",variant:"ghost",tone:"danger",onClick:W=>H(String(a.key))},{default:n(()=>[...e[17]||(e[17]=[r(" Delete ",-1)])]),_:1},8,["onClick"])]),_:2},1024)]),_:1},8,["rows"])):(d(),k(t(te),{key:1,title:"No objects",description:"This bucket is empty (or the prefix filter excluded everything)."}))]),_:1})],64)):M("",!0)]),_:1}))}}),pe=E({__name:"BucketDetailPage",props:{bucketName:{}},setup(z){const N=re();function s(){N.push("/buckets")}return(K,f)=>(d(),k(ve,{"bucket-name":z.bucketName,onBack:s},null,8,["bucket-name"]))}});export{pe as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{k as x,W as V,l as T,o as D,m as o,e as u,U as n,t as z,Z as a,j as l,w as I,x as p,G as O,i as c,T as r,f as U,q as L,g as C,s as q,z as E,A as F,y as G,p as b,R as P,u as A,d as _,a0 as K,r as m,b as S,a as j}from"./index-
|
|
1
|
+
import{k as x,W as V,l as T,o as D,m as o,e as u,U as n,t as z,Z as a,j as l,w as I,x as p,G as O,i as c,T as r,f as U,q as L,g as C,s as q,z as E,A as F,y as G,p as b,R as P,u as A,d as _,a0 as K,r as m,b as S,a as j}from"./index-DGkmrq2b.js";const W={key:0,style:{display:"flex","justify-content":"center",padding:"2rem"}},Z=["onClick"],H={key:1,class:"muted",style:{"font-size":"0.75rem"}},J=x({__name:"BucketsView",setup(R){const y=V(),i=m([]),h=m({}),d=m(!0),v=m(null);let g=null;const M=[{key:"name",label:"Bucket"},{key:"service",label:"Service"},{key:"objectCount",label:"Objects",align:"right"},{key:"totalSize",label:"Size",align:"right"},{key:"versioning",label:"Versioning"},{key:"notifications",label:"Notifications",align:"right"},{key:"actions",label:"",align:"right"}],N=S(()=>i.value.map(t=>({...t,service:h.value[t.name]||""}))),k=S(()=>({buckets:i.value.length,objects:i.value.reduce((t,s)=>t+(s.objectCount||0),0),size:i.value.reduce((t,s)=>t+(s.totalSize||0),0)}));function B(t){if(t==null)return"—";if(t===0)return"0 B";const s=["B","KB","MB","GB","TB"],e=Math.floor(Math.log(t)/Math.log(1024));return`${(t/Math.pow(1024,e)).toFixed(e===0?0:1)} ${s[e]}`}async function $(){try{const[t,s]=await Promise.all([j.listBuckets(),j.listResourceOwners().catch(()=>({tables:[],queues:[],topics:[],buckets:[]}))]);i.value=t;const e={};for(const f of s.buckets||[])e[f.name]=f.service;h.value=e,v.value=null}catch(t){v.value=t.message||"Failed to load buckets"}finally{d.value=!1}}function w(t){y.push(`/buckets/${encodeURIComponent(t)}`)}return T(()=>{$(),g=window.setInterval($,1e4)}),D(()=>{g&&window.clearInterval(g)}),(t,s)=>(o(),u(n(z),{direction:"vertical",gap:"1.25rem"},{default:a(()=>[l(n(I),{columns:3,gap:"1rem"},{default:a(()=>[l(n(p),{label:"Buckets",value:k.value.buckets,tone:"info",loading:d.value},null,8,["value","loading"]),l(n(p),{label:"Objects",value:k.value.objects,tone:"success",loading:d.value},null,8,["value","loading"]),l(n(p),{label:"Total size",value:B(k.value.size),tone:"neutral",loading:d.value},null,8,["value","loading"])]),_:1}),v.value?(o(),u(n(O),{key:0,variant:"danger",dismissible:"",onDismiss:s[0]||(s[0]=e=>v.value=null)},{default:a(()=>[c(r(v.value),1)]),_:1})):U("",!0),l(n(L),{variant:"outline"},{header:a(()=>[l(n(z),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:a(()=>[...s[1]||(s[1]=[_("strong",null,"S3 Buckets",-1),_("span",{class:"muted"},"Refreshes every 10s",-1)])]),_:1})]),default:a(()=>[d.value?(o(),C("div",W,[l(n(q),{label:"Loading buckets..."})])):i.value.length?(o(),u(n(F),{key:2,columns:M,rows:N.value},{"cell-name":a(({row:e})=>[_("a",{href:"#",style:{"text-decoration":"none","font-weight":"600"},onClick:K(f=>w(String(e.name)),["prevent"])},r(e.name),9,Z)]),"cell-service":a(({row:e})=>[e.service?(o(),u(n(P),{key:0,to:`/services/${encodeURIComponent(String(e.service))}`,style:{"text-decoration":"none"}},{default:a(()=>[l(n(A),{size:"sm",variant:"soft",clickable:""},{default:a(()=>[c(r(e.service),1)]),_:2},1024)]),_:2},1032,["to"])):(o(),C("span",H,"unmanaged"))]),"cell-objectCount":a(({row:e})=>[l(n(b),{tone:"info",variant:"soft"},{default:a(()=>[c(r(e.objectCount??0),1)]),_:2},1024)]),"cell-totalSize":a(({row:e})=>[c(r(B(e.totalSize)),1)]),"cell-versioning":a(({row:e})=>[l(n(b),{tone:e.versioning?"success":"neutral",variant:"soft"},{default:a(()=>[c(r(e.versioning?"Enabled":"Disabled"),1)]),_:2},1032,["tone"])]),"cell-notifications":a(({row:e})=>[l(n(b),{tone:Number(e.notifications)>0?"info":"neutral",variant:"soft"},{default:a(()=>[c(r(e.notifications??0),1)]),_:2},1032,["tone"])]),"cell-actions":a(({row:e})=>[l(n(G),{size:"sm",variant:"ghost",onClick:f=>w(String(e.name))},{default:a(()=>[...s[2]||(s[2]=[c(" Open ",-1)])]),_:1},8,["onClick"])]),_:1},8,["rows"])):(o(),u(n(E),{key:1,title:"No buckets found",description:"Register a microservice that defines S3 resources or create buckets directly in LocalStack."}))]),_:1})]),_:1}))}}),X=x({__name:"BucketsPage",setup(R){return(y,i)=>(o(),u(J))}});export{X as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{k as K,l as j,o as q,m as n,e as i,U as s,t as C,Z as a,j as o,w as F,x as $,G as W,i as r,T as u,f,q as H,g as y,s as Z,z as A,A as J,y as Q,u as p,p as R,R as X,d as S,E as Y,r as g,b as T,a as L,W as ee}from"./index-
|
|
1
|
+
import{k as K,l as j,o as q,m as n,e as i,U as s,t as C,Z as a,j as o,w as F,x as $,G as W,i as r,T as u,f,q as H,g as y,s as Z,z as A,A as J,y as Q,u as p,p as R,R as X,d as S,E as Y,r as g,b as T,a as L,W as ee}from"./index-DGkmrq2b.js";const te={key:0,style:{display:"flex","justify-content":"center",padding:"2rem"}},se=["onClick"],ae={key:1},ne={class:"muted mono",style:{"font-size":"0.75rem"}},le={key:1,class:"muted",style:{"font-size":"0.75rem"}},ie={key:1,class:"muted",style:{"font-size":"0.75rem"}},oe={key:1,class:"muted",style:{"font-size":"0.75rem"}},re=K({__name:"DynamoTablesList",emits:["open"],setup(U,{emit:N}){const D=N,d=g([]),b=g([]),w=g({}),c=g(!0),k=g(null),x=g("");let z=null;const M=[{key:"name",label:"Table"},{key:"service",label:"Service"},{key:"status",label:"Status"},{key:"itemCount",label:"Items",align:"right"},{key:"seed",label:"Seed"},{key:"features",label:"Features"},{key:"actions",label:"",align:"right"}],I=T(()=>{const l=d.value.map(e=>{var P,V;const t=(P=e.keySchema.find(_=>_.KeyType==="HASH"))==null?void 0:P.AttributeName,m=(V=e.keySchema.find(_=>_.KeyType==="RANGE"))==null?void 0:V.AttributeName,h=m?`PK: ${t} · SK: ${m}`:`PK: ${t??"—"}`,G=b.value.find(_=>_.tableName===e.name);return{name:e.name,status:e.status,itemCount:e.itemCount||0,keyDescriptor:h,billingMode:e.billingMode,ttlOn:e.ttl.enabled,streamOn:e.streamEnabled,hasGsi:e.hasGsi,hasLsi:e.hasLsi,service:w.value[e.name]||"",seedItemCount:G?G.itemCount:null,exists:!0}});for(const e of b.value)!e.tableExists&&!l.some(t=>t.name===e.tableName)&&l.push({name:e.tableName,status:"PENDING",itemCount:0,keyDescriptor:"—",ttlOn:!1,streamOn:!1,hasGsi:!1,hasLsi:!1,service:w.value[e.tableName]||"",seedItemCount:e.itemCount,exists:!1});return l.sort((e,t)=>e.name.localeCompare(t.name))}),B=T(()=>{const l=x.value.trim().toLowerCase();return l?I.value.filter(e=>e.name.toLowerCase().includes(l)||(e.service||"").toLowerCase().includes(l)):I.value}),v=T(()=>({tables:d.value.length,items:d.value.reduce((l,e)=>l+(e.itemCount||0),0),warnings:d.value.reduce((l,e)=>{var t;return l+(((t=e.warnings)==null?void 0:t.length)||0)},0),seedsPending:b.value.filter(l=>!l.tableExists).length}));async function E(){try{const[l,e,t]=await Promise.all([L.listDynamoTables(),L.listSeeds().catch(()=>({seedsDir:"",entries:[]})),L.listResourceOwners().catch(()=>({tables:[],queues:[],topics:[],buckets:[]}))]);d.value=l.tables,b.value=e.entries;const m={};for(const h of t.tables)m[h.name]=h.service;w.value=m,k.value=null}catch(l){k.value=l.message||"Failed to load DynamoDB tables"}finally{c.value=!1}}function O(l){l.exists&&D("open",l.name)}return j(()=>{E(),z=window.setInterval(E,15e3)}),q(()=>{z&&window.clearInterval(z)}),(l,e)=>(n(),i(s(C),{direction:"vertical",gap:"1.25rem"},{default:a(()=>[o(s(F),{columns:4,gap:"1rem"},{default:a(()=>[o(s($),{label:"Tables",value:v.value.tables,tone:"info",loading:c.value},null,8,["value","loading"]),o(s($),{label:"Total items",value:v.value.items,tone:"success",loading:c.value},null,8,["value","loading"]),o(s($),{label:"Seeds pending",value:v.value.seedsPending,tone:v.value.seedsPending>0?"warning":"neutral",loading:c.value},null,8,["value","tone","loading"]),o(s($),{label:"Warnings",value:v.value.warnings,tone:v.value.warnings>0?"warning":"neutral",loading:c.value},null,8,["value","tone","loading"])]),_:1}),k.value?(n(),i(s(W),{key:0,variant:"danger",dismissible:"",onDismiss:e[0]||(e[0]=t=>k.value=null)},{default:a(()=>[r(u(k.value),1)]),_:1})):f("",!0),o(s(H),{variant:"outline"},{header:a(()=>[o(s(C),{direction:"horizontal",justify:"space-between",align:"center",gap:"1rem"},{default:a(()=>[e[3]||(e[3]=S("strong",null,"DynamoDB tables",-1)),o(s(C),{direction:"horizontal",align:"center",gap:"1rem"},{default:a(()=>[o(s(Y),{modelValue:x.value,"onUpdate:modelValue":e[1]||(e[1]=t=>x.value=t),placeholder:"Filter tables...",style:{"min-width":"16rem"}},null,8,["modelValue"]),e[2]||(e[2]=S("span",{class:"muted",style:{"font-size":"0.75rem"}}," Rows with reduced opacity exist only as a seed file ",-1))]),_:1})]),_:1})]),default:a(()=>[c.value?(n(),y("div",te,[o(s(Z),{label:"Loading tables..."})])):I.value.length?B.value.length?(n(),i(s(J),{key:3,columns:M,rows:B.value,"row-class":t=>t.exists?"":"dim-row"},{"cell-name":a(({row:t})=>[o(s(C),{direction:"vertical",gap:"0.125rem"},{default:a(()=>[t.exists?(n(),y("strong",{key:0,style:{cursor:"pointer","text-decoration":"underline","text-decoration-style":"dotted","text-underline-offset":"3px"},onClick:m=>O(t)},u(t.name),9,se)):(n(),y("strong",ae,u(t.name),1)),S("span",ne,u(t.keyDescriptor),1)]),_:2},1024)]),"cell-service":a(({row:t})=>[t.service?(n(),i(s(X),{key:0,to:`/services/${encodeURIComponent(String(t.service))}`,style:{"text-decoration":"none"}},{default:a(()=>[o(s(p),{size:"sm",variant:"soft",clickable:""},{default:a(()=>[r(u(t.service),1)]),_:2},1024)]),_:2},1032,["to"])):(n(),y("span",le,"—"))]),"cell-status":a(({row:t})=>[t.exists?(n(),i(s(R),{key:0,tone:t.status==="ACTIVE"?"success":"warning",variant:"soft"},{default:a(()=>[r(u(t.status||"UNKNOWN"),1)]),_:2},1032,["tone"])):(n(),i(s(R),{key:1,tone:"warning",variant:"outline"},{default:a(()=>[...e[4]||(e[4]=[r("Not created",-1)])]),_:1}))]),"cell-itemCount":a(({row:t})=>[r(u(t.exists?t.itemCount:"—"),1)]),"cell-seed":a(({row:t})=>[t.seedItemCount!==null?(n(),i(s(R),{key:0,tone:t.exists?"info":"warning",variant:"soft"},{default:a(()=>[r(u(t.seedItemCount)+" seeded item"+u(t.seedItemCount===1?"":"s"),1)]),_:2},1032,["tone"])):(n(),y("span",ie,"no seed"))]),"cell-features":a(({row:t})=>[o(s(C),{direction:"horizontal",gap:"0.25rem",wrap:""},{default:a(()=>[t.billingMode?(n(),i(s(p),{key:0,size:"sm",variant:"soft"},{default:a(()=>[r(u(t.billingMode),1)]),_:2},1024)):f("",!0),t.ttlOn?(n(),i(s(p),{key:1,size:"sm",variant:"solid"},{default:a(()=>[...e[5]||(e[5]=[r("TTL",-1)])]),_:1})):f("",!0),t.streamOn?(n(),i(s(p),{key:2,size:"sm",variant:"solid"},{default:a(()=>[...e[6]||(e[6]=[r("Streams",-1)])]),_:1})):f("",!0),t.hasGsi?(n(),i(s(p),{key:3,size:"sm",variant:"soft"},{default:a(()=>[...e[7]||(e[7]=[r("GSI",-1)])]),_:1})):f("",!0),t.hasLsi?(n(),i(s(p),{key:4,size:"sm",variant:"soft"},{default:a(()=>[...e[8]||(e[8]=[r("LSI",-1)])]),_:1})):f("",!0)]),_:2},1024)]),"cell-actions":a(({row:t})=>[t.exists?(n(),i(s(Q),{key:0,size:"sm",variant:"soft",onClick:m=>O(t)},{default:a(()=>[...e[9]||(e[9]=[r(" Explore ",-1)])]),_:1},8,["onClick"])):(n(),y("span",oe," Register service to provision "))]),_:1},8,["rows","row-class"])):(n(),i(s(A),{key:2,title:"No matching tables",description:`No tables match "${x.value}".`},null,8,["description"])):(n(),i(s(A),{key:1,title:"No DynamoDB tables",description:"Register a microservice with DynamoDB resources or drop a seed file into the seeds directory."}))]),_:1})]),_:1}))}}),de=K({__name:"DynamoPage",setup(U){const N=ee();function D(d){N.push(`/dynamo/${encodeURIComponent(d)}`)}return(d,b)=>(n(),i(re,{onOpen:D}))}});export{de as default};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{k as H,Y as ve,m as r,e as k,U as e,B as Ye,Z as t,j as a,t as o,G as ne,i as c,T as b,f as C,d as f,p as J,K as Ze,y as E,g as R,F as M,r as g,b as q,a as K,c as fe,q as P,O as Xe,D as B,L as ae,v as we,E as L,P as et,a0 as _e,n as G,s as Ve,z as Se,A as tt,h as lt,Q as at,C as ye,w as ge,x as oe,S as nt,u as ke,l as it,M as ut,I as de,H as st,J as me,V as rt,W as xe}from"./index-
|
|
1
|
+
import{k as H,Y as ve,m as r,e as k,U as e,B as Ye,Z as t,j as a,t as o,G as ne,i as c,T as b,f as C,d as f,p as J,K as Ze,y as E,g as R,F as M,r as g,b as q,a as K,c as fe,q as P,O as Xe,D as B,L as ae,v as we,E as L,P as et,a0 as _e,n as G,s as Ve,z as Se,A as tt,h as lt,Q as at,C as ye,w as ge,x as oe,S as nt,u as ke,l as it,M as ut,I as de,H as st,J as me,V as rt,W as xe}from"./index-DGkmrq2b.js";const ot=H({__name:"DynamoItemEditor",props:{open:{type:Boolean},tableName:{},mode:{},item:{},originalKey:{}},emits:["update:open","saved","request-edit","request-clone","request-delete"],setup(A,{emit:N}){const s=A,z=N,S=fe(),V=g(""),v=g(null),w=g(!1),_=q({get:()=>s.open,set:i=>z("update:open",i)}),h=q(()=>s.mode==="create"?`Create item · ${s.tableName}`:s.mode==="view"?`View item · ${s.tableName}`:`Edit item · ${s.tableName}`),j=q(()=>s.mode==="view");ve(()=>[s.open,s.item,s.mode],([i])=>{i&&(V.value=s.item&&Object.keys(s.item).length?JSON.stringify(s.item,null,2):`{
|
|
2
2
|
|
|
3
3
|
}`,v.value=null)},{immediate:!0});function x(){try{const i=JSON.parse(V.value);return i===null||typeof i!="object"||Array.isArray(i)?(v.value="Item must be a JSON object",null):(v.value=null,i)}catch(i){return v.value=i.message,null}}async function $(){const i=x();if(i){w.value=!0;try{s.mode==="edit"&&s.originalKey&&Object.entries(s.originalKey).some(([p,T])=>JSON.stringify(i[p])!==JSON.stringify(T))&&await K.deleteDynamoItem(s.tableName,s.originalKey),await K.putDynamoItem(s.tableName,i),S.add({title:s.mode==="create"?"Item created":"Item saved",variant:"success"}),z("saved"),_.value=!1}catch(d){S.add({title:"Save failed",description:d.message,variant:"danger"})}finally{w.value=!1}}}function y(){const i=x();i&&(V.value=JSON.stringify(i,null,2))}return(i,d)=>(r(),k(e(Ye),{open:_.value,"onUpdate:open":d[5]||(d[5]=p=>_.value=p),title:h.value,size:"lg"},{footer:t(()=>[a(e(o),{direction:"horizontal",gap:"0.5rem",justify:"space-between"},{default:t(()=>[a(e(o),{direction:"horizontal",gap:"0.5rem"},{default:t(()=>[j.value?C("",!0):(r(),k(e(E),{key:0,size:"sm",variant:"ghost",onClick:y},{default:t(()=>[...d[8]||(d[8]=[c(" Format JSON ",-1)])]),_:1})),j.value?(r(),R(M,{key:1},[a(e(E),{size:"sm",variant:"soft",onClick:d[1]||(d[1]=p=>z("request-edit"))},{default:t(()=>[...d[9]||(d[9]=[c("Edit",-1)])]),_:1}),a(e(E),{size:"sm",variant:"ghost",onClick:d[2]||(d[2]=p=>z("request-clone"))},{default:t(()=>[...d[10]||(d[10]=[c("Clone",-1)])]),_:1}),a(e(E),{size:"sm",variant:"ghost",tone:"danger",onClick:d[3]||(d[3]=p=>z("request-delete"))},{default:t(()=>[...d[11]||(d[11]=[c("Delete",-1)])]),_:1})],64)):C("",!0)]),_:1}),a(e(o),{direction:"horizontal",gap:"0.5rem"},{default:t(()=>[a(e(E),{size:"sm",variant:"ghost",onClick:d[4]||(d[4]=p=>_.value=!1)},{default:t(()=>[c(b(j.value?"Close":"Cancel"),1)]),_:1}),j.value?C("",!0):(r(),k(e(E),{key:0,size:"sm",variant:"solid",loading:w.value,disabled:!!v.value,onClick:$},{default:t(()=>[c(b(A.mode==="create"?"Create":"Save"),1)]),_:1},8,["loading","disabled"]))]),_:1})]),_:1})]),default:t(()=>[a(e(o),{direction:"vertical",gap:"0.75rem"},{default:t(()=>[v.value?(r(),k(e(ne),{key:0,variant:"danger"},{default:t(()=>[c(b(v.value),1)]),_:1})):C("",!0),a(e(o),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:t(()=>[d[7]||(d[7]=f("span",{class:"muted",style:{"font-size":"0.75rem"}}," JSON object. Types are inferred — numbers, booleans, strings, arrays, nested objects are all supported. ",-1)),j.value?(r(),k(e(J),{key:0,tone:"neutral",variant:"soft"},{default:t(()=>[...d[6]||(d[6]=[c("read-only",-1)])]),_:1})):C("",!0)]),_:1}),a(e(Ze),{modelValue:V.value,"onUpdate:modelValue":d[0]||(d[0]=p=>V.value=p),rows:18,readonly:j.value,spellcheck:"false",class:"mono",onBlur:x},null,8,["modelValue","readonly"])]),_:1})]),_:1},8,["open","title"]))}}),dt={style:{width:"100%"}},mt={class:"muted",style:{"font-size":"0.75rem"}},vt={key:0,style:{display:"flex","justify-content":"center",padding:"2rem"}},ft={key:1,class:"mono"},pt={class:"mono",style:{"font-size":"0.8rem"}},bt=H({__name:"DynamoItemsExplorer",props:{table:{}},setup(A){const N=A,s=fe(),z=g("scan"),S=g(""),V=g(50),v=g(""),w=g("="),_=g(""),h=g(""),j=g(!1),x=g([]),$=g(!1),y=g([]),i=g(void 0),d=g(void 0),p=g(null),T=g(!1),D=g(null),Y=g(!1),Z=g(!1),X=g("view"),O=g(null),ee=g(null),ie=g(!1),ue=g(null),Ae=[{value:"scan",label:"Scan"},{value:"query",label:"Query"}],Ce=[{value:"=",label:"Equal to"},{value:"<=",label:"Less than or equal to"},{value:"<",label:"Less than"},{value:">=",label:"Greater than or equal to"},{value:">",label:"Greater than"},{value:"between",label:"Between"},{value:"begins_with",label:"Begins with"}],ze=[{value:"=",label:"Equal to"},{value:"<>",label:"Not equal to"},{value:"<",label:"Less than"},{value:"<=",label:"Less than or equal to"},{value:">",label:"Greater than"},{value:">=",label:"Greater than or equal to"},{value:"begins_with",label:"Begins with"},{value:"contains",label:"Contains"},{value:"attribute_exists",label:"Exists"},{value:"attribute_not_exists",label:"Does not exist"}],Te=[{value:"String",label:"String"},{value:"Number",label:"Number"},{value:"Boolean",label:"Boolean"},{value:"Null",label:"Null"}],he=q(()=>{const u=[{value:"",label:`Table - ${N.table.name}`}];for(const l of N.table.gsis||[])l.IndexName&&u.push({value:l.IndexName,label:`Index - ${l.IndexName}`});for(const l of N.table.lsis||[])l.IndexName&&u.push({value:l.IndexName,label:`Index - ${l.IndexName}`});return u}),pe=q(()=>{if(!S.value)return N.table.keySchema;const u=N.table.gsis.find(l=>l.IndexName===S.value)||N.table.lsis.find(l=>l.IndexName===S.value);return(u==null?void 0:u.KeySchema)||N.table.keySchema}),te=q(()=>{var u,l;return((l=(u=pe.value)==null?void 0:u.find(n=>n.KeyType==="HASH"))==null?void 0:l.AttributeName)||""}),F=q(()=>{var u,l;return((l=(u=pe.value)==null?void 0:u.find(n=>n.KeyType==="RANGE"))==null?void 0:l.AttributeName)||""}),se=q(()=>(pe.value||[]).map(u=>u.AttributeName).filter(u=>!!u)),be=q(()=>{const u=new Set;for(const l of y.value)Object.keys(l).forEach(n=>{se.value.includes(n)||u.add(n)});return Array.from(u).sort()});function Ie(u){const l=N.table.attributeDefinitions.find(n=>n.AttributeName===u);return l!=null&&l.AttributeType?l.AttributeType==="S"?"String":l.AttributeType==="N"?"Number":l.AttributeType==="B"?"Binary":l.AttributeType:null}function $e(u,l,n){const m=Ie(u);return l?m?`${u} (${m}, PK)`:`${u} (PK)`:n?m?`${u} (${m}, SK)`:`${u} (SK)`:m?`${u} (${m})`:u}const De=q(()=>{const u=se.value.map((n,m)=>({key:`__attr__${n}`,label:$e(n,m===0,m===1)})),l=be.value.map(n=>({key:`__attr__${n}`,label:$e(n)}));return[...u,...l]}),Ee=q(()=>y.value.map((u,l)=>{const n={__id:l,__raw:u};for(const m of se.value)n[`__attr__${m}`]=u[m];for(const m of be.value)n[`__attr__${m}`]=u[m];return n}));function ce(u){return u===void 0?"—":u===null?"null":typeof u=="boolean"?u?"true":"false":typeof u=="object"?JSON.stringify(u).slice(0,80):String(u).slice(0,80)}function je(u,l){switch(l){case"Number":{const n=Number(u);if(Number.isNaN(n))throw new Error(`"${u}" is not a number`);return n}case"Boolean":return u==="true"||u==="1";case"Null":return null;case"String":default:return u}}function le(u,l){const n=N.table.attributeDefinitions.find(m=>m.AttributeName===l);if((n==null?void 0:n.AttributeType)==="N"){const m=Number(u);if(Number.isNaN(m))throw new Error(`"${u}" is not a number for ${l}`);return m}return u}function qe(){const u={},l={};if(!te.value)throw new Error("No partition key on the selected table or index");if(!v.value)throw new Error(`Partition key value (${te.value}) is required`);u["#pk"]=te.value,l[":pkv"]=le(v.value,te.value);let n="#pk = :pkv";if(F.value&&_.value)if(u["#sk"]=F.value,w.value==="between"){if(!h.value)throw new Error("BETWEEN requires two values");l[":skv1"]=le(_.value,F.value),l[":skv2"]=le(h.value,F.value),n+=" AND #sk BETWEEN :skv1 AND :skv2"}else w.value==="begins_with"?(l[":skv"]=le(_.value,F.value),n+=" AND begins_with(#sk, :skv)"):(l[":skv"]=le(_.value,F.value),n+=` AND #sk ${w.value} :skv`);return{keyExpr:n,names:u,values:l}}function Re(){const u={},l={},n=[];return x.value.forEach((m,I)=>{if(!m.attr)return;const U=`#fn${I}`,re=`:fv${I}`;if(u[U]=m.attr,m.op==="attribute_exists"){n.push(`attribute_exists(${U})`);return}if(m.op==="attribute_not_exists"){n.push(`attribute_not_exists(${U})`);return}l[re]=je(m.value,m.type),m.op==="begins_with"?n.push(`begins_with(${U}, ${re})`):m.op==="contains"?n.push(`contains(${U}, ${re})`):n.push(`${U} ${m.op} ${re}`)}),{expr:n.join(" AND "),names:u,values:l}}function Be(u){const l=Re(),n={indexName:S.value||void 0,limit:V.value>0?V.value:void 0,exclusiveStartKey:u};let m=l.names,I=l.values;if(l.expr&&(n.filterExpression=l.expr),z.value==="query"){const U=qe();n.keyConditionExpression=U.keyExpr,m={...m,...U.names},I={...I,...U.values},j.value&&(n.scanIndexForward=!1)}return Object.keys(m).length&&(n.expressionAttributeNames=m),Object.keys(I).length&&(n.expressionAttributeValues=I),n}async function W(u){T.value=!0,D.value=null;try{const l=Be(u),n=z.value==="scan"?await K.scanDynamoTable(N.table.name,l):await K.queryDynamoTable(N.table.name,l);u?y.value=[...y.value,...n.items]:(y.value=n.items,p.value=new Date),i.value=n.lastEvaluatedKey,d.value=n.scannedCount,Y.value=!0}catch(l){D.value=l.message||"Request failed"}finally{T.value=!1}}function Ke(){v.value="",w.value="=",_.value="",h.value="",j.value=!1,x.value=[],y.value=[],i.value=void 0,d.value=void 0,Y.value=!1,D.value=null}function Ue(){i.value&&W(i.value)}function Oe(){x.value.push({attr:"",op:"=",type:"String",value:""}),$.value=!0}function Le(u){x.value.splice(u,1)}function Ne(u){const l={};for(const n of N.table.keySchema)n.AttributeName&&(l[n.AttributeName]=u[n.AttributeName]);return l}function Pe(){const u={};for(const l of N.table.keySchema){if(!l.AttributeName)continue;const n=N.table.attributeDefinitions.find(m=>m.AttributeName===l.AttributeName);u[l.AttributeName]=(n==null?void 0:n.AttributeType)==="N"?0:""}return u}function Fe(){X.value="create",O.value=Pe(),ee.value=null,Z.value=!0}function Je(u){X.value="view",O.value=u,ee.value=null,Z.value=!0}function Me(){O.value&&(ee.value=Ne(O.value),X.value="edit")}function Ge(){if(!O.value)return;const u={...O.value};for(const l of N.table.keySchema){if(!l.AttributeName)continue;const n=N.table.attributeDefinitions.find(m=>m.AttributeName===l.AttributeName);u[l.AttributeName]=(n==null?void 0:n.AttributeType)==="N"?0:""}O.value=u,ee.value=null,X.value="create"}function We(){O.value&&(ue.value=Ne(O.value),ie.value=!0)}async function Qe(){if(ue.value)try{await K.deleteDynamoItem(N.table.name,ue.value),s.add({title:"Item deleted",variant:"info"}),Z.value=!1,await W()}catch(u){s.add({title:"Delete failed",description:u.message,variant:"danger"})}finally{ie.value=!1,ue.value=null}}function He(){W()}const Q=q(()=>{const u=y.value.length,l=d.value??u,n=l>0?Math.round(u/l*100):100;return{returned:u,scanned:l,efficiency:n,finished:!i.value}});return W(),ve(()=>[z.value,S.value],()=>{y.value=[],i.value=void 0,d.value=void 0,Y.value=!1}),(u,l)=>(r(),k(e(o),{direction:"vertical",gap:"1rem"},{default:t(()=>[a(e(P),{variant:"outline"},{header:t(()=>[...l[15]||(l[15]=[f("strong",null,"Scan or query items",-1)])]),footer:t(()=>[a(e(o),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:t(()=>[a(e(o),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[a(e(E),{variant:"solid",loading:T.value,onClick:l[8]||(l[8]=n=>W())},{default:t(()=>[...l[20]||(l[20]=[c("Run",-1)])]),_:1},8,["loading"]),a(e(E),{variant:"ghost",onClick:Ke},{default:t(()=>[...l[21]||(l[21]=[c("Reset",-1)])]),_:1})]),_:1}),a(e(o),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[l[22]||(l[22]=f("span",{class:"muted"},"Limit",-1)),a(e(L),{modelValue:V.value,"onUpdate:modelValue":l[9]||(l[9]=n=>V.value=n),modelModifiers:{number:!0},type:"number",size:"sm",style:{width:"6rem"}},null,8,["modelValue"])]),_:1})]),_:1})]),default:t(()=>[a(e(o),{direction:"vertical",gap:"1rem"},{default:t(()=>[f("div",dt,[a(e(Xe),{modelValue:z.value,"onUpdate:modelValue":l[0]||(l[0]=n=>z.value=n),options:Ae,size:"md"},null,8,["modelValue"])]),a(e(o),{direction:"horizontal",gap:"1rem"},{default:t(()=>[a(e(B),{label:"Select a table or index",style:{flex:"1"}},{default:t(()=>[a(e(ae),{modelValue:S.value,"onUpdate:modelValue":l[1]||(l[1]=n=>S.value=n),options:he.value},null,8,["modelValue","options"])]),_:1}),a(e(B),{label:"Select attribute projection",style:{flex:"1"}},{default:t(()=>[a(e(ae),{"model-value":"All attributes",options:[{value:"All attributes",label:"All attributes"}],disabled:""})]),_:1})]),_:1}),z.value==="query"?(r(),R(M,{key:0},[a(e(we)),a(e(o),{direction:"vertical",gap:"0.5rem"},{default:t(()=>[l[16]||(l[16]=f("strong",{style:{"font-size":"0.9rem"}},"Partition key",-1)),a(e(o),{direction:"horizontal",gap:"1rem"},{default:t(()=>[a(e(B),{label:"Attribute",style:{flex:"1"}},{default:t(()=>[a(e(L),{"model-value":te.value||"—",disabled:""},null,8,["model-value"])]),_:1}),a(e(B),{label:"Value",style:{flex:"2"}},{default:t(()=>[a(e(L),{modelValue:v.value,"onUpdate:modelValue":l[2]||(l[2]=n=>v.value=n),placeholder:"Enter attribute value"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),F.value?(r(),k(e(o),{key:0,direction:"vertical",gap:"0.5rem"},{default:t(()=>[l[17]||(l[17]=f("strong",{style:{"font-size":"0.9rem"}},"Sort key – optional",-1)),a(e(o),{direction:"horizontal",gap:"0.75rem",align:"end"},{default:t(()=>[a(e(B),{label:"Attribute",style:{flex:"1.4"}},{default:t(()=>[a(e(L),{"model-value":F.value,disabled:""},null,8,["model-value"])]),_:1}),a(e(B),{label:"Value",style:{flex:"1.2","min-width":"11rem"}},{default:t(()=>[a(e(ae),{modelValue:w.value,"onUpdate:modelValue":l[3]||(l[3]=n=>w.value=n),options:Ce},null,8,["modelValue"])]),_:1}),a(e(L),{modelValue:_.value,"onUpdate:modelValue":l[4]||(l[4]=n=>_.value=n),placeholder:"Enter attribute value",style:{flex:"2"}},null,8,["modelValue"]),w.value==="between"?(r(),k(e(L),{key:0,modelValue:h.value,"onUpdate:modelValue":l[5]||(l[5]=n=>h.value=n),placeholder:"and value",style:{flex:"2"}},null,8,["modelValue"])):C("",!0),a(e(et),{modelValue:j.value,"onUpdate:modelValue":l[6]||(l[6]=n=>j.value=n),label:"Sort descending"},null,8,["modelValue"])]),_:1})]),_:1})):C("",!0)],64)):C("",!0),a(e(we)),a(e(o),{direction:"vertical",gap:"0.5rem"},{default:t(()=>[f("a",{href:"#",style:{"text-decoration":"none","font-weight":"600","font-size":"0.9rem"},onClick:l[7]||(l[7]=_e(n=>$.value=!$.value,["prevent"]))},b($.value?"▼":"▶")+" Filters – optional ",1),$.value?(r(),k(e(o),{key:0,direction:"vertical",gap:"0.5rem"},{default:t(()=>[(r(!0),R(M,null,G(x.value,(n,m)=>(r(),k(e(o),{key:`f-${m}`,direction:"horizontal",gap:"0.5rem",align:"end"},{default:t(()=>[a(e(B),{label:"Attribute name",style:{flex:"1.4"}},{default:t(()=>[a(e(L),{modelValue:n.attr,"onUpdate:modelValue":I=>n.attr=I,placeholder:"Enter attribute name"},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),a(e(B),{label:"Condition",style:{flex:"1.4"}},{default:t(()=>[a(e(ae),{modelValue:n.op,"onUpdate:modelValue":I=>n.op=I,options:ze},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),a(e(B),{label:"Type",style:{flex:"0.9"}},{default:t(()=>[a(e(ae),{modelValue:n.type,"onUpdate:modelValue":I=>n.type=I,options:Te},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),a(e(B),{label:"Value",style:{flex:"1.7"}},{default:t(()=>[a(e(L),{modelValue:n.value,"onUpdate:modelValue":I=>n.value=I,disabled:n.op==="attribute_exists"||n.op==="attribute_not_exists",placeholder:"Enter attribute value"},null,8,["modelValue","onUpdate:modelValue","disabled"])]),_:2},1024),a(e(E),{size:"sm",variant:"outline",onClick:I=>Le(m)},{default:t(()=>[...l[18]||(l[18]=[c("Remove",-1)])]),_:1},8,["onClick"])]),_:2},1024))),128)),f("div",null,[a(e(E),{size:"sm",variant:"outline",onClick:Oe},{default:t(()=>[...l[19]||(l[19]=[c("Add filter",-1)])]),_:1})])]),_:1})):C("",!0)]),_:1})]),_:1})]),_:1}),D.value?(r(),k(e(ne),{key:0,variant:"danger",dismissible:"",onDismiss:l[10]||(l[10]=n=>D.value=null)},{default:t(()=>[c(b(D.value),1)]),_:1})):C("",!0),Y.value&&!D.value?(r(),k(e(ne),{key:1,variant:Q.value.finished?"success":"warning",dismissible:"",onDismiss:l[11]||(l[11]=n=>Y.value=!1)},{default:t(()=>[a(e(o),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:t(()=>[f("span",null,[f("strong",null,b(Q.value.finished?"Completed":"Stopped"),1),l[23]||(l[23]=c(" · Items returned: ",-1)),f("strong",null,b(Q.value.returned),1),l[24]||(l[24]=c(" · Items scanned: ",-1)),f("strong",null,b(Q.value.scanned),1),l[25]||(l[25]=c(" · Efficiency: ",-1)),f("strong",null,b(Q.value.efficiency)+"%",1)]),Q.value.finished?C("",!0):(r(),k(e(E),{key:0,size:"sm",variant:"outline",loading:T.value,onClick:Ue},{default:t(()=>[...l[26]||(l[26]=[c(" Retrieve next page ",-1)])]),_:1},8,["loading"]))]),_:1})]),_:1},8,["variant"])):C("",!0),a(e(P),{variant:"outline"},{header:t(()=>[a(e(o),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:t(()=>[a(e(o),{direction:"vertical",gap:"0.125rem"},{default:t(()=>[f("strong",null,b(S.value?`Index: ${S.value} (${N.table.name})`:`Table: ${N.table.name}`)+" – Items returned ("+b(y.value.length)+") ",1),f("span",mt,b(z.value==="scan"?"Scan":"Query")+" started on "+b(p.value?p.value.toLocaleString():"—"),1)]),_:1}),a(e(o),{direction:"horizontal",gap:"0.5rem"},{default:t(()=>[a(e(E),{size:"sm",variant:"ghost",loading:T.value,onClick:l[12]||(l[12]=n=>W())},{default:t(()=>[...l[27]||(l[27]=[c("Refresh",-1)])]),_:1},8,["loading"]),a(e(E),{size:"sm",variant:"outline",onClick:Fe},{default:t(()=>[...l[28]||(l[28]=[c("Create item",-1)])]),_:1})]),_:1})]),_:1})]),default:t(()=>[T.value&&!y.value.length?(r(),R("div",vt,[a(e(Ve),{label:"Running..."})])):y.value.length?(r(),k(e(tt),{key:2,columns:De.value,rows:Ee.value},lt({_:2},[G(se.value,(n,m)=>({name:`cell-__attr__${n}`,fn:t(({row:I})=>[m===0?(r(),k(e(at),{key:0,href:"#",class:"mono",onClick:_e(U=>Je(I.__raw),["prevent"])},{default:t(()=>[c(b(ce(I[`__attr__${n}`])),1)]),_:2},1032,["onClick"])):(r(),R("span",ft,b(ce(I[`__attr__${n}`])),1))])})),G(be.value,n=>({name:`cell-__attr__${n}`,fn:t(({row:m})=>[f("span",pt,b(ce(m[`__attr__${n}`])),1)])}))]),1032,["columns","rows"])):(r(),k(e(Se),{key:1,title:"No items",description:"Run the operation to load items."}))]),_:1}),a(ot,{open:Z.value,"onUpdate:open":l[13]||(l[13]=n=>Z.value=n),"table-name":N.table.name,mode:X.value,item:O.value,"original-key":ee.value,onSaved:He,onRequestEdit:Me,onRequestClone:Ge,onRequestDelete:We},null,8,["open","table-name","mode","item","original-key"]),a(e(ye),{open:ie.value,"onUpdate:open":l[14]||(l[14]=n=>ie.value=n),title:"Delete item",description:`Delete this item from ${N.table.name}? This cannot be undone.`,"confirm-label":"Delete","cancel-label":"Cancel",tone:"danger",onConfirm:Qe},null,8,["open","description"])]),_:1}))}}),ct={key:0,class:"muted mono",style:{"font-size":"0.7rem"}},yt={key:1,class:"muted",style:{"font-size":"0.75rem"}},gt={class:"muted mono",style:{"font-size":"0.75rem"}},kt={class:"muted",style:{"font-size":"0.75rem"}},$t=H({__name:"DynamoTableSettings",props:{table:{}},emits:["refresh"],setup(A,{emit:N}){const s=A,z=N,S=fe(),V=g(s.table.ttl.enabled),v=g(s.table.ttl.attributeName||""),w=g(!1),_=g(null);ve(()=>[s.table.ttl.enabled,s.table.ttl.attributeName],([x,$])=>{V.value=x,v.value=$||""});async function h(){if(V.value&&!v.value.trim()){_.value="Attribute name is required to enable TTL";return}w.value=!0,_.value=null;try{await K.setDynamoTtl(s.table.name,V.value,v.value.trim()||void 0),S.add({title:V.value?"TTL enabled":"TTL disabled",description:V.value?`Attribute: ${v.value}`:void 0,variant:"success"}),z("refresh")}catch(x){_.value=x.message||"Failed to update TTL"}finally{w.value=!1}}function j(x){return x<1024?`${x} B`:x<1024*1024?`${(x/1024).toFixed(1)} KB`:`${(x/(1024*1024)).toFixed(1)} MB`}return(x,$)=>(r(),k(e(o),{direction:"vertical",gap:"1rem"},{default:t(()=>[a(e(ge),{columns:4,gap:"0.75rem"},{default:t(()=>[a(e(oe),{label:"Items",value:s.table.itemCount,tone:"info"},null,8,["value"]),a(e(oe),{label:"Size",value:j(s.table.sizeBytes),tone:"neutral"},null,8,["value"]),a(e(oe),{label:"Status",value:s.table.status||"UNKNOWN",tone:s.table.status==="ACTIVE"?"success":"warning"},null,8,["value","tone"]),a(e(oe),{label:"Billing",value:s.table.billingMode||"—",tone:"neutral"},null,8,["value"])]),_:1}),a(e(P),{variant:"outline"},{header:t(()=>[...$[3]||($[3]=[f("strong",null,"Time to Live (TTL)",-1)])]),default:t(()=>[_.value?(r(),k(e(ne),{key:0,variant:"danger",dismissible:"",onDismiss:$[0]||($[0]=y=>_.value=null)},{default:t(()=>[c(b(_.value),1)]),_:1})):C("",!0),a(e(o),{direction:"vertical",gap:"0.75rem"},{default:t(()=>[$[5]||($[5]=f("span",{class:"muted",style:{"font-size":"0.8rem"}}," When TTL is enabled, items are automatically deleted by DynamoDB after the timestamp in the configured attribute (epoch seconds). Items are eventually consistent and may take time to be removed. ",-1)),a(e(B),{label:"Enable TTL"},{default:t(()=>[a(e(nt),{modelValue:V.value,"onUpdate:modelValue":$[1]||($[1]=y=>V.value=y)},null,8,["modelValue"])]),_:1}),a(e(B),{label:"Attribute name",hint:V.value?"Required when enabling TTL":"Disabled — value retained for reference"},{default:t(()=>[a(e(L),{modelValue:v.value,"onUpdate:modelValue":$[2]||($[2]=y=>v.value=y),placeholder:"e.g. expiresAt",disabled:!V.value},null,8,["modelValue","disabled"])]),_:1},8,["hint"]),a(e(o),{direction:"horizontal",justify:"flex-end"},{default:t(()=>[a(e(E),{size:"sm",variant:"solid",loading:w.value,onClick:h},{default:t(()=>[...$[4]||($[4]=[c(" Apply ",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),a(e(P),{variant:"outline"},{header:t(()=>[...$[6]||($[6]=[f("strong",null,"Streams",-1)])]),default:t(()=>[a(e(o),{direction:"vertical",gap:"0.5rem"},{default:t(()=>[a(e(o),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[a(e(J),{tone:s.table.streamEnabled?"success":"neutral",variant:"soft"},{default:t(()=>[c(b(s.table.streamEnabled?"Enabled":"Disabled"),1)]),_:1},8,["tone"]),s.table.streamViewType?(r(),k(e(ke),{key:0,size:"sm",variant:"soft"},{default:t(()=>[c(b(s.table.streamViewType),1)]),_:1})):C("",!0)]),_:1}),s.table.streamArn?(r(),R("span",ct,b(s.table.streamArn),1)):(r(),R("span",yt," Streams configuration is set at table creation time and cannot be changed from here. "))]),_:1})]),_:1}),a(e(P),{variant:"outline"},{header:t(()=>[...$[7]||($[7]=[f("strong",null,"Identifier",-1)])]),default:t(()=>[a(e(o),{direction:"vertical",gap:"0.25rem"},{default:t(()=>[f("span",gt," ARN: "+b(s.table.arn||"—"),1),f("span",kt," Created: "+b(s.table.createdAt?new Date(s.table.createdAt).toLocaleString():"—"),1)]),_:1})]),_:1})]),_:1}))}}),Nt={class:"mono",style:{"font-size":"0.8rem"}},wt={class:"mono"},_t=H({__name:"DynamoSeedPanel",props:{tableName:{},seedFile:{},seedItemCount:{},tableItemCount:{}},emits:["refresh"],setup(A,{emit:N}){const s=A,z=N,S=fe(),V=g(!1),v=g(!1),w=g(!1),_=g(!1),h=g(!1);async function j(){if(!V.value){V.value=!0;try{const y=await K.runSeed(s.tableName),i=y.results.reduce((p,T)=>p+(T.inserted||0),0),d=y.results.find(p=>p.skipped);d?S.add({title:"Seed skipped",description:`${s.tableName}: ${d.reason||"unknown reason"}`,variant:"warning"}):S.add({title:"Seed applied",description:`${i} item(s) inserted into ${s.tableName}`,variant:"success"}),z("refresh")}catch(y){S.add({title:"Seed failed",description:y.message,variant:"danger"})}finally{V.value=!1}}}async function x(){if(!w.value){w.value=!0;try{const i=(await K.clearSeed(s.tableName)).results.reduce((d,p)=>d+(p.deleted||0),0);S.add({title:"Table purged",description:`${i} item(s) removed from ${s.tableName}`,variant:"info"}),z("refresh")}catch(y){S.add({title:"Purge failed",description:y.message,variant:"danger"})}finally{w.value=!1,_.value=!1}}}async function $(){if(!v.value){v.value=!0;try{const i=(await K.clearSeed(s.tableName)).results.reduce((T,D)=>T+(D.deleted||0),0),p=(await K.runSeed(s.tableName)).results.reduce((T,D)=>T+(D.inserted||0),0);S.add({title:"Seed redone",description:`${i} removed, ${p} inserted in ${s.tableName}`,variant:"success"}),z("refresh")}catch(y){S.add({title:"Redo failed",description:y.message,variant:"danger"})}finally{v.value=!1,h.value=!1}}}return(y,i)=>(r(),k(e(o),{direction:"vertical",gap:"1rem"},{default:t(()=>[a(e(P),{variant:"outline"},{header:t(()=>[a(e(o),{direction:"horizontal",justify:"space-between",align:"center"},{default:t(()=>[i[4]||(i[4]=f("strong",null,"Seed file",-1)),a(e(J),{tone:"info",variant:"soft"},{default:t(()=>[c(b(A.seedItemCount)+" item"+b(A.seedItemCount===1?"":"s"),1)]),_:1})]),_:1})]),default:t(()=>[a(e(o),{direction:"vertical",gap:"0.5rem"},{default:t(()=>[a(e(o),{direction:"horizontal",justify:"space-between",align:"center"},{default:t(()=>[i[5]||(i[5]=f("span",{class:"muted"},"Path",-1)),f("span",Nt,b(A.seedFile),1)]),_:1}),a(e(o),{direction:"horizontal",justify:"space-between",align:"center"},{default:t(()=>[i[6]||(i[6]=f("span",{class:"muted"},"Current rows in table",-1)),f("span",wt,b(A.tableItemCount),1)]),_:1})]),_:1})]),_:1}),a(e(P),{variant:"outline"},{header:t(()=>[...i[7]||(i[7]=[f("strong",null,"Actions",-1)])]),default:t(()=>[a(e(o),{direction:"vertical",gap:"0.75rem"},{default:t(()=>[a(e(o),{direction:"horizontal",justify:"space-between",align:"center",gap:"1rem"},{default:t(()=>[a(e(o),{direction:"vertical",gap:"0.125rem"},{default:t(()=>[...i[8]||(i[8]=[f("strong",null,"Apply seed",-1),f("span",{class:"muted",style:{"font-size":"0.825rem"}}," Inserts every item from the seed file. Existing items with the same key are overwritten. ",-1)])]),_:1}),a(e(E),{variant:"solid",loading:V.value,disabled:A.seedItemCount<=0,onClick:j},{default:t(()=>[...i[9]||(i[9]=[c(" Apply ",-1)])]),_:1},8,["loading","disabled"])]),_:1}),a(e(o),{direction:"horizontal",justify:"space-between",align:"center",gap:"1rem"},{default:t(()=>[a(e(o),{direction:"vertical",gap:"0.125rem"},{default:t(()=>[...i[10]||(i[10]=[f("strong",null,"Redo seed",-1),f("span",{class:"muted",style:{"font-size":"0.825rem"}}," Purges the table first, then re-applies the seed file. Use when stale rows are blocking a fresh load. ",-1)])]),_:1}),a(e(E),{variant:"soft",loading:v.value,disabled:A.seedItemCount<=0,onClick:i[0]||(i[0]=d=>h.value=!0)},{default:t(()=>[...i[11]||(i[11]=[c(" Redo ",-1)])]),_:1},8,["loading","disabled"])]),_:1}),a(e(o),{direction:"horizontal",justify:"space-between",align:"center",gap:"1rem"},{default:t(()=>[a(e(o),{direction:"vertical",gap:"0.125rem"},{default:t(()=>[...i[12]||(i[12]=[f("strong",null,"Purge table",-1),f("span",{class:"muted",style:{"font-size":"0.825rem"}}," Deletes every item currently in this table. The seed file is not touched. ",-1)])]),_:1}),a(e(E),{variant:"danger",loading:w.value,onClick:i[1]||(i[1]=d=>_.value=!0)},{default:t(()=>[...i[13]||(i[13]=[c(" Purge ",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}),a(e(ye),{open:_.value,"onUpdate:open":i[2]||(i[2]=d=>_.value=d),title:`Purge ${A.tableName}?`,description:`This deletes all ${A.tableItemCount} item(s) currently in the table. The seed file on disk is not affected.`,"confirm-label":"Purge","cancel-label":"Cancel","confirm-variant":"danger",onConfirm:x},null,8,["open","title","description"]),a(e(ye),{open:h.value,"onUpdate:open":i[3]||(i[3]=d=>h.value=d),title:`Redo seed for ${A.tableName}?`,description:`This purges all ${A.tableItemCount} current item(s), then re-applies ${A.seedItemCount} seeded item(s).`,"confirm-label":"Redo","cancel-label":"Cancel","confirm-variant":"danger",onConfirm:$},null,8,["open","title","description"])]),_:1}))}}),Vt={style:{"font-size":"1.1rem"}},St={key:2,style:{display:"flex","justify-content":"center",padding:"2rem"}},xt={style:{"padding-top":"1rem"}},At={style:{"padding-top":"1rem"}},Ct={class:"muted",style:{"font-size":"0.75rem"}},zt={class:"muted",style:{"font-size":"0.75rem"}},Tt={style:{"padding-top":"1rem"}},ht={style:{"padding-top":"1rem"}},It=H({__name:"DynamoTableDetail",props:{tableName:{}},emits:["back"],setup(A,{emit:N}){const s=A,z=N,S=rt(),V=xe(),v=g(null),w=g(null),_=g(!0),h=g(null),j=["items","indexes","settings","seed"],x=q({get(){const y=String(S.query.tab||"");return j.includes(y)?y:"items"},set(y){V.replace({query:{...S.query,tab:y==="items"?void 0:y}})}});async function $(){_.value=!0;try{const[y,i]=await Promise.all([K.describeDynamoTable(s.tableName),K.listSeeds().catch(()=>({seedsDir:"",entries:[]}))]);v.value=y,w.value=i.entries.find(d=>d.tableName===s.tableName)||null,h.value=null}catch(y){h.value=y.message||"Failed to load table",v.value=null}finally{_.value=!1}}return it($),ve(()=>s.tableName,$),(y,i)=>(r(),k(e(o),{direction:"vertical",gap:"1rem"},{default:t(()=>{var d;return[a(e(o),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:t(()=>[a(e(o),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>{var p;return[a(e(E),{size:"sm",variant:"ghost",onClick:i[0]||(i[0]=T=>z("back"))},{default:t(()=>[...i[3]||(i[3]=[c("← Tables",-1)])]),_:1}),f("strong",Vt,b(A.tableName),1),(p=v.value)!=null&&p.status?(r(),k(e(J),{key:0,tone:v.value.status==="ACTIVE"?"success":"warning",variant:"soft"},{default:t(()=>[c(b(v.value.status),1)]),_:1},8,["tone"])):C("",!0),w.value?(r(),k(e(J),{key:1,tone:"info",variant:"soft"},{default:t(()=>[c(" Seed: "+b(w.value.itemCount)+" item"+b(w.value.itemCount===1?"":"s"),1)]),_:1})):C("",!0)]}),_:1}),a(e(E),{size:"sm",variant:"ghost",loading:_.value,onClick:$},{default:t(()=>[...i[4]||(i[4]=[c("Refresh",-1)])]),_:1},8,["loading"])]),_:1}),(d=v.value)!=null&&d.warnings.length?(r(),k(e(o),{key:0,direction:"horizontal",gap:"0.375rem",wrap:""},{default:t(()=>[(r(!0),R(M,null,G(v.value.warnings,p=>(r(),k(e(J),{key:p,tone:"warning",variant:"soft"},{default:t(()=>[c("⚠ "+b(p),1)]),_:2},1024))),128))]),_:1})):C("",!0),h.value?(r(),k(e(ne),{key:1,variant:"danger",dismissible:"",onDismiss:i[1]||(i[1]=p=>h.value=null)},{default:t(()=>[c(b(h.value),1)]),_:1})):C("",!0),_.value&&!v.value?(r(),R("div",St,[a(e(Ve),{label:"Loading table..."})])):v.value?(r(),k(e(ut),{key:3,modelValue:x.value,"onUpdate:modelValue":i[2]||(i[2]=p=>x.value=p)},{default:t(()=>[a(e(st),null,{default:t(()=>[a(e(de),{value:"items"},{default:t(()=>[...i[5]||(i[5]=[c("Items",-1)])]),_:1}),a(e(de),{value:"indexes"},{default:t(()=>[...i[6]||(i[6]=[c("Indexes",-1)])]),_:1}),a(e(de),{value:"settings"},{default:t(()=>[...i[7]||(i[7]=[c("Settings",-1)])]),_:1}),w.value?(r(),k(e(de),{key:0,value:"seed"},{default:t(()=>[...i[8]||(i[8]=[c("Seed",-1)])]),_:1})):C("",!0)]),_:1}),a(e(me),{value:"items"},{default:t(()=>[f("div",xt,[a(bt,{table:v.value},null,8,["table"])])]),_:1}),a(e(me),{value:"indexes"},{default:t(()=>[f("div",At,[!v.value.gsis.length&&!v.value.lsis.length?(r(),k(e(Se),{key:0,title:"No secondary indexes",description:"This table has only the primary key."})):(r(),k(e(o),{key:1,direction:"vertical",gap:"1rem"},{default:t(()=>[v.value.gsis.length?(r(),k(e(ge),{key:0,columns:2,gap:"0.75rem"},{default:t(()=>[(r(!0),R(M,null,G(v.value.gsis,p=>(r(),k(e(P),{key:p.IndexName,variant:"outline"},{header:t(()=>[a(e(o),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:t(()=>[f("strong",null,b(p.IndexName),1),a(e(J),{tone:"info",variant:"soft"},{default:t(()=>[...i[9]||(i[9]=[c("GSI",-1)])]),_:1})]),_:2},1024)]),default:t(()=>[a(e(o),{direction:"vertical",gap:"0.5rem"},{default:t(()=>{var T;return[a(e(o),{direction:"horizontal",gap:"0.5rem",wrap:""},{default:t(()=>[(r(!0),R(M,null,G(p.KeySchema||[],D=>(r(),k(e(ke),{key:D.AttributeName,size:"sm",variant:"soft"},{default:t(()=>[c(b(D.AttributeName)+" ("+b(D.KeyType)+") ",1)]),_:2},1024))),128))]),_:2},1024),f("span",Ct," Projection: "+b(((T=p.Projection)==null?void 0:T.ProjectionType)||"—")+" · Items: "+b(p.ItemCount??"—")+" · Status: "+b(p.IndexStatus||"—"),1)]}),_:2},1024)]),_:2},1024))),128))]),_:1})):C("",!0),v.value.lsis.length?(r(),k(e(ge),{key:1,columns:2,gap:"0.75rem"},{default:t(()=>[(r(!0),R(M,null,G(v.value.lsis,p=>(r(),k(e(P),{key:p.IndexName,variant:"outline"},{header:t(()=>[a(e(o),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:t(()=>[f("strong",null,b(p.IndexName),1),a(e(J),{tone:"neutral",variant:"soft"},{default:t(()=>[...i[10]||(i[10]=[c("LSI",-1)])]),_:1})]),_:2},1024)]),default:t(()=>[a(e(o),{direction:"vertical",gap:"0.5rem"},{default:t(()=>{var T;return[a(e(o),{direction:"horizontal",gap:"0.5rem",wrap:""},{default:t(()=>[(r(!0),R(M,null,G(p.KeySchema||[],D=>(r(),k(e(ke),{key:D.AttributeName,size:"sm",variant:"soft"},{default:t(()=>[c(b(D.AttributeName)+" ("+b(D.KeyType)+") ",1)]),_:2},1024))),128))]),_:2},1024),f("span",zt," Projection: "+b(((T=p.Projection)==null?void 0:T.ProjectionType)||"—"),1)]}),_:2},1024)]),_:2},1024))),128))]),_:1})):C("",!0)]),_:1}))])]),_:1}),a(e(me),{value:"settings"},{default:t(()=>[f("div",Tt,[a($t,{table:v.value,onRefresh:$},null,8,["table"])])]),_:1}),w.value?(r(),k(e(me),{key:0,value:"seed"},{default:t(()=>[f("div",ht,[a(_t,{"table-name":v.value.name,"seed-file":w.value.file,"seed-item-count":w.value.itemCount,"table-item-count":v.value.itemCount,onRefresh:$},null,8,["table-name","seed-file","seed-item-count","table-item-count"])])]),_:1})):C("",!0)]),_:1},8,["modelValue"])):C("",!0)]}),_:1}))}}),Et=H({__name:"DynamoTablePage",props:{tableName:{}},setup(A){const N=xe();function s(){N.push("/dynamo")}return(z,S)=>(r(),k(It,{"table-name":A.tableName,onBack:s},null,8,["table-name"]))}});export{Et as default};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{k as ee,l as me,o as ge,Y as pe,e as c,U as e,t as d,Z as t,a as J,m as r,j as a,y as w,i as v,d as s,T as i,g,f as y,G as ye,s as W,x as T,w as ke,H as _e,I as S,J as x,q as k,D as Z,K as he,L as be,F as N,v as ze,p as I,n as Q,u as U,A as X,z as H,a0 as $e,M as we,c as Te,r as p,b as q,V as Ne,W as te}from"./index-
|
|
1
|
+
import{k as ee,l as me,o as ge,Y as pe,e as c,U as e,t as d,Z as t,a as J,m as r,j as a,y as w,i as v,d as s,T as i,g,f as y,G as ye,s as W,x as T,w as ke,H as _e,I as S,J as x,q as k,D as Z,K as he,L as be,F as N,v as ze,p as I,n as Q,u as U,A as X,z as H,a0 as $e,M as we,c as Te,r as p,b as q,V as Ne,W as te}from"./index-DGkmrq2b.js";const Le={style:{"font-size":"1.1rem"}},Re={key:0,class:"muted mono",style:{"font-size":"0.75rem"}},Ce={key:1,style:{display:"flex","justify-content":"center",padding:"2rem"}},Ee={style:{"padding-top":"1rem"}},Ve={class:"muted mono",style:{"font-size":"0.75rem"}},je={key:0,class:"muted",style:{"font-size":"0.75rem"}},Me={class:"muted mono",style:{"font-size":"0.75rem"}},Se={class:"logs-pre"},xe={class:"logs-pre"},Ie={class:"logs-pre"},qe={style:{"padding-top":"1rem"}},Be={key:1,class:"muted"},De={class:"mono"},Fe={key:1,class:"muted"},Oe={style:{"padding-top":"1rem"}},Ae={class:"mono",style:{"font-size":"0.78rem"}},Pe={class:"mono",style:{"font-size":"0.78rem"}},Je={style:{"padding-top":"1rem"}},Ue={key:0,style:{display:"flex","justify-content":"center",padding:"2rem"}},He=["onClick"],Ke={class:"mono",style:{"font-size":"0.8rem"}},Ye={style:{"font-size":"0.85rem"}},Ge={class:"muted mono",style:{"font-size":"0.75rem"}},We={key:0,class:"logs-pre"},Ze=ee({__name:"LambdaDetail",props:{functionName:{}},emits:["back"],setup(L,{emit:B}){const _=L,K=B,D=Ne(),ne=te(),h=Te(),u=p(null),R=p(!0),b=p(null);let F=null;const ae=["invoke","triggers","environment","logs"],Y=q({get(){const l=String(D.query.tab||"");return ae.includes(l)?l:"invoke"},set(l){ne.replace({query:{...D.query,tab:l==="invoke"?void 0:l}})}}),C=p("{}"),E=p("RequestResponse"),V=p(!1),f=p(null),O=p(!1),oe=[{value:"RequestResponse",label:"RequestResponse (sync)"},{value:"Event",label:"Event (async, fire & forget)"}],z=p([]),j=p(!1),M=p({}),le=[{key:"key",label:"Key"},{key:"value",label:"Value"}],G=q(()=>{var l;return Object.entries(((l=u.value)==null?void 0:l.environment)||{}).map(([n,o])=>({key:n,value:o}))}),se=[{key:"method",label:"Method"},{key:"path",label:"Path"},{key:"eventType",label:"Type"},{key:"authorizerName",label:"Authorizer"}],re=q(()=>{var l;return(((l=u.value)==null?void 0:l.routes)||[]).map(n=>({...n}))}),ie=q(()=>{if(!f.value)return"";const l=f.value.payload;if(l===void 0)return"—";try{return JSON.stringify(l,null,2)}catch{return String(l)}});async function $(l=!0){l&&(R.value=!0);try{u.value=await J.getLambda(_.functionName),b.value=null}catch(n){b.value=n.message||"Failed to load function",u.value=null}finally{R.value=!1}}async function A(){j.value=!0;try{const l=await J.getLambdaLogs(_.functionName);z.value=[...l.invocations].reverse()}catch(l){h.add({title:"Failed to load invocation logs",description:l.message,variant:"danger"})}finally{j.value=!1}}async function ue(){var o;let l;const n=C.value.trim();if(n)try{l=JSON.parse(n)}catch{h.add({title:"Invalid JSON payload",description:"Fix the payload before invoking.",variant:"danger"});return}V.value=!0;try{const m=await J.invokeLambda(_.functionName,{payload:l,invocationType:E.value});E.value==="Event"?(f.value=null,O.value=!0,h.add({title:"Invocation accepted",description:"Event invocation queued (fire & forget).",variant:"success"})):(O.value=!1,f.value=m,m.ok||h.add({title:"Function returned an error",description:(o=m.functionError)==null?void 0:o.errorMessage,variant:"danger"})),await $(!1)}catch(m){h.add({title:"Failed to invoke function",description:m.message,variant:"danger"})}finally{V.value=!1}}function de(l){M.value[l]=!M.value[l]}function ve(l){switch(l){case"online":return"success";case"starting":return"info";case"stopped":return"neutral";default:return"danger"}}function fe(l){return l==="ANY"?"info":"neutral"}function ce(l){return l?new Date(l).toLocaleString():"—"}return me(()=>{$(),A(),F=window.setInterval(()=>$(!1),1e4)}),ge(()=>{F&&window.clearInterval(F)}),pe(()=>_.functionName,()=>{$(),A()}),(l,n)=>(r(),c(e(d),{direction:"vertical",gap:"1rem"},{default:t(()=>[a(e(d),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:t(()=>[a(e(d),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[a(e(w),{size:"sm",variant:"ghost",onClick:n[0]||(n[0]=o=>K("back"))},{default:t(()=>[...n[7]||(n[7]=[v("← Lambdas",-1)])]),_:1}),s("strong",Le,i(L.functionName),1),u.value?(r(),g("span",Re,i(u.value.fullName),1)):y("",!0)]),_:1}),a(e(w),{size:"sm",variant:"ghost",loading:R.value,onClick:n[1]||(n[1]=o=>$())},{default:t(()=>[...n[8]||(n[8]=[v("Refresh",-1)])]),_:1},8,["loading"])]),_:1}),b.value?(r(),c(e(ye),{key:0,variant:"danger",dismissible:"",onDismiss:n[2]||(n[2]=o=>b.value=null)},{default:t(()=>[v(i(b.value),1)]),_:1})):y("",!0),R.value&&!u.value?(r(),g("div",Ce,[a(e(W),{label:"Loading function..."})])):u.value?(r(),g(N,{key:2},[a(e(ke),{columns:5,gap:"0.75rem"},{default:t(()=>[a(e(T),{label:"Status",value:u.value.status,tone:ve(u.value.status)},null,8,["value","tone"]),a(e(T),{label:"Runtime",value:u.value.runtime,tone:"info"},null,8,["value"]),a(e(T),{label:"Memory",value:`${u.value.memorySize} MB`,tone:"neutral"},null,8,["value"]),a(e(T),{label:"Timeout",value:`${u.value.timeout}s`,tone:"neutral"},null,8,["value"]),a(e(T),{label:"Mode",value:u.value.executionMode||"—",tone:"neutral"},null,8,["value"])]),_:1}),a(e(we),{modelValue:Y.value,"onUpdate:modelValue":n[6]||(n[6]=o=>Y.value=o)},{default:t(()=>[a(e(_e),null,{default:t(()=>[a(e(S),{value:"invoke"},{default:t(()=>[...n[9]||(n[9]=[v("Invoke",-1)])]),_:1}),a(e(S),{value:"triggers"},{default:t(()=>[...n[10]||(n[10]=[v("Triggers",-1)])]),_:1}),a(e(S),{value:"environment"},{default:t(()=>[...n[11]||(n[11]=[v("Environment",-1)])]),_:1}),a(e(S),{value:"logs"},{default:t(()=>[...n[12]||(n[12]=[v("Logs",-1)])]),_:1})]),_:1}),a(e(x),{value:"invoke"},{default:t(()=>[s("div",Ee,[a(e(d),{direction:"vertical",gap:"1rem"},{default:t(()=>[a(e(k),{variant:"outline"},{header:t(()=>[a(e(d),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:t(()=>[n[13]||(n[13]=s("strong",null,"Invoke function",-1)),s("span",Ve,i(u.value.handler),1)]),_:1})]),footer:t(()=>[a(e(d),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:t(()=>[a(e(d),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[a(e(w),{variant:"solid",loading:V.value,onClick:ue},{default:t(()=>[...n[14]||(n[14]=[v("Invoke",-1)])]),_:1},8,["loading"]),a(e(w),{variant:"ghost",disabled:V.value,onClick:n[5]||(n[5]=o=>C.value="{}")},{default:t(()=>[...n[15]||(n[15]=[v(" Reset payload ",-1)])]),_:1},8,["disabled"])]),_:1}),O.value?(r(),g("span",je," Last invocation accepted as Event — check the Logs tab for output. ")):y("",!0)]),_:1})]),default:t(()=>[a(e(d),{direction:"vertical",gap:"0.75rem"},{default:t(()=>[a(e(Z),{label:"Event payload",hint:"JSON passed to the handler as the event"},{default:t(()=>[a(e(he),{modelValue:C.value,"onUpdate:modelValue":n[3]||(n[3]=o=>C.value=o),class:"mono",rows:8,placeholder:"{}"},null,8,["modelValue"])]),_:1}),a(e(Z),{label:"Invocation type",style:{"max-width":"20rem"}},{default:t(()=>[a(e(be),{modelValue:E.value,"onUpdate:modelValue":n[4]||(n[4]=o=>E.value=o),options:oe},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),f.value?(r(),c(e(k),{key:0,variant:"outline"},{header:t(()=>[a(e(d),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:t(()=>[a(e(d),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[n[16]||(n[16]=s("strong",null,"Result",-1)),a(e(I),{tone:f.value.ok?"success":"danger",variant:"soft"},{default:t(()=>{var o;return[v(i(f.value.ok?"OK":((o=f.value.functionError)==null?void 0:o.errorType)||"Error"),1)]}),_:1},8,["tone"])]),_:1}),s("span",Me,i(f.value.durationMs)+"ms ",1)]),_:1})]),default:t(()=>[a(e(d),{direction:"vertical",gap:"0.75rem"},{default:t(()=>{var o,m,P;return[f.value.ok?(r(),g(N,{key:0},[n[17]||(n[17]=s("strong",{style:{"font-size":"0.8rem"}},"Response payload",-1)),s("pre",Se,i(ie.value),1)],64)):(r(),g(N,{key:1},[n[18]||(n[18]=s("strong",{style:{"font-size":"0.8rem"}},"Function error",-1)),s("pre",xe,i([`${((o=f.value.functionError)==null?void 0:o.errorType)||"Error"}: ${((m=f.value.functionError)==null?void 0:m.errorMessage)||""}`,...((P=f.value.functionError)==null?void 0:P.trace)||[]].join(`
|
|
2
2
|
`)),1)],64)),a(e(ze)),n[19]||(n[19]=s("strong",{style:{"font-size":"0.8rem"}},"Captured logs",-1)),s("pre",Ie,i(f.value.logs.join(`
|
|
3
3
|
`)||"— no output —"),1)]}),_:1})]),_:1})):y("",!0)]),_:1})])]),_:1}),a(e(x),{value:"triggers"},{default:t(()=>[s("div",qe,[a(e(d),{direction:"vertical",gap:"1rem"},{default:t(()=>[a(e(k),{variant:"outline"},{header:t(()=>[...n[20]||(n[20]=[s("strong",null,"Trigger sources",-1)])]),default:t(()=>[a(e(d),{direction:"horizontal",gap:"0.25rem",wrap:""},{default:t(()=>[u.value.triggers.length?(r(!0),g(N,{key:0},Q(u.value.triggers,o=>(r(),c(e(U),{key:o,size:"sm",variant:"soft"},{default:t(()=>[v(i(o),1)]),_:2},1024))),128)):(r(),g("span",Be,"—"))]),_:1})]),_:1}),a(e(k),{variant:"outline"},{header:t(()=>[...n[21]||(n[21]=[s("strong",null,"HTTP routes",-1)])]),default:t(()=>[u.value.routes.length?(r(),c(e(X),{key:0,columns:se,rows:re.value},{"cell-method":t(({row:o})=>[a(e(I),{tone:fe(String(o.method)),variant:"soft"},{default:t(()=>[v(i(o.method),1)]),_:2},1032,["tone"])]),"cell-path":t(({row:o})=>[s("span",De,i(o.path),1)]),"cell-eventType":t(({row:o})=>[a(e(U),{size:"sm",variant:"soft"},{default:t(()=>[v(i(o.eventType),1)]),_:2},1024)]),"cell-authorizerName":t(({row:o})=>[o.authorizerName?(r(),c(e(U),{key:0,size:"sm",variant:"soft"},{default:t(()=>[v(i(o.authorizerName),1)]),_:2},1024)):(r(),g("span",Fe,"—"))]),_:1},8,["rows"])):(r(),c(e(H),{key:1,title:"No HTTP routes",description:"This function has no http/httpApi events pointing at it."}))]),_:1})]),_:1})])]),_:1}),a(e(x),{value:"environment"},{default:t(()=>[s("div",Oe,[a(e(k),{variant:"outline"},{header:t(()=>[...n[22]||(n[22]=[s("strong",null,"Environment variables",-1)])]),default:t(()=>[G.value.length?(r(),c(e(X),{key:0,columns:le,rows:G.value},{"cell-key":t(({row:o})=>[s("span",Ae,i(o.key),1)]),"cell-value":t(({row:o})=>[s("span",Pe,i(o.value),1)]),_:1},8,["rows"])):(r(),c(e(H),{key:1,title:"No environment variables",description:"No environment variables are configured for this function."}))]),_:1})])]),_:1}),a(e(x),{value:"logs"},{default:t(()=>[s("div",Je,[a(e(k),{variant:"outline"},{header:t(()=>[a(e(d),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:t(()=>[s("strong",null,"Recent invocations ("+i(z.value.length)+")",1),a(e(w),{size:"sm",variant:"ghost",loading:j.value,onClick:A},{default:t(()=>[...n[23]||(n[23]=[v(" Refresh ",-1)])]),_:1},8,["loading"])]),_:1})]),default:t(()=>[j.value&&!z.value.length?(r(),g("div",Ue,[a(e(W),{label:"Loading invocations..."})])):z.value.length?(r(),c(e(d),{key:2,direction:"vertical",gap:"0.5rem"},{default:t(()=>[(r(!0),g(N,null,Q(z.value,(o,m)=>(r(),c(e(k),{key:`inv-${m}`,variant:"soft"},{default:t(()=>[a(e(d),{direction:"vertical",gap:"0.5rem"},{default:t(()=>[s("a",{href:"#",style:{"text-decoration":"none",color:"inherit"},onClick:$e(P=>de(m),["prevent"])},[a(e(d),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:t(()=>[a(e(d),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[s("span",Ke,i(M.value[m]?"▼":"▶"),1),s("span",Ye,i(ce(o.at)),1),a(e(I),{tone:o.ok?"success":"danger",variant:"soft"},{default:t(()=>[v(i(o.ok?"OK":"Error"),1)]),_:2},1032,["tone"]),o.statusCode&&o.statusCode>=400?(r(),c(e(I),{key:0,tone:o.statusCode>=500?"danger":"warning",variant:"soft"},{default:t(()=>[v(" HTTP "+i(o.statusCode),1)]),_:2},1032,["tone"])):y("",!0)]),_:2},1024),s("span",Ge,i(o.durationMs)+"ms · "+i(o.logs.length)+" line"+i(o.logs.length===1?"":"s"),1)]),_:2},1024)],8,He),M.value[m]?(r(),g("pre",We,i(o.logs.join(`
|
|
4
4
|
`)||"— no output —"),1)):y("",!0)]),_:2},1024)]),_:2},1024))),128))]),_:1})):(r(),c(e(H),{key:1,title:"No invocations recorded",description:"Invoke the function to see its captured output here."}))]),_:1})])]),_:1})]),_:1},8,["modelValue"])],64)):y("",!0)]),_:1}))}}),Xe=ee({__name:"LambdaDetailPage",props:{functionName:{}},setup(L){const B=te();function _(){B.push("/lambdas")}return(K,D)=>(r(),c(Ze,{"function-name":L.functionName,onBack:_},null,8,["function-name"]))}});export{Xe as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{k as w,W as F,l as T,o as j,m as o,e as c,U as a,t as m,Z as t,j as s,w as M,x as _,G as U,i as u,T as l,f as h,q as V,g as p,s as A,z as E,A as q,d as v,p as k,F as G,n as H,u as z,R as O,a0 as P,r as $,b as N,a as W}from"./index-
|
|
1
|
+
import{k as w,W as F,l as T,o as j,m as o,e as c,U as a,t as m,Z as t,j as s,w as M,x as _,G as U,i as u,T as l,f as h,q as V,g as p,s as A,z as E,A as q,d as v,p as k,F as G,n as H,u as z,R as O,a0 as P,r as $,b as N,a as W}from"./index-DGkmrq2b.js";const Z={key:0,style:{display:"flex","justify-content":"center",padding:"2rem"}},J=["onClick"],K={class:"muted mono",style:{"font-size":"0.75rem"}},Q={class:"mono",style:{"font-size":"0.78rem"}},X={key:1,class:"muted"},Y={style:{"font-size":"0.8rem"}},ee={key:0,class:"muted mono",style:{"font-size":"0.75rem"}},te=w({__name:"LambdasList",setup(C){const L=F(),r=$([]),d=$(!0),f=$(null);let y=null;const D=[{key:"name",label:"Function"},{key:"service",label:"Service"},{key:"runtime",label:"Runtime"},{key:"handler",label:"Handler"},{key:"triggers",label:"Triggers"},{key:"status",label:"Status"},{key:"invocations",label:"Invocations",align:"right"},{key:"last",label:"Last"}],I=N(()=>r.value.map(n=>({...n}))),g=N(()=>({total:r.value.length,online:r.value.filter(n=>n.status==="online").length,invocations:r.value.reduce((n,i)=>n+i.invocations,0),errors:r.value.reduce((n,i)=>n+i.errors,0)}));async function x(){try{r.value=await W.listLambdas(),f.value=null}catch(n){f.value=n.message||"Failed to load lambdas"}finally{d.value=!1}}function R(n){L.push(`/lambdas/${encodeURIComponent(n)}`)}function S(n){switch(n){case"online":return"success";case"starting":return"info";case"stopped":return"neutral";default:return"danger"}}function B(n){return n?new Date(n).toLocaleString():"—"}return T(()=>{x(),y=window.setInterval(x,1e4)}),j(()=>{y&&window.clearInterval(y)}),(n,i)=>(o(),c(a(m),{direction:"vertical",gap:"1.25rem"},{default:t(()=>[s(a(M),{columns:4,gap:"1rem"},{default:t(()=>[s(a(_),{label:"Functions",value:g.value.total,tone:"info",loading:d.value},null,8,["value","loading"]),s(a(_),{label:"Online",value:g.value.online,tone:"success",loading:d.value},null,8,["value","loading"]),s(a(_),{label:"Invocations (session)",value:g.value.invocations,tone:"info",loading:d.value},null,8,["value","loading"]),s(a(_),{label:"Errors",value:g.value.errors,tone:g.value.errors>0?"warning":"neutral",loading:d.value},null,8,["value","tone","loading"])]),_:1}),f.value?(o(),c(a(U),{key:0,variant:"danger",dismissible:"",onDismiss:i[0]||(i[0]=e=>f.value=null)},{default:t(()=>[u(l(f.value),1)]),_:1})):h("",!0),s(a(V),{variant:"outline"},{header:t(()=>[s(a(m),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:t(()=>[...i[1]||(i[1]=[v("strong",null,"Lambda functions",-1),v("span",{class:"muted"},"Live · refreshes every 10s",-1)])]),_:1})]),default:t(()=>[d.value?(o(),p("div",Z,[s(a(A),{label:"Loading lambdas..."})])):r.value.length?(o(),c(a(q),{key:2,columns:D,rows:I.value},{"cell-name":t(({row:e})=>[s(a(m),{direction:"vertical",gap:"0.125rem"},{default:t(()=>[v("a",{href:"#",style:{"text-decoration":"none","font-weight":"600"},onClick:P(b=>R(String(e.name)),["prevent"])},l(e.name),9,J),v("span",K,l(e.fullName),1)]),_:2},1024)]),"cell-service":t(({row:e})=>[s(a(O),{to:`/services/${encodeURIComponent(String(e.service))}`,style:{"text-decoration":"none"}},{default:t(()=>[s(a(z),{size:"sm",variant:"soft",clickable:""},{default:t(()=>[u(l(e.service),1)]),_:2},1024)]),_:2},1032,["to"])]),"cell-runtime":t(({row:e})=>[u(l(e.runtime),1)]),"cell-handler":t(({row:e})=>[v("span",Q,l(e.handler),1)]),"cell-triggers":t(({row:e})=>[s(a(m),{direction:"horizontal",gap:"0.25rem",wrap:""},{default:t(()=>[e.triggers.length?(o(!0),p(G,{key:0},H(e.triggers,b=>(o(),c(a(z),{key:b,size:"sm",variant:"soft"},{default:t(()=>[u(l(b),1)]),_:2},1024))),128)):(o(),p("span",X,"—"))]),_:2},1024)]),"cell-status":t(({row:e})=>[s(a(k),{tone:S(String(e.status)),variant:"soft"},{default:t(()=>[u(l(e.status),1)]),_:2},1032,["tone"])]),"cell-invocations":t(({row:e})=>[s(a(m),{direction:"horizontal",gap:"0.375rem",justify:"flex-end"},{default:t(()=>[s(a(k),{tone:Number(e.invocations)>0?"info":"neutral",variant:"soft"},{default:t(()=>[u(l(e.invocations),1)]),_:2},1032,["tone"]),Number(e.errors)>0?(o(),c(a(k),{key:0,tone:"danger",variant:"soft"},{default:t(()=>[u(l(e.errors)+" err ",1)]),_:2},1024)):h("",!0)]),_:2},1024)]),"cell-last":t(({row:e})=>[s(a(m),{direction:"vertical",gap:"0.125rem"},{default:t(()=>[v("span",Y,l(B(e.lastInvokedAt)),1),e.lastDurationMs!==void 0?(o(),p("span",ee,l(e.lastDurationMs)+"ms ",1)):h("",!0)]),_:2},1024)]),_:1},8,["rows"])):(o(),c(a(E),{key:1,title:"No functions registered",description:"Register a microservice that defines Lambda functions to see them here."}))]),_:1})]),_:1}))}}),ne=w({__name:"LambdasPage",setup(C){return(L,r)=>(o(),c(te))}});export{ne as default};
|