schema-idb 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/README.md +382 -0
  2. package/dist/createDB.d.ts +3 -0
  3. package/dist/createDB.d.ts.map +1 -0
  4. package/dist/createDB.js +1 -0
  5. package/dist/createDB.js.map +1 -0
  6. package/dist/createSchemaDB.d.ts +42 -0
  7. package/dist/createSchemaDB.d.ts.map +1 -0
  8. package/dist/createSchemaDB.js +1 -0
  9. package/dist/createSchemaDB.js.map +1 -0
  10. package/dist/defineStore.d.ts +6 -0
  11. package/dist/defineStore.d.ts.map +1 -0
  12. package/dist/defineStore.js +1 -0
  13. package/dist/defineStore.js.map +1 -0
  14. package/dist/field.d.ts +99 -0
  15. package/dist/field.d.ts.map +1 -0
  16. package/dist/field.js +1 -0
  17. package/dist/field.js.map +1 -0
  18. package/dist/index.d.ts +11 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +1 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/migrationHistory.d.ts +12 -0
  23. package/dist/migrationHistory.d.ts.map +1 -0
  24. package/dist/migrationHistory.js +1 -0
  25. package/dist/migrationHistory.js.map +1 -0
  26. package/dist/query.d.ts +151 -0
  27. package/dist/query.d.ts.map +1 -0
  28. package/dist/query.js +1 -0
  29. package/dist/query.js.map +1 -0
  30. package/dist/readChain.d.ts +3 -0
  31. package/dist/readChain.d.ts.map +1 -0
  32. package/dist/readChain.js +1 -0
  33. package/dist/readChain.js.map +1 -0
  34. package/dist/schema.d.ts +22 -0
  35. package/dist/schema.d.ts.map +1 -0
  36. package/dist/schema.js +1 -0
  37. package/dist/schema.js.map +1 -0
  38. package/dist/schemaDetection.d.ts +81 -0
  39. package/dist/schemaDetection.d.ts.map +1 -0
  40. package/dist/schemaDetection.js +5 -0
  41. package/dist/schemaDetection.js.map +1 -0
  42. package/dist/storeAccessor.d.ts +8 -0
  43. package/dist/storeAccessor.d.ts.map +1 -0
  44. package/dist/storeAccessor.js +1 -0
  45. package/dist/storeAccessor.js.map +1 -0
  46. package/dist/transaction.d.ts +31 -0
  47. package/dist/transaction.d.ts.map +1 -0
  48. package/dist/transaction.js +1 -0
  49. package/dist/transaction.js.map +1 -0
  50. package/dist/types.d.ts +107 -0
  51. package/dist/types.d.ts.map +1 -0
  52. package/dist/types.js +1 -0
  53. package/dist/types.js.map +1 -0
  54. package/dist/utils.d.ts +7 -0
  55. package/dist/utils.d.ts.map +1 -0
  56. package/dist/utils.js +1 -0
  57. package/dist/utils.js.map +1 -0
  58. package/dist/writeChain.d.ts +3 -0
  59. package/dist/writeChain.d.ts.map +1 -0
  60. package/dist/writeChain.js +1 -0
  61. package/dist/writeChain.js.map +1 -0
  62. package/package.json +50 -0
package/README.md ADDED
@@ -0,0 +1,382 @@
1
+ # schema-idb
2
+
3
+ A type-safe IndexedDB layer that brings structure to client-side storage.
4
+
5
+ ```ts
6
+ const db = openDB({
7
+ name: "MyApp",
8
+ version: 1,
9
+ stores: [usersStore] as const,
10
+ });
11
+
12
+ await db.users.put({ id: "u1", name: "Kim", email: "kim@example.com" });
13
+ const user = await db.users.get("u1");
14
+ ```
15
+
16
+ ---
17
+
18
+ ## What schema-idb provides
19
+
20
+ IndexedDB is a capable but low-level API. schema-idb adds a thin structure layer:
21
+
22
+ - **End-to-end type safety** — Schema, queries, and results are all inferred from a single definition.
23
+ - **Schema-first design** — Define your data model explicitly. The database follows your schema.
24
+ - **Safe schema evolution** — Add fields with defaults. Existing records receive them on read.
25
+ - **Predictable queries** — Type-safe, index-backed queries that map directly to IndexedDB capabilities.
26
+ - **Zero dependencies** — Small footprint, designed for long-lived applications.
27
+
28
+ ---
29
+
30
+ ## Installation
31
+
32
+ ```bash
33
+ npm install schema-idb
34
+ ```
35
+
36
+ ---
37
+
38
+ ## Quick Start
39
+
40
+ ### 1. Define a store
41
+
42
+ ```ts
43
+ import { defineStore, field } from "schema-idb";
44
+
45
+ const usersStore = defineStore("users", {
46
+ id: field.string().primaryKey(),
47
+ name: field.string().index(),
48
+ email: field.string().index({ unique: true }),
49
+ age: field.number().optional().default(0),
50
+ createdAt: field.date().default(() => new Date()),
51
+ });
52
+ ```
53
+
54
+ ### 2. Open the database
55
+
56
+ ```ts
57
+ import { openDB } from "schema-idb";
58
+
59
+ const db = openDB({
60
+ name: "MyApp",
61
+ version: 1,
62
+ stores: [usersStore] as const,
63
+ });
64
+ ```
65
+
66
+ ### 3. Use it
67
+
68
+ ```ts
69
+ // Create or update
70
+ await db.users.put({ id: "u1", name: "Kim", email: "kim@example.com" });
71
+
72
+ // Read
73
+ const user = await db.users.get("u1");
74
+ console.log(user?.age); // 0 (default applied)
75
+
76
+ // Query
77
+ const adults = await db.users.query({
78
+ index: "age",
79
+ where: { gte: 18 },
80
+ limit: 10,
81
+ });
82
+
83
+ // Delete
84
+ await db.users.delete("u1");
85
+ ```
86
+
87
+ ---
88
+
89
+ ## Schema Definition
90
+
91
+ ### Field types
92
+
93
+ ```ts
94
+ field.string(); // string
95
+ field.number(); // number
96
+ field.boolean(); // boolean
97
+ field.date(); // Date
98
+ field.string().array(); // string[]
99
+ field.object((t) => ({
100
+ // nested object
101
+ street: t.string(),
102
+ city: t.string(),
103
+ }));
104
+ field.tuple((t) => [t.number(), t.number()]); // [number, number]
105
+ field.enum(["active", "inactive"] as const); // union type
106
+ ```
107
+
108
+ ### Field modifiers
109
+
110
+ ```ts
111
+ field
112
+ .string()
113
+ .primaryKey() // set as primary key (exactly one per store)
114
+ .index() // create index for querying
115
+ .index({ unique: true }) // unique index
116
+ .optional() // allow undefined
117
+ .default(value) // default value or factory function
118
+ .array(); // convert to array type
119
+ ```
120
+
121
+ ### Indexes
122
+
123
+ Only indexed fields can be queried. Non-indexed fields are stored but not searchable.
124
+
125
+ ```ts
126
+ const usersStore = defineStore("users", {
127
+ id: field.string().primaryKey(),
128
+ email: field.string().index(), // ✓ searchable via query()
129
+ bio: field.string(), // ✗ stored, but not searchable
130
+ });
131
+
132
+ // Works
133
+ await db.users.query({ index: "email", where: { eq: "kim@example.com" } });
134
+
135
+ // Error: 'bio' is not an index
136
+ await db.users.query({ index: "bio", where: { eq: "..." } });
137
+ ```
138
+
139
+ ### Complete example
140
+
141
+ ```ts
142
+ const usersStore = defineStore("users", {
143
+ id: field.string().primaryKey(),
144
+ email: field.string().index({ unique: true }),
145
+ name: field.string().index(),
146
+ age: field.number().optional().default(0).index(),
147
+ role: field.enum(["admin", "user"] as const).default("user"),
148
+ tags: field.string().array().optional(),
149
+ profile: field
150
+ .object((t) => ({
151
+ bio: t.string().optional(),
152
+ avatar: t.string().optional(),
153
+ }))
154
+ .optional(),
155
+ createdAt: field
156
+ .date()
157
+ .index()
158
+ .default(() => new Date()),
159
+ });
160
+ ```
161
+
162
+ ---
163
+
164
+ ## Querying
165
+
166
+ schema-idb exposes IndexedDB's single-index model directly, with type safety.
167
+
168
+ ### Object style
169
+
170
+ ```ts
171
+ const users = await db.users.query({
172
+ index: "age",
173
+ where: { gte: 18 },
174
+ });
175
+
176
+ const recent = await db.users.query({
177
+ index: "createdAt",
178
+ where: { gte: lastWeek, lte: today },
179
+ orderBy: "desc",
180
+ limit: 20,
181
+ });
182
+
183
+ const kims = await db.users.query({
184
+ index: "name",
185
+ where: { startsWith: "Kim" },
186
+ });
187
+ ```
188
+
189
+ ### Builder style
190
+
191
+ ```ts
192
+ const users = await db.users
193
+ .query()
194
+ .index("age")
195
+ .gte(18)
196
+ .orderBy("desc")
197
+ .limit(10)
198
+ .findAll();
199
+
200
+ const user = await db.users
201
+ .query()
202
+ .index("email")
203
+ .equals("kim@example.com")
204
+ .find();
205
+ ```
206
+
207
+ ### Where conditions
208
+
209
+ | Condition | Description |
210
+ | ------------ | -------------------------- |
211
+ | `eq` | Equals |
212
+ | `gt` / `gte` | Greater than (or equal) |
213
+ | `lt` / `lte` | Less than (or equal) |
214
+ | `between` | Inclusive range |
215
+ | `startsWith` | Prefix match (string only) |
216
+
217
+ ---
218
+
219
+ ## Transactions
220
+
221
+ schema-idb exposes transactions as synchronous write batches across multiple stores.
222
+
223
+ ```ts
224
+ const tx = db.startTransaction(["accounts", "logs"]);
225
+
226
+ // Queue operations (no await between them)
227
+ tx.accounts.put({ id: "a1", balance: 900 });
228
+ tx.accounts.put({ id: "a2", balance: 1100 });
229
+ tx.logs.put({ id: "log1", action: "transfer", amount: 100 });
230
+
231
+ // Commit all at once
232
+ await tx.commit();
233
+
234
+ // Or abort
235
+ tx.abort();
236
+ ```
237
+
238
+ Read operations are not available inside transactions. IndexedDB transactions auto-commit after any `await`, so reads must happen outside the transaction.
239
+
240
+ ---
241
+
242
+ ## Migrations
243
+
244
+ Run code when the database version changes.
245
+
246
+ ```ts
247
+ const usersStore = defineStore("users", {
248
+ id: field.string().primaryKey(),
249
+ name: field.string(),
250
+ email: field.string().index({ unique: true }),
251
+ })
252
+ .addMigration("001-seed-admin", (db, tx) => {
253
+ tx.objectStore("users").put({
254
+ id: "admin",
255
+ name: "Admin",
256
+ email: "admin@example.com",
257
+ });
258
+ })
259
+ .addMigration("002-normalize-emails", (db, tx) => {
260
+ // Data transformation logic
261
+ });
262
+ ```
263
+
264
+ Migrations are identified by name and run in alphabetical order. Applied migrations are tracked and skipped automatically.
265
+
266
+ ---
267
+
268
+ ## Schema Evolution
269
+
270
+ Add fields without rewriting existing data.
271
+
272
+ ```ts
273
+ // Original
274
+ const usersStore = defineStore("users", {
275
+ id: field.string().primaryKey(),
276
+ name: field.string(),
277
+ });
278
+
279
+ // Additive change
280
+ const usersStore = defineStore("users", {
281
+ id: field.string().primaryKey(),
282
+ name: field.string(),
283
+ role: field.string().optional().default("user"),
284
+ });
285
+
286
+ const user = await db.users.get("existing-id");
287
+ console.log(user?.role); // 'user'
288
+ ```
289
+
290
+ Defaults are applied on read, keeping migrations cheap and predictable.
291
+
292
+ ---
293
+
294
+ ## Automatic Versioning
295
+
296
+ Let schema-idb derive versions from your schema.
297
+
298
+ ```ts
299
+ const db = openDB({
300
+ name: "MyApp",
301
+ versionStrategy: "auto",
302
+ stores: [usersStore] as const,
303
+ });
304
+ ```
305
+
306
+ ### Auto-applied changes (safe)
307
+
308
+ - New stores
309
+ - New indexes
310
+ - Index modifications
311
+ - Index deletions
312
+
313
+ ### Requires manual migration (throws error)
314
+
315
+ - Store deletions (data loss)
316
+ - keyPath changes (requires store recreation)
317
+
318
+ ---
319
+
320
+ ## Type Inference
321
+
322
+ Extract TypeScript types from your schema.
323
+
324
+ ```ts
325
+ import type { InferStore } from "schema-idb";
326
+
327
+ type User = InferStore<typeof usersStore>;
328
+ ```
329
+
330
+ ---
331
+
332
+ ## API Reference
333
+
334
+ ### Database
335
+
336
+ ```ts
337
+ const db = openDB({ name, version, stores });
338
+
339
+ db.waitForReady(); // Promise<void>
340
+ db.ready; // boolean
341
+ db.close(); // Close connection
342
+ db.version; // Current version number
343
+ db.raw; // Underlying IDBDatabase
344
+ ```
345
+
346
+ ### Store operations
347
+
348
+ ```ts
349
+ db.store.get(key); // Get by primary key
350
+ db.store.getAll(); // Get all records
351
+ db.store.getAllByIndex(index, value); // Get by index value
352
+ db.store.put(value); // Insert or update
353
+ db.store.add(value); // Insert (fails if exists)
354
+ db.store.delete(key); // Delete by key
355
+ db.store.clear(); // Delete all
356
+ db.store.count(); // Count records
357
+ db.store.query(options); // Query with conditions
358
+ ```
359
+
360
+ ### Utilities
361
+
362
+ ```ts
363
+ import { deleteDB, isIndexedDBAvailable } from "schema-idb";
364
+
365
+ await deleteDB("MyApp");
366
+ isIndexedDBAvailable();
367
+ ```
368
+
369
+ ---
370
+
371
+ ## Limitations
372
+
373
+ - **Single-index queries** — IndexedDB does not support compound queries.
374
+ - **Synchronous write batches** — Transactions cannot include reads (they require `await`).
375
+ - **Immutable keyPath** — Changing the primary key requires manual data migration.
376
+ - **Browser only** — IndexedDB is not available in Node.js. Use `fake-indexeddb` for testing.
377
+
378
+ ---
379
+
380
+ ## License
381
+
382
+ MIT
@@ -0,0 +1,3 @@
1
+ import type { StoreDefinition, DatabaseConfig, DatabaseWithStores } from './types.js';
2
+ export declare function openDB<const TStores extends readonly StoreDefinition[]>(config: DatabaseConfig<TStores>): Promise<DatabaseWithStores<TStores>>;
3
+ //# sourceMappingURL=createDB.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createDB.d.ts","sourceRoot":"","sources":["../src/createDB.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EAEd,kBAAkB,EAEnB,MAAM,YAAY,CAAC;AAwHpB,wBAAsB,MAAM,CAAC,KAAK,CAAC,OAAO,SAAS,SAAS,eAAe,EAAE,EAC3E,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,GAC9B,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CA0FtC"}
@@ -0,0 +1 @@
1
+ "use strict";var w=Object.defineProperty;var f=(n,t)=>w(n,"name",{value:t,configurable:!0});import{openDatabase as y,promisifyTransaction as b}from"./utils.js";import{createReadChain as S}from"./readChain.js";import{createWriteChain as v}from"./writeChain.js";import{createStoreAccessor as x}from"./storeAccessor.js";function D(n){const t=[],s=new Set;for(const r of n)for(const e of r.migrations){if(s.has(e.name))throw new Error(`Duplicate migration name "${e.name}" found across stores`);s.add(e.name),t.push(e)}return t.sort((r,e)=>r.name.localeCompare(e.name))}f(D,"collectMigrations");function E(n,t,s){const r={...n};for(const e of s)r[e.name]=x(t,e.name);return r}f(E,"buildDatabaseWithStores");function P(n,t,s,r,e){if(s===0)for(const a of r){const i=n.createObjectStore(a.name,{keyPath:a.keyPath,autoIncrement:a.autoIncrement});for(const c of a.indexes)i.createIndex(c.name,c.keyPath,{unique:c.unique??!1,multiEntry:c.multiEntry??!1})}for(const a of e)try{const i=a.up(n,t);i instanceof Promise&&i.catch(c=>{console.error(`Migration "${a.name}" failed:`,c),t.abort()})}catch(i){throw console.error(`Migration "${a.name}" failed:`,i),t.abort(),i}}f(P,"handleUpgrade");export async function openDB(n){const{name:t,version:s,versionStrategy:r="explicit",stores:e,onBlocked:a,onVersionChange:i}=n,c=new Set;for(const o of e){if(c.has(o.name))throw new Error(`Duplicate store name: "${o.name}"`);c.add(o.name)}let u;if(r==="auto")u=1;else{if(s===void 0)throw new Error('Version is required when versionStrategy is "explicit"');u=s}const p=D(e),m=await y(t,u,(o,l,d)=>{P(o,l,d,e,p)},a);return i&&(m.onversionchange=i),E({get name(){return m.name},get version(){return m.version},get raw(){return m},close(){m.close()},read(o){return S(m,o)},write(o){return v(m,o)},async transaction(o,l,d){const h=m.transaction(o,l),g=d(h);g instanceof Promise&&await g,await b(h)}},m,e)}f(openDB,"openDB");
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createDB.js","sourceRoot":"","sources":["../src/createDB.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAKzD,SAAS,iBAAiB,CAAC,MAAkC;IAC3D,MAAM,aAAa,GAAgB,EAAE,CAAC;IACtC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IAEpC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACzC,IAAI,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClC,MAAM,IAAI,KAAK,CAAC,6BAA6B,SAAS,CAAC,IAAI,uBAAuB,CAAC,CAAC;YACtF,CAAC;YACD,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC9B,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACpE,CAAC;AAMD,SAAS,uBAAuB,CAC9B,QAA2B,EAC3B,GAAgB,EAChB,MAAe;IAEf,MAAM,YAAY,GAA4B,EAAE,GAAG,QAAQ,EAAE,CAAC;IAE9D,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,YAA2C,CAAC;AACrD,CAAC;AAKD,SAAS,aAAa,CACpB,EAAe,EACf,EAAkB,EAClB,UAAkB,EAClB,MAAkC,EAClC,UAAuB;IAGvB,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;QACrB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,WAAW,GAAG,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE;gBACnD,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,aAAa,EAAE,KAAK,CAAC,aAAa;aACnC,CAAC,CAAC;YAEH,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE;oBACjD,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,KAAK;oBAC7B,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,KAAK;iBACtC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAKD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAEpC,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;gBAC9B,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;oBACnB,OAAO,CAAC,KAAK,CAAC,cAAc,SAAS,CAAC,IAAI,WAAW,EAAE,GAAG,CAAC,CAAC;oBAC5D,EAAE,CAAC,KAAK,EAAE,CAAC;gBACb,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,cAAc,SAAS,CAAC,IAAI,WAAW,EAAE,GAAG,CAAC,CAAC;YAC5D,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;AACH,CAAC;AA8BD,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,MAA+B;IAE/B,MAAM,EACJ,IAAI,EACJ,OAAO,EAAE,eAAe,EACxB,eAAe,GAAG,UAAU,EAC5B,MAAM,EACN,SAAS,EACT,eAAe,GAChB,GAAG,MAAM,CAAC;IAGX,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;QAC3D,CAAC;QACD,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAGD,IAAI,OAAe,CAAC;IACpB,IAAI,eAAe,KAAK,MAAM,EAAE,CAAC;QAG/B,OAAO,GAAG,CAAC,CAAC;IACd,CAAC;SAAM,CAAC;QACN,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO,GAAG,eAAe,CAAC;IAC5B,CAAC;IAGD,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAG7C,MAAM,GAAG,GAAG,MAAM,YAAY,CAC5B,IAAI,EACJ,OAAO,EACP,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE;QACrB,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IACxD,CAAC,EACD,SAAS,CACV,CAAC;IAGF,IAAI,eAAe,EAAE,CAAC;QACpB,GAAG,CAAC,eAAe,GAAG,eAAe,CAAC;IACxC,CAAC;IAGD,MAAM,QAAQ,GAAsB;QAClC,IAAI,IAAI;YACN,OAAO,GAAG,CAAC,IAAI,CAAC;QAClB,CAAC;QAED,IAAI,OAAO;YACT,OAAO,GAAG,CAAC,OAAO,CAAC;QACrB,CAAC;QAED,IAAI,GAAG;YACL,OAAO,GAAG,CAAC;QACb,CAAC;QAED,KAAK;YACH,GAAG,CAAC,KAAK,EAAE,CAAC;QACd,CAAC;QAED,IAAI,CAAC,UAAoB;YACvB,OAAO,eAAe,CAAU,GAAG,EAAE,UAAU,CAAC,CAAC;QACnD,CAAC;QAED,KAAK,CAAC,UAAoB;YACxB,OAAO,gBAAgB,CAAU,GAAG,EAAE,UAAU,CAAC,CAAC;QACpD,CAAC;QAED,KAAK,CAAC,WAAW,CAAC,UAAoB,EAAE,IAAwB,EAAE,EAAE;YAClE,MAAM,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAC7C,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YAEtB,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;gBAC9B,MAAM,MAAM,CAAC;YACf,CAAC;YAED,MAAM,oBAAoB,CAAC,EAAE,CAAC,CAAC;QACjC,CAAC;KACF,CAAC;IAGF,OAAO,uBAAuB,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AACxD,CAAC"}
@@ -0,0 +1,42 @@
1
+ import type { StoreSchema, InferInput, InferOutput, PrimaryKeyType, IndexedFields } from './field.js';
2
+ import type { SchemaStoreDefinition } from './schema.js';
3
+ import type { TypedQueryOptions, TypedQueryBuilder } from './query.js';
4
+ import type { Transaction, TransactionOptions } from './transaction.js';
5
+ type AnySchemaStore = SchemaStoreDefinition<any, string>;
6
+ type StoreNames<TStores extends readonly AnySchemaStore[]> = TStores[number]['name'];
7
+ export interface SchemaStoreAccessor<S extends StoreSchema> {
8
+ get(key: PrimaryKeyType<S>): Promise<InferOutput<S> | undefined>;
9
+ getAll(): Promise<InferOutput<S>[]>;
10
+ getAllByIndex<I extends IndexedFields<S> & string>(indexName: I, query?: IDBKeyRange | IDBValidKey): Promise<InferOutput<S>[]>;
11
+ put(value: InferInput<S>, key?: PrimaryKeyType<S>): Promise<PrimaryKeyType<S>>;
12
+ add(value: InferInput<S>, key?: PrimaryKeyType<S>): Promise<PrimaryKeyType<S>>;
13
+ delete(key: PrimaryKeyType<S> | IDBKeyRange): Promise<void>;
14
+ clear(): Promise<void>;
15
+ count(query?: IDBKeyRange | IDBValidKey): Promise<number>;
16
+ query(options: TypedQueryOptions<S>): Promise<InferOutput<S>[]>;
17
+ query(): TypedQueryBuilder<InferOutput<S>, PrimaryKeyType<S>, S>;
18
+ }
19
+ export interface SchemaDBConfig<TStores extends readonly AnySchemaStore[]> {
20
+ name: string;
21
+ version?: number;
22
+ versionStrategy?: 'explicit' | 'auto';
23
+ stores: TStores;
24
+ onBlocked?: () => void;
25
+ onVersionChange?: () => void;
26
+ }
27
+ export type SchemaDatabase<TStores extends readonly AnySchemaStore[]> = {
28
+ readonly name: string;
29
+ readonly version: number;
30
+ readonly raw: IDBDatabase;
31
+ readonly ready: boolean;
32
+ waitForReady(): Promise<void>;
33
+ close(): void;
34
+ startTransaction<TNames extends StoreNames<TStores>>(storeNames: TNames[], options?: TransactionOptions): Transaction<TStores, TNames>;
35
+ } & {
36
+ [K in TStores[number]['name']]: SchemaStoreAccessor<Extract<TStores[number], {
37
+ name: K;
38
+ }>['schema']>;
39
+ };
40
+ export declare function openDB<const TStores extends readonly AnySchemaStore[]>(config: SchemaDBConfig<TStores>): SchemaDatabase<TStores>;
41
+ export {};
42
+ //# sourceMappingURL=createSchemaDB.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createSchemaDB.d.ts","sourceRoot":"","sources":["../src/createSchemaDB.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ "use strict";var P=Object.defineProperty;var s=(e,r)=>P(e,"name",{value:r,configurable:!0});import{openDatabase as D}from"./utils.js";import{createStoreAccessor as h}from"./storeAccessor.js";import{createStartTransaction as T}from"./transaction.js";import{determineAutoVersion as v,applySafeChanges as E,openDatabaseForSchemaRead as b}from"./schemaDetection.js";import{ensureSchemaHistoryStore as x,getAppliedMigrations as p,recordMigrationApplied as z,initializeSchemaHistory as M}from"./migrationHistory.js";function H(e){return e}s(H,"getKeyPathString");function R(e,r,a){const n=s(async()=>{if(await e.readyPromise,!e.idb)throw new Error("Database initialization failed");return h(e.idb,r,a)},"getAccessor");return new Proxy({},{get(t,l){return l==="query"?u=>u?n().then(i=>i.query(u)):A(e,r,a):async(...u)=>(await n())[l](...u)}})}s(R,"createLazyStoreAccessor");function A(e,r,a){const n=s(async()=>{if(await e.readyPromise,!e.idb)throw new Error("Database initialization failed");return h(e.idb,r,a).query()},"getQueryBuilder"),t=s(l=>new Proxy({},{get(u,i){return i==="findAll"||i==="find"||i==="count"?()=>l().then(o=>o[i]()):(...o)=>t(s(()=>l().then(c=>c[i](...o)),"newGetBuilder"))}}),"createBuilderProxy");return t(n)}s(A,"createLazyQueryBuilder");function k(e,r){const a={get name(){return e.idb?.name??r},get version(){return e.idb?.version??0},get raw(){if(!e.idb)throw new Error("Database not ready. Call waitForReady() first or check ready property.");return e.idb},get ready(){return e.ready},waitForReady(){return e.readyPromise},close(){e.idb?.close()},startTransaction(...n){if(!e.startTransaction){const[t,l]=n;return j(e,t,l)}return e.startTransaction(...n)}};for(const n of e.stores)Object.defineProperty(a,n.name,{get(){return R(e,n.name,n.defaults)},enumerable:!0});return a}s(k,"buildSchemaDatabase");function j(e,r,a){const n={async commit(){if(await e.readyPromise,!e.startTransaction)throw new Error("Database initialization failed");return e.startTransaction(r,a).commit()},abort(){}};for(const t of r)e.stores.find(u=>u.name===t)&&Object.defineProperty(n,t,{get(){throw new Error("Transaction operations before ready state are not yet supported. Use await db.waitForReady() before starting transactions.")},enumerable:!0});return n}s(j,"createLazyTransaction");function q(e){const r=[],a=new Set;for(const n of e)for(const t of n.migrations){if(a.has(t.name))throw new Error(`Duplicate migration name "${t.name}" found across stores`);a.add(t.name),r.push(t)}return r.sort((n,t)=>n.name.localeCompare(t.name))}s(q,"collectMigrations");function S(e,r){const a=new Set(r);return e.filter(n=>!a.has(n.name)).sort((n,t)=>n.name.localeCompare(t.name))}s(S,"filterPendingMigrations");function B(e,r,a,n,t,l,u){if(x(e),a===0){for(const o of n){const f=e.createObjectStore(o.name,{keyPath:o.keyPath});for(const c of o.indexes)f.createIndex(c.name,c.keyPath,{unique:c.unique??!1,multiEntry:c.multiEntry??!1})}M(r)}else u&&u.safe.length>0&&E(e,r,u.safe,n);let i=[...l];for(const o of t)try{const f=o.up(e,r);f instanceof Promise&&f.catch(c=>{console.error(`Migration "${o.name}" failed:`,c),r.abort()}),z(r,o.name,i),i=[...i,o.name].sort()}catch(f){throw console.error(`Migration "${o.name}" failed:`,f),r.abort(),f}}s(B,"handleUpgrade");export function openDB(e){const{name:r,version:a,versionStrategy:n="explicit",stores:t,onBlocked:l,onVersionChange:u}=e,i=new Set;for(const m of t){if(i.has(m.name))throw new Error(`Duplicate store name: "${m.name}"`);i.add(m.name)}const o=q(t);let f=s(()=>{},"readyResolve"),c=s(()=>{},"readyReject");const g={idb:null,ready:!1,error:null,readyPromise:new Promise((m,y)=>{f=m,c=y}),readyResolve:f,readyReject:c,stores:t,startTransaction:null},d=k(g,r);return C(g,r,a,n,t,o,l,u),d}s(openDB,"openDB");async function C(e,r,a,n,t,l,u,i){try{let o=[],f=null,c;if(n==="auto"){const d=await v(r,t);if(c=d.version,f=d.changes,d.version>1){const y=await b(r);y&&(o=await p(y),y.close())}S(l,o).length>0&&!d.needsUpgrade&&(c=d.version+1)}else{if(a===void 0)throw new Error('Version is required when versionStrategy is "explicit"');c=a;const d=await b(r);d&&(o=await p(d),d.close())}const w=S(l,o),g=await D(r,c,(d,m,y)=>{B(d,m,y,t,w,o,f)},u);i&&(g.onversionchange=i),e.idb=g,e.startTransaction=T(g,t),e.ready=!0,e.readyResolve()}catch(o){e.error=o instanceof Error?o:new Error(String(o)),e.readyReject(e.error)}}s(C,"initializeDatabase");
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createSchemaDB.js","sourceRoot":"","sources":["../src/createSchemaDB.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { StoreDefinition, StoreKeyPath, ExtractKeyType, StoreOptionsWithKeyPath, StoreOptionsWithoutKeyPath } from './types.js';
2
+ export declare function defineStore<T>(): {
3
+ <const TName extends string, const KP extends StoreKeyPath<T>>(name: TName, options: StoreOptionsWithKeyPath<T, KP>): StoreDefinition<T, ExtractKeyType<T, KP>, TName>;
4
+ <const TName extends string, K extends IDBValidKey = IDBValidKey>(name: TName, options?: StoreOptionsWithoutKeyPath<T, K>): StoreDefinition<T, K, TName>;
5
+ };
6
+ //# sourceMappingURL=defineStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defineStore.d.ts","sourceRoot":"","sources":["../src/defineStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,cAAc,EACd,uBAAuB,EACvB,0BAA0B,EAI3B,MAAM,YAAY,CAAC;AAoGpB,wBAAgB,WAAW,CAAC,CAAC;WAKnB,KAAK,SAAS,MAAM,QACpB,EAAE,SAAS,YAAY,CAAC,CAAC,CAAC,QAE1B,KAAK,WACF,uBAAuB,CAAC,CAAC,EAAE,EAAE,CAAC,GACtC,eAAe,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC;WAM3C,KAAK,SAAS,MAAM,EAC1B,CAAC,SAAS,WAAW,sBAEf,KAAK,YACD,0BAA0B,CAAC,CAAC,EAAE,CAAC,CAAC,GACzC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC;EAuDhC"}
@@ -0,0 +1 @@
1
+ "use strict";var p=Object.defineProperty;var i=(t,e)=>p(t,"name",{value:e,configurable:!0});function g(t){if(!t)return[];const e=[];for(const[r,o]of Object.entries(t))o!==!1&&(o===!0?e.push({name:r,keyPath:r}):e.push({name:r,keyPath:r,unique:o.unique,multiEntry:o.multiEntry}));return e}i(g,"parseIndexConfig");export function defineStore(){function t(e,r={}){const{keyPath:o,autoIncrement:u=!1,indexes:m,migrations:a=[]}=r,f=g(m);if(!e||typeof e!="string")throw new Error("Store name is required and must be a string");const s=new Set;for(const n of a){if(!n.name||typeof n.name!="string")throw new Error(`Invalid migration name in store "${e}": must be a non-empty string`);if(s.has(n.name))throw new Error(`Duplicate migration name "${n.name}" in store "${e}"`);s.add(n.name)}return{name:e,keyPath:o,autoIncrement:u,indexes:f,migrations:[...a].sort((n,c)=>n.name.localeCompare(c.name)),_schema:{},_keyType:{}}}return i(t,"createStore"),t}i(defineStore,"defineStore");
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defineStore.js","sourceRoot":"","sources":["../src/defineStore.ts"],"names":[],"mappings":"AAcA,SAAS,gBAAgB,CACvB,OAAgD;IAEhD,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAExB,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACrD,IAAI,MAAM,KAAK,KAAK;YAAE,SAAS;QAE/B,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI;gBACJ,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAwED,MAAM,UAAU,WAAW;IAwBzB,SAAS,WAAW,CAClB,IAAW,EACX,UAAoG,EAAE;QAEtG,MAAM,EACJ,OAAO,EACP,aAAa,GAAG,KAAK,EACrB,OAAO,EACP,UAAU,GAAG,EAAE,GAChB,GAAG,OAKH,CAAC;QAGF,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAGhD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QAGD,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;QACzC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC1D,MAAM,IAAI,KAAK,CACb,oCAAoC,IAAI,+BAA+B,CACxE,CAAC;YACJ,CAAC;YACD,IAAI,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvC,MAAM,IAAI,KAAK,CACb,6BAA6B,SAAS,CAAC,IAAI,eAAe,IAAI,GAAG,CAClE,CAAC;YACJ,CAAC;YACD,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QAED,OAAO;YACL,IAAI;YACJ,OAAO,EAAE,OAAwC;YACjD,aAAa;YACb,OAAO,EAAE,aAAa;YACtB,UAAU,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACxE,OAAO,EAAE,EAAO;YAChB,QAAQ,EAAE,EAAa;SACxB,CAAC;IACJ,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -0,0 +1,99 @@
1
+ export interface IndexOptions {
2
+ unique?: boolean;
3
+ multiEntry?: boolean;
4
+ }
5
+ export interface TypeDef<T = unknown, Optional extends boolean = false, HasDefault extends boolean = false> {
6
+ _type: T;
7
+ _optional: Optional;
8
+ _hasDefault: HasDefault;
9
+ _default?: T;
10
+ }
11
+ export interface TypeBuilder<T, Optional extends boolean = false, HasDefault extends boolean = false> {
12
+ _def: TypeDef<T, Optional, HasDefault>;
13
+ optional(): TypeBuilder<T, true, HasDefault>;
14
+ default(value: T): TypeBuilder<T, Optional, true>;
15
+ array(): TypeBuilder<T[], Optional, HasDefault>;
16
+ }
17
+ export declare const type: {
18
+ string: () => TypeBuilder<string, false, false>;
19
+ number: () => TypeBuilder<number, false, false>;
20
+ boolean: () => TypeBuilder<boolean, false, false>;
21
+ date: () => TypeBuilder<Date, false, false>;
22
+ custom: <T>() => TypeBuilder<T, false, false>;
23
+ };
24
+ export type TypeFactory = typeof type;
25
+ export interface FieldDef<T = unknown, Optional extends boolean = false, HasDefault extends boolean = false, IsIndexed extends boolean = false> {
26
+ _type: T;
27
+ _optional: Optional;
28
+ _hasDefault: HasDefault;
29
+ _isIndexed: IsIndexed;
30
+ _default?: T;
31
+ _primaryKey: boolean;
32
+ _indexOptions?: IndexOptions;
33
+ }
34
+ export interface FieldBuilder<T, Optional extends boolean = false, HasDefault extends boolean = false, IsIndexed extends boolean = false> {
35
+ _def: FieldDef<T, Optional, HasDefault, IsIndexed>;
36
+ optional(): FieldBuilder<T, true, HasDefault, IsIndexed>;
37
+ default(value: T): FieldBuilder<T, Optional, true, IsIndexed>;
38
+ primaryKey(): FieldBuilder<T, Optional, HasDefault, IsIndexed>;
39
+ index(options?: IndexOptions): FieldBuilder<T, Optional, HasDefault, true>;
40
+ array(): FieldBuilder<T[], Optional, HasDefault, IsIndexed>;
41
+ }
42
+ type Prettify<T> = {
43
+ [K in keyof T]: T[K];
44
+ } & {};
45
+ type ObjectSchema = Record<string, TypeBuilder<unknown, boolean, boolean>>;
46
+ type ObjectRequiredKeys<S extends ObjectSchema> = {
47
+ [K in keyof S]: S[K] extends TypeBuilder<unknown, false, false> ? K : never;
48
+ }[keyof S];
49
+ type ObjectOptionalKeys<S extends ObjectSchema> = Exclude<keyof S, ObjectRequiredKeys<S>>;
50
+ type InferTypeBuilderType<T> = T extends TypeBuilder<infer U, infer Optional, infer HasDefault> ? HasDefault extends true ? U : Optional extends true ? U | undefined : U : never;
51
+ type InferObjectType<S extends ObjectSchema> = Prettify<{
52
+ [K in ObjectRequiredKeys<S>]: InferTypeBuilderType<S[K]>;
53
+ } & {
54
+ [K in ObjectOptionalKeys<S>]?: InferTypeBuilderType<S[K]>;
55
+ }>;
56
+ type TupleSchema = readonly TypeBuilder<unknown, boolean, boolean>[];
57
+ type InferTupleType<T extends TupleSchema> = {
58
+ [K in keyof T]: T[K] extends TypeBuilder<infer U, boolean, boolean> ? U : never;
59
+ };
60
+ export declare const field: {
61
+ string: () => FieldBuilder<string, false, false, false>;
62
+ number: () => FieldBuilder<number, false, false, false>;
63
+ boolean: () => FieldBuilder<boolean, false, false, false>;
64
+ date: () => FieldBuilder<Date, false, false, false>;
65
+ object: <S extends ObjectSchema>(schema: (t: TypeFactory) => S) => FieldBuilder<InferObjectType<S>>;
66
+ tuple: <T extends TupleSchema>(schema: (t: TypeFactory) => T) => FieldBuilder<InferTupleType<T>>;
67
+ enum: <const T extends readonly string[]>(values: T) => FieldBuilder<T[number]>;
68
+ nativeEnum: <T extends Record<string, string | number>>(enumObj: T) => FieldBuilder<T[keyof T]>;
69
+ custom: <T>() => FieldBuilder<T, false, false, false>;
70
+ };
71
+ export type StoreSchema = Record<string, FieldBuilder<unknown, boolean, boolean, boolean>>;
72
+ type RequiredInputKeys<S extends StoreSchema> = {
73
+ [K in keyof S]: S[K] extends FieldBuilder<unknown, false, false, boolean> ? K : never;
74
+ }[keyof S];
75
+ type OptionalInputKeys<S extends StoreSchema> = Exclude<keyof S, RequiredInputKeys<S>>;
76
+ export type InferInput<S extends StoreSchema> = {
77
+ [K in RequiredInputKeys<S>]: S[K] extends FieldBuilder<infer T, boolean, boolean, boolean> ? T : never;
78
+ } & {
79
+ [K in OptionalInputKeys<S>]?: S[K] extends FieldBuilder<infer T, boolean, boolean, boolean> ? T : never;
80
+ };
81
+ type InferOutputField<F> = F extends FieldBuilder<infer T, infer Optional, infer HasDefault, boolean> ? HasDefault extends true ? T : Optional extends true ? T | undefined : T : never;
82
+ export type InferOutput<S extends StoreSchema> = Prettify<{
83
+ [K in keyof S]: InferOutputField<S[K]>;
84
+ }>;
85
+ export type PrimaryKeyField<S extends StoreSchema> = {
86
+ [K in keyof S]: S[K] extends FieldBuilder<unknown, boolean, boolean, boolean> ? S[K]['_def']['_primaryKey'] extends true ? K : never : never;
87
+ }[keyof S];
88
+ export type PrimaryKeyType<S extends StoreSchema> = S[PrimaryKeyField<S>] extends FieldBuilder<infer T, boolean, boolean, boolean> ? T : never;
89
+ export type IndexedFields<S extends StoreSchema> = {
90
+ [K in keyof S]: S[K] extends FieldBuilder<unknown, boolean, boolean, true> ? K : never;
91
+ }[keyof S];
92
+ export type IndexFieldTypes<S extends StoreSchema> = {
93
+ [K in IndexedFields<S>]: S[K] extends FieldBuilder<infer T, boolean, boolean, boolean> ? T : never;
94
+ };
95
+ export type InferStore<TStore> = TStore extends {
96
+ schema: infer S;
97
+ } ? S extends StoreSchema ? InferOutput<S> : never : never;
98
+ export {};
99
+ //# sourceMappingURL=field.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../src/field.ts"],"names":[],"mappings":"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"}
package/dist/field.js ADDED
@@ -0,0 +1 @@
1
+ "use strict";var a=Object.defineProperty;var e=(r,u)=>a(r,"name",{value:u,configurable:!0});function n(){return{_def:{_type:void 0,_optional:!1,_hasDefault:!1},optional(){return{...this,_def:{...this._def,_optional:!0}}},default(d){return{...this,_def:{...this._def,_hasDefault:!0,_default:d}}},array(){return n()}}}e(n,"createTypeBuilder");export const type={string:e(()=>n(),"string"),number:e(()=>n(),"number"),boolean:e(()=>n(),"boolean"),date:e(()=>n(),"date"),custom:e(()=>n(),"custom")};function t(){return{_def:{_type:void 0,_optional:!1,_hasDefault:!1,_isIndexed:!1,_primaryKey:!1},optional(){return{...this,_def:{...this._def,_optional:!0}}},default(d){return{...this,_def:{...this._def,_hasDefault:!0,_default:d}}},primaryKey(){return{...this,_def:{...this._def,_primaryKey:!0}}},index(d){return{...this,_def:{...this._def,_isIndexed:!0,_indexOptions:d}}},array(){return t()}}}e(t,"createFieldBuilder");export const field={string:e(()=>t(),"string"),number:e(()=>t(),"number"),boolean:e(()=>t(),"boolean"),date:e(()=>t(),"date"),object:e(r=>{const u=r(type);return t()},"object"),tuple:e(r=>{const u=r(type);return t()},"tuple"),enum:e(r=>t(),"enum"),nativeEnum:e(r=>t(),"nativeEnum"),custom:e(()=>t(),"custom")};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field.js","sourceRoot":"","sources":["../src/field.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export { defineStore } from './schema.js';
2
+ export { openDB } from './createSchemaDB.js';
3
+ export { field } from './field.js';
4
+ export type { FieldBuilder, FieldDef, TypeBuilder, TypeDef, TypeFactory, IndexOptions, StoreSchema, InferInput, InferOutput, InferStore, PrimaryKeyField, PrimaryKeyType, IndexedFields, IndexFieldTypes, } from './field.js';
5
+ export type { SchemaStoreDefinition, SchemaStoreBuilder, DefineStoreOptions } from './schema.js';
6
+ export type { SchemaDBConfig, SchemaDatabase, SchemaStoreAccessor, } from './createSchemaDB.js';
7
+ export type { Transaction, TransactionOptions, TransactionStoreAccessor, } from './transaction.js';
8
+ export type { QueryOptions, TypedQueryOptions, QueryBuilder, TypedQueryBuilder, IndexQueryBuilder, TypedIndexQueryBuilder, FinalQueryBuilder, SortOrder, WhereCondition, } from './query.js';
9
+ export { promisifyRequest, promisifyTransaction, openDatabase, deleteDB, isIndexedDBAvailable, } from './utils.js';
10
+ export type { StoreDefinition, IndexDefinition, Migration, MigrationFn, } from './types.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,YAAY,EACV,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,OAAO,EACP,WAAW,EACX,YAAY,EACZ,WAAW,EACX,UAAU,EACV,WAAW,EACX,UAAU,EACV,eAAe,EACf,cAAc,EACd,aAAa,EACb,eAAe,GAChB,MAAM,YAAY,CAAC;AAGpB,YAAY,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGjG,YAAY,EACV,cAAc,EACd,cAAc,EACd,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAG7B,YAAY,EACV,WAAW,EACX,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAG1B,YAAY,EACV,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,SAAS,EACT,cAAc,GACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,YAAY,EACZ,QAAQ,EACR,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,eAAe,EACf,eAAe,EACf,SAAS,EACT,WAAW,GACZ,MAAM,YAAY,CAAC"}