@actdim/utico 0.9.5 → 0.9.7

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.
@@ -1 +1 @@
1
- {"version":3,"file":"dataStore.es.js","sources":["../../src/store/dataStore.ts"],"sourcesContent":["import Dexie, { PromiseExtended } from \"dexie\"; // https://dexie.org/docs/Typescript\r\n\r\nconst registryTableName = \"registry\"; // \"catalog\"\r\nconst dataTableName = \"data\";\r\n\r\nexport interface IDataEntry {\r\n id: string; // should be called \"id\" for Dexie!\r\n createdAt: number;\r\n updatedAt: number; // lastModified\r\n accessedAt: number; // lastAccessed/lastAccessTime\r\n slidingExpiration?: number;\r\n // absoluteExpiration?: number;\r\n expiresAt: number; // expiryTime\r\n}\r\n// isValid?\r\n// tags?\r\n\r\n// IDataRecord\r\nexport interface IDataItem {\r\n readonly id: string;\r\n readonly value: any;\r\n}\r\n\r\n// (registry/catalog)PropertyNames\r\nconst entryPropertyNames: (keyof IDataEntry)[] = [\"id\", \"createdAt\", \"accessedAt\", \"updatedAt\", \"expiresAt\"];\r\n\r\nconst dataItemPropertyNames: (keyof IDataItem)[] = [\"id\", \"value\"];\r\n\r\nexport class DataEntry implements IDataEntry {\r\n id: string;\r\n createdAt: number;\r\n updatedAt: number;\r\n accessedAt: number;\r\n expiresAt: number;\r\n\r\n constructor(src: Partial<DataEntry>) {\r\n Object.assign(this, src);\r\n // Define navigation properties.\r\n // Making them non-enumerable will prevent them from being handled by indexedDB\r\n // when doing put() or add().\r\n // Object.defineProperties(this, {\r\n // ...: { value: [], enumerable: false, writable: true }\r\n // });\r\n }\r\n}\r\n\r\n// DataRecord\r\nexport class DataItem implements IDataItem {\r\n id: string;\r\n value: any;\r\n\r\n constructor(src: Partial<DataItem>) {\r\n Object.assign(this, src);\r\n }\r\n\r\n // constructor(key: string, value: string) {\r\n // this.key = key;\r\n // this.value = value;\r\n // }\r\n}\r\n\r\nexport class DataStore extends Dexie {\r\n // catalog/entries\r\n registry: Dexie.Table<IDataEntry, string>;\r\n data: Dexie.Table<IDataItem, string>;\r\n\r\n constructor(name: string) {\r\n // navigator.storage.estimate()\r\n // navigator.webkitTemporaryStorage.queryUsageAndQuota()\r\n\r\n if (!name) {\r\n throw new Error(\"Invalid database name\"); // cannot be empty\r\n }\r\n\r\n super(name); // {autoOpen: false}\r\n\r\n const db = this;\r\n\r\n // Define tables and indexes \r\n\r\n db.version(1).stores({\r\n [registryTableName]: entryPropertyNames.join(\", \"),\r\n [dataTableName]: dataItemPropertyNames.join(\", \")\r\n });\r\n\r\n // db.version(2).stores({\r\n // \t// ...\r\n // }).upgrade(trans => {\r\n // \treturn trans.table(dataTableName).toCollection().modify((entry: IDataEntry) => {\r\n // \t\t// ...\r\n // \t});\r\n // });\r\n\r\n this.registry = db.table(registryTableName);\r\n this.data = db.table(dataTableName);\r\n\r\n db.registry.hook(\"deleting\", async (key, obj, transaction) => {\r\n await transaction.table(dataTableName).delete(key);\r\n });\r\n\r\n // db.registry.mapToClass(DataEntry);\r\n // db.data.mapToClass(DataItem);\r\n\r\n // db.on('populate', () => db.registry.bulkAdd([\r\n // \t// ...\r\n // ]));\r\n }\r\n\r\n static delete(name: string) {\r\n return Dexie.delete(name);\r\n }\r\n}\r\n"],"names":["registryTableName","dataTableName","entryPropertyNames","dataItemPropertyNames","DataEntry","src","DataItem","DataStore","Dexie","name","db","key","obj","transaction"],"mappings":";AAEA,MAAMA,IAAoB,YACpBC,IAAgB,QAqBhBC,IAA2C,CAAC,MAAM,aAAa,cAAc,aAAa,WAAW,GAErGC,IAA6C,CAAC,MAAM,OAAO;AAE1D,MAAMC,EAAgC;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA,YAAYC,GAAyB;AACjC,WAAO,OAAO,MAAMA,CAAG;AAAA,EAO3B;AACJ;AAGO,MAAMC,EAA8B;AAAA,EACvC;AAAA,EACA;AAAA,EAEA,YAAYD,GAAwB;AAChC,WAAO,OAAO,MAAMA,CAAG;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA;AAMJ;AAEO,MAAME,UAAkBC,EAAM;AAAA;AAAA,EAEjC;AAAA,EACA;AAAA,EAEA,YAAYC,GAAc;AAItB,QAAI,CAACA;AACD,YAAM,IAAI,MAAM,uBAAuB;AAG3C,UAAMA,CAAI;AAEV,UAAMC,IAAK;AAIX,IAAAA,EAAG,QAAQ,CAAC,EAAE,OAAO;AAAA,MACjB,CAACV,CAAiB,GAAGE,EAAmB,KAAK,IAAI;AAAA,MACjD,CAACD,CAAa,GAAGE,EAAsB,KAAK,IAAI;AAAA,IAAA,CACnD,GAUD,KAAK,WAAWO,EAAG,MAAMV,CAAiB,GAC1C,KAAK,OAAOU,EAAG,MAAMT,CAAa,GAElCS,EAAG,SAAS,KAAK,YAAY,OAAOC,GAAKC,GAAKC,MAAgB;AAC1D,YAAMA,EAAY,MAAMZ,CAAa,EAAE,OAAOU,CAAG;AAAA,IACrD,CAAC;AAAA,EAQL;AAAA,EAEA,OAAO,OAAOF,GAAc;AACxB,WAAOD,EAAM,OAAOC,CAAI;AAAA,EAC5B;AACJ;"}
1
+ {"version":3,"file":"dataStore.es.js","sources":["../../src/store/dataStore.ts"],"sourcesContent":["import { AsyncMutex } from \"@/asyncMutex\";\r\nimport { CommonPartFromSchema } from \"@/typeCore\";\r\nimport { EntryTypes, IDataItem, StoreDb } from \"./storeDb\";\r\nimport { StructEventTarget } from \"@/structEvent\";\r\nimport Dexie, { TransactionMode } from \"dexie\";\r\nimport { v4 as uuid } from \"uuid\";\r\nimport { strictSatisfies } from \"@/typeUtils\";\r\n\r\nconst mutex = new AsyncMutex();\r\n\r\n// BaseEntry/EntryBase\r\ntype CommonEntry = CommonPartFromSchema<EntryTypes>;\r\n\r\n// TODO: update\r\nexport type IDataStoreBase = {\r\n openAsync(): PromiseLike<void>;\r\n}\r\n\r\nexport class DataStore<TEntryTemplate extends keyof EntryTypes, TEventStruct extends Record<string, any> = unknown> extends StructEventTarget<TEventStruct> implements IDataStoreBase {\r\n\r\n protected _db: StoreDb<TEntryTemplate>;\r\n\r\n protected _isDisposed: boolean;\r\n\r\n protected static async $deleteAsync(name: string) {\r\n try {\r\n await mutex.dispatch(async () => {\r\n if (await StoreDb.exists(name)) {\r\n await StoreDb.delete(name);\r\n }\r\n });\r\n } catch (err) {\r\n if (err instanceof Dexie.InvalidStateError || err instanceof Dexie.VersionError) {\r\n console.warn(`[DataStore] delete(${name}) failed:`, err);\r\n } else {\r\n throw err;\r\n }\r\n }\r\n }\r\n\r\n protected static $existsAsync(name: string) {\r\n return Dexie.exists(name);\r\n }\r\n\r\n protected static async $openAsync<T extends IDataStoreBase>(name: string, factory: (name: string) => T) {\r\n return await mutex.dispatch(async () => {\r\n const store = factory(name);\r\n await store.openAsync();\r\n return store;\r\n });\r\n }\r\n\r\n constructor(name: string, entryTemplate: TEntryTemplate) {\r\n super();\r\n if (!name) {\r\n throw new Error(\"Name cannot be empty\");\r\n }\r\n this._isDisposed = false;\r\n this._db = new StoreDb(name, entryTemplate);\r\n }\r\n\r\n async openAsync() {\r\n if (!this._db.isOpen()) {\r\n try {\r\n await this._db.open();\r\n } catch (err) {\r\n if (err instanceof Dexie.OpenFailedError) {\r\n await this._db.open();\r\n } else {\r\n throw err;\r\n }\r\n }\r\n // TODO: log (this._db.verno, this._db._dbSchema etc)\r\n }\r\n }\r\n\r\n dispose() {\r\n if (!this._isDisposed) {\r\n if (this._db) {\r\n // this.exec(async () => {\r\n // \t// ...\r\n // }).then(() => {\r\n // \tthis._db = null;\r\n // });\r\n if (this._db.isOpen()) {\r\n this._db.close();\r\n }\r\n this._db = null;\r\n }\r\n this._isDisposed = true;\r\n }\r\n }\r\n\r\n protected async $execAsync<T>(action: () => Promise<T>, transactionMode: TransactionMode = \"rw\") {\r\n await this.openAsync();\r\n try {\r\n const result = await this._db.transaction(transactionMode, this._db.registry, this._db.data, async () => {\r\n return await action();\r\n });\r\n return result;\r\n } catch (err) {\r\n if (this._db.isOpen()) {\r\n // this._db.close(); // generally speaking: we don't (never) need to close a connection\r\n }\r\n throw err;\r\n }\r\n }\r\n\r\n async getKeysAsync() {\r\n return await this._db.registry.filter((_) => true).primaryKeys();\r\n }\r\n\r\n async getAsync(key: string): Promise<Readonly<EntryTypes[TEntryTemplate] & IDataItem>> {\r\n return await this.$execAsync(async () => {\r\n const entry = await this._db.registry.get(key);\r\n // const entry = await this._db.registry.where(keyOf<IDataEntry>(\"id\")).equals(key).first();\r\n if (entry) {\r\n const data = await this._db.data.get(key);\r\n // const data = await this._db.data.where(keyOf<IDataEntry>(\"id\")).equals(key).first();\r\n return { ...entry, ...data };\r\n }\r\n return null;\r\n }, \"readonly\");\r\n }\r\n\r\n // getMany\r\n async bulkGetAsync(ids: string[]): Promise<{ [key: string]: Readonly<EntryTypes[TEntryTemplate] & IDataItem> }> {\r\n const result: { [key: string]: Readonly<EntryTypes[TEntryTemplate] & IDataItem> } = {};\r\n return await this.$execAsync(async () => {\r\n // const entries = await this._db.registry.where(keyOf<IDataEntry>(\"id\")).anyOf(ids).toArray();\r\n const entries = await this._db.registry.bulkGet(ids);\r\n const entryMap: { [key: string]: EntryTypes[TEntryTemplate] } = entries.reduce((map, entry, i) => {\r\n map[entry.id] = entry;\r\n return map;\r\n }, {});\r\n\r\n // const dataItems = this._db.data.where(keyOf<IDataEntry>(\"id\")).anyOf(ids);\r\n // await dataItems.each((dataItem) => {\r\n // result[dataItem.id] = { ...entryMap[dataItem.id], ...dataItem };\r\n // delete entryMap[dataItem.id];\r\n // });\r\n\r\n const dataItems = await this._db.data.bulkGet(ids);\r\n for (const dataItem of dataItems) {\r\n result[dataItem.id] = { ...entryMap[dataItem.id], ...dataItem };\r\n delete entryMap[dataItem.id];\r\n }\r\n\r\n // TODO: update data entry \r\n // accessedAt,\r\n // updatedAt,\r\n // expiresAt // for sliding expiration\r\n\r\n for (const key of Object.keys(entryMap)) {\r\n // abandoned/orphaned entries:\r\n let dataItem: IDataItem = {\r\n id: key,\r\n value: undefined\r\n }\r\n result[key] = { ...entryMap[key], ...dataItem };\r\n // Object.defineProperty(result[key], keyOf<IDataItem>(\"value\"), {\r\n // writable: false,\r\n // get: function () {\r\n // throw new Error(\"Not found\");\r\n // }\r\n // });\r\n }\r\n\r\n return result;\r\n }, \"readonly\");\r\n }\r\n\r\n async containsAsync(key: string) {\r\n return await this.$execAsync(async () => {\r\n const entry = await this._db.registry.get(key);\r\n // const entry = await this._db.registry.where(keyOf<IDataEntry>(\"id\")).equals(key).first();\r\n return entry != undefined;\r\n });\r\n }\r\n\r\n async deleteAsync(key: string) {\r\n await this.$execAsync(async () => {\r\n await this._db.registry.delete(key);\r\n await this._db.data.delete(key);\r\n });\r\n }\r\n\r\n // deleteManyAsync\r\n async bulkDeleteAsync(keys: string[]) {\r\n await this.$execAsync(async () => {\r\n await this._db.registry.bulkDelete(keys);\r\n await this._db.data.bulkDelete(keys);\r\n });\r\n }\r\n\r\n // upsertAsync\r\n protected async $setAsync(key: string, value: any) {\r\n return await this.$execAsync(async () => {\r\n let entry;\r\n const now = new Date().getTime();\r\n if (key) {\r\n entry = await this._db.registry.get(key);\r\n // entry = await this._db.registry.where(keyOf<IDataEntry>(\"id\")).equals(key).first();\r\n } else {\r\n key = uuid();\r\n }\r\n await this._db.registry.put(strictSatisfies<CommonEntry>()({\r\n id: key,\r\n createdAt: entry ? entry.createdAt : now,\r\n updatedAt: now\r\n }));\r\n await this._db.data.put({\r\n id: key,\r\n value: value\r\n });\r\n });\r\n }\r\n\r\n // getOrAddAsync\r\n protected async $getOrSetAsync(key: string, factory: (key: string) => any,) {\r\n return await this.$execAsync(async () => {\r\n if (!(await this.containsAsync(key))) {\r\n await this.$setAsync(key, factory(key));\r\n }\r\n return await this.getAsync(key);\r\n });\r\n }\r\n\r\n // clearAllAsync/evictAllAsync\r\n async clearAsync() {\r\n await this.$execAsync(async () => {\r\n await this._db.registry.clear();\r\n await this._db.data.clear();\r\n });\r\n }\r\n\r\n // TODO: support bulkSetAsync\r\n}"],"names":["mutex","AsyncMutex","DataStore","StructEventTarget","name","StoreDb","err","Dexie","factory","store","entryTemplate","action","transactionMode","_","key","entry","data","ids","result","entryMap","map","i","dataItems","dataItem","keys","value","now","uuid","strictSatisfies"],"mappings":";;;;;;AAQA,MAAMA,IAAQ,IAAIC,EAAA;AAUX,MAAMC,UAA+GC,EAA0D;AAAA,EAExK;AAAA,EAEA;AAAA,EAEV,aAAuB,aAAaC,GAAc;AAC9C,QAAI;AACA,YAAMJ,EAAM,SAAS,YAAY;AAC7B,QAAI,MAAMK,EAAQ,OAAOD,CAAI,KACzB,MAAMC,EAAQ,OAAOD,CAAI;AAAA,MAEjC,CAAC;AAAA,IACL,SAASE,GAAK;AACV,UAAIA,aAAeC,EAAM,qBAAqBD,aAAeC,EAAM;AAC/D,gBAAQ,KAAK,sBAAsBH,CAAI,aAAaE,CAAG;AAAA;AAEvD,cAAMA;AAAA,IAEd;AAAA,EACJ;AAAA,EAEA,OAAiB,aAAaF,GAAc;AACxC,WAAOG,EAAM,OAAOH,CAAI;AAAA,EAC5B;AAAA,EAEA,aAAuB,WAAqCA,GAAcI,GAA8B;AACpG,WAAO,MAAMR,EAAM,SAAS,YAAY;AACpC,YAAMS,IAAQD,EAAQJ,CAAI;AAC1B,mBAAMK,EAAM,UAAA,GACLA;AAAA,IACX,CAAC;AAAA,EACL;AAAA,EAEA,YAAYL,GAAcM,GAA+B;AAErD,QADA,MAAA,GACI,CAACN;AACD,YAAM,IAAI,MAAM,sBAAsB;AAE1C,SAAK,cAAc,IACnB,KAAK,MAAM,IAAIC,EAAQD,GAAMM,CAAa;AAAA,EAC9C;AAAA,EAEA,MAAM,YAAY;AACd,QAAI,CAAC,KAAK,IAAI;AACV,UAAI;AACA,cAAM,KAAK,IAAI,KAAA;AAAA,MACnB,SAASJ,GAAK;AACV,YAAIA,aAAeC,EAAM;AACrB,gBAAM,KAAK,IAAI,KAAA;AAAA;AAEf,gBAAMD;AAAA,MAEd;AAAA,EAGR;AAAA,EAEA,UAAU;AACN,IAAK,KAAK,gBACF,KAAK,QAMD,KAAK,IAAI,YACT,KAAK,IAAI,MAAA,GAEb,KAAK,MAAM,OAEf,KAAK,cAAc;AAAA,EAE3B;AAAA,EAEA,MAAgB,WAAcK,GAA0BC,IAAmC,MAAM;AAC7F,UAAM,KAAK,UAAA;AACX,QAAI;AAIA,aAHe,MAAM,KAAK,IAAI,YAAYA,GAAiB,KAAK,IAAI,UAAU,KAAK,IAAI,MAAM,YAClF,MAAMD,EAAA,CAChB;AAAA,IAEL,SAASL,GAAK;AACV,YAAI,KAAK,IAAI,UAGPA;AAAA,IACV;AAAA,EACJ;AAAA,EAEA,MAAM,eAAe;AACjB,WAAO,MAAM,KAAK,IAAI,SAAS,OAAO,CAACO,MAAM,EAAI,EAAE,YAAA;AAAA,EACvD;AAAA,EAEA,MAAM,SAASC,GAAwE;AACnF,WAAO,MAAM,KAAK,WAAW,YAAY;AACrC,YAAMC,IAAQ,MAAM,KAAK,IAAI,SAAS,IAAID,CAAG;AAE7C,UAAIC,GAAO;AACP,cAAMC,IAAO,MAAM,KAAK,IAAI,KAAK,IAAIF,CAAG;AAExC,eAAO,EAAE,GAAGC,GAAO,GAAGC,EAAA;AAAA,MAC1B;AACA,aAAO;AAAA,IACX,GAAG,UAAU;AAAA,EACjB;AAAA;AAAA,EAGA,MAAM,aAAaC,GAA6F;AAC5G,UAAMC,IAA8E,CAAA;AACpF,WAAO,MAAM,KAAK,WAAW,YAAY;AAGrC,YAAMC,KADU,MAAM,KAAK,IAAI,SAAS,QAAQF,CAAG,GACqB,OAAO,CAACG,GAAKL,GAAOM,OACxFD,EAAIL,EAAM,EAAE,IAAIA,GACTK,IACR,CAAA,CAAE,GAQCE,IAAY,MAAM,KAAK,IAAI,KAAK,QAAQL,CAAG;AACjD,iBAAWM,KAAYD;AACnB,QAAAJ,EAAOK,EAAS,EAAE,IAAI,EAAE,GAAGJ,EAASI,EAAS,EAAE,GAAG,GAAGA,EAAA,GACrD,OAAOJ,EAASI,EAAS,EAAE;AAQ/B,iBAAWT,KAAO,OAAO,KAAKK,CAAQ,GAAG;AAErC,YAAII,IAAsB;AAAA,UACtB,IAAIT;AAAA,UACJ,OAAO;AAAA,QAAA;AAEX,QAAAI,EAAOJ,CAAG,IAAI,EAAE,GAAGK,EAASL,CAAG,GAAG,GAAGS,EAAA;AAAA,MAOzC;AAEA,aAAOL;AAAA,IACX,GAAG,UAAU;AAAA,EACjB;AAAA,EAEA,MAAM,cAAcJ,GAAa;AAC7B,WAAO,MAAM,KAAK,WAAW,YACX,MAAM,KAAK,IAAI,SAAS,IAAIA,CAAG,KAE7B,IACnB;AAAA,EACL;AAAA,EAEA,MAAM,YAAYA,GAAa;AAC3B,UAAM,KAAK,WAAW,YAAY;AAC9B,YAAM,KAAK,IAAI,SAAS,OAAOA,CAAG,GAClC,MAAM,KAAK,IAAI,KAAK,OAAOA,CAAG;AAAA,IAClC,CAAC;AAAA,EACL;AAAA;AAAA,EAGA,MAAM,gBAAgBU,GAAgB;AAClC,UAAM,KAAK,WAAW,YAAY;AAC9B,YAAM,KAAK,IAAI,SAAS,WAAWA,CAAI,GACvC,MAAM,KAAK,IAAI,KAAK,WAAWA,CAAI;AAAA,IACvC,CAAC;AAAA,EACL;AAAA;AAAA,EAGA,MAAgB,UAAUV,GAAaW,GAAY;AAC/C,WAAO,MAAM,KAAK,WAAW,YAAY;AACrC,UAAIV;AACJ,YAAMW,KAAM,oBAAI,KAAA,GAAO,QAAA;AACvB,MAAIZ,IACAC,IAAQ,MAAM,KAAK,IAAI,SAAS,IAAID,CAAG,IAGvCA,IAAMa,EAAA,GAEV,MAAM,KAAK,IAAI,SAAS,IAAIC,IAA+B;AAAA,QACvD,IAAId;AAAA,QACJ,WAAWC,IAAQA,EAAM,YAAYW;AAAA,QACrC,WAAWA;AAAA,MAAA,CACd,CAAC,GACF,MAAM,KAAK,IAAI,KAAK,IAAI;AAAA,QACpB,IAAIZ;AAAA,QACJ,OAAAW;AAAA,MAAA,CACH;AAAA,IACL,CAAC;AAAA,EACL;AAAA;AAAA,EAGA,MAAgB,eAAeX,GAAaN,GAAgC;AACxE,WAAO,MAAM,KAAK,WAAW,aACnB,MAAM,KAAK,cAAcM,CAAG,KAC9B,MAAM,KAAK,UAAUA,GAAKN,EAAQM,CAAG,CAAC,GAEnC,MAAM,KAAK,SAASA,CAAG,EACjC;AAAA,EACL;AAAA;AAAA,EAGA,MAAM,aAAa;AACf,UAAM,KAAK,WAAW,YAAY;AAC9B,YAAM,KAAK,IAAI,SAAS,MAAA,GACxB,MAAM,KAAK,IAAI,KAAK,MAAA;AAAA,IACxB,CAAC;AAAA,EACL;AAAA;AAGJ;"}
@@ -1,20 +1,15 @@
1
+ import { DataStore } from './dataStore';
1
2
  import { IPersistentStore } from './storeContracts';
2
- export declare class PersistentStore implements IPersistentStore {
3
- private _db;
4
- private _isDisposed;
5
- private _useEncryption;
6
- constructor(name: string, useEncryption?: boolean);
7
- static delete(name: string): Promise<void>;
8
- dispose(): void;
9
- private execAsync;
10
- getKeysAsync(): import('dexie').PromiseExtended<string[]>;
11
- getAsync<T = any>(key: string): Promise<T>;
12
- bulkGetAsync(ids: string[]): Promise<Record<string, any>>;
13
- containsAsync(key: string): Promise<boolean>;
14
- deleteAsync(id: string): Promise<void>;
15
- bulkDeleteAsync(ids: string[]): Promise<void>;
16
- setAsync<T = any>(id: string, value: T): Promise<void>;
17
- getOrSetAsync(key: string, factory: () => any): Promise<void>;
18
- clearAsync(): Promise<void>;
3
+ export type PersistentStoreOptions = {
4
+ useEncryption: boolean;
5
+ };
6
+ export declare class PersistentStore extends DataStore<"default"> implements IPersistentStore {
7
+ private _options;
8
+ static deleteAsync(name: string): Promise<void>;
9
+ static existsAsync(name: string): Promise<boolean>;
10
+ static openAsync(name: string, options?: PersistentStoreOptions): Promise<PersistentStore>;
11
+ constructor(name: string, options?: PersistentStoreOptions);
12
+ setAsync(key: string, value: any): Promise<void>;
13
+ getOrSetAsync(key: string, factory: (key: string) => any): Promise<Readonly<import('./storeDb').IDataEntry & import('./storeDb').IDataItem>>;
19
14
  }
20
15
  //# sourceMappingURL=persistentStore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"persistentStore.d.ts","sourceRoot":"","sources":["../../src/store/persistentStore.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAuBpD,qBAAa,eAAgB,YAAW,gBAAgB;IAEpD,OAAO,CAAC,GAAG,CAAY;IAEvB,OAAO,CAAC,WAAW,CAAU;IAE7B,OAAO,CAAC,cAAc,CAAU;gBAEpB,IAAI,EAAE,MAAM,EAAE,aAAa,UAAQ;IAQ/C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM;IAI1B,OAAO;YAaO,SAAS;IAevB,YAAY;IAIN,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAc1C,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IA+BzD,aAAa,CAAC,GAAG,EAAE,MAAM;IAQzB,WAAW,CAAC,EAAE,EAAE,MAAM;IAOtB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE;IAO7B,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAyBtC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG;IAU7C,UAAU;CAQnB"}
1
+ {"version":3,"file":"persistentStore.d.ts","sourceRoot":"","sources":["../../src/store/persistentStore.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAKpD,MAAM,MAAM,sBAAsB,GAAG;IACjC,aAAa,EAAE,OAAO,CAAC;CAC1B,CAAC;AAMF,qBAAa,eAAgB,SAAQ,SAAS,CAAC,SAAS,CAAE,YAAW,gBAAgB;IAEjF,OAAO,CAAC,QAAQ,CAAyB;IAEzC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM;IAI/B,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM;IAI/B,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,sBAAsB;gBAInD,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,sBAAsB;IAM1D,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;IAKhC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,GAAG;CAK3D"}
@@ -1,96 +1,33 @@
1
- import c from "dexie";
2
- import { DataStore as y } from "./dataStore.es.js";
3
- import { v4 as d } from "uuid";
4
- class l {
5
- _db;
6
- _isDisposed;
7
- _useEncryption;
1
+ import { DataStore as e } from "./dataStore.es.js";
2
+ const r = {
3
+ useEncryption: !1
4
+ };
5
+ class n extends e {
6
+ _options;
8
7
  // TODO: support
9
- constructor(t, e = !1) {
10
- if (!t)
11
- throw new Error("Name cannot be empty");
12
- this._useEncryption = e, this._db = new y(t);
13
- }
14
- static delete(t) {
15
- return c.delete(t);
16
- }
17
- dispose() {
18
- this._isDisposed || (this._isDisposed = !0, this._db && (this._db.isOpen() && this._db.close(), this._db = null));
19
- }
20
- async execAsync(t) {
21
- this._db.isOpen() || await this._db.open();
22
- try {
23
- return await t();
24
- } catch (e) {
25
- throw this._db.isOpen(), e;
26
- }
8
+ static deleteAsync(t) {
9
+ return e.$deleteAsync(t);
27
10
  }
28
- getKeysAsync() {
29
- return this._db.registry.filter((t) => !0).primaryKeys();
11
+ static existsAsync(t) {
12
+ return e.$existsAsync(t);
30
13
  }
31
- async getAsync(t) {
32
- return await this.execAsync(async () => {
33
- if (await this._db.registry.get(t))
34
- return (await this._db.data.get(t))?.value;
35
- });
14
+ static openAsync(t, s) {
15
+ return e.$openAsync(t, () => new n(t, s));
36
16
  }
37
- // getManyAsync
38
- async bulkGetAsync(t) {
39
- const e = {};
40
- return await this.execAsync(async () => {
41
- const a = (await this._db.registry.bulkGet(t)).reduce((s, n, h) => (s[n.id] = n, s), {}), r = await this._db.data.bulkGet(t);
42
- for (const s of r)
43
- e[s.id] = s.value, delete a[s.id];
44
- for (const s of Object.keys(a))
45
- e[s] = void 0;
46
- return e;
47
- });
48
- }
49
- async containsAsync(t) {
50
- return await this.execAsync(async () => await this._db.registry.get(t) != null);
51
- }
52
- async deleteAsync(t) {
53
- await this.execAsync(async () => {
54
- await this._db.registry.delete(t);
55
- });
56
- }
57
- // deleteManyAsync
58
- async bulkDeleteAsync(t) {
59
- await this.execAsync(async () => {
60
- await this._db.registry.bulkDelete(t);
61
- });
17
+ constructor(t, s) {
18
+ super(t, "default"), this._options = { ...s, ...r };
62
19
  }
63
20
  // upsertAsync
64
- async setAsync(t, e) {
65
- return await this.execAsync(async () => {
66
- const i = await this._db.registry.get(t), a = (/* @__PURE__ */ new Date()).getTime();
67
- t || (t = d()), await this._db.registry.put({
68
- id: t,
69
- createdAt: i ? i.createdAt : a,
70
- accessedAt: i ? i.accessedAt : null,
71
- // now
72
- updatedAt: a,
73
- expiresAt: void 0,
74
- slidingExpiration: void 0
75
- }), await this._db.data.put({
76
- id: t,
77
- value: e
78
- });
79
- });
21
+ setAsync(t, s) {
22
+ return this.$setAsync(t, s);
80
23
  }
81
24
  // getOrAddAsync
82
- async getOrSetAsync(t, e) {
83
- await this.execAsync(async () => (await this.containsAsync(t) || await this.setAsync(t, e()), await this.getAsync(t)));
84
- }
85
- // clearAllAsync
86
- async clearAsync() {
87
- await this.execAsync(async () => {
88
- await this._db.registry.clear(), await this._db.data.clear();
89
- });
25
+ getOrSetAsync(t, s) {
26
+ return this.$getOrSetAsync(t, s);
90
27
  }
91
28
  // TODO: support bulkSetAsync
92
29
  }
93
30
  export {
94
- l as PersistentStore
31
+ n as PersistentStore
95
32
  };
96
33
  //# sourceMappingURL=persistentStore.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"persistentStore.es.js","sources":["../../src/store/persistentStore.ts"],"sourcesContent":["// TODO: implement real encryption:\r\n// https://stackoverflow.com/questions/18279141/javascript-string-encryption-and-decryption\r\n\r\nimport Dexie from \"dexie\";\r\nimport { DataStore, IDataEntry } from \"./dataStore\";\r\nimport { IPersistentStore } from \"./storeContracts\";\r\nimport { v4 as uuid } from \"uuid\";\r\n\r\n/*\r\n(async () => {\r\n const alreadyPersisted = await window.navigator.storage?.persisted()\r\n\r\n if (alreadyPersisted) {\r\n return;\r\n }\r\n\r\n const persistentModeEnabled = await window.navigator.storage?.persist()\r\n\r\n if (!persistentModeEnabled) {\r\n // Storage may be cleared by the UA under storage pressure\r\n } else {\r\n // Storage will be persistent\r\n // Storage will not be cleared except by explicit user action\r\n }\r\n})();\r\n*/\r\n\r\n// TODO: remove class, create factory method\r\nexport class PersistentStore implements IPersistentStore {\r\n\r\n private _db: DataStore;\r\n\r\n private _isDisposed: boolean;\r\n\r\n private _useEncryption: boolean; // TODO: support\r\n\r\n constructor(name: string, useEncryption = false) {\r\n if (!name) {\r\n throw new Error(\"Name cannot be empty\");\r\n }\r\n this._useEncryption = useEncryption;\r\n this._db = new DataStore(name);\r\n }\r\n\r\n static delete(name: string) {\r\n return Dexie.delete(name);\r\n }\r\n\r\n dispose() {\r\n if (!this._isDisposed) {\r\n this._isDisposed = true;\r\n\r\n if (this._db) {\r\n if (this._db.isOpen()) {\r\n this._db.close();\r\n }\r\n this._db = null;\r\n }\r\n }\r\n }\r\n\r\n private async execAsync<T>(action: () => Promise<T>) {\r\n if (!this._db.isOpen()) {\r\n await this._db.open();\r\n }\r\n try {\r\n const result = await action();\r\n return result;\r\n } catch (err) {\r\n if (this._db.isOpen()) {\r\n // this._db.close(); // generally speaking: we don't (never) need to close a connection\r\n }\r\n throw err;\r\n }\r\n }\r\n\r\n getKeysAsync() {\r\n return this._db.registry.filter((_) => true).primaryKeys();\r\n }\r\n\r\n async getAsync<T = any>(key: string): Promise<T> {\r\n return await this.execAsync(async () => {\r\n const entry = await this._db.registry.get(key);\r\n // const entry = await this._db.registry.where(keyOf<IDataEntry>(\"id\")).equals(key).first();\r\n if (entry) {\r\n const data = await this._db.data.get(key);\r\n // const data = await this._db.data.where(keyOf<IDataEntry>(\"id\")).equals(key).first();\r\n return data?.value;\r\n }\r\n return undefined;\r\n });\r\n }\r\n\r\n // getManyAsync\r\n async bulkGetAsync(ids: string[]): Promise<Record<string, any>> {\r\n const result: Record<string, any> = {};\r\n return await this.execAsync(async () => {\r\n // const entries = await this._db.registry.where(keyOf<IDataEntry>(\"id\")).anyOf(ids).toArray();\r\n const entries = await this._db.registry.bulkGet(ids);\r\n const entryMap: { [key: string]: IDataEntry } = entries.reduce((map, entry, i) => {\r\n map[entry.id] = entry;\r\n return map;\r\n }, {});\r\n\r\n // const dataItems = this._db.data.where(keyOf<IDataEntry>(\"id\")).anyOf(ids);\r\n // await dataItems.each((dataItem) => {\r\n // result[dataItem.id] = { ...entryMap[dataItem.id], ...dataItem };\r\n // delete entryMap[dataItem.id];\r\n // });\r\n\r\n const dataItems = await this._db.data.bulkGet(ids);\r\n for (const dataItem of dataItems) {\r\n result[dataItem.id] = dataItem.value;\r\n delete entryMap[dataItem.id];\r\n }\r\n\r\n for (const key of Object.keys(entryMap)) {\r\n // abandoned/orphaned entries:\r\n result[key] = undefined;\r\n }\r\n\r\n return result;\r\n });\r\n }\r\n\r\n async containsAsync(key: string) {\r\n return await this.execAsync(async () => {\r\n const entry = await this._db.registry.get(key);\r\n // const entry = await this._db.registry.where(keyOf<IDataEntry>(\"id\")).equals(key).first();\r\n return entry != undefined;\r\n });\r\n }\r\n\r\n async deleteAsync(id: string) {\r\n await this.execAsync(async () => {\r\n await this._db.registry.delete(id);\r\n });\r\n }\r\n\r\n // deleteManyAsync\r\n async bulkDeleteAsync(ids: string[]) {\r\n await this.execAsync(async () => {\r\n await this._db.registry.bulkDelete(ids);\r\n });\r\n }\r\n\r\n // upsertAsync\r\n async setAsync<T = any>(id: string, value: T) {\r\n return await this.execAsync(async () => {\r\n const entry = await this._db.registry.get(id);\r\n // const entry = await this._db.registry.where(keyOf<IDataEntry>(\"id\")).equals(key).first();\r\n const now = new Date().getTime();\r\n if (!id) {\r\n id = uuid();\r\n }\r\n\r\n await this._db.registry.put({\r\n id: id,\r\n createdAt: entry ? entry.createdAt : now,\r\n accessedAt: entry ? entry.accessedAt : null, // now\r\n updatedAt: now,\r\n expiresAt: undefined,\r\n slidingExpiration: undefined\r\n });\r\n await this._db.data.put({\r\n id: id,\r\n value: value\r\n });\r\n });\r\n }\r\n\r\n // getOrAddAsync\r\n async getOrSetAsync(key: string, factory: () => any) {\r\n await this.execAsync(async () => {\r\n if (!(await this.containsAsync(key))) {\r\n await this.setAsync(key, factory());\r\n }\r\n return await this.getAsync(key);\r\n });\r\n }\r\n\r\n // clearAllAsync\r\n async clearAsync() {\r\n await this.execAsync(async () => {\r\n await this._db.registry.clear();\r\n await this._db.data.clear();\r\n });\r\n }\r\n\r\n // TODO: support bulkSetAsync\r\n}\r\n"],"names":["PersistentStore","name","useEncryption","DataStore","Dexie","action","err","_","key","ids","result","entryMap","map","entry","i","dataItems","dataItem","id","value","now","uuid","factory"],"mappings":"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"}
1
+ {"version":3,"file":"persistentStore.es.js","sources":["../../src/store/persistentStore.ts"],"sourcesContent":["\r\nimport { DataStore } from \"./dataStore\";\r\nimport { IPersistentStore } from \"./storeContracts\";\r\n\r\n// TODO: implement real encryption:\r\n// https://stackoverflow.com/questions/18279141/javascript-string-encryption-and-decryption\r\n\r\nexport type PersistentStoreOptions = {\r\n useEncryption: boolean;\r\n};\r\n\r\nconst defaultPersistentStoreOptions = {\r\n useEncryption: false\r\n} satisfies PersistentStoreOptions;\r\n\r\nexport class PersistentStore extends DataStore<\"default\"> implements IPersistentStore {\r\n\r\n private _options: PersistentStoreOptions; // TODO: support\r\n\r\n static deleteAsync(name: string) {\r\n return DataStore.$deleteAsync(name);\r\n }\r\n\r\n static existsAsync(name: string) {\r\n return DataStore.$existsAsync(name);\r\n }\r\n\r\n static openAsync(name: string, options?: PersistentStoreOptions) {\r\n return DataStore.$openAsync(name, () => new PersistentStore(name, options));\r\n }\r\n\r\n constructor(name: string, options?: PersistentStoreOptions) {\r\n super(name, \"default\");\r\n this._options = { ...options, ...defaultPersistentStoreOptions };\r\n }\r\n\r\n // upsertAsync\r\n setAsync(key: string, value: any) {\r\n return this.$setAsync(key, value);\r\n }\r\n\r\n // getOrAddAsync\r\n getOrSetAsync(key: string, factory: (key: string) => any) {\r\n return this.$getOrSetAsync(key, factory);\r\n }\r\n\r\n // TODO: support bulkSetAsync\r\n}\r\n"],"names":["defaultPersistentStoreOptions","PersistentStore","DataStore","name","options","key","value","factory"],"mappings":";AAWA,MAAMA,IAAgC;AAAA,EAClC,eAAe;AACnB;AAEO,MAAMC,UAAwBC,EAAiD;AAAA,EAE1E;AAAA;AAAA,EAER,OAAO,YAAYC,GAAc;AAC7B,WAAOD,EAAU,aAAaC,CAAI;AAAA,EACtC;AAAA,EAEA,OAAO,YAAYA,GAAc;AAC7B,WAAOD,EAAU,aAAaC,CAAI;AAAA,EACtC;AAAA,EAEA,OAAO,UAAUA,GAAcC,GAAkC;AAC7D,WAAOF,EAAU,WAAWC,GAAM,MAAM,IAAIF,EAAgBE,GAAMC,CAAO,CAAC;AAAA,EAC9E;AAAA,EAEA,YAAYD,GAAcC,GAAkC;AACxD,UAAMD,GAAM,SAAS,GACrB,KAAK,WAAW,EAAE,GAAGC,GAAS,GAAGJ,EAAA;AAAA,EACrC;AAAA;AAAA,EAGA,SAASK,GAAaC,GAAY;AAC9B,WAAO,KAAK,UAAUD,GAAKC,CAAK;AAAA,EACpC;AAAA;AAAA,EAGA,cAAcD,GAAaE,GAA+B;AACtD,WAAO,KAAK,eAAeF,GAAKE,CAAO;AAAA,EAC3C;AAAA;AAGJ;"}
@@ -1,6 +1,7 @@
1
+ import { DataEntry, DataItem } from './storeDb';
1
2
  export type IPersistentStore = {
2
- getAsync<T = any>(key: string, useEncryption?: boolean): Promise<T>;
3
- setAsync<T = any>(key: string, value: T, useEncryption?: boolean): Promise<void>;
3
+ getAsync<T = any>(key: string): Promise<DataEntry & DataItem<T>>;
4
+ setAsync<T = any>(key: string, value: T): Promise<void>;
4
5
  deleteAsync(key: string): Promise<void>;
5
6
  };
6
7
  //# sourceMappingURL=storeContracts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"storeContracts.d.ts","sourceRoot":"","sources":["../../src/store/storeContracts.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,gBAAgB,GAAG;IAC3B,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACpE,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,aAAa,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjF,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C,CAAA"}
1
+ {"version":3,"file":"storeContracts.d.ts","sourceRoot":"","sources":["../../src/store/storeContracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAGhD,MAAM,MAAM,gBAAgB,GAAG;IAC3B,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C,CAAA"}
@@ -0,0 +1,42 @@
1
+ import { default as Dexie } from 'dexie';
2
+ export interface IDataEntry {
3
+ id: string;
4
+ createdAt: number;
5
+ updatedAt: number;
6
+ }
7
+ export interface ICacheDataEntry extends IDataEntry {
8
+ accessedAt?: number;
9
+ slidingExpiration?: number;
10
+ expiresAt?: number;
11
+ }
12
+ export type EntryTypes = {
13
+ default: IDataEntry;
14
+ cache: ICacheDataEntry;
15
+ };
16
+ export interface IDataItem {
17
+ readonly id: string;
18
+ readonly value: any;
19
+ }
20
+ export declare class DataEntry implements IDataEntry {
21
+ id: string;
22
+ createdAt: number;
23
+ updatedAt: number;
24
+ constructor(src: Partial<DataEntry>);
25
+ }
26
+ export declare class CacheDataEntry extends DataEntry {
27
+ accessedAt?: number;
28
+ slidingExpiration?: number;
29
+ expiresAt?: number;
30
+ constructor(src: Partial<CacheDataEntry>);
31
+ }
32
+ export declare class DataItem<T = any> implements IDataItem {
33
+ id: string;
34
+ value: T;
35
+ constructor(src: Partial<DataItem>);
36
+ }
37
+ export declare class StoreDb<TEntryTemplate extends keyof EntryTypes> extends Dexie {
38
+ registry: Dexie.Table<EntryTypes[TEntryTemplate], string>;
39
+ data: Dexie.Table<IDataItem, string>;
40
+ constructor(name: string, entryTemplate: TEntryTemplate);
41
+ }
42
+ //# sourceMappingURL=storeDb.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storeDb.d.ts","sourceRoot":"","sources":["../../src/store/storeDb.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,MAAM,WAAW,UAAU;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACrB;AAID,MAAM,WAAW,eAAgB,SAAQ,UAAU;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,UAAU,GAAG;IACrB,OAAO,EAAE,UAAU,CAAC;IACpB,KAAK,EAAE,eAAe,CAAA;CACzB,CAAA;AAGD,MAAM,WAAW,SAAS;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;CACvB;AAcD,qBAAa,SAAU,YAAW,UAAU;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;gBAEN,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC;CAStC;AAED,qBAAa,cAAe,SAAQ,SAAS;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEP,GAAG,EAAE,OAAO,CAAC,cAAc,CAAC;CAI3C;AAGD,qBAAa,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAE,YAAW,SAAS;IAC/C,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,CAAC,CAAC;gBAEG,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC;CAQrC;AAMD,qBAAa,OAAO,CAAC,cAAc,SAAS,MAAM,UAAU,CAAE,SAAQ,KAAK;IAEvE,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC;IAC1D,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;gBAEzB,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,cAAc;CA0C1D"}
@@ -0,0 +1,60 @@
1
+ import n from "dexie";
2
+ const s = "registry", r = "data", d = ["id", "value"], l = {
3
+ default: ["id", "createdAt", "updatedAt"],
4
+ cache: ["id", "createdAt", "accessedAt", "updatedAt", "expiresAt"]
5
+ };
6
+ class u {
7
+ id;
8
+ createdAt;
9
+ updatedAt;
10
+ constructor(t) {
11
+ Object.assign(this, t);
12
+ }
13
+ }
14
+ class m extends u {
15
+ accessedAt;
16
+ // lastAccessed/lastAccessTime
17
+ slidingExpiration;
18
+ // absoluteExpiration?: number;
19
+ expiresAt;
20
+ // expiryTime
21
+ constructor(t) {
22
+ super(t), Object.assign(this, t);
23
+ }
24
+ }
25
+ class b {
26
+ id;
27
+ value;
28
+ constructor(t) {
29
+ Object.assign(this, t);
30
+ }
31
+ // constructor(key: string, value: string) {
32
+ // this.key = key;
33
+ // this.value = value;
34
+ // }
35
+ }
36
+ function i(e) {
37
+ return e.toLowerCase() == "id" ? "&id" : e;
38
+ }
39
+ class A extends n {
40
+ // catalog/entries
41
+ registry;
42
+ data;
43
+ constructor(t, o) {
44
+ if (!t)
45
+ throw new Error("Invalid database name");
46
+ super(t);
47
+ const a = this, c = l[o];
48
+ a.version(1).stores({
49
+ [s]: c.map(i).join(", "),
50
+ [r]: d.map(i).join(", ")
51
+ }), this.registry = a.table(s), this.data = a.table(r);
52
+ }
53
+ }
54
+ export {
55
+ m as CacheDataEntry,
56
+ u as DataEntry,
57
+ b as DataItem,
58
+ A as StoreDb
59
+ };
60
+ //# sourceMappingURL=storeDb.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storeDb.es.js","sources":["../../src/store/storeDb.ts"],"sourcesContent":["import Dexie from \"dexie\";\r\n// https://dexie.org/docs/Typescript\r\n\r\nconst registryTableName = \"registry\"; // \"catalog\"\r\nconst dataTableName = \"data\";\r\n\r\nexport interface IDataEntry {\r\n id: string; // should be called \"id\" for Dexie!\r\n createdAt: number;\r\n updatedAt: number; // lastModified\r\n}\r\n// isValid?\r\n// tags?\r\n\r\nexport interface ICacheDataEntry extends IDataEntry {\r\n accessedAt?: number; // lastAccessed/lastAccessTime\r\n slidingExpiration?: number;\r\n // absoluteExpiration?: number;\r\n expiresAt?: number; // expiryTime\r\n}\r\n\r\nexport type EntryTypes = {\r\n default: IDataEntry,\r\n cache: ICacheDataEntry\r\n}\r\n\r\n// IDataRecord\r\nexport interface IDataItem {\r\n readonly id: string;\r\n readonly value: any;\r\n}\r\n\r\nconst dataItemPropertyNames: (keyof IDataItem)[] = [\"id\", \"value\"];\r\n\r\ntype DbColumnTemplate = string[];\r\n\r\n// (registry/catalog)ColumnNames\r\nconst entryColumnTemplates: {\r\n [name in keyof EntryTypes]: DbColumnTemplate\r\n} = {\r\n default: [\"id\", \"createdAt\", \"updatedAt\"] satisfies (keyof IDataEntry)[],\r\n cache: [\"id\", \"createdAt\", \"accessedAt\", \"updatedAt\", \"expiresAt\"] satisfies (keyof ICacheDataEntry)[]\r\n};\r\n\r\nexport class DataEntry implements IDataEntry {\r\n id: string;\r\n createdAt: number;\r\n updatedAt: number;\r\n\r\n constructor(src: Partial<DataEntry>) {\r\n Object.assign(this, src);\r\n // Define navigation properties.\r\n // Making them non-enumerable will prevent them from being handled by indexedDB\r\n // when doing put() or add().\r\n // Object.defineProperties(this, {\r\n // ...: { value: [], enumerable: false, writable: true }\r\n // });\r\n }\r\n}\r\n\r\nexport class CacheDataEntry extends DataEntry {\r\n accessedAt?: number; // lastAccessed/lastAccessTime\r\n slidingExpiration?: number;\r\n // absoluteExpiration?: number;\r\n expiresAt?: number; // expiryTime\r\n\r\n constructor(src: Partial<CacheDataEntry>) {\r\n super(src);\r\n Object.assign(this, src);\r\n }\r\n}\r\n\r\n// DataRecord\r\nexport class DataItem<T = any> implements IDataItem {\r\n id: string;\r\n value: T;\r\n\r\n constructor(src: Partial<DataItem>) {\r\n Object.assign(this, src);\r\n }\r\n\r\n // constructor(key: string, value: string) {\r\n // this.key = key;\r\n // this.value = value;\r\n // }\r\n}\r\n\r\nfunction toDexieColumnName(name: string) {\r\n return name.toLowerCase() == \"id\" ? \"&id\" : name;\r\n}\r\n\r\nexport class StoreDb<TEntryTemplate extends keyof EntryTypes> extends Dexie {\r\n // catalog/entries\r\n registry: Dexie.Table<EntryTypes[TEntryTemplate], string>;\r\n data: Dexie.Table<IDataItem, string>;\r\n\r\n constructor(name: string, entryTemplate: TEntryTemplate) {\r\n // navigator.storage.estimate()\r\n // navigator.webkitTemporaryStorage.queryUsageAndQuota()\r\n\r\n if (!name) {\r\n throw new Error(\"Invalid database name\"); // cannot be empty\r\n }\r\n\r\n super(name); // {autoOpen: false}\r\n\r\n const db = this;\r\n\r\n const entryColumnTemplate = entryColumnTemplates[entryTemplate];\r\n db.version(1).stores({\r\n [registryTableName]: entryColumnTemplate.map(toDexieColumnName).join(\", \"),\r\n [dataTableName]: dataItemPropertyNames.map(toDexieColumnName).join(\", \")\r\n });\r\n\r\n // db.version(2).stores({\r\n // \t// ...\r\n // }).upgrade(trans => {\r\n // \treturn trans.table(dataTableName).toCollection().modify((entry: IDataEntry) => {\r\n // \t\t// ...\r\n // \t});\r\n // });\r\n\r\n this.registry = db.table(registryTableName);\r\n this.data = db.table(dataTableName);\r\n\r\n // additional way to handle relationships\r\n // db.registry.hook(\"deleting\", (key, obj, transaction) => {\r\n // // only synchronous code!\r\n // transaction.table(dataTableName).delete(key);\r\n // });\r\n\r\n // db.registry.mapToClass(DataEntry);\r\n // db.data.mapToClass(DataItem);\r\n\r\n // db.on('populate', () => db.registry.bulkAdd([\r\n // \t// ...\r\n // ]));\r\n }\r\n}"],"names":["registryTableName","dataTableName","dataItemPropertyNames","entryColumnTemplates","DataEntry","src","CacheDataEntry","DataItem","toDexieColumnName","name","StoreDb","Dexie","entryTemplate","db","entryColumnTemplate"],"mappings":";AAGA,MAAMA,IAAoB,YACpBC,IAAgB,QA4BhBC,IAA6C,CAAC,MAAM,OAAO,GAK3DC,IAEF;AAAA,EACA,SAAS,CAAC,MAAM,aAAa,WAAW;AAAA,EACxC,OAAO,CAAC,MAAM,aAAa,cAAc,aAAa,WAAW;AACrE;AAEO,MAAMC,EAAgC;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AAAA,EAEA,YAAYC,GAAyB;AACjC,WAAO,OAAO,MAAMA,CAAG;AAAA,EAO3B;AACJ;AAEO,MAAMC,UAAuBF,EAAU;AAAA,EAC1C;AAAA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA,YAAYC,GAA8B;AACtC,UAAMA,CAAG,GACT,OAAO,OAAO,MAAMA,CAAG;AAAA,EAC3B;AACJ;AAGO,MAAME,EAAuC;AAAA,EAChD;AAAA,EACA;AAAA,EAEA,YAAYF,GAAwB;AAChC,WAAO,OAAO,MAAMA,CAAG;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA;AAMJ;AAEA,SAASG,EAAkBC,GAAc;AACrC,SAAOA,EAAK,YAAA,KAAiB,OAAO,QAAQA;AAChD;AAEO,MAAMC,UAAyDC,EAAM;AAAA;AAAA,EAExE;AAAA,EACA;AAAA,EAEA,YAAYF,GAAcG,GAA+B;AAIrD,QAAI,CAACH;AACD,YAAM,IAAI,MAAM,uBAAuB;AAG3C,UAAMA,CAAI;AAEV,UAAMI,IAAK,MAELC,IAAsBX,EAAqBS,CAAa;AAC9D,IAAAC,EAAG,QAAQ,CAAC,EAAE,OAAO;AAAA,MACjB,CAACb,CAAiB,GAAGc,EAAoB,IAAIN,CAAiB,EAAE,KAAK,IAAI;AAAA,MACzE,CAACP,CAAa,GAAGC,EAAsB,IAAIM,CAAiB,EAAE,KAAK,IAAI;AAAA,IAAA,CAC1E,GAUD,KAAK,WAAWK,EAAG,MAAMb,CAAiB,GAC1C,KAAK,OAAOa,EAAG,MAAMZ,CAAa;AAAA,EActC;AACJ;"}
@@ -6,7 +6,18 @@ export type Diff<T, U> = Omit<T, keyof U>;
6
6
  export type StrictDiff<T, U> = {
7
7
  [K in keyof T as K extends keyof U ? (T[K] extends U[K] ? (U[K] extends T[K] ? never : K) : K) : K]: T[K];
8
8
  };
9
- export type Intersection<T, U> = Pick<T, Extract<keyof T, keyof U>>;
9
+ export type CommonPart<T, U> = Pick<T, CommonKeys<T, U>>;
10
+ export type CommonPartEx<T extends object[]> = T extends [infer A extends object, infer B extends object, ...infer Rest extends object[]] ? CommonPartEx<[Pick<A, Extract<keyof A, keyof B>>, ...Rest]> : T extends [infer Only extends object] ? Only : unknown;
11
+ export type CommonPartFromSchema<T extends Record<string, object>> = keyof T extends infer K ? K extends any ? CommonPart<T[K & keyof T], CommonPartFromSchema<Omit<T, K & keyof T>>> : unknown : unknown;
12
+ export type CommonKeys<T, U> = Extract<keyof T, keyof U>;
13
+ export type CommonKeysEx<T extends object[]> = T extends [infer A extends object, infer B extends object, ...infer Rest extends object[]] ? CommonKeysEx<[{
14
+ [K in Extract<keyof A, keyof B>]: any;
15
+ }, ...Rest]> : T extends [infer Only extends object] ? keyof Only : never;
16
+ export type UnionToIntersection<U> = (U extends any ? (x: U) => void : never) extends (x: infer R) => void ? R : never;
17
+ export type ValueUnion<T> = T[keyof T];
18
+ export type TupleFromKeys<T, K extends readonly (keyof T)[]> = {
19
+ [I in keyof K]: K[I] extends keyof T ? T[K[I]] : never;
20
+ };
10
21
  export type Extend<T extends object, U extends object, K extends keyof U> = T & {
11
22
  [P in K]: U[K];
12
23
  };
@@ -72,6 +83,7 @@ export type Executor<T = void, TArgs extends any[] = []> = Func<TArgs, T | Promi
72
83
  export type Overwrite<Base extends object, Overrides extends object> = Omit<Base, keyof Overrides> & Overrides;
73
84
  export type Extends<T extends object, TBase extends object> = T extends TBase ? true : false;
74
85
  export type RequireExtends<T extends TBase, TBase extends object> = T;
86
+ export type Strict<T, U extends T> = Exclude<keyof U, keyof T> extends never ? U : never;
75
87
  export type MaybeExtends<T, TShape> = T extends TShape ? T : never;
76
88
  export type KeyOf<T extends object, TKey extends keyof T> = TKey;
77
89
  export type IsKeyOf<T, TKey extends object> = TKey extends keyof T ? true : false;
@@ -1 +1 @@
1
- {"version":3,"file":"typeCore.d.ts","sourceRoot":"","sources":["../src/typeCore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"typeCore.d.ts","sourceRoot":"","sources":["../src/typeCore.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"typeCore.es.js","sources":["../src/typeCore.ts"],"sourcesContent":["// @filename: typeCore.ts\r\n\r\n// type SplitStringToUnion<T extends string, Separator extends string> = T extends `${infer First}${Separator}${infer Rest}`\r\n// ? First | SplitStringToUnion<Rest, Separator>\r\n// : T;\r\n\r\n// more useful version of Omit\r\n\r\nexport type Skip<T extends object, K extends keyof T> = Pick<T, Exclude<keyof T, K>>; // FilterOut\r\n// export type Skip<T, K extends keyof T> = {\r\n// [P in keyof T as P extends K ? never : P]: T[P];\r\n// };\r\n\r\n// export type PickEx<T extends object, TKeys extends keyof T | Array<keyof T>> = {\r\n// [K in TKeys extends Array<keyof T> ? TKeys[number] : TKeys]: T[K];\r\n// };\r\n\r\nexport type Filter<T extends object, V> = {\r\n [K in keyof T as T[K] extends V ? K : never]: T[K];\r\n};\r\n\r\nexport type Diff<T, U> = Omit<T, keyof U>;\r\nexport type StrictDiff<T, U> = {\r\n [K in keyof T as K extends keyof U ? (T[K] extends U[K] ? (U[K] extends T[K] ? never : K) : K) : K]: T[K];\r\n};\r\n\r\nexport type Intersection<T, U> = Pick<T, Extract<keyof T, keyof U>>;\r\n\r\nexport type Extend<T extends object, U extends object, K extends keyof U> = T & { [P in K]: U[K] };\r\n\r\n// Validation\r\nexport type ValueOf<T extends object> = T[keyof T];\r\nexport type OneOnly<T, Key extends keyof T> = { [key in Exclude<keyof T, Key>]: null } & Pick<T, Key>;\r\nexport type OneOfByKey<T> = { [key in keyof T]: OneOnly<T, key> };\r\nexport type OneOfType<T> = ValueOf<OneOfByKey<T>>;\r\n\r\n// Extract version\r\nexport type KeyOfType<FromType extends object, KeepType = any, Include = true> = {\r\n [K in keyof FromType]: FromType[K] extends KeepType ? (Include extends true ? K : never) : Include extends true ? never : K;\r\n}[keyof FromType];\r\n\r\nexport type Weaken<T, K extends keyof T> = {\r\n [P in keyof T]: P extends K ? any : T[P];\r\n};\r\n\r\nexport type Mutable<T extends object> = {\r\n -readonly [K in keyof T]: T[K];\r\n};\r\n\r\nexport type Constructor = new (...args: any[]) => any;\r\n// export type ConstructorParameters<TConstructor extends Constructor> = TConstructor extends new (...args: infer TArgs) => any ? TArgs : never;\r\n\r\n// Extracts class instance type from class constructor\r\nexport type ConstructorClass<TConstructor extends Constructor> = TConstructor extends new (...args: any[]) => infer TClass ? TClass : never;\r\n\r\n// This is what we want: to be able to create new class instances\r\n// either with or without \"new\" keyword\r\nexport type CallableConstructor<TConstructor extends Constructor> = TConstructor &\r\n ((...args: ConstructorParameters<TConstructor>) => ConstructorClass<TConstructor>);\r\n\r\n// ToUpperCase\r\nexport type ToUpper<T> = T extends string\r\n ? Uppercase<T>\r\n : {\r\n [K in keyof T as K extends string ? Uppercase<K> : K]: T[K];\r\n };\r\n\r\n// ToLowerCase\r\nexport type ToLower<T> = T extends string\r\n ? Lowercase<T>\r\n : {\r\n [K in keyof T as K extends string ? Lowercase<K> : K]: T[K];\r\n };\r\n\r\nexport type AddPrefix<T, TPrefix extends string> = T extends string\r\n ? `${TPrefix}${T}`\r\n : {\r\n [K in keyof T as AddPrefix<K, TPrefix>]: T[K];\r\n };\r\n\r\nexport type AddSuffix<T, TSuffix extends string> = T extends string\r\n ? `${T}${TSuffix}`\r\n : {\r\n [K in keyof T as AddSuffix<K, TSuffix>]: T[K];\r\n };\r\n\r\nexport type RemovePrefix<T, TPrefix extends string> = T extends string\r\n ? T extends `${TPrefix}${infer Tail}`\r\n ? RemovePrefix<Tail, TPrefix>\r\n : T // never?\r\n : {\r\n [K in keyof T as RemovePrefix<K, TPrefix>]: T[K];\r\n };\r\n\r\nexport type RemoveSuffix<T, TSuffix extends string> = T extends string\r\n ? T extends `${infer Head}${TSuffix}`\r\n ? RemoveSuffix<Head, TSuffix>\r\n : T // never?\r\n : {\r\n [K in keyof T as RemoveSuffix<K, TSuffix>]: T[K];\r\n };\r\n\r\nexport const getPrefixer = (prefix: string) => (value: string) => {\r\n return `${prefix}${value}`;\r\n};\r\n\r\nexport const getValuePrefixer =\r\n <T extends { [key: string]: string }>(prefix: string) =>\r\n (dict: T): T => {\r\n return Object.fromEntries(Object.keys(dict).map((k) => [k, `${prefix}${dict[k]}`])) as T;\r\n };\r\n\r\nexport const getKeyPrefixer =\r\n <T extends { [key: string]: any }>(prefix: string) =>\r\n (obj: T): object => {\r\n return Object.fromEntries(Object.keys(obj).map((k) => [`${prefix}${k}`, obj[k]]));\r\n };\r\n\r\n// export type MaybePromise<T> = T extends undefined ? void : T | PromiseLike<Awaited<T>>; // TODO: check\r\nexport type MaybePromise<T> = T extends undefined ? void : T | PromiseLike<T>;\r\n\r\nexport type Func<TArgs extends any[] = any[], T = any> = {\r\n (...args: TArgs): T;\r\n name?: string;\r\n};\r\n\r\nexport type Action<TArgs extends any[] = any[]> = Func<TArgs, void>;\r\n\r\nexport type AsyncFunc<TArgs extends any[] = any[], T = any> = Func<TArgs, PromiseLike<T>>;\r\n\r\n// use built-in ReturnType:\r\n// type ReturnType<T extends (...args: any) => any> = T extends (...args: any) => infer R ? R : any;\r\n// my version:\r\n// export type ReturnType<TFunc> = TFunc extends Func<infer TArgs, infer TResult> ? TResult : never;\r\n\r\n// use built-in Awaited type:\r\n/*\r\n// Recursively unwraps the \"awaited type\" of a type. \r\n// Non-promise \"thenables\" should resolve to `never`. \r\n// This emulates the behavior of `await`.\r\ntype Awaited<T> = T extends null | undefined ? T : // special case for `null | undefined` when not in `--strictNullChecks` mode\r\n T extends object & { then(onfulfilled: infer F, ...args: infer _): any; } ? // `await` only unwraps object types with a callable `then`. Non-object types are not unwrapped\r\n F extends ((value: infer V, ...args: infer _) => any) ? // if the argument to `then` is callable, extracts the first argument\r\n Awaited<V> : // recursively unwrap the value\r\n never : // the argument to `then` was not callable\r\n T; // non-object or non-thenable\r\n*/\r\n\r\n// my simple version (PromiseType):\r\n// export type Awaited<TPromise> = TPromise extends PromiseLike<infer TResult> ? TResult : TPromise;\r\n\r\n// AsyncReturnType\r\nexport type AwaitedReturnType<TFunc extends Func> = Awaited<ReturnType<TFunc>>;\r\n\r\nexport type Factory<T = any, TArgs extends any[] = []> = Func<TArgs, T>;\r\n\r\nexport type IProvider<TFactory = Factory> = {\r\n get: TFactory;\r\n};\r\n\r\n// (Func)ParameterType\r\n// type Parameters<T extends (...args: any) => any> = T extends (...args: infer P) => any ? P : never;\r\n/** see also built-in Parameters type */\r\nexport type ParameterType<TFunc, TParamIndex extends number> = TFunc extends Func<infer TArgs extends any[], infer TResult>\r\n ? TArgs[TParamIndex]\r\n : never;\r\n\r\n// Lambda?\r\n// export type Executor<T = void, TArgs extends any[] = []> = Func<TArgs, T> | AsyncFunc<[], T>;\r\nexport type Executor<T = void, TArgs extends any[] = []> = Func<TArgs, T | PromiseLike<T>>;\r\n\r\nexport type Overwrite<Base extends object, Overrides extends object> = Omit<Base, keyof Overrides> & Overrides;\r\n// or\r\n// export type Overwrite<Base extends object, Overrides extends object> = Pick<Base, Exclude<keyof Base, keyof Overrides>> & Overrides;\r\n\r\nexport type Extends<T extends object, TBase extends object> = T extends TBase ? true : false;\r\n\r\n// more strict than Extract\r\nexport type RequireExtends<T extends TBase, TBase extends object> = T;\r\n\r\nexport type MaybeExtends<T, TShape> = T extends TShape ? T : never;\r\n\r\nexport type KeyOf<T extends object, TKey extends keyof T> = TKey;\r\n\r\nexport type IsKeyOf<T, TKey extends object> = TKey extends keyof T ? true : false;\r\n\r\nexport type KeysOf<T extends object, TKeys extends keyof T | Array<keyof T>> = TKeys extends Array<keyof T> ? TKeys[number] : TKeys;\r\n\r\nexport type SafeKey<T extends object, K extends PropertyKey> = K extends keyof T ? K : never;\r\n\r\nexport type IsTuple<T> = T extends readonly [...infer Elements] ? (number extends Elements[\"length\"] ? false : true) : false;\r\n\r\n// for classes only:\r\n// export type ExtractInterface<T extends abstract new (...args: any) => any> = T extends abstract new (...args: any) => infer R\r\n// ? { [K in keyof R]: R[K] }\r\n// : never;\r\n\r\n// Struct(Copy), Shape, Interface \r\nexport type Struct<T> = { [K in keyof T]: T[K] };\r\n"],"names":["getPrefixer","prefix","value","getValuePrefixer","dict","k","getKeyPrefixer","obj"],"mappings":"AAsGO,MAAMA,IAAc,CAACC,MAAmB,CAACC,MACrC,GAAGD,CAAM,GAAGC,CAAK,IAGfC,IACT,CAAsCF,MACtC,CAACG,MACU,OAAO,YAAY,OAAO,KAAKA,CAAI,EAAE,IAAI,CAACC,MAAM,CAACA,GAAG,GAAGJ,CAAM,GAAGG,EAAKC,CAAC,CAAC,EAAE,CAAC,CAAC,GAG7EC,IACT,CAAmCL,MACnC,CAACM,MACU,OAAO,YAAY,OAAO,KAAKA,CAAG,EAAE,IAAI,CAACF,MAAM,CAAC,GAAGJ,CAAM,GAAGI,CAAC,IAAIE,EAAIF,CAAC,CAAC,CAAC,CAAC;"}
1
+ {"version":3,"file":"typeCore.es.js","sources":["../src/typeCore.ts"],"sourcesContent":["// @filename: typeCore.ts\r\n\r\n// type SplitStringToUnion<T extends string, Separator extends string> = T extends `${infer First}${Separator}${infer Rest}`\r\n// ? First | SplitStringToUnion<Rest, Separator>\r\n// : T;\r\n\r\n// more useful version of Omit\r\n\r\nexport type Skip<T extends object, K extends keyof T> = Pick<T, Exclude<keyof T, K>>; // FilterOut\r\n// export type Skip<T, K extends keyof T> = {\r\n// [P in keyof T as P extends K ? never : P]: T[P];\r\n// };\r\n\r\n// export type PickEx<T extends object, TKeys extends keyof T | Array<keyof T>> = {\r\n// [K in TKeys extends Array<keyof T> ? TKeys[number] : TKeys]: T[K];\r\n// };\r\n\r\nexport type Filter<T extends object, V> = {\r\n [K in keyof T as T[K] extends V ? K : never]: T[K];\r\n};\r\n\r\nexport type Diff<T, U> = Omit<T, keyof U>;\r\nexport type StrictDiff<T, U> = {\r\n [K in keyof T as K extends keyof U ? (T[K] extends U[K] ? (U[K] extends T[K] ? never : K) : K) : K]: T[K];\r\n};\r\n\r\n/** Mathematical (real) intersection */\r\nexport type CommonPart<T, U> = Pick<T, CommonKeys<T, U>>;\r\nexport type CommonPartEx<T extends object[]> =\r\n T extends [infer A extends object, infer B extends object, ...infer Rest extends object[]]\r\n ? CommonPartEx<[Pick<A, Extract<keyof A, keyof B>>, ...Rest]>\r\n : T extends [infer Only extends object]\r\n ? Only\r\n : unknown;\r\n\r\nexport type CommonPartFromSchema<T extends Record<string, object>> =\r\n keyof T extends infer K ?\r\n K extends any ?\r\n CommonPart<T[K & keyof T], CommonPartFromSchema<Omit<T, K & keyof T>>>\r\n : unknown\r\n : unknown;\r\n\r\nexport type CommonKeys<T, U> = Extract<keyof T, keyof U>;\r\nexport type CommonKeysEx<T extends object[]> =\r\n T extends [infer A extends object, infer B extends object, ...infer Rest extends object[]]\r\n ? CommonKeysEx<[{ [K in Extract<keyof A, keyof B>]: any }, ...Rest]>\r\n : T extends [infer Only extends object]\r\n ? keyof Only\r\n : never;\r\n\r\nexport type UnionToIntersection<U> =\r\n (U extends any ? (x: U) => void : never) extends (x: infer R) => void ? R : never;\r\n\r\nexport type ValueUnion<T> = T[keyof T];\r\n\r\nexport type TupleFromKeys<T, K extends readonly (keyof T)[]> = {\r\n [I in keyof K]: K[I] extends keyof T ? T[K[I]] : never\r\n};\r\n\r\nexport type Extend<T extends object, U extends object, K extends keyof U> = T & { [P in K]: U[K] };\r\n\r\n// Validation\r\nexport type ValueOf<T extends object> = T[keyof T];\r\nexport type OneOnly<T, Key extends keyof T> = { [key in Exclude<keyof T, Key>]: null } & Pick<T, Key>;\r\nexport type OneOfByKey<T> = { [key in keyof T]: OneOnly<T, key> };\r\nexport type OneOfType<T> = ValueOf<OneOfByKey<T>>;\r\n\r\n// Extract version\r\nexport type KeyOfType<FromType extends object, KeepType = any, Include = true> = {\r\n [K in keyof FromType]: FromType[K] extends KeepType ? (Include extends true ? K : never) : Include extends true ? never : K;\r\n}[keyof FromType];\r\n\r\nexport type Weaken<T, K extends keyof T> = {\r\n [P in keyof T]: P extends K ? any : T[P];\r\n};\r\n\r\nexport type Mutable<T extends object> = {\r\n -readonly [K in keyof T]: T[K];\r\n};\r\n\r\nexport type Constructor = new (...args: any[]) => any;\r\n// export type ConstructorParameters<TConstructor extends Constructor> = TConstructor extends new (...args: infer TArgs) => any ? TArgs : never;\r\n\r\n// Extracts class instance type from class constructor\r\nexport type ConstructorClass<TConstructor extends Constructor> = TConstructor extends new (...args: any[]) => infer TClass ? TClass : never;\r\n\r\n// This is what we want: to be able to create new class instances\r\n// either with or without \"new\" keyword\r\nexport type CallableConstructor<TConstructor extends Constructor> = TConstructor &\r\n ((...args: ConstructorParameters<TConstructor>) => ConstructorClass<TConstructor>);\r\n\r\n// ToUpperCase\r\nexport type ToUpper<T> = T extends string\r\n ? Uppercase<T>\r\n : {\r\n [K in keyof T as K extends string ? Uppercase<K> : K]: T[K];\r\n };\r\n\r\n// ToLowerCase\r\nexport type ToLower<T> = T extends string\r\n ? Lowercase<T>\r\n : {\r\n [K in keyof T as K extends string ? Lowercase<K> : K]: T[K];\r\n };\r\n\r\nexport type AddPrefix<T, TPrefix extends string> = T extends string\r\n ? `${TPrefix}${T}`\r\n : {\r\n [K in keyof T as AddPrefix<K, TPrefix>]: T[K];\r\n };\r\n\r\nexport type AddSuffix<T, TSuffix extends string> = T extends string\r\n ? `${T}${TSuffix}`\r\n : {\r\n [K in keyof T as AddSuffix<K, TSuffix>]: T[K];\r\n };\r\n\r\nexport type RemovePrefix<T, TPrefix extends string> = T extends string\r\n ? T extends `${TPrefix}${infer Tail}`\r\n ? RemovePrefix<Tail, TPrefix>\r\n : T // never?\r\n : {\r\n [K in keyof T as RemovePrefix<K, TPrefix>]: T[K];\r\n };\r\n\r\nexport type RemoveSuffix<T, TSuffix extends string> = T extends string\r\n ? T extends `${infer Head}${TSuffix}`\r\n ? RemoveSuffix<Head, TSuffix>\r\n : T // never?\r\n : {\r\n [K in keyof T as RemoveSuffix<K, TSuffix>]: T[K];\r\n };\r\n\r\nexport const getPrefixer = (prefix: string) => (value: string) => {\r\n return `${prefix}${value}`;\r\n};\r\n\r\nexport const getValuePrefixer =\r\n <T extends { [key: string]: string }>(prefix: string) =>\r\n (dict: T): T => {\r\n return Object.fromEntries(Object.keys(dict).map((k) => [k, `${prefix}${dict[k]}`])) as T;\r\n };\r\n\r\nexport const getKeyPrefixer =\r\n <T extends { [key: string]: any }>(prefix: string) =>\r\n (obj: T): object => {\r\n return Object.fromEntries(Object.keys(obj).map((k) => [`${prefix}${k}`, obj[k]]));\r\n };\r\n\r\n// export type MaybePromise<T> = T extends undefined ? void : T | PromiseLike<Awaited<T>>; // TODO: check\r\nexport type MaybePromise<T> = T extends undefined ? void : T | PromiseLike<T>;\r\n\r\nexport type Func<TArgs extends any[] = any[], T = any> = {\r\n (...args: TArgs): T;\r\n name?: string;\r\n};\r\n\r\nexport type Action<TArgs extends any[] = any[]> = Func<TArgs, void>;\r\n\r\nexport type AsyncFunc<TArgs extends any[] = any[], T = any> = Func<TArgs, PromiseLike<T>>;\r\n\r\n// use built-in ReturnType:\r\n// type ReturnType<T extends (...args: any) => any> = T extends (...args: any) => infer R ? R : any;\r\n// my version:\r\n// export type ReturnType<TFunc> = TFunc extends Func<infer TArgs, infer TResult> ? TResult : never;\r\n\r\n// use built-in Awaited type:\r\n/*\r\n// Recursively unwraps the \"awaited type\" of a type. \r\n// Non-promise \"thenables\" should resolve to `never`. \r\n// This emulates the behavior of `await`.\r\ntype Awaited<T> = T extends null | undefined ? T : // special case for `null | undefined` when not in `--strictNullChecks` mode\r\n T extends object & { then(onfulfilled: infer F, ...args: infer _): any; } ? // `await` only unwraps object types with a callable `then`. Non-object types are not unwrapped\r\n F extends ((value: infer V, ...args: infer _) => any) ? // if the argument to `then` is callable, extracts the first argument\r\n Awaited<V> : // recursively unwrap the value\r\n never : // the argument to `then` was not callable\r\n T; // non-object or non-thenable\r\n*/\r\n\r\n// my simple version (PromiseType):\r\n// export type Awaited<TPromise> = TPromise extends PromiseLike<infer TResult> ? TResult : TPromise;\r\n\r\n// AsyncReturnType\r\nexport type AwaitedReturnType<TFunc extends Func> = Awaited<ReturnType<TFunc>>;\r\n\r\nexport type Factory<T = any, TArgs extends any[] = []> = Func<TArgs, T>;\r\n\r\nexport type IProvider<TFactory = Factory> = {\r\n get: TFactory;\r\n};\r\n\r\n// (Func)ParameterType\r\n// type Parameters<T extends (...args: any) => any> = T extends (...args: infer P) => any ? P : never;\r\n/** see also built-in Parameters type */\r\nexport type ParameterType<TFunc, TParamIndex extends number> = TFunc extends Func<infer TArgs extends any[], infer TResult>\r\n ? TArgs[TParamIndex]\r\n : never;\r\n\r\n// Lambda?\r\n// export type Executor<T = void, TArgs extends any[] = []> = Func<TArgs, T> | AsyncFunc<[], T>; // same\r\nexport type Executor<T = void, TArgs extends any[] = []> = Func<TArgs, T | PromiseLike<T>>;\r\n\r\nexport type Overwrite<Base extends object, Overrides extends object> = Omit<Base, keyof Overrides> & Overrides;\r\n// or\r\n// export type Overwrite<Base extends object, Overrides extends object> = Pick<Base, Exclude<keyof Base, keyof Overrides>> & Overrides;\r\n\r\nexport type Extends<T extends object, TBase extends object> = T extends TBase ? true : false;\r\n\r\n// more strict than Extract\r\nexport type RequireExtends<T extends TBase, TBase extends object> = T;\r\n\r\nexport type Strict<T, U extends T> =\r\n Exclude<keyof U, keyof T> extends never ? U : never;\r\n\r\nexport type MaybeExtends<T, TShape> = T extends TShape ? T : never;\r\n\r\nexport type KeyOf<T extends object, TKey extends keyof T> = TKey;\r\n\r\nexport type IsKeyOf<T, TKey extends object> = TKey extends keyof T ? true : false;\r\n\r\nexport type KeysOf<T extends object, TKeys extends keyof T | Array<keyof T>> = TKeys extends Array<keyof T> ? TKeys[number] : TKeys;\r\n\r\nexport type SafeKey<T extends object, K extends PropertyKey> = K extends keyof T ? K : never;\r\n\r\nexport type IsTuple<T> = T extends readonly [...infer Elements] ? (number extends Elements[\"length\"] ? false : true) : false;\r\n\r\n// for classes only:\r\n// export type ExtractInterface<T extends abstract new (...args: any) => any> = T extends abstract new (...args: any) => infer R\r\n// ? { [K in keyof R]: R[K] }\r\n// : never;\r\n\r\n// Struct(Copy), Shape, Interface \r\nexport type Struct<T> = { [K in keyof T]: T[K] };\r\n"],"names":["getPrefixer","prefix","value","getValuePrefixer","dict","k","getKeyPrefixer","obj"],"mappings":"AAqIO,MAAMA,IAAc,CAACC,MAAmB,CAACC,MACrC,GAAGD,CAAM,GAAGC,CAAK,IAGfC,IACT,CAAsCF,MAClC,CAACG,MACU,OAAO,YAAY,OAAO,KAAKA,CAAI,EAAE,IAAI,CAACC,MAAM,CAACA,GAAG,GAAGJ,CAAM,GAAGG,EAAKC,CAAC,CAAC,EAAE,CAAC,CAAC,GAGjFC,IACT,CAAmCL,MAC/B,CAACM,MACU,OAAO,YAAY,OAAO,KAAKA,CAAG,EAAE,IAAI,CAACF,MAAM,CAAC,GAAGJ,CAAM,GAAGI,CAAC,IAAIE,EAAIF,CAAC,CAAC,CAAC,CAAC;"}
@@ -2,6 +2,7 @@ import { CallableConstructor, Constructor } from './typeCore';
2
2
  export declare function keysOf<T extends object>(obj: T): Array<keyof T>;
3
3
  export declare function entry<T extends object, TKey extends keyof T>(obj: T, name: TKey, caseInsensitive?: boolean): [TKey, T[TKey]];
4
4
  export declare function satisfies<TShape>(): <T extends TShape>(obj: T) => T;
5
+ export declare function strictSatisfies<T>(): <U extends T>(u: U & Record<Exclude<keyof U, keyof T>, never>) => U & Record<Exclude<keyof U, keyof T>, never>;
5
6
  export declare const keyOf: <T extends object, TKey extends keyof T = keyof T>(key: TKey, obj?: T) => TKey;
6
7
  export declare function nameOf<T extends object>(f: (x: T) => T[keyof T]): keyof T;
7
8
  type $KeyMap<T extends object> = {
@@ -1 +1 @@
1
- {"version":3,"file":"typeUtils.d.ts","sourceRoot":"","sources":["../src/typeUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"typeUtils.d.ts","sourceRoot":"","sources":["../src/typeUtils.ts"],"names":[],"mappings":"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"}