ts-glitter 20.6.8 → 20.7.0

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 (175) hide show
  1. package/lowcode/Entry.js +2 -2
  2. package/lowcode/Entry.ts +2 -2
  3. package/lowcode/backend-manager/bg-blog.js +617 -621
  4. package/lowcode/backend-manager/bg-blog.ts +2323 -2325
  5. package/lowcode/backend-manager/bg-line.js +5 -4
  6. package/lowcode/backend-manager/bg-line.ts +5 -4
  7. package/lowcode/backend-manager/bg-list-component.js +9 -0
  8. package/lowcode/backend-manager/bg-list-component.ts +15 -1
  9. package/lowcode/backend-manager/bg-notify.js +6 -4
  10. package/lowcode/backend-manager/bg-notify.ts +6 -4
  11. package/lowcode/backend-manager/bg-product.js +145 -0
  12. package/lowcode/backend-manager/bg-product.ts +153 -0
  13. package/lowcode/backend-manager/bg-sns.js +5 -3
  14. package/lowcode/backend-manager/bg-sns.ts +5 -3
  15. package/lowcode/backend-manager/bg-widget.js +92 -4
  16. package/lowcode/backend-manager/bg-widget.ts +122 -6
  17. package/lowcode/backend-manager/splitPage.js +0 -39
  18. package/lowcode/backend-manager/splitPage.ts +0 -40
  19. package/lowcode/cms-plugin/auto-fcm-advertise.js +17 -5
  20. package/lowcode/cms-plugin/auto-fcm-advertise.ts +19 -6
  21. package/lowcode/cms-plugin/auto-fcm-history.js +2732 -0
  22. package/lowcode/cms-plugin/auto-fcm-history.ts +2995 -0
  23. package/lowcode/cms-plugin/cms-router.js +5 -0
  24. package/lowcode/cms-plugin/cms-router.ts +6 -0
  25. package/lowcode/cms-plugin/filter-options.js +80 -27
  26. package/lowcode/cms-plugin/filter-options.ts +83 -27
  27. package/lowcode/cms-plugin/language-backend.js +50 -39
  28. package/lowcode/cms-plugin/language-backend.ts +109 -95
  29. package/lowcode/cms-plugin/menus-setting.js +175 -151
  30. package/lowcode/cms-plugin/menus-setting.ts +620 -591
  31. package/lowcode/cms-plugin/model/order.d.ts +1 -0
  32. package/lowcode/cms-plugin/module/data.js +7 -7
  33. package/lowcode/cms-plugin/module/data.ts +262 -233
  34. package/lowcode/cms-plugin/module/delivery-html.js +18 -10
  35. package/lowcode/cms-plugin/module/delivery-html.ts +26 -10
  36. package/lowcode/cms-plugin/module/order-setting.js +458 -328
  37. package/lowcode/cms-plugin/module/order-setting.ts +622 -351
  38. package/lowcode/cms-plugin/module/product-excel.js +1 -1
  39. package/lowcode/cms-plugin/module/product-excel.ts +2 -1
  40. package/lowcode/cms-plugin/order/order-module.js +90 -1
  41. package/lowcode/cms-plugin/order/order-module.ts +106 -1
  42. package/lowcode/cms-plugin/pos-pages/payment-page.js +11 -8
  43. package/lowcode/cms-plugin/pos-pages/payment-page.ts +28 -15
  44. package/lowcode/cms-plugin/pos-pages/products-page.js +0 -39
  45. package/lowcode/cms-plugin/pos-pages/products-page.ts +0 -40
  46. package/lowcode/cms-plugin/shopping-collections.ts +1 -3
  47. package/lowcode/cms-plugin/shopping-finance-setting.js +19 -80
  48. package/lowcode/cms-plugin/shopping-finance-setting.ts +19 -87
  49. package/lowcode/cms-plugin/shopping-order-manager.js +122 -38
  50. package/lowcode/cms-plugin/shopping-order-manager.ts +160 -58
  51. package/lowcode/cms-plugin/shopping-product-setting.js +364 -376
  52. package/lowcode/cms-plugin/shopping-product-setting.ts +406 -415
  53. package/lowcode/cms-plugin/shopping-setting-advance.js +57 -16
  54. package/lowcode/cms-plugin/shopping-setting-advance.ts +69 -18
  55. package/lowcode/cms-plugin/stock-history.js +75 -63
  56. package/lowcode/cms-plugin/stock-history.ts +390 -376
  57. package/lowcode/cms-plugin/user/user-module.js +2 -43
  58. package/lowcode/cms-plugin/user/user-module.ts +2 -46
  59. package/lowcode/cms-plugin/user-list.js +4 -6
  60. package/lowcode/cms-plugin/user-list.ts +35 -38
  61. package/lowcode/css/editor.css +42 -3
  62. package/lowcode/glitter-base/global/language.js +6 -1
  63. package/lowcode/glitter-base/global/language.ts +10 -4
  64. package/lowcode/glitter-base/global/payment-config.js +19 -16
  65. package/lowcode/glitter-base/global/payment-config.ts +22 -16
  66. package/lowcode/glitter-base/global/shipment-config.js +6 -5
  67. package/lowcode/glitter-base/global/shipment-config.ts +12 -10
  68. package/lowcode/glitter-base/route/fcm.js +21 -1
  69. package/lowcode/glitter-base/route/fcm.ts +22 -2
  70. package/lowcode/glitter-base/route/shopping.js +8 -32
  71. package/lowcode/glitter-base/route/shopping.ts +10 -33
  72. package/lowcode/glitter-base/route/stock.ts +1 -0
  73. package/lowcode/glitter-base/route/user.js +11 -2
  74. package/lowcode/glitter-base/route/user.ts +23 -12
  75. package/lowcode/jspage/function-page/setting_editor.js +9 -0
  76. package/lowcode/jspage/function-page/setting_editor.ts +9 -0
  77. package/lowcode/public-components/blogs/list.js +223 -195
  78. package/lowcode/public-components/blogs/list.ts +383 -352
  79. package/lowcode/public-components/product/product-list.js +8 -4
  80. package/lowcode/public-components/product/product-list.ts +9 -4
  81. package/lowcode/public-components/terms-related/index.js +1 -1
  82. package/lowcode/public-components/terms-related/index.ts +1 -1
  83. package/lowcode/public-components/user-manager/um-login.js +1 -1
  84. package/lowcode/public-components/user-manager/um-login.ts +2 -2
  85. package/lowcode/public-components/user-manager/um-order.js +41 -5
  86. package/lowcode/public-components/user-manager/um-order.ts +58 -20
  87. package/lowcode/public-components/user-manager/um-voucher.ts +2 -2
  88. package/nhi4veq3gk.json +1 -0
  89. package/package.json +1 -1
  90. package/src/Language.d.ts +2 -0
  91. package/src/Language.js +66 -65
  92. package/src/Language.js.map +1 -1
  93. package/src/Language.ts +719 -715
  94. package/src/api-public/config/shipment-config.js +3 -2
  95. package/src/api-public/config/shipment-config.js.map +1 -1
  96. package/src/api-public/config/shipment-config.ts +3 -2
  97. package/src/api-public/controllers/ai-chat.js.map +1 -1
  98. package/src/api-public/controllers/ai-chat.ts +1 -2
  99. package/src/api-public/controllers/fcm.js +23 -58
  100. package/src/api-public/controllers/fcm.js.map +1 -1
  101. package/src/api-public/controllers/fcm.ts +28 -56
  102. package/src/api-public/controllers/shop.js +7 -1
  103. package/src/api-public/controllers/shop.js.map +1 -1
  104. package/src/api-public/controllers/shop.ts +17 -10
  105. package/src/api-public/controllers/user.js +1 -0
  106. package/src/api-public/controllers/user.js.map +1 -1
  107. package/src/api-public/controllers/user.ts +2 -0
  108. package/src/api-public/services/auto-send-email.js +247 -187
  109. package/src/api-public/services/auto-send-email.js.map +1 -1
  110. package/src/api-public/services/auto-send-email.ts +568 -505
  111. package/src/api-public/services/delivery.js +1 -1
  112. package/src/api-public/services/delivery.js.map +1 -1
  113. package/src/api-public/services/delivery.ts +6 -5
  114. package/src/api-public/services/financial-service.js +1 -2
  115. package/src/api-public/services/financial-service.js.map +1 -1
  116. package/src/api-public/services/financial-service.ts +4 -6
  117. package/src/api-public/services/manager.d.ts +4 -3
  118. package/src/api-public/services/manager.js +8 -12
  119. package/src/api-public/services/manager.js.map +1 -1
  120. package/src/api-public/services/manager.ts +57 -59
  121. package/src/api-public/services/model/handlePaymentTransaction.d.ts +1 -1
  122. package/src/api-public/services/model/handlePaymentTransaction.js +23 -3
  123. package/src/api-public/services/model/handlePaymentTransaction.js.map +1 -1
  124. package/src/api-public/services/model/handlePaymentTransaction.ts +25 -36
  125. package/src/api-public/services/schedule.d.ts +1 -0
  126. package/src/api-public/services/schedule.js +27 -0
  127. package/src/api-public/services/schedule.js.map +1 -1
  128. package/src/api-public/services/schedule.ts +30 -0
  129. package/src/api-public/services/shopping.d.ts +22 -2
  130. package/src/api-public/services/shopping.js +371 -95
  131. package/src/api-public/services/shopping.js.map +1 -1
  132. package/src/api-public/services/shopping.ts +499 -141
  133. package/src/api-public/services/stock.js +0 -3
  134. package/src/api-public/services/stock.js.map +1 -1
  135. package/src/api-public/services/stock.ts +3 -3
  136. package/src/api-public/services/user.d.ts +1 -0
  137. package/src/api-public/services/user.js +32 -12
  138. package/src/api-public/services/user.js.map +1 -1
  139. package/src/api-public/services/user.ts +38 -19
  140. package/src/api-public/services/workers.js +3 -3
  141. package/src/api-public/services/workers.js.map +1 -1
  142. package/src/api-public/services/workers.ts +103 -103
  143. package/src/app-project/ios/proshake/AppDelegate.swift +51 -7
  144. package/src/app-project/ios/proshake/Info.plist +11 -9
  145. package/src/app-project/ios/proshake/SceneDelegate.swift +18 -0
  146. package/src/app-project/ios/proshake/glitter-interface/BasicUtil.swift +43 -2
  147. package/src/app-project/ios/proshake/glitter-interface/Ecommerce.swift +56 -0
  148. package/src/app-project/ios/proshake.xcodeproj/project.xcworkspace/xcuserdata/jianzhi.wang.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  149. package/src/app-project/serverless/src/modules/database.js +1 -1
  150. package/src/app-project/serverless/src/modules/database.js.map +1 -1
  151. package/src/app-project/serverless/src/modules/database.ts +171 -171
  152. package/src/controllers/template.d.ts +1 -1
  153. package/src/controllers/template.js +16 -16
  154. package/src/controllers/template.js.map +1 -1
  155. package/src/controllers/template.ts +98 -84
  156. package/src/modules/database.js +3 -1
  157. package/src/modules/database.js.map +1 -1
  158. package/src/modules/database.ts +185 -181
  159. package/src/modules/firebase.d.ts +17 -0
  160. package/src/modules/firebase.js +126 -0
  161. package/src/modules/firebase.js.map +1 -1
  162. package/src/modules/firebase.ts +169 -0
  163. package/src/public-config-initial/auto-fcm.js +8 -2
  164. package/src/public-config-initial/auto-fcm.js.map +1 -1
  165. package/src/public-config-initial/auto-fcm.ts +15 -6
  166. package/src/services/app.d.ts +2 -1
  167. package/src/services/app.js.map +1 -1
  168. package/src/services/app.ts +2 -1
  169. package/src/services/ios-project.js +12 -6
  170. package/src/services/ios-project.js.map +1 -1
  171. package/src/services/ios-project.ts +12 -6
  172. package/src/services/template.d.ts +3 -2
  173. package/src/services/template.js +2 -1
  174. package/src/services/template.js.map +1 -1
  175. package/src/services/template.ts +13 -20
@@ -8,215 +8,215 @@ const TAG = '[Database]';
8
8
  let pool: mysql.Pool;
9
9
 
10
10
  const createPool = async () => {
11
- const logger = new Logger();
12
- pool = mysql.createPool({
13
- connectionLimit: config.DB_CONN_LIMIT,
14
- queueLimit: config.DB_QUEUE_LIMIT,
15
- host: config.DB_URL,
16
- port: config.DB_PORT,
17
- user: config.DB_USER,
18
- password: config.DB_PWD,
19
- supportBigNumbers: true,
20
- });
21
- try {
22
- const connection = await pool.getConnection();
23
- if (connection) {
24
- connection.release();
25
- config.DB_SHOW_INFO && logger.info(TAG, 'Pool has been created. (function: createPool)');
26
- return pool;
27
- }
28
- } catch (err) {
29
- logger.error(TAG, 'Failed to create connection pool for mysql because ' + err);
30
- throw exception.ServerError('INTERNAL_SERVER_ERROR', 'Failed to create connection pool.');
11
+ const logger = new Logger();
12
+ pool = mysql.createPool({
13
+ connectionLimit: config.DB_CONN_LIMIT,
14
+ queueLimit: config.DB_QUEUE_LIMIT,
15
+ host: config.DB_URL,
16
+ port: config.DB_PORT,
17
+ user: config.DB_USER,
18
+ password: config.DB_PWD,
19
+ supportBigNumbers: true,
20
+ });
21
+ try {
22
+ const connection = await pool.getConnection();
23
+ if (connection) {
24
+ connection.release();
25
+ config.DB_SHOW_INFO && logger.info(TAG, 'Pool has been created. (function: createPool)');
26
+ return pool;
31
27
  }
28
+ } catch (err) {
29
+ logger.error(TAG, 'Failed to create connection pool for mysql because ' + err);
30
+ throw exception.ServerError('INTERNAL_SERVER_ERROR', 'Failed to create connection pool.');
31
+ }
32
32
  };
33
33
 
34
34
  const getConnection = async (connPool: null | mysql.Pool): Promise<mysql.PoolConnection> => {
35
- const logger = new Logger();
36
- const _pool = connPool || pool;
37
- try {
38
- const connection = await _pool.getConnection();
39
- return connection;
40
- } catch (err) {
41
- logger.error(TAG, 'Failed to get connection from pool because ' + err);
42
- throw exception.ServerError('INTERNAL_SERVER_ERROR', 'Failed to get connection from pool.');
43
- }
35
+ const logger = new Logger();
36
+ const _pool = connPool || pool;
37
+ try {
38
+ const connection = await _pool.getConnection();
39
+ return connection;
40
+ } catch (err) {
41
+ logger.error(TAG, 'Failed to get connection from pool because ' + err);
42
+ throw exception.ServerError('INTERNAL_SERVER_ERROR', 'Failed to get connection from pool.');
43
+ }
44
44
  };
45
45
 
46
46
  const execute = async (sql: string, params: any[]): Promise<any> => {
47
- const logger = new Logger();
48
- const TAG = '[Database][Execute]';
49
- if (params.indexOf(undefined) !== -1) {
50
- logger.error(TAG, 'Failed to exect statement ' + sql + ' because params=null');
51
- throw exception.ServerError('INTERNAL_SERVER_ERROR', 'Failed to exect statement because params=null');
52
- }
53
- try {
54
- const [results] = await pool.execute(sql, params);
55
- return results;
56
- } catch (err) {
57
- logger.error(TAG, 'Failed to exect statement ' + sql + ' because ' + err);
58
- throw exception.ServerError('INTERNAL_SERVER_ERROR', 'Failed to execute statement.');
59
- }
47
+ const logger = new Logger();
48
+ const TAG = '[Database][Execute]';
49
+ if (params.indexOf(undefined) !== -1) {
50
+ logger.error(TAG, 'Failed to exect statement ' + sql + ' because params=null');
51
+ throw exception.ServerError('INTERNAL_SERVER_ERROR', 'Failed to exect statement because params=null');
52
+ }
53
+ try {
54
+ const [results] = await pool.execute(sql, params);
55
+ return results;
56
+ } catch (err) {
57
+ logger.error(TAG, 'Failed to exect statement ' + sql + ' because ' + err);
58
+ throw exception.ServerError('INTERNAL_SERVER_ERROR', 'Failed to execute statement.');
59
+ }
60
60
  };
61
61
 
62
62
  export const limit = (map: any) => {
63
- return ` limit ${parseInt(map.page, 10) * parseInt(map.limit, 10)}, ${parseInt(map.limit, 10)} `;
63
+ return ` limit ${parseInt(map.page, 10) * parseInt(map.limit, 10)}, ${parseInt(map.limit, 10)} `;
64
64
  };
65
65
  const query = async (sql: string, params: unknown[]): Promise<any> => {
66
- const logger = new Logger();
67
- const TAG = '[Database][Query]';
68
- try {
69
- const [results] = await pool.query(sql, params);
70
- return results;
71
- } catch (err) {
72
- logger.error(TAG, 'Failed to query statement ' + sql + ' because ' + err);
73
- throw exception.ServerError('INTERNAL_SERVER_ERROR', 'Failed to execute statement.');
74
- }
66
+ const logger = new Logger();
67
+ const TAG = '[Database][Query]';
68
+ try {
69
+ const [results] = await pool.query(sql, params);
70
+ return results;
71
+ } catch (err) {
72
+ logger.error(TAG, 'Failed to query statement ' + sql + ' because ' + err);
73
+ throw exception.ServerError('INTERNAL_SERVER_ERROR', 'Failed to execute statement.');
74
+ }
75
75
  };
76
76
 
77
77
  export const queryLambada = async (
78
- cf: {
79
- database?: string;
80
- },
81
- fun: (v: { query(sql: string, params: unknown[]): Promise<any> }) => any
78
+ cf: {
79
+ database?: string;
80
+ },
81
+ fun: (v: { query(sql: string, params: unknown[]): Promise<any> }) => any
82
82
  ) => {
83
- const logger = new Logger();
84
- const cs: any = {
85
- connectionLimit: config.DB_CONN_LIMIT,
86
- queueLimit: config.DB_QUEUE_LIMIT,
87
- host: config.DB_URL,
88
- port: config.DB_PORT,
89
- user: config.DB_USER,
90
- password: config.DB_PWD,
91
- supportBigNumbers: true,
92
- };
93
- Object.keys(cf).map((key) => {
94
- cs[key] = (cf as any)[key];
95
- });
96
- const sp = mysql.createPool(cs);
97
- try {
98
- const connection = await sp.getConnection();
99
- if (connection) {
100
- connection.release();
101
- config.DB_SHOW_INFO && logger.info(TAG, 'Pool has been created. (function: queryLambada)');
102
- }
103
- const data = await fun({
104
- query(sql: string, params: unknown[]): Promise<any> {
105
- return new Promise<any>(async (resolve, reject) => {
106
- const logger = new Logger();
107
- const TAG = '[Database][Query]';
108
- try {
109
- const [results] = await sp.query(sql, params);
110
- resolve(results);
111
- } catch (err) {
112
- logger.error(TAG, 'Failed to query statement ' + sql + ' because ' + err);
113
- reject(err);
114
- }
115
- });
116
- },
117
- });
118
- //Close connection
119
- connection.release();
120
- sp.end();
121
- return data;
122
- } catch (err) {
123
- logger.error(TAG, 'Failed to create connection pool for mysql because ' + err);
124
- throw exception.ServerError('INTERNAL_SERVER_ERROR', 'Failed to create connection pool.');
83
+ const logger = new Logger();
84
+ const cs: any = {
85
+ connectionLimit: config.DB_CONN_LIMIT,
86
+ queueLimit: config.DB_QUEUE_LIMIT,
87
+ host: config.DB_URL,
88
+ port: config.DB_PORT,
89
+ user: config.DB_USER,
90
+ password: config.DB_PWD,
91
+ supportBigNumbers: true,
92
+ };
93
+ Object.keys(cf).map(key => {
94
+ cs[key] = (cf as any)[key];
95
+ });
96
+ const sp = mysql.createPool(cs);
97
+ try {
98
+ const connection = await sp.getConnection();
99
+ if (connection) {
100
+ connection.release();
101
+ config.DB_SHOW_INFO && logger.info(TAG, 'Pool has been created. (function: queryLambada)');
125
102
  }
103
+ const data = await fun({
104
+ query(sql: string, params: unknown[]): Promise<any> {
105
+ return new Promise<any>(async (resolve, reject) => {
106
+ const logger = new Logger();
107
+ const TAG = '[Database][Query]';
108
+ try {
109
+ const [results] = await sp.query(sql, params);
110
+ resolve(results);
111
+ } catch (err) {
112
+ logger.error(TAG, 'Failed to query statement ' + sql + ' because ' + err);
113
+ reject(err);
114
+ }
115
+ });
116
+ },
117
+ });
118
+ //Close connection
119
+ connection.release();
120
+ sp.end();
121
+ return data;
122
+ } catch (err) {
123
+ logger.error(TAG, 'Failed to create connection pool for mysql because ' + err);
124
+ throw exception.ServerError('INTERNAL_SERVER_ERROR', 'Failed to create connection pool.');
125
+ }
126
126
  };
127
127
 
128
128
  class Transaction {
129
- private trans: any;
130
- connectionId: any;
131
- private TAG: any;
129
+ private trans: any;
130
+ connectionId: any;
131
+ private TAG: any;
132
132
 
133
- static async build(): Promise<Transaction> {
134
- const logger = new Logger();
135
- const Trans = new Transaction();
136
- try {
137
- Trans.trans = await getConnection(null);
138
- Trans.TAG = `[Database][Transaction][CID:${Trans.trans.threadId}]`;
139
- Trans.trans.beginTransaction();
140
- return Trans;
141
- } catch (err) {
142
- logger.error(Trans.TAG, 'Failed to create transaction when call transaction.init because ' + err);
143
- Trans.release();
144
- throw exception.ServerError('INTERNAL_SERVER_ERROR', 'Failed to create transaction when connecting database.');
145
- }
133
+ static async build(): Promise<Transaction> {
134
+ const logger = new Logger();
135
+ const Trans = new Transaction();
136
+ try {
137
+ Trans.trans = await getConnection(null);
138
+ Trans.TAG = `[Database][Transaction][CID:${Trans.trans.threadId}]`;
139
+ Trans.trans.beginTransaction();
140
+ return Trans;
141
+ } catch (err) {
142
+ logger.error(Trans.TAG, 'Failed to create transaction when call transaction.init because ' + err);
143
+ Trans.release();
144
+ throw exception.ServerError('INTERNAL_SERVER_ERROR', 'Failed to create transaction when connecting database.');
146
145
  }
146
+ }
147
147
 
148
- public async execute(sql: string, params: any[] | any): Promise<any> {
149
- const logger = new Logger();
150
- if (!this.trans) {
151
- throw exception.ServerError('INTERNAL_SERVER_ERROR', 'Can not use Transaction class without build.');
152
- }
153
- try {
154
- const [result] = await this.trans.query(sql, params);
155
- return result;
156
- } catch (err) {
157
- //rollback transaction and release connection when error occurred.
158
- logger.error(this.TAG, `Failed to execute statement ${sql} from transaction because ${err}`);
159
- await this.release();
160
- this.trans = null;
161
- throw err;
162
- }
148
+ public async execute(sql: string, params: any[] | any): Promise<any> {
149
+ const logger = new Logger();
150
+ if (!this.trans) {
151
+ throw exception.ServerError('INTERNAL_SERVER_ERROR', 'Can not use Transaction class without build.');
163
152
  }
153
+ try {
154
+ const [result] = await this.trans.query(sql, params);
155
+ return result;
156
+ } catch (err) {
157
+ //rollback transaction and release connection when error occurred.
158
+ logger.error(this.TAG, `Failed to execute statement ${sql} from transaction because ${err}`);
159
+ await this.release();
160
+ this.trans = null;
161
+ throw err;
162
+ }
163
+ }
164
164
 
165
- async commit() {
166
- const logger = new Logger();
167
- try {
168
- await this.trans.commit();
169
- await this.trans.release();
170
- config.DB_SHOW_INFO && logger.info(this.TAG, 'Commited successfully');
171
- } catch (err) {
172
- logger.error(this.TAG, 'Failed to commit from transaction because ' + err);
173
- await this.trans.rollback();
174
- await this.trans.destroy();
175
- throw exception.ServerError('INTERNAL_SERVER_ERROR', 'Failed to commit from transaction.');
176
- }
165
+ async commit() {
166
+ const logger = new Logger();
167
+ try {
168
+ await this.trans.commit();
169
+ await this.trans.release();
170
+ config.DB_SHOW_INFO && logger.info(this.TAG, 'Commited successfully');
171
+ } catch (err) {
172
+ logger.error(this.TAG, 'Failed to commit from transaction because ' + err);
173
+ await this.trans.rollback();
174
+ await this.trans.destroy();
175
+ throw exception.ServerError('INTERNAL_SERVER_ERROR', 'Failed to commit from transaction.');
177
176
  }
177
+ }
178
178
 
179
- async release() {
180
- const logger = new Logger();
181
- try {
182
- if (this.trans) {
183
- await this.trans.rollback();
184
- // 如果transaction已經被rollback且也已release回pool時,會變成一般性的connection(autocommit=1)
185
- // 導致其他併發的Promise使用到這個一般性的connection進行execute的動作,造成隱性commit的行為
186
- // 為了避免這個狀況,所以當使用者手動釋放transaction時,我們會將它destroy掉,排除隱性commit的可能性
187
- await this.trans.rollback();
188
- await this.trans.destroy();
189
- this.trans = null;
190
- config.DB_SHOW_INFO && logger.info(this.TAG, 'Release successfully');
191
- }
192
- } catch (err) {
193
- logger.error(this.TAG, 'Failed to commit from transaction because ' + err);
194
- throw exception.ServerError('INTERNAL_SERVER_ERROR', 'Failed to release transaction.');
195
- }
179
+ async release() {
180
+ const logger = new Logger();
181
+ try {
182
+ if (this.trans) {
183
+ await this.trans.rollback();
184
+ // 如果transaction已經被rollback且也已release回pool時,會變成一般性的connection(autocommit=1)
185
+ // 導致其他併發的Promise使用到這個一般性的connection進行execute的動作,造成隱性commit的行為
186
+ // 為了避免這個狀況,所以當使用者手動釋放transaction時,我們會將它destroy掉,排除隱性commit的可能性
187
+ await this.trans.rollback();
188
+ await this.trans.destroy();
189
+ this.trans = null;
190
+ config.DB_SHOW_INFO && logger.info(this.TAG, 'Release successfully');
191
+ }
192
+ } catch (err) {
193
+ logger.error(this.TAG, 'Failed to commit from transaction because ' + err);
194
+ throw exception.ServerError('INTERNAL_SERVER_ERROR', 'Failed to release transaction.');
196
195
  }
196
+ }
197
197
  }
198
198
 
199
199
  const getPagination = (sql: string, page: number, pageCount: number) => {
200
- let newSql = sql;
201
- newSql += ' LIMIT ' + pageCount + ' OFFSET ' + (page - 1) * pageCount;
202
- return newSql;
200
+ let newSql = sql;
201
+ newSql += ' LIMIT ' + pageCount + ' OFFSET ' + (page - 1) * pageCount;
202
+ return newSql;
203
203
  };
204
204
 
205
205
  const escape = (parameter: any) => {
206
- return mysql.escape(parameter);
206
+ return mysql.escape(parameter);
207
207
  };
208
208
 
209
209
  const checkExists = async (sql: string) => {
210
- return (await query('select count(1) from ' + sql, []))[0]['count(1)'] > 0;
210
+ return (await query('select count(1) from ' + sql, []))[0]['count(1)'] > 0;
211
211
  };
212
212
 
213
213
  export default {
214
- createPool,
215
- execute,
216
- query,
217
- Transaction,
218
- getPagination,
219
- escape,
220
- queryLambada,
221
- checkExists,
214
+ createPool,
215
+ execute,
216
+ query,
217
+ Transaction,
218
+ getPagination,
219
+ escape,
220
+ queryLambada,
221
+ checkExists,
222
222
  };
@@ -1,3 +1,3 @@
1
- import express from "express";
1
+ import express from 'express';
2
2
  declare const router: express.Router;
3
3
  export = router;
@@ -14,11 +14,11 @@ const seo_config_js_1 = require("../seo-config.js");
14
14
  const router = express_1.default.Router();
15
15
  router.post('/', async (req, resp) => {
16
16
  try {
17
- if (!await ut_permission_js_1.UtPermission.isManager(req)) {
17
+ if (!(await ut_permission_js_1.UtPermission.isManager(req))) {
18
18
  throw exception_js_1.default.BadRequestError('Forbidden', 'No Permission.', null);
19
19
  }
20
20
  else {
21
- return response_1.default.succ(resp, { result: (await (new template_1.Template(req.body.token).createPage(req.body))) });
21
+ return response_1.default.succ(resp, { result: await new template_1.Template(req.body.token).createPage(req.body) });
22
22
  }
23
23
  }
24
24
  catch (err) {
@@ -27,12 +27,12 @@ router.post('/', async (req, resp) => {
27
27
  });
28
28
  router.put('/', async (req, resp) => {
29
29
  try {
30
- if (!await ut_permission_js_1.UtPermission.isManager(req)) {
30
+ if (!(await ut_permission_js_1.UtPermission.isManager(req))) {
31
31
  throw exception_js_1.default.BadRequestError('Forbidden', 'No Permission.', null);
32
32
  }
33
33
  else {
34
34
  req.body.language = req.headers['language'];
35
- return response_1.default.succ(resp, { result: (await (new template_1.Template(req.body.token).updatePage(req.body))) });
35
+ return response_1.default.succ(resp, { result: await new template_1.Template(req.body.token).updatePage(req.body) });
36
36
  }
37
37
  }
38
38
  catch (err) {
@@ -41,12 +41,12 @@ router.put('/', async (req, resp) => {
41
41
  });
42
42
  router.delete('/', async (req, resp) => {
43
43
  try {
44
- if (!await ut_permission_js_1.UtPermission.isManager(req)) {
44
+ if (!(await ut_permission_js_1.UtPermission.isManager(req))) {
45
45
  throw exception_js_1.default.BadRequestError('Forbidden', 'No Permission.', null);
46
46
  }
47
47
  else {
48
48
  req.body.language = req.headers['language'];
49
- return response_1.default.succ(resp, { result: (await (new template_1.Template(req.body.token).deletePage(req.body))) });
49
+ return response_1.default.succ(resp, { result: await new template_1.Template(req.body.token).deletePage(req.body) });
50
50
  }
51
51
  }
52
52
  catch (err) {
@@ -60,7 +60,7 @@ router.get('/', async (req, resp) => {
60
60
  const seo = await seo_config_js_1.SeoConfig.seoDetail(req.query.appName, req, resp);
61
61
  let language = req.headers['language'];
62
62
  req.query.language = language;
63
- const result = (await (new template_1.Template(req.body.token).getPage(req.query)));
63
+ const result = await new template_1.Template(req.body.token).getPage(req.query);
64
64
  let redirect = '';
65
65
  if (result.length === 0) {
66
66
  try {
@@ -68,11 +68,12 @@ router.get('/', async (req, resp) => {
68
68
  FROM \`${config_1.saasConfig.SAAS_NAME}\`.app_config
69
69
  where \`${config_1.saasConfig.SAAS_NAME}\`.app_config.appName = ${database_1.default.escape(req.query.appName)}
70
70
  `, []))[0]['config'];
71
- if (config && ((await database_1.default.execute(`SELECT count(1)
71
+ if (config &&
72
+ (await database_1.default.execute(`SELECT count(1)
72
73
  FROM \`${config_1.saasConfig.SAAS_NAME}\`.page_config
73
74
  where \`${config_1.saasConfig.SAAS_NAME}\`.page_config.appName = ${database_1.default.escape(req.query.appName)}
74
75
  and tag = ${database_1.default.escape(config['homePage'])}
75
- `, []))[0]["count(1)"] === 1)) {
76
+ `, []))[0]['count(1)'] === 1) {
76
77
  redirect = config['homePage'];
77
78
  }
78
79
  else {
@@ -82,8 +83,7 @@ router.get('/', async (req, resp) => {
82
83
  `, []))[0]['tag'];
83
84
  }
84
85
  }
85
- catch (e) {
86
- }
86
+ catch (e) { }
87
87
  }
88
88
  let preload_data = {};
89
89
  if (req.query.preload) {
@@ -93,7 +93,7 @@ router.get('/', async (req, resp) => {
93
93
  result: result,
94
94
  redirect: redirect,
95
95
  preload_data: preload_data,
96
- seo_config: seo.seo_detail
96
+ seo_config: seo.seo_detail,
97
97
  });
98
98
  }
99
99
  catch (err) {
@@ -103,16 +103,16 @@ router.get('/', async (req, resp) => {
103
103
  });
104
104
  router.post('/create_template', async (req, resp) => {
105
105
  try {
106
- if (!await ut_permission_js_1.UtPermission.isManager(req)) {
106
+ if (!(await ut_permission_js_1.UtPermission.isManager(req))) {
107
107
  throw exception_js_1.default.BadRequestError('Forbidden', 'No Permission.', null);
108
108
  }
109
109
  else {
110
110
  return response_1.default.succ(resp, {
111
- result: (await new template_1.Template(req.body.token).postTemplate({
111
+ result: await new template_1.Template(req.body.token).postTemplate({
112
112
  appName: req.body.appName,
113
113
  data: req.body.config,
114
- tag: req.body.tag
115
- }))
114
+ tag: req.body.tag,
115
+ }),
116
116
  });
117
117
  }
118
118
  }
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["template.ts"],"names":[],"mappings":"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"}