@zveltio/sdk 3.0.0-beta.77 → 3.0.0-beta.78

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.
@@ -155,6 +155,9 @@ export interface DDLManager {
155
155
  /** Introspect the live PG table and return its field configs. Useful for
156
156
  * extensions that auto-discover schema changes. */
157
157
  introspectTable(db: DDLManagerDb, collectionName: string): Promise<FieldDefinition[]>;
158
+ /** Every physical column of the collection's table, system columns included,
159
+ * in table order; `[]` when the table does not exist. */
160
+ columnNames(db: DDLManagerDb, collectionName: string): Promise<string[]>;
158
161
  /** Re-read PG and write the result back to `zv_collections.fields`. Returns
159
162
  * the number of changes detected. */
160
163
  syncFieldsFromDB(db: DDLManagerDb, collectionName: string): Promise<number>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ddl/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ddl/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Capabilities as TYPES — roadmap R8: "an undeclared capability is a compile
3
+ * error, not a runtime refusal".
4
+ *
5
+ * The engine refuses a gated `ctx.internals` member whose capability the
6
+ * manifest does not declare (`CapabilityDeniedError`). That refusal happens the
7
+ * first time the code path runs — often in production, on the request that
8
+ * needed it. Declaring the capabilities to TypeScript as well moves the same
9
+ * answer to the editor:
10
+ *
11
+ * export default defineExtension(['ddl', 'secrets'], {
12
+ * name: 'my-ext',
13
+ * category: 'tools',
14
+ * async register(app, ctx) {
15
+ * await ctx.internals.encryptSecret('x'); // ok: 'secrets'
16
+ * await ctx.internals.deleteUser(db, 'u'); // compile error: needs 'auth:users'
17
+ * },
18
+ * });
19
+ *
20
+ * The list passed to `defineExtension` is a statement to the compiler; the
21
+ * manifest's `permissions` remains what the engine enforces and what an
22
+ * administrator approves. `zveltio extension validate` compares the two.
23
+ *
24
+ * These two tables mirror the engine's `CAPABILITIES` and `INTERNALS_CAPABILITY`
25
+ * (`packages/engine/src/lib/extensions/capabilities.ts`); the engine's unit test
26
+ * `sdk-capability-types.test.ts` fails when they drift apart.
27
+ */
28
+ /** Every capability an extension may declare, `net:<host>` aside. */
29
+ export declare const EXTENSION_CAPABILITIES: readonly ["db:admin", "tenant:enter", "ddl", "secrets", "auth:session", "auth:users", "identity:provision", "audit:read", "data:write", "data:system", "notifications", "files", "documents", "edge-functions", "introspection", "storage", "cron", "field-types"];
30
+ /** A capability name, including the parameterised `net:<host>`. */
31
+ export type Capability = (typeof EXTENSION_CAPABILITIES)[number] | `net:${string}`;
32
+ /** The `ctx.internals` members a capability unlocks. */
33
+ export declare const CAPABILITY_MEMBERS: {
34
+ readonly enqueueDDLJob: "ddl";
35
+ readonly introspectSchema: "introspection";
36
+ readonly extensionRegistry: "introspection";
37
+ readonly encryptSecret: "secrets";
38
+ readonly decryptSecret: "secrets";
39
+ readonly deriveTokenHash: "secrets";
40
+ readonly createBetterAuthSession: "auth:session";
41
+ readonly deleteUser: "auth:users";
42
+ readonly exportUserData: "auth:users";
43
+ readonly revokeUserSessions: "auth:users";
44
+ readonly setUserActive: "auth:users";
45
+ readonly liftOwnBan: "auth:users";
46
+ readonly provisionUser: "identity:provision";
47
+ readonly listTenantUsers: "identity:provision";
48
+ readonly updateUserProfile: "identity:provision";
49
+ readonly addTenantMember: "identity:provision";
50
+ readonly removeTenantMember: "identity:provision";
51
+ readonly setTenantMembershipEnd: "identity:provision";
52
+ readonly readAuditActivity: "audit:read";
53
+ readonly createRecord: "data:write";
54
+ readonly updateRecord: "data:write";
55
+ readonly deleteRecord: "data:write";
56
+ readonly asSystem: "data:system";
57
+ readonly sendNotification: "notifications";
58
+ readonly moveToTrash: "files";
59
+ readonly generatePDFAsync: "documents";
60
+ readonly runEdgeFunction: "edge-functions";
61
+ };
62
+ /** Members of `ctx.internals` that need a capability. */
63
+ export type GatedMember = keyof typeof CAPABILITY_MEMBERS;
64
+ /** The gated members the capabilities `C` unlock. */
65
+ export type MembersUnlockedBy<C extends string> = {
66
+ [K in GatedMember]: (typeof CAPABILITY_MEMBERS)[K] extends C ? K : never;
67
+ }[GatedMember];
68
+ /** The gated members `C` does NOT unlock — removed from the narrowed type. */
69
+ export type MembersLockedFor<C extends string> = Exclude<GatedMember, MembersUnlockedBy<C>>;
70
+ //# sourceMappingURL=capabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/extension/capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,qEAAqE;AACrE,eAAO,MAAM,sBAAsB,oQAmBzB,CAAC;AAEX,mEAAmE;AACnE,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,GAAG,OAAO,MAAM,EAAE,CAAC;AAEnF,wDAAwD;AACxD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4B6C,CAAC;AAE7E,yDAAyD;AACzD,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,kBAAkB,CAAC;AAE1D,qDAAqD;AACrD,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,MAAM,IAAI;KAC/C,CAAC,IAAI,WAAW,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK;CACzE,CAAC,WAAW,CAAC,CAAC;AAEf,8EAA8E;AAC9E,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,MAAM,IAAI,OAAO,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Capabilities as TYPES — roadmap R8: "an undeclared capability is a compile
3
+ * error, not a runtime refusal".
4
+ *
5
+ * The engine refuses a gated `ctx.internals` member whose capability the
6
+ * manifest does not declare (`CapabilityDeniedError`). That refusal happens the
7
+ * first time the code path runs — often in production, on the request that
8
+ * needed it. Declaring the capabilities to TypeScript as well moves the same
9
+ * answer to the editor:
10
+ *
11
+ * export default defineExtension(['ddl', 'secrets'], {
12
+ * name: 'my-ext',
13
+ * category: 'tools',
14
+ * async register(app, ctx) {
15
+ * await ctx.internals.encryptSecret('x'); // ok: 'secrets'
16
+ * await ctx.internals.deleteUser(db, 'u'); // compile error: needs 'auth:users'
17
+ * },
18
+ * });
19
+ *
20
+ * The list passed to `defineExtension` is a statement to the compiler; the
21
+ * manifest's `permissions` remains what the engine enforces and what an
22
+ * administrator approves. `zveltio extension validate` compares the two.
23
+ *
24
+ * These two tables mirror the engine's `CAPABILITIES` and `INTERNALS_CAPABILITY`
25
+ * (`packages/engine/src/lib/extensions/capabilities.ts`); the engine's unit test
26
+ * `sdk-capability-types.test.ts` fails when they drift apart.
27
+ */
28
+ /** Every capability an extension may declare, `net:<host>` aside. */
29
+ export const EXTENSION_CAPABILITIES = [
30
+ 'db:admin',
31
+ 'tenant:enter',
32
+ 'ddl',
33
+ 'secrets',
34
+ 'auth:session',
35
+ 'auth:users',
36
+ 'identity:provision',
37
+ 'audit:read',
38
+ 'data:write',
39
+ 'data:system',
40
+ 'notifications',
41
+ 'files',
42
+ 'documents',
43
+ 'edge-functions',
44
+ 'introspection',
45
+ 'storage',
46
+ 'cron',
47
+ 'field-types',
48
+ ];
49
+ /** The `ctx.internals` members a capability unlocks. */
50
+ export const CAPABILITY_MEMBERS = {
51
+ enqueueDDLJob: 'ddl',
52
+ introspectSchema: 'introspection',
53
+ extensionRegistry: 'introspection',
54
+ encryptSecret: 'secrets',
55
+ decryptSecret: 'secrets',
56
+ deriveTokenHash: 'secrets',
57
+ createBetterAuthSession: 'auth:session',
58
+ deleteUser: 'auth:users',
59
+ exportUserData: 'auth:users',
60
+ revokeUserSessions: 'auth:users',
61
+ setUserActive: 'auth:users',
62
+ liftOwnBan: 'auth:users',
63
+ provisionUser: 'identity:provision',
64
+ listTenantUsers: 'identity:provision',
65
+ updateUserProfile: 'identity:provision',
66
+ addTenantMember: 'identity:provision',
67
+ removeTenantMember: 'identity:provision',
68
+ setTenantMembershipEnd: 'identity:provision',
69
+ readAuditActivity: 'audit:read',
70
+ createRecord: 'data:write',
71
+ updateRecord: 'data:write',
72
+ deleteRecord: 'data:write',
73
+ asSystem: 'data:system',
74
+ sendNotification: 'notifications',
75
+ moveToTrash: 'files',
76
+ generatePDFAsync: 'documents',
77
+ runEdgeFunction: 'edge-functions',
78
+ };
@@ -1,3 +1,4 @@
1
+ import type { Capability, MembersLockedFor } from './capabilities.js';
1
2
  import type { Context, Hono } from 'hono';
2
3
  import type { Kysely, RawBuilder } from 'kysely';
3
4
  export { permissionGate } from './permission-gate.js';
@@ -164,7 +165,14 @@ export interface ExtensionConfig {
164
165
  * Default `any` keeps legacy extensions compiling untouched. Migrated
165
166
  * extensions get full Kysely autocomplete + typo detection.
166
167
  */
167
- export interface ExtensionContext<DB = any> {
168
+ /**
169
+ * `C` — the capabilities this extension declared, when it says so through
170
+ * `defineExtension`. It narrows `internals` to the members those capabilities
171
+ * unlock and `adminDb` to `db:admin`, so an undeclared capability is a compile
172
+ * error rather than a `CapabilityDeniedError` on the first request that needs
173
+ * it. Defaults to every capability: code that does not opt in keeps today's type.
174
+ */
175
+ export interface ExtensionContext<DB = any, C extends string = Capability> {
168
176
  /**
169
177
  * Kysely database instance (restricted — cannot query zv_* system tables).
170
178
  * Typed via the `DB` generic; use `ZveltioExtension<MySchema>` to opt in.
@@ -190,7 +198,7 @@ export interface ExtensionContext<DB = any> {
190
198
  * Use for legitimately global operations (platform-wide reporting, backup).
191
199
  * Declaring `db:admin` surfaces the cross-tenant access at review + install.
192
200
  */
193
- adminDb?: Kysely<DB>;
201
+ adminDb?: 'db:admin' extends C ? Kysely<DB> : never;
194
202
  /**
195
203
  * Per-request, tenant-scoped database. Returns the request's tenant
196
204
  * transaction (so the `zveltio.current_tenant` GUC is set and FORCE-RLS rows
@@ -307,7 +315,7 @@ export interface ExtensionContext<DB = any> {
307
315
  * Engine-internal helpers. Stable across patch versions but may break across
308
316
  * minor versions. First-party extensions only.
309
317
  */
310
- internals: ExtensionInternals<DB>;
318
+ internals: Omit<ExtensionInternals<DB>, MembersLockedFor<C>>;
311
319
  }
312
320
  /**
313
321
  * Engine-internal helpers passed via `ctx.internals.*`.
@@ -481,7 +489,12 @@ export interface ExtensionInternals<DB = unknown> {
481
489
  hidden: Set<string>;
482
490
  readOnly: Set<string>;
483
491
  }>;
484
- /** The Casbin role behind a user — what `getColumnAccess` keys on. */
492
+ /**
493
+ * The single role behind a user — what `getColumnAccess` keys on. Drawn from
494
+ * Casbin, the one source of roles: `god` (the instance attribute) > `member`
495
+ * (the `g <user> member *` row every account gets) > `public`. A user's full
496
+ * role set is `getUserRoles`.
497
+ */
485
498
  resolveUserRole: (user: {
486
499
  id?: string;
487
500
  role?: string;
@@ -576,6 +589,16 @@ export interface ExtensionInternals<DB = unknown> {
576
589
  metadata?: Record<string, unknown>;
577
590
  ip?: string;
578
591
  }) => Promise<void>;
592
+ /**
593
+ * Run `fn` acting as the system inside the running tenant, for the named
594
+ * collections (`['products']`, not `zvd_products`): collection permissions
595
+ * stand down for `ctx.db` during the call; tenant isolation and the table
596
+ * guard do not. Needs the `data:system` capability. Every call is audited
597
+ * with the extension, the user, the collections and `reason`.
598
+ */
599
+ asSystem: <T>(collections: readonly string[], fn: () => Promise<T>, opts?: {
600
+ reason?: string;
601
+ }) => Promise<T>;
579
602
  /**
580
603
  * The running tenant's recent audit rows, newest first — never another
581
604
  * tenant's, never instance-level events. `limit` defaults to 20, capped at
@@ -745,6 +768,47 @@ export interface ExtensionInternals<DB = unknown> {
745
768
  * cannot reach either. Needs the `auth:users` capability.
746
769
  */
747
770
  revokeUserSessions: (userId: string) => Promise<void>;
771
+ /**
772
+ * What the engine's own tables hold about a user — profile, their audit
773
+ * rows in every tenant and at instance level, notifications, the API keys
774
+ * they created (names, never secrets) and their approval requests — for a
775
+ * data-subject access request. `null` when there is no such user. Needs the
776
+ * `auth:users` capability.
777
+ */
778
+ exportUserData: (userId: string) => Promise<{
779
+ profile: {
780
+ id: string;
781
+ name: string | null;
782
+ email: string;
783
+ created_at: string;
784
+ } | null;
785
+ audit_log: Array<{
786
+ action: string;
787
+ collection: string | null;
788
+ record_id: string | null;
789
+ created_at: string;
790
+ }>;
791
+ notifications: Array<{
792
+ title: string;
793
+ message: string | null;
794
+ type: string | null;
795
+ is_read: boolean;
796
+ created_at: string;
797
+ }>;
798
+ api_keys: Array<{
799
+ name: string;
800
+ key_prefix: string | null;
801
+ scopes: unknown;
802
+ created_at: string;
803
+ }>;
804
+ approval_requests: Array<{
805
+ id: string;
806
+ collection: string;
807
+ record_id: string | null;
808
+ status: string;
809
+ requested_at: string;
810
+ }>;
811
+ } | null>;
748
812
  /**
749
813
  * `false` stops the user signing in by ANY method (password, magic link,
750
814
  * passkey, OAuth, SSO) and revokes their sessions; `true` lets them back in
@@ -934,18 +998,32 @@ export interface QueryAlterScope {
934
998
  * `register()` is idempotent within a scope (replaces on duplicate), so an
935
999
  * extension's `register()` can safely run multiple times during hot-reload.
936
1000
  */
1001
+ /**
1002
+ * A manifest `dependencies` / `optionalDependencies` entry. A required one must be
1003
+ * installed for this extension to load; an optional one need not be — its
1004
+ * services then read as `null`. Either way, the extensions named in these two
1005
+ * lists are the only ones whose services `ctx.services` hands this one.
1006
+ */
1007
+ export interface ManifestDependency {
1008
+ name: string;
1009
+ minVersion?: string;
1010
+ }
937
1011
  export interface ServiceRegistry {
938
1012
  /**
939
- * Publish a service under a name.
1013
+ * Publish a service under a name, which must be `<this extension's name>.<x>`.
940
1014
  * Idempotent: re-registering the same name from the same extension replaces.
941
1015
  * Throws if a different extension already owns that name.
942
1016
  */
943
1017
  register<T = unknown>(name: string, value: T): void;
944
1018
  /** Remove a service this extension previously registered. No-op if not owned. */
945
1019
  unregister(name: string): void;
946
- /** Get a service. Returns `null` if not registered. */
1020
+ /**
1021
+ * Get a service. Returns `null` if not registered (an optional dependency
1022
+ * that is not installed). Throws if its owner is not this extension or one in
1023
+ * its manifest `dependencies` / `optionalDependencies`.
1024
+ */
947
1025
  get<T = unknown>(name: string): T | null;
948
- /** Check if a service is registered. */
1026
+ /** Check if a service is registered. Throws as `get` does for an undeclared owner. */
949
1027
  has(name: string): boolean;
950
1028
  /**
951
1029
  * Wait for a service to be registered. Resolves immediately if already there.
@@ -1070,7 +1148,7 @@ export type MountStrategy = 'global' | 'subapp';
1070
1148
  * }
1071
1149
  * };
1072
1150
  */
1073
- export interface ZveltioExtension<DB = any> {
1151
+ export interface ZveltioExtension<DB = any, C extends string = Capability> {
1074
1152
  /** Unique name — must match manifest.json `name` exactly (e.g. `'hr/employees'`). */
1075
1153
  name: string;
1076
1154
  /** Category shown in the marketplace (e.g. `'hr'`, `'finance'`, `'content'`). */
@@ -1085,7 +1163,7 @@ export interface ZveltioExtension<DB = any> {
1085
1163
  * Called once when the extension is activated.
1086
1164
  * Register Hono routes, subscribe to events, etc.
1087
1165
  */
1088
- register: (app: Hono, ctx: ExtensionContext<DB>) => Promise<void>;
1166
+ register: (app: Hono, ctx: ExtensionContext<DB, C>) => Promise<void>;
1089
1167
  /** Register custom Studio field types contributed by this extension. */
1090
1168
  registerFieldTypes?: (registry: FieldTypeRegistryAPI) => void;
1091
1169
  /** Return absolute paths to SQL migration files, run in order on first activation. */
@@ -1215,5 +1293,21 @@ export interface AssetPreviewHandler {
1215
1293
  }) => boolean;
1216
1294
  component: any;
1217
1295
  }
1296
+ /**
1297
+ * Declare an extension together with the capabilities it uses, so `ctx` is typed
1298
+ * by them (roadmap R8). The list must match `permissions` in manifest.json —
1299
+ * the manifest is what the engine enforces and an administrator approves;
1300
+ * `zveltio extension validate` reports a difference.
1301
+ *
1302
+ * export default defineExtension(['secrets'], { name, category, register });
1303
+ *
1304
+ * Returns the extension unchanged, with the list attached as `capabilities`.
1305
+ */
1306
+ /** `ZveltioExtension`'s own default schema type, without spelling it again. */
1307
+ type DefaultExtensionDB = ZveltioExtension extends ZveltioExtension<infer D> ? D : never;
1308
+ export declare function defineExtension<const C extends readonly Capability[], DB = DefaultExtensionDB>(capabilities: C, extension: ZveltioExtension<DB, C[number]>): ZveltioExtension<DB, C[number]> & {
1309
+ readonly capabilities: C;
1310
+ };
1218
1311
  export type { Hono };
1312
+ export * from './capabilities.js';
1219
1313
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/extension/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/extension/index.ts"],"names":[],"mappings":"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"}
@@ -2,3 +2,7 @@ export { permissionGate } from './permission-gate.js';
2
2
  export { readMultipart, MULTIPART_REQUIRED } from './multipart.js';
3
3
  export { toJsonb } from './jsonb.js';
4
4
  export { isStorableNumeric, NumericConversionError, roundMoney, sumNumeric, toNumber, toNumberOrNull, toNumberSafe, } from './numeric.js';
5
+ export function defineExtension(capabilities, extension) {
6
+ return Object.assign(extension, { capabilities });
7
+ }
8
+ export * from './capabilities.js';
@@ -9,69 +9,40 @@
9
9
  * offline, applies on reconnect, handles conflicts. No external
10
10
  * dependency beyond the SDK + engine.
11
11
  *
12
- * - **`electric`** — Electric SQL replication. Postgres logical-
13
- * replication slot → Electric service → client. Conflicts are
14
- * resolved server-side via CRDTs Electric implements internally.
15
- * Requires an Electric service running alongside Postgres + the
16
- * engine routes from `routes/electric.ts` that mint short-lived
17
- * JWTs the client uses to authenticate.
12
+ * - **`electric`** — Electric 1.x shapes, served THROUGH the engine:
13
+ * `GET {engineUrl}/api/electric/v1/shape?collection=…`. The engine decides
14
+ * the table, rows and columns from the caller's grants, tenant, row rules
15
+ * and column permissions, and proxies Electric's Shape protocol (initial
16
+ * snapshot, then long-poll `live=true`). Read-only: writes go through the
17
+ * data API, and Electric streams them back. Requires the engine's
18
+ * ELECTRIC_URL + ELECTRIC_SECRET; the client never talks to Electric.
18
19
  *
19
- * Auth flow for the electric provider
20
- * -----------------------------------
21
- * 1. Provider calls `POST {engineUrl}/api/electric/auth` (with
22
- * credentials; the engine reads the better-auth session).
23
- * 2. Engine returns `{ token, expiresAt, electricUrl }`.
24
- * 3. Provider opens a websocket to `${electricUrl}?token=<jwt>`.
25
- * 4. Before each token expires, the provider re-requests a fresh one
26
- * (no user interaction).
27
- *
28
- * Pull/push semantics
29
- * -------------------
30
- * Electric replicates continuously over the websocket — there's no
31
- * explicit "pull" call. The provider's `pull()` is a no-op that returns
32
- * once the initial sync handshake completes. `push()` is the same: local
33
- * writes go through Electric's normal replication path automatically.
34
- * Both shims exist so the OfflineProvider interface stays uniform across
35
- * crdt/electric.
36
- *
37
- * Subscriptions
38
- * -------------
39
- * `subscribe('zvd_contacts', cb)` registers a callback fired whenever
40
- * Electric pushes a change for that table. The implementation uses the
41
- * websocket's `message` event with a routing table; one socket, many
42
- * subscriptions.
20
+ * `subscribe('contacts', cb)` keeps one live shape per collection and calls
21
+ * `cb` with every current row after each change. `pull()` brings each of
22
+ * `tables` up to date once.
43
23
  */
44
24
  export type OfflineProviderKind = 'crdt' | 'electric';
45
25
  export interface OfflineProviderConfig {
46
26
  /** Which sync engine to use. Default: 'crdt'. */
47
27
  provider?: OfflineProviderKind;
48
- /** Engine base URL — used for the token-mint call AND CRDT push/pull. */
28
+ /** Engine base URL — for CRDT push/pull and the Electric shape endpoint. */
49
29
  engineUrl: string;
50
- /**
51
- * Override the Electric websocket URL. When omitted, the provider asks
52
- * the engine via `GET /api/electric/config` so operators have a single
53
- * place to configure it. Useful for tests + dev setups.
54
- */
55
- electricUrl?: string;
56
- /**
57
- * Tables to record on the audit token claim. Does NOT restrict what
58
- * Electric replicates — Electric enforces that via its own config.
59
- */
30
+ /** Collections to replicate. */
60
31
  tables?: string[];
61
32
  /**
62
33
  * Override the `fetch` impl — handy for tests + SSR. Default: globalThis.fetch.
63
34
  */
64
35
  fetch?: typeof fetch;
65
36
  /**
66
- * Override the WebSocket constructor — handy for tests + non-browser
67
- * runtimes. Default: globalThis.WebSocket.
37
+ * Extra request headers for the Electric shape requests — an `X-API-Key` or
38
+ * `X-Tenant-Slug`. A browser session's cookie is sent without this.
68
39
  */
69
- websocket?: typeof WebSocket;
40
+ headers?: Record<string, string>;
70
41
  }
71
42
  /**
72
43
  * Public interface every provider implements. The CRDT provider wraps
73
- * `SyncManager`; the Electric provider wraps a websocket. Both expose the same
74
- * surface.
44
+ * `SyncManager`; the Electric provider follows the engine's shape endpoint. Both
45
+ * expose the same surface.
75
46
  */
76
47
  export interface OfflineProvider {
77
48
  readonly kind: OfflineProviderKind;
@@ -95,11 +66,9 @@ export declare class ElectricUnavailable extends Error {
95
66
  *
96
67
  * For `crdt` (default): returns a thin adapter around `SyncManager`.
97
68
  *
98
- * For `electric`: returns the real Electric provider. Throws
99
- * `ElectricNotConfigured` synchronously when required config is missing
100
- * (no electricUrl AND no way to discover one), or `ElectricUnavailable`
101
- * lazily on the first network op when the engine reports Electric is
102
- * disabled.
69
+ * For `electric`: syncs `tables` once before resolving. Throws
70
+ * `ElectricNotConfigured` when there is no `fetch`, and `ElectricUnavailable`
71
+ * when the engine refuses a shape (401, 403, 409 with its reason, 503).
103
72
  */
104
73
  export declare function createOfflineProvider(config: OfflineProviderConfig): Promise<OfflineProvider>;
105
74
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/offline/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,UAAU,CAAC;AAEtD,MAAM,WAAW,qBAAqB;IACpC,iDAAiD;IACjD,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,yEAAyE;IACzE,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,SAAS,CAAC;CAC9B;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,uEAAuE;IACvE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,0EAA0E;IAC1E,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACxB,uEAAuE;IACvE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IACpE,gDAAgD;IAChD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,qBAAa,qBAAsB,SAAQ,KAAK;gBAClC,MAAM,EAAE,MAAM;CAQ3B;AAED,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,MAAM,EAAE,MAAM;CAQ3B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,eAAe,CAAC,CAQ1B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/offline/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,UAAU,CAAC;AAEtD,MAAM,WAAW,qBAAqB;IACpC,iDAAiD;IACjD,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,uEAAuE;IACvE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,0EAA0E;IAC1E,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACxB,uEAAuE;IACvE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IACpE,gDAAgD;IAChD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,qBAAa,qBAAsB,SAAQ,KAAK;gBAClC,MAAM,EAAE,MAAM;CAO3B;AAED,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,MAAM,EAAE,MAAM;CAQ3B;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,eAAe,CAAC,CAQ1B"}
@@ -9,51 +9,30 @@
9
9
  * offline, applies on reconnect, handles conflicts. No external
10
10
  * dependency beyond the SDK + engine.
11
11
  *
12
- * - **`electric`** — Electric SQL replication. Postgres logical-
13
- * replication slot → Electric service → client. Conflicts are
14
- * resolved server-side via CRDTs Electric implements internally.
15
- * Requires an Electric service running alongside Postgres + the
16
- * engine routes from `routes/electric.ts` that mint short-lived
17
- * JWTs the client uses to authenticate.
12
+ * - **`electric`** — Electric 1.x shapes, served THROUGH the engine:
13
+ * `GET {engineUrl}/api/electric/v1/shape?collection=…`. The engine decides
14
+ * the table, rows and columns from the caller's grants, tenant, row rules
15
+ * and column permissions, and proxies Electric's Shape protocol (initial
16
+ * snapshot, then long-poll `live=true`). Read-only: writes go through the
17
+ * data API, and Electric streams them back. Requires the engine's
18
+ * ELECTRIC_URL + ELECTRIC_SECRET; the client never talks to Electric.
18
19
  *
19
- * Auth flow for the electric provider
20
- * -----------------------------------
21
- * 1. Provider calls `POST {engineUrl}/api/electric/auth` (with
22
- * credentials; the engine reads the better-auth session).
23
- * 2. Engine returns `{ token, expiresAt, electricUrl }`.
24
- * 3. Provider opens a websocket to `${electricUrl}?token=<jwt>`.
25
- * 4. Before each token expires, the provider re-requests a fresh one
26
- * (no user interaction).
27
- *
28
- * Pull/push semantics
29
- * -------------------
30
- * Electric replicates continuously over the websocket — there's no
31
- * explicit "pull" call. The provider's `pull()` is a no-op that returns
32
- * once the initial sync handshake completes. `push()` is the same: local
33
- * writes go through Electric's normal replication path automatically.
34
- * Both shims exist so the OfflineProvider interface stays uniform across
35
- * crdt/electric.
36
- *
37
- * Subscriptions
38
- * -------------
39
- * `subscribe('zvd_contacts', cb)` registers a callback fired whenever
40
- * Electric pushes a change for that table. The implementation uses the
41
- * websocket's `message` event with a routing table; one socket, many
42
- * subscriptions.
20
+ * `subscribe('contacts', cb)` keeps one live shape per collection and calls
21
+ * `cb` with every current row after each change. `pull()` brings each of
22
+ * `tables` up to date once.
43
23
  */
44
24
  export class ElectricNotConfigured extends Error {
45
25
  constructor(reason) {
46
26
  super(`Electric SQL provider is not configured: ${reason}. ` +
47
- `Set provider: 'crdt' for the default sync path, or stand up an Electric ` +
48
- `service and pass electricUrl. See docs/engine/offline-sync.md.`);
27
+ `Set provider: 'crdt' for the default sync path. See docs/engine/offline-sync.md.`);
49
28
  this.name = 'ElectricNotConfigured';
50
29
  }
51
30
  }
52
31
  export class ElectricUnavailable extends Error {
53
32
  constructor(reason) {
54
33
  super(`Electric SQL is unavailable: ${reason}. ` +
55
- `The engine reported ELECTRIC_URL / ELECTRIC_AUTH_TOKEN are unset, or the ` +
56
- `Electric service is down. Fall back to provider: 'crdt' or check the ops checklist.`);
34
+ `The engine refused the shape, reports ELECTRIC_URL / ELECTRIC_SECRET unset, or ` +
35
+ `the Electric service is down. Fall back to provider: 'crdt' or check the ops checklist.`);
57
36
  this.name = 'ElectricUnavailable';
58
37
  }
59
38
  }
@@ -62,11 +41,9 @@ export class ElectricUnavailable extends Error {
62
41
  *
63
42
  * For `crdt` (default): returns a thin adapter around `SyncManager`.
64
43
  *
65
- * For `electric`: returns the real Electric provider. Throws
66
- * `ElectricNotConfigured` synchronously when required config is missing
67
- * (no electricUrl AND no way to discover one), or `ElectricUnavailable`
68
- * lazily on the first network op when the engine reports Electric is
69
- * disabled.
44
+ * For `electric`: syncs `tables` once before resolving. Throws
45
+ * `ElectricNotConfigured` when there is no `fetch`, and `ElectricUnavailable`
46
+ * when the engine refuses a shape (401, 403, 409 with its reason, 503).
70
47
  */
71
48
  export async function createOfflineProvider(config) {
72
49
  const kind = config.provider ?? 'crdt';
@@ -141,131 +118,128 @@ async function makeElectricProvider(config) {
141
118
  if (typeof doFetch !== 'function') {
142
119
  throw new ElectricNotConfigured('no fetch implementation available — pass config.fetch');
143
120
  }
144
- const WSCandidate = config.websocket ?? globalThis.WebSocket;
145
- if (typeof WSCandidate !== 'function') {
146
- throw new ElectricNotConfigured('no WebSocket implementation available — pass config.websocket');
147
- }
148
- const WS = WSCandidate;
149
- // Mint the first token + figure out the Electric URL.
150
- async function mintToken() {
151
- const res = await doFetch(`${config.engineUrl}/api/electric/auth`, {
152
- method: 'POST',
121
+ const shapes = new Map();
122
+ const subscribers = new Map();
123
+ const loops = new Map();
124
+ // The engine names collections; `zvd_contacts` is accepted for the old table spelling.
125
+ const nameOf = (table) => table.replace(/^zvd_/, '');
126
+ const notify = (name) => {
127
+ const rows = [...(shapes.get(name)?.rows.values() ?? [])];
128
+ for (const cb of subscribers.get(name) ?? [])
129
+ cb(rows);
130
+ };
131
+ /** One Shape-protocol request. Resolves true once the shape is up to date. */
132
+ async function step(name, live, signal) {
133
+ const st = shapes.get(name) ?? { rows: new Map(), offset: '-1' };
134
+ shapes.set(name, st);
135
+ const qs = new URLSearchParams({ collection: name, offset: st.offset });
136
+ if (st.handle)
137
+ qs.set('handle', st.handle);
138
+ if (live)
139
+ qs.set('live', 'true');
140
+ if (live && st.cursor)
141
+ qs.set('cursor', st.cursor);
142
+ const res = await doFetch(`${config.engineUrl}/api/electric/v1/shape?${qs}`, {
153
143
  credentials: 'include',
154
- headers: { 'Content-Type': 'application/json' },
155
- body: JSON.stringify({ tables: config.tables ?? [] }),
144
+ headers: config.headers,
145
+ signal,
156
146
  });
157
- if (res.status === 401) {
158
- throw new ElectricUnavailable('engine returned 401 — sign in before requesting Electric sync');
159
- }
160
- if (res.status === 503) {
147
+ if (!res.ok) {
161
148
  const body = (await res.json().catch(() => ({})));
162
- throw new ElectricUnavailable(body.error ?? 'engine reports Electric is not configured');
149
+ if (res.status === 409 && body.code === 'electric.must_refetch') {
150
+ // The shape was rebuilt (a rule or grant changed): start over.
151
+ shapes.set(name, { rows: new Map(), offset: '-1' });
152
+ notify(name);
153
+ return false;
154
+ }
155
+ throw new ElectricUnavailable(`engine returned ${res.status}${body.code ? ` ${body.code}` : ''}: ` +
156
+ (body.detail ?? body.error ?? 'no detail'));
163
157
  }
164
- if (!res.ok) {
165
- throw new ElectricUnavailable(`engine returned ${res.status}`);
158
+ const messages = (await res.json());
159
+ st.offset = res.headers.get('electric-offset') ?? st.offset;
160
+ st.handle = res.headers.get('electric-handle') ?? st.handle;
161
+ st.cursor = res.headers.get('electric-cursor') ?? st.cursor;
162
+ let changed = false;
163
+ let upToDate = false;
164
+ for (const m of messages) {
165
+ if (m.headers.control === 'up-to-date')
166
+ upToDate = true;
167
+ if (!m.key)
168
+ continue;
169
+ changed = true;
170
+ if (m.headers.operation === 'delete')
171
+ st.rows.delete(m.key);
172
+ // An update carries only the changed columns.
173
+ else
174
+ st.rows.set(m.key, { ...st.rows.get(m.key), ...m.value });
166
175
  }
167
- return (await res.json());
176
+ if (changed)
177
+ notify(name);
178
+ return upToDate;
168
179
  }
169
- let auth = await mintToken();
170
- const electricUrl = config.electricUrl ?? auth.electricUrl;
171
- // Per-table subscription registry.
172
- const subscribers = new Map();
173
- // Token refresh — fire-and-forget background timer that mints a fresh
174
- // token ~10s before the current one expires.
175
- let refreshTimer = null;
176
- function scheduleRefresh() {
177
- if (refreshTimer)
178
- clearTimeout(refreshTimer);
179
- const delay = Math.max(1_000, auth.expiresAt - Date.now() - 10_000);
180
- refreshTimer = setTimeout(async () => {
181
- try {
182
- auth = await mintToken();
183
- scheduleRefresh();
184
- // No need to reconnect — Electric accepts refreshed tokens via
185
- // its in-band auth-update message. The full Electric driver
186
- // would send `{ type: 'auth', token: auth.token }` over the
187
- // socket. We emit it here so the server-side TLS is kept warm.
188
- if (socket && socket.readyState === WS.OPEN) {
189
- socket.send(JSON.stringify({ type: 'auth', token: auth.token }));
180
+ async function syncOnce(name) {
181
+ for (let i = 0; i < 1000 && !(await step(name, false)); i++)
182
+ ;
183
+ }
184
+ function follow(name) {
185
+ if (loops.has(name))
186
+ return;
187
+ const ctl = new AbortController();
188
+ loops.set(name, ctl);
189
+ void (async () => {
190
+ let backoff = 1_000;
191
+ let upToDate = false;
192
+ while (!ctl.signal.aborted) {
193
+ try {
194
+ upToDate = await step(name, upToDate, ctl.signal);
195
+ backoff = 1_000;
196
+ }
197
+ catch (err) {
198
+ if (ctl.signal.aborted)
199
+ return;
200
+ // A refusal (403, 409) stays a refusal until something changes; retry slowly.
201
+ console.warn(`[offline:electric] ${name}:`, err.message);
202
+ await new Promise((r) => setTimeout(r, backoff));
203
+ backoff = Math.min(backoff * 2, 30_000);
190
204
  }
191
205
  }
192
- catch (err) {
193
- console.warn('[offline:electric] token refresh failed:', err.message);
194
- }
195
- }, delay);
206
+ })();
196
207
  }
197
- // Open the websocket. Electric's URL contract is
198
- // `${baseUrl}?token=<jwt>`; we forward the URL the engine gave us.
199
- let socket;
200
- const handshake = new Promise((resolve, reject) => {
201
- const url = `${electricUrl}${electricUrl.includes('?') ? '&' : '?'}token=${encodeURIComponent(auth.token)}`;
202
- socket = new WS(url);
203
- socket.addEventListener('open', () => {
204
- resolve();
205
- scheduleRefresh();
206
- });
207
- socket.addEventListener('error', (ev) => {
208
- // The first error fires before `open`; treat it as a connect failure.
209
- reject(new ElectricUnavailable(`websocket error: ${ev.message ?? 'unknown'}`));
210
- });
211
- socket.addEventListener('message', (ev) => {
212
- let msg;
213
- try {
214
- msg = JSON.parse(ev.data);
215
- }
216
- catch {
217
- return; // Electric sometimes sends binary heartbeats — skip parse errors.
218
- }
219
- if (msg.type === 'change' && msg.table && Array.isArray(msg.rows)) {
220
- const subs = subscribers.get(msg.table);
221
- if (subs)
222
- for (const cb of subs)
223
- cb(msg.rows);
224
- }
225
- });
226
- });
227
- await handshake;
228
- return {
208
+ const provider = {
229
209
  kind: 'electric',
230
210
  async pull() {
231
- // Electric is continuous-sync — `pull` is a no-op that exists for
232
- // API parity with the CRDT path.
211
+ // A followed collection is already kept current by its live loop.
212
+ for (const t of config.tables ?? [])
213
+ if (!loops.has(nameOf(t)))
214
+ await syncOnce(nameOf(t));
233
215
  },
234
216
  async push() {
235
- // Same shape — local writes flow through replication automatically.
236
- return 0;
217
+ throw new Error('The electric provider syncs reads only: write through the data API ' +
218
+ '(client.collection(name).create/update/delete); Electric streams the change back.');
237
219
  },
238
220
  subscribe(table, cb) {
239
- let set = subscribers.get(table);
240
- if (!set) {
241
- set = new Set();
242
- subscribers.set(table, set);
243
- // Tell Electric we're interested in this table — the protocol
244
- // is documented in Electric's docs as `{ type: 'subscribe', table }`.
245
- if (socket.readyState === WS.OPEN) {
246
- socket.send(JSON.stringify({ type: 'subscribe', table }));
247
- }
248
- }
221
+ const name = nameOf(table);
222
+ const set = subscribers.get(name) ?? new Set();
223
+ subscribers.set(name, set);
249
224
  set.add(cb);
225
+ follow(name);
250
226
  return () => {
251
227
  set.delete(cb);
252
228
  if (set.size === 0) {
253
- subscribers.delete(table);
254
- if (socket.readyState === WS.OPEN) {
255
- socket.send(JSON.stringify({ type: 'unsubscribe', table }));
256
- }
229
+ subscribers.delete(name);
230
+ loops.get(name)?.abort();
231
+ loops.delete(name);
257
232
  }
258
233
  };
259
234
  },
260
235
  async close() {
261
- if (refreshTimer) {
262
- clearTimeout(refreshTimer);
263
- refreshTimer = null;
264
- }
265
- if (socket.readyState === WS.OPEN || socket.readyState === WS.CONNECTING) {
266
- socket.close();
267
- }
236
+ for (const ctl of loops.values())
237
+ ctl.abort();
238
+ loops.clear();
268
239
  subscribers.clear();
269
240
  },
270
241
  };
242
+ // Fail at creation, as the token mint did, when the engine refuses.
243
+ await provider.pull();
244
+ return provider;
271
245
  }
@@ -59,4 +59,26 @@ export interface CodegenOptions {
59
59
  * `<extension>/.zveltio/db.d.ts`).
60
60
  */
61
61
  export declare function emitTypeScript(schema: ParsedSchema, opts?: CodegenOptions): string;
62
+ /**
63
+ * TypeScript input type of each core field type. The engine registers the same
64
+ * types in `field-types/index.ts`; a unit test there keeps the two equal.
65
+ */
66
+ export declare const CORE_FIELD_TS_TYPES: Readonly<Record<string, string>>;
67
+ export interface CollectionShape {
68
+ name: string;
69
+ fields: {
70
+ name: string;
71
+ type: string;
72
+ required?: boolean;
73
+ }[];
74
+ }
75
+ /** A type `tsTypeOf` does not know is `any`. */
76
+ export declare function emitCollectionTypes(collection: CollectionShape, tsTypeOf?: (type: string) => string | undefined): string;
77
+ /** The whole `zveltio.d.ts`. */
78
+ export declare function emitCollectionTypesFile(collections: CollectionShape[], tsTypeOf?: (type: string) => string | undefined): string;
79
+ /**
80
+ * The collections of a schema directory, as `{ path: content }` (the shape
81
+ * `zveltio schema pull` writes), in name order.
82
+ */
83
+ export declare function collectionsFromSchemaFiles(files: Record<string, string>): CollectionShape[];
62
84
  //# sourceMappingURL=schema-codegen.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema-codegen.d.ts","sourceRoot":"","sources":["../src/schema-codegen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB;AAoND;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CA+BtD;AA6BD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,YAAY,CAoE7D;AAID,MAAM,WAAW,cAAc;IAC7B,6DAA6D;IAC7D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,GAAE,cAAmB,GAAG,MAAM,CA0BtF"}
1
+ {"version":3,"file":"schema-codegen.d.ts","sourceRoot":"","sources":["../src/schema-codegen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB;AAoND;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CA+BtD;AA6BD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,YAAY,CAoE7D;AAID,MAAM,WAAW,cAAc;IAC7B,6DAA6D;IAC7D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,GAAE,cAAmB,GAAG,MAAM,CA0BtF;AAaD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAuDhE,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;CAC9D;AAED,gDAAgD;AAChD,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,eAAe,EAC3B,QAAQ,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAyC,GAC7E,MAAM,CAeR;AAED,gCAAgC;AAChC,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,eAAe,EAAE,EAC9B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GAC9C,MAAM,CAGR;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,eAAe,EAAE,CAQ3F"}
@@ -401,3 +401,103 @@ export function emitTypeScript(schema, opts = {}) {
401
401
  function quoteIdentifierIfNeeded(name) {
402
402
  return /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(name) ? name : `'${name.replace(/'/g, "\\'")}'`;
403
403
  }
404
+ // ── Collection types (RFC schema-as-code §8) ─────────────────────────────────
405
+ //
406
+ // One generator for both `zveltio generate-types` paths: the engine's
407
+ // `/api/admin/types` (which knows every registered field type, extensions'
408
+ // included) and `--from schema/` (no engine; core types only). Same fields in,
409
+ // same text out.
410
+ /**
411
+ * TypeScript input type of each core field type. The engine registers the same
412
+ * types in `field-types/index.ts`; a unit test there keeps the two equal.
413
+ */
414
+ export const CORE_FIELD_TS_TYPES = {
415
+ text: 'string',
416
+ number: 'number',
417
+ boolean: 'boolean',
418
+ date: 'string',
419
+ datetime: 'string',
420
+ email: 'string',
421
+ url: 'string',
422
+ uuid: 'string',
423
+ json: 'Record<string, any>',
424
+ richtext: 'string',
425
+ file: '{ url: string; name: string; size: number; type: string }',
426
+ enum: 'string',
427
+ reference: 'string',
428
+ m2o: 'string',
429
+ location: '{ lat: number; lng: number }',
430
+ computed: 'never',
431
+ integer: 'number',
432
+ float: 'number',
433
+ textarea: 'string',
434
+ password: 'string',
435
+ slug: 'string',
436
+ color: 'string',
437
+ phone: 'string',
438
+ tags: 'string[]',
439
+ image: '{ url: string; name: string; size: number; width?: number; height?: number; alt?: string }',
440
+ o2m: 'string[]',
441
+ m2m: 'string[]',
442
+ m2a: '{ collection: string; id: string }[]',
443
+ geometry: '{ type: string; coordinates: any }',
444
+ vector: 'number[]',
445
+ smallint: 'number',
446
+ real: 'number',
447
+ decimal: 'number',
448
+ money: 'number',
449
+ varchar: 'string',
450
+ char: 'string',
451
+ time: 'string',
452
+ timetz: 'string',
453
+ interval: 'string',
454
+ bytea: 'string',
455
+ tsvector: 'string',
456
+ inet: 'string',
457
+ cidr: 'string',
458
+ macaddr: 'string',
459
+ xml: 'string',
460
+ bit: 'string',
461
+ varbit: 'string',
462
+ int4range: '{ lower: number; upper: number }',
463
+ int8range: '{ lower: number; upper: number }',
464
+ numrange: '{ lower: number; upper: number }',
465
+ daterange: '{ lower: string; upper: string }',
466
+ tsrange: '{ lower: string; upper: string }',
467
+ tstzrange: '{ lower: string; upper: string }',
468
+ };
469
+ /** A type `tsTypeOf` does not know is `any`. */
470
+ export function emitCollectionTypes(collection, tsTypeOf = (t) => CORE_FIELD_TS_TYPES[t]) {
471
+ const typeName = collection.name.charAt(0).toUpperCase() + collection.name.slice(1);
472
+ const inputFields = collection.fields
473
+ .map((f) => ` ${f.name}${f.required ? '' : '?'}: ${tsTypeOf(f.type) || 'any'};`)
474
+ .join('\n');
475
+ return `export interface ${typeName}Input {
476
+ ${inputFields}
477
+ }
478
+
479
+ export interface ${typeName} extends ${typeName}Input {
480
+ id: string;
481
+ created_at: string;
482
+ updated_at: string;
483
+ status: string;
484
+ }`;
485
+ }
486
+ /** The whole `zveltio.d.ts`. */
487
+ export function emitCollectionTypesFile(collections, tsTypeOf) {
488
+ const types = collections.map((c) => emitCollectionTypes(c, tsTypeOf)).join('\n\n');
489
+ return `// Auto-generated by Zveltio\n// Do not edit manually\n\n${types}`;
490
+ }
491
+ /**
492
+ * The collections of a schema directory, as `{ path: content }` (the shape
493
+ * `zveltio schema pull` writes), in name order.
494
+ */
495
+ export function collectionsFromSchemaFiles(files) {
496
+ return Object.keys(files)
497
+ .filter((p) => /^collections\/[^/]+\.json$/.test(p))
498
+ .sort()
499
+ .map((p) => {
500
+ const file = JSON.parse(files[p]);
501
+ return { name: file.name, fields: file.fields ?? [] };
502
+ });
503
+ }
@@ -26,7 +26,7 @@
26
26
  */
27
27
  import type { Kysely } from 'kysely';
28
28
  export interface WithTestDbOptions {
29
- /** Postgres image. Default: `postgres:18-alpine`. */
29
+ /** Postgres image. Default: `pgvector/pgvector:pg18` (the image CI and docker-compose use). */
30
30
  image?: string;
31
31
  /** DB name to create. Default: `zveltio_test`. */
32
32
  database?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"with-test-db.d.ts","sourceRoot":"","sources":["../../src/testing/with-test-db.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGrC,MAAM,WAAW,iBAAiB;IAChC,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,MAAM;IACrB,8DAA8D;IAE9D,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAChB,+CAA+C;IAC/C,gBAAgB,EAAE,MAAM,CAAC;IACzB,iEAAiE;IACjE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AA4BD;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CA8E/E;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,UAAU,CAAC,CAAC,EAEhC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,iBAAiB,EAE/D,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GACxC,OAAO,CAAC,CAAC,CAAC,CAYZ;AAED;;;;;;;;;;;GAWG;AAGH,wBAAsB,qBAAqB,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBhG;AAED;;;GAGG;AAGH,wBAAsB,mBAAmB,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAIzF;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAStD;AAkBD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAuErD;AAGD,eAAO,MAAM,iBAAiB;;CAAsB,CAAC"}
1
+ {"version":3,"file":"with-test-db.d.ts","sourceRoot":"","sources":["../../src/testing/with-test-db.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGrC,MAAM,WAAW,iBAAiB;IAChC,+FAA+F;IAC/F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,MAAM;IACrB,8DAA8D;IAE9D,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAChB,+CAA+C;IAC/C,gBAAgB,EAAE,MAAM,CAAC;IACzB,iEAAiE;IACjE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AA4BD;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CA8E/E;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,UAAU,CAAC,CAAC,EAEhC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,iBAAiB,EAE/D,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GACxC,OAAO,CAAC,CAAC,CAAC,CAYZ;AAED;;;;;;;;;;;GAWG;AAGH,wBAAsB,qBAAqB,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBhG;AAED;;;GAGG;AAGH,wBAAsB,mBAAmB,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAIzF;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAStD;AAkBD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAuErD;AAGD,eAAO,MAAM,iBAAiB;;CAAsB,CAAC"}
@@ -55,7 +55,7 @@ async function loadKysely() {
55
55
  * pattern, prefer `withTestDb(fn)` below.
56
56
  */
57
57
  export async function startTestDb(opts = {}) {
58
- const image = opts.image ?? 'postgres:18-alpine';
58
+ const image = opts.image ?? 'pgvector/pgvector:pg18';
59
59
  const database = opts.database ?? `zveltio_test_${Date.now()}_${Math.floor(Math.random() * 10_000)}`;
60
60
  const startupTimeoutMs = opts.startupTimeoutMs ?? 60_000;
61
61
  const tc = await loadPgContainer();
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=validate-manifest-dependencies.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-manifest-dependencies.test.d.ts","sourceRoot":"","sources":["../../src/tests/validate-manifest-dependencies.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,27 @@
1
+ // `zveltio extension validate` checks both dependency lists the broker reads.
2
+ import { describe, expect, it } from 'bun:test';
3
+ import { validateManifest } from '../validate/index.js';
4
+ const base = {
5
+ name: 'a',
6
+ displayName: 'A',
7
+ category: 'custom',
8
+ description: 'd',
9
+ version: '1.0.0',
10
+ };
11
+ const codes = (extra) => validateManifest({ manifest: { ...base, ...extra } })
12
+ .filter((e) => e.code === 'MANIFEST_BAD_DEPENDENCY')
13
+ .map((e) => e.message);
14
+ describe('manifest dependencies / optionalDependencies', () => {
15
+ it('accepts both lists', () => {
16
+ expect(codes({
17
+ dependencies: [{ name: 'crm', minVersion: '1.0.0' }],
18
+ optionalDependencies: [{ name: 'ai' }],
19
+ })).toEqual([]);
20
+ });
21
+ it('refuses a malformed entry, a bad minVersion and a name in both lists', () => {
22
+ expect(codes({ optionalDependencies: 'ai' })).toHaveLength(1);
23
+ expect(codes({ optionalDependencies: [{ minVersion: '1.0.0' }] })[0]).toContain('has no name');
24
+ expect(codes({ optionalDependencies: [{ name: 'ai', minVersion: 'x' }] })[0]).toContain('not semver');
25
+ expect(codes({ dependencies: [{ name: 'ai' }], optionalDependencies: [{ name: 'ai' }] })[0]).toContain('"ai" is listed in "dependencies" and "optionalDependencies"');
26
+ });
27
+ });
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validate/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validate/index.ts"],"names":[],"mappings":"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"}
@@ -93,6 +93,34 @@ export function validateManifest(input) {
93
93
  if (typeof obj.zveltioMaxVersion === 'string' && !SEMVER_RE.test(obj.zveltioMaxVersion)) {
94
94
  out.push(err('MANIFEST_BAD_MAX_VERSION', `zveltioMaxVersion "${obj.zveltioMaxVersion}" is not valid semver`));
95
95
  }
96
+ // Required and optional extension dependencies share one shape; the broker
97
+ // lets an extension call services only of the extensions named in either.
98
+ const depNames = new Map();
99
+ for (const field of ['dependencies', 'optionalDependencies']) {
100
+ const list = obj[field];
101
+ if (list === undefined)
102
+ continue;
103
+ if (!Array.isArray(list)) {
104
+ out.push(err('MANIFEST_BAD_DEPENDENCY', `"${field}" must be an array of { name, minVersion? }`));
105
+ continue;
106
+ }
107
+ for (const d of list) {
108
+ const depName = d && typeof d === 'object' ? d.name : undefined;
109
+ const min = d && typeof d === 'object' ? d.minVersion : undefined;
110
+ if (typeof depName !== 'string' || depName.trim() === '') {
111
+ out.push(err('MANIFEST_BAD_DEPENDENCY', `"${field}" entry ${JSON.stringify(d)} has no name`));
112
+ continue;
113
+ }
114
+ if (min !== undefined && (typeof min !== 'string' || !SEMVER_RE.test(min))) {
115
+ out.push(err('MANIFEST_BAD_DEPENDENCY', `"${field}" ${depName}: minVersion ${JSON.stringify(min)} is not semver`));
116
+ }
117
+ const seen = depNames.get(depName);
118
+ if (seen) {
119
+ out.push(err('MANIFEST_BAD_DEPENDENCY', `"${depName}" is listed in "${seen}" and "${field}"`));
120
+ }
121
+ depNames.set(depName, field);
122
+ }
123
+ }
96
124
  // The engine's manifest schema refuses the whole extension (422) on a bad entry.
97
125
  if (obj.apiKeyRoutes !== undefined) {
98
126
  const routes = Array.isArray(obj.apiKeyRoutes) ? obj.apiKeyRoutes : [obj.apiKeyRoutes];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zveltio/sdk",
3
- "version": "3.0.0-beta.77",
3
+ "version": "3.0.0-beta.78",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -69,7 +69,7 @@
69
69
  "fake-indexeddb": "^6.2.5",
70
70
  "hono": "^4.13.8",
71
71
  "kysely": "^0.29.6",
72
- "pg": "^8.23.0",
72
+ "pg": "^8.23.1",
73
73
  "typescript": "^5.4.0"
74
74
  },
75
75
  "peerDependencies": {