d1-kyt 0.7.2 → 0.9.2

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/README.md CHANGED
@@ -1,10 +1,31 @@
1
1
  # d1-kyt
2
2
 
3
- Opinionated [Cloudflare D1](https://developers.cloudflare.com/d1/) + [Kysely](https://kysely.dev/) toolkit.
3
+ Type-safe [Cloudflare D1](https://developers.cloudflare.com/d1/) toolkit built on [Kysely](https://kysely.dev/) and [Valibot](https://valibot.dev/). Define your schema once in Valibot — get SQL migrations and fully-typed queries with no code generation.
4
4
 
5
- **ky**(sely) + **t**(oolkit) = **kyt**
5
+ ```typescript
6
+ import { defineTable, InferDB, createQueryBuilder } from 'd1-kyt';
7
+ import { queryAll, queryFirst, queryRun } from 'd1-kyt';
8
+ import * as v from 'valibot';
6
9
 
7
- > **Not an ORM.** Thin wrapper with helpers that relies on Kysely's type inference and Valibot schemas. No magic, no runtime overhead.
10
+ export const posts = defineTable('posts', {
11
+ title: v.string(),
12
+ published: v.boolean(),
13
+ views: v.pipe(v.number(), v.integer()),
14
+ categoryId: v.optional(v.pipe(v.number(), v.integer())),
15
+ meta: v.object({ og: v.string() }), // stored as JSON
16
+ }, {
17
+ foreignKeys: [{ columns: ['categoryId'], references: categories, onDelete: 'CASCADE' }],
18
+ indexes: [{ columns: ['title'], unique: true }],
19
+ });
20
+
21
+ export type DB = InferDB<{ posts: typeof posts }>;
22
+ export const db = createQueryBuilder<DB>();
23
+
24
+ // Type-safe queries — JSON and boolean columns deserialize automatically
25
+ const all = await queryAll(env.DB, db.selectFrom('posts').selectAll().compile());
26
+ const one = await queryFirst(env.DB, db.selectFrom('posts').where('id', '=', 1).selectAll().compile());
27
+ const done = await queryRun(env.DB, db.deleteFrom('posts').where('id', '=', 1).compile());
28
+ ```
8
29
 
9
30
  ## Install
10
31
 
@@ -15,81 +36,44 @@ npm install d1-kyt kysely valibot
15
36
  ## Workflow
16
37
 
17
38
  ```
18
- schema.ts → schema:diff → .sql migration → wrangler apply → types from schema
39
+ schema.ts → schema:diff → .sql migration → wrangler apply → typed queries
19
40
  ```
20
41
 
21
- 1. Define your schema with Valibot types in `schema.ts`
42
+ 1. Define tables with Valibot types in `schema.ts`
22
43
  2. Run `d1-kyt schema:diff <name>` — diffs against a snapshot, writes a `.sql` migration
23
44
  3. Apply with `wrangler d1 migrations apply <db> --local`
24
- 4. Use `$inferSelect` / `$inferInsert` from your schema for type-safe queries
25
-
26
- No code generation step required — types come directly from the schema file.
45
+ 4. Use `$inferSelect` / `$inferInsert` from your schema for typed queries
27
46
 
28
47
  ---
29
48
 
30
49
  ## Quick start
31
50
 
32
51
  ```bash
33
- # In your Cloudflare Workers project:
34
- d1-kyt init
35
-
36
- # Edit the generated schema file, then:
37
- d1-kyt schema:diff create_users
38
-
39
- # Apply to local D1:
40
- wrangler d1 migrations apply <db-name> --local
52
+ d1-kyt init # scaffold config + schema in db/
53
+ d1-kyt schema:diff create_posts # generates db/migrations/0001_create_posts.sql
54
+ wrangler d1 migrations apply <db> --local
41
55
  ```
42
56
 
43
- `init` auto-detects the right directory. Defaults to `db/`. If your wrangler config has a `migrations_dir` with a parent folder (e.g. `src/migrations/`), it uses that parent instead.
44
-
45
57
  ---
46
58
 
47
59
  ## Schema
48
60
 
49
- ```typescript
50
- // db/schema.ts
51
- import { defineTable, defineIndex, defineTrigger, type InferDB } from 'd1-kyt/schema';
52
- import { createQueryBuilder } from 'd1-kyt';
53
- import * as v from 'valibot';
54
-
55
- export const users = defineTable('users', {
56
- email: v.string(), // TEXT NOT NULL
57
- name: v.optional(v.string()), // TEXT (nullable)
58
- age: v.optional(v.pipe(v.number(), v.integer())), // INTEGER (nullable)
59
- prefs: v.optional(v.object({ theme: v.string() })), // TEXT JSON (nullable)
60
- role: v.optional(v.string(), 'user'), // TEXT DEFAULT 'user'
61
- });
62
-
63
- export const usersEmailIdx = defineIndex(users, ['email'], { unique: true });
64
-
65
- export const auditTrigger = defineTrigger('users_audit_trg', {
66
- timing: 'AFTER', event: 'INSERT', on: users,
67
- body: `INSERT INTO audit (action, at) VALUES ('insert', datetime('now'));`,
68
- });
69
-
70
- export type DB = InferDB<{ users: typeof users }>;
71
-
72
- // Compile-only Kysely query builder — stateless, no connection held.
73
- // Use with queryAll/queryFirst/queryRun to execute against D1.
74
- export const db = createQueryBuilder<DB>();
75
- ```
76
-
77
61
  ### Valibot → SQL type mapping
78
62
 
79
- | Valibot schema | SQL type | Nullable |
80
- |---|---|---|
81
- | `v.string()` | TEXT | NOT NULL |
82
- | `v.number()` | REAL | NOT NULL |
83
- | `v.pipe(v.number(), v.integer(), ...)` | INTEGER | NOT NULL |
84
- | `v.boolean()` | INTEGER | NOT NULL |
85
- | `v.object({...})` or `v.array(...)` | TEXT (JSON) | NOT NULL |
86
- | `v.optional(X)` | type of X | NULL |
87
- | `v.nullable(X)` | type of X | NULL |
88
- | `v.optional(X, defaultVal)` | type of X + DEFAULT | NULL |
63
+ | Valibot | SQL | Notes |
64
+ |---------|-----|-------|
65
+ | `v.string()` | TEXT NOT NULL | |
66
+ | `v.number()` | REAL NOT NULL | |
67
+ | `v.pipe(v.number(), v.integer())` | INTEGER NOT NULL | |
68
+ | `v.boolean()` | INTEGER NOT NULL | stored as 0/1, returned as `boolean` |
69
+ | `v.object({...})` / `v.array(...)` | TEXT NOT NULL | JSON serialized |
70
+ | `v.optional(X)` | nullable | |
71
+ | `v.nullable(X)` | nullable | |
72
+ | `v.optional(X, default)` | DEFAULT val | |
89
73
 
90
74
  ### Auto columns
91
75
 
92
- Every table gets `id`, `createdAt`, `updatedAt` by default, plus an `AFTER UPDATE` trigger for `updatedAt`. Control via options:
76
+ Every table gets `id` (INTEGER PRIMARY KEY AUTOINCREMENT), `createdAt` (TEXT), and `updatedAt` (TEXT) with an `AFTER UPDATE` trigger. All configurable:
93
77
 
94
78
  ```typescript
95
79
  // Disable everything
@@ -97,7 +81,7 @@ defineTable('events', { uuid: v.string() }, {
97
81
  primaryKey: false, createdAt: false, updatedAt: false,
98
82
  })
99
83
 
100
- // Custom names (snake_case)
84
+ // Custom names
101
85
  defineTable('users', { email: v.string() }, {
102
86
  primaryKeyColumn: 'user_id',
103
87
  createdAtColumn: 'created_at',
@@ -107,220 +91,119 @@ defineTable('users', { email: v.string() }, {
107
91
 
108
92
  ---
109
93
 
110
- ## CLI
111
-
112
- ```bash
113
- d1-kyt init [--dir <dir>] # scaffold config + schema template
114
- d1-kyt schema:diff <name> [--dir <dir>] # diff schema → write .sql migration
115
- d1-kyt schema:diff <name> --schema <path> # use a custom schema file path
116
- ```
117
-
118
- ### `init`
119
-
120
- Creates (skips if already exists):
121
- - `<dir>/config.ts` — migrationsDir + namingStrategy
122
- - `<dir>/schema.ts` — schema template to fill in
123
- - `<dir>/schema.snapshot.jsonc` — diff baseline (**commit this to git**)
124
-
125
- Directory resolution:
126
- 1. `--dir <path>` if provided
127
- 2. `db/` if it contains a `config.ts` (default)
128
- 3. `d1-kyt/` if it contains a `config.ts` (legacy)
129
- 4. Parent of wrangler `migrations_dir` if not the project root
130
-
131
- ### `schema:diff <name>`
132
-
133
- Reads your `schema.ts`, diffs against `schema.snapshot.jsonc`, writes a numbered `.sql` file to your `migrationsDir`, and updates the snapshot. **Commit the `.sql` and the snapshot together** — they are the source of truth for migration history.
134
-
135
- ```bash
136
- d1-kyt schema:diff create_users # generates 0001_create_users.sql
137
- d1-kyt schema:diff add_email_index # generates 0002_add_email_index.sql
138
- d1-kyt schema:diff --dir db add_posts # use db/config.ts, db/schema.ts
139
- ```
140
-
141
- ### Config
142
-
143
- ```typescript
144
- // db/config.ts (or d1-kyt/config.ts)
145
- import { defineConfig } from 'd1-kyt/config';
146
-
147
- export default defineConfig({
148
- migrationsDir: 'db/migrations',
149
- namingStrategy: 'sequential', // or 'timestamp'
150
- });
151
- ```
152
-
153
- ---
154
-
155
94
  ## Type inference
156
95
 
157
- Types come directly from your schema — no code generation step required:
158
-
159
96
  ```typescript
160
- import { users } from './db/schema';
161
-
162
- // Full row returned by SELECT
163
- type UserRow = typeof users.$inferSelect;
164
- // { id: number; email: string; name: string | undefined; age: number | undefined;
165
- // prefs: { theme: string } | undefined; role: string | undefined;
166
- // createdAt: string; updatedAt: string }
167
-
168
- // Input for INSERT
169
- type NewUser = typeof users.$inferInsert;
170
- // { email: string; name?: string | undefined; age?: number | undefined; ... id?: number }
97
+ type PostRow = typeof posts.$inferSelect;
98
+ // { id: number; title: string; published: boolean; views: number; ... }
171
99
 
172
- // Kysely DB type auto-columns are Generated<T> so insert doesn't require them
173
- import { type InferDB } from 'd1-kyt/schema';
174
- export type DB = InferDB<{ users: typeof users }>;
100
+ type NewPost = typeof posts.$inferInsert;
101
+ // { title: string; published: boolean; views: number; id?: number; ... }
175
102
  ```
176
103
 
177
104
  ---
178
105
 
179
- ## Query Builder
180
-
181
- `db` is a compile-only Kysely instance exported from your schema file. It holds no connection — it just builds typed SQL that you pass to `queryAll`/`queryFirst`/`queryRun` for execution.
106
+ ## Foreign keys
182
107
 
183
108
  ```typescript
184
- // src/queries.ts
185
- import { db } from './db/schema';
186
-
187
- export const listUsers = () =>
188
- db.selectFrom('users').selectAll().compile();
189
-
190
- export const getUserByEmail = (email: string) =>
191
- db.selectFrom('users').selectAll().where('email', '=', email).compile();
109
+ export const categories = defineTable('categories', { name: v.string() });
192
110
 
193
- export const insertUser = (email: string, name?: string) =>
194
- db.insertInto('users').values({ email, name }).returning(['id']).compile();
111
+ export const posts = defineTable('posts', {
112
+ title: v.string(),
113
+ categoryId: v.pipe(v.number(), v.integer()),
114
+ }, {
115
+ foreignKeys: [{ columns: ['categoryId'], references: categories, onDelete: 'CASCADE' }],
116
+ });
195
117
  ```
196
118
 
197
- ## Execute Queries
119
+ `PRAGMA foreign_keys = ON` is automatically prepended to any migration that includes FK constraints.
198
120
 
199
- ```typescript
200
- // src/app.ts
201
- import { Hono } from 'hono';
202
- import { queryAll, queryFirst, queryRun } from 'd1-kyt';
203
- import * as q from './queries';
204
-
205
- const app = new Hono();
206
-
207
- app.get('/users', async (c) => {
208
- const users = await queryAll(c.env.DB, q.listUsers());
209
- return c.json(users);
210
- });
211
-
212
- app.get('/users/:email', async (c) => {
213
- const user = await queryFirst(c.env.DB, q.getUserByEmail(c.req.param('email')));
214
- return user ? c.json(user) : c.notFound();
215
- });
121
+ Adding a FK column to an existing table requires a nullable column (SQLite limitation):
216
122
 
217
- app.post('/users', async (c) => {
218
- const { email, name } = await c.req.json();
219
- const [user] = await queryAll(c.env.DB, q.insertUser(email, name));
220
- return c.json(user, 201);
221
- });
123
+ ```typescript
124
+ deptId: v.optional(v.pipe(v.number(), v.integer())) // nullable allows inline REFERENCES
222
125
  ```
223
126
 
224
127
  ---
225
128
 
226
- ## Foreign keys
227
-
228
- Declare foreign keys in the table options. `PRAGMA foreign_keys = ON` is automatically prepended to any migration that includes FK constraints.
229
-
230
- ```typescript
231
- export const categories = defineTable('categories', { name: v.string() });
232
-
233
- export const posts = defineTable('posts', {
234
- title: v.string(),
235
- categoryId: v.pipe(v.number(), v.integer()),
236
- }, {
237
- foreignKeys: [
238
- { columns: ['categoryId'], references: categories, onDelete: 'CASCADE' },
239
- ],
240
- });
241
- ```
129
+ ## CLI
242
130
 
243
- Generates in `CREATE TABLE`:
244
- ```sql
245
- FOREIGN KEY ("categoryId") REFERENCES "categories"("id") ON DELETE CASCADE
131
+ ```bash
132
+ d1-kyt init [--dir <dir>]
133
+ d1-kyt schema:diff <name> [--dir <dir>] [--schema <path>]
246
134
  ```
247
135
 
248
- ### Adding a FK column to an existing table
136
+ **Always commit `schema.json` alongside each `.sql` migration** it is the diff baseline.
249
137
 
250
- Use a nullable column — SQLite allows `ALTER TABLE ADD COLUMN ... REFERENCES` only when the column is nullable (existing rows get `NULL`):
138
+ ### Config
251
139
 
252
140
  ```typescript
253
- // v2: add optional deptId FK to existing employees table
254
- export const employees = defineTable('employees', {
255
- name: v.string(),
256
- deptId: v.optional(v.pipe(v.number(), v.integer())), // nullable ✓
257
- }, {
258
- foreignKeys: [{ columns: ['deptId'], references: departments }],
259
- });
260
- ```
141
+ // db/config.ts
142
+ import { defineConfig } from 'd1-kyt';
261
143
 
262
- Generates:
263
- ```sql
264
- ALTER TABLE "employees" ADD COLUMN "deptId" INTEGER REFERENCES "departments"("id");
144
+ export default defineConfig({
145
+ migrationsDir: 'db/migrations',
146
+ namingStrategy: 'sequential', // or 'timestamp'
147
+ });
265
148
  ```
266
149
 
267
- > Adding a `NOT NULL` FK column to an existing table is not possible without a table rebuild — a warning comment is emitted instead.
150
+ ---
268
151
 
269
- ### Supported `onDelete` / `onUpdate` actions
152
+ ## D1 limits
270
153
 
271
- `CASCADE` | `SET NULL` | `RESTRICT` | `NO ACTION`
154
+ d1-kyt enforces D1's hard limits at runtime and emits warnings in generated migrations:
272
155
 
273
- ---
156
+ | Limit | Value |
157
+ |-------|-------|
158
+ | Bound parameters per query | 100 |
159
+ | SQL statement length | 100,000 chars |
160
+ | Columns per table | 100 (warning in migration) |
274
161
 
275
- ## Partial indexes
162
+ Custom validators:
276
163
 
277
164
  ```typescript
278
- defineIndex(users, ['email'], {
279
- unique: true,
280
- where: '"active" = 1', // raw SQL string
281
- })
282
- ```
165
+ import { D1_VALIDATORS, runValidators } from 'd1-kyt';
166
+ import type { QueryValidator } from 'd1-kyt';
283
167
 
284
- ---
285
-
286
- ## Conventions
168
+ const noDrops: QueryValidator = (q) => {
169
+ if (q.sql.includes('DROP')) throw new Error('DROP not allowed');
170
+ };
287
171
 
288
- - Auto `id INTEGER PRIMARY KEY AUTOINCREMENT`, `createdAt TEXT`, `updatedAt TEXT` on every table (all configurable/disableable)
289
- - Auto `AFTER UPDATE` trigger to keep `updatedAt` current
290
- - Index naming: `{table}_{cols}_idx` / `{table}_{cols}_uq`
291
- - Trigger naming: `{table}_{col}_trg`
292
- - `schema.snapshot.jsonc` is the diff source of truth — always commit it alongside migration SQL files
172
+ await queryAll(env.DB, query, undefined, [...D1_VALIDATORS, noDrops]);
173
+ await queryAll(env.DB, query, undefined, []); // disable all checks
174
+ ```
293
175
 
294
176
  ---
295
177
 
296
178
  ## API reference
297
179
 
298
- ### `d1-kyt/schema`
180
+ ### Schema
299
181
 
300
182
  | Export | Description |
301
- |---|---|
183
+ |--------|-------------|
302
184
  | `defineTable(name, columns, opts?)` | Define a table; returns `SchemaTable` with `$inferSelect` / `$inferInsert` |
303
- | `defineIndex(table, columns, opts?)` | Define an index (columns are type-checked against the table) |
304
- | `defineTrigger(name, opts)` | Define a custom trigger attached to a table |
305
- | `sqlTypeFromSchema(schema)` | Inspect a Valibot schema → `{ type, notNull, default?, isJson }` |
306
- | `TableOptions` | Options type for auto columns (re-exported) |
307
- | `InferDB<Tables>` | Infer a Kysely-compatible `DB` type from a record of `SchemaTable` definitions |
185
+ | `defineIndex(table, columns, opts?)` | Define an index (columns are type-checked) |
186
+ | `defineTrigger(name, opts)` | Define a custom trigger |
187
+ | `InferDB<Tables>` | Infer a Kysely-compatible `DB` type |
308
188
 
309
- ### `d1-kyt` (main)
189
+ ### Execution
310
190
 
311
191
  | Export | Description |
312
- |---|---|
313
- | `createQueryBuilder<DB>()` | Kysely instance (compile-only, no execution) |
314
- | `queryAll(db, query)` | Execute query, return all rows |
315
- | `queryFirst(db, query)` | Execute query, return first row or null |
316
- | `queryRun(db, query)` | Execute mutation, return run metadata |
317
- | `queryBatch(db, queries)` | Execute multiple queries as a D1 batch |
192
+ |--------|-------------|
193
+ | `createQueryBuilder<DB>()` | Compile-only Kysely instance |
194
+ | `queryAll(db, query, table?, validators?)` | All rows; JSON + boolean columns auto-deserialized |
195
+ | `queryFirst(db, query, table?, validators?)` | First row or null; auto-deserialized |
196
+ | `queryRun(db, query, validators?)` | INSERT / UPDATE / DELETE |
197
+ | `queryBatch(db, queries, validators?)` | Atomic batch |
318
198
 
319
- ### `d1-kyt/config`
199
+ ### Validators
320
200
 
321
201
  | Export | Description |
322
- |---|---|
323
- | `defineConfig(config)` | Define `config.ts` (typed helper) |
202
+ |--------|-------------|
203
+ | `D1_VALIDATORS` | Default validator array |
204
+ | `d1MaxParams` | Enforces ≤ 100 bound parameters |
205
+ | `d1MaxSqlLength` | Enforces ≤ 100,000 char SQL |
206
+ | `runValidators(query, validators?)` | Run validators manually |
324
207
 
325
208
  ---
326
209
 
package/dist/cli.js CHANGED
File without changes
@@ -1,5 +1,6 @@
1
1
  import type { CompiledQuery } from 'kysely';
2
2
  import type { SchemaTable } from './schema.js';
3
+ import type { QueryValidator } from './validators.js';
3
4
  /**
4
5
  * D1 query result with metadata
5
6
  */
@@ -48,7 +49,7 @@ interface D1Result<T = unknown> {
48
49
  * const users = await queryAll(env.DB, queries.listUsers());
49
50
  * ```
50
51
  */
51
- export declare function queryAll<T>(db: D1Database, query: CompiledQuery<T>, table?: SchemaTable<any, any>): Promise<T[]>;
52
+ export declare function queryAll<T>(db: D1Database, query: CompiledQuery<T>, table?: SchemaTable<any, any>, validators?: QueryValidator[]): Promise<T[]>;
52
53
  /**
53
54
  * Execute query and return first row or null
54
55
  *
@@ -57,7 +58,7 @@ export declare function queryAll<T>(db: D1Database, query: CompiledQuery<T>, tab
57
58
  * const user = await queryFirst(env.DB, queries.getUserById({ id: 1 }));
58
59
  * ```
59
60
  */
60
- export declare function queryFirst<T>(db: D1Database, query: CompiledQuery<T>, table?: SchemaTable<any, any>): Promise<T | null>;
61
+ export declare function queryFirst<T>(db: D1Database, query: CompiledQuery<T>, table?: SchemaTable<any, any>, validators?: QueryValidator[]): Promise<T | null>;
61
62
  /**
62
63
  * Execute query without returning rows (INSERT/UPDATE/DELETE)
63
64
  *
@@ -67,7 +68,7 @@ export declare function queryFirst<T>(db: D1Database, query: CompiledQuery<T>, t
67
68
  * console.log(result.meta.changes);
68
69
  * ```
69
70
  */
70
- export declare function queryRun(db: D1Database, query: CompiledQuery<unknown>): Promise<D1RunResult>;
71
+ export declare function queryRun(db: D1Database, query: CompiledQuery<unknown>, validators?: QueryValidator[]): Promise<D1RunResult>;
71
72
  /**
72
73
  * Execute multiple queries in a batch (transaction-like)
73
74
  *
@@ -79,6 +80,6 @@ export declare function queryRun(db: D1Database, query: CompiledQuery<unknown>):
79
80
  * ]);
80
81
  * ```
81
82
  */
82
- export declare function queryBatch(db: D1Database, queries: readonly CompiledQuery<unknown>[]): Promise<D1RunResult[]>;
83
+ export declare function queryBatch(db: D1Database, queries: readonly CompiledQuery<unknown>[], validators?: QueryValidator[]): Promise<D1RunResult[]>;
83
84
  export {};
84
85
  //# sourceMappingURL=executor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AA2B/C;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,OAAO,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAAC;IAC1C,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;CAC/E;AAED,UAAU,mBAAmB;IAC3B,IAAI,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,mBAAmB,CAAC;IAChD,GAAG,CAAC,CAAC,GAAG,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,KAAK,CAAC,CAAC,GAAG,OAAO,KAAK,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACxC,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;CACnC;AAED,UAAU,QAAQ,CAAC,CAAC,GAAG,OAAO;IAC5B,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,OAAO,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED;;;;;;;GAOG;AACH,wBAAsB,QAAQ,CAAC,CAAC,EAC9B,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,KAAK,CAAC,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,GAC5B,OAAO,CAAC,CAAC,EAAE,CAAC,CAOd;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,CAAC,EAChC,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,KAAK,CAAC,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,GAC5B,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAOnB;AAED;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,CAC5B,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,GAC5B,OAAO,CAAC,WAAW,CAAC,CAStB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,UAAU,CAC9B,EAAE,EAAE,UAAU,EACd,OAAO,EAAE,SAAS,aAAa,CAAC,OAAO,CAAC,EAAE,GACzC,OAAO,CAAC,WAAW,EAAE,CAAC,CASxB"}
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAoC,MAAM,QAAQ,CAAC;AAE9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AA8DtD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,OAAO,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAAC;IAC1C,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;CAC/E;AAED,UAAU,mBAAmB;IAC3B,IAAI,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,mBAAmB,CAAC;IAChD,GAAG,CAAC,CAAC,GAAG,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,KAAK,CAAC,CAAC,GAAG,OAAO,KAAK,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACxC,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;CACnC;AAED,UAAU,QAAQ,CAAC,CAAC,GAAG,OAAO;IAC5B,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,OAAO,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED;;;;;;;GAOG;AACH,wBAAsB,QAAQ,CAAC,CAAC,EAC9B,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,KAAK,CAAC,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,EAC7B,UAAU,CAAC,EAAE,cAAc,EAAE,GAC5B,OAAO,CAAC,CAAC,EAAE,CAAC,CAWd;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,CAAC,EAChC,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,KAAK,CAAC,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,EAC7B,UAAU,CAAC,EAAE,cAAc,EAAE,GAC5B,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAWnB;AAED;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,CAC5B,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,EAC7B,UAAU,CAAC,EAAE,cAAc,EAAE,GAC5B,OAAO,CAAC,WAAW,CAAC,CAUtB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,UAAU,CAC9B,EAAE,EAAE,UAAU,EACd,OAAO,EAAE,SAAS,aAAa,CAAC,OAAO,CAAC,EAAE,EAC1C,UAAU,CAAC,EAAE,cAAc,EAAE,GAC5B,OAAO,CAAC,WAAW,EAAE,CAAC,CAUxB"}
package/dist/executor.js CHANGED
@@ -1,4 +1,6 @@
1
- import { sqlTypeFromSchema } from './schema.js';
1
+ import { SelectQueryNode, TableNode, AliasNode } from 'kysely';
2
+ import { sqlTypeFromSchema, getTableRegistry } from './schema.js';
3
+ import { runValidators } from './validators.js';
2
4
  /**
3
5
  * Serialize a query parameter for D1 binding.
4
6
  * D1 accepts: null | string | number | boolean | ArrayBuffer | ArrayBufferView.
@@ -13,17 +15,53 @@ function serializeParam(p) {
13
15
  return p;
14
16
  return JSON.stringify(p);
15
17
  }
16
- function deserializeRow(row, table) {
18
+ function extractTableNames(node) {
19
+ const names = new Set();
20
+ if (!SelectQueryNode.is(node))
21
+ return [];
22
+ const collectFrom = (n) => {
23
+ if (TableNode.is(n)) {
24
+ names.add(n.table.identifier.name);
25
+ }
26
+ else if (AliasNode.is(n) && TableNode.is(n.node)) {
27
+ names.add(n.node.table.identifier.name);
28
+ }
29
+ };
30
+ if (node.from) {
31
+ for (const f of node.from.froms)
32
+ collectFrom(f);
33
+ }
34
+ if (node.joins) {
35
+ for (const j of node.joins)
36
+ collectFrom(j.table);
37
+ }
38
+ return Array.from(names);
39
+ }
40
+ function deserializeRow(row, tables) {
17
41
  const result = { ...row };
18
- for (const col of Object.keys(table._columns)) {
19
- if (col in result && typeof result[col] === 'string') {
20
- if (sqlTypeFromSchema(table._columns[col]).isJson) {
42
+ for (const table of tables) {
43
+ for (const col of Object.keys(table._columns)) {
44
+ if (!(col in result))
45
+ continue;
46
+ const info = sqlTypeFromSchema(table._columns[col]);
47
+ if (info.isJson && typeof result[col] === 'string') {
21
48
  result[col] = JSON.parse(result[col]);
22
49
  }
50
+ else if (info.isBoolean && (result[col] === 0 || result[col] === 1)) {
51
+ result[col] = result[col] === 1;
52
+ }
23
53
  }
24
54
  }
25
55
  return result;
26
56
  }
57
+ function resolveTables(node, explicit) {
58
+ if (explicit)
59
+ return [explicit];
60
+ const registry = getTableRegistry();
61
+ return extractTableNames(node)
62
+ .map((n) => registry.get(n))
63
+ .filter((t) => t !== undefined);
64
+ }
27
65
  /**
28
66
  * Execute query and return all rows
29
67
  *
@@ -32,13 +70,17 @@ function deserializeRow(row, table) {
32
70
  * const users = await queryAll(env.DB, queries.listUsers());
33
71
  * ```
34
72
  */
35
- export async function queryAll(db, query, table) {
73
+ export async function queryAll(db, query, table, validators) {
74
+ runValidators(query, validators);
75
+ const tables = resolveTables(query.query, table);
36
76
  const result = await db
37
77
  .prepare(query.sql)
38
78
  .bind(...query.parameters.map(serializeParam))
39
79
  .all();
40
80
  const rows = result.results ?? [];
41
- return table ? rows.map((r) => deserializeRow(r, table)) : rows;
81
+ return tables.length > 0
82
+ ? rows.map((r) => deserializeRow(r, tables))
83
+ : rows;
42
84
  }
43
85
  /**
44
86
  * Execute query and return first row or null
@@ -48,14 +90,18 @@ export async function queryAll(db, query, table) {
48
90
  * const user = await queryFirst(env.DB, queries.getUserById({ id: 1 }));
49
91
  * ```
50
92
  */
51
- export async function queryFirst(db, query, table) {
93
+ export async function queryFirst(db, query, table, validators) {
94
+ runValidators(query, validators);
95
+ const tables = resolveTables(query.query, table);
52
96
  const result = await db
53
97
  .prepare(query.sql)
54
98
  .bind(...query.parameters.map(serializeParam))
55
99
  .first();
56
100
  if (result == null)
57
101
  return null;
58
- return table ? deserializeRow(result, table) : result;
102
+ return tables.length > 0
103
+ ? deserializeRow(result, tables)
104
+ : result;
59
105
  }
60
106
  /**
61
107
  * Execute query without returning rows (INSERT/UPDATE/DELETE)
@@ -66,7 +112,8 @@ export async function queryFirst(db, query, table) {
66
112
  * console.log(result.meta.changes);
67
113
  * ```
68
114
  */
69
- export async function queryRun(db, query) {
115
+ export async function queryRun(db, query, validators) {
116
+ runValidators(query, validators);
70
117
  const result = await db
71
118
  .prepare(query.sql)
72
119
  .bind(...query.parameters.map(serializeParam))
@@ -87,7 +134,9 @@ export async function queryRun(db, query) {
87
134
  * ]);
88
135
  * ```
89
136
  */
90
- export async function queryBatch(db, queries) {
137
+ export async function queryBatch(db, queries, validators) {
138
+ for (const q of queries)
139
+ runValidators(q, validators);
91
140
  const statements = queries.map((q) => db.prepare(q.sql).bind(...q.parameters.map(serializeParam)));
92
141
  const results = await db.batch(statements);
93
142
  return results.map((r) => ({
@@ -1 +1 @@
1
- {"version":3,"file":"executor.js","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,11 @@
1
1
  export { createQueryBuilder } from './query-builder.js';
2
2
  export { queryAll, queryFirst, queryRun, queryBatch } from './executor.js';
3
3
  export type { D1Database, D1RunResult } from './executor.js';
4
+ export { defineTable, defineIndex, defineTrigger, sqlTypeFromSchema, getTableRegistry, } from './schema.js';
5
+ export type { InferDB, SchemaTable, SchemaIndex, SchemaTrigger, SchemaForeignKey, ColumnTypeInfo, SqliteType, TableOptions, } from './schema.js';
6
+ export { defineConfig } from './config.js';
7
+ export type { D1KytConfig, NamingStrategy } from './config.js';
8
+ export { d1MaxParams, d1MaxSqlLength, D1_VALIDATORS, runValidators } from './validators.js';
9
+ export { D1_MAX_BOUND_PARAMETERS, D1_MAX_SQL_LENGTH, D1_MAX_COLUMNS } from './validators.js';
10
+ export type { QueryValidator } from './validators.js';
4
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3E,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3E,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG7D,OAAO,EACL,WAAW,EACX,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,OAAO,EACP,WAAW,EACX,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,YAAY,GACb,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG/D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC5F,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC7F,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -1,3 +1,10 @@
1
1
  export { createQueryBuilder } from './query-builder.js';
2
2
  export { queryAll, queryFirst, queryRun, queryBatch } from './executor.js';
3
+ // schema
4
+ export { defineTable, defineIndex, defineTrigger, sqlTypeFromSchema, getTableRegistry, } from './schema.js';
5
+ // config
6
+ export { defineConfig } from './config.js';
7
+ // validators
8
+ export { d1MaxParams, d1MaxSqlLength, D1_VALIDATORS, runValidators } from './validators.js';
9
+ export { D1_MAX_BOUND_PARAMETERS, D1_MAX_SQL_LENGTH, D1_MAX_COLUMNS } from './validators.js';
3
10
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3E,SAAS;AACT,OAAO,EACL,WAAW,EACX,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAYrB,SAAS;AACT,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,aAAa;AACb,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC5F,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"schema-diff.d.ts","sourceRoot":"","sources":["../src/schema-diff.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema-diff.d.ts","sourceRoot":"","sources":["../src/schema-diff.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@
3
3
  * the declarative schema workflow (schema:diff command).
4
4
  */
5
5
  import { sqlTypeFromSchema } from './schema.js';
6
+ import { D1_MAX_COLUMNS, D1_MAX_SQL_LENGTH } from './validators.js';
6
7
  // ----------------------------------------------------------------------------
7
8
  // Internal Helpers
8
9
  // ----------------------------------------------------------------------------
@@ -344,6 +345,10 @@ export function diffToSQL(diff, chunkSize = 5000) {
344
345
  for (const table of diff.addedTables) {
345
346
  if (Object.keys(table.foreignKeys ?? {}).length > 0)
346
347
  hasForeignKeys = true;
348
+ const colCount = Object.keys(table.columns).length;
349
+ if (colCount > D1_MAX_COLUMNS) {
350
+ statements.push(`-- WARNING: table "${table.name}" has ${colCount} columns (D1 limit: ${D1_MAX_COLUMNS})`);
351
+ }
347
352
  statements.push(...tableToCreateSQL(table));
348
353
  }
349
354
  // Dropped tables
@@ -488,6 +493,14 @@ export function diffToSQL(diff, chunkSize = 5000) {
488
493
  if (hasForeignKeys) {
489
494
  statements.unshift('PRAGMA foreign_keys = ON;');
490
495
  }
491
- return statements;
496
+ // Warn about any statement that exceeds the D1 SQL length limit
497
+ const result = [];
498
+ for (const stmt of statements) {
499
+ if (!stmt.startsWith('--') && stmt.length > D1_MAX_SQL_LENGTH) {
500
+ result.push(`-- WARNING: statement below is ${stmt.length} characters (D1 limit: ${D1_MAX_SQL_LENGTH}); apply manually or split further`);
501
+ }
502
+ result.push(stmt);
503
+ }
504
+ return result;
492
505
  }
493
506
  //# sourceMappingURL=schema-diff.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema-diff.js","sourceRoot":"","sources":["../src/schema-diff.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema-diff.js","sourceRoot":"","sources":["../src/schema-diff.ts"],"names":[],"mappings":"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"}
package/dist/schema.d.ts CHANGED
@@ -104,6 +104,7 @@ export interface ColumnTypeInfo {
104
104
  notNull: boolean;
105
105
  default?: string;
106
106
  isJson: boolean;
107
+ isBoolean: boolean;
107
108
  }
108
109
  /**
109
110
  * Inspect a Valibot schema object and derive the SQLite type, nullability,
@@ -119,6 +120,7 @@ export interface ColumnTypeInfo {
119
120
  * v.optional(X, defaultVal) → type of X + DEFAULT, nullable
120
121
  */
121
122
  export declare function sqlTypeFromSchema(schema: v.BaseSchema<any, any, any>): ColumnTypeInfo;
123
+ export declare function getTableRegistry(): ReadonlyMap<string, SchemaTable<any, any>>;
122
124
  /**
123
125
  * Define a table using Valibot schemas as column types.
124
126
  *
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
package/dist/schema.js CHANGED
@@ -43,26 +43,32 @@ export function sqlTypeFromSchema(schema) {
43
43
  if (inner?.type === 'number' && Array.isArray(inner.pipe)) {
44
44
  const hasInteger = inner.pipe.some((item) => item.type === 'integer' && item.kind === 'validation');
45
45
  if (hasInteger) {
46
- return { type: 'INTEGER', notNull: !nullable, default: defaultSql, isJson: false };
46
+ return { type: 'INTEGER', notNull: !nullable, default: defaultSql, isJson: false, isBoolean: false };
47
47
  }
48
48
  }
49
49
  const baseType = inner?.type ?? 'unknown';
50
50
  switch (baseType) {
51
51
  case 'string':
52
- return { type: 'TEXT', notNull: !nullable, default: defaultSql, isJson: false };
52
+ return { type: 'TEXT', notNull: !nullable, default: defaultSql, isJson: false, isBoolean: false };
53
53
  case 'number':
54
- return { type: 'REAL', notNull: !nullable, default: defaultSql, isJson: false };
54
+ return { type: 'REAL', notNull: !nullable, default: defaultSql, isJson: false, isBoolean: false };
55
55
  case 'boolean':
56
- return { type: 'INTEGER', notNull: !nullable, default: defaultSql, isJson: false };
56
+ return { type: 'INTEGER', notNull: !nullable, default: defaultSql, isJson: false, isBoolean: true };
57
57
  case 'object':
58
58
  case 'array':
59
- return { type: 'TEXT', notNull: !nullable, default: defaultSql, isJson: true };
59
+ return { type: 'TEXT', notNull: !nullable, default: defaultSql, isJson: true, isBoolean: false };
60
60
  default:
61
- // Fallback: TEXT NOT NULL
62
- return { type: 'TEXT', notNull: !nullable, default: defaultSql, isJson: false };
61
+ return { type: 'TEXT', notNull: !nullable, default: defaultSql, isJson: false, isBoolean: false };
63
62
  }
64
63
  }
65
64
  // ----------------------------------------------------------------------------
65
+ // Table Registry
66
+ // ----------------------------------------------------------------------------
67
+ const tableRegistry = new Map();
68
+ export function getTableRegistry() {
69
+ return tableRegistry;
70
+ }
71
+ // ----------------------------------------------------------------------------
66
72
  // defineTable
67
73
  // ----------------------------------------------------------------------------
68
74
  /**
@@ -83,7 +89,7 @@ export function sqlTypeFromSchema(schema) {
83
89
  * ```
84
90
  */
85
91
  export function defineTable(name, columns, options) {
86
- return {
92
+ const table = {
87
93
  _name: name,
88
94
  _columns: columns,
89
95
  _options: (options ?? {}),
@@ -92,6 +98,8 @@ export function defineTable(name, columns, options) {
92
98
  _foreignKeys: [...(options?.foreignKeys ?? [])],
93
99
  _schemaTable: true,
94
100
  };
101
+ tableRegistry.set(name, table);
102
+ return table;
95
103
  }
96
104
  // ----------------------------------------------------------------------------
97
105
  // defineIndex
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { CompiledQuery } from 'kysely';
2
+ export type QueryValidator = (query: CompiledQuery<unknown>) => void;
3
+ export declare const D1_MAX_BOUND_PARAMETERS = 100;
4
+ export declare const D1_MAX_SQL_LENGTH = 100000;
5
+ export declare const D1_MAX_COLUMNS = 100;
6
+ export declare const d1MaxParams: QueryValidator;
7
+ export declare const d1MaxSqlLength: QueryValidator;
8
+ export declare const D1_VALIDATORS: QueryValidator[];
9
+ export declare function runValidators(query: CompiledQuery<unknown>, validators?: QueryValidator[]): void;
10
+ //# sourceMappingURL=validators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAE5C,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;AAErE,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,iBAAiB,SAAU,CAAC;AACzC,eAAO,MAAM,cAAc,MAAM,CAAC;AAElC,eAAO,MAAM,WAAW,EAAE,cAOzB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,cAO5B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,cAAc,EAAkC,CAAC;AAE7E,wBAAgB,aAAa,CAC3B,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,EAC7B,UAAU,GAAE,cAAc,EAAkB,GAC3C,IAAI,CAIN"}
@@ -0,0 +1,22 @@
1
+ export const D1_MAX_BOUND_PARAMETERS = 100;
2
+ export const D1_MAX_SQL_LENGTH = 100_000;
3
+ export const D1_MAX_COLUMNS = 100;
4
+ export const d1MaxParams = (query) => {
5
+ if (query.parameters.length > D1_MAX_BOUND_PARAMETERS) {
6
+ throw new Error(`D1 limit: query has ${query.parameters.length} bound parameters (max ${D1_MAX_BOUND_PARAMETERS}). ` +
7
+ `Split into multiple queries or reduce the number of columns.`);
8
+ }
9
+ };
10
+ export const d1MaxSqlLength = (query) => {
11
+ if (query.sql.length > D1_MAX_SQL_LENGTH) {
12
+ throw new Error(`D1 limit: SQL statement is ${query.sql.length} characters (max ${D1_MAX_SQL_LENGTH}). ` +
13
+ `Simplify the query or split it into smaller statements.`);
14
+ }
15
+ };
16
+ export const D1_VALIDATORS = [d1MaxParams, d1MaxSqlLength];
17
+ export function runValidators(query, validators = D1_VALIDATORS) {
18
+ for (const validate of validators) {
19
+ validate(query);
20
+ }
21
+ }
22
+ //# sourceMappingURL=validators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAC3C,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CAAC;AACzC,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC;AAElC,MAAM,CAAC,MAAM,WAAW,GAAmB,CAAC,KAAK,EAAE,EAAE;IACnD,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,uBAAuB,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CACb,uBAAuB,KAAK,CAAC,UAAU,CAAC,MAAM,0BAA0B,uBAAuB,KAAK;YAClG,8DAA8D,CACjE,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAmB,CAAC,KAAK,EAAE,EAAE;IACtD,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,iBAAiB,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CACb,8BAA8B,KAAK,CAAC,GAAG,CAAC,MAAM,oBAAoB,iBAAiB,KAAK;YACtF,yDAAyD,CAC5D,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAqB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;AAE7E,MAAM,UAAU,aAAa,CAC3B,KAA6B,EAC7B,aAA+B,aAAa;IAE5C,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;QAClC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "d1-kyt",
3
- "version": "0.7.2",
3
+ "version": "0.9.2",
4
4
  "description": "Opinionated Cloudflare D1 + Kysely toolkit",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -13,30 +13,15 @@
13
13
  "types": "./dist/index.d.ts",
14
14
  "import": "./dist/index.js"
15
15
  },
16
- "./schema": {
17
- "types": "./dist/schema.d.ts",
18
- "import": "./dist/schema.js"
19
- },
20
16
  "./migrate": {
21
17
  "types": "./dist/migrate.d.ts",
22
18
  "import": "./dist/migrate.js"
23
- },
24
- "./config": {
25
- "types": "./dist/config.d.ts",
26
- "import": "./dist/config.js"
27
19
  }
28
20
  },
29
21
  "files": [
30
- "dist"
22
+ "dist",
23
+ "skills"
31
24
  ],
32
- "scripts": {
33
- "build": "tsc",
34
- "dev": "tsc --watch",
35
- "test": "vitest",
36
- "lint": "echo noop",
37
- "typecheck": "tsc --noEmit",
38
- "prepublishOnly": "pnpm build"
39
- },
40
25
  "keywords": [
41
26
  "cloudflare",
42
27
  "d1",
@@ -57,5 +42,12 @@
57
42
  "typescript": "5.9.3",
58
43
  "valibot": "1.2.0",
59
44
  "vitest": "4.0.18"
45
+ },
46
+ "scripts": {
47
+ "build": "tsc",
48
+ "dev": "tsc --watch",
49
+ "test": "vitest",
50
+ "lint": "echo noop",
51
+ "typecheck": "tsc --noEmit"
60
52
  }
61
- }
53
+ }
@@ -0,0 +1,185 @@
1
+ ---
2
+ name: use-d1-kyt
3
+ description: Use when building with d1-kyt — the Cloudflare D1 + Kysely + Valibot toolkit. Covers schema definition, migration generation, type inference, query execution, JSON column deserialization, D1 limits, and migration gotchas like NOT NULL FK constraints and table recreation.
4
+ ---
5
+
6
+ # Using d1-kyt
7
+
8
+ ## Overview
9
+
10
+ d1-kyt connects three layers: **Valibot** (schema/validation) → **Kysely** (type-safe query builder) → **Cloudflare D1/SQLite** (executor). No code generation, no ORM runtime.
11
+
12
+ ```
13
+ schema.ts → schema:diff → .sql migration → wrangler apply → typed queries
14
+ ```
15
+
16
+ ## 1. Define Schema
17
+
18
+ ```typescript
19
+ import { defineTable } from 'd1-kyt';
20
+ import * as v from 'valibot';
21
+
22
+ export const posts = defineTable(
23
+ 'posts',
24
+ {
25
+ title: v.string(), // TEXT NOT NULL
26
+ views: v.pipe(v.number(), v.integer()), // INTEGER NOT NULL
27
+ rating: v.number(), // REAL NOT NULL
28
+ published: v.boolean(), // INTEGER NOT NULL (0/1)
29
+ slug: v.optional(v.string()), // TEXT nullable
30
+ summary: v.optional(v.string(), 'TBD'), // TEXT DEFAULT 'TBD'
31
+ meta: v.object({ og: v.string() }), // TEXT (JSON) NOT NULL
32
+ tags: v.array(v.string()), // TEXT (JSON) NOT NULL
33
+ categoryId: v.pipe(v.number(), v.integer()),
34
+ },
35
+ {
36
+ foreignKeys: [{ columns: ['categoryId'], references: categories, onDelete: 'CASCADE' }],
37
+ indexes: [{ columns: ['slug'], unique: true }],
38
+ }
39
+ );
40
+ ```
41
+
42
+ **Column type mapping:**
43
+
44
+ | Valibot | SQL | Notes |
45
+ |---------|-----|-------|
46
+ | `v.string()` | TEXT NOT NULL | |
47
+ | `v.pipe(v.number(), v.integer())` | INTEGER NOT NULL | |
48
+ | `v.number()` | REAL NOT NULL | |
49
+ | `v.boolean()` | INTEGER NOT NULL | stored as 0/1 |
50
+ | `v.object({...})` / `v.array(...)` | TEXT NOT NULL | JSON serialized |
51
+ | `v.optional(schema)` | nullable | no default |
52
+ | `v.optional(schema, val)` | DEFAULT val | |
53
+ | `v.nullable(schema)` | nullable | |
54
+
55
+ Auto columns added to every table: `id` (INTEGER PRIMARY KEY AUTOINCREMENT), `createdAt` (TEXT), `updatedAt` (TEXT).
56
+
57
+ ## 2. Infer Types & Create Query Builder
58
+
59
+ ```typescript
60
+ import { InferDB, createQueryBuilder } from 'd1-kyt';
61
+
62
+ export type DB = InferDB<{
63
+ posts: typeof posts;
64
+ categories: typeof categories;
65
+ }>;
66
+
67
+ // Stateless, compile-only Kysely instance — no connection held
68
+ export const db = createQueryBuilder<DB>();
69
+ ```
70
+
71
+ ## 3. Generate Migrations
72
+
73
+ ```bash
74
+ d1-kyt schema:diff # auto-name from diff
75
+ d1-kyt schema:diff add_tags_column # custom name
76
+ d1-kyt schema:diff --schema src/schema.ts # custom schema path
77
+ d1-kyt schema:diff --dir db # custom directory
78
+ ```
79
+
80
+ Reads: `schema.ts`, `schema.json` (snapshot). Writes: numbered `.sql` migration, updated `schema.json`, and `schema.sql` (full DDL from scratch).
81
+
82
+ **Always commit `schema.json` alongside the `.sql` file** — it is the baseline for the next diff.
83
+
84
+ ## 4. Execute Queries
85
+
86
+ ```typescript
87
+ import { queryAll, queryFirst, queryRun, queryBatch } from 'd1-kyt';
88
+
89
+ // All rows — JSON and boolean columns deserialize automatically
90
+ const allPosts = await queryAll(env.DB, db.selectFrom('posts').selectAll().compile());
91
+
92
+ // First row or null
93
+ const post = await queryFirst(
94
+ env.DB,
95
+ db.selectFrom('posts').selectAll().where('id', '=', id).compile(),
96
+ );
97
+
98
+ // INSERT / UPDATE / DELETE
99
+ const result = await queryRun(
100
+ env.DB,
101
+ db.insertInto('posts').values({ title: 'Hello', views: 0, ... }).compile(),
102
+ );
103
+ console.log(result.meta.changes); // rows affected
104
+
105
+ // Atomic batch
106
+ await queryBatch(env.DB, [
107
+ db.insertInto('posts').values({ ... }).compile(),
108
+ db.updateTable('posts').set({ views: 1 }).where('id', '=', 1).compile(),
109
+ ]);
110
+ ```
111
+
112
+ JSON columns (`v.object`, `v.array`) and boolean columns (`v.boolean`) are deserialized automatically — no need to pass the table explicitly.
113
+
114
+ ## 5. D1 Limits
115
+
116
+ d1-kyt enforces these at runtime — violations throw before hitting D1:
117
+
118
+ | Limit | Value | Where enforced |
119
+ |-------|-------|----------------|
120
+ | Bound parameters per query | 100 | `queryAll/First/Run/Batch` |
121
+ | SQL statement length | 100,000 chars | `queryAll/First/Run/Batch` |
122
+ | Columns per table | 100 | warning comment in generated SQL |
123
+ | SQL length in migrations | 100,000 chars | warning comment in generated SQL |
124
+
125
+ To use a custom validator set (e.g. disable checks in tests, or add your own rules):
126
+
127
+ ```typescript
128
+ import { D1_VALIDATORS, runValidators } from 'd1-kyt';
129
+ import type { QueryValidator } from 'd1-kyt';
130
+
131
+ const noDrops: QueryValidator = (q) => {
132
+ if (q.sql.includes('DROP')) throw new Error('DROP not allowed');
133
+ };
134
+
135
+ // extend
136
+ await queryAll(env.DB, query, posts, [...D1_VALIDATORS, noDrops]);
137
+
138
+ // disable all checks
139
+ await queryAll(env.DB, query, posts, []);
140
+ ```
141
+
142
+ Wide tables and batch inserts are the most common ways to hit the 100-parameter limit. An INSERT into a 98-column table already uses 98 parameters.
143
+
144
+ ## 6. Migration Gotchas
145
+
146
+ ### NOT NULL column with foreign key on existing table
147
+
148
+ SQLite's `ALTER TABLE ADD COLUMN` cannot include `REFERENCES` for NOT NULL columns. d1-kyt emits a warning and omits the FK:
149
+
150
+ ```sql
151
+ -- WARNING: cannot add NOT NULL column "categoryId" with FK to existing table "posts"; make it nullable or rebuild
152
+ ALTER TABLE "posts" ADD COLUMN "categoryId" INTEGER NOT NULL;
153
+ ```
154
+
155
+ Fix — make the column nullable so the FK can be inlined:
156
+
157
+ ```typescript
158
+ categoryId: v.optional(v.pipe(v.number(), v.integer()))
159
+ // generates: ALTER TABLE "posts" ADD COLUMN "categoryId" INTEGER REFERENCES "categories"("id")
160
+ ```
161
+
162
+ ### Table recreation for constrained column drops
163
+
164
+ Dropping a column that is part of a PRIMARY KEY or UNIQUE index requires full table recreation. d1-kyt generates 10 chunked `INSERT` statements (default 5,000 rows each = 50,000 rows total):
165
+
166
+ ```sql
167
+ -- WARNING: table "posts" must be recreated (constrained column drop). Data is copied in chunks of 5000 rows.
168
+ INSERT INTO "posts_new" SELECT ... FROM "posts" WHERE rowid BETWEEN 1 AND 5000;
169
+ -- ... 9 more chunks
170
+ -- If "posts" has more than 50000 rows, add more INSERT statements following the same pattern
171
+ ```
172
+
173
+ If your table exceeds 50,000 rows, extend the pattern manually in the generated SQL before applying.
174
+
175
+ ### Foreign keys and PRAGMA
176
+
177
+ When any FK is present, d1-kyt automatically prepends `PRAGMA foreign_keys = ON;` to the migration.
178
+
179
+ ### Modified columns
180
+
181
+ SQLite cannot `ALTER COLUMN`. d1-kyt emits a warning comment — you must handle the change manually or rebuild the table:
182
+
183
+ ```sql
184
+ -- WARNING: column "posts"."title" changed; SQLite cannot ALTER COLUMN — handle manually
185
+ ```