@bbn/bbn 2.0.237 → 2.0.238

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 (83) hide show
  1. package/dist/$.js +1 -1
  2. package/dist/bbn.js +3 -3
  3. package/dist/bbn.js.map +1 -1
  4. package/dist/bbn.sw.js +3 -3
  5. package/dist/bbn.sw.js.map +1 -1
  6. package/dist/com.js +13 -21
  7. package/dist/{vars.d.ts → data.d.ts} +1 -0
  8. package/dist/{vars.js → data.js} +1 -0
  9. package/dist/db/classes/Object.d.ts +3 -0
  10. package/dist/db/classes/Object.js +458 -0
  11. package/dist/db/classes/ObjectProxy.d.ts +18 -0
  12. package/dist/db/classes/ObjectProxy.js +77 -0
  13. package/dist/db/classes/Proxy.d.ts +17 -0
  14. package/dist/db/classes/Proxy.js +66 -0
  15. package/dist/db/functions/fieldsFromFilter.d.ts +1 -0
  16. package/dist/db/functions/fieldsFromFilter.js +33 -0
  17. package/dist/db/functions/getPrimaryKey.d.ts +2 -0
  18. package/dist/db/functions/getPrimaryKey.js +8 -0
  19. package/dist/db/functions/requestToPromise.d.ts +1 -0
  20. package/dist/db/functions/requestToPromise.js +6 -0
  21. package/dist/db/functions/transactionDone.d.ts +1 -0
  22. package/dist/db/functions/transactionDone.js +7 -0
  23. package/dist/db/functions/transformResult.d.ts +1 -0
  24. package/dist/db/functions/transformResult.js +16 -0
  25. package/dist/db/types.d.ts +54 -0
  26. package/dist/db/types.js +1 -0
  27. package/dist/db.d.ts +1 -65
  28. package/dist/db.js +1 -557
  29. package/dist/dt/classes/{date.d.ts → Date.d.ts} +1 -1
  30. package/dist/dt/classes/{date.js → Date.js} +8 -3
  31. package/dist/dt/classes/{dateTime.d.ts → DateTime.d.ts} +1 -1
  32. package/dist/dt/classes/{dateTime.js → DateTime.js} +9 -3
  33. package/dist/dt/classes/{dt.d.ts → Dt.d.ts} +1 -1
  34. package/dist/dt/classes/{dt.js → Dt.js} +36 -48
  35. package/dist/dt/classes/Duration.js +193 -0
  36. package/dist/dt/classes/{monthDay.d.ts → MonthDay.d.ts} +1 -1
  37. package/dist/dt/classes/{monthDay.js → MonthDay.js} +2 -2
  38. package/dist/dt/classes/{time.d.ts → Time.d.ts} +1 -1
  39. package/dist/dt/classes/{time.js → Time.js} +2 -2
  40. package/dist/dt/classes/{yearMonth.d.ts → YearMonth.d.ts} +1 -1
  41. package/dist/dt/classes/{yearMonth.js → YearMonth.js} +2 -2
  42. package/dist/dt/classes/{zoned.d.ts → Zoned.d.ts} +1 -1
  43. package/dist/dt/classes/{zoned.js → Zoned.js} +9 -3
  44. package/dist/dt/functions/buildLocaleFromIntl.js +1 -1
  45. package/dist/dt/functions/guessFormat.js +1 -1
  46. package/dist/dt/functions/intl-weekinfo-polyfill.js +11 -4
  47. package/dist/dt/functions/parse.js +20 -22
  48. package/dist/dt/functions/setupIntl.js +33 -44
  49. package/dist/dt.d.ts +1 -1
  50. package/dist/dt.js +9 -7
  51. package/dist/env.d.ts +1 -1
  52. package/dist/env.js +6 -7
  53. package/dist/fn/ajax/abort.js +1 -1
  54. package/dist/fn/ajax/ajax.d.ts +1 -1
  55. package/dist/fn/ajax/ajax.js +2 -2
  56. package/dist/fn/ajax/download.js +1 -1
  57. package/dist/fn/ajax/getFileContent.js +2 -3
  58. package/dist/fn/ajax/link.js +2 -2
  59. package/dist/fn/ajax/stream.js +2 -2
  60. package/dist/fn/browser/executeSlowly.js +11 -22
  61. package/dist/fn/browser/log.js +2 -3
  62. package/dist/fn/browser/yieldToBrowser.js +7 -19
  63. package/dist/fn/html/makeReactive.js +2 -2
  64. package/dist/fn/init.d.ts +1 -1
  65. package/dist/fn/init.js +4 -5
  66. package/dist/fn/object/_filter.js +1 -1
  67. package/dist/fn/phone/fphone.js +1 -2
  68. package/dist/fn/string/cast.js +1 -2
  69. package/dist/fn/string/shorten.js +1 -1
  70. package/dist/fn/string/treatForHash.js +1 -1
  71. package/dist/fn/style/addColors.d.ts +1 -1
  72. package/dist/fn/style/addColors.js +4 -4
  73. package/dist/fn/type/checkType.js +1 -2
  74. package/dist/fn/type/isCp.js +1 -2
  75. package/dist/fn/type/isHostname.js +1 -1
  76. package/dist/fn/type/isIP.js +1 -1
  77. package/dist/fn/type/isSame.js +2 -2
  78. package/dist/fn/type/isURL.js +1 -1
  79. package/dist/index-no-dep.js +2 -2
  80. package/dist/index.js +2 -2
  81. package/package.json +1 -1
  82. package/dist/dt/classes/duration.js +0 -199
  83. /package/dist/dt/classes/{duration.d.ts → Duration.d.ts} +0 -0
@@ -0,0 +1,66 @@
1
+ import bbnDbObjectProxy from './ObjectProxy.js';
2
+ let requestId = bbn.data.dbRequestId;
3
+ function callServiceWorker(database, method, args) {
4
+ return new Promise((resolve, reject) => {
5
+ if (!navigator.serviceWorker?.controller) {
6
+ reject(new Error('No active service worker controller'));
7
+ return;
8
+ }
9
+ const id = ++requestId;
10
+ const channel = new MessageChannel();
11
+ channel.port1.onmessage = event => {
12
+ const msg = event.data;
13
+ if (msg?.id !== id) {
14
+ return;
15
+ }
16
+ if (msg.ok) {
17
+ resolve(msg.result);
18
+ }
19
+ else {
20
+ reject(new Error(msg.error || 'IndexedDB service worker error'));
21
+ }
22
+ channel.port1.close();
23
+ };
24
+ const command = {
25
+ id,
26
+ database,
27
+ method,
28
+ args
29
+ };
30
+ navigator.serviceWorker.controller.postMessage(command, [channel.port2]);
31
+ });
32
+ }
33
+ const bbnDbProxy = {
34
+ _structures: {},
35
+ _connections: {},
36
+ _objects: {},
37
+ _stores: {},
38
+ ok: true,
39
+ async open(database, version) {
40
+ await callServiceWorker(database, 'manager.open', [database, version]);
41
+ return new bbnDbObjectProxy(database);
42
+ },
43
+ async add(database, name, structure) {
44
+ return callServiceWorker(database, 'manager.add', [database, name, structure]);
45
+ },
46
+ async remove(database, name) {
47
+ return callServiceWorker(database, 'manager.remove', [database, name]);
48
+ },
49
+ async importStructure(database, structure) {
50
+ return callServiceWorker(database, 'manager.importStructure', [database, structure]);
51
+ },
52
+ async reopenWithUpgrade(database) {
53
+ await callServiceWorker(database, 'manager.reopenWithUpgrade', [database]);
54
+ return new bbnDbObjectProxy(database);
55
+ },
56
+ async getExistingVersion(database) {
57
+ return callServiceWorker(database, 'manager.getExistingVersion', [database]);
58
+ },
59
+ close(database) {
60
+ void callServiceWorker(database, 'manager.close', [database]);
61
+ },
62
+ updateStructure() {
63
+ throw new Error('updateStructure cannot be called from the window proxy');
64
+ }
65
+ };
66
+ export default bbnDbProxy;
@@ -0,0 +1 @@
1
+ export default function fieldsFromFilter(filter: unknown, fields?: string[]): string[];
@@ -0,0 +1,33 @@
1
+ import iterate from '../../fn/loop/iterate.js';
2
+ import isObject from '../../fn/type/isObject.js';
3
+ import isArray from '../../fn/type/isArray.js';
4
+ export default function fieldsFromFilter(filter, fields = []) {
5
+ if (filter?.conditions?.length) {
6
+ filter.conditions.forEach((cond) => {
7
+ if (cond.field && !fields.includes(cond.field)) {
8
+ fields.push(cond.field);
9
+ }
10
+ else if (cond.conditions) {
11
+ fieldsFromFilter(cond, fields);
12
+ }
13
+ });
14
+ }
15
+ else if (isObject(filter)) {
16
+ iterate(filter, (_v, n) => {
17
+ if (!fields.includes(n)) {
18
+ fields.push(n);
19
+ }
20
+ });
21
+ }
22
+ else if (isArray(filter)) {
23
+ filter.forEach((cond) => {
24
+ if (cond.field && !fields.includes(cond.field)) {
25
+ fields.push(cond.field);
26
+ }
27
+ else if (cond.conditions) {
28
+ fieldsFromFilter(cond, fields);
29
+ }
30
+ });
31
+ }
32
+ return fields;
33
+ }
@@ -0,0 +1,2 @@
1
+ import { DbStructure } from '../types.js';
2
+ export default function getPrimaryKey(structure: DbStructure): string | string[];
@@ -0,0 +1,8 @@
1
+ import _ from '../../_.js';
2
+ export default function getPrimaryKey(structure) {
3
+ if (!structure.keys?.PRIMARY?.columns) {
4
+ throw new Error(_('No primary key defined in the structure'));
5
+ }
6
+ const cols = structure.keys.PRIMARY.columns;
7
+ return cols.length > 1 ? cols : cols[0];
8
+ }
@@ -0,0 +1 @@
1
+ export default function requestToPromise<T = unknown>(req: IDBRequest<T>): Promise<T>;
@@ -0,0 +1,6 @@
1
+ export default function requestToPromise(req) {
2
+ return new Promise((resolve, reject) => {
3
+ req.onsuccess = () => resolve(req.result);
4
+ req.onerror = () => reject(req.error);
5
+ });
6
+ }
@@ -0,0 +1 @@
1
+ export default function transactionDone(tx: IDBTransaction): Promise<void>;
@@ -0,0 +1,7 @@
1
+ export default function transactionDone(tx) {
2
+ return new Promise((resolve, reject) => {
3
+ tx.oncomplete = () => resolve();
4
+ tx.onabort = () => reject(tx.error);
5
+ tx.onerror = () => reject(tx.error);
6
+ });
7
+ }
@@ -0,0 +1 @@
1
+ export default function transformResult(obj: Record<string, unknown> | undefined, fields?: string[]): Record<string, unknown> | undefined;
@@ -0,0 +1,16 @@
1
+ import iterate from '../../fn/loop/iterate.js';
2
+ export default function transformResult(obj, fields) {
3
+ if (!obj) {
4
+ return undefined;
5
+ }
6
+ if (fields?.length) {
7
+ const res = {};
8
+ iterate(obj, (v, n) => {
9
+ if (fields.includes(n)) {
10
+ res[n] = v;
11
+ }
12
+ });
13
+ return res;
14
+ }
15
+ return obj;
16
+ }
@@ -0,0 +1,54 @@
1
+ export type IndexedDbFactory = IDBFactory | undefined;
2
+ export type Primitive = string | number | boolean | null | undefined | Date;
3
+ export interface DbIndexDefinition {
4
+ columns: string[];
5
+ unique?: boolean;
6
+ }
7
+ export interface DbStructure {
8
+ keys: Record<string, DbIndexDefinition>;
9
+ fields: Record<string, Record<string, unknown>>;
10
+ version?: number;
11
+ }
12
+ export interface DbStructures {
13
+ [database: string]: {
14
+ [store: string]: DbStructure;
15
+ };
16
+ }
17
+ export type WhereObject = Record<string, unknown> | null;
18
+ export type OrderClause = unknown;
19
+ export type DbCommand = {
20
+ id: number;
21
+ database: string;
22
+ method: string;
23
+ args: unknown[];
24
+ };
25
+ export interface IDbApi {
26
+ lastErr: any;
27
+ get dbName(): string;
28
+ lastError(): unknown;
29
+ close(): void;
30
+ insert(table: string, data: Record<string, unknown> | Record<string, unknown>[]): Promise<number>;
31
+ update(table: string, data: Record<string, unknown>, where: WhereObject, replace?: boolean): Promise<number>;
32
+ delete(table: string, where: Record<string, unknown>): Promise<number>;
33
+ selectOne(table: string, field: string, where?: unknown, order?: OrderClause, start?: number, limit?: number): Promise<unknown>;
34
+ select(table: string, fields?: string[], where?: unknown, order?: OrderClause, start?: number): Promise<unknown>;
35
+ selectAll(table: string, fields?: string[], where?: unknown, order?: OrderClause, start?: number, limit?: number | null): Promise<unknown>;
36
+ getColumnValues(table: string, field: string, where?: unknown, order?: OrderClause, start?: number, limit?: number | null): Promise<unknown>;
37
+ copyTable(target: string, table: string, fields?: string[], where?: unknown, order?: OrderClause, start?: number, limit?: number | null): Promise<number>;
38
+ deleteTable(table: string): Promise<boolean>;
39
+ }
40
+ export interface DbManager {
41
+ _structures: DbStructures;
42
+ _connections: Record<string, IDBDatabase>;
43
+ _objects: Record<string, IDbApi>;
44
+ _stores: Record<string, unknown>;
45
+ ok: boolean;
46
+ open(name: string, version?: number): Promise<IDbApi>;
47
+ add(database: string, name: string, structure: DbStructure): Promise<boolean>;
48
+ remove(database: string, name: string): Promise<void>;
49
+ updateStructure(storeName: string, structure: DbStructure, database: IDBDatabase): void;
50
+ importStructure(database: string, structure: Record<string, DbStructure>): Promise<void>;
51
+ reopenWithUpgrade(name: string): Promise<IDbApi>;
52
+ getExistingVersion(name: string): Promise<number>;
53
+ close(database: string): void;
54
+ }
@@ -0,0 +1 @@
1
+ export {};
package/dist/db.d.ts CHANGED
@@ -1,66 +1,2 @@
1
- interface DbIndexDefinition {
2
- columns: string[];
3
- unique?: boolean;
4
- }
5
- interface DbStructure {
6
- keys: Record<string, DbIndexDefinition>;
7
- fields: Record<string, Record<string, unknown>>;
8
- version?: number;
9
- }
10
- interface DbStructures {
11
- [database: string]: {
12
- [store: string]: DbStructure;
13
- };
14
- }
15
- type WhereObject = Record<string, unknown> | null;
16
- type OrderClause = unknown;
17
- interface IDbApi {
18
- lastError(): unknown;
19
- close(): void;
20
- insert(table: string, data: Record<string, unknown> | Record<string, unknown>[]): Promise<number>;
21
- update(table: string, data: Record<string, unknown>, where: WhereObject, replace?: boolean): Promise<number>;
22
- delete(table: string, where: Record<string, unknown>): Promise<number>;
23
- selectOne(table: string, field: string, where?: unknown, order?: OrderClause, start?: number, limit?: number): Promise<unknown>;
24
- select(table: string, fields?: string[], where?: unknown, order?: OrderClause, start?: number): Promise<Record<string, unknown> | null>;
25
- selectAll(table: string, fields?: string[], where?: unknown, order?: OrderClause, start?: number, limit?: number | null): Promise<Record<string, unknown>[]>;
26
- getColumnValues(table: string, field: string, where?: unknown, order?: OrderClause, start?: number, limit?: number | null): Promise<unknown[]>;
27
- copyTable(target: string, table: string, fields?: string[], where?: unknown, order?: OrderClause, start?: number, limit?: number | null): Promise<number>;
28
- deleteTable(table: string): Promise<boolean>;
29
- }
30
- declare class DbObject implements IDbApi {
31
- private readonly dbName;
32
- private lastErr;
33
- constructor(dbName: string);
34
- private hasMissingStores;
35
- private getConnection;
36
- private get structure();
37
- private getStore;
38
- lastError(): unknown;
39
- close(): void;
40
- insert(table: string, data: Record<string, unknown> | Record<string, unknown>[]): Promise<number>;
41
- update(table: string, data: Record<string, unknown>, where: WhereObject, replace?: boolean): Promise<number>;
42
- delete(table: string, where: Record<string, unknown>): Promise<number>;
43
- selectOne(table: string, field: string, where?: unknown, order?: OrderClause, start?: number, limit?: number): Promise<unknown>;
44
- select(table: string, fields?: string[], where?: unknown, order?: OrderClause, start?: number): Promise<Record<string, unknown> | null>;
45
- selectAll(table: string, fields?: string[], where?: unknown, order?: OrderClause, start?: number, limit?: number | null): Promise<Record<string, unknown>[]>;
46
- getColumnValues(table: string, field: string, where?: unknown, order?: OrderClause, start?: number, limit?: number | null): Promise<unknown[]>;
47
- copyTable(target: string, table: string, fields?: string[], where?: unknown, order?: OrderClause, start?: number, limit?: number | null): Promise<number>;
48
- deleteTable(table: string): Promise<boolean>;
49
- }
50
- interface DbManager {
51
- _structures: DbStructures;
52
- _connections: Record<string, IDBDatabase>;
53
- _objects: Record<string, DbObject>;
54
- _stores: Record<string, unknown>;
55
- ok: boolean;
56
- open(name: string, version?: number): Promise<IDbApi>;
57
- add(database: string, name: string, structure: DbStructure): Promise<boolean>;
58
- remove(database: string, name: string): Promise<void>;
59
- updateStructure(storeName: string, structure: DbStructure, database: IDBDatabase): void;
60
- importStructure(database: string, structure: Record<string, DbStructure>): Promise<void>;
61
- reopenWithUpgrade(name: string): Promise<IDbApi>;
62
- getExistingVersion(name: string): Promise<number>;
63
- close(database: string): void;
64
- }
65
- declare const db: DbManager;
1
+ import db from './db/classes/Object.js';
66
2
  export default db;