@blocklet/pages-kit-inner-components 0.4.37 → 0.4.39

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.
@@ -1,9 +1,9 @@
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"),be=require("lru-cache"),Ue=require("node-fetch"),x=require("ufo"),ie=require("crypto"),rt=require("@blocklet/logger"),at=require("@blocklet/pages-kit/utils/builtin"),fe=require("@blocklet/pages-kit/utils/typescript/builtin-module-transformer"),Te=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"),me=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"),le=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),D=L(ut),pe=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 ce extends C.Model{}ce.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(ce,{foreignKey:"projectId",as:"components"});const Mt=async(t,{componentId:n})=>{const e=`@tailwind components;
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"),be=require("lru-cache"),Ue=require("node-fetch"),D=require("ufo"),ie=require("crypto"),rt=require("@blocklet/logger"),at=require("@blocklet/pages-kit/utils/builtin"),fe=require("@blocklet/pages-kit/utils/typescript/builtin-module-transformer"),Te=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"),me=require("glob"),ft=require("lib0/decoding"),mt=require("lib0/encoding"),N=require("lodash"),gt=require("nanoid"),ht=require("p-limit"),h=require("path"),yt=require("stream/promises"),St=require("tar"),wt=require("wait-on"),G=require("y-protocols/awareness"),le=require("y-protocols/sync"),Et=require("yaml"),bt=require("yjs"),Tt=require("lodash/isNil"),I=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),Pt=L(rt),Ct=L(it),It=X(ct),jt=L(lt),At=L(pt),x=L(ut),pe=X(ft),_=X(mt),_t=L(ht),vt=L(h),xt=L(wt),K=X(Et),V=X(bt),Dt=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"),xe=w.default,Nt=()=>w.default.env.tenantMode==="multiple",Lt=()=>{var t;return(Dt.default(xe.env.preferences.multiTenantAllProjectAccessPassports)?[]:(t=xe.env.preferences.multiTenantAllProjectAccessPassports)==null?void 0:t.split(","))||[]},C=Pt.default("pages-kit"),Ut=I.DataTypes.sqlite.DATE.parse;I.DataTypes.sqlite.DATE.parse=(t,n)=>typeof t=="number"?new Date(t):Ut(t,n);const Z=new I.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 ce extends I.Model{}ce.init({id:{type:I.DataTypes.UUID,allowNull:!1,primaryKey:!0,defaultValue:I.DataTypes.UUIDV4},projectId:{type:I.DataTypes.UUID,allowNull:!1},componentId:{type:I.DataTypes.STRING,allowNull:!1}},{sequelize:Z,tableName:"ProjectComponents",timestamps:!1});class $ extends I.Model{static async getProjectByIdOrSlug(n){return $.findOne({where:{[I.Op.or]:[{id:n},{slug:n}]}})}}$.init({id:{type:I.DataTypes.UUID,defaultValue:I.DataTypes.UUIDV4,primaryKey:!0},name:{type:I.DataTypes.STRING,allowNull:!1},description:I.DataTypes.TEXT,createdAt:I.DataTypes.DATE,updatedAt:I.DataTypes.DATE,createdBy:{type:I.DataTypes.STRING,allowNull:!1},updatedBy:{type:I.DataTypes.STRING,allowNull:!1},slug:I.DataTypes.STRING,icon:I.DataTypes.STRING,pinnedAt:I.DataTypes.DATE,useAllResources:I.DataTypes.BOOLEAN,relatedBlocklets:{type:I.DataTypes.JSON,allowNull:!1,defaultValue:{},get(){return this.getDataValue("relatedBlocklets")||{}},set(t){this.setDataValue("relatedBlocklets",JSON.stringify(t||{}))}}},{sequelize:Z,paranoid:!0});$.hasMany(ce,{foreignKey:"projectId",as:"components"});const Mt=async(t,{componentId:n})=>{const e=`@tailwind components;
2
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)};
3
+ `,s=`.CustomComponent_${n}`;return(await jt.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
4
 
5
5
  ${t}
6
- `},xe=B.memoize(async(t,n)=>{let e=D.default.transpileModule(t,{compilerOptions:{jsx:D.default.JsxEmit.React,target:D.default.ScriptTarget.ES2016,module:D.default.ModuleKind.ESNext},transformers:{before:[fe.createBuiltinModuleTransformer(D.default)]}}).outputText;if(n.tailwind&&(e=await Ft(e,{componentId:n.componentId})),n.module===se.PreloadComponentScriptModule.ESM)return e;const s=D.default.transpileModule(e,{compilerOptions:{jsx:D.default.JsxEmit.React,target:D.default.ScriptTarget.ES2016,module:D.default.ModuleKind.CommonJS,moduleResolution:D.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"}:fe.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(fe.isRelativeModule(p.path)){c||(c=await _e({ensureLoaded:!1}));const m=p.path.split("/").pop();return(u=c==null?void 0:c.chunks)!=null&&u[m]?{contents:E.readFileSync(c.chunks[m],"utf-8"),loader:"js"}:{contents:"",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 D.default.transpileModule(o,{compilerOptions:{module:D.default.ModuleKind.ESNext,target:D.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.
6
+ `},De=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:[fe.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"}:fe.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(fe.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])try{const g=E.readFileSync(c.chunks[f],"utf-8");return C.info("get chunk from local file system",f),{contents:g,loader:"tsx"}}catch{}return{contents:"",loader:"tsx"}}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
7
  var ${t} = ${e?"async":""} function () {
8
8
 
9
9
  const exports = {};
@@ -29,7 +29,7 @@ var ${t} = ${e?"async":""} function () {
29
29
 
30
30
  return exports;
31
31
  };
32
- `},z=new be.LRUCache({max:100}),Fe=60*60,ge=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 S=Be({mode:t,instanceId:h.id,componentId:h.componentId,locale:s});if(t!=="draft"&&h.useCache&&z.has(S))return I.info(`get preload component from cache: ${S}`),z.get(S);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): ${S}`),z.set(S,F,{ttl:R*1e3})}return F}catch(S){return I.error("get preload component error",{instanceId:h.id,componentId:h.componentId},{error:S}),null}}))).filter(h=>!!h),c=Object.values(i.reduce((h,S)=>({...h,...S.preload.components}),{}));async function p(){const h=await Promise.all(c.map(async S=>{const P=oe.componentUMDName({componentId:S.component.id}),v=r===se.PreloadComponentScriptModule.ESM?{module:r,script:await xe(S.script,{componentId:S.component.id,module:r,tailwind:t!=="draft"})}:{module:r,script:await xe(S.script,{componentId:S.component.id,module:r,moduleName:P,tailwind:t!=="draft"}),moduleName:P};return[S.component.id,{component:S.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 m=await Ge({req:t,depth:n+1,state:e,componentId:u.componentId,locale:o,defaultLocale:r,properties:u.properties});m&&(Object.assign(c.components,m.components),Object.assign(c.props,{[p]:{type:oe.RenderNestedComponent,componentId:u.componentId,props:m.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"))},ge*1e3)});return await Promise.race([r,B.Sandbox.callFunction({code:`${o}
32
+ `},z=new be.LRUCache({max:100}),Fe=60*60,ge=60;function qe(t){C.info("clear preload components cache",{cacheKey:t}),z.delete(t)}function $e(t){for(const n of z.keys())n.includes(t)&&(C.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 g=>{try{const S=Be({mode:t,instanceId:g.id,componentId:g.componentId,locale:s});if(t!=="draft"&&g.useCache&&z.has(S))return C.info(`get preload component from cache: ${S}`),z.get(S);const j=W({state:e,componentId:g.componentId});if(!j)return null;const v=await Ve({req:n,state:e,componentId:j.id,locale:s,defaultLocale:a,properties:g.properties});if(!v)return null;const F={instanceId:g.id,preload:v};if(t!=="draft"&&g.useCache){let R=Fe;g.cacheDuration&&(R=g.cacheDuration),C.info(`set preload component to cache(${R}s): ${S}`),z.set(S,F,{ttl:R*1e3})}return F}catch(S){return C.error("get preload component error",{instanceId:g.id,componentId:g.componentId},{error:S}),null}}))).filter(g=>!!g),c=Object.values(i.reduce((g,S)=>({...g,...S.preload.components}),{}));async function p(){const g=await Promise.all(c.map(async S=>{const j=oe.componentUMDName({componentId:S.component.id}),v=r===se.PreloadComponentScriptModule.ESM?{module:r,script:await De(S.script,{componentId:S.component.id,module:r,tailwind:t!=="draft"})}:{module:r,script:await De(S.script,{componentId:S.component.id,module:r,moduleName:j,tailwind:t!=="draft"}),moduleName:j};return[S.component.id,{component:S.component,script:v}]}));return Object.fromEntries(g)}const u=await p();return{config:{defaultLocale:a,supportedLocales:l},components:u,instances:i.map(g=>({id:g.instanceId,componentId:g.preload.component.id,locales:{[g.preload.locale]:{props:g.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 He({req:t,state:n,componentId:e,locale:i,defaultLocale:o,properties:r});return c?{component:a,...c}:null}const Vt=20;async function He({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=Ht({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){C.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 He({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 Ht({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 Gt({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}){if(!(n!=null&&n.includes("getServerSideProps")))return null;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"))},ge*1e3)});return await Promise.race([r,B.Sandbox.callFunction({code:`${o}
33
33
 
34
34
  export async function getServerSidePropsWrapper(props) {
35
35
  const { location, fetch } = props;
@@ -48,10 +48,10 @@ export async function getServerSidePropsWrapper(props) {
48
48
  }
49
49
  }`,filename:`${t.name||t.id}.js`,moduleLoader:a=>{if(a==="@blocklet/pages-kit/builtin/utils")return`const { joinURL, withQuery, getQuery, getComponentMountPoint } = globalThis
50
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:x.joinURL,withQuery:x.withQuery,getQuery:x.getQuery},functionName:"getServerSidePropsWrapper",args:[{location:{href:x.joinURL(x.withHttps(s.hostname),s.originalUrl)},fetch:(a,{...i}={})=>{const c=typeof a=="string"&&a.startsWith("/")?x.joinURL(w.default.env.appUrl,a):a;if(typeof c=="string"&&x.parseURL(c).host===x.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:ge*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:`
51
+ `;if(a==="@blocklet/pages-kit/builtin/dayjs")return B.BuiltinModules.dayjs},global:{console:{log:(...a)=>{C.info(...a)},warn:(...a)=>{C.warn(...a)},error:(...a)=>{C.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:ge*1e3}).then(p=>({ok:p.ok,status:p.status,statusText:p.statusText,headers:Object.fromEntries(p.headers.entries()),json:()=>p.json()}))},props:e}]})])}const Ge=B.memoize(async(t,n,e)=>{if(!(t!=null&&t.includes(n)))return null;const s=await Me(t,n);if(s)try{return await B.Sandbox.callFunction({code:`
52
52
  ${s}
53
53
 
54
54
  export function get${n}SchemaWrapper() {
55
55
  return ${n};
56
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",he="page",ye="trigger-reload-project-resource",Oe=Kt,zt="z2qa7rr3eUyVnWp2PCxEVARuUfLFh6cE5V2xV",{uploadToMediaKit:Yt}=require("@blocklet/uploader-server"),Se=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,ue=1,Xt=0,Zt=1,we=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=we.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,ue),_.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),le.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(...we.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 Ee(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 m=await Ee(e,s);p(m)}catch(m){u(m)}})})});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),le.writeSyncStep1(r,this),this.send(e,_.toUint8Array(r));const l=this.awareness.getStates();if(l.size>0){const a=_.createEncoder();_.writeVarUint(a,ue),_.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=pe.createDecoder(s),l=pe.readVarUint(r);switch(l){case te:_.writeVarUint(o,te),le.readSyncMessage(r,o,this,null),_.length(o)>1&&(this.ensureDataStructure(),this.send(e,_.toUint8Array(o)));break;case ue:{H.applyAwarenessUpdate(this.awareness,pe.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 me.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=we.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,m,h,S;const{pages:i,components:c}=N.pick(a,"pages","components");let p=c;if((m=(u=this.states[e])==null?void 0:u.resources)!=null&&m.components)p={...(S=(h=this.states[e])==null?void 0:h.resources)==null?void 0:S.components};else{const P=g.basename(this.options.path),v=await $.findByPk(P);if(v!=null&&v.useAllResources)p=c;else{const R=(await ce.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,m=l.slug||r,h={projectId:r,projectSlug:m,pageSlug:u,pageId:c,defaultLocale:i==null?void 0:i[0],locales:i,publishedAt:a.config.publishedAt,isPublic:p.isPublic,isTemplate:p.isTemplate};m&&(o[x.joinURL("/",m,u)]={...h,shouldRedirect:!0,mainPage:!0}),o[x.joinURL("/",r,u)]={...h,shouldRedirect:!0,mainPage:!0};for(const S of i){const P={...h,locale:S};o[x.joinURL("/",S,r,u)]=P,m&&(o[x.joinURL("/",S,m,u)]=P)}}}return o}};A(q,"INSTANCE_TTL",30*60*1e3),A(q,"sharedInstances",new be.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 Te.call({name:Oe,path:x.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 de(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 be.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 m=g.basename(u),h=e.getFilePath(u,i),S=h?`${h}:${m}`:m,P=Re.get(S);if(P){Y.test(c)||N.set(t,i,P);return}const v=await ns(h,m,n);v&&(Y.test(c)||N.set(t,i,v),Re.set(S,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,y,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=(f,d)=>{var b;return{id:f.id,name:f.name,isTemplateSection:f.isTemplateSection??!1,templateDescription:f.templateDescription,component:f.component,config:f.config,visibility:f.visibility,properties:((b=f.locales)==null?void 0:b[d])??{}}},c=(f,d)=>{var b;return{id:f.id,createdAt:f.createdAt,updatedAt:f.updatedAt,publishedAt:f.publishedAt,isPublic:f.isPublic??!0,isTemplate:f.isTemplate??!1,meta:((b=f.locales)==null?void 0:b[d])??{},sections:M(f.sectionIds.map(k=>{const U=f.sections[k];return U&&i(U,d)}))}},p=M(t.supportedLocales.map(f=>f.locale).flatMap(f=>l.map(d=>{const b=t.pages[d];return b&&{locale:f,slug:b.slug,page:c(b,f)}}))),u=Ke(),m=g.join(u,"pages");E.mkdirSync(m,{recursive:!0});const h=g.join(u,"components");E.mkdirSync(h,{recursive:!0});for(const{locale:f,slug:d,page:b}of p)await de(b,m,{getFilename:()=>`${Je(d)||"index"}.${f}.yml`,exportAssets:n});for(const f of a){const d=(F=t.components[f])==null?void 0:F.data;d&&await de(d,h,{getFilename:b=>`${b.name||"unnamed"}.${b.id}.yml`,exportAssets:n})}const S=g.join(u,".blocklet/pages/pages.config.yml");E.mkdirSync(g.dirname(S),{recursive:!0});const P={pages:M(l.map(f=>{const d=t.pages[f];return d&&{id:f,slug:d.slug}})),components:M(a.map(f=>{var b;const d=(b=t.components[f])==null?void 0:b.data;return d&&{id:f,name:d.name}})),...r?{resources:{components:M(Object.keys(((R=t.resources)==null?void 0:R.components)||{}).map(f=>{var d,b,k,U;return{id:f,name:(U=(k=(b=(d=t.resources)==null?void 0:d.components)==null?void 0:b[f])==null?void 0:k.component)==null?void 0:U.name}}))}}:{},supportedLocales:t.supportedLocales,config:t.config};E.writeFileSync(S,K.stringify(P));const v=g.join(u,"config.source.json");if(o&&E.writeFileSync(v,JSON.stringify(o)),r){const f=g.join(u,"resources"),d=g.join(f,"components");E.mkdirSync(d,{recursive:!0});for(const b of Object.keys(((y=t==null?void 0:t.resources)==null?void 0:y.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 de(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=me.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 m=K.parse(E.readFileSync(i).toString()),h=(y,T,O)=>{let j=g.join(y,`${T}${O?`.${O}`:""}.yml`);return(!E.existsSync(j)||!E.lstatSync(j).isFile())&&(j=g.join(y,T,`index${O?`.${O}`:""}.yml`),!E.existsSync(j)||!E.lstatSync(j))?null:K.parse(E.readFileSync(j).toString())},S=(y,T)=>{try{const O=me.globSync(`*.${T}.yml`,{cwd:y,absolute:!0})[0];return O?K.parse(E.readFileSync(O).toString()):null}catch(O){I.error("parse component error",O)}return null},P=M(m.pages.map(({slug:y})=>{var f;const T=M(m.supportedLocales.map(({locale:d})=>{const b=c?h(c,Je(y),d):void 0;if(b)return{locale:d,page:b};const k=c?h(c,y,d):void 0;return k&&{locale:d,page:k}})),O=(f=T[0])==null?void 0:f.page;if(!O)return null;const j=O.sections.map(d=>{const b=d.id||Se();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||Se(),createdAt:O.createdAt,updatedAt:O.updatedAt,publishedAt:O.publishedAt,isPublic:O.isPublic??!0,isTemplate:O.isTemplate??!1,slug:y,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=m.components)==null?void 0:r.map(({id:y})=>S(p,y)))??[]):[];if(n){const y=(...T)=>{I.info(`[${o?g.basename(t):g.basename(g.join(t,"../../../../"))}] importAssets:`,...T)};try{y("wait image-bin api ready"),await Dt.default({resources:[`${Te.getComponentWebEndpoint(kt)}/api/sdk/uploads`],validateStatus:j=>j>=200&&j<=500}),y("image-bin api is ready");const T={},O={};y("start to upload assets"),await Promise.allSettled([Ne(v,T,{getFilePath:j=>p&&g.join(p,j),onFinish:j=>{y(`upload ${j.length} component assets`)}}),Ne(P,O,{getFilePath:(j,f)=>{const d=N.get(P,f.slice(0,1));return c&&g.join(c,g.dirname(d.slug),j)},onFinish:j=>{y(`upload ${j.length} page assets`)}})]),y("upload assets done"),global.gc&&global.gc()}catch(T){y("Error during asset import:",T)}}const F={};if(e){const y=i&&g.join(g.dirname(i),"../../resources/components"),T=M(((a=(l=m.resources)==null?void 0:l.components)==null?void 0:a.map(({id:O})=>S(y,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 y=E.readdirSync(u);for(const T of y)R[T]=g.join(u,T)}return{supportedLocales:m.supportedLocales,pageIds:P.map(y=>y.id),components:Object.fromEntries(v.map((y,T)=>[y.id,{index:T,data:y}])),pages:Object.fromEntries(P.map(y=>[y.id,y])),config:m.config||{},resources:F,chunks:R}}finally{o&&s&&E.rmSync(s,{force:!0,recursive:!0})}}async function Ee(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 m=n.pageIds.indexOf(p);m!==-1&&o&&(n.pageIds.splice(m,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 m=n.pages[u.id];(!m||u.updatedAt&&u.updatedAt>m.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 m=await We(u==null?void 0:u.data);return[p,{...u,data:m}]}))),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=Te.getResources({types:[{did:Oe,type:he},{did:zt,type:he}]});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(ye,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(ye,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 ce.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(ye)}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=ge;exports.PUBLISH_MODES=ts;exports.Project=$;exports.RESOURCE_TYPE=he;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=Ee;exports.nextId=Se;exports.toPackage=Ye;exports.triggerReloadAllProjectResource=is;
57
+ `,filename:`${e}.js`,functionName:`get${n}SchemaWrapper`})}catch(o){return C.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",he="page",ye="trigger-reload-project-resource",Oe=Kt,zt="z2qa7rr3eUyVnWp2PCxEVARuUfLFh6cE5V2xV",{uploadToMediaKit:Yt}=require("@blocklet/uploader-server"),Se=gt.customAlphabet("abcdefghijklmnopqrstuvwxyz0123456789",16),Pe=/^\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,ue=1,Xt=0,Zt=1,we=w.default,J=h.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=we.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,ue),_.writeVarUint8Array(a,G.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),le.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(...we.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&&G.removeAwarenessStates(this.awareness,Array.from(s),null)}e.close()});A(this,"autoSave",N.debounce(()=>{E.mkdirSync(h.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 Ee(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 Ee(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),le.writeSyncStep1(r,this),this.send(e,_.toUint8Array(r));const l=this.awareness.getStates();if(l.size>0){const a=_.createEncoder();_.writeVarUint(a,ue),_.writeVarUint8Array(a,G.encodeAwarenessUpdate(this.awareness,Array.from(l.keys()))),this.send(e,_.toUint8Array(a))}}});A(this,"messageListener",(e,s)=>{try{const o=_.createEncoder(),r=pe.createDecoder(s),l=pe.readVarUint(r);switch(l){case te:_.writeVarUint(o,te),le.readSyncMessage(r,o,this,null),_.length(o)>1&&(this.ensureDataStructure(),this.send(e,_.toUint8Array(o)));break;case ue:{G.applyAwarenessUpdate(this.awareness,pe.readVarUint8Array(r),e);break}default:C.warn(`Unsupported messageType ${l}`)}}catch(o){C.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 G.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=h.join(J,e),o=h.join(J,`@del-${e}`);E.renameSync(s,o)}catch(s){C.error("Failed to safe delete project state dir:",s)}}static get projectIds(){return me.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:h.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 h.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=we.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,g,S;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={...(S=(g=this.states[e])==null?void 0:g.resources)==null?void 0:S.components};else{const j=h.basename(this.options.path),v=await $.findByPk(j);if(v!=null&&v.useAllResources)p=c;else{const R=(await ce.findAll({where:{projectId:j}})).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(h.dirname(r),{recursive:!0}),E.rmSync(r,{force:!0,recursive:!0}),E.renameSync(o,r),this.states[e]=s}getPublishDir(e){return h.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,g={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)]={...g,shouldRedirect:!0,mainPage:!0}),o[D.joinURL("/",r,u)]={...g,shouldRedirect:!0,mainPage:!0};for(const S of i){const j={...g,locale:S};o[D.joinURL("/",S,r,u)]=j,f&&(o[D.joinURL("/",S,f,u)]=j)}}}return o}};A(q,"INSTANCE_TTL",30*60*1e3),A(q,"sharedInstances",new be.LRUCache({max:100,ttl:q.INSTANCE_TTL,dispose:e=>{e.destroy()}}));let Q=q;function Ke(){return E.mkdtempSync(h.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=h.basename(t),s=await Te.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,h.join(n,h.basename(e)))}catch(s){C.error(`Failed to export assets: ${e}, ${s}`)}}))};function ze(t){return Pe.test(t)?[t]:Y.test(t)?(ke.lastIndex=0,Array.from(t.matchAll(ke)).map(e=>e[1]).filter(e=>!!e)):[]}async function de(t,n,e){const{getFilename:s,exportAssets:o}=e,r=h.join(n,s(t));if(E.mkdirSync(h.dirname(r),{recursive:!0}),E.writeFileSync(r,K.stringify(t)),o){const a=re(t,i=>typeof i=="string"&&(Pe.test(i)||Y.test(i))).map(i=>{const c=N.get(t,i);return ze(c)}).flat().filter(Boolean);await rs(a,h.dirname(r))}}const Re=new be.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"&&(Pe.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=h.basename(u),g=e.getFilePath(u,i),S=g?`${g}:${f}`:f,j=Re.get(S);if(j){Y.test(c)||N.set(t,i,j);return}const v=await ns(g,f,n);v&&(Y.test(c)||N.set(t,i,v),Re.set(S,v))}}catch(c){C.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,y,T,O,P;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=h.join(u,"pages");E.mkdirSync(f,{recursive:!0});const g=h.join(u,"components");E.mkdirSync(g,{recursive:!0});for(const{locale:m,slug:d,page:b}of p)await de(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 de(d,g,{getFilename:b=>`${b.name||"unnamed"}.${b.id}.yml`,exportAssets:n})}const S=h.join(u,".blocklet/pages/pages.config.yml");E.mkdirSync(h.dirname(S),{recursive:!0});const j={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(S,K.stringify(j));const v=h.join(u,"config.source.json");if(o&&E.writeFileSync(v,JSON.stringify(o)),r){const m=h.join(u,"resources"),d=h.join(m,"components");E.mkdirSync(d,{recursive:!0});for(const b of Object.keys(((y=t==null?void 0:t.resources)==null?void 0:y.components)??{})){const k=(P=(O=(T=t.resources)==null?void 0:T.components)==null?void 0:O[b])==null?void 0:P.component;k&&await de(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=me.globSync("**/.blocklet/pages/pages.config.yml",{cwd:s,absolute:!0}).at(0),c=i&&h.join(h.dirname(i),"../../pages"),p=i&&h.join(h.dirname(i),"../../components"),u=i&&h.join(h.dirname(i),"../../chunks");if(!i)return null;const f=K.parse(E.readFileSync(i).toString()),g=(y,T,O)=>{let P=h.join(y,`${T}${O?`.${O}`:""}.yml`);return(!E.existsSync(P)||!E.lstatSync(P).isFile())&&(P=h.join(y,T,`index${O?`.${O}`:""}.yml`),!E.existsSync(P)||!E.lstatSync(P))?null:K.parse(E.readFileSync(P).toString())},S=(y,T)=>{try{const O=me.globSync(`*.${T}.yml`,{cwd:y,absolute:!0})[0];return O?K.parse(E.readFileSync(O).toString()):null}catch(O){C.error("parse component error",O)}return null},j=M(f.pages.map(({slug:y})=>{var m;const T=M(f.supportedLocales.map(({locale:d})=>{const b=c?g(c,Je(y),d):void 0;if(b)return{locale:d,page:b};const k=c?g(c,y,d):void 0;return k&&{locale:d,page:k}})),O=(m=T[0])==null?void 0:m.page;if(!O)return null;const P=O.sections.map(d=>{const b=d.id||Se();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||Se(),createdAt:O.createdAt,updatedAt:O.updatedAt,publishedAt:O.publishedAt,isPublic:O.isPublic??!0,isTemplate:O.isTemplate??!1,slug:y,sections:Object.fromEntries(P.map(d=>[d.id,d])),sectionIds:P.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:y})=>S(p,y)))??[]):[];if(n){const y=(...T)=>{C.info(`[${o?h.basename(t):h.basename(h.join(t,"../../../../"))}] importAssets:`,...T)};try{y("wait image-bin api ready"),await xt.default({resources:[`${Te.getComponentWebEndpoint(kt)}/api/sdk/uploads`],validateStatus:P=>P>=200&&P<=500}),y("image-bin api is ready");const T={},O={};y("start to upload assets"),await Promise.allSettled([Ne(v,T,{getFilePath:P=>p&&h.join(p,P),onFinish:P=>{y(`upload ${P.length} component assets`)}}),Ne(j,O,{getFilePath:(P,m)=>{const d=N.get(j,m.slice(0,1));return c&&h.join(c,h.dirname(d.slug),P)},onFinish:P=>{y(`upload ${P.length} page assets`)}})]),y("upload assets done"),global.gc&&global.gc()}catch(T){y("Error during asset import:",T)}}const F={};if(e){const y=i&&h.join(h.dirname(i),"../../resources/components"),T=M(((a=(l=f.resources)==null?void 0:l.components)==null?void 0:a.map(({id:O})=>S(y,O)))??[]);T.length>0&&(F.components=Object.fromEntries(T.map((O,P)=>[O.id,{index:P,component:O}])))}const R={};if(u&&E.existsSync(u)){const y=E.readdirSync(u);for(const T of y)R[T]=h.join(u,T)}return{supportedLocales:f.supportedLocales,pageIds:j.map(y=>y.id),components:Object.fromEntries(v.map((y,T)=>[y.id,{index:T,data:y}])),pages:Object.fromEntries(j.map(y=>[y.id,y])),config:f.config||{},resources:F,chunks:R}}finally{o&&s&&E.rmSync(s,{force:!0,recursive:!0})}}async function Ee(t,n,{pages:e,pageMergeMode:s="byUpdateTime",deletePages:o=!1,publishMode:r=void 0}={}){try{r&&$e(r)}catch(p){C.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&&e.includes("PROPERTIES_SCHEMA"))try{const s=await Ge(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){C.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,H,Ie,je,Ae;function Qe(){return ae=(async()=>{const t=Te.getResources({types:[{did:Oe,type:he},{did:zt,type:he}]});H=(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=H.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=H.reduce((e,s)=>Object.assign(e,Object.fromEntries(Object.values(s.state.components).map(o=>[o.data.id,{blockletId:s.blockletId,component:o.data}]))),{});je=Object.fromEntries(await Promise.all(Object.entries(n).map(async([e,s])=>{const o=await We(s.component);return[e,{...s,component:o}]}))),Ae=H.reduce((e,s)=>Object.assign(e,s.state.chunks),{})})(),ae}function Xe(t){const n=N.debounce(async()=>{await Qe().catch(e=>{C.error("load resource states error",{error:e})}),await(t==null?void 0:t({states:H,pages:Ie,components:je,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(ye,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(ye,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 ce.findAll({where:{projectId:s}})).map(c=>c.componentId),i=Object.fromEntries(Object.entries(n||{}).filter(([c])=>a.includes(c)));o.syncedStore.resources.components=i}C.info(`update [${s}] resource states:`,{pages:Object.keys(o.syncedStore.resources.pages||{}).length,components:Object.keys(o.syncedStore.resources.components||{}).length})}))});async function is(){C.info("trigger reload all project resource"),w.default.events.emit(ye)}async function _e({ensureLoaded:t=!0}={}){return t&&(ae??(ae=Qe()),await ae),{states:H,pages:Ie,components:je,chunks:Ae}}exports.COMPONENT_DID=Oe;exports.CUSTOM_COMPONENT_CACHE_DURATION_IN_SECONDS=Fe;exports.GET_SERVER_SIDE_PROPS_TIMEOUT_IN_SECONDS=ge;exports.PUBLISH_MODES=ts;exports.Project=$;exports.RESOURCE_TYPE=he;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=Gt;exports.getExportSchemaValueFromCode=Ge;exports.getMultiTenantAllProjectAccessPassports=Lt;exports.getPreloadComponent=Ve;exports.getPreloadComponents=Bt;exports.getPreloadComponentsCacheKey=Be;exports.getResourceStates=_e;exports.initPackResourceStates=Xe;exports.isMultiTenant=Nt;exports.logger=C;exports.mergeState=Ee;exports.nextId=Se;exports.toPackage=Ye;exports.triggerReloadAllProjectResource=is;
@@ -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-DVDoWV0f.js");exports.CUSTOM_COMPONENT_CACHE_DURATION_IN_SECONDS=e.CUSTOM_COMPONENT_CACHE_DURATION_IN_SECONDS;exports.GET_SERVER_SIDE_PROPS_TIMEOUT_IN_SECONDS=e.GET_SERVER_SIDE_PROPS_TIMEOUT_IN_SECONDS;exports.clearPreloadComponentsCache=e.clearPreloadComponentsCache;exports.clearPreloadComponentsCacheByMode=e.clearPreloadComponentsCacheByMode;exports.getComponentFromState=e.getComponentFromState;exports.getComponentFromStateByName=e.getComponentFromStateByName;exports.getExportSchemaValueFromCode=e.getExportSchemaValueFromCode;exports.getPreloadComponent=e.getPreloadComponent;exports.getPreloadComponents=e.getPreloadComponents;exports.getPreloadComponentsCacheKey=e.getPreloadComponentsCacheKey;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require("@blocklet/pages-kit/builtin/utils");require("@blocklet/pages-kit/types");require("@blocklet/pages-kit/utils/property");require("@blocklet/quickjs");require("@blocklet/sdk/lib/config");require("lru-cache");require("node-fetch");require("ufo");require("crypto");const e=require("./_chunks/site-state-DuOokNvt.js");exports.CUSTOM_COMPONENT_CACHE_DURATION_IN_SECONDS=e.CUSTOM_COMPONENT_CACHE_DURATION_IN_SECONDS;exports.GET_SERVER_SIDE_PROPS_TIMEOUT_IN_SECONDS=e.GET_SERVER_SIDE_PROPS_TIMEOUT_IN_SECONDS;exports.clearPreloadComponentsCache=e.clearPreloadComponentsCache;exports.clearPreloadComponentsCacheByMode=e.clearPreloadComponentsCacheByMode;exports.getComponentFromState=e.getComponentFromState;exports.getComponentFromStateByName=e.getComponentFromStateByName;exports.getExportSchemaValueFromCode=e.getExportSchemaValueFromCode;exports.getPreloadComponent=e.getPreloadComponent;exports.getPreloadComponents=e.getPreloadComponents;exports.getPreloadComponentsCacheKey=e.getPreloadComponentsCacheKey;
@@ -1,4 +1,4 @@
1
- "use strict";const k=require("./_chunks/site-state-DVDoWV0f.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(`
1
+ "use strict";const k=require("./_chunks/site-state-DuOokNvt.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">`:""}
@@ -1 +1 @@
1
- "use strict";const c=require("./_chunks/site-state-DVDoWV0f.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;
1
+ "use strict";const c=require("./_chunks/site-state-DuOokNvt.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;
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./_chunks/site-state-DVDoWV0f.js");require("@blocklet/quickjs");require("@blocklet/sdk/lib/component");require("@blocklet/sdk/lib/config");require("@reactivedata/reactive");require("@syncedstore/core");require("crypto");require("fs");require("glob");require("lib0/decoding");require("lib0/encoding");require("lodash");require("lru-cache");require("nanoid");require("p-limit");require("path");require("stream/promises");require("tar");require("ufo");require("wait-on");require("y-protocols/awareness");require("y-protocols/sync");require("yaml");require("yjs");exports.PUBLISH_MODES=e.PUBLISH_MODES;exports.SITE_STATE_PATH=e.SITE_STATE_PATH;exports.STATE_MODES=e.STATE_MODES;exports.default=e.SiteState;exports.fromPackage=e.fromPackage;exports.getResourceStates=e.getResourceStates;exports.initPackResourceStates=e.initPackResourceStates;exports.mergeState=e.mergeState;exports.nextId=e.nextId;exports.toPackage=e.toPackage;exports.triggerReloadAllProjectResource=e.triggerReloadAllProjectResource;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./_chunks/site-state-DuOokNvt.js");require("@blocklet/quickjs");require("@blocklet/sdk/lib/component");require("@blocklet/sdk/lib/config");require("@reactivedata/reactive");require("@syncedstore/core");require("crypto");require("fs");require("glob");require("lib0/decoding");require("lib0/encoding");require("lodash");require("lru-cache");require("nanoid");require("p-limit");require("path");require("stream/promises");require("tar");require("ufo");require("wait-on");require("y-protocols/awareness");require("y-protocols/sync");require("yaml");require("yjs");exports.PUBLISH_MODES=e.PUBLISH_MODES;exports.SITE_STATE_PATH=e.SITE_STATE_PATH;exports.STATE_MODES=e.STATE_MODES;exports.default=e.SiteState;exports.fromPackage=e.fromPackage;exports.getResourceStates=e.getResourceStates;exports.initPackResourceStates=e.initPackResourceStates;exports.mergeState=e.mergeState;exports.nextId=e.nextId;exports.toPackage=e.toPackage;exports.triggerReloadAllProjectResource=e.triggerReloadAllProjectResource;
@@ -225,8 +225,14 @@ ${t}
225
225
  return { contents: t, loader: "tsx" };
226
226
  if (Ae(p.path)) {
227
227
  c || (c = await Ze({ ensureLoaded: !1 }));
228
- const f = p.path.split("/").pop();
229
- return (u = c == null ? void 0 : c.chunks) != null && u[f] ? { contents: H(c.chunks[f], "utf-8"), loader: "js" } : { contents: "", loader: "js" };
228
+ const m = p.path.split("/").pop();
229
+ if ((u = c == null ? void 0 : c.chunks) != null && u[m])
230
+ try {
231
+ const g = H(c.chunks[m], "utf-8");
232
+ return v.info("get chunk from local file system", m), { contents: g, loader: "tsx" };
233
+ } catch {
234
+ }
235
+ return { contents: "", loader: "tsx" };
230
236
  }
231
237
  return null;
232
238
  });
@@ -432,7 +438,7 @@ async function Je({
432
438
  return await Promise.all(
433
439
  Object.entries(i).map(async ([p, u]) => {
434
440
  if ((u == null ? void 0 : u.type) === Oe) {
435
- const f = await Je({
441
+ const m = await Je({
436
442
  req: t,
437
443
  depth: o + 1,
438
444
  state: e,
@@ -441,11 +447,11 @@ async function Je({
441
447
  defaultLocale: r,
442
448
  properties: u.properties
443
449
  });
444
- f && (Object.assign(c.components, f.components), Object.assign(c.props, {
450
+ m && (Object.assign(c.components, m.components), Object.assign(c.props, {
445
451
  [p]: {
446
452
  type: Oe,
447
453
  componentId: u.componentId,
448
- props: f.props
454
+ props: m.props
449
455
  }
450
456
  }));
451
457
  }
@@ -490,6 +496,8 @@ async function as({
490
496
  props: e,
491
497
  req: s
492
498
  }) {
499
+ if (!(o != null && o.includes("getServerSideProps")))
500
+ return null;
493
501
  const n = await Ge(o, "getServerSideProps");
494
502
  if (!n) return null;
495
503
  const r = new Promise((a, i) => {
@@ -580,6 +588,8 @@ export { joinURL, withQuery, getQuery, getComponentMountPoint }
580
588
  }
581
589
  const is = ae(
582
590
  async (t, o, e) => {
591
+ if (!(t != null && t.includes(o)))
592
+ return null;
583
593
  const s = await Ge(t, o);
584
594
  if (s)
585
595
  try {
@@ -712,10 +722,10 @@ const _ = class _ extends B.Doc {
712
722
  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) => {
713
723
  this.transact(async () => {
714
724
  try {
715
- const f = await _e(e, s);
716
- p(f);
717
- } catch (f) {
718
- u(f);
725
+ const m = await _e(e, s);
726
+ p(m);
727
+ } catch (m) {
728
+ u(m);
719
729
  }
720
730
  });
721
731
  });
@@ -845,10 +855,10 @@ const _ = class _ extends B.Doc {
845
855
  return {
846
856
  ...this.states[e],
847
857
  resources: await Ze().then(async (a) => {
848
- var u, f, g, y;
858
+ var u, m, g, y;
849
859
  const { pages: i, components: c } = Ct(a, "pages", "components");
850
860
  let p = c;
851
- if ((f = (u = this.states[e]) == null ? void 0 : u.resources) != null && f.components)
861
+ if ((m = (u = this.states[e]) == null ? void 0 : u.resources) != null && m.components)
852
862
  p = {
853
863
  ...(y = (g = this.states[e]) == null ? void 0 : g.resources) == null ? void 0 : y.components
854
864
  };
@@ -887,9 +897,9 @@ const _ = class _ extends B.Doc {
887
897
  const p = a.pages[c];
888
898
  if (!p || e === "production" && !p.isPublic)
889
899
  continue;
890
- const u = p.slug, f = l.slug || r, g = {
900
+ const u = p.slug, m = l.slug || r, g = {
891
901
  projectId: r,
892
- projectSlug: f,
902
+ projectSlug: m,
893
903
  pageSlug: u,
894
904
  pageId: c,
895
905
  // default locale
@@ -899,7 +909,7 @@ const _ = class _ extends B.Doc {
899
909
  isPublic: p.isPublic,
900
910
  isTemplate: p.isTemplate
901
911
  };
902
- f && (n[M("/", f, u)] = {
912
+ m && (n[M("/", m, u)] = {
903
913
  ...g,
904
914
  shouldRedirect: !0,
905
915
  mainPage: !0
@@ -910,7 +920,7 @@ const _ = class _ extends B.Doc {
910
920
  };
911
921
  for (const y of i) {
912
922
  const A = { ...g, locale: y };
913
- n[M("/", y, r, u)] = A, f && (n[M("/", y, f, u)] = A);
923
+ n[M("/", y, r, u)] = A, m && (n[M("/", y, m, u)] = A);
914
924
  }
915
925
  }
916
926
  }
@@ -998,12 +1008,12 @@ async function Ue(t, o, e) {
998
1008
  try {
999
1009
  const c = ye(t, i), p = ze(c);
1000
1010
  for (const u of p) {
1001
- const f = J(u), g = e.getFilePath(u, i), y = g ? `${g}:${f}` : f, A = Re.get(y);
1011
+ const m = J(u), g = e.getFilePath(u, i), y = g ? `${g}:${m}` : m, A = Re.get(y);
1002
1012
  if (A) {
1003
1013
  z.test(c) || Pe(t, i, A);
1004
1014
  return;
1005
1015
  }
1006
- const x = await hs(g, f, o);
1016
+ const x = await hs(g, m, o);
1007
1017
  x && (z.test(c) || Pe(t, i, x), Re.set(y, x));
1008
1018
  }
1009
1019
  } catch (c) {
@@ -1025,57 +1035,57 @@ async function ws(t, {
1025
1035
  state: t,
1026
1036
  pageIds: l,
1027
1037
  componentIds: s === "all" ? Object.keys(t.components) : s
1028
- }), i = (m, d) => {
1038
+ }), i = (f, d) => {
1029
1039
  var w;
1030
1040
  return {
1031
- id: m.id,
1032
- name: m.name,
1033
- isTemplateSection: m.isTemplateSection ?? !1,
1034
- templateDescription: m.templateDescription,
1035
- component: m.component,
1036
- config: m.config,
1037
- visibility: m.visibility,
1038
- properties: ((w = m.locales) == null ? void 0 : w[d]) ?? {}
1041
+ id: f.id,
1042
+ name: f.name,
1043
+ isTemplateSection: f.isTemplateSection ?? !1,
1044
+ templateDescription: f.templateDescription,
1045
+ component: f.component,
1046
+ config: f.config,
1047
+ visibility: f.visibility,
1048
+ properties: ((w = f.locales) == null ? void 0 : w[d]) ?? {}
1039
1049
  };
1040
- }, c = (m, d) => {
1050
+ }, c = (f, d) => {
1041
1051
  var w;
1042
1052
  return {
1043
- id: m.id,
1044
- createdAt: m.createdAt,
1045
- updatedAt: m.updatedAt,
1046
- publishedAt: m.publishedAt,
1047
- isPublic: m.isPublic ?? !0,
1048
- isTemplate: m.isTemplate ?? !1,
1049
- meta: ((w = m.locales) == null ? void 0 : w[d]) ?? {},
1053
+ id: f.id,
1054
+ createdAt: f.createdAt,
1055
+ updatedAt: f.updatedAt,
1056
+ publishedAt: f.publishedAt,
1057
+ isPublic: f.isPublic ?? !0,
1058
+ isTemplate: f.isTemplate ?? !1,
1059
+ meta: ((w = f.locales) == null ? void 0 : w[d]) ?? {},
1050
1060
  sections: R(
1051
- m.sectionIds.map((k) => {
1052
- const N = m.sections[k];
1061
+ f.sectionIds.map((k) => {
1062
+ const N = f.sections[k];
1053
1063
  return N && i(N, d);
1054
1064
  })
1055
1065
  )
1056
1066
  };
1057
1067
  }, p = R(
1058
- t.supportedLocales.map((m) => m.locale).flatMap(
1059
- (m) => l.map((d) => {
1068
+ t.supportedLocales.map((f) => f.locale).flatMap(
1069
+ (f) => l.map((d) => {
1060
1070
  const w = t.pages[d];
1061
1071
  return w && {
1062
- locale: m,
1072
+ locale: f,
1063
1073
  slug: w.slug,
1064
- page: c(w, m)
1074
+ page: c(w, f)
1065
1075
  };
1066
1076
  })
1067
1077
  )
1068
- ), u = We(), f = O(u, "pages");
1069
- F(f, { recursive: !0 });
1078
+ ), u = We(), m = O(u, "pages");
1079
+ F(m, { recursive: !0 });
1070
1080
  const g = O(u, "components");
1071
1081
  F(g, { recursive: !0 });
1072
- for (const { locale: m, slug: d, page: w } of p)
1073
- await de(w, f, {
1074
- getFilename: () => `${Ke(d) || "index"}.${m}.yml`,
1082
+ for (const { locale: f, slug: d, page: w } of p)
1083
+ await de(w, m, {
1084
+ getFilename: () => `${Ke(d) || "index"}.${f}.yml`,
1075
1085
  exportAssets: o
1076
1086
  });
1077
- for (const m of a) {
1078
- const d = (U = t.components[m]) == null ? void 0 : U.data;
1087
+ for (const f of a) {
1088
+ const d = (U = t.components[f]) == null ? void 0 : U.data;
1079
1089
  d && await de(d, g, {
1080
1090
  getFilename: (w) => `${w.name || "unnamed"}.${w.id}.yml`,
1081
1091
  exportAssets: o
@@ -1085,17 +1095,17 @@ async function ws(t, {
1085
1095
  F(L(y), { recursive: !0 });
1086
1096
  const A = {
1087
1097
  pages: R(
1088
- l.map((m) => {
1089
- const d = t.pages[m];
1090
- return d && { id: m, slug: d.slug };
1098
+ l.map((f) => {
1099
+ const d = t.pages[f];
1100
+ return d && { id: f, slug: d.slug };
1091
1101
  })
1092
1102
  ),
1093
1103
  components: R(
1094
- a.map((m) => {
1104
+ a.map((f) => {
1095
1105
  var w;
1096
- const d = (w = t.components[m]) == null ? void 0 : w.data;
1106
+ const d = (w = t.components[f]) == null ? void 0 : w.data;
1097
1107
  return d && {
1098
- id: m,
1108
+ id: f,
1099
1109
  name: d.name
1100
1110
  };
1101
1111
  })
@@ -1103,11 +1113,11 @@ async function ws(t, {
1103
1113
  ...r ? {
1104
1114
  resources: {
1105
1115
  components: R(
1106
- Object.keys(((D = t.resources) == null ? void 0 : D.components) || {}).map((m) => {
1116
+ Object.keys(((D = t.resources) == null ? void 0 : D.components) || {}).map((f) => {
1107
1117
  var d, w, k, N;
1108
1118
  return {
1109
- id: m,
1110
- name: (N = (k = (w = (d = t.resources) == null ? void 0 : d.components) == null ? void 0 : w[m]) == null ? void 0 : k.component) == null ? void 0 : N.name
1119
+ id: f,
1120
+ name: (N = (k = (w = (d = t.resources) == null ? void 0 : d.components) == null ? void 0 : w[f]) == null ? void 0 : k.component) == null ? void 0 : N.name
1111
1121
  };
1112
1122
  })
1113
1123
  )
@@ -1119,7 +1129,7 @@ async function ws(t, {
1119
1129
  te(y, K.stringify(A));
1120
1130
  const x = O(u, "config.source.json");
1121
1131
  if (n && te(x, JSON.stringify(n)), r) {
1122
- const m = O(u, "resources"), d = O(m, "components");
1132
+ const f = O(u, "resources"), d = O(f, "components");
1123
1133
  F(d, { recursive: !0 });
1124
1134
  for (const w of Object.keys(((h = t == null ? void 0 : t.resources) == null ? void 0 : h.components) ?? {})) {
1125
1135
  const k = (I = (b = (E = t.resources) == null ? void 0 : E.components) == null ? void 0 : b[w]) == null ? void 0 : I.component;
@@ -1141,7 +1151,7 @@ async function Ye(t, { importAssets: o, includeResources: e } = {}) {
1141
1151
  const i = me("**/.blocklet/pages/pages.config.yml", { cwd: s, absolute: !0 }).at(0), c = i && O(L(i), "../../pages"), p = i && O(L(i), "../../components"), u = i && O(L(i), "../../chunks");
1142
1152
  if (!i)
1143
1153
  return null;
1144
- const f = K.parse(H(i).toString()), g = (h, E, b) => {
1154
+ const m = K.parse(H(i).toString()), g = (h, E, b) => {
1145
1155
  let I = O(h, `${E}${b ? `.${b}` : ""}.yml`);
1146
1156
  return (!V(I) || !Z(I).isFile()) && (I = O(h, E, `index${b ? `.${b}` : ""}.yml`), !V(I) || !Z(I)) ? null : K.parse(H(I).toString());
1147
1157
  }, y = (h, E) => {
@@ -1153,17 +1163,17 @@ async function Ye(t, { importAssets: o, includeResources: e } = {}) {
1153
1163
  }
1154
1164
  return null;
1155
1165
  }, A = R(
1156
- f.pages.map(({ slug: h }) => {
1157
- var m;
1166
+ m.pages.map(({ slug: h }) => {
1167
+ var f;
1158
1168
  const E = R(
1159
- f.supportedLocales.map(({ locale: d }) => {
1169
+ m.supportedLocales.map(({ locale: d }) => {
1160
1170
  const w = c ? g(c, Ke(h), d) : void 0;
1161
1171
  if (w)
1162
1172
  return { locale: d, page: w };
1163
1173
  const k = c ? g(c, h, d) : void 0;
1164
1174
  return k && { locale: d, page: k };
1165
1175
  })
1166
- ), b = (m = E[0]) == null ? void 0 : m.page;
1176
+ ), b = (f = E[0]) == null ? void 0 : f.page;
1167
1177
  if (!b)
1168
1178
  return null;
1169
1179
  const I = b.sections.map((d) => {
@@ -1199,7 +1209,7 @@ async function Ye(t, { importAssets: o, includeResources: e } = {}) {
1199
1209
  locales: Object.fromEntries(E.map(({ locale: d, page: w }) => [d, w.meta]))
1200
1210
  };
1201
1211
  })
1202
- ), x = p ? R(((r = f.components) == null ? void 0 : r.map(({ id: h }) => y(p, h))) ?? []) : [];
1212
+ ), x = p ? R(((r = m.components) == null ? void 0 : r.map(({ id: h }) => y(p, h))) ?? []) : [];
1203
1213
  if (o) {
1204
1214
  const h = (...E) => {
1205
1215
  v.info(`[${n ? J(t) : J(O(t, "../../../../"))}] importAssets:`, ...E);
@@ -1218,8 +1228,8 @@ async function Ye(t, { importAssets: o, includeResources: e } = {}) {
1218
1228
  }
1219
1229
  }),
1220
1230
  Ue(A, b, {
1221
- getFilePath: (I, m) => {
1222
- const d = ye(A, m.slice(0, 1));
1231
+ getFilePath: (I, f) => {
1232
+ const d = ye(A, f.slice(0, 1));
1223
1233
  return c && O(c, L(d.slug), I);
1224
1234
  },
1225
1235
  onFinish: (I) => {
@@ -1234,7 +1244,7 @@ async function Ye(t, { importAssets: o, includeResources: e } = {}) {
1234
1244
  const U = {};
1235
1245
  if (e) {
1236
1246
  const h = i && O(L(i), "../../resources/components"), E = R(
1237
- ((a = (l = f.resources) == null ? void 0 : l.components) == null ? void 0 : a.map(({ id: b }) => y(h, b))) ?? []
1247
+ ((a = (l = m.resources) == null ? void 0 : l.components) == null ? void 0 : a.map(({ id: b }) => y(h, b))) ?? []
1238
1248
  );
1239
1249
  E.length > 0 && (U.components = Object.fromEntries(
1240
1250
  E.map((b, I) => [b.id, { index: I, component: b }])
@@ -1247,11 +1257,11 @@ async function Ye(t, { importAssets: o, includeResources: e } = {}) {
1247
1257
  D[E] = O(u, E);
1248
1258
  }
1249
1259
  return {
1250
- supportedLocales: f.supportedLocales,
1260
+ supportedLocales: m.supportedLocales,
1251
1261
  pageIds: A.map((h) => h.id),
1252
1262
  components: Object.fromEntries(x.map((h, E) => [h.id, { index: E, data: h }])),
1253
1263
  pages: Object.fromEntries(A.map((h) => [h.id, h])),
1254
- config: f.config || {},
1264
+ config: m.config || {},
1255
1265
  resources: U,
1256
1266
  chunks: D
1257
1267
  };
@@ -1274,16 +1284,16 @@ async function _e(t, o, {
1274
1284
  for (const p of e ?? l) {
1275
1285
  const u = a[p];
1276
1286
  if (!u) {
1277
- const f = o.pageIds.indexOf(p);
1278
- f !== -1 && n && (o.pageIds.splice(f, 1), delete o.pages[p]);
1287
+ const m = o.pageIds.indexOf(p);
1288
+ m !== -1 && n && (o.pageIds.splice(m, 1), delete o.pages[p]);
1279
1289
  continue;
1280
1290
  }
1281
1291
  if (o.pageIds.includes(u.id)) {
1282
1292
  if (s === "replace")
1283
1293
  o.pages[u.id] = u;
1284
1294
  else if (s === "byUpdateTime") {
1285
- const f = o.pages[u.id];
1286
- (!f || u.updatedAt && u.updatedAt > f.updatedAt) && (o.pages[u.id] = u);
1295
+ const m = o.pages[u.id];
1296
+ (!m || u.updatedAt && u.updatedAt > m.updatedAt) && (o.pages[u.id] = u);
1287
1297
  }
1288
1298
  } else
1289
1299
  o.pageIds.push(u.id), o.pages[u.id] = u;
@@ -1298,12 +1308,12 @@ async function _e(t, o, {
1298
1308
  c = Object.fromEntries(
1299
1309
  await Promise.all(
1300
1310
  Object.entries(c).map(async ([p, u]) => {
1301
- const f = await qe(u == null ? void 0 : u.data);
1311
+ const m = await qe(u == null ? void 0 : u.data);
1302
1312
  return [
1303
1313
  p,
1304
1314
  {
1305
1315
  ...u,
1306
- data: f
1316
+ data: m
1307
1317
  }
1308
1318
  ];
1309
1319
  })
@@ -1317,7 +1327,7 @@ const qe = ae(
1317
1327
  return t;
1318
1328
  if (((o = t == null ? void 0 : t.renderer) == null ? void 0 : o.type) === "react-component") {
1319
1329
  const { script: e } = (t == null ? void 0 : t.renderer) || {};
1320
- if (e)
1330
+ if (e && e.includes("PROPERTIES_SCHEMA"))
1321
1331
  try {
1322
1332
  const s = await is(e, "PROPERTIES_SCHEMA", t.id);
1323
1333
  s && s.length > 0 && t && (t.properties = {}, s.forEach((n, r) => {
@@ -7,7 +7,7 @@ import "lru-cache";
7
7
  import "node-fetch";
8
8
  import "ufo";
9
9
  import "crypto";
10
- import { c as _, G as E, d as i, e as d, j as l, k as N, m as O, h as P, b as c, f as g } from "./_chunks/site-state-D_MU-PeA.js";
10
+ import { c as _, G as E, d as i, e as d, j as l, k as N, m as O, h as P, b as c, f as g } from "./_chunks/site-state-C4Qd1dyU.js";
11
11
  export {
12
12
  _ as CUSTOM_COMPONENT_CACHE_DURATION_IN_SECONDS,
13
13
  E as GET_SERVER_SIDE_PROPS_TIMEOUT_IN_SECONDS,
@@ -1,4 +1,4 @@
1
- import { b as H, l as P } from "./_chunks/site-state-D_MU-PeA.js";
1
+ import { b as H, l as P } from "./_chunks/site-state-C4Qd1dyU.js";
2
2
  import { initCronCrawlBlocklet as W, cancelCronCrawlBlocklet as N, initSEOMiddleware as J } from "@blocklet/crawler/middlewares";
3
3
  import { PreloadComponentScriptModule as G } from "@blocklet/pages-kit/types";
4
4
  import { injectPreloadComponents as K } from "@blocklet/pages-kit/utils/preload";
@@ -1,4 +1,4 @@
1
- import { P as S, i as b, g as M, l as x, C as J, R as X, S as N, t as W, a as G } from "./_chunks/site-state-D_MU-PeA.js";
1
+ import { P as S, i as b, g as M, l as x, C as J, R as X, S as N, t as W, a as G } from "./_chunks/site-state-C4Qd1dyU.js";
2
2
  import { AsyncLocalStorage as K } from "async_hooks";
3
3
  import { Router as Y } from "express";
4
4
  import d from "fs";
@@ -1,4 +1,4 @@
1
- import { q as x, o as D, p as H, S as M, r as O, a as j, u as q, s as v, n as B, t as L, v as U } from "./_chunks/site-state-D_MU-PeA.js";
1
+ import { q as x, o as D, p as H, S as M, r as O, a as j, u as q, s as v, n as B, t as L, v as U } from "./_chunks/site-state-C4Qd1dyU.js";
2
2
  import "@blocklet/quickjs";
3
3
  import "@blocklet/sdk/lib/component";
4
4
  import "@blocklet/sdk/lib/config";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blocklet/pages-kit-inner-components",
3
- "version": "0.4.37",
3
+ "version": "0.4.39",
4
4
  "description": "Pages Kit inner components library",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -67,21 +67,21 @@
67
67
  "dependencies": {
68
68
  "@arcblock/did-auth": "^1.19.15",
69
69
  "@arcblock/did-auth-storage-nedb": "^1.7.1",
70
- "@arcblock/did-connect": "^2.12.17",
71
- "@arcblock/react-hooks": "^2.12.17",
72
- "@arcblock/ux": "^2.12.17",
70
+ "@arcblock/did-connect": "^2.12.19",
71
+ "@arcblock/react-hooks": "^2.12.19",
72
+ "@arcblock/ux": "^2.12.19",
73
73
  "@blocklet/ai-kit": "^0.1.71",
74
- "@blocklet/ai-runtime": "^0.4.249",
75
- "@blocklet/code-editor": "^0.4.249",
74
+ "@blocklet/ai-runtime": "^0.4.250",
75
+ "@blocklet/code-editor": "^0.4.250",
76
76
  "@blocklet/crawler": "^2.1.199",
77
77
  "@blocklet/embed": "^0.2.3",
78
78
  "@blocklet/js-sdk": "^1.16.39",
79
79
  "@blocklet/logger": "1.16.36",
80
- "@blocklet/quickjs": "^0.4.249",
80
+ "@blocklet/quickjs": "^0.4.250",
81
81
  "@blocklet/sdk": "^1.16.39",
82
- "@blocklet/studio-ui": "^0.4.249",
82
+ "@blocklet/studio-ui": "^0.4.250",
83
83
  "@blocklet/tracker": "^1.16.39",
84
- "@blocklet/ui-react": "^2.12.17",
84
+ "@blocklet/ui-react": "^2.12.19",
85
85
  "@blocklet/uploader": "^0.1.71",
86
86
  "@blocklet/uploader-server": "^0.1.86",
87
87
  "@emotion/cache": "^11.13.1",
@@ -202,8 +202,8 @@
202
202
  "yaml": "^2.5.0",
203
203
  "yjs": "^13.6.18",
204
204
  "zustand": "^4.5.5",
205
- "@blocklet/pages-kit": "^0.4.37",
206
- "@blocklet/pages-kit-block-studio": "^0.4.37"
205
+ "@blocklet/pages-kit": "^0.4.39",
206
+ "@blocklet/pages-kit-block-studio": "^0.4.39"
207
207
  },
208
208
  "devDependencies": {
209
209
  "@trivago/prettier-plugin-sort-imports": "^5.2.1",