@blocklet/pages-kit-inner-components 0.5.40 → 0.5.41

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.
@@ -0,0 +1,38 @@
1
+ "use strict";const e=require("react/jsx-runtime"),R=require("./state-BWuBNdK8.js"),X=require("@arcblock/ux/lib/Locale/context"),ue=require("@arcblock/ux/lib/Result"),de=require("@blocklet/pages-kit/builtin/page/header"),pe=require("@blocklet/pages-kit/contexts/color"),Z=require("@blocklet/pages-kit/utils/data-source"),ge=require("@blocklet/pages-kit/utils/route"),me=require("@blocklet/ui-react/lib/Header"),fe=require("@emotion/css"),V=require("@emotion/react"),he=require("@emotion/styled"),y=require("@mui/material"),ee=require("ahooks"),xe=require("isomorphic-dompurify"),je=require("lodash/cloneDeep"),be=require("lodash/isEmpty"),ye=require("lodash/isEqual"),g=require("react"),ve=require("react-helmet"),w=require("react-router-dom"),te=require("react-use"),_=require("ufo"),E=require("./array-Cr5KF-hM.js"),W=require("@arcblock/ux/lib/Theme"),Pe=require("@blocklet/ui-react/lib/Footer");require("webfontloader");const Q=require("./session-BA7Qrcia.js"),q=t=>t&&t.__esModule?t:{default:t},ne=q(ue),we=q(me),oe=q(he),ke=q(xe),z=q(je),Se=q(be),re=q(ye),Re=q(Pe),qe=W.styled(Re.default,{shouldForwardProp:t=>!!t})`
2
+ & > div > .MuiContainer-root {
3
+ max-width: unset;
4
+ }
5
+ `;function Ce({meta:t,...o}){const a=W.useTheme();return e.jsx(qe,{...o,meta:t,theme:a||{}})}function se(t){return e.jsx(y.Box,{display:"flex",flex:1,height:"100%",alignItems:"center",justifyContent:"center",...t,children:e.jsx(y.CircularProgress,{size:30})})}function _e(t){return e.jsx(Ee,{...t})}const Ee=W.styled(y.Box)`
6
+ position: fixed;
7
+ left: 0;
8
+ top: 0;
9
+ z-index: 999999999999;
10
+ width: 80px;
11
+ font-size: 12px;
12
+ text-align: center;
13
+ opacity: 0.7;
14
+ transform: translateX(-23%) translateY(70%) rotate(-45deg);
15
+ pointer-events: none;
16
+ `,Ie=`Avenir, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial,
17
+ sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'`;function Me({titleFontFamily:t,descriptionFontFamily:o}){var n;const a=y.useTheme(),i=(n=a==null?void 0:a.typography)==null?void 0:n.fontFamily;g.useEffect(()=>{},[t,o]);const c=`${i}, ${Ie}`;return e.jsx(V.Global,{styles:V.css`
18
+ #app {
19
+ font-family: ${c};
20
+
21
+ .page-kit-section__title {
22
+ font-family: ${c};
23
+ }
24
+
25
+ .page-kit-section__description {
26
+ font-family: ${c};
27
+ }
28
+ }
29
+ `})}function Te(){const[t]=w.useSearchParams(),{session:o}=Q.useSessionContext(),a=Q.useIsRoleOrMultiTenant("owner","admin","pagesEditor","member"),i=g.useMemo(()=>{const n=t.get("mode");return E.STATE_MODES.includes(n)?n:"production"},[t]),c=i==="production"?i:o.user?a?i:"production":null;return c?e.jsx(ae,{mode:c}):null}function ae({mode:t}){if(t!=="draft"){const o=window.__PAGE_STATE__;return o?e.jsx(N,{mode:t,state:o}):e.jsx(Le,{mode:t,children:({state:a})=>e.jsx(N,{mode:t,state:a})})}return e.jsx(Be,{children:({state:o})=>e.jsx(N,{mode:t,state:o})})}const Be=g.lazy(()=>Promise.resolve().then(()=>require("./draft-data-6zW9mu28.js")));function Le({mode:t,children:o}){const a=document.querySelector('meta[property="pages:version"]'),i=a==null?void 0:a.content,c=R.useProjectId(),n=g.useMemo(()=>{if(i==="{{pagesPublishedAt}}"){const u=localStorage.getItem(R.getProjectPageVersionKey(c??""));return Number(u)?Number(u):new Date().getTime()}return Number(i)},[i]),{loading:m,value:r}=te.useAsync(()=>E.getPages({mode:t,version:n}),[t,n]);return m?e.jsx(se,{}):r?o({state:r}):null}function N({mode:t,state:o}){const{t:a,locale:i}=X.useLocaleContext(),[c]=w.useSearchParams(),n=R.useProjectId(),m=R.useProjectSlug(),r=c.get("hiddenBadge")==="true",u=c.get("showPublish")==="true",{pageIds:f,pages:l,routeIds:p,routes:h,supportedLocales:j,config:{defaultLocale:b},resources:I}=o,x=R.getAllComponents(o),k=g.useMemo(()=>j!=null&&j.some(d=>d.locale===i)?i:void 0,[i,j]),L=Object.values(h||{}).find(d=>(d==null?void 0:d.path)==="/")||Object.values(l).find(d=>(d==null?void 0:d.slug)==="/")?void 0:Object.values(l)[0],U=g.useMemo(()=>t==="production"?f.map(d=>{const s=l[d];return s&&{id:s.id,path:_.joinURL("/",m||n||"",s.slug)}}).filter(E.nonNullable):p.map(d=>{const s=h[d];return s?{id:s.id,path:_.joinURL("/",m||n||"",s.path,`?mode=${t}&showPublish=true`)}:null}).filter(E.nonNullable),[f,l,t,h,p,n,m]),C=([...d])=>(t!=="production"&&u&&d.unshift(e.jsx(g.Suspense,{fallback:e.jsx("div",{}),children:e.jsx(De,{mode:"production",state:o})})),d);return e.jsxs(E.Provider,{value:{pages:U},children:[e.jsxs(w.Routes,{children:[L&&e.jsx(w.Route,{index:!0,element:e.jsx(w.Navigate,{to:_.joinURL("/",k||"",L.slug)})}),p==null?void 0:p.map(d=>{var P,v,S,A;const s=h==null?void 0:h[d];if(!s||!s.displayTemplateId)return null;const M=l[s.displayTemplateId];if(!M)return null;let T=[];if(s.params&&s.params.length>0){const B=ge.generateParamCombinations({basePath:s.path,params:s.params,routeId:s.id,paramsOptions:s.paramsOptions,currentIndex:0,currentParams:[],currentOptionIds:[],result:[]});T=B==null?void 0:B.map(O=>{var F,Y,K,J;const D=O.paramOptionIds.join("-");return e.jsx(w.Route,{path:_.joinURL(":projectIdOrSlug?",O.path),element:e.jsx(G,{mode:t,components:x,page:M,locale:k,defaultLocale:b,headerAddons:C,state:o,pageData:(J=(K=(Y=(F=s.dataSource)==null?void 0:F.pathDataMappings)==null?void 0:Y[D])==null?void 0:K.dataCache)==null?void 0:J[k||b||"en"]})},D)})}return T.push(e.jsx(w.Route,{path:_.joinURL(":projectIdOrSlug?",s.path),element:e.jsx(G,{mode:t,components:x,page:M,locale:k,defaultLocale:b,headerAddons:C,state:o,pageData:(A=(S=(v=(P=s.dataSource)==null?void 0:P.pathDataMappings)==null?void 0:v[s.id])==null?void 0:S.dataCache)==null?void 0:A[k||b||"en"]})},s.id)),T}),f.map(d=>{const s=l[d];return s?e.jsx(w.Route,{path:_.joinURL(":projectIdOrSlug?",s.slug),element:e.jsx(H,{mode:t,components:x,page:s,locale:k,defaultLocale:b,headerAddons:C})},s.id):null}),I.pages&&Object.values(I.pages).map(({blockletId:d,page:s})=>e.jsx(w.Route,{path:_.joinURL("/",`@${d}`,s.slug),element:e.jsx(H,{mode:t,components:x,page:s,locale:k,defaultLocale:b,headerAddons:C})},s.id)),e.jsx(w.Route,{path:"*",element:e.jsx(y.Box,{width:"100vw",height:"100vh",display:"flex",justifyContent:"center",alignItems:"center",children:e.jsx(ne.default,{status:404,extra:e.jsx(le,{href:"/",children:a("common.back")}),sx:{bgcolor:"transparent",width:"100%",height:"100%"}})})})]}),t!=="production"&&!r&&e.jsx(_e,{sx:{bgcolor:"info.light"},children:t}),e.jsx(Me,{})]})}function G({mode:t,pageData:o,components:a,page:i,locale:c,defaultLocale:n,headerAddons:m,state:r}){const u=ee.useReactive({page:null});g.useEffect(()=>{const l=i||null;l?u.page=z.default(l):u.page=null},[i,JSON.stringify(i),u]);const f=g.useRef();return g.useEffect(()=>{re.default(o,f.current)||o&&u.page&&(Z.setPageDataSource(u.page,r,c,o),f.current=z.default(o))},[u.page,o,c,r]),u.page?e.jsx(H,{mode:t,components:a,page:u.page,locale:c,defaultLocale:n,headerAddons:m}):null}function Oe({mode:t,state:o,path:a,pageData:i}){const{t:c,locale:n}=X.useLocaleContext(),{pages:m,supportedLocales:r,config:{defaultLocale:u},resources:f}=o,l=Object.values(m).find(x=>(x==null?void 0:x.slug)===a),p=Object.values(f.pages||{}).find(x=>x.page.slug===a),h=g.useMemo(()=>r!=null&&r.some(x=>x.locale===n)?n:void 0,[n,r]),j=ee.useReactive({page:null});g.useEffect(()=>{const x=l||(p==null?void 0:p.page)||null;x?j.page=z.default(x):j.page=null},[l,p]);const b=g.useRef();if(g.useEffect(()=>{re.default(i,b.current)||i&&j.page&&(Z.setPageDataSource(j.page,o,h,i),b.current=z.default(i))},[{}]),!l&&!(p!=null&&p.page))return e.jsx(y.Box,{width:"100vw",height:"100vh",display:"flex",justifyContent:"center",alignItems:"center",children:e.jsx(ne.default,{style:{background:"inherit"},status:404,extra:e.jsx(le,{href:"/",children:c("common.back")})})});const I=R.getAllComponents(o);return j.page?e.jsx(H,{mode:t,components:I,page:j.page,locale:h,defaultLocale:u}):null}function H({mode:t,components:o,page:a,locale:i,defaultLocale:c,headerAddons:n}){var k,$,L,U,C,d,s,M,T;const m=pe.useColorConvert(),r=((k=a.locales)==null?void 0:k[i])??(($=a.locales)==null?void 0:$[c])??{},u=r.title||((L=window.blocklet)==null?void 0:L.appName),f=r.description||((U=window.blocklet)==null?void 0:U.appDescription),l=R.autoResizeImage(R.getImageAbsoluteUrl(r.image),540),{logo:p,brand:h,description:j,...b}=de.useHeaderState(),I=g.useMemo(()=>P=>{var S;let v=(n==null?void 0:n(P))??P;return v=((S=b.addons)==null?void 0:S.call(b,v))??v,v},[b.addons,n]),x=(C=r.header)!=null&&C.translucent?ce:ie;return e.jsxs(E.PageProvider,{page:a,defaultLocale:c,currentLocale:i,children:[e.jsx(V.Global,{styles:V.css`
30
+ body {
31
+ background-color: ${m(!r.backgroundColor||r.backgroundColor==="transparent"?"background.default":r.backgroundColor)} !important;
32
+ }
33
+ `}),e.jsx(x,{hideNavMenu:!!((d=r.header)!=null&&d.hideNavMenus),translucentTextColor:(s=r.header)==null?void 0:s.translucentTextColor,...p?{logo:p}:{},...h?{brand:h}:{},...j?{description:j}:{},className:fe.cx(((M=r.header)==null?void 0:M.sticky)&&"sticky","page-header"),maxWidth:!1,addons:I}),e.jsx(w.ScrollRestoration,{}),e.jsxs(ve.Helmet,{children:[e.jsx("title",{children:u}),e.jsx("meta",{name:"og:title",content:u}),e.jsx("meta",{name:"og:description",content:f}),e.jsx("meta",{name:"og:image",content:l}),e.jsx("meta",{name:"twitter:image:src",content:l}),e.jsx("meta",{name:"twitter:image",content:l}),e.jsx("meta",{property:"twitter:description",content:f}),e.jsx("meta",{property:"twitter:title",content:u}),e.jsx("meta",{name:"description",content:f})]}),e.jsx(y.Stack,{flexGrow:1,className:"PageView-root",sx:{"& .BlockBase-root:first-child":{pt:"0 !important"}},children:a.sectionIds.map(P=>{var B,O,D,F;const v=a.sections[P];if(!v||v.visibility==="hidden")return null;const S=(O=(B=a.dataSource)==null?void 0:B[P])==null?void 0:O[i],A=((F=(D=a.dataSource)==null?void 0:D[P])==null?void 0:F[c])??{};return e.jsx(E.BlockRenderer,{id:P,type:v.component,mode:t,section:v,config:{...Se.default(S)?A:S,locale:i,dev:t==="draft"?{mode:t,components:o,defaultLocale:c}:{mode:t,defaultLocale:c}},page:a},P)})}),!((T=r.footer)!=null&&T.hidden)&&e.jsx(Ce,{})]})}const De=g.lazy(()=>Promise.resolve().then(()=>require("./publish-button-oe4N0mbK.js"))),ie=oe.default(we.default)`
34
+ &.sticky {
35
+ position: sticky;
36
+ top: 0;
37
+ }
38
+ `;function Fe({logo:t}){const[o,a]=g.useState(),i=y.useMediaQuery(n=>n.breakpoints.down("sm")),{value:c}=te.useAsync(()=>{var r,u;const n=new URL(i?((r=window==null?void 0:window.blocklet)==null?void 0:r.appLogo)||"/.well-known/service/blocklet/logo":((u=window==null?void 0:window.blocklet)==null?void 0:u.appLogoRect)||"/.well-known/service/blocklet/logo-rect",window.location.origin);n.searchParams.delete("imageFilter"),n.searchParams.delete("f");const m=n.toString();return new Promise(f=>{fetch(m).then(l=>{const p=l.headers.get("content-type");p!=null&&p.includes("svg")&&l.text().then(h=>{a(h),f(null)}),f(l.url)})})},[i]);if(t)return t;if(o)return e.jsx(y.Box,{sx:{filter:"initial !important"},dangerouslySetInnerHTML:{__html:ke.default.sanitize(o)}});if(c){const n=new URL(c);n.searchParams.set("imageFilter","convert"),n.searchParams.set("f","png"),n.searchParams.set("h","80");const m=n.toString();return e.jsx("img",{src:m,alt:"logo"})}return null}function ce({logo:t,translucentTextColor:o,...a}){const[i,c]=g.useState(0),n=y.useTheme(),m=800;g.useEffect(()=>{const l=document.getElementById("app");if(!l)return;let p=!1;const h=()=>{p||(requestAnimationFrame(()=>{c(l.scrollTop),p=!1}),p=!0)};return l.addEventListener("scroll",h,{passive:!0}),c(l.scrollTop),()=>{l.removeEventListener("scroll",h)}},[]);let r=Math.min(i/m,1),u="";r>.1?(r=Math.max(r,.6),u=y.alpha(n.palette.text.primary,r)):u=o||"#EEEEEE";const f=r<.7;return e.jsx(ie,{logo:e.jsx(Fe,{logo:t}),...a,sx:{position:"fixed !important",top:0,left:0,right:0,zIndex:n.zIndex.appBar,backgroundColor:"transparent !important","&::before":{content:'""',position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:-1,backgroundColor:y.alpha(n.palette.background.default,r),backdropFilter:r>=.6?"blur(10px)":"blur(0px)",transition:"backgroundColor 0.3s ease-in-out"},transition:"color 0.3s ease-in-out",".navmenu-root>.navmenu-sub>span,\n .navmenu-root>.navmenu-item,\n .header-addons>button,\n .header-addons>a,\n .header-addons>div>button":{color:`${u} !important`},".header-logo":{color:`${u} !important`},"& .navmenu--horizontal":{bgcolor:"transparent !important"},".header-logo > div":{filter:`invert(${f?1:0})`,transition:"filter 0.3s ease-in-out"}}})}const le=oe.default(y.Button)``;exports.Home=Te;exports.HomeView=ae;exports.Loading=se;exports.PageRoutes=N;exports.PageView=H;exports.PageViewByPath=Oe;exports.PageViewWithDataSource=G;exports.TranslucentHeader=ce;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),F=require("./state-BWuBNdK8.js"),W=require("@arcblock/ux/lib/Locale/context"),ee=require("@arcblock/ux/lib/Toast"),te=require("@blocklet/pages-kit/utils/route"),O=require("@mui/icons-material"),J=require("@mui/lab"),s=require("@mui/material"),se=require("immer"),ne=require("lodash/difference"),l=require("react"),ie=require("react-use"),re=require("./home-DJPbdJux.js"),U=require("./array-Cr5KF-hM.js"),G=r=>r&&r.__esModule?r:{default:r},$=G(ee),H=G(ne);function oe(r){const[j,k]=l.useState(!1);return e.jsx(J.LoadingButton,{...r,loading:r.loading||j,onClick:u=>{var b;const p=(b=r.onClick)==null?void 0:b.call(r,u);p instanceof Promise&&(k(!0),p.finally(()=>{k(!1)}))}})}const ae=s.createSvgIcon(e.jsxs("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{d:"M7.75732 16.2426L16.2426 7.75736",stroke:"#4B5563",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"}),e.jsx("path",{d:"M16.2426 16.2426L7.75732 7.75735",stroke:"#4B5563",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]}),"Close");function le(){const[r,j]=l.useState(),k=l.useMemo(()=>r?e.jsx(s.Dialog,{...r}):null,[r]),u=l.useCallback(()=>{j(void 0)},[]),p=l.useCallback(({title:b,content:d,cancelText:S="Cancel",okText:f="Ok",onOk:g,onClose:c,okIcon:P,okColor:w="primary",cancelColor:y="primary",DialogContentProps:A,form:E,...z})=>{j({...z,open:!0,children:e.jsxs("form",{onSubmit:v=>v.preventDefault(),children:[b&&e.jsxs(s.DialogTitle,{className:"between",zIndex:"appBar",bgcolor:"background.paper",sx:{borderBottom:v=>`1px solid ${v.palette.divider}`},children:[e.jsx(s.Box,{children:b}),e.jsx(s.IconButton,{size:"small",onClick:async()=>{u(),c==null||c()},children:e.jsx(ae,{})})]}),d&&e.jsx(s.DialogContent,{...A,sx:{mt:-3,...A==null?void 0:A.sx},children:e.jsx(s.Box,{pt:3,children:d})}),e.jsxs(s.DialogActions,{children:[e.jsx(s.Button,{variant:"outlined",color:y||"primary",onClick:c??u,children:S}),e.jsx(oe,{variant:"contained",color:w||"primary",startIcon:P,loadingPosition:P?"start":"center",onClick:async()=>{await(g==null?void 0:g()),u()},type:"submit",children:f})]})]}),onClose:c??u})},[u]);return{dialog:k,showDialog:p,closeDialog:u}}const ce=l.forwardRef(({mode:r,state:j},k)=>{const{t:u}=W.useLocaleContext(),[p,b]=l.useState(!1),{dialog:d,showDialog:S}=le(),f=F.useProjectId(),g=l.useCallback(P=>{let w=[];S({title:u("maker.publishToProduction"),content:e.jsxs(s.Box,{sx:{minWidth:300},children:[e.jsx(s.Alert,{color:"warning",icon:e.jsx(O.Warning,{}),children:u("maker.publishToProductionTip")}),e.jsx(s.Box,{maxHeight:"50vh",overflow:"auto",mt:2,children:e.jsx(de,{state:j,toMode:r,onChange:y=>w=y,defaultRouteIds:P})})]}),okText:u("maker.publish"),cancelText:u("common.cancel"),onOk:async()=>{if((w==null?void 0:w.length)===0){const y=u("maker.publishSelectPagesMessage");throw $.default.error(y),new Error(y)}localStorage.setItem(F.getProjectPageVersionKey(f??""),String(new Date().getTime())),b(!0);try{await U.publishPages({mode:r,routes:w}),$.default.success(u("maker.publishSuccessMessage"))}catch(y){throw $.default.error(y.message),y}finally{b(!1)}}})},[r,j,u,f,S]);l.useImperativeHandle(k,()=>({openPublishDialog:g}));const c=l.useCallback(()=>{g()},[g]);return e.jsxs(e.Fragment,{children:[e.jsx(J.LoadingButton,{color:"primary",variant:"contained",size:"small",sx:{mr:1},onClick:c,loading:p,disabled:p,children:u("maker.publish")}),d]})});function ue({routePathInfo:r,checked:j,onClick:k,route:u}){var d,S,f,g,c;const{t:p}=W.useLocaleContext(),b=!((d=r.routeMetaData)!=null&&d.publishedAt)||((S=r.routeMetaData)==null?void 0:S.updatedAt)&&new Date((f=r.routeMetaData)==null?void 0:f.updatedAt)>new Date((g=r.routeMetaData)==null?void 0:g.publishedAt);return e.jsx(s.ListItem,{sx:{pl:4,pr:3},disablePadding:!0,secondaryAction:e.jsxs(s.Box,{display:"flex",alignItems:"center",sx:{minWidth:"auto"},children:[b&&e.jsx(s.Box,{mr:.35,className:"visible",color:"warning.main",sx:{display:"flex",alignItems:"center"},title:p("maker.pages.needPublish"),children:e.jsx(s.Tooltip,{title:p("maker.pages.needPublish"),children:e.jsx(O.Sync,{fontSize:"small",sx:{fontSize:"16px"}})})}),(!((c=r.routeMetaData)!=null&&c.isPublic)||!u.isPublic)&&e.jsx(s.Box,{className:"visible",color:"warning.main",children:e.jsx(s.Tooltip,{title:p("maker.pages.notPublic"),children:e.jsx(O.VisibilityOff,{fontSize:"small",sx:{fontSize:"16px"}})})})]}),children:e.jsxs(s.ListItemButton,{onClick:k,dense:!0,children:[e.jsx(s.ListItemIcon,{children:e.jsx(s.Checkbox,{edge:"start",checked:j,tabIndex:-1})}),e.jsx(s.ListItemText,{primary:r.path,primaryTypographyProps:{fontSize:"0.8rem",fontStyle:"italic",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",pr:1}})]})})}function de({state:r,toMode:j,onChange:k,defaultRouteIds:u}){const{t:p,locale:b}=W.useLocaleContext(),[d,S]=l.useState(!1),[f,g]=l.useState(()=>u?Object.fromEntries(u.filter(t=>!t.includes("-")).map(t=>[t,!0])):{}),[c,P]=l.useState({}),[w,y]=l.useState(()=>u?Object.fromEntries(u.filter(t=>t.includes("-")).map(t=>[t,!0])):{}),[A,E]=l.useState({}),{loading:z,error:v,value:x}=ie.useAsync(()=>U.getPages({mode:j}),[j]);if(v)throw v;const D=l.useMemo(()=>r.routeIds||[],[r]),I=l.useMemo(()=>(x==null?void 0:x.pageIds)||[],[x]),T=l.useMemo(()=>!D||!r.routes?[]:JSON.parse(JSON.stringify(D)).sort((o,i)=>{var h,m;const n=(h=r.routes)==null?void 0:h[o],a=(m=r.routes)==null?void 0:m[i];return n!=null&&n.publishedAt&&new Date(n.publishedAt).getTime()<new Date(n.updatedAt).getTime()?-1:a!=null&&a.publishedAt&&new Date(a.publishedAt).getTime()<new Date(a.updatedAt).getTime()?1:new Date((n==null?void 0:n.updatedAt)??"").getTime()-new Date((a==null?void 0:a.updatedAt)??"").getTime()}),[r,D]),q=l.useMemo(()=>{if(!T)return[];if(!c)return T;const t=[...T].filter(o=>!c[o]);return Object.values(c).forEach(o=>{o.forEach(i=>{t.push(`${i.originalRouteId}-${i.paramOptionIds.join("-")}`)})}),t},[T,c]),B=l.useMemo(()=>!x||!I||!q?[]:H.default(I,q),[q,x,I]),C=l.useMemo(()=>D?[...D].concat(B):B,[D,B]),_=l.useCallback(()=>{const t={};T==null||T.forEach(o=>{var n;const i=(n=r.routes)==null?void 0:n[o];if(i&&i.params&&i.params.length>0&&i.paramsOptions&&i.paramsOptions.length>0){const a=te.generateParamCombinations({basePath:i.path,params:i.params,routeId:i.id,paramsOptions:i.paramsOptions,currentIndex:0,currentParams:[],currentOptionIds:[],result:[]});a.length>0&&(t[i.id]=a)}}),P(t)},[T,r.routes]);l.useEffect(()=>{_()},[_]),l.useEffect(()=>{E(t=>{const o={...t};return Object.keys(c).forEach(i=>{var n;c[i]&&((n=c[i])==null?void 0:n.length)>0&&o[i]===void 0&&(o[i]=!0)}),o})},[c]);const K=l.useRef(!0);l.useEffect(()=>{y(t=>{const o={...t};return Object.keys(c).length===0||(Object.keys(c).forEach(i=>{const n=c[i]||[],a=d||!!f[i];n.forEach(h=>{const m=`${i}-${h.paramOptionIds.join("-")}`;K.current?o[m]=a||t[m]||!1:o[m]=a})}),K.current=!1),o})},[f,c,d]);const Q=(t,o)=>{o.stopPropagation(),E(i=>{const n={...i};return n[t]=!n[t],n})},N=l.useCallback(t=>{g(o=>{const i=se.produce(o,n=>{d?(Object.assign(n,Object.fromEntries(C.map(a=>[a,!0]))),delete n[t]):n[t]?(delete n[t],B.includes(t)&&(D||[]).filter(a=>{var h,m;return((h=r.pages[a])==null?void 0:h.slug)===((m=x==null?void 0:x.pages[t])==null?void 0:m.slug)}).forEach(a=>{delete n[a]})):(n[t]=!0,D&&D.includes(t)&&B.filter(a=>{var h,m;return((h=x==null?void 0:x.pages[a])==null?void 0:h.slug)===((m=r.pages[t])==null?void 0:m.slug)}).forEach(a=>{n[a]=!0}))});return S(H.default(C,Object.keys(i)).length===0),i})},[d,C,B,r,x,D]),X=l.useCallback((t,o)=>{const i=`${t}-${o.paramOptionIds.join("-")}`;y(n=>{var m;const a={...n};a[i]=!a[i];const h=((m=c[t])==null?void 0:m.every(L=>a[`${t}-${L.paramOptionIds.join("-")}`]))??!1;return g(L=>{if(h&&!L[t])return{...L,[t]:!0};if(!h&&L[t]){const R={...L};return delete R[t],R}return L}),a})},[c]),Y=l.useCallback(()=>{S(t=>(t&&g({}),!t))},[]);return l.useEffect(()=>{const t=d?C:Object.keys(f),o=Object.entries(w).filter(([,n])=>n).map(([n])=>n).filter(n=>n!==void 0),i=Array.from(new Set([...t,...o]));k(d?null:i)},[d,f,w,C,k]),z?e.jsx(re.Loading,{sx:{my:4}}):e.jsxs(s.List,{disablePadding:!0,sx:{maxWidth:700},children:[e.jsx(s.ListItem,{sx:{position:"sticky",top:0,bgcolor:"background.paper",zIndex:1},disablePadding:!0,children:e.jsxs(s.ListItemButton,{onClick:Y,dense:!0,children:[e.jsx(s.ListItemIcon,{children:e.jsx(s.Checkbox,{edge:"start",checked:d,tabIndex:-1})}),e.jsx(s.ListItemText,{primary:p("common.all")})]})}),T.map(t=>{var L,R;const o=(L=r.routes)==null?void 0:L[t];if(!o)return null;const i=!1,n=c&&c[t]&&((R=c[t])==null?void 0:R.length)>0,a=A[t]!==!1,h=c[t]||[],m=!o.publishedAt||o.updatedAt&&new Date(o.updatedAt).getTime()>new Date(o.publishedAt).getTime();return e.jsxs(s.Box,{children:[e.jsx(s.ListItem,{sx:{pr:4},disablePadding:!0,secondaryAction:e.jsxs(s.Box,{sx:{display:"flex",alignItems:"center"},children:[m&&e.jsx(s.Tooltip,{title:p("maker.pages.needPublish"),children:e.jsx(O.Sync,{fontSize:"small",sx:{color:"warning.main",fontSize:16,mr:.35}})}),!o.isPublic&&e.jsx(s.Tooltip,{title:p("maker.pages.notPublic"),children:e.jsx(O.VisibilityOff,{fontSize:"small",sx:{color:"warning.main",fontSize:16,mr:.35}})}),i,n&&e.jsx(s.Box,{onClick:M=>Q(t,M),sx:{display:"inline-flex",alignItems:"center",mr:.35,cursor:"pointer",color:"info.main"},children:a?e.jsx(O.KeyboardArrowDown,{fontSize:"small",sx:{fontSize:"18px"}}):e.jsx(O.KeyboardArrowRight,{fontSize:"small",sx:{fontSize:"18px"}})})]}),children:e.jsxs(s.ListItemButton,{onClick:()=>N(t),dense:!0,children:[e.jsx(s.ListItemIcon,{children:e.jsx(s.Checkbox,{edge:"start",checked:d||!!f[t],tabIndex:-1})}),e.jsx(s.ListItemText,{primary:o.path,primaryTypographyProps:{noWrap:!0,textOverflow:"ellipsis"},secondaryTypographyProps:{noWrap:!0,textOverflow:"ellipsis"}})]})}),n&&e.jsx(s.Collapse,{in:a,children:e.jsx(s.Box,{children:h.map(M=>{const V=`${t}-${M.paramOptionIds.join("-")}`,Z=w[V]||!1;return e.jsx(ue,{routePathInfo:M,checked:d||Z,onClick:()=>X(t,M),route:o},V)})})})]},t)}),B.map(t=>{var i,n;const o=x==null?void 0:x.pages[t];return o?e.jsx(s.ListItem,{disablePadding:!0,secondaryAction:e.jsx(s.Chip,{color:"warning",label:"deleted",size:"small"}),children:e.jsxs(s.ListItemButton,{onClick:()=>N(t),dense:!0,children:[e.jsx(s.ListItemIcon,{children:e.jsx(s.Checkbox,{edge:"start",checked:d||!!f[t],tabIndex:-1})}),e.jsx(s.ListItemText,{primary:o.slug,secondary:(n=(i=o.locales)==null?void 0:i[b])==null?void 0:n.title,primaryTypographyProps:{noWrap:!0,textOverflow:"ellipsis"},secondaryTypographyProps:{noWrap:!0,textOverflow:"ellipsis"}})]})},t):null})]})}exports.default=ce;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),F=require("./state-BWuBNdK8.js"),W=require("@arcblock/ux/lib/Locale/context"),ee=require("@arcblock/ux/lib/Toast"),te=require("@blocklet/pages-kit/utils/route"),O=require("@mui/icons-material"),J=require("@mui/lab"),s=require("@mui/material"),se=require("immer"),ne=require("lodash/difference"),l=require("react"),ie=require("react-use"),re=require("./home-DryEAaN4.js"),U=require("./array-Cr5KF-hM.js"),G=r=>r&&r.__esModule?r:{default:r},$=G(ee),H=G(ne);function oe(r){const[j,k]=l.useState(!1);return e.jsx(J.LoadingButton,{...r,loading:r.loading||j,onClick:u=>{var b;const p=(b=r.onClick)==null?void 0:b.call(r,u);p instanceof Promise&&(k(!0),p.finally(()=>{k(!1)}))}})}const ae=s.createSvgIcon(e.jsxs("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{d:"M7.75732 16.2426L16.2426 7.75736",stroke:"#4B5563",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"}),e.jsx("path",{d:"M16.2426 16.2426L7.75732 7.75735",stroke:"#4B5563",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]}),"Close");function le(){const[r,j]=l.useState(),k=l.useMemo(()=>r?e.jsx(s.Dialog,{...r}):null,[r]),u=l.useCallback(()=>{j(void 0)},[]),p=l.useCallback(({title:b,content:d,cancelText:S="Cancel",okText:f="Ok",onOk:g,onClose:c,okIcon:P,okColor:w="primary",cancelColor:y="primary",DialogContentProps:A,form:E,...z})=>{j({...z,open:!0,children:e.jsxs("form",{onSubmit:v=>v.preventDefault(),children:[b&&e.jsxs(s.DialogTitle,{className:"between",zIndex:"appBar",bgcolor:"background.paper",sx:{borderBottom:v=>`1px solid ${v.palette.divider}`},children:[e.jsx(s.Box,{children:b}),e.jsx(s.IconButton,{size:"small",onClick:async()=>{u(),c==null||c()},children:e.jsx(ae,{})})]}),d&&e.jsx(s.DialogContent,{...A,sx:{mt:-3,...A==null?void 0:A.sx},children:e.jsx(s.Box,{pt:3,children:d})}),e.jsxs(s.DialogActions,{children:[e.jsx(s.Button,{variant:"outlined",color:y||"primary",onClick:c??u,children:S}),e.jsx(oe,{variant:"contained",color:w||"primary",startIcon:P,loadingPosition:P?"start":"center",onClick:async()=>{await(g==null?void 0:g()),u()},type:"submit",children:f})]})]}),onClose:c??u})},[u]);return{dialog:k,showDialog:p,closeDialog:u}}const ce=l.forwardRef(({mode:r,state:j},k)=>{const{t:u}=W.useLocaleContext(),[p,b]=l.useState(!1),{dialog:d,showDialog:S}=le(),f=F.useProjectId(),g=l.useCallback(P=>{let w=[];S({title:u("maker.publishToProduction"),content:e.jsxs(s.Box,{sx:{minWidth:300},children:[e.jsx(s.Alert,{color:"warning",icon:e.jsx(O.Warning,{}),children:u("maker.publishToProductionTip")}),e.jsx(s.Box,{maxHeight:"50vh",overflow:"auto",mt:2,children:e.jsx(de,{state:j,toMode:r,onChange:y=>w=y,defaultRouteIds:P})})]}),okText:u("maker.publish"),cancelText:u("common.cancel"),onOk:async()=>{if((w==null?void 0:w.length)===0){const y=u("maker.publishSelectPagesMessage");throw $.default.error(y),new Error(y)}localStorage.setItem(F.getProjectPageVersionKey(f??""),String(new Date().getTime())),b(!0);try{await U.publishPages({mode:r,routes:w}),$.default.success(u("maker.publishSuccessMessage"))}catch(y){throw $.default.error(y.message),y}finally{b(!1)}}})},[r,j,u,f,S]);l.useImperativeHandle(k,()=>({openPublishDialog:g}));const c=l.useCallback(()=>{g()},[g]);return e.jsxs(e.Fragment,{children:[e.jsx(J.LoadingButton,{color:"primary",variant:"contained",size:"small",sx:{mr:1},onClick:c,loading:p,disabled:p,children:u("maker.publish")}),d]})});function ue({routePathInfo:r,checked:j,onClick:k,route:u}){var d,S,f,g,c;const{t:p}=W.useLocaleContext(),b=!((d=r.routeMetaData)!=null&&d.publishedAt)||((S=r.routeMetaData)==null?void 0:S.updatedAt)&&new Date((f=r.routeMetaData)==null?void 0:f.updatedAt)>new Date((g=r.routeMetaData)==null?void 0:g.publishedAt);return e.jsx(s.ListItem,{sx:{pl:4,pr:3},disablePadding:!0,secondaryAction:e.jsxs(s.Box,{display:"flex",alignItems:"center",sx:{minWidth:"auto"},children:[b&&e.jsx(s.Box,{mr:.35,className:"visible",color:"warning.main",sx:{display:"flex",alignItems:"center"},title:p("maker.pages.needPublish"),children:e.jsx(s.Tooltip,{title:p("maker.pages.needPublish"),children:e.jsx(O.Sync,{fontSize:"small",sx:{fontSize:"16px"}})})}),(!((c=r.routeMetaData)!=null&&c.isPublic)||!u.isPublic)&&e.jsx(s.Box,{className:"visible",color:"warning.main",children:e.jsx(s.Tooltip,{title:p("maker.pages.notPublic"),children:e.jsx(O.VisibilityOff,{fontSize:"small",sx:{fontSize:"16px"}})})})]}),children:e.jsxs(s.ListItemButton,{onClick:k,dense:!0,children:[e.jsx(s.ListItemIcon,{children:e.jsx(s.Checkbox,{edge:"start",checked:j,tabIndex:-1})}),e.jsx(s.ListItemText,{primary:r.path,primaryTypographyProps:{fontSize:"0.8rem",fontStyle:"italic",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",pr:1}})]})})}function de({state:r,toMode:j,onChange:k,defaultRouteIds:u}){const{t:p,locale:b}=W.useLocaleContext(),[d,S]=l.useState(!1),[f,g]=l.useState(()=>u?Object.fromEntries(u.filter(t=>!t.includes("-")).map(t=>[t,!0])):{}),[c,P]=l.useState({}),[w,y]=l.useState(()=>u?Object.fromEntries(u.filter(t=>t.includes("-")).map(t=>[t,!0])):{}),[A,E]=l.useState({}),{loading:z,error:v,value:x}=ie.useAsync(()=>U.getPages({mode:j}),[j]);if(v)throw v;const D=l.useMemo(()=>r.routeIds||[],[r]),I=l.useMemo(()=>(x==null?void 0:x.pageIds)||[],[x]),T=l.useMemo(()=>!D||!r.routes?[]:JSON.parse(JSON.stringify(D)).sort((o,i)=>{var h,m;const n=(h=r.routes)==null?void 0:h[o],a=(m=r.routes)==null?void 0:m[i];return n!=null&&n.publishedAt&&new Date(n.publishedAt).getTime()<new Date(n.updatedAt).getTime()?-1:a!=null&&a.publishedAt&&new Date(a.publishedAt).getTime()<new Date(a.updatedAt).getTime()?1:new Date((n==null?void 0:n.updatedAt)??"").getTime()-new Date((a==null?void 0:a.updatedAt)??"").getTime()}),[r,D]),q=l.useMemo(()=>{if(!T)return[];if(!c)return T;const t=[...T].filter(o=>!c[o]);return Object.values(c).forEach(o=>{o.forEach(i=>{t.push(`${i.originalRouteId}-${i.paramOptionIds.join("-")}`)})}),t},[T,c]),B=l.useMemo(()=>!x||!I||!q?[]:H.default(I,q),[q,x,I]),C=l.useMemo(()=>D?[...D].concat(B):B,[D,B]),_=l.useCallback(()=>{const t={};T==null||T.forEach(o=>{var n;const i=(n=r.routes)==null?void 0:n[o];if(i&&i.params&&i.params.length>0&&i.paramsOptions&&i.paramsOptions.length>0){const a=te.generateParamCombinations({basePath:i.path,params:i.params,routeId:i.id,paramsOptions:i.paramsOptions,currentIndex:0,currentParams:[],currentOptionIds:[],result:[]});a.length>0&&(t[i.id]=a)}}),P(t)},[T,r.routes]);l.useEffect(()=>{_()},[_]),l.useEffect(()=>{E(t=>{const o={...t};return Object.keys(c).forEach(i=>{var n;c[i]&&((n=c[i])==null?void 0:n.length)>0&&o[i]===void 0&&(o[i]=!0)}),o})},[c]);const K=l.useRef(!0);l.useEffect(()=>{y(t=>{const o={...t};return Object.keys(c).length===0||(Object.keys(c).forEach(i=>{const n=c[i]||[],a=d||!!f[i];n.forEach(h=>{const m=`${i}-${h.paramOptionIds.join("-")}`;K.current?o[m]=a||t[m]||!1:o[m]=a})}),K.current=!1),o})},[f,c,d]);const Q=(t,o)=>{o.stopPropagation(),E(i=>{const n={...i};return n[t]=!n[t],n})},N=l.useCallback(t=>{g(o=>{const i=se.produce(o,n=>{d?(Object.assign(n,Object.fromEntries(C.map(a=>[a,!0]))),delete n[t]):n[t]?(delete n[t],B.includes(t)&&(D||[]).filter(a=>{var h,m;return((h=r.pages[a])==null?void 0:h.slug)===((m=x==null?void 0:x.pages[t])==null?void 0:m.slug)}).forEach(a=>{delete n[a]})):(n[t]=!0,D&&D.includes(t)&&B.filter(a=>{var h,m;return((h=x==null?void 0:x.pages[a])==null?void 0:h.slug)===((m=r.pages[t])==null?void 0:m.slug)}).forEach(a=>{n[a]=!0}))});return S(H.default(C,Object.keys(i)).length===0),i})},[d,C,B,r,x,D]),X=l.useCallback((t,o)=>{const i=`${t}-${o.paramOptionIds.join("-")}`;y(n=>{var m;const a={...n};a[i]=!a[i];const h=((m=c[t])==null?void 0:m.every(L=>a[`${t}-${L.paramOptionIds.join("-")}`]))??!1;return g(L=>{if(h&&!L[t])return{...L,[t]:!0};if(!h&&L[t]){const R={...L};return delete R[t],R}return L}),a})},[c]),Y=l.useCallback(()=>{S(t=>(t&&g({}),!t))},[]);return l.useEffect(()=>{const t=d?C:Object.keys(f),o=Object.entries(w).filter(([,n])=>n).map(([n])=>n).filter(n=>n!==void 0),i=Array.from(new Set([...t,...o]));k(d?null:i)},[d,f,w,C,k]),z?e.jsx(re.Loading,{sx:{my:4}}):e.jsxs(s.List,{disablePadding:!0,sx:{maxWidth:700},children:[e.jsx(s.ListItem,{sx:{position:"sticky",top:0,bgcolor:"background.paper",zIndex:1},disablePadding:!0,children:e.jsxs(s.ListItemButton,{onClick:Y,dense:!0,children:[e.jsx(s.ListItemIcon,{children:e.jsx(s.Checkbox,{edge:"start",checked:d,tabIndex:-1})}),e.jsx(s.ListItemText,{primary:p("common.all")})]})}),T.map(t=>{var L,R;const o=(L=r.routes)==null?void 0:L[t];if(!o)return null;const i=!1,n=c&&c[t]&&((R=c[t])==null?void 0:R.length)>0,a=A[t]!==!1,h=c[t]||[],m=!o.publishedAt||o.updatedAt&&new Date(o.updatedAt).getTime()>new Date(o.publishedAt).getTime();return e.jsxs(s.Box,{children:[e.jsx(s.ListItem,{sx:{pr:4},disablePadding:!0,secondaryAction:e.jsxs(s.Box,{sx:{display:"flex",alignItems:"center"},children:[m&&e.jsx(s.Tooltip,{title:p("maker.pages.needPublish"),children:e.jsx(O.Sync,{fontSize:"small",sx:{color:"warning.main",fontSize:16,mr:.35}})}),!o.isPublic&&e.jsx(s.Tooltip,{title:p("maker.pages.notPublic"),children:e.jsx(O.VisibilityOff,{fontSize:"small",sx:{color:"warning.main",fontSize:16,mr:.35}})}),i,n&&e.jsx(s.Box,{onClick:M=>Q(t,M),sx:{display:"inline-flex",alignItems:"center",mr:.35,cursor:"pointer",color:"info.main"},children:a?e.jsx(O.KeyboardArrowDown,{fontSize:"small",sx:{fontSize:"18px"}}):e.jsx(O.KeyboardArrowRight,{fontSize:"small",sx:{fontSize:"18px"}})})]}),children:e.jsxs(s.ListItemButton,{onClick:()=>N(t),dense:!0,children:[e.jsx(s.ListItemIcon,{children:e.jsx(s.Checkbox,{edge:"start",checked:d||!!f[t],tabIndex:-1})}),e.jsx(s.ListItemText,{primary:o.path,primaryTypographyProps:{noWrap:!0,textOverflow:"ellipsis"},secondaryTypographyProps:{noWrap:!0,textOverflow:"ellipsis"}})]})}),n&&e.jsx(s.Collapse,{in:a,children:e.jsx(s.Box,{children:h.map(M=>{const V=`${t}-${M.paramOptionIds.join("-")}`,Z=w[V]||!1;return e.jsx(ue,{routePathInfo:M,checked:d||Z,onClick:()=>X(t,M),route:o},V)})})})]},t)}),B.map(t=>{var i,n;const o=x==null?void 0:x.pages[t];return o?e.jsx(s.ListItem,{disablePadding:!0,secondaryAction:e.jsx(s.Chip,{color:"warning",label:"deleted",size:"small"}),children:e.jsxs(s.ListItemButton,{onClick:()=>N(t),dense:!0,children:[e.jsx(s.ListItemIcon,{children:e.jsx(s.Checkbox,{edge:"start",checked:d||!!f[t],tabIndex:-1})}),e.jsx(s.ListItemText,{primary:o.slug,secondary:(n=(i=o.locales)==null?void 0:i[b])==null?void 0:n.title,primaryTypographyProps:{noWrap:!0,textOverflow:"ellipsis"},secondaryTypographyProps:{noWrap:!0,textOverflow:"ellipsis"}})]})},t):null})]})}exports.default=ce;
@@ -0,0 +1,57 @@
1
+ "use strict";var _t=Object.defineProperty;var kt=(e,n,t)=>n in e?_t(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t;var v=(e,n,t)=>kt(e,typeof n!="symbol"?n+"":n,t);const vt=require("@blocklet/pages-kit/builtin/utils"),ye=require("@blocklet/pages-kit/types"),de=require("@blocklet/pages-kit/utils/property"),pe=require("@blocklet/quickjs"),Rt=require("@blocklet/sdk/lib/config"),Pe=require("lru-cache"),at=require("node-fetch"),F=require("ufo"),Z=require("crypto"),xt=require("@blocklet/logger"),w=require("fs"),S=require("path"),Lt=require("lodash/isNil"),Nt=require("@blocklet/pages-kit/utils/builtin"),rt=require("@blocklet/pages-kit/utils/typescript/builtin-module-transformer"),Ge=require("@blocklet/sdk/lib/component"),Mt=require("autoprefixer"),$t=require("esbuild"),Ut=require("postcss"),Ft=require("tailwindcss"),qt=require("typescript"),ee=require("@syncedstore/core"),Bt=require("yjs"),Ht=require("@blocklet/pages-kit/utils/data-source"),we=require("@blocklet/pages-kit/utils/route"),Gt=require("lodash"),Vt=require("@reactivedata/reactive"),Me=require("glob"),Jt=require("lib0/decoding"),Kt=require("lib0/encoding"),zt=require("lodash/cloneDeep"),Yt=require("lodash/debounce"),Wt=require("lodash/get"),Qt=require("lodash/isEmpty"),Xt=require("lodash/pick"),Zt=require("lodash/set"),es=require("lodash/union"),ts=require("nanoid"),ss=require("p-limit"),ns=require("stream/promises"),os=require("tar"),as=require("wait-on"),ie=require("y-protocols/awareness"),Re=require("y-protocols/sync"),rs=require("yaml"),k=require("sequelize");require("sqlite3");require("@blocklet/pages-kit/types/state");const L=e=>e&&e.__esModule?e:{default:e};function fe(e){if(e&&e.__esModule)return e;const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const s=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,s.get?s:{enumerable:!0,get:()=>e[t]})}}return n.default=e,Object.freeze(n)}const C=L(Rt),is=L(at),cs=L(xt),it=L(S),ls=L(Lt),ds=L(Mt),ps=fe($t),us=L(Ut),fs=L(Ft),U=L(qt),V=fe(Bt),xe=fe(Jt),x=fe(Kt),ms=L(zt),ct=L(Yt),Ve=L(Wt),lt=L(Qt),hs=L(Xt),Xe=L(Zt),gs=L(es),ys=L(ss),Ss=L(as),ne=fe(rs);C.default.env.mode;C.default.env.OPENAI_API_KEY||process.env.OPENAI_API_KEY;C.default.env.OPENAI_BASE_URL||process.env.OPENAI_BASE_URL;C.default.env.TRANSLATE_ADDITIONAL_PROMPT||process.env.TRANSLATE_ADDITIONAL_PROMPT;C.default.env.PAGE_CONTENT_ADDITIONAL_PROMPT||process.env.PAGE_CONTENT_ADDITIONAL_PROMPT;const Es="image-bin";C.default.env.INIT_TEMPLATE_PATH;const ws=process.env.DATABASE_URL||it.default.join(C.default.env.dataDir,"db/pages-kit.db"),Ze=C.default,bs=()=>C.default.env.tenantMode==="multiple",Is=()=>{var e;return(ls.default(Ze.env.preferences.multiTenantAllProjectAccessPassports)?[]:(e=Ze.env.preferences.multiTenantAllProjectAccessPassports)==null?void 0:e.split(","))||[]},Cs=it.default.join(C.default.env.dataDir,"fs-memoize-cache"),Os=C.default.env.FS_MEMOIZE_CACHE_VERSION||"v1.0.0",y=cs.default("pages-kit"),As=k.DataTypes.sqlite.DATE.parse;k.DataTypes.sqlite.DATE.parse=(e,n)=>typeof e=="number"?new Date(e):As(e,n);const me=new k.Sequelize({dialect:"sqlite",storage:ws,benchmark:process.env.ENABLE_SEQUELIZE_BENCHMARK==="true",retry:{match:[/SQLITE_BUSY/],name:"query",max:10},logging:process.env.ENABLE_SEQUELIZE_LOGGING==="true"?console.log:!1});me.query("pragma journal_mode = WAL;");me.query("pragma synchronous = normal;");me.query("pragma journal_size_limit = 67108864;");class Te extends k.Model{}Te.init({id:{type:k.DataTypes.UUID,allowNull:!1,primaryKey:!0,defaultValue:k.DataTypes.UUIDV4},projectId:{type:k.DataTypes.UUID,allowNull:!1},componentId:{type:k.DataTypes.STRING,allowNull:!1}},{sequelize:me,tableName:"ProjectComponents",timestamps:!1});class K extends k.Model{static async getProjectByIdOrSlug(n){return K.findOne({where:{[k.Op.or]:[{id:n},{slug:n}]}})}}K.init({id:{type:k.DataTypes.UUID,defaultValue:k.DataTypes.UUIDV4,primaryKey:!0},name:{type:k.DataTypes.STRING,allowNull:!1},description:k.DataTypes.TEXT,createdAt:k.DataTypes.DATE,updatedAt:k.DataTypes.DATE,createdBy:{type:k.DataTypes.STRING,allowNull:!1},updatedBy:{type:k.DataTypes.STRING,allowNull:!1},slug:k.DataTypes.STRING,icon:k.DataTypes.STRING,pinnedAt:k.DataTypes.DATE,useAllResources:k.DataTypes.BOOLEAN,npmSecret:k.DataTypes.STRING,relatedBlocklets:{type:k.DataTypes.JSON,allowNull:!1,defaultValue:{},get(){return this.getDataValue("relatedBlocklets")||{}},set(e){this.setDataValue("relatedBlocklets",JSON.stringify(e||{}))}}},{sequelize:me,paranoid:!0});K.hasMany(Te,{foreignKey:"projectId",as:"components"});const Ps=Cs,Ts=Os,$e=7*24*60*60*1e3,js=24*60*60*1e3,dt=async(e="")=>{const n=S.join(Ps,e);try{if(!(await w.promises.stat(n)).isDirectory())throw new Error(`${n} is not a directory`)}catch{await w.promises.mkdir(n,{recursive:!0})}return n},Ds=(e,n)=>{const t=Z.createHash("md5").update(n).digest("hex");return S.join(e,`${Ts}-${t}.json`)},_s=async(e="")=>{const n=await dt(e),t=Date.now();try{const s=await w.promises.readdir(n);await Promise.all(s.filter(o=>o.endsWith(".json")).map(async o=>{const a=S.join(n,o);try{const r=await w.promises.readFile(a,"utf-8"),u=JSON.parse(r);u.createdAt&&t-u.createdAt>$e&&await w.promises.unlink(a)}catch{try{const u=await w.promises.stat(a);t-u.mtimeMs>$e&&await w.promises.unlink(a)}catch{}}}))}catch(s){console.error(`Failed to cleanup cache in ${n}:`,s)}},ks=(()=>{const e=new Set;return setInterval(async()=>{await Promise.all(Array.from(e).map(s=>_s(s)))},js).unref(),s=>{e.add(s)}})();function Je(e,n){return n.subdir&&ks(n.subdir),pe.memoize(async(...s)=>{const o=await dt(n.subdir||""),a=n.keyGenerator?n.keyGenerator(...s):JSON.stringify(s),r=Ds(o,a);try{const u=await w.promises.readFile(r,"utf-8"),{value:c,createdAt:i}=JSON.parse(u);if(i&&Date.now()-i>$e)throw await w.promises.unlink(r).catch(()=>{}),new Error("Cache expired");return c}catch{const c=await e(...s),i=JSON.stringify({value:c,createdAt:Date.now()});return w.promises.writeFile(r,i,"utf-8").catch(d=>{console.error("Failed to write fs cache:",d)}),c}},{keyGenerator:n.keyGenerator,lruOptions:n.lruOptions})}const vs=async(e,{componentId:n})=>{const t=`@tailwind components;
2
+ @tailwind utilities;
3
+ `,s=`.CustomComponent_${n}`;return(await us.default([fs.default({content:[{raw:e,extension:"tsx"}]}),ds.default({overrideBrowserslist:["> 1%","last 2 versions"],stats:{}}),a=>{a.walkRules(r=>{r.selectors=r.selectors.map(u=>u.replace(/\.(.+)/g,`${s}.$1,${s} .$1`))})}]).process(t)).css},Rs=async(e,{componentId:n})=>{const t=await vs(e,{componentId:n});return`export const __PagesKit_CSS__ = ${JSON.stringify(t)};
4
+
5
+ ${e}
6
+ `},et=Je(async(e,n)=>{let t=U.default.transpileModule(e,{compilerOptions:{jsx:U.default.JsxEmit.React,target:U.default.ScriptTarget.ES2016,module:U.default.ModuleKind.ESNext},transformers:{before:[rt.createBuiltinModuleTransformer(U.default)]}}).outputText;if(n.tailwind&&(t=await Rs(t,{componentId:n.componentId})),n.module===ye.PreloadComponentScriptModule.ESM)return t;const s=U.default.transpileModule(t,{compilerOptions:{jsx:U.default.JsxEmit.React,target:U.default.ScriptTarget.ES2016,module:U.default.ModuleKind.CommonJS,moduleResolution:U.default.ModuleResolutionKind.Node16}}).outputText;return n.module===ye.PreloadComponentScriptModule.CJS?s:Ls(n.moduleName,s)},{keyGenerator:(e,n)=>{const t=Z.createHash("md5").update(e).digest("hex"),s={...n,componentId:n.componentId,module:n.module,...n.module!==ye.PreloadComponentScriptModule.ESM?{moduleName:n.moduleName}:{},tailwind:n.tailwind};return JSON.stringify(["transpileModule",t,s])},lruOptions:{max:100,ttl:1e3*60*60*24*7},subdir:"transpileModule"}),xs=async(e,n)=>{var r,u;const s=(u=(r=(await ps.build({entryPoints:["index.tsx"],external:Object.keys(Nt.BuiltinModules),format:"esm",target:"esnext",bundle:!0,write:!1,plugins:[{name:"vfs",setup(c){let i=null;c.onResolve({filter:/.*/},d=>d.path==="index.tsx"?{path:"index.tsx",namespace:"vfs"}:d.path==="./component"?{path:"component.tsx",namespace:"vfs"}:null),c.onLoad({filter:/.*/,namespace:"vfs"},async d=>{var E;if(d.path==="index.tsx")return{contents:`export { ${n} } from './component'`,loader:"tsx"};if(d.path==="component.tsx")return{contents:e,loader:"tsx"};if(rt.isRelativeModule(d.path)){const f=d.path.split("/").pop();if(i||(i=await _e({ensureLoaded:!1})),(E=i==null?void 0:i.chunks)!=null&&E[f])try{const p=w.readFileSync(i.chunks[f],"utf-8");return y.info("get chunk from local file system",f),{contents:p,loader:"tsx"}}catch{}}return null})}}]})).outputFiles)==null?void 0:r[0])==null?void 0:u.contents;if(!s)throw new Error("Failed to build server code");const o=Buffer.from(s).toString();return U.default.transpileModule(o,{compilerOptions:{module:U.default.ModuleKind.ESNext,target:U.default.ScriptTarget.ES2020}}).outputText},pt=Je(async(e,n)=>{const t=await xs(e,n);return new RegExp(`export\\s+\\{[^}]*(?:\\w+\\s+as\\s+${n}\\b|\\b${n}\\b)[^}]*\\}`,"m").test(t)?t:void 0},{keyGenerator:(e,n)=>{const t=Z.createHash("md5").update(e).digest("hex");return JSON.stringify(["extractExportValueSchema",t,n])},lruOptions:{max:100,ttl:1e3*60*60*24*7},subdir:"extractExportValueSchema"}),Ls=(e,n)=>`// GENERATED FILE. DO NOT EDIT.
7
+ var ${e} = async function () {
8
+
9
+ const exports = {};
10
+ let moduleExports = null;
11
+
12
+ // add commonjs module compatibility layer
13
+ const module = { exports: moduleExports };
14
+
15
+ // execute component code
16
+ ${n}
17
+
18
+ // handle possible module.exports
19
+ if (module.exports && module.exports !== moduleExports) {
20
+ // if module.exports is used, use it first
21
+ return typeof module.exports === 'object' ? module.exports : { default: module.exports };
22
+ }
23
+
24
+ // ensure a default export
25
+ if (!('default' in exports) && Object.keys(exports).length === 0) {
26
+ // module has no exports, return null to indicate invalid
27
+ return null;
28
+ }
29
+
30
+ return exports;
31
+ };
32
+ `,ce=new Pe.LRUCache({max:100}),ut=60*60,Ue=60;function ft(e){y.info("clear preload components cache",{cacheKey:e}),ce.delete(e)}function mt(e){for(const n of ce.keys())n.includes(e)&&(y.info("clear preload components cache",{cacheKey:n}),ft(n))}function ht({mode:e,instanceId:n,componentId:t,locale:s}){return["getPreloadComponents",e,n,t,s].join("-")}async function Ns({mode:e,req:n,state:t,locale:s,instances:o,module:a}){const{supportedLocales:r,config:{defaultLocale:u}}=t;if(!u)return null;const c=(await Promise.all(o.map(async p=>{try{const l=ht({mode:e,instanceId:p.id,componentId:p.componentId,locale:s});if(e!=="draft"&&p.useCache&&ce.has(l))return y.info(`get preload component from cache: ${l}`),ce.get(l);const m=ue({state:t,componentId:p.componentId});if(!m)return null;const b=await gt({req:n,state:t,componentId:m.id,locale:s,defaultLocale:u,properties:p.properties});if(!b)return null;const _={instanceId:p.id,preload:b};if(e!=="draft"&&p.useCache){let P=ut;p.cacheDuration&&(P=p.cacheDuration),y.info(`set preload component to cache(${P}s): ${l}`),ce.set(l,_,{ttl:P*1e3})}return _}catch(l){return y.error("get preload component error",{instanceId:p.id,componentId:p.componentId},{error:l}),null}}))).filter(p=>!!p),i=Object.values(c.reduce((p,l)=>({...p,...l.preload.components}),{}));async function d(){const p=await Promise.all(i.map(async l=>{const m=de.componentUMDName({componentId:l.component.id}),b=a===ye.PreloadComponentScriptModule.ESM?{module:a,script:await et(l.script,{componentId:l.component.id,module:a,tailwind:e!=="draft"})}:{module:a,script:await et(l.script,{componentId:l.component.id,module:a,moduleName:m,tailwind:e!=="draft"}),moduleName:m};return[l.component.id,{component:l.component,script:b}]}));return Object.fromEntries(p)}const E=await d();return{config:{defaultLocale:u,supportedLocales:r},components:E,instances:c.map(p=>({id:p.instanceId,componentId:p.preload.component.id,locales:{[p.preload.locale]:{props:p.preload.props}}}))}}async function gt({req:e,state:n,componentId:t,locale:s,defaultLocale:o,properties:a}){const{supportedLocales:r}=n,u=ue({state:n,componentId:t});if(!u)return null;const c=r.some(d=>d.locale===s)?s:o;if(!c)return null;const i=await yt({req:e,state:n,componentId:t,locale:c,defaultLocale:o,properties:a});return i?{component:u,...i}:null}const Ms=20;async function yt({req:e,depth:n=0,state:t,componentId:s,locale:o,defaultLocale:a,properties:r}){if(n>Ms)throw new RangeError("max component depth exceeded");const u=$s({state:t,componentId:s,properties:r,locale:o});if(!u)return null;const{props:c}=u,i={locale:o||a,components:{[u.component.id]:{component:u.component,script:u.script}},props:{...c}};try{const d=await Fs({...u,req:e});d!=null&&d.props&&Object.assign(i.props,d.props)}catch(d){y.error("preload data at server side error",{componentId:s,name:u.component.name},{error:d})}return await Promise.all(Object.entries(c).map(async([d,E])=>{if((E==null?void 0:E.type)===de.RenderNestedComponent){const f=await yt({req:e,depth:n+1,state:t,componentId:E.componentId,locale:o,defaultLocale:a,properties:E.properties});f&&(Object.assign(i.components,f.components),Object.assign(i.props,{[d]:{type:de.RenderNestedComponent,componentId:E.componentId,props:f.props}}))}})),i}function $s({state:e,componentId:n,locale:t,properties:s}){const o=ue({state:e,componentId:n});if(!o)return null;const a=de.mergeComponent({componentId:n,getComponent:r=>ue({state:e,componentId:r}),locale:t,defaultLocale:e.config.defaultLocale,properties:s});return a?{component:o,script:a.script,props:{locale:t,...a.props}}:null}function ue({state:e,componentId:n}){var t,s,o;return((t=e.components[n])==null?void 0:t.data)??((o=(s=e.resources.components)==null?void 0:s[n])==null?void 0:o.component)}function Us({state:e,name:n}){var s,o;const t=n.toLowerCase();return((s=Object.values(e.components).find(a=>{var r;return((r=a.data.name)==null?void 0:r.toLowerCase())===t}))==null?void 0:s.data)??((o=e.resources.components&&Object.values(e.resources.components).find(a=>{var r;return((r=a.component.name)==null?void 0:r.toLowerCase())===t}))==null?void 0:o.component)}async function Fs({component:e,script:n,props:t,req:s}){if(!(n!=null&&n.includes("getServerSideProps")))return null;const o=await pt(n,"getServerSideProps");if(!o)return null;const a=o.match(/export\s*{\s*(\w+)\s+as\s+getServerSideProps\s*}/)||o.match(/export\s*{\s*getServerSideProps\s*}/),r=(a==null?void 0:a[1])||"getServerSideProps",u=new Promise(i=>{setTimeout(()=>{i({})},Ue*1e3)});return await Promise.race([u,pe.Sandbox.callFunction({code:`${o}
33
+
34
+ export async function getServerSidePropsWrapper(props) {
35
+ const { location, fetch, props: componentProps } = props;
36
+ // 使用局部变量而不是全局变量
37
+ const originalLocation = typeof window !== 'undefined' ? window.location : undefined;
38
+ const originalFetch = globalThis.fetch;
39
+
40
+ try {
41
+ globalThis.location = location;
42
+ globalThis.fetch = fetch;
43
+ return await ${r}(componentProps);
44
+ } finally {
45
+ // 清理全局状态
46
+ if (originalLocation) globalThis.location = originalLocation;
47
+ if (originalFetch) globalThis.fetch = originalFetch;
48
+ }
49
+ }`,filename:`${e.name||e.id}.js`,moduleLoader:i=>{if(i==="@blocklet/pages-kit/builtin/utils")return`const { joinURL, withQuery, getQuery, getComponentMountPoint } = globalThis
50
+ export { joinURL, withQuery, getQuery, getComponentMountPoint }
51
+ `;if(i==="@blocklet/pages-kit/builtin/dayjs")return pe.BuiltinModules.dayjs},global:{console:{log:(...i)=>{y.info(...i)},warn:(...i)=>{y.warn(...i)},error:(...i)=>{y.error(...i)}},getComponentMountPoint:vt.getComponentMountPoint,joinURL:F.joinURL,withQuery:F.withQuery,getQuery:F.getQuery},functionName:"getServerSidePropsWrapper",args:[{location:{href:F.joinURL(F.withHttps(s.hostname),s.originalUrl)},fetch:(i,{...d}={})=>{const E=typeof i=="string"&&i.startsWith("/")?F.joinURL(C.default.env.appUrl,i):i;if(typeof E=="string"&&F.parseURL(E).host===F.parseURL(C.default.env.appUrl).host){const f=s.get("cookie");if(f){const p=new at.Headers(d.headers);p.set("cookie",f),d.headers=p}}return is.default(E,{...d,timeout:Ue*1e3}).then(f=>({ok:f.ok,status:f.status,statusText:f.statusText,headers:Object.fromEntries(f.headers.entries()),json:()=>f.json()}))},props:t}]})])}const St=pe.memoize(async(e,n,t)=>{if(!(e!=null&&e.includes(n)))return null;const s=await pt(e,n);if(s)try{return await pe.Sandbox.callFunction({code:`
52
+ ${s}
53
+
54
+ export function get${n}SchemaWrapper() {
55
+ return ${n};
56
+ }
57
+ `,filename:`${t}.js`,functionName:`get${n}SchemaWrapper`})}catch(o){return y.error(`获取 ${n} 失败`,{componentId:t,error:o}),null}return null},{keyGenerator:(e,n,t)=>{const s=Z.createHash("md5").update(e).digest("hex");return JSON.stringify(["getExportSchemaValueFromCode",s,n,t])},lruOptions:{max:100,ttl:1e3*60*60}}),qs="z8iZiDFg3vkkrPwsiba1TLXy3H9XHzFERsP8o",Fe="page",qe="trigger-reload-project-resource",Ke=qs,Bs="z2qa7BQdkEb3TwYyEYC1psK6uvmGnHSUHt5RM";function be(e){e.observeDeep(n=>{n.some(t=>t.changes.keys.has("updatedAt")||t.changes.keys.has("publishedAt"))||e.set("updatedAt",new Date().toISOString())})}function Et(){return w.mkdtempSync(S.join(C.default.env.dataDir,"tmp-"))}function Ie(e,n,t=[]){return Array.isArray(e)?e.flatMap((s,o)=>Ie(s,n,[...t,o])):typeof e=="object"?e===null?[]:Object.entries(e).flatMap(([s,o])=>Ie(o,n,[...t,s])):n(e)?[t]:[]}function q(e){return e.filter(n=>n!=null)}function Hs(e){e.pages&&Object.keys(e.pages).forEach(t=>{const s=ee.getYjsValue(e.pages[t]);s&&s instanceof V.Map&&be(s)});const n=ee.getYjsValue(e.pages);n&&n instanceof V.Map&&n.observe(t=>{t.changes.keys.forEach((s,o)=>{if(s.action==="add"){const a=ee.getYjsValue(e.pages[o]);a&&a instanceof V.Map&&be(a)}})})}function Gs(e){e.routes&&Object.keys(e.routes).forEach(t=>{var o;const s=ee.getYjsValue((o=e.routes)==null?void 0:o[t]);s&&s instanceof V.Map&&be(s)});const n=ee.getYjsValue(e.routes);n&&n instanceof V.Map&&n.observe(t=>{t.changes.keys.forEach((s,o)=>{var a;if(s.action==="add"){const r=ee.getYjsValue((a=e.routes)==null?void 0:a[o]);r&&r instanceof V.Map&&be(r)}})})}function Vs(e,n){var t;for(const s of n||Object.keys(e.routes||{})){let o=s,a=[];if(s.includes("-")){const[r,...u]=s.split("-");o=r,a=u||[]}if(((t=e.routes)==null?void 0:t[o])!==void 0){e.routes[o].publishedAt=new Date().toISOString();const r=e.routes[o];if(!r||!r.params||r.params.length===0)continue;if(s.includes("-")&&a.length>0){const u=we.getRouteMetaDataByOptionIds(a,r);u&&(u.publishedAt=new Date().toISOString())}if(!n){const u=we.generateParamCombinations({basePath:r.path,params:r.params,routeId:r.id,paramsOptions:r.paramsOptions,currentIndex:0,currentParams:[],currentOptionIds:[],result:[]});for(const c of u)c.routeMetaData??(c.routeMetaData={}),c.routeMetaData.publishedAt=new Date().toISOString()}}}}function Le({page:e,route:n,state:t,routeId:s,routePathInfo:o}){var r,u,c,i,d,E,f,p,l;y.info(`Executing datasource data assembly, routeId: ${s}, routePathInfo: ${JSON.stringify(o)}`);const a={...Gt.cloneDeep(e),id:s,slug:(o==null?void 0:o.path)??n.path,createdAt:n.createdAt,updatedAt:((r=o==null?void 0:o.routeMetaData)==null?void 0:r.updatedAt)??n.updatedAt,publishedAt:((u=o==null?void 0:o.routeMetaData)==null?void 0:u.publishedAt)??n.publishedAt,isPublic:(((c=o==null?void 0:o.routeMetaData)==null?void 0:c.isPublic)??n.isPublic)&&n.isPublic};for(const m of t.supportedLocales){if(n.dataSource){let b=n.id;o&&(b=o.paramOptionIds.join("-"));const _=((E=(d=(i=n.dataSource.pathDataMappings)==null?void 0:i[b])==null?void 0:d.dataCache)==null?void 0:E[m.locale])??((l=(p=(f=n.dataSource.pathDataMappings)==null?void 0:f[b])==null?void 0:p.dataCache)==null?void 0:l[t.config.defaultLocale||"en"]);if(!_)continue;Ht.setPageDataSource(a,t,m.locale,_)}o&&o.routeMetaData&&(o.routeMetaData.publishedAt=new Date().toISOString())}return a}const Ce=new Pe.LRUCache({max:20,ttl:10*60*1e3});function Js(e,n=[]){let t=0;const s=Array.from(Ce.keys()),o=[];for(const a of e){o.push(`page-html:prod:${a}:lang-path=none`);for(const r of n)o.push(`page-html:prod:/${r}${a}:lang-path=${r}`)}for(const a of s){const r=a.split(":lang-path=")[0]||"";for(const u of o){const i=(u.split(":lang-path=")[0]||"").replace(/\/:[^/]+/g,"");if(r.startsWith(i)){Ce.delete(a),t++,y.info(`[Cache CLEAR] key: ${a}`);break}}}return y.info(`[Cache CLEAR] cleared ${t} entries for patterns:`,o),t}function Ks({projectId:e,projectSlug:n,supportedLocales:t=[]}){let s=0;const o=Array.from(Ce.keys()),a=[];a.push(`page-html:prod:/${e}`),n&&n!==e&&a.push(`page-html:prod:/${n}`);for(const r of t)a.push(`page-html:prod:/${r}/${e}`),n&&n!==e&&(n!=="/"?a.push(`page-html:prod:/${r}/${n}`):a.push(`page-html:prod:/${r}`));for(const r of o)for(const u of a)if(r.startsWith(u)){Ce.delete(r),s++,y.info(`[Cache CLEAR PROJECT] key: ${r}`);break}return y.info(`[Cache CLEAR PROJECT] cleared ${s} entries for project ${e}${n?` (slug: ${n})`:""}`),s}const{uploadToMediaKit:zs}=require("@blocklet/uploader-server"),Se=ts.customAlphabet("abcdefghijklmnopqrstuvwxyz0123456789",16),ze=/^\w+(\w|-|\.)+\w+\.(jpe?g|png|gif|svg|bmp|webp|mp4|m4v|webm)$/,le=/mediakit:\/\/([a-f0-9]{32}\.(jpe?g|png|gif|svg|bmp|webp|mp4|m4v|webm))/i,tt=/mediakit:\/\/([a-f0-9]{32}\.(jpe?g|png|gif|svg|bmp|webp|mp4|m4v|webm))/gi,Ys=1e4,Ws=3e4,he=0,Ne=1,Qs=0,Xs=1,Be=C.default,se=S.join(process.env.BLOCKLET_DATA_DIR,"site-state"),Zs=["production","draft"],en=["production"];function Oe(e){return(e==null?void 0:e.replace(/\//g,"|"))||""}function tn(){var t;const e=Be.env.languages.map(s=>({locale:s.code,name:s.name})),n=(t=e[0])==null?void 0:t.locale;return{pageIds:[],pages:{},routeIds:[],routes:{},dataSourceIds:[],dataSources:{},components:{},supportedLocales:e,config:{defaultLocale:n},resources:{}}}const j=class j extends V.Doc{constructor(t){super();v(this,"syncedStore");v(this,"conns",new Map);v(this,"awareness");v(this,"releaseTimer");v(this,"awarenessChangeHandler",({added:t,updated:s,removed:o},a)=>{const r=t.concat(s,o);if(a!==null){const i=this.conns.get(a);i&&(t.forEach(d=>{i.add(d)}),o.forEach(d=>{i.delete(d)}))}const u=x.createEncoder();x.writeVarUint(u,Ne),x.writeVarUint8Array(u,ie.encodeAwarenessUpdate(this.awareness,r));const c=x.toUint8Array(u);this.conns.forEach((i,d)=>this.send(d,c))});v(this,"updateHandler",t=>{const s=x.createEncoder();x.writeVarUint(s,he),Re.writeUpdate(s,t);const o=x.toUint8Array(s);this.conns.forEach((a,r)=>this.send(r,o))});v(this,"ensureDataStructure",()=>{var c;const{supportedLocales:t,pages:s,pageIds:o,config:a,routes:r,routeIds:u}=this.syncedStore;{const i=new Set(Object.keys(s));let d=0;for(;d<o.length;){const E=o[d];i.has(E)?(i.delete(E),d++):o.splice(d,1)}}{const i=new Set(Object.keys(r));let d=0;for(;d<u.length;){const E=u[d];i.has(E)?(i.delete(E),d++):u.splice(d,1)}}t.splice(0,t.length),t.push(...Be.env.languages.map(i=>({locale:i.code,name:i.name}))),a.defaultLocale=(c=t[0])==null?void 0:c.locale;{let i=0;const d=new Set;for(;i<t.length;){const{locale:E}=t[i];d.has(E)?t.splice(i,1):(i++,d.add(E))}}});v(this,"send",(t,s)=>{t.readyState!==Qs&&t.readyState!==Xs&&this.closeConn(t);try{t.send(s,o=>{o&&this.closeConn(t)})}catch{this.closeConn(t)}});v(this,"closeConn",t=>{if(t.removeAllListeners(),this.conns.has(t)){const s=this.conns.get(t);this.conns.delete(t),s&&ie.removeAwarenessStates(this.awareness,Array.from(s),null)}t.close(),this.checkAndScheduleRelease()});v(this,"autoSave",ct.default(()=>{w.mkdirSync(S.dirname(this.draftYjsFilePath),{recursive:!0}),w.writeFileSync(this.draftYjsFilePath,V.encodeStateAsUpdate(this))},Ys));v(this,"save",({flush:t=!1}={})=>{this.autoSave(),t&&this.autoSave.flush()});v(this,"publish",async({mode:t,routes:s})=>{const o=await this.getState("draft"),a=await this.getState("production");await He(o,a,{routes:s,mergeMode:"replace",deleteRoutes:!0,publishMode:t}),a.config.publishedAt=new Date().getTime(),Vs(this.syncedStore,s),await this.setState(t,a),await this.clearPageCacheForRoutes(s,a)});v(this,"mergeState",async(t,s)=>{var u,c,i;const o=JSON.parse(JSON.stringify(s));(u=t.config).fontFamily??(u.fontFamily={});const a=(c=o.config)==null?void 0:c.fontFamily,r=(i=t.config)==null?void 0:i.fontFamily;t.config.fontFamily.title=(a==null?void 0:a.title)||(r==null?void 0:r.title),t.config.fontFamily.description=(a==null?void 0:a.description)||(r==null?void 0:r.description),await new Promise((d,E)=>{this.transact(async()=>{try{const f=await He(t,s);d(f)}catch(f){E(f)}})})});v(this,"clearPageCacheForRoutes",async(t,s)=>{const o=S.basename(this.options.path),a=await K.findByPk(o),r=(a==null?void 0:a.slug)||o;if(y.info(`[SiteState] clearing page cache for project ${o}, routes:`,t||[]),!t||t.length===0){Ks({projectId:o,projectSlug:r,supportedLocales:s.supportedLocales.map(d=>d.locale)});return}const u=s.supportedLocales.map(d=>d.locale),c=[],i=t.filter(d=>s.pages[d]);for(const d of i){const f=s.pages[d].slug;r&&r!==o&&(r==="/"?c.push(f):c.push(`/${r}${f}`)),c.push(`/${o}${f}`)}if(y.info(`[SiteState] clearing page cache for project ${o}, pathPatterns:`,c),c.length>0){const d=Js(c,u);y.info(`[SiteState] cleared ${d} page cache entries for project ${o}, routes:`,t)}});v(this,"addConnection",t=>{if(this.conns.has(t))return;this.cancelRelease(),t.binaryType="arraybuffer",this.conns.set(t,new Set),t.on("message",a=>this.messageListener(t,new Uint8Array(a)));let s=!0;const o=setInterval(()=>{if(!s)this.conns.has(t)&&this.closeConn(t),clearInterval(o);else if(this.conns.has(t)){s=!1;try{t.ping()}catch{this.closeConn(t),clearInterval(o)}}},Ws);t.on("close",()=>{this.closeConn(t),clearInterval(o)}),t.on("pong",()=>{s=!0});{const a=x.createEncoder();x.writeVarUint(a,he),Re.writeSyncStep1(a,this),this.send(t,x.toUint8Array(a));const r=this.awareness.getStates();if(r.size>0){const u=x.createEncoder();x.writeVarUint(u,Ne),x.writeVarUint8Array(u,ie.encodeAwarenessUpdate(this.awareness,Array.from(r.keys()))),this.send(t,x.toUint8Array(u))}}});v(this,"messageListener",(t,s)=>{try{const o=x.createEncoder(),a=xe.createDecoder(s),r=xe.readVarUint(a);switch(r){case he:x.writeVarUint(o,he),Re.readSyncMessage(a,o,this,null),x.length(o)>1&&(this.ensureDataStructure(),this.send(t,x.toUint8Array(o)));break;case Ne:{ie.applyAwarenessUpdate(this.awareness,xe.readVarUint8Array(a),t);break}default:y.warn(`Unsupported messageType ${r}`)}}catch(o){y.error(o)}this.save()});this.options=t,w.existsSync(this.draftYjsFilePath)&&V.applyUpdate(this,w.readFileSync(this.draftYjsFilePath)),this.syncedStore=Vt.reactive(ee.syncedStore({pages:{},pageIds:[],components:{},supportedLocales:[],config:{},resources:{},routeIds:[],routes:{},dataSourceIds:[],dataSources:{}},this)),this.initObserver(),this.on("update",this.updateHandler),this.awareness=new ie.Awareness(this),this.awareness.on("update",this.awarenessChangeHandler),this.ensureDataStructure()}static safeDeleteProjectStateDir(t){if(!t)throw new Error("Should provide project context");try{const s=S.join(se,t),o=S.join(se,`@del-${t}`);w.renameSync(s,o)}catch(s){y.error("Failed to safe delete project state dir:",s)}}static get projectIds(){return Me.globSync("*/",{cwd:se,ignore:["@del-*","@tmp-*",".*","staging","production","@backup-*"]})}static get allShared(){return this.projectIds.map(t=>j.shared(t))}static shared(t){if(!t)throw new Error("Should provide project context");let s=j.sharedInstances[t];return s||(s=new j({path:S.join(se,t)}),j.sharedInstances[t]=s,jt({projectId:t,pages:je,components:De}),s)}static async getProductionState(t){var o,a;let s=j.productionStates.get(t);if(!s){const r=S.join(se,t,"production");if(s=await Ye(r,{includeResources:!0})??tn(),!((o=s==null?void 0:s.config)!=null&&o.defaultLocale)){s.config??(s.config={});const u=Be.env.languages.map(c=>({locale:c.code,name:c.name}));s.config.defaultLocale=(a=u[0])==null?void 0:a.locale}j.productionStates.set(t,s)}return{...s,resources:await _e().then(async r=>{var E,f;const{pages:u,components:c}=hs.default(r,"pages","components");let i=c;const d=await K.findByPk(t);if(d!=null&&d.useAllResources)i=c;else{const l=(await Te.findAll({where:{projectId:t}})).map(b=>b.componentId);i=Object.fromEntries(Object.entries(c||{}).filter(([b])=>l.includes(b)))}return Object.keys(((E=s==null?void 0:s.resources)==null?void 0:E.components)||{}).length>0&&(i={...i,...(f=s==null?void 0:s.resources)==null?void 0:f.components}),{pages:u,components:i}}).catch(()=>({}))}}destroy(){this.cancelRelease(),this.save({flush:!0}),this.conns.forEach((s,o)=>this.closeConn(o)),this.awareness.destroy();const t=S.basename(this.options.path);delete j.sharedInstances[t],super.destroy()}initObserver(){Hs(this.syncedStore),Gs(this.syncedStore)}get draftYjsFilePath(){return S.join(this.options.path,"draft.yjs")}static async getStateByProjectId(t,s){if(s==="draft"){const o=j.shared(t);return JSON.parse(JSON.stringify(o.syncedStore))}return j.getProductionState(t)}async getState(t){if(t==="draft")return JSON.parse(JSON.stringify(this.syncedStore));const s=S.basename(this.options.path);return j.getProductionState(s)}async setState(t,s){const o=await Ct(s,{exportAssets:!1,includeResources:!0}),a=this.getPublishDir(t);if(w.mkdirSync(S.dirname(a),{recursive:!0}),w.rmSync(a,{force:!0,recursive:!0}),w.renameSync(o,a),t==="production"){const r=S.basename(this.options.path);j.productionStates.set(r,s)}}getPublishDir(t){return S.join(this.options.path,t)}checkAndScheduleRelease(){this.conns.size===0&&this.scheduleRelease()}scheduleRelease(){this.cancelRelease();const t=S.basename(this.options.path);this.releaseTimer=setTimeout(()=>{y.info(`[SiteState] releasing instance due to no active connections: ${t}`),this.conns.size===0&&(this.releaseTimer=void 0,this.destroy())},j.RELEASE_DELAY),y.info(`[SiteState] scheduled release for project ${t} in ${j.RELEASE_DELAY/1e3}s`)}cancelRelease(){if(this.releaseTimer){clearTimeout(this.releaseTimer),this.releaseTimer=void 0;const t=S.basename(this.options.path);y.info(`[SiteState] cancelled scheduled release for project ${t}`)}}static async pageUrlMap(t,s){var r,u;let{projectIds:o}=this;s&&(o=[s]);const a={};for(const c of o){const i=await K.findByPk(c);if(!i)continue;const d=await j.getStateByProjectId(c,t),E=i.slug||c,f=gs.default(C.default.env.languages.map(l=>l.code),d.supportedLocales.map(l=>l.locale)),p=(l,m)=>{E&&(a[F.joinURL("/",E,l)]={...m,shouldRedirect:!0,mainPage:!0}),a[F.joinURL("/",c,l)]={...m,shouldRedirect:!0,mainPage:!0};for(const b of f){const _={...m,locale:b};a[F.joinURL("/",b,c,l)]=_,E&&(a[F.joinURL("/",b,E,l)]=_)}};if(t==="draft")for(const l of d.routeIds||[]){const m=(r=d==null?void 0:d.routes)==null?void 0:r[l];if(!m)continue;if(m.params&&m.params.length>0){const P=we.generateParamCombinations({basePath:m.path,params:m.params,routeId:m.id,paramsOptions:m.paramsOptions,currentIndex:0,currentParams:[],currentOptionIds:[],result:[]});for(const M of P){const Y=M.path,te={projectId:c,projectSlug:E,pageSlug:Y,pageId:m.displayTemplateId||"",routeId:l,defaultLocale:f==null?void 0:f[0],locales:f,publishedAt:d.config.publishedAt,isPublic:m.isPublic&&((u=M==null?void 0:M.routeMetaData)==null?void 0:u.isPublic)};p(Y,te)}}const b=m.path,_={projectId:c,projectSlug:E,pageSlug:b,pageId:m.displayTemplateId||"",routeId:l,defaultLocale:f==null?void 0:f[0],locales:f,publishedAt:d.config.publishedAt,isPublic:m.isPublic};p(b,_)}for(const l of d.pageIds){const m=d.pages[l];if(!m||t==="production"&&!m.isPublic)continue;const b=m.slug,_=i.slug||c,P={projectId:c,projectSlug:_,pageSlug:b,pageId:l,defaultLocale:f==null?void 0:f[0],locales:f,publishedAt:d.config.publishedAt,isPublic:m.isPublic,templateConfig:m.templateConfig};p(b,P)}}return a}getDocumentSize(){return V.encodeStateAsUpdate(this).byteLength}static getInstancesSizeInfo(){const t=[];for(const[s,o]of Object.entries(j.sharedInstances)){const a=o.getDocumentSize();t.push({projectId:s,sizeInBytes:a,sizeInMB:`${(a/(1024*1024)).toFixed(2)} MB`,activeConnections:o.conns.size})}return t}static startPeriodicCheck(){this.periodicCheckTimer||(this.periodicCheckTimer=setInterval(()=>{this.performPeriodicCheck()},this.PERIODIC_CHECK_INTERVAL),y.info(`[SiteState] periodic check started, interval: ${this.PERIODIC_CHECK_INTERVAL/(60*60*1e3)} hours`))}static stopPeriodicCheck(){this.periodicCheckTimer&&(clearInterval(this.periodicCheckTimer),this.periodicCheckTimer=void 0,y.info("[SiteState] periodic check stopped"))}static performPeriodicCheck(){const t=Object.keys(j.sharedInstances).length,s=[],o=[];for(const[a,r]of Object.entries(j.sharedInstances))r.conns.size===0?s.push({projectId:a,instance:r}):o.push({projectId:a,connections:r.conns.size});if(y.info(`[SiteState] periodic check summary: total instances: ${t}, with connections: ${o.length}, without connections: ${s.length}`),s.length>0){y.info(`[SiteState] releasing ${s.length} instances without connections:`,s.map(r=>r.projectId));let a=0;for(const{projectId:r,instance:u}of s)try{y.info(`[SiteState] releasing instance due to periodic check: ${r}`),u.destroy(),a++}catch(c){y.error(`[SiteState] failed to release instance ${r} during periodic check:`,c)}y.info(`[SiteState] periodic check completed: ${a}/${s.length} instances released successfully`)}else t>0?y.debug("[SiteState] periodic check: all instances have active connections"):y.debug("[SiteState] periodic check: no instances exist")}};v(j,"PRODUCTION_CACHE_TTL",7*24*60*60*1e3),v(j,"RELEASE_DELAY",5*60*1e3),v(j,"PERIODIC_CHECK_INTERVAL",2*60*60*1e3),v(j,"sharedInstances",{}),v(j,"productionStates",new Pe.LRUCache({max:100,ttl:j.PRODUCTION_CACHE_TTL})),v(j,"periodicCheckTimer");let z=j;async function sn(e,n,t){if(!e||!w.existsSync(e)||!w.lstatSync(e).isFile())return null;let s=t[e];return s||(s=(async()=>{var o;try{const a=(o=await zs({filePath:e,fileName:n}))==null?void 0:o.data;return a==null?void 0:a.filename}catch(a){return y.error(`Failed to upload asset ${e}:`,a),null}})(),t[e]=s),s}const wt=async(e,n)=>{const t=S.basename(e),s=await Ge.call({name:Ke,path:F.joinURL("/uploads",t),responseType:"stream",method:"GET"});if(s.status>=200&&s.status<400){const o=w.createWriteStream(n);await ns.pipeline(s.data,o)}else throw new Error(`download asset failed ${s.status}`)},bt=async(e,n)=>{await Promise.all(e.map(async t=>{try{await wt(t,S.join(n,S.basename(t)))}catch(s){y.error(`Failed to export assets: ${t}, ${s}`)}}))};function It(e){return ze.test(e)?[e]:le.test(e)?(tt.lastIndex=0,Array.from(e.matchAll(tt)).map(t=>t[1]).filter(t=>!!t)):[]}async function ge(e,n,t){const{getFilename:s,exportAssets:o}=t,a=S.join(n,s(e));if(w.mkdirSync(S.dirname(a),{recursive:!0}),w.writeFileSync(a,ne.stringify(e)),o){const u=Ie(e,c=>typeof c=="string"&&(ze.test(c)||le.test(c))).map(c=>{const i=Ve.default(e,c);return It(i)}).flat().filter(Boolean);await bt(u,S.dirname(a))}}const st=new Pe.LRUCache({max:20,ttl:30*24*60*60*1e3});async function nt(e,n,t){var u;const s=Ie(e,c=>typeof c=="string"&&(ze.test(c)||le.test(c))),o=ys.default(2),a=s.map(c=>o(async()=>{try{const i=Ve.default(e,c),d=It(i);for(const E of d){const f=S.basename(E),p=t.getFilePath(E,c),l=p?`${p}:${f}`:f,m=st.get(l);if(m){le.test(i)||Xe.default(e,c,m);return}const b=await sn(p,f,n);b&&(le.test(i)||Xe.default(e,c,b),st.set(l,b))}}catch(i){y.error(`Failed to process upload for path ${c.join(".")}:`,i.message||i.reason)}})),r=await Promise.allSettled(a);(u=t.onFinish)==null||u.call(t,r)}async function Ct(e,{exportAssets:n,pageIds:t="all",componentIds:s="all",rawConfig:o,includeResources:a=!1,routeIds:r="all"}={}){var ae,I,h,A,D,W,O,N,B,Q,J,re;const u=t==="all"?e.pageIds:t,c=de.getComponentDependencies({state:e,pageIds:u,componentIds:s==="all"?Object.keys(e.components):s}),i=r==="all"?e.routeIds:r,d=g=>({id:g.id,name:g.name,isTemplateSection:g.isTemplateSection??!1,templateDescription:g.templateDescription,llmConfig:g.llmConfig,component:g.component,config:g.config,visibility:g.visibility,sections:g.sections,sectionIds:g.sectionIds}),E=(g,T)=>{var R;return{id:g.id,createdAt:g.createdAt,updatedAt:g.updatedAt,publishedAt:g.publishedAt,isPublic:g.isPublic??!0,templateConfig:g.templateConfig,meta:((R=g.locales)==null?void 0:R[T])??{},sections:q(g.sectionIds.map(H=>{const $=g.sections[H];return $&&d($)})),dataSource:Object.fromEntries(Object.entries(g.dataSource||{}).map(([H,$])=>[H,($==null?void 0:$[T])??{}]))}},f=g=>({id:g.id,createdAt:g.createdAt,updatedAt:g.updatedAt,publishedAt:g.publishedAt,path:g.path,handler:g.handler,isPublic:g.isPublic??!0,params:g.params??[],enabledGenerate:g.enabledGenerate??!1,displayTemplateId:g.displayTemplateId,dataSource:g.dataSource}),p=q(i.map(g=>{const T=e.routes[g];return T&&f(T)})),l=q(e.supportedLocales.map(g=>g.locale).flatMap(g=>u.map(T=>{const R=e.pages[T];return R&&{locale:g,slug:R.slug,page:E(R,g)}}))),m=Et(),b=S.join(m,"pages");w.mkdirSync(b,{recursive:!0});const _=S.join(m,"components");w.mkdirSync(_,{recursive:!0});const P=S.join(m,"routes");w.mkdirSync(P,{recursive:!0});for(const{locale:g,slug:T,page:R}of l)await ge(R,b,{getFilename:()=>`${Oe(T)||"index"}.${g}.yml`,exportAssets:n});for(const g of p)await ge(g,P,{getFilename:()=>`${Oe(g.path)||"index"}.yml`,exportAssets:n});for(const g of c){const T=(ae=e.components[g])==null?void 0:ae.data;T&&await ge(T,_,{getFilename:R=>`${R.name||"unnamed"}.${R.id}.yml`,exportAssets:n})}const M=S.join(m,".blocklet/pages/pages.config.yml");w.mkdirSync(S.dirname(M),{recursive:!0});const Y={pages:q(u.map(g=>{const T=e.pages[g];return T&&{id:g,slug:T.slug}})),routes:q(i.map(g=>{const T=e.routes[g];return T&&{id:g,path:T.path}})),components:q(c.map(g=>{var R;const T=(R=e.components[g])==null?void 0:R.data;return T&&{id:g,name:T.name}})),...a?{resources:{components:q(Object.keys(((I=e.resources)==null?void 0:I.components)||{}).filter(g=>c.includes(g)).map(g=>{var T,R,H,$;return{id:g,name:($=(H=(R=(T=e.resources)==null?void 0:T.components)==null?void 0:R[g])==null?void 0:H.component)==null?void 0:$.name}}))}}:{},supportedLocales:e.supportedLocales,config:e.config};w.writeFileSync(M,ne.stringify(Y));const te=S.join(m,"config.source.json");if(o&&w.writeFileSync(te,JSON.stringify(o)),a){const g=S.join(m,"resources"),T=S.join(g,"components");w.mkdirSync(T,{recursive:!0});for(const $ of Object.keys(((h=e==null?void 0:e.resources)==null?void 0:h.components)??{}).filter(G=>c.includes(G))){const G=(W=(D=(A=e.resources)==null?void 0:A.components)==null?void 0:D[$])==null?void 0:W.component;G&&await ge(G,T,{getFilename:X=>`${X.name||"unnamed"}.${X.id}.yml`,exportAssets:n})}const R=S.join(m,"chunks");w.mkdirSync(R,{recursive:!0});const{chunks:H}=await _e();for(const $ of Object.keys(((O=e==null?void 0:e.resources)==null?void 0:O.components)??{}).filter(G=>c.includes(G))){const G=(Q=(B=(N=e.resources)==null?void 0:N.components)==null?void 0:B[$])==null?void 0:Q.component;if(G&&((J=G.renderer)==null?void 0:J.type)==="react-component"){const X=((re=G.renderer)==null?void 0:re.chunks)??[];if((X==null?void 0:X.length)>0)for(const ke of X){const Qe=S.join(R,ke),ve=H==null?void 0:H[ke];try{ve&&w.existsSync(ve)&&!w.existsSync(Qe)&&w.copyFileSync(ve,Qe)}catch(Dt){y.error(`copy chunk ${ke} error`,Dt.message)}}}}}return m}async function Ye(e,{importAssets:n,includeResources:t}={}){var a,r,u,c;if(!w.existsSync(e))return null;let s,o=!1;try{w.lstatSync(e).isDirectory()?s=e:/\.(tgz|gz|tar)$/.test(e)&&(o=!0,s=Et(),await os.x({file:e,C:s}));const i=Me.globSync("**/.blocklet/pages/pages.config.yml",{cwd:s,absolute:!0}).at(0),d=i&&S.join(S.dirname(i),"../../pages"),E=i&&S.join(S.dirname(i),"../../components"),f=i&&S.join(S.dirname(i),"../../chunks"),p=i&&S.join(S.dirname(i),"../../routes");if(!i)return null;const l=ne.parse(w.readFileSync(i).toString()),m=(I,h,A)=>{let D=S.join(I,`${h}${A?`.${A}`:""}.yml`);return(!w.existsSync(D)||!w.lstatSync(D).isFile())&&(D=S.join(I,h,`index${A?`.${A}`:""}.yml`),!w.existsSync(D)||!w.lstatSync(D))?null:ne.parse(w.readFileSync(D).toString())},b=(I,h)=>{try{const A=Me.globSync(`*.${h}.yml`,{cwd:I,absolute:!0})[0];return A?ne.parse(w.readFileSync(A).toString()):null}catch(A){y.error("parse component error",A)}return null},_=(I,h)=>{let A=S.join(I,`${h}.yml`);return(!w.existsSync(A)||!w.lstatSync(A).isFile())&&(A=S.join(I,h,"index.yml"),!w.existsSync(A)||!w.lstatSync(A))?null:ne.parse(w.readFileSync(A).toString())},P=q(l.pages.map(({slug:I})=>{var W;const h=q(l.supportedLocales.map(({locale:O})=>{const N=d?m(d,Oe(I),O):void 0;if(N)return{locale:O,page:N};const B=d?m(d,I,O):void 0;return B&&{locale:O,page:B}})),A=(W=h[0])==null?void 0:W.page;if(!A)return null;const D=A.sections.map(O=>({id:O.id||Se(),component:O.component,config:O.config,name:O.name,isTemplateSection:O.isTemplateSection??!1,templateDescription:O.templateDescription,llmConfig:O.llmConfig,visibility:O.visibility,sections:O.sections,sectionIds:O.sectionIds}));return{id:A.id||Se(),createdAt:A.createdAt,updatedAt:A.updatedAt,publishedAt:A.publishedAt,isPublic:A.isPublic??!0,templateConfig:A.templateConfig,slug:I,sections:Object.fromEntries(D.map(O=>[O.id,O])),sectionIds:D.map(O=>O.id),locales:Object.fromEntries(h.map(({locale:O,page:N})=>[O,N.meta])),dataSource:A.dataSource?Object.fromEntries([...new Set(h.flatMap(({page:O})=>Object.keys(O.dataSource??{})))].map(O=>[O,Object.fromEntries(h.map(({locale:N,page:B})=>{var J;const Q=(J=B.dataSource)==null?void 0:J[O];return[N,Q||{}]}))])):Object.fromEntries([...new Set(h.flatMap(({page:O})=>O.sections.map(N=>N.id)))].map(O=>[O,Object.fromEntries(h.map(({locale:N,page:B})=>{var re;const Q=(re=B.dataSource)==null?void 0:re[O];if(Q)return[N,Q];const J=B.sections.find(g=>g.id===O);return[N,(J==null?void 0:J.properties)||{}]}))]))}})),M=q(((a=l==null?void 0:l.routes)==null?void 0:a.map(({path:I})=>{const h=p?_(p,Oe(I)):void 0;return{...h,id:(h==null?void 0:h.id)||Se(),createdAt:(h==null?void 0:h.createdAt)??new Date().toISOString(),updatedAt:(h==null?void 0:h.updatedAt)??new Date().toISOString(),publishedAt:new Date(0).toISOString(),path:(h==null?void 0:h.path)??`/${h==null?void 0:h.id}`,params:h==null?void 0:h.params,handler:(h==null?void 0:h.handler)??"Pages Kit",isPublic:(h==null?void 0:h.isPublic)??!0,enabledGenerate:(h==null?void 0:h.enabledGenerate)??!1,displayTemplateId:(h==null?void 0:h.displayTemplateId)??void 0,dataSource:(h==null?void 0:h.dataSource)??{}}}))??[]),Y=E?q(((r=l.components)==null?void 0:r.map(({id:I})=>b(E,I)))??[]):[];if(n){const I=(...h)=>{y.info(`[${o?S.basename(e):S.basename(S.join(e,"../../../../"))}] importAssets:`,...h)};try{I("wait image-bin api ready"),await Ss.default({resources:[`${Ge.getComponentWebEndpoint(Es)}/api/sdk/uploads`],validateStatus:D=>D>=200&&D<=500}),I("image-bin api is ready");const h={},A={};I("start to upload assets"),await Promise.allSettled([nt(Y,h,{getFilePath:D=>E&&S.join(E,D),onFinish:D=>{I(`upload ${D.length} component assets`)}}),nt(P,A,{getFilePath:(D,W)=>{const O=Ve.default(P,W.slice(0,1));return d&&S.join(d,S.dirname(O.slug),D)},onFinish:D=>{I(`upload ${D.length} page assets`)}})]),I("upload assets done"),global.gc&&global.gc()}catch(h){I("Error during asset import:",h)}}const te={};if(t){const I=i&&S.join(S.dirname(i),"../../resources/components"),h=q(((c=(u=l.resources)==null?void 0:u.components)==null?void 0:c.map(({id:A})=>b(I,A)))??[]);h.length>0&&(te.components=Object.fromEntries(h.map((A,D)=>[A.id,{index:D,component:A}])))}const ae={};if(f&&w.existsSync(f)){const I=w.readdirSync(f);for(const h of I)ae[h]=S.join(f,h)}return{supportedLocales:l.supportedLocales,pageIds:P.map(I=>I.id),components:Object.fromEntries(Y.map((I,h)=>[I.id,{index:h,data:I}])),pages:Object.fromEntries(P.map(I=>[I.id,I])),config:l.config||{},resources:te,chunks:ae,routeIds:M.map(I=>I.id),routes:Object.fromEntries(M.map(I=>[I.id,I])),dataSourceIds:[],dataSources:{}}}finally{o&&s&&w.rmSync(s,{force:!0,recursive:!0})}}async function He(e,n,{routes:t,mergeMode:s="byUpdateTime",deleteRoutes:o=!1,publishMode:a=void 0}={}){try{a&&mt(a)}catch(f){y.error("clear preload page cache error",{error:f})}const{pages:r,pageIds:u,routeIds:c,routes:i,supportedLocales:d}=e;if(a==="production"){let f=t??[],p=null;for(const l of c??[]){const m=i==null?void 0:i[l];if(m!=null&&m.params&&(m==null?void 0:m.params.length)>0&&(m!=null&&m.paramsOptions)&&(m==null?void 0:m.paramsOptions.length)>0){const b=we.generateParamCombinations({basePath:m.path,params:m.params,routeId:m.id,paramsOptions:m.paramsOptions,currentIndex:0,currentParams:[],currentOptionIds:[],result:[]}),_=Object.fromEntries(b.map(P=>[`${l}-${P.paramOptionIds.join("-")}`,P]));p={...p||{},..._},t||(f=[...f,...b.map(P=>`${l}-${P.paramOptionIds.join("-")}`)])}else t||f.push(l)}y.info("routeIds to be published: ",f);for(const l of f){let m=l;if(m.includes("-")){const[P]=m.split("-");m=P}const b=i==null?void 0:i[m];if(!b){const P=n.pageIds.indexOf(m);P!==-1&&o&&(n.pageIds.splice(P,1),delete n.pages[m]);for(const M of n.pageIds)M.includes(`${m}-`)&&(n.pageIds.splice(n.pageIds.indexOf(M),1),delete n.pages[M]);y.info("delete main route page",m);continue}if(l.includes("-")&&!(p!=null&&p[l])){const P=n.pageIds.indexOf(l);P!==-1&&o&&(n.pageIds.splice(P,1),delete n.pages[l]),y.info("delete page",l);continue}if(!b.displayTemplateId){y.info("no display template",l);continue}const _=r[b.displayTemplateId];if(!_){y.info("no template page",l);continue}if(n.pageIds.includes(l)){if(y.info("has need update page",l),s==="replace")n.pages[l]=Le({page:_,route:b,state:e,routeId:l,routePathInfo:p==null?void 0:p[l]}),y.info("replace page",l);else if(s==="byUpdateTime"){const P=n.pages[b.id];(!P||b.updatedAt&&b.updatedAt>P.updatedAt)&&(n.pages[l]=Le({page:_,route:b,state:e,routeId:l,routePathInfo:p==null?void 0:p[l]}),y.info("replace page by update time",l))}}else n.pageIds.push(l),n.pages[l]=Le({page:_,route:b,state:e,routeId:l,routePathInfo:p==null?void 0:p[l]}),y.info("add page",l)}if(o&&!t)for(const l of n.pageIds)f!=null&&f.includes(l)||(delete n.pages[l],y.info("delete page",l)),n.pageIds=[...n.pageIds].filter(m=>f==null?void 0:f.includes(m))}else{for(const f of u){const p=r[f];if(p)if(n.pageIds.includes(p.id)){if(s==="replace")n.pages[p.id]=p;else if(s==="byUpdateTime"){const l=n.pages[p.id];(!l||p.updatedAt&&p.updatedAt>l.updatedAt)&&(n.pages[p.id]=p)}}else n.pageIds.push(p.id),n.pages[p.id]=p}for(const f of c){const p=i[f];if(p)if(n.routeIds.includes(p.id)){if(s==="replace")n.routes[p.id]=p;else if(s==="byUpdateTime"){const l=n.routes[p.id];(!l||p.updatedAt&&p.updatedAt>l.updatedAt)&&(n.routes[p.id]=p)}}else n.routeIds.push(p.id),n.routes[p.id]=p}}if(n.supportedLocales.splice(0,n.supportedLocales.length),n.supportedLocales.push(...ms.default(d)),o)for(const f of Object.keys(n.components))delete n.components[f];let E=JSON.parse(JSON.stringify(e.components));E=Object.fromEntries(await Promise.all(Object.entries(E).map(async([f,p])=>{const l=await Ot(p==null?void 0:p.data);return[f,{...p,data:l}]}))),Object.assign(n.components,E),Object.assign(n.config,JSON.parse(JSON.stringify(e.config))),lt.default(e.resources.components)||(n.resources.components=JSON.parse(JSON.stringify(e.resources.components||{})))}const Ot=Je(async e=>{var n;if(!lt.default(e==null?void 0:e.properties))return e;if(((n=e==null?void 0:e.renderer)==null?void 0:n.type)==="react-component"){const{script:t}=(e==null?void 0:e.renderer)||{};if(t&&t.includes("PROPERTIES_SCHEMA"))try{const s=await St(t,"PROPERTIES_SCHEMA",e.id);s&&s.length>0&&e&&(e.properties={},s.forEach((o,a)=>{e!=null&&e.properties&&(e.properties[o.id]={index:a,data:o})}))}catch(s){y.error("checkPropertiesFromCode error",{componentId:e.id,name:e.name},{error:s})}}return e},{keyGenerator:e=>{var i,d,E,f;const n=(e==null?void 0:e.id)||"",t=(e==null?void 0:e.name)||"",s=((i=e==null?void 0:e.renderer)==null?void 0:i.type)||"",o=(e==null?void 0:e.properties)||{},a=(e==null?void 0:e.updatedAt)||"",r=Z.createHash("md5").update(JSON.stringify(o)).digest("hex");let u="",c="";return((d=e==null?void 0:e.renderer)==null?void 0:d.type)==="react-component"&&(u=Z.createHash("md5").update(((E=e==null?void 0:e.renderer)==null?void 0:E.script)||"").digest("hex"),c=Z.createHash("md5").update(((f=e==null?void 0:e.renderer)==null?void 0:f.editComponent)||"").digest("hex")),JSON.stringify(["checkPropertiesFromCode",n,t,s,r,a,u,c])},lruOptions:{max:100,ttl:1e3*60*60},subdir:"checkPropertiesFromCode"});let Ae,oe,je,De,We;function At(){return Ae=(async()=>{const e=Ge.getResources({types:[{did:Ke,type:Fe},{did:Bs,type:Fe}]});oe=(await Promise.all(e.map(async t=>{const s=t.path?await Ye(t.path,{importAssets:!1}):void 0;return s?{blockletId:t.did,state:s,blockletTitle:t.title}:void 0}))).filter(t=>!!t),je=oe.reduce((t,s)=>Object.assign(t,Object.fromEntries(Object.values(s.state.pages).map(o=>o?[o==null?void 0:o.id,{page:o,blockletId:s.blockletId}]:[]))),{});const n=oe.reduce((t,s)=>Object.assign(t,Object.fromEntries(Object.values(s.state.components).map(o=>[o.data.id,{blockletId:s.blockletId,component:o.data}]))),{});De=Object.fromEntries(await Promise.all(Object.entries(n).map(async([t,s])=>{const o=await Ot(s.component);return[t,{...s,component:o}]}))),We=oe.reduce((t,s)=>Object.assign(t,s.state.chunks),{})})(),Ae}function Pt(e){const n=ct.default(async()=>{await At().catch(t=>{y.error("load resource states error",{error:t})}),await(e==null?void 0:e({states:oe,pages:je,components:De,chunks:We}))},3e3,{leading:!1,trailing:!0});return n(),C.default.events.on(C.default.Events.componentAdded,n),C.default.events.on(C.default.Events.componentRemoved,n),C.default.events.on(C.default.Events.componentStarted,n),C.default.events.on(C.default.Events.componentStopped,n),C.default.events.on(C.default.Events.componentUpdated,n),C.default.events.on(qe,n),()=>{C.default.events.off(C.default.Events.componentAdded,n),C.default.events.off(C.default.Events.componentRemoved,n),C.default.events.off(C.default.Events.componentStarted,n),C.default.events.off(C.default.Events.componentStopped,n),C.default.events.off(C.default.Events.componentUpdated,n),C.default.events.off(qe,n)}}const Tt=Symbol.for("GLOBAL_RESOURCE_STATES_LISTENER_KEY"),Ee=globalThis;var ot;(ot=Ee[Tt])==null||ot.call(Ee);Ee[Tt]=Pt(async({pages:e,components:n})=>{const{projectIds:t}=z;y.info(`start update resource states projects(${t.length})`,t),await Promise.race([new Promise(s=>{setTimeout(()=>{s({})},30*1e3)}),Promise.all(t.map(async s=>{jt({projectId:s,pages:e,components:n})}))]).catch(s=>{y.error("update resource states failed:",s)})});z.startPeriodicCheck();process.on("beforeExit",()=>{z.stopPeriodicCheck()});process.on("SIGINT",()=>{z.stopPeriodicCheck(),process.exit(0)});process.on("SIGTERM",()=>{z.stopPeriodicCheck(),process.exit(0)});async function jt({projectId:e,pages:n,components:t}){const s=z.sharedInstances[e];if(!s){y.info(`projectId: ${e} not found in sharedInstances`);return}s.syncedStore.resources.pages=n;const o=await K.findByPk(e);if(o!=null&&o.useAllResources)s.syncedStore.resources.components=t;else{const r=(await Te.findAll({where:{projectId:e}})).map(c=>c.componentId),u=Object.fromEntries(Object.entries(t||{}).filter(([c])=>r.includes(c)));s.syncedStore.resources.components=u}y.info(`update [${e}] resource states:`,{pages:Object.keys(s.syncedStore.resources.pages||{}).length,components:Object.keys(s.syncedStore.resources.components||{}).length})}async function nn(){y.info("trigger reload all project resource"),C.default.events.emit(qe)}async function _e({ensureLoaded:e=!0}={}){return e&&(Ae??(Ae=At()),await Ae),{states:oe,pages:je,components:De,chunks:We}}exports.COMPONENT_DID=Ke;exports.CUSTOM_COMPONENT_CACHE_DURATION_IN_SECONDS=ut;exports.GET_SERVER_SIDE_PROPS_TIMEOUT_IN_SECONDS=Ue;exports.PUBLISH_MODES=en;exports.Project=K;exports.RESOURCE_TYPE=Fe;exports.SITE_STATE_PATH=se;exports.STATE_MODES=Zs;exports.SiteState=z;exports.clearPreloadComponentsCache=ft;exports.clearPreloadComponentsCacheByMode=mt;exports.downloadAsset=wt;exports.downloadAssets=bt;exports.fromPackage=Ye;exports.getComponentFromState=ue;exports.getComponentFromStateByName=Us;exports.getExportSchemaValueFromCode=St;exports.getMultiTenantAllProjectAccessPassports=Is;exports.getPreloadComponent=gt;exports.getPreloadComponents=Ns;exports.getPreloadComponentsCacheKey=ht;exports.getResourceStates=_e;exports.initPackResourceStates=Pt;exports.isMultiTenant=bs;exports.logger=y;exports.mergeState=He;exports.nextId=Se;exports.toPackage=Ct;exports.triggerReloadAllProjectResource=nn;
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require("@blocklet/pages-kit/builtin/utils");require("@blocklet/pages-kit/types");require("@blocklet/pages-kit/utils/property");require("@blocklet/quickjs");require("@blocklet/sdk/lib/config");require("lru-cache");require("node-fetch");require("ufo");require("crypto");const e=require("./chunks/site-state-6tgRGL_9.js");exports.CUSTOM_COMPONENT_CACHE_DURATION_IN_SECONDS=e.CUSTOM_COMPONENT_CACHE_DURATION_IN_SECONDS;exports.GET_SERVER_SIDE_PROPS_TIMEOUT_IN_SECONDS=e.GET_SERVER_SIDE_PROPS_TIMEOUT_IN_SECONDS;exports.clearPreloadComponentsCache=e.clearPreloadComponentsCache;exports.clearPreloadComponentsCacheByMode=e.clearPreloadComponentsCacheByMode;exports.getComponentFromState=e.getComponentFromState;exports.getComponentFromStateByName=e.getComponentFromStateByName;exports.getExportSchemaValueFromCode=e.getExportSchemaValueFromCode;exports.getPreloadComponent=e.getPreloadComponent;exports.getPreloadComponents=e.getPreloadComponents;exports.getPreloadComponentsCacheKey=e.getPreloadComponentsCacheKey;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require("@blocklet/pages-kit/builtin/utils");require("@blocklet/pages-kit/types");require("@blocklet/pages-kit/utils/property");require("@blocklet/quickjs");require("@blocklet/sdk/lib/config");require("lru-cache");require("node-fetch");require("ufo");require("crypto");const e=require("./chunks/site-state-B8sLWiY2.js");exports.CUSTOM_COMPONENT_CACHE_DURATION_IN_SECONDS=e.CUSTOM_COMPONENT_CACHE_DURATION_IN_SECONDS;exports.GET_SERVER_SIDE_PROPS_TIMEOUT_IN_SECONDS=e.GET_SERVER_SIDE_PROPS_TIMEOUT_IN_SECONDS;exports.clearPreloadComponentsCache=e.clearPreloadComponentsCache;exports.clearPreloadComponentsCacheByMode=e.clearPreloadComponentsCacheByMode;exports.getComponentFromState=e.getComponentFromState;exports.getComponentFromStateByName=e.getComponentFromStateByName;exports.getExportSchemaValueFromCode=e.getExportSchemaValueFromCode;exports.getPreloadComponent=e.getPreloadComponent;exports.getPreloadComponents=e.getPreloadComponents;exports.getPreloadComponentsCacheKey=e.getPreloadComponentsCacheKey;
package/lib/cjs/home.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require("react/jsx-runtime");require("./chunks/state-BWuBNdK8.js");require("@arcblock/ux/lib/Locale/context");require("@arcblock/ux/lib/Result");require("@blocklet/pages-kit/builtin/page/header");require("@blocklet/pages-kit/contexts/color");require("@blocklet/pages-kit/utils/data-source");require("@blocklet/pages-kit/utils/route");require("@blocklet/ui-react/lib/Header");require("@emotion/css");require("@emotion/react");require("@emotion/styled");require("@mui/material");require("ahooks");require("isomorphic-dompurify");require("lodash/cloneDeep");require("lodash/isEmpty");require("lodash/isEqual");require("react");require("react-helmet");require("react-router-dom");require("react-use");require("ufo");require("./chunks/array-Cr5KF-hM.js");const e=require("./chunks/home-DJPbdJux.js");require("./chunks/session-BA7Qrcia.js");exports.HomeView=e.HomeView;exports.PageRoutes=e.PageRoutes;exports.PageView=e.PageView;exports.PageViewByPath=e.PageViewByPath;exports.PageViewWithDataSource=e.PageViewWithDataSource;exports.TranslucentHeader=e.TranslucentHeader;exports.default=e.Home;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require("react/jsx-runtime");require("./chunks/state-BWuBNdK8.js");require("@arcblock/ux/lib/Locale/context");require("@arcblock/ux/lib/Result");require("@blocklet/pages-kit/builtin/page/header");require("@blocklet/pages-kit/contexts/color");require("@blocklet/pages-kit/utils/data-source");require("@blocklet/pages-kit/utils/route");require("@blocklet/ui-react/lib/Header");require("@emotion/css");require("@emotion/react");require("@emotion/styled");require("@mui/material");require("ahooks");require("isomorphic-dompurify");require("lodash/cloneDeep");require("lodash/isEmpty");require("lodash/isEqual");require("react");require("react-helmet");require("react-router-dom");require("react-use");require("ufo");require("./chunks/array-Cr5KF-hM.js");const e=require("./chunks/home-DryEAaN4.js");require("./chunks/session-BA7Qrcia.js");exports.HomeView=e.HomeView;exports.PageRoutes=e.PageRoutes;exports.PageView=e.PageView;exports.PageViewByPath=e.PageViewByPath;exports.PageViewWithDataSource=e.PageViewWithDataSource;exports.TranslucentHeader=e.TranslucentHeader;exports.default=e.Home;
@@ -1,4 +1,4 @@
1
- "use strict";const H=require("@arcblock/did-auth-storage-nedb"),D=require("@blocklet/sdk/lib/config"),R=require("@blocklet/sdk/lib/service/auth"),z=require("@blocklet/sdk/lib/wallet"),J=require("@blocklet/sdk/lib/wallet-authenticator"),G=require("@blocklet/sdk/lib/wallet-handler"),P=require("path"),C=require("./chunks/site-state-6tgRGL_9.js"),Y=require("@arcblock/crawler-middleware"),Q=require("@blocklet/pages-kit/types"),V=require("@blocklet/pages-kit/utils/common"),x=require("@blocklet/pages-kit/utils/preload"),X=require("@blocklet/sdk/lib/component"),Z=require("cheerio/slim"),F=require("express"),W=require("fs"),ee=require("lodash/get"),te=require("mustache"),I=require("ufo"),d=n=>n&&n.__esModule?n:{default:n};function ne(n){if(n&&n.__esModule)return n;const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const e in n)if(e!=="default"){const i=Object.getOwnPropertyDescriptor(n,e);Object.defineProperty(t,e,i.get?i:{enumerable:!0,get:()=>n[e]})}}return t.default=n,Object.freeze(t)}const oe=d(H),a=d(D),ce=d(R),re=d(z),le=d(J),se=d(G),ae=d(P),L=ne(Z),ie=d(ee),de=d(te),ue=(n={})=>{const t={data:new Map,timers:new Map,set:(e,i,h=n.ttl||36e5)=>{n.max&&t.data.size>=n.max&&t.delete(t.data.keys().next().value),t.timers.has(e)&&clearTimeout(t.timers.get(e)),t.timers.set(e,setTimeout(()=>t.delete(e),h)),t.data.set(e,i)},get:e=>t.data.get(e),has:e=>t.data.has(e),delete:e=>(t.timers.has(e)&&clearTimeout(t.timers.get(e)),t.timers.delete(e),t.data.delete(e)),clear:()=>{t.data.clear();for(const e of t.timers.values())clearTimeout(e);t.timers.clear()}};return t},O=ue({max:1,ttl:1e3*30});re.default();const pe=new le.default;new se.default({authenticator:pe,tokenStorage:new oe.default({dbPath:ae.default.join(a.default.env.dataDir,"auth.db")})});const fe=new ce.default,he=async()=>{try{const n=O.get("blockletInfo");if(n)return n;const{blocklet:t}=await fe.getBlocklet();return O.set("blockletInfo",t),t}catch{return null}},me=["/assets/"];function ge({app:n,viteDevServer:t,state:e}){let i;if(t){const o=W.readFileSync(P.resolve(process.cwd(),"./index.html"),"utf-8");n.use(async(S,v,T)=>{const A=S.originalUrl;i=await t.transformIndexHtml(A,o),T()})}else i=W.readFileSync(P.resolve(process.env.BLOCKLET_APP_DIR,"dist/index.html"),"utf-8");const h=F.Router();h.use((o,S,v)=>{if(o.headers["x-unique-record"]==="dial_http"){C.logger.info("[html] dial http request, return 200 status code"),S.status(200).send("ok");return}v()}),a.default.env.preferences.snapkitEnabled&&a.default.env.preferences.snapkitEndpoint&&a.default.env.SNAP_KIT_ACCESS_KEY&&h.use(Y.createSnapshotMiddleware({endpoint:a.default.env.preferences.snapkitEndpoint,accessKey:a.default.env.SNAP_KIT_ACCESS_KEY,cacheMax:a.default.env.preferences.snapkitCacheSize||100})),h.get("/:path(*)?",async(o,S,v)=>{var E,M,j;if(me.some(s=>{var p;return(p=o.path)==null?void 0:p.startsWith(s)})){v();return}const T=performance.now(),A=()=>Math.round(performance.now()-T),U="production";let r,m,b=i;if(o.path.startsWith("/pages")){const s=o.params.lang,p=o.cookies.nf_lang,k=new Set([...a.default.env.languages.map(w=>w.code)]);let _=(s&&k.has(s)?s:void 0)||(k.has(p)?p:void 0)||[...k][0];if((!_||!((E=e.supportedLocales)!=null&&E.find(w=>w.locale===_)))&&(_=((j=(M=e.supportedLocales)==null?void 0:M[0])==null?void 0:j.locale)||""),_){const w=[];Object.values(e.pages).forEach(l=>{const B=Object.values((l==null?void 0:l.sections)??{}).filter(f=>{var y;return f.component==="custom-component"&&((y=f.config)==null?void 0:y.componentId)}).map(f=>{var y,$;return{id:f.id,componentId:f.config.componentId,useCache:f.config.useCache,cacheDuration:f.config.cacheDuration,properties:($=(y=l==null?void 0:l.dataSource)==null?void 0:y[f.id])==null?void 0:$[_]}});w.push(...B)});const N=new Promise(l=>{setTimeout(()=>{l({})},90*1e3)});try{await Promise.race([N,C.getPreloadComponents({mode:U,req:o,state:e,locale:_,instances:w,module:Q.PreloadComponentScriptModule.UMD_FN}).then(l=>{l&&(m=x.injectPreloadComponents(l))})])}catch(l){C.logger.warn("getPreloadComponents timeout in promise race, skip inject html elements",l)}}}try{const s=(r==null?void 0:r.title)||a.default.env.appName,p=(r==null?void 0:r.description)||a.default.env.appDescription,k=I.withQuery(I.joinURL(a.default.env.appUrl,"/.well-known/service/blocklet/og.png"),{title:s,description:p});b=de.default.render(i,{ogTitle:s,ogDescription:p,ogImage:_e(r==null?void 0:r.image)||k,pagesPublishedAt:(e==null?void 0:e.config.publishedAt)||new Date().getTime()})}catch{}const c=e==null?void 0:e.config.fontFamily,K=o.query.mode==="draft"||o.url.includes("preview"),g=L.load(b);let u=r==null?void 0:r.backgroundColor;if(u&&V.isMuiColorKey(u)){const s=await he();u=ie.default(s,`settings.theme.light.palette.${u}`,u)}g("head").find("#injected-head-elements").replaceWith(`
1
+ "use strict";const H=require("@arcblock/did-auth-storage-nedb"),D=require("@blocklet/sdk/lib/config"),R=require("@blocklet/sdk/lib/service/auth"),z=require("@blocklet/sdk/lib/wallet"),J=require("@blocklet/sdk/lib/wallet-authenticator"),G=require("@blocklet/sdk/lib/wallet-handler"),P=require("path"),C=require("./chunks/site-state-B8sLWiY2.js"),Y=require("@arcblock/crawler-middleware"),Q=require("@blocklet/pages-kit/types"),V=require("@blocklet/pages-kit/utils/common"),x=require("@blocklet/pages-kit/utils/preload"),X=require("@blocklet/sdk/lib/component"),Z=require("cheerio/slim"),F=require("express"),W=require("fs"),ee=require("lodash/get"),te=require("mustache"),I=require("ufo"),d=n=>n&&n.__esModule?n:{default:n};function ne(n){if(n&&n.__esModule)return n;const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const e in n)if(e!=="default"){const i=Object.getOwnPropertyDescriptor(n,e);Object.defineProperty(t,e,i.get?i:{enumerable:!0,get:()=>n[e]})}}return t.default=n,Object.freeze(t)}const oe=d(H),a=d(D),ce=d(R),re=d(z),le=d(J),se=d(G),ae=d(P),L=ne(Z),ie=d(ee),de=d(te),ue=(n={})=>{const t={data:new Map,timers:new Map,set:(e,i,h=n.ttl||36e5)=>{n.max&&t.data.size>=n.max&&t.delete(t.data.keys().next().value),t.timers.has(e)&&clearTimeout(t.timers.get(e)),t.timers.set(e,setTimeout(()=>t.delete(e),h)),t.data.set(e,i)},get:e=>t.data.get(e),has:e=>t.data.has(e),delete:e=>(t.timers.has(e)&&clearTimeout(t.timers.get(e)),t.timers.delete(e),t.data.delete(e)),clear:()=>{t.data.clear();for(const e of t.timers.values())clearTimeout(e);t.timers.clear()}};return t},O=ue({max:1,ttl:1e3*30});re.default();const pe=new le.default;new se.default({authenticator:pe,tokenStorage:new oe.default({dbPath:ae.default.join(a.default.env.dataDir,"auth.db")})});const fe=new ce.default,he=async()=>{try{const n=O.get("blockletInfo");if(n)return n;const{blocklet:t}=await fe.getBlocklet();return O.set("blockletInfo",t),t}catch{return null}},me=["/assets/"];function ge({app:n,viteDevServer:t,state:e}){let i;if(t){const o=W.readFileSync(P.resolve(process.cwd(),"./index.html"),"utf-8");n.use(async(S,v,T)=>{const A=S.originalUrl;i=await t.transformIndexHtml(A,o),T()})}else i=W.readFileSync(P.resolve(process.env.BLOCKLET_APP_DIR,"dist/index.html"),"utf-8");const h=F.Router();h.use((o,S,v)=>{if(o.headers["x-unique-record"]==="dial_http"){C.logger.info("[html] dial http request, return 200 status code"),S.status(200).send("ok");return}v()}),a.default.env.preferences.snapkitEnabled&&a.default.env.preferences.snapkitEndpoint&&a.default.env.SNAP_KIT_ACCESS_KEY&&h.use(Y.createSnapshotMiddleware({endpoint:a.default.env.preferences.snapkitEndpoint,accessKey:a.default.env.SNAP_KIT_ACCESS_KEY,cacheMax:a.default.env.preferences.snapkitCacheSize||100})),h.get("/:path(*)?",async(o,S,v)=>{var E,M,j;if(me.some(s=>{var p;return(p=o.path)==null?void 0:p.startsWith(s)})){v();return}const T=performance.now(),A=()=>Math.round(performance.now()-T),U="production";let r,m,b=i;if(o.path.startsWith("/pages")){const s=o.params.lang,p=o.cookies.nf_lang,k=new Set([...a.default.env.languages.map(w=>w.code)]);let _=(s&&k.has(s)?s:void 0)||(k.has(p)?p:void 0)||[...k][0];if((!_||!((E=e.supportedLocales)!=null&&E.find(w=>w.locale===_)))&&(_=((j=(M=e.supportedLocales)==null?void 0:M[0])==null?void 0:j.locale)||""),_){const w=[];Object.values(e.pages).forEach(l=>{const B=Object.values((l==null?void 0:l.sections)??{}).filter(f=>{var y;return f.component==="custom-component"&&((y=f.config)==null?void 0:y.componentId)}).map(f=>{var y,$;return{id:f.id,componentId:f.config.componentId,useCache:f.config.useCache,cacheDuration:f.config.cacheDuration,properties:($=(y=l==null?void 0:l.dataSource)==null?void 0:y[f.id])==null?void 0:$[_]}});w.push(...B)});const N=new Promise(l=>{setTimeout(()=>{l({})},90*1e3)});try{await Promise.race([N,C.getPreloadComponents({mode:U,req:o,state:e,locale:_,instances:w,module:Q.PreloadComponentScriptModule.UMD_FN}).then(l=>{l&&(m=x.injectPreloadComponents(l))})])}catch(l){C.logger.warn("getPreloadComponents timeout in promise race, skip inject html elements",l)}}}try{const s=(r==null?void 0:r.title)||a.default.env.appName,p=(r==null?void 0:r.description)||a.default.env.appDescription,k=I.withQuery(I.joinURL(a.default.env.appUrl,"/.well-known/service/blocklet/og.png"),{title:s,description:p});b=de.default.render(i,{ogTitle:s,ogDescription:p,ogImage:_e(r==null?void 0:r.image)||k,pagesPublishedAt:(e==null?void 0:e.config.publishedAt)||new Date().getTime()})}catch{}const c=e==null?void 0:e.config.fontFamily,K=o.query.mode==="draft"||o.url.includes("preview"),g=L.load(b);let u=r==null?void 0:r.backgroundColor;if(u&&V.isMuiColorKey(u)){const s=await he();u=ie.default(s,`settings.theme.light.palette.${u}`,u)}g("head").find("#injected-head-elements").replaceWith(`
2
2
  ${u?`<meta name="theme-color" content="${u}" /><style>html,body,#app {background-color: ${u};}</style>`:""}
3
3
  ${c!=null&&c.title?`<link rel="preload" as="style" href="https://fonts.googleapis.com/css?family=${c.title}&display=swap">`:""}
4
4
  ${c!=null&&c.description&&(c==null?void 0:c.description)!==(c==null?void 0:c.title)?`<link rel="preload" as="style" href="https://fonts.googleapis.com/css?family=${c.description}&display=swap">`:""}
@@ -1 +1 @@
1
- "use strict";const c=require("./chunks/site-state-6tgRGL_9.js"),M=require("async_hooks"),U=require("express"),F=require("fs"),J=require("joi"),X=require("lodash/groupBy"),W=require("lodash/sortBy"),B=require("path"),$=require("@blocklet/sdk/lib/middlewares/auth"),G=require("@blocklet/sdk/lib/component"),y=t=>t&&t.__esModule?t:{default:t},l=y(F),I=y(J),D=y(X),K=y(W),k=y(B),v=y($);new M.AsyncLocalStorage;const Y=async(t,e,o)=>{var n,s,r,i;try{const{projectId:u}=t.params;if(!u)return o();const f=await c.Project.findByPk(u);if(!f)return e==null?void 0:e.status(404).json({error:"Project not found"});const _=(n=t.user)==null?void 0:n.did,E=((s=t.user)==null?void 0:s.role)||"UNKNOWN_ROLE";if(!_)return e==null?void 0:e.status(401).json({error:"Authentication required"});if(c.isMultiTenant()){const w=f.createdBy===_,a=(i=(r=c.getMultiTenantAllProjectAccessPassports())==null?void 0:r.includes)==null?void 0:i.call(r,E);if(!w&&!a)return e==null?void 0:e.status(403).json({error:"No permission to access this project in multi-tenant mode"})}else if(!["owner","admin","pagesEditor"].includes(E))return e==null?void 0:e.status(403).json({error:"No permission to access this project in single-tenant mode"});t.project=f,t.projectId=u,o()}catch(u){c.logger.error("Project middleware error:",u),e==null||e.status(500).json({error:"Internal server error"})}};function b(t,e){return new Promise((o,n)=>{const s=l.default.createReadStream(t),r=l.default.createWriteStream(e);s.on("error",n),r.on("error",n),r.on("finish",o),s.pipe(r)})}async function N(t,e){await l.default.promises.mkdir(e,{recursive:!0});const o=await l.default.promises.readdir(t,{withFileTypes:!0});for(const n of o){const s=k.default.join(t,n.name),r=k.default.join(e,n.name);n.isDirectory()?await N(s,r):await b(s,r)}}async function z(t,e){(await l.default.promises.stat(t)).isDirectory()?await N(t,e):await b(t,e)}const O=(t,e,o)=>c.isMultiTenant()?v.default()(t,e,o):v.default({roles:["owner","admin","pagesEditor"]})(t,e,o),H=(t,e)=>{const o=G.getResourceExportDir({projectId:t,releaseId:e});return B.join(o,c.COMPONENT_DID,c.RESOURCE_TYPE)},h=U.Router(),T="@page",q="@component",P=":",S="ALL",L="@project",C=({pageId:t,projectId:e})=>[T,e,t].join(P),Q=t=>{const[e,o,n]=t.split(P);if(e===T)return{pageId:n,projectId:o}},A=({componentId:t,projectId:e})=>[q,e,t].join(P),V=t=>{const[e,o,n]=t.split(P);if(e===q)return{componentId:n,projectId:o}},Z=t=>[L,t].join(P),tt=t=>{const[e,o]=t.split(P);if(e===L)return o},et=t=>{try{return JSON.parse(t)}catch{}return{}};async function x(t){const e=await c.SiteState.getStateByProjectId(t,"production"),o=await c.Project.findByPk(t),n=e.pageIds.map(r=>{const i=e.pages[r];if(i)return{id:C({pageId:r,projectId:t}),name:i.slug}}).filter(Boolean),s=K.default(Object.values(e.components),r=>r.index).map(({data:r})=>({id:A({componentId:r.id,projectId:t}),name:r.name||r.id}));return{id:Z(t),name:(o==null?void 0:o.name)||"Unnamed Project",children:[{id:C({pageId:S,projectId:t}),name:"Pages",children:n},{id:A({componentId:S,projectId:t}),name:"Components",children:s}]}}h.get("/resources",O,async(t,e)=>{const{projectId:o}=et(t.query.resourcesParams);if(o){t.params={...t.params,projectId:o},await Y(t,e,()=>{});const r=await x(o);e.json({resources:[r]});return}const n=await c.Project.findAll({where:{}}),s=await Promise.all(n.map(r=>x(r.id)));e.json({resources:s})});const ot=I.default.object({projectId:I.default.string().required().min(1),releaseId:I.default.string().allow(""),resources:I.default.array().items(I.default.string()).required(),locale:I.default.string().allow("")});h.post("/resources",O,async(t,e)=>{const{resources:o,projectId:n,releaseId:s}=await ot.validateAsync(t.body),r="production",i=[],u=[];for(const a of o){if(tt(a))continue;const{pageId:m,projectId:j}=Q(a)||{};if(m)m===S||m&&j&&i.push({pageId:m,projectId:j});else{const{componentId:p,projectId:d}=V(a)||{};p===S||p&&d&&u.push({componentId:p,projectId:d})}}const f=D.default(i,"projectId"),_=D.default(u,"projectId"),E=new Set([...Object.keys(f),...Object.keys(_)]),w=H(n,s);l.default.rmSync(w,{recursive:!0,force:!0}),l.default.mkdirSync(w,{recursive:!0});for(const a of E){const m=await c.SiteState.getStateByProjectId(a,r),j=f[a],p=_[a],d=j==null?void 0:j.map(g=>g.pageId),R=p==null?void 0:p.map(g=>g.componentId);if(d!=null&&d.length||R!=null&&R.length){const g=await c.toPackage(m,{exportAssets:!0,pageIds:d,componentIds:R});await z(g,w),l.default.rmSync(g,{recursive:!0,force:!0})}c.logger.info(`Exported resources for project ${a}`,{pageIds:d,componentIds:R})}e.json({})});h.get("/all-resources",O,async(t,e)=>{const{states:o}=await c.getResourceStates(),n=o==null?void 0:o.map(s=>{const r={blockletId:s.blockletId,blockletTitle:s.blockletTitle,components:{}};if(s.state.components&&(r.components=s.state.components),Object.keys(r.components).length!==0)return r}).filter(Boolean);e.json(n)});module.exports=h;
1
+ "use strict";const c=require("./chunks/site-state-B8sLWiY2.js"),M=require("async_hooks"),U=require("express"),F=require("fs"),J=require("joi"),X=require("lodash/groupBy"),W=require("lodash/sortBy"),B=require("path"),$=require("@blocklet/sdk/lib/middlewares/auth"),G=require("@blocklet/sdk/lib/component"),y=t=>t&&t.__esModule?t:{default:t},l=y(F),I=y(J),D=y(X),K=y(W),k=y(B),v=y($);new M.AsyncLocalStorage;const Y=async(t,e,o)=>{var n,s,r,i;try{const{projectId:u}=t.params;if(!u)return o();const f=await c.Project.findByPk(u);if(!f)return e==null?void 0:e.status(404).json({error:"Project not found"});const _=(n=t.user)==null?void 0:n.did,E=((s=t.user)==null?void 0:s.role)||"UNKNOWN_ROLE";if(!_)return e==null?void 0:e.status(401).json({error:"Authentication required"});if(c.isMultiTenant()){const w=f.createdBy===_,a=(i=(r=c.getMultiTenantAllProjectAccessPassports())==null?void 0:r.includes)==null?void 0:i.call(r,E);if(!w&&!a)return e==null?void 0:e.status(403).json({error:"No permission to access this project in multi-tenant mode"})}else if(!["owner","admin","pagesEditor"].includes(E))return e==null?void 0:e.status(403).json({error:"No permission to access this project in single-tenant mode"});t.project=f,t.projectId=u,o()}catch(u){c.logger.error("Project middleware error:",u),e==null||e.status(500).json({error:"Internal server error"})}};function b(t,e){return new Promise((o,n)=>{const s=l.default.createReadStream(t),r=l.default.createWriteStream(e);s.on("error",n),r.on("error",n),r.on("finish",o),s.pipe(r)})}async function N(t,e){await l.default.promises.mkdir(e,{recursive:!0});const o=await l.default.promises.readdir(t,{withFileTypes:!0});for(const n of o){const s=k.default.join(t,n.name),r=k.default.join(e,n.name);n.isDirectory()?await N(s,r):await b(s,r)}}async function z(t,e){(await l.default.promises.stat(t)).isDirectory()?await N(t,e):await b(t,e)}const O=(t,e,o)=>c.isMultiTenant()?v.default()(t,e,o):v.default({roles:["owner","admin","pagesEditor"]})(t,e,o),H=(t,e)=>{const o=G.getResourceExportDir({projectId:t,releaseId:e});return B.join(o,c.COMPONENT_DID,c.RESOURCE_TYPE)},h=U.Router(),T="@page",q="@component",P=":",S="ALL",L="@project",C=({pageId:t,projectId:e})=>[T,e,t].join(P),Q=t=>{const[e,o,n]=t.split(P);if(e===T)return{pageId:n,projectId:o}},A=({componentId:t,projectId:e})=>[q,e,t].join(P),V=t=>{const[e,o,n]=t.split(P);if(e===q)return{componentId:n,projectId:o}},Z=t=>[L,t].join(P),tt=t=>{const[e,o]=t.split(P);if(e===L)return o},et=t=>{try{return JSON.parse(t)}catch{}return{}};async function x(t){const e=await c.SiteState.getStateByProjectId(t,"production"),o=await c.Project.findByPk(t),n=e.pageIds.map(r=>{const i=e.pages[r];if(i)return{id:C({pageId:r,projectId:t}),name:i.slug}}).filter(Boolean),s=K.default(Object.values(e.components),r=>r.index).map(({data:r})=>({id:A({componentId:r.id,projectId:t}),name:r.name||r.id}));return{id:Z(t),name:(o==null?void 0:o.name)||"Unnamed Project",children:[{id:C({pageId:S,projectId:t}),name:"Pages",children:n},{id:A({componentId:S,projectId:t}),name:"Components",children:s}]}}h.get("/resources",O,async(t,e)=>{const{projectId:o}=et(t.query.resourcesParams);if(o){t.params={...t.params,projectId:o},await Y(t,e,()=>{});const r=await x(o);e.json({resources:[r]});return}const n=await c.Project.findAll({where:{}}),s=await Promise.all(n.map(r=>x(r.id)));e.json({resources:s})});const ot=I.default.object({projectId:I.default.string().required().min(1),releaseId:I.default.string().allow(""),resources:I.default.array().items(I.default.string()).required(),locale:I.default.string().allow("")});h.post("/resources",O,async(t,e)=>{const{resources:o,projectId:n,releaseId:s}=await ot.validateAsync(t.body),r="production",i=[],u=[];for(const a of o){if(tt(a))continue;const{pageId:m,projectId:j}=Q(a)||{};if(m)m===S||m&&j&&i.push({pageId:m,projectId:j});else{const{componentId:p,projectId:d}=V(a)||{};p===S||p&&d&&u.push({componentId:p,projectId:d})}}const f=D.default(i,"projectId"),_=D.default(u,"projectId"),E=new Set([...Object.keys(f),...Object.keys(_)]),w=H(n,s);l.default.rmSync(w,{recursive:!0,force:!0}),l.default.mkdirSync(w,{recursive:!0});for(const a of E){const m=await c.SiteState.getStateByProjectId(a,r),j=f[a],p=_[a],d=j==null?void 0:j.map(g=>g.pageId),R=p==null?void 0:p.map(g=>g.componentId);if(d!=null&&d.length||R!=null&&R.length){const g=await c.toPackage(m,{exportAssets:!0,pageIds:d,componentIds:R});await z(g,w),l.default.rmSync(g,{recursive:!0,force:!0})}c.logger.info(`Exported resources for project ${a}`,{pageIds:d,componentIds:R})}e.json({})});h.get("/all-resources",O,async(t,e)=>{const{states:o}=await c.getResourceStates(),n=o==null?void 0:o.map(s=>{const r={blockletId:s.blockletId,blockletTitle:s.blockletTitle,components:{}};if(s.state.components&&(r.components=s.state.components),Object.keys(r.components).length!==0)return r}).filter(Boolean);e.json(n)});module.exports=h;
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./chunks/site-state-6tgRGL_9.js");require("@blocklet/pages-kit/utils/property");require("@blocklet/pages-kit/utils/route");require("@blocklet/sdk/lib/component");require("@blocklet/sdk/lib/config");require("@reactivedata/reactive");require("@syncedstore/core");require("crypto");require("fs");require("glob");require("lib0/decoding");require("lib0/encoding");require("lodash/cloneDeep");require("lodash/debounce");require("lodash/get");require("lodash/isEmpty");require("lodash/pick");require("lodash/set");require("lodash/union");require("lru-cache");require("nanoid");require("p-limit");require("path");require("stream/promises");require("tar");require("ufo");require("wait-on");require("y-protocols/awareness");require("y-protocols/sync");require("yaml");require("yjs");const t=require("@blocklet/pages-kit/types/state");exports.PUBLISH_MODES=e.PUBLISH_MODES;exports.SITE_STATE_PATH=e.SITE_STATE_PATH;exports.STATE_MODES=e.STATE_MODES;exports.default=e.SiteState;exports.downloadAsset=e.downloadAsset;exports.downloadAssets=e.downloadAssets;exports.fromPackage=e.fromPackage;exports.getResourceStates=e.getResourceStates;exports.initPackResourceStates=e.initPackResourceStates;exports.mergeState=e.mergeState;exports.nextId=e.nextId;exports.toPackage=e.toPackage;exports.triggerReloadAllProjectResource=e.triggerReloadAllProjectResource;Object.keys(t).forEach(r=>{r!=="default"&&!Object.prototype.hasOwnProperty.call(exports,r)&&Object.defineProperty(exports,r,{enumerable:!0,get:()=>t[r]})});
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./chunks/site-state-B8sLWiY2.js");require("@blocklet/pages-kit/utils/property");require("@blocklet/pages-kit/utils/route");require("@blocklet/sdk/lib/component");require("@blocklet/sdk/lib/config");require("@reactivedata/reactive");require("@syncedstore/core");require("crypto");require("fs");require("glob");require("lib0/decoding");require("lib0/encoding");require("lodash/cloneDeep");require("lodash/debounce");require("lodash/get");require("lodash/isEmpty");require("lodash/pick");require("lodash/set");require("lodash/union");require("lru-cache");require("nanoid");require("p-limit");require("path");require("stream/promises");require("tar");require("ufo");require("wait-on");require("y-protocols/awareness");require("y-protocols/sync");require("yaml");require("yjs");const t=require("@blocklet/pages-kit/types/state");exports.PUBLISH_MODES=e.PUBLISH_MODES;exports.SITE_STATE_PATH=e.SITE_STATE_PATH;exports.STATE_MODES=e.STATE_MODES;exports.default=e.SiteState;exports.downloadAsset=e.downloadAsset;exports.downloadAssets=e.downloadAssets;exports.fromPackage=e.fromPackage;exports.getResourceStates=e.getResourceStates;exports.initPackResourceStates=e.initPackResourceStates;exports.mergeState=e.mergeState;exports.nextId=e.nextId;exports.toPackage=e.toPackage;exports.triggerReloadAllProjectResource=e.triggerReloadAllProjectResource;Object.keys(t).forEach(r=>{r!=="default"&&!Object.prototype.hasOwnProperty.call(exports,r)&&Object.defineProperty(exports,r,{enumerable:!0,get:()=>t[r]})});