@blocklet/pages-kit-inner-components 0.6.1 → 0.6.2
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/add-component.js +1 -420
- package/lib/cjs/chunks/draft-data-CfIMszE7.js +1 -0
- package/lib/cjs/chunks/home-DUjl5PbP.js +6 -0
- package/lib/cjs/chunks/publish-button-C522nNv6.js +1 -0
- package/lib/cjs/chunks/site-state-DDXqWF74.js +57 -0
- package/lib/cjs/chunks/state-CtNs8GrN.js +1 -0
- package/lib/cjs/home.js +1 -1
- package/lib/cjs/project-html.js +11 -4
- package/lib/cjs/resources.js +1 -1
- package/lib/es/add-component.js +2 -1089
- package/lib/es/chunks/{draft-data-CafrGKeh.js → draft-data-bRUHvvzp.js} +5 -4
- package/lib/es/chunks/home-VWWdvIPQ.js +69 -0
- package/lib/es/chunks/{publish-button-XSZrDaTQ.js → publish-button-Ceet-m88.js} +158 -140
- package/lib/es/chunks/site-state-Bh8guIeX.js +2092 -0
- package/lib/es/chunks/state-BdNIIXJP.js +502 -0
- package/lib/es/home.js +3 -28
- package/lib/es/project-html.js +114 -130
- package/lib/es/resources.js +93 -137
- package/package.json +11 -11
- package/lib/cjs/chunks/draft-data-D44_IEV2.js +0 -1
- package/lib/cjs/chunks/home-BYk01EUy.js +0 -39
- package/lib/cjs/chunks/index-BRgYwvuv.js +0 -475
- package/lib/cjs/chunks/publish-button-C8XPA4g_.js +0 -1
- package/lib/cjs/chunks/session-BRtsDvA-.js +0 -1
- package/lib/cjs/chunks/site-state-gSkcvhcV.js +0 -57
- package/lib/cjs/chunks/state-B6BF5wJ-.js +0 -1
- package/lib/cjs/chunks-map.json +0 -1
- package/lib/cjs/components.js +0 -1
- package/lib/cjs/locales.js +0 -3
- package/lib/cjs/setting.js +0 -11
- package/lib/cjs/site-state.js +0 -1
- package/lib/cjs/theme.js +0 -1
- package/lib/cjs/uploader.js +0 -1
- package/lib/es/chunks/home-DW8SdyfO.js +0 -594
- package/lib/es/chunks/index-D5gXPe_7.js +0 -2326
- package/lib/es/chunks/session-C72Dq8zg.js +0 -19
- package/lib/es/chunks/site-state-W2H7XCSQ.js +0 -2077
- package/lib/es/chunks/state-0gvZF3k2.js +0 -573
- package/lib/es/chunks-map.json +0 -1
- package/lib/es/components.js +0 -22
- package/lib/es/locales.js +0 -1032
- package/lib/es/setting.js +0 -2294
- package/lib/es/site-state.js +0 -48
- package/lib/es/theme.js +0 -484
- package/lib/es/uploader.js +0 -8
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const U=require("react/jsx-runtime"),A=require("ufo"),b=require("./home-DUjl5PbP.js"),W=require("@arcblock/ux/lib/Locale/context"),x=require("@blocklet/pages-kit/utils/common"),F=require("@blocklet/pages-kit/utils/page-model");require("@mui/material");const _=require("@syncedstore/core"),K=require("@syncedstore/react"),V=require("ahooks"),y=require("immer"),Y=require("lodash/cloneDeep"),z=require("lodash/debounce"),u=require("react"),T=require("react-router-dom"),H=require("y-indexeddb"),Q=require("y-websocket"),X=require("yjs");require("@blocklet/pages-kit/types");const j=s=>s&&s.__esModule?s:{default:s},Z=j(_),R=j(Y),B=j(z);async function ee(s){return b.api.get(`/api/projects/${s}`).then(c=>c.data)}async function te(s){return b.api.post(`/api/projects/${s.id}/update`,s).then(c=>c.data)}const oe=500,G=u.createContext(null);function re({url:s,name:c,children:P,waitingSynced:w}){const[v,h]=u.useState(!1),{locale:p}=W.useLocaleContext(),m=O(),M=`${m}:MakerLocalState`,e=`${m}:${c}`,[t,r]=V.useLocalStorageState(M,{defaultValue:{},listenStorageChange:!0}),o=u.useRef(t);o.current=t;const i=u.useMemo(()=>Z.default({dataSourceIds:[],dataSources:{},pages:{},pageIds:[],routes:{},routeIds:[],components:{},supportedLocales:[],config:{},resources:{}}),[]),n=u.useMemo(()=>_.getYjsDoc(i),[i]);u.useMemo(()=>new H.IndexeddbPersistence(e,n),[e,n]);const a=u.useMemo(()=>new Q.WebsocketProvider(s,e,n,{params:{},resyncInterval:5*60*1e3}),[s,e,n]),d=u.useCallback(()=>{a&&(a.disconnect(),a.connect())},[a]),g=u.useMemo(()=>new X.UndoManager([n.getArray("pageIds"),n.getMap("pages"),n.getArray("supportedLocales"),n.getMap("config"),n.getMap("dataSources"),n.getArray("dataSourceIds"),n.getArray("routeIds"),n.getMap("routes")],{doc:n}),[n]),[C,L]=u.useState(null),[E,k]=u.useState(!1),[N,q]=u.useState(void 0),$=u.useCallback(async()=>{if(m){k(!0);try{const l=await ee(m);L(l)}catch(l){console.error("Failed to fetch project:",l)}finally{k(!1)}}},[m]),D=u.useCallback(async(l,f)=>{if(q(void 0),!!m){f?.optimisticUpdate&&C&&L(S=>({...S,...l}));try{const S=await te({...l});L(S)}catch(S){console.error("Failed to update project:",S),f?.optimisticUpdate&&L(C),q(S?.response?.data)}}},[m,C]);u.useEffect(()=>{m&&$()},[m,$]);const J=u.useMemo(()=>({doc:n,state:i,localState:{...t,currentLocale:p},setLocalState:l=>r(typeof l=="function"?f=>l(f??{}):l),undoManager:g,projectState:{project:C,isLoadingProject:E,error:N},updateProject:D,forceSync:d}),[n,i,JSON.stringify(t),r,g,C,E,D,N,p,d]);return u.useEffect(()=>{g.on("stack-item-added",({stackItem:l})=>{const{currentPageId:f,currentLocale:S,pages:I}=o.current;l.meta.set("localState",{currentPageId:f,currentLocale:S,pages:I})}),g.on("stack-item-popped",({stackItem:l})=>{const f=l.meta.get("localState");f&&r(S=>({...S,...f}))})},[g,r]),u.useEffect(()=>{a.awareness.setLocalState(t)},[a,t]),u.useEffect(()=>{a.once("synced",()=>h(!0));const l=()=>{r(I=>({...I,networkStatus:void 0}))},f=()=>{r(I=>({...I,networkStatus:"offline"}))},S=B.default(({status:I})=>{I==="connected"?l():I==="disconnected"&&f()},oe);return a.on("status",S),window.addEventListener("online",l),window.addEventListener("offline",f),()=>{a.off("status",S),window.removeEventListener("online",l),window.removeEventListener("offline",f)}},[a,r]),w&&!v?null:U.jsx(G.Provider,{value:J,children:P})}const ne=()=>{const s=u.useContext(G);if(!s)throw new Error("Context is null");const c=K.useSyncedStore(s.state),{setLocalState:P,localState:w}=s,v=T.useNavigate(),h=O(),p=u.useMemo(()=>({get currentPage(){const{localState:{currentPageId:e}}=s;return e?c.pages[e]:void 0},get currentSection(){const{localState:{currentPageId:e,...t}}=s;if(!e)return;const r=t.pages?.[e]?.currentSectionId;if(r)return c.pages[e]?.sections[r]??this.currentPageModel?.getComponentById(r)?.model},get currentSectionProperties(){const{localState:{currentPageId:e,...t}}=s;if(!e)return;const r=t.pages?.[e]?.currentSectionId;if(!r)return;const o=c.pages[e]?.dataSource?.[r];if(!o)return;const{currentLocale:i}=this.currentLocaleMap;return i?o[i]:void 0},get currentSectionPropertiesWithFallback(){const{localState:{currentPageId:e,...t}}=s;if(!e)return;const r=t.pages?.[e]?.currentSectionId;if(!r)return;const o=c.pages[e]?.dataSource?.[r];if(!o)return;const{currentLocale:i,defaultLocale:n,fallbackLocale:a}=this.currentLocaleMap;if(i&&o[i])return o[i];if(n&&o[n])return o[n];if(a&&o[a])return o[a]},get currentLocaleMap(){const{localState:{currentLocale:e},state:{supportedLocales:t,config:{defaultLocale:r}}}=s;return{currentLocale:e,defaultLocale:r,fallbackLocale:t?.[0]?.locale??"en"}},get currentRoute(){const{localState:{currentRouteId:e}}=s;return e?c.routes?.[e]:void 0},get currentPageModel(){const e=this.currentPage??null;if(e)return F.getPageTemplateModel(e,!1)}}),[JSON.stringify(w),c]),m=u.useMemo(()=>({setCurrentSectionId:(e,t)=>{e===w.currentPageId&&t===w.pages?.[e]?.currentSectionId||(v(A.joinURL("/admin/maker",h??"","pages",e)),P(r=>y.produce(r,o=>{o.currentPageId=e,o.currentComponentId=void 0,t!==void 0&&(o.pages??={},o.pages[e]??={},o.pages[e].currentSectionId=t??void 0),t?window.sessionStorage.setItem("iframe_show_id",`"${t}"`):window.sessionStorage.removeItem("iframe_show_id")})))},setCurrentComponentId:e=>{e!==w.currentComponentId&&(v(A.joinURL("/admin/maker",h??"","components",e)),P(t=>y.produce(t,r=>{r.currentComponentId=e})))},setCurrentRouteId:({routeId:e,dynamicParams:t})=>{P(r=>y.produce(r,o=>{o.currentRouteId=e,o.currentDynamicParams=t}))},setCustomComponentPreviewerProperties:(()=>{const e={};let t="";const r=B.default(()=>{P(o=>y.produce(o,i=>{i.customComponentPreviewerProperties??={},i.customComponentPreviewerProperties[t]={...i.customComponentPreviewerProperties[t],...R.default(e[t])},delete e[t]}))},5);return(o,i)=>{const n=e[o]??{};Object.assign(n,i),e[o]=n,t=o,r()}})(),setRouteGenerateProcess:e=>{P(t=>y.produce(t,r=>{e?r.routeGenerateProcess={...r.routeGenerateProcess,...e}:r.routeGenerateProcess={}}))},resetRouteGenerateProcess:()=>{P(e=>y.produce(e,t=>{t.routeGenerateProcess={progress:"complete"}}))}}),[P,v,h,p]),M=u.useMemo(()=>({addPage:(e,t)=>{const r=e?.id??x.nextId(),o={...e,id:r,createdAt:e?.createdAt??new Date().toISOString(),updatedAt:e?.updatedAt??new Date().toISOString(),publishedAt:new Date(0).toISOString(),slug:e?.slug??`/${r}`,sections:e?.sections??{},sectionIds:e?.sectionIds??[],isPublic:e?.isPublic??!0,templateConfig:e?.templateConfig??{isTemplate:e?.templateConfig?.isTemplate??!0,displayTemplateId:e?.templateConfig?.displayTemplateId??void 0,dataSourceIds:e?.templateConfig?.dataSourceIds??void 0,dataSourceParameters:e?.templateConfig?.dataSourceParameters??{},enabledGenerate:e?.templateConfig?.enabledGenerate??!1,agentId:e?.templateConfig?.agentId??void 0}};return s.doc.transact(()=>{c.pages[o.id]=o,c.pageIds.splice(t??c.pageIds.length,0,o.id)}),o},addRoute:(e,t)=>{const r=e?.id??x.nextId(),o={...e,id:r,createdAt:e?.createdAt??new Date().toISOString(),updatedAt:e?.updatedAt??new Date().toISOString(),publishedAt:new Date(0).toISOString(),path:e?.path??`/${r}`,handler:e?.handler??"Pages Kit",isPublic:e?.isPublic??!0,params:e?.params??[],enabledGenerate:e?.enabledGenerate??!1,displayTemplateId:e?.displayTemplateId??void 0,dataSource:e?.dataSource??{}};return s.doc.transact(()=>{c.routes??={},c.routeIds??=[],c.routes[o.id]=o,c.routeIds.splice(t??c.routeIds.length,0,o.id)}),o},deleteRoute:e=>{if(!e)return;const t=c.routeIds?.indexOf(e);t!==void 0&&t!==-1&&s.doc.transact(()=>{c.routeIds?.splice(t,1),delete c.routes?.[e]})},deletePage:e=>{const t=c.pageIds.indexOf(e);t!==-1&&s.doc.transact(()=>{c.pageIds.splice(t,1),delete c.pages[e]})},movePage:(e,t)=>{const{pageIds:r}=c,o=r.indexOf(e);o>=0&&r.splice(t,0,...r.splice(o,1))},addSection:(e,t,r,o)=>{const i=c.pages[e];if(!i)throw new Error(`Page ${e} is not exists`);const n={...t,id:t.id??x.nextId(),isTemplateSection:t.isTemplateSection??!0,llmConfig:t.llmConfig??{}},a=R.default(n.locales);return delete n.locales,s.doc.transact(()=>{if(o&&o.component==="layout-block"){const d=p.currentPageModel?.getComponentById(o.id);d&&(d.model.sections??={},d.model.sections[n.id]=n,d.model.sectionIds??=[],d.model.sectionIds.push(n.id))}else i.sections[n.id]=n,i.sectionIds.splice(r??i.sectionIds.length,0,n.id);a&&(i.dataSource??={},i.dataSource[n.id]=a)}),n},deleteSection:(e,t)=>{const r=c.pages[e];if(!r)throw new Error(`Page ${e} is not exists`);s.doc.transact(()=>{const o=[],i=p.currentPageModel?.getComponentById(t),n=i?.parent;if(i&&(o.push(i.model.id,...i.all().map(a=>a.model.id)),n?.model.component==="layout-block")){const a=n.model.sectionIds?.indexOf(t);a!==void 0&&a!==-1&&(n.model.sectionIds?.splice(a,1),delete n.model.sections?.[t]),n.model.config?.gridSettings&&Object.keys(n.model.config.gridSettings).forEach(d=>{try{delete n.model.config.gridSettings[d]?.[t]}catch{}}),n.model.config?.backgroundSectionId===t&&(n.model.config.backgroundSectionId=void 0)}o.forEach(a=>{const d=r.sectionIds.indexOf(a);d!==-1&&r.sectionIds.splice(d,1),r.sections[a]&&delete r.sections[a],r.dataSource?.[a]&&delete r.dataSource?.[a]})})},lockSection:(e,t)=>{if(!c.pages[e])throw new Error(`Page ${e} is not exists`);const o=p.currentPageModel?.getComponentById(t)?.model;o&&(o.locked=!o.locked)},toggleSectionVisibility:(e,t,r)=>{if(!c.pages[e])throw new Error(`Page ${e} is not exists`);const i=p.currentPageModel?.getComponentById(t)?.model;i&&(i.visibility=r)},moveSection:(e,t,r,o)=>{if(!c.pages[e])throw new Error(`Page ${e} is not exists`);if(o&&o!==t){const n=p.currentPageModel?.getComponentById(t),a=p.currentPageModel?.getComponentById(o),d=n?.parent,g=a?.parent;g&&d&&g?.model?.id===d?.model?.id?s.doc.transact(()=>{d.model.sectionIds.splice(n.getIndex(),1),d.model.sectionIds.splice(a.getIndex(),0,t)}):g&&d&&g?.model?.id!==d?.model?.id&&t!==o&&!n?.model?.sectionIds?.includes(o)&&s.doc.transact(()=>{g.model.sections[t]=JSON.parse(JSON.stringify(n.model)),g.model.sectionIds.splice(a.getIndex(),0,t),d.model.sectionIds.splice(n.getIndex(),1),delete d.model.sections[t]})}},copySection:(e,t)=>{if(!c.pages[e])throw new Error(`Page ${e} is not exists`);const o=p.currentPageModel?.getComponentById(t);if(!o?.model)throw new Error(`Section ${t} is not exists`);const i=JSON.parse(JSON.stringify(o.model)),n=ce(i),a=n.id,d=o?.parent;return d&&(d.model.sections[a]=n,d.model.sectionIds.push(a),m.setCurrentSectionId(e,a),p.currentPage?.dataSource?.[t]&&(p.currentPage.dataSource[a]=JSON.parse(JSON.stringify(p.currentPage.dataSource[t])))),n},addDataSource:e=>{const t=e.id??x.nextId(),r={...e??{},id:t,createdAt:new Date().toISOString()};return s.doc.transact(()=>{c.dataSourceIds??=[],c.dataSources??={},c.dataSourceIds.push(t),c.dataSources[t]=r}),c.dataSources[t]},deleteDataSource:e=>{const t=c.dataSourceIds.indexOf(e);t!==-1&&s.doc.transact(()=>{c.dataSourceIds.splice(t,1),delete c.dataSources[e]})}}),[c,s.doc,p]);return{...s,state:c,actions:M,localActions:m,...p}},O=()=>{const{projectId:s}=T.useParams();return s??b.getProjectIdFromPathnameOrWindow()??""};function ce(s){const c=JSON.parse(JSON.stringify(s)),P=x.nextId();return{...c,id:P}}exports.StoreProvider=re;exports.useProjectId=O;exports.useStore=ne;
|
package/lib/cjs/home.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";require("@arcblock/ux/lib/Theme");require("@blocklet/ui-react/lib/Header");require("@mui/material");require("react");require("react-router-dom");const e=require("./chunks/home-DUjl5PbP.js");require("react/jsx-runtime");module.exports=e.d;
|
package/lib/cjs/project-html.js
CHANGED
|
@@ -1,23 +1,30 @@
|
|
|
1
|
-
"use strict";const
|
|
2
|
-
${
|
|
1
|
+
"use strict";var B=Object.create;var $=Object.defineProperty;var N=Object.getOwnPropertyDescriptor;var U=Object.getOwnPropertyNames;var L=Object.getPrototypeOf,O=Object.prototype.hasOwnProperty;var F=(t,e,n,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of U(e))!O.call(t,o)&&o!==n&&$(t,o,{get:()=>e[o],enumerable:!(s=N(e,o))||s.enumerable});return t};var R=(t,e,n)=>(n=t!=null?B(L(t)):{},F(e||!t||!t.__esModule?$(n,"default",{value:t,enumerable:!0}):n,t));const z=require("@arcblock/did-auth-storage-nedb"),x=require("@blocklet/sdk/lib/config"),G=require("@blocklet/sdk/lib/service/auth"),J=require("@blocklet/sdk/lib/wallet"),Y=require("@blocklet/sdk/lib/wallet-authenticator"),Q=require("@blocklet/sdk/lib/wallet-handler"),I=require("path"),b=require("./chunks/site-state-DDXqWF74.js"),V=require("crypto"),X=require("@arcblock/crawler-middleware"),Z=require("@blocklet/pages-kit/types"),ee=require("@blocklet/pages-kit/utils/common"),j=require("@blocklet/pages-kit/utils/preload"),te=require("@blocklet/sdk/lib/component"),ne=require("express"),E=require("fs"),oe=require("lodash/get"),ae=require("mustache"),A=require("ufo"),i=t=>t&&t.__esModule?t:{default:t},se=i(z),r=i(x),re=i(G),ce=i(J),le=i(Y),ie=i(Q),de=i(I),ue=i(oe),pe=i(ae),he=(t={})=>{const e={data:new Map,timers:new Map,set:(n,s,o=t.ttl||36e5)=>{t.max&&e.data.size>=t.max&&e.delete(e.data.keys().next().value),e.timers.has(n)&&clearTimeout(e.timers.get(n)),e.timers.set(n,setTimeout(()=>e.delete(n),o)),e.data.set(n,s)},get:n=>e.data.get(n),has:n=>e.data.has(n),delete:n=>(e.timers.has(n)&&clearTimeout(e.timers.get(n)),e.timers.delete(n),e.data.delete(n)),clear:()=>{e.data.clear();for(const n of e.timers.values())clearTimeout(n);e.timers.clear()}};return e},P=he({max:1,ttl:1e3*30});ce.default();const fe=new le.default;new ie.default({authenticator:fe,tokenStorage:new se.default({dbPath:de.default.join(r.default.env.dataDir,"auth.db")})});const me=new re.default,ge=async()=>{try{const t=P.get("blockletInfo");if(t)return t;const{blocklet:e}=await me.getBlocklet();return P.set("blockletInfo",e),e}catch{return null}},_e=async()=>await import("cheerio"),C={};function ye(t,e){const n=JSON.stringify([t,e]);return V.createHash("md5").update(n).digest("hex")}async function we(t,e){{const s=(await _e()).load(t);return e.forEach(o=>{s(o.selector.cheerio).replaceWith(o.value)}),s.html()}}async function ve(t,e){if(!e||e.length===0)return t;const n=ye(t,e);return C[n]??=we(t,e).finally(()=>{setTimeout(()=>{delete C[n]},2*1e3)}),C[n]}function Se(t){return t.match(/<body[^>]*>(.*?)<\/body>/s)?.[1]||""}const be=["/assets/"];function ke({app:t,viteDevServer:e,state:n}){let s;if(e){const a=E.readFileSync(I.resolve(process.cwd(),"./index.html"),"utf-8");t.use(async(m,v,k)=>{const q=m.originalUrl;s=await e.transformIndexHtml(q,a),k()})}else s=E.readFileSync(I.resolve(process.env.BLOCKLET_APP_DIR,"dist/index.html"),"utf-8");const o=ne.Router();o.use((a,m,v)=>{if(a.headers["x-unique-record"]==="dial_http"){b.logger.info("[html] dial http request, return 200 status code"),m.status(200).send("ok");return}v()}),r.default.env.preferences.snapkitEnabled&&r.default.env.preferences.snapkitEndpoint&&r.default.env.SNAP_KIT_ACCESS_KEY&&o.use(X.createSnapshotMiddleware({endpoint:r.default.env.preferences.snapkitEndpoint,accessKey:r.default.env.SNAP_KIT_ACCESS_KEY,cacheMax:r.default.env.preferences.snapkitCacheSize||100})),o.get("/:path(*)?",async(a,m,v)=>{if(be.some(c=>a.path?.startsWith(c))){v();return}const k=performance.now(),q=()=>Math.round(performance.now()-k),M="production";let g,S,_=s;if(a.path.startsWith("/pages")){const c=a.params.lang,y=a.cookies.nf_lang,w=new Set([...r.default.env.languages.map(f=>f.code)]);let h=(c&&w.has(c)?c:void 0)||(w.has(y)?y:void 0)||[...w][0];if((!h||!n.supportedLocales?.find(f=>f.locale===h))&&(h=n.supportedLocales?.[0]?.locale||""),h){const f=[];Object.values(n.pages).forEach(l=>{const H=Object.values(l?.sections??{}).filter(u=>u.component==="custom-component"&&u.config?.componentId).map(u=>({id:u.id,componentId:u.config.componentId,useCache:u.config.useCache,cacheDuration:u.config.cacheDuration,properties:l?.dataSource?.[u.id]?.[h]}));f.push(...H)});const K=new Promise(l=>{setTimeout(()=>{l({})},30*1e3)});try{await Promise.race([K,b.getPreloadComponents({mode:M,req:a,state:n,locale:h,instances:f,module:Z.PreloadComponentScriptModule.UMD_FN}).then(l=>{l&&(S=j.injectPreloadComponents(l))})])}catch(l){b.logger.warn("getPreloadComponents timeout in promise race, skip inject html elements",l)}}}try{const c=g?.title||r.default.env.appName,y=g?.description||r.default.env.appDescription,w=A.withQuery(A.joinURL(r.default.env.appUrl,"/.well-known/service/blocklet/og.png"),{title:c,description:y});_=pe.default.render(s,{ogTitle:c,ogDescription:y,ogImage:qe(g?.image)||w,pagesPublishedAt:n?.config.publishedAt||new Date().getTime()})}catch{}const p=n?.config.fontFamily,W=a.query.mode==="draft"||a.url.includes("preview")||a.path?.startsWith("/admin");let d=g?.backgroundColor;if(d&&ee.isMuiColorKey(d)){const c=await ge();d=ue.default(c,`settings.theme.light.palette.${d}`,d)}const T=x.getBlockletJs(),D=[{selector:{cheerio:"#injected-head-elements",pattern:/<script[^>]*id=["']injected-head-elements["'][^>]*><\/script>/gis},value:`
|
|
2
|
+
${d?`<meta name="theme-color" content="${d}" /><style>html,body,#app {background-color: ${d};}</style>`:""}
|
|
3
3
|
${p?.title?`<link rel="preload" as="style" href="https://fonts.googleapis.com/css?family=${p.title}&display=swap">`:""}
|
|
4
4
|
${p?.description&&p?.description!==p?.title?`<link rel="preload" as="style" href="https://fonts.googleapis.com/css?family=${p.description}&display=swap">`:""}
|
|
5
|
+
|
|
6
|
+
|
|
5
7
|
<script>
|
|
6
8
|
|
|
7
9
|
window.__PAGE_STATE__ = ${j.safeJSONStringify(n||null)};
|
|
10
|
+
|
|
11
|
+
<\/script>
|
|
8
12
|
|
|
13
|
+
|
|
14
|
+
<script>
|
|
9
15
|
document.querySelectorAll('link[rel="preload"][as="style"]').forEach(function (link) {
|
|
10
16
|
const l = document.createElement('link');
|
|
11
17
|
l.rel = 'stylesheet';
|
|
12
18
|
l.href = link.href;
|
|
13
19
|
document.head.appendChild(l);
|
|
14
20
|
});
|
|
21
|
+
|
|
15
22
|
<\/script>
|
|
16
23
|
|
|
17
|
-
${
|
|
24
|
+
${W?`<script src="https://cdn.tailwindcss.com"><\/script>
|
|
18
25
|
<script>
|
|
19
26
|
window.tailwind.config = {
|
|
20
27
|
darkMode: "class",
|
|
21
28
|
};
|
|
22
29
|
<\/script>`:""}
|
|
23
|
-
|
|
30
|
+
`},T&&{selector:{cheerio:'script[src="__blocklet__.js"]',pattern:/<script[^>]*src=["']__blocklet__\.js["'][^>]*><\/script>/gis},value:`<script>${T}<\/script>`},S?.html&&{selector:{cheerio:"#injected-html-elements",pattern:/<script[^>]*id=["']injected-html-elements["'][^>]*><\/script>/gis},value:S.html},a.cachedHtml&&{selector:{cheerio:"body",pattern:/(<body[^>]*>).*?(<\/body>)/gis},value:`<body>${Se(a.cachedHtml)}</body>`}].filter(Boolean);_=await ve(_,D),m.send(_),b.logger.info(`[html] render: ${a.path}, ${q()}ms`),_=null,g=null,S=null}),t.use(o)}function qe(t){const e=te.getComponentMountPoint("image-bin");return e&&t&&!/^(https?:\/\/|\/)/.test(t)?r.default.env.appUrl+A.joinURL(e,"uploads",t):t}module.exports=ke;
|
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-DDXqWF74.js"),L=require("async_hooks"),U=require("express"),F=require("fs"),W=require("joi"),$=require("lodash/groupBy"),z=require("lodash/sortBy"),T=require("path"),G=require("@blocklet/sdk/lib/middlewares/auth"),H=require("@blocklet/sdk/lib/component"),m=e=>e&&e.__esModule?e:{default:e},d=m(F),f=m(W),O=m($),J=m(z),b=m(T),q=m(G);new L.AsyncLocalStorage;const K=async(e,t,r)=>{try{const{projectId:n}=e.params;if(!n)return r();const s=await c.Project.findByPk(n);if(!s)return t?.status(404).json({error:"Project not found"});const o=e.user?.did,a=e.user?.role||"UNKNOWN_ROLE";if(!o)return t?.status(401).json({error:"Authentication required"});if(c.isMultiTenant()){const g=s.createdBy===o,y=c.getMultiTenantAllProjectAccessPassports()?.includes?.(a);if(!g&&!y)return t?.status(403).json({error:"No permission to access this project in multi-tenant mode"})}else if(!["owner","admin","pagesEditor"].includes(a))return t?.status(403).json({error:"No permission to access this project in single-tenant mode"});e.project=s,e.projectId=n,r()}catch(n){c.logger.error("Project middleware error:",n),t?.status(400).json({error:"Internal server error"})}};function x(e,t){return new Promise((r,n)=>{const s=d.default.createReadStream(e),o=d.default.createWriteStream(t);s.on("error",n),o.on("error",n),o.on("finish",r),s.pipe(o)})}async function B(e,t){await d.default.promises.mkdir(t,{recursive:!0});const r=await d.default.promises.readdir(e,{withFileTypes:!0});for(const n of r){const s=b.default.join(e,n.name),o=b.default.join(t,n.name);n.isDirectory()?await B(s,o):await x(s,o)}}async function Y(e,t){(await d.default.promises.stat(e)).isDirectory()?await B(e,t):await x(e,t)}const k=(e,t,r)=>c.isMultiTenant()?q.default()(e,t,r):q.default({roles:["owner","admin","pagesEditor"]})(e,t,r),Q=(e,t)=>{const r=H.getResourceExportDir({projectId:e,releaseId:t});return T.join(r,c.COMPONENT_DID,c.RESOURCE_TYPE)},h=U.Router(),N="@page",R="@component",j=":",P="ALL",C="@project",v=({pageId:e,projectId:t})=>[N,t,e].join(j),V=e=>{const[t,r,n]=e.split(j);if(t===N)return{pageId:n,projectId:r}},A=({componentId:e,projectId:t})=>[R,t,e].join(j),X=e=>{const[t,r,n]=e.split(j);if(t===R)return{componentId:n,projectId:r}},Z=e=>[C,e].join(j),ee=e=>{const[t,r]=e.split(j);if(t===C)return r},te=e=>{try{return JSON.parse(e)}catch{}return{}};async function D(e){const t=await c.SiteState.getStateByProjectId(e,"production"),r=await c.Project.findByPk(e),n=t.pageIds.map(o=>{const a=t.pages[o];if(a)return{id:v({pageId:o,projectId:e}),name:a.slug}}).filter(Boolean),s=J.default(Object.values(t.components),o=>o.index).map(({data:o})=>({id:A({componentId:o.id,projectId:e}),name:o.name||o.id}));return{id:Z(e),name:r?.name||"Unnamed Project",children:[{id:v({pageId:P,projectId:e}),name:"Pages",children:n},{id:A({componentId:P,projectId:e}),name:"Components",children:s}]}}h.get("/resources",k,async(e,t)=>{const{projectId:r}=te(e.query.resourcesParams);if(r){e.params={...e.params,projectId:r},await K(e,t,()=>{});const o=await D(r);t.json({resources:[o]});return}const n=await c.Project.findAll({where:{}}),s=await Promise.all(n.map(o=>D(o.id)));t.json({resources:s})});const re=f.default.object({projectId:f.default.string().required().min(1),releaseId:f.default.string().allow(""),resources:f.default.array().items(f.default.string()).required(),locale:f.default.string().allow("")});h.post("/resources",k,async(e,t)=>{const{resources:r,projectId:n,releaseId:s}=await re.validateAsync(e.body),o="production",a=[],g=[];for(const i of r){if(ee(i))continue;const{pageId:u,projectId:w}=V(i)||{};if(u)u===P||u&&w&&a.push({pageId:u,projectId:w});else{const{componentId:I,projectId:p}=X(i)||{};I===P||I&&p&&g.push({componentId:I,projectId:p})}}const y=O.default(a,"projectId"),E=O.default(g,"projectId"),M=new Set([...Object.keys(y),...Object.keys(E)]),S=Q(n,s);d.default.rmSync(S,{recursive:!0,force:!0}),d.default.mkdirSync(S,{recursive:!0});for(const i of M){const u=await c.SiteState.getStateByProjectId(i,o),w=y[i],I=E[i],p=w?.map(l=>l.pageId),_=I?.map(l=>l.componentId);if(p?.length||_?.length){const l=await c.toPackage(u,{exportAssets:!0,pageIds:p,componentIds:_});await Y(l,S),d.default.rmSync(l,{recursive:!0,force:!0})}c.logger.info(`Exported resources for project ${i}`,{pageIds:p,componentIds:_})}t.json({})});h.get("/all-resources",k,async(e,t)=>{const{states:r}=await c.getResourceStates(),n=r?.map(s=>{const o={blockletId:s.blockletId,blockletTitle:s.blockletTitle,components:{}};if(s.state.components&&(o.components=s.state.components),Object.keys(o.components).length!==0)return o}).filter(Boolean);t.json(n)});var oe=h;module.exports=oe;
|