| 1234567891011 |
- import{a as e,n as t}from"./react-dom-stZKkA6x.js";import{a as n,d as r,r as i}from"./theme-B5baUfEh.js";import{G as a,i as o,kt as s,n as c,st as l,t as u}from"./jsx-runtime-dm82oUI8.js";import{o as d}from"./grid-DaQoG6GE.js";import{n as ee,t as te}from"./table-7bnHOUOM.js";import{n as ne,t as re}from"./SectionCard--RQCBj1c.js";import{t as f}from"./descriptions-vs1os_w7.js";import{t as p}from"./form-GQckeBSC.js";import{t as ie}from"./input-0_Xo22Fl.js";import{t as ae}from"./modal-Ba-m1ypG.js";import{t as oe}from"./popconfirm-BvP3t7-7.js";import{t as se}from"./switch-CsMGEdLR.js";import{t as ce}from"./CopyOutlined-C9O1hBIm.js";import{n as le,t as ue}from"./EditOutlined-C5punjK1.js";import{t as de}from"./PlusOutlined-aj3TL3Tz.js";import{t as m}from"./ReloadOutlined-Cmwy5NFg.js";import{t as fe}from"./ThunderboltOutlined-CAOlQtzj.js";import{_ as h,b as pe,f as me,h as he,o as ge,p as _e}from"./index-Dztone_T.js";import{t as g}from"./EmptyState-rI31ioMm.js";import{t as _}from"./StatusPill-BM21x0ED.js";import{t as ve}from"./CodeBlock-BB4pQul-.js";import{n as ye,t as be}from"./navigation-state-ixI_efPF.js";var v=e(t(),1),y=u(),b=[`sent`,`bounced`,`failed`,`opened`,`clicked`],xe=[...b,`received`],Se=[`pending`,`processing`,`success`,`dead`];function x({domainId:e,mailboxId:t,domains:u=[],mailboxes:x=[],onCopy:Oe}){let{message:S}=r.useApp(),{t:C}=n(),w=me(),ke=_e(),[T,E]=he(),Ae=Number(T.get(`domainId`)||0)||void 0,je=Number(T.get(`mailboxId`)||0)||void 0,D=we(T.get(`webhookId`)),O=Te(T.get(`deliveryStatus`)),k=Ee(T.get(`deliveryEvent`)),A=e??Ae,j=t??je,Me=e!=null||t!=null,[M,Ne]=(0,v.useState)([]),[Pe,Fe]=(0,v.useState)([]),[Ie,Le]=(0,v.useState)([]),[Re,ze]=(0,v.useState)(!1),[Be,N]=(0,v.useState)(``),[P,Ve]=(0,v.useState)(u),[He,Ue]=(0,v.useState)(x),[F,We]=(0,v.useState)(!0),[I,Ge]=(0,v.useState)(``),[Ke,qe]=(0,v.useState)(``),[Je,Ye]=(0,v.useState)(``),[L,R]=(0,v.useState)(``),[Xe,z]=(0,v.useState)(!1),[B,V]=(0,v.useState)(null),[H,Ze]=(0,v.useState)(null),[U]=p.useForm(),Qe=(0,v.useRef)(0),W=(0,v.useRef)(0),G=j!=null,K=A!=null||G,$e=G?[`received`]:b,et=(0,v.useMemo)(()=>new Map(P.map(e=>[e.id,e.domain])),[P]),tt=(0,v.useMemo)(()=>new Map(He.map(e=>[e.id,e.address])),[He]),q=(0,v.useMemo)(()=>D&&M.find(e=>e.id===D)||null,[D,M]),J=(0,v.useCallback)(async()=>{let e=++Qe.current;We(!0),Ge(``),qe(``),Ye(``);let t=!u.length||!x.length,[n,r,a,o]=await Promise.allSettled([i.webhooks(G?void 0:A??void 0,j),i.webhookDeliveries({limit:100}),t?i.domains():Promise.resolve(null),t?i.inboundMailboxes():Promise.resolve(null)]);if(e!==Qe.current)return;let s=[];if(n.status===`fulfilled`?(s=(n.value.webhooks||[]).filter(e=>K||e.mailboxId==null),Ne(s)):Ge(n.reason instanceof Error?n.reason.message:C(`common.error`)),r.status===`fulfilled`){let e=new Set(s.map(e=>e.id)),t=(r.value.deliveries||[]).filter(t=>K?e.has(t.webhookId):!0);Fe(t)}else Ye(r.reason instanceof Error?r.reason.message:C(`common.error`));let c=[];a.status===`fulfilled`?a.value&&Ve(a.value.domains||[]):c.push(a.reason instanceof Error?a.reason.message:C(`common.error`)),o.status===`fulfilled`?o.value&&Ue(o.value.mailboxes||[]):c.push(o.reason instanceof Error?o.reason.message:C(`common.error`)),qe(c.join(`;`)),We(!1)},[A,u.length,j,G,x.length,K,C]);(0,v.useEffect)(()=>{u.length&&Ve(u)},[u]),(0,v.useEffect)(()=>{x.length&&Ue(x)},[x]),(0,v.useEffect)(()=>(J(),()=>{Qe.current+=1}),[J]);let nt=(0,v.useMemo)(()=>{let e=new Map;for(let t of Pe)e.has(t.webhookId)||e.set(t.webhookId,t);return e},[Pe]),Y=(0,v.useCallback)(async()=>{let e=++W.current;if(!D){Le([]),N(``),ze(!1);return}Le([]),N(``),ze(!0);try{let t=await i.webhookDeliveries({webhookId:D,status:O===`all`?void 0:O,eventType:k===`all`?void 0:k,limit:200});e===W.current&&Le(t.deliveries||[])}catch(t){e===W.current&&N(t instanceof Error?t.message:C(`common.error`))}finally{e===W.current&&ze(!1)}},[k,O,D,C]);(0,v.useEffect)(()=>{Y()},[Y]);async function X(e){if(e){if(Oe){Oe(e);return}await navigator.clipboard.writeText(e),S.success(C(`common.copied`))}}function rt(){V(null),U.setFieldsValue({name:``,url:``,events:[...$e],domainId:G?void 0:A??void 0,enabled:!0}),z(!0)}function it(e){V(e),U.setFieldsValue({name:e.name,url:e.url,events:e.events?.length?[...e.events]:[...$e],domainId:e.domainId??void 0,enabled:e.enabled}),z(!0)}function Z(){z(!1),V(null),U.resetFields()}async function at(){let e=await U.validateFields(),t=B?`save:${B.id}`:`create`;R(t);try{let t={name:e.name.trim(),url:e.url.trim(),events:e.events,domainId:G?null:A??e.domainId??null,mailboxId:G?j:null,enabled:e.enabled};if(B)await i.updateWebhook(B.id,t),S.success(C(`actions.webhookUpdated`)),Z(),await J();else{let e=await i.createWebhook(t);S.success(C(`actions.webhookCreated`)),Z(),e.webhook?.secret&&Ze({webhook:e.webhook,mode:`created`}),await J()}}catch(e){S.error(e instanceof Error?e.message:C(`common.error`))}finally{R(``)}}async function ot(e,t){R(`toggle:${e.id}`);try{await i.updateWebhook(e.id,{enabled:t}),Ne(n=>n.map(n=>n.id===e.id?{...n,enabled:t}:n))}catch(e){S.error(e instanceof Error?e.message:C(`common.error`))}finally{R(``)}}async function st(e){R(`delete:${e.id}`);try{await i.deleteWebhook(e.id),S.success(C(`actions.webhookDeleted`)),D===e.id&&ft(),await J()}catch(e){S.error(e instanceof Error?e.message:C(`common.error`))}finally{R(``)}}async function ct(e){R(`rotate:${e.id}`);try{let t=await i.rotateWebhookSecret(e.id);S.success(C(`actions.webhookSecretRotated`)),t.webhook?.secret&&Ze({webhook:t.webhook,mode:`rotated`}),await J()}catch(e){S.error(e instanceof Error?e.message:C(`common.error`))}finally{R(``)}}async function lt(e){R(`test:${e.id}`);try{await i.testWebhook(e.id),S.success(C(`actions.webhookTestQueued`)),await J(),dt(e)}catch(e){S.error(e instanceof Error?e.message:C(`common.error`))}finally{R(``)}}async function ut(e){R(`replay:${e.id}`);try{await i.replayWebhookDelivery(e.id),S.success(C(`actions.webhookDeliveryReplayed`)),await Promise.all([J(),Y()])}catch(e){S.error(e instanceof Error?e.message:C(`common.error`))}finally{R(``)}}function dt(e){let t=new URLSearchParams(T);t.set(`webhookId`,String(e.id)),t.delete(`deliveryStatus`),t.delete(`deliveryEvent`),E(t,{state:be(`${w.pathname}${w.search}`,1)})}function ft(){let e=ye(w.state);if(e){ke(-e.depth);return}let t=new URLSearchParams(T);t.delete(`webhookId`),t.delete(`deliveryStatus`),t.delete(`deliveryEvent`),E(t,{replace:!0,state:null})}function pt(e,t){let n=new URLSearchParams(T);t===`all`?n.delete(e):n.set(e,t);let r=ye(w.state);if(!r){E(n,{replace:!0});return}let i=n.toString();ke({pathname:w.pathname,search:i?`?${i}`:``},{state:be(r.listPath,r.depth+1)})}function mt(e){if(e.mailboxId!=null){let t=tt.get(e.mailboxId);return t?`${C(`webhooks.scopeMailbox`)} · ${t}`:C(`webhooks.scopeMailbox`)}if(e.domainId==null)return C(`webhooks.scopeAccount`);let t=et.get(e.domainId);return t?`${C(`webhooks.scopeDomain`)} · ${t}`:C(`webhooks.scopeDomain`)}function Q(e){return e===`sent`?C(`webhooks.eventSent`):e===`bounced`?C(`webhooks.eventBounced`):e===`failed`?C(`webhooks.eventFailed`):e===`opened`?C(`webhooks.eventOpened`):e===`clicked`?C(`webhooks.eventClicked`):e===`received`?C(`webhooks.eventReceived`):e}function $(e){return e===`pending`?C(`webhooks.statusPending`):e===`processing`?C(`webhooks.statusProcessing`):e===`success`?C(`webhooks.statusSuccess`):e===`dead`?C(`webhooks.statusDead`):e}function ht(e){return e===`success`?`success`:e===`pending`?`info`:e===`processing`?`warning`:e===`dead`?`error`:`neutral`}function gt(e){let t=nt.get(e.id);if(!t)return(0,y.jsx)(c.Text,{type:`secondary`,children:`—`});let n=t.error||(t.responseStatus==null?``:`HTTP ${t.responseStatus}`)||$(String(t.status));return(0,y.jsxs)(o,{size:6,wrap:!0,children:[(0,y.jsx)(_,{tone:ht(String(t.status)),children:$(String(t.status))}),(0,y.jsxs)(c.Text,{type:`secondary`,ellipsis:!0,className:`inline-code-value`,children:[Q(String(t.eventType)),` · `,n]})]})}let _t=[{title:C(`webhooks.name`),dataIndex:`name`,render:(e,t)=>(0,y.jsxs)(o,{direction:`vertical`,size:0,children:[(0,y.jsx)(c.Text,{strong:!0,children:e}),(0,y.jsxs)(c.Text,{type:`secondary`,code:!0,children:[t.secretPrefix,`…`]})]})},{title:C(`webhooks.scope`),render:(e,t)=>mt(t)},{title:C(`webhooks.url`),dataIndex:`url`,ellipsis:!0,render:e=>(0,y.jsx)(c.Text,{code:!0,ellipsis:!0,title:e,className:`inline-code-value`,children:Ce(e)})},{title:C(`webhooks.events`),dataIndex:`events`,render:e=>(0,y.jsx)(o,{size:[4,4],wrap:!0,children:(e||[]).map(e=>(0,y.jsx)(h,{children:Q(e)},e))})},{title:C(`webhooks.enabled`),dataIndex:`enabled`,width:100,render:(e,t)=>(0,y.jsx)(se,{checked:e,loading:L===`toggle:${t.id}`,onChange:e=>void ot(t,e),checkedChildren:C(`webhooks.enabled`),unCheckedChildren:C(`webhooks.disabled`)})},{title:C(`webhooks.lastAttemptAt`),render:(e,t)=>gt(t)},{title:C(`webhooks.actions`),fixed:`right`,width:280,render:(e,t)=>(0,y.jsxs)(o,{wrap:!0,size:4,children:[(0,y.jsx)(s,{size:`small`,icon:(0,y.jsx)(fe,{}),loading:L===`test:${t.id}`,onClick:()=>void lt(t),children:C(`webhooks.test`)}),(0,y.jsx)(s,{size:`small`,onClick:()=>dt(t),children:C(`webhooks.viewDeliveries`)}),(0,y.jsx)(s,{size:`small`,icon:(0,y.jsx)(ue,{}),onClick:()=>it(t)}),(0,y.jsx)(oe,{title:C(`webhooks.rotateConfirm`),onConfirm:()=>void ct(t),children:(0,y.jsx)(s,{"aria-label":C(`webhooks.rotateSecret`),size:`small`,icon:(0,y.jsx)(ge,{}),loading:L===`rotate:${t.id}`})}),(0,y.jsx)(oe,{title:C(`webhooks.deleteConfirm`),onConfirm:()=>void st(t),children:(0,y.jsx)(s,{"aria-label":C(`common.delete`),size:`small`,danger:!0,icon:(0,y.jsx)(le,{}),loading:L===`delete:${t.id}`})})]})}],vt=[{title:C(`webhooks.createdAt`),dataIndex:`createdAt`,width:170,render:e=>e?new Date(e).toLocaleString():`—`},{title:C(`webhooks.events`),dataIndex:`eventType`,render:e=>(0,y.jsx)(h,{children:Q(e)})},{title:C(`common.status`),dataIndex:`status`,render:e=>(0,y.jsx)(_,{tone:ht(e),children:$(e)})},{title:C(`webhooks.attemptCount`),dataIndex:`attemptCount`,width:90},{title:C(`webhooks.responseStatus`),dataIndex:`responseStatus`,width:100,render:e=>e??`—`},{title:C(`webhooks.error`),dataIndex:`error`,ellipsis:!0,render:(e,t)=>e||t.responseBodyPreview||`—`},{title:C(`webhooks.lastAttemptAt`),dataIndex:`lastAttemptAt`,width:170,render:e=>e?new Date(e).toLocaleString():`—`},{title:C(`webhooks.actions`),fixed:`right`,width:110,render:(e,t)=>(0,y.jsx)(s,{size:`small`,disabled:t.status===`processing`,loading:L===`replay:${t.id}`,onClick:()=>void ut(t),children:C(`webhooks.replay`)})}],yt=H?.webhook.secret||``,bt=De(yt||`whsec_your_secret`);return(0,y.jsxs)(o,{direction:`vertical`,size:20,className:`full-width`,children:[Me?(0,y.jsxs)(o,{direction:`vertical`,size:12,className:`full-width`,children:[(0,y.jsx)(d,{type:`info`,showIcon:!0,message:C(G?`webhooks.mailboxReceiptHelp`:`webhooks.domainOverrideHelp`)}),(0,y.jsxs)(o,{children:[(0,y.jsx)(s,{icon:(0,y.jsx)(m,{}),onClick:()=>void J(),loading:F,children:C(`common.refresh`)}),(0,y.jsx)(s,{type:`primary`,icon:(0,y.jsx)(de,{}),onClick:rt,children:C(`webhooks.create`)})]})]}):(0,y.jsx)(ne,{title:C(`webhooks.title`),subtitle:C(`webhooks.subtitle`),extra:(0,y.jsxs)(o,{children:[(0,y.jsx)(s,{icon:(0,y.jsx)(m,{}),onClick:()=>void J(),loading:F,children:C(`common.refresh`)}),(0,y.jsx)(s,{type:`primary`,icon:(0,y.jsx)(de,{}),onClick:rt,children:C(`webhooks.create`)})]})}),Me?null:(0,y.jsx)(d,{type:`info`,showIcon:!0,message:C(G?`webhooks.mailboxReceiptHelp`:`webhooks.domainOverrideHelp`)}),(0,y.jsxs)(re,{title:C(`webhooks.listTitle`),extra:(0,y.jsx)(_,{tone:`neutral`,children:M.length}),children:[!I&&Ke?(0,y.jsx)(d,{type:`warning`,showIcon:!0,message:C(`webhooks.resourcesUnavailable`),description:Ke,style:{marginBottom:12}}):null,!I&&Je&&M.length?(0,y.jsx)(d,{type:`warning`,showIcon:!0,message:C(`webhooks.recentDeliveriesUnavailable`),description:Je,style:{marginBottom:12}}):null,I?(0,y.jsx)(d,{type:`error`,showIcon:!0,message:C(`webhooks.loadFailed`),description:I,action:(0,y.jsx)(s,{icon:(0,y.jsx)(m,{}),onClick:()=>void J(),children:C(`common.refresh`)})}):F&&!M.length?(0,y.jsx)(l,{active:!0,paragraph:{rows:6}}):M.length?(0,y.jsx)(te,{rowKey:`id`,columns:_t,dataSource:M,loading:F,scroll:{x:1200},pagination:{pageSize:10}}):(0,y.jsx)(g,{description:C(`webhooks.empty`)})]}),(0,y.jsx)(pe,{title:C(B?`webhooks.editTitle`:`webhooks.createTitle`),width:520,open:Xe,onClose:Z,destroyOnHidden:!0,footer:(0,y.jsxs)(`div`,{className:`drawer-footer`,children:[(0,y.jsx)(s,{onClick:Z,children:C(`common.cancel`)}),(0,y.jsx)(s,{type:`primary`,loading:L===`create`||L.startsWith(`save:`),onClick:()=>void at(),children:C(B?`common.save`:`webhooks.create`)})]}),children:(0,y.jsxs)(p,{form:U,layout:`vertical`,initialValues:{enabled:!0,events:b},children:[(0,y.jsx)(p.Item,{name:`name`,label:C(`webhooks.name`),rules:[{required:!0,message:C(`webhooks.nameRequired`)}],children:(0,y.jsx)(ie,{placeholder:C(`webhooks.namePlaceholder`)})}),(0,y.jsx)(p.Item,{name:`url`,label:C(`webhooks.url`),extra:C(`webhooks.urlHint`),rules:[{required:!0,message:C(`webhooks.urlRequired`)}],children:(0,y.jsx)(ie,{placeholder:C(`webhooks.urlPlaceholder`)})}),(0,y.jsx)(p.Item,{name:`events`,label:C(`webhooks.events`),rules:[{required:!0,type:`array`,min:1,message:C(`webhooks.eventsRequired`)}],children:(0,y.jsx)(ee.Group,{options:$e.map(e=>({value:e,label:Q(e)})),disabled:G})}),K?null:(0,y.jsx)(p.Item,{name:`domainId`,label:C(`webhooks.domain`),extra:C(`webhooks.domainAccount`),children:(0,y.jsx)(a,{allowClear:!0,placeholder:C(`webhooks.domainAccount`),options:P.map(e=>({value:e.id,label:e.domain}))})}),(0,y.jsx)(p.Item,{name:`enabled`,label:C(`webhooks.enabled`),valuePropName:`checked`,children:(0,y.jsx)(se,{})})]})}),(0,y.jsx)(pe,{title:q?`${q.name} · ${C(`webhooks.deliveriesTitle`)}`:C(`webhooks.deliveriesTitle`),width:760,open:!!D,onClose:ft,children:F&&!q?(0,y.jsx)(`div`,{role:`status`,"aria-label":C(`webhooks.deliveriesTitle`),children:(0,y.jsx)(l,{active:!0,paragraph:{rows:8}})}):q?(0,y.jsxs)(o,{direction:`vertical`,size:20,className:`full-width`,children:[(0,y.jsxs)(f,{bordered:!0,column:1,size:`small`,children:[(0,y.jsx)(f.Item,{label:C(`webhooks.url`),children:(0,y.jsx)(c.Text,{code:!0,copyable:{onCopy:()=>void X(q.url)},style:{overflowWrap:`anywhere`,wordBreak:`break-word`},children:q.url})}),(0,y.jsx)(f.Item,{label:C(`webhooks.scope`),children:mt(q)}),(0,y.jsx)(f.Item,{label:C(`webhooks.events`),children:(0,y.jsx)(o,{wrap:!0,children:q.events.map(e=>(0,y.jsx)(h,{children:Q(e)},e))})}),(0,y.jsx)(f.Item,{label:C(`webhooks.secretPrefix`),children:(0,y.jsxs)(c.Text,{code:!0,children:[q.secretPrefix,`…`]})}),(0,y.jsx)(f.Item,{label:C(`common.status`),children:(0,y.jsx)(_,{tone:q.enabled?`success`:`neutral`,children:q.enabled?C(`webhooks.enabled`):C(`webhooks.disabled`)})})]}),(0,y.jsxs)(o,{wrap:!0,children:[(0,y.jsx)(a,{"aria-label":C(`webhooks.deliveriesFilterStatus`),style:{minWidth:160},value:O,onChange:e=>pt(`deliveryStatus`,e),options:[{value:`all`,label:C(`webhooks.allStatuses`)},...Se.map(e=>({value:e,label:$(e)}))]}),(0,y.jsx)(a,{"aria-label":C(`webhooks.deliveriesFilterEvent`),style:{minWidth:160},value:k,onChange:e=>pt(`deliveryEvent`,e),options:[{value:`all`,label:C(`webhooks.allEvents`)},...xe.map(e=>({value:e,label:Q(e)}))]})]}),Be?(0,y.jsx)(d,{type:`error`,showIcon:!0,message:Be,action:(0,y.jsx)(s,{icon:(0,y.jsx)(m,{}),onClick:()=>void Y(),children:C(`common.refresh`)})}):Re&&!Ie.length?(0,y.jsx)(`div`,{role:`status`,"aria-label":C(`webhooks.deliveriesTitle`),children:(0,y.jsx)(l,{active:!0,paragraph:{rows:6}})}):Ie.length?(0,y.jsx)(te,{rowKey:`id`,columns:vt,dataSource:Ie,loading:Re,scroll:{x:920},pagination:{pageSize:10}}):(0,y.jsx)(g,{description:C(`webhooks.deliveriesEmpty`)}),(0,y.jsx)(d,{type:`info`,showIcon:!0,message:C(`webhooks.docsSignature`),description:C(`webhooks.docsEvents`)}),(0,y.jsx)(ve,{value:De(`whsec_your_secret`),onCopy:X})]}):I&&D?(0,y.jsx)(d,{type:`error`,showIcon:!0,message:C(`webhooks.loadFailed`),description:I,action:(0,y.jsx)(s,{icon:(0,y.jsx)(m,{}),onClick:()=>void J(),children:C(`common.refresh`)})}):D?(0,y.jsx)(g,{description:C(`common.notFound`)}):null}),(0,y.jsx)(ae,{title:H?.mode===`rotated`?C(`webhooks.secretRotatedTitle`):C(`webhooks.secretCreatedTitle`),open:!!H,closable:!1,maskClosable:!1,keyboard:!1,destroyOnHidden:!0,footer:[(0,y.jsx)(s,{icon:(0,y.jsx)(ce,{}),onClick:()=>void X(yt),children:C(`webhooks.copySecret`)},`copy`),(0,y.jsx)(s,{type:`primary`,onClick:()=>Ze(null),children:C(`common.confirm`)},`done`)],children:(0,y.jsxs)(o,{direction:`vertical`,size:16,className:`full-width`,children:[(0,y.jsx)(d,{type:`error`,showIcon:!0,message:C(`webhooks.secretCreatedWarning`)}),(0,y.jsxs)(`div`,{children:[(0,y.jsx)(c.Text,{type:`secondary`,children:C(`webhooks.secret`)}),(0,y.jsx)(ve,{value:yt,onCopy:X})]}),(0,y.jsxs)(`div`,{children:[(0,y.jsx)(c.Text,{type:`secondary`,children:C(`webhooks.docsSignature`)}),(0,y.jsx)(ve,{value:bt,onCopy:X})]})]})})]})}function Ce(e,t=48){return e?e.length<=t?e:`${e.slice(0,t-1)}…`:``}function we(e){let t=Number(e);return Number.isInteger(t)&&t>0?t:null}function Te(e){return Se.includes(e)?e:`all`}function Ee(e){return xe.includes(e)?e:`all`}function De(e){return`// Verify X-MailHub-Signature (Node.js)
- const crypto = require('crypto');
- function verify(rawBody, signatureHeader, secret = ${JSON.stringify(e)}) {
- const parts = Object.fromEntries(
- signatureHeader.split(',').map((p) => p.trim().split('='))
- );
- const signed = \`\${parts.t}.\${rawBody}\`;
- const expected = crypto.createHmac('sha256', secret).update(signed).digest('hex');
- return crypto.timingSafeEqual(Buffer.from(parts.v1, 'hex'), Buffer.from(expected, 'hex'));
- }`}export{x as default};
|