{"version":3,"sources":["local-storage.ts"],"sourcesContent":["import { Compiler } from \"../../compiler/compiler.ts\";\nimport { Storage, SyncStorageLocation } from \"../storage.ts\";\nimport { Pointer } from \"../../runtime/pointers.ts\";\nimport { Runtime } from \"../../runtime/runtime.ts\";\nimport { NOT_EXISTING } from \"../../runtime/constants.ts\";\nimport { base64ToArrayBuffer } from \"../../utils/utils.ts\";\nimport { arrayBufferToBase64 } from \"../../datex_all.ts\";\nimport { localStorage } from \"./local-storage-compat.ts\";\nimport type { ExecConditions } from \"../../utils/global_types.ts\";\n\nexport class LocalStorageLocation extends SyncStorageLocation {\n\tname = \"LOCAL_STORAGE\"\n\n\tsupportsExecConditions = true\n\n\tisSupported() {\n\t\treturn !!localStorage;\n\t}\n\n\tonAfterSnapshot(isExit: boolean) {\n\t\t// exit snapshot is always saved independantly\n\t\tif (!isExit && localStorage.saveFile) localStorage.saveFile(); // deno local storage, save file afer save on exit or interval\n\t}\n\n\tsetItem(key: string, value: unknown) {\n\t\tconst inserted_ptrs = new Set<Pointer>();\n        localStorage.setItem(Storage.item_prefix+key, Compiler.encodeValueBase64(value, inserted_ptrs));  // serialized pointer\n        return inserted_ptrs;\n\t}\n\n\tgetItem(key: string, conditions?: ExecConditions) {\n\t\tconst base64 = localStorage.getItem(Storage.item_prefix+key);\n\t\tif (base64==null) return NOT_EXISTING;\n\t\telse return Runtime.decodeValueBase64(base64, false, conditions);\n\t}\n\n\t*getItemKeys() {\n\t\tfor (const key of Object.keys(localStorage)) {\n\t\t\tif (key.startsWith(Storage.item_prefix)) {\n\t\t\t\tyield key.replace(Storage.item_prefix,\"\");\n\t\t\t}\n\t\t}\n\t}\n\n\t*getPointerIds() {\n\t\tfor (const key of Object.keys(localStorage)) {\n\t\t\tif (key.startsWith(Storage.pointer_prefix)) {\n\t\t\t\tyield key.replace(Storage.pointer_prefix,\"\");\n\t\t\t}\n\t\t}\n\t}\n\n\thasItem(key:string) {\n\t\treturn localStorage.getItem(Storage.item_prefix+key) != null\n\t}\n\n\tremoveItem(key: string): void {\n\t\tlocalStorage.removeItem(Storage.item_prefix+key) // delete from local storage\n\t}\n\tgetItemValueDXB(key: string): ArrayBuffer|null {\n\t\tconst base64 = localStorage.getItem(Storage.item_prefix+key);\n        if (base64!=null) return base64ToArrayBuffer(base64);\n\t\treturn null;\n\t}\n\tsetItemValueDXB(key: string, value: ArrayBuffer) {\n\t\tlocalStorage.setItem(Storage.item_prefix+key, arrayBufferToBase64(value));\n\t}\n\t\n\tsetPointer(pointer: Pointer<any>): Set<Pointer<any>> {\n\t\tconst inserted_ptrs = new Set<Pointer>();\n        localStorage.setItem(Storage.pointer_prefix+pointer.id, Compiler.encodeValueBase64(pointer, inserted_ptrs, true, false, true));  // serialized pointer\n        return inserted_ptrs;\n\t}\n\tasync getPointerValue(pointerId: string, outer_serialized: boolean, conditions?: ExecConditions): Promise<unknown> {\n\t\tconst base64 = localStorage.getItem(Storage.pointer_prefix+pointerId);\n        if (base64 == null) return NOT_EXISTING;\n        return await Runtime.decodeValueBase64(base64, outer_serialized, conditions);\n\t}\n\tremovePointer(pointerId: string): void {\n\t\tlocalStorage.removeItem(Storage.pointer_prefix+pointerId);\n\t}\n\tgetPointerValueDXB(pointerId: string): ArrayBuffer|null {\n\t\tconst base64 = localStorage.getItem(Storage.pointer_prefix+pointerId);\n        if (base64!=null) return base64ToArrayBuffer(base64);\n\t\treturn null;\n\t}\n\tsetPointerValueDXB(pointerId: string, value: ArrayBuffer) {\n\t\tlocalStorage.setItem(Storage.pointer_prefix+pointerId, arrayBufferToBase64(value));\n\t}\n\n\thasPointer(pointerId: string): boolean {\n\t\treturn !!localStorage.getItem(Storage.pointer_prefix+pointerId)\n\t}\n\n\tclear() {\n\t\tfor (const key of Object.keys(localStorage)) {\n\t\t\tif (key.startsWith(Storage.item_prefix) || key.startsWith(Storage.pointer_prefix)) localStorage.removeItem(key);\n\t\t}\n\t}\n\n}"],"names":["Compiler","Storage","SyncStorageLocation","Runtime","NOT_EXISTING","base64ToArrayBuffer","arrayBufferToBase64","localStorage","LocalStorageLocation","name","supportsExecConditions","isSupported","onAfterSnapshot","isExit","saveFile","setItem","key","value","inserted_ptrs","Set","item_prefix","encodeValueBase64","getItem","conditions","base64","decodeValueBase64","getItemKeys","Object","keys","startsWith","replace","getPointerIds","pointer_prefix","hasItem","removeItem","getItemValueDXB","setItemValueDXB","setPointer","pointer","id","getPointerValue","pointerId","outer_serialized","removePointer","getPointerValueDXB","setPointerValueDXB","hasPointer","clear"],"mappings":"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","sourceRoot":"/lib/datex-core-js-legacy-0.3.15/storage/storage-locations/","file":"local-storage.ts"}