@vielzeug/vault 2.0.1 → 2.1.0
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 +42 -6
- package/dist/adapter-core.cjs +1 -1
- package/dist/adapter-core.cjs.map +1 -1
- package/dist/adapter-core.d.ts +1 -0
- package/dist/adapter-core.d.ts.map +1 -1
- package/dist/adapter-core.js +98 -108
- package/dist/adapter-core.js.map +1 -1
- package/dist/adapters/indexeddb.cjs +1 -1
- package/dist/adapters/indexeddb.cjs.map +1 -1
- package/dist/adapters/indexeddb.d.ts.map +1 -1
- package/dist/adapters/indexeddb.js +114 -113
- package/dist/adapters/indexeddb.js.map +1 -1
- package/dist/adapters/memory.cjs +1 -1
- package/dist/adapters/memory.js +59 -59
- package/dist/adapters/sqlite.cjs +42 -0
- package/dist/adapters/sqlite.cjs.map +1 -0
- package/dist/adapters/sqlite.d.ts +43 -0
- package/dist/adapters/sqlite.d.ts.map +1 -0
- package/dist/adapters/sqlite.js +401 -0
- package/dist/adapters/sqlite.js.map +1 -0
- package/dist/adapters/webstorage.cjs +1 -1
- package/dist/adapters/webstorage.js +25 -25
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +1 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -8
- package/dist/indexeddb.cjs +1 -0
- package/dist/indexeddb.d.ts +5 -0
- package/dist/indexeddb.d.ts.map +1 -0
- package/dist/indexeddb.js +3 -0
- package/dist/local-storage.cjs +1 -0
- package/dist/local-storage.d.ts +2 -0
- package/dist/local-storage.d.ts.map +1 -0
- package/dist/local-storage.js +2 -0
- package/dist/memory.cjs +1 -0
- package/dist/memory.d.ts +2 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +2 -0
- package/dist/session-storage.cjs +1 -0
- package/dist/session-storage.d.ts +2 -0
- package/dist/session-storage.d.ts.map +1 -0
- package/dist/session-storage.js +2 -0
- package/dist/sqlite.cjs +1 -0
- package/dist/sqlite.d.ts +3 -0
- package/dist/sqlite.d.ts.map +1 -0
- package/dist/sqlite.js +2 -0
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.ts +8 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/vault.cjs +1 -1
- package/dist/vault.cjs.map +1 -1
- package/dist/vault.iife.js +1 -1
- package/dist/vault.iife.js.map +1 -1
- package/dist/vault.js +1 -1
- package/dist/vault.js.map +1 -1
- package/package.json +48 -2
- package/dist/streaming.d.ts +0 -2
- package/dist/streaming.d.ts.map +0 -1
- package/dist/versioned-codec.d.ts +0 -2
- package/dist/versioned-codec.d.ts.map +0 -1
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { createIndexedDB } from './adapters/indexeddb';
|
|
2
|
+
export { defineMigration } from './migration';
|
|
3
|
+
export type { MigrationStep } from './migration';
|
|
4
|
+
export type { IndexedDbVaultStore, MigrationContext, MigrationFn, TransactionContext } from './types';
|
|
5
|
+
//# sourceMappingURL=indexeddb.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexeddb.d.ts","sourceRoot":"","sources":["../src/indexeddb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./adapters/webstorage.cjs");exports.createLocalStorage=e.createLocalStorage;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-storage.d.ts","sourceRoot":"","sources":["../src/local-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC"}
|
package/dist/memory.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./adapters/memory.cjs");exports.createMemory=e.createMemory;
|
package/dist/memory.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/memory.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./adapters/webstorage.cjs");exports.createSessionStorage=e.createSessionStorage;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-storage.d.ts","sourceRoot":"","sources":["../src/session-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC"}
|
package/dist/sqlite.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./adapters/sqlite.cjs");exports.createSQLite=e.createSQLite;
|
package/dist/sqlite.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../src/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EACV,cAAc,EACd,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC"}
|
package/dist/sqlite.js
ADDED
package/dist/types.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.cjs","names":[],"sources":["../src/types.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"types.cjs","names":[],"sources":["../src/types.ts"],"sourcesContent":["/// <reference lib=\"dom\" />\n\nimport type { QueryBuilder } from './query';\n\nimport { VaultError } from './errors';\nimport { assertTtlMs, type TtlMs } from './ttl';\n\nexport type { TtlMs };\n\n/** Portable primary-key values. Vault preserves their type and encodes them distinctly at rest. */\nexport type VaultKey = number | string;\n\ndeclare const schemaEntryBrand: unique symbol;\n\n/** A typed table definition whose primary-key field must hold a portable Vault key. */\nexport type SchemaEntry<T extends object, Key extends keyof T & string = keyof T & string> = T[Key] extends VaultKey\n ? {\n defaultTtl?: TtlMs;\n /** IndexedDB creates these as `value.<field>` indexes; other stores filter in memory. */\n indexes?: readonly (keyof T & string)[];\n key: Key;\n readonly [schemaEntryBrand]?: T;\n }\n : never;\n\nexport type AnySchema = Record<string, { defaultTtl?: TtlMs; indexes?: readonly string[]; key: string }>;\n\nexport type TableBuilder<T extends object, Key extends keyof T & string = keyof T & string> = SchemaEntry<T, Key> & {\n index: <F extends keyof T & string>(field: F) => TableBuilder<T, Key>;\n ttl: (ms: TtlMs) => TableBuilder<T, Key>;\n};\n\n/** Define a table once so all stores share the same record and portable-key contract. */\nexport function table<T extends object, Key extends keyof T & string = keyof T & string>(\n key: Key & (T[Key] extends VaultKey ? unknown : never),\n): TableBuilder<T, Key> {\n function makeBuilder(entry: SchemaEntry<T, Key>): TableBuilder<T, Key> {\n return {\n ...entry,\n index: <F extends keyof T & string>(field: F): TableBuilder<T, Key> => {\n const current = (entry.indexes ?? []) as readonly (keyof T & string)[];\n\n if (current.includes(field)) {\n throw new VaultError(`table index \"${field}\" is already registered`);\n }\n\n return makeBuilder({ ...entry, indexes: [...current, field] });\n },\n ttl: (ms: TtlMs): TableBuilder<T, Key> => {\n assertTtlMs(ms, 'table.ttl');\n\n return makeBuilder({ ...entry, defaultTtl: ms });\n },\n };\n }\n\n return makeBuilder({ key } as unknown as SchemaEntry<T, Key>);\n}\n\nexport type RecordOf<S extends AnySchema, K extends keyof S> =\n S[K] extends SchemaEntry<infer R, infer _Key> ? R : never;\nexport type KeyOf<S extends AnySchema, K extends keyof S> = Extract<\n S[K] extends SchemaEntry<infer R, infer Key> ? R[Key] : never,\n VaultKey\n>;\n\nexport type MigrationContext = {\n db: IDBDatabase;\n newVersion: number | null;\n oldVersion: number;\n tx: IDBTransaction;\n};\n\nexport type MigrationFn = (ctx: MigrationContext) => void;\n\nexport interface VaultLogger {\n error(messageOrContext?: Record<string, unknown> | Error | string, message?: string): void;\n}\n\nexport interface RecordValidator<T> {\n parse(value: unknown): T;\n}\n\nexport type TableValidators<S extends AnySchema> = {\n [K in keyof S]?: RecordValidator<RecordOf<S, K>>;\n};\n\nexport type Observer<T> = (records: T[]) => void;\nexport type Unsubscribe = () => void;\n\n/** Shared factory options. Values always use Vault's fixed `{ value, expiresAt? }` envelope. */\nexport type BaseAdapterOptions<S extends AnySchema> = {\n logger?: VaultLogger;\n onMetrics?: (event: MetricsEvent) => void;\n schema: S;\n validators?: TableValidators<S>;\n};\n\nexport type MetricsEvent = {\n duration: number;\n operation:\n | 'batch'\n | 'clear'\n | 'count'\n | 'delete'\n | 'deleteMany'\n | 'entries'\n | 'get'\n | 'getAll'\n | 'getMany'\n | 'getOrDefault'\n | 'has'\n | 'isEmpty'\n | 'keys'\n | 'put'\n | 'putAll'\n | 'query'\n | 'queryDelete'\n | 'update'\n | 'upsert';\n table: string;\n};\n\nexport type DebugStats = { expiredCount: number; recordCount: number };\nexport type DebugInfo<S extends AnySchema> = { tables: Array<{ name: keyof S & string } & DebugStats> };\n\n/** Methods available within an IndexedDB transaction. */\nexport type TransactionContext<S extends AnySchema, K extends keyof S & string = keyof S & string> = {\n clear<T extends K>(table: T): Promise<void>;\n count<T extends K>(table: T): Promise<number>;\n delete<T extends K>(table: T, key: KeyOf<S, T>): Promise<boolean>;\n deleteMany<T extends K>(table: T, keys: KeyOf<S, T>[]): Promise<number>;\n entries<T extends K>(table: T): Promise<Array<[KeyOf<S, T>, RecordOf<S, T>]>>;\n get<T extends K>(table: T, key: KeyOf<S, T>): Promise<RecordOf<S, T> | undefined>;\n getAll<T extends K>(table: T): Promise<RecordOf<S, T>[]>;\n getMany<T extends K>(table: T, keys: KeyOf<S, T>[]): Promise<Array<RecordOf<S, T> | undefined>>;\n getOrDefault<T extends K>(\n table: T,\n key: KeyOf<S, T>,\n defaultFn: () => RecordOf<S, T>,\n ttl?: TtlMs,\n ): Promise<RecordOf<S, T>>;\n has<T extends K>(table: T, key: KeyOf<S, T>): Promise<boolean>;\n isEmpty<T extends K>(table: T): Promise<boolean>;\n keys<T extends K>(table: T, filter?: (record: RecordOf<S, T>) => boolean): Promise<KeyOf<S, T>[]>;\n put<T extends K>(table: T, value: RecordOf<S, T>, ttl?: TtlMs): Promise<void>;\n putAll<T extends K>(table: T, values: RecordOf<S, T>[], ttl?: TtlMs): Promise<void>;\n query<T extends K>(table: T): QueryBuilder<RecordOf<S, T>>;\n update<T extends K>(\n table: T,\n key: KeyOf<S, T>,\n changes: Partial<RecordOf<S, T>>,\n ttl?: TtlMs,\n ): Promise<RecordOf<S, T> | undefined>;\n upsert<T extends K>(\n table: T,\n key: KeyOf<S, T>,\n fn: (existing: RecordOf<S, T> | undefined) => RecordOf<S, T>,\n ttl?: TtlMs,\n ): Promise<RecordOf<S, T>>;\n};\n\n/** Portable API returned by memory and Web Storage factories. */\nexport interface VaultStore<S extends AnySchema> {\n clear<K extends keyof S & string>(table: K): Promise<void>;\n count<K extends keyof S & string>(table: K): Promise<number>;\n delete<K extends keyof S & string>(table: K, key: KeyOf<S, K>): Promise<boolean>;\n deleteMany<K extends keyof S & string>(table: K, keys: KeyOf<S, K>[]): Promise<number>;\n entries<K extends keyof S & string>(table: K): Promise<Array<[KeyOf<S, K>, RecordOf<S, K>]>>;\n get<K extends keyof S & string>(table: K, key: KeyOf<S, K>): Promise<RecordOf<S, K> | undefined>;\n getAll<K extends keyof S & string>(table: K): Promise<RecordOf<S, K>[]>;\n getMany<K extends keyof S & string>(table: K, keys: KeyOf<S, K>[]): Promise<Array<RecordOf<S, K> | undefined>>;\n getOrDefault<K extends keyof S & string>(\n table: K,\n key: KeyOf<S, K>,\n defaultFn: () => RecordOf<S, K>,\n ttl?: TtlMs,\n ): Promise<RecordOf<S, K>>;\n has<K extends keyof S & string>(table: K, key: KeyOf<S, K>): Promise<boolean>;\n isEmpty<K extends keyof S & string>(table: K): Promise<boolean>;\n keys<K extends keyof S & string>(table: K, filter?: (record: RecordOf<S, K>) => boolean): Promise<KeyOf<S, K>[]>;\n put<K extends keyof S & string>(table: K, value: RecordOf<S, K>, ttl?: TtlMs): Promise<void>;\n putAll<K extends keyof S & string>(table: K, values: RecordOf<S, K>[], ttl?: TtlMs): Promise<void>;\n query<K extends keyof S & string>(table: K): QueryBuilder<RecordOf<S, K>>;\n update<K extends keyof S & string>(\n table: K,\n key: KeyOf<S, K>,\n changes: Partial<RecordOf<S, K>>,\n ttl?: TtlMs,\n ): Promise<RecordOf<S, K> | undefined>;\n upsert<K extends keyof S & string>(\n table: K,\n key: KeyOf<S, K>,\n fn: (existing: RecordOf<S, K> | undefined) => RecordOf<S, K>,\n ttl?: TtlMs,\n ): Promise<RecordOf<S, K>>;\n pruneExpired(): Promise<Record<keyof S & string, number>>;\n debug(): Promise<DebugInfo<S>>;\n observe<K extends keyof S & string>(\n table: K,\n listener: Observer<RecordOf<S, K>>,\n options?: { immediate?: boolean; signal?: AbortSignal },\n ): Unsubscribe;\n dispose(): Promise<void>;\n readonly disposed: boolean;\n readonly disposalSignal: AbortSignal;\n [Symbol.asyncDispose](): Promise<void>;\n}\n\n/** Atomic, scoped transactions supplied by storage engines that support them. */\nexport interface TransactionalVaultStore<S extends AnySchema> extends VaultStore<S> {\n batch<K extends keyof S & string, R>(\n tables: readonly K[],\n fn: (tx: TransactionContext<S, K>) => Promise<R>,\n ): Promise<R>;\n}\n\n/** Lazy record iteration supplied by storage engines that support it. */\nexport interface IterableVaultStore<S extends AnySchema> extends VaultStore<S> {\n iterate<K extends keyof S & string>(table: K): AsyncIterable<RecordOf<S, K>>;\n}\n\n/** IndexedDB-only guarantees: cursor iteration and atomic, scoped transactions. */\nexport interface IndexedDbVaultStore<S extends AnySchema> extends TransactionalVaultStore<S>, IterableVaultStore<S> {}\n"],"mappings":"uDAiCA,SAAgB,EACd,EACsB,CACtB,SAAS,EAAY,EAAkD,CACrE,MAAO,CACL,GAAG,EACH,MAAoC,GAAmC,CACrE,IAAM,EAAW,EAAM,SAAW,CAAC,EAEnC,GAAI,EAAQ,SAAS,CAAK,EACxB,MAAM,IAAI,EAAA,WAAW,gBAAgB,EAAM,wBAAwB,EAGrE,OAAO,EAAY,CAAE,GAAG,EAAO,QAAS,CAAC,GAAG,EAAS,CAAK,CAAE,CAAC,CAC/D,EACA,IAAM,IACJ,EAAA,YAAY,EAAI,WAAW,EAEpB,EAAY,CAAE,GAAG,EAAO,WAAY,CAAG,CAAC,EAEnD,CACF,CAEA,OAAO,EAAY,CAAE,KAAI,CAAmC,CAC9D"}
|
package/dist/types.d.ts
CHANGED
|
@@ -114,9 +114,15 @@ export interface VaultStore<S extends AnySchema> {
|
|
|
114
114
|
readonly disposalSignal: AbortSignal;
|
|
115
115
|
[Symbol.asyncDispose](): Promise<void>;
|
|
116
116
|
}
|
|
117
|
-
/**
|
|
118
|
-
export interface
|
|
117
|
+
/** Atomic, scoped transactions supplied by storage engines that support them. */
|
|
118
|
+
export interface TransactionalVaultStore<S extends AnySchema> extends VaultStore<S> {
|
|
119
119
|
batch<K extends keyof S & string, R>(tables: readonly K[], fn: (tx: TransactionContext<S, K>) => Promise<R>): Promise<R>;
|
|
120
|
+
}
|
|
121
|
+
/** Lazy record iteration supplied by storage engines that support it. */
|
|
122
|
+
export interface IterableVaultStore<S extends AnySchema> extends VaultStore<S> {
|
|
120
123
|
iterate<K extends keyof S & string>(table: K): AsyncIterable<RecordOf<S, K>>;
|
|
121
124
|
}
|
|
125
|
+
/** IndexedDB-only guarantees: cursor iteration and atomic, scoped transactions. */
|
|
126
|
+
export interface IndexedDbVaultStore<S extends AnySchema> extends TransactionalVaultStore<S>, IterableVaultStore<S> {
|
|
127
|
+
}
|
|
122
128
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../src/types.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../src/types.ts"],"sourcesContent":["/// <reference lib=\"dom\" />\n\nimport type { QueryBuilder } from './query';\n\nimport { VaultError } from './errors';\nimport { assertTtlMs, type TtlMs } from './ttl';\n\nexport type { TtlMs };\n\n/** Portable primary-key values. Vault preserves their type and encodes them distinctly at rest. */\nexport type VaultKey = number | string;\n\ndeclare const schemaEntryBrand: unique symbol;\n\n/** A typed table definition whose primary-key field must hold a portable Vault key. */\nexport type SchemaEntry<T extends object, Key extends keyof T & string = keyof T & string> = T[Key] extends VaultKey\n ? {\n defaultTtl?: TtlMs;\n /** IndexedDB creates these as `value.<field>` indexes; other stores filter in memory. */\n indexes?: readonly (keyof T & string)[];\n key: Key;\n readonly [schemaEntryBrand]?: T;\n }\n : never;\n\nexport type AnySchema = Record<string, { defaultTtl?: TtlMs; indexes?: readonly string[]; key: string }>;\n\nexport type TableBuilder<T extends object, Key extends keyof T & string = keyof T & string> = SchemaEntry<T, Key> & {\n index: <F extends keyof T & string>(field: F) => TableBuilder<T, Key>;\n ttl: (ms: TtlMs) => TableBuilder<T, Key>;\n};\n\n/** Define a table once so all stores share the same record and portable-key contract. */\nexport function table<T extends object, Key extends keyof T & string = keyof T & string>(\n key: Key & (T[Key] extends VaultKey ? unknown : never),\n): TableBuilder<T, Key> {\n function makeBuilder(entry: SchemaEntry<T, Key>): TableBuilder<T, Key> {\n return {\n ...entry,\n index: <F extends keyof T & string>(field: F): TableBuilder<T, Key> => {\n const current = (entry.indexes ?? []) as readonly (keyof T & string)[];\n\n if (current.includes(field)) {\n throw new VaultError(`table index \"${field}\" is already registered`);\n }\n\n return makeBuilder({ ...entry, indexes: [...current, field] });\n },\n ttl: (ms: TtlMs): TableBuilder<T, Key> => {\n assertTtlMs(ms, 'table.ttl');\n\n return makeBuilder({ ...entry, defaultTtl: ms });\n },\n };\n }\n\n return makeBuilder({ key } as unknown as SchemaEntry<T, Key>);\n}\n\nexport type RecordOf<S extends AnySchema, K extends keyof S> =\n S[K] extends SchemaEntry<infer R, infer _Key> ? R : never;\nexport type KeyOf<S extends AnySchema, K extends keyof S> = Extract<\n S[K] extends SchemaEntry<infer R, infer Key> ? R[Key] : never,\n VaultKey\n>;\n\nexport type MigrationContext = {\n db: IDBDatabase;\n newVersion: number | null;\n oldVersion: number;\n tx: IDBTransaction;\n};\n\nexport type MigrationFn = (ctx: MigrationContext) => void;\n\nexport interface VaultLogger {\n error(messageOrContext?: Record<string, unknown> | Error | string, message?: string): void;\n}\n\nexport interface RecordValidator<T> {\n parse(value: unknown): T;\n}\n\nexport type TableValidators<S extends AnySchema> = {\n [K in keyof S]?: RecordValidator<RecordOf<S, K>>;\n};\n\nexport type Observer<T> = (records: T[]) => void;\nexport type Unsubscribe = () => void;\n\n/** Shared factory options. Values always use Vault's fixed `{ value, expiresAt? }` envelope. */\nexport type BaseAdapterOptions<S extends AnySchema> = {\n logger?: VaultLogger;\n onMetrics?: (event: MetricsEvent) => void;\n schema: S;\n validators?: TableValidators<S>;\n};\n\nexport type MetricsEvent = {\n duration: number;\n operation:\n | 'batch'\n | 'clear'\n | 'count'\n | 'delete'\n | 'deleteMany'\n | 'entries'\n | 'get'\n | 'getAll'\n | 'getMany'\n | 'getOrDefault'\n | 'has'\n | 'isEmpty'\n | 'keys'\n | 'put'\n | 'putAll'\n | 'query'\n | 'queryDelete'\n | 'update'\n | 'upsert';\n table: string;\n};\n\nexport type DebugStats = { expiredCount: number; recordCount: number };\nexport type DebugInfo<S extends AnySchema> = { tables: Array<{ name: keyof S & string } & DebugStats> };\n\n/** Methods available within an IndexedDB transaction. */\nexport type TransactionContext<S extends AnySchema, K extends keyof S & string = keyof S & string> = {\n clear<T extends K>(table: T): Promise<void>;\n count<T extends K>(table: T): Promise<number>;\n delete<T extends K>(table: T, key: KeyOf<S, T>): Promise<boolean>;\n deleteMany<T extends K>(table: T, keys: KeyOf<S, T>[]): Promise<number>;\n entries<T extends K>(table: T): Promise<Array<[KeyOf<S, T>, RecordOf<S, T>]>>;\n get<T extends K>(table: T, key: KeyOf<S, T>): Promise<RecordOf<S, T> | undefined>;\n getAll<T extends K>(table: T): Promise<RecordOf<S, T>[]>;\n getMany<T extends K>(table: T, keys: KeyOf<S, T>[]): Promise<Array<RecordOf<S, T> | undefined>>;\n getOrDefault<T extends K>(\n table: T,\n key: KeyOf<S, T>,\n defaultFn: () => RecordOf<S, T>,\n ttl?: TtlMs,\n ): Promise<RecordOf<S, T>>;\n has<T extends K>(table: T, key: KeyOf<S, T>): Promise<boolean>;\n isEmpty<T extends K>(table: T): Promise<boolean>;\n keys<T extends K>(table: T, filter?: (record: RecordOf<S, T>) => boolean): Promise<KeyOf<S, T>[]>;\n put<T extends K>(table: T, value: RecordOf<S, T>, ttl?: TtlMs): Promise<void>;\n putAll<T extends K>(table: T, values: RecordOf<S, T>[], ttl?: TtlMs): Promise<void>;\n query<T extends K>(table: T): QueryBuilder<RecordOf<S, T>>;\n update<T extends K>(\n table: T,\n key: KeyOf<S, T>,\n changes: Partial<RecordOf<S, T>>,\n ttl?: TtlMs,\n ): Promise<RecordOf<S, T> | undefined>;\n upsert<T extends K>(\n table: T,\n key: KeyOf<S, T>,\n fn: (existing: RecordOf<S, T> | undefined) => RecordOf<S, T>,\n ttl?: TtlMs,\n ): Promise<RecordOf<S, T>>;\n};\n\n/** Portable API returned by memory and Web Storage factories. */\nexport interface VaultStore<S extends AnySchema> {\n clear<K extends keyof S & string>(table: K): Promise<void>;\n count<K extends keyof S & string>(table: K): Promise<number>;\n delete<K extends keyof S & string>(table: K, key: KeyOf<S, K>): Promise<boolean>;\n deleteMany<K extends keyof S & string>(table: K, keys: KeyOf<S, K>[]): Promise<number>;\n entries<K extends keyof S & string>(table: K): Promise<Array<[KeyOf<S, K>, RecordOf<S, K>]>>;\n get<K extends keyof S & string>(table: K, key: KeyOf<S, K>): Promise<RecordOf<S, K> | undefined>;\n getAll<K extends keyof S & string>(table: K): Promise<RecordOf<S, K>[]>;\n getMany<K extends keyof S & string>(table: K, keys: KeyOf<S, K>[]): Promise<Array<RecordOf<S, K> | undefined>>;\n getOrDefault<K extends keyof S & string>(\n table: K,\n key: KeyOf<S, K>,\n defaultFn: () => RecordOf<S, K>,\n ttl?: TtlMs,\n ): Promise<RecordOf<S, K>>;\n has<K extends keyof S & string>(table: K, key: KeyOf<S, K>): Promise<boolean>;\n isEmpty<K extends keyof S & string>(table: K): Promise<boolean>;\n keys<K extends keyof S & string>(table: K, filter?: (record: RecordOf<S, K>) => boolean): Promise<KeyOf<S, K>[]>;\n put<K extends keyof S & string>(table: K, value: RecordOf<S, K>, ttl?: TtlMs): Promise<void>;\n putAll<K extends keyof S & string>(table: K, values: RecordOf<S, K>[], ttl?: TtlMs): Promise<void>;\n query<K extends keyof S & string>(table: K): QueryBuilder<RecordOf<S, K>>;\n update<K extends keyof S & string>(\n table: K,\n key: KeyOf<S, K>,\n changes: Partial<RecordOf<S, K>>,\n ttl?: TtlMs,\n ): Promise<RecordOf<S, K> | undefined>;\n upsert<K extends keyof S & string>(\n table: K,\n key: KeyOf<S, K>,\n fn: (existing: RecordOf<S, K> | undefined) => RecordOf<S, K>,\n ttl?: TtlMs,\n ): Promise<RecordOf<S, K>>;\n pruneExpired(): Promise<Record<keyof S & string, number>>;\n debug(): Promise<DebugInfo<S>>;\n observe<K extends keyof S & string>(\n table: K,\n listener: Observer<RecordOf<S, K>>,\n options?: { immediate?: boolean; signal?: AbortSignal },\n ): Unsubscribe;\n dispose(): Promise<void>;\n readonly disposed: boolean;\n readonly disposalSignal: AbortSignal;\n [Symbol.asyncDispose](): Promise<void>;\n}\n\n/** Atomic, scoped transactions supplied by storage engines that support them. */\nexport interface TransactionalVaultStore<S extends AnySchema> extends VaultStore<S> {\n batch<K extends keyof S & string, R>(\n tables: readonly K[],\n fn: (tx: TransactionContext<S, K>) => Promise<R>,\n ): Promise<R>;\n}\n\n/** Lazy record iteration supplied by storage engines that support it. */\nexport interface IterableVaultStore<S extends AnySchema> extends VaultStore<S> {\n iterate<K extends keyof S & string>(table: K): AsyncIterable<RecordOf<S, K>>;\n}\n\n/** IndexedDB-only guarantees: cursor iteration and atomic, scoped transactions. */\nexport interface IndexedDbVaultStore<S extends AnySchema> extends TransactionalVaultStore<S>, IterableVaultStore<S> {}\n"],"mappings":";;;AAiCA,SAAgB,EACd,GACsB;CACtB,SAAS,EAAY,GAAkD;EACrE,OAAO;GACL,GAAG;GACH,QAAoC,MAAmC;IACrE,IAAM,IAAW,EAAM,WAAW,CAAC;IAEnC,IAAI,EAAQ,SAAS,CAAK,GACxB,MAAM,IAAI,EAAW,gBAAgB,EAAM,wBAAwB;IAGrE,OAAO,EAAY;KAAE,GAAG;KAAO,SAAS,CAAC,GAAG,GAAS,CAAK;IAAE,CAAC;GAC/D;GACA,MAAM,OACJ,EAAY,GAAI,WAAW,GAEpB,EAAY;IAAE,GAAG;IAAO,YAAY;GAAG,CAAC;EAEnD;CACF;CAEA,OAAO,EAAY,EAAE,OAAI,CAAmC;AAC9D"}
|
package/dist/vault.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=class e extends Error{constructor(e,t){super(e,t),this.name=new.target.name,Object.setPrototypeOf(this,new.target.prototype)}static is(t){return t instanceof e}},t=class extends e{constructor(e=`adapter is disposed`,t){super(e,t)}},n=class extends e{},r=class extends e{},i=class extends e{},a=`\0`;function o(t){if(typeof t==`number`){if(!Number.isFinite(t))throw new e(`primary key must be a finite number, received ${String(t)}`);return`n:${String(t)}`}return`s:${encodeURIComponent(t)}`}function s(e){return`${encodeURIComponent(e)}${a}`}function c(e,t,n){return`${encodeURIComponent(e)}${a}${encodeURIComponent(t)}${a}${o(n)}`}function l(e,t){return`${encodeURIComponent(e)}${a}${encodeURIComponent(t)}${a}`}function u(e,t){if(!t)return;let n=s(e);if(!t.startsWith(n))return;let r=t.slice(n.length),i=r.indexOf(a);if(i!==-1)try{return decodeURIComponent(r.slice(0,i))}catch{return}}function d(e,n){let r=new Map,i=!1,a=e=>{n&&n(e)},o=t=>{if(i)return;let n=r.get(t);!n||n.size===0||e(t).then(e=>{if(i)return;let n=r.get(t);if(!(!n||n.size===0))for(let t of n)try{t(e)}catch(e){a(e)}}).catch(a)};return{dispose:()=>{i=!0,r.clear()},notify:o,observe:(e,n,{immediate:a=!0,signal:s}={})=>{if(i)throw new t(`observer hub is disposed`);if(s?.aborted)return()=>{};let c=n,l=r.get(e)??new Set;r.set(e,l),l.add(c),a&&o(e);let u=()=>{let t=r.get(e);t&&(t.delete(c),t.size===0&&r.delete(e))};return s?.addEventListener(`abort`,u,{once:!0}),u}}}function f(t,n,r){let i=String(t[n].key),a=r[i];if(typeof a!=`number`&&typeof a!=`string`)throw new e(`record in table "${String(n)}" must have a string or finite-number key at "${i}"`);if(typeof a==`number`&&!Number.isFinite(a))throw new e(`record in table "${String(n)}" must have a finite-number key at "${i}"`);return a}async function p(e,t){let n=await e.source();for(let e of t)n=e.apply(n);return n}function m(t,n){if(!Number.isInteger(t)||t<0)throw new e(`${n} must be a non-negative integer`);return t}function h(e,t){return{deleteMany:e.deleteMany,source:t}}function g(t,n=[]){let r=e=>g(t,[...n,e]);return{between(e,i,a){let o=String(e);if(n.length===0){if(t.getRange&&t.keyField===o)return g(h(t,()=>t.getRange({lower:i,type:`between`,upper:a})),n);if(t.getIndexRange&&t.indexedFields?.has(o))return g(h(t,()=>t.getIndexRange(o,{lower:i,type:`between`,upper:a})),n)}return r({apply:t=>t.filter(t=>{let n=t[e];return n>=i&&n<=a})})},count(){return p(t,n).then(e=>e.length)},async delete(){if(!t.deleteMany)throw new e(`query.delete is not available for this adapter context`);let r=await p(t,n);return t.deleteMany(r)},equals(e,r){let i=String(e);if(n.length===0){if(t.getRange&&t.keyField===i)return g(h(t,()=>t.getRange({type:`eq`,value:r})));if(t.getIndexRange&&t.indexedFields?.has(i))return g(h(t,()=>t.getIndexRange(i,{type:`eq`,value:r})))}return g(t,[...n,{apply:t=>t.filter(t=>t[e]===r)}])},async exists(){return n.length===0?t.source().then(e=>e.length>0):p(t,n).then(e=>e.length>0)},filter(e){return r({apply:t=>t.filter(e)})},first(){return n.length===0?t.source().then(e=>e[0]):p(t,n).then(e=>e[0])},limit(e){let t=m(e,`query.limit`);return r({apply:e=>e.slice(0,t),isNonFilter:!0})},offset(e){let t=m(e,`query.offset`);return r({apply:e=>e.slice(t),isNonFilter:!0})},orderBy(e,t=`asc`){return r({apply:n=>{let r=t===`asc`?1:-1;return[...n].sort((t,n)=>{let i=t[e],a=n[e];return i===a?0:i>a?r:-r})},isNonFilter:!0})},startsWith(e,i,{ignoreCase:a=!1}={}){let o=String(e);if(!a&&i.length>0&&n.length===0){if(t.getRange&&t.keyField===o)return g(h(t,()=>t.getRange({prefix:i,type:`starts`})),n);if(t.getIndexRange&&t.indexedFields?.has(o))return g(h(t,()=>t.getIndexRange(o,{prefix:i,type:`starts`})),n)}let s=a?i.toLowerCase():i;return r({apply:t=>t.filter(t=>{let n=t[e];return typeof n==`string`&&(a?n.toLowerCase():n).startsWith(s)})})},toArray(){return p(t,n)},totalCount(){return p(t,n.filter(e=>!e.isNonFilter)).then(e=>e.length)}}}var _={days:e=>y(y(e,`ttl.days`)*864e5,`ttl.days (result)`),hours:e=>y(y(e,`ttl.hours`)*36e5,`ttl.hours (result)`),minutes:e=>y(y(e,`ttl.minutes`)*6e4,`ttl.minutes (result)`),ms:e=>y(e,`ttl.ms`),seconds:e=>y(y(e,`ttl.seconds`)*1e3,`ttl.seconds (result)`)};function v(e){return e!==void 0&&Date.now()>=e}function y(t,n){if(!Number.isFinite(t)||t<=0)throw new e(`${n} expected a finite positive number, received ${String(t)}`);return t}function b(e){if(typeof e!=`object`||!e||!(`value`in e))return;let t=e;if(!(t.expiresAt!==void 0&&(typeof t.expiresAt!=`number`||!Number.isFinite(t.expiresAt))))return t}var x=typeof performance<`u`?()=>performance.now():()=>Date.now();function S(e,t,n){return n!==void 0&&y(n,`put/putAll`),n??e[t].defaultTtl}function C(t,n,r,i,a){let o=f(t,n,i);if(o!==r)throw new e(`${a}: key field "${t[n].key}" must be "${String(r)}" but got "${String(o)}" in table "${n}"`)}function w(e,t,n){return e.getMany?e.getMany(t,n):Promise.all(n.map(n=>e.get(t,n)))}function T(e,t,n,r){let i=n[e],a=i.key,o=i.indexes?new Set(i.indexes):void 0;return{deleteMany:async i=>{if(i.length===0)return 0;let a=i.map(t=>f(n,e,t)),o=await t.deleteMany(e,a);return o>0&&r(e),o},getIndexRange:t.getByIndexRange?(n,r)=>t.getByIndexRange(e,n,r):void 0,getRange:t.getByKeyRange?n=>t.getByKeyRange(e,n):void 0,indexedFields:o,keyField:a,source:()=>t.getAll(e)}}function E(e,t,r,i,a){let o=i??((e,t)=>t),s=a?e=>{if(!a.has(e))throw new n(`table "${e}" is not part of this batch scope`)}:e=>{};return{async clear(e){s(e);let n=await t.count(e);await t.clear(e),n>0&&r(e)},async count(e){return s(e),t.count(e)},async delete(e,n){s(e);let i=await t.delete(e,n);return i&&r(e),i},async deleteMany(e,n){s(e);let i=await t.deleteMany(e,n);return i>0&&r(e),i},async entries(n){s(n);let r=await t.getAll(n),i=e[n].key;return r.map(e=>[e[i],e])},async get(e,n){return s(e),t.get(e,n)},async getAll(e){return s(e),t.getAll(e)},async getMany(e,n){return s(e),w(t,e,n)},async getOrDefault(n,i,a,c){s(n);let l=await t.get(n,i);if(l!==void 0)return l;let u=a();return C(e,n,i,u,`getOrDefault: defaultFn()`),await t.put(n,o(n,u),S(e,n,c)),r(n),u},async has(e,n){return s(e),t.has(e,n)},async isEmpty(e){return s(e),await t.count(e)===0},async keys(n,r){if(s(n),r){let i=await t.getAll(n),a=e[n].key;return i.filter(r).map(e=>e[a])}if(t.getAllKeys)return t.getAllKeys(n);let i=await t.getAll(n),a=e[n].key;return i.map(e=>e[a])},async put(n,i,a){s(n),await t.put(n,o(n,i),S(e,n,a)),r(n)},async putAll(n,i,a){if(s(n),i.length===0)return;let c=i.map(e=>o(n,e));await t.putAll(n,c,S(e,n,a)),r(n)},query(n){return s(n),g(T(n,t,e,r))},async update(n,i,a,c){s(n);let l=await t.get(n,i);if(!l)return;let u={...l,...a};return C(e,n,i,u,`update`),await t.put(n,o(n,u),S(e,n,c)),r(n),u},async upsert(n,i,a,c){s(n);let l=a(await t.get(n,i));return C(e,n,i,l,`upsert: fn()`),await t.put(n,o(n,l),S(e,n,c)),r(n),l}}}function D(n,r,i){let{logger:a,onMetrics:o,validators:s}=i??{},c=d(e=>r.getAll(e),a?e=>a.error(e instanceof Error?e:Error(String(e)),`[vault] observer notification failed`):void 0),l=new Map,u=async e=>{if(l.has(e))return l.get(e);let t=await r.count(e);return l.set(e,t),t},f=e=>{l.delete(e),c.notify(e),i?.onMutation?.(e)},p=e=>{l.delete(e),c.notify(e)},m=r.pruneAllExpired?.bind(r),h=r.getRawCount?.bind(r),_=i?.onCrossTabMessage?.(p)??void 0,v=(t,n)=>{let r=s?.[t];if(!r)return n;try{return r.parse(n)}catch(n){throw new e(`validation failed for table "${t}"`,{cause:n})}},y=(e,t,n)=>{if(!o)return n();let r=x();return n().finally(()=>o({duration:x()-r,operation:t,table:e}))};i?.onTransactions?.({notifyMutation:f,validate:v});let b=E(n,r,f,v),S=new AbortController,C=!1,w=()=>{if(C)throw new t},D={async clear(e){w(),await y(e,`clear`,()=>b.clear(e)),l.set(e,0)},async count(e){return w(),y(e,`count`,()=>u(e))},async debug(){w();let e=Object.keys(n);return{tables:await Promise.all(e.map(async e=>{let t=h?await h(e):void 0,n=await r.count(e);return l.set(e,n),{expiredCount:t===void 0?0:Math.max(0,t-n),name:e,recordCount:n}}))}},async delete(e,t){return w(),y(e,`delete`,()=>b.delete(e,t))},async deleteMany(e,t){return w(),y(e,`deleteMany`,()=>b.deleteMany(e,t))},get disposalSignal(){return S.signal},async dispose(){C||(C=!0,S.abort(),_?.(),c.dispose(),await r.dispose?.())},get disposed(){return C},async entries(e){return w(),y(e,`entries`,()=>b.entries(e))},async get(e,t){return w(),y(e,`get`,()=>b.get(e,t))},async getAll(e){return w(),y(e,`getAll`,()=>b.getAll(e))},async getMany(e,t){return w(),y(e,`getMany`,()=>b.getMany(e,t))},async getOrDefault(e,t,n,r){return w(),y(e,`getOrDefault`,()=>b.getOrDefault(e,t,n,r))},async has(e,t){return w(),y(e,`has`,()=>b.has(e,t))},async isEmpty(e){return w(),y(e,`isEmpty`,async()=>await u(e)===0)},async keys(e,t){return w(),y(e,`keys`,()=>b.keys(e,t))},observe(e,t,n){return w(),c.observe(e,t,n)},async pruneExpired(e){w();let t=e??Object.keys(n);if(!e&&m){let e=await m();for(let[t,n]of Object.entries(e))n>0&&l.delete(t);return e}let i=await Promise.all(t.map(async e=>{let t=await r.pruneExpiredInTable(e);return t>0&&l.delete(e),[e,t]}));return Object.fromEntries(i)},async put(e,t,n){w(),await y(e,`put`,()=>b.put(e,t,n))},async putAll(e,t,n){w(),await y(e,`putAll`,()=>b.putAll(e,t,n))},query(e){w();let t=T(e,r,n,f);return g(o?{...t,deleteMany:t.deleteMany?n=>y(e,`queryDelete`,()=>t.deleteMany(n)):void 0,source:()=>y(e,`query`,()=>r.getAll(e))}:t)},async[Symbol.asyncDispose](){await D.dispose()},async update(e,t,n,r){return w(),y(e,`update`,()=>b.update(e,t,n,r))},async upsert(e,t,n,r){return w(),y(e,`upsert`,()=>b.upsert(e,t,n,r))}};return D}function O(e,t){return Object.assign(e,{batch:t})}function k(t){return new Promise((n,r)=>{t.onsuccess=()=>n(t.result),t.onerror=()=>r(t.error??new e(`IndexedDB request failed`))})}function A(t,n,r){return new e(`${n} on "${t}"${r instanceof Error&&r.message?`: ${r.message}`:``}`,{cause:r})}function j(e,t,n){return new Promise((r,i)=>{let a,o;Promise.resolve().then(n).then(e=>{a=e}).catch(t=>{o=t;try{e.abort()}catch{}});let s=(e,n=`transaction failed`)=>{o instanceof Error?i(o):i(A(t,n,o??e))};e.oncomplete=()=>{if(o){s(void 0);return}r(a)},e.onerror=()=>i(A(t,`transaction error`,e.error)),e.onabort=()=>s(e.error,`transaction aborted`)})}async function M(e,t){let n=await k(e.getAll()),r=[];for(let e of n){let n=t(e);n!==void 0&&r.push(n)}return r}async function N(e,t,n,r){let i=e.index(t),a=n.type===`eq`?IDBKeyRange.only(n.value):n.type===`between`?IDBKeyRange.bound(n.lower,n.upper):IDBKeyRange.bound(n.prefix,n.prefix+``),o=await k(i.getAll(a)),s=[];for(let e of o){let t=r(e);t!==void 0&&s.push(t)}return s}async function P(e,t,n){let r=await k(e.get(t));if(r!=null)return n(r)}async function F(e,t,n){return await P(e,t,n)!==void 0}async function I(e,t,n){let r=await F(e,t,n);return await k(e.delete(t)),r}async function L(e,t,n){return t.length===0?0:(await Promise.all(t.map(t=>I(e,t,n)))).filter(Boolean).length}async function R(e,t,n,r,i){await k(e.put(r(n,i),t))}function z(t){return new Promise((n,r)=>{let i=0,a=t.openCursor();a.onerror=()=>r(a.error??new e(`IndexedDB cursor failed during prune`)),a.onsuccess=()=>{let e=a.result;if(!e){n(i);return}let t=b(e.value);(!t||v(t.expiresAt))&&(e.delete(),i+=1),e.continue()}})}function B(t,n){return{[Symbol.asyncIterator](){let r=t.openCursor(),i={type:`idle`},a=e=>{if(i.type===`waiting`){let{resolve:t}=i;i=e.done?{type:`done`}:{type:`idle`},t(e)}else i={result:e,type:`buffered`}};return r.onerror=()=>{let t=r.error??new e(`IndexedDB cursor iteration failed`);if(i.type===`waiting`){let{reject:e}=i;i={type:`done`},e(t)}else i={error:t,type:`error`}},r.onsuccess=()=>{let e=r.result;if(!e){a({done:!0,value:void 0});return}let t=n(e.value);e.continue(),t!==void 0&&a({done:!1,value:t})},{next(){if(i.type===`error`){let{error:e}=i;return i={type:`done`},Promise.reject(e)}if(i.type===`buffered`){let{result:e}=i;return i=e.done?{type:`done`}:{type:`idle`},Promise.resolve(e)}return i.type===`done`?Promise.resolve({done:!0,value:void 0}):new Promise((e,t)=>{i={reject:t,resolve:e,type:`waiting`}})},return(e){return i.type===`waiting`&&i.resolve({done:!0,value:void 0}),i={type:`done`},Promise.resolve({done:!0,value:e})},throw(e){return i.type===`waiting`&&i.reject(e),i={type:`done`},Promise.reject(e)}}}}}function V(e,t,n,r){let i=e=>t.objectStore(e);return{clear:async e=>{await k(i(e).clear())},count:async e=>(await k(i(e).getAll())).filter(e=>n(e)!==void 0).length,delete:(e,t)=>I(i(e),o(t),n),deleteMany:(e,t)=>L(i(e),t.map(o),n),get:(e,t)=>P(i(e),o(t),n),getAll:e=>M(i(e),n),getByIndexRange:(e,t,r)=>N(i(e),t,r,n),getMany:(e,t)=>Promise.all(t.map(t=>P(i(e),o(t),n))),has:(e,t)=>F(i(e),o(t),n),pruneExpiredInTable:e=>z(i(e)),put(t,n,a){return R(i(t),o(f(e,t,n)),n,r,a)},putAll(t,n,a){return Promise.all(n.map(n=>R(i(t),o(f(e,t,n)),n,r,a))).then(()=>void 0)}}}function H(n){let{logger:r,migrate:a,name:s,onMetrics:c,schema:l,validators:u,version:d=1}=n;if(!Number.isInteger(d)||d<1)throw new e(`createIndexedDB: version must be a positive integer, got ${String(d)}`);let p=e=>{let t=b(e);return!t||v(t.expiresAt)?void 0:t.value},m=(e,t)=>t===void 0?{value:e}:{expiresAt:Date.now()+t,value:e},h=typeof BroadcastChannel<`u`?new BroadcastChannel(`vault:${s}`):void 0;!h&&r&&r.error(`[vault] BroadcastChannel unavailable — cross-tab sync disabled for "${s}"`);let g=null,_=null,y=!1,x=(e,t)=>{for(let[n,r]of Object.entries(l)){let i;i=e.objectStoreNames.contains(n)?t.objectStore(n):e.createObjectStore(n);let a=r.indexes??[];for(let e of a)i.indexNames.contains(e)||i.createIndex(e,`value.${e}`)}},S=async()=>(_||=new Promise((t,n)=>{let r=indexedDB.open(s,d);r.onupgradeneeded=e=>{let t=r.result,o=r.transaction;if(a)try{a({db:t,newVersion:e.newVersion??null,oldVersion:e.oldVersion,tx:o})}catch(e){try{o.abort()}catch{}n(new i(`migration failed for "${s}"`,{cause:e}));return}x(t,o)},r.onsuccess=()=>{if(y){r.result.close(),t();return}let e=r.result;e.onversionchange=()=>{e.close(),g=null,_=null},g=e,t()},r.onerror=()=>{_=null,n(new e(`failed to open "${s}"`,{cause:r.error}))}}),_),C=async(e,n,r)=>{if(y||(g||await S(),!g))throw new t(`"${s}" is disposed`);let i=String(e),a=g.transaction(i,n);return j(a,`${s}/${i}`,()=>r(a.objectStore(i)))},w=async()=>{if(y||(g||await S(),!g))throw new t(`"${s}" is disposed`);return g},T=e=>{h?.postMessage({table:String(e)})},A={clear:e=>C(e,`readwrite`,e=>k(e.clear()).then(()=>void 0)),count:e=>C(e,`readonly`,async e=>(await k(e.getAll())).filter(e=>p(e)!==void 0).length),delete:(e,t)=>C(e,`readwrite`,e=>I(e,o(t),p)),deleteMany:(e,t)=>t.length===0?Promise.resolve(0):C(e,`readwrite`,e=>L(e,t.map(o),p)),async dispose(){y=!0,h?.close(),_&&await _.catch(()=>{}),g?.close(),g=null,_=null},get:(e,t)=>C(e,`readonly`,e=>P(e,o(t),p)),getAll:e=>C(e,`readonly`,e=>M(e,p)),getAllKeys:e=>C(e,`readonly`,async t=>{let n=await M(t,p),r=l[e].key;return n.map(e=>e[r])}),getByIndexRange:(e,t,n)=>C(e,`readonly`,e=>N(e,t,n,p)),getMany:(e,t)=>t.length===0?Promise.resolve([]):C(e,`readonly`,e=>Promise.all(t.map(t=>P(e,o(t),p)))),getRawCount:e=>C(e,`readonly`,e=>k(e.count())),has:(e,t)=>C(e,`readonly`,e=>F(e,o(t),p)),async pruneAllExpired(){let e=await w(),t=Object.keys(l),n=e.transaction(t,`readwrite`),r=await j(n,`${s}/pruneAll`,()=>Promise.all(t.map(async e=>[e,await z(n.objectStore(e))])));return Object.fromEntries(r)},pruneExpiredInTable:e=>C(e,`readwrite`,e=>z(e)),put(e,t,n){let r=o(f(l,e,t));return C(e,`readwrite`,e=>R(e,r,t,m,n))},putAll(e,t,n){return C(e,`readwrite`,r=>Promise.all(t.map(t=>R(r,o(f(l,e,t)),t,m,n))).then(()=>void 0))}},H=async(e,t,n,r)=>{let i=(await w()).transaction([...e],`readwrite`),a=new Set,o=V(l,i,p,m),c=new Set(e),u=E(l,o,e=>a.add(e),r,c),d=await j(i,s,()=>t(u));for(let e of a)n(e);return d},U,W={...D(l,A,{logger:r,onCrossTabMessage(e){if(h)return h.onmessage=t=>{let n=t.data?.table;!n||!Object.hasOwn(l,n)||e(n)},()=>{h.onmessage=null}},onMetrics:c,onMutation:T,onTransactions:e=>{U=(t,n)=>H(t,n,e.notifyMutation,e.validate)},schema:l,validators:u}),iterate(e){if(y)throw new t(`"${s}" is disposed`);let n=async()=>{if(g||await S(),!g||y)throw new t(`"${s}" is disposed`);return B(g.transaction(String(e),`readonly`).objectStore(String(e)),p)},r,i=()=>n().then(e=>(r=e[Symbol.asyncIterator](),r));return{[Symbol.asyncIterator](){return{next(){return r?r.next():i().then(e=>e.next())},return(e){return r?r.return?.(e)??Promise.resolve({done:!0,value:e}):Promise.resolve({done:!0,value:e})},throw(e){return r?r.throw?.(e)??Promise.reject(e):Promise.reject(e)}}}}}};if(!U)throw new e(`IndexedDB transaction capability was not initialized`);return O(W,U)}function U(e){if(typeof e!=`object`||!e)return!1;let t=e;if(typeof t.table!=`string`||typeof t.type!=`string`||t.table===`__proto__`||t.table===`constructor`||t.table===`prototype`)return!1;switch(t.type){case`clear`:return!0;case`delete`:return typeof t.key==`string`;case`deleteMany`:return Array.isArray(t.keys)&&t.keys.every(e=>typeof e==`string`);case`put`:return typeof t.key==`string`&&b(t.stored)!==void 0;case`putAll`:return Array.isArray(t.entries)&&t.entries.every(e=>typeof e==`object`&&!!e&&typeof e.key==`string`&&b(e.stored)!==void 0);default:return!1}}function W(e){let{logger:t,name:n,onMetrics:r,schema:i,validators:a}=e,s=new Map(Object.keys(i).map(e=>[e,new Map])),c=e=>s.get(e),l=n!==void 0&&typeof BroadcastChannel<`u`?new BroadcastChannel(`vault-memory:${n}`):void 0,u={async clear(e){c(e).clear(),l?.postMessage({table:e,type:`clear`})},async count(e){let t=c(e),n=0;for(let[e,r]of t){let i=b(r);!i||v(i.expiresAt)?t.delete(e):n+=1}return n},async delete(e,t){let n=c(e),r=o(t),i=b(n.get(r));n.delete(r);let a=i!==void 0&&!v(i.expiresAt);return a&&l?.postMessage({key:r,table:e,type:`delete`}),a},async deleteMany(e,t){let n=0,r=[];for(let i of t){let t=o(i),a=b(c(e).get(t));c(e).delete(t),a!==void 0&&!v(a.expiresAt)&&(n+=1,r.push(t))}return r.length>0&&l?.postMessage({keys:r,table:e,type:`deleteMany`}),n},dispose:l?async()=>l.close():void 0,async get(e,t){let n=c(e),r=o(t),i=b(n.get(r));if(!i||v(i.expiresAt)){n.delete(r);return}return i.value},async getAll(e){let t=c(e),n=[];for(let[e,r]of t){let i=b(r);!i||v(i.expiresAt)?t.delete(e):n.push(i.value)}return n},async getRawCount(e){return c(e).size},async has(e,t){return await u.get(e,t)!==void 0},async pruneExpiredInTable(e){let t=c(e),n=0;for(let[e,r]of t){let i=b(r);(!i||v(i.expiresAt))&&(t.delete(e),n+=1)}return n},async put(e,t,n){let r=o(f(i,e,t)),a=n===void 0?{value:t}:{expiresAt:Date.now()+n,value:t};c(e).set(r,a),l?.postMessage({key:r,stored:a,table:e,type:`put`})},async putAll(e,t,n){let r=n===void 0?void 0:Date.now()+n,a=[];for(let n of t){let t=o(f(i,e,n)),s=r===void 0?{value:n}:{expiresAt:r,value:n};c(e).set(t,s),a.push({key:t,stored:s})}a.length>0&&l?.postMessage({entries:a,table:e,type:`putAll`})}};return D(i,u,{logger:t,onCrossTabMessage:l?e=>(l.onmessage=t=>{if(!U(t.data))return;let n=t.data;if(!s.has(n.table))return;let r=c(n.table),l=(e,t)=>{let s=b(t),c=i[n.table]?.key,l=a?.[n.table];if(!s||!c)return!1;try{let t=l?l.parse(s.value):s.value;return o(t[c])===e&&(r.set(e,s.expiresAt===void 0?{value:t}:{expiresAt:s.expiresAt,value:t}),!0)}catch{return!1}};switch(n.type){case`clear`:r.clear(),e(n.table);break;case`delete`:r.delete(n.key),e(n.table);break;case`deleteMany`:for(let e of n.keys)r.delete(e);e(n.table);break;case`put`:l(n.key,n.stored)&&e(n.table);break;case`putAll`:n.entries.some(e=>l(e.key,e.stored))&&e(n.table)}},()=>{l.onmessage=null}):void 0,onMetrics:r,schema:i,validators:a})}var G=new Set([`QuotaExceededError`,`NS_ERROR_DOM_QUOTA_REACHED`]);function K(t){let{getStorage:n,logger:i,name:a,onMetrics:o,onQuotaExceeded:d,schema:p,storageLabel:m,validators:h}=t,g;try{g=n()}catch(t){throw new e(`${m} is not available in this environment (private browsing or sandboxed iframe?)`,{cause:t})}let _=()=>g,y=new Map(Object.keys(p).map(e=>[e,l(a,e)])),x=t=>{let n=y.get(t);if(!n)throw new e(`table "${t}" not in schema`);return n},S=(e,t,n)=>{try{_().setItem(t,JSON.stringify(n))}catch(t){if(t instanceof DOMException&&G.has(t.name)){let n=new r(`${m} quota exceeded while writing record`,{cause:t});if(d?.(e,n)===`ignore`)return;throw n}throw t}},C=new Set;(()=>{let e=s(a);for(let t=0;t<g.length;t++){let n=g.key(t);n!==null&&n.startsWith(e)&&C.add(n)}})();let w=e=>{let t=_().getItem(e);if(t)try{let e=b(JSON.parse(t));return!e||v(e.expiresAt)?void 0:e.value}catch{return}},T=e=>{_().removeItem(e),C.delete(e)};return D(p,{async clear(e){let t=_(),n=x(e),r=[];for(let e of C)e.startsWith(n)&&r.push(e);for(let e of r)t.removeItem(e),C.delete(e)},async count(e){let t=x(e),n=[],r=0;for(let e of C)e.startsWith(t)&&(w(e)===void 0?n.push(e):r+=1);for(let e of n)T(e);return r},async delete(e,t){let n=c(a,e,t);return w(n)===void 0?(C.has(n)&&T(n),!1):(T(n),!0)},async deleteMany(e,t){let n=0;for(let r of t){let t=c(a,e,r);w(t)===void 0?C.has(t)&&T(t):(T(t),n+=1)}return n},async get(e,t){let n=c(a,e,t),r=w(n);return r===void 0&&C.has(n)&&T(n),r},async getAll(e){let t=[],n=[],r=x(e);for(let e of C){if(!e.startsWith(r))continue;let i=w(e);if(i===void 0){n.push(e);continue}t.push(i)}for(let e of n)T(e);return t},async getAllKeys(e){let t=x(e),n=[],r=[];for(let i of C){if(!i.startsWith(t))continue;let a=w(i);if(a===void 0){r.push(i);continue}n.push(a[p[e].key])}for(let e of r)T(e);return n},async getRawCount(e){let t=x(e),n=0;for(let e of C)e.startsWith(t)&&(n+=1);return n},async has(e,t){let n=c(a,e,t),r=w(n);return r===void 0&&C.has(n)&&T(n),r!==void 0},async pruneExpiredInTable(e){let t=x(e),n=[];for(let e of C){if(!e.startsWith(t))continue;let r=_().getItem(e);if(r===null){n.push(e);continue}try{let t=b(JSON.parse(r));(!t||v(t.expiresAt))&&n.push(e)}catch{n.push(e)}}for(let e of n)T(e);return n.length},async put(e,t,n){let r=c(a,e,f(p,e,t)),i=n===void 0?void 0:Date.now()+n;S(e,r,i===void 0?{value:t}:{expiresAt:i,value:t}),C.add(r)},async putAll(e,t,n){let r=n===void 0?void 0:Date.now()+n;for(let n of t){let t=c(a,e,f(p,e,n));S(e,t,r===void 0?{value:n}:{expiresAt:r,value:n}),C.add(t)}}},{logger:i,onCrossTabMessage(e){if(typeof window>`u`||typeof window.addEventListener!=`function`)return;let t=t=>{if(t.storageArea&&t.storageArea!==g)return;if(t.key===null){C.clear();for(let t of Object.keys(p))e(t);return}let n=u(a,t.key);n&&Object.hasOwn(p,n)&&(t.newValue===null?C.delete(t.key):C.add(t.key),e(n))};return window.addEventListener(`storage`,t),()=>window.removeEventListener(`storage`,t)},onMetrics:o,schema:p,validators:h})}function q(e){return K({...e,getStorage:()=>typeof window<`u`?window.localStorage:localStorage,storageLabel:`localStorage`})}function J(e){return K({...e,getStorage:()=>typeof window<`u`?window.sessionStorage:sessionStorage,storageLabel:`sessionStorage`})}function Y(e){return({db:t,tx:n})=>{for(let r of e)switch(r.type){case`addIndex`:{let e=n.objectStore(r.table);e.indexNames.contains(r.field)||e.createIndex(r.field,`value.${r.field}`);break}case`addTable`:t.objectStoreNames.contains(r.name)||t.createObjectStore(r.name);break;case`removeIndex`:{let e=n.objectStore(r.table);e.indexNames.contains(r.field)&&e.deleteIndex(r.field);break}case`removeTable`:t.objectStoreNames.contains(r.name)&&t.deleteObjectStore(r.name)}}}function X(n,r){if(!Number.isFinite(r.interval)||r.interval<=0)throw new e(`scheduleExpiredPrune: interval must be a finite positive number`);let i=!0,a=()=>{i=!1,clearInterval(o)};r.signal?.addEventListener(`abort`,a,{once:!0});let o=setInterval(()=>{i&&n.pruneExpired().catch(e=>{e instanceof t?(i=!1,clearInterval(o)):r.onError?r.onError(e):`${String(e)}`})},r.interval);return a}function Z(t){function n(t){return{...t,index:r=>{let i=t.indexes??[];if(i.includes(r))throw new e(`table index "${r}" is already registered`);return n({...t,indexes:[...i,r]})},ttl:e=>(y(e,`table.ttl`),n({...t,defaultTtl:e}))}}return n({key:t})}exports.VaultDisposedError=t,exports.VaultError=e,exports.VaultMigrationError=i,exports.VaultQuotaError=r,exports.VaultScopeError=n,exports.createIndexedDB=H,exports.createLocalStorage=q,exports.createMemory=W,exports.createSessionStorage=J,exports.defineMigration=Y,exports.isExpired=v,exports.scheduleExpiredPrune=X,exports.table=Z,exports.ttl=_;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=class e extends Error{constructor(e,t){super(e,t),this.name=new.target.name,Object.setPrototypeOf(this,new.target.prototype)}static is(t){return t instanceof e}},t=class extends e{constructor(e=`adapter is disposed`,t){super(e,t)}},n=class extends e{},r=class extends e{},i=class extends e{};function a(n,r){if(!Number.isFinite(r.interval)||r.interval<=0)throw new e(`scheduleExpiredPrune: interval must be a finite positive number`);let i=!0,a=()=>{i=!1,clearInterval(o)};r.signal?.addEventListener(`abort`,a,{once:!0});let o=setInterval(()=>{i&&n.pruneExpired().catch(e=>{e instanceof t?(i=!1,clearInterval(o)):r.onError?r.onError(e):`${String(e)}`})},r.interval);return a}var o={days:e=>c(c(e,`ttl.days`)*864e5,`ttl.days (result)`),hours:e=>c(c(e,`ttl.hours`)*36e5,`ttl.hours (result)`),minutes:e=>c(c(e,`ttl.minutes`)*6e4,`ttl.minutes (result)`),ms:e=>c(e,`ttl.ms`),seconds:e=>c(c(e,`ttl.seconds`)*1e3,`ttl.seconds (result)`)};function s(e){return e!==void 0&&Date.now()>=e}function c(t,n){if(!Number.isFinite(t)||t<=0)throw new e(`${n} expected a finite positive number, received ${String(t)}`);return t}function l(t){function n(t){return{...t,index:r=>{let i=t.indexes??[];if(i.includes(r))throw new e(`table index "${r}" is already registered`);return n({...t,indexes:[...i,r]})},ttl:e=>(c(e,`table.ttl`),n({...t,defaultTtl:e}))}}return n({key:t})}exports.VaultDisposedError=t,exports.VaultError=e,exports.VaultMigrationError=i,exports.VaultQuotaError=r,exports.VaultScopeError=n,exports.isExpired=s,exports.scheduleExpiredPrune=a,exports.table=l,exports.ttl=o;
|
|
2
2
|
//# sourceMappingURL=vault.cjs.map
|