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/dist/types.d.ts
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
export interface IndexDefinition {
|
|
2
|
+
name: string;
|
|
3
|
+
keyPath: string | string[];
|
|
4
|
+
unique?: boolean;
|
|
5
|
+
multiEntry?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface IndexOptions {
|
|
8
|
+
unique?: boolean;
|
|
9
|
+
multiEntry?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export type IndexOption = IndexOptions | boolean;
|
|
12
|
+
export type IndexConfig<T, KP extends keyof T> = {
|
|
13
|
+
[K in Exclude<keyof T, KP>]: IndexOption;
|
|
14
|
+
};
|
|
15
|
+
export type MigrationFn = (db: IDBDatabase, transaction: IDBTransaction) => void | Promise<void>;
|
|
16
|
+
export interface Migration {
|
|
17
|
+
name: string;
|
|
18
|
+
up: MigrationFn;
|
|
19
|
+
}
|
|
20
|
+
interface StoreDefinitionBase<T = unknown, K = unknown> {
|
|
21
|
+
name: string;
|
|
22
|
+
keyPath?: string | string[];
|
|
23
|
+
autoIncrement?: boolean;
|
|
24
|
+
indexes: IndexDefinition[];
|
|
25
|
+
migrations: Migration[];
|
|
26
|
+
_schema: T;
|
|
27
|
+
_keyType: K;
|
|
28
|
+
}
|
|
29
|
+
export type StoreDefinition<T = unknown, K = unknown, TName extends string = string> = StoreDefinitionBase<T, K> & {
|
|
30
|
+
name: TName;
|
|
31
|
+
};
|
|
32
|
+
export type StoreKeyPath<T> = (keyof T & string) | readonly (keyof T & string)[];
|
|
33
|
+
export type ExtractKeyType<T, KP> = KP extends keyof T ? T[KP] : KP extends readonly (keyof T)[] ? {
|
|
34
|
+
[I in keyof KP]: KP[I] extends keyof T ? T[KP[I]] : never;
|
|
35
|
+
} : IDBValidKey;
|
|
36
|
+
export interface StoreOptionsWithKeyPath<T, KP extends StoreKeyPath<T>> {
|
|
37
|
+
keyPath: KP;
|
|
38
|
+
autoIncrement?: boolean;
|
|
39
|
+
indexes?: KP extends keyof T ? IndexConfig<T, KP> : never;
|
|
40
|
+
migrations?: Migration[];
|
|
41
|
+
}
|
|
42
|
+
export interface StoreOptionsWithoutKeyPath<T, K extends IDBValidKey> {
|
|
43
|
+
keyPath?: undefined;
|
|
44
|
+
autoIncrement?: boolean;
|
|
45
|
+
indexes?: IndexConfig<T, never>;
|
|
46
|
+
migrations?: Migration[];
|
|
47
|
+
keyType?: K;
|
|
48
|
+
}
|
|
49
|
+
export type VersionStrategy = 'explicit' | 'auto';
|
|
50
|
+
export interface DatabaseConfig<TStores extends readonly StoreDefinition[]> {
|
|
51
|
+
name: string;
|
|
52
|
+
version?: number;
|
|
53
|
+
versionStrategy?: VersionStrategy;
|
|
54
|
+
stores: TStores;
|
|
55
|
+
onBlocked?: () => void;
|
|
56
|
+
onVersionChange?: () => void;
|
|
57
|
+
}
|
|
58
|
+
export type StoreNames<TStores extends readonly StoreDefinition[]> = TStores[number]['name'];
|
|
59
|
+
export type SchemaForStore<TStores extends readonly StoreDefinition[], TName extends string> = Extract<TStores[number], {
|
|
60
|
+
name: TName;
|
|
61
|
+
}>['_schema'];
|
|
62
|
+
export type KeyForStore<TStores extends readonly StoreDefinition[], TName extends string> = Extract<TStores[number], {
|
|
63
|
+
name: TName;
|
|
64
|
+
}>['_keyType'];
|
|
65
|
+
export interface GetAllOptions<T extends IDBValidKey = IDBValidKey> {
|
|
66
|
+
query?: IDBKeyRange | T;
|
|
67
|
+
count?: number;
|
|
68
|
+
}
|
|
69
|
+
export interface ReadChain<TStores extends readonly StoreDefinition[], TResults extends unknown[]> {
|
|
70
|
+
get<TName extends StoreNames<TStores>>(storeName: TName, key: KeyForStore<TStores, TName>): ReadChain<TStores, [...TResults, SchemaForStore<TStores, TName> | undefined]>;
|
|
71
|
+
getAll<TName extends StoreNames<TStores>>(storeName: TName, options?: GetAllOptions): ReadChain<TStores, [...TResults, SchemaForStore<TStores, TName>[]]>;
|
|
72
|
+
getAllByIndex<TName extends StoreNames<TStores>>(storeName: TName, indexName: string, query?: IDBKeyRange | IDBValidKey): ReadChain<TStores, [...TResults, SchemaForStore<TStores, TName>[]]>;
|
|
73
|
+
count<TName extends StoreNames<TStores>>(storeName: TName, query?: IDBKeyRange | IDBValidKey): ReadChain<TStores, [...TResults, number]>;
|
|
74
|
+
execute(): Promise<TResults>;
|
|
75
|
+
}
|
|
76
|
+
export interface WriteChain<TStores extends readonly StoreDefinition[]> {
|
|
77
|
+
put<TName extends StoreNames<TStores>>(storeName: TName, value: SchemaForStore<TStores, TName>, key?: KeyForStore<TStores, TName>): WriteChain<TStores>;
|
|
78
|
+
add<TName extends StoreNames<TStores>>(storeName: TName, value: SchemaForStore<TStores, TName>, key?: KeyForStore<TStores, TName>): WriteChain<TStores>;
|
|
79
|
+
delete<TName extends StoreNames<TStores>>(storeName: TName, key: KeyForStore<TStores, TName> | IDBKeyRange): WriteChain<TStores>;
|
|
80
|
+
clear<TName extends StoreNames<TStores>>(storeName: TName): WriteChain<TStores>;
|
|
81
|
+
execute(): Promise<void>;
|
|
82
|
+
}
|
|
83
|
+
export interface StoreAccessor<T, K> {
|
|
84
|
+
get(key: K): Promise<T | undefined>;
|
|
85
|
+
getAll(options?: GetAllOptions): Promise<T[]>;
|
|
86
|
+
getAllByIndex(indexName: string, query?: IDBKeyRange | IDBValidKey): Promise<T[]>;
|
|
87
|
+
put(value: T, key?: K): Promise<K>;
|
|
88
|
+
add(value: T, key?: K): Promise<K>;
|
|
89
|
+
delete(key: K | IDBKeyRange): Promise<void>;
|
|
90
|
+
clear(): Promise<void>;
|
|
91
|
+
count(query?: IDBKeyRange | IDBValidKey): Promise<number>;
|
|
92
|
+
raw<R>(fn: (store: IDBObjectStore) => IDBRequest<R>): Promise<R>;
|
|
93
|
+
}
|
|
94
|
+
export interface Database<TStores extends readonly StoreDefinition[]> {
|
|
95
|
+
readonly name: string;
|
|
96
|
+
readonly version: number;
|
|
97
|
+
readonly raw: IDBDatabase;
|
|
98
|
+
close(): void;
|
|
99
|
+
read<TNames extends StoreNames<TStores>[]>(storeNames: [...TNames]): ReadChain<TStores, []>;
|
|
100
|
+
write<TNames extends StoreNames<TStores>[]>(storeNames: [...TNames]): WriteChain<TStores>;
|
|
101
|
+
transaction<TNames extends StoreNames<TStores>[]>(storeNames: [...TNames], mode: IDBTransactionMode, fn: (tx: IDBTransaction) => void | Promise<void>): Promise<void>;
|
|
102
|
+
}
|
|
103
|
+
export type DatabaseWithStores<TStores extends readonly StoreDefinition[]> = Database<TStores> & {
|
|
104
|
+
[K in TStores[number]['name']]: StoreAccessor<SchemaForStore<TStores, K>, KeyForStore<TStores, K>>;
|
|
105
|
+
};
|
|
106
|
+
export {};
|
|
107
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";export{};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function promisifyRequest<T>(request: IDBRequest<T>): Promise<T>;
|
|
2
|
+
export declare function executeStoreOperation<T>(tx: IDBTransaction, request: IDBRequest<T>): Promise<T>;
|
|
3
|
+
export declare function promisifyTransaction(transaction: IDBTransaction): Promise<void>;
|
|
4
|
+
export declare function openDatabase(name: string, version: number, onUpgradeNeeded?: (db: IDBDatabase, tx: IDBTransaction, oldVersion: number, newVersion: number) => void, onBlocked?: () => void): Promise<IDBDatabase>;
|
|
5
|
+
export declare function deleteDB(name: string): Promise<void>;
|
|
6
|
+
export declare function isIndexedDBAvailable(): boolean;
|
|
7
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAOA,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAKtE;AAMD,wBAAsB,qBAAqB,CAAC,CAAC,EAC3C,EAAE,EAAE,cAAc,EAClB,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,GACrB,OAAO,CAAC,CAAC,CAAC,CAGZ;AAKD,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAM/E;AAKD,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,EACvG,SAAS,CAAC,EAAE,MAAM,IAAI,GACrB,OAAO,CAAC,WAAW,CAAC,CAmBtB;AAKD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMpD;AAKD,wBAAgB,oBAAoB,IAAI,OAAO,CAM9C"}
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var x=Object.defineProperty;var t=(e,r)=>x(e,"name",{value:r,configurable:!0});export function promisifyRequest(e){return new Promise((r,o)=>{e.onsuccess=()=>r(e.result),e.onerror=()=>o(e.error)})}t(promisifyRequest,"promisifyRequest");export async function executeStoreOperation(e,r){return await promisifyTransaction(e),r.result}t(executeStoreOperation,"executeStoreOperation");export function promisifyTransaction(e){return new Promise((r,o)=>{e.oncomplete=()=>r(),e.onerror=()=>o(e.error),e.onabort=()=>o(e.error??new Error("Transaction aborted"))})}t(promisifyTransaction,"promisifyTransaction");export function openDatabase(e,r,o,s){return new Promise((u,c)=>{const n=indexedDB.open(e,r);n.onsuccess=()=>u(n.result),n.onerror=()=>c(n.error),n.onupgradeneeded=i=>{const d=n.result,a=n.transaction,l=i.oldVersion,p=i.newVersion??r;o?.(d,a,l,p)},n.onblocked=()=>{s?.()}})}t(openDatabase,"openDatabase");export function deleteDB(e){return new Promise((r,o)=>{const s=indexedDB.deleteDatabase(e);s.onsuccess=()=>r(),s.onerror=()=>o(s.error)})}t(deleteDB,"deleteDB");export function isIndexedDBAvailable(){try{return typeof indexedDB<"u"&&indexedDB!==null}catch{return!1}}t(isIndexedDBAvailable,"isIndexedDBAvailable");
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,gBAAgB,CAAI,OAAsB;IACxD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,OAAO,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAClD,OAAO,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC;AAMD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,EAAkB,EAClB,OAAsB;IAEtB,MAAM,oBAAoB,CAAC,EAAE,CAAC,CAAC;IAC/B,OAAO,OAAO,CAAC,MAAM,CAAC;AACxB,CAAC;AAKD,MAAM,UAAU,oBAAoB,CAAC,WAA2B;IAC9D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,WAAW,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;QACzC,WAAW,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACtD,WAAW,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC5F,CAAC,CAAC,CAAC;AACL,CAAC;AAKD,MAAM,UAAU,YAAY,CAC1B,IAAY,EACZ,OAAe,EACf,eAAuG,EACvG,SAAsB;IAEtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAE9C,OAAO,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAClD,OAAO,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAE9C,OAAO,CAAC,eAAe,GAAG,CAAC,KAAK,EAAE,EAAE;YAClC,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;YAC1B,MAAM,EAAE,GAAG,OAAO,CAAC,WAAY,CAAC;YAChC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;YACpC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,OAAO,CAAC;YAC/C,eAAe,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QACpD,CAAC,CAAC;QAEF,OAAO,CAAC,SAAS,GAAG,GAAG,EAAE;YACvB,SAAS,EAAE,EAAE,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAKD,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC/C,OAAO,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;QACpC,OAAO,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC;AAKD,MAAM,UAAU,oBAAoB;IAClC,IAAI,CAAC;QACH,OAAO,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,KAAK,IAAI,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writeChain.d.ts","sourceRoot":"","sources":["../src/writeChain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAiC9D,wBAAgB,gBAAgB,CAAC,OAAO,SAAS,SAAS,eAAe,EAAE,EACzE,EAAE,EAAE,WAAW,EACf,UAAU,EAAE,MAAM,EAAE,GACnB,UAAU,CAAC,OAAO,CAAC,CAkErB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var u=Object.defineProperty;var i=(n,o)=>u(n,"name",{value:o,configurable:!0});import{promisifyTransaction as p}from"./utils.js";function h(n){return n}i(h,"toWriteChain");export function createWriteChain(n,o){const a=[],s={put(t,r,e){return a.push({type:"put",storeName:t,value:r,key:e}),s},add(t,r,e){return a.push({type:"add",storeName:t,value:r,key:e}),s},delete(t,r){return a.push({type:"delete",storeName:t,key:r}),s},clear(t){return a.push({type:"clear",storeName:t}),s},async execute(){if(a.length===0)return;const t=[...new Set(a.map(e=>e.storeName))];for(const e of t)if(!o.includes(e))throw new Error(`Store "${e}" is not in the transaction scope. Available stores: ${o.join(", ")}`);const r=n.transaction(o,"readwrite");for(const e of a){const c=r.objectStore(e.storeName);switch(e.type){case"put":c.put(e.value,e.key);break;case"add":c.add(e.value,e.key);break;case"delete":c.delete(e.key);break;case"clear":c.clear();break}}await p(r)}};return s}i(createWriteChain,"createWriteChain");
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writeChain.js","sourceRoot":"","sources":["../src/writeChain.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAiBlD,SAAS,YAAY,CACnB,KAAqB;IAErB,OAAO,KAA4B,CAAC;AACtC,CAAC;AAWD,MAAM,UAAU,gBAAgB,CAC9B,EAAe,EACf,UAAoB;IAEpB,MAAM,UAAU,GAAqB,EAAE,CAAC;IAExC,MAAM,KAAK,GAAG;QACZ,GAAG,CAAC,SAAiB,EAAE,KAAc,EAAE,GAAiB;YACtD,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YACxD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,GAAG,CAAC,SAAiB,EAAE,KAAc,EAAE,GAAiB;YACtD,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YACxD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,CAAC,SAAiB,EAAE,GAA8B;YACtD,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;YACpD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,KAAK,CAAC,SAAiB;YACrB,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;YAC9C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,KAAK,CAAC,OAAO;YACX,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5B,OAAO;YACT,CAAC;YAED,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAEtE,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;gBAC/B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBAChC,MAAM,IAAI,KAAK,CACb,UAAU,KAAK,qCAAqC;wBACpD,qBAAqB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC7C,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YAEnD,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;gBAE3C,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;oBAChB,KAAK,KAAK;wBACR,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;wBAC5B,MAAM;oBACR,KAAK,KAAK;wBACR,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;wBAC5B,MAAM;oBACR,KAAK,QAAQ;wBACX,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;wBACrB,MAAM;oBACR,KAAK,OAAO;wBACV,KAAK,CAAC,KAAK,EAAE,CAAC;wBACd,MAAM;gBACV,CAAC;YACH,CAAC;YAED,MAAM,oBAAoB,CAAC,EAAE,CAAC,CAAC;QACjC,CAAC;KACF,CAAC;IAEF,OAAO,YAAY,CAAU,KAAK,CAAC,CAAC;AACtC,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "schema-idb",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Type-safe IndexedDB wrapper with chainable transactions",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"module": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"type": "module",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"dist"
|
|
17
|
+
],
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "tsc && npm run minify",
|
|
20
|
+
"minify": "esbuild dist/*.js --outdir=dist --minify --allow-overwrite --keep-names",
|
|
21
|
+
"typecheck": "tsc --noEmit",
|
|
22
|
+
"clean": "rm -rf dist",
|
|
23
|
+
"test": "vitest",
|
|
24
|
+
"test:run": "vitest run",
|
|
25
|
+
"prepublishOnly": "npm run clean && npm run build && npm run test:run"
|
|
26
|
+
},
|
|
27
|
+
"keywords": [
|
|
28
|
+
"indexeddb",
|
|
29
|
+
"idb",
|
|
30
|
+
"database",
|
|
31
|
+
"storage",
|
|
32
|
+
"typescript",
|
|
33
|
+
"browser",
|
|
34
|
+
"client-side",
|
|
35
|
+
"schema",
|
|
36
|
+
"type-safe"
|
|
37
|
+
],
|
|
38
|
+
"author": "",
|
|
39
|
+
"license": "MIT",
|
|
40
|
+
"engines": {
|
|
41
|
+
"node": ">=18.0.0"
|
|
42
|
+
},
|
|
43
|
+
"sideEffects": false,
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"esbuild": "^0.27.2",
|
|
46
|
+
"fake-indexeddb": "^6.2.5",
|
|
47
|
+
"typescript": "^5.9.3",
|
|
48
|
+
"vitest": "^4.0.16"
|
|
49
|
+
}
|
|
50
|
+
}
|