@social-mail/social-mail-client 1.2.490 → 1.2.492

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/admin/AdminAppIndex.pack.js +3 -2
  2. package/dist/admin/AdminAppIndex.pack.js.map +1 -1
  3. package/dist/admin/AdminAppIndex.pack.min.js +2 -2
  4. package/dist/admin/AdminAppIndex.pack.min.js.map +1 -1
  5. package/dist/common/pages/stores/products/EditProductDetailPage.d.ts.map +1 -1
  6. package/dist/common/pages/stores/products/EditProductDetailPage.js +2 -1
  7. package/dist/common/pages/stores/products/EditProductDetailPage.js.map +1 -1
  8. package/dist/public/channel/ChannelView.pack.js +1 -1
  9. package/dist/public/channel/ChannelView.pack.js.map +1 -1
  10. package/dist/public/channel/ChannelView.pack.min.js +1 -1
  11. package/dist/public/channel/ChannelView.pack.min.js.map +1 -1
  12. package/dist/public/contact-us/ContactUsApp.pack.js +1 -1
  13. package/dist/public/contact-us/ContactUsApp.pack.js.map +1 -1
  14. package/dist/public/contact-us/ContactUsApp.pack.min.js +1 -1
  15. package/dist/public/contact-us/ContactUsApp.pack.min.js.map +1 -1
  16. package/dist/public/preview/pdf/PreviewPDF.pack.js +1 -1
  17. package/dist/public/preview/pdf/PreviewPDF.pack.js.map +1 -1
  18. package/dist/public/preview/pdf/PreviewPDF.pack.min.js +1 -1
  19. package/dist/public/preview/pdf/PreviewPDF.pack.min.js.map +1 -1
  20. package/dist/public/store/Store.pack.js +140 -76
  21. package/dist/public/store/Store.pack.js.map +1 -1
  22. package/dist/public/store/Store.pack.min.js +139 -76
  23. package/dist/public/store/Store.pack.min.js.map +1 -1
  24. package/dist/public/store/StoreApp.pack.js +1 -1
  25. package/dist/public/store/StoreApp.pack.js.map +1 -1
  26. package/dist/public/store/StoreApp.pack.min.js +1 -1
  27. package/dist/public/store/StoreApp.pack.min.js.map +1 -1
  28. package/dist/public/store/StoreItemListView.d.ts.map +1 -1
  29. package/dist/public/store/StoreItemListView.js +139 -75
  30. package/dist/public/store/StoreItemListView.js.map +1 -1
  31. package/dist/public/store/cart/ShoppingCart.pack.js +1 -1
  32. package/dist/public/store/cart/ShoppingCart.pack.js.map +1 -1
  33. package/dist/public/store/cart/ShoppingCart.pack.min.js +1 -1
  34. package/dist/public/store/cart/ShoppingCart.pack.min.js.map +1 -1
  35. package/dist/services/LoginService.d.ts.map +1 -1
  36. package/dist/services/LoginService.js.map +1 -1
  37. package/dist/services/local-db/LocalDbService.d.ts +7 -6
  38. package/dist/services/local-db/LocalDbService.d.ts.map +1 -1
  39. package/dist/services/local-db/LocalDbService.js +46 -22
  40. package/dist/services/local-db/LocalDbService.js.map +1 -1
  41. package/dist/services/local-db/contact/LocalContact.d.ts +8 -0
  42. package/dist/services/local-db/contact/LocalContact.d.ts.map +1 -0
  43. package/dist/services/local-db/contact/LocalContact.js +25 -0
  44. package/dist/services/local-db/contact/LocalContact.js.map +1 -0
  45. package/dist/services/local-db/core/LocalTable.d.ts +14 -3
  46. package/dist/services/local-db/core/LocalTable.d.ts.map +1 -1
  47. package/dist/services/local-db/core/LocalTable.js +131 -15
  48. package/dist/services/local-db/core/LocalTable.js.map +1 -1
  49. package/dist/services/local-db/core/SqlDbFactory.d.ts +39 -0
  50. package/dist/services/local-db/core/SqlDbFactory.d.ts.map +1 -0
  51. package/dist/services/local-db/core/SqlDbFactory.js +112 -0
  52. package/dist/services/local-db/core/SqlDbFactory.js.map +1 -0
  53. package/dist/services/local-db/core/TemplateQuery.d.ts.map +1 -1
  54. package/dist/services/local-db/core/TemplateQuery.js +6 -5
  55. package/dist/services/local-db/core/TemplateQuery.js.map +1 -1
  56. package/dist/services/local-db/mailboxes/LocalMailbox.d.ts +0 -1
  57. package/dist/services/local-db/mailboxes/LocalMailbox.d.ts.map +1 -1
  58. package/dist/services/local-db/mailboxes/LocalMailbox.js +3 -40
  59. package/dist/services/local-db/mailboxes/LocalMailbox.js.map +1 -1
  60. package/dist/site-editor/SiteEditorApp.pack.js +1 -1
  61. package/dist/site-editor/SiteEditorApp.pack.js.map +1 -1
  62. package/dist/site-editor/SiteEditorApp.pack.min.js +1 -1
  63. package/dist/site-editor/SiteEditorApp.pack.min.js.map +1 -1
  64. package/dist/tsconfig.tsbuildinfo +1 -1
  65. package/dist/web/AppIndex.pack.js +3 -2
  66. package/dist/web/AppIndex.pack.js.map +1 -1
  67. package/dist/web/AppIndex.pack.min.js +2 -2
  68. package/dist/web/AppIndex.pack.min.js.map +1 -1
  69. package/node_modules/@web-atoms/module-loader/package.json +1 -1
  70. package/node_modules/@web-atoms/module-loader/umd/src/AmdLoader.ts +1 -1
  71. package/node_modules/@web-atoms/module-loader/umd.js +1 -1
  72. package/node_modules/@web-atoms/module-loader/umd.js.map +1 -1
  73. package/package.json +2 -2
  74. package/sqlite-loader.mjs +4 -4
  75. package/src/common/pages/stores/products/EditProductDetailPage.tsx +1 -0
  76. package/src/public/store/StoreItemListView.tsx +141 -77
  77. package/src/services/LoginService.ts +2 -1
  78. package/src/services/local-db/LocalDbService.ts +47 -20
  79. package/src/services/local-db/contact/LocalContact.ts +11 -0
  80. package/src/services/local-db/core/LocalTable.ts +131 -16
  81. package/src/services/local-db/core/SqlDbFactory.ts +173 -0
  82. package/src/services/local-db/core/TemplateQuery.ts +10 -5
  83. package/src/services/local-db/mailboxes/LocalMailbox.ts +0 -37
@@ -0,0 +1,173 @@
1
+ /* eslint-disable no-cond-assign */
2
+ /* eslint-disable no-var */
3
+ import { UMD } from "@web-atoms/core/dist/core/types";
4
+
5
+ export type ISqlString = any;
6
+ export type IPreparedStatement = any;
7
+
8
+ export interface ISqlFactory {
9
+ open_v2(name: string): Promise<any>;
10
+ close(db: any): Promise<void>;
11
+ exec(db: any, text: string, fx: (rows:any[], columns: string[]) => void): Promise<number>;
12
+ prepare_v2(db: any, sql: ISqlString): Promise<{ sql: number, stmt: number }>;
13
+ statements(db: any, text: string, options?: any): any;
14
+ bind(stmt: number, i: number, value: any );
15
+ finalize(stmt: number): Promise<number>;
16
+ step(stmt: number): Promise<number>;
17
+ row(stmt: number): string[];
18
+ column_names(stmt: number): string[];
19
+ bind_parameter_count(stmt: number): number;
20
+ bind_parameter_name(stmt: number, i: number): string;
21
+ changes(stmt: number): number;
22
+ }
23
+
24
+ export interface ISqlResult<T = any> {
25
+ rows: T[];
26
+ updated: number;
27
+ }
28
+
29
+ declare var SQLite: any;
30
+
31
+ export class SqlDb {
32
+
33
+ private prev: Promise<ISqlResult> = Promise.resolve(null);
34
+
35
+ private db: any;
36
+
37
+ constructor(
38
+ private sqlFactory: ISqlFactory,
39
+ private name: string) {}
40
+
41
+ async query(query, values) {
42
+ const prev = this.prev;
43
+ const { sqlFactory } = this;
44
+ return await (this.prev = (async () => {
45
+ try {
46
+ await prev;
47
+ } catch (error) {
48
+ // ignore...
49
+ }
50
+ const d = await sqlFactory.open_v2(this.name);
51
+ this.db = d;
52
+ await using d1 = { [Symbol.asyncDispose]: () => sqlFactory.close(d) };
53
+ const rows = [];
54
+
55
+ let updated = 0;
56
+
57
+ for await (const stmt of sqlFactory.statements(d, query)) {
58
+ let i = 0;
59
+ let columns;
60
+ for (const p of values) {
61
+ sqlFactory.bind(stmt, ++i, p);
62
+ }
63
+ while(await sqlFactory.step(stmt) === SQLite.SQLITE_ROW) {
64
+ columns ??= sqlFactory.column_names(stmt);
65
+ const row = sqlFactory.row(stmt);
66
+ const item = {};
67
+ for (let index = 0; index < columns.length; index++) {
68
+ const element = columns[index];
69
+ item[element] = row[index];
70
+ }
71
+ rows.push(item);
72
+ }
73
+ updated = sqlFactory.changes(this.db);
74
+ }
75
+
76
+ // const updated = await sqlFactory.exec(d, query, (row, columns) => {
77
+ // const item = {};
78
+ // for (let index = 0; index < columns.length; index++) {
79
+ // const element = columns[index];
80
+ // item[element] = row[index];
81
+ // }
82
+ // rows.push(item);
83
+ // });
84
+
85
+ return {
86
+ rows,
87
+ updated
88
+ };
89
+ })());
90
+ }
91
+
92
+ // async exec(query: string) {
93
+ // const { sqlFactory } = this;
94
+ // const db = await sqlFactory.open_v2(this.name);
95
+ // await using a = { [Symbol.asyncDispose]: () => sqlFactory.close(db)};
96
+ // const rows = [];
97
+ // const updated = 0;
98
+ // await sqlFactory.exec(db, query, (items, columns) => {
99
+ // const row = {};
100
+ // for (let index = 0; index < columns.length; index++) {
101
+ // const element = columns[index];
102
+ // row[element] = items[index];
103
+ // }
104
+ // rows.push(row);
105
+ // });
106
+ // return {
107
+ // rows,
108
+ // updated
109
+ // };
110
+ // }
111
+
112
+ // private async * prepare({query, values}:{ query: string, values: any}) {
113
+ // const { sqlFactory } = this;
114
+ // let prepared = { stmt: null, sql: query } as any;
115
+ // try {
116
+ // while(prepared = await sqlFactory.prepare_v2(this.db, prepared.sql)){
117
+
118
+ // // bind parameters...
119
+ // const { stmt } = prepared;
120
+ // // bind parameters...
121
+ // const total = sqlFactory.bind_parameter_count(stmt);
122
+ // for (let index = 0; index < total; index++) {
123
+ // const name = sqlFactory.bind_parameter_name(stmt, index);
124
+ // if (values.hasOwnProperty(name)) {
125
+ // sqlFactory.bind(stmt, index, values[name]);
126
+ // }
127
+ // }
128
+ // yield stmt;
129
+ // await sqlFactory.finalize(stmt);
130
+ // prepared.stmt = null;
131
+ // }
132
+ // } finally {
133
+ // if (prepared?.stmt) {
134
+ // await sqlFactory.finalize(prepared.stmt);
135
+ // }
136
+ // }
137
+ // }
138
+
139
+ // private newString(txt: string) {
140
+ // const { sqlFactory } = this;
141
+ // const str = sqlFactory.str_new(this.db, txt);
142
+ // return {
143
+ // str,
144
+ // [Symbol.dispose]() {
145
+ // return sqlFactory.str_finish(str);
146
+ // }
147
+ // };
148
+ // }
149
+ }
150
+
151
+ let factory: Promise<ISqlFactory>;
152
+
153
+ const loadSqlFactory = () => {
154
+ return factory ??= new Promise<ISqlFactory>((resolve, reject) => {
155
+ const script = document.createElement("script");
156
+ script.type = "module";
157
+ script.src = UMD.resolvePath("@social-mail/social-mail-client/sqlite-loader.mjs");
158
+ script.onerror = reject;
159
+ document.body.addEventListener("sqliteLoaded", (ce: CustomEvent) => {
160
+ resolve(ce.detail);
161
+ }, { once: true });
162
+ document.body.appendChild(script);
163
+ });
164
+ };
165
+
166
+ export default class SqlDbFactory {
167
+
168
+ static async load(name: string) {
169
+ const sqlFactory = await loadSqlFactory();
170
+ return new SqlDb(sqlFactory, name);
171
+ }
172
+
173
+ }
@@ -88,10 +88,15 @@ export default class TemplateQuery {
88
88
  text += literal;
89
89
  continue;
90
90
  }
91
- const av = arg ?? null;
92
- if (av === null) {
93
- text += " NULL ";
94
- continue;
91
+ let av = arg ?? null;
92
+ // if (av === null) {
93
+ // text += " NULL ";
94
+ // continue;
95
+ // }
96
+ if (typeof av === "boolean") {
97
+ av = av ? 1 : 0;
98
+ } else if (av instanceof Date) {
99
+ av = av.getTime();
95
100
  }
96
101
  let an = map.get(av);
97
102
  if (an === void 0) {
@@ -115,7 +120,7 @@ export default class TemplateQuery {
115
120
  return null;
116
121
  }
117
122
  if (av instanceof Date) {
118
- return av.toJSON();
123
+ return av.getTime();
119
124
  }
120
125
  switch(typeof av) {
121
126
  case "boolean":
@@ -9,43 +9,6 @@ export default class LocalMailbox extends LocalTable<IMailbox> {
9
9
 
10
10
  model = Mailbox;
11
11
 
12
- public async startSync() {
13
-
14
- const es = this.service.entityService;
15
-
16
- let q = es.query(this.model);
17
-
18
- let max = null;
19
-
20
- // get last max updated...
21
- const { rows:[first] } = await this.query `SELECT * FROM ${this.name} ORDER BY dateUpdated DESC LIMIT 1`;
22
- if (first) {
23
- max = first.dateUpdated;
24
- q = q.where({ max}, (p) => (x) => x.dateUpdated >= p.max);
25
- }
26
-
27
- let min = DateTime.now;
28
-
29
- do {
30
- const result = await q.where({ min }, (p) => (x) => x.dateUpdated < p.min)
31
- .orderByDescending((x) => x.dateUpdated)
32
- .toPagedList({
33
- start: 0,
34
- size: 200,
35
- count: false
36
- });
37
-
38
- if (!result.items.length) {
39
- break;
40
- }
41
-
42
- for (const element of result.items) {
43
- await this.save(element);
44
- min = element.dateUpdated;
45
- }
46
- } while(true);
47
- }
48
-
49
12
  // public async init() {
50
13
  // await this.service.query `CREATE TABLE IF NOT EXISTS ${this.name}
51
14
  // (