@blocklet/pages-kit-inner-components 0.5.30 → 0.5.31

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.
Files changed (37) hide show
  1. package/lib/cjs/add-component.js +47 -23
  2. package/lib/cjs/chunks/array-BH41o7C6.js +475 -0
  3. package/lib/cjs/chunks/{config-string-C4Q0hgG0.js → config-string-B3JoYJVu.js} +1 -1
  4. package/lib/cjs/chunks/{draft-data-Cu9gua-P.js → draft-data-hZaTeHgL.js} +1 -1
  5. package/lib/cjs/chunks/home-B6E0yAU3.js +38 -0
  6. package/lib/cjs/chunks/{publish-button-DvwoFH1F.js → publish-button-CO_WU_f5.js} +1 -1
  7. package/lib/cjs/chunks/site-state-D5jk8eJT.js +57 -0
  8. package/lib/cjs/chunks/state-DxOb57hO.js +1 -0
  9. package/lib/cjs/components.js +1 -1
  10. package/lib/cjs/home.js +1 -1
  11. package/lib/cjs/locales.js +3 -1
  12. package/lib/cjs/project-html.js +2 -2
  13. package/lib/cjs/resources.js +1 -1
  14. package/lib/cjs/setting.js +1 -1
  15. package/lib/cjs/site-state.js +1 -1
  16. package/lib/es/add-component.js +795 -749
  17. package/lib/es/chunks/array-NLDZzhVt.js +2224 -0
  18. package/lib/es/chunks/{config-string-CNLg1EYu.js → config-string-DutyRoOh.js} +1 -1
  19. package/lib/es/chunks/{draft-data-hSHLdxKp.js → draft-data-DjX0kpDC.js} +1 -1
  20. package/lib/es/chunks/{home-CNk6U8FU.js → home-CxRa0eKd.js} +112 -96
  21. package/lib/es/chunks/{publish-button-BftBlabj.js → publish-button-1bl_Nuva.js} +3 -3
  22. package/lib/es/chunks/{site-state-DJ3JcBMm.js → site-state-DEduMTrY.js} +505 -473
  23. package/lib/es/chunks/state-C02ZI8vz.js +605 -0
  24. package/lib/es/components.js +1 -1
  25. package/lib/es/home.js +3 -3
  26. package/lib/es/locales.js +44 -6
  27. package/lib/es/project-html.js +43 -42
  28. package/lib/es/resources.js +1 -1
  29. package/lib/es/setting.js +2 -2
  30. package/lib/es/site-state.js +1 -1
  31. package/package.json +10 -10
  32. package/lib/cjs/chunks/array-CJC7ex3i.js +0 -467
  33. package/lib/cjs/chunks/home-CimGvyT9.js +0 -38
  34. package/lib/cjs/chunks/site-state-DvIWP0pO.js +0 -57
  35. package/lib/cjs/chunks/state-jCG5gSUJ.js +0 -1
  36. package/lib/es/chunks/array-9j8tOSbO.js +0 -1993
  37. package/lib/es/chunks/state-D5BnGunt.js +0 -483
@@ -1,57 +0,0 @@
1
- "use strict";var jt=Object.defineProperty;var Dt=(e,n,t)=>n in e?jt(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t;var R=(e,n,t)=>Dt(e,typeof n!="symbol"?n+"":n,t);const _t=require("@blocklet/pages-kit/builtin/utils"),ye=require("@blocklet/pages-kit/types"),ce=require("@blocklet/pages-kit/utils/property"),le=require("@blocklet/quickjs"),vt=require("@blocklet/sdk/lib/config"),He=require("lru-cache"),ot=require("node-fetch"),U=require("ufo"),Q=require("crypto"),kt=require("@blocklet/logger"),w=require("fs"),y=require("path"),Rt=require("lodash/isNil"),xt=require("@blocklet/pages-kit/utils/builtin"),rt=require("@blocklet/pages-kit/utils/typescript/builtin-module-transformer"),Be=require("@blocklet/sdk/lib/component"),Nt=require("autoprefixer"),Lt=require("esbuild"),Mt=require("postcss"),Ut=require("tailwindcss"),Ft=require("typescript"),X=require("@syncedstore/core"),$t=require("yjs"),qt=require("@blocklet/pages-kit/utils/data-source"),Ee=require("@blocklet/pages-kit/utils/route"),Ht=require("lodash"),Bt=require("@reactivedata/reactive"),Ne=require("glob"),Gt=require("lib0/decoding"),Vt=require("lib0/encoding"),Jt=require("lodash/cloneDeep"),zt=require("lodash/debounce"),Kt=require("lodash/get"),Yt=require("lodash/isEmpty"),Wt=require("lodash/pick"),Qt=require("lodash/set"),Xt=require("lodash/union"),Zt=require("nanoid"),es=require("p-limit"),ts=require("stream/promises"),ss=require("tar"),ns=require("wait-on"),re=require("y-protocols/awareness"),ve=require("y-protocols/sync"),os=require("yaml"),v=require("sequelize");require("sqlite3");require("@blocklet/pages-kit/types/state");const N=e=>e&&e.__esModule?e:{default:e};function pe(e){if(e&&e.__esModule)return e;const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const s=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,s.get?s:{enumerable:!0,get:()=>e[t]})}}return n.default=e,Object.freeze(n)}const O=N(vt),rs=N(ot),as=N(kt),at=N(y),is=N(Rt),cs=N(Nt),ls=pe(Lt),ds=N(Mt),ps=N(Ut),M=N(Ft),H=pe($t),ke=pe(Gt),x=pe(Vt),us=N(Jt),it=N(zt),Ge=N(Kt),fs=N(Yt),ms=N(Wt),Qe=N(Qt),gs=N(Xt),hs=N(es),ys=N(ns),te=pe(os);O.default.env.mode;O.default.env.OPENAI_API_KEY||process.env.OPENAI_API_KEY;O.default.env.OPENAI_BASE_URL||process.env.OPENAI_BASE_URL;O.default.env.TRANSLATE_ADDITIONAL_PROMPT||process.env.TRANSLATE_ADDITIONAL_PROMPT;O.default.env.PAGE_CONTENT_ADDITIONAL_PROMPT||process.env.PAGE_CONTENT_ADDITIONAL_PROMPT;const Ss="image-bin";O.default.env.INIT_TEMPLATE_PATH;const ws=process.env.DATABASE_URL||at.default.join(O.default.env.dataDir,"db/pages-kit.db"),Xe=O.default,Es=()=>O.default.env.tenantMode==="multiple",bs=()=>{var e;return(is.default(Xe.env.preferences.multiTenantAllProjectAccessPassports)?[]:(e=Xe.env.preferences.multiTenantAllProjectAccessPassports)==null?void 0:e.split(","))||[]},Is=at.default.join(O.default.env.dataDir,"fs-memoize-cache"),Os=O.default.env.FS_MEMOIZE_CACHE_VERSION||"v1.0.0",E=as.default("pages-kit"),As=v.DataTypes.sqlite.DATE.parse;v.DataTypes.sqlite.DATE.parse=(e,n)=>typeof e=="number"?new Date(e):As(e,n);const ue=new v.Sequelize({dialect:"sqlite",storage:ws,benchmark:process.env.ENABLE_SEQUELIZE_BENCHMARK==="true",retry:{match:[/SQLITE_BUSY/],name:"query",max:10},logging:process.env.ENABLE_SEQUELIZE_LOGGING==="true"?console.log:!1});ue.query("pragma journal_mode = WAL;");ue.query("pragma synchronous = normal;");ue.query("pragma journal_size_limit = 67108864;");class Ce extends v.Model{}Ce.init({id:{type:v.DataTypes.UUID,allowNull:!1,primaryKey:!0,defaultValue:v.DataTypes.UUIDV4},projectId:{type:v.DataTypes.UUID,allowNull:!1},componentId:{type:v.DataTypes.STRING,allowNull:!1}},{sequelize:ue,tableName:"ProjectComponents",timestamps:!1});class J extends v.Model{static async getProjectByIdOrSlug(n){return J.findOne({where:{[v.Op.or]:[{id:n},{slug:n}]}})}}J.init({id:{type:v.DataTypes.UUID,defaultValue:v.DataTypes.UUIDV4,primaryKey:!0},name:{type:v.DataTypes.STRING,allowNull:!1},description:v.DataTypes.TEXT,createdAt:v.DataTypes.DATE,updatedAt:v.DataTypes.DATE,createdBy:{type:v.DataTypes.STRING,allowNull:!1},updatedBy:{type:v.DataTypes.STRING,allowNull:!1},slug:v.DataTypes.STRING,icon:v.DataTypes.STRING,pinnedAt:v.DataTypes.DATE,useAllResources:v.DataTypes.BOOLEAN,npmSecret:v.DataTypes.STRING,relatedBlocklets:{type:v.DataTypes.JSON,allowNull:!1,defaultValue:{},get(){return this.getDataValue("relatedBlocklets")||{}},set(e){this.setDataValue("relatedBlocklets",JSON.stringify(e||{}))}}},{sequelize:ue,paranoid:!0});J.hasMany(Ce,{foreignKey:"projectId",as:"components"});const Cs=Is,Ts=Os,Le=7*24*60*60*1e3,Ps=24*60*60*1e3,ct=async(e="")=>{const n=y.join(Cs,e);try{if(!(await w.promises.stat(n)).isDirectory())throw new Error(`${n} is not a directory`)}catch{await w.promises.mkdir(n,{recursive:!0})}return n},js=(e,n)=>{const t=Q.createHash("md5").update(n).digest("hex");return y.join(e,`${Ts}-${t}.json`)},Ds=async(e="")=>{const n=await ct(e),t=Date.now();try{const s=await w.promises.readdir(n);await Promise.all(s.filter(o=>o.endsWith(".json")).map(async o=>{const r=y.join(n,o);try{const a=await w.promises.readFile(r,"utf-8"),i=JSON.parse(a);i.createdAt&&t-i.createdAt>Le&&await w.promises.unlink(r)}catch{try{const i=await w.promises.stat(r);t-i.mtimeMs>Le&&await w.promises.unlink(r)}catch{}}}))}catch(s){console.error(`Failed to cleanup cache in ${n}:`,s)}},_s=(()=>{const e=new Set;return setInterval(async()=>{await Promise.all(Array.from(e).map(s=>Ds(s)))},Ps).unref(),s=>{e.add(s)}})();function Ve(e,n){return n.subdir&&_s(n.subdir),le.memoize(async(...s)=>{const o=await ct(n.subdir||""),r=n.keyGenerator?n.keyGenerator(...s):JSON.stringify(s),a=js(o,r);try{const i=await w.promises.readFile(a,"utf-8"),{value:d,createdAt:c}=JSON.parse(i);if(c&&Date.now()-c>Le)throw await w.promises.unlink(a).catch(()=>{}),new Error("Cache expired");return d}catch{const d=await e(...s),c=JSON.stringify({value:d,createdAt:Date.now()});return w.promises.writeFile(a,c,"utf-8").catch(u=>{console.error("Failed to write fs cache:",u)}),d}},{keyGenerator:n.keyGenerator,lruOptions:n.lruOptions})}const vs=async(e,{componentId:n})=>{const t=`@tailwind components;
2
- @tailwind utilities;
3
- `,s=`.CustomComponent_${n}`;return(await ds.default([ps.default({content:[{raw:e,extension:"tsx"}]}),cs.default({overrideBrowserslist:["> 1%","last 2 versions"],stats:{}}),r=>{r.walkRules(a=>{a.selectors=a.selectors.map(i=>i.replace(/\.(.+)/g,`${s}.$1,${s} .$1`))})}]).process(t)).css},ks=async(e,{componentId:n})=>{const t=await vs(e,{componentId:n});return`export const __PagesKit_CSS__ = ${JSON.stringify(t)};
4
-
5
- ${e}
6
- `},Ze=Ve(async(e,n)=>{let t=M.default.transpileModule(e,{compilerOptions:{jsx:M.default.JsxEmit.React,target:M.default.ScriptTarget.ES2016,module:M.default.ModuleKind.ESNext},transformers:{before:[rt.createBuiltinModuleTransformer(M.default)]}}).outputText;if(n.tailwind&&(t=await ks(t,{componentId:n.componentId})),n.module===ye.PreloadComponentScriptModule.ESM)return t;const s=M.default.transpileModule(t,{compilerOptions:{jsx:M.default.JsxEmit.React,target:M.default.ScriptTarget.ES2016,module:M.default.ModuleKind.CommonJS,moduleResolution:M.default.ModuleResolutionKind.Node16}}).outputText;return n.module===ye.PreloadComponentScriptModule.CJS?s:xs(n.moduleName,s)},{keyGenerator:(e,n)=>{const t=Q.createHash("md5").update(e).digest("hex"),s={...n,componentId:n.componentId,module:n.module,...n.module!==ye.PreloadComponentScriptModule.ESM?{moduleName:n.moduleName}:{},tailwind:n.tailwind};return JSON.stringify(["transpileModule",t,s])},lruOptions:{max:100,ttl:1e3*60*60*24*7},subdir:"transpileModule"}),Rs=async(e,n)=>{var a,i;const s=(i=(a=(await ls.build({entryPoints:["index.tsx"],external:Object.keys(xt.BuiltinModules),format:"esm",target:"esnext",bundle:!0,write:!1,plugins:[{name:"vfs",setup(d){let c=null;d.onResolve({filter:/.*/},u=>u.path==="index.tsx"?{path:"index.tsx",namespace:"vfs"}:u.path==="./component"?{path:"component.tsx",namespace:"vfs"}:null),d.onLoad({filter:/.*/,namespace:"vfs"},async u=>{var S;if(u.path==="index.tsx")return{contents:`export { ${n} } from './component'`,loader:"tsx"};if(u.path==="component.tsx")return{contents:e,loader:"tsx"};if(rt.isRelativeModule(u.path)){const m=u.path.split("/").pop();if(c||(c=await je({ensureLoaded:!1})),(S=c==null?void 0:c.chunks)!=null&&S[m])try{const p=w.readFileSync(c.chunks[m],"utf-8");return E.info("get chunk from local file system",m),{contents:p,loader:"tsx"}}catch{}}return null})}}]})).outputFiles)==null?void 0:a[0])==null?void 0:i.contents;if(!s)throw new Error("Failed to build server code");const o=Buffer.from(s).toString();return M.default.transpileModule(o,{compilerOptions:{module:M.default.ModuleKind.ESNext,target:M.default.ScriptTarget.ES2020}}).outputText},lt=Ve(async(e,n)=>{const t=await Rs(e,n);return new RegExp(`export\\s+\\{\\s+${n}\\s+\\}`,"m").test(t)?t:void 0},{keyGenerator:(e,n)=>{const t=Q.createHash("md5").update(e).digest("hex");return JSON.stringify(["extractExportValueSchema",t,n])},lruOptions:{max:100,ttl:1e3*60*60*24*7},subdir:"extractExportValueSchema"}),xs=(e,n)=>`// GENERATED FILE. DO NOT EDIT.
7
- var ${e} = async function () {
8
-
9
- const exports = {};
10
- let moduleExports = null;
11
-
12
- // add commonjs module compatibility layer
13
- const module = { exports: moduleExports };
14
-
15
- // execute component code
16
- ${n}
17
-
18
- // handle possible module.exports
19
- if (module.exports && module.exports !== moduleExports) {
20
- // if module.exports is used, use it first
21
- return typeof module.exports === 'object' ? module.exports : { default: module.exports };
22
- }
23
-
24
- // ensure a default export
25
- if (!('default' in exports) && Object.keys(exports).length === 0) {
26
- // module has no exports, return null to indicate invalid
27
- return null;
28
- }
29
-
30
- return exports;
31
- };
32
- `,ae=new He.LRUCache({max:100}),dt=60*60,Me=60;function pt(e){E.info("clear preload components cache",{cacheKey:e}),ae.delete(e)}function ut(e){for(const n of ae.keys())n.includes(e)&&(E.info("clear preload components cache",{cacheKey:n}),pt(n))}function ft({mode:e,instanceId:n,componentId:t,locale:s}){return["getPreloadComponents",e,n,t,s].join("-")}async function Ns({mode:e,req:n,state:t,locale:s,instances:o,module:r}){const{supportedLocales:a,config:{defaultLocale:i}}=t;if(!i)return null;const d=(await Promise.all(o.map(async p=>{try{const l=ft({mode:e,instanceId:p.id,componentId:p.componentId,locale:s});if(e!=="draft"&&p.useCache&&ae.has(l))return E.info(`get preload component from cache: ${l}`),ae.get(l);const f=de({state:t,componentId:p.componentId});if(!f)return null;const b=await mt({req:n,state:t,componentId:f.id,locale:s,defaultLocale:i,properties:p.properties});if(!b)return null;const _={instanceId:p.id,preload:b};if(e!=="draft"&&p.useCache){let C=dt;p.cacheDuration&&(C=p.cacheDuration),E.info(`set preload component to cache(${C}s): ${l}`),ae.set(l,_,{ttl:C*1e3})}return _}catch(l){return E.error("get preload component error",{instanceId:p.id,componentId:p.componentId},{error:l}),null}}))).filter(p=>!!p),c=Object.values(d.reduce((p,l)=>({...p,...l.preload.components}),{}));async function u(){const p=await Promise.all(c.map(async l=>{const f=ce.componentUMDName({componentId:l.component.id}),b=r===ye.PreloadComponentScriptModule.ESM?{module:r,script:await Ze(l.script,{componentId:l.component.id,module:r,tailwind:e!=="draft"})}:{module:r,script:await Ze(l.script,{componentId:l.component.id,module:r,moduleName:f,tailwind:e!=="draft"}),moduleName:f};return[l.component.id,{component:l.component,script:b}]}));return Object.fromEntries(p)}const S=await u();return{config:{defaultLocale:i,supportedLocales:a},components:S,instances:d.map(p=>({id:p.instanceId,componentId:p.preload.component.id,locales:{[p.preload.locale]:{props:p.preload.props}}}))}}async function mt({req:e,state:n,componentId:t,locale:s,defaultLocale:o,properties:r}){const{supportedLocales:a}=n,i=de({state:n,componentId:t});if(!i)return null;const d=a.some(u=>u.locale===s)?s:o;if(!d)return null;const c=await gt({req:e,state:n,componentId:t,locale:d,defaultLocale:o,properties:r});return c?{component:i,...c}:null}const Ls=20;async function gt({req:e,depth:n=0,state:t,componentId:s,locale:o,defaultLocale:r,properties:a}){if(n>Ls)throw new RangeError("max component depth exceeded");const i=Ms({state:t,componentId:s,properties:a,locale:o});if(!i)return null;const{props:d}=i,c={locale:o||r,components:{[i.component.id]:{component:i.component,script:i.script}},props:{...d}};try{const u=await Fs({...i,req:e});u!=null&&u.props&&Object.assign(c.props,u.props)}catch(u){E.error("preload data at server side error",{componentId:s,name:i.component.name},{error:u})}return await Promise.all(Object.entries(d).map(async([u,S])=>{if((S==null?void 0:S.type)===ce.RenderNestedComponent){const m=await gt({req:e,depth:n+1,state:t,componentId:S.componentId,locale:o,defaultLocale:r,properties:S.properties});m&&(Object.assign(c.components,m.components),Object.assign(c.props,{[u]:{type:ce.RenderNestedComponent,componentId:S.componentId,props:m.props}}))}})),c}function Ms({state:e,componentId:n,locale:t,properties:s}){const o=de({state:e,componentId:n});if(!o)return null;const r=ce.mergeComponent({componentId:n,getComponent:a=>de({state:e,componentId:a}),locale:t,defaultLocale:e.config.defaultLocale,properties:s});return r?{component:o,script:r.script,props:{locale:t,...r.props}}:null}function de({state:e,componentId:n}){var t,s,o;return((t=e.components[n])==null?void 0:t.data)??((o=(s=e.resources.components)==null?void 0:s[n])==null?void 0:o.component)}function Us({state:e,name:n}){var s,o;const t=n.toLowerCase();return((s=Object.values(e.components).find(r=>{var a;return((a=r.data.name)==null?void 0:a.toLowerCase())===t}))==null?void 0:s.data)??((o=e.resources.components&&Object.values(e.resources.components).find(r=>{var a;return((a=r.component.name)==null?void 0:a.toLowerCase())===t}))==null?void 0:o.component)}async function Fs({component:e,script:n,props:t,req:s}){if(!(n!=null&&n.includes("getServerSideProps")))return null;const o=await lt(n,"getServerSideProps");if(!o)return null;const r=new Promise(i=>{setTimeout(()=>{i({})},Me*1e3)});return await Promise.race([r,le.Sandbox.callFunction({code:`${o}
33
-
34
- export async function getServerSidePropsWrapper(props) {
35
- const { location, fetch, props: componentProps } = props;
36
- // 使用局部变量而不是全局变量
37
- const originalLocation = typeof window !== 'undefined' ? window.location : undefined;
38
- const originalFetch = globalThis.fetch;
39
-
40
- try {
41
- globalThis.location = location;
42
- globalThis.fetch = fetch;
43
- return await getServerSideProps(componentProps);
44
- } finally {
45
- // 清理全局状态
46
- if (originalLocation) globalThis.location = originalLocation;
47
- if (originalFetch) globalThis.fetch = originalFetch;
48
- }
49
- }`,filename:`${e.name||e.id}.js`,moduleLoader:i=>{if(i==="@blocklet/pages-kit/builtin/utils")return`const { joinURL, withQuery, getQuery, getComponentMountPoint } = globalThis
50
- export { joinURL, withQuery, getQuery, getComponentMountPoint }
51
- `;if(i==="@blocklet/pages-kit/builtin/dayjs")return le.BuiltinModules.dayjs},global:{console:{log:(...i)=>{E.info(...i)},warn:(...i)=>{E.warn(...i)},error:(...i)=>{E.error(...i)}},getComponentMountPoint:_t.getComponentMountPoint,joinURL:U.joinURL,withQuery:U.withQuery,getQuery:U.getQuery},functionName:"getServerSidePropsWrapper",args:[{location:{href:U.joinURL(U.withHttps(s.hostname),s.originalUrl)},fetch:(i,{...d}={})=>{const c=typeof i=="string"&&i.startsWith("/")?U.joinURL(O.default.env.appUrl,i):i;if(typeof c=="string"&&U.parseURL(c).host===U.parseURL(O.default.env.appUrl).host){const u=s.get("cookie");if(u){const S=new ot.Headers(d.headers);S.set("cookie",u),d.headers=S}}return rs.default(c,{...d,timeout:Me*1e3}).then(u=>({ok:u.ok,status:u.status,statusText:u.statusText,headers:Object.fromEntries(u.headers.entries()),json:()=>u.json()}))},props:t}]})])}const ht=le.memoize(async(e,n,t)=>{if(!(e!=null&&e.includes(n)))return null;const s=await lt(e,n);if(s)try{return await le.Sandbox.callFunction({code:`
52
- ${s}
53
-
54
- export function get${n}SchemaWrapper() {
55
- return ${n};
56
- }
57
- `,filename:`${t}.js`,functionName:`get${n}SchemaWrapper`})}catch(o){return E.error(`获取 ${n} 失败`,{componentId:t,error:o}),null}return null},{keyGenerator:(e,n,t)=>{const s=Q.createHash("md5").update(e).digest("hex");return JSON.stringify(["getExportSchemaValueFromCode",s,n,t])},lruOptions:{max:100,ttl:1e3*60*60}}),$s="z8iZiDFg3vkkrPwsiba1TLXy3H9XHzFERsP8o",Ue="page",Fe="trigger-reload-project-resource",Je=$s,qs="z2qa7BQdkEb3TwYyEYC1psK6uvmGnHSUHt5RM";function be(e){e.observeDeep(n=>{n.some(t=>t.changes.keys.has("updatedAt")||t.changes.keys.has("publishedAt"))||e.set("updatedAt",new Date().toISOString())})}function yt(){return w.mkdtempSync(y.join(O.default.env.dataDir,"tmp-"))}function Ie(e,n,t=[]){return Array.isArray(e)?e.flatMap((s,o)=>Ie(s,n,[...t,o])):typeof e=="object"?e===null?[]:Object.entries(e).flatMap(([s,o])=>Ie(o,n,[...t,s])):n(e)?[t]:[]}function F(e){return e.filter(n=>n!=null)}function Hs(e){e.pages&&Object.keys(e.pages).forEach(t=>{const s=X.getYjsValue(e.pages[t]);s&&s instanceof H.Map&&be(s)});const n=X.getYjsValue(e.pages);n&&n instanceof H.Map&&n.observe(t=>{t.changes.keys.forEach((s,o)=>{if(s.action==="add"){const r=X.getYjsValue(e.pages[o]);r&&r instanceof H.Map&&be(r)}})})}function Bs(e){e.routes&&Object.keys(e.routes).forEach(t=>{var o;const s=X.getYjsValue((o=e.routes)==null?void 0:o[t]);s&&s instanceof H.Map&&be(s)});const n=X.getYjsValue(e.routes);n&&n instanceof H.Map&&n.observe(t=>{t.changes.keys.forEach((s,o)=>{var r;if(s.action==="add"){const a=X.getYjsValue((r=e.routes)==null?void 0:r[o]);a&&a instanceof H.Map&&be(a)}})})}function Gs(e,n){var t;for(const s of n||Object.keys(e.routes||{})){let o=s,r=[];if(s.includes("-")){const[a,...i]=s.split("-");o=a,r=i||[]}if(((t=e.routes)==null?void 0:t[o])!==void 0){e.routes[o].publishedAt=new Date().toISOString();const a=e.routes[o];if(!a||!a.params||a.params.length===0)continue;if(s.includes("-")&&r.length>0){const i=Ee.getRouteMetaDataByOptionIds(r,a);i&&(i.publishedAt=new Date().toISOString())}if(!n){const i=Ee.generateParamCombinations({basePath:a.path,params:a.params,routeId:a.id,paramsOptions:a.paramsOptions,currentIndex:0,currentParams:[],currentOptionIds:[],result:[]});for(const d of i)d.routeMetaData??(d.routeMetaData={}),d.routeMetaData.publishedAt=new Date().toISOString()}}}}function Re({page:e,route:n,state:t,routeId:s,routePathInfo:o}){var a,i,d,c,u,S,m,p,l;E.info(`Executing datasource data assembly, routeId: ${s}, routePathInfo: ${JSON.stringify(o)}`);const r={...Ht.cloneDeep(e),id:s,slug:(o==null?void 0:o.path)??n.path,createdAt:n.createdAt,updatedAt:((a=o==null?void 0:o.routeMetaData)==null?void 0:a.updatedAt)??n.updatedAt,publishedAt:((i=o==null?void 0:o.routeMetaData)==null?void 0:i.publishedAt)??n.publishedAt,isPublic:(((d=o==null?void 0:o.routeMetaData)==null?void 0:d.isPublic)??n.isPublic)&&n.isPublic};for(const f of t.supportedLocales){if(n.dataSource){let b=n.id;o&&(b=o.paramOptionIds.join("-"));const _=((S=(u=(c=n.dataSource.pathDataMappings)==null?void 0:c[b])==null?void 0:u.dataCache)==null?void 0:S[f.locale])??((l=(p=(m=n.dataSource.pathDataMappings)==null?void 0:m[b])==null?void 0:p.dataCache)==null?void 0:l[t.config.defaultLocale||"en"]);if(!_)continue;qt.setPageDataSource(r,t,f.locale,_)}o&&o.routeMetaData&&(o.routeMetaData.publishedAt=new Date().toISOString())}return r}const{uploadToMediaKit:Vs}=require("@blocklet/uploader-server"),Se=Zt.customAlphabet("abcdefghijklmnopqrstuvwxyz0123456789",16),ze=/^\w+(\w|-|\.)+\w+\.(jpe?g|png|gif|svg|bmp|webp|mp4|m4v|webm)$/,ie=/mediakit:\/\/([a-f0-9]{32}\.(jpe?g|png|gif|svg|bmp|webp|mp4|m4v|webm))/i,et=/mediakit:\/\/([a-f0-9]{32}\.(jpe?g|png|gif|svg|bmp|webp|mp4|m4v|webm))/gi,Js=1e4,zs=3e4,ge=0,xe=1,Ks=0,Ys=1,$e=O.default,ee=y.join(process.env.BLOCKLET_DATA_DIR,"site-state"),Ws=["production","draft"],Qs=["production"];function Oe(e){return(e==null?void 0:e.replace(/\//g,"|"))||""}function Xs(){var t;const e=$e.env.languages.map(s=>({locale:s.code,name:s.name})),n=(t=e[0])==null?void 0:t.locale;return{pageIds:[],pages:{},routeIds:[],routes:{},dataSourceIds:[],dataSources:{},components:{},supportedLocales:e,config:{defaultLocale:n},resources:{}}}const P=class P extends H.Doc{constructor(t){super();R(this,"syncedStore");R(this,"conns",new Map);R(this,"awareness");R(this,"releaseTimer");R(this,"awarenessChangeHandler",({added:t,updated:s,removed:o},r)=>{const a=t.concat(s,o);if(r!==null){const c=this.conns.get(r);c&&(t.forEach(u=>{c.add(u)}),o.forEach(u=>{c.delete(u)}))}const i=x.createEncoder();x.writeVarUint(i,xe),x.writeVarUint8Array(i,re.encodeAwarenessUpdate(this.awareness,a));const d=x.toUint8Array(i);this.conns.forEach((c,u)=>this.send(u,d))});R(this,"updateHandler",t=>{const s=x.createEncoder();x.writeVarUint(s,ge),ve.writeUpdate(s,t);const o=x.toUint8Array(s);this.conns.forEach((r,a)=>this.send(a,o))});R(this,"ensureDataStructure",()=>{var d;const{supportedLocales:t,pages:s,pageIds:o,config:r,routes:a,routeIds:i}=this.syncedStore;{const c=new Set(Object.keys(s));let u=0;for(;u<o.length;){const S=o[u];c.has(S)?(c.delete(S),u++):o.splice(u,1)}}{const c=new Set(Object.keys(a));let u=0;for(;u<i.length;){const S=i[u];c.has(S)?(c.delete(S),u++):i.splice(u,1)}}t.splice(0,t.length),t.push(...$e.env.languages.map(c=>({locale:c.code,name:c.name}))),r.defaultLocale=(d=t[0])==null?void 0:d.locale;{let c=0;const u=new Set;for(;c<t.length;){const{locale:S}=t[c];u.has(S)?t.splice(c,1):(c++,u.add(S))}}});R(this,"send",(t,s)=>{t.readyState!==Ks&&t.readyState!==Ys&&this.closeConn(t);try{t.send(s,o=>{o&&this.closeConn(t)})}catch{this.closeConn(t)}});R(this,"closeConn",t=>{if(t.removeAllListeners(),this.conns.has(t)){const s=this.conns.get(t);this.conns.delete(t),s&&re.removeAwarenessStates(this.awareness,Array.from(s),null)}t.close(),this.checkAndScheduleRelease()});R(this,"autoSave",it.default(()=>{w.mkdirSync(y.dirname(this.draftYjsFilePath),{recursive:!0}),w.writeFileSync(this.draftYjsFilePath,H.encodeStateAsUpdate(this))},Js));R(this,"save",({flush:t=!1}={})=>{this.autoSave(),t&&this.autoSave.flush()});R(this,"publish",async({mode:t,routes:s})=>{const o=await this.getState("draft"),r=await this.getState("production");await qe(o,r,{routes:s,mergeMode:"replace",deleteRoutes:!0,publishMode:t}),r.config.publishedAt=new Date().getTime(),Gs(this.syncedStore,s),await this.setState(t,r)});R(this,"mergeState",async(t,s)=>{var i,d,c;const o=JSON.parse(JSON.stringify(s));(i=t.config).fontFamily??(i.fontFamily={});const r=(d=o.config)==null?void 0:d.fontFamily,a=(c=t.config)==null?void 0:c.fontFamily;t.config.fontFamily.title=(r==null?void 0:r.title)||(a==null?void 0:a.title),t.config.fontFamily.description=(r==null?void 0:r.description)||(a==null?void 0:a.description),await new Promise((u,S)=>{this.transact(async()=>{try{const m=await qe(t,s);u(m)}catch(m){S(m)}})})});R(this,"addConnection",t=>{if(this.conns.has(t))return;this.cancelRelease(),t.binaryType="arraybuffer",this.conns.set(t,new Set),t.on("message",r=>this.messageListener(t,new Uint8Array(r)));let s=!0;const o=setInterval(()=>{if(!s)this.conns.has(t)&&this.closeConn(t),clearInterval(o);else if(this.conns.has(t)){s=!1;try{t.ping()}catch{this.closeConn(t),clearInterval(o)}}},zs);t.on("close",()=>{this.closeConn(t),clearInterval(o)}),t.on("pong",()=>{s=!0});{const r=x.createEncoder();x.writeVarUint(r,ge),ve.writeSyncStep1(r,this),this.send(t,x.toUint8Array(r));const a=this.awareness.getStates();if(a.size>0){const i=x.createEncoder();x.writeVarUint(i,xe),x.writeVarUint8Array(i,re.encodeAwarenessUpdate(this.awareness,Array.from(a.keys()))),this.send(t,x.toUint8Array(i))}}});R(this,"messageListener",(t,s)=>{try{const o=x.createEncoder(),r=ke.createDecoder(s),a=ke.readVarUint(r);switch(a){case ge:x.writeVarUint(o,ge),ve.readSyncMessage(r,o,this,null),x.length(o)>1&&(this.ensureDataStructure(),this.send(t,x.toUint8Array(o)));break;case xe:{re.applyAwarenessUpdate(this.awareness,ke.readVarUint8Array(r),t);break}default:E.warn(`Unsupported messageType ${a}`)}}catch(o){E.error(o)}this.save()});this.options=t,w.existsSync(this.draftYjsFilePath)&&H.applyUpdate(this,w.readFileSync(this.draftYjsFilePath)),this.syncedStore=Bt.reactive(X.syncedStore({pages:{},pageIds:[],components:{},supportedLocales:[],config:{},resources:{},routeIds:[],routes:{},dataSourceIds:[],dataSources:{}},this)),this.initObserver(),this.on("update",this.updateHandler),this.awareness=new re.Awareness(this),this.awareness.on("update",this.awarenessChangeHandler),this.ensureDataStructure()}static safeDeleteProjectStateDir(t){if(!t)throw new Error("Should provide project context");try{const s=y.join(ee,t),o=y.join(ee,`@del-${t}`);w.renameSync(s,o)}catch(s){E.error("Failed to safe delete project state dir:",s)}}static get projectIds(){return Ne.globSync("*/",{cwd:ee,ignore:["@del-*","@tmp-*",".*","staging","production","@backup-*"]})}static get allShared(){return this.projectIds.map(t=>P.shared(t))}static shared(t){if(!t)throw new Error("Should provide project context");let s=P.sharedInstances[t];return s||(s=new P({path:y.join(ee,t)}),P.sharedInstances[t]=s,Tt({projectId:t,pages:Te,components:Pe}),s)}static async getProductionState(t){var o,r;let s=P.productionStates.get(t);if(!s){const a=y.join(ee,t,"production");if(s=await Ke(a,{includeResources:!0})??Xs(),!((o=s==null?void 0:s.config)!=null&&o.defaultLocale)){s.config??(s.config={});const i=$e.env.languages.map(d=>({locale:d.code,name:d.name}));s.config.defaultLocale=(r=i[0])==null?void 0:r.locale}P.productionStates.set(t,s)}return{...s,resources:await je().then(async a=>{var S,m;const{pages:i,components:d}=ms.default(a,"pages","components");let c=d;const u=await J.findByPk(t);if(u!=null&&u.useAllResources)c=d;else{const l=(await Ce.findAll({where:{projectId:t}})).map(b=>b.componentId);c=Object.fromEntries(Object.entries(d||{}).filter(([b])=>l.includes(b)))}return Object.keys(((S=s==null?void 0:s.resources)==null?void 0:S.components)||{}).length>0&&(c={...c,...(m=s==null?void 0:s.resources)==null?void 0:m.components}),{pages:i,components:c}}).catch(()=>({}))}}destroy(){this.cancelRelease(),this.save({flush:!0}),this.conns.forEach((s,o)=>this.closeConn(o)),this.awareness.destroy();const t=y.basename(this.options.path);delete P.sharedInstances[t],super.destroy()}initObserver(){Hs(this.syncedStore),Bs(this.syncedStore)}get draftYjsFilePath(){return y.join(this.options.path,"draft.yjs")}static async getStateByProjectId(t,s){if(s==="draft"){const o=P.shared(t);return JSON.parse(JSON.stringify(o.syncedStore))}return P.getProductionState(t)}async getState(t){if(t==="draft")return JSON.parse(JSON.stringify(this.syncedStore));const s=y.basename(this.options.path);return P.getProductionState(s)}async setState(t,s){const o=await bt(s,{exportAssets:!1,includeResources:!0}),r=this.getPublishDir(t);if(w.mkdirSync(y.dirname(r),{recursive:!0}),w.rmSync(r,{force:!0,recursive:!0}),w.renameSync(o,r),t==="production"){const a=y.basename(this.options.path);P.productionStates.set(a,s)}}getPublishDir(t){return y.join(this.options.path,t)}checkAndScheduleRelease(){this.conns.size===0&&this.scheduleRelease()}scheduleRelease(){this.cancelRelease();const t=y.basename(this.options.path);this.releaseTimer=setTimeout(()=>{E.info(`[SiteState] releasing instance due to no active connections: ${t}`),this.conns.size===0&&(this.releaseTimer=void 0,this.destroy())},P.RELEASE_DELAY),E.info(`[SiteState] scheduled release for project ${t} in ${P.RELEASE_DELAY/1e3}s`)}cancelRelease(){if(this.releaseTimer){clearTimeout(this.releaseTimer),this.releaseTimer=void 0;const t=y.basename(this.options.path);E.info(`[SiteState] cancelled scheduled release for project ${t}`)}}static async pageUrlMap(t,s){var a,i;let{projectIds:o}=this;s&&(o=[s]);const r={};for(const d of o){const c=await J.findByPk(d);if(!c)continue;const u=await P.getStateByProjectId(d,t),S=c.slug||d,m=gs.default(O.default.env.languages.map(l=>l.code),u.supportedLocales.map(l=>l.locale)),p=(l,f)=>{S&&(r[U.joinURL("/",S,l)]={...f,shouldRedirect:!0,mainPage:!0}),r[U.joinURL("/",d,l)]={...f,shouldRedirect:!0,mainPage:!0};for(const b of m){const _={...f,locale:b};r[U.joinURL("/",b,d,l)]=_,S&&(r[U.joinURL("/",b,S,l)]=_)}};if(t==="draft")for(const l of u.routeIds||[]){const f=(a=u==null?void 0:u.routes)==null?void 0:a[l];if(!f)continue;if(f.params&&f.params.length>0){const C=Ee.generateParamCombinations({basePath:f.path,params:f.params,routeId:f.id,paramsOptions:f.paramsOptions,currentIndex:0,currentParams:[],currentOptionIds:[],result:[]});for(const L of C){const z=L.path,Z={projectId:d,projectSlug:S,pageSlug:z,pageId:f.displayTemplateId||"",routeId:l,defaultLocale:m==null?void 0:m[0],locales:m,publishedAt:u.config.publishedAt,isPublic:f.isPublic&&((i=L==null?void 0:L.routeMetaData)==null?void 0:i.isPublic)};p(z,Z)}}const b=f.path,_={projectId:d,projectSlug:S,pageSlug:b,pageId:f.displayTemplateId||"",routeId:l,defaultLocale:m==null?void 0:m[0],locales:m,publishedAt:u.config.publishedAt,isPublic:f.isPublic};p(b,_)}for(const l of u.pageIds){const f=u.pages[l];if(!f||t==="production"&&!f.isPublic)continue;const b=f.slug,_=c.slug||d,C={projectId:d,projectSlug:_,pageSlug:b,pageId:l,defaultLocale:m==null?void 0:m[0],locales:m,publishedAt:u.config.publishedAt,isPublic:f.isPublic,templateConfig:f.templateConfig};p(b,C)}}return r}getDocumentSize(){return H.encodeStateAsUpdate(this).byteLength}static getInstancesSizeInfo(){const t=[];for(const[s,o]of Object.entries(P.sharedInstances)){const r=o.getDocumentSize();t.push({projectId:s,sizeInBytes:r,sizeInMB:`${(r/(1024*1024)).toFixed(2)} MB`,activeConnections:o.conns.size})}return t}static startPeriodicCheck(){this.periodicCheckTimer||(this.periodicCheckTimer=setInterval(()=>{this.performPeriodicCheck()},this.PERIODIC_CHECK_INTERVAL),E.info(`[SiteState] periodic check started, interval: ${this.PERIODIC_CHECK_INTERVAL/(60*60*1e3)} hours`))}static stopPeriodicCheck(){this.periodicCheckTimer&&(clearInterval(this.periodicCheckTimer),this.periodicCheckTimer=void 0,E.info("[SiteState] periodic check stopped"))}static performPeriodicCheck(){const t=Object.keys(P.sharedInstances).length,s=[],o=[];for(const[r,a]of Object.entries(P.sharedInstances))a.conns.size===0?s.push({projectId:r,instance:a}):o.push({projectId:r,connections:a.conns.size});if(E.info(`[SiteState] periodic check summary: total instances: ${t}, with connections: ${o.length}, without connections: ${s.length}`),s.length>0){E.info(`[SiteState] releasing ${s.length} instances without connections:`,s.map(a=>a.projectId));let r=0;for(const{projectId:a,instance:i}of s)try{E.info(`[SiteState] releasing instance due to periodic check: ${a}`),i.destroy(),r++}catch(d){E.error(`[SiteState] failed to release instance ${a} during periodic check:`,d)}E.info(`[SiteState] periodic check completed: ${r}/${s.length} instances released successfully`)}else t>0?E.debug("[SiteState] periodic check: all instances have active connections"):E.debug("[SiteState] periodic check: no instances exist")}};R(P,"PRODUCTION_CACHE_TTL",7*24*60*60*1e3),R(P,"RELEASE_DELAY",5*60*1e3),R(P,"PERIODIC_CHECK_INTERVAL",2*60*60*1e3),R(P,"sharedInstances",{}),R(P,"productionStates",new He.LRUCache({max:100,ttl:P.PRODUCTION_CACHE_TTL})),R(P,"periodicCheckTimer");let G=P;async function Zs(e,n,t){if(!e||!w.existsSync(e)||!w.lstatSync(e).isFile())return null;let s=t[e];return s||(s=(async()=>{var o;try{const r=(o=await Vs({filePath:e,fileName:n}))==null?void 0:o.data;return r==null?void 0:r.filename}catch(r){return E.error(`Failed to upload asset ${e}:`,r),null}})(),t[e]=s),s}const St=async(e,n)=>{const t=y.basename(e),s=await Be.call({name:Je,path:U.joinURL("/uploads",t),responseType:"stream",method:"GET"});if(s.status>=200&&s.status<400){const o=w.createWriteStream(n);await ts.pipeline(s.data,o)}else throw new Error(`download asset failed ${s.status}`)},wt=async(e,n)=>{await Promise.all(e.map(async t=>{try{await St(t,y.join(n,y.basename(t)))}catch(s){E.error(`Failed to export assets: ${t}, ${s}`)}}))};function Et(e){return ze.test(e)?[e]:ie.test(e)?(et.lastIndex=0,Array.from(e.matchAll(et)).map(t=>t[1]).filter(t=>!!t)):[]}async function he(e,n,t){const{getFilename:s,exportAssets:o}=t,r=y.join(n,s(e));if(w.mkdirSync(y.dirname(r),{recursive:!0}),w.writeFileSync(r,te.stringify(e)),o){const i=Ie(e,d=>typeof d=="string"&&(ze.test(d)||ie.test(d))).map(d=>{const c=Ge.default(e,d);return Et(c)}).flat().filter(Boolean);await wt(i,y.dirname(r))}}const tt=new He.LRUCache({max:20,ttl:30*24*60*60*1e3});async function st(e,n,t){var i;const s=Ie(e,d=>typeof d=="string"&&(ze.test(d)||ie.test(d))),o=hs.default(2),r=s.map(d=>o(async()=>{try{const c=Ge.default(e,d),u=Et(c);for(const S of u){const m=y.basename(S),p=t.getFilePath(S,d),l=p?`${p}:${m}`:m,f=tt.get(l);if(f){ie.test(c)||Qe.default(e,d,f);return}const b=await Zs(p,m,n);b&&(ie.test(c)||Qe.default(e,d,b),tt.set(l,b))}}catch(c){E.error(`Failed to process upload for path ${d.join(".")}:`,c.message||c.reason)}})),a=await Promise.allSettled(r);(i=t.onFinish)==null||i.call(t,a)}async function bt(e,{exportAssets:n,pageIds:t="all",componentIds:s="all",rawConfig:o,includeResources:r=!1,routeIds:a="all"}={}){var ne,I,g,A,j,K,D,$,Y,fe,oe,me;const i=t==="all"?e.pageIds:t,d=ce.getComponentDependencies({state:e,pageIds:i,componentIds:s==="all"?Object.keys(e.components):s}),c=a==="all"?e.routeIds:a,u=(h,T)=>{var k;return{id:h.id,name:h.name,isTemplateSection:h.isTemplateSection??!1,templateDescription:h.templateDescription,llmConfig:h.llmConfig,component:h.component,config:h.config,visibility:h.visibility,properties:((k=h.locales)==null?void 0:k[T])??{}}},S=(h,T)=>{var k;return{id:h.id,createdAt:h.createdAt,updatedAt:h.updatedAt,publishedAt:h.publishedAt,isPublic:h.isPublic??!0,templateConfig:h.templateConfig,meta:((k=h.locales)==null?void 0:k[T])??{},sections:F(h.sectionIds.map(V=>{const B=h.sections[V];return B&&u(B,T)}))}},m=h=>({id:h.id,createdAt:h.createdAt,updatedAt:h.updatedAt,publishedAt:h.publishedAt,path:h.path,handler:h.handler,isPublic:h.isPublic??!0,params:h.params??[],enabledGenerate:h.enabledGenerate??!1,displayTemplateId:h.displayTemplateId,dataSource:h.dataSource}),p=F(c.map(h=>{const T=e.routes[h];return T&&m(T)})),l=F(e.supportedLocales.map(h=>h.locale).flatMap(h=>i.map(T=>{const k=e.pages[T];return k&&{locale:h,slug:k.slug,page:S(k,h)}}))),f=yt(),b=y.join(f,"pages");w.mkdirSync(b,{recursive:!0});const _=y.join(f,"components");w.mkdirSync(_,{recursive:!0});const C=y.join(f,"routes");w.mkdirSync(C,{recursive:!0});for(const{locale:h,slug:T,page:k}of l)await he(k,b,{getFilename:()=>`${Oe(T)||"index"}.${h}.yml`,exportAssets:n});for(const h of p)await he(h,C,{getFilename:()=>`${Oe(h.path)||"index"}.yml`,exportAssets:n});for(const h of d){const T=(ne=e.components[h])==null?void 0:ne.data;T&&await he(T,_,{getFilename:k=>`${k.name||"unnamed"}.${k.id}.yml`,exportAssets:n})}const L=y.join(f,".blocklet/pages/pages.config.yml");w.mkdirSync(y.dirname(L),{recursive:!0});const z={pages:F(i.map(h=>{const T=e.pages[h];return T&&{id:h,slug:T.slug}})),routes:F(c.map(h=>{const T=e.routes[h];return T&&{id:h,path:T.path}})),components:F(d.map(h=>{var k;const T=(k=e.components[h])==null?void 0:k.data;return T&&{id:h,name:T.name}})),...r?{resources:{components:F(Object.keys(((I=e.resources)==null?void 0:I.components)||{}).filter(h=>d.includes(h)).map(h=>{var T,k,V,B;return{id:h,name:(B=(V=(k=(T=e.resources)==null?void 0:T.components)==null?void 0:k[h])==null?void 0:V.component)==null?void 0:B.name}}))}}:{},supportedLocales:e.supportedLocales,config:e.config};w.writeFileSync(L,te.stringify(z));const Z=y.join(f,"config.source.json");if(o&&w.writeFileSync(Z,JSON.stringify(o)),r){const h=y.join(f,"resources"),T=y.join(h,"components");w.mkdirSync(T,{recursive:!0});for(const B of Object.keys(((g=e==null?void 0:e.resources)==null?void 0:g.components)??{}).filter(q=>d.includes(q))){const q=(K=(j=(A=e.resources)==null?void 0:A.components)==null?void 0:j[B])==null?void 0:K.component;q&&await he(q,T,{getFilename:W=>`${W.name||"unnamed"}.${W.id}.yml`,exportAssets:n})}const k=y.join(f,"chunks");w.mkdirSync(k,{recursive:!0});const{chunks:V}=await je();for(const B of Object.keys(((D=e==null?void 0:e.resources)==null?void 0:D.components)??{}).filter(q=>d.includes(q))){const q=(fe=(Y=($=e.resources)==null?void 0:$.components)==null?void 0:Y[B])==null?void 0:fe.component;if(q&&((oe=q.renderer)==null?void 0:oe.type)==="react-component"){const W=((me=q.renderer)==null?void 0:me.chunks)??[];if((W==null?void 0:W.length)>0)for(const De of W){const We=y.join(k,De),_e=V==null?void 0:V[De];try{_e&&w.existsSync(_e)&&!w.existsSync(We)&&w.copyFileSync(_e,We)}catch(Pt){E.error(`copy chunk ${De} error`,Pt.message)}}}}}return f}async function Ke(e,{importAssets:n,includeResources:t}={}){var r,a,i,d;if(!w.existsSync(e))return null;let s,o=!1;try{w.lstatSync(e).isDirectory()?s=e:/\.(tgz|gz|tar)$/.test(e)&&(o=!0,s=yt(),await ss.x({file:e,C:s}));const c=Ne.globSync("**/.blocklet/pages/pages.config.yml",{cwd:s,absolute:!0}).at(0),u=c&&y.join(y.dirname(c),"../../pages"),S=c&&y.join(y.dirname(c),"../../components"),m=c&&y.join(y.dirname(c),"../../chunks"),p=c&&y.join(y.dirname(c),"../../routes");if(!c)return null;const l=te.parse(w.readFileSync(c).toString()),f=(I,g,A)=>{let j=y.join(I,`${g}${A?`.${A}`:""}.yml`);return(!w.existsSync(j)||!w.lstatSync(j).isFile())&&(j=y.join(I,g,`index${A?`.${A}`:""}.yml`),!w.existsSync(j)||!w.lstatSync(j))?null:te.parse(w.readFileSync(j).toString())},b=(I,g)=>{try{const A=Ne.globSync(`*.${g}.yml`,{cwd:I,absolute:!0})[0];return A?te.parse(w.readFileSync(A).toString()):null}catch(A){E.error("parse component error",A)}return null},_=(I,g)=>{let A=y.join(I,`${g}.yml`);return(!w.existsSync(A)||!w.lstatSync(A).isFile())&&(A=y.join(I,g,"index.yml"),!w.existsSync(A)||!w.lstatSync(A))?null:te.parse(w.readFileSync(A).toString())},C=F(l.pages.map(({slug:I})=>{var K;const g=F(l.supportedLocales.map(({locale:D})=>{const $=u?f(u,Oe(I),D):void 0;if($)return{locale:D,page:$};const Y=u?f(u,I,D):void 0;return Y&&{locale:D,page:Y}})),A=(K=g[0])==null?void 0:K.page;if(!A)return null;const j=A.sections.map(D=>{const $=D.id||Se();return{id:$,component:D.component,config:D.config,name:D.name,isTemplateSection:D.isTemplateSection??!1,templateDescription:D.templateDescription,llmConfig:D.llmConfig,visibility:D.visibility,locales:Object.fromEntries(F(g.map(({locale:Y,page:fe})=>{const oe=fe.sections.find(me=>me.id===$);return oe&&[Y,oe.properties]})))}});return{id:A.id||Se(),createdAt:A.createdAt,updatedAt:A.updatedAt,publishedAt:A.publishedAt,isPublic:A.isPublic??!0,templateConfig:A.templateConfig,slug:I,sections:Object.fromEntries(j.map(D=>[D.id,D])),sectionIds:j.map(D=>D.id),locales:Object.fromEntries(g.map(({locale:D,page:$})=>[D,$.meta]))}})),L=F(((r=l==null?void 0:l.routes)==null?void 0:r.map(({path:I})=>{const g=p?_(p,Oe(I)):void 0;return{...g,id:(g==null?void 0:g.id)||Se(),createdAt:(g==null?void 0:g.createdAt)??new Date().toISOString(),updatedAt:(g==null?void 0:g.updatedAt)??new Date().toISOString(),publishedAt:new Date(0).toISOString(),path:(g==null?void 0:g.path)??`/${g==null?void 0:g.id}`,params:g==null?void 0:g.params,handler:(g==null?void 0:g.handler)??"Pages Kit",isPublic:(g==null?void 0:g.isPublic)??!0,enabledGenerate:(g==null?void 0:g.enabledGenerate)??!1,displayTemplateId:(g==null?void 0:g.displayTemplateId)??void 0,dataSource:(g==null?void 0:g.dataSource)??{}}}))??[]),z=S?F(((a=l.components)==null?void 0:a.map(({id:I})=>b(S,I)))??[]):[];if(n){const I=(...g)=>{E.info(`[${o?y.basename(e):y.basename(y.join(e,"../../../../"))}] importAssets:`,...g)};try{I("wait image-bin api ready"),await ys.default({resources:[`${Be.getComponentWebEndpoint(Ss)}/api/sdk/uploads`],validateStatus:j=>j>=200&&j<=500}),I("image-bin api is ready");const g={},A={};I("start to upload assets"),await Promise.allSettled([st(z,g,{getFilePath:j=>S&&y.join(S,j),onFinish:j=>{I(`upload ${j.length} component assets`)}}),st(C,A,{getFilePath:(j,K)=>{const D=Ge.default(C,K.slice(0,1));return u&&y.join(u,y.dirname(D.slug),j)},onFinish:j=>{I(`upload ${j.length} page assets`)}})]),I("upload assets done"),global.gc&&global.gc()}catch(g){I("Error during asset import:",g)}}const Z={};if(t){const I=c&&y.join(y.dirname(c),"../../resources/components"),g=F(((d=(i=l.resources)==null?void 0:i.components)==null?void 0:d.map(({id:A})=>b(I,A)))??[]);g.length>0&&(Z.components=Object.fromEntries(g.map((A,j)=>[A.id,{index:j,component:A}])))}const ne={};if(m&&w.existsSync(m)){const I=w.readdirSync(m);for(const g of I)ne[g]=y.join(m,g)}return{supportedLocales:l.supportedLocales,pageIds:C.map(I=>I.id),components:Object.fromEntries(z.map((I,g)=>[I.id,{index:g,data:I}])),pages:Object.fromEntries(C.map(I=>[I.id,I])),config:l.config||{},resources:Z,chunks:ne,routeIds:L.map(I=>I.id),routes:Object.fromEntries(L.map(I=>[I.id,I])),dataSourceIds:[],dataSources:{}}}finally{o&&s&&w.rmSync(s,{force:!0,recursive:!0})}}async function qe(e,n,{routes:t,mergeMode:s="byUpdateTime",deleteRoutes:o=!1,publishMode:r=void 0}={}){try{r&&ut(r)}catch(m){E.error("clear preload page cache error",{error:m})}const{pages:a,pageIds:i,routeIds:d,routes:c,supportedLocales:u}=e;if(r==="production"){let m=t??[],p=null;for(const l of d??[]){const f=c==null?void 0:c[l];if(f!=null&&f.params&&(f==null?void 0:f.params.length)>0&&(f!=null&&f.paramsOptions)&&(f==null?void 0:f.paramsOptions.length)>0){const b=Ee.generateParamCombinations({basePath:f.path,params:f.params,routeId:f.id,paramsOptions:f.paramsOptions,currentIndex:0,currentParams:[],currentOptionIds:[],result:[]}),_=Object.fromEntries(b.map(C=>[`${l}-${C.paramOptionIds.join("-")}`,C]));p={...p||{},..._},t||(m=[...m,...b.map(C=>`${l}-${C.paramOptionIds.join("-")}`)])}else t||m.push(l)}E.info("routeIds to be published: ",m);for(const l of m){let f=l;if(f.includes("-")){const[C]=f.split("-");f=C}const b=c==null?void 0:c[f];if(!b){const C=n.pageIds.indexOf(f);C!==-1&&o&&(n.pageIds.splice(C,1),delete n.pages[f]);for(const L of n.pageIds)L.includes(`${f}-`)&&(n.pageIds.splice(n.pageIds.indexOf(L),1),delete n.pages[L]);E.info("delete main route page",f);continue}if(l.includes("-")&&!(p!=null&&p[l])){const C=n.pageIds.indexOf(l);C!==-1&&o&&(n.pageIds.splice(C,1),delete n.pages[l]),E.info("delete page",l);continue}if(!b.displayTemplateId){E.info("no display template",l);continue}const _=a[b.displayTemplateId];if(!_){E.info("no template page",l);continue}if(n.pageIds.includes(l)){if(E.info("has need update page",l),s==="replace")n.pages[l]=Re({page:_,route:b,state:e,routeId:l,routePathInfo:p==null?void 0:p[l]}),E.info("replace page",l);else if(s==="byUpdateTime"){const C=n.pages[b.id];(!C||b.updatedAt&&b.updatedAt>C.updatedAt)&&(n.pages[l]=Re({page:_,route:b,state:e,routeId:l,routePathInfo:p==null?void 0:p[l]}),E.info("replace page by update time",l))}}else n.pageIds.push(l),n.pages[l]=Re({page:_,route:b,state:e,routeId:l,routePathInfo:p==null?void 0:p[l]}),E.info("add page",l)}if(o&&!t)for(const l of n.pageIds)m!=null&&m.includes(l)||(delete n.pages[l],E.info("delete page",l)),n.pageIds=[...n.pageIds].filter(f=>m==null?void 0:m.includes(f))}else{for(const m of i){const p=a[m];if(p)if(n.pageIds.includes(p.id)){if(s==="replace")n.pages[p.id]=p;else if(s==="byUpdateTime"){const l=n.pages[p.id];(!l||p.updatedAt&&p.updatedAt>l.updatedAt)&&(n.pages[p.id]=p)}}else n.pageIds.push(p.id),n.pages[p.id]=p}for(const m of d){const p=c[m];if(p)if(n.routeIds.includes(p.id)){if(s==="replace")n.routes[p.id]=p;else if(s==="byUpdateTime"){const l=n.routes[p.id];(!l||p.updatedAt&&p.updatedAt>l.updatedAt)&&(n.routes[p.id]=p)}}else n.routeIds.push(p.id),n.routes[p.id]=p}}if(n.supportedLocales.splice(0,n.supportedLocales.length),n.supportedLocales.push(...us.default(u)),o)for(const m of Object.keys(n.components))delete n.components[m];let S=JSON.parse(JSON.stringify(e.components));S=Object.fromEntries(await Promise.all(Object.entries(S).map(async([m,p])=>{const l=await It(p==null?void 0:p.data);return[m,{...p,data:l}]}))),Object.assign(n.components,S),Object.assign(n.config,JSON.parse(JSON.stringify(e.config))),n.resources.components=JSON.parse(JSON.stringify(e.resources.components||{}))}const It=Ve(async e=>{var n;if(!fs.default(e==null?void 0:e.properties))return e;if(((n=e==null?void 0:e.renderer)==null?void 0:n.type)==="react-component"){const{script:t}=(e==null?void 0:e.renderer)||{};if(t&&t.includes("PROPERTIES_SCHEMA"))try{const s=await ht(t,"PROPERTIES_SCHEMA",e.id);s&&s.length>0&&e&&(e.properties={},s.forEach((o,r)=>{e!=null&&e.properties&&(e.properties[o.id]={index:r,data:o})}))}catch(s){E.error("checkPropertiesFromCode error",{componentId:e.id,name:e.name},{error:s})}}return e},{keyGenerator:e=>{var c,u,S,m;const n=(e==null?void 0:e.id)||"",t=(e==null?void 0:e.name)||"",s=((c=e==null?void 0:e.renderer)==null?void 0:c.type)||"",o=(e==null?void 0:e.properties)||{},r=(e==null?void 0:e.updatedAt)||"",a=Q.createHash("md5").update(JSON.stringify(o)).digest("hex");let i="",d="";return((u=e==null?void 0:e.renderer)==null?void 0:u.type)==="react-component"&&(i=Q.createHash("md5").update(((S=e==null?void 0:e.renderer)==null?void 0:S.script)||"").digest("hex"),d=Q.createHash("md5").update(((m=e==null?void 0:e.renderer)==null?void 0:m.editComponent)||"").digest("hex")),JSON.stringify(["checkPropertiesFromCode",n,t,s,a,r,i,d])},lruOptions:{max:100,ttl:1e3*60*60},subdir:"checkPropertiesFromCode"});let Ae,se,Te,Pe,Ye;function Ot(){return Ae=(async()=>{const e=Be.getResources({types:[{did:Je,type:Ue},{did:qs,type:Ue}]});se=(await Promise.all(e.map(async t=>{const s=t.path?await Ke(t.path,{importAssets:!1}):void 0;return s?{blockletId:t.did,state:s,blockletTitle:t.title}:void 0}))).filter(t=>!!t),Te=se.reduce((t,s)=>Object.assign(t,Object.fromEntries(Object.values(s.state.pages).map(o=>o?[o==null?void 0:o.id,{page:o,blockletId:s.blockletId}]:[]))),{});const n=se.reduce((t,s)=>Object.assign(t,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([t,s])=>{const o=await It(s.component);return[t,{...s,component:o}]}))),Ye=se.reduce((t,s)=>Object.assign(t,s.state.chunks),{})})(),Ae}function At(e){const n=it.default(async()=>{await Ot().catch(t=>{E.error("load resource states error",{error:t})}),await(e==null?void 0:e({states:se,pages:Te,components:Pe,chunks:Ye}))},3e3,{leading:!1,trailing:!0});return n(),O.default.events.on(O.default.Events.componentAdded,n),O.default.events.on(O.default.Events.componentRemoved,n),O.default.events.on(O.default.Events.componentStarted,n),O.default.events.on(O.default.Events.componentStopped,n),O.default.events.on(O.default.Events.componentUpdated,n),O.default.events.on(Fe,n),()=>{O.default.events.off(O.default.Events.componentAdded,n),O.default.events.off(O.default.Events.componentRemoved,n),O.default.events.off(O.default.Events.componentStarted,n),O.default.events.off(O.default.Events.componentStopped,n),O.default.events.off(O.default.Events.componentUpdated,n),O.default.events.off(Fe,n)}}const Ct=Symbol.for("GLOBAL_RESOURCE_STATES_LISTENER_KEY"),we=globalThis;var nt;(nt=we[Ct])==null||nt.call(we);we[Ct]=At(async({pages:e,components:n})=>{const{projectIds:t}=G;E.info(`start update resource states projects(${t.length})`,t),await Promise.race([new Promise(s=>{setTimeout(()=>{s({})},30*1e3)}),Promise.all(t.map(async s=>{Tt({projectId:s,pages:e,components:n})}))]).catch(s=>{E.error("update resource states failed:",s)})});G.startPeriodicCheck();process.on("beforeExit",()=>{G.stopPeriodicCheck()});process.on("SIGINT",()=>{G.stopPeriodicCheck(),process.exit(0)});process.on("SIGTERM",()=>{G.stopPeriodicCheck(),process.exit(0)});async function Tt({projectId:e,pages:n,components:t}){const s=G.sharedInstances[e];if(!s){E.info(`projectId: ${e} not found in sharedInstances`);return}s.syncedStore.resources.pages=n;const o=await J.findByPk(e);if(o!=null&&o.useAllResources)s.syncedStore.resources.components=t;else{const a=(await Ce.findAll({where:{projectId:e}})).map(d=>d.componentId),i=Object.fromEntries(Object.entries(t||{}).filter(([d])=>a.includes(d)));s.syncedStore.resources.components=i}E.info(`update [${e}] resource states:`,{pages:Object.keys(s.syncedStore.resources.pages||{}).length,components:Object.keys(s.syncedStore.resources.components||{}).length})}async function en(){E.info("trigger reload all project resource"),O.default.events.emit(Fe)}async function je({ensureLoaded:e=!0}={}){return e&&(Ae??(Ae=Ot()),await Ae),{states:se,pages:Te,components:Pe,chunks:Ye}}exports.COMPONENT_DID=Je;exports.CUSTOM_COMPONENT_CACHE_DURATION_IN_SECONDS=dt;exports.GET_SERVER_SIDE_PROPS_TIMEOUT_IN_SECONDS=Me;exports.PUBLISH_MODES=Qs;exports.Project=J;exports.RESOURCE_TYPE=Ue;exports.SITE_STATE_PATH=ee;exports.STATE_MODES=Ws;exports.SiteState=G;exports.clearPreloadComponentsCache=pt;exports.clearPreloadComponentsCacheByMode=ut;exports.downloadAsset=St;exports.downloadAssets=wt;exports.fromPackage=Ke;exports.getComponentFromState=de;exports.getComponentFromStateByName=Us;exports.getExportSchemaValueFromCode=ht;exports.getMultiTenantAllProjectAccessPassports=bs;exports.getPreloadComponent=mt;exports.getPreloadComponents=Ns;exports.getPreloadComponentsCacheKey=ft;exports.getResourceStates=je;exports.initPackResourceStates=At;exports.isMultiTenant=Es;exports.logger=E;exports.mergeState=qe;exports.nextId=Se;exports.toPackage=bt;exports.triggerReloadAllProjectResource=en;
@@ -1 +0,0 @@
1
- "use strict";const E=require("react/jsx-runtime"),$=require("@mui/material"),b=require("ufo"),Z=require("@blocklet/js-sdk"),H=require("lodash/isEmpty"),ee=require("yaml"),te=require("@arcblock/ux/lib/Locale/context"),N=require("@syncedstore/core"),ne=require("@syncedstore/react"),oe=require("ahooks"),C=require("immer"),re=require("lodash/debounce"),se=require("nanoid"),u=require("react"),V=require("react-router-dom"),ce=require("y-indexeddb"),ie=require("y-websocket"),ae=require("yjs");require("@blocklet/pages-kit/types");const _=t=>t&&t.__esModule?t:{default:t};function de(t){if(t&&t.__esModule)return t;const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const i in t)if(i!=="default"){const S=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(n,i,S.get?S:{enumerable:!0,get:()=>t[i]})}}return n.default=t,Object.freeze(n)}const ue=_(H),le=de(ee),fe=_(N),W=_(re),me=t=>{const n=blocklet==null?void 0:blocklet.componentMountPoints.find(i=>i.name===t);return n?n.mountPoint:"/"};function J(){const{pathname:t}=window.location,n=t.match(/\/admin\/(maker|previewer)\/([^/]+)/),i=n==null?void 0:n[2],S=window.__PROJECT_ID__;if(!i&&!S)throw new Error("Unable to get projectId from pathname");return i||S}function Se(t){return`${t}:pages:version`}function we(t,n){return n==="yaml"?ue.default(t)?"":le.stringify(t,{indent:2}):n==="json"?JSON.parse(JSON.stringify(t||{})):n==="array"?JSON.parse(JSON.stringify(t||[])):t}function pe({error:t}){return E.jsx($.Box,{children:E.jsx($.Alert,{severity:"error",children:t.message})})}var G;const A=((G=window.blocklet)==null?void 0:G.prefix)||"/",L=Z.createAxios({timeout:200*1e3}),Pe=window.location.protocol==="https:"?"wss":"ws",Ie=t=>b.joinURL(`${Pe}://${window.location.hostname}`,A,`api/${t}/ws/pages`),ge="z8ia1mAXo8ZE7ytGF36L5uBf9kD2kenhqFGp9";var F;(F=blocklet==null?void 0:blocklet.componentMountPoints.find(t=>t.did===ge))!=null&&F.mountPoint||b.joinURL(A,"/image-bin");function je(t){return t&&!/^(https?:\/\/|\/)/.test(t)?window.location.origin+b.joinURL(A,"uploads",t):t}const ye=window.innerWidth<=750;function Ce(t,n,i){if(!t||/\.gif/.test(t))return t;const S=(ye?n/1.5:n)*(i==="quality"?1.5:1);return be(t,{imageFilter:"resize",w:S,f:"webp"})}function be(t,n){return!t||!n?t:b.withQuery(t,n)}async function he(t){return L.get(`/api/projects/${t}`).then(n=>n.data)}async function ve(t){return L.post(`/api/projects/${t.id}/update`,t).then(n=>n.data)}const xe=500,x=se.customAlphabet("abcdefghijklmnopqrstuvwxyz0123456789",16),z=u.createContext(null);function Oe({url:t,name:n,children:i,waitingSynced:S}){const[g,P]=u.useState(!1),{locale:j}=te.useLocaleContext(),w=R(),e=`${w}:MakerLocalState`,o=`${w}:${n}`,[s,r]=oe.useLocalStorageState(e,{defaultValue:{},listenStorageChange:!0}),c=u.useRef(s);c.current=s;const a=u.useMemo(()=>fe.default({dataSourceIds:[],dataSources:{},pages:{},pageIds:[],routes:{},routeIds:[],components:{},supportedLocales:[],config:{},resources:{}}),[]),d=u.useMemo(()=>N.getYjsDoc(a),[a]);u.useMemo(()=>new ce.IndexeddbPersistence(o,d),[o,d]);const p=u.useMemo(()=>new ie.WebsocketProvider(t,o,d,{params:{},resyncInterval:5*60*1e3}),[t,o,d]),h=u.useCallback(()=>{p&&(p.disconnect(),p.connect())},[p]),y=u.useMemo(()=>new ae.UndoManager([d.getArray("pageIds"),d.getMap("pages"),d.getArray("supportedLocales"),d.getMap("config"),d.getMap("dataSources"),d.getArray("dataSourceIds"),d.getArray("routeIds"),d.getMap("routes")],{doc:d}),[d]),[v,O]=u.useState(null),[M,k]=u.useState(!1),[q,D]=u.useState(void 0),U=u.useCallback(async()=>{if(w){k(!0);try{const l=await he(w);O(l)}catch(l){console.error("Failed to fetch project:",l)}finally{k(!1)}}},[w]),T=u.useCallback(async(l,f)=>{var I;if(D(void 0),!!w){f!=null&&f.optimisticUpdate&&v&&O(m=>({...m,...l}));try{const m=await ve({...l});O(m)}catch(m){console.error("Failed to update project:",m),f!=null&&f.optimisticUpdate&&O(v),D((I=m==null?void 0:m.response)==null?void 0:I.data)}}},[w,v]);u.useEffect(()=>{w&&U()},[w,U]);const Y=u.useMemo(()=>({doc:d,state:a,localState:{...s,currentLocale:j},setLocalState:l=>r(typeof l=="function"?f=>l(f??{}):l),undoManager:y,projectState:{project:v,isLoadingProject:M,error:q},updateProject:T,forceSync:h}),[d,a,JSON.stringify(s),r,y,v,M,T,q,j,h]);return u.useEffect(()=>{y.on("stack-item-added",({stackItem:l})=>{const{currentPageId:f,currentLocale:I,pages:m}=c.current;l.meta.set("localState",{currentPageId:f,currentLocale:I,pages:m})}),y.on("stack-item-popped",({stackItem:l})=>{const f=l.meta.get("localState");f&&r(I=>({...I,...f}))})},[y,r]),u.useEffect(()=>{p.awareness.setLocalState(s)},[p,s]),u.useEffect(()=>{p.once("synced",()=>P(!0));const l=()=>{r(m=>({...m,networkStatus:void 0}))},f=()=>{r(m=>({...m,networkStatus:"offline"}))},I=W.default(({status:m})=>{m==="connected"?l():m==="disconnected"&&f()},xe);return p.on("status",I),window.addEventListener("online",l),window.addEventListener("offline",f),()=>{p.off("status",I),window.removeEventListener("online",l),window.removeEventListener("offline",f)}},[p,r]),S&&!g?null:E.jsx(z.Provider,{value:Y,children:i})}const B=()=>{const t=u.useContext(z);if(!t)throw new Error("Context is null");const n=ne.useSyncedStore(t.state),{setLocalState:i,localState:S}=t,g=V.useNavigate(),P=R(),j=u.useMemo(()=>({setCurrentSectionId:(e,o)=>{var s,r;e===S.currentPageId&&o===((r=(s=S.pages)==null?void 0:s[e])==null?void 0:r.currentSectionId)||(g(b.joinURL("/admin/maker",P??"","pages",e)),i(c=>C.produce(c,a=>{var d;a.currentPageId=e,a.currentComponentId=void 0,a.customComponentPreviewerProperties={},o!==void 0&&(a.pages??(a.pages={}),(d=a.pages)[e]??(d[e]={}),a.pages[e].currentSectionId=o??void 0),o?window.sessionStorage.setItem("iframe_show_id",`"${o}"`):window.sessionStorage.removeItem("iframe_show_id")})))},setCurrentComponentId:e=>{e!==S.currentComponentId&&(g(b.joinURL("/admin/maker",P??"","components",e)),i(o=>C.produce(o,s=>{s.currentComponentId=e,s.customComponentPreviewerProperties={}})))},setCurrentRouteId:({routeId:e,dynamicParams:o})=>{i(s=>C.produce(s,r=>{r.currentRouteId=e,r.currentDynamicParams=o}))},setCustomComponentPreviewerProperties:(()=>{const e={},o=W.default(()=>{i(s=>C.produce(s,r=>{r.customComponentPreviewerProperties={...r==null?void 0:r.customComponentPreviewerProperties,...e},Object.keys(e).forEach(c=>delete e[c])}))},5);return s=>{Object.assign(e,s),o()}})(),setRouteGenerateProcess:e=>{i(o=>C.produce(o,s=>{e?s.routeGenerateProcess={...s.routeGenerateProcess,...e}:s.routeGenerateProcess={}}))},resetRouteGenerateProcess:()=>{i(e=>C.produce(e,o=>{o.routeGenerateProcess={progress:"complete"}}))}}),[i,g,P]),w=u.useMemo(()=>({addPage:(e,o)=>{var c,a,d,p,h,y;const s=(e==null?void 0:e.id)??x(),r={...e,id:s,createdAt:(e==null?void 0:e.createdAt)??new Date().toISOString(),updatedAt:(e==null?void 0:e.updatedAt)??new Date().toISOString(),publishedAt:new Date(0).toISOString(),slug:(e==null?void 0:e.slug)??`/${s}`,sections:(e==null?void 0:e.sections)??{},sectionIds:(e==null?void 0:e.sectionIds)??[],isPublic:(e==null?void 0:e.isPublic)??!0,templateConfig:(e==null?void 0:e.templateConfig)??{isTemplate:((c=e==null?void 0:e.templateConfig)==null?void 0:c.isTemplate)??!0,displayTemplateId:((a=e==null?void 0:e.templateConfig)==null?void 0:a.displayTemplateId)??void 0,dataSourceIds:((d=e==null?void 0:e.templateConfig)==null?void 0:d.dataSourceIds)??void 0,dataSourceParameters:((p=e==null?void 0:e.templateConfig)==null?void 0:p.dataSourceParameters)??{},enabledGenerate:((h=e==null?void 0:e.templateConfig)==null?void 0:h.enabledGenerate)??!1,agentId:((y=e==null?void 0:e.templateConfig)==null?void 0:y.agentId)??void 0}};return t.doc.transact(()=>{n.pages[r.id]=r,n.pageIds.splice(o??n.pageIds.length,0,r.id)}),r},addRoute:(e,o)=>{const s=(e==null?void 0:e.id)??x(),r={...e,id:s,createdAt:(e==null?void 0:e.createdAt)??new Date().toISOString(),updatedAt:(e==null?void 0:e.updatedAt)??new Date().toISOString(),publishedAt:new Date(0).toISOString(),path:(e==null?void 0:e.path)??`/${s}`,handler:(e==null?void 0:e.handler)??"Pages Kit",isPublic:(e==null?void 0:e.isPublic)??!0,params:(e==null?void 0:e.params)??[],enabledGenerate:(e==null?void 0:e.enabledGenerate)??!1,displayTemplateId:(e==null?void 0:e.displayTemplateId)??void 0,dataSource:(e==null?void 0:e.dataSource)??{}};return t.doc.transact(()=>{n.routes??(n.routes={}),n.routeIds??(n.routeIds=[]),n.routes[r.id]=r,n.routeIds.splice(o??n.routeIds.length,0,r.id)}),r},deleteRoute:e=>{var s;if(!e)return;const o=(s=n.routeIds)==null?void 0:s.indexOf(e);o!==void 0&&o!==-1&&t.doc.transact(()=>{var r,c;(r=n.routeIds)==null||r.splice(o,1),(c=n.routes)==null||delete c[e]})},deletePage:e=>{const o=n.pageIds.indexOf(e);o!==-1&&t.doc.transact(()=>{n.pageIds.splice(o,1),delete n.pages[e]})},movePage:(e,o)=>{const{pageIds:s}=n,r=s.indexOf(e);r>=0&&s.splice(o,0,...s.splice(r,1))},addSection:(e,o,s)=>{const r=n.pages[e];if(!r)throw new Error(`Page ${e} is not exists`);const c={...o,id:o.id??x(),isTemplateSection:o.isTemplateSection??!0,llmConfig:o.llmConfig??{}};return t.doc.transact(()=>{r.sections[c.id]=c,r.sectionIds.splice(s??r.sectionIds.length,0,c.id)}),c},deleteSection:(e,o)=>{const s=n.pages[e];if(!s)throw new Error(`Page ${e} is not exists`);const r=s.sectionIds.indexOf(o);r!==-1&&t.doc.transact(()=>{s.sectionIds.splice(r,1),delete s.sections[o]})},toggleSectionVisibility:(e,o,s)=>{const r=n.pages[e];if(!r)throw new Error(`Page ${e} is not exists`);const c=r.sections[o];c&&(c.visibility=s)},moveSection:(e,o,s)=>{const r=n.pages[e];if(!r)throw new Error(`Page ${e} is not exists`);const{sectionIds:c}=r,a=c.indexOf(o);a>=0&&c.splice(s,0,...c.splice(a,1))},addDataSource:e=>{const o=e.id??x(),s={...e??{},id:o,createdAt:new Date().toISOString()};return t.doc.transact(()=>{n.dataSourceIds??(n.dataSourceIds=[]),n.dataSources??(n.dataSources={}),n.dataSourceIds.push(o),n.dataSources[o]=s}),n.dataSources[o]},deleteDataSource:e=>{const o=n.dataSourceIds.indexOf(e);o!==-1&&t.doc.transact(()=>{n.dataSourceIds.splice(o,1),delete n.dataSources[e]})}}),[n,t.doc]);return{...t,state:n,actions:w,localActions:j,get currentPage(){const{localState:{currentPageId:e}}=t;return e?n.pages[e]:void 0},get currentSection(){var r,c,a;const{localState:{currentPageId:e,...o}}=t;if(!e)return;const s=(c=(r=o.pages)==null?void 0:r[e])==null?void 0:c.currentSectionId;if(s)return(a=n.pages[e])==null?void 0:a.sections[s]},get currentRoute(){var o;const{localState:{currentRouteId:e}}=t;return e?(o=n.routes)==null?void 0:o[e]:void 0}}},R=()=>{const{projectId:t}=V.useParams();return t??J()??""},Ee=()=>window.__PROJECT_SLUG__??"";function K(t){var S,g;const{resources:n}=t;if(!n.components)return{};const i={};return(g=(S=window==null?void 0:window.blocklet)==null?void 0:S.componentMountPoints)==null||g.forEach(P=>{i[P.did]=P}),Object.fromEntries(Object.entries(n.components).map(([P,{blockletId:j,component:w}])=>{var e;return[P,{data:w,blockletId:j,blockletTitle:((e=i[j])==null?void 0:e.title)||j}]}))}function Q(t){const{components:n}=t;return n||{}}function X(t){return{...K(t),...Q(t)}}const _e=()=>X(B().state);exports.ErrorView=pe;exports.StoreProvider=Oe;exports.api=L;exports.autoResizeImage=Ce;exports.getAllComponents=X;exports.getCustomComponents=Q;exports.getImageAbsoluteUrl=je;exports.getMountPoint=me;exports.getProjectIdFromPathnameOrWindow=J;exports.getProjectPageVersionKey=Se;exports.getResourceComponents=K;exports.getWssURL=Ie;exports.nextId=x;exports.transformValue=we;exports.useAllComponents=_e;exports.useProjectId=R;exports.useProjectSlug=Ee;exports.useStore=B;