@etsoo/appscript 1.5.63 → 1.5.65

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 (196) hide show
  1. package/.github/workflows/main.yml +6 -5
  2. package/README.md +97 -71
  3. package/__tests__/app/CoreApp.ts +141 -143
  4. package/__tests__/app/Culture.ts +23 -23
  5. package/__tests__/app/TestApp.ts +107 -105
  6. package/__tests__/business/BusinessUtils.ts +37 -37
  7. package/__tests__/result/ActionResult.ts +14 -14
  8. package/__tests__/tsconfig.json +16 -16
  9. package/babel.config.json +8 -8
  10. package/lib/cjs/address/AddressAutocomplete.d.ts +1 -1
  11. package/lib/cjs/address/AddressPlace.d.ts +3 -3
  12. package/lib/cjs/address/AddressPlaceBase.d.ts +1 -1
  13. package/lib/cjs/address/AddressRegion.d.ts +2 -2
  14. package/lib/cjs/address/AddressRegion.js +12 -12
  15. package/lib/cjs/address/AddressUtils.d.ts +1 -1
  16. package/lib/cjs/api/AuthApi.d.ts +14 -14
  17. package/lib/cjs/api/AuthApi.js +17 -17
  18. package/lib/cjs/api/BaseApi.d.ts +1 -1
  19. package/lib/cjs/api/EntityApi.d.ts +8 -8
  20. package/lib/cjs/api/EntityApi.js +4 -4
  21. package/lib/cjs/api/dto/AuditLineDto.d.ts +24 -0
  22. package/lib/cjs/api/dto/AuditLineDto.js +2 -0
  23. package/lib/cjs/api/dto/IdLabelDto.d.ts +1 -1
  24. package/lib/cjs/api/dto/IdLabelPrimaryDto.d.ts +1 -1
  25. package/lib/cjs/api/dto/PinDto.d.ts +61 -0
  26. package/lib/cjs/api/dto/PinDto.js +2 -0
  27. package/lib/cjs/api/dto/ResultPayload.d.ts +2 -2
  28. package/lib/cjs/api/rq/AuthRequest.d.ts +1 -1
  29. package/lib/cjs/api/rq/LoginRQ.d.ts +2 -2
  30. package/lib/cjs/api/rq/MergeRQ.d.ts +1 -1
  31. package/lib/cjs/api/rq/QueryRQ.d.ts +2 -2
  32. package/lib/cjs/api/rq/StatusQueryRQ.d.ts +3 -3
  33. package/lib/cjs/api/rq/UpdateModel.d.ts +2 -2
  34. package/lib/cjs/api/rq/UpdateStatusRQ.d.ts +2 -2
  35. package/lib/cjs/app/AppSettings.d.ts +3 -3
  36. package/lib/cjs/bridges/FlutterHost.d.ts +2 -2
  37. package/lib/cjs/bridges/FlutterHost.js +11 -11
  38. package/lib/cjs/business/BusinessTax.js +6 -6
  39. package/lib/cjs/business/BusinessUtils.d.ts +2 -2
  40. package/lib/cjs/business/BusinessUtils.js +5 -5
  41. package/lib/cjs/business/Currency.d.ts +1 -1
  42. package/lib/cjs/business/Currency.js +10 -10
  43. package/lib/cjs/business/ProductUnit.d.ts +1 -1
  44. package/lib/cjs/business/ShoppingCart.d.ts +9 -9
  45. package/lib/cjs/business/ShoppingCart.js +11 -11
  46. package/lib/cjs/custom/CustomField.d.ts +1 -1
  47. package/lib/cjs/custom/CustomFieldData.d.ts +2 -2
  48. package/lib/cjs/i18n/Culture.d.ts +31 -0
  49. package/lib/cjs/i18n/Culture.js +51 -0
  50. package/lib/cjs/index.d.ts +3 -4
  51. package/lib/cjs/index.js +3 -4
  52. package/lib/cjs/result/ActionResult.d.ts +1 -1
  53. package/lib/cjs/result/ActionResultError.d.ts +1 -1
  54. package/lib/cjs/result/ActionResultError.js +3 -3
  55. package/lib/cjs/result/InitCallResult.d.ts +1 -1
  56. package/lib/cjs/state/Culture.d.ts +2 -2
  57. package/lib/cjs/state/User.d.ts +1 -1
  58. package/lib/mjs/address/AddressAutocomplete.d.ts +1 -1
  59. package/lib/mjs/address/AddressPlace.d.ts +3 -3
  60. package/lib/mjs/address/AddressPlaceBase.d.ts +1 -1
  61. package/lib/mjs/address/AddressRegion.d.ts +2 -2
  62. package/lib/mjs/address/AddressRegion.js +13 -13
  63. package/lib/mjs/address/AddressUtils.d.ts +1 -1
  64. package/lib/mjs/address/AddressUtils.js +1 -1
  65. package/lib/mjs/api/AuthApi.d.ts +14 -14
  66. package/lib/mjs/api/AuthApi.js +19 -19
  67. package/lib/mjs/api/BaseApi.d.ts +1 -1
  68. package/lib/mjs/api/EntityApi.d.ts +8 -8
  69. package/lib/mjs/api/EntityApi.js +5 -5
  70. package/lib/mjs/api/dto/AuditLineDto.d.ts +24 -0
  71. package/lib/mjs/api/dto/AuditLineDto.js +1 -0
  72. package/lib/mjs/api/dto/IdLabelDto.d.ts +1 -1
  73. package/lib/mjs/api/dto/IdLabelPrimaryDto.d.ts +1 -1
  74. package/lib/mjs/api/dto/PinDto.d.ts +61 -0
  75. package/lib/mjs/api/dto/PinDto.js +1 -0
  76. package/lib/mjs/api/dto/ResultPayload.d.ts +2 -2
  77. package/lib/mjs/api/rq/AuthRequest.d.ts +1 -1
  78. package/lib/mjs/api/rq/LoginRQ.d.ts +2 -2
  79. package/lib/mjs/api/rq/MergeRQ.d.ts +1 -1
  80. package/lib/mjs/api/rq/QueryRQ.d.ts +2 -2
  81. package/lib/mjs/api/rq/StatusQueryRQ.d.ts +3 -3
  82. package/lib/mjs/api/rq/UpdateModel.d.ts +2 -2
  83. package/lib/mjs/api/rq/UpdateStatusRQ.d.ts +2 -2
  84. package/lib/mjs/app/AppSettings.d.ts +3 -3
  85. package/lib/mjs/bridges/FlutterHost.d.ts +2 -2
  86. package/lib/mjs/bridges/FlutterHost.js +13 -13
  87. package/lib/mjs/business/BusinessTax.js +6 -6
  88. package/lib/mjs/business/BusinessUtils.d.ts +2 -2
  89. package/lib/mjs/business/BusinessUtils.js +5 -5
  90. package/lib/mjs/business/Currency.d.ts +1 -1
  91. package/lib/mjs/business/Currency.js +10 -10
  92. package/lib/mjs/business/ProductUnit.d.ts +1 -1
  93. package/lib/mjs/business/ProductUnit.js +1 -1
  94. package/lib/mjs/business/ShoppingCart.d.ts +9 -9
  95. package/lib/mjs/business/ShoppingCart.js +12 -12
  96. package/lib/mjs/custom/CustomField.d.ts +1 -1
  97. package/lib/mjs/custom/CustomFieldData.d.ts +2 -2
  98. package/lib/mjs/i18n/Culture.d.ts +31 -0
  99. package/lib/mjs/i18n/Culture.js +48 -0
  100. package/lib/mjs/index.d.ts +3 -4
  101. package/lib/mjs/index.js +3 -4
  102. package/lib/mjs/result/ActionResult.d.ts +1 -1
  103. package/lib/mjs/result/ActionResult.js +1 -1
  104. package/lib/mjs/result/ActionResultError.d.ts +1 -1
  105. package/lib/mjs/result/ActionResultError.js +3 -3
  106. package/lib/mjs/result/InitCallResult.d.ts +1 -1
  107. package/lib/mjs/state/Culture.d.ts +2 -2
  108. package/lib/mjs/state/User.d.ts +1 -1
  109. package/package.json +1 -1
  110. package/src/address/AddressAutocomplete.ts +16 -16
  111. package/src/address/AddressCity.ts +12 -12
  112. package/src/address/AddressContinent.ts +35 -35
  113. package/src/address/AddressDistrict.ts +12 -12
  114. package/src/address/AddressLocation.ts +8 -8
  115. package/src/address/AddressPlace.ts +23 -23
  116. package/src/address/AddressPlaceBase.ts +31 -31
  117. package/src/address/AddressRegion.ts +286 -286
  118. package/src/address/AddressState.ts +12 -12
  119. package/src/address/AddressUtils.ts +27 -27
  120. package/src/api/AuthApi.ts +194 -194
  121. package/src/api/BaseApi.ts +13 -13
  122. package/src/api/EntityApi.ts +181 -194
  123. package/src/api/dto/AntiforgeryRequestToken.ts +15 -15
  124. package/src/api/dto/ApiRefreshTokenDto.ts +16 -16
  125. package/src/api/dto/AuditLineDto.ts +27 -0
  126. package/src/api/dto/IdLabelDto.ts +3 -3
  127. package/src/api/dto/IdLabelPrimaryDto.ts +7 -7
  128. package/src/api/dto/InitCallDto.ts +12 -12
  129. package/src/api/dto/PinDto.ts +71 -0
  130. package/src/api/dto/ResultPayload.ts +6 -6
  131. package/src/api/rq/ApiRefreshTokenRQ.ts +8 -8
  132. package/src/api/rq/AuthRequest.ts +40 -40
  133. package/src/api/rq/GetLogInUrlRQ.ts +8 -8
  134. package/src/api/rq/LoginIdRQ.ts +12 -12
  135. package/src/api/rq/LoginRQ.ts +18 -18
  136. package/src/api/rq/MergeRQ.ts +13 -13
  137. package/src/api/rq/QueryPagingData.ts +16 -16
  138. package/src/api/rq/QueryRQ.ts +22 -22
  139. package/src/api/rq/RefreshTokenRQ.ts +4 -4
  140. package/src/api/rq/ResetPasswordRQ.ts +20 -20
  141. package/src/api/rq/SignoutRQ.ts +8 -8
  142. package/src/api/rq/StatusQueryRQ.ts +11 -11
  143. package/src/api/rq/SwitchOrgRQ.ts +8 -8
  144. package/src/api/rq/TokenRQ.ts +4 -4
  145. package/src/api/rq/UpdateModel.ts +12 -12
  146. package/src/api/rq/UpdateStatusRQ.ts +10 -10
  147. package/src/app/AppSettings.ts +27 -27
  148. package/src/app/UserRole.ts +44 -44
  149. package/src/bridges/FlutterHost.ts +92 -97
  150. package/src/bridges/IBridgeHost.ts +49 -51
  151. package/src/business/ApiService.ts +25 -25
  152. package/src/business/BusinessTax.ts +63 -63
  153. package/src/business/BusinessUtils.ts +75 -75
  154. package/src/business/CultureItem.ts +43 -43
  155. package/src/business/Currency.ts +11 -11
  156. package/src/business/DataPrivacy.ts +35 -35
  157. package/src/business/EntityStatus.ts +44 -44
  158. package/src/business/ProductUnit.ts +58 -58
  159. package/src/business/RepeatOption.ts +50 -50
  160. package/src/business/ShoppingCart.ts +696 -706
  161. package/src/custom/CustomField.ts +20 -20
  162. package/src/custom/CustomFieldData.ts +43 -43
  163. package/src/def/ListItem.ts +12 -12
  164. package/src/i18n/Culture.ts +60 -0
  165. package/src/i18n/en.json +244 -244
  166. package/src/i18n/zh-Hans.json +244 -244
  167. package/src/i18n/zh-Hant.json +244 -244
  168. package/src/index.ts +3 -4
  169. package/src/result/ActionResult.ts +19 -19
  170. package/src/result/ActionResultError.ts +30 -30
  171. package/src/result/InitCallResult.ts +21 -21
  172. package/src/state/Culture.ts +3 -3
  173. package/src/state/State.ts +5 -5
  174. package/src/state/User.ts +92 -92
  175. package/tsconfig.cjs.json +17 -17
  176. package/tsconfig.json +17 -17
  177. package/lib/cjs/i18n/CultureUtils.d.ts +0 -13
  178. package/lib/cjs/i18n/CultureUtils.js +0 -32
  179. package/lib/cjs/i18n/en.d.ts +0 -6
  180. package/lib/cjs/i18n/en.js +0 -12
  181. package/lib/cjs/i18n/zhHans.d.ts +0 -6
  182. package/lib/cjs/i18n/zhHans.js +0 -12
  183. package/lib/cjs/i18n/zhHant.d.ts +0 -6
  184. package/lib/cjs/i18n/zhHant.js +0 -12
  185. package/lib/mjs/i18n/CultureUtils.d.ts +0 -13
  186. package/lib/mjs/i18n/CultureUtils.js +0 -29
  187. package/lib/mjs/i18n/en.d.ts +0 -6
  188. package/lib/mjs/i18n/en.js +0 -8
  189. package/lib/mjs/i18n/zhHans.d.ts +0 -6
  190. package/lib/mjs/i18n/zhHans.js +0 -8
  191. package/lib/mjs/i18n/zhHant.d.ts +0 -6
  192. package/lib/mjs/i18n/zhHant.js +0 -8
  193. package/src/i18n/CultureUtils.ts +0 -36
  194. package/src/i18n/en.ts +0 -10
  195. package/src/i18n/zhHans.ts +0 -10
  196. package/src/i18n/zhHant.ts +0 -10
@@ -1,4 +1,4 @@
1
- import { BaseApi } from './BaseApi';
1
+ import { BaseApi } from "./BaseApi";
2
2
  /**
3
3
  * Entity API
4
4
  * Follow com.etsoo.CoreFramework.Services.EntityServiceBase
@@ -24,7 +24,7 @@ export class EntityApi extends BaseApi {
24
24
  }
25
25
  deleteBase(id, payload) {
26
26
  const query = Array.isArray(id)
27
- ? '?' + id.map((item) => `ids=${item}`).join('&')
27
+ ? "?" + id.map((item) => `ids=${item}`).join("&")
28
28
  : id;
29
29
  return this.api.delete(`${this.flag}/Delete/${query}`, undefined, payload);
30
30
  }
@@ -36,7 +36,7 @@ export class EntityApi extends BaseApi {
36
36
  */
37
37
  listBase(rq, payload) {
38
38
  let { queryPaging, ...rest } = rq;
39
- if (typeof queryPaging === 'number') {
39
+ if (typeof queryPaging === "number") {
40
40
  queryPaging = { currentPage: 0, batchSize: queryPaging };
41
41
  }
42
42
  return this.api.post(`${this.flag}/List`, { queryPaging, ...rest }, payload);
@@ -57,7 +57,7 @@ export class EntityApi extends BaseApi {
57
57
  * @param queryKey Additional query key
58
58
  * @returns Result
59
59
  */
60
- queryBase(rq, payload, queryKey = '') {
60
+ queryBase(rq, payload, queryKey = "") {
61
61
  return this.api.post(`${this.flag}/Query${queryKey}`, rq, payload);
62
62
  }
63
63
  /**
@@ -101,7 +101,7 @@ export class EntityApi extends BaseApi {
101
101
  * @param payload Payload
102
102
  * @returns Result
103
103
  */
104
- sortWith(category, items, method = 'Sort', payload) {
104
+ sortWith(category, items, method = "Sort", payload) {
105
105
  const data = {};
106
106
  items.forEach((item, index) => (data[item.id] = index));
107
107
  return this.api.put(`${this.flag}/${method}`, { category, data }, payload);
@@ -0,0 +1,24 @@
1
+ import { IApiPayload } from "@etsoo/restclient";
2
+ /**
3
+ * Audit line data
4
+ */
5
+ export type AuditLineDto = {
6
+ id: number;
7
+ creation: Date;
8
+ user: string;
9
+ action: string;
10
+ changes?: AuditLineChangesDto;
11
+ oldData?: Record<string, unknown>;
12
+ newData?: Record<string, unknown>;
13
+ };
14
+ /**
15
+ * Audit line changes data
16
+ */
17
+ export type AuditLineChangesDto = {
18
+ oldData: Record<string, unknown>;
19
+ newData: Record<string, unknown>;
20
+ };
21
+ /**
22
+ * Audit line API payload
23
+ */
24
+ export type AuditLinePayload = IApiPayload<AuditLineDto[]>;
@@ -0,0 +1 @@
1
+ export {};
@@ -1,4 +1,4 @@
1
- import { ListType, ListType1 } from '@etsoo/shared';
1
+ import { ListType, ListType1 } from "@etsoo/shared";
2
2
  /**
3
3
  * Conditional IdLabel type
4
4
  */
@@ -1,4 +1,4 @@
1
- import { DataTypes, IdType } from '@etsoo/shared';
1
+ import { DataTypes, IdType } from "@etsoo/shared";
2
2
  /**
3
3
  * Dto with id, label and primary field
4
4
  */
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Pin data
3
+ * 身份证信息
4
+ */
5
+ export type PinDto = {
6
+ /**
7
+ * Region id
8
+ * 地区编号
9
+ */
10
+ regionId?: string;
11
+ /**
12
+ * State or province
13
+ * 州 / 省
14
+ */
15
+ state?: string;
16
+ /**
17
+ * State or province id
18
+ * 州 / 省编号
19
+ */
20
+ stateId?: string;
21
+ /**
22
+ * City
23
+ * 城市
24
+ */
25
+ city?: string;
26
+ /**
27
+ * City id
28
+ * 城市编号
29
+ */
30
+ cityId?: number;
31
+ /**
32
+ * District
33
+ * 区县
34
+ */
35
+ district?: string;
36
+ /**
37
+ * District id
38
+ * 区县编号
39
+ */
40
+ districtId?: number;
41
+ /**
42
+ * Merged previous district
43
+ * 合并的原区县
44
+ */
45
+ mergedDistrict?: string;
46
+ /**
47
+ * Gender
48
+ * 性别
49
+ */
50
+ gender?: "F" | "M";
51
+ /**
52
+ * Birthday
53
+ * 生日
54
+ */
55
+ birthday?: string | Date;
56
+ /**
57
+ * Whether the form is legal
58
+ * 是否形式合法
59
+ */
60
+ valid: boolean;
61
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -1,5 +1,5 @@
1
- import { IApiPayload } from '@etsoo/restclient';
2
- import { IActionResult, IdActionResult, IdMsgActionResult, MsgActionResult } from '@etsoo/shared';
1
+ import { IApiPayload } from "@etsoo/restclient";
2
+ import { IActionResult, IdActionResult, IdMsgActionResult, MsgActionResult } from "@etsoo/shared";
3
3
  /**
4
4
  * Action result payload
5
5
  */
@@ -27,7 +27,7 @@ export type AuthRequest = {
27
27
  * Response type, code or token
28
28
  * 响应类型,代码或令牌
29
29
  */
30
- responseType: 'code' | 'token';
30
+ responseType: "code" | "token";
31
31
  /**
32
32
  * Scope
33
33
  * 作用域
@@ -1,5 +1,5 @@
1
- import { AuthRequest } from './AuthRequest';
2
- import { LoginIdRQ } from './LoginIdRQ';
1
+ import { AuthRequest } from "./AuthRequest";
2
+ import { LoginIdRQ } from "./LoginIdRQ";
3
3
  /**
4
4
  * Login request data
5
5
  */
@@ -1,4 +1,4 @@
1
- import { IdType } from '@etsoo/shared';
1
+ import { IdType } from "@etsoo/shared";
2
2
  /**
3
3
  * Merge request data
4
4
  */
@@ -1,5 +1,5 @@
1
- import { IdType } from '@etsoo/shared';
2
- import { QueryPagingData } from './QueryPagingData';
1
+ import { IdType } from "@etsoo/shared";
2
+ import { QueryPagingData } from "./QueryPagingData";
3
3
  /**
4
4
  * Query request data
5
5
  * com.etsoo.CoreFramework.Models.QueryRQ
@@ -1,6 +1,6 @@
1
- import { IdType } from '@etsoo/shared';
2
- import { QueryRQ } from './QueryRQ';
3
- import { EntityStatus } from '../../business/EntityStatus';
1
+ import { IdType } from "@etsoo/shared";
2
+ import { QueryRQ } from "./QueryRQ";
3
+ import { EntityStatus } from "../../business/EntityStatus";
4
4
  /**
5
5
  * Query with status request data
6
6
  * com.etsoo.CoreFramework.Models.QueryRQ
@@ -1,4 +1,4 @@
1
- import { IdType } from '@etsoo/shared';
1
+ import { IdType } from "@etsoo/shared";
2
2
  /**
3
3
  * Update model
4
4
  * 更新模型
@@ -14,5 +14,5 @@ export interface UpdateModel<T extends IdType = number> {
14
14
  * 'Exclude' items from a union type while 'omit' items from an object type.
15
15
  * 更改的字段,注意 'Exclude' 用于联合类型,'omit' 用于对象类型。
16
16
  */
17
- changedFields?: Exclude<keyof this, 'changedFields'>[];
17
+ changedFields?: Exclude<keyof this, "changedFields">[];
18
18
  }
@@ -1,5 +1,5 @@
1
- import { IdType } from '@etsoo/shared';
2
- import { EntityStatus } from '../../business/EntityStatus';
1
+ import { IdType } from "@etsoo/shared";
2
+ import { EntityStatus } from "../../business/EntityStatus";
3
3
  /**
4
4
  * Update status request data
5
5
  */
@@ -1,6 +1,6 @@
1
- import { DataTypes } from '@etsoo/shared';
2
- import { AddressRegion } from '../address/AddressRegion';
3
- import { IExternalSettings } from './ExternalSettings';
1
+ import { DataTypes } from "@etsoo/shared";
2
+ import { AddressRegion } from "../address/AddressRegion";
3
+ import { IExternalSettings } from "./ExternalSettings";
4
4
  /**
5
5
  * App settings interface
6
6
  */
@@ -1,5 +1,5 @@
1
- import { DataTypes } from '@etsoo/shared';
2
- import { BridgeHostName, IBridgeHost } from './IBridgeHost';
1
+ import { DataTypes } from "@etsoo/shared";
2
+ import { BridgeHostName, IBridgeHost } from "./IBridgeHost";
3
3
  type CallHandlerType = (name: string, ...args: unknown[]) => PromiseLike<DataTypes.StringRecord | void>;
4
4
  /**
5
5
  * Flutter JavaScript Host
@@ -1,5 +1,5 @@
1
- import { ExtendUtils } from '@etsoo/shared';
2
- import { BridgeHostName } from './IBridgeHost';
1
+ import { ExtendUtils } from "@etsoo/shared";
2
+ import { BridgeHostName } from "./IBridgeHost";
3
3
  /**
4
4
  * Flutter JavaScript Host
5
5
  * https://inappwebview.dev/docs/javascript/communication/
@@ -19,7 +19,7 @@ export class FlutterHost {
19
19
  * Cached commands
20
20
  */
21
21
  this.cachedCommands = {};
22
- window.addEventListener('flutterInAppWebViewPlatformReady', (_event) => {
22
+ window.addEventListener("flutterInAppWebViewPlatformReady", (_event) => {
23
23
  if (this.host.callHandler == null)
24
24
  return;
25
25
  for (const key in this.cachedCommands) {
@@ -37,18 +37,18 @@ export class FlutterHost {
37
37
  }
38
38
  changeCulture(locale) {
39
39
  if (this.host.callHandler)
40
- this.host.callHandler('changeCulture', locale);
40
+ this.host.callHandler("changeCulture", locale);
41
41
  else
42
- this.cacheCommand('changeCulture', locale);
42
+ this.cacheCommand("changeCulture", locale);
43
43
  }
44
44
  closable() {
45
45
  return false;
46
46
  }
47
47
  exit() {
48
48
  if (this.host.callHandler)
49
- this.host.callHandler('exit');
49
+ this.host.callHandler("exit");
50
50
  else
51
- this.cacheCommand('exit');
51
+ this.cacheCommand("exit");
52
52
  }
53
53
  async getLabels(...keys) {
54
54
  // Try 500 miliseconds
@@ -62,10 +62,10 @@ export class FlutterHost {
62
62
  const init = {};
63
63
  if (this.host.callHandler == null)
64
64
  return init;
65
- const result = (await this.host.callHandler('getLabels')) ?? {};
65
+ const result = (await this.host.callHandler("getLabels")) ?? {};
66
66
  return keys.reduce((a, v) => ({
67
67
  ...a,
68
- [v]: result[v] ?? ''
68
+ [v]: result[v] ?? ""
69
69
  }), init);
70
70
  }
71
71
  getStartUrl() {
@@ -74,15 +74,15 @@ export class FlutterHost {
74
74
  loadApp(name, startUrl) {
75
75
  this.startUrl = startUrl;
76
76
  if (this.host.callHandler)
77
- this.host.callHandler('loadApp', name, startUrl);
77
+ this.host.callHandler("loadApp", name, startUrl);
78
78
  else
79
- this.cacheCommand('loadApp', name, startUrl);
79
+ this.cacheCommand("loadApp", name, startUrl);
80
80
  }
81
81
  userAuthorization(authorized) {
82
82
  if (this.host.callHandler)
83
- this.host.callHandler('userAuthorization', authorized);
83
+ this.host.callHandler("userAuthorization", authorized);
84
84
  else
85
- this.cacheCommand('userAuthorization', authorized);
85
+ this.cacheCommand("userAuthorization", authorized);
86
86
  }
87
87
  onUpdate(func) { }
88
88
  setTitle(title) { }
@@ -20,7 +20,7 @@ export class BusinessTax {
20
20
  * Get label key
21
21
  */
22
22
  get labelKey() {
23
- return 'tax' + this.id + this.name;
23
+ return "tax" + this.id + this.name;
24
24
  }
25
25
  }
26
26
  /**
@@ -28,23 +28,23 @@ export class BusinessTax {
28
28
  * Unified Social Credit Code (USCC) / 统一信用代码
29
29
  * https://zh.wikisource.org/wiki/GB_32100-2015_%E6%B3%95%E4%BA%BA%E5%92%8C%E5%85%B6%E4%BB%96%E7%BB%84%E7%BB%87%E7%BB%9F%E4%B8%80%E7%A4%BE%E4%BC%9A%E4%BF%A1%E7%94%A8%E4%BB%A3%E7%A0%81%E7%BC%96%E7%A0%81%E8%A7%84%E5%88%99
30
30
  */
31
- BusinessTax.CN = new BusinessTax('CN', 'USCC', '*0-000000-**********');
31
+ BusinessTax.CN = new BusinessTax("CN", "USCC", "*0-000000-**********");
32
32
  /**
33
33
  * NZ, Inland Revenue (IRD)
34
34
  */
35
- BusinessTax.NZ = new BusinessTax('NZ', 'IRD', '00[0]-000-000');
35
+ BusinessTax.NZ = new BusinessTax("NZ", "IRD", "00[0]-000-000");
36
36
  /**
37
37
  * US, Employer Identification Number (EIN)
38
38
  */
39
- BusinessTax.US = new BusinessTax('US', 'EIN', '00-0000000');
39
+ BusinessTax.US = new BusinessTax("US", "EIN", "00-0000000");
40
40
  /**
41
41
  * CA, tax ID number (Business Number, BN)
42
42
  */
43
- BusinessTax.CA = new BusinessTax('CA', 'BN', '000000000');
43
+ BusinessTax.CA = new BusinessTax("CA", "BN", "000000000");
44
44
  /**
45
45
  * HK, Business Registration Number (BRN)
46
46
  */
47
- BusinessTax.HK = new BusinessTax('HK', 'BRN', '00000000');
47
+ BusinessTax.HK = new BusinessTax("HK", "BRN", "00000000");
48
48
  /**
49
49
  * All countries and regions
50
50
  */
@@ -1,5 +1,5 @@
1
- import { ListType, ListType1 } from '@etsoo/shared';
2
- import { CultureGridItem } from './CultureItem';
1
+ import { ListType, ListType1 } from "@etsoo/shared";
2
+ import { CultureGridItem } from "./CultureItem";
3
3
  /**
4
4
  * Business utils
5
5
  */
@@ -10,9 +10,9 @@ export var BusinessUtils;
10
10
  * @param defaultTitle Default title
11
11
  * @returns Result
12
12
  */
13
- function formatAvatarTitle(title, maxChars = 3, defaultTitle = 'ME') {
13
+ function formatAvatarTitle(title, maxChars = 3, defaultTitle = "ME") {
14
14
  // Just return for empty cases
15
- if (title == null || title === '')
15
+ if (title == null || title === "")
16
16
  return defaultTitle;
17
17
  // split with words
18
18
  const items = title.trim().split(/\s+/g);
@@ -27,7 +27,7 @@ export var BusinessUtils;
27
27
  // First letter of each item
28
28
  var firstLetters = items
29
29
  .map((item) => item[0])
30
- .join('')
30
+ .join("")
31
31
  .toUpperCase();
32
32
  const flen = firstLetters.length;
33
33
  if (flen <= maxChars)
@@ -45,13 +45,13 @@ export var BusinessUtils;
45
45
  const allCultures = data.cultures ?? [];
46
46
  cultures.forEach((culture) => {
47
47
  if (!allCultures.some((a) => a.id === culture.id)) {
48
- allCultures.push({ id: culture.id, title: '' });
48
+ allCultures.push({ id: culture.id, title: "" });
49
49
  }
50
50
  });
51
51
  // Remove the default culture
52
52
  allCultures.remove((a) => a.id === cultures[0].id);
53
53
  // Sort
54
- allCultures.sortByProperty('id', cultures.map((c) => c.id));
54
+ allCultures.sortByProperty("id", cultures.map((c) => c.id));
55
55
  // Set back
56
56
  data.cultures = allCultures;
57
57
  }
@@ -5,4 +5,4 @@ export declare const Currencies: readonly ["AUD", "CAD", "CNY", "EUR", "GBP", "H
5
5
  /**
6
6
  * Currency type
7
7
  */
8
- export type Currency = typeof Currencies[number];
8
+ export type Currency = (typeof Currencies)[number];
@@ -2,14 +2,14 @@
2
2
  * Currency array
3
3
  */
4
4
  export const Currencies = [
5
- 'AUD',
6
- 'CAD',
7
- 'CNY',
8
- 'EUR',
9
- 'GBP',
10
- 'HKD',
11
- 'JPY',
12
- 'NZD',
13
- 'SGD',
14
- 'USD'
5
+ "AUD",
6
+ "CAD",
7
+ "CNY",
8
+ "EUR",
9
+ "GBP",
10
+ "HKD",
11
+ "JPY",
12
+ "NZD",
13
+ "SGD",
14
+ "USD"
15
15
  ];
@@ -1,4 +1,4 @@
1
- import { RepeatOption } from './RepeatOption';
1
+ import { RepeatOption } from "./RepeatOption";
2
2
  /**
3
3
  * Product base units
4
4
  * 1 - 9
@@ -1,4 +1,4 @@
1
- import { RepeatOption } from './RepeatOption';
1
+ import { RepeatOption } from "./RepeatOption";
2
2
  /**
3
3
  * Product base units
4
4
  * 1 - 9
@@ -1,5 +1,5 @@
1
- import { DataTypes, IStorage, IdType } from '@etsoo/shared';
2
- import { Currency } from './Currency';
1
+ import { DataTypes, IStorage, IdType } from "@etsoo/shared";
2
+ import { Currency } from "./Currency";
3
3
  /**
4
4
  * Shopping cart owner
5
5
  * 购物篮所有人
@@ -107,7 +107,7 @@ export type ShoppingCartItem = ShoppingCartItemBase & {
107
107
  * Shopping cart change reason
108
108
  * 购物篮改变原因
109
109
  */
110
- export type ShoppingCartChangeReason = 'add' | 'clear' | 'remove' | 'title' | 'update';
110
+ export type ShoppingCartChangeReason = "add" | "clear" | "remove" | "title" | "update";
111
111
  /**
112
112
  * Shopping cart
113
113
  * 购物篮
@@ -269,7 +269,7 @@ export declare class ShoppingCart<T extends ShoppingCartItem> {
269
269
  * @param price Price
270
270
  * @param overrideExisting Override existing price
271
271
  */
272
- cachePrice(id: T['id'], price: number, overrideExisting?: boolean): void;
272
+ cachePrice(id: T["id"], price: number, overrideExisting?: boolean): void;
273
273
  /**
274
274
  * Change currency
275
275
  * @param currency Currency
@@ -296,7 +296,7 @@ export declare class ShoppingCart<T extends ShoppingCartItem> {
296
296
  * @param id Item id
297
297
  * @returns Result
298
298
  */
299
- getItem(id: T['id']): T | undefined;
299
+ getItem(id: T["id"]): T | undefined;
300
300
  /**
301
301
  * Push item
302
302
  * 推送项目
@@ -343,7 +343,7 @@ export declare class ShoppingCart<T extends ShoppingCartItem> {
343
343
  * @param itemCreator New item creator
344
344
  * @returns Updated or not
345
345
  */
346
- updateAssetItem(id: T['id'], assetQty: number | undefined, itemCreator?: () => Omit<T, 'id' | 'price' | 'assetQty' | 'subtotal' | 'discount' | 'promotions'>): boolean;
346
+ updateAssetItem(id: T["id"], assetQty: number | undefined, itemCreator?: () => Omit<T, "id" | "price" | "assetQty" | "subtotal" | "discount" | "promotions">): boolean;
347
347
  /**
348
348
  * Update item
349
349
  * 更新项目
@@ -352,17 +352,17 @@ export declare class ShoppingCart<T extends ShoppingCartItem> {
352
352
  * @param itemCreator New item creator
353
353
  * @returns Updated or not
354
354
  */
355
- updateItem(id: T['id'], qty: number | undefined, itemCreator?: () => Omit<T, 'id' | 'price' | 'qty' | 'subtotal' | 'discount' | 'promotions'>): boolean;
355
+ updateItem(id: T["id"], qty: number | undefined, itemCreator?: () => Omit<T, "id" | "price" | "qty" | "subtotal" | "discount" | "promotions">): boolean;
356
356
  /**
357
357
  * Update price
358
358
  * @param id Item id
359
359
  * @param price New price
360
360
  */
361
- updatePrice(id: T['id'], price: number): void;
361
+ updatePrice(id: T["id"], price: number): void;
362
362
  /**
363
363
  * Update title
364
364
  * @param id Item id
365
365
  * @param title New title
366
366
  */
367
- updateTitle(id: T['id'], title: string): void;
367
+ updateTitle(id: T["id"], title: string): void;
368
368
  }
@@ -1,5 +1,5 @@
1
- import { NumberUtils, WindowStorage } from '@etsoo/shared';
2
- const ShoppingCartKeyField = 'ETSOO-CART-KEYS';
1
+ import { NumberUtils, WindowStorage } from "@etsoo/shared";
2
+ const ShoppingCartKeyField = "ETSOO-CART-KEYS";
3
3
  /**
4
4
  * Shopping cart
5
5
  * 购物篮
@@ -137,7 +137,7 @@ export class ShoppingCart {
137
137
  const subtotal = this.items
138
138
  .map((item) => item.subtotal - item.discount)
139
139
  .sum();
140
- const discount = this.promotions.sum('amount');
140
+ const discount = this.promotions.sum("amount");
141
141
  return subtotal - discount;
142
142
  }
143
143
  /**
@@ -203,7 +203,7 @@ export class ShoppingCart {
203
203
  */
204
204
  addItems(items) {
205
205
  this.items.push(...items);
206
- this.doChange('add', items);
206
+ this.doChange("add", items);
207
207
  }
208
208
  /**
209
209
  * Cache price
@@ -246,7 +246,7 @@ export class ShoppingCart {
246
246
  ShoppingCart.clear(this.identifier, this.storage);
247
247
  this.keys.remove(this.identifier);
248
248
  }
249
- this.doChange('clear', []);
249
+ this.doChange("clear", []);
250
250
  }
251
251
  /**
252
252
  * Format amount
@@ -295,7 +295,7 @@ export class ShoppingCart {
295
295
  */
296
296
  removeItem(index) {
297
297
  const removedItems = this.items.splice(index, 1);
298
- this.doChange('remove', removedItems);
298
+ this.doChange("remove", removedItems);
299
299
  }
300
300
  /**
301
301
  * Reset item
@@ -346,14 +346,14 @@ export class ShoppingCart {
346
346
  * 触发更新
347
347
  */
348
348
  update() {
349
- this.doChange('update', []);
349
+ this.doChange("update", []);
350
350
  }
351
351
  /**
352
352
  * Update discount
353
353
  * @param item Shopping cart item
354
354
  */
355
355
  updateDiscount(item) {
356
- item.discount = item.promotions.sum('amount');
356
+ item.discount = item.promotions.sum("amount");
357
357
  }
358
358
  /**
359
359
  * Update asset item
@@ -400,7 +400,7 @@ export class ShoppingCart {
400
400
  discount: 0
401
401
  };
402
402
  this.items.splice(index, 1, newItem);
403
- this.doChange('update', [item, newItem]);
403
+ this.doChange("update", [item, newItem]);
404
404
  }
405
405
  return true;
406
406
  }
@@ -451,7 +451,7 @@ export class ShoppingCart {
451
451
  discount: 0
452
452
  };
453
453
  this.items.splice(index, 1, newItem);
454
- this.doChange('update', [item, newItem]);
454
+ this.doChange("update", [item, newItem]);
455
455
  }
456
456
  return true;
457
457
  }
@@ -473,7 +473,7 @@ export class ShoppingCart {
473
473
  subtotal: price * qty * assetQty
474
474
  };
475
475
  this.items.splice(index, 1, newItem);
476
- this.doChange('update', [item, newItem]);
476
+ this.doChange("update", [item, newItem]);
477
477
  }
478
478
  }
479
479
  /**
@@ -489,7 +489,7 @@ export class ShoppingCart {
489
489
  if (newItem.name === newItem.title)
490
490
  newItem.title = undefined;
491
491
  this.items.splice(index, 1, newItem);
492
- this.doChange('title', [item, newItem]);
492
+ this.doChange("title", [item, newItem]);
493
493
  }
494
494
  }
495
495
  }
@@ -1,4 +1,4 @@
1
- import { CustomFieldData } from './CustomFieldData';
1
+ import { CustomFieldData } from "./CustomFieldData";
2
2
  /**
3
3
  * Custom field reference
4
4
  * 自定义字段引用
@@ -1,9 +1,9 @@
1
- import { IdType, ListType2 } from '@etsoo/shared';
1
+ import { IdType, ListType2 } from "@etsoo/shared";
2
2
  /**
3
3
  * Custom field space (12 columns)
4
4
  * 自定义字段空间(12列)
5
5
  */
6
- export type CustomFieldSpace = 'quater' | 'half' | 'half1' | 'full' | 'five' | 'seven';
6
+ export type CustomFieldSpace = "quater" | "half" | "half1" | "full" | "five" | "seven";
7
7
  /**
8
8
  * Custom field data
9
9
  * 自定义字段数据