{"version":3,"sources":["indexed-db.ts"],"sourcesContent":["import { Runtime } from \"../../runtime/runtime.ts\";\nimport { Compiler } from \"../../compiler/compiler.ts\";\nimport { Pointer } from \"../../runtime/pointers.ts\";\n\nimport { NOT_EXISTING } from \"../../runtime/constants.ts\";\nimport { AsyncStorageLocation, site_suffix } from \"../storage.ts\";\n\nimport localforage from \"../../lib/localforage/localforage.js\";\nimport type { ExecConditions } from \"../../utils/global_types.ts\";\n\n// db based storage for DATEX value caching (IndexDB in the browser)\nconst datex_item_storage = <globalThis.Storage><unknown> localforage.createInstance({name: \"dxitem::\"+site_suffix});\nconst datex_pointer_storage = <globalThis.Storage><unknown> localforage.createInstance({name: \"dxptr::\"+site_suffix});\n\n\nexport class IndexedDBStorageLocation extends AsyncStorageLocation {\n\n\tname = \"INDEXED_DB\"\n\n\tsupportsExecConditions = true\n\n\tisSupported() {\n\t\treturn !!globalThis.indexedDB;\n\t}\n\n\tasync setItem(key: string,value: unknown) {\n\t\tconst dependencies = new Set<Pointer>();\n        await datex_item_storage.setItem(key, <any>Compiler.encodeValue(value, dependencies));\n        return dependencies;\n\t}\n\tasync getItem(key: string, conditions: ExecConditions): Promise<unknown> {\n\t\tconst buffer = <ArrayBuffer><any>await datex_item_storage.getItem(key);\n\t\tif (buffer == null) return NOT_EXISTING;\n\t\telse return Runtime.decodeValue(buffer, false, conditions);\n\t}\n\n\tasync hasItem(key:string) {\n\t\treturn (await datex_item_storage.getItem(key)) !== null\n\t}\n\n\tasync getItemKeys() {\n\t\tconst indexedDBKeys = await datex_item_storage.keys();\n        return (function*(){\n\t\t\tfor (const key of indexedDBKeys!) {\n\t\t\t\tyield key;\n\t\t\t} \n        })()\n\t}\n\n\tasync getPointerIds(): Promise<Generator<string,void,unknown>> {\n\t\tconst indexedDBPointerIds = await datex_pointer_storage.keys();\n        return (function*(){\n\t\t\tfor (const id of indexedDBPointerIds!) {\n\t\t\t\tyield id;\n\t\t\t} \n        })()\n\t}\n\n\tasync removeItem(key: string): Promise<void> {\n\t\tawait datex_item_storage.removeItem(key) // delete from db storage\n\t}\n\tasync getItemValueDXB(key: string): Promise<ArrayBuffer> {\n\t\treturn <ArrayBuffer><any>await datex_item_storage.getItem(key);\n\t}\n\tasync setItemValueDXB(key: string, value: ArrayBuffer) {\n\t\tawait datex_item_storage.setItem(key, value as any);\n\t}\n\n\tasync setPointer(pointer: Pointer<any>): Promise<Set<Pointer<any>>> {\n\t\tconst dependencies = new Set<Pointer>();\n        await datex_pointer_storage.setItem(pointer.id, <any>Compiler.encodeValue(pointer, dependencies, true, false, true));\n        return dependencies;\n\t}\n\tasync getPointerValue(pointerId: string, outer_serialized: boolean, conditions: ExecConditions): Promise<unknown> {\n\t\tconst buffer = <ArrayBuffer><any>await datex_pointer_storage.getItem(pointerId);\n\t\tif (buffer == null) return NOT_EXISTING;\n\t\treturn Runtime.decodeValue(buffer, outer_serialized, conditions);\n\t}\n\tasync removePointer(pointerId: string): Promise<void> {\n\t\tawait datex_pointer_storage.removeItem(pointerId);\n\t}\n\tasync getPointerValueDXB(pointerId: string): Promise<ArrayBuffer|null> {\n\t\treturn <ArrayBuffer><any>await datex_pointer_storage.getItem(pointerId);\n\t}\n\tasync setPointerValueDXB(pointerId: string, value: ArrayBuffer) {\n\t\tawait datex_pointer_storage.setItem(pointerId, value as any);\n\t}\n\n\tasync hasPointer(pointerId: string): Promise<boolean> {\n\t\treturn (await datex_pointer_storage.getItem(pointerId)) !== null\t\n\t}\n\n\tasync clear() {\n\t\tawait datex_item_storage?.clear();\n\t\tawait datex_pointer_storage?.clear();\n\t}\n\n}"],"names":["Runtime","Compiler","NOT_EXISTING","AsyncStorageLocation","site_suffix","localforage","datex_item_storage","createInstance","name","datex_pointer_storage","IndexedDBStorageLocation","supportsExecConditions","isSupported","globalThis","indexedDB","setItem","key","value","dependencies","Set","encodeValue","getItem","conditions","buffer","decodeValue","hasItem","getItemKeys","indexedDBKeys","keys","getPointerIds","indexedDBPointerIds","id","removeItem","getItemValueDXB","setItemValueDXB","setPointer","pointer","getPointerValue","pointerId","outer_serialized","removePointer","getPointerValueDXB","setPointerValueDXB","hasPointer","clear"],"mappings":"AAAA,SAASA,OAAO,QAAQ,2BAA2B;AACnD,SAASC,QAAQ,QAAQ,6BAA6B;AAGtD,SAASC,YAAY,QAAQ,6BAA6B;AAC1D,SAASC,oBAAoB,EAAEC,WAAW,QAAQ,gBAAgB;AAElE,OAAOC,iBAAiB,uCAAuC;AAI/D,IAAMC,qBAAmDD,YAAYE,cAAc,CAAC;IAACC,MAAM,aAAWJ;AAAW,IAC3GK,wBAAsDJ,YAAYE,cAAc,CAAC;IAACC,MAAM,YAAUJ;AAAW;AAGnH,OAAO,MAAMM,iCAAiCP;IAE7CK,OAAO,aAAY;IAEnBG,yBAAyB,CAAA,EAAI;IAE7BC,cAAc;QACb,OAAO,CAAC,CAACC,WAAWC,SAAS;IAC9B;IAEA,MAAMC,QAAQC,GAAW,EAACC,KAAc,EAAE;QACzC,IAAMC,eAAe,IAAIC;QAEnB,OADA,MAAMb,mBAAmBS,OAAO,CAACC,KAAUf,SAASmB,WAAW,CAACH,OAAOC,gBAChEA;IACd;IACA,MAAMG,QAAQL,GAAW,EAAEM,UAA0B,EAAoB;QACxE,IAAMC,SAA2B,MAAMjB,mBAAmBe,OAAO,CAACL;eAClE,AAAIO,AAAU,QAAVA,SAAuBrB,eACfF,QAAQwB,WAAW,CAACD,QAAQ,CAAA,GAAOD;IAChD;IAEA,MAAMG,QAAQT,GAAU,EAAE;QACzB,OAAO,AAAC,MAAMV,mBAAmBe,OAAO,CAACL,SAAU;IACpD;IAEA,MAAMU,cAAc;QACnB,IAAMC,gBAAgB,MAAMrB,mBAAmBsB,IAAI;QAC7C,OAAO,AAAC;YACb,KAAK,IAAMZ,OAAOW,cACjB,MAAMX;QAEF;IACP;IAEA,MAAMa,gBAAyD;QAC9D,IAAMC,sBAAsB,MAAMrB,sBAAsBmB,IAAI;QACtD,OAAO,AAAC;YACb,KAAK,IAAMG,MAAMD,oBAChB,MAAMC;QAEF;IACP;IAEA,MAAMC,WAAWhB,GAAW,EAAiB;QAC5C,MAAMV,mBAAmB0B,UAAU,CAAChB;IACrC;IACA,MAAMiB,gBAAgBjB,GAAW,EAAwB;QACxD,OAAyB,MAAMV,mBAAmBe,OAAO,CAACL;IAC3D;IACA,MAAMkB,gBAAgBlB,GAAW,EAAEC,KAAkB,EAAE;QACtD,MAAMX,mBAAmBS,OAAO,CAACC,KAAKC;IACvC;IAEA,MAAMkB,WAAWC,OAAqB,EAA8B;QACnE,IAAMlB,eAAe,IAAIC;QAEnB,OADA,MAAMV,sBAAsBM,OAAO,CAACqB,QAAQL,EAAE,EAAO9B,SAASmB,WAAW,CAACgB,SAASlB,cAAc,CAAA,GAAM,CAAA,GAAO,CAAA,KACvGA;IACd;IACA,MAAMmB,gBAAgBC,SAAiB,EAAEC,gBAAyB,EAAEjB,UAA0B,EAAoB;QACjH,IAAMC,SAA2B,MAAMd,sBAAsBY,OAAO,CAACiB;eACrE,AAAIf,AAAU,QAAVA,SAAuBrB,eACpBF,QAAQwB,WAAW,CAACD,QAAQgB,kBAAkBjB;IACtD;IACA,MAAMkB,cAAcF,SAAiB,EAAiB;QACrD,MAAM7B,sBAAsBuB,UAAU,CAACM;IACxC;IACA,MAAMG,mBAAmBH,SAAiB,EAA6B;QACtE,OAAyB,MAAM7B,sBAAsBY,OAAO,CAACiB;IAC9D;IACA,MAAMI,mBAAmBJ,SAAiB,EAAErB,KAAkB,EAAE;QAC/D,MAAMR,sBAAsBM,OAAO,CAACuB,WAAWrB;IAChD;IAEA,MAAM0B,WAAWL,SAAiB,EAAoB;QACrD,OAAO,AAAC,MAAM7B,sBAAsBY,OAAO,CAACiB,eAAgB;IAC7D;IAEA,MAAMM,QAAQ;QACb,MAAMtC,oBAAoBsC,SAC1B,MAAMnC,uBAAuBmC;IAC9B;AAED","sourceRoot":"/lib/datex-core-js-legacy-0.3.15/storage/storage-locations/","file":"indexed-db.ts"}