@fuzdev/fuz_app 0.3.3 → 0.5.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/dist/actions/action_bridge.js +1 -1
- package/dist/actions/action_spec.d.ts +8 -8
- package/dist/actions/action_spec.d.ts.map +1 -1
- package/dist/actions/action_spec.js +2 -2
- package/dist/http/db_routes.d.ts.map +1 -1
- package/dist/http/db_routes.js +4 -2
- package/dist/http/schema_helpers.d.ts +3 -3
- package/dist/http/schema_helpers.d.ts.map +1 -1
- package/dist/http/schema_helpers.js +5 -10
- package/dist/ui/AdminAuditLog.svelte +2 -2
- package/dist/ui/AdminInvites.svelte +2 -2
- package/dist/ui/AdminSurface.svelte +3 -3
- package/dist/ui/BootstrapForm.svelte +4 -4
- package/dist/ui/Datatable.svelte +3 -3
- package/dist/ui/LoginForm.svelte +2 -2
- package/dist/ui/LogoutButton.svelte +1 -1
- package/dist/ui/SignupForm.svelte +4 -4
- package/dist/ui/SurfaceExplorer.svelte +3 -3
- package/dist/ui/account_sessions_state.svelte.d.ts.map +1 -1
- package/dist/ui/account_sessions_state.svelte.js +1 -1
- package/dist/ui/admin_accounts_state.svelte.d.ts.map +1 -1
- package/dist/ui/admin_accounts_state.svelte.js +2 -2
- package/dist/ui/admin_invites_state.svelte.d.ts.map +1 -1
- package/dist/ui/admin_invites_state.svelte.js +2 -2
- package/dist/ui/admin_sessions_state.svelte.d.ts.map +1 -1
- package/dist/ui/admin_sessions_state.svelte.js +1 -1
- package/dist/ui/app_settings_state.svelte.d.ts.map +1 -1
- package/dist/ui/app_settings_state.svelte.js +2 -2
- package/dist/ui/audit_log_state.svelte.d.ts.map +1 -1
- package/dist/ui/audit_log_state.svelte.js +3 -3
- package/dist/ui/auth_state.svelte.d.ts.map +1 -1
- package/dist/ui/auth_state.svelte.js +6 -6
- package/dist/ui/form_state.svelte.d.ts +1 -1
- package/dist/ui/form_state.svelte.js +2 -2
- package/dist/ui/loadable.svelte.d.ts +1 -1
- package/dist/ui/loadable.svelte.d.ts.map +1 -1
- package/dist/ui/loadable.svelte.js +4 -4
- package/dist/ui/popover.svelte.d.ts.map +1 -1
- package/dist/ui/popover.svelte.js +6 -6
- package/dist/ui/sidebar_state.svelte.js +2 -2
- package/dist/ui/table_state.svelte.d.ts.map +1 -1
- package/dist/ui/table_state.svelte.js +9 -9
- package/package.json +1 -1
|
@@ -19,7 +19,7 @@ export const map_action_auth = (auth) => {
|
|
|
19
19
|
};
|
|
20
20
|
/** Derive the default HTTP method from side effects. */
|
|
21
21
|
export const derive_http_method = (side_effects) => {
|
|
22
|
-
return side_effects
|
|
22
|
+
return side_effects ? 'POST' : 'GET';
|
|
23
23
|
};
|
|
24
24
|
/**
|
|
25
25
|
* Derive a `RouteSpec` from an `ActionSpec` and options.
|
|
@@ -29,7 +29,7 @@ export declare const ActionAuth: z.ZodUnion<readonly [z.ZodLiteral<"public">, z.
|
|
|
29
29
|
role: z.ZodString;
|
|
30
30
|
}, z.core.$strict>]>;
|
|
31
31
|
export type ActionAuth = z.infer<typeof ActionAuth>;
|
|
32
|
-
export declare const ActionSideEffects: z.
|
|
32
|
+
export declare const ActionSideEffects: z.ZodBoolean;
|
|
33
33
|
export type ActionSideEffects = z.infer<typeof ActionSideEffects>;
|
|
34
34
|
export declare const ActionSpec: z.ZodObject<{
|
|
35
35
|
method: z.ZodString;
|
|
@@ -46,7 +46,7 @@ export declare const ActionSpec: z.ZodObject<{
|
|
|
46
46
|
auth: z.ZodNullable<z.ZodUnion<readonly [z.ZodLiteral<"public">, z.ZodLiteral<"authenticated">, z.ZodLiteral<"keeper">, z.ZodObject<{
|
|
47
47
|
role: z.ZodString;
|
|
48
48
|
}, z.core.$strict>]>>;
|
|
49
|
-
side_effects: z.
|
|
49
|
+
side_effects: z.ZodBoolean;
|
|
50
50
|
input: z.ZodCustom<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
|
|
51
51
|
output: z.ZodCustom<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
|
|
52
52
|
async: z.ZodBoolean;
|
|
@@ -60,7 +60,7 @@ export declare const RequestResponseActionSpec: z.ZodObject<{
|
|
|
60
60
|
frontend: "frontend";
|
|
61
61
|
backend: "backend";
|
|
62
62
|
}>;
|
|
63
|
-
side_effects: z.
|
|
63
|
+
side_effects: z.ZodBoolean;
|
|
64
64
|
input: z.ZodCustom<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
|
|
65
65
|
output: z.ZodCustom<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
|
|
66
66
|
description: z.ZodString;
|
|
@@ -82,7 +82,7 @@ export declare const RemoteNotificationActionSpec: z.ZodObject<{
|
|
|
82
82
|
description: z.ZodString;
|
|
83
83
|
kind: z.ZodDefault<z.ZodLiteral<"remote_notification">>;
|
|
84
84
|
auth: z.ZodDefault<z.ZodNull>;
|
|
85
|
-
side_effects: z.ZodDefault<z.
|
|
85
|
+
side_effects: z.ZodDefault<z.ZodLiteral<true>>;
|
|
86
86
|
output: z.ZodCustom<z.ZodVoid, z.ZodVoid>;
|
|
87
87
|
async: z.ZodDefault<z.ZodLiteral<true>>;
|
|
88
88
|
}, z.core.$strict>;
|
|
@@ -98,7 +98,7 @@ export declare const LocalCallActionSpec: z.ZodObject<{
|
|
|
98
98
|
frontend: "frontend";
|
|
99
99
|
backend: "backend";
|
|
100
100
|
}>;
|
|
101
|
-
side_effects: z.
|
|
101
|
+
side_effects: z.ZodBoolean;
|
|
102
102
|
input: z.ZodCustom<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
|
|
103
103
|
output: z.ZodCustom<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
|
|
104
104
|
async: z.ZodBoolean;
|
|
@@ -114,7 +114,7 @@ export declare const ActionSpecUnion: z.ZodUnion<readonly [z.ZodObject<{
|
|
|
114
114
|
frontend: "frontend";
|
|
115
115
|
backend: "backend";
|
|
116
116
|
}>;
|
|
117
|
-
side_effects: z.
|
|
117
|
+
side_effects: z.ZodBoolean;
|
|
118
118
|
input: z.ZodCustom<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
|
|
119
119
|
output: z.ZodCustom<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
|
|
120
120
|
description: z.ZodString;
|
|
@@ -134,7 +134,7 @@ export declare const ActionSpecUnion: z.ZodUnion<readonly [z.ZodObject<{
|
|
|
134
134
|
description: z.ZodString;
|
|
135
135
|
kind: z.ZodDefault<z.ZodLiteral<"remote_notification">>;
|
|
136
136
|
auth: z.ZodDefault<z.ZodNull>;
|
|
137
|
-
side_effects: z.ZodDefault<z.
|
|
137
|
+
side_effects: z.ZodDefault<z.ZodLiteral<true>>;
|
|
138
138
|
output: z.ZodCustom<z.ZodVoid, z.ZodVoid>;
|
|
139
139
|
async: z.ZodDefault<z.ZodLiteral<true>>;
|
|
140
140
|
}, z.core.$strict>, z.ZodObject<{
|
|
@@ -144,7 +144,7 @@ export declare const ActionSpecUnion: z.ZodUnion<readonly [z.ZodObject<{
|
|
|
144
144
|
frontend: "frontend";
|
|
145
145
|
backend: "backend";
|
|
146
146
|
}>;
|
|
147
|
-
side_effects: z.
|
|
147
|
+
side_effects: z.ZodBoolean;
|
|
148
148
|
input: z.ZodCustom<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
|
|
149
149
|
output: z.ZodCustom<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
|
|
150
150
|
async: z.ZodBoolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action_spec.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/actions/action_spec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB,eAAO,MAAM,UAAU;;;;EAAoE,CAAC;AAC5F,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEpD,eAAO,MAAM,eAAe;;;;EAA0C,CAAC;AACvE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,eAAO,MAAM,UAAU;;oBAKrB,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEpD,eAAO,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"action_spec.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/actions/action_spec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB,eAAO,MAAM,UAAU;;;;EAAoE,CAAC;AAC5F,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEpD,eAAO,MAAM,eAAe;;;;EAA0C,CAAC;AACvE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,eAAO,MAAM,UAAU;;oBAKrB,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEpD,eAAO,MAAM,iBAAiB,cAAc,CAAC;AAC7C,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;kBAUrB,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEpD,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;kBAIpC,CAAC;AACH,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAElF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;kBAMvC,CAAC;AACH,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAExF;;;GAGG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;kBAG9B,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEtE,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAI1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,eAAO,MAAM,cAAc,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,eAKoB,CAAC;AAE9E,eAAO,MAAM,gBAAgB;;;;;;;;;;EAU3B,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
|
|
@@ -21,7 +21,7 @@ export const ActionAuth = z.union([
|
|
|
21
21
|
z.literal('keeper'),
|
|
22
22
|
z.strictObject({ role: z.string() }),
|
|
23
23
|
]);
|
|
24
|
-
export const ActionSideEffects = z.
|
|
24
|
+
export const ActionSideEffects = z.boolean();
|
|
25
25
|
export const ActionSpec = z.strictObject({
|
|
26
26
|
method: z.string(),
|
|
27
27
|
kind: ActionKind,
|
|
@@ -41,7 +41,7 @@ export const RequestResponseActionSpec = ActionSpec.extend({
|
|
|
41
41
|
export const RemoteNotificationActionSpec = ActionSpec.extend({
|
|
42
42
|
kind: z.literal('remote_notification').default('remote_notification'),
|
|
43
43
|
auth: z.null().default(null),
|
|
44
|
-
side_effects: z.literal(true).
|
|
44
|
+
side_effects: z.literal(true).default(true),
|
|
45
45
|
output: z.custom((v) => v instanceof z.ZodVoid),
|
|
46
46
|
async: z.literal(true).default(true),
|
|
47
47
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db_routes.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/http/db_routes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,yBAAyB,CAAC;AAEpD,OAAO,KAAK,EAAC,EAAE,EAAE,MAAM,EAAC,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAmB,KAAK,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAWjE;;GAEG;AACH,MAAM,WAAW,SAAS;IACzB,UAAU,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B,WAAW,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3D,+EAA+E;IAC/E,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAAI,SAAS,cAAc,KAAG,KAAK,CAAC,SAAS,
|
|
1
|
+
{"version":3,"file":"db_routes.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/http/db_routes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,yBAAyB,CAAC;AAEpD,OAAO,KAAK,EAAC,EAAE,EAAE,MAAM,EAAC,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAmB,KAAK,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAWjE;;GAEG;AACH,MAAM,WAAW,SAAS;IACzB,UAAU,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B,WAAW,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3D,+EAA+E;IAC/E,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAAI,SAAS,cAAc,KAAG,KAAK,CAAC,SAAS,CAuN9E,CAAC"}
|
package/dist/http/db_routes.js
CHANGED
|
@@ -57,7 +57,9 @@ export const create_db_route_specs = (options) => {
|
|
|
57
57
|
auth: { type: 'keeper' },
|
|
58
58
|
description: 'List public tables with row counts',
|
|
59
59
|
input: z.null(),
|
|
60
|
-
output: z.looseObject({
|
|
60
|
+
output: z.looseObject({
|
|
61
|
+
tables: z.array(z.strictObject({ name: z.string(), row_count: z.number() })),
|
|
62
|
+
}),
|
|
61
63
|
handler: async (c, route) => {
|
|
62
64
|
const table_names = await route.db.query(`SELECT table_name FROM information_schema.tables
|
|
63
65
|
WHERE table_schema = 'public'
|
|
@@ -83,7 +85,7 @@ export const create_db_route_specs = (options) => {
|
|
|
83
85
|
input: z.null(),
|
|
84
86
|
errors: { 404: z.looseObject({ error: z.literal(ERROR_TABLE_NOT_FOUND) }) },
|
|
85
87
|
output: z.looseObject({
|
|
86
|
-
columns: z.array(z.
|
|
88
|
+
columns: z.array(z.strictObject({ column_name: z.string(), data_type: z.string(), is_nullable: z.string() })),
|
|
87
89
|
rows: z.array(z.record(z.string(), z.unknown())),
|
|
88
90
|
total: z.number(),
|
|
89
91
|
offset: z.number(),
|
|
@@ -13,9 +13,9 @@ import { type RateLimitKey, type RouteErrorSchemas } from './error_schemas.js';
|
|
|
13
13
|
/**
|
|
14
14
|
* Check if a schema is exactly `z.null()`.
|
|
15
15
|
*
|
|
16
|
-
* Uses
|
|
17
|
-
*
|
|
18
|
-
*
|
|
16
|
+
* Uses `instanceof` rather than runtime parsing to avoid false positives
|
|
17
|
+
* from `z.nullable(z.string())` or similar schemas that accept null
|
|
18
|
+
* but also accept other values.
|
|
19
19
|
*/
|
|
20
20
|
export declare const is_null_schema: (schema: z.ZodType) => boolean;
|
|
21
21
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema_helpers.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/http/schema_helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAuB,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAC,MAAM,oBAAoB,CAAC;AAEnG;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,CAAC,CAAC,OAAO,KAAG,
|
|
1
|
+
{"version":3,"file":"schema_helpers.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/http/schema_helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAuB,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAC,MAAM,oBAAoB,CAAC;AAEnG;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,CAAC,CAAC,OAAO,KAAG,OAAsC,CAAC;AAE1F;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,GAAI,QAAQ,CAAC,CAAC,OAAO,KAAG,OACe,CAAC;AAE5E;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAAI,QAAQ,CAAC,CAAC,OAAO,KAAG,OAcrD,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,GAAI,SAAS,MAAM,EAAE,YAAY,MAAM,KAAG,OAQxE,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,mBAAmB,GAC/B,MAAM;IACL,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;IACpB,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC3B,EACD,oBAAoB,iBAAiB,GAAG,IAAI,KAC1C,iBAAiB,GAAG,IAUtB,CAAC"}
|
|
@@ -12,23 +12,18 @@ import { derive_error_schemas } from './error_schemas.js';
|
|
|
12
12
|
/**
|
|
13
13
|
* Check if a schema is exactly `z.null()`.
|
|
14
14
|
*
|
|
15
|
-
* Uses
|
|
16
|
-
*
|
|
17
|
-
*
|
|
15
|
+
* Uses `instanceof` rather than runtime parsing to avoid false positives
|
|
16
|
+
* from `z.nullable(z.string())` or similar schemas that accept null
|
|
17
|
+
* but also accept other values.
|
|
18
18
|
*/
|
|
19
|
-
export const is_null_schema = (schema) => schema
|
|
19
|
+
export const is_null_schema = (schema) => schema instanceof z.ZodNull;
|
|
20
20
|
/**
|
|
21
21
|
* Check if a schema is a strict object (`z.strictObject()`).
|
|
22
22
|
*
|
|
23
23
|
* Strict objects set `catchall` to `ZodNever` to reject unknown keys.
|
|
24
24
|
* Regular `z.object()` has `catchall: undefined` (strips unknown keys in Zod 4).
|
|
25
25
|
*/
|
|
26
|
-
export const is_strict_object_schema = (schema) =>
|
|
27
|
-
if (schema._zod.def.type !== 'object')
|
|
28
|
-
return false;
|
|
29
|
-
const catchall = schema._zod.def.catchall;
|
|
30
|
-
return catchall?._zod.def.type === 'never';
|
|
31
|
-
};
|
|
26
|
+
export const is_strict_object_schema = (schema) => schema instanceof z.ZodObject && schema.def.catchall instanceof z.ZodNever;
|
|
32
27
|
/**
|
|
33
28
|
* Convert a Zod schema to a JSON-serializable representation for the surface.
|
|
34
29
|
*
|
|
@@ -17,8 +17,8 @@
|
|
|
17
17
|
|
|
18
18
|
const audit_log = new AuditLogState();
|
|
19
19
|
|
|
20
|
-
let filter_event_type: string = $state('');
|
|
21
|
-
let streaming = $state(false);
|
|
20
|
+
let filter_event_type: string = $state.raw('');
|
|
21
|
+
let streaming = $state.raw(false);
|
|
22
22
|
|
|
23
23
|
const load = (): void => {
|
|
24
24
|
void audit_log.fetch(filter_event_type ? {event_type: filter_event_type} : undefined);
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
|
|
12
12
|
const admin_invites = new AdminInvitesState();
|
|
13
13
|
|
|
14
|
-
let invite_email = $state('');
|
|
15
|
-
let invite_username = $state('');
|
|
14
|
+
let invite_email = $state.raw('');
|
|
15
|
+
let invite_username = $state.raw('');
|
|
16
16
|
|
|
17
17
|
const can_create = $derived(
|
|
18
18
|
(invite_email.trim() || invite_username.trim()) && !admin_invites.creating,
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
import SurfaceExplorer from './SurfaceExplorer.svelte';
|
|
4
4
|
import {ui_fetch} from './ui_fetch.js';
|
|
5
5
|
|
|
6
|
-
let surface: AppSurface | null = $state(null);
|
|
7
|
-
let loading = $state(true);
|
|
8
|
-
let error: string | null = $state(null);
|
|
6
|
+
let surface: AppSurface | null = $state.raw(null);
|
|
7
|
+
let loading = $state.raw(true);
|
|
8
|
+
let error: string | null = $state.raw(null);
|
|
9
9
|
|
|
10
10
|
const load = async (): Promise<void> => {
|
|
11
11
|
loading = true;
|
|
@@ -10,10 +10,10 @@
|
|
|
10
10
|
const auth_state = auth_state_context.get();
|
|
11
11
|
const form_state = new FormState();
|
|
12
12
|
|
|
13
|
-
let token = $state('');
|
|
14
|
-
let username = $state('');
|
|
15
|
-
let password = $state('');
|
|
16
|
-
let password_confirm = $state('');
|
|
13
|
+
let token = $state.raw('');
|
|
14
|
+
let username = $state.raw('');
|
|
15
|
+
let password = $state.raw('');
|
|
16
|
+
let password_confirm = $state.raw('');
|
|
17
17
|
|
|
18
18
|
const username_valid = $derived(Username.safeParse(username).success);
|
|
19
19
|
const passwords_match = $derived(password === password_confirm);
|
package/dist/ui/Datatable.svelte
CHANGED
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
const grid_template_columns = $derived(column_widths.map((w) => `${w}px`).join(' '));
|
|
45
45
|
|
|
46
46
|
// column resize
|
|
47
|
-
let resize_col_index: number | null = $state(null);
|
|
48
|
-
let resize_start_x = $state(0);
|
|
49
|
-
let resize_start_width = $state(0);
|
|
47
|
+
let resize_col_index: number | null = $state.raw(null);
|
|
48
|
+
let resize_start_x = $state.raw(0);
|
|
49
|
+
let resize_start_width = $state.raw(0);
|
|
50
50
|
|
|
51
51
|
const handle_resize_start = (e: PointerEvent, index: number): void => {
|
|
52
52
|
e.preventDefault();
|
package/dist/ui/LoginForm.svelte
CHANGED
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
const auth_state = auth_state_context.get();
|
|
19
19
|
const form_state = new FormState();
|
|
20
20
|
|
|
21
|
-
let username = $state('');
|
|
22
|
-
let password = $state('');
|
|
21
|
+
let username = $state.raw('');
|
|
22
|
+
let password = $state.raw('');
|
|
23
23
|
|
|
24
24
|
const handle_login = async (): Promise<void> => {
|
|
25
25
|
const u = username.trim();
|
|
@@ -18,10 +18,10 @@
|
|
|
18
18
|
const auth_state = auth_state_context.get();
|
|
19
19
|
const form_state = new FormState();
|
|
20
20
|
|
|
21
|
-
let username = $state('');
|
|
22
|
-
let email = $state('');
|
|
23
|
-
let password = $state('');
|
|
24
|
-
let password_confirm = $state('');
|
|
21
|
+
let username = $state.raw('');
|
|
22
|
+
let email = $state.raw('');
|
|
23
|
+
let password = $state.raw('');
|
|
24
|
+
let password_confirm = $state.raw('');
|
|
25
25
|
|
|
26
26
|
const username_valid = $derived(Username.safeParse(username).success);
|
|
27
27
|
const passwords_match = $derived(password === password_confirm);
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
|
|
13
13
|
const auth_types = ['all', 'none', 'authenticated', 'role', 'keeper'] as const;
|
|
14
14
|
|
|
15
|
-
let auth_filter: (typeof auth_types)[number] = $state('all');
|
|
16
|
-
let expanded_route: string | null = $state(null);
|
|
15
|
+
let auth_filter: (typeof auth_types)[number] = $state.raw('all');
|
|
16
|
+
let expanded_route: string | null = $state.raw(null);
|
|
17
17
|
|
|
18
18
|
const summary = $derived(surface_auth_summary(surface));
|
|
19
19
|
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
: surface.routes.filter((r) => r.auth.type === auth_filter),
|
|
24
24
|
);
|
|
25
25
|
|
|
26
|
-
let expanded_event: string | null = $state(null);
|
|
26
|
+
let expanded_event: string | null = $state.raw(null);
|
|
27
27
|
|
|
28
28
|
const toggle_route = (key: string): void => {
|
|
29
29
|
expanded_route = expanded_route === key ? null : key;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account_sessions_state.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/ui/account_sessions_state.svelte.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAE9C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAC;AAE3D,qBAAa,oBAAqB,SAAQ,QAAQ;IACjD,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"account_sessions_state.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/ui/account_sessions_state.svelte.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAE9C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAC;AAE3D,qBAAa,oBAAqB,SAAQ,QAAQ;IACjD,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,CAAkB;IAE9C,QAAQ,CAAC,YAAY,SAAkC;IAEjD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAWtB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYjC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAajC"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { Loadable } from './loadable.svelte.js';
|
|
7
7
|
import { parse_response_error, ui_fetch } from './ui_fetch.js';
|
|
8
8
|
export class AccountSessionsState extends Loadable {
|
|
9
|
-
sessions = $state([]);
|
|
9
|
+
sessions = $state.raw([]);
|
|
10
10
|
active_count = $derived(this.sessions.length);
|
|
11
11
|
async fetch() {
|
|
12
12
|
await this.run(async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin_accounts_state.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/ui/admin_accounts_state.svelte.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAE9C,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,2BAA2B,CAAC;AAErE,qBAAa,kBAAmB,SAAQ,QAAQ;IAC/C,QAAQ,EAAE,KAAK,CAAC,qBAAqB,CAAC,
|
|
1
|
+
{"version":3,"file":"admin_accounts_state.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/ui/admin_accounts_state.svelte.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAE9C,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,2BAA2B,CAAC;AAErE,qBAAa,kBAAmB,SAAQ,QAAQ;IAC/C,QAAQ,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAkB;IACxD,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,CAAkB;IAChD,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAC,MAAM,CAAC,CAAmB;IAC5D,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC,MAAM,CAAC,CAAmB;IAE3D,QAAQ,CAAC,aAAa,SAAkC;IAElD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAYtB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB7D,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAkBzE"}
|
|
@@ -7,8 +7,8 @@ import { SvelteSet } from 'svelte/reactivity';
|
|
|
7
7
|
import { Loadable } from './loadable.svelte.js';
|
|
8
8
|
import { parse_response_error, ui_fetch } from './ui_fetch.js';
|
|
9
9
|
export class AdminAccountsState extends Loadable {
|
|
10
|
-
accounts = $state([]);
|
|
11
|
-
grantable_roles = $state([]);
|
|
10
|
+
accounts = $state.raw([]);
|
|
11
|
+
grantable_roles = $state.raw([]);
|
|
12
12
|
granting_keys = new SvelteSet();
|
|
13
13
|
revoking_ids = new SvelteSet();
|
|
14
14
|
account_count = $derived(this.accounts.length);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin_invites_state.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/ui/admin_invites_state.svelte.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAE9C,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,0BAA0B,CAAC;AAEtE,qBAAa,iBAAkB,SAAQ,QAAQ;IAC9C,OAAO,EAAE,KAAK,CAAC,uBAAuB,CAAC,
|
|
1
|
+
{"version":3,"file":"admin_invites_state.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/ui/admin_invites_state.svelte.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAE9C,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,0BAA0B,CAAC;AAEtE,qBAAa,iBAAkB,SAAQ,QAAQ;IAC9C,OAAO,EAAE,KAAK,CAAC,uBAAuB,CAAC,CAAkB;IACzD,QAAQ,UAAqB;IAC7B,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC,MAAM,CAAC,CAAmB;IAE3D,QAAQ,CAAC,YAAY,SAAiC;IACtD,QAAQ,CAAC,eAAe,SAA8D;IAEhF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAWtB,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BlE,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAe9C"}
|
|
@@ -7,8 +7,8 @@ import { SvelteSet } from 'svelte/reactivity';
|
|
|
7
7
|
import { Loadable } from './loadable.svelte.js';
|
|
8
8
|
import { parse_response_error, ui_fetch } from './ui_fetch.js';
|
|
9
9
|
export class AdminInvitesState extends Loadable {
|
|
10
|
-
invites = $state([]);
|
|
11
|
-
creating = $state(false);
|
|
10
|
+
invites = $state.raw([]);
|
|
11
|
+
creating = $state.raw(false);
|
|
12
12
|
deleting_ids = new SvelteSet();
|
|
13
13
|
invite_count = $derived(this.invites.length);
|
|
14
14
|
unclaimed_count = $derived(this.invites.filter((i) => !i.claimed_at).length);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin_sessions_state.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/ui/admin_sessions_state.svelte.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAE9C,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,6BAA6B,CAAC;AAElE,qBAAa,kBAAmB,SAAQ,QAAQ;IAC/C,QAAQ,EAAE,KAAK,CAAC,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"admin_sessions_state.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/ui/admin_sessions_state.svelte.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAE9C,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,6BAA6B,CAAC;AAElE,qBAAa,kBAAmB,SAAQ,QAAQ;IAC/C,QAAQ,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAkB;IACnD,QAAQ,CAAC,oBAAoB,EAAE,SAAS,CAAC,MAAM,CAAC,CAAmB;IACnE,QAAQ,CAAC,0BAA0B,EAAE,SAAS,CAAC,MAAM,CAAC,CAAmB;IAEzE,QAAQ,CAAC,YAAY,SAAkC;IAEjD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAWtB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBzD,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAiBtE"}
|
|
@@ -7,7 +7,7 @@ import { SvelteSet } from 'svelte/reactivity';
|
|
|
7
7
|
import { Loadable } from './loadable.svelte.js';
|
|
8
8
|
import { parse_response_error, ui_fetch } from './ui_fetch.js';
|
|
9
9
|
export class AdminSessionsState extends Loadable {
|
|
10
|
-
sessions = $state([]);
|
|
10
|
+
sessions = $state.raw([]);
|
|
11
11
|
revoking_account_ids = new SvelteSet();
|
|
12
12
|
revoking_token_account_ids = new SvelteSet();
|
|
13
13
|
active_count = $derived(this.sessions.length);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app_settings_state.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/ui/app_settings_state.svelte.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAE9C,OAAO,KAAK,EAAC,2BAA2B,EAAC,MAAM,gCAAgC,CAAC;AAEhF,qBAAa,gBAAiB,SAAQ,QAAQ;IAC7C,QAAQ,EAAE,2BAA2B,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"app_settings_state.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/ui/app_settings_state.svelte.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAE9C,OAAO,KAAK,EAAC,2BAA2B,EAAC,MAAM,gCAAgC,CAAC;AAEhF,qBAAa,gBAAiB,SAAQ,QAAQ;IAC7C,QAAQ,EAAE,2BAA2B,GAAG,IAAI,CAAoB;IAChE,QAAQ,UAAqB;IAEvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAWtB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAqBvD"}
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
import { Loadable } from './loadable.svelte.js';
|
|
7
7
|
import { parse_response_error, ui_fetch } from './ui_fetch.js';
|
|
8
8
|
export class AppSettingsState extends Loadable {
|
|
9
|
-
settings = $state(null);
|
|
10
|
-
updating = $state(false);
|
|
9
|
+
settings = $state.raw(null);
|
|
10
|
+
updating = $state.raw(false);
|
|
11
11
|
async fetch() {
|
|
12
12
|
await this.run(async () => {
|
|
13
13
|
const response = await ui_fetch('/api/admin/settings');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit_log_state.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/ui/audit_log_state.svelte.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAE9C,OAAO,KAAK,EAEX,8BAA8B,EAC9B,sBAAsB,EACtB,MAAM,6BAA6B,CAAC;AAGrC,6CAA6C;AAC7C,MAAM,WAAW,oBAAoB;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,aAAc,SAAQ,QAAQ;;IAC1C,MAAM,EAAE,KAAK,CAAC,8BAA8B,CAAC,
|
|
1
|
+
{"version":3,"file":"audit_log_state.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/ui/audit_log_state.svelte.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAE9C,OAAO,KAAK,EAEX,8BAA8B,EAC9B,sBAAsB,EACtB,MAAM,6BAA6B,CAAC;AAGrC,6CAA6C;AAC7C,MAAM,WAAW,oBAAoB;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,aAAc,SAAQ,QAAQ;;IAC1C,MAAM,EAAE,KAAK,CAAC,8BAA8B,CAAC,CAAkB;IAC/D,qBAAqB,EAAE,KAAK,CAAC,sBAAsB,CAAC,CAAkB;IAEtE,QAAQ,CAAC,KAAK,SAAgC;IAE9C,qDAAqD;IACrD,SAAS,UAAqB;gBAWlB,UAAU,SAAgC;IAKhD,KAAK,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBpD,oBAAoB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB1E;;;;;;;OAOG;IACH,SAAS,IAAI,MAAM,IAAI;IA0CvB,gCAAgC;IAChC,UAAU,IAAI,IAAI;CAmClB"}
|
|
@@ -10,11 +10,11 @@ import { DEV } from 'esm-env';
|
|
|
10
10
|
import { Loadable } from './loadable.svelte.js';
|
|
11
11
|
import { parse_response_error, ui_fetch } from './ui_fetch.js';
|
|
12
12
|
export class AuditLogState extends Loadable {
|
|
13
|
-
events = $state([]);
|
|
14
|
-
permit_history_events = $state([]);
|
|
13
|
+
events = $state.raw([]);
|
|
14
|
+
permit_history_events = $state.raw([]);
|
|
15
15
|
count = $derived(this.events.length);
|
|
16
16
|
/** Whether the SSE stream is currently connected. */
|
|
17
|
-
connected = $state(false);
|
|
17
|
+
connected = $state.raw(false);
|
|
18
18
|
/** The highest `seq` seen — used for gap fill on reconnection. */
|
|
19
19
|
#last_seq = null;
|
|
20
20
|
/** Active EventSource instance. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth_state.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/ui/auth_state.svelte.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAMH,OAAO,EAAC,KAAK,MAAM,EAAoB,KAAK,cAAc,EAAC,MAAM,2BAA2B,CAAC;AAE7F,qBAAa,SAAS;IACrB,SAAS,
|
|
1
|
+
{"version":3,"file":"auth_state.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/ui/auth_state.svelte.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAMH,OAAO,EAAC,KAAK,MAAM,EAAoB,KAAK,cAAc,EAAC,MAAM,2BAA2B,CAAC;AAE7F,qBAAa,SAAS;IACrB,SAAS,UAAqB;IAC9B,QAAQ,UAAqB;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAoB;IAC/C,OAAO,EAAE,cAAc,GAAG,IAAI,CAAoB;IAClD,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAkB;IACxC,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,CAEpC;IACF,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAoD;IAEjF,gEAAgE;IAChE,eAAe,UAAqB;IAEpC;;;;;;OAMG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IA4BpC;;;;OAIG;IACG,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAwCjE;;;;OAIG;IACG,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiCpF;;;;OAIG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA4ClF;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAU7B;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;CAA8B,CAAC"}
|
|
@@ -35,15 +35,15 @@ import { create_context } from '@fuzdev/fuz_ui/context_helpers.js';
|
|
|
35
35
|
import { ui_fetch } from './ui_fetch.js';
|
|
36
36
|
import { is_permit_active } from '../auth/account_schema.js';
|
|
37
37
|
export class AuthState {
|
|
38
|
-
verifying = $state(false);
|
|
39
|
-
verified = $state(false);
|
|
40
|
-
verify_error = $state(null);
|
|
41
|
-
account = $state(null);
|
|
42
|
-
permits = $state([]);
|
|
38
|
+
verifying = $state.raw(false);
|
|
39
|
+
verified = $state.raw(false);
|
|
40
|
+
verify_error = $state.raw(null);
|
|
41
|
+
account = $state.raw(null);
|
|
42
|
+
permits = $state.raw([]);
|
|
43
43
|
active_permits = $derived(this.permits.filter((p) => is_permit_active(p)));
|
|
44
44
|
roles = $derived(this.active_permits.map((p) => p.role));
|
|
45
45
|
/** True when bootstrap is available (no accounts exist yet). */
|
|
46
|
-
needs_bootstrap = $state(false);
|
|
46
|
+
needs_bootstrap = $state.raw(false);
|
|
47
47
|
/**
|
|
48
48
|
* Check auth state and bootstrap availability.
|
|
49
49
|
*
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* ```svelte
|
|
16
16
|
* <script>
|
|
17
17
|
* const form_state = new FormState();
|
|
18
|
-
* let username = $state('');
|
|
18
|
+
* let username = $state.raw('');
|
|
19
19
|
* const username_valid = $derived(Username.safeParse(username).success);
|
|
20
20
|
* const can_submit = $derived(username.trim() && username_valid);
|
|
21
21
|
*
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* ```svelte
|
|
16
16
|
* <script>
|
|
17
17
|
* const form_state = new FormState();
|
|
18
|
-
* let username = $state('');
|
|
18
|
+
* let username = $state.raw('');
|
|
19
19
|
* const username_valid = $derived(Username.safeParse(username).success);
|
|
20
20
|
* const can_submit = $derived(username.trim() && username_valid);
|
|
21
21
|
*
|
|
@@ -48,7 +48,7 @@ const FORM_INPUT_SELECTOR = 'input, textarea, select';
|
|
|
48
48
|
export class FormState {
|
|
49
49
|
#touched = new SvelteSet();
|
|
50
50
|
#form = null;
|
|
51
|
-
#attempted = $state(false);
|
|
51
|
+
#attempted = $state.raw(false);
|
|
52
52
|
/**
|
|
53
53
|
* Whether a submit attempt has been made.
|
|
54
54
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadable.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/ui/loadable.svelte.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,qBAAa,QAAQ,CAAC,MAAM,GAAG,MAAM;IACpC,OAAO,
|
|
1
|
+
{"version":3,"file":"loadable.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/ui/loadable.svelte.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,qBAAa,QAAQ,CAAC,MAAM,GAAG,MAAM;IACpC,OAAO,UAAqB;IAC5B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAoB;IAExC,sFAAsF;IACtF,UAAU,EAAE,OAAO,CAAoB;IAEvC;;;;;;;OAOG;cACa,GAAG,CAAC,CAAC,EACpB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,MAAM,GAChC,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAiBzB,wEAAwE;IACxE,KAAK,IAAI,IAAI;CAKb"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* @example
|
|
9
9
|
* ```ts
|
|
10
10
|
* class ItemsState extends Loadable {
|
|
11
|
-
* items: Array<Item> = $state([]);
|
|
11
|
+
* items: Array<Item> = $state.raw([]);
|
|
12
12
|
*
|
|
13
13
|
* async fetch(): Promise<void> {
|
|
14
14
|
* await this.run(async () => {
|
|
@@ -36,10 +36,10 @@
|
|
|
36
36
|
* @module
|
|
37
37
|
*/
|
|
38
38
|
export class Loadable {
|
|
39
|
-
loading = $state(false);
|
|
40
|
-
error = $state(null);
|
|
39
|
+
loading = $state.raw(false);
|
|
40
|
+
error = $state.raw(null);
|
|
41
41
|
/** The raw caught value from the last failed `run()`, for programmatic inspection. */
|
|
42
|
-
error_data = $state(null);
|
|
42
|
+
error_data = $state.raw(null);
|
|
43
43
|
/**
|
|
44
44
|
* Run an async operation with loading/error handling.
|
|
45
45
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popover.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/ui/popover.svelte.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAEH,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,QAAQ,CAAC;AAGpC,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AAExD,OAAO,EAAC,KAAK,QAAQ,EAAE,KAAK,SAAS,EAA2B,MAAM,uBAAuB,CAAC;AAS9F;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC,uDAAuD;IACvD,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,yCAAyC;IACzC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,4CAA4C;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAyB,SAAQ,iBAAiB;IAClE,uDAAuD;IACvD,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,WAAW,KAAK,gBAAgB,GAAG;IAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CAAC,CAAC;AAElG;;GAEG;AAEH,MAAM,WAAW,wBAAyB,SAAQ,iBAAiB;CAElE;AAED;;GAEG;AACH,qBAAa,OAAO;;IACnB,gDAAgD;IAChD,OAAO,
|
|
1
|
+
{"version":3,"file":"popover.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/ui/popover.svelte.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAEH,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,QAAQ,CAAC;AAGpC,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AAExD,OAAO,EAAC,KAAK,QAAQ,EAAE,KAAK,SAAS,EAA2B,MAAM,uBAAuB,CAAC;AAS9F;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC,uDAAuD;IACvD,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,yCAAyC;IACzC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,4CAA4C;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAyB,SAAQ,iBAAiB;IAClE,uDAAuD;IACvD,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,WAAW,KAAK,gBAAgB,GAAG;IAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CAAC,CAAC;AAElG;;GAEG;AAEH,MAAM,WAAW,wBAAyB,SAAQ,iBAAiB;CAElE;AAED;;GAEG;AACH,qBAAa,OAAO;;IACnB,gDAAgD;IAChD,OAAO,UAAqB;IAE5B,uDAAuD;IACvD,QAAQ,EAAE,QAAQ,CAAwB;IAE1C,yCAAyC;IACzC,KAAK,EAAE,SAAS,CAAwB;IAExC,kCAAkC;IAClC,MAAM,SAAmB;IAEzB,wDAAwD;IACxD,qBAAqB,UAAqB;IAE1C,oCAAoC;IACpC,aAAa,SAAkB;gBAoBnB,MAAM,CAAC,EAAE,iBAAiB;IAiCtC;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAgEvC;;OAEG;IACH,IAAI,IAAI,IAAI;IAWZ;;OAEG;IACH,IAAI,IAAI,IAAI;IAWZ;;OAEG;IACH,MAAM,CAAC,OAAO,UAAgB,GAAG,IAAI;IAQrC;;OAEG;IACH,SAAS,EAAE,UAAU,CAAC,WAAW,CAAC,CAQhC;IAEF;;OAEG;IACH,OAAO,GAAI,SAAS,wBAAwB,KAAG,UAAU,CAAC,WAAW,CAAC,CAsBpE;IAEF;;OAEG;IACH,OAAO,GAAI,SAAS,wBAAwB,KAAG,UAAU,CAAC,WAAW,CAAC,CA2DpE;CACF"}
|
|
@@ -55,17 +55,17 @@ const create_client_id = () => Math.random().toString(36).substring(2);
|
|
|
55
55
|
*/
|
|
56
56
|
export class Popover {
|
|
57
57
|
/** Whether the popover is currently visible. */
|
|
58
|
-
visible = $state(false);
|
|
58
|
+
visible = $state.raw(false);
|
|
59
59
|
/** Position of the popover relative to its trigger. */
|
|
60
|
-
position = $state('bottom');
|
|
60
|
+
position = $state.raw('bottom');
|
|
61
61
|
/** Alignment along the position edge. */
|
|
62
|
-
align = $state('center');
|
|
62
|
+
align = $state.raw('center');
|
|
63
63
|
/** Distance from the position. */
|
|
64
|
-
offset = $state('0');
|
|
64
|
+
offset = $state.raw('0');
|
|
65
65
|
/** Whether to disable closing when clicking outside. */
|
|
66
|
-
disable_outside_click = $state(false);
|
|
66
|
+
disable_outside_click = $state.raw(false);
|
|
67
67
|
/** Custom class for the popover. */
|
|
68
|
-
popover_class = $state('');
|
|
68
|
+
popover_class = $state.raw('');
|
|
69
69
|
/** Reference to the trigger element. */
|
|
70
70
|
#trigger_element = null;
|
|
71
71
|
/** Reference to the content element. */
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { create_context } from '@fuzdev/fuz_ui/context_helpers.js';
|
|
2
2
|
export class SidebarState {
|
|
3
3
|
#get_enabled;
|
|
4
|
-
#enabled = $state(true);
|
|
5
|
-
#show_sidebar = $state(true);
|
|
4
|
+
#enabled = $state.raw(true);
|
|
5
|
+
#show_sidebar = $state.raw(true);
|
|
6
6
|
get enabled() {
|
|
7
7
|
return this.#get_enabled?.() ?? this.#enabled;
|
|
8
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table_state.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/ui/table_state.svelte.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAG9C,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,sBAAsB,CAAC;AAErD,mEAAmE;AACnE,eAAO,MAAM,eAAe,OAAO,CAAC;AAEpC,qBAAa,UAAW,SAAQ,QAAQ;IACvC,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"table_state.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/ui/table_state.svelte.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAG9C,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,sBAAsB,CAAC;AAErD,mEAAmE;AACnE,eAAO,MAAM,eAAe,OAAO,CAAC;AAEpC,qBAAa,UAAW,SAAQ,QAAQ;IACvC,UAAU,EAAE,MAAM,CAAkB;IACpC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CAAkB;IAC5C,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAkB;IACtD,KAAK,SAAiB;IACtB,MAAM,SAAiB;IACvB,KAAK,SAAmB;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAoB;IAC9C,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAoB;IAC3C,YAAY,EAAE,MAAM,GAAG,IAAI,CAAoB;IAG/C,QAAQ,CAAC,aAAa,SAAoD;IAC1E,QAAQ,CAAC,WAAW,SAAkE;IACtF,QAAQ,CAAC,QAAQ,UAA6B;IAC9C,QAAQ,CAAC,QAAQ,UAAmD;IAE9D,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,SAAI,EAAE,KAAK,SAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBvE,OAAO,IAAI,IAAI;IAIf,OAAO,IAAI,IAAI;IAIT,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;CAoChE"}
|
|
@@ -43,15 +43,15 @@ import { format_value } from './ui_format.js';
|
|
|
43
43
|
/** Maximum number of rows that can be fetched in a single page. */
|
|
44
44
|
export const TABLE_LIMIT_MAX = 1000;
|
|
45
45
|
export class TableState extends Loadable {
|
|
46
|
-
table_name = $state('');
|
|
47
|
-
columns = $state([]);
|
|
48
|
-
rows = $state([]);
|
|
49
|
-
total = $state(0);
|
|
50
|
-
offset = $state(0);
|
|
51
|
-
limit = $state(100);
|
|
52
|
-
primary_key = $state(null);
|
|
53
|
-
deleting = $state(null);
|
|
54
|
-
delete_error = $state(null);
|
|
46
|
+
table_name = $state.raw('');
|
|
47
|
+
columns = $state.raw([]);
|
|
48
|
+
rows = $state.raw([]);
|
|
49
|
+
total = $state.raw(0);
|
|
50
|
+
offset = $state.raw(0);
|
|
51
|
+
limit = $state.raw(100);
|
|
52
|
+
primary_key = $state.raw(null);
|
|
53
|
+
deleting = $state.raw(null);
|
|
54
|
+
delete_error = $state.raw(null);
|
|
55
55
|
// Pagination computed values
|
|
56
56
|
showing_start = $derived(this.total === 0 ? 0 : this.offset + 1);
|
|
57
57
|
showing_end = $derived(Math.min(this.offset + this.rows.length, this.total));
|