{"version":3,"file":"firedev-storage.mjs","sources":["../../../tmp-libs-for-dist-websql/firedev-storage/projects/firedev-storage/src/lib/helpers.ts","../../../tmp-libs-for-dist-websql/firedev-storage/projects/firedev-storage/src/lib/constants.ts","../../../tmp-libs-for-dist-websql/firedev-storage/projects/firedev-storage/src/lib/storage.ts","../../../tmp-libs-for-dist-websql/firedev-storage/projects/firedev-storage/src/lib/index.ts","../../../tmp-libs-for-dist-websql/firedev-storage/projects/firedev-storage/src/firedev-storage.ts"],"sourcesContent":["\n\n\nexport const keyValue = (classFun, memberName) => {\n\n  const res = `firedev.localstorage.class.${classFun.name}.prop.${memberName}`\n  return res;\n}\n\nexport const keyDefaultValueAreadySet = (classFun, memberName) => {\n  const res = keyValue(classFun, memberName) + 'defaultvalueisset';\n  return res;\n}\n\n\n\n ;({}); // @--end-of-file-for-module=firedev-storage lib/helpers.ts","\n\n\nimport { Helpers, _ } from \"tnp-core/websql\";\n\nimport * as localForge from 'localforage';\n\n\n\n\nexport const storeName = 'firedev-storage_'\n\n  + window?.location.port;\n\n\n\n\nlet environment = {} as any;\n/* */\n/* */\n/* */\n  \n\n// @ts-ignore\nenvironment = window['ENV'];\n\n\n\n\nconst websql = Helpers.isWebSQL ? 'websql' : '';\n\nexport const storLocalStorage = localForge.createInstance({\n  driver: localForge.LOCALSTORAGE,\n  storeName: [\n    storeName,\n    'LOCALSTORAGE',\n    _.kebabCase(environment?.currentProjectGenericName) + websql,\n  ].join('_')\n  , // + _.kebabCase(window.location.origin),\n}) as any; // TODO UNCOMMENT any\n\n\n\n\n\nexport const storIndexdDb = localForge.createInstance({\n  driver: localForge.INDEXEDDB,\n  storeName: [\n    storeName,\n    'INDEXEDDB',\n    _.kebabCase(environment?.currentProjectGenericName) + websql,\n  ].join('_')\n}) as any; // TODO UNCOMMENT any\n\n\n\n ;({}); // @--end-of-file-for-module=firedev-storage lib/constants.ts","\n\n\nimport { _ } from 'tnp-core/websql';\nimport { keyDefaultValueAreadySet, keyValue } from './helpers';\nimport { Models } from './models';\nimport { FileStor } from './file-stor';\n\nimport { storIndexdDb, storLocalStorage } from './constants';\n\n\n\n\nconst AWAITING_INTERVAL_TIME = 200;\n\n\n\nexport function uncache<CLASS_FUNCTION = any>(onlyInThisComponentClass: CLASS_FUNCTION, propertyValueToDeleteFromCache: keyof CLASS_FUNCTION) {\n  if (!onlyInThisComponentClass) { // @ts-ignore\n    onlyInThisComponentClass = { name: '__GLOBAL_NAMESPACE__' };\n  }\n  return Promise.all([\n\n    storLocalStorage.removeItem(keyValue(onlyInThisComponentClass, propertyValueToDeleteFromCache)),\n    storLocalStorage.removeItem(keyDefaultValueAreadySet(onlyInThisComponentClass, propertyValueToDeleteFromCache)),\n    storIndexdDb.removeItem(keyValue(onlyInThisComponentClass, propertyValueToDeleteFromCache)),\n    storIndexdDb.removeItem(keyDefaultValueAreadySet(onlyInThisComponentClass, propertyValueToDeleteFromCache)),\n\n  ])\n}\n\n\nclass FiredevStorage {\n\n\n  private static pendingOperatins: Models.PendingOperation[] = [];\n  private static id = 0;\n\n  /**\n   * TODO This is fine for now, but could be something smarter here\n   */\n  public static async awaitPendingOperatios(id = FiredevStorage.id++): Promise<void> {\n\n    if (id > Number.MAX_SAFE_INTEGER - 2) {\n      FiredevStorage.id = 0;\n      id = FiredevStorage.id++;\n    }\n    const pending = this.pendingOperatins as Models.PendingOperation[];\n    const toDeleteIndex = [];\n    for (let index = 0; index < pending.length; index++) {\n      const op = pending[index] as Models.PendingOperation;\n\n      if (!op.isDone) {\n        await new Promise<void>(async (resovle, reject) => {\n          setTimeout(async () => {\n            await this.awaitPendingOperatios(id);\n            resovle();\n          }, AWAITING_INTERVAL_TIME)\n        })\n        return;\n      } else {\n        toDeleteIndex.push(index);\n      }\n    }\n    for (let index = 0; index < toDeleteIndex.length; index++) {\n      const toDelete = toDeleteIndex[index];\n      pending.splice(toDelete, 1);\n    }\n  }\n\n  static get property() {\n    return new FiredevStorage();\n  }\n\n\n\n  private onlyInThisComponentClass?: Function;\n  private defaultValue: any;\n  private engine: Models.StorgeEngine;\n\n\n\n/* */\n/* */\n  \n\n\n\n\n  public get in() {\n    const that = this;\n    return {\n      get indexedb() {\n        that.engine = 'indexeddb';\n        return that as Omit<FiredevStorage, 'in'>;\n      },\n      get localstorage() {\n        that.engine = 'localstorage';\n        return that as Omit<FiredevStorage, 'in'>;\n      },\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n  \n    }\n  }\n\n\n\n\n\n\n  public for(onlyInThisComponentClass?: Function): Omit<FiredevStorage, 'for' | 'in'> {\n    this.onlyInThisComponentClass = onlyInThisComponentClass;\n    return this as Omit<FiredevStorage, 'for' | 'in'>;\n  }\n\n\n\n\n  public withDefaultValue(defaultValue?: any): any {\n\n    return this.action(defaultValue, this.getEngine(), this.engine)\n  }\n\n\n\n  withOptions(options: {\n    /**\n     * default value\n     */\n    defaultValue?: any;\n    transformFrom?: (valueFromDb: any) => any,\n    transformTo?: (valueThatGetToDB: any) => any,\n  }) {\n    const { defaultValue, transformFrom, transformTo } = (options || {}) as any;\n    return this.action(\n      defaultValue ? defaultValue : this.defaultValue,\n      this.getEngine(),\n      this.engine,\n      transformFrom,\n      transformTo,\n    );\n  }\n\n\n\n\n\n\n\n  private getEngine() {\n    switch (this.engine) {\n\n      case 'localstorage':\n        return storLocalStorage;\n      case 'indexeddb':\n        return storIndexdDb;\n\n/* */\n/* */\n/* */\n/* */\n/* */\n  \n    }\n  }\n\n\n\n  private endObserverAction(observe: Models.PendingOperation) {\n\n    observe.isDone = true;\n  }\n\n\n\n  private action = (\n    defaultValue: any,\n    storageEngine\n\n      : Models.StorType\n\n    ,\n    engine: Models.StorgeEngine,\n    transformFrom?,\n    transformTo?,\n  ) => {\n    if (!this.onlyInThisComponentClass) { // @ts-ignore\n      this.onlyInThisComponentClass = { name: '__GLOBAL_NAMESPACE__' };\n    }\n\n    return (target: any, memberName: string) => {\n      let currentValue: any = target[memberName];\n\n      const setItemDefaultValue = async () => {\n\n        const observe = {\n          engine,\n          id: 'setting default value'\n        } as Models.PendingOperation;\n        FiredevStorage.pendingOperatins.push(observe);\n\n        await new Promise<void>((resolve, reject) => {\n          storageEngine.getItem(keyValue(this.onlyInThisComponentClass, memberName), (err, valFromDb) => {\n\n            currentValue = transformFrom ? transformFrom(valFromDb) : valFromDb;\n\n            resolve();\n            this.endObserverAction(observe);\n          })\n        });\n\n      }\n\n      if (defaultValue !== void 0) {\n\n        const observe = {\n          engine,\n          id: 'setting not rivial default value'\n        } as Models.PendingOperation;\n        FiredevStorage.pendingOperatins.push(observe);\n\n        (new Promise<void>((resolve, reject) => {\n          storageEngine.getItem(keyDefaultValueAreadySet(this.onlyInThisComponentClass, memberName), async (err, val) => {\n\n            if (val) {\n              await setItemDefaultValue();\n              resolve()\n            } else {\n              await new Promise<void>((res, rej) => {\n                storageEngine.setItem(keyDefaultValueAreadySet(this.onlyInThisComponentClass, memberName), true, (err, v) => {\n                  res();\n                })\n              });\n\n              await new Promise<void>((res, rej) => {\n                storageEngine.setItem(keyValue(this.onlyInThisComponentClass, memberName),\n                  transformTo ? transformTo(defaultValue) : defaultValue, (err, val) => {\n                    res();\n                  })\n              });\n\n              currentValue = defaultValue;\n\n              resolve()\n            }\n          });\n        })).then(() => {\n          this.endObserverAction(observe);\n        });\n\n\n      } else {\n        setItemDefaultValue();\n      }\n\n      Object.defineProperty(target, memberName, {\n        set: (newValue: any) => {\n\n          const observe = {\n            engine,\n            id: 'setting in SET not rivial default value'\n          } as Models.PendingOperation;\n          FiredevStorage.pendingOperatins.push(observe);\n\n          (new Promise<void>((resolve, reject) => {\n            storageEngine.setItem(\n              keyValue(this.onlyInThisComponentClass, memberName),\n              transformTo ? transformTo(newValue) : newValue,\n              (err, savedValue) => {\n                resolve();\n              }\n            );\n          })).then(() => {\n            this.endObserverAction(observe);\n          });\n\n          currentValue = newValue;\n        },\n        get: () => currentValue,\n      });\n    };\n  };\n\n\n\n\n}\n\nexport const Stor = FiredevStorage;\n\n ;({}); // @--end-of-file-for-module=firedev-storage lib/storage.ts","\n\nexport * from './storage';\n\n ;({}); // @--end-of-file-for-module=firedev-storage lib/index.ts","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}