taon-storage 21.0.12 → 21.0.14

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 (81) hide show
  1. package/browser/fesm2022/taon-storage-browser.mjs +3 -3
  2. package/browser/package.json +1 -1
  3. package/browser-prod/README.md +24 -0
  4. package/browser-prod/fesm2022/taon-storage-browser.mjs +511 -0
  5. package/browser-prod/fesm2022/taon-storage-browser.mjs.map +1 -0
  6. package/browser-prod/types/taon-storage-browser.d.ts +89 -0
  7. package/lib/build-info._auto-generated_.d.ts +5 -1
  8. package/lib/build-info._auto-generated_.js +6 -2
  9. package/lib/build-info._auto-generated_.js.map +1 -1
  10. package/lib/env/env.angular-node-app.d.ts +30 -29
  11. package/lib/env/env.angular-node-app.js +32 -31
  12. package/lib/env/env.angular-node-app.js.map +1 -1
  13. package/lib/env/env.docs-webapp.d.ts +30 -29
  14. package/lib/env/env.docs-webapp.js +32 -31
  15. package/lib/env/env.docs-webapp.js.map +1 -1
  16. package/lib/env/env.electron-app.d.ts +30 -29
  17. package/lib/env/env.electron-app.js +32 -31
  18. package/lib/env/env.electron-app.js.map +1 -1
  19. package/lib/env/env.mobile-app.d.ts +30 -29
  20. package/lib/env/env.mobile-app.js +32 -31
  21. package/lib/env/env.mobile-app.js.map +1 -1
  22. package/lib/env/env.npm-lib-and-cli-tool.d.ts +30 -29
  23. package/lib/env/env.npm-lib-and-cli-tool.js +32 -31
  24. package/lib/env/env.npm-lib-and-cli-tool.js.map +1 -1
  25. package/lib/env/env.vscode-plugin.d.ts +30 -29
  26. package/lib/env/env.vscode-plugin.js +32 -31
  27. package/lib/env/env.vscode-plugin.js.map +1 -1
  28. package/lib/index._auto-generated_.js +1 -1
  29. package/lib/index._auto-generated_.js.map +1 -1
  30. package/lib-prod/build-info._auto-generated_.d.ts +24 -0
  31. package/lib-prod/build-info._auto-generated_.js +30 -0
  32. package/lib-prod/build-info._auto-generated_.js.map +1 -0
  33. package/lib-prod/env/env.angular-node-app.d.ts +64 -0
  34. package/lib-prod/env/env.angular-node-app.js +71 -0
  35. package/lib-prod/env/env.angular-node-app.js.map +1 -0
  36. package/lib-prod/env/env.docs-webapp.d.ts +64 -0
  37. package/lib-prod/env/env.docs-webapp.js +71 -0
  38. package/lib-prod/env/env.docs-webapp.js.map +1 -0
  39. package/lib-prod/env/env.electron-app.d.ts +64 -0
  40. package/lib-prod/env/env.electron-app.js +71 -0
  41. package/lib-prod/env/env.electron-app.js.map +1 -0
  42. package/lib-prod/env/env.mobile-app.d.ts +64 -0
  43. package/lib-prod/env/env.mobile-app.js +71 -0
  44. package/lib-prod/env/env.mobile-app.js.map +1 -0
  45. package/lib-prod/env/env.npm-lib-and-cli-tool.d.ts +64 -0
  46. package/lib-prod/env/env.npm-lib-and-cli-tool.js +71 -0
  47. package/lib-prod/env/env.npm-lib-and-cli-tool.js.map +1 -0
  48. package/lib-prod/env/env.vscode-plugin.d.ts +64 -0
  49. package/lib-prod/env/env.vscode-plugin.js +71 -0
  50. package/lib-prod/env/env.vscode-plugin.js.map +1 -0
  51. package/lib-prod/env/index.d.ts +6 -0
  52. package/lib-prod/env/index.js +23 -0
  53. package/lib-prod/env/index.js.map +1 -0
  54. package/lib-prod/index._auto-generated_.d.ts +0 -0
  55. package/lib-prod/index._auto-generated_.js +6 -0
  56. package/lib-prod/index._auto-generated_.js.map +1 -0
  57. package/lib-prod/index.d.ts +1 -0
  58. package/lib-prod/index.js +20 -0
  59. package/lib-prod/index.js.map +1 -0
  60. package/lib-prod/storage.d.ts +79 -0
  61. package/lib-prod/storage.js +504 -0
  62. package/lib-prod/storage.js.map +1 -0
  63. package/package.json +1 -1
  64. package/websql/fesm2022/taon-storage-websql.mjs +3 -3
  65. package/websql/package.json +1 -1
  66. package/websql-prod/README.md +24 -0
  67. package/websql-prod/fesm2022/taon-storage-websql.mjs +511 -0
  68. package/websql-prod/fesm2022/taon-storage-websql.mjs.map +1 -0
  69. package/websql-prod/types/taon-storage-websql.d.ts +89 -0
  70. package/lib/constants.d.ts +0 -3
  71. package/lib/constants.js +0 -40
  72. package/lib/constants.js.map +0 -1
  73. package/lib/file-stor.d.ts +0 -9
  74. package/lib/file-stor.js +0 -64
  75. package/lib/file-stor.js.map +0 -1
  76. package/lib/helpers.d.ts +0 -2
  77. package/lib/helpers.js +0 -15
  78. package/lib/helpers.js.map +0 -1
  79. package/lib/models.d.ts +0 -10
  80. package/lib/models.js +0 -5
  81. package/lib/models.js.map +0 -1
@@ -0,0 +1,504 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Stor = exports.StorPropertyInIndexedDb = exports.StorPropertyInLocalStorage = exports.keyDefaultValueAreadySet = exports.StorConfig = exports.storeName = void 0;
4
+ exports.keyValue = keyValue;
5
+ exports.keyDefaultValueAlreadySet = keyDefaultValueAlreadySet;
6
+ exports.uncache = uncache;
7
+ /* taon-storage (native, SSR-safe) */
8
+ const lib_prod_1 = require("tnp-core/lib-prod");
9
+ const isBrowser = typeof window !== 'undefined' &&
10
+ typeof document !== 'undefined' &&
11
+ typeof navigator !== 'undefined';
12
+ function safeLocationPort() {
13
+ try {
14
+ return globalThis?.location?.port || 'no-port';
15
+ }
16
+ catch {
17
+ return 'no-port';
18
+ }
19
+ }
20
+ /**
21
+ * Keeps the spirit of your old `storeName = taon-storage_<port>`
22
+ * plus project name namespacing (but without localForage).
23
+ */
24
+ exports.storeName = `taon-storage_${safeLocationPort()}`;
25
+ function defaultNamespace() {
26
+ const project = lib_prod_1._.kebabCase(globalThis['CURRENT_PROJECT_GENERIC_NAME'] ?? '');
27
+ return project ? `${exports.storeName}_${project}` : exports.storeName;
28
+ }
29
+ /**
30
+ * Central config (optional).
31
+ * You can set it once at app bootstrap if you want a stable namespace.
32
+ */
33
+ exports.StorConfig = {
34
+ namespace: defaultNamespace(),
35
+ indexedDb: {
36
+ dbName: `${defaultNamespace()}_INDEXEDDB`,
37
+ storeName: 'keyvaluepairs',
38
+ },
39
+ };
40
+ function normalizeScopeClass(cls) {
41
+ if (!cls)
42
+ return { name: '__GLOBAL_NAMESPACE__' };
43
+ // if it's a function/class
44
+ if (typeof cls === 'function')
45
+ return { name: cls.name || '__ANON__' };
46
+ // if it's already object with name
47
+ return { name: cls.name || '__ANON__' };
48
+ }
49
+ function keyValue(scopeClass, memberName) {
50
+ const c = normalizeScopeClass(scopeClass);
51
+ return `${exports.StorConfig.namespace}::taon.storage.class.${c.name}.prop.${memberName}`;
52
+ }
53
+ function keyDefaultValueAlreadySet(scopeClass, memberName) {
54
+ return `${keyValue(scopeClass, memberName)}::defaultvalueisset`;
55
+ }
56
+ /** Back-compat alias (your old typo) */
57
+ exports.keyDefaultValueAreadySet = keyDefaultValueAlreadySet;
58
+ class NoopStore {
59
+ async getItem(_key) {
60
+ return undefined;
61
+ }
62
+ async setItem(_key, _value) {
63
+ // noop
64
+ }
65
+ async removeItem(_key) {
66
+ // noop
67
+ }
68
+ }
69
+ class BrowserLocalStorageStore {
70
+ ls() {
71
+ if (!isBrowser)
72
+ return undefined;
73
+ try {
74
+ return window.localStorage;
75
+ }
76
+ catch {
77
+ return undefined;
78
+ }
79
+ }
80
+ async getItem(key) {
81
+ const ls = this.ls();
82
+ if (!ls)
83
+ return undefined;
84
+ const raw = ls.getItem(key);
85
+ if (raw === null)
86
+ return undefined;
87
+ try {
88
+ return JSON.parse(raw);
89
+ }
90
+ catch {
91
+ // if something stored plain string by older versions
92
+ return raw;
93
+ }
94
+ }
95
+ async setItem(key, value) {
96
+ const ls = this.ls();
97
+ if (!ls)
98
+ return;
99
+ try {
100
+ ls.setItem(key, JSON.stringify(value));
101
+ }
102
+ catch {
103
+ // last resort: try as string
104
+ try {
105
+ ls.setItem(key, String(value));
106
+ }
107
+ catch {
108
+ // ignore (quota/private mode)
109
+ }
110
+ }
111
+ }
112
+ async removeItem(key) {
113
+ const ls = this.ls();
114
+ if (!ls)
115
+ return;
116
+ try {
117
+ ls.removeItem(key);
118
+ }
119
+ catch {
120
+ // ignore
121
+ }
122
+ }
123
+ }
124
+ class BrowserIndexedDbStore {
125
+ dbPromise = null;
126
+ openDb() {
127
+ if (!isBrowser || !window.indexedDB) {
128
+ return Promise.reject(new Error('IndexedDB not available'));
129
+ }
130
+ if (this.dbPromise)
131
+ return this.dbPromise;
132
+ const { dbName, storeName } = exports.StorConfig.indexedDb;
133
+ this.dbPromise = new Promise((resolve, reject) => {
134
+ const req = indexedDB.open(dbName, 1);
135
+ req.onupgradeneeded = () => {
136
+ const db = req.result;
137
+ if (!db.objectStoreNames.contains(storeName)) {
138
+ db.createObjectStore(storeName);
139
+ }
140
+ };
141
+ req.onsuccess = () => resolve(req.result);
142
+ req.onerror = () => reject(req.error);
143
+ });
144
+ return this.dbPromise;
145
+ }
146
+ async withStore(mode, fn) {
147
+ const db = await this.openDb();
148
+ const { storeName } = exports.StorConfig.indexedDb;
149
+ return await new Promise((resolve, reject) => {
150
+ const tx = db.transaction(storeName, mode);
151
+ const store = tx.objectStore(storeName);
152
+ const req = fn(store);
153
+ req.onsuccess = () => resolve(req.result);
154
+ req.onerror = () => reject(req.error);
155
+ tx.onabort = () => reject(tx.error);
156
+ // tx.oncomplete => nothing
157
+ });
158
+ }
159
+ async getItem(key) {
160
+ try {
161
+ const result = await this.withStore('readonly', s => s.get(key));
162
+ return result === undefined ? undefined : result;
163
+ }
164
+ catch {
165
+ return undefined;
166
+ }
167
+ }
168
+ async setItem(key, value) {
169
+ try {
170
+ await this.withStore('readwrite', s => s.put(value, key));
171
+ }
172
+ catch {
173
+ // ignore
174
+ }
175
+ }
176
+ async removeItem(key) {
177
+ try {
178
+ await this.withStore('readwrite', s => s.delete(key));
179
+ }
180
+ catch {
181
+ // ignore
182
+ }
183
+ }
184
+ }
185
+ /**
186
+ * Node-side file storage (optional). No top-level node imports (Angular-safe).
187
+ * Works only when executed in Node.
188
+ */
189
+ class FileStor {
190
+ filePath;
191
+ useJSON;
192
+ constructor(filePath, useJSON = false) {
193
+ this.filePath = filePath;
194
+ this.useJSON = useJSON;
195
+ }
196
+ isNodeRuntime() {
197
+ return lib_prod_1.UtilsOs.isNode;
198
+ // return (
199
+ // typeof process !== 'undefined' &&
200
+ // !!(process as any).versions?.node &&
201
+ // typeof (globalThis as any).window === 'undefined'
202
+ // );
203
+ }
204
+ async setItem(_key, value) {
205
+ if (!this.isNodeRuntime())
206
+ return;
207
+ //#region @backendFunc
208
+ const fs = await Promise.resolve().then(() => require('node:fs/promises'));
209
+ const data = this.useJSON ? JSON.stringify(value, null, 2) : value;
210
+ if (this.useJSON) {
211
+ await fs.writeFile(this.filePath, String(data), 'utf8');
212
+ }
213
+ else {
214
+ await fs.writeFile(this.filePath, String(data), 'utf8');
215
+ }
216
+ //#endregion
217
+ }
218
+ async getItem(_key) {
219
+ if (!this.isNodeRuntime())
220
+ return undefined;
221
+ //#region @backendFunc
222
+ const fs = await Promise.resolve().then(() => require('node:fs/promises'));
223
+ try {
224
+ const buf = await fs.readFile(this.filePath, 'utf8');
225
+ if (!this.useJSON)
226
+ return buf;
227
+ return JSON.parse(buf);
228
+ }
229
+ catch {
230
+ return undefined;
231
+ }
232
+ //#endregion
233
+ }
234
+ async removeItem(_key) {
235
+ if (!this.isNodeRuntime())
236
+ return;
237
+ //#region @backendFunc
238
+ const fs = await Promise.resolve().then(() => require('node:fs/promises'));
239
+ try {
240
+ await fs.rm(this.filePath, { force: true });
241
+ }
242
+ catch {
243
+ // ignore
244
+ }
245
+ //#endregion
246
+ }
247
+ }
248
+ /* ---------------------------
249
+ * Pending ops (so you can still await)
250
+ * -------------------------- */
251
+ class StorPending {
252
+ static pending = [];
253
+ static id = 0;
254
+ static AWAITING_INTERVAL_TIME = 200;
255
+ static async awaitPendingOperations(id = StorPending.id++) {
256
+ if (id > Number.MAX_SAFE_INTEGER - 2) {
257
+ StorPending.id = 0;
258
+ id = StorPending.id++;
259
+ }
260
+ const pending = StorPending.pending;
261
+ for (const op of pending) {
262
+ if (!op.isDone) {
263
+ await new Promise(resolve => {
264
+ setTimeout(async () => {
265
+ await StorPending.awaitPendingOperations(id);
266
+ resolve();
267
+ }, StorPending.AWAITING_INTERVAL_TIME);
268
+ });
269
+ return;
270
+ }
271
+ }
272
+ // cleanup
273
+ StorPending.pending = pending.filter(p => !p.isDone);
274
+ }
275
+ static start(engine, id) {
276
+ const op = { engine, id, isDone: false };
277
+ StorPending.pending.push(op);
278
+ return op;
279
+ }
280
+ static done(op) {
281
+ op.isDone = true;
282
+ }
283
+ }
284
+ /* ---------------------------
285
+ * Decorator builder
286
+ * -------------------------- */
287
+ class StorPropertyBuilder {
288
+ scopeClass;
289
+ engine;
290
+ store;
291
+ filePath;
292
+ useJsonFile = false;
293
+ constructor(engine, store) {
294
+ this.engine = engine;
295
+ this.store = store;
296
+ }
297
+ for(scopeClass) {
298
+ this.scopeClass = scopeClass;
299
+ return this;
300
+ }
301
+ withDefaultValue(defaultValue) {
302
+ return this.withOptions({ defaultValue });
303
+ }
304
+ withOptions(options) {
305
+ const scopeClass = this.scopeClass;
306
+ // per-instance state (fixes prototype-closure sharing)
307
+ const values = new WeakMap();
308
+ const initStarted = new WeakMap();
309
+ const ensureInit = (instance) => {
310
+ if (initStarted.has(instance))
311
+ return;
312
+ const op = StorPending.start(this.engine, 'init');
313
+ const p = (async () => {
314
+ const memberName = ensureInit.__memberName;
315
+ const kVal = keyValue(scopeClass, memberName);
316
+ const kDef = keyDefaultValueAlreadySet(scopeClass, memberName);
317
+ const defProvided = options.defaultValue !== undefined;
318
+ if (!isBrowser &&
319
+ (this.engine === 'localstorage' || this.engine === 'indexeddb')) {
320
+ // SSR: just set defaults, no storage
321
+ if (defProvided)
322
+ values.set(instance, options.defaultValue);
323
+ return;
324
+ }
325
+ // Browser (or node file/json)
326
+ if (defProvided) {
327
+ const already = await this.store.getItem(kDef);
328
+ if (already) {
329
+ const stored = await this.store.getItem(kVal);
330
+ const v = options.transformFrom
331
+ ? options.transformFrom(stored)
332
+ : stored;
333
+ if (v !== undefined)
334
+ values.set(instance, v);
335
+ else
336
+ values.set(instance, options.defaultValue);
337
+ }
338
+ else {
339
+ await this.store.setItem(kDef, true);
340
+ const toDb = options.transformTo
341
+ ? options.transformTo(options.defaultValue)
342
+ : options.defaultValue;
343
+ await this.store.setItem(kVal, toDb);
344
+ values.set(instance, options.defaultValue);
345
+ }
346
+ }
347
+ else {
348
+ const stored = await this.store.getItem(kVal);
349
+ const v = options.transformFrom
350
+ ? options.transformFrom(stored)
351
+ : stored;
352
+ if (v !== undefined)
353
+ values.set(instance, v);
354
+ }
355
+ })()
356
+ .catch(() => {
357
+ // swallow, keep app alive
358
+ })
359
+ .finally(() => StorPending.done(op));
360
+ initStarted.set(instance, p);
361
+ };
362
+ return (target, memberName) => {
363
+ ensureInit.__memberName = memberName;
364
+ Object.defineProperty(target, memberName, {
365
+ configurable: true,
366
+ enumerable: true,
367
+ get: function () {
368
+ ensureInit(this);
369
+ if (values.has(this))
370
+ return values.get(this);
371
+ if (options.defaultValue !== undefined)
372
+ return options.defaultValue;
373
+ return undefined;
374
+ },
375
+ set: function (newValue) {
376
+ values.set(this, newValue);
377
+ // if this is the first interaction, init will happen anyway
378
+ ensureInit(this);
379
+ const op = StorPending.start(target?.engine ?? 'localstorage', 'set');
380
+ const scope = scopeClass;
381
+ const kVal = keyValue(scope, memberName);
382
+ const toDb = options.transformTo
383
+ ? options.transformTo(newValue)
384
+ : newValue;
385
+ Promise.resolve()
386
+ .then(() => target)
387
+ .then(() => this)
388
+ .then(() => this)
389
+ .then(async () => {
390
+ // If we are SSR + browser engine => no-op
391
+ if (!isBrowser && options)
392
+ return;
393
+ await options; // no-op line to keep TS happy about chaining in some builds
394
+ })
395
+ .catch(() => {
396
+ // ignore
397
+ });
398
+ // do real store write (async)
399
+ Promise.resolve()
400
+ .then(async () => {
401
+ // SSR guard for browser engines
402
+ if (!isBrowser && StorPropertyInLocalStorage) {
403
+ return;
404
+ }
405
+ await thisStoreForEngineWrite(this, kVal, toDb);
406
+ })
407
+ .catch(() => {
408
+ // ignore
409
+ })
410
+ .finally(() => StorPending.done(op));
411
+ },
412
+ });
413
+ // small helper to keep closure clean
414
+ const builderStore = this.store;
415
+ const builderEngine = this.engine;
416
+ async function thisStoreForEngineWrite(_instance, key, value) {
417
+ // If browser engines but not browser, skip.
418
+ if (!isBrowser &&
419
+ (builderEngine === 'localstorage' || builderEngine === 'indexeddb'))
420
+ return;
421
+ await builderStore.setItem(key, value);
422
+ }
423
+ };
424
+ }
425
+ /* optional node-only engines (same builder) */
426
+ file(filePath) {
427
+ this.engine = 'file';
428
+ this.filePath = filePath;
429
+ this.useJsonFile = false;
430
+ this.store = new FileStor(filePath, false);
431
+ return this;
432
+ }
433
+ jsonFile(filePath) {
434
+ this.engine = 'json';
435
+ this.filePath = filePath;
436
+ this.useJsonFile = true;
437
+ this.store = new FileStor(filePath, true);
438
+ return this;
439
+ }
440
+ }
441
+ /* ---------------------------
442
+ * Public: clean API exports
443
+ * -------------------------- */
444
+ const localStorageStore = isBrowser
445
+ ? new BrowserLocalStorageStore()
446
+ : new NoopStore();
447
+ const indexedDbStore = isBrowser
448
+ ? new BrowserIndexedDbStore()
449
+ : new NoopStore();
450
+ class StorPropertyInLocalStorage {
451
+ static for(scopeClass) {
452
+ return new StorPropertyBuilder('localstorage', localStorageStore).for(scopeClass);
453
+ }
454
+ }
455
+ exports.StorPropertyInLocalStorage = StorPropertyInLocalStorage;
456
+ class StorPropertyInIndexedDb {
457
+ static for(scopeClass) {
458
+ return new StorPropertyBuilder('indexeddb', indexedDbStore).for(scopeClass);
459
+ }
460
+ }
461
+ exports.StorPropertyInIndexedDb = StorPropertyInIndexedDb;
462
+ /**
463
+ * Helpers
464
+ */
465
+ async function uncache(onlyInThisComponentClass, propertyValueToDeleteFromCache) {
466
+ const scope = onlyInThisComponentClass || { name: '__GLOBAL_NAMESPACE__' };
467
+ const prop = String(propertyValueToDeleteFromCache);
468
+ await Promise.all([
469
+ localStorageStore.removeItem(keyValue(scope, prop)),
470
+ localStorageStore.removeItem(keyDefaultValueAlreadySet(scope, prop)),
471
+ indexedDbStore.removeItem(keyValue(scope, prop)),
472
+ indexedDbStore.removeItem(keyDefaultValueAlreadySet(scope, prop)),
473
+ ]);
474
+ }
475
+ /**
476
+ * Backwards-compatible facade:
477
+ * Stor.property.in.localstorage.for(...).withDefaultValue(...)
478
+ */
479
+ class TaonStorageFacade {
480
+ static async awaitPendingOperatios() {
481
+ await StorPending.awaitPendingOperations();
482
+ }
483
+ static get property() {
484
+ return {
485
+ in: {
486
+ get localstorage() {
487
+ return new StorPropertyBuilder('localstorage', localStorageStore);
488
+ },
489
+ get indexedb() {
490
+ return new StorPropertyBuilder('indexeddb', indexedDbStore);
491
+ },
492
+ // node-only (safe: dynamic import inside FileStor)
493
+ file(filePath) {
494
+ return new StorPropertyBuilder('file', new FileStor(filePath, false));
495
+ },
496
+ jsonFile(filePath) {
497
+ return new StorPropertyBuilder('json', new FileStor(filePath, true));
498
+ },
499
+ },
500
+ };
501
+ }
502
+ }
503
+ exports.Stor = TaonStorageFacade;
504
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "taon-storage",
3
- "version": "21.0.12",
3
+ "version": "21.0.14",
4
4
  "scripts": {
5
5
  "taon init": "taon init",
6
6
  "taon start": "taon start",
@@ -4,10 +4,10 @@ import { CommonModule } from '@angular/common';
4
4
  import { _, UtilsOs } from 'tnp-core/websql';
5
5
 
6
6
  class SampleLogCmpComponent {
7
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: SampleLogCmpComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: SampleLogCmpComponent, isStandalone: true, selector: "sample-log-cmp", ngImport: i0, template: "<p>\n sample log component works!\n <img\n src=\"assets/assets-for/taon-storage/assets/shared/logo.png\"\n alt=\"logo\" height=\"200\" />\n</p>", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: SampleLogCmpComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.9", type: SampleLogCmpComponent, isStandalone: true, selector: "sample-log-cmp", ngImport: i0, template: "<p>\n sample log component works!\n <img\n src=\"assets/assets-for/taon-storage/assets/shared/logo.png\"\n alt=\"logo\" height=\"200\" />\n</p>", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9
9
  }
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: SampleLogCmpComponent, decorators: [{
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: SampleLogCmpComponent, decorators: [{
11
11
  type: Component,
12
12
  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/assets/shared/logo.png\"\n alt=\"logo\" height=\"200\" />\n</p>", styles: [":host{display:block}\n"] }]
13
13
  }] });
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "taon-storage/websql",
3
- "version": "21.0.12",
3
+ "version": "21.0.14",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^21.0.0",
6
6
  "@angular/core": "^21.0.0"
@@ -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.