@abtnode/blocklet-services 1.8.26 → 1.8.27
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.
- package/api/index.js +5 -2
- package/api/middlewares/check-running.js +1 -1
- package/api/routes/blocklet.js +1 -1
- package/api/routes/env.js +1 -1
- package/api/services/auth/index.js +27 -7
- package/api/services/dashboard/index.js +153 -0
- package/api/services/static.js +8 -6
- package/api/util/index.js +6 -1
- package/build/asset-manifest.json +27 -17
- package/build/index.html +1 -1
- package/build/static/css/738.18a3eb84.chunk.css +2 -0
- package/build/static/css/738.18a3eb84.chunk.css.map +1 -0
- package/build/static/js/123.fd74ee54.chunk.js +2 -0
- package/build/static/js/123.fd74ee54.chunk.js.map +1 -0
- package/build/static/js/203.9033bd1d.chunk.js +2 -0
- package/build/static/js/203.9033bd1d.chunk.js.map +1 -0
- package/build/static/js/301.aff37b48.chunk.js +2 -0
- package/build/static/js/301.aff37b48.chunk.js.map +1 -0
- package/build/static/js/628.78b77407.chunk.js +2 -0
- package/build/static/js/628.78b77407.chunk.js.map +1 -0
- package/build/static/js/662.a7f2c44c.chunk.js +2 -0
- package/build/static/js/662.a7f2c44c.chunk.js.map +1 -0
- package/build/static/js/737.9a5b1e7b.chunk.js +2 -0
- package/build/static/js/737.9a5b1e7b.chunk.js.map +1 -0
- package/build/static/js/738.35e5be1f.chunk.js +3 -0
- package/build/static/js/738.35e5be1f.chunk.js.LICENSE.txt +68 -0
- package/build/static/js/738.35e5be1f.chunk.js.map +1 -0
- package/build/static/js/868.04c225a9.chunk.js +2 -0
- package/build/static/js/868.04c225a9.chunk.js.map +1 -0
- package/build/static/js/924.7980ec5c.chunk.js +2 -0
- package/build/static/js/924.7980ec5c.chunk.js.map +1 -0
- package/build/static/js/931.4448ec5d.chunk.js +3 -0
- package/build/static/js/931.4448ec5d.chunk.js.LICENSE.txt +10 -0
- package/build/static/js/931.4448ec5d.chunk.js.map +1 -0
- package/build/static/js/972.4befe3c8.chunk.js +2 -0
- package/build/static/js/972.4befe3c8.chunk.js.map +1 -0
- package/build/static/js/main.d9131f59.js +3 -0
- package/build/static/js/{main.55b7e605.js.LICENSE.txt → main.d9131f59.js.LICENSE.txt} +1 -1
- package/build/static/js/main.d9131f59.js.map +1 -0
- package/package.json +30 -26
- package/build/static/js/199.71b6a290.chunk.js +0 -2
- package/build/static/js/199.71b6a290.chunk.js.map +0 -1
- package/build/static/js/244.6bfddb66.chunk.js +0 -2
- package/build/static/js/244.6bfddb66.chunk.js.map +0 -1
- package/build/static/js/400.c6e11e32.chunk.js +0 -2
- package/build/static/js/400.c6e11e32.chunk.js.map +0 -1
- package/build/static/js/532.df6be59f.chunk.js +0 -2
- package/build/static/js/532.df6be59f.chunk.js.map +0 -1
- package/build/static/js/575.c326c064.chunk.js +0 -2
- package/build/static/js/575.c326c064.chunk.js.map +0 -1
- package/build/static/js/597.6e6ef8c5.chunk.js +0 -2
- package/build/static/js/597.6e6ef8c5.chunk.js.map +0 -1
- package/build/static/js/737.93eeec19.chunk.js +0 -2
- package/build/static/js/737.93eeec19.chunk.js.map +0 -1
- package/build/static/js/main.55b7e605.js +0 -3
- package/build/static/js/main.55b7e605.js.map +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_abtnode_blocklet_services=self.webpackChunk_abtnode_blocklet_services||[]).push([[301],{63301:function(e,n,t){t.r(n),t.d(n,{default:function(){return Xe}});var r,o=t(71171),i=t(33028),a=t(32723),s=t(34795),c=t(30969),l=t(13026),u=t(16380),d=t(19611),p=t.n(d),f=t(54470),h=t(58165),m=t(90445),x=t(71464),g=t(71901),v=t(42167),b=t(61802),j=t(56229),y=t(19006),k=t(47650),w=t(20244),Z=t(7017),C=t(38507),O=t(33814),P=t(4485),L=t(7284),S=t(54177),E=t(37574);function N(e){var n=e.onNext,t=(0,v.useLocaleContext)(),r=t.t,o=t.locale,i=(0,P.Tt)(),c=i.api,l=i.session,u=function(){var e=(0,s.Z)((0,a.Z)().mark((function e(t,r){return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return(0,C.ZB)(r(t.sessionToken)),e.prev=1,e.next=4,l.refresh();case 4:n(),e.next=10;break;case 7:e.prev=7,e.t0=e.catch(1),S.default.error(e.t0.message);case 10:case"end":return e.stop()}}),e,null,[[1,7]])})));return function(n,t){return e.apply(this,arguments)}}();return(0,E.jsx)(A,{popup:!0,open:!0,hideCloseButton:!0,action:"setup",checkFn:c.get,checkTimeout:6e5,socketUrl:c.socketUrl,webWalletUrl:(0,C.yP)(),onSuccess:u,locale:o,messages:{title:r("setup.connect.title"),scan:r("setup.connect.scan"),confirm:r("setup.connect.confirm"),success:r("setup.connect.success")},extraParams:{setup:!0}})}N.defaultProps={onNext:function(){}};var _,T,B,A=(0,u.default)(L.default)(r||(r=(0,o.Z)(["\n .action-info-desc {\n padding: 0 72px;\n }\n"]))),I=t(59740),W=t(68079),R=t(96234),D=t(88674),U=t.n(D),F=t(12700),K=t.n(F),z=t(43260),M=t.n(z),q=t(79476),H=t(65063),G=t(47768),Y=t(65724),V=t(98465),X=(0,u.default)(V.Z)(_||(_=(0,o.Z)(["\n display: flex;\n flex-direction: column;\n padding-bottom: 16px;\n "," {\n padding-top: 34px;\n padding-bottom: 34px;\n }\n .header {\n width: 100%;\n margin-bottom: 34px;\n "," {\n margin-bottom: 64px;\n }\n }\n .container-main {\n position: relative;\n flex: 1;\n width: 100%;\n }\n .container-inner {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n overflow-y: auto;\n }\n"])),(function(e){return e.theme.breakpoints.up("md")}),(function(e){return e.theme.breakpoints.up("md")})),$=t(88029);function J(e){var n=e.blocklet,t=e.onStartNow,r=e.children,o=e.disabled,i=(0,v.useLocaleContext)().t;return!n||(0,C.bg)(n.meta)?(0,E.jsx)(Q,{children:r}):(0,E.jsxs)(ee,{children:[(0,E.jsx)($.default,{className:"start-now",variant:"contained",color:"primary",disabled:o,onClick:function(){return t()},children:i("setup.startNow")}),(0,E.jsx)(h.Z,{display:"flex",alignItems:"center",children:r})]})}J.defaultProps={blocklet:null,onStartNow:function(){},children:null,disabled:!1};var Q=(0,u.default)(h.Z)(T||(T=(0,o.Z)(["\n padding-top: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n .bottom-button {\n min-width: 200px;\n }\n "," {\n .bottom-button {\n min-width: 150px;\n }\n }\n"])),(function(e){return e.theme.breakpoints.down("md")})),ee=(0,u.default)(h.Z)(B||(B=(0,o.Z)(["\n padding-bottom: 48px;\n padding-top: 24px;\n margin: 0 auto;\n width: 80%;\n display: flex;\n align-items: center;\n justify-content: space-around;\n .start-now {\n min-width: 140px;\n }\n .bottom-button {\n min-width: 120px;\n }\n "," {\n width: 100%;\n }\n\n "," {\n .start-now {\n min-width: 100px;\n }\n .bottom-button {\n min-width: 80px;\n }\n }\n"])),(function(e){return e.theme.breakpoints.down("lg")}),(function(e){return e.theme.breakpoints.down("md")}));function ne(e){var n=Object.assign({},e);return(0,E.jsx)($.default,(0,i.Z)({className:"bottom-button",variant:"contained",color:"primary"},n))}var te=["childDid"],re=["value"];function oe(e){var n=e.onNext,t=e.onPrevious,r=(0,g.Z)((function(e){return e.breakpoints.down("md")})),o=(0,v.useLocaleContext)().t,l=(0,c.useState)(!1),u=(0,R.Z)(l,2),d=u[0],p=u[1],f=(0,c.useState)(null),m=(0,R.Z)(f,2),x=m[0],b=m[1],j=(0,O.y0)(),y=j.blocklet,k=j.actions,w=(y.configs||[]).filter((function(e){return!Y.BLOCKLET_CONFIGURABLE_KEY[e.key]})),C=y.environments.find((function(e){return"BLOCKLET_PASSPORT_COLOR"===e.key})),P=[{key:Y.BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_NAME,description:o("blocklet.config.name"),value:y.environments.find((function(e){return"BLOCKLET_APP_NAME"===e.key})).value,custom:!0},{key:Y.BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_DESCRIPTION,description:o("blocklet.config.description"),value:y.environments.find((function(e){return"BLOCKLET_APP_DESCRIPTION"===e.key})).value,custom:!0},{key:Y.BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_PASSPORT_COLOR,description:o("blocklet.config.passportColor"),value:C?C.value:"auto",custom:!0,componentType:"passport",componentProps:{blocklet:y}}],L=[];(0,Z.forEachChildSync)(y,(function(e,n){var t=n.ancestors.slice(1).map((function(e){return e.meta.did}));L.push((e.configs||[]).map((function(n){return(0,i.Z)((0,i.Z)({},n),{},{childDid:t.concat(e.meta.did)})})))}));var N=K()(M()([].concat((0,W.Z)(w),L)),"key").filter((function(e){return!!e.key})).sort((function(e,n){return e.required&&!n.required?-1:n.required&&!e.required?1:0})),_=(0,Z.getAppMissingConfigs)(y).length,T=function(){var e=(0,s.Z)((0,a.Z)().mark((function e(n){var t,r,o;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=x.childDid,r=(0,I.Z)(x,te),o=[(0,i.Z)((0,i.Z)({},U()(r,["componentType","componentProps"])),{},{value:n})],e.prev=2,p(!0),e.next=6,k.configBlocklet({configs:o,childDid:t});case 6:e.next=11;break;case 8:e.prev=8,e.t0=e.catch(2),S.default.error(e.t0.message);case 11:return e.prev=11,p(!1),e.finish(11);case 14:case"end":return e.stop()}}),e,null,[[2,8,11,14]])})));return function(n){return e.apply(this,arguments)}}(),B={},A=[].concat(P,(0,W.Z)(N)).map((function(e){var n=e.value,t=(0,I.Z)(e,re);return B[e.key]=n,(0,i.Z)({},t)}));return(0,E.jsxs)(X,{children:[(0,E.jsx)("div",{className:"header",style:{marginBottom:16},children:(0,E.jsx)(G.Z,{title:o("setup.config.title"),subTitle:o("setup.config.subTitle"),onClickBack:function(){t()}})}),(0,E.jsx)("div",{className:"container-main",children:(0,E.jsx)("div",{className:"container-inner",children:(0,E.jsx)(H.Z,{bottom:(0,E.jsx)(J,{mt:8,disabled:d||x,blocklet:y,onStartNow:function(){return n("complete")},children:(0,E.jsx)(h.Z,{display:"flex",alignItems:"center",children:(0,E.jsx)(ne,{disabled:d||_||x,onClick:function(){k.refreshFuel({showError:!1}),n()},children:o("setup.next")})})}),children:(0,E.jsx)(q.default,{style:{margin:"0 auto 20px",paddingTop:r?0:38},loading:d,schema:A,defaultValue:B,onChange:function(e,n){var t=n.action,r=n.currentItem;"edit"===t?b(r):["cancel","confirm"].includes(t)&&b(null),"confirm"===t&&T(e[r.key])}})})})})]})}oe.defaultProps={onNext:function(){},onPrevious:function(){}};var ie,ae=t(35436),se=t(85710),ce=t(62068),le=t(99042),ue=t(48952),de=function(e){return["waiting","creating","renewaling"].includes(null===e||void 0===e?void 0:e.status)},pe=function(e){return new Promise((function(n,t){var r=setInterval((0,s.Z)((0,a.Z)().mark((function o(){var i,s;return(0,a.Z)().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return o.prev=0,o.next=3,ue.Z.findCertificateByDomain({input:{domain:e}});case 3:if(i=o.sent,"generated"!==(null===(s=i.cert)||void 0===s?void 0:s.status)){o.next=9;break}return clearInterval(r),n(!0),o.abrupt("return");case 9:de(s)||(clearInterval(r),n(!1)),o.next=16;break;case 12:o.prev=12,o.t0=o.catch(0),clearInterval(r),t(o.t0);case 16:case"end":return o.stop()}}),o,null,[[0,12]])}))),1e3)}))},fe=function(){var e=(0,s.Z)((0,a.Z)().mark((function e(n){return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,ue.Z.issueLetsEncryptCert({input:{domain:n}});case 2:return e.abrupt("return",pe(n));case 3:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}();function he(e){var n,t=e.onNext,r=e.onPrevious,o=(0,c.useContext)(v.LocaleContext),i=o.t,l=o.locale,u=(0,c.useState)(""),d=(0,R.Z)(u,2),p=d[0],f=d[1],m=(0,c.useState)(!1),x=(0,R.Z)(m,2),g=x[0],b=x[1],j=(0,O.y0)().blocklet,y=(0,c.useState)(""),k=(0,R.Z)(y,2),w=k[0],C=k[1],P=(0,c.useState)(!1),L=(0,R.Z)(P,2),N=L[0],_=L[1],T=((null===j||void 0===j?void 0:j.site)||{}).domainAliases||[],B=(null===(n=T.filter((function(e){return!e.isProtected}))[0])||void 0===n?void 0:n.value)||"",A=T.filter((function(e){return e.isProtected})).map((function(e){return(0,Z.replaceSlotToIp)(e.value,w)})),I=(0,c.useState)(B),W=(0,R.Z)(I,2),D=W[0],U=W[1],F=function(){var e=(0,s.Z)((0,a.Z)().mark((function e(n){return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return f(i("setup.domain.addingDomain")),e.next=3,(0,se.sleep)(1500);case 3:if(T.some((function(e){return e.value===D}))){e.next=8;break}return e.next=6,ue.Z.addDomainAlias({input:{id:j.site.id,domainAlias:D}});case 6:return e.next=8,ue.Z.takeRoutingSnapshot({input:{dryRun:!1,message:"add domain ".concat(D," from blocklet services")}});case 8:return e.next=10,ue.Z.configBlocklet({input:{did:[j.meta.did],configs:[{key:Y.BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_URL,value:"http".concat(n?"s":"","://").concat(D)}]}});case 10:t();case 11:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}(),K=function(){var e=(0,s.Z)((0,a.Z)().mark((function e(){var n,t,r,o,s;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!p){e.next=2;break}return e.abrupt("return");case 2:return e.prev=2,f(i("setup.domain.checkingResolvable")),e.next=6,(0,se.sleep)(1500);case 6:return e.next=8,le.Z.get("/dns-resolve?hostname=".concat(D));case 8:if(n=e.sent,t=n.data.address){e.next=12;break}throw new Error(i("setup.domain.cannotResolve",{domain:D}));case 12:if(t===w){e.next=14;break}throw new Error(i("setup.domain.resolvedAddressError",{domain:D,curDomain:window.location.hostname}));case 14:return f(i("setup.domain.addingCert")),r=!1,e.next=18,ue.Z.findCertificateByDomain({input:{domain:D}});case 18:if(o=e.sent,s=o.cert){e.next=26;break}return e.next=23,fe(D,l);case 23:r=e.sent,e.next=39;break;case 26:if("generated"!==s.status){e.next=30;break}r=!0,e.next=39;break;case 30:if(!["waiting","creating","renewaling"].includes(s.status)){e.next=36;break}return e.next=33,pe(D);case 33:r=e.sent,e.next=39;break;case 36:return e.next=38,fe(D,l);case 38:r=e.sent;case 39:r?F(r):_(!0),e.next=46;break;case 42:e.prev=42,e.t0=e.catch(2),S.default.error(e.t0.message),f("");case 46:case"end":return e.stop()}}),e,null,[[2,42]])})));return function(){return e.apply(this,arguments)}}();return(0,c.useEffect)((function(){le.Z.get("/dns-resolve?hostname=".concat(window.location.hostname)).then((function(e){var n=e.data;C(n.address||"")})).catch((function(e){console.error(e.message)}))}),[]),(0,E.jsxs)(me,{children:[(0,E.jsx)("div",{className:"header",children:(0,E.jsx)(G.Z,{title:i("setup.domain.title"),subTitle:i("setup.domain.subTitle"),onClickBack:r})}),N&&(0,E.jsx)(ce.default,{PaperProps:{style:{minHeight:"auto"}},open:N,showCloseButton:!1,title:i("setup.domain.genCertFailed"),actions:(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(ne,{color:"reverse",variant:"text",onClick:function(){f(""),_(!1)},children:i("setup.cancel")}),(0,E.jsx)(ne,{color:"primary",variant:"text",onClick:function(){_(!1),F(!1)},children:i("setup.confirm")})]}),children:i("setup.domain.certFailedDesc")}),(0,E.jsxs)(h.Z,{className:"form",children:[(0,E.jsxs)(h.Z,{children:[(0,E.jsxs)(h.Z,{mb:1,color:"text.primary",fontWeight:"fontWeightBold",children:[(0,E.jsx)(h.Z,{display:"inline",children:i("setup.domain.skipStart")}),(0,E.jsx)(ne,{variant:"text",size:"small",disabled:!!p,onClick:function(){return t()},style:{paddingTop:0},children:(0,E.jsx)("span",{style:{textDecoration:"underline"},children:i("setup.domain.skip")})}),(0,E.jsx)(h.Z,{display:"inline",children:i("setup.domain.skipEnd")})]}),A.map((function(e){return(0,E.jsx)(h.Z,{component:"li",fontWeight:"fontWeightBold",color:"primary.main",children:e})})),(0,E.jsx)(h.Z,{mt:1,fontWeight:"fontWeightBold",color:"text.secondary",children:i("setup.domain.certTip")}),(0,E.jsx)(h.Z,{})]}),(0,E.jsx)(h.Z,{mt:4,fontWeight:"fontWeightBold",children:i("setup.domain.subTitle")}),(0,E.jsx)(ae.Z,{style:{marginTop:16,minHeight:64},label:i("setup.domain.label"),fullWidth:!0,value:D,onChange:function(e){var n=e.target.value;U(n);var t=(0,se.validateDomain)(n,l);b(t)},autoFocus:!0,size:"small",variant:"outlined",error:!!g,helperText:g}),D&&(0,E.jsxs)(h.Z,{color:"text.secondary",children:[(0,E.jsxs)(h.Z,{display:"flex",children:[i("setup.domain.tipStart"),(0,E.jsx)(h.Z,{mx:.5,color:"primary.main",fontWeight:"fontWeightBold",children:D}),i("setup.domain.tipEnd")]}),(0,E.jsxs)(h.Z,{component:"li",children:[i("setup.domain.recordType"),":"," ",(0,E.jsx)(h.Z,{display:"inline",fontWeight:"fontWeightBold",color:"primary.main",children:"A"})]}),(0,E.jsxs)(h.Z,{component:"li",children:[i("setup.domain.recordValue"),":"," ",(0,E.jsx)(h.Z,{display:"inline",fontWeight:"fontWeightBold",color:"primary.main",children:w})]})]})]}),(0,E.jsx)(J,{mt:8,disabled:!!p,blocklet:j,onStartNow:function(){return t("complete")},children:D?(0,E.jsx)(ne,{loading:!!p,disabled:g||!!p||!D,onClick:function(){return K()},children:p||i("setup.next")}):(0,E.jsx)(ne,{variant:"outlined",disabled:!!p,onClick:function(){return t()},children:i("setup.skip")})})]})}he.defaultProps={onNext:function(){},onPrevious:function(){}};var me=(0,u.default)(X)(ie||(ie=(0,o.Z)(["\n height: 100%;\n overflow-y: auto;\n .form {\n width: 580px;\n word-break: break-all;\n "," {\n width: 80%;\n }\n }\n"])),(function(e){return e.theme.breakpoints.down("md")})),xe=t(52849),ge=t(72243),ve=t(78742),be=t(3562),je=t(21268),ye=t(94702),ke=t(15508),we=t(55829),Ze=t(21777),Ce=t(66581);function Oe(e){var n=e.children,t=(0,v.useLocaleContext)().t;return(0,E.jsxs)("div",{style:{display:"flex",alignItems:"center"},children:[n,(0,E.jsx)(Ze.Z,{title:t("blocklet.config.access.publicInstanceTip"),children:(0,E.jsx)(Ce.Z,{children:(0,E.jsx)(we.default,{fontSize:"small"})})})]})}var Pe,Le=(0,c.memo)(Oe);function Se(e){var n=e.onNext,t=(0,ye.default)(),r=(0,v.useLocaleContext)(),o=r.t,i=r.locale,l=(0,c.useState)(!1),u=(0,R.Z)(l,2),d=u[0],p=u[1],f=(0,c.useState)(""),m=(0,R.Z)(f,2),x=m[0],g=m[1],b=(0,c.useState)(!1),j=(0,R.Z)(b,2),y=j[0],k=j[1],C=(0,O.y0)(),P=C.blocklet,L=C.actions,N=C.getPublicInstance;(0,c.useEffect)((function(){g((0,Z.getWhoCanAccess)(P)),k(N(P))}),[P]);var _=function(){var e=(0,s.Z)((0,a.Z)().mark((function e(n){return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,p(!0),e.next=4,(0,se.sleep)(800);case 4:return e.next=6,L.configWhoCanAccess(n);case 6:p(!1),e.next=13;break;case 9:e.prev=9,e.t0=e.catch(0),p(!1),S.default.error(e.t0.message);case 13:case"end":return e.stop()}}),e,null,[[0,9]])})));return function(n){return e.apply(this,arguments)}}(),T=function(){var e=(0,s.Z)((0,a.Z)().mark((function e(n){return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!d){e.next=2;break}return e.abrupt("return");case 2:return g(n.target.value),e.next=5,_(n.target.value);case 5:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}(),B=function(){var e=(0,s.Z)((0,a.Z)().mark((function e(n){var t;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=n.target.checked,e.prev=1,p(!0),e.next=5,L.configPublicToStore(t);case 5:p(!1),e.next=12;break;case 8:e.prev=8,e.t0=e.catch(1),p(!1),S.default.error(e.t0.message);case 12:case"end":return e.stop()}}),e,null,[[1,8]])})));return function(n){return e.apply(this,arguments)}}(),A={marginRight:4,fontSize:18,verticalAlign:"text-bottom",color:t.palette.text.secondary};return(0,E.jsxs)(_e,{children:[(0,E.jsx)("div",{className:"header",children:(0,E.jsx)(G.Z,{title:o("blocklet.config.access.description")})}),(0,E.jsx)(be.Z,{component:"fieldset",children:(0,E.jsx)(ge.Z,{name:"inherit",value:x,onChange:T,children:ke.default.map((function(e){return(0,E.jsxs)("div",{style:{marginBottom:16},children:[(0,E.jsx)(ve.Z,{value:e.value,control:(0,E.jsx)(xe.Z,{color:"primary"}),label:(0,E.jsxs)("span",{children:[(0,E.jsx)(e.icon,{style:A}),e.title[i]]})}),(0,E.jsxs)(h.Z,{className:"tip",children:[e.description[i],e.value===w.WHO_CAN_ACCESS.ALL&&x===w.WHO_CAN_ACCESS.ALL&&"registry"===P.source&&(0,E.jsx)(Le,{children:(0,E.jsx)(ve.Z,{style:{marginRight:0},value:e.value,control:(0,E.jsx)(je.Z,{size:"small"}),label:(0,E.jsx)("span",{children:o("blocklet.config.access.publicToStore")}),onChange:B,checked:y,disabled:d})})]})]},e.value)}))})}),(0,E.jsx)(J,{mt:8,disabled:d,blocklet:P,onStartNow:function(){return n("complete")},children:(0,E.jsx)(h.Z,{display:"flex",alignItems:"center",children:(0,E.jsx)(ne,{loading:d,disabled:d,onClick:function(){return n()},children:o("setup.continue")})})})]})}Se.defaultProps={onNext:function(){}};var Ee,Ne,_e=(0,u.default)(X)(Pe||(Pe=(0,o.Z)(["\n height: 100%;\n overflow-y: auto;\n .header {\n width: 100%;\n }\n .tip {\n margin-left: 32px;\n font-size: 12px;\n margin-top: -8px;\n color: ",";\n }\n"])),(function(e){return e.theme.palette.text.secondary})),Te=u.default.span(Ee||(Ee=(0,o.Z)(["\n color: ",";\n &::before {\n content: '*';\n }\n"])),(function(e){return e.theme.palette.error.main})),Be=t(77491),Ae=t(11909),Ie=t(51193);function We(e){var n=e.onNext,t=e.onPrevious,r=(0,c.useContext)(v.LocaleContext),o=r.locale,a=r.t,s=(0,O.y0)(),l=s.blocklet,u=s.gas,d=s.tokenInfo,f=s.actions,m=(0,P.Tt)().api,x=(0,c.useState)(!1),g=(0,R.Z)(x,2),j=g[0],y=g[1],k=u||{},w=k.need,Z=void 0===w?"":w,C=k.current,S=void 0===C?"":C,N=k.owe,_=void 0===N?99999:N,T=k.deficiency,B=k.symbol,A=void 0===B?"":B,I=k.endpoint,W=(I?new URL(I):{}).origin,D=void 0===W?"/":W;(0,c.useEffect)((function(){var e=setInterval((function(){f.refreshFuel()}),2e3);return function(){clearInterval(e)}}),[]);return u?(0,E.jsxs)(Fe,{children:[(0,E.jsx)("div",{className:"header",children:(0,E.jsx)(G.Z,{title:a("setup.fuel.title"),onClickBack:t})}),(0,E.jsxs)(h.Z,{className:"qr-body",children:[(0,E.jsxs)(h.Z,{mb:6,className:"tip",children:[a("setup.fuel.tipStart").replace("slot",""),(0,E.jsx)("span",{className:"amount",children:"".concat(Z," ").concat(A)}),a("setup.fuel.tipEnd")]}),(0,E.jsx)(h.Z,{fontSize:16,fontWeight:"fontWeightBold",mb:.5,children:a("setup.fuel.addressTitle")}),(0,E.jsxs)(h.Z,{display:"flex",alignItems:"center",children:[(0,E.jsx)(Ie.default,{className:"address",children:l.appDid}),(0,E.jsx)(Be.Z,{style:{lineHeight:1},target:"_blank",href:p()(D,"/explorer/accounts/",l.appDid),underline:"hover",children:(0,E.jsx)(Ae.default,{className:"icon-launch"})})]}),(0,E.jsx)(h.Z,{my:2,children:(0,E.jsx)(ne,{color:"primary",onClick:function(){return y(!0)},disabled:!_,children:a("setup.fuel.fuelApp")})}),(0,E.jsx)(L.default,{popup:!0,open:j,action:"fuel",checkFn:m.get,checkTimeout:6e5,socketUrl:m.socketUrl,onSuccess:function(){y(!1)},onClose:function(){return y(!1)},locale:o,messages:{title:a("setup.connect.title"),scan:a("setup.connect.scan"),confirm:a("setup.connect.confirm"),success:a("setup.connect.success")},extraParams:(0,i.Z)((0,i.Z)({amount:T},d),{},{endpoint:I})}),(0,E.jsxs)(h.Z,{display:"flex",color:"text.secondary",children:[(0,E.jsxs)(h.Z,{display:"flex",children:[(0,E.jsxs)(h.Z,{children:[a("setup.fuel.need"),":"]}),(0,E.jsx)(h.Z,{ml:.5,color:"primary.main",fontWeight:"fontWeightBold",children:Z})]}),(0,E.jsxs)(h.Z,{display:"flex",ml:3,children:[(0,E.jsxs)(h.Z,{children:[a("setup.fuel.current"),":"]}),(0,E.jsx)(h.Z,{ml:.5,color:_>0?"error.main":"primary.main",fontWeight:"fontWeightBold",children:S})]})]})]}),(0,E.jsx)(J,{mt:8,children:(0,E.jsx)(ne,{disabled:_>0,onClick:function(){return n()},children:a("setup.next")})})]}):(0,E.jsx)(h.Z,{display:"flex",justifyContent:"center",alignItems:"center",width:"100%",children:(0,E.jsx)(b.default,{})})}We.defaultProps={onNext:function(){},onPrevious:function(){}};var Re,De,Ue,Fe=(0,u.default)(X)(Ne||(Ne=(0,o.Z)(["\n .qr-body {\n width: 580px;\n "," {\n width: 80%;\n }\n display: flex;\n flex-direction: column;\n align-items: center;\n\n .tip {\n font-size: 16px;\n font-weight: bold;\n }\n\n .address {\n width: 100%;\n text-align: center;\n }\n\n .amount {\n color: ",";\n }\n\n .icon-launch {\n font-size: 16px;\n margin-left: 6px;\n line-height: 1;\n color: ",";\n }\n }\n"])),(function(e){return e.theme.breakpoints.down("md")}),(function(e){return e.theme.palette.primary.main}),(function(e){return e.theme.palette.primary.main})),Ke=t(23426),ze=t(67615);function Me(e){var n=e.onPrevious,t=(0,v.useLocaleContext)().t,r=(0,c.useState)(!1),o=(0,R.Z)(r,2),i=o[0],l=o[1],u=(0,c.useState)("starting"),d=(0,R.Z)(u,2),p=d[0],f=d[1],m=(0,c.useState)(),x=(0,R.Z)(m,2),g=x[0],j=x[1],y=(0,O.y0)().blocklet,k=(0,c.useState)(""),w=(0,R.Z)(k,2),Z=w[0],P=w[1],L=new URL(window.location.href).searchParams.get("from_launcher"),N=!["starting","running"].includes(p),_="starting"===p,T={stopped:t("blocklet.start"),starting:t("blocklet.starting"),running:t("blocklet.open")},B=function(){var e=new URL(window.location.href).searchParams.get("redirect");window.location.href=e?new URL(e,Z).href:Z},A=function(){var e=(0,s.Z)((0,a.Z)().mark((function e(){var n,t;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return l(!0),f("starting"),e.prev=2,e.next=5,le.Z.post("/blocklet/start",{fromSetup:!0});case 5:l(!1),f("running"),e.next=16;break;case 9:e.prev=9,e.t0=e.catch(2),t=(null===e.t0||void 0===e.t0||null===(n=e.t0.response)||void 0===n?void 0:n.data)||e.t0.message,S.default.error(t),l(!1),f("stopped"),j(t);case 16:case"end":return e.stop()}}),e,null,[[2,9]])})));return function(){return e.apply(this,arguments)}}();(0,c.useEffect)((function(){f(y.status),["starting","running"].includes(y.status)||A()}),[]),(0,c.useEffect)((function(){var e=function(){var e=(0,s.Z)((0,a.Z)().mark((function e(){var n;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,ze.evaluateURLs)(y.site.domainAliases.map((function(e){return(0,se.getAccessUrl)(e.value,C.Bq)})));case 2:n=e.sent,P(n[0].url);case 4:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();Z||e()}),[y,Z]);var I=localStorage.getItem("blocklet-server-url"),W=t(g?"setup.complete.failedTitle":"setup.complete.title"),D=_||!Z;return L&&!D&&(N?A():B()),(0,E.jsx)(qe,{children:(0,E.jsx)(He,{variant:g?"error":"success",title:W,footer:(0,E.jsxs)(J,{children:[N&&(0,E.jsx)(ne,{variant:"outlined",disabled:i,onClick:function(){return n()},children:t("setup.previous")}),L?(0,E.jsxs)(Ve,{rel:"noreferrer",children:[(0,E.jsx)(b.default,{size:[16,10],style:{marginRight:14}})," ",t("common.redirecting")]}):(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(ne,{style:{marginLeft:N?24:0},disabled:i||_,onClick:function(){return N?A():B()},loading:D,children:T[p]||T.stopped}),("running"===p||g)&&!!I&&(0,E.jsx)(h.Z,{width:"100%",mt:2,children:(0,E.jsx)("a",{href:I,target:"_blank",rel:"noopener noreferrer",className:"back-to-server-link",children:t("setup.complete.backToServer")})})]})]})})})}var qe=(0,u.default)(X)(Re||(Re=(0,o.Z)(["\n justify-content: center;\n .icon-success {\n width: 64px;\n height: 64px;\n color: ",";\n }\n .back-to-server-link {\n color: ",";\n }\n"])),(function(e){return e.theme.palette.success.main}),(function(e){return e.theme.palette.primary.main})),He=(0,u.default)(Ke.Z)(De||(De=(0,o.Z)(["\n && .result-footer {\n height: 120px;\n > div {\n flex-wrap: wrap;\n }\n }\n"])));Me.defaultProps={onPrevious:function(){}};var Ge,Ye,Ve=u.default.a(Ue||(Ue=(0,o.Z)(["\n display: flex;\n justify-content: center;\n align-items: center;\n height: 36px;\n color: ",";\n"])),(function(e){return e.theme.palette.primary.main}));function Xe(){var e,n,t,r=(0,g.Z)((function(e){return e.breakpoints.down("md")})),o=(0,v.useLocaleContext)(),u=o.t,d=o.locale,x=(0,l.s0)(),L=(0,O.y0)(),S=L.meta,_=L.blocklet,T=L.actions,B=localStorage.getItem("blocklet-server-url"),A=new URL(window.location.href).searchParams.get("from_launcher");(0,c.useEffect)((function(){T.refreshMeta(),T.refreshBlocklet({showError:!1}),(0,C.NU)()}),[]),(0,c.useEffect)((function(){T.refreshFuel({showError:!1})}),[null===_||void 0===_||null===(e=_.meta)||void 0===e?void 0:e.did]);var I="".concat(w.WELLKNOWN_SERVICE_PATH_PREFIX,"/setup"),W=[{key:"connect",name:u("setup.steps.connect"),path:p()(I,"connect")},{key:"access",name:u("setup.steps.access"),path:p()(I,"access")},{key:"domain",name:u("setup.steps.domain"),path:p()(I,"domain")},{key:"config",name:(0,E.jsxs)(E.Fragment,{children:[u("setup.steps.config")," ",(0,C.o2)(S)&&(0,E.jsx)(Te,{})]}),path:p()(I,"config")},null!==S&&void 0!==S&&null!==(n=S.requirements)&&void 0!==n&&null!==(t=n.fuels)&&void 0!==t&&t.length?{key:"fuel",name:(0,E.jsxs)(E.Fragment,{children:[u("setup.steps.fuel")," ",(0,E.jsx)(Te,{})]}),path:p()(I,"fuel")}:null].filter(Boolean),R=W.findIndex((function(e){return"".concat(C.Bq.replace(/\/$/,"")).concat(I,"/").concat(e.key)===window.location.pathname})),D=p()(C.Bq,w.WELLKNOWN_SERVICE_PATH_PREFIX,"/blocklet/logo"),U=function(){var e=(0,s.Z)((0,a.Z)().mark((function e(n){var t,r,o;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=new URL(window.location.href),r=t.search,n?(o=W.findIndex((function(e){return e.key===n})),x(o>-1?"".concat(p()(I,W[o].key)).concat(r):"".concat(p()(I,"complete")).concat(r))):W[R+1]?x("".concat(p()(I,W[R+1].key)).concat(r)):x("".concat(p()(I,"complete")).concat(r)),e.next=4,T.refreshBlocklet();case 4:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}(),F=function(){x(-1)};function K(e,n){return _?(0,E.jsx)(e,(0,i.Z)((0,i.Z)({blocklet:_},n),{},{onNext:U,onPrevious:F})):(0,E.jsx)(h.Z,{width:"100%",height:"100%",display:"flex",justifyContent:"center",alignItems:"center",children:(0,E.jsx)(b.default,{})})}var z=function(){window.open(B)},M=r?(0,E.jsx)(y.Z,{onClick:z,width:"32",height:"32",style:{cursor:"pointer"}}):(0,E.jsx)(k.Z,{onClick:z,width:"128",height:"48",style:{marginTop:-1,cursor:"pointer"}}),q=[{key:"agreement",name:u("setup.steps.introduction")},{key:"select-node",name:u("setup.steps.selectNodeDesc")},{key:"install",name:u("setup.steps.launchAppDesc")},{key:"setup",name:u("setup.steps.setupAppDesc"),children:W},{key:"complete",name:u("setup.steps.launched"),path:p()(I,"complete")}];return A||q.splice(1,1),(0,E.jsxs)(Je,{steps:q,children:[(0,E.jsx)(f.Global,{styles:$e}),(0,E.jsx)(m.Z,{locale:d,blockletMeta:(0,i.Z)((0,i.Z)({},S),{},{title:(0,Z.getDisplayName)((0,i.Z)((0,i.Z)({},_),{},{meta:S}))}),navLogo:M,pcWidth:"80%",style:{height:"100%"},logoUrl:D,useOfSkeleton:!1,headerEndAddons:(0,E.jsx)(j.Z,{SessionContext:P.B3,sessionManagerProps:{disableLogout:!0}}),launchingText:u("setup.title"),children:(0,E.jsxs)(l.Z5,{children:[(0,E.jsx)(l.AW,{path:"connect",element:(0,E.jsx)(N,{onNext:U})}),(0,E.jsx)(l.AW,{path:"domain",element:K(he)}),(0,E.jsx)(l.AW,{path:"config",element:K(oe)}),(0,E.jsx)(l.AW,{path:"access",element:K(Se)}),(0,E.jsx)(l.AW,{path:"fuel",element:K(We)}),(0,E.jsx)(l.AW,{path:"complete",element:K(Me)}),(0,E.jsx)(l.AW,{path:"*",element:(0,E.jsx)(l.Fg,{to:"connect".concat(window.location.search),replace:!0})})]})})]})}var $e=(0,f.css)(Ge||(Ge=(0,o.Z)(["\n html,\n body,\n #root,\n #root > .wrapper {\n height: 100%;\n }\n"]))),Je=(0,u.default)(x.StepProvider)(Ye||(Ye=(0,o.Z)([""])))},98465:function(e,n,t){n.Z=f;var r,o=c(t(16380)),i=c(t(24974)),a=t(37574),s=["children"];function c(e){return e&&e.__esModule?e:{default:e}}function l(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function u(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?l(Object(t),!0).forEach((function(n){d(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):l(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function d(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function p(e,n){if(null==e)return{};var t,r,o=function(e,n){if(null==e)return{};var t,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}function f(e){var n=e.children,t=p(e,s);return(0,a.jsx)(x,u(u({},t),{},{children:n}))}f.propTypes={children:i.default.any.isRequired};var h,m,x=o.default.div(r||(h=["\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n height: 100%;\n\n .header {\n text-align: center;\n }\n\n .body {\n display: flex;\n flex-direction: column;\n align-items: center;\n margin-top: 30px;\n width: 100%;\n min-height: 200px;\n flex: 1;\n\n "," {\n padding: 24px;\n }\n\n "," {\n padding: 0 16px 16px;\n }\n }\n\n .footer {\n display: flex;\n justify-content: center;\n\n "," {\n padding-bottom: 34px;\n }\n\n "," {\n margin-top: auto;\n padding-bottom: 10px;\n }\n }\n"],m||(m=h.slice(0)),r=Object.freeze(Object.defineProperties(h,{raw:{value:Object.freeze(m)}}))),(function(e){return e.theme.breakpoints.up("md")}),(function(e){return e.theme.breakpoints.down("md")}),(function(e){return e.theme.breakpoints.up("sm")}),(function(e){return e.theme.breakpoints.down("md")}))},56229:function(e,n,t){n.Z=b;var r,o=t(30969),i=m(t(16380)),a=m(t(24974)),s=m(t(4328)),c=t(4716),l=m(t(85820)),u=m(t(71847)),d=t(42167),p=m(t(46513)),f=m(t(91077)),h=t(37574);function m(e){return e&&e.__esModule?e:{default:e}}function x(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function g(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?x(Object(t),!0).forEach((function(n){v(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):x(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function v(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function b(e){var n=e.SessionContext,t=e.extraItems,r=e.showLocale,i=e.showHelper,a=e.showSessionManager,m=e.sessionManagerProps,x=(0,o.useContext)(n).session,v=(0,o.useContext)(d.LocaleContext).locale,b=(0,c.useLocation)(),j={"/dashboard":"/introduction/abtnode-overview","/store":"/marketplace","/blocklets":"/blocklet","/router/rules":"/router","/router/engine":"/router","/settings/basic":"/misc","/settings/team":"/misc/member-management","/console":"/misc/graphql-console"};return(0,h.jsxs)(k,{children:[t.map((function(e,n){return(0,o.cloneElement)(e,{key:n})})),r&&(0,h.jsx)(u.default,{"data-cy":"locale-addon",icon:p.default,size:23,showText:!1,className:"locale-addon"}),i&&(0,h.jsx)(s.default,{onClick:function(){var e=b.pathname,n="";e.indexOf("/blocklets")>-1?n=j["/blocklets"]:e.indexOf("/store")>-1?n=j["/store"]:j[e]&&(n=j[e]),window.open("https://docs.arcblock.io/abtnode/".concat(v).concat(n),"_blank")},children:(0,h.jsx)(f.default,{})}),a&&(0,h.jsx)(l.default,g({session:x,size:24,showRole:!0},m))]})}b.propTypes={SessionContext:a.default.object.isRequired,webWalletUrl:a.default.string,extraItems:a.default.array,showLocale:a.default.bool,showSessionManager:a.default.bool,showHelper:a.default.bool,sessionManagerProps:a.default.object},b.defaultProps={webWalletUrl:"",extraItems:[],showLocale:!0,showSessionManager:!0,showHelper:!0,sessionManagerProps:{}};var j,y,k=i.default.div(r||(j=["\n display: flex;\n justify-content: center;\n align-items: center;\n\n .MuiIconButton-root svg {\n width: 26px;\n height: 26px;\n }\n\n .user-addon {\n .user-avatar {\n width: 28px;\n border-radius: 14px;\n height: auto;\n }\n }\n\n "," {\n > button,\n > a {\n padding-left: 8px;\n padding-right: 8px;\n }\n }\n"],y||(y=j.slice(0)),r=Object.freeze(Object.defineProperties(j,{raw:{value:Object.freeze(y)}}))),(function(e){return e.theme.breakpoints.down("md")}))}}]);
|
|
2
|
+
//# sourceMappingURL=301.aff37b48.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static/js/301.aff37b48.chunk.js","mappings":"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","sources":["components/setup/connect.js","components/setup/layout.js","components/setup/step-actions.js","components/setup/button.js","components/setup/config.js","components/setup/domain.js","components/setup/public-instance.js","components/setup/access-control.js","components/setup/required.js","components/setup/fuel.js","components/setup/complete.js","pages/setup.js","../../ux/lib/launch-blocklet/content-layout.js","../../ux/lib/layout/addon.js"],"sourcesContent":["import PropTypes from 'prop-types';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport DidConnect from '@arcblock/did-connect/lib/Connect';\nimport Toast from '@abtnode/ux/lib/toast';\nimport styled from '@emotion/styled';\n\nimport { useSessionContext } from '../../contexts/session';\nimport { getWebWalletUrl, setSessionToken } from '../../util';\n\nexport default function Connect({ onNext }) {\n const { t, locale } = useLocaleContext();\n const { api, session } = useSessionContext();\n\n const onConnect = async (result, decrypt) => {\n setSessionToken(decrypt(result.sessionToken));\n try {\n await session.refresh();\n onNext();\n } catch (err) {\n Toast.error(err.message);\n }\n };\n\n return (\n <WrapConnect\n popup\n open\n hideCloseButton\n action=\"setup\"\n checkFn={api.get}\n checkTimeout={10 * 60 * 1000}\n socketUrl={api.socketUrl}\n webWalletUrl={getWebWalletUrl()}\n onSuccess={onConnect}\n locale={locale}\n messages={{\n title: t('setup.connect.title'),\n scan: t('setup.connect.scan'),\n confirm: t('setup.connect.confirm'),\n success: t('setup.connect.success'),\n }}\n extraParams={{ setup: true }}\n />\n );\n}\n\nConnect.propTypes = {\n onNext: PropTypes.func,\n};\n\nConnect.defaultProps = {\n onNext: () => {},\n};\n\nconst WrapConnect = styled(DidConnect)`\n .action-info-desc {\n padding: 0 72px;\n }\n`;\n","import styled from '@emotion/styled';\n\nimport ContentLayout from '@abtnode/ux/lib/launch-blocklet/content-layout';\n\nconst Container = styled(ContentLayout)`\n display: flex;\n flex-direction: column;\n padding-bottom: 16px;\n ${(props) => props.theme.breakpoints.up('md')} {\n padding-top: 34px;\n padding-bottom: 34px;\n }\n .header {\n width: 100%;\n margin-bottom: 34px;\n ${(props) => props.theme.breakpoints.up('md')} {\n margin-bottom: 64px;\n }\n }\n .container-main {\n position: relative;\n flex: 1;\n width: 100%;\n }\n .container-inner {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n overflow-y: auto;\n }\n`;\n\nexport default Container;\n","import PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\n\nimport Box from '@mui/material/Box';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport Button from '@arcblock/ux/lib/Button';\n\nimport { hasRequiredSteps } from '../../util';\n\nexport default function StepActions({ blocklet, onStartNow, children, disabled }) {\n const { t } = useLocaleContext();\n\n if (!blocklet || hasRequiredSteps(blocklet.meta)) {\n return <Center>{children}</Center>;\n }\n\n return (\n <Between>\n <Button\n className=\"start-now\"\n variant=\"contained\"\n color=\"primary\"\n disabled={disabled}\n onClick={() => onStartNow()}>\n {t('setup.startNow')}\n </Button>\n <Box display=\"flex\" alignItems=\"center\">\n {children}\n </Box>\n </Between>\n );\n}\n\nStepActions.propTypes = {\n blocklet: PropTypes.object,\n onStartNow: PropTypes.func,\n children: PropTypes.any,\n disabled: PropTypes.bool,\n};\nStepActions.defaultProps = {\n blocklet: null,\n onStartNow: () => {},\n children: null,\n disabled: false,\n};\n\nconst Center = styled(Box)`\n padding-top: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n .bottom-button {\n min-width: 200px;\n }\n ${(props) => props.theme.breakpoints.down('md')} {\n .bottom-button {\n min-width: 150px;\n }\n }\n`;\n\nconst Between = styled(Box)`\n padding-bottom: 48px;\n padding-top: 24px;\n margin: 0 auto;\n width: 80%;\n display: flex;\n align-items: center;\n justify-content: space-around;\n .start-now {\n min-width: 140px;\n }\n .bottom-button {\n min-width: 120px;\n }\n ${(props) => props.theme.breakpoints.down('lg')} {\n width: 100%;\n }\n\n ${(props) => props.theme.breakpoints.down('md')} {\n .start-now {\n min-width: 100px;\n }\n .bottom-button {\n min-width: 80px;\n }\n }\n`;\n","import Button from '@arcblock/ux/lib/Button';\n\nexport default function StyledButton({ ...props }) {\n return <Button className=\"bottom-button\" variant=\"contained\" color=\"primary\" {...props} />;\n}\n","import { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport omit from 'lodash/omit';\nimport uniqBy from 'lodash/uniqBy';\nimport flatten from 'lodash/flatten';\n\nimport Box from '@mui/material/Box';\nimport useMediaQuery from '@mui/material/useMediaQuery';\n\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport SchemaForm from '@abtnode/ux/lib/schema-form';\nimport Toast from '@abtnode/ux/lib/toast';\nimport CompactLayout from '@blocklet/launcher-layout/lib/compact-layout';\n\nimport PageHeader from '@blocklet/launcher-layout/lib/page-header';\n\nimport { getAppMissingConfigs, forEachChildSync } from '@blocklet/meta/lib/util';\nimport { BLOCKLET_CONFIGURABLE_KEY } from '@blocklet/meta/lib/constants';\n\nimport { useBlockletContext } from '../../contexts/blocklet';\nimport Layout from './layout';\nimport StepActions from './step-actions';\nimport Button from './button';\n\nexport default function Config({ onNext, onPrevious }) {\n const isMobile = useMediaQuery((theme) => theme.breakpoints.down('md'));\n const { t } = useLocaleContext();\n const [loading, setLoading] = useState(false);\n const [editingItem, setEditingItem] = useState(null);\n const { blocklet, actions } = useBlockletContext();\n\n const selfConfigs = (blocklet.configs || []).filter((x) => !BLOCKLET_CONFIGURABLE_KEY[x.key]);\n const customColor = blocklet.environments.find((x) => x.key === 'BLOCKLET_PASSPORT_COLOR');\n\n const configurableEnvs = [\n {\n key: BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_NAME,\n description: t('blocklet.config.name'),\n value: blocklet.environments.find((x) => x.key === 'BLOCKLET_APP_NAME').value,\n custom: true,\n },\n {\n key: BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_DESCRIPTION,\n description: t('blocklet.config.description'),\n value: blocklet.environments.find((x) => x.key === 'BLOCKLET_APP_DESCRIPTION').value,\n custom: true,\n },\n {\n key: BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_PASSPORT_COLOR,\n description: t('blocklet.config.passportColor'),\n value: customColor ? customColor.value : 'auto',\n custom: true,\n componentType: 'passport',\n componentProps: {\n blocklet,\n },\n },\n ];\n\n const childrenConfigs = [];\n forEachChildSync(blocklet, (b, { ancestors }) => {\n const ancestorDids = ancestors.slice(1).map((x) => x.meta.did);\n\n childrenConfigs.push((b.configs || []).map((x) => ({ ...x, childDid: ancestorDids.concat(b.meta.did) })));\n });\n\n const filteredConfigs = uniqBy(flatten([...selfConfigs, ...childrenConfigs]), 'key').filter((x) => !!x.key);\n\n const sortedConfig = filteredConfigs.sort((a, b) => {\n if (a.required && !b.required) {\n return -1;\n }\n\n if (b.required && !a.required) {\n return 1;\n }\n\n return 0;\n });\n\n const missingRequiredConfigs = getAppMissingConfigs(blocklet).length;\n\n const onSubmitConfig = async (value) => {\n const { childDid, ...config } = editingItem;\n\n const configs = [\n {\n // omit the backend unused configs\n ...omit(config, ['componentType', 'componentProps']),\n value,\n },\n ];\n\n try {\n setLoading(true);\n await actions.configBlocklet({\n configs,\n childDid,\n });\n } catch (err) {\n Toast.error(err.message);\n } finally {\n setLoading(false);\n }\n };\n\n const defaultValue = {};\n\n const schemaList = [...configurableEnvs, ...sortedConfig].map((item) => {\n const { value, ...rest } = item;\n defaultValue[item.key] = value;\n return {\n ...rest,\n };\n });\n\n const clickBack = () => {\n onPrevious();\n };\n\n return (\n <Layout>\n <div className=\"header\" style={{ marginBottom: 16 }}>\n <PageHeader title={t('setup.config.title')} subTitle={t('setup.config.subTitle')} onClickBack={clickBack} />\n </div>\n <div className=\"container-main\">\n <div className=\"container-inner\">\n <CompactLayout\n bottom={\n <StepActions\n mt={8}\n disabled={loading || editingItem}\n blocklet={blocklet}\n onStartNow={() => onNext('complete')}>\n <Box display=\"flex\" alignItems=\"center\">\n <Button\n disabled={loading || missingRequiredConfigs || editingItem}\n onClick={() => {\n actions.refreshFuel({ showError: false });\n onNext();\n }}>\n {t('setup.next')}\n </Button>\n </Box>\n </StepActions>\n }>\n <SchemaForm\n style={{ margin: '0 auto 20px', paddingTop: isMobile ? 0 : 38 }}\n loading={loading}\n schema={schemaList}\n defaultValue={defaultValue}\n onChange={(changeValue, { action, currentItem }) => {\n if (action === 'edit') {\n setEditingItem(currentItem);\n } else if (['cancel', 'confirm'].includes(action)) {\n setEditingItem(null);\n }\n if (action === 'confirm') {\n onSubmitConfig(changeValue[currentItem.key]);\n }\n }}\n />\n </CompactLayout>\n </div>\n </div>\n </Layout>\n );\n}\n\nConfig.propTypes = {\n onNext: PropTypes.func,\n onPrevious: PropTypes.func,\n};\n\nConfig.defaultProps = {\n onNext: () => {},\n onPrevious: () => {},\n};\n","import { useState, useContext, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\n\nimport TextField from '@mui/material/TextField';\nimport Box from '@mui/material/Box';\nimport { LocaleContext } from '@arcblock/ux/lib/Locale/context';\n\nimport Toast from '@abtnode/ux/lib/toast';\nimport PageHeader from '@blocklet/launcher-layout/lib/page-header';\nimport { validateDomain, sleep } from '@abtnode/ux/lib/util';\nimport { BLOCKLET_CONFIGURABLE_KEY } from '@blocklet/meta/lib/constants';\nimport Dialog from '@arcblock/ux/lib/Dialog';\nimport { replaceSlotToIp } from '@blocklet/meta/lib/util';\n\nimport { useBlockletContext } from '../../contexts/blocklet';\nimport api from '../../libs/api';\nimport client from '../../libs/client';\nimport Layout from './layout';\nimport StepActions from './step-actions';\nimport Button from './button';\n\nconst isCertInProgress = (cert) => ['waiting', 'creating', 'renewaling'].includes(cert?.status);\n\nconst waitForCert = (domain) =>\n new Promise((resolve, reject) => {\n const timer = setInterval(async () => {\n try {\n const { cert } = await client.findCertificateByDomain({ input: { domain } });\n\n if (cert?.status === 'generated') {\n clearInterval(timer);\n resolve(true);\n return;\n }\n\n if (!isCertInProgress(cert)) {\n clearInterval(timer);\n resolve(false);\n }\n } catch (err) {\n clearInterval(timer);\n reject(err);\n }\n }, 1000);\n });\n\nconst addCert = async (domain) => {\n await client.issueLetsEncryptCert({ input: { domain } });\n return waitForCert(domain);\n};\n\nexport default function Domain({ onNext, onPrevious }) {\n const { t, locale } = useContext(LocaleContext);\n const [loadingText, setLoadingText] = useState('');\n const [error, setError] = useState(false);\n const { blocklet } = useBlockletContext();\n const [ip, setIp] = useState('');\n const [showCertFailed, setShowCertFailed] = useState(false);\n\n const site = blocklet?.site || {};\n const domains = site.domainAliases || [];\n const defaultCustomDomain = domains.filter((x) => !x.isProtected)[0]?.value || '';\n const systemDomains = domains.filter((x) => x.isProtected).map((x) => replaceSlotToIp(x.value, ip));\n const [domain, setDomain] = useState(defaultCustomDomain);\n\n const addDomain = async (secure) => {\n setLoadingText(t('setup.domain.addingDomain'));\n await sleep(1500);\n if (!domains.some((x) => x.value === domain)) {\n await client.addDomainAlias({ input: { id: blocklet.site.id, domainAlias: domain } });\n await client.takeRoutingSnapshot({\n input: { dryRun: false, message: `add domain ${domain} from blocklet services` },\n });\n }\n await client.configBlocklet({\n input: {\n did: [blocklet.meta.did],\n configs: [{ key: BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_URL, value: `http${secure ? 's' : ''}://${domain}` }],\n },\n });\n onNext();\n };\n\n const submitDomain = async () => {\n if (loadingText) {\n return;\n }\n\n try {\n setLoadingText(t('setup.domain.checkingResolvable'));\n await sleep(1500);\n const {\n data: { address },\n } = await api.get(`/dns-resolve?hostname=${domain}`);\n if (!address) {\n throw new Error(t('setup.domain.cannotResolve', { domain }));\n }\n\n if (address !== ip) {\n throw new Error(t('setup.domain.resolvedAddressError', { domain, curDomain: window.location.hostname }));\n }\n\n setLoadingText(t('setup.domain.addingCert'));\n let generated = false;\n const { cert } = await client.findCertificateByDomain({ input: { domain } });\n if (!cert) {\n generated = await addCert(domain, locale);\n } else if (cert.status === 'generated') {\n generated = true;\n } else if (['waiting', 'creating', 'renewaling'].includes(cert.status)) {\n generated = await waitForCert(domain, locale);\n } else {\n generated = await addCert(domain, locale);\n }\n\n if (generated) {\n addDomain(generated);\n } else {\n setShowCertFailed(true);\n }\n } catch (err) {\n Toast.error(err.message);\n setLoadingText('');\n }\n };\n\n useEffect(() => {\n api\n .get(`/dns-resolve?hostname=${window.location.hostname}`)\n .then(({ data }) => {\n setIp(data.address || '');\n })\n .catch((err) => {\n console.error(err.message);\n });\n }, []);\n\n return (\n <Container>\n <div className=\"header\">\n <PageHeader title={t('setup.domain.title')} subTitle={t('setup.domain.subTitle')} onClickBack={onPrevious} />\n </div>\n {showCertFailed && (\n <Dialog\n PaperProps={{\n style: {\n minHeight: 'auto',\n },\n }}\n open={showCertFailed}\n showCloseButton={false}\n title={t('setup.domain.genCertFailed')}\n actions={\n <>\n <Button\n color=\"reverse\"\n variant=\"text\"\n onClick={() => {\n setLoadingText('');\n setShowCertFailed(false);\n }}>\n {t('setup.cancel')}\n </Button>\n <Button\n color=\"primary\"\n variant=\"text\"\n onClick={() => {\n setShowCertFailed(false);\n addDomain(false);\n }}>\n {t('setup.confirm')}\n </Button>\n </>\n }>\n {t('setup.domain.certFailedDesc')}\n </Dialog>\n )}\n <Box className=\"form\">\n <Box>\n <Box mb={1} color=\"text.primary\" fontWeight=\"fontWeightBold\">\n <Box display=\"inline\">{t('setup.domain.skipStart')}</Box>\n <Button\n variant=\"text\"\n size=\"small\"\n disabled={!!loadingText}\n onClick={() => onNext()}\n style={{ paddingTop: 0 }}>\n <span style={{ textDecoration: 'underline' }}>{t('setup.domain.skip')}</span>\n </Button>\n <Box display=\"inline\">{t('setup.domain.skipEnd')}</Box>\n </Box>\n {systemDomains.map((x) => (\n <Box component=\"li\" fontWeight=\"fontWeightBold\" color=\"primary.main\">\n {x}\n </Box>\n ))}\n <Box mt={1} fontWeight=\"fontWeightBold\" color=\"text.secondary\">\n {t('setup.domain.certTip')}\n </Box>\n <Box />\n </Box>\n\n <Box mt={4} fontWeight=\"fontWeightBold\">\n {t('setup.domain.subTitle')}\n </Box>\n <TextField\n style={{ marginTop: 16, minHeight: 64 }}\n label={t('setup.domain.label')}\n fullWidth\n value={domain}\n onChange={(e) => {\n const { value } = e.target;\n setDomain(value);\n const errMessage = validateDomain(value, locale);\n setError(errMessage);\n }}\n autoFocus\n size=\"small\"\n variant=\"outlined\"\n error={!!error}\n helperText={error}\n />\n\n {domain && (\n <Box color=\"text.secondary\">\n <Box display=\"flex\">\n {t('setup.domain.tipStart')}\n <Box mx={0.5} color=\"primary.main\" fontWeight=\"fontWeightBold\">\n {domain}\n </Box>\n {t('setup.domain.tipEnd')}\n </Box>\n <Box component=\"li\">\n {t('setup.domain.recordType')}:{' '}\n <Box display=\"inline\" fontWeight=\"fontWeightBold\" color=\"primary.main\">\n A\n </Box>\n </Box>\n <Box component=\"li\">\n {t('setup.domain.recordValue')}:{' '}\n <Box display=\"inline\" fontWeight=\"fontWeightBold\" color=\"primary.main\">\n {ip}\n </Box>\n </Box>\n </Box>\n )}\n </Box>\n <StepActions mt={8} disabled={!!loadingText} blocklet={blocklet} onStartNow={() => onNext('complete')}>\n {!domain ? (\n <Button variant=\"outlined\" disabled={!!loadingText} onClick={() => onNext()}>\n {t('setup.skip')}\n </Button>\n ) : (\n <Button loading={!!loadingText} disabled={error || !!loadingText || !domain} onClick={() => submitDomain()}>\n {loadingText || t('setup.next')}\n </Button>\n )}\n </StepActions>\n </Container>\n );\n}\n\nDomain.propTypes = {\n onNext: PropTypes.func,\n onPrevious: PropTypes.func,\n};\nDomain.defaultProps = {\n onNext: () => {},\n onPrevious: () => {},\n};\n\nconst Container = styled(Layout)`\n height: 100%;\n overflow-y: auto;\n .form {\n width: 580px;\n word-break: break-all;\n ${(props) => props.theme.breakpoints.down('md')} {\n width: 80%;\n }\n }\n`;\n","import { memo } from 'react';\nimport PropTypes from 'prop-types';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\n\nimport InfoOutlinedIcon from '@mui/icons-material/InfoOutlined';\nimport Tooltip from '@mui/material/Tooltip';\nimport IconButton from '@mui/material/IconButton';\n\nfunction PublicInstance({ children }) {\n const { t } = useLocaleContext();\n return (\n <div style={{ display: 'flex', alignItems: 'center' }}>\n {children}\n <Tooltip title={t('blocklet.config.access.publicInstanceTip')}>\n <IconButton>\n <InfoOutlinedIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n </div>\n );\n}\nPublicInstance.propTypes = {\n children: PropTypes.any.isRequired,\n};\n\nexport default memo(PublicInstance);\n","import { useState, useEffect } from 'react';\nimport styled from '@emotion/styled';\nimport PropTypes from 'prop-types';\n\nimport Radio from '@mui/material/Radio';\nimport RadioGroup from '@mui/material/RadioGroup';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport FormControl from '@mui/material/FormControl';\nimport Box from '@mui/material/Box';\nimport Checkbox from '@mui/material/Checkbox';\nimport useTheme from '@mui/material/styles/useTheme';\n\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport Toast from '@abtnode/ux/lib/toast';\nimport { WHO_CAN_ACCESS } from '@abtnode/constant';\n\nimport { getWhoCanAccess } from '@blocklet/meta/lib/util';\n\nimport PageHeader from '@blocklet/launcher-layout/lib/page-header';\nimport { sleep } from '@abtnode/ux/lib/util';\nimport AccessConfig from '@abtnode/ux/lib/who-can-access/config';\n\nimport { useBlockletContext } from '../../contexts/blocklet';\nimport Layout from './layout';\nimport StepActions from './step-actions';\nimport Button from './button';\nimport PublicInstance from './public-instance';\n\nexport default function AccessControl({ onNext }) {\n const theme = useTheme();\n const { t, locale } = useLocaleContext();\n const [loading, setLoading] = useState(false);\n const [value, setValue] = useState('');\n const [publicToStore, setPublicToStore] = useState(false);\n const { blocklet, actions, getPublicInstance } = useBlockletContext();\n\n useEffect(() => {\n setValue(getWhoCanAccess(blocklet));\n setPublicToStore(getPublicInstance(blocklet));\n }, [blocklet]); // eslint-disable-line\n\n const submit = async (whoCanAccess) => {\n try {\n setLoading(true);\n await sleep(800);\n await actions.configWhoCanAccess(whoCanAccess);\n setLoading(false);\n } catch (err) {\n setLoading(false);\n Toast.error(err.message);\n }\n };\n\n const handleChange = async (event) => {\n if (loading) {\n return;\n }\n setValue(event.target.value);\n await submit(event.target.value);\n };\n const handleCheckBox = async (event) => {\n const isPublic = event.target.checked;\n try {\n setLoading(true);\n await actions.configPublicToStore(isPublic);\n setLoading(false);\n } catch (error) {\n setLoading(false);\n Toast.error(error.message);\n }\n };\n\n const iconStyle = {\n marginRight: 4,\n fontSize: 18,\n verticalAlign: 'text-bottom',\n color: theme.palette.text.secondary,\n };\n\n return (\n <Container>\n <div className=\"header\">\n <PageHeader title={t('blocklet.config.access.description')} />\n </div>\n\n <FormControl component=\"fieldset\">\n <RadioGroup name=\"inherit\" value={value} onChange={handleChange}>\n {AccessConfig.map((rule) => {\n return (\n <div key={rule.value} style={{ marginBottom: 16 }}>\n <FormControlLabel\n value={rule.value}\n control={<Radio color=\"primary\" />}\n label={\n <span>\n <rule.icon style={iconStyle} />\n {rule.title[locale]}\n </span>\n }\n />\n <Box className=\"tip\">\n {rule.description[locale]}\n {rule.value === WHO_CAN_ACCESS.ALL && value === WHO_CAN_ACCESS.ALL && blocklet.source === 'registry' && (\n <PublicInstance>\n <FormControlLabel\n style={{ marginRight: 0 }}\n value={rule.value}\n control={<Checkbox size=\"small\" />}\n label={<span>{t('blocklet.config.access.publicToStore')}</span>}\n onChange={handleCheckBox}\n checked={publicToStore}\n disabled={loading}\n />\n </PublicInstance>\n )}\n </Box>\n </div>\n );\n })}\n </RadioGroup>\n </FormControl>\n\n <StepActions mt={8} disabled={loading} blocklet={blocklet} onStartNow={() => onNext('complete')}>\n <Box display=\"flex\" alignItems=\"center\">\n <Button loading={loading} disabled={loading} onClick={() => onNext()}>\n {t('setup.continue')}\n </Button>\n </Box>\n </StepActions>\n </Container>\n );\n}\n\nAccessControl.propTypes = {\n onNext: PropTypes.func,\n};\n\nAccessControl.defaultProps = {\n onNext: () => {},\n};\n\nconst Container = styled(Layout)`\n height: 100%;\n overflow-y: auto;\n .header {\n width: 100%;\n }\n .tip {\n margin-left: 32px;\n font-size: 12px;\n margin-top: -8px;\n color: ${(props) => props.theme.palette.text.secondary};\n }\n`;\n","import styled from '@emotion/styled';\n\nconst Required = styled.span`\n color: ${(props) => props.theme.palette.error.main};\n &::before {\n content: '*';\n }\n`;\n\nexport default Required;\n","import { useState, useContext, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport joinUrl from 'url-join';\n\nimport Box from '@mui/material/Box';\nimport Link from '@mui/material/Link';\nimport LaunchIcon from '@mui/icons-material/Launch';\nimport { LocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport DidConnect from '@arcblock/did-connect/lib/Connect';\nimport DidAddress from '@arcblock/did-connect/lib/Address';\nimport Spinner from '@arcblock/ux/lib/Spinner';\n\nimport PageHeader from '@blocklet/launcher-layout/lib/page-header';\n\nimport { useBlockletContext } from '../../contexts/blocklet';\nimport { useSessionContext } from '../../contexts/session';\nimport Layout from './layout';\nimport StepActions from './step-actions';\nimport Button from './button';\n\nexport default function Fuel({ onNext, onPrevious }) {\n const { locale, t } = useContext(LocaleContext);\n const { blocklet, gas, tokenInfo, actions } = useBlockletContext();\n const { api } = useSessionContext();\n const [open, setOpen] = useState(false);\n const { need = '', current = '', owe = 99999, deficiency, symbol = '', endpoint } = gas || {};\n const { origin: explorer = '/' } = endpoint ? new URL(endpoint) : {};\n\n useEffect(() => {\n const timer = setInterval(() => {\n actions.refreshFuel();\n }, 2000);\n\n return () => {\n clearInterval(timer);\n };\n }, []); // eslint-disable-line\n\n const onSuccess = () => {\n setOpen(false);\n };\n\n if (!gas) {\n return (\n <Box display=\"flex\" justifyContent=\"center\" alignItems=\"center\" width=\"100%\">\n <Spinner />\n </Box>\n );\n }\n\n return (\n <Container>\n <div className=\"header\">\n <PageHeader title={t('setup.fuel.title')} onClickBack={onPrevious} />\n </div>\n\n <Box className=\"qr-body\">\n <Box mb={6} className=\"tip\">\n {t('setup.fuel.tipStart').replace('slot', '')}\n <span className=\"amount\">{`${need} ${symbol}`}</span>\n {t('setup.fuel.tipEnd')}\n </Box>\n <Box fontSize={16} fontWeight=\"fontWeightBold\" mb={0.5}>\n {t('setup.fuel.addressTitle')}\n </Box>\n <Box display=\"flex\" alignItems=\"center\">\n <DidAddress className=\"address\">{blocklet.appDid}</DidAddress>\n <Link\n style={{ lineHeight: 1 }}\n target=\"_blank\"\n href={joinUrl(explorer, '/explorer/accounts/', blocklet.appDid)}\n underline=\"hover\">\n <LaunchIcon className=\"icon-launch\" />\n </Link>\n </Box>\n <Box my={2}>\n <Button color=\"primary\" onClick={() => setOpen(true)} disabled={!owe}>\n {t('setup.fuel.fuelApp')}\n </Button>\n </Box>\n <DidConnect\n popup\n open={open}\n action=\"fuel\"\n checkFn={api.get}\n checkTimeout={10 * 60 * 1000}\n socketUrl={api.socketUrl}\n onSuccess={onSuccess}\n onClose={() => setOpen(false)}\n locale={locale}\n messages={{\n title: t('setup.connect.title'),\n scan: t('setup.connect.scan'),\n confirm: t('setup.connect.confirm'),\n success: t('setup.connect.success'),\n }}\n extraParams={{ amount: deficiency, ...tokenInfo, endpoint }}\n />\n\n <Box display=\"flex\" color=\"text.secondary\">\n <Box display=\"flex\">\n <Box>{t('setup.fuel.need')}:</Box>\n <Box ml={0.5} color=\"primary.main\" fontWeight=\"fontWeightBold\">\n {need}\n </Box>\n </Box>\n <Box display=\"flex\" ml={3}>\n <Box>{t('setup.fuel.current')}:</Box>\n <Box ml={0.5} color={owe > 0 ? 'error.main' : 'primary.main'} fontWeight=\"fontWeightBold\">\n {current}\n </Box>\n </Box>\n </Box>\n </Box>\n\n <StepActions mt={8}>\n <Button disabled={owe > 0} onClick={() => onNext()}>\n {t('setup.next')}\n </Button>\n </StepActions>\n </Container>\n );\n}\n\nFuel.propTypes = {\n onNext: PropTypes.func,\n onPrevious: PropTypes.func,\n};\nFuel.defaultProps = {\n onNext: () => {},\n onPrevious: () => {},\n};\n\nconst Container = styled(Layout)`\n .qr-body {\n width: 580px;\n ${(props) => props.theme.breakpoints.down('md')} {\n width: 80%;\n }\n display: flex;\n flex-direction: column;\n align-items: center;\n\n .tip {\n font-size: 16px;\n font-weight: bold;\n }\n\n .address {\n width: 100%;\n text-align: center;\n }\n\n .amount {\n color: ${(props) => props.theme.palette.primary.main};\n }\n\n .icon-launch {\n font-size: 16px;\n margin-left: 6px;\n line-height: 1;\n color: ${(props) => props.theme.palette.primary.main};\n }\n }\n`;\n","import { useState, useEffect } from 'react';\nimport styled from '@emotion/styled';\nimport PropTypes from 'prop-types';\n\nimport ResultMessage from '@blocklet/launcher-layout/lib/launch-result-message';\n\nimport Box from '@mui/material/Box';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport Toast from '@abtnode/ux/lib/toast';\nimport { getAccessUrl } from '@abtnode/ux/lib/util';\nimport { evaluateURLs } from '@abtnode/util/lib/url-evaluation';\nimport Spinner from '@arcblock/ux/lib/Spinner';\nimport api from '../../libs/api';\nimport Layout from './layout';\nimport StepActions from './step-actions';\nimport Button from './button';\nimport { useBlockletContext } from '../../contexts/blocklet';\nimport { PREFIX } from '../../util';\n\nexport default function Complete({ onPrevious }) {\n const { t } = useLocaleContext();\n const [loading, setLoading] = useState(false);\n const [status, setStatus] = useState('starting'); // stopped, starting, running\n const [startupError, setStartupError] = useState();\n const { blocklet } = useBlockletContext();\n const [recommendedURL, setRecommendedURL] = useState('');\n const fromLauncher = new URL(window.location.href).searchParams.get('from_launcher');\n\n const isStopped = !['starting', 'running'].includes(status);\n const isStarting = status === 'starting';\n const statusText = {\n stopped: t('blocklet.start'),\n starting: t('blocklet.starting'),\n running: t('blocklet.open'),\n };\n\n const visitBlocklet = () => {\n const url = new URL(window.location.href);\n const redirect = url.searchParams.get('redirect');\n if (redirect) {\n window.location.href = new URL(redirect, recommendedURL).href;\n } else {\n window.location.href = recommendedURL;\n }\n };\n\n const startBlocklet = async () => {\n setLoading(true);\n setStatus('starting');\n try {\n await api.post('/blocklet/start', {\n fromSetup: true,\n });\n setLoading(false);\n setStatus('running');\n } catch (err) {\n const errMsg = err?.response?.data || err.message;\n Toast.error(errMsg);\n setLoading(false);\n setStatus('stopped');\n setStartupError(errMsg);\n }\n };\n\n useEffect(() => {\n setStatus(blocklet.status);\n if (!['starting', 'running'].includes(blocklet.status)) {\n startBlocklet();\n }\n }, []); // eslint-disable-line\n\n useEffect(() => {\n const _setRecommendedURL = async () => {\n const results = await evaluateURLs(blocklet.site.domainAliases.map((item) => getAccessUrl(item.value, PREFIX)));\n setRecommendedURL(results[0].url);\n };\n if (!recommendedURL) {\n _setRecommendedURL();\n }\n }, [blocklet, recommendedURL]);\n\n const serverUrl = localStorage.getItem('blocklet-server-url');\n const title = startupError ? t('setup.complete.failedTitle') : t('setup.complete.title');\n\n const isButtonLoading = isStarting || !recommendedURL;\n\n if (fromLauncher && !isButtonLoading) {\n if (isStopped) {\n startBlocklet();\n } else {\n visitBlocklet();\n }\n }\n\n return (\n <Container>\n <StyledResultMessage\n variant={startupError ? 'error' : 'success'}\n title={title}\n footer={\n <StepActions>\n {isStopped && (\n <Button variant=\"outlined\" disabled={loading} onClick={() => onPrevious()}>\n {t('setup.previous')}\n </Button>\n )}\n\n {fromLauncher ? (\n <LinkEle rel=\"noreferrer\">\n <Spinner size={[16, 10]} style={{ marginRight: 14 }} /> {t('common.redirecting')}\n </LinkEle>\n ) : (\n <>\n <Button\n style={{ marginLeft: isStopped ? 24 : 0 }}\n disabled={loading || isStarting}\n onClick={() => (isStopped ? startBlocklet() : visitBlocklet())}\n loading={isButtonLoading}>\n {statusText[status] || statusText.stopped}\n </Button>\n\n {(status === 'running' || startupError) && !!serverUrl && (\n <Box width=\"100%\" mt={2}>\n <a href={serverUrl} target=\"_blank\" rel=\"noopener noreferrer\" className=\"back-to-server-link\">\n {t('setup.complete.backToServer')}\n </a>\n </Box>\n )}\n </>\n )}\n </StepActions>\n }\n />\n </Container>\n );\n}\n\nconst Container = styled(Layout)`\n justify-content: center;\n .icon-success {\n width: 64px;\n height: 64px;\n color: ${(props) => props.theme.palette.success.main};\n }\n .back-to-server-link {\n color: ${(props) => props.theme.palette.primary.main};\n }\n`;\n\nconst StyledResultMessage = styled(ResultMessage)`\n && .result-footer {\n height: 120px;\n > div {\n flex-wrap: wrap;\n }\n }\n`;\n\nComplete.propTypes = {\n onPrevious: PropTypes.func,\n};\n\nComplete.defaultProps = {\n onPrevious: () => {},\n};\n\nconst LinkEle = styled.a`\n display: flex;\n justify-content: center;\n align-items: center;\n height: 36px;\n color: ${(props) => props.theme.palette.primary.main};\n`;\n","import { useEffect } from 'react';\nimport { Routes, Route, Navigate, useNavigate } from 'react-router-dom';\nimport styled from '@emotion/styled';\nimport joinUrl from 'url-join';\nimport { Global, css } from '@emotion/react';\n\nimport Box from '@mui/material/Box';\nimport Layout from '@blocklet/launcher-layout';\nimport { StepProvider } from '@blocklet/launcher-layout/lib/context/step';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport Spinner from '@arcblock/ux/lib/Spinner';\nimport HeaderAddon from '@abtnode/ux/lib/layout/addon';\nimport ServerLogoNotext from '@arcblock/icons/lib/ServerLogoNotext';\nimport ServerLogo from '@arcblock/icons/lib/ServerLogo';\n\nimport { WELLKNOWN_SERVICE_PATH_PREFIX } from '@abtnode/constant';\nimport { getDisplayName } from '@blocklet/meta/lib/util';\n\nimport { hasRequiredEnvironments, saveServerUrl, PREFIX } from '../util';\nimport { useBlockletContext } from '../contexts/blocklet';\nimport { SessionContext } from '../contexts/session';\nimport Connect from '../components/setup/connect';\nimport Config from '../components/setup/config';\nimport Domain from '../components/setup/domain';\nimport AccessControl from '../components/setup/access-control';\nimport Required from '../components/setup/required';\nimport Fuel from '../components/setup/fuel';\nimport Complete from '../components/setup/complete';\n\nexport default function BlockletSetup() {\n const isMobile = useMediaQuery((theme) => theme.breakpoints.down('md'));\n const { t, locale } = useLocaleContext();\n const navigate = useNavigate();\n const { meta, blocklet, actions } = useBlockletContext();\n const serverUrl = localStorage.getItem('blocklet-server-url');\n\n const fromLauncher = new URL(window.location.href).searchParams.get('from_launcher');\n\n useEffect(() => {\n actions.refreshMeta();\n actions.refreshBlocklet({ showError: false });\n // setup 流程刚开始时, 保存 serverUrl 到 localStorage, 方便在 setup 流程结束后返回 server\n saveServerUrl();\n }, []); // eslint-disable-line\n\n useEffect(() => {\n actions.refreshFuel({ showError: false });\n }, [blocklet?.meta?.did]); // eslint-disable-line\n\n const basePath = `${WELLKNOWN_SERVICE_PATH_PREFIX}/setup`;\n const steps = [\n {\n key: 'connect',\n name: t('setup.steps.connect'),\n path: joinUrl(basePath, 'connect'),\n },\n {\n key: 'access',\n name: t('setup.steps.access'),\n path: joinUrl(basePath, 'access'),\n },\n {\n key: 'domain',\n name: t('setup.steps.domain'),\n path: joinUrl(basePath, 'domain'),\n },\n {\n key: 'config',\n name: (\n <>\n {t('setup.steps.config')} {hasRequiredEnvironments(meta) && <Required />}\n </>\n ),\n path: joinUrl(basePath, 'config'),\n },\n meta?.requirements?.fuels?.length\n ? {\n key: 'fuel',\n name: (\n <>\n {t('setup.steps.fuel')} <Required />\n </>\n ),\n path: joinUrl(basePath, 'fuel'),\n }\n : null,\n ].filter(Boolean);\n\n const stepIndex = steps.findIndex(\n (x) => `${PREFIX.replace(/\\/$/, '')}${basePath}/${x.key}` === window.location.pathname\n );\n\n const logoUrl = joinUrl(PREFIX, WELLKNOWN_SERVICE_PATH_PREFIX, '/blocklet/logo');\n\n const onNext = async (key) => {\n const { search } = new URL(window.location.href);\n if (!key) {\n if (steps[stepIndex + 1]) {\n navigate(`${joinUrl(basePath, steps[stepIndex + 1].key)}${search}`);\n } else {\n navigate(`${joinUrl(basePath, 'complete')}${search}`);\n }\n } else {\n const index = steps.findIndex((x) => x.key === key);\n if (index > -1) {\n navigate(`${joinUrl(basePath, steps[index].key)}${search}`);\n } else {\n navigate(`${joinUrl(basePath, 'complete')}${search}`);\n }\n }\n\n await actions.refreshBlocklet();\n };\n\n const onPrevious = () => {\n navigate(-1);\n };\n\n function withSetup(Component, props) {\n if (!blocklet) {\n return (\n <Box width=\"100%\" height=\"100%\" display=\"flex\" justifyContent=\"center\" alignItems=\"center\">\n <Spinner />\n </Box>\n );\n }\n\n return <Component blocklet={blocklet} {...props} onNext={onNext} onPrevious={onPrevious} />;\n }\n\n const clickLogo = () => {\n window.open(serverUrl);\n };\n\n const logo = !isMobile ? (\n <ServerLogo onClick={clickLogo} width=\"128\" height=\"48\" style={{ marginTop: -1, cursor: 'pointer' }} />\n ) : (\n <ServerLogoNotext onClick={clickLogo} width=\"32\" height=\"32\" style={{ cursor: 'pointer' }} />\n );\n\n const totalSteps = [\n {\n key: 'agreement',\n name: t('setup.steps.introduction'),\n },\n {\n key: 'select-node',\n name: t('setup.steps.selectNodeDesc'),\n },\n {\n key: 'install',\n name: t('setup.steps.launchAppDesc'),\n },\n {\n key: 'setup',\n name: t('setup.steps.setupAppDesc'),\n children: steps,\n },\n {\n key: 'complete',\n name: t('setup.steps.launched'),\n path: joinUrl(basePath, 'complete'),\n },\n ];\n\n if (!fromLauncher) {\n totalSteps.splice(1, 1);\n }\n\n return (\n <StyledStepProvider steps={totalSteps}>\n <Global styles={launcherGlobalStyle} />\n <Layout\n locale={locale}\n blockletMeta={{ ...meta, title: getDisplayName({ ...blocklet, meta }) }}\n navLogo={logo}\n pcWidth=\"80%\"\n style={{ height: '100%' }}\n logoUrl={logoUrl}\n useOfSkeleton={false}\n headerEndAddons={<HeaderAddon SessionContext={SessionContext} sessionManagerProps={{ disableLogout: true }} />}\n launchingText={t('setup.title')}>\n <Routes>\n <Route path=\"connect\" element={<Connect onNext={onNext} />} />\n <Route path=\"domain\" element={withSetup(Domain)} />\n <Route path=\"config\" element={withSetup(Config)} />\n <Route path=\"access\" element={withSetup(AccessControl)} />\n <Route path=\"fuel\" element={withSetup(Fuel)} />\n <Route path=\"complete\" element={withSetup(Complete)} />\n <Route path=\"*\" element={<Navigate to={`connect${window.location.search}`} replace />} />\n </Routes>\n </Layout>\n </StyledStepProvider>\n );\n}\n\nconst launcherGlobalStyle = css`\n html,\n body,\n #root,\n #root > .wrapper {\n height: 100%;\n }\n`;\n\nconst StyledStepProvider = styled(StepProvider)``;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = ContentLayout;\n\nvar _styled = _interopRequireDefault(require(\"@emotion/styled\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _templateObject;\n\nconst _excluded = [\"children\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction ContentLayout(_ref) {\n let {\n children\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/(0, _jsxRuntime.jsx)(Container, _objectSpread(_objectSpread({}, props), {}, {\n children: children\n }));\n}\n\nContentLayout.propTypes = {\n children: _propTypes.default.any.isRequired\n};\n\nconst Container = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n width: 100%;\\n height: 100%;\\n\\n .header {\\n text-align: center;\\n }\\n\\n .body {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n margin-top: 30px;\\n width: 100%;\\n min-height: 200px;\\n flex: 1;\\n\\n \", \" {\\n padding: 24px;\\n }\\n\\n \", \" {\\n padding: 0 16px 16px;\\n }\\n }\\n\\n .footer {\\n display: flex;\\n justify-content: center;\\n\\n \", \" {\\n padding-bottom: 34px;\\n }\\n\\n \", \" {\\n margin-top: auto;\\n padding-bottom: 10px;\\n }\\n }\\n\"])), props => props.theme.breakpoints.up('md'), props => props.theme.breakpoints.down('md'), props => props.theme.breakpoints.up('sm'), props => props.theme.breakpoints.down('md'));","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = HeaderAddon;\n\nvar _react = require(\"react\");\n\nvar _styled = _interopRequireDefault(require(\"@emotion/styled\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _IconButton = _interopRequireDefault(require(\"@mui/material/IconButton\"));\n\nvar _reactRouterDom = require(\"react-router-dom\");\n\nvar _SessionManager = _interopRequireDefault(require(\"@arcblock/did-connect/lib/SessionManager\"));\n\nvar _selector = _interopRequireDefault(require(\"@arcblock/ux/lib/Locale/selector\"));\n\nvar _context = require(\"@arcblock/ux/lib/Locale/context\");\n\nvar _Globe = _interopRequireDefault(require(\"@arcblock/icons/lib/Globe\"));\n\nvar _QuestionMarkCircle = _interopRequireDefault(require(\"@arcblock/icons/lib/QuestionMarkCircle\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _templateObject;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction HeaderAddon(_ref) {\n let {\n SessionContext,\n extraItems,\n showLocale,\n showHelper,\n showSessionManager,\n sessionManagerProps\n } = _ref;\n const {\n session\n } = (0, _react.useContext)(SessionContext);\n const {\n locale\n } = (0, _react.useContext)(_context.LocaleContext);\n const location = (0, _reactRouterDom.useLocation)();\n const docPaths = {\n '/dashboard': '/introduction/abtnode-overview',\n '/store': '/marketplace',\n '/blocklets': '/blocklet',\n '/router/rules': '/router',\n '/router/engine': '/router',\n '/settings/basic': '/misc',\n '/settings/team': '/misc/member-management',\n '/console': '/misc/graphql-console'\n };\n\n const onHelpClick = () => {\n const pathName = location.pathname;\n let path = '';\n\n if (pathName.indexOf('/blocklets') > -1) {\n path = docPaths['/blocklets'];\n } else if (pathName.indexOf('/store') > -1) {\n path = docPaths['/store'];\n } else if (docPaths[pathName]) {\n path = docPaths[pathName];\n }\n\n window.open(\"https://docs.arcblock.io/abtnode/\".concat(locale).concat(path), '_blank');\n };\n\n return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Div, {\n children: [extraItems.map((x, index) => /*#__PURE__*/(0, _react.cloneElement)(x, {\n key: index\n })), showLocale && /*#__PURE__*/(0, _jsxRuntime.jsx)(_selector.default, {\n \"data-cy\": \"locale-addon\",\n icon: _Globe.default,\n size: 23,\n showText: false,\n className: \"locale-addon\"\n }), showHelper && /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {\n onClick: onHelpClick,\n children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_QuestionMarkCircle.default, {})\n }), showSessionManager && /*#__PURE__*/(0, _jsxRuntime.jsx)(_SessionManager.default, _objectSpread({\n session: session,\n size: 24,\n showRole: true\n }, sessionManagerProps))]\n });\n}\n\nHeaderAddon.propTypes = {\n SessionContext: _propTypes.default.object.isRequired,\n webWalletUrl: _propTypes.default.string,\n extraItems: _propTypes.default.array,\n showLocale: _propTypes.default.bool,\n showSessionManager: _propTypes.default.bool,\n showHelper: _propTypes.default.bool,\n sessionManagerProps: _propTypes.default.object\n};\nHeaderAddon.defaultProps = {\n webWalletUrl: '',\n extraItems: [],\n showLocale: true,\n showSessionManager: true,\n showHelper: true,\n sessionManagerProps: {}\n};\n\nconst Div = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n\\n .MuiIconButton-root svg {\\n width: 26px;\\n height: 26px;\\n }\\n\\n .user-addon {\\n .user-avatar {\\n width: 28px;\\n border-radius: 14px;\\n height: auto;\\n }\\n }\\n\\n \", \" {\\n > button,\\n > a {\\n padding-left: 8px;\\n padding-right: 8px;\\n }\\n }\\n\"])), props => props.theme.breakpoints.down('md'));"],"names":["Connect","onNext","useLocaleContext","t","locale","useSessionContext","api","session","onConnect","result","decrypt","setSessionToken","sessionToken","refresh","Toast","message","WrapConnect","popup","open","hideCloseButton","action","checkFn","get","checkTimeout","socketUrl","webWalletUrl","getWebWalletUrl","onSuccess","messages","title","scan","confirm","success","extraParams","setup","defaultProps","styled","DidConnect","ContentLayout","props","theme","breakpoints","up","StepActions","blocklet","onStartNow","children","disabled","hasRequiredSteps","meta","Center","Between","Button","className","variant","color","onClick","Box","display","alignItems","down","StyledButton","Config","onPrevious","isMobile","useMediaQuery","useState","loading","setLoading","editingItem","setEditingItem","useBlockletContext","actions","selfConfigs","configs","filter","x","BLOCKLET_CONFIGURABLE_KEY","key","customColor","environments","find","configurableEnvs","description","value","custom","componentType","componentProps","childrenConfigs","forEachChildSync","b","ancestorDids","ancestors","slice","map","did","push","childDid","concat","sortedConfig","uniqBy","flatten","sort","a","required","missingRequiredConfigs","getAppMissingConfigs","length","onSubmitConfig","config","omit","configBlocklet","defaultValue","schemaList","item","rest","style","marginBottom","subTitle","onClickBack","bottom","mt","refreshFuel","showError","margin","paddingTop","schema","onChange","changeValue","currentItem","includes","isCertInProgress","cert","status","waitForCert","domain","Promise","resolve","reject","timer","setInterval","client","input","clearInterval","addCert","Domain","useContext","LocaleContext","loadingText","setLoadingText","error","setError","ip","setIp","showCertFailed","setShowCertFailed","domains","site","domainAliases","defaultCustomDomain","isProtected","systemDomains","replaceSlotToIp","setDomain","addDomain","secure","sleep","some","id","domainAlias","dryRun","submitDomain","address","data","Error","curDomain","window","location","hostname","generated","useEffect","then","catch","err","console","Dialog","PaperProps","minHeight","showCloseButton","mb","fontWeight","size","textDecoration","component","TextField","marginTop","label","fullWidth","e","target","errMessage","validateDomain","autoFocus","helperText","mx","Container","Layout","PublicInstance","Tooltip","IconButton","InfoOutlined","fontSize","memo","AccessControl","useTheme","setValue","publicToStore","setPublicToStore","getPublicInstance","getWhoCanAccess","submit","whoCanAccess","configWhoCanAccess","handleChange","event","handleCheckBox","isPublic","checked","configPublicToStore","iconStyle","marginRight","verticalAlign","palette","text","secondary","FormControl","RadioGroup","name","AccessConfig","rule","FormControlLabel","control","Radio","icon","WHO_CAN_ACCESS","source","Checkbox","main","Fuel","gas","tokenInfo","setOpen","need","current","owe","deficiency","symbol","endpoint","URL","origin","explorer","replace","appDid","Link","lineHeight","href","joinUrl","underline","Launch","my","onClose","amount","ml","justifyContent","width","Spinner","primary","Complete","setStatus","startupError","setStartupError","recommendedURL","setRecommendedURL","fromLauncher","searchParams","isStopped","isStarting","statusText","stopped","starting","running","visitBlocklet","redirect","startBlocklet","fromSetup","errMsg","response","_setRecommendedURL","evaluateURLs","getAccessUrl","PREFIX","results","url","serverUrl","localStorage","getItem","isButtonLoading","StyledResultMessage","footer","LinkEle","rel","marginLeft","ResultMessage","BlockletSetup","navigate","useNavigate","refreshMeta","refreshBlocklet","saveServerUrl","basePath","WELLKNOWN_SERVICE_PATH_PREFIX","steps","path","hasRequiredEnvironments","requirements","fuels","Boolean","stepIndex","findIndex","pathname","logoUrl","search","index","withSetup","Component","height","clickLogo","logo","ServerLogoNotext","cursor","ServerLogo","totalSteps","splice","StyledStepProvider","Global","styles","launcherGlobalStyle","blockletMeta","getDisplayName","navLogo","pcWidth","useOfSkeleton","headerEndAddons","SessionContext","sessionManagerProps","disableLogout","launchingText","element","to","css","StepProvider","exports","_templateObject","_styled","_interopRequireDefault","require","_propTypes","_jsxRuntime","_excluded","obj","__esModule","default","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","enumerable","apply","_objectSpread","i","arguments","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","configurable","writable","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","sourceSymbolKeys","prototype","propertyIsEnumerable","call","_ref","jsx","propTypes","any","isRequired","strings","raw","div","freeze","HeaderAddon","_react","_IconButton","_reactRouterDom","_SessionManager","_selector","_context","_Globe","_QuestionMarkCircle","extraItems","showLocale","showHelper","showSessionManager","useLocation","docPaths","jsxs","Div","cloneElement","showText","pathName","showRole","string","array","bool"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
(self.webpackChunk_abtnode_blocklet_services=self.webpackChunk_abtnode_blocklet_services||[]).push([[628],{59505:function(e){var t=function(e){return function(t){var n=Object.entries(e).find((function(e){return e[1]===Number(t)}));return n?n[0]:"unknown"}},n=function(e){return function(t){return Object.keys(e).find((function(n){return e[n]===Number(t)}))}},r=Object.freeze({added:0,downloading:1,downloaded:2,installing:3,installed:4,starting:5,running:6,stopping:7,stopped:8,error:9,upgrading:10,restarting:11,corrupted:12,waiting:13,deleted:14}),a=t(r),o=n(r),i=Object.freeze({registry:0,local:1,upload:2,url:3,custom:4}),c=t(i),l=n(i),s=Object.freeze({static:"static",dapp:"dapp",starter:!1,gateway:"gateway"}),u=Object.freeze({added:"blocklet.added",downloadFailed:"blocklet.downloadFailed",installed:"blocklet.installed",installFailed:"blocklet.installFailed",upgraded:"blocklet.upgraded",upgradeFailed:"blocklet.upgradedFailed",downgraded:"blocklet.downgraded",downgradeFailed:"blocklet.downgradedFailed",updated:"blocklet.updated",statusChange:"blocklet.statusChange",removed:"blocklet.removed",started:"blocklet.started",startFailed:"blocklet.startFailed",stopped:"blocklet.stopped",reloaded:"blocklet.reloaded",purchaseChange:"blocklet.purchaseChange"}),d="service",f="wellknown",p=["web",d,f],L="publicUrl",C="wellknownUrl",h=[L],v=[L,C],E="http",m=["tcp","udp",E];e.exports=Object.freeze({BlockletStatus:r,fromBlockletStatus:a,toBlockletStatus:o,BlockletSource:i,fromBlockletSource:c,toBlockletSource:l,BlockletGroup:s,BLOCKLET_GROUPS:["dapp","static","gateway"],BlockletEvents:u,BLOCKLET_PLATFORMS:["aix","darwin","freebsd","linux","openbsd","sunos","win32"],BLOCKLET_ARCHITECTURES:["arm","arm64","ia32","mips","mipsel","ppc","ppc64","s390","s390x","x32","x64"],BLOCKLET_MODES:Object.freeze({PRODUCTION:"production",DEVELOPMENT:"development"}),BLOCKLET_FACTORY_SHARES:{developer:.7,store:.3},BLOCKLET_INTERFACE_PUBLIC:L,BLOCKLET_INTERFACE_WELLKNOWN:C,BLOCKLET_UI_INTERFACES:h,BLOCKLET_STANDARD_INTERFACES:v,BLOCKLET_INTERFACE_TYPE_WEB:"web",BLOCKLET_INTERFACE_TYPE_SERVICE:d,BLOCKLET_INTERFACE_TYPE_WELLKNOWN:f,BLOCKLET_INTERFACE_TYPES:p,BLOCKLET_INTERFACE_PROTOCOL_HTTP:E,BLOCKLET_INTERFACE_PROTOCOL_TCP:"tcp",BLOCKLET_INTERFACE_PROTOCOL_UDP:"udp",BLOCKLET_INTERFACE_PROTOCOLS:m,BLOCKLET_DYNAMIC_PATH_PREFIX:"*",BLOCKLET_DEFAULT_PORT_NAME:"BLOCKLET_PORT",BLOCKLET_DEFAULT_PATH_REWRITE:"/",BLOCKLET_RELEASE_FOLDER:".blocklet/release",BLOCKLET_RELEASE_FILE:"blocklet.json",BLOCKLET_BUNDLE_FOLDER:".blocklet/bundle",BLOCKLET_BUNDLE_FILE:"blocklet.zip",BLOCKLET_ENTRY_FILE:"blocklet.js",BLOCKLET_META_FILE:"blocklet.yml",BLOCKLET_META_FILE_ALT:"blocklet.yaml",BLOCKLET_DEFAULT_VERSION:"1.0.0",BLOCKLET_LATEST_SPEC_VERSION:"1.2.7",BLOCKLET_LATEST_REQUIREMENT_SERVER:">=1.7.0",BLOCKLET_LATEST_REQUIREMENT_ABTNODE:">=1.5.15",BLOCKLET_CONFIGURABLE_KEY:{BLOCKLET_CLUSTER_SIZE:"BLOCKLET_CLUSTER_SIZE",BLOCKLET_APP_NAME:"BLOCKLET_APP_NAME",BLOCKLET_APP_DESCRIPTION:"BLOCKLET_APP_DESCRIPTION",BLOCKLET_APP_SK:"BLOCKLET_APP_SK",BLOCKLET_APP_LOGO:"BLOCKLET_APP_LOGO",BLOCKLET_APP_URL:"BLOCKLET_APP_URL",BLOCKLET_PASSPORT_COLOR:"BLOCKLET_PASSPORT_COLOR",BLOCKLET_WALLET_TYPE:"BLOCKLET_WALLET_TYPE",BLOCKLET_DELETABLE:"BLOCKLET_DELETABLE"}})},52469:function(e,t,n){var r=n(25800),a=r.getNftBGColor,o=r.DEFAULT_COLOR,i=r.getNftBGColorFromDid;e.exports=function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.issuer,r=void 0===n?"":n,c=t.title,l=void 0===c?"":c,s=t.issuerDid,u=void 0===s?"":s,d=t.ownerName,f=void 0===d?"":d,p=t.preferredColor,L=void 0===p?"default":p,C=t.ownerAvatarUrl,h=void 0===C?"":C,v=t.revoked,E=t.isDataUrl,m=t.width,g=void 0===m?"100%":m,_=t.height,T=void 0===_?"100%":_;e="default"===L?o:"auto"===L?i(u):a(L);var w='<svg width="'.concat(g,'" height="').concat(T,'" viewBox="0 0 424 564" fill="none" xmlns="http://www.w3.org/2000/svg">\n<rect x="1" y="1" width="422" height="562" rx="21" fill="url(#paint0_linear_6_342)"/>\n<text x="360" y="65" fill="white" xml:space="preserve" font-family="Roboto,Helvetica" font-size="').concat(l.length>=12?12:l.length>=10?14:l.length>=8?18:l.length>=6?24:28,'" letter-spacing="0px" style="dominant-baseline:middle;text-anchor:middle;">').concat(l.toUpperCase(),'</text>\n<text opacity="0.4" fill="white" xml:space="preserve" style="white-space: pre" font-family="Roboto,Helvetica" font-size="16" font-weight="500" letter-spacing="0px"><tspan x="319" y="40.9688">PASSPORT</tspan></text>\n<text fill="white" xml:space="preserve" style="white-space: pre" font-family="Roboto,Helvetica" font-size="').concat(r.length>15?20:24,'" font-weight="500" letter-spacing="0px"><tspan x="26" y="60.2031">').concat(r,'</tspan></text>\n<rect x="2" y="102" width="420" height="168" fill="black" fill-opacity="0.3"/>\n<circle cx="212" cy="250" r="60" fill="#FBFBFB"/>\n<path fill-rule="evenodd" clip-rule="evenodd" d="M212.224 247.722C218.932 247.722 224.37 242.284 224.37 235.575C224.37 228.867 218.932 223.429 212.224 223.429C205.515 223.429 200.077 228.867 200.077 235.575C200.077 242.284 205.515 247.722 212.224 247.722ZM188.857 272.018C188.857 274.573 190.929 276.645 193.484 276.645H230.962C231.28 276.645 231.597 276.612 231.908 276.547C234.41 276.025 236.014 273.574 235.492 271.072L234.335 265.533C232.991 259.099 227.319 254.489 220.746 254.489H203.7C197.127 254.489 191.455 259.099 190.112 265.533L188.955 271.072C188.89 271.383 188.857 271.7 188.857 272.018Z" fill="#FBFBFB" />\n<path d="M231.908 276.547L232.215 278.016L231.908 276.547ZM235.492 271.072L236.96 270.765H236.96L235.492 271.072ZM234.335 265.533L232.866 265.839L234.335 265.533ZM190.112 265.533L191.58 265.839L190.112 265.533ZM188.955 271.072L187.487 270.765H187.487L188.955 271.072ZM222.87 235.575C222.87 241.455 218.104 246.222 212.224 246.222V249.222C219.761 249.222 225.87 243.112 225.87 235.575H222.87ZM212.224 224.929C218.104 224.929 222.87 229.695 222.87 235.575H225.87C225.87 228.038 219.761 221.929 212.224 221.929V224.929ZM201.577 235.575C201.577 229.695 206.344 224.929 212.224 224.929V221.929C204.687 221.929 198.577 228.038 198.577 235.575H201.577ZM212.224 246.222C206.344 246.222 201.577 241.455 201.577 235.575H198.577C198.577 243.112 204.687 249.222 212.224 249.222V246.222ZM193.484 275.145C191.757 275.145 190.357 273.745 190.357 272.018H187.357C187.357 275.402 190.1 278.145 193.484 278.145V275.145ZM230.962 275.145H193.484V278.145H230.962V275.145ZM231.601 275.079C231.391 275.123 231.177 275.145 230.962 275.145V278.145C231.383 278.145 231.803 278.102 232.215 278.016L231.601 275.079ZM234.023 271.379C234.376 273.069 233.292 274.726 231.601 275.079L232.215 278.016C235.527 277.324 237.652 274.078 236.96 270.765L234.023 271.379ZM232.866 265.839L234.023 271.379L236.96 270.765L235.803 265.226L232.866 265.839ZM220.746 255.989C226.609 255.989 231.668 260.1 232.866 265.839L235.803 265.226C234.314 258.097 228.029 252.989 220.746 252.989V255.989ZM203.7 255.989H220.746V252.989H203.7V255.989ZM191.58 265.839C192.779 260.1 197.838 255.989 203.7 255.989V252.989C196.417 252.989 190.132 258.097 188.643 265.226L191.58 265.839ZM190.423 271.379L191.58 265.839L188.643 265.226L187.487 270.765L190.423 271.379ZM190.357 272.018C190.357 271.803 190.379 271.589 190.423 271.379L187.487 270.765C187.401 271.177 187.357 271.597 187.357 272.018H190.357Z" fill="#BFBFBF" />\n<circle cx="212" cy="250" r="60" fill="url(#raduisImage)"/>\n<defs>\n<pattern id="raduisImage" patternUnits="userSpaceOnUse" width="424" height="564">\n<image x="152" y="190" href="').concat(h,'" width="120" height="120" />\n</pattern>\n</defs>\n<text x="215" y="350" fill="white" xml:space="preserve" style="dominant-baseline:middle;text-anchor:middle;" font-family="Roboto,Helvetica" font-size="28" font-weight="500" letter-spacing="0px">').concat(f,'</text>\n<text opacity="0.4" fill="white" xml:space="preserve" style="white-space: pre" font-family="Roboto,Helvetica" font-size="18" font-weight="500" letter-spacing="0px"><tspan x="26" y="407.652">ISSUER DID</tspan></text>\n<path fill-rule="evenodd" clip-rule="evenodd" d="M28.6722 423.313H45.3819C46.4294 423.313 47.2787 424.162 47.2787 425.21V433.79C47.2787 434.838 46.4294 435.687 45.3819 435.687H28.6722C27.9517 435.687 27.3249 435.285 27.0039 434.694H26.1167C26.4887 435.746 27.4924 436.5 28.6722 436.5H45.3819C46.8784 436.5 48.0916 435.287 48.0916 433.79V425.21C48.0916 423.713 46.8784 422.5 45.3819 422.5H28.6722C27.3296 422.5 26.215 423.477 26 424.758H26.8295C27.0321 423.929 27.7803 423.313 28.6722 423.313ZM27.8801 432.096C27.7831 432.089 27.6966 432.082 27.6204 432.075V427.526C27.7243 427.512 27.8351 427.505 27.9528 427.505C28.0705 427.498 28.1848 427.494 28.2955 427.494C29.1057 427.494 29.6978 427.688 30.0717 428.076C30.4457 428.464 30.6326 429.035 30.6326 429.79C30.6326 430.51 30.4353 431.074 30.0406 431.483C29.6528 431.892 29.0538 432.096 28.2436 432.096H27.8801ZM32.0141 431.421C32.208 430.957 32.305 430.413 32.305 429.79C32.305 429.139 32.208 428.582 32.0141 428.118C31.8202 427.654 31.5432 427.273 31.1832 426.975C30.8231 426.677 30.3903 426.459 29.8848 426.321C29.3862 426.182 28.8288 426.113 28.2125 426.113C27.9216 426.113 27.5719 426.127 27.1634 426.154C26.7617 426.175 26.3739 426.22 26 426.29V433.301C26.3739 433.377 26.7548 433.425 27.1426 433.446C27.5304 433.474 27.8697 433.488 28.1605 433.488C28.7976 433.488 29.3723 433.412 29.8848 433.259C30.3972 433.107 30.83 432.878 31.1832 432.574C31.5432 432.269 31.8202 431.885 32.0141 431.421ZM35.2788 426.196H33.6585V433.394H35.2788V426.196ZM38.5654 432.075C38.6416 432.082 38.7281 432.089 38.8251 432.096H39.1886C39.9988 432.096 40.5978 431.892 40.9856 431.483C41.3803 431.074 41.5776 430.51 41.5776 429.79C41.5776 429.035 41.3907 428.464 41.0167 428.076C40.6428 427.688 40.0507 427.494 39.2405 427.494C39.1298 427.494 39.0155 427.498 38.8978 427.505C38.7801 427.505 38.6693 427.512 38.5654 427.526V432.075ZM43.25 429.79C43.25 430.413 43.153 430.957 42.9591 431.421C42.7652 431.885 42.4882 432.269 42.1282 432.574C41.775 432.878 41.3422 433.107 40.8298 433.259C40.3173 433.412 39.7426 433.488 39.1055 433.488C38.8147 433.488 38.4754 433.474 38.0876 433.446C37.6998 433.425 37.3189 433.377 36.945 433.301V426.29C37.3189 426.22 37.7067 426.175 38.1084 426.154C38.5169 426.127 38.8666 426.113 39.1574 426.113C39.7738 426.113 40.3312 426.182 40.8298 426.321C41.3353 426.459 41.7681 426.677 42.1282 426.975C42.4882 427.273 42.7652 427.654 42.9591 428.118C43.153 428.582 43.25 429.139 43.25 429.79ZM45.1907 428.355C44.8209 428.355 44.5161 428.055 44.5161 427.686C44.5161 427.316 44.8209 427.016 45.1907 427.016C45.5604 427.016 45.8652 427.316 45.8652 427.686C45.8652 428.055 45.5604 428.355 45.1907 428.355ZM45.1907 431.855C44.8209 431.855 44.5161 431.555 44.5161 431.185C44.5161 430.815 44.8209 430.516 45.1907 430.516C45.5604 430.516 45.8652 430.815 45.8652 431.185C45.8652 431.555 45.5604 431.855 45.1907 431.855Z" fill="white"/>\n<text fill="white" xml:space="preserve" style="white-space: pre" font-family="Roboto,Helvetica" font-size="15" font-weight="500" letter-spacing="0px"><tspan x="54.0916" y="434.969">').concat(u,'</tspan></text>\n<rect x="1" y="1" width="422" height="562" rx="21" stroke="#F0F0F0" stroke-width="2"/>\n<defs>\n<linearGradient id="paint0_linear_6_342" x1="414.5" y1="562" x2="-116.166" y2="156.726" gradientUnits="userSpaceOnUse">\n<stop stop-color="').concat(e.startColor,'"/>\n<stop offset="1" stop-color="').concat(e.endColor,'"/>\n</linearGradient>\n</defs>\n').concat(v?'<circle cx="210" cy="250" r="120" stroke="rgba(255,0,0,0.5)" stroke-width="25" /><line x1="132" y1="168" x2="296" y2="323" stroke="rgba(255,0,0,0.5)" stroke-width="25" />':"","\n</svg>");return E?"data:image/svg+xml;utf8,".concat(encodeURIComponent(w)):w}},25800:function(e,t,n){var r=n(2073).toHex,a=n(64029).Hasher,o=function(e){if(e){var t=function(e){var t,n,r=e.replace("#",""),a=parseInt(r.slice(0,2),16)/255,o=parseInt(r.slice(2,4),16)/255,i=parseInt(r.slice(4,6),16)/255,c=Math.max(a,o,i),l=Math.min(a,o,i),s=(c+l)/2;if(c===l)t=0,n=0;else{var u=c-l;switch(n=s>.5?u/(2-c-l):u/(c+l),c){case a:t=(o-i)/u+(o<i?6:0);break;case o:t=(i-a)/u+2;break;case i:t=(a-o)/u+4}t/=6}return[t,n,s]}(e),n=[t[0]];t[1]>.7?n.push(.7):n.push(t[1]),t[2]>.6?n.push(.6):t[2]<.3?n.push(.3):n.push(t[2]);var r=[n[0],n[1],n[2]-.1],a=c.apply(void 0,n);return{startColor:c.apply(void 0,r),endColor:a}}return{startColor:"#2B3845",endColor:"#5A7A8A"}};function i(e){return"#".concat(r(a.SHA3.hash224(e)).slice(-6))}function c(e,t,n){var r,a,o;if(0===t)r=n,a=n,o=n;else{var i=function(e,t,n){var r=n;return r<0&&(r+=1),r>1&&(r-=1),r<1/6?e+6*(t-e)*r:r<.5?t:r<2/3?e+(t-e)*(2/3-r)*6:e},c=n<.5?n*(1+t):n+t-n*t,l=2*n-c;r=i(l,c,e+1/3),a=i(l,c,e),o=i(l,c,e-1/3)}return"#".concat([Math.round(255*r),Math.round(255*a),Math.round(255*o)].map((function(e){return e.toString(16).padStart(2,0)})).join(""))}e.exports={getNftBGColor:o,getNftBGColorFromDid:function(e){return o(i(e))},DEFAULT_COLOR:{startColor:"#2B3845",endColor:"#5A7A8A"},getPassportColorFromDid:i}},31419:function(e,t,n){var r=n(95803).default;e.exports=r},67626:function(e,t,n){var r=n(27609).default,a=n(91461).default;e.exports=function(){var e=a(r().mark((function e(t){var n,a,o,i=arguments;return r().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=i.length>1&&void 0!==i[1]?i[1]:5e3,e.prev=1,o=new AbortController,a=setTimeout((function(){return o.abort()}),n),e.next=6,fetch(t,{method:"HEAD",mode:"no-cors",signal:o.signal});case 6:return e.abrupt("return",!0);case 9:return e.prev=9,e.t0=e.catch(1),e.abrupt("return",!1);case 12:return e.prev=12,clearTimeout(a),e.finish(12);case 15:case"end":return e.stop()}}),e,null,[[1,9,12,15]])})));return function(t){return e.apply(this,arguments)}}()},67615:function(e,t,n){var r=n(27609).default,a=n(91461).default,o=n(67626),i=function(e){return/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/.test(e)},c=function(e){return e.endsWith(".ip.abtnet.io")},l=function(e){return!c(e)&&!e.endsWith(".did.abtnet.io")&&!i(e)},s=function(){var e=a(r().mark((function e(t){var n,a,s,u,d,f,p,L,C,h,v,E=arguments;return r().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=E.length>1&&void 0!==E[1]?E[1]:{},a=n.timeout,s=void 0===a?5e3:a,u=n.checkAccessible,d=void 0===u?o:u,f=new URL(t),p=f.protocol,L=f.port,C=f.hostname,h="https:"===p?1e3:0,l(C)?(h+=3e4,h-=C.split(".").length):(c(C)&&(h+=20),i(C)&&(h+=1),L&&(h-=1)),v=!1,!d){e.next=11;break}return e.next=9,d(t,s);case 9:(v=e.sent)||(h-=2e4);case 11:return e.abrupt("return",{url:t,score:h,accessible:v});case 12:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),u=function(){var e=a(r().mark((function e(t){var n,o,i=arguments;return r().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=i.length>1&&void 0!==i[1]?i[1]:{},e.next=3,Promise.all(t.map(function(){var e=a(r().mark((function e(t){return r().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,s(t,n);case 3:return e.abrupt("return",e.sent);case 6:return e.prev=6,e.t0=e.catch(0),console.error(e.t0),e.abrupt("return",{url:t,score:Number.MIN_SAFE_INTEGER,accessible:!1});case 10:case"end":return e.stop()}}),e,null,[[0,6]])})));return function(t){return e.apply(this,arguments)}}()));case 3:if(o=e.sent,!1!==n.sort){e.next=6;break}return e.abrupt("return",o);case 6:return e.abrupt("return",o.sort((function(e,t){return t.score-e.score})));case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();e.exports={evaluateURL:s,evaluateURLs:u}},85710:function(e,t,n){"use strict";var r=n(27609).default,a=n(91461).default,o=n(43681).default;Object.defineProperty(t,"__esModule",{value:!0}),t.checkIsWildcardDomain=t.checkInputByType=t.appendParams=t.BlockletAdminRoles=t.APP_PREFIX=void 0,t.deepDecodeURIComponent=I,t.extractStatusUrlFromNextWorkflow=function(e){var t=new URL(I(e)).searchParams.get("url");return{statusUrl:t.replace("/auth?","/status?"),token:new URL(t).searchParams.get("_t_")}},t.formatDateTime=function(e){return(0,c.default)(e).format("YYYY-MM-DD HH:mm")},t.formatError=t.formatDiskSize=void 0,t.formatFactoryPrice=function(e){var t;if(null===e||void 0===e||!e.payment)return[];return((null===(t=e.payment)||void 0===t?void 0:t.price)||[]).map((function(e){return{name:e.symbol,value:e.value}}))},t.formatRegistryScreenshotPath=t.formatRegistryLogoPath=t.formatPerson=t.formatLocale=void 0,t.formatTime=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"lll";if(!e)return"-";return(0,d.default)(e).format(t)},t.formatTimeFromNow=function(e){if(!e)return"-";var t=(0,d.default)(e);return(0,d.default)().diff(t,"day")>3?w(e):t.fromNow()},t.formatTimestamp=function(e){if(!e)return"-";var t;Number(e).toString()===e?(t=new Date).setTime(e):t=new Date(e);return t.toLocaleString()},t.formatToDate=w,t.formatToDatetime=function(e){if(!e)return"-";return(0,d.default)(e).format("lll")},t.formatUrl=void 0,t.getAccessUrl=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;if(!e)return"";var r="http";"https:"===window.location.protocol&&(e.endsWith(i.DEFAULT_IP_DOMAIN_SUFFIX)&&(r="https"),e.endsWith(i.DEFAULT_DID_DOMAIN)&&(r="https"));var a="",o=Number(window.location.port);o&&![80,443].includes(o)&&(a=":".concat(o));var c=new URL("".concat(r,"://").concat(e).concat(a));c.pathname=t;var l=c.href.replace(/\/$/,"");if(!n||!Object.keys(n))return l;var s=new URLSearchParams;return Object.keys(n).forEach((function(e){s.append(e,n[e])})),"".concat(l,"?").concat(s.toString())},t.getAccessibleUrl=void 0,t.getAsset=k,t.getAssetExpiration=function(e,t){return x.apply(this,arguments)},t.getBlockletLogoUrl=void 0,t.getBlockletMetaUrl=function(e,t){return(0,L.default)(e,"/api/blocklets/".concat(t,"/blocklet.json?source=webapp"))},t.getEndPoint=t.getBlockletUrlParams=t.getBlockletServices=void 0,t.getExplorerLink=function(e,t,n){if(!e)return;try{var r=new URL(e);switch(n){case"account":r.pathname="/explorer/accounts/".concat(t);break;case"tx":r.pathname="/explorer/txs/".concat(t);break;case"token":r.pathname="/explorer/tokens/".concat(t);break;case"factory":r.pathname="/explorer/factories/".concat(t);break;case"bridge":r.pathname="/explorer/bridges/".concat(t);break;default:r.pathname="/"}return r.href}catch(a){return}},t.getPathPrefix=t.getIssuePassportLink=t.getInviteLink=void 0,t.getRelativeTime=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"en";return(0,d.default)(e).locale(O(t)).fromNow().toString()},t.getWebWalletUrl=function(e){try{var t=window.localStorage.getItem("wallet_url");if(t)return t}catch(n){}return e&&e.webWalletUrl?e.webWalletUrl:""},t.isNewRegistryUrl=t.isInstalling=t.isInProgress=t.isDownloading=t.isChrome=t.isCertificateMatch=t.isBlockletDev=void 0,t.isProtectedRole=function(e){return Object.values(i.ROLES).includes(e)},t.isUrlAccessible=t.isSafari=void 0,t.isValidClusterSize=function(e){var t=e.value,n=e.cpuCores;if(!t)return"";var r=Number(t);if(Number.isNaN(r))return"Cluster size should be a number";if(!Number.isInteger(r))return"Cluster size should be integer";if(r<=0||r>n)return"Cluster size should between 1 to ".concat(n);return""},t.parseQuery=void 0,t.patchJsxToLocale=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.split(/{{|}}/).map((function(e){return t[e]?t[e]instanceof Function?t[e]():t[e]:e})).filter(Boolean)},t.shouldCheckDomainStatus=void 0,t.sleep=function(e){return new Promise((function(t){return setTimeout(t,e)}))},t.validateDomain=t.stringSortHandlerAsc=void 0;var i=n(20244),c=T(n(74268));n(9054);var l,s=T(n(61301)),u=T(n(92522)),d=T(n(92426)),f=T(n(63784)),p=T(n(99237)),L=T(n(19611)),C=T(n(46292)),h=T(n(99985)),v=T(n(18930)),E=n(59505),m=n(67615),g=T(n(67626)),_=T(n(31419));function T(e){return e&&e.__esModule?e:{default:e}}function w(e){return e?(0,d.default)(e).format("ll"):"-"}t.validateDomain=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"en";return e?e.endsWith(i.DEFAULT_IP_DOMAIN_SUFFIX)?{en:"Site domain cannot include ".concat(i.DEFAULT_IP_DOMAIN_SUFFIX),zh:"\u7ad9\u70b9\u57df\u540d\u4e0d\u80fd\u5305\u542b ".concat(i.DEFAULT_IP_DOMAIN_SUFFIX)}[t]:null:{en:"Site domain cannot be empty",zh:"\u7ad9\u70b9\u57df\u540d\u4e0d\u80fd\u4e3a\u7a7a"}[t]};t.formatError=function(e){return Array.isArray(e.errors)?e.errors.map((function(e){return e.message})).join("\n"):e.message};var O=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"en";return"zh"===e?"zh_CN":e};t.formatLocale=O;var b=function(e){return e.replace(/^\?/,"").split("&").map((function(e){return e.split("=")})).filter((function(e){return!!o(e,1)[0]})).reduce((function(e,t){var n=t[0],r=decodeURIComponent(t[1])||!0;return e[n]=r,e}),{})};t.parseQuery=b;t.appendParams=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.split("?"),r=o(n,2),a=r[0],i=r[1],c=void 0===i?"":i,l=b(c),u=Object.assign({},l,t);return"".concat(a,"?").concat(s.default.stringify(u))};t.isInProgress=function(e){return["waiting","downloading","starting","installing","stopping","upgrading","restarting","deleting"].includes(e)};t.isInstalling=function(e){return["waiting","downloading","installing","upgrading"].includes(e)};t.isDownloading=function(e){return["waiting","downloading"].includes(e)};t.formatDiskSize=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n="linux"===t?2:10;return(0,p.default)(e,{base:n,round:2})};t.checkInputByType=function(e,t){var n={url:u.default};return!e||!!n[e]&&n[e](t)};t.formatUrl=function(e){return(0,f.default)(e.split("?").shift())};t.formatPerson=function(e){if(!e)return"-";if("string"===typeof e)return e;var t=e.name||"",n=e.url||e.web,r=n?" (".concat(n,")"):"",a=e.email||e.mail;return t+(a?" <".concat(a,">"):"")+r};t.getBlockletServices=function(e){var t=[];return(e.meta.interfaces||[]).filter((function(e){return e.type===E.BLOCKLET_INTERFACE_TYPE_SERVICE})).forEach((function(n){t.push({name:n.name,protocol:n.protocol,port:Number(n.port.external),upstreamPort:Number(e.ports[n.port.internal])})})),t};t.shouldCheckDomainStatus=function(e){return e&&![i.DOMAIN_FOR_IP_SITE,i.DOMAIN_FOR_IP_SITE_REGEXP,i.DOMAIN_FOR_DEFAULT_SITE,i.DOMAIN_FOR_INTERNAL_SITE].includes(e)};t.checkIsWildcardDomain=function(e){try{if(!e)return!1;var t=e.startsWith("http")?e:"http://".concat(e),n=new window.URL(t);return decodeURIComponent(n.host).split(".").some((function(e){return"*"===e}))}catch(r){return console.error(e,r),!1}};t.stringSortHandlerAsc=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return e>t?1:t>e?-1:0};t.getEndPoint=function(e){var t=e.routing,n=window.location,r=(n.protocol,n.hostname,n.origin);n.port;return"".concat(r).concat(t.adminPath)};t.getInviteLink=function(e){var t=e.inviteId,n=e.endpoint;if(!n)return"";var r=new URL(n);return r.pathname=(0,L.default)(r.pathname,i.WELLKNOWN_SERVICE_PATH_PREFIX,"invite"),r.searchParams.set("inviteId",t),r.href};t.getIssuePassportLink=function(e){var t=e.id,n=e.endpoint;if(!n)return"";var r=new URL(n);return r.pathname=(0,L.default)(r.pathname,i.WELLKNOWN_SERVICE_PATH_PREFIX,"issue-passport"),r.searchParams.set("id",t),r.href};t.formatRegistryScreenshotPath=function(e,t){return t.startsWith("/assets")?t:"/assets/".concat(e,"/screenshots/").concat(t)};var R=function(e,t){return t.startsWith("/assets")?t:"/assets/".concat(e,"/").concat(t)};t.formatRegistryLogoPath=R;t.getBlockletLogoUrl=function(e){var t=e.did,n=e.baseUrl,r=e.logoPath;if(n.startsWith("http")&&r)return(0,L.default)(n,R(t,r));var a=(window.env.apiPrefix||"/").replace(/^\/+/,"").replace(/\/+$/,"");return a&&(a="/".concat(a)),(0,L.default)(a,"/blocklet/logo/".concat(t))};t.getPathPrefix=function(){return window.env&&window.env.apiPrefix?window.env.apiPrefix:"/"};var P=function(){var e=a(r().mark((function e(t){return r().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,g.default)((0,L.default)(new URL(t).origin,i.WELLKNOWN_PING_PREFIX)));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();t.isUrlAccessible=P;var A=function(){var e=a(r().mark((function e(t){var n;return r().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,(0,m.evaluateURLs)(t);case 3:return n=e.sent,e.abrupt("return",n[0].url);case 7:return e.prev=7,e.t0=e.catch(0),console.warn("get accessible url failed"),e.abrupt("return","");case 11:case"end":return e.stop()}}),e,null,[[0,7]])})));return function(t){return e.apply(this,arguments)}}();t.getAccessibleUrl=A;t.isCertificateMatch=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];try{return t.map((function(e){return e.domain})).some((function(t){return e.some((function(e){return new window.URL(e).hostname===t}))}))}catch(n){return console.warn("domain match failed"),!1}};t.getBlockletUrlParams=function(e,t){return"running"===(e||{}).status?{locale:t}:{locale:t,__start__:1}};t.isSafari=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.navigator.userAgent;return e.includes("iPhone")||e.includes("Safari")&&!e.includes("Chrome")};function I(e){for(var t=decodeURIComponent(e);t!==decodeURIComponent(t);)t=decodeURIComponent(t);return t}function k(e,t){return B.apply(this,arguments)}function B(){return(B=a(r().mark((function e(t,n){var a,o;return r().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,_.default.post((0,L.default)(t,"/api/gql/"),JSON.stringify({query:'{\n getAssetState(address: "'.concat(n,'") {\n state {\n address\n data {\n typeUrl\n value\n }\n issuer\n owner\n parent\n }\n }\n }')}),{headers:{"Content-Type":"application/json",Accept:"application/json"},timeout:6e4});case 2:return a=e.sent,(o=(0,C.default)(a.data,"data.getAssetState.state"))&&"json"===o.data.typeUrl&&(o.data.value=JSON.parse(o.data.value)),e.abrupt("return",o);case 6:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function x(){return(x=a(r().mark((function e(t,n){var a;return r().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,k(t,n);case 2:return a=e.sent,e.abrupt("return",(0,h.default)((0,C.default)(a,"data.value.expirationDate",[])));case 4:case"end":return e.stop()}}),e)})))).apply(this,arguments)}t.isChrome=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.navigator.userAgent;return e.includes("Chrome")};t.isNewRegistryUrl=function(e,t){if("string"===typeof e){var n=decodeURIComponent(null===e||void 0===e?void 0:e.trim());/^https?:\/\//.test(n)||(n="https://".concat(n)),n=(0,v.default)(n,"/");try{new URL(n)}catch(r){throw new Error("Invalid Blocklet Store URL")}return null!==t&&void 0!==t&&t.some((function(t){return[e,n].includes(t.url)}))?{isNew:!1,decoded:n}:{isNew:!0,decoded:n}}return{isNew:!1,decoded:""}};t.isBlockletDev=function(e){return e.mode===E.BLOCKLET_MODES.DEVELOPMENT};var S=(null===(l=window.env)||void 0===l?void 0:l.groupPathPrefix)||"/";t.APP_PREFIX=S;var y=[i.ROLES.ADMIN,i.ROLES.OWNER];t.BlockletAdminRoles=y},33196:function(){},38087:function(){},8092:function(){},50936:function(){},74854:function(){},66602:function(){}}]);
|
|
2
|
+
//# sourceMappingURL=628.78b77407.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static/js/628.78b77407.chunk.js","mappings":"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","sources":["../../../blocklet/constant/index.js","../../auth/lib/util/create-passport-svg.js","../../auth/lib/util/passport-color.js","../../util/lib/axios.js","../../util/lib/url-evaluation/check-accessible-browser.js","../../util/lib/url-evaluation/index.js","../../ux/lib/util/index.js"],"sourcesContent":["const fromEntry = (entries) => (v) => {\n const match = Object.entries(entries).find((x) => x[1] === Number(v));\n return match ? match[0] : 'unknown';\n};\n\nconst toEntry = (entries) => (v) => Object.keys(entries).find((x) => entries[x] === Number(v));\n\n// Blocklet Status\n\nconst BlockletStatus = Object.freeze({\n added: 0,\n downloading: 1,\n downloaded: 2, // Deprecated\n installing: 3,\n installed: 4,\n starting: 5,\n running: 6,\n stopping: 7,\n stopped: 8,\n error: 9,\n upgrading: 10,\n restarting: 11, // Deprecated\n corrupted: 12,\n waiting: 13,\n deleted: 14,\n});\n\nconst fromBlockletStatus = fromEntry(BlockletStatus);\nconst toBlockletStatus = toEntry(BlockletStatus);\n\n// Blocklet Source\n\nconst BlockletSource = Object.freeze({\n // Installed from Blocklet Store\n registry: 0,\n\n // Installed from local development source folder\n local: 1,\n\n // Installed from uploading bundle directly\n upload: 2,\n\n // Installed from a url (similar to Blocklet Store)\n url: 3,\n\n // Installed by custom creation\n custom: 4,\n});\n\nconst fromBlockletSource = fromEntry(BlockletSource);\nconst toBlockletSource = toEntry(BlockletSource);\n\n// Blocklet Group(Type)\n\nconst BlockletGroup = Object.freeze({\n // Only static website\n // The website is served by by Blocklet Server at runtime\n static: 'static',\n\n // The runtime instance is provided by its own backend server\n dapp: 'dapp',\n\n starter: false, // deprecated\n\n // This type is used to combine other component blocklets\n // No instance will be spawned at runtime\n gateway: 'gateway',\n});\n\nconst BLOCKLET_GROUPS = ['dapp', 'static', 'gateway'];\n\n// Blocklet Events\n\nconst BlockletEvents = Object.freeze({\n added: 'blocklet.added',\n downloadFailed: 'blocklet.downloadFailed',\n installed: 'blocklet.installed',\n installFailed: 'blocklet.installFailed',\n upgraded: 'blocklet.upgraded',\n upgradeFailed: 'blocklet.upgradedFailed',\n downgraded: 'blocklet.downgraded',\n downgradeFailed: 'blocklet.downgradedFailed',\n updated: 'blocklet.updated',\n statusChange: 'blocklet.statusChange',\n removed: 'blocklet.removed',\n started: 'blocklet.started',\n startFailed: 'blocklet.startFailed',\n stopped: 'blocklet.stopped',\n reloaded: 'blocklet.reloaded', // Deprecated\n purchaseChange: 'blocklet.purchaseChange',\n});\n\n// Blocklet Interface\n\nconst BLOCKLET_INTERFACE_TYPE_WEB = 'web';\nconst BLOCKLET_INTERFACE_TYPE_SERVICE = 'service';\n\n// Wellknown interface declares an sub-interface under web interface\n// The path of the wellknown interface must starts with /.well-known, e.g. /.well-known/acme-challenge)\n// The wellknown interface can be mounted to every endpoint of the abtnode and all blocklets on the abtnode\nconst BLOCKLET_INTERFACE_TYPE_WELLKNOWN = 'wellknown';\nconst BLOCKLET_INTERFACE_TYPES = [\n BLOCKLET_INTERFACE_TYPE_WEB,\n BLOCKLET_INTERFACE_TYPE_SERVICE,\n BLOCKLET_INTERFACE_TYPE_WELLKNOWN,\n];\n\nconst BLOCKLET_INTERFACE_PUBLIC = 'publicUrl';\nconst BLOCKLET_INTERFACE_WELLKNOWN = 'wellknownUrl'; // Deprecated\nconst BLOCKLET_UI_INTERFACES = [BLOCKLET_INTERFACE_PUBLIC];\nconst BLOCKLET_STANDARD_INTERFACES = [BLOCKLET_INTERFACE_PUBLIC, BLOCKLET_INTERFACE_WELLKNOWN];\n\nconst BLOCKLET_INTERFACE_PROTOCOL_HTTP = 'http';\nconst BLOCKLET_INTERFACE_PROTOCOL_TCP = 'tcp';\nconst BLOCKLET_INTERFACE_PROTOCOL_UDP = 'udp';\nconst BLOCKLET_INTERFACE_PROTOCOLS = [\n BLOCKLET_INTERFACE_PROTOCOL_TCP,\n BLOCKLET_INTERFACE_PROTOCOL_UDP,\n BLOCKLET_INTERFACE_PROTOCOL_HTTP,\n];\n\nmodule.exports = Object.freeze({\n BlockletStatus,\n fromBlockletStatus,\n toBlockletStatus,\n\n BlockletSource,\n fromBlockletSource,\n toBlockletSource,\n\n BlockletGroup,\n BLOCKLET_GROUPS,\n\n BlockletEvents,\n\n BLOCKLET_PLATFORMS: ['aix', 'darwin', 'freebsd', 'linux', 'openbsd', 'sunos', 'win32'],\n BLOCKLET_ARCHITECTURES: ['arm', 'arm64', 'ia32', 'mips', 'mipsel', 'ppc', 'ppc64', 's390', 's390x', 'x32', 'x64'],\n\n BLOCKLET_MODES: Object.freeze({\n PRODUCTION: 'production',\n DEVELOPMENT: 'development',\n }),\n\n BLOCKLET_FACTORY_SHARES: { developer: 0.7, store: 0.3 },\n\n // interface\n BLOCKLET_INTERFACE_PUBLIC,\n BLOCKLET_INTERFACE_WELLKNOWN, // Deprecated\n BLOCKLET_UI_INTERFACES,\n BLOCKLET_STANDARD_INTERFACES,\n\n BLOCKLET_INTERFACE_TYPE_WEB,\n BLOCKLET_INTERFACE_TYPE_SERVICE,\n BLOCKLET_INTERFACE_TYPE_WELLKNOWN,\n BLOCKLET_INTERFACE_TYPES,\n\n BLOCKLET_INTERFACE_PROTOCOL_HTTP,\n BLOCKLET_INTERFACE_PROTOCOL_TCP,\n BLOCKLET_INTERFACE_PROTOCOL_UDP,\n BLOCKLET_INTERFACE_PROTOCOLS,\n\n BLOCKLET_DYNAMIC_PATH_PREFIX: '*',\n BLOCKLET_DEFAULT_PORT_NAME: 'BLOCKLET_PORT',\n BLOCKLET_DEFAULT_PATH_REWRITE: '/',\n\n // bundle\n BLOCKLET_RELEASE_FOLDER: '.blocklet/release',\n BLOCKLET_RELEASE_FILE: 'blocklet.json',\n BLOCKLET_BUNDLE_FOLDER: '.blocklet/bundle',\n BLOCKLET_BUNDLE_FILE: 'blocklet.zip',\n BLOCKLET_ENTRY_FILE: 'blocklet.js',\n BLOCKLET_META_FILE: 'blocklet.yml',\n BLOCKLET_META_FILE_ALT: 'blocklet.yaml',\n\n BLOCKLET_DEFAULT_VERSION: '1.0.0',\n\n BLOCKLET_LATEST_SPEC_VERSION: '1.2.7',\n BLOCKLET_LATEST_REQUIREMENT_SERVER: '>=1.7.0',\n BLOCKLET_LATEST_REQUIREMENT_ABTNODE: '>=1.5.15', // Deprecated\n\n BLOCKLET_CONFIGURABLE_KEY: {\n BLOCKLET_CLUSTER_SIZE: 'BLOCKLET_CLUSTER_SIZE',\n BLOCKLET_APP_NAME: 'BLOCKLET_APP_NAME',\n BLOCKLET_APP_DESCRIPTION: 'BLOCKLET_APP_DESCRIPTION',\n BLOCKLET_APP_SK: 'BLOCKLET_APP_SK',\n BLOCKLET_APP_LOGO: 'BLOCKLET_APP_LOGO',\n BLOCKLET_APP_URL: 'BLOCKLET_APP_URL',\n BLOCKLET_PASSPORT_COLOR: 'BLOCKLET_PASSPORT_COLOR',\n BLOCKLET_WALLET_TYPE: 'BLOCKLET_WALLET_TYPE',\n BLOCKLET_DELETABLE: 'BLOCKLET_DELETABLE',\n },\n});\n","const { getNftBGColor, DEFAULT_COLOR, getNftBGColorFromDid } = require('./passport-color');\n\n/**\n * Generate Passport SVG\n *\n * @param {string} title passport title\n * @param {string} issuer issuer name\n * @param {string} issuerDid\n * @param {boolean} ownerName\n * @param {string} preferredColor\n * @param {boolean} ownerAvatarUrl\n * @param {boolean} revoked 是否撤销\n * @param {boolean} isDataUrl 返回生成 data url\n * @returns {string} svg xml or image data url\n */\nconst createPassportSvg = ({\n issuer = '',\n title = '',\n issuerDid = '',\n ownerName = '',\n preferredColor = 'default',\n ownerAvatarUrl = '',\n revoked,\n isDataUrl,\n width = '100%',\n height = '100%',\n} = {}) => {\n let colors;\n if (preferredColor === 'default') {\n colors = DEFAULT_COLOR;\n } else if (preferredColor === 'auto') {\n colors = getNftBGColorFromDid(issuerDid);\n } else {\n colors = getNftBGColor(preferredColor);\n }\n\n const svgXML = `<svg width=\"${width}\" height=\"${height}\" viewBox=\"0 0 424 564\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<rect x=\"1\" y=\"1\" width=\"422\" height=\"562\" rx=\"21\" fill=\"url(#paint0_linear_6_342)\"/>\n<text x=\"360\" y=\"65\" fill=\"white\" xml:space=\"preserve\" font-family=\"Roboto,Helvetica\" font-size=\"${(() => {\n if (title.length >= 12) {\n return 12;\n }\n\n if (title.length >= 10) {\n return 14;\n }\n\n if (title.length >= 8) {\n return 18;\n }\n\n if (title.length >= 6) {\n return 24;\n }\n\n return 28;\n })()}\" letter-spacing=\"0px\" style=\"dominant-baseline:middle;text-anchor:middle;\">${title.toUpperCase()}</text>\n<text opacity=\"0.4\" fill=\"white\" xml:space=\"preserve\" style=\"white-space: pre\" font-family=\"Roboto,Helvetica\" font-size=\"16\" font-weight=\"500\" letter-spacing=\"0px\"><tspan x=\"319\" y=\"40.9688\">PASSPORT</tspan></text>\n<text fill=\"white\" xml:space=\"preserve\" style=\"white-space: pre\" font-family=\"Roboto,Helvetica\" font-size=\"${(() => {\n if (issuer.length > 15) {\n return 20;\n }\n\n return 24;\n })()}\" font-weight=\"500\" letter-spacing=\"0px\"><tspan x=\"26\" y=\"60.2031\">${issuer}</tspan></text>\n<rect x=\"2\" y=\"102\" width=\"420\" height=\"168\" fill=\"black\" fill-opacity=\"0.3\"/>\n<circle cx=\"212\" cy=\"250\" r=\"60\" fill=\"#FBFBFB\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M212.224 247.722C218.932 247.722 224.37 242.284 224.37 235.575C224.37 228.867 218.932 223.429 212.224 223.429C205.515 223.429 200.077 228.867 200.077 235.575C200.077 242.284 205.515 247.722 212.224 247.722ZM188.857 272.018C188.857 274.573 190.929 276.645 193.484 276.645H230.962C231.28 276.645 231.597 276.612 231.908 276.547C234.41 276.025 236.014 273.574 235.492 271.072L234.335 265.533C232.991 259.099 227.319 254.489 220.746 254.489H203.7C197.127 254.489 191.455 259.099 190.112 265.533L188.955 271.072C188.89 271.383 188.857 271.7 188.857 272.018Z\" fill=\"#FBFBFB\" />\n<path d=\"M231.908 276.547L232.215 278.016L231.908 276.547ZM235.492 271.072L236.96 270.765H236.96L235.492 271.072ZM234.335 265.533L232.866 265.839L234.335 265.533ZM190.112 265.533L191.58 265.839L190.112 265.533ZM188.955 271.072L187.487 270.765H187.487L188.955 271.072ZM222.87 235.575C222.87 241.455 218.104 246.222 212.224 246.222V249.222C219.761 249.222 225.87 243.112 225.87 235.575H222.87ZM212.224 224.929C218.104 224.929 222.87 229.695 222.87 235.575H225.87C225.87 228.038 219.761 221.929 212.224 221.929V224.929ZM201.577 235.575C201.577 229.695 206.344 224.929 212.224 224.929V221.929C204.687 221.929 198.577 228.038 198.577 235.575H201.577ZM212.224 246.222C206.344 246.222 201.577 241.455 201.577 235.575H198.577C198.577 243.112 204.687 249.222 212.224 249.222V246.222ZM193.484 275.145C191.757 275.145 190.357 273.745 190.357 272.018H187.357C187.357 275.402 190.1 278.145 193.484 278.145V275.145ZM230.962 275.145H193.484V278.145H230.962V275.145ZM231.601 275.079C231.391 275.123 231.177 275.145 230.962 275.145V278.145C231.383 278.145 231.803 278.102 232.215 278.016L231.601 275.079ZM234.023 271.379C234.376 273.069 233.292 274.726 231.601 275.079L232.215 278.016C235.527 277.324 237.652 274.078 236.96 270.765L234.023 271.379ZM232.866 265.839L234.023 271.379L236.96 270.765L235.803 265.226L232.866 265.839ZM220.746 255.989C226.609 255.989 231.668 260.1 232.866 265.839L235.803 265.226C234.314 258.097 228.029 252.989 220.746 252.989V255.989ZM203.7 255.989H220.746V252.989H203.7V255.989ZM191.58 265.839C192.779 260.1 197.838 255.989 203.7 255.989V252.989C196.417 252.989 190.132 258.097 188.643 265.226L191.58 265.839ZM190.423 271.379L191.58 265.839L188.643 265.226L187.487 270.765L190.423 271.379ZM190.357 272.018C190.357 271.803 190.379 271.589 190.423 271.379L187.487 270.765C187.401 271.177 187.357 271.597 187.357 272.018H190.357Z\" fill=\"#BFBFBF\" />\n<circle cx=\"212\" cy=\"250\" r=\"60\" fill=\"url(#raduisImage)\"/>\n<defs>\n<pattern id=\"raduisImage\" patternUnits=\"userSpaceOnUse\" width=\"424\" height=\"564\">\n<image x=\"152\" y=\"190\" href=\"${ownerAvatarUrl}\" width=\"120\" height=\"120\" />\n</pattern>\n</defs>\n<text x=\"215\" y=\"350\" fill=\"white\" xml:space=\"preserve\" style=\"dominant-baseline:middle;text-anchor:middle;\" font-family=\"Roboto,Helvetica\" font-size=\"28\" font-weight=\"500\" letter-spacing=\"0px\">${ownerName}</text>\n<text opacity=\"0.4\" fill=\"white\" xml:space=\"preserve\" style=\"white-space: pre\" font-family=\"Roboto,Helvetica\" font-size=\"18\" font-weight=\"500\" letter-spacing=\"0px\"><tspan x=\"26\" y=\"407.652\">ISSUER DID</tspan></text>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28.6722 423.313H45.3819C46.4294 423.313 47.2787 424.162 47.2787 425.21V433.79C47.2787 434.838 46.4294 435.687 45.3819 435.687H28.6722C27.9517 435.687 27.3249 435.285 27.0039 434.694H26.1167C26.4887 435.746 27.4924 436.5 28.6722 436.5H45.3819C46.8784 436.5 48.0916 435.287 48.0916 433.79V425.21C48.0916 423.713 46.8784 422.5 45.3819 422.5H28.6722C27.3296 422.5 26.215 423.477 26 424.758H26.8295C27.0321 423.929 27.7803 423.313 28.6722 423.313ZM27.8801 432.096C27.7831 432.089 27.6966 432.082 27.6204 432.075V427.526C27.7243 427.512 27.8351 427.505 27.9528 427.505C28.0705 427.498 28.1848 427.494 28.2955 427.494C29.1057 427.494 29.6978 427.688 30.0717 428.076C30.4457 428.464 30.6326 429.035 30.6326 429.79C30.6326 430.51 30.4353 431.074 30.0406 431.483C29.6528 431.892 29.0538 432.096 28.2436 432.096H27.8801ZM32.0141 431.421C32.208 430.957 32.305 430.413 32.305 429.79C32.305 429.139 32.208 428.582 32.0141 428.118C31.8202 427.654 31.5432 427.273 31.1832 426.975C30.8231 426.677 30.3903 426.459 29.8848 426.321C29.3862 426.182 28.8288 426.113 28.2125 426.113C27.9216 426.113 27.5719 426.127 27.1634 426.154C26.7617 426.175 26.3739 426.22 26 426.29V433.301C26.3739 433.377 26.7548 433.425 27.1426 433.446C27.5304 433.474 27.8697 433.488 28.1605 433.488C28.7976 433.488 29.3723 433.412 29.8848 433.259C30.3972 433.107 30.83 432.878 31.1832 432.574C31.5432 432.269 31.8202 431.885 32.0141 431.421ZM35.2788 426.196H33.6585V433.394H35.2788V426.196ZM38.5654 432.075C38.6416 432.082 38.7281 432.089 38.8251 432.096H39.1886C39.9988 432.096 40.5978 431.892 40.9856 431.483C41.3803 431.074 41.5776 430.51 41.5776 429.79C41.5776 429.035 41.3907 428.464 41.0167 428.076C40.6428 427.688 40.0507 427.494 39.2405 427.494C39.1298 427.494 39.0155 427.498 38.8978 427.505C38.7801 427.505 38.6693 427.512 38.5654 427.526V432.075ZM43.25 429.79C43.25 430.413 43.153 430.957 42.9591 431.421C42.7652 431.885 42.4882 432.269 42.1282 432.574C41.775 432.878 41.3422 433.107 40.8298 433.259C40.3173 433.412 39.7426 433.488 39.1055 433.488C38.8147 433.488 38.4754 433.474 38.0876 433.446C37.6998 433.425 37.3189 433.377 36.945 433.301V426.29C37.3189 426.22 37.7067 426.175 38.1084 426.154C38.5169 426.127 38.8666 426.113 39.1574 426.113C39.7738 426.113 40.3312 426.182 40.8298 426.321C41.3353 426.459 41.7681 426.677 42.1282 426.975C42.4882 427.273 42.7652 427.654 42.9591 428.118C43.153 428.582 43.25 429.139 43.25 429.79ZM45.1907 428.355C44.8209 428.355 44.5161 428.055 44.5161 427.686C44.5161 427.316 44.8209 427.016 45.1907 427.016C45.5604 427.016 45.8652 427.316 45.8652 427.686C45.8652 428.055 45.5604 428.355 45.1907 428.355ZM45.1907 431.855C44.8209 431.855 44.5161 431.555 44.5161 431.185C44.5161 430.815 44.8209 430.516 45.1907 430.516C45.5604 430.516 45.8652 430.815 45.8652 431.185C45.8652 431.555 45.5604 431.855 45.1907 431.855Z\" fill=\"white\"/>\n<text fill=\"white\" xml:space=\"preserve\" style=\"white-space: pre\" font-family=\"Roboto,Helvetica\" font-size=\"15\" font-weight=\"500\" letter-spacing=\"0px\"><tspan x=\"54.0916\" y=\"434.969\">${issuerDid}</tspan></text>\n<rect x=\"1\" y=\"1\" width=\"422\" height=\"562\" rx=\"21\" stroke=\"#F0F0F0\" stroke-width=\"2\"/>\n<defs>\n<linearGradient id=\"paint0_linear_6_342\" x1=\"414.5\" y1=\"562\" x2=\"-116.166\" y2=\"156.726\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"${colors.startColor}\"/>\n<stop offset=\"1\" stop-color=\"${colors.endColor}\"/>\n</linearGradient>\n</defs>\n${\n revoked\n ? '<circle cx=\"210\" cy=\"250\" r=\"120\" stroke=\"rgba(255,0,0,0.5)\" stroke-width=\"25\" /><line x1=\"132\" y1=\"168\" x2=\"296\" y2=\"323\" stroke=\"rgba(255,0,0,0.5)\" stroke-width=\"25\" />'\n : ''\n}\n</svg>`;\n\n if (isDataUrl) {\n return `data:image/svg+xml;utf8,${encodeURIComponent(svgXML)}`;\n }\n\n return svgXML;\n};\n\nmodule.exports = createPassportSvg;\n","const { toHex } = require('@ocap/util');\nconst { Hasher } = require('@ocap/mcrypto');\n\nconst DEFAULT_COLOR = {\n startColor: '#2B3845',\n endColor: '#5A7A8A',\n};\n\n/**\n * 将单个颜色转换为可用 nft 两个渐变背景色\n * @param {String} rgbString 背景色\n * @returns {Object}\n */\nconst getNftBGColor = (rgbString) => {\n if (rgbString) {\n const hsldata = rgbToHsl(rgbString);\n\n // 色相 h 随意\n // 饱和度 s 不可超过 0.8\n // 亮度 l 不可超过 0.6,0.3 以上\n const newHsl = [hsldata[0]];\n if (hsldata[1] > 0.7) {\n newHsl.push(0.7);\n } else {\n newHsl.push(hsldata[1]);\n }\n\n if (hsldata[2] > 0.6) {\n newHsl.push(0.6);\n } else if (hsldata[2] < 0.3) {\n newHsl.push(0.3);\n } else {\n newHsl.push(hsldata[2]);\n }\n\n const newRepeatHsl = [newHsl[0], newHsl[1], newHsl[2] - 0.1];\n\n const newColor = hslToRgb(...newHsl);\n const newRepeatColor = hslToRgb(...newRepeatHsl);\n\n return {\n startColor: newRepeatColor,\n endColor: newColor,\n };\n }\n\n return {\n startColor: '#2B3845',\n endColor: '#5A7A8A',\n };\n};\n\nfunction getPassportColorFromDid(did) {\n return `#${toHex(Hasher.SHA3.hash224(did)).slice(-6)}`;\n}\n\nfunction getNftBGColorFromDid(did) {\n return getNftBGColor(getPassportColorFromDid(did));\n}\n\n/**\n * RGB 转换为 HSL 颜色\n *\n * @param {String} rgbString rgb色值\n * @return {Array} HSL色值\n */\nfunction rgbToHsl(rgbString) {\n const color = rgbString.replace('#', '');\n const r = parseInt(color.slice(0, 2), 16) / 255;\n const g = parseInt(color.slice(2, 4), 16) / 255;\n const b = parseInt(color.slice(4, 6), 16) / 255;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h;\n let s;\n const l = (max + min) / 2;\n\n if (max === min) {\n h = 0;\n s = 0;\n } else {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n default:\n }\n h /= 6;\n }\n\n return [h, s, l];\n}\n\n/**\n * HSL颜色值转换为RGB.\n * h, s, 和 l 设定在 [0, 1] 之间\n * @param {Number} h 色相\n * @param {Number} s 饱和度\n * @param {Number} l 亮度\n * @returns rgb string\n */\nfunction hslToRgb(h, s, l) {\n let r;\n let g;\n let b;\n\n if (s === 0) {\n r = l;\n g = l;\n b = l;\n } else {\n const hue2rgb = (p, q, t2) => {\n let t = t2;\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n };\n\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return `#${[Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)]\n .map((e) => e.toString(16).padStart(2, 0))\n .join('')}`;\n}\n\nmodule.exports = {\n getNftBGColor,\n getNftBGColorFromDid,\n DEFAULT_COLOR,\n getPassportColorFromDid,\n};\n","// set proxy to false to fix bug with HTTPS_PROXY environment\n// https://github.com/axios/axios/issues/3384\nconst { default: axios } = require('axios');\n\nmodule.exports = axios;\n","// 请求 4xx/5xx 的情况会判定为 accessible = true\n// (基于 script tag 的检测方式, 会将 404 请求判定为 accessible = false)\n// TODO: 存在 Mixed Content 问题\nmodule.exports = async (url, timeout = 5000) => {\n let timer;\n try {\n const controller = new AbortController();\n timer = setTimeout(() => controller.abort(), timeout);\n // eslint-disable-next-line no-undef\n await fetch(url, { method: 'HEAD', mode: 'no-cors', signal: controller.signal });\n return true;\n } catch (e) {\n return false;\n } finally {\n clearTimeout(timer);\n }\n};\n","const checkURLAccessibleInBrowser = require('./check-accessible-browser');\n\nconst isIpAddress = (hostname) => {\n return /\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}/.test(hostname);\n};\n\nconst isIpEcho = (hostname) => {\n return hostname.endsWith('.ip.abtnet.io');\n};\n\nconst isDidDomain = (hostname) => {\n return hostname.endsWith('.did.abtnet.io');\n};\n\nconst isCustomDomain = (domain) => {\n return !isIpEcho(domain) && !isDidDomain(domain) && !isIpAddress(domain);\n};\n\n/**\n * 用于评估 url 可访问性/使用优先级 (考虑 node/browser 两种环境)\n */\nconst evaluateURL = async (url, options = {}) => {\n const { timeout = 5000, checkAccessible = checkURLAccessibleInBrowser } = options;\n const { protocol, port, hostname } = new URL(url);\n // https +1000 分\n let score = protocol === 'https:' ? 1000 : 0;\n // 自定义域名,优先级最高 (即使不可访问)\n if (isCustomDomain(hostname)) {\n score += 30000;\n // 子层越多越靠后\n score -= hostname.split('.').length;\n } else {\n // ip echo, +20\n if (isIpEcho(hostname)) {\n score += 20;\n }\n // 纯 ip 地址\n if (isIpAddress(hostname)) {\n score += 1;\n }\n // 带端口优先权放后\n if (port) {\n score -= 1;\n }\n }\n // 不可访问, 减 20000 分 (这里将 4xx~5xx 也认为是可访问)\n let accessible = false;\n if (checkAccessible) {\n accessible = await checkAccessible(url, timeout);\n if (!accessible) {\n score -= 20000;\n }\n }\n return { url, score, accessible };\n};\n\n/**\n * 用于评估一组 url 的可访问性/使用优先级, 返回一组按 score 从高到低排序的 urls\n */\nconst evaluateURLs = async (urls, options = {}) => {\n const results = await Promise.all(\n urls.map(async (url) => {\n try {\n return await evaluateURL(url, options);\n } catch (e) {\n console.error(e);\n return { url, score: Number.MIN_SAFE_INTEGER, accessible: false };\n }\n })\n );\n // 有些情况下可能不需要排序, 可以传入 sort: false\n if (options.sort === false) {\n return results;\n }\n return results.sort((a, b) => b.score - a.score);\n};\n\nmodule.exports = {\n evaluateURL,\n evaluateURLs,\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.checkIsWildcardDomain = exports.checkInputByType = exports.appendParams = exports.BlockletAdminRoles = exports.APP_PREFIX = void 0;\nexports.deepDecodeURIComponent = deepDecodeURIComponent;\nexports.extractStatusUrlFromNextWorkflow = extractStatusUrlFromNextWorkflow;\nexports.formatDateTime = formatDateTime;\nexports.formatError = exports.formatDiskSize = void 0;\nexports.formatFactoryPrice = formatFactoryPrice;\nexports.formatRegistryScreenshotPath = exports.formatRegistryLogoPath = exports.formatPerson = exports.formatLocale = void 0;\nexports.formatTime = formatTime;\nexports.formatTimeFromNow = formatTimeFromNow;\nexports.formatTimestamp = formatTimestamp;\nexports.formatToDate = formatToDate;\nexports.formatToDatetime = formatToDatetime;\nexports.formatUrl = void 0;\nexports.getAccessUrl = getAccessUrl;\nexports.getAccessibleUrl = void 0;\nexports.getAsset = getAsset;\nexports.getAssetExpiration = getAssetExpiration;\nexports.getBlockletLogoUrl = void 0;\nexports.getBlockletMetaUrl = getBlockletMetaUrl;\nexports.getEndPoint = exports.getBlockletUrlParams = exports.getBlockletServices = void 0;\nexports.getExplorerLink = getExplorerLink;\nexports.getPathPrefix = exports.getIssuePassportLink = exports.getInviteLink = void 0;\nexports.getRelativeTime = getRelativeTime;\nexports.getWebWalletUrl = getWebWalletUrl;\nexports.isNewRegistryUrl = exports.isInstalling = exports.isInProgress = exports.isDownloading = exports.isChrome = exports.isCertificateMatch = exports.isBlockletDev = void 0;\nexports.isProtectedRole = isProtectedRole;\nexports.isUrlAccessible = exports.isSafari = void 0;\nexports.isValidClusterSize = isValidClusterSize;\nexports.parseQuery = void 0;\nexports.patchJsxToLocale = patchJsxToLocale;\nexports.shouldCheckDomainStatus = void 0;\nexports.sleep = sleep;\nexports.validateDomain = exports.stringSortHandlerAsc = void 0;\n\nvar _constant = require(\"@abtnode/constant\");\n\nvar _dayjs = _interopRequireDefault(require(\"dayjs\"));\n\nrequire(\"moment/locale/zh-cn\");\n\nvar _querystring = _interopRequireDefault(require(\"querystring\"));\n\nvar _isUrl = _interopRequireDefault(require(\"is-url\"));\n\nvar _moment = _interopRequireDefault(require(\"moment\"));\n\nvar _humanizeUrl = _interopRequireDefault(require(\"humanize-url\"));\n\nvar _filesize = _interopRequireDefault(require(\"filesize\"));\n\nvar _urlJoin = _interopRequireDefault(require(\"url-join\"));\n\nvar _get = _interopRequireDefault(require(\"lodash/get\"));\n\nvar _last = _interopRequireDefault(require(\"lodash/last\"));\n\nvar _trimEnd = _interopRequireDefault(require(\"lodash/trimEnd\"));\n\nvar _constant2 = require(\"@blocklet/constant\");\n\nvar _urlEvaluation = require(\"@abtnode/util/lib/url-evaluation\");\n\nvar _checkAccessibleBrowser = _interopRequireDefault(require(\"@abtnode/util/lib/url-evaluation/check-accessible-browser\"));\n\nvar _axios = _interopRequireDefault(require(\"@abtnode/util/lib/axios\"));\n\nvar _window$env;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction sleep(t) {\n // eslint-disable-next-line no-promise-executor-return\n return new Promise(resolve => setTimeout(resolve, t));\n}\n\nconst validateDomain = function validateDomain(domain) {\n let locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en';\n\n if (!domain) {\n return {\n en: 'Site domain cannot be empty',\n zh: '站点域名不能为空'\n }[locale];\n }\n\n if (domain.endsWith(_constant.DEFAULT_IP_DOMAIN_SUFFIX)) {\n return {\n en: \"Site domain cannot include \".concat(_constant.DEFAULT_IP_DOMAIN_SUFFIX),\n zh: \"\\u7AD9\\u70B9\\u57DF\\u540D\\u4E0D\\u80FD\\u5305\\u542B \".concat(_constant.DEFAULT_IP_DOMAIN_SUFFIX)\n }[locale];\n }\n\n return null;\n};\n/**\n * get access url\n * auto fix http/https, port, query\n * docker friendly\n */\n\n\nexports.validateDomain = validateDomain;\n\nfunction getAccessUrl(hostname) {\n let path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n let params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n\n if (!hostname) {\n return '';\n }\n\n let protocol = 'http';\n\n if (window.location.protocol === 'https:') {\n if (hostname.endsWith(_constant.DEFAULT_IP_DOMAIN_SUFFIX)) {\n protocol = 'https';\n }\n\n if (hostname.endsWith(_constant.DEFAULT_DID_DOMAIN)) {\n protocol = 'https';\n }\n }\n\n let port = '';\n const browserPort = Number(window.location.port);\n\n if (process.env.NODE_ENV !== 'development' && browserPort && ![80, 443].includes(browserPort)) {\n port = \":\".concat(browserPort);\n }\n\n const urlObj = new URL(\"\".concat(protocol, \"://\").concat(hostname).concat(port));\n urlObj.pathname = path;\n const url = urlObj.href.replace(/\\/$/, '');\n\n if (!params || !Object.keys(params)) {\n return url;\n }\n\n const searchParams = new URLSearchParams();\n Object.keys(params).forEach(key => {\n searchParams.append(key, params[key]);\n });\n return \"\".concat(url, \"?\").concat(searchParams.toString());\n}\n\nfunction getExplorerLink(chainHost, did, type) {\n if (!chainHost) return undefined;\n\n try {\n const chainUrl = new URL(chainHost);\n\n switch (type) {\n case 'account':\n chainUrl.pathname = \"/explorer/accounts/\".concat(did);\n break;\n\n case 'tx':\n chainUrl.pathname = \"/explorer/txs/\".concat(did);\n break;\n\n case 'token':\n chainUrl.pathname = \"/explorer/tokens/\".concat(did);\n break;\n\n case 'factory':\n chainUrl.pathname = \"/explorer/factories/\".concat(did);\n break;\n\n case 'bridge':\n chainUrl.pathname = \"/explorer/bridges/\".concat(did);\n break;\n\n default:\n chainUrl.pathname = '/';\n }\n\n return chainUrl.href;\n } catch (_unused) {\n return undefined;\n }\n}\n\nfunction patchJsxToLocale(rawStr) {\n let replaceMap = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return rawStr.split(/{{|}}/).map(item => {\n if (replaceMap[item]) {\n if (replaceMap[item] instanceof Function) {\n return replaceMap[item]();\n }\n\n return replaceMap[item];\n }\n\n return item;\n }).filter(Boolean);\n}\n\nfunction formatTimestamp(ts) {\n if (!ts) {\n return '-';\n }\n\n let date;\n\n if (Number(ts).toString() === ts) {\n date = new Date();\n date.setTime(ts);\n } else {\n date = new Date(ts);\n }\n\n return date.toLocaleString();\n}\n\nfunction formatToDate(date) {\n if (!date) {\n return '-';\n }\n\n return (0, _moment.default)(date).format('ll');\n}\n\nfunction formatToDatetime(date) {\n if (!date) {\n return '-';\n }\n\n return (0, _moment.default)(date).format('lll');\n}\n\nfunction formatTimeFromNow(date) {\n if (!date) {\n return '-';\n }\n\n const startDate = (0, _moment.default)(date);\n const endDate = (0, _moment.default)();\n const diffDay = endDate.diff(startDate, 'day');\n return diffDay > 3 ? formatToDate(date) : startDate.fromNow();\n}\n\nfunction formatTime(date) {\n let format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'lll';\n\n if (!date) {\n return '-';\n }\n\n return (0, _moment.default)(date).format(format);\n}\n\nfunction formatDateTime(date) {\n return (0, _dayjs.default)(date).format('YYYY-MM-DD HH:mm');\n}\n\nconst formatError = error => {\n if (Array.isArray(error.errors)) {\n return error.errors.map(x => x.message).join('\\n');\n }\n\n return error.message;\n};\n\nexports.formatError = formatError;\n\nconst formatLocale = function formatLocale() {\n let locale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'en';\n\n if (locale === 'zh') {\n return 'zh_CN';\n }\n\n return locale;\n};\n\nexports.formatLocale = formatLocale;\n\nconst parseQuery = str => str.replace(/^\\?/, '').split('&').map(x => x.split('=')).filter(_ref => {\n let [key] = _ref;\n return !!key;\n}).reduce((memo, x) => {\n const key = x[0];\n const value = decodeURIComponent(x[1]) || true;\n memo[key] = value;\n return memo;\n}, {}); // Append any query string url to api requests\n\n\nexports.parseQuery = parseQuery;\n\nconst appendParams = function appendParams(url) {\n let extraParams = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const [pathname, query = ''] = url.split('?');\n const oldParams = parseQuery(query);\n const params = Object.assign({}, oldParams, extraParams);\n return \"\".concat(pathname, \"?\").concat(_querystring.default.stringify(params));\n};\n\nexports.appendParams = appendParams;\n\nconst isInProgress = status => ['waiting', 'downloading', 'starting', 'installing', 'stopping', 'upgrading', 'restarting', 'deleting'].includes(status);\n\nexports.isInProgress = isInProgress;\n\nconst isInstalling = status => ['waiting', 'downloading', 'installing', 'upgrading'].includes(status);\n\nexports.isInstalling = isInstalling;\n\nconst isDownloading = status => ['waiting', 'downloading'].includes(status);\n\nexports.isDownloading = isDownloading;\n\nconst formatDiskSize = function formatDiskSize(size) {\n let serverPlatform = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n const base = serverPlatform === 'linux' ? 2 : 10;\n return (0, _filesize.default)(size, {\n base,\n round: 2\n });\n};\n\nexports.formatDiskSize = formatDiskSize;\n\nconst checkInputByType = (type, value) => {\n const typesMap = {\n url: _isUrl.default\n };\n\n if (!type) {\n return true;\n }\n\n if (typesMap[type]) {\n return typesMap[type](value);\n }\n\n return false;\n};\n\nexports.checkInputByType = checkInputByType;\n\nconst formatUrl = url => (0, _humanizeUrl.default)(url.split('?').shift());\n\nexports.formatUrl = formatUrl;\n\nconst formatPerson = person => {\n if (!person) {\n return '-';\n }\n\n if (typeof person === 'string') {\n return person;\n }\n\n const name = person.name || '';\n const u = person.url || person.web;\n const url = u ? \" (\".concat(u, \")\") : '';\n const e = person.email || person.mail;\n const email = e ? \" <\".concat(e, \">\") : '';\n return name + email + url;\n};\n\nexports.formatPerson = formatPerson;\n\nconst getBlockletServices = blocklet => {\n const services = [];\n const interfaces = (blocklet.meta.interfaces || []).filter(x => x.type === _constant2.BLOCKLET_INTERFACE_TYPE_SERVICE);\n interfaces.forEach(x => {\n services.push({\n name: x.name,\n protocol: x.protocol,\n port: Number(x.port.external),\n upstreamPort: Number(blocklet.ports[x.port.internal])\n });\n });\n return services;\n};\n\nexports.getBlockletServices = getBlockletServices;\n\nconst shouldCheckDomainStatus = domain => domain && // eslint-disable-line\n![_constant.DOMAIN_FOR_IP_SITE, _constant.DOMAIN_FOR_IP_SITE_REGEXP, _constant.DOMAIN_FOR_DEFAULT_SITE, _constant.DOMAIN_FOR_INTERNAL_SITE].includes(domain);\n\nexports.shouldCheckDomainStatus = shouldCheckDomainStatus;\n\nconst checkIsWildcardDomain = url => {\n try {\n if (!url) {\n return false;\n }\n\n const tempUrl = url.startsWith('http') ? url : \"http://\".concat(url);\n const urlObj = new window.URL(tempUrl);\n return decodeURIComponent(urlObj.host).split('.').some(x => x === '*');\n } catch (error) {\n console.error(url, error);\n return false;\n }\n};\n\nexports.checkIsWildcardDomain = checkIsWildcardDomain;\n\nconst stringSortHandlerAsc = function stringSortHandlerAsc() {\n let strA = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n let strB = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n if (strA > strB) {\n return 1;\n }\n\n if (strB > strA) {\n return -1;\n }\n\n return 0;\n};\n\nexports.stringSortHandlerAsc = stringSortHandlerAsc;\n\nconst getEndPoint = nodeInfo => {\n const {\n routing\n } = nodeInfo;\n const {\n protocol,\n hostname,\n origin,\n port\n } = window.location;\n let endpoint = \"\".concat(origin).concat(routing.adminPath);\n\n if (process.env.NODE_ENV === 'development') {\n endpoint = \"\".concat(protocol, \"//\").concat(hostname, \":\").concat(port);\n }\n\n return endpoint;\n};\n\nexports.getEndPoint = getEndPoint;\n\nconst getInviteLink = _ref2 => {\n let {\n inviteId,\n endpoint\n } = _ref2;\n\n if (!endpoint) {\n return '';\n }\n\n const u = new URL(endpoint);\n u.pathname = (0, _urlJoin.default)(u.pathname, _constant.WELLKNOWN_SERVICE_PATH_PREFIX, 'invite');\n u.searchParams.set('inviteId', inviteId);\n return u.href;\n};\n\nexports.getInviteLink = getInviteLink;\n\nconst getIssuePassportLink = _ref3 => {\n let {\n id,\n endpoint\n } = _ref3;\n\n if (!endpoint) {\n return '';\n }\n\n const u = new URL(endpoint);\n u.pathname = (0, _urlJoin.default)(u.pathname, _constant.WELLKNOWN_SERVICE_PATH_PREFIX, 'issue-passport');\n u.searchParams.set('id', id);\n return u.href;\n};\n\nexports.getIssuePassportLink = getIssuePassportLink;\n\nconst formatRegistryScreenshotPath = (did, asset) => {\n if (asset.startsWith('/assets')) {\n return asset;\n }\n\n return \"/assets/\".concat(did, \"/screenshots/\").concat(asset);\n};\n\nexports.formatRegistryScreenshotPath = formatRegistryScreenshotPath;\n\nconst formatRegistryLogoPath = (did, asset) => {\n if (asset.startsWith('/assets')) {\n return asset;\n }\n\n return \"/assets/\".concat(did, \"/\").concat(asset);\n};\n\nexports.formatRegistryLogoPath = formatRegistryLogoPath;\n\nfunction getWebWalletUrl(info) {\n try {\n const url = window.localStorage.getItem('wallet_url');\n\n if (url) {\n return url;\n }\n } catch (err) {// Do nothing\n }\n\n return info && info.webWalletUrl ? info.webWalletUrl : '';\n}\n\nfunction isValidClusterSize(data) {\n const {\n value,\n cpuCores\n } = data;\n\n if (!value) {\n return '';\n }\n\n const v = Number(value);\n\n if (Number.isNaN(v)) {\n return 'Cluster size should be a number';\n }\n\n if (!Number.isInteger(v)) {\n return 'Cluster size should be integer';\n }\n\n if (v <= 0 || v > cpuCores) {\n return \"Cluster size should between 1 to \".concat(cpuCores);\n }\n\n return '';\n}\n\nfunction isProtectedRole(role) {\n return Object.values(_constant.ROLES).includes(role);\n}\n\nfunction formatFactoryPrice(blocklet) {\n var _blocklet$payment;\n\n if (!(blocklet !== null && blocklet !== void 0 && blocklet.payment)) {\n return [];\n }\n\n const list = (((_blocklet$payment = blocklet.payment) === null || _blocklet$payment === void 0 ? void 0 : _blocklet$payment.price) || []).map(item => ({\n name: item.symbol,\n value: item.value\n }));\n return list;\n}\n\nconst getBlockletLogoUrl = _ref4 => {\n let {\n did,\n baseUrl,\n logoPath\n } = _ref4;\n\n if (baseUrl.startsWith('http') && logoPath) {\n return (0, _urlJoin.default)(baseUrl, formatRegistryLogoPath(did, logoPath));\n }\n\n const prefix = window.env.apiPrefix || '/';\n let apiPrefix = prefix.replace(/^\\/+/, '').replace(/\\/+$/, '');\n\n if (apiPrefix) {\n apiPrefix = \"/\".concat(apiPrefix);\n }\n\n return (0, _urlJoin.default)(apiPrefix, \"/blocklet/logo/\".concat(did));\n};\n\nexports.getBlockletLogoUrl = getBlockletLogoUrl;\n\nconst getPathPrefix = () => window.env && window.env.apiPrefix ? window.env.apiPrefix : '/';\n\nexports.getPathPrefix = getPathPrefix;\n\nconst isUrlAccessible = async url => (0, _checkAccessibleBrowser.default)((0, _urlJoin.default)(new URL(url).origin, _constant.WELLKNOWN_PING_PREFIX));\n\nexports.isUrlAccessible = isUrlAccessible;\n\nconst getAccessibleUrl = async urls => {\n try {\n const res = await (0, _urlEvaluation.evaluateURLs)(urls);\n return res[0].url;\n } catch (error) {\n console.warn('get accessible url failed');\n return '';\n }\n};\n/**\n * 检查证书是否与 blocklet 匹配\n * @param {string[]} blockletUrls - 通过 blocklet#interfaces#url 获取到的一组 url\n * @param {object[]} matchedSites - 通过 certificate#matchedSites 获取到的一组 site\n * @returns {boolean} - 匹配则返回 true\n */\n\n\nexports.getAccessibleUrl = getAccessibleUrl;\n\nconst isCertificateMatch = function isCertificateMatch() {\n let blockletUrls = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let matchedSites = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n try {\n return matchedSites.map(item => item.domain).some(domain => {\n return blockletUrls.some(blockletUrl => {\n const url = new window.URL(blockletUrl);\n return url.hostname === domain;\n });\n });\n } catch (e) {\n console.warn('domain match failed');\n return false;\n }\n};\n\nexports.isCertificateMatch = isCertificateMatch;\n\nconst getBlockletUrlParams = (blocklet, locale) => (blocklet || {}).status === 'running' ? {\n locale\n} : {\n locale,\n __start__: 1\n};\n/**\n * 判断是否在safari浏览器中\n * 不传的ua情况下,使用当前页面的ua\n * chrome浏览器的ua也会带有 Safari 字样,所以要排除 Chrome 字符串\n * iPhone 设备下,所有浏览器都是 safari 的 webkit\n * @param {String} ua userAgent 字符串\n * @returns bool\n */\n\n\nexports.getBlockletUrlParams = getBlockletUrlParams;\n\nconst isSafari = function isSafari() {\n let ua = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.navigator.userAgent;\n return ua.includes('iPhone') || ua.includes('Safari') && !ua.includes('Chrome');\n};\n\nexports.isSafari = isSafari;\n\nconst isChrome = function isChrome() {\n let ua = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.navigator.userAgent;\n return ua.includes('Chrome');\n};\n/**\n *\n * @export\n * @param {string} url\n * @return {string}\n */\n\n\nexports.isChrome = isChrome;\n\nfunction deepDecodeURIComponent(url) {\n let lastDecodeUrl = decodeURIComponent(url);\n\n while (lastDecodeUrl !== decodeURIComponent(lastDecodeUrl)) {\n lastDecodeUrl = decodeURIComponent(lastDecodeUrl);\n }\n\n return lastDecodeUrl;\n}\n/**\n *\n * @description 已知nextWorkflow的地址,提取它的statusUrl和token\n * @export\n * @param {string} nextWorkflow\n * @returns {{\n * statusUrl: string;\n * token: string;\n * }}\n */\n\n\nfunction extractStatusUrlFromNextWorkflow(nextWorkflow) {\n const nextWorkflowURL = new URL(deepDecodeURIComponent(nextWorkflow)).searchParams.get('url');\n return {\n statusUrl: nextWorkflowURL.replace('/auth?', '/status?'),\n token: new URL(nextWorkflowURL).searchParams.get('_t_')\n };\n}\n\nfunction getBlockletMetaUrl(registry, did) {\n return (0, _urlJoin.default)(registry, \"/api/blocklets/\".concat(did, \"/blocklet.json?source=webapp\"));\n}\n\nasync function getAsset(chainHost, address) {\n const result = await _axios.default.post((0, _urlJoin.default)(chainHost, '/api/gql/'), JSON.stringify({\n query: \"{\\n getAssetState(address: \\\"\".concat(address, \"\\\") {\\n state {\\n address\\n data {\\n typeUrl\\n value\\n }\\n issuer\\n owner\\n parent\\n }\\n }\\n }\")\n }), {\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json'\n },\n timeout: 60 * 1000\n });\n const state = (0, _get.default)(result.data, 'data.getAssetState.state');\n\n if (state && state.data.typeUrl === 'json') {\n state.data.value = JSON.parse(state.data.value);\n }\n\n return state;\n}\n\nasync function getAssetExpiration(chainHost, address) {\n const asset = await getAsset(chainHost, address);\n return (0, _last.default)((0, _get.default)(asset, 'data.value.expirationDate', []));\n}\n\nfunction getRelativeTime(datetime) {\n let locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en';\n return (0, _moment.default)(datetime).locale(formatLocale(locale)).fromNow().toString();\n}\n/**\n * 检查url是否 未添加到 store registryList 中\n * @param {string} url - 需要检查的url\n * @param {object[]} blockletRegistryList - 后端的store registryList, 一般是 info.blockletRegistryList\n * @returns {Object.freeze({\n * isNew: boolean;\n * decoded: string;\n * })} - 返回判断是否是新的url和解码后的url\n */\n\n\nconst isNewRegistryUrl = (url, blockletRegistryList) => {\n if (typeof url === 'string') {\n let decoded = decodeURIComponent(url === null || url === void 0 ? void 0 : url.trim());\n const regex = /^https?:\\/\\//;\n\n if (!regex.test(decoded)) {\n decoded = \"https://\".concat(decoded);\n }\n\n decoded = (0, _trimEnd.default)(decoded, '/'); // validate\n\n try {\n new URL(decoded); // eslint-disable-line no-new\n } catch (_unused2) {\n throw new Error('Invalid Blocklet Store URL');\n }\n\n if (blockletRegistryList !== null && blockletRegistryList !== void 0 && blockletRegistryList.some(item => [url, decoded].includes(item.url))) {\n return {\n isNew: false,\n decoded\n };\n }\n\n return {\n isNew: true,\n decoded\n };\n }\n\n return {\n isNew: false,\n decoded: ''\n };\n};\n\nexports.isNewRegistryUrl = isNewRegistryUrl;\n\nconst isBlockletDev = blocklet => blocklet.mode === _constant2.BLOCKLET_MODES.DEVELOPMENT;\n\nexports.isBlockletDev = isBlockletDev;\nconst APP_PREFIX = ((_window$env = window.env) === null || _window$env === void 0 ? void 0 : _window$env.groupPathPrefix) || '/';\nexports.APP_PREFIX = APP_PREFIX;\nconst BlockletAdminRoles = [_constant.ROLES.ADMIN, _constant.ROLES.OWNER];\nexports.BlockletAdminRoles = BlockletAdminRoles;"],"names":["fromEntry","entries","v","match","Object","find","x","Number","toEntry","keys","BlockletStatus","freeze","added","downloading","downloaded","installing","installed","starting","running","stopping","stopped","error","upgrading","restarting","corrupted","waiting","deleted","fromBlockletStatus","toBlockletStatus","BlockletSource","registry","local","upload","url","custom","fromBlockletSource","toBlockletSource","BlockletGroup","static","dapp","starter","gateway","BlockletEvents","downloadFailed","installFailed","upgraded","upgradeFailed","downgraded","downgradeFailed","updated","statusChange","removed","started","startFailed","reloaded","purchaseChange","BLOCKLET_INTERFACE_TYPE_SERVICE","BLOCKLET_INTERFACE_TYPE_WELLKNOWN","BLOCKLET_INTERFACE_TYPES","BLOCKLET_INTERFACE_PUBLIC","BLOCKLET_INTERFACE_WELLKNOWN","BLOCKLET_UI_INTERFACES","BLOCKLET_STANDARD_INTERFACES","BLOCKLET_INTERFACE_PROTOCOL_HTTP","BLOCKLET_INTERFACE_PROTOCOLS","module","exports","BLOCKLET_GROUPS","BLOCKLET_PLATFORMS","BLOCKLET_ARCHITECTURES","BLOCKLET_MODES","PRODUCTION","DEVELOPMENT","BLOCKLET_FACTORY_SHARES","developer","store","BLOCKLET_INTERFACE_TYPE_WEB","BLOCKLET_INTERFACE_PROTOCOL_TCP","BLOCKLET_INTERFACE_PROTOCOL_UDP","BLOCKLET_DYNAMIC_PATH_PREFIX","BLOCKLET_DEFAULT_PORT_NAME","BLOCKLET_DEFAULT_PATH_REWRITE","BLOCKLET_RELEASE_FOLDER","BLOCKLET_RELEASE_FILE","BLOCKLET_BUNDLE_FOLDER","BLOCKLET_BUNDLE_FILE","BLOCKLET_ENTRY_FILE","BLOCKLET_META_FILE","BLOCKLET_META_FILE_ALT","BLOCKLET_DEFAULT_VERSION","BLOCKLET_LATEST_SPEC_VERSION","BLOCKLET_LATEST_REQUIREMENT_SERVER","BLOCKLET_LATEST_REQUIREMENT_ABTNODE","BLOCKLET_CONFIGURABLE_KEY","BLOCKLET_CLUSTER_SIZE","BLOCKLET_APP_NAME","BLOCKLET_APP_DESCRIPTION","BLOCKLET_APP_SK","BLOCKLET_APP_LOGO","BLOCKLET_APP_URL","BLOCKLET_PASSPORT_COLOR","BLOCKLET_WALLET_TYPE","BLOCKLET_DELETABLE","require","getNftBGColor","DEFAULT_COLOR","getNftBGColorFromDid","colors","issuer","title","issuerDid","ownerName","preferredColor","ownerAvatarUrl","revoked","isDataUrl","width","height","svgXML","length","toUpperCase","startColor","endColor","encodeURIComponent","toHex","Hasher","rgbString","hsldata","h","s","color","replace","r","parseInt","slice","g","b","max","Math","min","l","d","rgbToHsl","newHsl","push","newRepeatHsl","newColor","hslToRgb","getPassportColorFromDid","did","SHA3","hash224","hue2rgb","p","q","t2","t","round","map","e","toString","padStart","join","axios","default","timeout","controller","AbortController","timer","setTimeout","abort","fetch","method","mode","signal","clearTimeout","checkURLAccessibleInBrowser","isIpAddress","hostname","test","isIpEcho","endsWith","isCustomDomain","domain","evaluateURL","options","checkAccessible","URL","protocol","port","score","split","accessible","evaluateURLs","urls","Promise","all","console","MIN_SAFE_INTEGER","results","sort","a","defineProperty","value","checkIsWildcardDomain","checkInputByType","appendParams","BlockletAdminRoles","APP_PREFIX","deepDecodeURIComponent","extractStatusUrlFromNextWorkflow","nextWorkflow","nextWorkflowURL","searchParams","get","statusUrl","token","formatDateTime","date","_dayjs","format","formatError","formatDiskSize","formatFactoryPrice","blocklet","_blocklet$payment","payment","price","item","name","symbol","formatRegistryScreenshotPath","formatRegistryLogoPath","formatPerson","formatLocale","formatTime","arguments","undefined","_moment","formatTimeFromNow","startDate","diff","formatToDate","fromNow","formatTimestamp","ts","Date","setTime","toLocaleString","formatToDatetime","formatUrl","getAccessUrl","path","params","window","location","_constant","DEFAULT_IP_DOMAIN_SUFFIX","DEFAULT_DID_DOMAIN","browserPort","includes","concat","urlObj","pathname","href","URLSearchParams","forEach","key","append","getAccessibleUrl","getAsset","getAssetExpiration","getBlockletLogoUrl","getBlockletMetaUrl","_urlJoin","getEndPoint","getBlockletUrlParams","getBlockletServices","getExplorerLink","chainHost","type","chainUrl","_unused","getPathPrefix","getIssuePassportLink","getInviteLink","getRelativeTime","datetime","locale","getWebWalletUrl","info","localStorage","getItem","err","webWalletUrl","isNewRegistryUrl","isInstalling","isInProgress","isDownloading","isChrome","isCertificateMatch","isBlockletDev","isProtectedRole","role","values","ROLES","isUrlAccessible","isSafari","isValidClusterSize","data","cpuCores","isNaN","isInteger","parseQuery","patchJsxToLocale","rawStr","replaceMap","Function","filter","Boolean","shouldCheckDomainStatus","sleep","resolve","validateDomain","stringSortHandlerAsc","_interopRequireDefault","_window$env","_querystring","_isUrl","_humanizeUrl","_filesize","_get","_last","_trimEnd","_constant2","_urlEvaluation","_checkAccessibleBrowser","_axios","obj","__esModule","en","zh","Array","isArray","errors","message","str","_ref","reduce","memo","decodeURIComponent","extraParams","query","oldParams","assign","stringify","status","size","serverPlatform","base","typesMap","shift","person","u","web","email","mail","services","meta","interfaces","external","upstreamPort","ports","internal","DOMAIN_FOR_IP_SITE","DOMAIN_FOR_IP_SITE_REGEXP","DOMAIN_FOR_DEFAULT_SITE","DOMAIN_FOR_INTERNAL_SITE","tempUrl","startsWith","host","some","strA","strB","nodeInfo","routing","origin","adminPath","_ref2","inviteId","endpoint","WELLKNOWN_SERVICE_PATH_PREFIX","set","_ref3","id","asset","_ref4","baseUrl","logoPath","apiPrefix","env","WELLKNOWN_PING_PREFIX","res","warn","blockletUrls","matchedSites","blockletUrl","__start__","ua","navigator","userAgent","lastDecodeUrl","address","post","JSON","headers","Accept","result","state","typeUrl","parse","blockletRegistryList","decoded","trim","_unused2","Error","isNew","groupPathPrefix","ADMIN","OWNER"],"sourceRoot":""}
|