@fuzdev/fuz_app 0.107.0 → 0.109.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.
Files changed (95) hide show
  1. package/README.md +4 -0
  2. package/dist/actions/CLAUDE.md +1 -1
  3. package/dist/auth/CLAUDE.md +1 -1
  4. package/dist/auth/account_route_schema.d.ts +10 -1
  5. package/dist/auth/account_route_schema.d.ts.map +1 -1
  6. package/dist/auth/account_route_schema.js +10 -1
  7. package/dist/auth/account_routes.d.ts +18 -4
  8. package/dist/auth/account_routes.d.ts.map +1 -1
  9. package/dist/auth/account_routes.js +32 -29
  10. package/dist/auth/api_token_queries.d.ts +4 -0
  11. package/dist/auth/api_token_queries.d.ts.map +1 -1
  12. package/dist/auth/api_token_queries.js +5 -1
  13. package/dist/auth/audit_emitter.d.ts +9 -5
  14. package/dist/auth/audit_emitter.d.ts.map +1 -1
  15. package/dist/auth/audit_log_schema.d.ts +7 -1
  16. package/dist/auth/audit_log_schema.d.ts.map +1 -1
  17. package/dist/auth/audit_log_schema.js +16 -1
  18. package/dist/auth/bearer_auth.d.ts +9 -6
  19. package/dist/auth/bearer_auth.d.ts.map +1 -1
  20. package/dist/auth/bearer_auth.js +12 -21
  21. package/dist/auth/bootstrap_routes.d.ts +12 -2
  22. package/dist/auth/bootstrap_routes.d.ts.map +1 -1
  23. package/dist/auth/bootstrap_routes.js +26 -10
  24. package/dist/auth/middleware.d.ts +0 -3
  25. package/dist/auth/middleware.d.ts.map +1 -1
  26. package/dist/auth/middleware.js +11 -10
  27. package/dist/auth/migrations.d.ts +7 -0
  28. package/dist/auth/migrations.d.ts.map +1 -1
  29. package/dist/auth/migrations.js +45 -4
  30. package/dist/auth/session_queries.d.ts +13 -2
  31. package/dist/auth/session_queries.d.ts.map +1 -1
  32. package/dist/auth/session_queries.js +14 -3
  33. package/dist/auth/signup_routes.d.ts +10 -0
  34. package/dist/auth/signup_routes.d.ts.map +1 -1
  35. package/dist/auth/signup_routes.js +14 -11
  36. package/dist/db/CLAUDE.md +9 -5
  37. package/dist/db/cell_audit_queries.d.ts +4 -2
  38. package/dist/db/cell_audit_queries.d.ts.map +1 -1
  39. package/dist/db/cell_audit_queries.js +4 -2
  40. package/dist/db/pg_error.d.ts +12 -0
  41. package/dist/db/pg_error.d.ts.map +1 -1
  42. package/dist/db/pg_error.js +15 -1
  43. package/dist/http/CLAUDE.md +78 -18
  44. package/dist/http/db_routes.d.ts +96 -3
  45. package/dist/http/db_routes.d.ts.map +1 -1
  46. package/dist/http/db_routes.js +263 -46
  47. package/dist/http/error_schemas.d.ts +13 -2
  48. package/dist/http/error_schemas.d.ts.map +1 -1
  49. package/dist/http/error_schemas.js +13 -2
  50. package/dist/http/pending_effects.d.ts +5 -5
  51. package/dist/http/pending_effects.d.ts.map +1 -1
  52. package/dist/http/pending_effects.js +1 -1
  53. package/dist/rate_limiter.d.ts +36 -3
  54. package/dist/rate_limiter.d.ts.map +1 -1
  55. package/dist/rate_limiter.js +36 -3
  56. package/dist/server/app_server.d.ts +27 -10
  57. package/dist/server/app_server.d.ts.map +1 -1
  58. package/dist/server/app_server.js +30 -20
  59. package/dist/server/app_server_context.d.ts +10 -2
  60. package/dist/server/app_server_context.d.ts.map +1 -1
  61. package/dist/testing/CLAUDE.md +42 -8
  62. package/dist/testing/app_server.d.ts.map +1 -1
  63. package/dist/testing/app_server.js +6 -4
  64. package/dist/testing/audit_completeness.d.ts.map +1 -1
  65. package/dist/testing/audit_completeness.js +5 -1
  66. package/dist/testing/cross_backend/cell_relations.d.ts.map +1 -1
  67. package/dist/testing/cross_backend/cell_relations.js +53 -1
  68. package/dist/testing/cross_backend/default_spine_surface.d.ts.map +1 -1
  69. package/dist/testing/cross_backend/default_spine_surface.js +9 -8
  70. package/dist/testing/cross_backend/login_security.d.ts.map +1 -1
  71. package/dist/testing/cross_backend/login_security.js +59 -0
  72. package/dist/testing/cross_backend/query_shape.d.ts +10 -0
  73. package/dist/testing/cross_backend/query_shape.d.ts.map +1 -0
  74. package/dist/testing/cross_backend/query_shape.js +128 -0
  75. package/dist/testing/cross_backend/session_cap.d.ts +19 -0
  76. package/dist/testing/cross_backend/session_cap.d.ts.map +1 -0
  77. package/dist/testing/cross_backend/session_cap.js +93 -0
  78. package/dist/testing/middleware.d.ts +2 -5
  79. package/dist/testing/middleware.d.ts.map +1 -1
  80. package/dist/testing/middleware.js +5 -5
  81. package/dist/testing/rate_limiting.d.ts +10 -16
  82. package/dist/testing/rate_limiting.d.ts.map +1 -1
  83. package/dist/testing/rate_limiting.js +11 -95
  84. package/dist/testing/stubs.d.ts.map +1 -1
  85. package/dist/testing/stubs.js +3 -1
  86. package/dist/testing/testing_rate_limiter.d.ts +7 -1
  87. package/dist/testing/testing_rate_limiter.d.ts.map +1 -1
  88. package/dist/testing/testing_rate_limiter.js +7 -1
  89. package/dist/ui/CLAUDE.md +9 -4
  90. package/dist/ui/table_state.svelte.d.ts +18 -5
  91. package/dist/ui/table_state.svelte.d.ts.map +1 -1
  92. package/dist/ui/table_state.svelte.js +22 -7
  93. package/dist/ui/ui_format.d.ts.map +1 -1
  94. package/dist/ui/ui_format.js +4 -0
  95. package/package.json +1 -1
@@ -29,7 +29,7 @@ effects, see ../../../docs/architecture.md.
29
29
  - `http/jsonrpc_errors.ts` — `ThrownJsonrpcError`, `jsonrpc_errors` throwers, HTTP-status mappings.
30
30
  - `http/jsonrpc_helpers.ts` — message builders, type guards, input/result normalizers.
31
31
  - `http/common_routes.ts` — health check + readiness probe (`/ready` schema-drift deploy gate) + authenticated server-status + surface route specs.
32
- - `http/db_routes.ts` — generic keeper-only table browser route specs (public schema).
32
+ - `http/db_routes.ts` — allowlist-gated keeper-only table browser route specs (`public` schema, minus the `NON_BROWSABLE_TABLES` credential floor).
33
33
  - `http/pending_effects.ts` — `emit_after_commit` + `dispatch_with_post_commit_rollback` (the shared rollback-discard wrapper both dispatch sites use) + `flush_pending_effects` + `flush_post_commit_effects` + `EmitAfterCommitContext`.
34
34
 
35
35
  ## Route Spec System
@@ -210,7 +210,7 @@ confirmation.
210
210
  - **Bootstrap**: `ERROR_ALREADY_BOOTSTRAPPED`, `ERROR_TOKEN_FILE_MISSING`
211
211
  - **Signup/invites**: `ERROR_NO_MATCHING_INVITE`, `ERROR_SIGNUP_CONFLICT`, `ERROR_INVITE_NOT_FOUND`, `ERROR_INVITE_DUPLICATE`, `ERROR_INVITE_ACCOUNT_EXISTS_USERNAME`, `ERROR_INVITE_ACCOUNT_EXISTS_EMAIL`
212
212
  - **Admin**: `ERROR_ROLE_NOT_WEB_GRANTABLE`, `ERROR_ROLE_GRANT_NOT_FOUND`, `ERROR_INVALID_EVENT_TYPE`
213
- - **DB browser**: `ERROR_FOREIGN_KEY_VIOLATION`, `ERROR_TABLE_NOT_FOUND`, `ERROR_TABLE_NO_PRIMARY_KEY`, `ERROR_ROW_NOT_FOUND`
213
+ - **DB browser**: `ERROR_FOREIGN_KEY_VIOLATION`, `ERROR_TABLE_NOT_FOUND`, `ERROR_TABLE_NO_PRIMARY_KEY`, `ERROR_TABLE_NOT_DELETABLE`, `ERROR_ROW_NOT_FOUND`
214
214
 
215
215
  ## Schema Helpers
216
216
 
@@ -485,36 +485,96 @@ auth-domain dependencies:
485
485
  Auth-aware variants (account status, bootstrap status) live in `auth/` —
486
486
  `http/common_routes.ts` stays generic.
487
487
 
488
- ## DB Routes (Generic Browser)
488
+ ## DB Routes (Allowlisted Browser)
489
489
 
490
490
  `http/db_routes.ts` creates keeper-only route specs for administering the
491
491
  `public` schema via `information_schema`. Wired by consumers that want a
492
- generic table browser; the factory is domain-agnostic.
493
-
494
- `create_db_route_specs({db_type, db_name, extra_stats?, log?})`:
495
-
496
- - `GET /health` — connected probe + table count + optional `extra_stats(db)`. Returns `{connected: false}` at 503 on failure
497
- - `GET /tables` — list public tables with row counts
498
- - `GET /tables/:name` — columns + rows (paginated via `?offset`/`?limit`, limit clamped to `[1, 1000]` with default 100) + total count + primary key
499
- - `DELETE /tables/:name/rows/:id` — delete by PK. Returns 400 if table has no PK (`ERROR_TABLE_NO_PRIMARY_KEY`), 404 if row missing (`ERROR_ROW_NOT_FOUND`) or table missing (`ERROR_TABLE_NOT_FOUND`), 409 on FK violation (pg error code `23503`)
492
+ table browser; the factory is domain-agnostic.
493
+
494
+ `create_db_route_specs(deps, {db_type, db_name, browsable_tables, extra_stats?, log?, non_deletable_tables?})` —
495
+ `deps` is `DbRouteDeps`, a structural `audit` slice of `AppDeps` declared in
496
+ `http/db_routes.ts` so this directory stays auth-free (`ctx.deps` satisfies it):
497
+
498
+ - `GET /health` — connected probe + table count (schema-wide by design — a did-migrations-run diagnostic) + optional `extra_stats(db)`. Returns `{connected: false}` at 503 on failure
499
+ - `GET /tables` — list browsable tables with row counts
500
+ - `GET /tables/:name` — columns + rows (paginated via `?offset`/`?limit`, limit validated to `[1, 1000]` with default 100; bytea values come back as `<N bytes>` placeholders, NULL stays NULL, column metadata untouched) + total count + `primary_key` (the single PK column, or `null` when the table has none or a composite one) + `deletable` (whether the row-`DELETE` will accept this table at all — see below)
501
+ - `DELETE /tables/:name/rows/:id` — delete by PK, compared typed as `"<pk>" = $1` (twinning the Rust spine — the untyped text-format param makes PG coerce the id with the PK type's input function, so the delete index-scans and follows the column type's semantics; an uncoercible id — 22P02/22003 — is the same clean 404 as a typed miss). `RETURNING "<pk>"::text` feeds the audit trail the row's canonical PK rendering. Returns 400 if the table is excluded by policy (`ERROR_TABLE_NOT_DELETABLE`) or has no single-column PK (`ERROR_TABLE_NO_PRIMARY_KEY`), 404 if row missing (`ERROR_ROW_NOT_FOUND`) or table missing/unbrowsable (`ERROR_TABLE_NOT_FOUND`), 409 on a referencing-row refusal (pg error `23503` foreign_key_violation, or `23001` restrict_violation — PG 18+ raises the latter for `ON DELETE RESTRICT`)
502
+
503
+ **The allowlist gates everything.** `DbRouteOptions.browsable_tables` is
504
+ required with no "all" escape hatch — the table list shows only listed tables,
505
+ and detail/`DELETE` on an unlisted table answer exactly like a table that
506
+ doesn't exist (404 `ERROR_TABLE_NOT_FOUND`, byte-identical masking). The
507
+ credential floor `NON_BROWSABLE_TABLES` (`account` — the argon2 hash corpus,
508
+ `auth_session` / `api_token` — credential digests, `bootstrap_lock`) is
509
+ subtracted from the allowlist even when a consumer names those tables. The
510
+ browse/delete transactions run under `SET LOCAL statement_timeout`
511
+ (`DB_ADMIN_STATEMENT_TIMEOUT_MS`) so no single statement outlives the bound
512
+ (per statement, not per request — the table listing's per-table `COUNT(*)`
513
+ loop can still take several in sequence).
514
+
515
+ **Single-column primary keys only.** The `DELETE` filters on one column
516
+ (`WHERE "<pk>" = $1`), which is correct only when the primary key _is_
517
+ that one column. `query_primary_key_columns` returns every PK column in
518
+ `ordinal_position` order, and the route proceeds only at length exactly 1 — a
519
+ composite key (a single-column filter would match every row sharing that
520
+ column's value and silently over-delete) and an absent key both refuse with 400
521
+ and delete nothing. `GET /tables/:name` reports `primary_key: null` in the same
522
+ two cases, so the UI (`ui/table_state.svelte.ts`) disables delete without firing
523
+ a request. Twin of the Rust spine's `fuz_db_admin` router.
524
+
525
+ **Some tables are never row-deletable.** `NON_DELETABLE_TABLES` — `audit_log`,
526
+ `bootstrap_lock`, `app_settings`, `schema_version` — refuses the `DELETE` with
527
+ 400 `ERROR_TABLE_NOT_DELETABLE` before the key-shape check, because a generic
528
+ storage endpoint has no business deleting a row whose meaning lives in the
529
+ domain layer. `audit_log` is the sharpest: it is both the trail and, since
530
+ `realtime/sse_auth_guard.ts` and the WS auth guard close live streams by
531
+ listening to audit events, part of how revocation propagates. The three
532
+ singletons each fail differently on deletion — `bootstrap_lock` leaves
533
+ `check_bootstrap_status` advertising a window `bootstrap_account.ts` then always
534
+ refuses, `app_settings` makes every settings read throw, `schema_version` is the
535
+ migration tracker (composite-keyed, so already refused — named here so the
536
+ protection survives a key-shape change). Consumers add their own via
537
+ `DbRouteOptions.non_deletable_tables`, which is unioned with the builtin set and
538
+ never replaces it.
539
+
540
+ `GET /tables/:name` reports `deletable` = exactly what the `DELETE` will accept
541
+ (single-column PK **and** not excluded), so a client hides the affordance
542
+ instead of discovering the refusal — `ui/table_state.svelte.ts` gates on
543
+ `can_delete`. `primary_key` stays a truthful report of the key shape; a policy
544
+ exclusion must not masquerade as one.
545
+
546
+ **Every successful row delete is audited.** The `DELETE` handler defers a
547
+ `deps.audit` emit through `emit_after_commit`, so the pool-routed row lands
548
+ iff the delete's transaction commits — the success-only trail can't claim a
549
+ delete that failed at COMMIT (the Rust twin commits before emitting for the
550
+ same reason). Account-grain attribution (the browser's gate is account-grain,
551
+ so no actor is claimed), metadata `{table, pk_column, id}`. Refusals emit
552
+ nothing. The completeness gate covers the event via the
553
+ `db_routes.db.test.ts` emission tests (excluded-with-justification in
554
+ `testing/audit_completeness.ts`). Twinned by `fuz_db_admin`'s emission on the
555
+ Rust spine.
500
556
 
501
557
  All four routes use the keeper auth shape (`{account: 'required', actor: 'required', roles: ['keeper'], credential_types: ['daemon_token']}`).
502
558
  Param schemas use `VALID_SQL_IDENTIFIER` regex, and every table name gets
503
559
  `assert_valid_sql_identifier()` before string-interpolating into SQL —
504
560
  the identifier validation is the only reason the interpolation is safe.
505
561
 
506
- **Do not widen the auth on these specs.** They serve paginated rows of any
507
- `public` table — `account.password_hash`, `auth_session`, `api_token` — plus
508
- row `DELETE`. `credential_types: ['daemon_token']` is what keeps every bearer
509
- credential out, and it's why the specs need no `auth.required_scope`: a daemon
510
- token resolves to `full` by construction, so no narrowed token can reach them
511
- (see ../../../docs/security.md §Token scoping). Re-auth them to a role a bearer
562
+ **Do not widen the auth on these specs.** They serve paginated rows of every
563
+ browsable table plus row `DELETE` — the credential tables sit behind the
564
+ `NON_BROWSABLE_TABLES` floor, but browsable rows can still carry secrets in
565
+ data columns (a consumer's `cell.data` is the live example).
566
+ `credential_types: ['daemon_token']` is what keeps every bearer credential
567
+ out, and it's why the specs need no `auth.required_scope`: a daemon token
568
+ resolves to `full` by construction, so no narrowed token can reach them (see
569
+ ../../../docs/security.md §Token scoping). Re-auth them to a role a bearer
512
570
  satisfies and both controls are gone at once — the token's scope stops
513
571
  applying and the credential gate stops firing. A consumer that does this owns
514
572
  the surface census for it.
515
573
 
516
574
  Interfaces exported for consumer use: `TableInfo`, `TableWithCount`,
517
- `PrimaryKeyInfo`, `ColumnInfo`, `DbRouteOptions`.
575
+ `PrimaryKeyInfo`, `ColumnInfo`, `DbRouteDeps`, `DbRouteOptions`,
576
+ `NON_DELETABLE_TABLES`, `NON_BROWSABLE_TABLES`, `DB_TABLE_ROWS_DEFAULT_LIMIT`,
577
+ `DB_TABLE_ROWS_LIMIT_MAX`, `DB_ADMIN_STATEMENT_TIMEOUT_MS`.
518
578
 
519
579
  ## Cross-Module Notes
520
580
 
@@ -1,12 +1,16 @@
1
1
  /**
2
2
  * API route specs for database administration.
3
3
  *
4
- * Generic PostgreSQL table browser using `information_schema`.
5
- * Provides: list tables, view columns/rows (paginated), delete rows by PK, health check.
4
+ * Allowlist-gated PostgreSQL table browser using `information_schema` —
5
+ * consumers declare `browsable_tables` and the credential floor
6
+ * (`NON_BROWSABLE_TABLES`) is always subtracted. Provides: list tables, view
7
+ * columns/rows (paginated, bytea values placeholdered), delete rows by PK
8
+ * (audited as `db_admin_row_delete`), health check.
6
9
  *
7
10
  * @module
8
11
  */
9
12
  import type { Logger } from '@fuzdev/fuz_util/log.ts';
13
+ import type { Uuid } from '@fuzdev/fuz_util/id.ts';
10
14
  import type { Db, DbType } from '../db/db.js';
11
15
  import { type RouteSpec } from './route_spec.js';
12
16
  /**
@@ -40,19 +44,108 @@ export interface ColumnInfo {
40
44
  export declare const DB_TABLE_ROWS_DEFAULT_LIMIT = 100;
41
45
  /** Maximum page size for `GET /tables/:name` rows. */
42
46
  export declare const DB_TABLE_ROWS_LIMIT_MAX = 1000;
47
+ /**
48
+ * Per-statement timeout applied (`SET LOCAL statement_timeout`) inside the
49
+ * table-list, table-detail, and row-`DELETE` transactions — no single
50
+ * statement outlives it. (Per statement, not per request: the table listing's
51
+ * one-`COUNT(*)`-per-table loop can still take several in sequence.)
52
+ * Milliseconds.
53
+ */
54
+ export declare const DB_ADMIN_STATEMENT_TIMEOUT_MS = 5000;
55
+ /**
56
+ * Tables the browser can never expose, whatever `browsable_tables` names —
57
+ * the credential floor, subtracted from the consumer's allowlist and not
58
+ * overridable:
59
+ *
60
+ * - `account` — the one surface that would return the argon2 password-hash
61
+ * corpus in bulk (every other read path excludes the hash by projection).
62
+ * - `auth_session` / `api_token` — credential digests plus per-account
63
+ * session/token metadata.
64
+ * - `bootstrap_lock` — the first-admin gate; its row is load-bearing state,
65
+ * not content.
66
+ *
67
+ * A table on the floor answers exactly like one that doesn't exist (404
68
+ * `table_not_found`) so the browser doesn't confirm its presence.
69
+ */
70
+ export declare const NON_BROWSABLE_TABLES: ReadonlyArray<string>;
71
+ /**
72
+ * Tables this endpoint refuses to delete rows from, whatever their key shape.
73
+ *
74
+ * Two kinds, one rule — a generic storage endpoint has no business deleting a
75
+ * row whose meaning lives in the domain layer:
76
+ *
77
+ * - `audit_log` — the trail and the tamper path would otherwise be the same
78
+ * surface. It is also how revocation propagates: `realtime/sse_auth_guard.ts`
79
+ * and the WS auth guard close live streams by listening to audit events, so a
80
+ * raw row delete here is invisible to them.
81
+ * `bootstrap_lock` — deleting the singleton leaves `check_bootstrap_status`
82
+ * advertising an open bootstrap window on the next boot that
83
+ * `bootstrap_account.ts`'s atomic flip then always refuses.
84
+ * - `app_settings` — deleting the singleton makes every settings read throw.
85
+ * - `schema_version` — the migration tracker. Already refused by the
86
+ * single-column-primary-key rule (its key is `(namespace, name)`), but that
87
+ * is incidental: naming it here keeps the protection if the key shape ever
88
+ * changes.
89
+ *
90
+ * Consumers extend this with `DbRouteOptions.non_deletable_tables` — the
91
+ * builtin set is a floor, never replaced.
92
+ */
93
+ export declare const NON_DELETABLE_TABLES: ReadonlyArray<string>;
94
+ /**
95
+ * Capabilities the db routes need — a narrow structural slice of `AppDeps`
96
+ * (`auth/deps.ts`), declared here so `http/` stays auth-free. The bound
97
+ * `auth/audit_emitter.ts` `AuditEmitter` (and therefore `AppDeps.audit` /
98
+ * `RouteFactoryDeps.audit`) satisfies `audit` structurally.
99
+ */
100
+ export interface DbRouteDeps {
101
+ /**
102
+ * Pool-routed fire-and-forget audit emit. The row-`DELETE` handler defers
103
+ * the call via `emit_after_commit`, so the success-only trail row can
104
+ * never claim a delete whose transaction failed at COMMIT — the pool
105
+ * routing means the write itself never rides the request transaction.
106
+ */
107
+ audit: {
108
+ emit: (ctx: {
109
+ pending_effects: Array<Promise<void>>;
110
+ }, input: {
111
+ event_type: 'db_admin_row_delete';
112
+ account_id: Uuid | null;
113
+ ip: string;
114
+ metadata: {
115
+ table: string;
116
+ pk_column: string;
117
+ id: string;
118
+ };
119
+ }) => void;
120
+ };
121
+ }
43
122
  /**
44
123
  * Per-factory configuration for db routes.
45
124
  */
46
125
  export interface DbRouteOptions {
47
126
  db_type: DbType;
48
127
  db_name: string;
128
+ /**
129
+ * The tables the browser exposes — an explicit allowlist gating the table
130
+ * list, table detail, and row-`DELETE` alike. Required with no "all"
131
+ * escape hatch, so a future secret-bearing table stays unlisted until a
132
+ * consumer names it, and `NON_BROWSABLE_TABLES` is subtracted even when
133
+ * named. An unlisted table 404s as `table_not_found` — the same answer as
134
+ * a table that doesn't exist.
135
+ */
136
+ browsable_tables: ReadonlyArray<string>;
49
137
  /** Optional callback to provide app-specific stats in the health response. */
50
138
  extra_stats?: (db: Db) => Promise<Record<string, unknown>>;
51
139
  /** Optional logger for server-side diagnostics (e.g. FK violation details). */
52
140
  log?: Logger;
141
+ /**
142
+ * Consumer tables to exclude from row deletion, unioned with the builtin
143
+ * `NON_DELETABLE_TABLES` (which this never replaces).
144
+ */
145
+ non_deletable_tables?: ReadonlyArray<string>;
53
146
  }
54
147
  /**
55
148
  * Create the db API route specs.
56
149
  */
57
- export declare const create_db_route_specs: (options: DbRouteOptions) => Array<RouteSpec>;
150
+ export declare const create_db_route_specs: (deps: DbRouteDeps, options: DbRouteOptions) => Array<RouteSpec>;
58
151
  //# sourceMappingURL=db_routes.d.ts.map
@@ -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,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAqC,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAapF;;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,sDAAsD;AACtD,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAC/C,sDAAsD;AACtD,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAE5C;;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;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAI,SAAS,cAAc,KAAG,KAAK,CAAC,SAAS,CAgQ9E,CAAC"}
1
+ {"version":3,"file":"db_routes.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/http/db_routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAqC,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAiBpF;;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,sDAAsD;AACtD,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAC/C,sDAAsD;AACtD,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAE5C;;;;;;GAMG;AACH,eAAO,MAAM,6BAA6B,OAAO,CAAC;AAElD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC,MAAM,CAKrD,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC,MAAM,CAKrD,CAAC;AAEH;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC3B;;;;;OAKG;IACH,KAAK,EAAE;QACN,IAAI,EAAE,CACL,GAAG,EAAE;YAAE,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;SAAE,EAC9C,KAAK,EAAE;YACN,UAAU,EAAE,qBAAqB,CAAC;YAClC,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;YACxB,EAAE,EAAE,MAAM,CAAC;YACX,QAAQ,EAAE;gBAAE,KAAK,EAAE,MAAM,CAAC;gBAAC,SAAS,EAAE,MAAM,CAAC;gBAAC,EAAE,EAAE,MAAM,CAAA;aAAE,CAAC;SAC3D,KACG,IAAI,CAAC;KACV,CAAC;CACF;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;;;OAOG;IACH,gBAAgB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACxC,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;IACb;;;OAGG;IACH,oBAAoB,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC7C;AA2CD;;GAEG;AACH,eAAO,MAAM,qBAAqB,GACjC,MAAM,WAAW,EACjB,SAAS,cAAc,KACrB,KAAK,CAAC,SAAS,CA4XjB,CAAC"}