@blocklet/pages-kit-inner-components 0.4.33 → 0.4.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/_chunks/{draft-data-BwJ1xNZb.js → draft-data-kZlleQ4E.js} +1 -1
- package/lib/cjs/_chunks/{home-DQaT0unu.js → home-Ce3-4w2I.js} +3 -3
- package/lib/cjs/_chunks/publish-button-NBzp4nrV.js +1 -0
- package/lib/cjs/_chunks/site-state--DPohEOl.js +57 -0
- package/lib/cjs/_chunks/state-B6B5oPws.js +1 -0
- package/lib/cjs/components.js +1 -1
- package/lib/cjs/home.js +1 -1
- package/lib/cjs/project-html.js +3 -3
- package/lib/cjs/resources.js +1 -1
- package/lib/cjs/setting.js +3 -3
- package/lib/cjs/site-state.js +1 -1
- package/lib/cjs/theme.js +1 -1
- package/lib/cjs/uploader.js +1 -1
- package/lib/es/_chunks/{draft-data-B6NRV_eF.js → draft-data-CkmH99IX.js} +1 -1
- package/lib/es/_chunks/{home-C7rHVbsK.js → home-DDJ3wLld.js} +12 -12
- package/lib/es/_chunks/{publish-button-C44FGAGB.js → publish-button-Ca4oEKdb.js} +7 -7
- package/lib/es/_chunks/{site-state-BF64quiV.js → site-state-DKSwkZqL.js} +280 -283
- package/lib/es/_chunks/state-kKXkQecK.js +412 -0
- package/lib/es/components.js +1 -1
- package/lib/es/home.js +6 -6
- package/lib/es/project-html.js +43 -44
- package/lib/es/resources.js +1 -1
- package/lib/es/setting.js +890 -888
- package/lib/es/site-state.js +12 -14
- package/lib/es/theme.js +2 -2
- package/lib/es/uploader.js +1 -1
- package/package.json +3 -3
- package/lib/cjs/_chunks/publish-button-BNJS7rMq.js +0 -1
- package/lib/cjs/_chunks/site-state-DdXLmutN.js +0 -57
- package/lib/cjs/_chunks/state-CVPLn5Cq.js +0 -1
- package/lib/es/_chunks/state-CVCmClC_.js +0 -407
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),t=require("./state-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),t=require("./state-B6B5oPws.js");function n({children:e}){const r=t.useProjectId();return s.jsx(t.StoreProvider,{url:t.getWssURL(r??""),name:"root",waitingSynced:!0,children:s.jsx(o,{children:e})})}function o({children:e}){const{state:r}=t.useStore();return e({state:r})}exports.default=n;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var Ve=Object.create;var pe=Object.defineProperty;var Ge=Object.getOwnPropertyDescriptor;var De=Object.getOwnPropertyNames;var Je=Object.getPrototypeOf,Ke=Object.prototype.hasOwnProperty;var Xe=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of De(t))!Ke.call(e,r)&&r!==o&&pe(e,r,{get:()=>t[r],enumerable:!(i=Ge(t,r))||i.enumerable});return e};var xe=(e,t,o)=>(o=e!=null?Ve(Je(e)):{},Xe(t||!e||!e.__esModule?pe(o,"default",{value:e,enumerable:!0}):o,e));const n=require("react/jsx-runtime"),w=require("./state-
|
|
1
|
+
"use strict";var Ve=Object.create;var pe=Object.defineProperty;var Ge=Object.getOwnPropertyDescriptor;var De=Object.getOwnPropertyNames;var Je=Object.getPrototypeOf,Ke=Object.prototype.hasOwnProperty;var Xe=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of De(t))!Ke.call(e,r)&&r!==o&&pe(e,r,{get:()=>t[r],enumerable:!(i=Ge(t,r))||i.enumerable});return e};var xe=(e,t,o)=>(o=e!=null?Ve(Je(e)):{},Xe(t||!e||!e.__esModule?pe(o,"default",{value:e,enumerable:!0}):o,e));const n=require("react/jsx-runtime"),w=require("./state-B6B5oPws.js"),ke=require("@arcblock/ux/lib/Locale/context"),Ye=require("@arcblock/ux/lib/Result"),Qe=require("@blocklet/pages-kit/builtin/page/header"),Ze=require("@blocklet/ui-react/lib/Header"),_=require("@emotion/css"),Q=require("@emotion/react"),et=require("@emotion/styled"),p=require("@mui/material"),$e=require("ahooks"),tt=require("isomorphic-dompurify"),A=require("lodash"),nt=require("lodash/isEmpty"),g=require("react"),ot=require("react-helmet"),B=require("react-router-dom"),U=require("react-use"),P=require("ufo");require("@mui/icons-material");const K=require("@blocklet/ai-runtime/components"),rt=require("@mui/utils"),it=require("lodash/pick"),st=require("react-error-boundary"),ee=require("@iconify/react"),at=require("react-markdown"),ct=require("remark-gfm"),lt=require("@mui/lab"),$=require("@arcblock/ux/lib/Theme"),dt=require("@arcblock/react-hooks/lib/useBrowser"),ut=require("@arcblock/ux/lib/Colors"),re=require("@blocklet/pages-kit/components"),mt=require("@mui/material/useMediaQuery"),Se=require("@iconify-icon/react"),pt=require("@arcblock/ux/lib/Screenshot"),xt=require("lodash/omit"),ft=require("@arcblock/ux/lib/Button"),ht=require("is-uri"),X=require("pathe"),gt=require("@blocklet/embed/message"),bt=require("lodash/isEqual"),yt=require("@blocklet/embed/react"),jt=require("react-twitter-embed"),wt=require("@blocklet/ui-react/lib/Footer"),_t=require("webfontloader"),vt=require("@arcblock/did-connect/lib/Session"),S=e=>e&&e.__esModule?e:{default:e},Ce=S(Ye),kt=S(Ze),Be=S(et),$t=S(tt),St=S(nt),Ie=S(g),ie=S(it),Ct=S(at),Bt=S(ct),It=S(dt),fe=S(ut),Ne=S(mt),Nt=S(pt),q=S(xt),Pt=S(ft),te=S(ht),Rt=S(bt),Tt=S(wt),qt=S(_t);function Et(e,t,o,i){e.locales||(e.locales={}),e.locales[o]=e.locales[o]||{},e.locales[o].title=i.title??e.locales[o].title,e.locales[o].image=i.image??e.locales[o].image,e.locales[o].description=i.description??e.locales[o].description,Object.entries(i.sectionsData).forEach(([r,s])=>{var c,l,d,m;const a=Object.values(e.sections).find(u=>u.id===r||u.name===r);if(a&&a.isTemplateSection)if(a.locales=a.locales||{},a.locales[o]=a.locales[o]||{},a.component==="custom-component"){const u=(c=a.config)==null?void 0:c.componentId;if(!u)return;const f=((l=t.components[u])==null?void 0:l.data)||((m=(d=t.resources.components)==null?void 0:d[u])==null?void 0:m.component);if(!f)return;a.locales[o].properties=a.locales[o].properties||{},Object.entries(s||{}).forEach(([x,y])=>{var h,v;const j=((h=f==null?void 0:f.properties)==null?void 0:h[x])||Object.values((f==null?void 0:f.properties)||{}).find(b=>{var k;return((k=b.data)==null?void 0:k.key)===x});j&&(a.locales[o].properties[(v=j.data)==null?void 0:v.id]={value:y})})}else a.locales[o]={...a.locales[o],...s||{}}})}const zt=g.forwardRef(({onClick:e,...t},o)=>{const[i,r]=g.useState(!1),s=g.useCallback(async a=>{try{r(!0),await(e==null?void 0:e(a))}finally{r(!1)}},[e]);return n.jsx(lt.LoadingButton,{ref:o,...t,loading:t.loading||i,onClick:s})});function Wt({tip:e,tipSucceed:t,title:o,titleSucceed:i,icon:r,iconSucceed:s,autoReset:a,placement:c="top",...l}){const[d,m]=g.useState(!1),[u,f]=g.useState(),x=g.useRef(),y=()=>{f(void 0),a&&(x.current=window.setTimeout(()=>{m(!1)},3e3))},j=()=>{clearTimeout(x.current)},h=d?s:r,v=u?n.jsx(p.Box,{color:"error",children:u.message}):d&&t||e,b=d?i:o;return n.jsx(p.Tooltip,{title:v,disableInteractive:!0,placement:c,onClose:y,onOpen:j,children:n.jsx("span",{children:n.jsx(zt,{startIcon:h&&(typeof h=="string"?n.jsx(ee.Icon,{icon:h}):h),loadingPosition:h?"start":void 0,...l,onClick:async k=>{if(l.onClick)try{await l.onClick(k),m(!0)}catch(N){f(N)}},children:b})})})}const Lt=Ie.default.lazy(()=>import("react-syntax-highlighter").then(e=>({default:e.Prism}))),At=p.styled(e=>n.jsx(Ct.default,{...e,remarkPlugins:[Bt.default],components:{pre:Ot,code:({node:t,inline:o,className:i,children:r,...s})=>{if(!r)return null;const a=/language-(\w+)/.exec(i||"");return o?n.jsx(p.Box,{component:"code",className:i,...s,children:r}):n.jsx(p.Box,{component:Lt,language:a==null?void 0:a[1],...s,sx:{borderRadius:1},children:String(r).replace(/\n$/,"")})},table:({className:t,children:o})=>n.jsx(p.Box,{sx:{overflow:"auto",my:1},children:n.jsx("table",{className:t,children:o})})}}))`
|
|
2
2
|
width: 100%;
|
|
3
3
|
overflow: hidden;
|
|
4
4
|
word-break: break-word;
|
|
@@ -530,11 +530,11 @@
|
|
|
530
530
|
font-family: ${JSON.stringify(t)}, ${_e};
|
|
531
531
|
}
|
|
532
532
|
}
|
|
533
|
-
`})}const{SessionProvider:uo,SessionContext:Qn,SessionConsumer:mo,withSession:po}=vt.createAuthServiceSessionContext();function ce(){return g.useContext(Qn)}function Zn(...e){var o;const{session:t}=ce();return e.includes((o=t.user)==null?void 0:o.role)}function eo(...e){var i;const{session:t}=ce(),o=Zn(...e);return((i=window.blocklet)==null?void 0:i.tenantMode)==="multiple"?!!t.user:o}function to(e){return e!=null}function no(){const[e]=B.useSearchParams(),{session:t}=ce(),o=eo("owner","admin","pagesEditor","member"),i=g.useMemo(()=>{const s=e.get("mode");return An.includes(s)?s:"production"},[e]),r=i==="production"?i:t.user?o?i:"production":null;return r?n.jsx(Oe,{mode:r}):null}function Oe({mode:e}){if(e!=="draft"){const t=window.__PAGE_STATE__;return t?n.jsx(Y,{mode:e,state:t}):n.jsx(ro,{mode:e,children:({state:o})=>n.jsx(Y,{mode:e,state:o})})}return n.jsx(oo,{children:({state:t})=>n.jsx(Y,{mode:e,state:t})})}const oo=g.lazy(()=>Promise.resolve().then(()=>require("./draft-data-
|
|
533
|
+
`})}const{SessionProvider:uo,SessionContext:Qn,SessionConsumer:mo,withSession:po}=vt.createAuthServiceSessionContext();function ce(){return g.useContext(Qn)}function Zn(...e){var o;const{session:t}=ce();return e.includes((o=t.user)==null?void 0:o.role)}function eo(...e){var i;const{session:t}=ce(),o=Zn(...e);return((i=window.blocklet)==null?void 0:i.tenantMode)==="multiple"?!!t.user:o}function to(e){return e!=null}function no(){const[e]=B.useSearchParams(),{session:t}=ce(),o=eo("owner","admin","pagesEditor","member"),i=g.useMemo(()=>{const s=e.get("mode");return An.includes(s)?s:"production"},[e]),r=i==="production"?i:t.user?o?i:"production":null;return r?n.jsx(Oe,{mode:r}):null}function Oe({mode:e}){if(e!=="draft"){const t=window.__PAGE_STATE__;return t?n.jsx(Y,{mode:e,state:t}):n.jsx(ro,{mode:e,children:({state:o})=>n.jsx(Y,{mode:e,state:o})})}return n.jsx(oo,{children:({state:t})=>n.jsx(Y,{mode:e,state:t})})}const oo=g.lazy(()=>Promise.resolve().then(()=>require("./draft-data-kZlleQ4E.js")));function ro({mode:e,children:t}){const o=document.querySelector('meta[property="pages:version"]'),i=o==null?void 0:o.content,r=w.useProjectId(),s=g.useMemo(()=>{if(i==="{{pagesPublishedAt}}"){const l=localStorage.getItem(w.getProjectPageVersionKey(r??""));return Number(l)?Number(l):new Date().getTime()}return Number(i)},[i]),{loading:a,value:c}=U.useAsync(()=>Le({mode:e,version:s}),[e,s]);return a?n.jsx(Ae,{}):c?t({state:c}):null}function Y({mode:e,state:t}){var y,j,h,v;const{t:o,locale:i}=ke.useLocaleContext(),{pageIds:r,pages:s,supportedLocales:a,config:{defaultLocale:c},resources:l}=t,d=w.getAllComponents(t),m=g.useMemo(()=>a!=null&&a.some(b=>b.locale===i)?i:void 0,[i,a]),u=Object.values(s).find(b=>(b==null?void 0:b.slug)==="/")?void 0:Object.values(s)[0],f=g.useMemo(()=>r.map(b=>{const k=s[b];return k&&{id:k.id,path:P.joinURL("/",m||"",k.slug,e!=="production"?`?mode=${e}`:"")}}).filter(to),[r,s,m,e]),x=([...b])=>(e!=="production"&&b.unshift(n.jsx(g.Suspense,{fallback:n.jsx("div",{}),children:n.jsx(so,{mode:"production",state:t})})),b);return n.jsxs(en,{value:{pages:f},children:[n.jsxs(B.Routes,{children:[u&&n.jsx(B.Route,{index:!0,element:n.jsx(B.Navigate,{to:P.joinURL("/",m||"",u.slug)})}),r.map(b=>{const k=s[b];return k?n.jsx(B.Route,{path:P.joinURL(":projectIdOrSlug?",k.slug),element:n.jsx(Z,{mode:e,components:d,page:k,locale:m,defaultLocale:c,headerAddons:x})},k.id):null}),l.pages&&Object.values(l.pages).map(({blockletId:b,page:k})=>n.jsx(B.Route,{path:P.joinURL("/",`@${b}`,k.slug),element:n.jsx(Z,{mode:e,components:d,page:k,locale:m,defaultLocale:c,headerAddons:x})},k.id)),n.jsx(B.Route,{path:"*",element:n.jsx(p.Box,{width:"100vw",height:"100vh",display:"flex",justifyContent:"center",alignItems:"center",children:n.jsx(Ce.default,{style:{background:"inherit"},status:404,extra:n.jsx(Me,{href:"/",children:o("common.back")})})})})]}),e!=="production"&&n.jsx(Jn,{sx:{bgcolor:"info.light"},children:e}),n.jsx(Yn,{titleFontFamily:(j=(y=t.config)==null?void 0:y.fontFamily)==null?void 0:j.title,descriptionFontFamily:(v=(h=t.config)==null?void 0:h.fontFamily)==null?void 0:v.description})]})}function io({mode:e,state:t,path:o,pageData:i}){const{t:r,locale:s}=ke.useLocaleContext(),{pages:a,supportedLocales:c,config:{defaultLocale:l},resources:d}=t,m=Object.values(a).find(h=>(h==null?void 0:h.slug)===o),u=Object.values(d.pages||{}).find(h=>h.page.slug===o),f=g.useMemo(()=>c!=null&&c.some(h=>h.locale===s)?s:void 0,[s,c]),x=$e.useReactive({page:null});g.useEffect(()=>{const h=m||(u==null?void 0:u.page)||null;h?x.page=A.cloneDeep(h):x.page=null},[m,u]);const y=g.useRef();if(g.useEffect(()=>{A.isEqual(i,y.current)||i&&x.page&&(Et(x.page,t,f,i),y.current=A.cloneDeep(i))},[{}]),!m&&!(u!=null&&u.page))return n.jsx(p.Box,{width:"100vw",height:"100vh",display:"flex",justifyContent:"center",alignItems:"center",children:n.jsx(Ce.default,{style:{background:"inherit"},status:404,extra:n.jsx(Me,{href:"/",children:r("common.back")})})});const j=w.getAllComponents(t);return x.page?n.jsx(Z,{mode:e,components:j,page:x.page,locale:f,defaultLocale:l}):null}function Z({mode:e,components:t,page:o,locale:i,defaultLocale:r,headerAddons:s}){var h,v,b,k,N,W,J,le,de;const a=((h=o.locales)==null?void 0:h[i])??((v=o.locales)==null?void 0:v[r])??{},c=a.title||((b=window.blocklet)==null?void 0:b.appName),l=a.description||((k=window.blocklet)==null?void 0:k.appDescription),d=w.autoResizeImage(w.getImageAbsoluteUrl(a.image),540),{logo:m,brand:u,description:f,...x}=Qe.useHeaderState(),y=g.useMemo(()=>E=>{var L;let C=(s==null?void 0:s(E))??E;return C=((L=x.addons)==null?void 0:L.call(x,C))??C,C},[x.addons,s]),j=(N=a.header)!=null&&N.translucent?He:Ue;return n.jsxs(n.Fragment,{children:[!!a.backgroundColor&&n.jsx(Q.Global,{styles:Q.css`
|
|
534
534
|
body {
|
|
535
535
|
background-color: ${a.backgroundColor} !important;
|
|
536
536
|
}
|
|
537
|
-
`}),n.jsx(j,{hideNavMenu:!!((W=a.header)!=null&&W.hideNavMenus),translucentTextColor:(J=a.header)==null?void 0:J.translucentTextColor,...m?{logo:m}:{},...u?{brand:u}:{},...f?{description:f}:{},className:_.cx(((le=a.header)==null?void 0:le.sticky)&&"sticky","page-header"),maxWidth:!1,addons:y}),n.jsx(B.ScrollRestoration,{}),n.jsxs(ot.Helmet,{children:[n.jsx("title",{children:c}),n.jsx("meta",{name:"og:title",content:c}),n.jsx("meta",{name:"og:description",content:l}),n.jsx("meta",{name:"og:image",content:d}),n.jsx("meta",{name:"twitter:image:src",content:d}),n.jsx("meta",{name:"twitter:image",content:d}),n.jsx("meta",{property:"twitter:description",content:l}),n.jsx("meta",{property:"twitter:title",content:c}),n.jsx("meta",{name:"description",content:l})]}),n.jsx(p.Stack,{flexGrow:1,children:o.sectionIds.map(E=>{var ue,me;const C=o.sections[E];if(!C||C.visibility==="hidden")return null;const L=(ue=C.locales)==null?void 0:ue[i],Fe=((me=C.locales)==null?void 0:me[r])??{};return n.jsx(Vn,{id:E,type:C.component,mode:e,section:C,config:{...St.default(L)?Fe:L,locale:i,dev:e==="draft"?{mode:e,components:t,defaultLocale:r}:{mode:e}}},E)})}),!((de=a.footer)!=null&&de.hidden)&&n.jsx(Dn,{})]})}const so=g.lazy(()=>Promise.resolve().then(()=>require("./publish-button-
|
|
537
|
+
`}),n.jsx(j,{hideNavMenu:!!((W=a.header)!=null&&W.hideNavMenus),translucentTextColor:(J=a.header)==null?void 0:J.translucentTextColor,...m?{logo:m}:{},...u?{brand:u}:{},...f?{description:f}:{},className:_.cx(((le=a.header)==null?void 0:le.sticky)&&"sticky","page-header"),maxWidth:!1,addons:y}),n.jsx(B.ScrollRestoration,{}),n.jsxs(ot.Helmet,{children:[n.jsx("title",{children:c}),n.jsx("meta",{name:"og:title",content:c}),n.jsx("meta",{name:"og:description",content:l}),n.jsx("meta",{name:"og:image",content:d}),n.jsx("meta",{name:"twitter:image:src",content:d}),n.jsx("meta",{name:"twitter:image",content:d}),n.jsx("meta",{property:"twitter:description",content:l}),n.jsx("meta",{property:"twitter:title",content:c}),n.jsx("meta",{name:"description",content:l})]}),n.jsx(p.Stack,{flexGrow:1,children:o.sectionIds.map(E=>{var ue,me;const C=o.sections[E];if(!C||C.visibility==="hidden")return null;const L=(ue=C.locales)==null?void 0:ue[i],Fe=((me=C.locales)==null?void 0:me[r])??{};return n.jsx(Vn,{id:E,type:C.component,mode:e,section:C,config:{...St.default(L)?Fe:L,locale:i,dev:e==="draft"?{mode:e,components:t,defaultLocale:r}:{mode:e}}},E)})}),!((de=a.footer)!=null&&de.hidden)&&n.jsx(Dn,{})]})}const so=g.lazy(()=>Promise.resolve().then(()=>require("./publish-button-NBzp4nrV.js"))),Ue=Be.default(kt.default)`
|
|
538
538
|
&.sticky {
|
|
539
539
|
position: sticky;
|
|
540
540
|
top: 0;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),v=require("./state-B6B5oPws.js"),q=require("@arcblock/ux/lib/Locale/context"),O=require("@arcblock/ux/lib/Toast"),S=require("@mui/icons-material"),E=require("@mui/lab"),s=require("@mui/material"),W=require("immer"),z=require("lodash/difference"),c=require("react"),_=require("react-use"),C=require("./home-Ce3-4w2I.js"),M=t=>t&&t.__esModule?t:{default:t},A=M(O),D=M(z);function N(t){const[d,b]=c.useState(!1);return e.jsx(E.LoadingButton,{...t,loading:t.loading||d,onClick:i=>{var h;const m=(h=t.onClick)==null?void 0:h.call(t,i);m instanceof Promise&&(b(!0),m.finally(()=>{b(!1)}))}})}const R=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 F(){const[t,d]=c.useState(),b=c.useMemo(()=>t?e.jsx(s.Dialog,{...t}):null,[t]),i=c.useCallback(()=>{d(void 0)},[]),m=c.useCallback(({title:h,content:g,cancelText:T="Cancel",okText:p="Ok",onOk:f,onClose:k,okIcon:L,okColor:n="primary",cancelColor:y="primary",DialogContentProps:u,form:x,...I})=>{d({...I,open:!0,children:e.jsxs("form",{onSubmit:P=>P.preventDefault(),children:[h&&e.jsxs(s.DialogTitle,{className:"between",zIndex:"appBar",bgcolor:"background.paper",sx:{borderBottom:"1px solid #E5E7EB"},children:[e.jsx(s.Box,{children:h}),e.jsx(s.IconButton,{size:"small",onClick:async()=>{i(),k==null||k()},children:e.jsx(R,{})})]}),g&&e.jsx(s.DialogContent,{...u,sx:{mt:-3,...u==null?void 0:u.sx},children:e.jsx(s.Box,{pt:3,children:g})}),e.jsxs(s.DialogActions,{children:[e.jsx(s.Button,{variant:"outlined",color:y||"primary",onClick:k??i,children:T}),e.jsx(N,{variant:"contained",color:n||"primary",startIcon:L,loadingPosition:L?"start":"center",onClick:async()=>{await(f==null?void 0:f()),i()},type:"submit",children:p})]})]}),onClose:k??i})},[i]);return{dialog:b,showDialog:m,closeDialog:i}}const H=c.forwardRef(({mode:t,state:d},b)=>{const{t:i}=q.useLocaleContext(),[m,h]=c.useState(!1),{dialog:g,showDialog:T}=F(),p=v.useProjectId(),f=c.useCallback(L=>{let n=[];T({title:i("maker.publishToProduction"),content:e.jsxs(s.Box,{sx:{minWidth:300},children:[e.jsx(s.Alert,{color:"warning",icon:e.jsx(S.Warning,{}),children:i("maker.publishToProductionTip")}),e.jsx(s.Box,{maxHeight:"50vh",overflow:"auto",mt:2,children:e.jsx(J,{state:d,toMode:t,onChange:y=>n=y,defaultPageIds:L})})]}),okText:i("maker.publish"),cancelText:i("common.cancel"),onOk:async()=>{var y,u;if((n==null?void 0:n.length)===0){const x=i("maker.publishSelectPagesMessage");throw A.default.error(x),new Error(x)}for(const x of n??d.pageIds){const I=d.pages[x];if(I){const P=(u=(y=v.checkPage(i,I,d))==null?void 0:y[0])==null?void 0:u.message;if(P)throw A.default.error(P),new Error(P)}}localStorage.setItem(v.getProjectPageVersionKey(p??""),String(new Date().getTime())),h(!0);try{await C.publishPages({mode:t,pages:n}),A.default.success(i("maker.publishSuccessMessage"))}catch(x){throw A.default.error(x.message),x}finally{h(!1)}}})},[t,d,i,p,T]);c.useImperativeHandle(b,()=>({openPublishDialog:f}));const k=c.useCallback(()=>{f()},[f]);return e.jsxs(e.Fragment,{children:[e.jsx(E.LoadingButton,{color:"primary",variant:"contained",size:"small",sx:{mr:2},onClick:k,loading:m,disabled:m,children:i("maker.publishToProduction")}),g]})});function J({state:t,toMode:d,onChange:b,defaultPageIds:i}){const{t:m,locale:h}=q.useLocaleContext(),[g,T]=c.useState(!1),[p,f]=c.useState(()=>i?Object.fromEntries(i.map(r=>[r,!0])):{}),{loading:k,error:L,value:n}=_.useAsync(()=>C.getPages({mode:d}),[d]);if(L)throw L;const y=c.useMemo(()=>JSON.parse(JSON.stringify(t.pageIds)).sort((a,j)=>{const o=t.pages[a],l=t.pages[j];return o!=null&&o.publishedAt&&new Date(o.publishedAt).getTime()<new Date(o.updatedAt).getTime()?-1:l!=null&&l.publishedAt&&new Date(l.publishedAt).getTime()<new Date(l.updatedAt).getTime()?1:new Date((o==null?void 0:o.updatedAt)??"").getTime()-new Date((l==null?void 0:l.updatedAt)??"").getTime()}),[t]),u=c.useMemo(()=>n?D.default(n.pageIds,t.pageIds):[],[t,n]),x=c.useMemo(()=>[...t.pageIds].concat(u),[t,u]),I=c.useCallback(r=>{f(a=>{const j=W.produce(a,o=>{g?(Object.assign(o,Object.fromEntries(x.map(l=>[l,!0]))),delete o[r]):o[r]?(delete o[r],u.includes(r)&&t.pageIds.filter(l=>{var w,B;return((w=t.pages[l])==null?void 0:w.slug)===((B=n==null?void 0:n.pages[r])==null?void 0:B.slug)}).forEach(l=>{delete o[l]})):(o[r]=!0,t.pageIds.includes(r)&&u.filter(l=>{var w,B;return((w=n==null?void 0:n.pages[l])==null?void 0:w.slug)===((B=t.pages[r])==null?void 0:B.slug)}).forEach(l=>{o[l]=!0}))});return T(D.default(x,Object.keys(j)).length===0),j})},[g,x,u,t,n]),P=c.useCallback(()=>{T(r=>(r&&f({}),!r))},[p]);return c.useEffect(()=>{b(g?null:Object.keys(p))},[g,p,b]),k?e.jsx(C.Loading,{sx:{my:4}}):e.jsxs(s.List,{disablePadding:!0,sx:{maxWidth:500},children:[e.jsx(s.ListItem,{sx:{position:"sticky",top:0,bgcolor:"background.paper",zIndex:1},disablePadding:!0,children:e.jsxs(s.ListItemButton,{onClick:P,dense:!0,children:[e.jsx(s.ListItemIcon,{children:e.jsx(s.Checkbox,{edge:"start",checked:g,tabIndex:-1})}),e.jsx(s.ListItemText,{primary:m("common.all")})]})}),y.map(r=>{var l,w;const a=t.pages[r];if(!a)return null;const j=v.checkPage(m,a,t),o=!a.publishedAt||a.updatedAt&&new Date(a.updatedAt).getTime()>new Date(a.publishedAt).getTime();return e.jsx(s.ListItem,{disablePadding:!0,secondaryAction:e.jsxs(e.Fragment,{children:[o&&e.jsx(s.Tooltip,{title:m("maker.pages.needPublish"),children:e.jsx(S.Sync,{fontSize:"small",sx:{color:"warning.main",fontSize:16,mr:.35}})}),!a.isPublic&&e.jsx(s.Tooltip,{title:m("maker.pages.notPublic"),children:e.jsx(S.VisibilityOff,{fontSize:"small",sx:{color:"warning.main",fontSize:16,mr:.35}})}),j&&e.jsx(v.PageErrorTip,{errors:j,children:e.jsx(S.Warning,{sx:{color:"error.dark",mr:.35}})})]}),children:e.jsxs(s.ListItemButton,{onClick:()=>I(r),dense:!0,children:[e.jsx(s.ListItemIcon,{children:e.jsx(s.Checkbox,{edge:"start",checked:g||!!p[r],tabIndex:-1})}),e.jsx(s.ListItemText,{primary:a.slug,secondary:(w=(l=a.locales)==null?void 0:l[h])==null?void 0:w.title,primaryTypographyProps:{noWrap:!0,textOverflow:"ellipsis"},secondaryTypographyProps:{noWrap:!0,textOverflow:"ellipsis"}})]})},r)}),u.map(r=>{var j,o;const a=n==null?void 0:n.pages[r];return a?e.jsx(s.ListItem,{disablePadding:!0,secondaryAction:e.jsx(s.Chip,{color:"warning",label:"deleted",size:"small"}),children:e.jsxs(s.ListItemButton,{onClick:()=>I(r),dense:!0,children:[e.jsx(s.ListItemIcon,{children:e.jsx(s.Checkbox,{edge:"start",checked:g||!!p[r],tabIndex:-1})}),e.jsx(s.ListItemText,{primary:a.slug,secondary:(o=(j=a.locales)==null?void 0:j[h])==null?void 0:o.title,primaryTypographyProps:{noWrap:!0,textOverflow:"ellipsis"},secondaryTypographyProps:{noWrap:!0,textOverflow:"ellipsis"}})]})},r):null})]})}exports.default=H;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";var tt=Object.defineProperty;var st=(t,n,e)=>n in t?tt(t,n,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[n]=e;var A=(t,n,e)=>st(t,typeof n!="symbol"?n+"":n,e);const nt=require("@blocklet/pages-kit/builtin/utils"),se=require("@blocklet/pages-kit/types"),oe=require("@blocklet/pages-kit/utils/property"),B=require("@blocklet/quickjs"),ot=require("@blocklet/sdk/lib/config"),Te=require("lru-cache"),Ue=require("node-fetch"),D=require("ufo"),ie=require("crypto"),rt=require("@blocklet/logger"),at=require("@blocklet/pages-kit/utils/builtin"),me=require("@blocklet/pages-kit/utils/typescript/builtin-module-transformer"),ce=require("@blocklet/sdk/lib/component"),it=require("autoprefixer"),ct=require("esbuild"),E=require("fs"),lt=require("postcss"),pt=require("tailwindcss"),ut=require("typescript"),dt=require("@reactivedata/reactive"),ee=require("@syncedstore/core"),ge=require("glob"),ft=require("lib0/decoding"),mt=require("lib0/encoding"),N=require("lodash"),gt=require("nanoid"),ht=require("p-limit"),g=require("path"),yt=require("stream/promises"),St=require("tar"),wt=require("wait-on"),H=require("y-protocols/awareness"),pe=require("y-protocols/sync"),Et=require("yaml"),bt=require("yjs"),Tt=require("lodash/isNil"),C=require("sequelize");require("sqlite3");const L=t=>t&&t.__esModule?t:{default:t};function X(t){if(t&&t.__esModule)return t;const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const e in t)if(e!=="default"){const s=Object.getOwnPropertyDescriptor(t,e);Object.defineProperty(n,e,s.get?s:{enumerable:!0,get:()=>t[e]})}}return n.default=t,Object.freeze(n)}const w=L(ot),Ot=L(Ue),jt=L(rt),Ct=L(it),It=X(ct),Pt=L(lt),At=L(pt),x=L(ut),ue=X(ft),_=X(mt),_t=L(ht),vt=L(g),Dt=L(wt),K=X(Et),V=X(bt),xt=L(Tt);w.default.env.mode;const kt="image-bin";w.default.env.INIT_TEMPLATE_PATH;const Rt=process.env.DATABASE_URL||vt.default.join(w.default.env.dataDir,"db/pages-kit.db"),De=w.default,Nt=()=>w.default.env.tenantMode==="multiple",Lt=()=>{var t;return(xt.default(De.env.preferences.multiTenantAllProjectAccessPassports)?[]:(t=De.env.preferences.multiTenantAllProjectAccessPassports)==null?void 0:t.split(","))||[]},I=jt.default("pages-kit"),Ut=C.DataTypes.sqlite.DATE.parse;C.DataTypes.sqlite.DATE.parse=(t,n)=>typeof t=="number"?new Date(t):Ut(t,n);const Z=new C.Sequelize({dialect:"sqlite",storage:Rt,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});Z.query("pragma journal_mode = WAL;");Z.query("pragma synchronous = normal;");Z.query("pragma journal_size_limit = 67108864;");class le extends C.Model{}le.init({id:{type:C.DataTypes.UUID,allowNull:!1,primaryKey:!0,defaultValue:C.DataTypes.UUIDV4},projectId:{type:C.DataTypes.UUID,allowNull:!1},componentId:{type:C.DataTypes.STRING,allowNull:!1}},{sequelize:Z,tableName:"ProjectComponents",timestamps:!1});class $ extends C.Model{static async getProjectByIdOrSlug(n){return $.findOne({where:{[C.Op.or]:[{id:n},{slug:n}]}})}}$.init({id:{type:C.DataTypes.UUID,defaultValue:C.DataTypes.UUIDV4,primaryKey:!0},name:{type:C.DataTypes.STRING,allowNull:!1},description:C.DataTypes.TEXT,createdAt:C.DataTypes.DATE,updatedAt:C.DataTypes.DATE,createdBy:{type:C.DataTypes.STRING,allowNull:!1},updatedBy:{type:C.DataTypes.STRING,allowNull:!1},slug:C.DataTypes.STRING,icon:C.DataTypes.STRING,pinnedAt:C.DataTypes.DATE,useAllResources:C.DataTypes.BOOLEAN,relatedBlocklets:{type:C.DataTypes.JSON,allowNull:!1,defaultValue:{},get(){return this.getDataValue("relatedBlocklets")||{}},set(t){this.setDataValue("relatedBlocklets",JSON.stringify(t||{}))}}},{sequelize:Z,paranoid:!0});$.hasMany(le,{foreignKey:"projectId",as:"components"});const Mt=async(t,{componentId:n})=>{const e=`@tailwind components;
|
|
2
|
+
@tailwind utilities;
|
|
3
|
+
`,s=`.CustomComponent_${n}`;return(await Pt.default([At.default({content:[{raw:t,extension:"tsx"}]}),Ct.default({overrideBrowserslist:["> 1%","last 2 versions"],stats:{}}),r=>{r.walkRules(l=>{l.selectors=l.selectors.map(a=>a.replace(/\.(.+)/g,`${s}.$1,${s} .$1`))})}]).process(e)).css},Ft=async(t,{componentId:n})=>{const e=await Mt(t,{componentId:n});return`export const __PagesKit_CSS__ = ${JSON.stringify(e)};
|
|
4
|
+
|
|
5
|
+
${t}
|
|
6
|
+
`},xe=B.memoize(async(t,n)=>{let e=x.default.transpileModule(t,{compilerOptions:{jsx:x.default.JsxEmit.React,target:x.default.ScriptTarget.ES2016,module:x.default.ModuleKind.ESNext},transformers:{before:[me.createBuiltinModuleTransformer(x.default)]}}).outputText;if(n.tailwind&&(e=await Ft(e,{componentId:n.componentId})),n.module===se.PreloadComponentScriptModule.ESM)return e;const s=x.default.transpileModule(e,{compilerOptions:{jsx:x.default.JsxEmit.React,target:x.default.ScriptTarget.ES2016,module:x.default.ModuleKind.CommonJS,moduleResolution:x.default.ModuleResolutionKind.Node16}}).outputText;return n.module===se.PreloadComponentScriptModule.CJS?s:$t(n.moduleName,s)},{keyGenerator:(t,n)=>{const e=ie.createHash("md5").update(t).digest("hex"),s={...n,componentId:n.componentId,module:n.module,...n.module!==se.PreloadComponentScriptModule.ESM?{moduleName:n.moduleName}:{},tailwind:n.tailwind};return JSON.stringify(["transpileModule",e,s])},lruOptions:{max:100,ttl:1e3*60*60}}),qt=async(t,n)=>{var l,a;const s=(a=(l=(await It.build({entryPoints:["index.tsx"],external:Object.keys(at.BuiltinModules),format:"esm",target:"esnext",bundle:!0,write:!1,plugins:[{name:"vfs",setup(i){let c=null;i.onResolve({filter:/.*/},p=>p.path==="index.tsx"?{path:"index.tsx",namespace:"vfs"}:p.path==="./component"?{path:"component.tsx",namespace:"vfs"}:me.isRelativeModule(p.path)?{path:p.path,namespace:"vfs"}:null),i.onLoad({filter:/.*/,namespace:"vfs"},async p=>{var u;if(p.path==="index.tsx")return{contents:`export { ${n} } from './component'`,loader:"tsx"};if(p.path==="component.tsx")return{contents:t,loader:"tsx"};if(me.isRelativeModule(p.path)){c||(c=await _e({ensureLoaded:!1}));const f=p.path.split("/").pop();if((u=c==null?void 0:c.chunks)!=null&&u[f])return{contents:E.readFileSync(c.chunks[f],"utf-8"),loader:"js"};const h=D.joinURL("chunks",f),{data:y}=await ce.call({name:"pages-kit",method:"GET",path:h});return{contents:y,loader:"js"}}return null})}}]})).outputFiles)==null?void 0:l[0])==null?void 0:a.contents;if(!s)throw new Error("Failed to build server code");const o=Buffer.from(s).toString();return x.default.transpileModule(o,{compilerOptions:{module:x.default.ModuleKind.ESNext,target:x.default.ScriptTarget.ES2020}}).outputText},Me=B.memoize(async(t,n)=>{const e=await qt(t,n);return new RegExp(`export\\s+\\{\\s+${n}\\s+\\}`,"m").test(e)?e:void 0},{keyGenerator:(t,n)=>{const e=ie.createHash("md5").update(t).digest("hex");return JSON.stringify(["extractExportValueSchema",e,n])},lruOptions:{max:100,ttl:1e3*60*60}}),$t=(t,n)=>{const e=/\bawait\b/.test(n);return`// GENERATED FILE. DO NOT EDIT.
|
|
7
|
+
var ${t} = ${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
|
+
`},z=new Te.LRUCache({max:100}),Fe=60*60,he=60;function qe(t){I.info("clear preload components cache",{cacheKey:t}),z.delete(t)}function $e(t){for(const n of z.keys())n.includes(t)&&(I.info("clear preload components cache",{cacheKey:n}),qe(n))}function Be({mode:t,instanceId:n,componentId:e,locale:s}){return["getPreloadComponents",t,n,e,s].join("-")}async function Bt({mode:t,req:n,state:e,locale:s,instances:o,module:r}){const{supportedLocales:l,config:{defaultLocale:a}}=e;if(!a)return null;const i=(await Promise.all(o.map(async h=>{try{const y=Be({mode:t,instanceId:h.id,componentId:h.componentId,locale:s});if(t!=="draft"&&h.useCache&&z.has(y))return I.info(`get preload component from cache: ${y}`),z.get(y);const P=W({state:e,componentId:h.componentId});if(!P)return null;const v=await Ve({req:n,state:e,componentId:P.id,locale:s,defaultLocale:a,properties:h.properties});if(!v)return null;const F={instanceId:h.id,preload:v};if(t!=="draft"&&h.useCache){let R=Fe;h.cacheDuration&&(R=h.cacheDuration),I.info(`set preload component to cache(${R}s): ${y}`),z.set(y,F,{ttl:R*1e3})}return F}catch(y){return I.error("get preload component error",{instanceId:h.id,componentId:h.componentId},{error:y}),null}}))).filter(h=>!!h),c=Object.values(i.reduce((h,y)=>({...h,...y.preload.components}),{}));async function p(){const h=await Promise.all(c.map(async y=>{const P=oe.componentUMDName({componentId:y.component.id}),v=r===se.PreloadComponentScriptModule.ESM?{module:r,script:await xe(y.script,{componentId:y.component.id,module:r,tailwind:t!=="draft"})}:{module:r,script:await xe(y.script,{componentId:y.component.id,module:r,moduleName:P,tailwind:t!=="draft"}),moduleName:P};return[y.component.id,{component:y.component,script:v}]}));return Object.fromEntries(h)}const u=await p();return{config:{defaultLocale:a,supportedLocales:l},components:u,instances:i.map(h=>({id:h.instanceId,componentId:h.preload.component.id,locales:{[h.preload.locale]:{props:h.preload.props}}}))}}async function Ve({req:t,state:n,componentId:e,locale:s,defaultLocale:o,properties:r}){const{supportedLocales:l}=n,a=W({state:n,componentId:e});if(!a)return null;const i=l.some(p=>p.locale===s)?s:o;if(!i)return null;const c=await Ge({req:t,state:n,componentId:e,locale:i,defaultLocale:o,properties:r});return c?{component:a,...c}:null}const Vt=20;async function Ge({req:t,depth:n=0,state:e,componentId:s,locale:o,defaultLocale:r,properties:l}){if(n>Vt)throw new RangeError("max component depth exceeded");const a=Gt({state:e,componentId:s,properties:l,locale:o});if(!a)return null;const{props:i}=a,c={locale:o||r,components:{[a.component.id]:{component:a.component,script:a.script}},props:{...i}};try{const p=await Jt({...a,req:t});p!=null&&p.props&&Object.assign(c.props,p.props)}catch(p){I.error("preload data at server side error",{componentId:s,name:a.component.name},{error:p})}return await Promise.all(Object.entries(i).map(async([p,u])=>{if((u==null?void 0:u.type)===oe.RenderNestedComponent){const f=await Ge({req:t,depth:n+1,state:e,componentId:u.componentId,locale:o,defaultLocale:r,properties:u.properties});f&&(Object.assign(c.components,f.components),Object.assign(c.props,{[p]:{type:oe.RenderNestedComponent,componentId:u.componentId,props:f.props}}))}})),c}function Gt({state:t,componentId:n,locale:e,properties:s}){const o=W({state:t,componentId:n});if(!o)return null;const r=oe.mergeComponent({componentId:n,getComponent:l=>W({state:t,componentId:l}),locale:e,defaultLocale:t.config.defaultLocale,properties:s});return r?{component:o,script:r.script,props:{locale:e,...r.properties}}:null}function W({state:t,componentId:n}){var e,s,o;return((e=t.components[n])==null?void 0:e.data)??((o=(s=t.resources.components)==null?void 0:s[n])==null?void 0:o.component)}function Ht({state:t,name:n}){var s,o;const e=n.toLowerCase();return((s=Object.values(t.components).find(r=>{var l;return((l=r.data.name)==null?void 0:l.toLowerCase())===e}))==null?void 0:s.data)??((o=t.resources.components&&Object.values(t.resources.components).find(r=>{var l;return((l=r.component.name)==null?void 0:l.toLowerCase())===e}))==null?void 0:o.component)}async function Jt({component:t,script:n,props:e,req:s}){const o=await Me(n,"getServerSideProps");if(!o)return null;const r=new Promise((a,i)=>{setTimeout(()=>{i(new Error("getServerSideProps timeout in promise race"))},he*1e3)});return await Promise.race([r,B.Sandbox.callFunction({code:`${o}
|
|
33
|
+
|
|
34
|
+
export async function getServerSidePropsWrapper(props) {
|
|
35
|
+
const { location, fetch } = 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 getServerSideProps(props);
|
|
44
|
+
} finally {
|
|
45
|
+
// 清理全局状态
|
|
46
|
+
if (originalLocation) globalThis.location = originalLocation;
|
|
47
|
+
if (originalFetch) globalThis.fetch = originalFetch;
|
|
48
|
+
}
|
|
49
|
+
}`,filename:`${t.name||t.id}.js`,moduleLoader:a=>{if(a==="@blocklet/pages-kit/builtin/utils")return`const { joinURL, withQuery, getQuery, getComponentMountPoint } = globalThis
|
|
50
|
+
export { joinURL, withQuery, getQuery, getComponentMountPoint }
|
|
51
|
+
`;if(a==="@blocklet/pages-kit/builtin/dayjs")return B.BuiltinModules.dayjs},global:{console:{log:(...a)=>{I.info(...a)},warn:(...a)=>{I.warn(...a)},error:(...a)=>{I.error(...a)}},getComponentMountPoint:nt.getComponentMountPoint,joinURL:D.joinURL,withQuery:D.withQuery,getQuery:D.getQuery},functionName:"getServerSidePropsWrapper",args:[{location:{href:D.joinURL(D.withHttps(s.hostname),s.originalUrl)},fetch:(a,{...i}={})=>{const c=typeof a=="string"&&a.startsWith("/")?D.joinURL(w.default.env.appUrl,a):a;if(typeof c=="string"&&D.parseURL(c).host===D.parseURL(w.default.env.appUrl).host){const p=s.get("cookie");if(p){const u=new Ue.Headers(i.headers);u.set("cookie",p),i.headers=u}}return Ot.default(c,{...i,timeout:he*1e3}).then(p=>({ok:p.ok,status:p.status,statusText:p.statusText,headers:Object.fromEntries(p.headers.entries()),json:()=>p.json()}))},props:e}]})])}const He=B.memoize(async(t,n,e)=>{const s=await Me(t,n);if(s)try{return await B.Sandbox.callFunction({code:`
|
|
52
|
+
${s}
|
|
53
|
+
|
|
54
|
+
export function get${n}SchemaWrapper() {
|
|
55
|
+
return ${n};
|
|
56
|
+
}
|
|
57
|
+
`,filename:`${e}.js`,functionName:`get${n}SchemaWrapper`})}catch(o){return I.error(`获取 ${n} 失败`,{componentId:e,error:o}),null}return null},{keyGenerator:(t,n,e)=>{const s=ie.createHash("md5").update(t).digest("hex");return JSON.stringify(["getExportSchemaValueFromCode",s,n,e])},lruOptions:{max:100,ttl:1e3*60*60}}),Kt="z8iZiDFg3vkkrPwsiba1TLXy3H9XHzFERsP8o",ye="page",Se="trigger-reload-project-resource",Oe=Kt,zt="z2qa7rr3eUyVnWp2PCxEVARuUfLFh6cE5V2xV",{uploadToMediaKit:Yt}=require("@blocklet/uploader-server"),we=gt.customAlphabet("abcdefghijklmnopqrstuvwxyz0123456789",16),je=/^\w+(\w|-|\.)+\w+\.(jpe?g|png|gif|svg|bmp|webp|mp4|m4v|webm)$/,Y=/mediakit:\/\/([a-f0-9]{32}\.(jpe?g|png|gif|svg|bmp|webp|mp4|m4v|webm))/i,ke=/mediakit:\/\/([a-f0-9]{32}\.(jpe?g|png|gif|svg|bmp|webp|mp4|m4v|webm))/gi,Wt=1e4,Qt=3e4,te=0,de=1,Xt=0,Zt=1,Ee=w.default,J=g.join(process.env.BLOCKLET_DATA_DIR,"site-state"),es=["production","draft"],ts=["production"];function Je(t){return(t==null?void 0:t.replace(/\//g,"|"))||""}function ss(){var e;const t=Ee.env.languages.map(s=>({locale:s.code,name:s.name})),n=(e=t[0])==null?void 0:e.locale;return{pageIds:[],pages:{},components:{},supportedLocales:t,config:{defaultLocale:n},resources:{}}}const q=class q extends V.Doc{constructor(e){super();A(this,"states",{});A(this,"syncedStore");A(this,"conns",new Map);A(this,"awareness");A(this,"awarenessChangeHandler",({added:e,updated:s,removed:o},r)=>{const l=e.concat(s,o);if(r!==null){const c=this.conns.get(r);c&&(e.forEach(p=>{c.add(p)}),o.forEach(p=>{c.delete(p)}))}const a=_.createEncoder();_.writeVarUint(a,de),_.writeVarUint8Array(a,H.encodeAwarenessUpdate(this.awareness,l));const i=_.toUint8Array(a);this.conns.forEach((c,p)=>this.send(p,i))});A(this,"updateHandler",e=>{const s=_.createEncoder();_.writeVarUint(s,te),pe.writeUpdate(s,e);const o=_.toUint8Array(s);this.conns.forEach((r,l)=>this.send(l,o))});A(this,"ensureDataStructure",()=>{var l;const{supportedLocales:e,pages:s,pageIds:o,config:r}=this.syncedStore;{const a=new Set(Object.keys(s));let i=0;for(;i<o.length;){const c=o[i];a.has(c)?(a.delete(c),i++):o.splice(i,1)}}e.splice(0,e.length),e.push(...Ee.env.languages.map(a=>({locale:a.code,name:a.name}))),r.defaultLocale=(l=e[0])==null?void 0:l.locale;{let a=0;const i=new Set;for(;a<e.length;){const{locale:c}=e[a];i.has(c)?e.splice(a,1):(a++,i.add(c))}}});A(this,"send",(e,s)=>{e.readyState!==Xt&&e.readyState!==Zt&&this.closeConn(e);try{e.send(s,o=>{o&&this.closeConn(e)})}catch{this.closeConn(e)}});A(this,"closeConn",e=>{if(e.removeAllListeners(),this.conns.has(e)){const s=this.conns.get(e);this.conns.delete(e),s&&H.removeAwarenessStates(this.awareness,Array.from(s),null)}e.close()});A(this,"autoSave",N.debounce(()=>{E.mkdirSync(g.dirname(this.draftYjsFilePath),{recursive:!0}),E.writeFileSync(this.draftYjsFilePath,V.encodeStateAsUpdate(this))},Wt));A(this,"save",({flush:e=!1}={})=>{this.autoSave(),e&&this.autoSave.flush()});A(this,"publish",async({mode:e,pages:s})=>{const o=await this.getState("draft"),r=await this.getState("production");await be(o,r,{pages:s,pageMergeMode:"replace",deletePages:!0,publishMode:e}),r.config.publishedAt=new Date().getTime();for(const l of s||Object.keys(this.syncedStore.pages))this.syncedStore.pages[l]&&(this.syncedStore.pages[l].publishedAt=new Date().toISOString());await this.setState(e,r)});A(this,"mergeState",async(e,s)=>{var a,i,c;const o=JSON.parse(JSON.stringify(s));(a=e.config).fontFamily??(a.fontFamily={});const r=(i=o.config)==null?void 0:i.fontFamily,l=(c=e.config)==null?void 0:c.fontFamily;e.config.fontFamily.title=(r==null?void 0:r.title)||(l==null?void 0:l.title),e.config.fontFamily.description=(r==null?void 0:r.description)||(l==null?void 0:l.description),await new Promise((p,u)=>{this.transact(async()=>{try{const f=await be(e,s);p(f)}catch(f){u(f)}})})});A(this,"addConnection",e=>{if(this.conns.has(e))return;e.binaryType="arraybuffer",this.conns.set(e,new Set),e.on("message",r=>this.messageListener(e,new Uint8Array(r)));let s=!0;const o=setInterval(()=>{if(!s)this.conns.has(e)&&this.closeConn(e),clearInterval(o);else if(this.conns.has(e)){s=!1;try{e.ping()}catch{this.closeConn(e),clearInterval(o)}}},Qt);e.on("close",()=>{this.closeConn(e),clearInterval(o)}),e.on("pong",()=>{s=!0});{const r=_.createEncoder();_.writeVarUint(r,te),pe.writeSyncStep1(r,this),this.send(e,_.toUint8Array(r));const l=this.awareness.getStates();if(l.size>0){const a=_.createEncoder();_.writeVarUint(a,de),_.writeVarUint8Array(a,H.encodeAwarenessUpdate(this.awareness,Array.from(l.keys()))),this.send(e,_.toUint8Array(a))}}});A(this,"messageListener",(e,s)=>{try{const o=_.createEncoder(),r=ue.createDecoder(s),l=ue.readVarUint(r);switch(l){case te:_.writeVarUint(o,te),pe.readSyncMessage(r,o,this,null),_.length(o)>1&&(this.ensureDataStructure(),this.send(e,_.toUint8Array(o)));break;case de:{H.applyAwarenessUpdate(this.awareness,ue.readVarUint8Array(r),e);break}default:I.warn(`Unsupported messageType ${l}`)}}catch(o){I.error(o)}this.save()});this.options=e,E.existsSync(this.draftYjsFilePath)&&V.applyUpdate(this,E.readFileSync(this.draftYjsFilePath)),this.syncedStore=dt.reactive(ee.syncedStore({pages:{},pageIds:[],components:{},supportedLocales:[],config:{},resources:{}},this)),this.initObserver(),this.on("update",this.updateHandler),this.awareness=new H.Awareness(this),this.awareness.on("update",this.awarenessChangeHandler),this.ensureDataStructure()}static safeDeleteProjectStateDir(e){if(!e)throw new Error("Should provide project context");try{const s=g.join(J,e),o=g.join(J,`@del-${e}`);E.renameSync(s,o)}catch(s){I.error("Failed to safe delete project state dir:",s)}}static get projectIds(){return ge.globSync("*/",{cwd:J,ignore:["@del-*","@tmp-*",".*","staging","production","@backup-*"]})}static get allShared(){return this.projectIds.map(e=>q.shared(e))}static shared(e){if(!e)throw new Error("Should provide project context");let s=this.sharedInstances.get(e);return s||(s=new q({path:g.join(J,e)}),this.sharedInstances.set(e,s),s)}destroy(){this.conns.forEach((e,s)=>this.closeConn(s)),this.awareness.destroy(),super.destroy()}initObserver(){const e=o=>{o.observeDeep(r=>{r.some(l=>l.changes.keys.has("updatedAt")||l.changes.keys.has("publishedAt"))||o.set("updatedAt",new Date().toISOString())})};this.syncedStore.pages&&Object.keys(this.syncedStore.pages).forEach(o=>{const r=ee.getYjsValue(this.syncedStore.pages[o]);r&&r instanceof V.Map&&e(r)});const s=ee.getYjsValue(this.syncedStore.pages);s&&s instanceof V.Map&&s.observe(o=>{o.changes.keys.forEach((r,l)=>{if(r.action==="add"){const a=ee.getYjsValue(this.syncedStore.pages[l]);a&&a instanceof V.Map&&e(a)}})})}get draftYjsFilePath(){return g.join(this.options.path,"draft.yjs")}async getState(e){var s,o,r,l;if(e==="draft")return JSON.parse(JSON.stringify(this.syncedStore));if(!this.states[e]&&(this.states[e]=await Ce(this.getPublishDir(e),{includeResources:!0})??ss(),!((o=(s=this.states[e])==null?void 0:s.config)!=null&&o.defaultLocale))){(r=this.states[e]).config??(r.config={});const a=Ee.env.languages.map(i=>({locale:i.code,name:i.name}));this.states[e].config.defaultLocale=(l=a[0])==null?void 0:l.locale}return{...this.states[e],resources:await _e().then(async a=>{var u,f,h,y;const{pages:i,components:c}=N.pick(a,"pages","components");let p=c;if((f=(u=this.states[e])==null?void 0:u.resources)!=null&&f.components)p={...(y=(h=this.states[e])==null?void 0:h.resources)==null?void 0:y.components};else{const P=g.basename(this.options.path),v=await $.findByPk(P);if(v!=null&&v.useAllResources)p=c;else{const R=(await le.findAll({where:{projectId:P}})).map(T=>T.componentId);p=Object.fromEntries(Object.entries(c||{}).filter(([T])=>R.includes(T)))}}return{pages:i,components:p}}).catch(()=>({}))}}async setState(e,s){const o=await Ye(s,{exportAssets:!1,includeResources:!0}),r=this.getPublishDir(e);E.mkdirSync(g.dirname(r),{recursive:!0}),E.rmSync(r,{force:!0,recursive:!0}),E.renameSync(o,r),this.states[e]=s}getPublishDir(e){return g.join(this.options.path,e)}static async pageUrlMap(e){const{projectIds:s}=this,o={};for(const r of s){const l=await $.findByPk(r);if(!l)continue;const a=await q.shared(r).getState(e),i=N.union(w.default.env.languages.map(c=>c.code),a.supportedLocales.map(c=>c.locale));for(const c of a.pageIds){const p=a.pages[c];if(!p||e==="production"&&!p.isPublic)continue;const u=p.slug,f=l.slug||r,h={projectId:r,projectSlug:f,pageSlug:u,pageId:c,defaultLocale:i==null?void 0:i[0],locales:i,publishedAt:a.config.publishedAt,isPublic:p.isPublic,isTemplate:p.isTemplate};f&&(o[D.joinURL("/",f,u)]={...h,shouldRedirect:!0,mainPage:!0}),o[D.joinURL("/",r,u)]={...h,shouldRedirect:!0,mainPage:!0};for(const y of i){const P={...h,locale:y};o[D.joinURL("/",y,r,u)]=P,f&&(o[D.joinURL("/",y,f,u)]=P)}}}return o}};A(q,"INSTANCE_TTL",30*60*1e3),A(q,"sharedInstances",new Te.LRUCache({max:100,ttl:q.INSTANCE_TTL,dispose:e=>{e.destroy()}}));let Q=q;function Ke(){return E.mkdtempSync(g.join(w.default.env.dataDir,"tmp-"))}function re(t,n,e=[]){return Array.isArray(t)?t.flatMap((s,o)=>re(s,n,[...e,o])):typeof t=="object"?t===null?[]:Object.entries(t).flatMap(([s,o])=>re(o,n,[...e,s])):n(t)?[e]:[]}function M(t){return t.filter(n=>n!=null)}async function ns(t,n,e){if(!t||!E.existsSync(t)||!E.lstatSync(t).isFile())return null;let s=e[t];return s||(s=(async()=>(await Yt({filePath:t,fileName:n})).data.filename)(),e[t]=s),s}const os=async(t,n)=>{const e=g.basename(t),s=await ce.call({name:Oe,path:D.joinURL("/uploads",e),responseType:"stream",method:"GET"});if(s.status>=200&&s.status<400){const o=E.createWriteStream(n);await yt.pipeline(s.data,o)}else throw new Error(`download asset failed ${s.status}`)},rs=async(t,n)=>{await Promise.all(t.map(async e=>{try{await os(e,g.join(n,g.basename(e)))}catch(s){I.error(`Failed to export assets: ${e}, ${s}`)}}))};function ze(t){return je.test(t)?[t]:Y.test(t)?(ke.lastIndex=0,Array.from(t.matchAll(ke)).map(e=>e[1]).filter(e=>!!e)):[]}async function fe(t,n,e){const{getFilename:s,exportAssets:o}=e,r=g.join(n,s(t));if(E.mkdirSync(g.dirname(r),{recursive:!0}),E.writeFileSync(r,K.stringify(t)),o){const a=re(t,i=>typeof i=="string"&&(je.test(i)||Y.test(i))).map(i=>{const c=N.get(t,i);return ze(c)}).flat().filter(Boolean);await rs(a,g.dirname(r))}}const Re=new Te.LRUCache({max:1e3,ttl:30*24*60*60*1e3});async function Ne(t,n,e){var a;const s=re(t,i=>typeof i=="string"&&(je.test(i)||Y.test(i))),o=_t.default(2),r=s.map(i=>o(async()=>{try{const c=N.get(t,i),p=ze(c);for(const u of p){const f=g.basename(u),h=e.getFilePath(u,i),y=h?`${h}:${f}`:f,P=Re.get(y);if(P){Y.test(c)||N.set(t,i,P);return}const v=await ns(h,f,n);v&&(Y.test(c)||N.set(t,i,v),Re.set(y,v))}}catch(c){I.error(`Failed to process upload for path ${i.join(".")}:`,c.message||c.reason)}})),l=await Promise.allSettled(r);(a=e.onFinish)==null||a.call(e,l)}async function Ye(t,{exportAssets:n,pageIds:e="all",componentIds:s="all",rawConfig:o,includeResources:r=!1}={}){var F,R,S,T,O,j;const l=e==="all"?t.pageIds:e,a=as({state:t,pageIds:l,componentIds:s==="all"?Object.keys(t.components):s}),i=(m,d)=>{var b;return{id:m.id,name:m.name,isTemplateSection:m.isTemplateSection??!1,templateDescription:m.templateDescription,component:m.component,config:m.config,visibility:m.visibility,properties:((b=m.locales)==null?void 0:b[d])??{}}},c=(m,d)=>{var b;return{id:m.id,createdAt:m.createdAt,updatedAt:m.updatedAt,publishedAt:m.publishedAt,isPublic:m.isPublic??!0,isTemplate:m.isTemplate??!1,meta:((b=m.locales)==null?void 0:b[d])??{},sections:M(m.sectionIds.map(k=>{const U=m.sections[k];return U&&i(U,d)}))}},p=M(t.supportedLocales.map(m=>m.locale).flatMap(m=>l.map(d=>{const b=t.pages[d];return b&&{locale:m,slug:b.slug,page:c(b,m)}}))),u=Ke(),f=g.join(u,"pages");E.mkdirSync(f,{recursive:!0});const h=g.join(u,"components");E.mkdirSync(h,{recursive:!0});for(const{locale:m,slug:d,page:b}of p)await fe(b,f,{getFilename:()=>`${Je(d)||"index"}.${m}.yml`,exportAssets:n});for(const m of a){const d=(F=t.components[m])==null?void 0:F.data;d&&await fe(d,h,{getFilename:b=>`${b.name||"unnamed"}.${b.id}.yml`,exportAssets:n})}const y=g.join(u,".blocklet/pages/pages.config.yml");E.mkdirSync(g.dirname(y),{recursive:!0});const P={pages:M(l.map(m=>{const d=t.pages[m];return d&&{id:m,slug:d.slug}})),components:M(a.map(m=>{var b;const d=(b=t.components[m])==null?void 0:b.data;return d&&{id:m,name:d.name}})),...r?{resources:{components:M(Object.keys(((R=t.resources)==null?void 0:R.components)||{}).map(m=>{var d,b,k,U;return{id:m,name:(U=(k=(b=(d=t.resources)==null?void 0:d.components)==null?void 0:b[m])==null?void 0:k.component)==null?void 0:U.name}}))}}:{},supportedLocales:t.supportedLocales,config:t.config};E.writeFileSync(y,K.stringify(P));const v=g.join(u,"config.source.json");if(o&&E.writeFileSync(v,JSON.stringify(o)),r){const m=g.join(u,"resources"),d=g.join(m,"components");E.mkdirSync(d,{recursive:!0});for(const b of Object.keys(((S=t==null?void 0:t.resources)==null?void 0:S.components)??{})){const k=(j=(O=(T=t.resources)==null?void 0:T.components)==null?void 0:O[b])==null?void 0:j.component;k&&await fe(k,d,{getFilename:U=>`${U.name||"unnamed"}.${U.id}.yml`,exportAssets:n})}}return u}async function Ce(t,{importAssets:n,includeResources:e}={}){var r,l,a;if(!E.existsSync(t))return null;let s,o=!1;try{E.lstatSync(t).isDirectory()?s=t:/\.(tgz|gz|tar)$/.test(t)&&(o=!0,s=Ke(),await St.x({file:t,C:s}));const i=ge.globSync("**/.blocklet/pages/pages.config.yml",{cwd:s,absolute:!0}).at(0),c=i&&g.join(g.dirname(i),"../../pages"),p=i&&g.join(g.dirname(i),"../../components"),u=i&&g.join(g.dirname(i),"../../chunks");if(!i)return null;const f=K.parse(E.readFileSync(i).toString()),h=(S,T,O)=>{let j=g.join(S,`${T}${O?`.${O}`:""}.yml`);return(!E.existsSync(j)||!E.lstatSync(j).isFile())&&(j=g.join(S,T,`index${O?`.${O}`:""}.yml`),!E.existsSync(j)||!E.lstatSync(j))?null:K.parse(E.readFileSync(j).toString())},y=(S,T)=>{try{const O=ge.globSync(`*.${T}.yml`,{cwd:S,absolute:!0})[0];return O?K.parse(E.readFileSync(O).toString()):null}catch(O){I.error("parse component error",O)}return null},P=M(f.pages.map(({slug:S})=>{var m;const T=M(f.supportedLocales.map(({locale:d})=>{const b=c?h(c,Je(S),d):void 0;if(b)return{locale:d,page:b};const k=c?h(c,S,d):void 0;return k&&{locale:d,page:k}})),O=(m=T[0])==null?void 0:m.page;if(!O)return null;const j=O.sections.map(d=>{const b=d.id||we();return{id:b,component:d.component,config:d.config,name:d.name,isTemplateSection:d.isTemplateSection??!1,templateDescription:d.templateDescription,visibility:d.visibility,locales:Object.fromEntries(M(T.map(({locale:k,page:U})=>{const ve=U.sections.find(et=>et.id===b);return ve&&[k,ve.properties]})))}});return{id:O.id||we(),createdAt:O.createdAt,updatedAt:O.updatedAt,publishedAt:O.publishedAt,isPublic:O.isPublic??!0,isTemplate:O.isTemplate??!1,slug:S,sections:Object.fromEntries(j.map(d=>[d.id,d])),sectionIds:j.map(d=>d.id),locales:Object.fromEntries(T.map(({locale:d,page:b})=>[d,b.meta]))}})),v=p?M(((r=f.components)==null?void 0:r.map(({id:S})=>y(p,S)))??[]):[];if(n){const S=(...T)=>{I.info(`[${o?g.basename(t):g.basename(g.join(t,"../../../../"))}] importAssets:`,...T)};try{S("wait image-bin api ready"),await Dt.default({resources:[`${ce.getComponentWebEndpoint(kt)}/api/sdk/uploads`],validateStatus:j=>j>=200&&j<=500}),S("image-bin api is ready");const T={},O={};S("start to upload assets"),await Promise.allSettled([Ne(v,T,{getFilePath:j=>p&&g.join(p,j),onFinish:j=>{S(`upload ${j.length} component assets`)}}),Ne(P,O,{getFilePath:(j,m)=>{const d=N.get(P,m.slice(0,1));return c&&g.join(c,g.dirname(d.slug),j)},onFinish:j=>{S(`upload ${j.length} page assets`)}})]),S("upload assets done"),global.gc&&global.gc()}catch(T){S("Error during asset import:",T)}}const F={};if(e){const S=i&&g.join(g.dirname(i),"../../resources/components"),T=M(((a=(l=f.resources)==null?void 0:l.components)==null?void 0:a.map(({id:O})=>y(S,O)))??[]);T.length>0&&(F.components=Object.fromEntries(T.map((O,j)=>[O.id,{index:j,component:O}])))}const R={};if(u&&E.existsSync(u)){const S=E.readdirSync(u);for(const T of S)R[T]=g.join(u,T)}return{supportedLocales:f.supportedLocales,pageIds:P.map(S=>S.id),components:Object.fromEntries(v.map((S,T)=>[S.id,{index:T,data:S}])),pages:Object.fromEntries(P.map(S=>[S.id,S])),config:f.config||{},resources:F,chunks:R}}finally{o&&s&&E.rmSync(s,{force:!0,recursive:!0})}}async function be(t,n,{pages:e,pageMergeMode:s="byUpdateTime",deletePages:o=!1,publishMode:r=void 0}={}){try{r&&$e(r)}catch(p){I.error("clear preload page cache error",{error:p})}const{pageIds:l,pages:a,supportedLocales:i}=t;for(const p of e??l){const u=a[p];if(!u){const f=n.pageIds.indexOf(p);f!==-1&&o&&(n.pageIds.splice(f,1),delete n.pages[p]);continue}if(n.pageIds.includes(u.id)){if(s==="replace")n.pages[u.id]=u;else if(s==="byUpdateTime"){const f=n.pages[u.id];(!f||u.updatedAt&&u.updatedAt>f.updatedAt)&&(n.pages[u.id]=u)}}else n.pageIds.push(u.id),n.pages[u.id]=u}if(o&&!e)for(const p of n.pageIds)t.pageIds.includes(p)||delete n.pages[p],n.pageIds=[...n.pageIds].filter(u=>t.pageIds.includes(u));if(n.supportedLocales.splice(0,n.supportedLocales.length),n.supportedLocales.push(...N.cloneDeep(i)),o)for(const p of Object.keys(n.components))delete n.components[p];let c=JSON.parse(JSON.stringify(t.components));c=Object.fromEntries(await Promise.all(Object.entries(c).map(async([p,u])=>{const f=await We(u==null?void 0:u.data);return[p,{...u,data:f}]}))),Object.assign(n.components,c),Object.assign(n.config,JSON.parse(JSON.stringify(t.config))),n.resources.components=JSON.parse(JSON.stringify(t.resources.components||{}))}const We=B.memoize(async t=>{var n;if(!N.isEmpty(t==null?void 0:t.properties))return t;if(((n=t==null?void 0:t.renderer)==null?void 0:n.type)==="react-component"){const{script:e}=(t==null?void 0:t.renderer)||{};if(e)try{const s=await He(e,"PROPERTIES_SCHEMA",t.id);s&&s.length>0&&t&&(t.properties={},s.forEach((o,r)=>{t!=null&&t.properties&&(t.properties[o.id]={index:r,data:o})}))}catch(s){I.error("checkPropertiesFromCode error",{componentId:t.id,name:t.name},{error:s})}}return t},{keyGenerator:t=>{var l;const n=(t==null?void 0:t.id)||"",e=(t==null?void 0:t.name)||"",s=((l=t==null?void 0:t.renderer)==null?void 0:l.type)||"",o=(t==null?void 0:t.properties)||{},r=ie.createHash("md5").update(JSON.stringify(o)).digest("hex");return JSON.stringify(["checkPropertiesFromCode",n,e,s,r])},lruOptions:{max:100,ttl:1e3*60*60}});function as({state:t,pageIds:n=[],componentIds:e=[]}){var l;const s=(a,i=new Set)=>(Array.isArray(a)&&a.forEach(c=>s(c,i)),a&&typeof a=="object"&&(typeof a.componentId=="string"&&i.add(a.componentId),Object.values(a).forEach(c=>s(c,i))),i),o=new Set(e);for(const a of n){const i=t.pages[a];s(i,o)}const r=[...o];for(;r.length;){const a=r.shift();o.has(a)||o.add(a);const i=(l=t.components[a])==null?void 0:l.data;if(i)for(const c of s(i))o.has(c)||r.push(c)}return[...o]}let ae,G,Ie,Pe,Ae;function Qe(){return ae=(async()=>{const t=ce.getResources({types:[{did:Oe,type:ye},{did:zt,type:ye}]});G=(await Promise.all(t.map(async e=>{const s=e.path?await Ce(e.path,{importAssets:!1}):void 0;return s?{blockletId:e.did,state:s,blockletTitle:e.title}:void 0}))).filter(e=>!!e),Ie=G.reduce((e,s)=>Object.assign(e,Object.fromEntries(Object.values(s.state.pages).map(o=>o?[o==null?void 0:o.id,{page:o,blockletId:s.blockletId}]:[]))),{});const n=G.reduce((e,s)=>Object.assign(e,Object.fromEntries(Object.values(s.state.components).map(o=>[o.data.id,{blockletId:s.blockletId,component:o.data}]))),{});Pe=Object.fromEntries(await Promise.all(Object.entries(n).map(async([e,s])=>{const o=await We(s.component);return[e,{...s,component:o}]}))),Ae=G.reduce((e,s)=>Object.assign(e,s.state.chunks),{})})(),ae}function Xe(t){const n=N.debounce(async()=>{await Qe().catch(e=>{I.error("load resource states error",{error:e})}),await(t==null?void 0:t({states:G,pages:Ie,components:Pe,chunks:Ae}))},3e3,{leading:!1,trailing:!0});return n(),w.default.events.on(w.default.Events.componentAdded,n),w.default.events.on(w.default.Events.componentRemoved,n),w.default.events.on(w.default.Events.componentStarted,n),w.default.events.on(w.default.Events.componentStopped,n),w.default.events.on(w.default.Events.componentUpdated,n),w.default.events.on(Se,n),()=>{w.default.events.off(w.default.Events.componentAdded,n),w.default.events.off(w.default.Events.componentRemoved,n),w.default.events.off(w.default.Events.componentStarted,n),w.default.events.off(w.default.Events.componentStopped,n),w.default.events.off(w.default.Events.componentUpdated,n),w.default.events.off(Se,n)}}const Ze=Symbol.for("GLOBAL_RESOURCE_STATES_LISTENER_KEY"),ne=globalThis;var Le;(Le=ne[Ze])==null||Le.call(ne);ne[Ze]=Xe(async({pages:t,components:n})=>{const{projectIds:e}=Q;await Promise.all(e.map(async s=>{const o=Q.shared(s);o.syncedStore.resources.pages=t;const r=await $.findByPk(s);if(r!=null&&r.useAllResources)o.syncedStore.resources.components=n;else{const a=(await le.findAll({where:{projectId:s}})).map(c=>c.componentId),i=Object.fromEntries(Object.entries(n||{}).filter(([c])=>a.includes(c)));o.syncedStore.resources.components=i}I.info(`update [${s}] resource states:`,{pages:Object.keys(o.syncedStore.resources.pages||{}).length,components:Object.keys(o.syncedStore.resources.components||{}).length})}))});async function is(){I.info("trigger reload all project resource"),w.default.events.emit(Se)}async function _e({ensureLoaded:t=!0}={}){return t&&(ae??(ae=Qe()),await ae),{states:G,pages:Ie,components:Pe,chunks:Ae}}exports.COMPONENT_DID=Oe;exports.CUSTOM_COMPONENT_CACHE_DURATION_IN_SECONDS=Fe;exports.GET_SERVER_SIDE_PROPS_TIMEOUT_IN_SECONDS=he;exports.PUBLISH_MODES=ts;exports.Project=$;exports.RESOURCE_TYPE=ye;exports.SITE_STATE_PATH=J;exports.STATE_MODES=es;exports.SiteState=Q;exports.clearPreloadComponentsCache=qe;exports.clearPreloadComponentsCacheByMode=$e;exports.fromPackage=Ce;exports.getComponentFromState=W;exports.getComponentFromStateByName=Ht;exports.getExportSchemaValueFromCode=He;exports.getMultiTenantAllProjectAccessPassports=Lt;exports.getPreloadComponent=Ve;exports.getPreloadComponents=Bt;exports.getPreloadComponentsCacheKey=Be;exports.getResourceStates=_e;exports.initPackResourceStates=Xe;exports.isMultiTenant=Nt;exports.logger=I;exports.mergeState=be;exports.nextId=we;exports.toPackage=Ye;exports.triggerReloadAllProjectResource=is;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const P=require("react/jsx-runtime"),I=require("@mui/material"),Q=require("gradient-parser"),X=require("tinycolor2"),j=require("ufo"),Y=require("@blocklet/js-sdk"),Z=require("yaml"),W=require("@syncedstore/core"),H=require("@syncedstore/react"),ee=require("ahooks"),E=require("immer"),te=require("js-cookie"),ne=require("lodash/debounce"),oe=require("nanoid"),d=require("react"),N=require("react-router-dom"),re=require("y-indexeddb"),se=require("y-websocket"),ce=require("yjs"),x=e=>e&&e.__esModule?e:{default:e};function ie(e){if(e&&e.__esModule)return e;const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const i in e)if(i!=="default"){const u=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(n,i,u.get?u:{enumerable:!0,get:()=>e[i]})}}return n.default=e,Object.freeze(n)}const ae=x(Q),ue=x(X),de=ie(Z),le=x(W),fe=x(te),F=x(ne);function V(){const{pathname:e}=window.location,n=e.match(/\/admin\/(maker|previewer)\/([^/]+)/),i=n==null?void 0:n[2],u=window.__PROJECT_ID__;if(!i&&!u)throw new Error("Unable to get projectId from pathname");return i||u}function me(e){return`${e}:pages:version`}function pe(e,n){return n==="yaml"?de.stringify(e,{indent:2}):n==="json"?JSON.parse(JSON.stringify(e||"{}")):n==="array"?JSON.parse(JSON.stringify(e||"[]")):e}function ge({error:e}){return P.jsx(I.Box,{children:P.jsx(I.Alert,{severity:"error",children:e.message})})}var T;const v=((T=window.blocklet)==null?void 0:T.prefix)||"/",O=Y.createAxios({timeout:200*1e3}),Se=window.location.protocol==="https:"?"wss":"ws",we=e=>j.joinURL(`${Se}://${window.location.hostname}`,v,`api/${e}/ws/pages`),he="z8ia1mAXo8ZE7ytGF36L5uBf9kD2kenhqFGp9";var $;($=blocklet==null?void 0:blocklet.componentMountPoints.find(e=>e.did===he))!=null&&$.mountPoint||j.joinURL(v,"/image-bin");function Pe(e){return e&&!/^(https?:\/\/|\/)/.test(e)?window.location.origin+j.joinURL(v,"uploads",e):e}const je=window.innerWidth<=750;function ye(e,n,i){if(!e||/\.gif/.test(e))return e;const u=(je?n/1.5:n)*(i==="quality"?1.5:1);return ke(e,{imageFilter:"resize",w:u,f:"webp"})}function ke(e,n){return!e||!n?e:j.withQuery(e,n)}function z(e){if(e!=null&&e.trim())try{return ae.default.parse(e),!0}catch{return!1}return!1}function be(e){return typeof e!="string"?!1:!!(z(e)||ue.default(e).isValid())}async function Ie(e){return O.get(`/api/projects/${e}`).then(n=>n.data)}async function xe(e){return O.post(`/api/projects/${e.id}/update`,e).then(n=>n.data)}const Ce=500,_=oe.customAlphabet("abcdefghijklmnopqrstuvwxyz0123456789",16),B=d.createContext(null);function Ee({url:e,name:n,children:i,waitingSynced:u}){const[f,l]=d.useState(!1),S=L(),y=`${S}:MakerLocalState`,t=`${S}:${n}`,[r,o]=ee.useLocalStorageState(y,{defaultValue:{},listenStorageChange:!0}),s=d.useRef(r);s.current=r;const a=d.useMemo(()=>le.default({pages:{},pageIds:[],components:{},supportedLocales:[],config:{},resources:{}}),[]),c=d.useMemo(()=>W.getYjsDoc(a),[a]);d.useMemo(()=>new re.IndexeddbPersistence(t,c),[t,c]);const w=d.useMemo(()=>new se.WebsocketProvider(e,t,c,{params:{token:fe.default.get("login_token")}}),[e,t,c]),k=d.useMemo(()=>new ce.UndoManager([c.getArray("pageIds"),c.getMap("pages"),c.getArray("supportedLocales"),c.getMap("config")],{doc:c}),[c]),[b,C]=d.useState(null),[A,q]=d.useState(!1),[M,R]=d.useState(void 0),D=d.useCallback(async()=>{if(S){q(!0);try{const m=await Ie(S);C(m)}catch(m){console.error("Failed to fetch project:",m)}finally{q(!1)}}},[S]),U=d.useCallback(async(m,p)=>{var h;if(R(void 0),!!S){p!=null&&p.optimisticUpdate&&b&&C(g=>({...g,...m}));try{const g=await xe({...m});C(g)}catch(g){console.error("Failed to update project:",g),p!=null&&p.optimisticUpdate&&C(b),R((h=g==null?void 0:g.response)==null?void 0:h.data)}}},[S,b]);d.useEffect(()=>{S&&D()},[S,D]);const K=d.useMemo(()=>({doc:c,state:a,localState:r,setLocalState:m=>o(typeof m=="function"?p=>m(p??{}):m),undoManager:k,projectState:{project:b,isLoadingProject:A,error:M},updateProject:U}),[c,a,JSON.stringify(r),o,k,b,A,U,M]);return d.useEffect(()=>{k.on("stack-item-added",({stackItem:m})=>{const{currentPageId:p,currentLocale:h,pages:g}=s.current;m.meta.set("localState",{currentPageId:p,currentLocale:h,pages:g})}),k.on("stack-item-popped",({stackItem:m})=>{const p=m.meta.get("localState");p&&o(h=>({...h,...p}))})},[k,o]),d.useEffect(()=>{w.awareness.setLocalState(r)},[w,r]),d.useEffect(()=>{w.once("synced",()=>l(!0));const m=()=>{o(g=>({...g,networkStatus:void 0}))},p=()=>{o(g=>({...g,networkStatus:"offline"}))},h=F.default(({status:g})=>{g==="connected"?m():g==="disconnected"&&p()},Ce);return w.on("status",h),window.addEventListener("online",m),window.addEventListener("offline",p),()=>{w.off("status",h),window.removeEventListener("online",m),window.removeEventListener("offline",p)}},[w,o]),u&&!f?null:P.jsx(B.Provider,{value:K,children:i})}const G=()=>{const e=d.useContext(B);if(!e)throw new Error("Context is null");const n=H.useSyncedStore(e.state),{setLocalState:i,localState:u}=e,f=N.useNavigate(),l=L(),S=d.useMemo(()=>({setCurrentSectionId:(t,r)=>{var o,s;t===u.currentPageId&&r===((s=(o=u.pages)==null?void 0:o[t])==null?void 0:s.currentSectionId)||(f(j.joinURL("/admin/maker",l??"","pages",t)),i(a=>E.produce(a,c=>{var w;c.currentPageId=t,c.currentComponentId=void 0,c.componentDebugProps={},r!==void 0&&(c.pages??(c.pages={}),(w=c.pages)[t]??(w[t]={}),c.pages[t].currentSectionId=r??void 0),r?window.sessionStorage.setItem("iframe_show_id",`"${r}"`):window.sessionStorage.removeItem("iframe_show_id")})))},setCurrentComponentId:t=>{t!==u.currentComponentId&&(f(j.joinURL("/admin/maker",l??"","components",t)),i(r=>E.produce(r,o=>{o.currentComponentId=t,o.componentDebugProps={}})))},setComponentDebugProps:(()=>{const t={},r=F.default(()=>{i(o=>E.produce(o,s=>{s.componentDebugProps={...s==null?void 0:s.componentDebugProps,...t},Object.keys(t).forEach(a=>delete t[a])}))},5);return o=>{Object.assign(t,o),r()}})()}),[i,f,l]),y=d.useMemo(()=>({addPage:(t,r)=>{const o=(t==null?void 0:t.id)??_(),s={...t,id:o,createdAt:(t==null?void 0:t.createdAt)??new Date().toISOString(),updatedAt:(t==null?void 0:t.updatedAt)??new Date().toISOString(),publishedAt:new Date(0).toISOString(),slug:(t==null?void 0:t.slug)??`/${o}`,sections:(t==null?void 0:t.sections)??{},sectionIds:(t==null?void 0:t.sectionIds)??[],isPublic:(t==null?void 0:t.isPublic)??!0,isTemplate:(t==null?void 0:t.isTemplate)??!1};return e.doc.transact(()=>{n.pages[s.id]=s,n.pageIds.splice(r??n.pageIds.length,0,s.id)}),s},deletePage:t=>{const r=n.pageIds.indexOf(t);r!==-1&&e.doc.transact(()=>{n.pageIds.splice(r,1),delete n.pages[t]})},movePage:(t,r)=>{const{pageIds:o}=n,s=o.indexOf(t);s>=0&&o.splice(r,0,...o.splice(s,1))},addSection:(t,r,o)=>{const s=n.pages[t];if(!s)throw new Error(`Page ${t} is not exists`);const a={...r,id:r.id??_(),isTemplateSection:r.isTemplateSection??!1};return e.doc.transact(()=>{s.sections[a.id]=a,s.sectionIds.splice(o??s.sectionIds.length,0,a.id)}),a},deleteSection:(t,r)=>{const o=n.pages[t];if(!o)throw new Error(`Page ${t} is not exists`);const s=o.sectionIds.indexOf(r);s!==-1&&e.doc.transact(()=>{o.sectionIds.splice(s,1),delete o.sections[r]})},toggleSectionVisibility:(t,r,o)=>{const s=n.pages[t];if(!s)throw new Error(`Page ${t} is not exists`);const a=s.sections[r];a&&(a.visibility=o)},moveSection:(t,r,o)=>{const s=n.pages[t];if(!s)throw new Error(`Page ${t} is not exists`);const{sectionIds:a}=s,c=a.indexOf(r);c>=0&&a.splice(o,0,...a.splice(c,1))}}),[n,e.doc]);return{...e,state:n,actions:y,localActions:S,get currentPage(){const{localState:{currentPageId:t}}=e;return t?n.pages[t]:void 0},get currentSection(){var s,a,c;const{localState:{currentPageId:t,...r}}=e;if(!t)return;const o=(a=(s=r.pages)==null?void 0:s[t])==null?void 0:a.currentSectionId;if(o)return(c=n.pages[t])==null?void 0:c.sections[o]}}},L=()=>{const{projectId:e}=N.useParams();return e??V()};function _e(e){var u,f;const{resources:n}=e;if(!n.components)return{};const i={};return(f=(u=window==null?void 0:window.blocklet)==null?void 0:u.componentMountPoints)==null||f.forEach(l=>{i[l.did]=l}),Object.fromEntries(Object.entries(n.components).map(([l,{blockletId:S,component:y}])=>{var t;return[l,{data:y,blockletId:S,blockletTitle:((t=i[S])==null?void 0:t.title)||S}]}))}function ve(e){const{components:n}=e;return n||{}}function J(e){return{..._e(e),...ve(e)}}const Oe=()=>J(G().state),Le=[/\.\./,/<[^>]*>/,/%[0-9a-f]{2}/i,/[<>'"%;{}()\\]/,/\x00/,/\n|\r|\t|\v|\f/,/[^a-zA-Z0-9-_@/]/];function Ae(e,n,i){const u=[];{let f;n.slug?n.slug.startsWith("/")?n.slug!=="/"&&n.slug.endsWith("/")?f=e("maker.properties.pathCheckEndWithoutSlash"):/\/{2,}/.test(n.slug)?f=e("maker.properties.pathCheckConsecutiveSlash"):/\s/.test(n.slug)?f=e("maker.properties.pathCheckWhitespace"):Le.some(l=>l.test(n.slug))?f=e("maker.properties.pathCheckInvalid"):Object.values(i.pages).some(l=>(l==null?void 0:l.id)!==n.id&&(l==null?void 0:l.slug)===n.slug)&&(f=e("maker.properties.pathCheckAlreadyExist")):f=e("maker.properties.pathCheckStartWithSlash"):f=e("maker.properties.pathCheckRequired"),f&&u.push({path:["path"],message:f})}return u.length>0?u:null}function qe({errors:e,...n}){return e!=null&&e.length?P.jsx(I.Tooltip,{...n,title:P.jsx(I.Box,{children:e.map((i,u)=>P.jsx(I.Box,{children:i.message},u))})}):null}exports.ErrorView=ge;exports.PageErrorTip=qe;exports.StoreProvider=Ee;exports.api=O;exports.autoResizeImage=ye;exports.checkPage=Ae;exports.getAllComponents=J;exports.getImageAbsoluteUrl=Pe;exports.getProjectIdFromPathnameOrWindow=V;exports.getProjectPageVersionKey=me;exports.getWssURL=we;exports.isColorString=be;exports.isGradient=z;exports.nextId=_;exports.transformValue=pe;exports.useAllComponents=Oe;exports.useProjectId=L;exports.useStore=G;
|
package/lib/cjs/components.js
CHANGED
|
@@ -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
|
|
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--DPohEOl.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-
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require("react/jsx-runtime");require("./_chunks/state-B6B5oPws.js");const e=require("./_chunks/home-Ce3-4w2I.js");require("@arcblock/ux/lib/Locale/context");require("@arcblock/ux/lib/Result");require("@blocklet/pages-kit/builtin/page/header");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");require("lodash/isEmpty");require("react");require("react-helmet");require("react-router-dom");require("react-use");require("ufo");exports.HomeView=e.HomeView;exports.PageRoutes=e.PageRoutes;exports.PageView=e.PageView;exports.PageViewByPath=e.PageViewByPath;exports.TranslucentHeader=e.TranslucentHeader;exports.default=e.Home;
|
package/lib/cjs/project-html.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";const
|
|
1
|
+
"use strict";const k=require("./_chunks/site-state--DPohEOl.js"),S=require("@blocklet/crawler/middlewares"),W=require("@blocklet/pages-kit/types"),J=require("@blocklet/pages-kit/utils/preload"),G=require("@blocklet/sdk/lib/component"),D=require("@blocklet/sdk/lib/config"),z=require("cheerio"),K=require("express"),A=require("fs"),Q=require("mustache"),I=require("path"),j=require("ufo"),q=e=>e&&e.__esModule?e:{default:e};function V(e){if(e&&e.__esModule)return e;const l=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const d=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(l,t,d.get?d:{enumerable:!0,get:()=>e[t]})}}return l.default=e,Object.freeze(l)}const a=q(D),U=V(z),X=q(Q),Y=["/assets/"],R=()=>[!0,"true"].includes(a.default.env.preferences.allowCrawler);function x(){R()?S.initCronCrawlBlocklet({time:"30 30 */12 * * *",options:{}}):S.cancelCronCrawlBlocklet()}x();a.default.events.on(a.default.Events.envUpdate,x);function Z({app:e,viteDevServer:l,state:t}){let d;if(l){const r=A.readFileSync(I.resolve(process.cwd(),"./index.html"),"utf-8");e.use(async(b,T,y)=>{const v=b.originalUrl;d=await l.transformIndexHtml(v,r),y()})}else d=A.readFileSync(I.resolve(process.env.BLOCKLET_APP_DIR,"dist/index.html"),"utf-8");const C=K.Router();C.use(S.initSEOMiddleware({autoReturnHtml:!1,allowCrawler:R})),C.get("/:path(*)?",async(r,b,T)=>{var E,L,M;if(Y.some(c=>r.path.startsWith(c))){T();return}const y=performance.now(),v=()=>Math.round(performance.now()-y),B="production";let o,p,h=d;if(r.path.startsWith("/pages")){const c=r.params.lang,g=r.cookies.nf_lang,w=new Set([...a.default.env.languages.map(f=>f.code)]);let m=(c&&w.has(c)?c:void 0)||(w.has(g)?g:void 0)||[...w][0];if((!m||!((E=t.supportedLocales)!=null&&E.find(f=>f.locale===m)))&&(m=((M=(L=t.supportedLocales)==null?void 0:L[0])==null?void 0:M.locale)||""),m){const f=[];Object.values(t.pages).forEach(s=>{const P=Object.values((s==null?void 0:s.sections)??{}).filter(i=>{var _;return i.component==="custom-component"&&((_=i.config)==null?void 0:_.componentId)}).map(i=>{var _,O;return{id:i.id,componentId:i.config.componentId,useCache:i.config.useCache,cacheDuration:i.config.cacheDuration,properties:(O=(_=i.locales)==null?void 0:_[m])==null?void 0:O.properties}});f.push(...P)});const N=new Promise((s,P)=>{setTimeout(()=>{P(new Error("getPreloadComponents timeout in promise race, skip it"))},90*1e3)});try{await Promise.race([N,k.getPreloadComponents({mode:B,req:r,state:t,locale:m,instances:f,module:W.PreloadComponentScriptModule.UMD_FN}).then(s=>{s&&(p=J.injectPreloadComponents(s))})])}catch(s){k.logger.warn("getPreloadComponents timeout in promise race, skip inject html elements"),k.logger.warn(s)}}}try{const c=(o==null?void 0:o.title)||a.default.env.appName,g=(o==null?void 0:o.description)||a.default.env.appDescription,w=j.withQuery(j.joinURL(a.default.env.appUrl,"/.well-known/service/blocklet/og.png"),{title:c,description:g});h=X.default.render(d,{ogTitle:c,ogDescription:g,ogImage:F(o==null?void 0:o.image)||w,pagesPublishedAt:(t==null?void 0:t.config.publishedAt)||new Date().getTime()})}catch{}const n=t==null?void 0:t.config.fontFamily,H=r.query.mode==="draft"||r.url.includes("preview"),u=U.load(h);u("head").find("#injected-head-elements").replaceWith(`
|
|
2
2
|
${o!=null&&o.backgroundColor?`<meta name="theme-color" content="${o.backgroundColor}" /><style>html,body,#app {background-color: ${o.backgroundColor} !important;}</style>`:""}
|
|
3
3
|
${n!=null&&n.title?`<link rel="preload" as="style" href="https://fonts.googleapis.com/css?family=${n.title}&display=swap">`:""}
|
|
4
4
|
${n!=null&&n.description&&(n==null?void 0:n.description)!==(n==null?void 0:n.title)?`<link rel="preload" as="style" href="https://fonts.googleapis.com/css?family=${n.description}&display=swap">`:""}
|
|
@@ -14,10 +14,10 @@
|
|
|
14
14
|
});
|
|
15
15
|
<\/script>
|
|
16
16
|
|
|
17
|
-
${
|
|
17
|
+
${H?`<script src="https://cdn.tailwindcss.com"><\/script>
|
|
18
18
|
<script>
|
|
19
19
|
window.tailwind.config = {
|
|
20
20
|
darkMode: "class",
|
|
21
21
|
};
|
|
22
22
|
<\/script>`:""}
|
|
23
|
-
`);const
|
|
23
|
+
`);const $=D.getBlockletJs();if($&&u('script[src="__blocklet__.js"]').replaceWith(`<script>${$}<\/script>`),p!=null&&p.html&&u("head").find("#injected-html-elements").replaceWith(p.html),r.cachedHtml){const c=U.load(r.cachedHtml);u("body").html(c("body").html()||"")}h=u.html(),b.send(h),k.logger.info(`[html] render: ${r.path}, ${v()}ms`),u.root().children().remove(),h=null,o=null,p=null}),e.use(C)}function F(e){const l=G.getComponentMountPoint("image-bin");return l&&e&&!/^(https?:\/\/|\/)/.test(e)?a.default.env.appUrl+j.joinURL(l,"uploads",e):e}module.exports=Z;
|
package/lib/cjs/resources.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const c=require("./_chunks/site-state
|
|
1
|
+
"use strict";const c=require("./_chunks/site-state--DPohEOl.js"),M=require("async_hooks"),U=require("express"),F=require("fs"),J=require("joi"),O=require("lodash"),b=require("path"),X=require("@blocklet/sdk/lib/middlewares/auth"),W=require("@blocklet/sdk/lib/component"),E=t=>t&&t.__esModule?t:{default:t},p=E(F),I=E(J),k=E(b),v=E(X);new M.AsyncLocalStorage;const $=async(t,e,o)=>{var n,s,r,a;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 P=(n=t.user)==null?void 0:n.did,h=((s=t.user)==null?void 0:s.role)||"UNKNOWN_ROLE";if(!P)return e==null?void 0:e.status(401).json({error:"Authentication required"});if(c.isMultiTenant()){const w=f.createdBy===P,i=(a=(r=c.getMultiTenantAllProjectAccessPassports())==null?void 0:r.includes)==null?void 0:a.call(r,h);if(!w&&!i)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(h))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 N(t,e){return new Promise((o,n)=>{const s=p.default.createReadStream(t),r=p.default.createWriteStream(e);s.on("error",n),r.on("error",n),r.on("finish",o),s.pipe(r)})}async function T(t,e){await p.default.promises.mkdir(e,{recursive:!0});const o=await p.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 T(s,r):await N(s,r)}}async function G(t,e){(await p.default.promises.stat(t)).isDirectory()?await T(t,e):await N(t,e)}const D=(t,e,o)=>c.isMultiTenant()?v.default()(t,e,o):v.default({roles:["owner","admin","pagesEditor"]})(t,e,o),K=(t,e)=>{const o=W.getResourceExportDir({projectId:t,releaseId:e});return b.join(o,c.COMPONENT_DID,c.RESOURCE_TYPE)},S=U.Router(),B="@page",q="@component",y=":",_="ALL",L="@project",C=({pageId:t,projectId:e})=>[B,e,t].join(y),Y=t=>{const[e,o,n]=t.split(y);if(e===B)return{pageId:n,projectId:o}},A=({componentId:t,projectId:e})=>[q,e,t].join(y),z=t=>{const[e,o,n]=t.split(y);if(e===q)return{componentId:n,projectId:o}},H=t=>[L,t].join(y),Q=t=>{const[e,o]=t.split(y);if(e===L)return o},V=t=>{try{return JSON.parse(t)}catch{}return{}};async function x(t){const e=await c.SiteState.shared(t).getState("production"),o=await c.Project.findByPk(t),n=e.pageIds.map(r=>{const a=e.pages[r];if(a)return{id:C({pageId:r,projectId:t}),name:a.slug}}).filter(Boolean),s=O.sortBy(Object.values(e.components),r=>r.index).map(({data:r})=>({id:A({componentId:r.id,projectId:t}),name:r.name||r.id}));return{id:H(t),name:(o==null?void 0:o.name)||"Unnamed Project",children:[{id:C({pageId:_,projectId:t}),name:"Pages",children:n},{id:A({componentId:_,projectId:t}),name:"Components",children:s}]}}S.get("/resources",D,async(t,e)=>{const{projectId:o}=V(t.query.resourcesParams);if(o){t.params={...t.params,projectId:o},await $(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 Z=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("")});S.post("/resources",D,async(t,e)=>{const{resources:o,projectId:n,releaseId:s}=await Z.validateAsync(t.body),r="production",a=[],u=[];for(const i of o){if(Q(i))continue;const{pageId:m,projectId:j}=Y(i)||{};if(m)m===_||m&&j&&a.push({pageId:m,projectId:j});else{const{componentId:l,projectId:d}=z(i)||{};l===_||l&&d&&u.push({componentId:l,projectId:d})}}const f=O.groupBy(a,"projectId"),P=O.groupBy(u,"projectId"),h=new Set([...Object.keys(f),...Object.keys(P)]),w=K(n,s);p.default.rmSync(w,{recursive:!0,force:!0}),p.default.mkdirSync(w,{recursive:!0});for(const i of h){const m=await c.SiteState.shared(i).getState(r),j=f[i],l=P[i],d=j==null?void 0:j.map(g=>g.pageId),R=l==null?void 0:l.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 G(g,w),p.default.rmSync(g,{recursive:!0,force:!0})}c.logger.info(`Exported resources for project ${i}`,{pageIds:d,componentIds:R})}e.json({})});S.get("/all-resources",D,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=S;
|