aboutsummaryrefslogtreecommitdiff
path: root/web/ui/src/lib/keys.ts
diff options
context:
space:
mode:
authorbenj <benj@rse8.com>2026-04-10 11:13:34 +0800
committerbenj <benj@rse8.com>2026-04-10 11:13:34 +0800
commit493746b14c1251a45b061d2e3edd9160c929d2b9 (patch)
tree1607cceb94c1aac1a17a01bb5c0d71b97342e892 /web/ui/src/lib/keys.ts
parentc041641634650c31e03c70dcad132fd94cb08e63 (diff)
downloadtidyindex-493746b14c1251a45b061d2e3edd9160c929d2b9.tar
tidyindex-493746b14c1251a45b061d2e3edd9160c929d2b9.tar.gz
tidyindex-493746b14c1251a45b061d2e3edd9160c929d2b9.tar.bz2
tidyindex-493746b14c1251a45b061d2e3edd9160c929d2b9.tar.lz
tidyindex-493746b14c1251a45b061d2e3edd9160c929d2b9.tar.xz
tidyindex-493746b14c1251a45b061d2e3edd9160c929d2b9.tar.zst
tidyindex-493746b14c1251a45b061d2e3edd9160c929d2b9.zip
a basic ui and landing web interface for tidyindex.com
Diffstat (limited to '')
-rw-r--r--web/ui/src/lib/keys.ts24
1 files changed, 24 insertions, 0 deletions
diff --git a/web/ui/src/lib/keys.ts b/web/ui/src/lib/keys.ts
new file mode 100644
index 0000000..5fddedc
--- /dev/null
+++ b/web/ui/src/lib/keys.ts
@@ -0,0 +1,24 @@
+import { DATASETS } from './datasets';
+
+/** Display mask: prefix + bullets. We don't store the full key, so we
+ * cannot show any trailing characters from it after creation. */
+export function maskKey(prefix: string): string {
+ return `${prefix}${'\u2022'.repeat(24)}`;
+}
+
+/** Validate + normalize a scope list from user input. Used server-side
+ * when persisting a new key; kept in the client-safe module so the
+ * create-key form can mirror its logic if it wants. */
+export function normalizeScopes(input: string[]): string[] {
+ if (!input || input.length === 0) return ['*'];
+ if (input.includes('*')) return ['*'];
+ const allowed = new Set<string>(DATASETS);
+ const out = input.filter((s) => allowed.has(s));
+ return out.length === 0 ? ['*'] : out;
+}
+
+export function scopeSummary(scopes: string[]): string {
+ if (scopes.length === 1 && scopes[0] === '*') return 'all datasets';
+ if (scopes.length <= 3) return scopes.join(', ');
+ return `${scopes.slice(0, 2).join(', ')} +${scopes.length - 2} more`;
+}