taon-storage 18.0.8

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.
Files changed (88) hide show
  1. package/assets/shared/shared_folder_info.txt +7 -0
  2. package/browser/README.md +24 -0
  3. package/browser/esm2022/lib/constants.mjs +30 -0
  4. package/browser/esm2022/lib/file-stor.mjs +56 -0
  5. package/browser/esm2022/lib/helpers.mjs +10 -0
  6. package/browser/esm2022/lib/index.mjs +4 -0
  7. package/browser/esm2022/lib/models.mjs +4 -0
  8. package/browser/esm2022/lib/storage.mjs +187 -0
  9. package/browser/esm2022/public-api.mjs +2 -0
  10. package/browser/esm2022/taon-storage.mjs +5 -0
  11. package/browser/fesm2022/taon-storage.mjs +235 -0
  12. package/browser/fesm2022/taon-storage.mjs.map +1 -0
  13. package/browser/index.d.ts +6 -0
  14. package/browser/lib/constants.d.ts +4 -0
  15. package/browser/lib/file-stor.d.ts +10 -0
  16. package/browser/lib/helpers.d.ts +3 -0
  17. package/browser/lib/index.d.ts +2 -0
  18. package/browser/lib/models.d.ts +11 -0
  19. package/browser/lib/storage.d.ts +33 -0
  20. package/browser/package.json +25 -0
  21. package/browser/public-api.d.ts +2 -0
  22. package/client/README.md +24 -0
  23. package/client/esm2022/lib/constants.mjs +30 -0
  24. package/client/esm2022/lib/file-stor.mjs +56 -0
  25. package/client/esm2022/lib/helpers.mjs +10 -0
  26. package/client/esm2022/lib/index.mjs +4 -0
  27. package/client/esm2022/lib/models.mjs +4 -0
  28. package/client/esm2022/lib/storage.mjs +187 -0
  29. package/client/esm2022/public-api.mjs +2 -0
  30. package/client/esm2022/taon-storage.mjs +5 -0
  31. package/client/fesm2022/taon-storage.mjs +235 -0
  32. package/client/fesm2022/taon-storage.mjs.map +1 -0
  33. package/client/index.d.ts +6 -0
  34. package/client/lib/constants.d.ts +4 -0
  35. package/client/lib/file-stor.d.ts +10 -0
  36. package/client/lib/helpers.d.ts +3 -0
  37. package/client/lib/index.d.ts +2 -0
  38. package/client/lib/models.d.ts +11 -0
  39. package/client/lib/storage.d.ts +33 -0
  40. package/client/public-api.d.ts +2 -0
  41. package/index.d.ts +1 -0
  42. package/index.js +5 -0
  43. package/index.js.map +1 -0
  44. package/lib/build-info._auto-generated_.d.ts +1 -0
  45. package/lib/build-info._auto-generated_.js +5 -0
  46. package/lib/build-info._auto-generated_.js.map +1 -0
  47. package/lib/constants.d.ts +3 -0
  48. package/lib/constants.js +48 -0
  49. package/lib/constants.js.map +1 -0
  50. package/lib/file-stor.d.ts +9 -0
  51. package/lib/file-stor.js +94 -0
  52. package/lib/file-stor.js.map +1 -0
  53. package/lib/helpers.d.ts +2 -0
  54. package/lib/helpers.js +15 -0
  55. package/lib/helpers.js.map +1 -0
  56. package/lib/index.d.ts +1 -0
  57. package/lib/index.js +5 -0
  58. package/lib/index.js.map +1 -0
  59. package/lib/models.d.ts +10 -0
  60. package/lib/models.js +5 -0
  61. package/lib/models.js.map +1 -0
  62. package/lib/storage.d.ts +38 -0
  63. package/lib/storage.js +296 -0
  64. package/lib/storage.js.map +1 -0
  65. package/package.json +42 -0
  66. package/src.d.ts +6 -0
  67. package/taon.jsonc +30 -0
  68. package/tmp-environment.json +358 -0
  69. package/websql/README.md +24 -0
  70. package/websql/esm2022/lib/constants.mjs +30 -0
  71. package/websql/esm2022/lib/file-stor.mjs +56 -0
  72. package/websql/esm2022/lib/helpers.mjs +10 -0
  73. package/websql/esm2022/lib/index.mjs +4 -0
  74. package/websql/esm2022/lib/models.mjs +4 -0
  75. package/websql/esm2022/lib/storage.mjs +187 -0
  76. package/websql/esm2022/public-api.mjs +2 -0
  77. package/websql/esm2022/taon-storage.mjs +5 -0
  78. package/websql/fesm2022/taon-storage.mjs +235 -0
  79. package/websql/fesm2022/taon-storage.mjs.map +1 -0
  80. package/websql/index.d.ts +6 -0
  81. package/websql/lib/constants.d.ts +4 -0
  82. package/websql/lib/file-stor.d.ts +10 -0
  83. package/websql/lib/helpers.d.ts +3 -0
  84. package/websql/lib/index.d.ts +2 -0
  85. package/websql/lib/models.d.ts +11 -0
  86. package/websql/lib/storage.d.ts +33 -0
  87. package/websql/package.json +25 -0
  88. package/websql/public-api.d.ts +2 -0
@@ -0,0 +1,7 @@
1
+ THIS FILE IS GENERATED. THIS FILE IS GENERATED. THIS FILE IS GENERATED.
2
+
3
+ Assets from this folder are being shipped with this npm package (taon-storage@18.0.8)
4
+ created from this project.
5
+
6
+ THIS FILE IS GENERATED.THIS FILE IS GENERATED. THIS FILE IS GENERATED.
7
+
@@ -0,0 +1,24 @@
1
+ # MyLib
2
+
3
+ This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.2.0.
4
+
5
+ ## Code scaffolding
6
+
7
+ Run `ng generate component component-name --project my-lib` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project my-lib`.
8
+ > Note: Don't forget to add `--project my-lib` or else it will be added to the default project in your `angular.json` file.
9
+
10
+ ## Build
11
+
12
+ Run `ng build my-lib` to build the project. The build artifacts will be stored in the `dist/` directory.
13
+
14
+ ## Publishing
15
+
16
+ After building your library with `ng build my-lib`, go to the dist folder `cd dist/my-lib` and run `npm publish`.
17
+
18
+ ## Running unit tests
19
+
20
+ Run `ng test my-lib` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
+
22
+ ## Further help
23
+
24
+ To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
@@ -0,0 +1,30 @@
1
+ import { Helpers, _ } from "tnp-core/browser";
2
+ import * as localForge from 'localforage';
3
+ export const storeName = 'taon-storage_'
4
+ + window?.location.port;
5
+ let environment = {};
6
+ /* */
7
+ /* */
8
+ /* */
9
+ // @ts-ignore
10
+ environment = window['ENV'];
11
+ const websql = Helpers.isWebSQL ? 'websql' : '';
12
+ export const storLocalStorage = localForge.createInstance({
13
+ driver: localForge.LOCALSTORAGE,
14
+ storeName: [
15
+ storeName,
16
+ 'LOCALSTORAGE',
17
+ _.kebabCase(environment?.currentProjectGenericName) + websql,
18
+ ].join('_'), // + _.kebabCase(window.location.origin),
19
+ }); // TODO UNCOMMENT any
20
+ export const storIndexdDb = localForge.createInstance({
21
+ driver: localForge.INDEXEDDB,
22
+ storeName: [
23
+ storeName,
24
+ 'INDEXEDDB',
25
+ _.kebabCase(environment?.currentProjectGenericName) + websql,
26
+ ].join('_')
27
+ }); // TODO UNCOMMENT any
28
+ ;
29
+ ({}); // @--end-of-file-for-module=taon-storage lib/constants.ts
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3QvdGFvbi1zdG9yYWdlL3Byb2plY3RzL3Rhb24tc3RvcmFnZS9zcmMvbGliL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTlDLE9BQU8sS0FBSyxVQUFVLE1BQU0sYUFBYSxDQUFDO0FBSzFDLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxlQUFlO01BRXBDLE1BQU0sRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDO0FBSzFCLElBQUksV0FBVyxHQUFHLEVBQVMsQ0FBQztBQUM1QixLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFHTCxhQUFhO0FBQ2IsV0FBVyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUs1QixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUVoRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDO0lBQ3hELE1BQU0sRUFBRSxVQUFVLENBQUMsWUFBWTtJQUMvQixTQUFTLEVBQUU7UUFDVCxTQUFTO1FBQ1QsY0FBYztRQUNkLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLHlCQUF5QixDQUFDLEdBQUcsTUFBTTtLQUM3RCxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFDVCx5Q0FBeUM7Q0FDNUMsQ0FBUSxDQUFDLENBQUMscUJBQXFCO0FBTWhDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDO0lBQ3BELE1BQU0sRUFBRSxVQUFVLENBQUMsU0FBUztJQUM1QixTQUFTLEVBQUU7UUFDVCxTQUFTO1FBQ1QsV0FBVztRQUNYLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLHlCQUF5QixDQUFDLEdBQUcsTUFBTTtLQUM3RCxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7Q0FDWixDQUFRLENBQUMsQ0FBQyxxQkFBcUI7QUFJL0IsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQywwREFBMEQiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuXG5pbXBvcnQgeyBIZWxwZXJzLCBfIH0gZnJvbSBcInRucC1jb3JlL2Jyb3dzZXJcIjtcblxuaW1wb3J0ICogYXMgbG9jYWxGb3JnZSBmcm9tICdsb2NhbGZvcmFnZSc7XG5cblxuXG5cbmV4cG9ydCBjb25zdCBzdG9yZU5hbWUgPSAndGFvbi1zdG9yYWdlXydcblxuICArIHdpbmRvdz8ubG9jYXRpb24ucG9ydDtcblxuXG5cblxubGV0IGVudmlyb25tZW50ID0ge30gYXMgYW55O1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuLy8gQHRzLWlnbm9yZVxuZW52aXJvbm1lbnQgPSB3aW5kb3dbJ0VOViddO1xuXG5cblxuXG5jb25zdCB3ZWJzcWwgPSBIZWxwZXJzLmlzV2ViU1FMID8gJ3dlYnNxbCcgOiAnJztcblxuZXhwb3J0IGNvbnN0IHN0b3JMb2NhbFN0b3JhZ2UgPSBsb2NhbEZvcmdlLmNyZWF0ZUluc3RhbmNlKHtcbiAgZHJpdmVyOiBsb2NhbEZvcmdlLkxPQ0FMU1RPUkFHRSxcbiAgc3RvcmVOYW1lOiBbXG4gICAgc3RvcmVOYW1lLFxuICAgICdMT0NBTFNUT1JBR0UnLFxuICAgIF8ua2ViYWJDYXNlKGVudmlyb25tZW50Py5jdXJyZW50UHJvamVjdEdlbmVyaWNOYW1lKSArIHdlYnNxbCxcbiAgXS5qb2luKCdfJylcbiAgLCAvLyArIF8ua2ViYWJDYXNlKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pLFxufSkgYXMgYW55OyAvLyBUT0RPIFVOQ09NTUVOVCBhbnlcblxuXG5cblxuXG5leHBvcnQgY29uc3Qgc3RvckluZGV4ZERiID0gbG9jYWxGb3JnZS5jcmVhdGVJbnN0YW5jZSh7XG4gIGRyaXZlcjogbG9jYWxGb3JnZS5JTkRFWEVEREIsXG4gIHN0b3JlTmFtZTogW1xuICAgIHN0b3JlTmFtZSxcbiAgICAnSU5ERVhFRERCJyxcbiAgICBfLmtlYmFiQ2FzZShlbnZpcm9ubWVudD8uY3VycmVudFByb2plY3RHZW5lcmljTmFtZSkgKyB3ZWJzcWwsXG4gIF0uam9pbignXycpXG59KSBhcyBhbnk7IC8vIFRPRE8gVU5DT01NRU5UIGFueVxuXG5cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRhb24tc3RvcmFnZSBsaWIvY29uc3RhbnRzLnRzIl19
@@ -0,0 +1,56 @@
1
+ export class FileStor {
2
+ constructor(filePath, useJSON = false) {
3
+ this.filePath = filePath;
4
+ this.useJSON = useJSON;
5
+ }
6
+ async setItem(key, value, callback) {
7
+ /* */
8
+ /* */
9
+ /* */
10
+ /* */
11
+ /* */
12
+ /* */
13
+ /* */
14
+ /* */
15
+ /* */
16
+ /* */
17
+ /* */
18
+ /* */
19
+ /* */
20
+ /* */
21
+ /* */
22
+ return (void 0);
23
+ }
24
+ async getItem(key, callback) {
25
+ /* */
26
+ /* */
27
+ /* */
28
+ /* */
29
+ /* */
30
+ /* */
31
+ /* */
32
+ /* */
33
+ /* */
34
+ /* */
35
+ /* */
36
+ /* */
37
+ /* */
38
+ /* */
39
+ return (void 0);
40
+ }
41
+ async removeItem(key, callback) {
42
+ /* */
43
+ /* */
44
+ /* */
45
+ /* */
46
+ /* */
47
+ /* */
48
+ /* */
49
+ /* */
50
+ /* */
51
+ return (void 0);
52
+ }
53
+ }
54
+ ;
55
+ ({}); // @--end-of-file-for-module=taon-storage lib/file-stor.ts
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1zdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3QvdGFvbi1zdG9yYWdlL3Byb2plY3RzL3Rhb24tc3RvcmFnZS9zcmMvbGliL2ZpbGUtc3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxNQUFNLE9BQU8sUUFBUTtJQUtuQixZQUNVLFFBQWdCLEVBQ2hCLFVBQVUsS0FBSztRQURmLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDaEIsWUFBTyxHQUFQLE9BQU8sQ0FBUTtJQUNyQixDQUFDO0lBRUwsS0FBSyxDQUFDLE9BQU8sQ0FBSSxHQUFXLEVBQUUsS0FBUSxFQUFFLFFBQXVDO1FBQ2pGLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFDRCxLQUFLLENBQUMsT0FBTyxDQUFJLEdBQVcsRUFBRSxRQUF1QztRQUN2RSxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFDRCxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQVcsRUFBRSxRQUE2QjtRQUM3RCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0NBQ0Y7QUFJQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLDBEQUEwRCIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5pbXBvcnQgeyBIZWxwZXJzIH0gZnJvbSBcInRucC1jb3JlL2Jyb3dzZXJcIjtcbmltcG9ydCB7IE1vZGVscyB9IGZyb20gXCIuL21vZGVsc1wiO1xuXG5cbmV4cG9ydCBjbGFzcyBGaWxlU3RvclxuXG4gIGltcGxlbWVudHMgTW9kZWxzLlN0b3JUeXBlXG5cbntcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmaWxlUGF0aDogc3RyaW5nLFxuICAgIHByaXZhdGUgdXNlSlNPTiA9IGZhbHNlXG4gICkgeyB9XG5cbiAgYXN5bmMgc2V0SXRlbTxUPihrZXk6IHN0cmluZywgdmFsdWU6IFQsIGNhbGxiYWNrPzogKGVycjogYW55LCB2YWx1ZTogVCkgPT4gdm9pZCk6IFByb21pc2U8VD4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuICBhc3luYyBnZXRJdGVtPFQ+KGtleTogc3RyaW5nLCBjYWxsYmFjaz86IChlcnI6IGFueSwgdmFsdWU6IFQpID0+IHZvaWQpOiBQcm9taXNlPFQ+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuICBhc3luYyByZW1vdmVJdGVtKGtleTogc3RyaW5nLCBjYWxsYmFjaz86IChlcnI6IGFueSkgPT4gdm9pZCk6IFByb21pc2U8dm9pZD4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxufVxuXG5cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRhb24tc3RvcmFnZSBsaWIvZmlsZS1zdG9yLnRzIl19
@@ -0,0 +1,10 @@
1
+ export const keyValue = (classFun, memberName) => {
2
+ const res = `taon.localstorage.class.${classFun.name}.prop.${memberName}`;
3
+ return res;
4
+ };
5
+ export const keyDefaultValueAreadySet = (classFun, memberName) => {
6
+ const res = keyValue(classFun, memberName) + 'defaultvalueisset';
7
+ return res;
8
+ };
9
+ ({}); // @--end-of-file-for-module=taon-storage lib/helpers.ts
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0L3Rhb24tc3RvcmFnZS9wcm9qZWN0cy90YW9uLXN0b3JhZ2Uvc3JjL2xpYi9oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsRUFBRTtJQUUvQyxNQUFNLEdBQUcsR0FBRywyQkFBMkIsUUFBUSxDQUFDLElBQUksU0FBUyxVQUFVLEVBQUUsQ0FBQTtJQUN6RSxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxFQUFFO0lBQy9ELE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEdBQUcsbUJBQW1CLENBQUM7SUFDakUsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDLENBSUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsd0RBQXdEIiwic291cmNlc0NvbnRlbnQiOlsiXG5cblxuZXhwb3J0IGNvbnN0IGtleVZhbHVlID0gKGNsYXNzRnVuLCBtZW1iZXJOYW1lKSA9PiB7XG5cbiAgY29uc3QgcmVzID0gYHRhb24ubG9jYWxzdG9yYWdlLmNsYXNzLiR7Y2xhc3NGdW4ubmFtZX0ucHJvcC4ke21lbWJlck5hbWV9YFxuICByZXR1cm4gcmVzO1xufVxuXG5leHBvcnQgY29uc3Qga2V5RGVmYXVsdFZhbHVlQXJlYWR5U2V0ID0gKGNsYXNzRnVuLCBtZW1iZXJOYW1lKSA9PiB7XG4gIGNvbnN0IHJlcyA9IGtleVZhbHVlKGNsYXNzRnVuLCBtZW1iZXJOYW1lKSArICdkZWZhdWx0dmFsdWVpc3NldCc7XG4gIHJldHVybiByZXM7XG59XG5cblxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dGFvbi1zdG9yYWdlIGxpYi9oZWxwZXJzLnRzIl19
@@ -0,0 +1,4 @@
1
+ export * from './storage';
2
+ ;
3
+ ({}); // @--end-of-file-for-module=taon-storage lib/index.ts
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC90YW9uLXN0b3JhZ2UvcHJvamVjdHMvdGFvbi1zdG9yYWdlL3NyYy9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsY0FBYyxXQUFXLENBQUM7QUFFekIsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxzREFBc0QiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuZXhwb3J0ICogZnJvbSAnLi9zdG9yYWdlJztcblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRhb24tc3RvcmFnZSBsaWIvaW5kZXgudHMiXX0=
@@ -0,0 +1,4 @@
1
+ ;
2
+ ({}); // @--end-of-file-for-module=taon-storage lib/models.ts
3
+ export {};
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3QvdGFvbi1zdG9yYWdlL3Byb2plY3RzL3Rhb24tc3RvcmFnZS9zcmMvbGliL21vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUErQkMsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyx1REFBdUQiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuXG5pbXBvcnQgdHlwZSB7IHN0b3JJbmRleGREYiB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuXG5cbmV4cG9ydCBuYW1lc3BhY2UgTW9kZWxzIHtcblxuXG4gIGV4cG9ydCB0eXBlIFN0b3JUeXBlID0gUGFydGlhbDwodHlwZW9mIHN0b3JJbmRleGREYik+O1xuXG5cbiAgZXhwb3J0IGludGVyZmFjZSBQZW5kaW5nT3BlcmF0aW9uIHtcbiAgICBlbmdpbmU6IFN0b3JnZUVuZ2luZTtcbiAgICBpZDogc3RyaW5nO1xuICAgIGlzRG9uZTogYm9vbGVhbjtcblxuXG5cblxuICB9XG5cbiAgZXhwb3J0IHR5cGUgU3RvcmdlRW5naW5lID0gJ2xvY2Fsc3RvcmFnZSdcbiAgICB8ICdpbmRleGVkZGInXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICAgIDtcbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRhb24tc3RvcmFnZSBsaWIvbW9kZWxzLnRzIl19
@@ -0,0 +1,187 @@
1
+ import { keyDefaultValueAreadySet, keyValue } from './helpers';
2
+ import { storIndexdDb, storLocalStorage } from './constants';
3
+ const AWAITING_INTERVAL_TIME = 200;
4
+ export function uncache(onlyInThisComponentClass, propertyValueToDeleteFromCache) {
5
+ if (!onlyInThisComponentClass) { // @ts-ignore
6
+ onlyInThisComponentClass = { name: '__GLOBAL_NAMESPACE__' };
7
+ }
8
+ return Promise.all([
9
+ storLocalStorage.removeItem(keyValue(onlyInThisComponentClass, propertyValueToDeleteFromCache)),
10
+ storLocalStorage.removeItem(keyDefaultValueAreadySet(onlyInThisComponentClass, propertyValueToDeleteFromCache)),
11
+ storIndexdDb.removeItem(keyValue(onlyInThisComponentClass, propertyValueToDeleteFromCache)),
12
+ storIndexdDb.removeItem(keyDefaultValueAreadySet(onlyInThisComponentClass, propertyValueToDeleteFromCache)),
13
+ ]);
14
+ }
15
+ class TaonStorage {
16
+ constructor() {
17
+ this.action = (defaultValue, storageEngine, engine, transformFrom, transformTo) => {
18
+ if (!this.onlyInThisComponentClass) { // @ts-ignore
19
+ this.onlyInThisComponentClass = { name: '__GLOBAL_NAMESPACE__' };
20
+ }
21
+ return (target, memberName) => {
22
+ let currentValue = target[memberName];
23
+ const setItemDefaultValue = async () => {
24
+ const observe = {
25
+ engine,
26
+ id: 'setting default value'
27
+ };
28
+ TaonStorage.pendingOperatins.push(observe);
29
+ await new Promise((resolve, reject) => {
30
+ storageEngine.getItem(keyValue(this.onlyInThisComponentClass, memberName), (err, valFromDb) => {
31
+ currentValue = transformFrom ? transformFrom(valFromDb) : valFromDb;
32
+ resolve();
33
+ this.endObserverAction(observe);
34
+ });
35
+ });
36
+ };
37
+ if (defaultValue !== void 0) {
38
+ const observe = {
39
+ engine,
40
+ id: 'setting not rivial default value'
41
+ };
42
+ TaonStorage.pendingOperatins.push(observe);
43
+ (new Promise((resolve, reject) => {
44
+ storageEngine.getItem(keyDefaultValueAreadySet(this.onlyInThisComponentClass, memberName), async (err, val) => {
45
+ if (val) {
46
+ await setItemDefaultValue();
47
+ resolve();
48
+ }
49
+ else {
50
+ await new Promise((res, rej) => {
51
+ storageEngine.setItem(keyDefaultValueAreadySet(this.onlyInThisComponentClass, memberName), true, (err, v) => {
52
+ res();
53
+ });
54
+ });
55
+ await new Promise((res, rej) => {
56
+ storageEngine.setItem(keyValue(this.onlyInThisComponentClass, memberName), transformTo ? transformTo(defaultValue) : defaultValue, (err, val) => {
57
+ res();
58
+ });
59
+ });
60
+ currentValue = defaultValue;
61
+ resolve();
62
+ }
63
+ });
64
+ })).then(() => {
65
+ this.endObserverAction(observe);
66
+ });
67
+ }
68
+ else {
69
+ setItemDefaultValue();
70
+ }
71
+ Object.defineProperty(target, memberName, {
72
+ set: (newValue) => {
73
+ const observe = {
74
+ engine,
75
+ id: 'setting in SET not rivial default value'
76
+ };
77
+ TaonStorage.pendingOperatins.push(observe);
78
+ (new Promise((resolve, reject) => {
79
+ storageEngine.setItem(keyValue(this.onlyInThisComponentClass, memberName), transformTo ? transformTo(newValue) : newValue, (err, savedValue) => {
80
+ resolve();
81
+ });
82
+ })).then(() => {
83
+ this.endObserverAction(observe);
84
+ });
85
+ currentValue = newValue;
86
+ },
87
+ get: () => currentValue,
88
+ });
89
+ };
90
+ };
91
+ }
92
+ static { this.pendingOperatins = []; }
93
+ static { this.id = 0; }
94
+ /**
95
+ * TODO This is fine for now, but could be something smarter here
96
+ */
97
+ static async awaitPendingOperatios(id = TaonStorage.id++) {
98
+ if (id > Number.MAX_SAFE_INTEGER - 2) {
99
+ TaonStorage.id = 0;
100
+ id = TaonStorage.id++;
101
+ }
102
+ const pending = this.pendingOperatins;
103
+ const toDeleteIndex = [];
104
+ for (let index = 0; index < pending.length; index++) {
105
+ const op = pending[index];
106
+ if (!op.isDone) {
107
+ await new Promise(async (resovle, reject) => {
108
+ setTimeout(async () => {
109
+ await this.awaitPendingOperatios(id);
110
+ resovle();
111
+ }, AWAITING_INTERVAL_TIME);
112
+ });
113
+ return;
114
+ }
115
+ else {
116
+ toDeleteIndex.push(index);
117
+ }
118
+ }
119
+ for (let index = 0; index < toDeleteIndex.length; index++) {
120
+ const toDelete = toDeleteIndex[index];
121
+ pending.splice(toDelete, 1);
122
+ }
123
+ }
124
+ static get property() {
125
+ return new TaonStorage();
126
+ }
127
+ /* */
128
+ /* */
129
+ get in() {
130
+ const that = this;
131
+ return {
132
+ get indexedb() {
133
+ that.engine = 'indexeddb';
134
+ return that;
135
+ },
136
+ get localstorage() {
137
+ that.engine = 'localstorage';
138
+ return that;
139
+ },
140
+ /* */
141
+ /* */
142
+ /* */
143
+ /* */
144
+ /* */
145
+ /* */
146
+ /* */
147
+ /* */
148
+ /* */
149
+ /* */
150
+ /* */
151
+ /* */
152
+ /* */
153
+ /* */
154
+ };
155
+ }
156
+ for(onlyInThisComponentClass) {
157
+ this.onlyInThisComponentClass = onlyInThisComponentClass;
158
+ return this;
159
+ }
160
+ withDefaultValue(defaultValue) {
161
+ return this.action(defaultValue, this.getEngine(), this.engine);
162
+ }
163
+ withOptions(options) {
164
+ const { defaultValue, transformFrom, transformTo } = (options || {});
165
+ return this.action(defaultValue ? defaultValue : this.defaultValue, this.getEngine(), this.engine, transformFrom, transformTo);
166
+ }
167
+ getEngine() {
168
+ switch (this.engine) {
169
+ case 'localstorage':
170
+ return storLocalStorage;
171
+ case 'indexeddb':
172
+ return storIndexdDb;
173
+ /* */
174
+ /* */
175
+ /* */
176
+ /* */
177
+ /* */
178
+ }
179
+ }
180
+ endObserverAction(observe) {
181
+ observe.isDone = true;
182
+ }
183
+ }
184
+ export const Stor = TaonStorage;
185
+ ;
186
+ ({}); // @--end-of-file-for-module=taon-storage lib/storage.ts
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0L3Rhb24tc3RvcmFnZS9wcm9qZWN0cy90YW9uLXN0b3JhZ2Uvc3JjL2xpYi9zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFJL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUs3RCxNQUFNLHNCQUFzQixHQUFHLEdBQUcsQ0FBQztBQUluQyxNQUFNLFVBQVUsT0FBTyxDQUF1Qix3QkFBd0MsRUFBRSw4QkFBb0Q7SUFDMUksSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUMsQ0FBQyxhQUFhO1FBQzVDLHdCQUF3QixHQUFHLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFLENBQUM7SUFDOUQsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUVqQixnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLHdCQUF3QixFQUFFLDhCQUE4QixDQUFDLENBQUM7UUFDL0YsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLHdCQUF3QixDQUFDLHdCQUF3QixFQUFFLDhCQUE4QixDQUFDLENBQUM7UUFDL0csWUFBWSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsd0JBQXdCLEVBQUUsOEJBQThCLENBQUMsQ0FBQztRQUMzRixZQUFZLENBQUMsVUFBVSxDQUFDLHdCQUF3QixDQUFDLHdCQUF3QixFQUFFLDhCQUE4QixDQUFDLENBQUM7S0FFNUcsQ0FBQyxDQUFBO0FBQ0osQ0FBQztBQUdELE1BQU0sV0FBVztJQUFqQjtRQTRKVSxXQUFNLEdBQUcsQ0FDZixZQUFpQixFQUNqQixhQUVtQixFQUduQixNQUEyQixFQUMzQixhQUFjLEVBQ2QsV0FBWSxFQUNaLEVBQUU7WUFDRixJQUFJLENBQUMs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LElBQUksQ0FBQyxNQUFNLENBQ2hCLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUMvQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQ2hCLElBQUksQ0FBQyxNQUFNLEVBQ1gsYUFBYSxFQUNiLFdBQVcsQ0FDWixDQUFDO0lBQ0osQ0FBQztJQVFPLFNBQVM7UUFDZixRQUFRLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUVwQixLQUFLLGNBQWM7Z0JBQ2pCLE9BQU8sZ0JBQWdCLENBQUM7WUFDMUIsS0FBSyxXQUFXO2dCQUNkLE9BQU8sWUFBWSxDQUFDO1lBRTVCLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1FBRUQsQ0FBQztJQUNILENBQUM7SUFJTyxpQkFBaUIsQ0FBQyxPQUFnQztRQUV4RCxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztJQUN4QixDQUFDOztBQXFISCxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDO0FBRS9CLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsd0RBQXdEIiwic291cmNlc0NvbnRlbnQiOlsiXG5cblxuaW1wb3J0IHsgXyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0IHsga2V5RGVmYXVsdFZhbHVlQXJlYWR5U2V0LCBrZXlWYWx1ZSB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBNb2RlbHMgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBGaWxlU3RvciB9IGZyb20gJy4vZmlsZS1zdG9yJztcblxuaW1wb3J0IHsgc3RvckluZGV4ZERiLCBzdG9yTG9jYWxTdG9yYWdlIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5cblxuXG5jb25zdCBBV0FJVElOR19JTlRFUlZBTF9USU1FID0gMjAwO1xuXG5cblxuZXhwb3J0IGZ1bmN0aW9uIHVuY2FjaGU8Q0xBU1NfRlVOQ1RJT04gPSBhbnk+KG9ubHlJblRoaXNDb21wb25lbnRDbGFzczogQ0xBU1NfRlVOQ1RJT04sIHByb3BlcnR5VmFsdWVUb0RlbGV0ZUZyb21DYWNoZToga2V5b2YgQ0xBU1NfRlVOQ1RJT04pIHtcbiAgaWYgKCFvbmx5SW5UaGlzQ29tcG9uZW50Q2xhc3MpIHsgLy8gQHRzLWlnbm9yZVxuICAgIG9ubHlJblRoaXNDb21wb25lbnRDbGFzcyA9IHsgbmFtZTogJ19fR0xPQkFMX05BTUVTUEFDRV9fJyB9O1xuICB9XG4gIHJldHVybiBQcm9taXNlLmFsbChbXG5cbiAgICBzdG9yTG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5VmFsdWUob25seUluVGhpc0NvbXBvbmVudENsYXNzLCBwcm9wZXJ0eVZhbHVlVG9EZWxldGVGcm9tQ2FjaGUpKSxcbiAgICBzdG9yTG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5RGVmYXVsdFZhbHVlQXJlYWR5U2V0KG9ubHlJblRoaXNDb21wb25lbnRDbGFzcywgcHJvcGVydHlWYWx1ZVRvRGVsZXRlRnJvbUNhY2hlKSksXG4gICAgc3RvckluZGV4ZERiLnJlbW92ZUl0ZW0oa2V5VmFsdWUob25seUluVGhpc0NvbXBvbmVudENsYXNzLCBwcm9wZXJ0eVZhbHVlVG9EZWxldGVGcm9tQ2FjaGUpKSxcbiAgICBzdG9ySW5kZXhkRGIucmVtb3ZlSXRlbShrZXlEZWZhdWx0VmFsdWVBcmVhZHlTZXQob25seUluVGhpc0NvbXBvbmVudENsYXNzLCBwcm9wZXJ0eVZhbHVlVG9EZWxldGVGcm9tQ2FjaGUpKSxcblxuICBdKVxufVxuXG5cbmNsYXNzIFRhb25TdG9yYWdlIHtcblxuXG4gIHByaXZhdGUgc3RhdGljIHBlbmRpbmdPcGVyYXRpbnM6IE1vZGVscy5QZW5kaW5nT3BlcmF0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSBzdGF0aWMgaWQgPSAwO1xuXG4gIC8qKlxuICAgKiBUT0RPIFRoaXMgaXMgZmluZSBmb3Igbm93LCBidXQgY291bGQgYmUgc29tZXRoaW5nIHNtYXJ0ZXIgaGVyZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhc3luYyBhd2FpdFBlbmRpbmdPcGVyYXRpb3MoaWQgPSBUYW9uU3RvcmFnZS5pZCsrKTogUHJvbWlzZTx2b2lkPiB7XG5cbiAgICBpZiAoaWQgPiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiAtIDIpIHtcbiAgICAgIFRhb25TdG9yYWdlLmlkID0gMDtcbiAgICAgIGlkID0gVGFvblN0b3JhZ2UuaWQrKztcbiAgICB9XG4gICAgY29uc3QgcGVuZGluZyA9IHRoaXMucGVuZGluZ09wZXJhdGlucyBhcyBNb2RlbHMuUGVuZGluZ09wZXJhdGlvbltdO1xuICAgIGNvbnN0IHRvRGVsZXRlSW5kZXggPSBbXTtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgcGVuZGluZy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IG9wID0gcGVuZGluZ1tpbmRleF0gYXMgTW9kZWxzLlBlbmRpbmdPcGVyYXRpb247XG5cbiAgICAgIGlmICghb3AuaXNEb25lKSB7XG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KGFzeW5jIChyZXNvdmxlLCByZWplY3QpID0+IHtcbiAgICAgICAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuYXdhaXRQZW5kaW5nT3BlcmF0aW9zKGlkKTtcbiAgICAgICAgICAgIHJlc292bGUoKTtcbiAgICAgICAgICB9LCBBV0FJVElOR19JTlRFUlZBTF9USU1FKVxuICAgICAgICB9KVxuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0b0RlbGV0ZUluZGV4LnB1c2goaW5kZXgpO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdG9EZWxldGVJbmRleC5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IHRvRGVsZXRlID0gdG9EZWxldGVJbmRleFtpbmRleF07XG4gICAgICBwZW5kaW5nLnNwbGljZSh0b0RlbGV0ZSwgMSk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdldCBwcm9wZXJ0eSgpIHtcbiAgICByZXR1cm4gbmV3IFRhb25TdG9yYWdlKCk7XG4gIH1cblxuXG5cbiAgcHJpdmF0ZSBvbmx5SW5UaGlzQ29tcG9uZW50Q2xhc3M/OiBGdW5jdGlvbjtcbiAgcHJpdmF0ZSBkZWZhdWx0VmFsdWU6IGFueTtcbiAgcHJpdmF0ZSBlbmdpbmU6IE1vZGVscy5TdG9yZ2VFbmdpbmU7XG5cblxuXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuXG5cbiAgcHVibGljIGdldCBpbigpIHtcbiAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICByZXR1cm4ge1xuICAgICAgZ2V0IGluZGV4ZWRiKCkge1xuICAgICAgICB0aGF0LmVuZ2luZSA9ICdpbmRleGVkZGInO1xuICAgICAgICByZXR1cm4gdGhhdCBhcyBPbWl0PFRhb25TdG9yYWdlLCAnaW4nPjtcbiAgICAgIH0sXG4gICAgICBnZXQgbG9jYWxzdG9yYWdlKCkge1xuICAgICAgICB0aGF0LmVuZ2luZSA9ICdsb2NhbHN0b3JhZ2UnO1xuICAgICAgICByZXR1cm4gdGhhdCBhcyBPbWl0PFRhb25TdG9yYWdlLCAnaW4nPjtcbiAgICAgIH0sXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gICAgfVxuICB9XG5cblxuXG5cblxuXG4gIHB1YmxpYyBmb3Iob25seUluVGhpc0NvbXBvbmVudENsYXNzPzogRnVuY3Rpb24pOiBPbWl0PFRhb25TdG9yYWdlLCAnZm9yJyB8ICdpbic+IHtcbiAgICB0aGlzLm9ubHlJblRoaXNDb21wb25lbnRDbGFzcyA9IG9ubHlJblRoaXNDb21wb25lbnRDbGFzcztcbiAgICByZXR1cm4gdGhpcyBhcyBPbWl0PFRhb25TdG9yYWdlLCAnZm9yJyB8ICdpbic+O1xuICB9XG5cblxuXG5cbiAgcHVibGljIHdpdGhEZWZhdWx0VmFsdWUoZGVmYXVsdFZhbHVlPzogYW55KTogYW55IHtcblxuICAgIHJldHVybiB0aGlzLmFjdGlvbihkZWZhdWx0VmFsdWUsIHRoaXMuZ2V0RW5naW5lKCksIHRoaXMuZW5naW5lKVxuICB9XG5cblxuXG4gIHdpdGhPcHRpb25zKG9wdGlvbnM6IHtcbiAgICAvKipcbiAgICAgKiBkZWZhdWx0IHZhbHVlXG4gICAgICovXG4gICAgZGVmYXVsdFZhbHVlPzogYW55O1xuICAgIHRyYW5zZm9ybUZyb20/OiAodmFsdWVGcm9tRGI6IGFueSkgPT4gYW55LFxuICAgIHRyYW5zZm9ybVRvPzogKHZhbHVlVGhhdEdldFRvREI6IGFueSkgPT4gYW55LFxuICB9KSB7XG4gICAgY29uc3QgeyBkZWZhdWx0VmFsdWUsIHRyYW5zZm9ybUZyb20sIHRyYW5zZm9ybVRvIH0gPSAob3B0aW9ucyB8fCB7fSkgYXMgYW55O1xuICAgIHJldHVybiB0aGlzLmFjdGlvbihcbiAgICAgIGRlZmF1bHRWYWx1ZSA/IGRlZmF1bHRWYWx1ZSA6IHRoaXMuZGVmYXVsdFZhbHVlLFxuICAgICAgdGhpcy5nZXRFbmdpbmUoKSxcbiAgICAgIHRoaXMuZW5naW5lLFxuICAgICAgdHJhbnNmb3JtRnJvbSxcbiAgICAgIHRyYW5zZm9ybVRvLFxuICAgICk7XG4gIH1cblxuXG5cblxuXG5cblxuICBwcml2YXRlIGdldEVuZ2luZSgpIHtcbiAgICBzd2l0Y2ggKHRoaXMuZW5naW5lKSB7XG5cbiAgICAgIGNhc2UgJ2xvY2Fsc3RvcmFnZSc6XG4gICAgICAgIHJldHVybiBzdG9yTG9jYWxTdG9yYWdlO1xuICAgICAgY2FzZSAnaW5kZXhlZGRiJzpcbiAgICAgICAgcmV0dXJuIHN0b3JJbmRleGREYjtcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICAgIH1cbiAgfVxuXG5cblxuICBwcml2YXRlIGVuZE9ic2VydmVyQWN0aW9uKG9ic2VydmU6IE1vZGVscy5QZW5kaW5nT3BlcmF0aW9uKSB7XG5cbiAgICBvYnNlcnZlLmlzRG9uZSA9IHRydWU7XG4gIH1cblxuXG5cbiAgcHJpdmF0ZSBhY3Rpb24gPSAoXG4gICAgZGVmYXVsdFZhbHVlOiBhbnksXG4gICAgc3RvcmFnZUVuZ2luZVxuXG4gICAgICA6IE1vZGVscy5TdG9yVHlwZVxuXG4gICAgLFxuICAgIGVuZ2luZTogTW9kZWxzLlN0b3JnZUVuZ2luZSxcbiAgICB0cmFuc2Zvcm1Gcm9tPyxcbiAgICB0cmFuc2Zvcm1Ubz8sXG4gICkgPT4ge1xuICAgIGlmICghdGhpcy5vbmx5SW5UaGlzQ29tcG9uZW50Q2xhc3MpIHsgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5vbmx5SW5UaGlzQ29tcG9uZW50Q2xhc3MgPSB7IG5hbWU6ICdfX0dMT0JBTF9OQU1FU1BBQ0VfXycgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gKHRhcmdldDogYW55LCBtZW1iZXJOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIGxldCBjdXJyZW50VmFsdWU6IGFueSA9IHRhcmdldFttZW1iZXJOYW1lXTtcblxuICAgICAgY29uc3Qgc2V0SXRlbURlZmF1bHRWYWx1ZSA9IGFzeW5jICgpID0+IHtcblxuICAgICAgICBjb25zdCBvYnNlcnZlID0ge1xuICAgICAgICAgIGVuZ2luZSxcbiAgICAgICAgICBpZDogJ3NldHRpbmcgZGVmYXVsdCB2YWx1ZSdcbiAgICAgICAgfSBhcyBNb2RlbHMuUGVuZGluZ09wZXJhdGlvbjtcbiAgICAgICAgVGFvblN0b3JhZ2UucGVuZGluZ09wZXJhdGlucy5wdXNoKG9ic2VydmUpO1xuXG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICBzdG9yYWdlRW5naW5lLmdldEl0ZW0oa2V5VmFsdWUodGhpcy5vbmx5SW5UaGlzQ29tcG9uZW50Q2xhc3MsIG1lbWJlck5hbWUpLCAoZXJyLCB2YWxGcm9tRGIpID0+IHtcblxuICAgICAgICAgICAgY3VycmVudFZhbHVlID0gdHJhbnNmb3JtRnJvbSA/IHRyYW5zZm9ybUZyb20odmFsRnJvbURiKSA6IHZhbEZyb21EYjtcblxuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgdGhpcy5lbmRPYnNlcnZlckFjdGlvbihvYnNlcnZlKTtcbiAgICAgICAgICB9KVxuICAgICAgICB9KTtcblxuICAgICAgfVxuXG4gICAgICBpZiAoZGVmYXVsdFZhbHVlICE9PSB2b2lkIDApIHtcblxuICAgICAgICBjb25zdCBvYnNlcnZlID0ge1xuICAgICAgICAgIGVuZ2luZSxcbiAgICAgICAgICBpZDogJ3NldHRpbmcgbm90IHJpdmlhbCBkZWZhdWx0IHZhbHVlJ1xuICAgICAgICB9IGFzIE1vZGVscy5QZW5kaW5nT3BlcmF0aW9uO1xuICAgICAgICBUYW9uU3RvcmFnZS5wZW5kaW5nT3BlcmF0aW5zLnB1c2gob2JzZXJ2ZSk7XG5cbiAgICAgICAgKG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICBzdG9yYWdlRW5naW5lLmdldEl0ZW0oa2V5RGVmYXVsdFZhbHVlQXJlYWR5U2V0KHRoaXMub25seUluVGhpc0NvbXBvbmVudENsYXNzLCBtZW1iZXJOYW1lKSwgYXN5bmMgKGVyciwgdmFsKSA9PiB7XG5cbiAgICAgICAgICAgIGlmICh2YWwpIHtcbiAgICAgICAgICAgICAgYXdhaXQgc2V0SXRlbURlZmF1bHRWYWx1ZSgpO1xuICAgICAgICAgICAgICByZXNvbHZlKClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXMsIHJlaikgPT4ge1xuICAgICAgICAgICAgICAgIHN0b3JhZ2VFbmdpbmUuc2V0SXRlbShrZXlEZWZhdWx0VmFsdWVBcmVhZHlTZXQodGhpcy5vbmx5SW5UaGlzQ29tcG9uZW50Q2xhc3MsIG1lbWJlck5hbWUpLCB0cnVlLCAoZXJyLCB2KSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXMoKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzLCByZWopID0+IHtcbiAgICAgICAgICAgICAgICBzdG9yYWdlRW5naW5lLnNldEl0ZW0oa2V5VmFsdWUodGhpcy5vbmx5SW5UaGlzQ29tcG9uZW50Q2xhc3MsIG1lbWJlck5hbWUpLFxuICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtVG8gPyB0cmFuc2Zvcm1UbyhkZWZhdWx0VmFsdWUpIDogZGVmYXVsdFZhbHVlLCAoZXJyLCB2YWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmVzKCk7XG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBjdXJyZW50VmFsdWUgPSBkZWZhdWx0VmFsdWU7XG5cbiAgICAgICAgICAgICAgcmVzb2x2ZSgpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pKS50aGVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmVuZE9ic2VydmVyQWN0aW9uKG9ic2VydmUpO1xuICAgICAgICB9KTtcblxuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRJdGVtRGVmYXVsdFZhbHVlKCk7XG4gICAgICB9XG5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG1lbWJlck5hbWUsIHtcbiAgICAgICAgc2V0OiAobmV3VmFsdWU6IGFueSkgPT4ge1xuXG4gICAgICAgICAgY29uc3Qgb2JzZXJ2ZSA9IHtcbiAgICAgICAgICAgIGVuZ2luZSxcbiAgICAgICAgICAgIGlkOiAnc2V0dGluZyBpbiBTRVQgbm90IHJpdmlhbCBkZWZhdWx0IHZhbHVlJ1xuICAgICAgICAgIH0gYXMgTW9kZWxzLlBlbmRpbmdPcGVyYXRpb247XG4gICAgICAgICAgVGFvblN0b3JhZ2UucGVuZGluZ09wZXJhdGlucy5wdXNoKG9ic2VydmUpO1xuXG4gICAgICAgICAgKG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHN0b3JhZ2VFbmdpbmUuc2V0SXRlbShcbiAgICAgICAgICAgICAga2V5VmFsdWUodGhpcy5vbmx5SW5UaGlzQ29tcG9uZW50Q2xhc3MsIG1lbWJlck5hbWUpLFxuICAgICAgICAgICAgICB0cmFuc2Zvcm1UbyA/IHRyYW5zZm9ybVRvKG5ld1ZhbHVlKSA6IG5ld1ZhbHVlLFxuICAgICAgICAgICAgICAoZXJyLCBzYXZlZFZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZW5kT2JzZXJ2ZXJBY3Rpb24ob2JzZXJ2ZSk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjdXJyZW50VmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0OiAoKSA9PiBjdXJyZW50VmFsdWUsXG4gICAgICB9KTtcbiAgICB9O1xuICB9O1xuXG5cblxuXG59XG5cbmV4cG9ydCBjb25zdCBTdG9yID0gVGFvblN0b3JhZ2U7XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10YW9uLXN0b3JhZ2UgbGliL3N0b3JhZ2UudHMiXX0=
@@ -0,0 +1,2 @@
1
+ export * from './lib';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0L3Rhb24tc3RvcmFnZS9wcm9qZWN0cy90YW9uLXN0b3JhZ2Uvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYic7XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFvbi1zdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3QvdGFvbi1zdG9yYWdlL3Byb2plY3RzL3Rhb24tc3RvcmFnZS9zcmMvdGFvbi1zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
@@ -0,0 +1,235 @@
1
+ import { Helpers, _ } from 'tnp-core/browser';
2
+ import * as localForge from 'localforage';
3
+
4
+ const keyValue = (classFun, memberName) => {
5
+ const res = `taon.localstorage.class.${classFun.name}.prop.${memberName}`;
6
+ return res;
7
+ };
8
+ const keyDefaultValueAreadySet = (classFun, memberName) => {
9
+ const res = keyValue(classFun, memberName) + 'defaultvalueisset';
10
+ return res;
11
+ };
12
+ ({}); // @--end-of-file-for-module=taon-storage lib/helpers.ts
13
+
14
+ const storeName = 'taon-storage_'
15
+ + window?.location.port;
16
+ let environment = {};
17
+ /* */
18
+ /* */
19
+ /* */
20
+ // @ts-ignore
21
+ environment = window['ENV'];
22
+ const websql = Helpers.isWebSQL ? 'websql' : '';
23
+ const storLocalStorage = localForge.createInstance({
24
+ driver: localForge.LOCALSTORAGE,
25
+ storeName: [
26
+ storeName,
27
+ 'LOCALSTORAGE',
28
+ _.kebabCase(environment?.currentProjectGenericName) + websql,
29
+ ].join('_'), // + _.kebabCase(window.location.origin),
30
+ }); // TODO UNCOMMENT any
31
+ const storIndexdDb = localForge.createInstance({
32
+ driver: localForge.INDEXEDDB,
33
+ storeName: [
34
+ storeName,
35
+ 'INDEXEDDB',
36
+ _.kebabCase(environment?.currentProjectGenericName) + websql,
37
+ ].join('_')
38
+ }); // TODO UNCOMMENT any
39
+ ;
40
+ ({}); // @--end-of-file-for-module=taon-storage lib/constants.ts
41
+
42
+ const AWAITING_INTERVAL_TIME = 200;
43
+ function uncache(onlyInThisComponentClass, propertyValueToDeleteFromCache) {
44
+ if (!onlyInThisComponentClass) { // @ts-ignore
45
+ onlyInThisComponentClass = { name: '__GLOBAL_NAMESPACE__' };
46
+ }
47
+ return Promise.all([
48
+ storLocalStorage.removeItem(keyValue(onlyInThisComponentClass, propertyValueToDeleteFromCache)),
49
+ storLocalStorage.removeItem(keyDefaultValueAreadySet(onlyInThisComponentClass, propertyValueToDeleteFromCache)),
50
+ storIndexdDb.removeItem(keyValue(onlyInThisComponentClass, propertyValueToDeleteFromCache)),
51
+ storIndexdDb.removeItem(keyDefaultValueAreadySet(onlyInThisComponentClass, propertyValueToDeleteFromCache)),
52
+ ]);
53
+ }
54
+ class TaonStorage {
55
+ constructor() {
56
+ this.action = (defaultValue, storageEngine, engine, transformFrom, transformTo) => {
57
+ if (!this.onlyInThisComponentClass) { // @ts-ignore
58
+ this.onlyInThisComponentClass = { name: '__GLOBAL_NAMESPACE__' };
59
+ }
60
+ return (target, memberName) => {
61
+ let currentValue = target[memberName];
62
+ const setItemDefaultValue = async () => {
63
+ const observe = {
64
+ engine,
65
+ id: 'setting default value'
66
+ };
67
+ TaonStorage.pendingOperatins.push(observe);
68
+ await new Promise((resolve, reject) => {
69
+ storageEngine.getItem(keyValue(this.onlyInThisComponentClass, memberName), (err, valFromDb) => {
70
+ currentValue = transformFrom ? transformFrom(valFromDb) : valFromDb;
71
+ resolve();
72
+ this.endObserverAction(observe);
73
+ });
74
+ });
75
+ };
76
+ if (defaultValue !== void 0) {
77
+ const observe = {
78
+ engine,
79
+ id: 'setting not rivial default value'
80
+ };
81
+ TaonStorage.pendingOperatins.push(observe);
82
+ (new Promise((resolve, reject) => {
83
+ storageEngine.getItem(keyDefaultValueAreadySet(this.onlyInThisComponentClass, memberName), async (err, val) => {
84
+ if (val) {
85
+ await setItemDefaultValue();
86
+ resolve();
87
+ }
88
+ else {
89
+ await new Promise((res, rej) => {
90
+ storageEngine.setItem(keyDefaultValueAreadySet(this.onlyInThisComponentClass, memberName), true, (err, v) => {
91
+ res();
92
+ });
93
+ });
94
+ await new Promise((res, rej) => {
95
+ storageEngine.setItem(keyValue(this.onlyInThisComponentClass, memberName), transformTo ? transformTo(defaultValue) : defaultValue, (err, val) => {
96
+ res();
97
+ });
98
+ });
99
+ currentValue = defaultValue;
100
+ resolve();
101
+ }
102
+ });
103
+ })).then(() => {
104
+ this.endObserverAction(observe);
105
+ });
106
+ }
107
+ else {
108
+ setItemDefaultValue();
109
+ }
110
+ Object.defineProperty(target, memberName, {
111
+ set: (newValue) => {
112
+ const observe = {
113
+ engine,
114
+ id: 'setting in SET not rivial default value'
115
+ };
116
+ TaonStorage.pendingOperatins.push(observe);
117
+ (new Promise((resolve, reject) => {
118
+ storageEngine.setItem(keyValue(this.onlyInThisComponentClass, memberName), transformTo ? transformTo(newValue) : newValue, (err, savedValue) => {
119
+ resolve();
120
+ });
121
+ })).then(() => {
122
+ this.endObserverAction(observe);
123
+ });
124
+ currentValue = newValue;
125
+ },
126
+ get: () => currentValue,
127
+ });
128
+ };
129
+ };
130
+ }
131
+ static { this.pendingOperatins = []; }
132
+ static { this.id = 0; }
133
+ /**
134
+ * TODO This is fine for now, but could be something smarter here
135
+ */
136
+ static async awaitPendingOperatios(id = TaonStorage.id++) {
137
+ if (id > Number.MAX_SAFE_INTEGER - 2) {
138
+ TaonStorage.id = 0;
139
+ id = TaonStorage.id++;
140
+ }
141
+ const pending = this.pendingOperatins;
142
+ const toDeleteIndex = [];
143
+ for (let index = 0; index < pending.length; index++) {
144
+ const op = pending[index];
145
+ if (!op.isDone) {
146
+ await new Promise(async (resovle, reject) => {
147
+ setTimeout(async () => {
148
+ await this.awaitPendingOperatios(id);
149
+ resovle();
150
+ }, AWAITING_INTERVAL_TIME);
151
+ });
152
+ return;
153
+ }
154
+ else {
155
+ toDeleteIndex.push(index);
156
+ }
157
+ }
158
+ for (let index = 0; index < toDeleteIndex.length; index++) {
159
+ const toDelete = toDeleteIndex[index];
160
+ pending.splice(toDelete, 1);
161
+ }
162
+ }
163
+ static get property() {
164
+ return new TaonStorage();
165
+ }
166
+ /* */
167
+ /* */
168
+ get in() {
169
+ const that = this;
170
+ return {
171
+ get indexedb() {
172
+ that.engine = 'indexeddb';
173
+ return that;
174
+ },
175
+ get localstorage() {
176
+ that.engine = 'localstorage';
177
+ return that;
178
+ },
179
+ /* */
180
+ /* */
181
+ /* */
182
+ /* */
183
+ /* */
184
+ /* */
185
+ /* */
186
+ /* */
187
+ /* */
188
+ /* */
189
+ /* */
190
+ /* */
191
+ /* */
192
+ /* */
193
+ };
194
+ }
195
+ for(onlyInThisComponentClass) {
196
+ this.onlyInThisComponentClass = onlyInThisComponentClass;
197
+ return this;
198
+ }
199
+ withDefaultValue(defaultValue) {
200
+ return this.action(defaultValue, this.getEngine(), this.engine);
201
+ }
202
+ withOptions(options) {
203
+ const { defaultValue, transformFrom, transformTo } = (options || {});
204
+ return this.action(defaultValue ? defaultValue : this.defaultValue, this.getEngine(), this.engine, transformFrom, transformTo);
205
+ }
206
+ getEngine() {
207
+ switch (this.engine) {
208
+ case 'localstorage':
209
+ return storLocalStorage;
210
+ case 'indexeddb':
211
+ return storIndexdDb;
212
+ /* */
213
+ /* */
214
+ /* */
215
+ /* */
216
+ /* */
217
+ }
218
+ }
219
+ endObserverAction(observe) {
220
+ observe.isDone = true;
221
+ }
222
+ }
223
+ const Stor = TaonStorage;
224
+ ;
225
+ ({}); // @--end-of-file-for-module=taon-storage lib/storage.ts
226
+
227
+ ;
228
+ ({}); // @--end-of-file-for-module=taon-storage lib/index.ts
229
+
230
+ /**
231
+ * Generated bundle index. Do not edit.
232
+ */
233
+
234
+ export { Stor, uncache };
235
+ //# sourceMappingURL=taon-storage.mjs.map