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.
- package/README.md +382 -0
- package/dist/createDB.d.ts +3 -0
- package/dist/createDB.d.ts.map +1 -0
- package/dist/createDB.js +1 -0
- package/dist/createDB.js.map +1 -0
- package/dist/createSchemaDB.d.ts +42 -0
- package/dist/createSchemaDB.d.ts.map +1 -0
- package/dist/createSchemaDB.js +1 -0
- package/dist/createSchemaDB.js.map +1 -0
- package/dist/defineStore.d.ts +6 -0
- package/dist/defineStore.d.ts.map +1 -0
- package/dist/defineStore.js +1 -0
- package/dist/defineStore.js.map +1 -0
- package/dist/field.d.ts +99 -0
- package/dist/field.d.ts.map +1 -0
- package/dist/field.js +1 -0
- package/dist/field.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -0
- package/dist/migrationHistory.d.ts +12 -0
- package/dist/migrationHistory.d.ts.map +1 -0
- package/dist/migrationHistory.js +1 -0
- package/dist/migrationHistory.js.map +1 -0
- package/dist/query.d.ts +151 -0
- package/dist/query.d.ts.map +1 -0
- package/dist/query.js +1 -0
- package/dist/query.js.map +1 -0
- package/dist/readChain.d.ts +3 -0
- package/dist/readChain.d.ts.map +1 -0
- package/dist/readChain.js +1 -0
- package/dist/readChain.js.map +1 -0
- package/dist/schema.d.ts +22 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +1 -0
- package/dist/schema.js.map +1 -0
- package/dist/schemaDetection.d.ts +81 -0
- package/dist/schemaDetection.d.ts.map +1 -0
- package/dist/schemaDetection.js +5 -0
- package/dist/schemaDetection.js.map +1 -0
- package/dist/storeAccessor.d.ts +8 -0
- package/dist/storeAccessor.d.ts.map +1 -0
- package/dist/storeAccessor.js +1 -0
- package/dist/storeAccessor.js.map +1 -0
- package/dist/transaction.d.ts +31 -0
- package/dist/transaction.d.ts.map +1 -0
- package/dist/transaction.js +1 -0
- package/dist/transaction.js.map +1 -0
- package/dist/types.d.ts +107 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +7 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +1 -0
- package/dist/utils.js.map +1 -0
- package/dist/writeChain.d.ts +3 -0
- package/dist/writeChain.d.ts.map +1 -0
- package/dist/writeChain.js +1 -0
- package/dist/writeChain.js.map +1 -0
- 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"}
|
package/dist/createDB.js
ADDED
|
@@ -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":"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"}
|
|
@@ -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"}
|
package/dist/field.d.ts
ADDED
|
@@ -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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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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"}
|