@abtnode/blocklet-services 1.16.44 → 1.16.45-beta-20250609-025419-7fd1f86c

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 (157) hide show
  1. package/api/cache.js +122 -138
  2. package/api/index.js +6 -9
  3. package/api/libs/email.js +1 -1
  4. package/api/libs/jwt.js +1 -1
  5. package/api/routes/dns-resolver.js +11 -10
  6. package/api/services/auth/session.js +6 -2
  7. package/api/util/attach-shared-utils.js +15 -21
  8. package/dist/assets/{AdapterDayjs-eMGLd9qK.js → AdapterDayjs-BXVfASrK.js} +1 -1
  9. package/dist/assets/{ArrowDropDown-QAD1r6CI.js → ArrowDropDown-Ce8TY3aP.js} +1 -1
  10. package/dist/assets/{CheckCircle-DKl6wFCW.js → CheckCircle-M9NlpTm_.js} +1 -1
  11. package/dist/assets/{ChevronLeft-BTvoFtZ-.js → ChevronLeft-02OWcWpH.js} +1 -1
  12. package/dist/assets/{ChevronRight-CB-tzzK0.js → ChevronRight-CB8w0u2n.js} +1 -1
  13. package/dist/assets/{DeleteOutline-D--wbiEJ.js → DeleteOutline-1-hBNY1U.js} +1 -1
  14. package/dist/assets/{Done-D5w4g3Ux.js → Done-CcJLRcBY.js} +1 -1
  15. package/dist/assets/{Download-CSPVh6pQ.js → Download-HHknpEZd.js} +1 -1
  16. package/dist/assets/{Edit-Dp6PSucO.js → Edit-hd-cDU5C.js} +1 -1
  17. package/dist/assets/{Error-7F2F0yXi.js → Error-D0rGqAKE.js} +1 -1
  18. package/dist/assets/{ExpandLess-BiXZAaWu.js → ExpandLess-Fb-uW6u_.js} +1 -1
  19. package/dist/assets/{Google-B-pSveIB.js → Google-WGwK551e.js} +1 -1
  20. package/dist/assets/{Home-BxZHmRym.js → Home-DeTVRhMG.js} +1 -1
  21. package/dist/assets/{InfoOutlined-Bpx0eOkP.js → InfoOutlined-CLiL5VeK.js} +1 -1
  22. package/dist/assets/{Launch-akp2B3sE.js → Launch-BwVeOcBz.js} +1 -1
  23. package/dist/assets/{LaunchOutlined-BorUV5ev.js → LaunchOutlined-CPurmWuM.js} +1 -1
  24. package/dist/assets/{MoreHoriz-B0f55Tf5.js → MoreHoriz-9E3q8aHi.js} +1 -1
  25. package/dist/assets/{PlayArrow-RuC30CX1.js → PlayArrow-B_ZNrQDa.js} +1 -1
  26. package/dist/assets/{TuneOutlined-D5FWo3d6.js → TuneOutlined-0oMZE8a4.js} +1 -1
  27. package/dist/assets/{ViewList-BqZC98em.js → ViewList-ColSGL1_.js} +1 -1
  28. package/dist/assets/{access-control-f_Q0xNEr.js → access-control-Bu9cwoFT.js} +1 -1
  29. package/dist/assets/{actions-DBL5WgL-.js → actions-DtL6bYnA.js} +1 -1
  30. package/dist/assets/{add-component-core-lxVDVv-g.js → add-component-core-CsW-bf6w.js} +1 -1
  31. package/dist/assets/{add-resource-DHuVcGqm.js → add-resource-D1GK1xW7.js} +1 -1
  32. package/dist/assets/{addon-DPZv8EDi.js → addon-e-JO0VU3.js} +1 -1
  33. package/dist/assets/advanced-BSxn1YDX.js +14 -0
  34. package/dist/assets/api-CQoRx33p.js +1 -0
  35. package/dist/assets/{appearance-CjjdXxDr.js → appearance-rcoe4DP4.js} +1 -1
  36. package/dist/assets/{audit-logs-9UAh1pea.js → audit-logs-XAopC8XN.js} +1 -1
  37. package/dist/assets/{authorize-f7rwXyK0.js → authorize-DNwNxF9-.js} +1 -1
  38. package/dist/assets/{base-chart-C6ehpmPk.js → base-chart-BYonGucU.js} +1 -1
  39. package/dist/assets/{base32-BwYE-4Kz.js → base32-CmYq1ikq.js} +1 -1
  40. package/dist/assets/{branding-DgYdp8Fj.js → branding-DpIlP_xM.js} +1 -1
  41. package/dist/assets/{branding-DyNgn-Bl.js → branding-moJCZl3a.js} +2 -2
  42. package/dist/assets/{bundle-avatar-eYIyRJCN.js → bundle-avatar-D28BGkcC.js} +1 -1
  43. package/dist/assets/{button-BJsVm63u.js → button-C0Vra3Ak.js} +1 -1
  44. package/dist/assets/{click-to-copy-BBibsDSl.js → click-to-copy-BUVqg1RQ.js} +1 -1
  45. package/dist/assets/{cloneDeep-IATUBtZS.js → cloneDeep-ro06l5HL.js} +1 -1
  46. package/dist/assets/{collapse-C0MB7y7w.js → collapse--nd2JDBL.js} +1 -1
  47. package/dist/assets/{complete-x6sLfw6B.js → complete-C6_ojDUa.js} +1 -1
  48. package/dist/assets/{component-B-zaossI.js → component-OYgpJSh4.js} +1 -1
  49. package/dist/assets/{config-BedCVCOB.js → config-C_hb7xhJ.js} +1 -1
  50. package/dist/assets/{config-kZ6x7NWW.js → config-QpBBpp7d.js} +1 -1
  51. package/dist/assets/{config-navigation-DWYn0QbT.js → config-navigation-VPQM3i1K.js} +3 -3
  52. package/dist/assets/{config-space-BKyIMqyn.js → config-space-CBoUabjP.js} +1 -1
  53. package/dist/assets/{confirm-W9aiB3ZK.js → confirm-BjCmRSAF.js} +1 -1
  54. package/dist/assets/{connect-BDcfioWR.js → connect-B6S3YIgF.js} +1 -1
  55. package/dist/assets/{connect-7xjSPaIL.js → connect-CQ-AWW94.js} +1 -1
  56. package/dist/assets/{connect-to-CjAmbMcq.js → connect-to-kM9lCXLX.js} +1 -1
  57. package/dist/assets/{dashboard-DTpUsE7s.js → dashboard-B7qE-Md0.js} +3 -3
  58. package/dist/assets/{delete-confirm-CR9GWuZW.js → delete-confirm-Dow_C0jR.js} +1 -1
  59. package/dist/assets/{did-address-C3GRjuMv.js → did-address-bJAfhuZx.js} +1 -1
  60. package/dist/assets/{domain-C5GTtUcW.js → domain-B8NapX5o.js} +1 -1
  61. package/dist/assets/{domain-action-card-DZFY_-cJ.js → domain-action-card-CCtkcxNz.js} +1 -1
  62. package/dist/assets/domains-DzI4bWdK.js +1 -0
  63. package/dist/assets/{dot-DGdAPqTT.js → dot-BID2dzD_.js} +1 -1
  64. package/dist/assets/{email-0L0UoCI5.js → email-DDPCqu4Z.js} +1 -1
  65. package/dist/assets/{exchange-passport-Cz76Mvqo.js → exchange-passport-xdsOlfWE.js} +1 -1
  66. package/dist/assets/{fuel-H0bbfYDc.js → fuel-D1fw-gpI.js} +1 -1
  67. package/dist/assets/{gen-access-key-CVMgx_Do.js → gen-access-key-R0_DUG_D.js} +1 -1
  68. package/dist/assets/{get-safe-url-CISc2x16.js → get-safe-url-BWDUV79Q.js} +1 -1
  69. package/dist/assets/{get-safe-url-DvHrYSqa.js → get-safe-url-CwT4-jkw.js} +1 -1
  70. package/dist/assets/{home-frxjPVWF.js → home-D1kBU1RC.js} +1 -1
  71. package/dist/assets/{iframe-BiCAYvW4.js → iframe-DsIqy16E.js} +1 -1
  72. package/dist/assets/{index-C0jIKgVd.js → index-At5NExT-.js} +1 -1
  73. package/dist/assets/{index-CsOtcFM5.js → index-B-K0Nvyz.js} +1 -1
  74. package/dist/assets/{index-BFxPxs1o.js → index-B4FABIlz.js} +1 -1
  75. package/dist/assets/{index-C9xycxde.js → index-BBuUqC0B.js} +1 -1
  76. package/dist/assets/{index-Bp39ibX1.js → index-BDw54V1q.js} +1 -1
  77. package/dist/assets/{index-CTJ98R3F.js → index-BSiKOdsD.js} +1 -1
  78. package/dist/assets/{index-CmGpTnGy.js → index-BY-e9TG4.js} +1 -1
  79. package/dist/assets/{index-Dsf-Dx7V.js → index-BnR8uU0R.js} +1 -1
  80. package/dist/assets/{index-DZ-_hefE.js → index-BpvW-cUy.js} +1 -1
  81. package/dist/assets/{index-NqsjhbFu.js → index-Brd3-BIC.js} +1 -1
  82. package/dist/assets/{index-CXZIC-uq.js → index-By1VEzOz.js} +1 -1
  83. package/dist/assets/{index-D2TrKFIL.js → index-CCrgDhTM.js} +1 -1
  84. package/dist/assets/{index-BPMh7nrj.js → index-CZgWTJXl.js} +1 -1
  85. package/dist/assets/{index-Rx6rf5TL.js → index-DQjZ74P0.js} +43 -43
  86. package/dist/assets/{index-DVfId0OB.js → index-DVLOAsDQ.js} +1 -1
  87. package/dist/assets/{index-CNP49TJ1.js → index-DWZfwLDs.js} +1 -1
  88. package/dist/assets/{index-DtuVp5SU.js → index-DnDFazyx.js} +3 -3
  89. package/dist/assets/{index-KHBjePpP.js → index-Dntq1ezd.js} +1 -1
  90. package/dist/assets/{index-Ch5CE_Xo.js → index-Drni9chH.js} +1 -1
  91. package/dist/assets/{index-B778V4Al.js → index-Hs7lhrID.js} +4 -4
  92. package/dist/assets/{index-CqQ_qPcW.js → index-NE1bWD-Q.js} +1 -1
  93. package/dist/assets/{invitation-BrPENaxX.js → invitation-Sx6eoeir.js} +1 -1
  94. package/dist/assets/{invite-B0YEiWAC.js → invite-CZ68j_lY.js} +1 -1
  95. package/dist/assets/{issue-passport-Dz3BWjAa.js → issue-passport-IkLenFGe.js} +1 -1
  96. package/dist/assets/{item-CALJuG3t.js → item-RUDvbSOI.js} +1 -1
  97. package/dist/assets/{layout-BpG5xw8B.js → layout-BCvTd67o.js} +1 -1
  98. package/dist/assets/{list-DyU1G1ER.js → list-BeFxJZxl.js} +1 -1
  99. package/dist/assets/{list-BZl1XCaf.js → list-DjvUHEwY.js} +2 -2
  100. package/dist/assets/localization-BNjdHo-G.js +1 -0
  101. package/dist/assets/{log-CTKJhZ_E.js → log-BGQO-I2s.js} +1 -1
  102. package/dist/assets/{logger-DAjuoBTQ.js → logger-KwxABgLK.js} +1 -1
  103. package/dist/assets/{login-Cg8geEoU.js → login-BF0iOJJn.js} +1 -1
  104. package/dist/assets/{login-oauth-callback-HckguQey.js → login-oauth-callback-Dt9V4GRH.js} +1 -1
  105. package/dist/assets/{logo-uploader-oD7wBJlZ.js → logo-uploader-BecsVnr8.js} +3 -3
  106. package/dist/assets/{lost-passport-BxZlOTiO.js → lost-passport-CaF7MO2m.js} +1 -1
  107. package/dist/assets/{omit-CsI4VeYr.js → omit-O1pUD7ku.js} +1 -1
  108. package/dist/assets/{open-window-Ct0k45Ir.js → open-window-Dn44K3ur.js} +1 -1
  109. package/dist/assets/overview-DwmambxV.js +85 -0
  110. package/dist/assets/{page-header-CVBmdH9B.js → page-header-JH9JWGMg.js} +1 -1
  111. package/dist/assets/{passport-item-D1UYvMW_.js → passport-item-DEX2NwJD.js} +1 -1
  112. package/dist/assets/{permission-CMjo9z-z.js → permission-B7ZHEOJv.js} +1 -1
  113. package/dist/assets/{preferences-Dtk7H5V2.js → preferences-DUSp_pAb.js} +1 -1
  114. package/dist/assets/{profile-embed-yHOg7opg.js → profile-embed-BIjwkrGW.js} +1 -1
  115. package/dist/assets/publish-resource-Bk548CMo.js +1 -0
  116. package/dist/assets/{react-beautiful-dnd.esm-CaWQHB2l.js → react-beautiful-dnd.esm-DCPrD7-r.js} +1 -1
  117. package/dist/assets/{runtime-BGMX9PTT.js → runtime-xdMFSsvP.js} +1 -1
  118. package/dist/assets/{sanitize-qIr4ImjO.js → sanitize-DbZs1H_T.js} +1 -1
  119. package/dist/assets/sdk-BJQcHaGO.js +1 -0
  120. package/dist/assets/{security-DDqACA_P.js → security-DCYPNDg3.js} +1 -1
  121. package/dist/assets/{session-N9ogZkBO.js → session-1k8BRnYA.js} +1 -1
  122. package/dist/assets/{setup--FMKBbd7.js → setup-CQ7O7nI0.js} +3 -3
  123. package/dist/assets/{spaces-ClWdZraZ.js → spaces-CpSu6mVL.js} +1 -1
  124. package/dist/assets/{start-D7GkMfm4.js → start-t5ebRJzD.js} +1 -1
  125. package/dist/assets/{starting-progress-COPiu29g.js → starting-progress-a7uoLG-L.js} +1 -1
  126. package/dist/assets/{status-D5ypXFOB.js → status-C4-MBX3k.js} +1 -1
  127. package/dist/assets/{step-actions-X0m-Hu2A.js → step-actions-Brohu3S-.js} +1 -1
  128. package/dist/assets/{studio-LXKuDXYf.js → studio-Cua13-ul.js} +1 -1
  129. package/dist/assets/{switch-control-ByXecLFy.js → switch-control-CzaI2YNK.js} +1 -1
  130. package/dist/assets/{table-tips-CbVGFubR.js → table-tips-Czrj7r52.js} +1 -1
  131. package/dist/assets/{traffic-GgX3Erg7.js → traffic-BI_ofO44.js} +1 -1
  132. package/dist/assets/{transfer-Dq6dS0l-.js → transfer-SwfyIGYE.js} +1 -1
  133. package/dist/assets/{unsubscribe-BZAVKPXL.js → unsubscribe-DFPfNrme.js} +1 -1
  134. package/dist/assets/{use-blocklet-logo-CmMzePwG.js → use-blocklet-logo-6YMz11ob.js} +1 -1
  135. package/dist/assets/use-server-logo-BbYHFDuK.js +1 -1
  136. package/dist/assets/{useAsync-QkUcWOv0.js → useAsync-B6ZHbOEG.js} +1 -1
  137. package/dist/assets/{useLocalStorage-COrhSWV-.js → useLocalStorage-BF3BqN1O.js} +1 -1
  138. package/dist/assets/{user-center-DVO5FZd_.js → user-center-BjGMsOGg.js} +3 -3
  139. package/dist/assets/{util-DZiavuQJ.js → util-BBMAZSVn.js} +1 -1
  140. package/dist/assets/{util-Ayf5_DBX.js → util-CS4PqVkK.js} +1 -1
  141. package/dist/assets/{vendor-arcblock-CATQui2x.js → vendor-arcblock-B4hgrXYM.js} +74 -74
  142. package/dist/assets/{vendor-hooks-TMGmpw5W.js → vendor-hooks-BCm626KH.js} +1 -1
  143. package/dist/assets/vendor-utils-B3iZkn2R.js +208 -0
  144. package/dist/assets/vendor-ux-did-connect-CX7qG3_M.js +2305 -0
  145. package/dist/assets/{wrap-locale-BD27EgAf.js → wrap-locale-378mdIBS.js} +1 -1
  146. package/dist/index.html +5 -5
  147. package/dist/service-worker.js +1 -1
  148. package/package.json +45 -45
  149. package/dist/assets/advanced-iHTV3yj0.js +0 -14
  150. package/dist/assets/api-DB7tZ-Xo.js +0 -1
  151. package/dist/assets/domains-BjYCkCPj.js +0 -1
  152. package/dist/assets/localization-BpRT0W0W.js +0 -1
  153. package/dist/assets/overview-B_ZqHpwj.js +0 -85
  154. package/dist/assets/publish-resource-H3WaTgcl.js +0 -1
  155. package/dist/assets/sdk-b4mKK9kW.js +0 -1
  156. package/dist/assets/vendor-utils-CxrPpJZS.js +0 -208
  157. package/dist/assets/vendor-ux-did-connect-Bh011lgb.js +0 -2305
package/api/cache.js CHANGED
@@ -1,102 +1,114 @@
1
- const { LRUCache } = require('lru-cache');
1
+ const { DBCache, getAbtNodeRedisAndSQLiteUrl } = require('@abtnode/db-cache');
2
2
  const nodemailer = require('nodemailer');
3
3
  const getBlockletInfo = require('@blocklet/meta/lib/info');
4
- const md5 = require('@abtnode/util/lib/md5');
5
-
6
- const cache = new LRUCache({
7
- max: 100, // cache at most 100
8
- ttl: 60 * 60 * 1000, // cache for 1 hour
9
- });
10
-
11
- const sessionCacheDisabledUser = new LRUCache({
12
- max: 10000,
13
- ttl: 86400 * 1000, // cache for 1 day
14
- });
15
-
16
- const securityConfigCache = new LRUCache({
17
- max: 5000, // 这里存储的是所有 blocklet 的缓存数据,需要设置的大一些
18
- ttl: 86400 * 1000, // 这部分数据不会频繁变动,设置为 1 天,将来可以通过页面进行性能优化设置
19
- });
20
-
21
- // FIXME: @zhanghan 将来需要缩短 cache key 的长度
22
- const keyFns = {
23
- node() {
24
- return md5('nodeState');
25
- },
26
- blocklet(did) {
27
- return md5(`${did}:blocklet`);
28
- },
29
- blockletInfo(did) {
30
- return md5(`${did}:blockletInfo`);
31
- },
32
- routingRule(ruleId) {
33
- return md5(`${ruleId}`);
34
- },
35
- serviceConfig(ruleId, serviceName) {
36
- return md5(`${ruleId}:${serviceName}`);
37
- },
38
- notificationConfig(did) {
39
- return md5(`${did}:notificationConfig`);
40
- },
41
- sessionCacheDisabledUser(did) {
42
- return md5(`sessionCacheDisabledUser:${did}`);
43
- },
44
- securityConfig(did, url) {
45
- return [md5(['securityConfig', did].join(':')), url ? md5(url) : undefined].filter(Boolean).join(':');
46
- },
4
+ const { fromJSON } = require('@ocap/wallet');
5
+
6
+ const CACHE_TTL = 60 * 60 * 1000;
7
+ const SESSION_CACHE_DISABLED_USER_TTL = 86400 * 1000;
8
+ const SECURITY_CONFIG_TTL = 86400 * 1000;
9
+
10
+ const cache = new DBCache(() => ({
11
+ ...getAbtNodeRedisAndSQLiteUrl(),
12
+ prefix: 'services-base',
13
+ ttl: CACHE_TTL,
14
+ }));
15
+
16
+ const cacheNodeInfo = new DBCache(() => ({
17
+ ...getAbtNodeRedisAndSQLiteUrl(),
18
+ prefix: 'services-node-state',
19
+ ttl: CACHE_TTL,
20
+ }));
21
+
22
+ const cacheBlocklet = new DBCache(() => ({
23
+ ...getAbtNodeRedisAndSQLiteUrl(),
24
+ prefix: 'services-blocklet',
25
+ ttl: CACHE_TTL,
26
+ }));
27
+
28
+ const cacheBlockletInfo = new DBCache(() => ({
29
+ ...getAbtNodeRedisAndSQLiteUrl(),
30
+ prefix: 'services-blocklet-info-v2',
31
+ ttl: CACHE_TTL,
32
+ }));
33
+
34
+ const cacheRule = new DBCache(() => ({
35
+ ...getAbtNodeRedisAndSQLiteUrl(),
36
+ prefix: 'services-rule',
37
+ ttl: CACHE_TTL,
38
+ }));
39
+
40
+ const cacheNotificationConfig = new DBCache(() => ({
41
+ ...getAbtNodeRedisAndSQLiteUrl(),
42
+ prefix: 'services-notification-config',
43
+ ttl: CACHE_TTL,
44
+ }));
45
+
46
+ const cacheSessionDisabledUser = new DBCache(() => ({
47
+ ...getAbtNodeRedisAndSQLiteUrl(),
48
+ prefix: 'services-session-cache-disabled-user',
49
+ ttl: SESSION_CACHE_DISABLED_USER_TTL,
50
+ }));
51
+
52
+ const cacheSecurityConfig = new DBCache(() => ({
53
+ ...getAbtNodeRedisAndSQLiteUrl(),
54
+ prefix: 'services-security-config',
55
+ ttl: SECURITY_CONFIG_TTL,
56
+ }));
57
+
58
+ cache.getNodeInfo = ({ node }) => {
59
+ return cacheNodeInfo.autoCache('base', () => {
60
+ return node.getNodeInfo();
61
+ });
47
62
  };
48
63
 
49
- cache.getNodeInfo = async ({ node }) => {
50
- const cacheKey = keyFns.node();
51
-
52
- const exist = cache.get(cacheKey);
53
- if (exist) {
54
- return exist;
55
- }
56
-
57
- const nodeInfo = await node.getNodeInfo();
58
- cache.set(cacheKey, nodeInfo);
59
-
60
- return nodeInfo;
64
+ cache.deleteNodeInfo = () => {
65
+ cacheNodeInfo.del('base');
61
66
  };
62
67
 
63
68
  cache.getBlocklet = async ({ did, node, force, context }) => {
64
- if (!did) {
65
- return null;
66
- }
67
-
68
- const cacheKey = cache.keyFns.blocklet(did);
69
-
70
- if (!force) {
71
- const exist = cache.get(cacheKey);
72
- if (exist) {
73
- return exist;
74
- }
75
- }
76
-
77
- const blocklet = await node.getBlocklet({ did, useCache: false }, context);
78
- if (blocklet) {
79
- cache.set(cacheKey, blocklet);
80
- }
81
-
69
+ const blocklet = await cacheBlocklet.autoCache(force ? null : did, () => {
70
+ return node.getBlocklet({ did, useCache: !force }, context);
71
+ });
72
+ // if (!blocklet || !blocklet.did) {
73
+ // return null;
74
+ // }
82
75
  return blocklet;
83
76
  };
84
77
 
85
78
  cache.getBlockletInfo = async ({ did, node, context }) => {
86
- const [blocklet, info] = await Promise.all([cache.getBlocklet({ did, node, context }), cache.getNodeInfo({ node })]);
87
- if (!blocklet) {
88
- throw new Error('Blocklet does not exist');
89
- }
90
-
91
- const cacheKey = cache.keyFns.blockletInfo(did);
79
+ const blockletInfo = await cacheBlockletInfo.autoCache(did, async () => {
80
+ const [blocklet, info] = await Promise.all([
81
+ cache.getBlocklet({ did, node, context }),
82
+ cache.getNodeInfo({ node }),
83
+ ]);
84
+
85
+ if (!blocklet) {
86
+ throw new Error('Blocklet does not exist');
87
+ }
88
+ const bInfo = await getBlockletInfo(blocklet, info.sk);
89
+ if (bInfo.wallet) {
90
+ bInfo.walletJSON = bInfo.wallet.toJSON();
91
+ delete bInfo.wallet;
92
+ }
93
+ if (bInfo.permanentWallet) {
94
+ if (bInfo.permanentWallet === bInfo.wallet) {
95
+ bInfo.permanentWalletJSON = bInfo.walletJSON;
96
+ } else {
97
+ bInfo.permanentWalletJSON = bInfo.permanentWallet.toJSON();
98
+ }
99
+ delete bInfo.permanentWallet;
100
+ }
101
+ return bInfo;
102
+ });
92
103
 
93
- const exist = cache.get(cacheKey);
94
- if (exist) {
95
- return exist;
104
+ if (blockletInfo.walletJSON) {
105
+ blockletInfo.wallet = fromJSON(blockletInfo.walletJSON);
106
+ delete blockletInfo.walletJSON;
107
+ }
108
+ if (blockletInfo.permanentWalletJSON) {
109
+ blockletInfo.permanentWallet = fromJSON(blockletInfo.permanentWalletJSON);
110
+ delete blockletInfo.permanentWalletJSON;
96
111
  }
97
-
98
- const blockletInfo = await getBlockletInfo(blocklet, info.sk);
99
- cache.set(cacheKey, blockletInfo);
100
112
  return blockletInfo;
101
113
  };
102
114
 
@@ -104,70 +116,42 @@ cache.getTransport = ({ did, config, force }) => {
104
116
  if (!did) {
105
117
  return null;
106
118
  }
107
-
108
- const cacheKey = cache.keyFns.notificationConfig(did);
109
-
110
- if (!force) {
111
- const exist = cache.get(cacheKey);
112
- if (exist) {
113
- return exist;
114
- }
115
- }
116
-
117
- const transporter = nodemailer.createTransport({
118
- host: config.host,
119
- port: config.port,
120
- secure: !!config.secure,
121
- auth: { user: config.user, pass: config.password },
119
+ return cacheNotificationConfig.autoCache(force ? null : did, () => {
120
+ return nodemailer.createTransport({
121
+ host: config.host,
122
+ port: config.port,
123
+ secure: !!config.secure,
124
+ auth: { user: config.user, pass: config.password },
125
+ });
122
126
  });
123
- if (transporter) {
124
- cache.set(cacheKey, transporter);
125
- }
126
-
127
- return transporter;
128
127
  };
129
128
 
130
- cache.sessionCacheDisabledUser = {
131
- get: (did) => {
132
- const cacheKey = cache.keyFns.sessionCacheDisabledUser(did);
133
- return sessionCacheDisabledUser.get(cacheKey);
134
- },
135
- set: (did) => {
136
- const cacheKey = cache.keyFns.sessionCacheDisabledUser(did);
137
- return sessionCacheDisabledUser.set(cacheKey, true);
138
- },
139
- };
140
-
141
- cache.getSecurityConfig = async ({ did, url, force = false, getDataFn } = {}) => {
129
+ cache.getSecurityConfig = ({ did, url, force = false, getDataFn } = {}) => {
142
130
  if (!did || url === undefined) {
143
131
  return null;
144
132
  }
145
- const cacheKey = cache.keyFns.securityConfig(did, url);
146
- if (!force) {
147
- const exist = securityConfigCache.get(cacheKey);
148
- if (exist) {
149
- return exist;
150
- }
151
- }
152
-
153
- const result = await getDataFn();
154
- if (result) {
155
- securityConfigCache.set(cacheKey, result);
156
- }
157
- return result;
133
+ return cacheSecurityConfig.autoCacheGroup(force ? null : did, url, () => {
134
+ return getDataFn();
135
+ });
158
136
  };
137
+
159
138
  cache.removeSecurityConfig = ({ did } = {}) => {
160
139
  if (!did) {
161
140
  return;
162
141
  }
163
- const prefix = cache.keyFns.securityConfig(did);
164
- securityConfigCache.forEach((value, key) => {
165
- if (key.startsWith(prefix)) {
166
- securityConfigCache.delete(key);
167
- }
168
- });
142
+ cacheSecurityConfig.del(did);
143
+ cacheBlocklet.del(did);
144
+ cacheBlockletInfo.del(did);
169
145
  };
170
146
 
171
- cache.keyFns = keyFns;
147
+ cache.rule = cacheRule;
148
+
149
+ cache.blocklet = cacheBlocklet;
150
+
151
+ cache.notificationConfig = cacheNotificationConfig;
152
+
153
+ cache.sessionCacheDisabledUser = cacheSessionDisabledUser;
154
+
155
+ cache.blockletInfo = cacheBlockletInfo;
172
156
 
173
157
  module.exports = cache;
package/api/index.js CHANGED
@@ -219,21 +219,18 @@ module.exports = function createServer(node, serverOptions = {}) {
219
219
  BlockletEvents.installed,
220
220
  BlockletEvents.componentRemoved,
221
221
  ].forEach((name) => {
222
- eventHub.on(name, (data) => {
222
+ eventHub.on(name, async (data) => {
223
223
  const did = get(data, 'meta.did');
224
224
  if (did) {
225
225
  logger.info('delete blocklet cache on update', { did, pid: process.pid });
226
- cache.delete(cache.keyFns.blocklet(did));
227
- cache.delete(cache.keyFns.blockletInfo(did));
228
- cache.delete(cache.keyFns.notificationConfig(did));
226
+ await Promise.all([cache.blocklet.del(did), cache.blockletInfo.del(did), cache.notificationConfig.del(did)]);
229
227
  }
230
228
 
231
229
  // structV1Did is just for migration purpose and should be removed in the future
232
230
  const structV1Did = get(data, 'structV1Did');
233
231
  if (structV1Did) {
234
232
  logger.info('delete blocklet cache on update', { structV1Did, pid: process.pid });
235
- cache.delete(cache.keyFns.blocklet(structV1Did));
236
- cache.delete(cache.keyFns.blockletInfo(structV1Did));
233
+ await Promise.all([cache.blocklet.del(structV1Did), cache.blockletInfo.del(structV1Did)]);
237
234
  }
238
235
  });
239
236
  });
@@ -274,11 +271,11 @@ module.exports = function createServer(node, serverOptions = {}) {
274
271
  });
275
272
  eventHub.on(EVENTS.NODE_UPDATED, () => {
276
273
  logger.info('node update', { pid: process.pid });
277
- cache.delete(cache.keyFns.node());
274
+ cache.deleteNodeInfo();
278
275
  });
279
- eventHub.on(TeamEvents.userPermissionUpdated, ({ teamDid, user } = {}) => {
276
+ eventHub.on(TeamEvents.userPermissionUpdated, async ({ teamDid, user } = {}) => {
280
277
  logger.info('user permission updated', { teamDid, userDid: user?.did });
281
- cache.sessionCacheDisabledUser.set(user?.did);
278
+ await cache.sessionCacheDisabledUser.set(user?.did);
282
279
  });
283
280
 
284
281
  // Events to broadcast to all components
package/api/libs/email.js CHANGED
@@ -179,7 +179,7 @@ async function sendEmail(
179
179
  response: 'Test environment - Email skipped',
180
180
  };
181
181
  }
182
- const transporter = cache.getTransport({ did: teamDid, config });
182
+ const transporter = await cache.getTransport({ did: teamDid, config });
183
183
  const result = await transporter.sendMail(emailData);
184
184
  return result;
185
185
  }
package/api/libs/jwt.js CHANGED
@@ -113,7 +113,7 @@ const initJwt = (node, options) => {
113
113
 
114
114
  let isCheck = checkFromDb;
115
115
  if (typeof checkFromDb === 'function') {
116
- isCheck = checkFromDb(decoded);
116
+ isCheck = await checkFromDb(decoded);
117
117
  }
118
118
 
119
119
  if (isCheck) {
@@ -1,15 +1,16 @@
1
1
  const dns = require('dns');
2
- const { LRUCache } = require('lru-cache');
2
+ const { DBCache, getAbtNodeRedisAndSQLiteUrl } = require('@abtnode/db-cache');
3
3
  const { WELLKNOWN_SERVICE_PATH_PREFIX } = require('@abtnode/constant');
4
4
 
5
5
  module.exports = {
6
6
  init(app) {
7
- const cache = new LRUCache({
8
- max: 50, // cache at most 50
9
- ttl: 5 * 60 * 1000, // cache for 5 minute
10
- });
7
+ const cache = new DBCache(() => ({
8
+ ...getAbtNodeRedisAndSQLiteUrl(),
9
+ prefix: 'services-dns-resolver',
10
+ ttl: 5 * 60 * 1000,
11
+ }));
11
12
 
12
- app.get(`${WELLKNOWN_SERVICE_PATH_PREFIX}/api/dns-resolve/`, (req, res) => {
13
+ app.get(`${WELLKNOWN_SERVICE_PATH_PREFIX}/api/dns-resolve/`, async (req, res) => {
13
14
  const { hostname } = req.query;
14
15
 
15
16
  if (!hostname) {
@@ -17,21 +18,21 @@ module.exports = {
17
18
  return;
18
19
  }
19
20
 
20
- const cachedAddress = cache.get(hostname);
21
+ const cachedAddress = await cache.get(hostname);
21
22
 
22
23
  if (cachedAddress) {
23
24
  res.json({ address: cachedAddress });
24
25
  return;
25
26
  }
26
27
 
27
- dns.lookup(hostname, (err, address) => {
28
+ dns.lookup(hostname, async (err, address) => {
28
29
  if (err) {
29
- cache.delete(hostname);
30
+ await cache.del(hostname);
30
31
  res.json({ address: null, error: err.message });
31
32
  return;
32
33
  }
33
34
 
34
- cache.set(hostname, address);
35
+ await cache.set(hostname, address);
35
36
  res.json({ address });
36
37
  });
37
38
  });
@@ -20,7 +20,7 @@ const { signResponse } = require('@blocklet/meta/lib/security');
20
20
  const getRequestIP = require('@abtnode/util/lib/get-request-ip');
21
21
  const { getDeviceData } = require('@abtnode/util/lib/device');
22
22
  const isUrl = require('is-url');
23
- const SingleFlightLRUCache = require('@abtnode/util/lib/single-flight-lru-cache');
23
+ const { DBCache, getAbtNodeRedisAndSQLiteUrl } = require('@abtnode/db-cache');
24
24
  const createTranslator = require('@abtnode/util/lib/translate');
25
25
  const getOrigin = require('@abtnode/util/lib/get-origin');
26
26
 
@@ -48,7 +48,11 @@ const translations = {
48
48
 
49
49
  const t = createTranslator({ translations });
50
50
 
51
- const signSessionResponseCache = new SingleFlightLRUCache({ max: 10000, ttl: 1000 * 60 });
51
+ const signSessionResponseCache = new DBCache(() => ({
52
+ ...getAbtNodeRedisAndSQLiteUrl(),
53
+ prefix: 'services-sign-session-response',
54
+ ttl: 1000 * 60,
55
+ }));
52
56
 
53
57
  const getUnreadNotificationCount = ({ teamDid, receiver }, node) => {
54
58
  if (!node || !receiver || !teamDid) {
@@ -83,11 +83,11 @@ module.exports = ({ node, req, options }) => {
83
83
  return null;
84
84
  }
85
85
 
86
- let rule = cache.get(ruleId);
86
+ let rule = await cache.rule.get(ruleId);
87
87
 
88
88
  if (!rule) {
89
89
  rule = await node.getRoutingRuleById(ruleId);
90
- cache.set(ruleId, rule);
90
+ cache.rule.set(ruleId, rule);
91
91
  }
92
92
 
93
93
  return rule;
@@ -97,7 +97,7 @@ module.exports = ({ node, req, options }) => {
97
97
  * @return obj | null
98
98
  * @FIXME this api should ensure high performance
99
99
  */
100
- req.getServiceConfig = async (serviceName, { componentId } = {}) => {
100
+ req.getServiceConfig = (serviceName, { componentId } = {}) => {
101
101
  if (!serviceName) {
102
102
  return null;
103
103
  }
@@ -107,29 +107,23 @@ module.exports = ({ node, req, options }) => {
107
107
  return null;
108
108
  }
109
109
 
110
- const cacheKey = cache.keyFns.serviceConfig(configId, serviceName);
110
+ return cache.autoCache(`${serviceName}:${configId}`, async () => {
111
+ const defaultConfig = getDefaultServiceConfig(serviceName);
111
112
 
112
- // Return cached config if exists
113
- const cached = cache.get(cacheKey);
114
- if (cached) {
115
- return cached;
116
- }
117
-
118
- const defaultConfig = getDefaultServiceConfig(serviceName);
119
-
120
- const app = await req.getBlocklet();
121
- if (!app) {
122
- return defaultConfig;
123
- }
113
+ const app = await req.getBlocklet();
114
+ if (!app) {
115
+ return defaultConfig;
116
+ }
124
117
 
125
- const _componentId = componentId || req.getBlockletComponentId();
118
+ const _componentId = componentId || req.getBlockletComponentId();
126
119
 
127
- const componentStaticConfig = getStaticServiceConfig(serviceName, app, _componentId);
120
+ const componentStaticConfig = getStaticServiceConfig(serviceName, app, _componentId);
128
121
 
129
- const config = { ...defaultConfig, ...componentStaticConfig };
130
- delete config.whoCanAccess;
122
+ const config = { ...defaultConfig, ...componentStaticConfig };
123
+ delete config.whoCanAccess;
131
124
 
132
- return config;
125
+ return config;
126
+ });
133
127
  };
134
128
 
135
129
  req.getBlocklet = ({ useCache = true, attachRuntimeInfo = false } = {}) => {
@@ -1,3 +1,3 @@
1
- import{_ as dt}from"./vendor-mui-core-wlbruq2I.js";import{a as f}from"./vendor-utils-CxrPpJZS.js";import{e as Q,g as R}from"./vendor-react-DEoibe3W.js";import{aF as ft}from"./vendor-ux-did-connect-Bh011lgb.js";import{b as ct}from"./vendor-mui-x-BKgL6hAa.js";var tt={exports:{}};(function(T,L){(function(l,c){T.exports=c()})(Q,function(){var l="week",c="year";return function(g,t,e){var s=t.prototype;s.week=function(i){if(i===void 0&&(i=null),i!==null)return this.add(7*(i-this.week()),"day");var o=this.$locale().yearStart||1;if(this.month()===11&&this.date()>25){var n=e(this).startOf(c).add(1,c).date(o),d=e(this).endOf(l);if(n.isBefore(d))return 1}var m=e(this).startOf(c).date(o).startOf(l).subtract(1,"millisecond"),U=this.diff(m,l,!0);return U<0?e(this).startOf("week").week():Math.ceil(U)},s.weeks=function(i){return i===void 0&&(i=null),this.week(i)}}})})(tt);var lt=tt.exports;const mt=R(lt);var et={exports:{}};(function(T,L){(function(l,c){T.exports=c()})(Q,function(){var l={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},c=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,g=/\d/,t=/\d\d/,e=/\d\d?/,s=/\d*[^-_:/,()\s\d]+/,i={},o=function(r){return(r=+r)+(r>68?1900:2e3)},n=function(r){return function(a){this[r]=+a}},d=[/[+-]\d\d:?(\d\d)?|Z/,function(r){(this.zone||(this.zone={})).offset=function(a){if(!a||a==="Z")return 0;var h=a.match(/([+-]|\d\d)/g),u=60*h[1]+(+h[2]||0);return u===0?0:h[0]==="+"?-u:u}(r)}],m=function(r){var a=i[r];return a&&(a.indexOf?a:a.s.concat(a.f))},U=function(r,a){var h,u=i.meridiem;if(u){for(var D=1;D<=24;D+=1)if(r.indexOf(u(D,0,a))>-1){h=D>12;break}}else h=r===(a?"pm":"PM");return h},rt={A:[s,function(r){this.afternoon=U(r,!1)}],a:[s,function(r){this.afternoon=U(r,!0)}],Q:[g,function(r){this.month=3*(r-1)+1}],S:[g,function(r){this.milliseconds=100*+r}],SS:[t,function(r){this.milliseconds=10*+r}],SSS:[/\d{3}/,function(r){this.milliseconds=+r}],s:[e,n("seconds")],ss:[e,n("seconds")],m:[e,n("minutes")],mm:[e,n("minutes")],H:[e,n("hours")],h:[e,n("hours")],HH:[e,n("hours")],hh:[e,n("hours")],D:[e,n("day")],DD:[t,n("day")],Do:[s,function(r){var a=i.ordinal,h=r.match(/\d+/);if(this.day=h[0],a)for(var u=1;u<=31;u+=1)a(u).replace(/\[|\]/g,"")===r&&(this.day=u)}],w:[e,n("week")],ww:[t,n("week")],M:[e,n("month")],MM:[t,n("month")],MMM:[s,function(r){var a=m("months"),h=(m("monthsShort")||a.map(function(u){return u.slice(0,3)})).indexOf(r)+1;if(h<1)throw new Error;this.month=h%12||h}],MMMM:[s,function(r){var a=m("months").indexOf(r)+1;if(a<1)throw new Error;this.month=a%12||a}],Y:[/[+-]?\d+/,n("year")],YY:[t,function(r){this.year=o(r)}],YYYY:[/\d{4}/,n("year")],Z:d,ZZ:d};function nt(r){var a,h;a=r,h=i&&i.formats;for(var u=(r=a.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(b,k,p){var M=p&&p.toUpperCase();return k||h[p]||l[p]||h[M].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(x,j,z){return j||z.slice(1)})})).match(c),D=u.length,w=0;w<D;w+=1){var P=u[w],S=rt[P],Y=S&&S[0],O=S&&S[1];u[w]=O?{regex:Y,parser:O}:P.replace(/^\[|\]$/g,"")}return function(b){for(var k={},p=0,M=0;p<D;p+=1){var x=u[p];if(typeof x=="string")M+=x.length;else{var j=x.regex,z=x.parser,H=b.slice(M),A=j.exec(H)[0];z.call(k,A),b=b.replace(A,"")}}return function(C){var I=C.afternoon;if(I!==void 0){var y=C.hours;I?y<12&&(C.hours+=12):y===12&&(C.hours=0),delete C.afternoon}}(k),k}}return function(r,a,h){h.p.customParseFormat=!0,r&&r.parseTwoDigitYear&&(o=r.parseTwoDigitYear);var u=a.prototype,D=u.parse;u.parse=function(w){var P=w.date,S=w.utc,Y=w.args;this.$u=S;var O=Y[1];if(typeof O=="string"){var b=Y[2]===!0,k=Y[3]===!0,p=b||k,M=Y[2];k&&(M=Y[2]),i=this.$locale(),!b&&M&&(i=h.Ls[M]),this.$d=function(H,A,C,I){try{if(["x","X"].indexOf(A)>-1)return new Date((A==="X"?1e3:1)*H);var y=nt(A)(H),W=y.year,F=y.month,it=y.day,at=y.hours,ot=y.minutes,ht=y.seconds,ut=y.milliseconds,X=y.zone,q=y.week,$=new Date,N=it||(W||F?1:$.getDate()),Z=W||$.getFullYear(),B=0;W&&!F||(B=F>0?F-1:$.getMonth());var E,v=at||0,V=ot||0,J=ht||0,_=ut||0;return X?new Date(Date.UTC(Z,B,N,v,V,J,_+60*X.offset*1e3)):C?new Date(Date.UTC(Z,B,N,v,V,J,_)):(E=new Date(Z,B,N,v,V,J,_),q&&(E=I(E).week(q).toDate()),E)}catch{return new Date("")}}(P,O,S,h),this.init(),M&&M!==!0&&(this.$L=this.locale(M).$L),p&&P!=this.format(O)&&(this.$d=new Date("")),i={}}else if(O instanceof Array)for(var x=O.length,j=1;j<=x;j+=1){Y[1]=O[j-1];var z=h.apply(this,Y);if(z.isValid()){this.$d=z.$d,this.$L=z.$L,this.init();break}j===x&&(this.$d=new Date(""))}else D.call(this,w)}}})})(et);var yt=et.exports;const Mt=R(yt);var st={exports:{}};(function(T,L){(function(l,c){T.exports=c()})(Q,function(){return function(l,c,g){c.prototype.isBetween=function(t,e,s,i){var o=g(t),n=g(e),d=(i=i||"()")[0]==="(",m=i[1]===")";return(d?this.isAfter(o,s):!this.isBefore(o,s))&&(m?this.isBefore(n,s):!this.isAfter(n,s))||(d?this.isBefore(o,s):!this.isAfter(o,s))&&(m?this.isAfter(n,s):!this.isBefore(n,s))}}})})(st);var pt=st.exports;const Tt=R(pt);f.extend(Mt);f.extend(ft);f.extend(Tt);const gt=ct(["Your locale has not been found.","Either the locale key is not a supported one. Locales supported by dayjs are available here: https://github.com/iamkun/dayjs/tree/dev/src/locale","Or you forget to import the locale from 'dayjs/locale/{localeUsed}'","fallback on English locale"]),Dt={YY:"year",YYYY:{sectionType:"year",contentType:"digit",maxLength:4},M:{sectionType:"month",contentType:"digit",maxLength:2},MM:"month",MMM:{sectionType:"month",contentType:"letter"},MMMM:{sectionType:"month",contentType:"letter"},D:{sectionType:"day",contentType:"digit",maxLength:2},DD:"day",Do:{sectionType:"day",contentType:"digit-with-letter"},d:{sectionType:"weekDay",contentType:"digit",maxLength:2},dd:{sectionType:"weekDay",contentType:"letter"},ddd:{sectionType:"weekDay",contentType:"letter"},dddd:{sectionType:"weekDay",contentType:"letter"},A:"meridiem",a:"meridiem",H:{sectionType:"hours",contentType:"digit",maxLength:2},HH:"hours",h:{sectionType:"hours",contentType:"digit",maxLength:2},hh:"hours",m:{sectionType:"minutes",contentType:"digit",maxLength:2},mm:"minutes",s:{sectionType:"seconds",contentType:"digit",maxLength:2},ss:"seconds"},wt={year:"YYYY",month:"MMMM",monthShort:"MMM",dayOfMonth:"D",weekday:"dddd",weekdayShort:"dd",hours24h:"HH",hours12h:"hh",meridiem:"A",minutes:"mm",seconds:"ss",fullDate:"ll",fullDateWithWeekday:"dddd, LL",keyboardDate:"L",shortDate:"MMM D",normalDate:"D MMMM",normalDateWithWeekday:"ddd, MMM D",monthAndYear:"MMMM YYYY",monthAndDate:"MMMM D",fullTime:"LT",fullTime12h:"hh:mm A",fullTime24h:"HH:mm",fullDateTime:"lll",fullDateTime12h:"ll hh:mm A",fullDateTime24h:"ll HH:mm",keyboardDateTime:"L LT",keyboardDateTime12h:"L hh:mm A",keyboardDateTime24h:"L HH:mm"},G=["Missing UTC plugin","To be able to use UTC or timezones, you have to enable the `utc` plugin","Find more information on https://mui.com/x/react-date-pickers/timezone/#day-js-and-utc"].join(`
1
+ import{_ as dt}from"./vendor-mui-core-wlbruq2I.js";import{a as f}from"./vendor-utils-B3iZkn2R.js";import{e as Q,g as R}from"./vendor-react-DEoibe3W.js";import{aF as ft}from"./vendor-ux-did-connect-CX7qG3_M.js";import{b as ct}from"./vendor-mui-x-BKgL6hAa.js";var tt={exports:{}};(function(T,L){(function(l,c){T.exports=c()})(Q,function(){var l="week",c="year";return function(g,t,e){var s=t.prototype;s.week=function(i){if(i===void 0&&(i=null),i!==null)return this.add(7*(i-this.week()),"day");var o=this.$locale().yearStart||1;if(this.month()===11&&this.date()>25){var n=e(this).startOf(c).add(1,c).date(o),d=e(this).endOf(l);if(n.isBefore(d))return 1}var m=e(this).startOf(c).date(o).startOf(l).subtract(1,"millisecond"),U=this.diff(m,l,!0);return U<0?e(this).startOf("week").week():Math.ceil(U)},s.weeks=function(i){return i===void 0&&(i=null),this.week(i)}}})})(tt);var lt=tt.exports;const mt=R(lt);var et={exports:{}};(function(T,L){(function(l,c){T.exports=c()})(Q,function(){var l={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},c=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,g=/\d/,t=/\d\d/,e=/\d\d?/,s=/\d*[^-_:/,()\s\d]+/,i={},o=function(r){return(r=+r)+(r>68?1900:2e3)},n=function(r){return function(a){this[r]=+a}},d=[/[+-]\d\d:?(\d\d)?|Z/,function(r){(this.zone||(this.zone={})).offset=function(a){if(!a||a==="Z")return 0;var h=a.match(/([+-]|\d\d)/g),u=60*h[1]+(+h[2]||0);return u===0?0:h[0]==="+"?-u:u}(r)}],m=function(r){var a=i[r];return a&&(a.indexOf?a:a.s.concat(a.f))},U=function(r,a){var h,u=i.meridiem;if(u){for(var D=1;D<=24;D+=1)if(r.indexOf(u(D,0,a))>-1){h=D>12;break}}else h=r===(a?"pm":"PM");return h},rt={A:[s,function(r){this.afternoon=U(r,!1)}],a:[s,function(r){this.afternoon=U(r,!0)}],Q:[g,function(r){this.month=3*(r-1)+1}],S:[g,function(r){this.milliseconds=100*+r}],SS:[t,function(r){this.milliseconds=10*+r}],SSS:[/\d{3}/,function(r){this.milliseconds=+r}],s:[e,n("seconds")],ss:[e,n("seconds")],m:[e,n("minutes")],mm:[e,n("minutes")],H:[e,n("hours")],h:[e,n("hours")],HH:[e,n("hours")],hh:[e,n("hours")],D:[e,n("day")],DD:[t,n("day")],Do:[s,function(r){var a=i.ordinal,h=r.match(/\d+/);if(this.day=h[0],a)for(var u=1;u<=31;u+=1)a(u).replace(/\[|\]/g,"")===r&&(this.day=u)}],w:[e,n("week")],ww:[t,n("week")],M:[e,n("month")],MM:[t,n("month")],MMM:[s,function(r){var a=m("months"),h=(m("monthsShort")||a.map(function(u){return u.slice(0,3)})).indexOf(r)+1;if(h<1)throw new Error;this.month=h%12||h}],MMMM:[s,function(r){var a=m("months").indexOf(r)+1;if(a<1)throw new Error;this.month=a%12||a}],Y:[/[+-]?\d+/,n("year")],YY:[t,function(r){this.year=o(r)}],YYYY:[/\d{4}/,n("year")],Z:d,ZZ:d};function nt(r){var a,h;a=r,h=i&&i.formats;for(var u=(r=a.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(b,k,p){var M=p&&p.toUpperCase();return k||h[p]||l[p]||h[M].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(x,j,z){return j||z.slice(1)})})).match(c),D=u.length,w=0;w<D;w+=1){var P=u[w],S=rt[P],Y=S&&S[0],O=S&&S[1];u[w]=O?{regex:Y,parser:O}:P.replace(/^\[|\]$/g,"")}return function(b){for(var k={},p=0,M=0;p<D;p+=1){var x=u[p];if(typeof x=="string")M+=x.length;else{var j=x.regex,z=x.parser,H=b.slice(M),A=j.exec(H)[0];z.call(k,A),b=b.replace(A,"")}}return function(C){var I=C.afternoon;if(I!==void 0){var y=C.hours;I?y<12&&(C.hours+=12):y===12&&(C.hours=0),delete C.afternoon}}(k),k}}return function(r,a,h){h.p.customParseFormat=!0,r&&r.parseTwoDigitYear&&(o=r.parseTwoDigitYear);var u=a.prototype,D=u.parse;u.parse=function(w){var P=w.date,S=w.utc,Y=w.args;this.$u=S;var O=Y[1];if(typeof O=="string"){var b=Y[2]===!0,k=Y[3]===!0,p=b||k,M=Y[2];k&&(M=Y[2]),i=this.$locale(),!b&&M&&(i=h.Ls[M]),this.$d=function(H,A,C,I){try{if(["x","X"].indexOf(A)>-1)return new Date((A==="X"?1e3:1)*H);var y=nt(A)(H),W=y.year,F=y.month,it=y.day,at=y.hours,ot=y.minutes,ht=y.seconds,ut=y.milliseconds,X=y.zone,q=y.week,$=new Date,N=it||(W||F?1:$.getDate()),Z=W||$.getFullYear(),B=0;W&&!F||(B=F>0?F-1:$.getMonth());var E,v=at||0,V=ot||0,J=ht||0,_=ut||0;return X?new Date(Date.UTC(Z,B,N,v,V,J,_+60*X.offset*1e3)):C?new Date(Date.UTC(Z,B,N,v,V,J,_)):(E=new Date(Z,B,N,v,V,J,_),q&&(E=I(E).week(q).toDate()),E)}catch{return new Date("")}}(P,O,S,h),this.init(),M&&M!==!0&&(this.$L=this.locale(M).$L),p&&P!=this.format(O)&&(this.$d=new Date("")),i={}}else if(O instanceof Array)for(var x=O.length,j=1;j<=x;j+=1){Y[1]=O[j-1];var z=h.apply(this,Y);if(z.isValid()){this.$d=z.$d,this.$L=z.$L,this.init();break}j===x&&(this.$d=new Date(""))}else D.call(this,w)}}})})(et);var yt=et.exports;const Mt=R(yt);var st={exports:{}};(function(T,L){(function(l,c){T.exports=c()})(Q,function(){return function(l,c,g){c.prototype.isBetween=function(t,e,s,i){var o=g(t),n=g(e),d=(i=i||"()")[0]==="(",m=i[1]===")";return(d?this.isAfter(o,s):!this.isBefore(o,s))&&(m?this.isBefore(n,s):!this.isAfter(n,s))||(d?this.isBefore(o,s):!this.isAfter(o,s))&&(m?this.isAfter(n,s):!this.isBefore(n,s))}}})})(st);var pt=st.exports;const Tt=R(pt);f.extend(Mt);f.extend(ft);f.extend(Tt);const gt=ct(["Your locale has not been found.","Either the locale key is not a supported one. Locales supported by dayjs are available here: https://github.com/iamkun/dayjs/tree/dev/src/locale","Or you forget to import the locale from 'dayjs/locale/{localeUsed}'","fallback on English locale"]),Dt={YY:"year",YYYY:{sectionType:"year",contentType:"digit",maxLength:4},M:{sectionType:"month",contentType:"digit",maxLength:2},MM:"month",MMM:{sectionType:"month",contentType:"letter"},MMMM:{sectionType:"month",contentType:"letter"},D:{sectionType:"day",contentType:"digit",maxLength:2},DD:"day",Do:{sectionType:"day",contentType:"digit-with-letter"},d:{sectionType:"weekDay",contentType:"digit",maxLength:2},dd:{sectionType:"weekDay",contentType:"letter"},ddd:{sectionType:"weekDay",contentType:"letter"},dddd:{sectionType:"weekDay",contentType:"letter"},A:"meridiem",a:"meridiem",H:{sectionType:"hours",contentType:"digit",maxLength:2},HH:"hours",h:{sectionType:"hours",contentType:"digit",maxLength:2},hh:"hours",m:{sectionType:"minutes",contentType:"digit",maxLength:2},mm:"minutes",s:{sectionType:"seconds",contentType:"digit",maxLength:2},ss:"seconds"},wt={year:"YYYY",month:"MMMM",monthShort:"MMM",dayOfMonth:"D",weekday:"dddd",weekdayShort:"dd",hours24h:"HH",hours12h:"hh",meridiem:"A",minutes:"mm",seconds:"ss",fullDate:"ll",fullDateWithWeekday:"dddd, LL",keyboardDate:"L",shortDate:"MMM D",normalDate:"D MMMM",normalDateWithWeekday:"ddd, MMM D",monthAndYear:"MMMM YYYY",monthAndDate:"MMMM D",fullTime:"LT",fullTime12h:"hh:mm A",fullTime24h:"HH:mm",fullDateTime:"lll",fullDateTime12h:"ll hh:mm A",fullDateTime24h:"ll HH:mm",keyboardDateTime:"L LT",keyboardDateTime12h:"L hh:mm A",keyboardDateTime24h:"L HH:mm"},G=["Missing UTC plugin","To be able to use UTC or timezones, you have to enable the `utc` plugin","Find more information on https://mui.com/x/react-date-pickers/timezone/#day-js-and-utc"].join(`
2
2
  `),K=["Missing timezone plugin","To be able to use timezones, you have to enable both the `utc` and the `timezone` plugin","Find more information on https://mui.com/x/react-date-pickers/timezone/#day-js-and-timezone"].join(`
3
3
  `),Yt=(T,L)=>L?(...l)=>T(...l).locale(L):T;class bt{constructor({locale:L,formats:l,instance:c}={}){var g;this.isMUIAdapter=!0,this.isTimezoneCompatible=!0,this.lib="dayjs",this.rawDayJsInstance=void 0,this.dayjs=void 0,this.locale=void 0,this.formats=void 0,this.escapedCharacters={start:"[",end:"]"},this.formatTokenMap=Dt,this.setLocaleToValue=t=>{const e=this.getCurrentLocaleCode();return e===t.locale()?t:t.locale(e)},this.hasUTCPlugin=()=>typeof f.utc<"u",this.hasTimezonePlugin=()=>typeof f.tz<"u",this.isSame=(t,e,s)=>{const i=this.setTimezone(e,this.getTimezone(t));return t.format(s)===i.format(s)},this.cleanTimezone=t=>{switch(t){case"default":return;case"system":return f.tz.guess();default:return t}},this.createSystemDate=t=>{if(this.rawDayJsInstance)return this.rawDayJsInstance(t);if(this.hasUTCPlugin()&&this.hasTimezonePlugin()){const e=f.tz.guess();return e!=="UTC"?f.tz(t,e):f(t)}return f(t)},this.createUTCDate=t=>{if(!this.hasUTCPlugin())throw new Error(G);return f.utc(t)},this.createTZDate=(t,e)=>{if(!this.hasUTCPlugin())throw new Error(G);if(!this.hasTimezonePlugin())throw new Error(K);const s=t!==void 0&&!t.endsWith("Z");return f(t).tz(this.cleanTimezone(e),s)},this.getLocaleFormats=()=>{const t=f.Ls,e=this.locale||"en";let s=t[e];return s===void 0&&(gt(),s=t.en),s.formats},this.adjustOffset=t=>{if(!this.hasTimezonePlugin())return t;const e=this.getTimezone(t);if(e!=="UTC"){var s,i;const o=t.tz(this.cleanTimezone(e),!0);if(((s=o.$offset)!=null?s:0)===((i=t.$offset)!=null?i:0))return t;t.$offset=o.$offset}return t},this.date=t=>t===null?null:this.dayjs(t),this.dateWithTimezone=(t,e)=>{if(t===null)return null;let s;return e==="UTC"?s=this.createUTCDate(t):e==="system"||e==="default"&&!this.hasTimezonePlugin()?s=this.createSystemDate(t):s=this.createTZDate(t,e),this.locale===void 0?s:s.locale(this.locale)},this.getTimezone=t=>{if(this.hasTimezonePlugin()){var e;const s=(e=t.$x)==null?void 0:e.$timezone;if(s)return s}return this.hasUTCPlugin()&&t.isUTC()?"UTC":"system"},this.setTimezone=(t,e)=>{if(this.getTimezone(t)===e)return t;if(e==="UTC"){if(!this.hasUTCPlugin())throw new Error(G);return t.utc()}if(e==="system")return t.local();if(!this.hasTimezonePlugin()){if(e==="default")return t;throw new Error(K)}return f.tz(t,this.cleanTimezone(e))},this.toJsDate=t=>t.toDate(),this.parseISO=t=>this.dayjs(t),this.toISO=t=>t.toISOString(),this.parse=(t,e)=>t===""?null:this.dayjs(t,e,this.locale,!0),this.getCurrentLocaleCode=()=>this.locale||"en",this.is12HourCycleInCurrentLocale=()=>/A|a/.test(this.getLocaleFormats().LT||""),this.expandFormat=t=>{const e=this.getLocaleFormats(),s=i=>i.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(o,n,d)=>n||d.slice(1));return t.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(i,o,n)=>{const d=n&&n.toUpperCase();return o||e[n]||s(e[d])})},this.getFormatHelperText=t=>this.expandFormat(t).replace(/a/gi,"(a|p)m").toLocaleLowerCase(),this.isNull=t=>t===null,this.isValid=t=>this.dayjs(t).isValid(),this.format=(t,e)=>this.formatByString(t,this.formats[e]),this.formatByString=(t,e)=>this.dayjs(t).format(e),this.formatNumber=t=>t,this.getDiff=(t,e,s)=>t.diff(e,s),this.isEqual=(t,e)=>t===null&&e===null?!0:this.dayjs(t).toDate().getTime()===this.dayjs(e).toDate().getTime(),this.isSameYear=(t,e)=>this.isSame(t,e,"YYYY"),this.isSameMonth=(t,e)=>this.isSame(t,e,"YYYY-MM"),this.isSameDay=(t,e)=>this.isSame(t,e,"YYYY-MM-DD"),this.isSameHour=(t,e)=>t.isSame(e,"hour"),this.isAfter=(t,e)=>t>e,this.isAfterYear=(t,e)=>this.hasUTCPlugin()?!this.isSameYear(t,e)&&t.utc()>e.utc():t.isAfter(e,"year"),this.isAfterDay=(t,e)=>this.hasUTCPlugin()?!this.isSameDay(t,e)&&t.utc()>e.utc():t.isAfter(e,"day"),this.isBefore=(t,e)=>t<e,this.isBeforeYear=(t,e)=>this.hasUTCPlugin()?!this.isSameYear(t,e)&&t.utc()<e.utc():t.isBefore(e,"year"),this.isBeforeDay=(t,e)=>this.hasUTCPlugin()?!this.isSameDay(t,e)&&t.utc()<e.utc():t.isBefore(e,"day"),this.isWithinRange=(t,[e,s])=>t>=e&&t<=s,this.startOfYear=t=>this.adjustOffset(t.startOf("year")),this.startOfMonth=t=>this.adjustOffset(t.startOf("month")),this.startOfWeek=t=>this.adjustOffset(t.startOf("week")),this.startOfDay=t=>this.adjustOffset(t.startOf("day")),this.endOfYear=t=>this.adjustOffset(t.endOf("year")),this.endOfMonth=t=>this.adjustOffset(t.endOf("month")),this.endOfWeek=t=>this.adjustOffset(t.endOf("week")),this.endOfDay=t=>this.adjustOffset(t.endOf("day")),this.addYears=(t,e)=>this.adjustOffset(e<0?t.subtract(Math.abs(e),"year"):t.add(e,"year")),this.addMonths=(t,e)=>this.adjustOffset(e<0?t.subtract(Math.abs(e),"month"):t.add(e,"month")),this.addWeeks=(t,e)=>this.adjustOffset(e<0?t.subtract(Math.abs(e),"week"):t.add(e,"week")),this.addDays=(t,e)=>this.adjustOffset(e<0?t.subtract(Math.abs(e),"day"):t.add(e,"day")),this.addHours=(t,e)=>this.adjustOffset(e<0?t.subtract(Math.abs(e),"hour"):t.add(e,"hour")),this.addMinutes=(t,e)=>this.adjustOffset(e<0?t.subtract(Math.abs(e),"minute"):t.add(e,"minute")),this.addSeconds=(t,e)=>this.adjustOffset(e<0?t.subtract(Math.abs(e),"second"):t.add(e,"second")),this.getYear=t=>t.year(),this.getMonth=t=>t.month(),this.getDate=t=>t.date(),this.getHours=t=>t.hour(),this.getMinutes=t=>t.minute(),this.getSeconds=t=>t.second(),this.getMilliseconds=t=>t.millisecond(),this.setYear=(t,e)=>this.adjustOffset(t.set("year",e)),this.setMonth=(t,e)=>this.adjustOffset(t.set("month",e)),this.setDate=(t,e)=>this.adjustOffset(t.set("date",e)),this.setHours=(t,e)=>this.adjustOffset(t.set("hour",e)),this.setMinutes=(t,e)=>this.adjustOffset(t.set("minute",e)),this.setSeconds=(t,e)=>this.adjustOffset(t.set("second",e)),this.setMilliseconds=(t,e)=>this.adjustOffset(t.set("millisecond",e)),this.getDaysInMonth=t=>t.daysInMonth(),this.getNextMonth=t=>this.addMonths(t,1),this.getPreviousMonth=t=>this.addMonths(t,-1),this.getMonthArray=t=>{const s=[t.startOf("year")];for(;s.length<12;){const i=s[s.length-1];s.push(this.addMonths(i,1))}return s},this.mergeDateAndTime=(t,e)=>t.hour(e.hour()).minute(e.minute()).second(e.second()),this.getWeekdays=()=>{const t=this.dayjs().startOf("week");return[0,1,2,3,4,5,6].map(e=>this.formatByString(this.addDays(t,e),"dd"))},this.getWeekArray=t=>{const e=this.setLocaleToValue(t),s=e.startOf("month").startOf("week"),i=e.endOf("month").endOf("week");let o=0,n=s;const d=[];for(;n<i;){const m=Math.floor(o/7);d[m]=d[m]||[],d[m].push(n),n=this.addDays(n,1),o+=1}return d},this.getWeekNumber=t=>t.week(),this.getYearRange=(t,e)=>{const s=t.startOf("year"),i=e.endOf("year"),o=[];let n=s;for(;n<i;)o.push(n),n=this.addYears(n,1);return o},this.getMeridiemText=t=>t==="am"?"AM":"PM",this.rawDayJsInstance=c,this.dayjs=Yt((g=this.rawDayJsInstance)!=null?g:f,L),this.locale=L,this.formats=dt({},wt,l),f.extend(mt)}}export{bt as A};
@@ -1 +1 @@
1
- import{a9 as e,j as t}from"./vendor-mui-core-wlbruq2I.js";import{r as a}from"./vendor-ux-did-connect-Bh011lgb.js";var r={},o=e;Object.defineProperty(r,"__esModule",{value:!0});var u=r.default=void 0,i=o(a()),p=t;u=r.default=(0,i.default)((0,p.jsx)("path",{d:"m7 10 5 5 5-5z"}),"ArrowDropDown");export{u as d};
1
+ import{a9 as e,j as t}from"./vendor-mui-core-wlbruq2I.js";import{r as a}from"./vendor-ux-did-connect-CX7qG3_M.js";var r={},o=e;Object.defineProperty(r,"__esModule",{value:!0});var u=r.default=void 0,i=o(a()),p=t;u=r.default=(0,i.default)((0,p.jsx)("path",{d:"m7 10 5 5 5-5z"}),"ArrowDropDown");export{u as d};
@@ -1 +1 @@
1
- import{a9 as r,j as t}from"./vendor-mui-core-wlbruq2I.js";import{r as a}from"./vendor-ux-did-connect-Bh011lgb.js";var e={},o=r;Object.defineProperty(e,"__esModule",{value:!0});var u=e.default=void 0,i=o(a()),l=t;u=e.default=(0,i.default)((0,l.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m-2 15-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8z"}),"CheckCircle");export{u as d};
1
+ import{a9 as r,j as t}from"./vendor-mui-core-wlbruq2I.js";import{r as a}from"./vendor-ux-did-connect-CX7qG3_M.js";var e={},o=r;Object.defineProperty(e,"__esModule",{value:!0});var u=e.default=void 0,i=o(a()),l=t;u=e.default=(0,i.default)((0,l.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m-2 15-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8z"}),"CheckCircle");export{u as d};
@@ -1 +1 @@
1
- import{a9 as r,j as t}from"./vendor-mui-core-wlbruq2I.js";import{r as a}from"./vendor-ux-did-connect-Bh011lgb.js";var e={},o=r;Object.defineProperty(e,"__esModule",{value:!0});var u=e.default=void 0,f=o(a()),i=t;u=e.default=(0,f.default)((0,i.jsx)("path",{d:"M15.41 7.41 14 6l-6 6 6 6 1.41-1.41L10.83 12z"}),"ChevronLeft");export{u as d};
1
+ import{a9 as r,j as t}from"./vendor-mui-core-wlbruq2I.js";import{r as a}from"./vendor-ux-did-connect-CX7qG3_M.js";var e={},o=r;Object.defineProperty(e,"__esModule",{value:!0});var u=e.default=void 0,f=o(a()),i=t;u=e.default=(0,f.default)((0,i.jsx)("path",{d:"M15.41 7.41 14 6l-6 6 6 6 1.41-1.41L10.83 12z"}),"ChevronLeft");export{u as d};
@@ -1 +1 @@
1
- import{a9 as r,j as t}from"./vendor-mui-core-wlbruq2I.js";import{r as a}from"./vendor-ux-did-connect-Bh011lgb.js";var e={},o=r;Object.defineProperty(e,"__esModule",{value:!0});var u=e.default=void 0,i=o(a()),v=t;u=e.default=(0,i.default)((0,v.jsx)("path",{d:"M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"}),"ChevronRight");export{u as d};
1
+ import{a9 as r,j as t}from"./vendor-mui-core-wlbruq2I.js";import{r as a}from"./vendor-ux-did-connect-CX7qG3_M.js";var e={},o=r;Object.defineProperty(e,"__esModule",{value:!0});var u=e.default=void 0,i=o(a()),v=t;u=e.default=(0,i.default)((0,v.jsx)("path",{d:"M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"}),"ChevronRight");export{u as d};
@@ -1 +1 @@
1
- import{a9 as t,j as r}from"./vendor-mui-core-wlbruq2I.js";import{r as a}from"./vendor-ux-did-connect-Bh011lgb.js";var e={},u=t;Object.defineProperty(e,"__esModule",{value:!0});var o=e.default=void 0,i=u(a()),l=r;o=e.default=(0,i.default)((0,l.jsx)("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6zM8 9h8v10H8zm7.5-5-1-1h-5l-1 1H5v2h14V4z"}),"DeleteOutline");export{o as d};
1
+ import{a9 as t,j as r}from"./vendor-mui-core-wlbruq2I.js";import{r as a}from"./vendor-ux-did-connect-CX7qG3_M.js";var e={},u=t;Object.defineProperty(e,"__esModule",{value:!0});var o=e.default=void 0,i=u(a()),l=r;o=e.default=(0,i.default)((0,l.jsx)("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6zM8 9h8v10H8zm7.5-5-1-1h-5l-1 1H5v2h14V4z"}),"DeleteOutline");export{o as d};
@@ -1 +1 @@
1
- import{a9 as r,j as t}from"./vendor-mui-core-wlbruq2I.js";import{r as a}from"./vendor-ux-did-connect-Bh011lgb.js";var e={},o=r;Object.defineProperty(e,"__esModule",{value:!0});var u=e.default=void 0,i=o(a()),l=t;u=e.default=(0,i.default)((0,l.jsx)("path",{d:"M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z"}),"Done");export{u as d};
1
+ import{a9 as r,j as t}from"./vendor-mui-core-wlbruq2I.js";import{r as a}from"./vendor-ux-did-connect-CX7qG3_M.js";var e={},o=r;Object.defineProperty(e,"__esModule",{value:!0});var u=e.default=void 0,i=o(a()),l=t;u=e.default=(0,i.default)((0,l.jsx)("path",{d:"M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z"}),"Done");export{u as d};
@@ -1 +1 @@
1
- import{a9 as r,j as a}from"./vendor-mui-core-wlbruq2I.js";import{r as t}from"./vendor-ux-did-connect-Bh011lgb.js";var e={},o=r;Object.defineProperty(e,"__esModule",{value:!0});var u=e.default=void 0,d=o(t()),i=a;u=e.default=(0,d.default)((0,i.jsx)("path",{d:"M5 20h14v-2H5zM19 9h-4V3H9v6H5l7 7z"}),"Download");export{u as d};
1
+ import{a9 as r,j as a}from"./vendor-mui-core-wlbruq2I.js";import{r as t}from"./vendor-ux-did-connect-CX7qG3_M.js";var e={},o=r;Object.defineProperty(e,"__esModule",{value:!0});var u=e.default=void 0,d=o(t()),i=a;u=e.default=(0,d.default)((0,i.jsx)("path",{d:"M5 20h14v-2H5zM19 9h-4V3H9v6H5l7 7z"}),"Download");export{u as d};
@@ -1 +1 @@
1
- import{a9 as r,j as t}from"./vendor-mui-core-wlbruq2I.js";import{r as a}from"./vendor-ux-did-connect-Bh011lgb.js";var e={},o=r;Object.defineProperty(e,"__esModule",{value:!0});var u=e.default=void 0,i=o(a()),d=t;u=e.default=(0,i.default)((0,d.jsx)("path",{d:"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.9959.9959 0 0 0-1.41 0l-1.83 1.83 3.75 3.75z"}),"Edit");export{u as d};
1
+ import{a9 as r,j as t}from"./vendor-mui-core-wlbruq2I.js";import{r as a}from"./vendor-ux-did-connect-CX7qG3_M.js";var e={},o=r;Object.defineProperty(e,"__esModule",{value:!0});var u=e.default=void 0,i=o(a()),d=t;u=e.default=(0,i.default)((0,d.jsx)("path",{d:"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.9959.9959 0 0 0-1.41 0l-1.83 1.83 3.75 3.75z"}),"Edit");export{u as d};
@@ -1 +1 @@
1
- import{a9 as e,j as t}from"./vendor-mui-core-wlbruq2I.js";import{r as a}from"./vendor-ux-did-connect-Bh011lgb.js";var r={},o=e;Object.defineProperty(r,"__esModule",{value:!0});var u=r.default=void 0,i=o(a()),s=t;u=r.default=(0,i.default)((0,s.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 15h-2v-2h2zm0-4h-2V7h2z"}),"Error");export{u as d};
1
+ import{a9 as e,j as t}from"./vendor-mui-core-wlbruq2I.js";import{r as a}from"./vendor-ux-did-connect-CX7qG3_M.js";var r={},o=e;Object.defineProperty(r,"__esModule",{value:!0});var u=r.default=void 0,i=o(a()),s=t;u=r.default=(0,i.default)((0,s.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 15h-2v-2h2zm0-4h-2V7h2z"}),"Error");export{u as d};
@@ -1 +1 @@
1
- import{a9 as r,j as a}from"./vendor-mui-core-wlbruq2I.js";import{r as t}from"./vendor-ux-did-connect-Bh011lgb.js";var e={},o=r;Object.defineProperty(e,"__esModule",{value:!0});var s=e.default=void 0,u=o(t()),d=a;s=e.default=(0,u.default)((0,d.jsx)("path",{d:"m12 8-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z"}),"ExpandLess");export{s as d};
1
+ import{a9 as r,j as a}from"./vendor-mui-core-wlbruq2I.js";import{r as t}from"./vendor-ux-did-connect-CX7qG3_M.js";var e={},o=r;Object.defineProperty(e,"__esModule",{value:!0});var s=e.default=void 0,u=o(t()),d=a;s=e.default=(0,u.default)((0,d.jsx)("path",{d:"m12 8-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z"}),"ExpandLess");export{s as d};