taon-storage 19.0.3 → 19.0.4

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.
package/browser/README.md CHANGED
@@ -1,24 +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.
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.
@@ -12,10 +12,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
12
12
  type: Component,
13
13
  args: [{ selector: 'sample-log-cmp', changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule], standalone: true, template: "<p>\n sample log component works!\n <img\n src=\"assets/assets-for/taon-storage/shared/logo.png\"\n alt=\"logo\" height=\"200\" />\n</p>\n", styles: [":host{display:block}\n"] }]
14
14
  }] });
15
- ;
16
- ({}); // @--end-of-file-for-module=taon-storage lib/sample-log-cmp/sample-log-cmp.component.ts
17
15
 
18
16
  const keyValue = (classFun, memberName) => {
17
+ // console.log('classname',classFun.name)
19
18
  const res = `taon.localstorage.class.${classFun.name}.prop.${memberName}`;
20
19
  return res;
21
20
  };
@@ -23,17 +22,29 @@ const keyDefaultValueAreadySet = (classFun, memberName) => {
23
22
  const res = keyValue(classFun, memberName) + 'defaultvalueisset';
24
23
  return res;
25
24
  };
26
- ({}); // @--end-of-file-for-module=taon-storage lib/helpers.ts
27
25
 
26
+ //#region imports
27
+ //#endregion
28
+ //#endregion
29
+ //#region constants / store name
28
30
  const storeName = 'taon-storage_'
31
+ //#region @browser
29
32
  + window?.location.port;
33
+ //#endregion
34
+ //#endregion
35
+ //#region constants / environment
30
36
  let environment = {};
31
37
  /* */
32
38
  /* */
33
39
  /* */
40
+ //#region @browser
34
41
  // @ts-ignore
35
42
  environment = window['ENV'];
43
+ //#endregion
44
+ //#endregion
45
+ //#region constant / stor local storage
36
46
  const websql = Helpers.isWebSQL ? 'websql' : '';
47
+ //#region @browser
37
48
  const storLocalStorage = localForge.createInstance({
38
49
  driver: localForge.LOCALSTORAGE,
39
50
  storeName: [
@@ -42,6 +53,10 @@ const storLocalStorage = localForge.createInstance({
42
53
  _.kebabCase(environment?.currentProjectGenericName) + websql,
43
54
  ].join('_'), // + _.kebabCase(window.location.origin),
44
55
  }); // TODO UNCOMMENT any
56
+ //#endregion
57
+ //#endregion
58
+ //#region constant / stor idndexedb storage
59
+ //#region @browser
45
60
  const storIndexdDb = localForge.createInstance({
46
61
  driver: localForge.INDEXEDDB,
47
62
  storeName: [
@@ -50,30 +65,43 @@ const storIndexdDb = localForge.createInstance({
50
65
  _.kebabCase(environment?.currentProjectGenericName) + websql,
51
66
  ].join('_')
52
67
  }); // TODO UNCOMMENT any
53
- ;
54
- ({}); // @--end-of-file-for-module=taon-storage lib/constants.ts
68
+ //#endregion
69
+ //#endregion
55
70
 
71
+ //#endregion
72
+ //#endregion
73
+ //#region constants
56
74
  const AWAITING_INTERVAL_TIME = 200;
75
+ //#endregion
76
+ //#region public api / uncahce
57
77
  function uncache(onlyInThisComponentClass, propertyValueToDeleteFromCache) {
58
78
  if (!onlyInThisComponentClass) { // @ts-ignore
59
79
  onlyInThisComponentClass = { name: '__GLOBAL_NAMESPACE__' };
60
80
  }
61
81
  return Promise.all([
82
+ //#region @browser
62
83
  storLocalStorage.removeItem(keyValue(onlyInThisComponentClass, propertyValueToDeleteFromCache)),
63
84
  storLocalStorage.removeItem(keyDefaultValueAreadySet(onlyInThisComponentClass, propertyValueToDeleteFromCache)),
64
85
  storIndexdDb.removeItem(keyValue(onlyInThisComponentClass, propertyValueToDeleteFromCache)),
65
86
  storIndexdDb.removeItem(keyDefaultValueAreadySet(onlyInThisComponentClass, propertyValueToDeleteFromCache)),
87
+ //#endregion
66
88
  ]);
67
89
  }
90
+ //#endregion
68
91
  class TaonStorage {
69
92
  constructor() {
70
- this.action = (defaultValue, storageEngine, engine, transformFrom, transformTo) => {
93
+ //#endregion
94
+ //#region private methods / action
95
+ this.action = (defaultValue, storageEngine
96
+ //#endregion
97
+ , engine, transformFrom, transformTo) => {
71
98
  if (!this.onlyInThisComponentClass) { // @ts-ignore
72
99
  this.onlyInThisComponentClass = { name: '__GLOBAL_NAMESPACE__' };
73
100
  }
74
101
  return (target, memberName) => {
75
102
  let currentValue = target[memberName];
76
103
  const setItemDefaultValue = async () => {
104
+ //#region settin default value
77
105
  const observe = {
78
106
  engine,
79
107
  id: 'setting default value'
@@ -81,13 +109,17 @@ class TaonStorage {
81
109
  TaonStorage.pendingOperatins.push(observe);
82
110
  await new Promise((resolve, reject) => {
83
111
  storageEngine.getItem(keyValue(this.onlyInThisComponentClass, memberName), (err, valFromDb) => {
112
+ // target[memberName] = valFromDb;
84
113
  currentValue = transformFrom ? transformFrom(valFromDb) : valFromDb;
114
+ // log.info(`["${memberName}"] set default value for `, valFromDb);
85
115
  resolve();
86
116
  this.endObserverAction(observe);
87
117
  });
88
118
  });
119
+ //#endregion
89
120
  };
90
121
  if (defaultValue !== void 0) {
122
+ //#region setting default value from db
91
123
  const observe = {
92
124
  engine,
93
125
  id: 'setting not rivial default value'
@@ -95,6 +127,7 @@ class TaonStorage {
95
127
  TaonStorage.pendingOperatins.push(observe);
96
128
  (new Promise((resolve, reject) => {
97
129
  storageEngine.getItem(keyDefaultValueAreadySet(this.onlyInThisComponentClass, memberName), async (err, val) => {
130
+ // log.info(`["${memberName}"] was set default value for ? `, val)
98
131
  if (val) {
99
132
  await setItemDefaultValue();
100
133
  resolve();
@@ -111,18 +144,21 @@ class TaonStorage {
111
144
  });
112
145
  });
113
146
  currentValue = defaultValue;
147
+ // log.i(`["${memberName}"] defaultValue "${memberName}"`, currentValue)
114
148
  resolve();
115
149
  }
116
150
  });
117
151
  })).then(() => {
118
152
  this.endObserverAction(observe);
119
153
  });
154
+ //#endregion
120
155
  }
121
156
  else {
122
157
  setItemDefaultValue();
123
158
  }
124
159
  Object.defineProperty(target, memberName, {
125
160
  set: (newValue) => {
161
+ //#region setting new value on setter
126
162
  const observe = {
127
163
  engine,
128
164
  id: 'setting in SET not rivial default value'
@@ -135,19 +171,24 @@ class TaonStorage {
135
171
  })).then(() => {
136
172
  this.endObserverAction(observe);
137
173
  });
174
+ //#endregion
138
175
  currentValue = newValue;
139
176
  },
140
177
  get: () => currentValue,
141
178
  });
142
179
  };
143
180
  };
181
+ //#endregion
182
+ //#endregion
144
183
  }
184
+ //#region static
145
185
  static { this.pendingOperatins = []; }
146
186
  static { this.id = 0; }
147
187
  /**
148
188
  * TODO This is fine for now, but could be something smarter here
149
189
  */
150
190
  static async awaitPendingOperatios(id = TaonStorage.id++) {
191
+ // console.log('AWAITING')
151
192
  if (id > Number.MAX_SAFE_INTEGER - 2) {
152
193
  TaonStorage.id = 0;
153
194
  id = TaonStorage.id++;
@@ -177,8 +218,12 @@ class TaonStorage {
177
218
  static get property() {
178
219
  return new TaonStorage();
179
220
  }
221
+ //#region private fields / file path
180
222
  /* */
181
223
  /* */
224
+ //#endregion
225
+ //#endregion
226
+ //#region public getters
182
227
  get in() {
183
228
  const that = this;
184
229
  return {
@@ -206,23 +251,39 @@ class TaonStorage {
206
251
  /* */
207
252
  };
208
253
  }
254
+ //#endregion
255
+ //#region public methods
256
+ //#region public methods / for
257
+ //#region @browser
209
258
  for(onlyInThisComponentClass) {
210
259
  this.onlyInThisComponentClass = onlyInThisComponentClass;
211
260
  return this;
212
261
  }
262
+ //#endregion
263
+ //#endregion
264
+ //#region public methods / with default value
213
265
  withDefaultValue(defaultValue) {
266
+ // log.i(`["${}"]`)
214
267
  return this.action(defaultValue, this.getEngine(), this.engine);
215
268
  }
269
+ //#endregion
270
+ //#region public methods / with options
216
271
  withOptions(options) {
217
272
  const { defaultValue, transformFrom, transformTo } = (options || {});
218
273
  return this.action(defaultValue ? defaultValue : this.defaultValue, this.getEngine(), this.engine, transformFrom, transformTo);
219
274
  }
275
+ //#endregion
276
+ //#endregion
277
+ //#region private methods
278
+ //#region private methods / get engine
220
279
  getEngine() {
221
280
  switch (this.engine) {
281
+ //#region @browser
222
282
  case 'localstorage':
223
283
  return storLocalStorage;
224
284
  case 'indexeddb':
225
285
  return storIndexdDb;
286
+ //#endregion
226
287
  /* */
227
288
  /* */
228
289
  /* */
@@ -230,16 +291,16 @@ class TaonStorage {
230
291
  /* */
231
292
  }
232
293
  }
294
+ //#endregion
295
+ //#region private methods / end observer action
233
296
  endObserverAction(observe) {
297
+ // observe.subscribers.forEach(c => typeof c?.awaitId === 'function' && c());
234
298
  observe.isDone = true;
235
299
  }
236
300
  }
237
301
  const Stor = TaonStorage;
238
- ;
239
- ({}); // @--end-of-file-for-module=taon-storage lib/storage.ts
240
302
 
241
- ;
242
- ({}); // @--end-of-file-for-module=taon-storage lib/index.ts
303
+ //#region @browser
243
304
 
244
305
  /**
245
306
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"taon-storage.mjs","sources":["../../../tmp-libs-for-dist/taon-storage/projects/taon-storage/src/lib/sample-log-cmp/sample-log-cmp.component.ts","../../../tmp-libs-for-dist/taon-storage/projects/taon-storage/src/lib/sample-log-cmp/sample-log-cmp.component.html","../../../tmp-libs-for-dist/taon-storage/projects/taon-storage/src/lib/helpers.ts","../../../tmp-libs-for-dist/taon-storage/projects/taon-storage/src/lib/constants.ts","../../../tmp-libs-for-dist/taon-storage/projects/taon-storage/src/lib/storage.ts","../../../tmp-libs-for-dist/taon-storage/projects/taon-storage/src/lib/index.ts","../../../tmp-libs-for-dist/taon-storage/projects/taon-storage/src/taon-storage.ts"],"sourcesContent":["\n\nimport { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, OnInit, Output, } from '@angular/core';/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n\nimport { Subscription } from 'rxjs';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'sample-log-cmp',\n templateUrl: './sample-log-cmp.component.html',\n styleUrls: ['./sample-log-cmp.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule],\n standalone: true,\n})\nexport class SampleLogCmpComponent {}\n\n ;({}); // @--end-of-file-for-module=taon-storage lib/sample-log-cmp/sample-log-cmp.component.ts","<p>\n sample log component works!\n <img\n src=\"assets/assets-for/taon-storage/shared/logo.png\"\n alt=\"logo\" height=\"200\" />\n</p>\n","\n\n\nexport const keyValue = (classFun, memberName) => {\n\n const res = `taon.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=taon-storage lib/helpers.ts","\n\n\nimport { Helpers, _ } from \"tnp-core/browser\";\n\nimport * as localForge from 'localforage';\n\n\n\n\nexport const storeName = 'taon-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=taon-storage lib/constants.ts","\n\n\nimport { _ } from 'tnp-core/browser';\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 TaonStorage {\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 = TaonStorage.id++): Promise<void> {\n\n if (id > Number.MAX_SAFE_INTEGER - 2) {\n TaonStorage.id = 0;\n id = TaonStorage.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 TaonStorage();\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<TaonStorage, 'in'>;\n },\n get localstorage() {\n that.engine = 'localstorage';\n return that as Omit<TaonStorage, '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<TaonStorage, 'for' | 'in'> {\n this.onlyInThisComponentClass = onlyInThisComponentClass;\n return this as Omit<TaonStorage, '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 TaonStorage.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 TaonStorage.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 TaonStorage.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 = TaonStorage;\n\n ;({}); // @--end-of-file-for-module=taon-storage lib/storage.ts","\n\n\nexport * from './sample-log-cmp/sample-log-cmp.component';\n\nexport * from './storage';\n\n ;({}); // @--end-of-file-for-module=taon-storage lib/index.ts","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taon-storage.mjs","sources":["../../../tmp-libs-for-dist/taon-storage/projects/taon-storage/src/lib/sample-log-cmp/sample-log-cmp.component.ts","../../../tmp-libs-for-dist/taon-storage/projects/taon-storage/src/lib/sample-log-cmp/sample-log-cmp.component.html","../../../tmp-libs-for-dist/taon-storage/projects/taon-storage/src/lib/helpers.ts","../../../tmp-libs-for-dist/taon-storage/projects/taon-storage/src/lib/constants.ts","../../../tmp-libs-for-dist/taon-storage/projects/taon-storage/src/lib/storage.ts","../../../tmp-libs-for-dist/taon-storage/projects/taon-storage/src/lib/index.ts","../../../tmp-libs-for-dist/taon-storage/projects/taon-storage/src/taon-storage.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'sample-log-cmp',\n templateUrl: './sample-log-cmp.component.html',\n styleUrls: ['./sample-log-cmp.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule],\n standalone: true,\n})\nexport class SampleLogCmpComponent {}\n","<p>\n sample log component works!\n <img\n src=\"assets/assets-for/taon-storage/shared/logo.png\"\n alt=\"logo\" height=\"200\" />\n</p>\n","\nexport const keyValue = (classFun, memberName) => {\n // console.log('classname',classFun.name)\n const res = `taon.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","//#region imports\nimport { Helpers, _ } from \"tnp-core/browser\";\n//#region @browser\nimport * as localForge from 'localforage';\n//#endregion\n//#endregion\n\n//#region constants / store name\nexport const storeName = 'taon-storage_'\n //#region @browser\n + window?.location.port;\n//#endregion\n//#endregion\n\n//#region constants / environment\nlet environment = {} as any;\n/* */\n/* */\n/* */\n \n//#region @browser\n// @ts-ignore\nenvironment = window['ENV'];\n//#endregion\n//#endregion\n\n//#region constant / stor local storage\nconst websql = Helpers.isWebSQL ? 'websql' : '';\n//#region @browser\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//#endregion\n//#endregion\n\n//#region constant / stor idndexedb storage\n//#region @browser\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//#endregion\n//#endregion\n","//#region imports\nimport { _ } from 'tnp-core/browser';\nimport { keyDefaultValueAreadySet, keyValue } from './helpers';\nimport { Models } from './models';\nimport { FileStor } from './file-stor';\n//#region @browser\nimport { storIndexdDb, storLocalStorage } from './constants';\n//#endregion\n//#endregion\n\n//#region constants\nconst AWAITING_INTERVAL_TIME = 200;\n//#endregion\n\n//#region public api / uncahce\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 //#region @browser\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 //#endregion\n ])\n}\n//#endregion\n\nclass TaonStorage {\n\n //#region static\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 = TaonStorage.id++): Promise<void> {\n // console.log('AWAITING')\n if (id > Number.MAX_SAFE_INTEGER - 2) {\n TaonStorage.id = 0;\n id = TaonStorage.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 TaonStorage();\n }\n //#endregion\n\n //#region private fields\n private onlyInThisComponentClass?: Function;\n private defaultValue: any;\n private engine: Models.StorgeEngine;\n\n\n //#region private fields / file path\n/* */\n/* */\n \n //#endregion\n //#endregion\n\n //#region public getters\n public get in() {\n const that = this;\n return {\n get indexedb() {\n that.engine = 'indexeddb';\n return that as Omit<TaonStorage, 'in'>;\n },\n get localstorage() {\n that.engine = 'localstorage';\n return that as Omit<TaonStorage, 'in'>;\n },\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n }\n //#endregion\n\n //#region public methods\n\n //#region public methods / for\n //#region @browser\n public for(onlyInThisComponentClass?: Function): Omit<TaonStorage, 'for' | 'in'> {\n this.onlyInThisComponentClass = onlyInThisComponentClass;\n return this as Omit<TaonStorage, 'for' | 'in'>;\n }\n //#endregion\n //#endregion\n\n //#region public methods / with default value\n public withDefaultValue(defaultValue?: any): any {\n // log.i(`[\"${}\"]`)\n return this.action(defaultValue, this.getEngine(), this.engine)\n }\n //#endregion\n\n //#region public methods / with options\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 //#endregion\n\n //#endregion\n\n //#region private methods\n\n //#region private methods / get engine\n private getEngine() {\n switch (this.engine) {\n //#region @browser\n case 'localstorage':\n return storLocalStorage;\n case 'indexeddb':\n return storIndexdDb;\n //#endregion\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n }\n //#endregion\n\n //#region private methods / end observer action\n private endObserverAction(observe: Models.PendingOperation) {\n // observe.subscribers.forEach(c => typeof c?.awaitId === 'function' && c());\n observe.isDone = true;\n }\n //#endregion\n\n //#region private methods / action\n private action = (\n defaultValue: any,\n storageEngine\n //#region @browser\n : Models.StorType\n //#endregion\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 //#region settin default value\n const observe = {\n engine,\n id: 'setting default value'\n } as Models.PendingOperation;\n TaonStorage.pendingOperatins.push(observe);\n\n await new Promise<void>((resolve, reject) => {\n storageEngine.getItem(keyValue(this.onlyInThisComponentClass, memberName), (err, valFromDb) => {\n // target[memberName] = valFromDb;\n currentValue = transformFrom ? transformFrom(valFromDb) : valFromDb;\n // log.info(`[\"${memberName}\"] set default value for `, valFromDb);\n resolve();\n this.endObserverAction(observe);\n })\n });\n //#endregion\n }\n\n if (defaultValue !== void 0) {\n //#region setting default value from db\n const observe = {\n engine,\n id: 'setting not rivial default value'\n } as Models.PendingOperation;\n TaonStorage.pendingOperatins.push(observe);\n\n (new Promise<void>((resolve, reject) => {\n storageEngine.getItem(keyDefaultValueAreadySet(this.onlyInThisComponentClass, memberName), async (err, val) => {\n // log.info(`[\"${memberName}\"] was set default value for ? `, val)\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 // log.i(`[\"${memberName}\"] defaultValue \"${memberName}\"`, currentValue)\n resolve()\n }\n });\n })).then(() => {\n this.endObserverAction(observe);\n });\n\n //#endregion\n } else {\n setItemDefaultValue();\n }\n\n Object.defineProperty(target, memberName, {\n set: (newValue: any) => {\n //#region setting new value on setter\n const observe = {\n engine,\n id: 'setting in SET not rivial default value'\n } as Models.PendingOperation;\n TaonStorage.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 //#endregion\n currentValue = newValue;\n },\n get: () => currentValue,\n });\n };\n };\n //#endregion\n\n //#endregion\n\n}\n\nexport const Stor = TaonStorage;\n","//#region @browser\nexport * from './sample-log-cmp/sample-log-cmp.component';\n//#endregion\nexport * from './storage';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "taon-storage/browser",
3
- "version": "19.0.3",
3
+ "version": "19.0.4",
4
4
  "module": "fesm2022/taon-storage.mjs",
5
5
  "typings": "index.d.ts",
6
6
  "exports": {
package/client/README.md CHANGED
@@ -1,24 +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.
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.