@baseplate-dev/project-builder-web
Version:
Web interface for constructing project builder JSON
1 lines • 71.7 kB
JavaScript
import{c as P,m as Me,a as F,d as u,D as ct,g as D,R as be,b as dt,s as ie,e as Z,f as Y,h as T,i as Q,j as N,k as ut,l as Ne,n as mt,o as Se,p as Mt,M as Nt,q as Ce,r as Ft}from"../model-merger-DsXmt1nu.js";import{I as la,G as ca,H as da,u as ua,F as ma,L as pa,B as fa,C as ha,E as ga,K as ya,J as ba,w as ka,t as wa,y as Ra,A as Sa,z as Ca,v as Ea,x as Ta}from"../model-merger-DsXmt1nu.js";import{p as jt,c as pt,f as $t}from"../index-D5UX5AHP.js";import{i as f}from"../_virtual___federation_fn_import-o6aKHb82.js";import{i as qe}from"../isEqual-C420KeG-.js";import{p as Fe}from"../immer-B7fdkLVi.js";import{s as zt}from"../sortBy-C9bvycg5.js";import{i as He}from"../inflection-C1nKqrJS.js";function ne(e,t){const n={};for(let o=0;o<e.length;o++){const r=e[o],a=t(r);Object.hasOwn(n,a)||(n[a]=[]),n[a].push(r)}return n}function pe(e,t){const n={};for(let o=0;o<e.length;o++){const r=e[o],a=t(r);n[a]=r}return n}function ke(e){return Array.from(new Set(e))}function ft(...e){return function(...t){let n=e.length?e[0].apply(this,t):t[0];for(let o=1;o<e.length;o++)n=e[o].call(this,n);return n}}function je(e,t){const n={},o=Object.keys(e);for(let r=0;r<o.length;r++){const a=o[r],i=e[a];t(i,a)&&(n[a]=i)}return n}function _t(){const e=new Map;return{registerCompiler(t){if(e.has(t.name))throw new Error(`Admin CRUD action with name ${t.name} is already registered`);e.set(t.name,t)},getCompiler(t,n=[]){const o=n.find(a=>a.name===t);if(o)return o;const r=e.get(t);if(!r)throw new Error(`Unable to find action with name ${t}`);return r}}}const yr=P("core/admin-crud-action-compiler",{defaultInitializer:_t});function br(e){return e}function Ot(){const e=new Map;return{registerCompiler(t){if(e.has(t.name))throw new Error(`Admin CRUD column with name ${t.name} is already registered`);e.set(t.name,t)},getCompiler(t,n=[]){const o=n.find(a=>a.name===t);if(o)return o;const r=e.get(t);if(!r)throw new Error(`Unable to find column with type ${t}`);return r},getColumnCompilers(){return e}}}const kr=P("core/admin-crud-column-compiler",{defaultInitializer:Ot});function xt(){const e=new Map;return{registerCompiler(t){if(e.has(t.name))throw new Error(`Admin CRUD input with name ${t.name} is already registered`);e.set(t.name,t)},getCompiler(t,n=[]){const o=n.find(a=>a.name===t);if(o)return o;const r=e.get(t);if(!r)throw new Error(`Unable to find input with name ${t}`);return r}}}const wr=P("core/admin-crud-input-compiler",{defaultInitializer:xt});function Rr(e){return je(e,t=>t!==void 0&&!(Array.isArray(t)&&t.length===0))}function Ut(e){return je(e,t=>t!==void 0)}function Sr(e){if(e!==null&&!(Array.isArray(e)&&e.length===0)&&!(typeof e=="object"&&Object.keys(e).every(t=>e[t]===void 0)))return e}function Cr(e){if(e)return e}class ht{constructor(t){Object.defineProperty(this,"implementations",{enumerable:!0,configurable:!0,writable:!0,value:t})}getPluginSpec(t){const n=this.implementations[t.name];if(!n)throw new Error(`Unable to find implementation for spec ${t.name}`);return n}getPluginSpecOptional(t){return this.implementations[t.name]}}const{toposortOrdered:Lt}=await f("@baseplate-dev/utils");function Bt(e){return e.flatMap(t=>t.pluginModules.map(n=>({...n,id:`${t.key}/${n.key}`,name:`${t.name}/${n.key}`,pluginKey:t.key,pluginName:t.name})))}function Kt(e,t){const n=pe(e,i=>i.id),o=Me(t,()=>"built-in");for(const{name:i,module:s,id:d}of e)for(const c of Object.values(s.exports??{})){const l=c.name;if(l in o){const y=n[o[l]];throw new Error(`Duplicate export from plugins found ${l} (${i} and ${y.name})`)}o[l]=d}const r=e.flatMap(({module:i,name:s,id:d})=>Object.values(i.dependencies??{}).map(c=>{const l=o[c.name];if(!l){if(c.isOptional)return;throw new Error(`Cannot resolve plugin dependency for ${s} (${c.name})`)}if(l!=="built-in")return[l,d]}).filter(c=>c!==void 0)),a=e.map(i=>i.id);return Lt(a,r)}function Wt(e,t){const n={...t};for(const{name:o,module:r,pluginKey:a}of e){const i=r.dependencies?Ut(Me(r.dependencies,c=>{const l=n[c.name];if(!l&&!c.isOptional)throw new Error(`Plugin ${o} missing dependency ${c.name}`);return l})):{},s={pluginKey:a},d=r.initialize(i,s);Object.entries(r.exports??{}).map(([c,l])=>{const y=d[c];if(!y)throw new Error(`Plugin ${o} did not return required export ${c}`);n[l.name]=y})}return n}function Vt(e,t){const n=Bt(e),o=pe(n,i=>i.id),r=Kt(n,t),a=Wt(r.map(i=>o[i]),t);return new ht(a)}function Er(e){return e}function qt(e,t){return e.availablePlugins.find(n=>n.metadata.key===t)?.metadata}function Ee(e,t){const n=qt(e,t);if(!n)throw new Error(`Could not find plugin with key ${t}`);return n}function Tr(e,t){const n=Ee(e,t);return e.availablePlugins.filter(o=>o.metadata.managedBy===n.fullyQualifiedName).map(o=>o.metadata)}const{z:w}=await f("zod"),Ht=w.string().regex(/^(\d+\.\d+\.\d+)$/),Gt=w.object({spec:w.string().min(1),version:w.string().min(1)}),Zt=w.object({spec:w.string(),version:w.string()}),Pr=w.object({name:w.string().min(1).regex(/^[a-z0-9-]+$/),moduleDirectories:w.array(w.string()).optional(),displayName:w.string().min(1),icon:w.string().optional(),description:w.string(),managedBy:w.string().optional(),version:Ht,specs:w.object({exports:w.array(Gt).optional(),dependencies:w.array(Zt).optional()}).optional(),hidden:w.boolean().optional()}),A=F("plugin");function Qt(e){const t=[...e].sort((n,o)=>n.version-o.version);if(t.some(n=>n.version<=0))throw new Error("Migration version must be a positive integer");for(let n=0;n<t.length-1;n++)if(t[n].version===t[n+1].version)throw new Error("Migration versions must be unique");return t}function Yt(){const e=new Map,t=new Map;return{registerSchemaCreator(n,o){if(e.has(n))throw new Error(`Schema for plugin ${n} is already registered`);e.set(n,o)},registerMigrations(n,o){if(t.has(n))throw new Error(`Migrations for plugin ${n} are already registered`);const r=Qt(o);t.set(n,r)},getSchemaCreator(n){return e.get(n)},getMigrations(n){return t.get(n)},getLastMigrationVersion(n){const o=t.get(n);return o?.[o.length-1]?.version}}}const fe=P("core/plugin-config",{defaultInitializer:Yt});function Dr(e,t){const n=t.getPluginSpec(fe);return Fe(e,o=>{for(const r of o.plugins??[]){const a=n.getMigrations(A.keyFromId(r.id)),i=r.configSchemaVersion??-1;if(!a)continue;const s=a.at(-1);if(s){for(const d of a)if(d.version>i)try{const c=d.migrate(r.config,o);c.updatedConfig!==void 0&&(r.config=c.updatedConfig),c.updateProjectDefinition&&c.updateProjectDefinition(o)}catch(c){throw new Error(`Error migrating plugin ${r.id} to version ${d.version}: ${String(c)}`)}r.configSchemaVersion=s.version}}})}const vr=P("core/auth-config",{}),Ir=P("core/auth-model-config",{});function Jt(){const e=new Map;return{registerWebConfigComponent(t,n){if(e.has(t))throw new Error(`Web config component for plugin ${t} is already registered`);e.set(t,n)},getWebConfigComponent(t){return e.get(t)}}}const Ar=P("core/web-config",{platforms:"web",defaultInitializer:Jt}),{safeMerge:Ge}=await f("@baseplate-dev/utils");function Mr(){const e={};let t={};return{addChildrenToFeature(n,o){e[n]=Ge(e[n]??{},o)},getChildrenForFeature(n){return e[n]??{}},addRootChildren(n){t=Ge(t,n)},getRootChildren(){return t}}}function Xt(){const e=new Map;return{registerAppCompiler(t){const n=e.get(t.appType)??[];e.has(t.appType)||e.set(t.appType,n),n.push(t)},getAppCompilers(t){return e.get(t)??[]}}}const Nr=P("AppCompiler",{defaultInitializer:Xt});function en(){const e=new Map;return{registerTransformerCompiler(t){if(e.has(t.name))throw new Error(`Model transformer with name ${t.name} is already registered`);e.set(t.name,t)},getModelTransformerCompiler(t,n=[]){const o=n.find(a=>a.name===t);if(o)return o;const r=e.get(t);if(!r)throw new Error(`Unable to find transformer with name ${t}`);return r}}}const Fr=P("core/model-transformer-compiler",{defaultInitializer:en}),tn=["50","100","200","300","400","500","600","700","800","900","950"],gt={white:"oklch(1 0 0)",black:"oklch(0 0 0)"},se={red:{50:"oklch(0.971 0.013 17.38)",100:"oklch(0.936 0.032 17.717)",200:"oklch(0.885 0.062 18.334)",300:"oklch(0.808 0.114 19.571)",400:"oklch(0.704 0.191 22.216)",500:"oklch(0.637 0.237 25.331)",600:"oklch(0.577 0.245 27.325)",700:"oklch(0.505 0.213 27.518)",800:"oklch(0.444 0.177 26.899)",900:"oklch(0.396 0.141 25.723)",950:"oklch(0.258 0.092 26.042)"},orange:{50:"oklch(0.98 0.016 73.684)",100:"oklch(0.954 0.038 75.164)",200:"oklch(0.901 0.076 70.697)",300:"oklch(0.837 0.128 66.29)",400:"oklch(0.75 0.183 55.934)",500:"oklch(0.705 0.213 47.604)",600:"oklch(0.646 0.222 41.116)",700:"oklch(0.553 0.195 38.402)",800:"oklch(0.47 0.157 37.304)",900:"oklch(0.408 0.123 38.172)",950:"oklch(0.266 0.079 36.259)"},amber:{50:"oklch(0.987 0.022 95.277)",100:"oklch(0.962 0.059 95.617)",200:"oklch(0.924 0.12 95.746)",300:"oklch(0.879 0.169 91.605)",400:"oklch(0.828 0.189 84.429)",500:"oklch(0.769 0.188 70.08)",600:"oklch(0.666 0.179 58.318)",700:"oklch(0.555 0.163 48.998)",800:"oklch(0.473 0.137 46.201)",900:"oklch(0.414 0.112 45.904)",950:"oklch(0.279 0.077 45.635)"},yellow:{50:"oklch(0.987 0.026 102.212)",100:"oklch(0.973 0.071 103.193)",200:"oklch(0.945 0.129 101.54)",300:"oklch(0.905 0.182 98.111)",400:"oklch(0.852 0.199 91.936)",500:"oklch(0.795 0.184 86.047)",600:"oklch(0.681 0.162 75.834)",700:"oklch(0.554 0.135 66.442)",800:"oklch(0.476 0.114 61.907)",900:"oklch(0.421 0.095 57.708)",950:"oklch(0.286 0.066 53.813)"},lime:{50:"oklch(0.986 0.031 120.757)",100:"oklch(0.967 0.067 122.328)",200:"oklch(0.938 0.127 124.321)",300:"oklch(0.897 0.196 126.665)",400:"oklch(0.841 0.238 128.85)",500:"oklch(0.768 0.233 130.85)",600:"oklch(0.648 0.2 131.684)",700:"oklch(0.532 0.157 131.589)",800:"oklch(0.453 0.124 130.933)",900:"oklch(0.405 0.101 131.063)",950:"oklch(0.274 0.072 132.109)"},green:{50:"oklch(0.982 0.018 155.826)",100:"oklch(0.962 0.044 156.743)",200:"oklch(0.925 0.084 155.995)",300:"oklch(0.871 0.15 154.449)",400:"oklch(0.792 0.209 151.711)",500:"oklch(0.723 0.219 149.579)",600:"oklch(0.627 0.194 149.214)",700:"oklch(0.527 0.154 150.069)",800:"oklch(0.448 0.119 151.328)",900:"oklch(0.393 0.095 152.535)",950:"oklch(0.266 0.065 152.934)"},emerald:{50:"oklch(0.979 0.021 166.113)",100:"oklch(0.95 0.052 163.051)",200:"oklch(0.905 0.093 164.15)",300:"oklch(0.845 0.143 164.978)",400:"oklch(0.765 0.177 163.223)",500:"oklch(0.696 0.17 162.48)",600:"oklch(0.596 0.145 163.225)",700:"oklch(0.508 0.118 165.612)",800:"oklch(0.432 0.095 166.913)",900:"oklch(0.378 0.077 168.94)",950:"oklch(0.262 0.051 172.552)"},teal:{50:"oklch(0.984 0.014 180.72)",100:"oklch(0.953 0.051 180.801)",200:"oklch(0.91 0.096 180.426)",300:"oklch(0.855 0.138 181.071)",400:"oklch(0.777 0.152 181.912)",500:"oklch(0.704 0.14 182.503)",600:"oklch(0.6 0.118 184.704)",700:"oklch(0.511 0.096 186.391)",800:"oklch(0.437 0.078 188.216)",900:"oklch(0.386 0.063 188.416)",950:"oklch(0.277 0.046 192.524)"},cyan:{50:"oklch(0.984 0.019 200.873)",100:"oklch(0.956 0.045 203.388)",200:"oklch(0.917 0.08 205.041)",300:"oklch(0.865 0.127 207.078)",400:"oklch(0.789 0.154 211.53)",500:"oklch(0.715 0.143 215.221)",600:"oklch(0.609 0.126 221.723)",700:"oklch(0.52 0.105 223.128)",800:"oklch(0.45 0.085 224.283)",900:"oklch(0.398 0.07 227.392)",950:"oklch(0.302 0.056 229.695)"},sky:{50:"oklch(0.977 0.013 236.62)",100:"oklch(0.951 0.026 236.824)",200:"oklch(0.901 0.058 230.902)",300:"oklch(0.828 0.111 230.318)",400:"oklch(0.746 0.16 232.661)",500:"oklch(0.685 0.169 237.323)",600:"oklch(0.588 0.158 241.966)",700:"oklch(0.5 0.134 242.749)",800:"oklch(0.443 0.11 240.79)",900:"oklch(0.391 0.09 240.876)",950:"oklch(0.293 0.066 243.157)"},blue:{50:"oklch(0.97 0.014 254.604)",100:"oklch(0.932 0.032 255.585)",200:"oklch(0.882 0.059 254.128)",300:"oklch(0.809 0.105 251.813)",400:"oklch(0.707 0.165 254.624)",500:"oklch(0.623 0.214 259.815)",600:"oklch(0.546 0.245 262.881)",700:"oklch(0.488 0.243 264.376)",800:"oklch(0.424 0.199 265.638)",900:"oklch(0.379 0.146 265.522)",950:"oklch(0.282 0.091 267.935)"},indigo:{50:"oklch(0.962 0.018 272.314)",100:"oklch(0.93 0.034 272.788)",200:"oklch(0.87 0.065 274.039)",300:"oklch(0.785 0.115 274.713)",400:"oklch(0.673 0.182 276.935)",500:"oklch(0.585 0.233 277.117)",600:"oklch(0.511 0.262 276.966)",700:"oklch(0.457 0.24 277.023)",800:"oklch(0.398 0.195 277.366)",900:"oklch(0.359 0.144 278.697)",950:"oklch(0.257 0.09 281.288)"},violet:{50:"oklch(0.969 0.016 293.756)",100:"oklch(0.943 0.029 294.588)",200:"oklch(0.894 0.057 293.283)",300:"oklch(0.811 0.111 293.571)",400:"oklch(0.702 0.183 293.541)",500:"oklch(0.606 0.25 292.717)",600:"oklch(0.541 0.281 293.009)",700:"oklch(0.491 0.27 292.581)",800:"oklch(0.432 0.232 292.759)",900:"oklch(0.38 0.189 293.745)",950:"oklch(0.283 0.141 291.089)"},purple:{50:"oklch(0.977 0.014 308.299)",100:"oklch(0.946 0.033 307.174)",200:"oklch(0.902 0.063 306.703)",300:"oklch(0.827 0.119 306.383)",400:"oklch(0.714 0.203 305.504)",500:"oklch(0.627 0.265 303.9)",600:"oklch(0.558 0.288 302.321)",700:"oklch(0.496 0.265 301.924)",800:"oklch(0.438 0.218 303.724)",900:"oklch(0.381 0.176 304.987)",950:"oklch(0.291 0.149 302.717)"},fuchsia:{50:"oklch(0.977 0.017 320.058)",100:"oklch(0.952 0.037 318.852)",200:"oklch(0.903 0.076 319.62)",300:"oklch(0.833 0.145 321.434)",400:"oklch(0.74 0.238 322.16)",500:"oklch(0.667 0.295 322.15)",600:"oklch(0.591 0.293 322.896)",700:"oklch(0.518 0.253 323.949)",800:"oklch(0.452 0.211 324.591)",900:"oklch(0.401 0.17 325.612)",950:"oklch(0.293 0.136 325.661)"},pink:{50:"oklch(0.971 0.014 343.198)",100:"oklch(0.948 0.028 342.258)",200:"oklch(0.899 0.061 343.231)",300:"oklch(0.823 0.12 346.018)",400:"oklch(0.718 0.202 349.761)",500:"oklch(0.656 0.241 354.308)",600:"oklch(0.592 0.249 0.584)",700:"oklch(0.525 0.223 3.958)",800:"oklch(0.459 0.187 3.815)",900:"oklch(0.408 0.153 2.432)",950:"oklch(0.284 0.109 3.907)"},rose:{50:"oklch(0.969 0.015 12.422)",100:"oklch(0.941 0.03 12.58)",200:"oklch(0.892 0.058 10.001)",300:"oklch(0.81 0.117 11.638)",400:"oklch(0.712 0.194 13.428)",500:"oklch(0.645 0.246 16.439)",600:"oklch(0.586 0.253 17.585)",700:"oklch(0.514 0.222 16.935)",800:"oklch(0.455 0.188 13.697)",900:"oklch(0.41 0.159 10.272)",950:"oklch(0.271 0.105 12.094)"},slate:{50:"oklch(0.984 0.003 247.858)",100:"oklch(0.968 0.007 247.896)",200:"oklch(0.929 0.013 255.508)",300:"oklch(0.869 0.022 252.894)",400:"oklch(0.704 0.04 256.788)",500:"oklch(0.554 0.046 257.417)",600:"oklch(0.446 0.043 257.281)",700:"oklch(0.372 0.044 257.287)",800:"oklch(0.279 0.041 260.031)",900:"oklch(0.208 0.042 265.755)",950:"oklch(0.129 0.042 264.695)"},gray:{50:"oklch(0.985 0.002 247.839)",100:"oklch(0.967 0.003 264.542)",200:"oklch(0.928 0.006 264.531)",300:"oklch(0.872 0.01 258.338)",400:"oklch(0.707 0.022 261.325)",500:"oklch(0.551 0.027 264.364)",600:"oklch(0.446 0.03 256.802)",700:"oklch(0.373 0.034 259.733)",800:"oklch(0.278 0.033 256.848)",900:"oklch(0.21 0.034 264.665)",950:"oklch(0.13 0.028 261.692)"},zinc:{50:"oklch(0.985 0 0)",100:"oklch(0.967 0.001 286.375)",200:"oklch(0.92 0.004 286.32)",300:"oklch(0.871 0.006 286.286)",400:"oklch(0.705 0.015 286.067)",500:"oklch(0.552 0.016 285.938)",600:"oklch(0.442 0.017 285.786)",700:"oklch(0.37 0.013 285.805)",800:"oklch(0.274 0.006 286.033)",900:"oklch(0.21 0.006 285.885)",950:"oklch(0.141 0.005 285.823)"},neutral:{50:"oklch(0.985 0 0)",100:"oklch(0.97 0 0)",200:"oklch(0.922 0 0)",300:"oklch(0.87 0 0)",400:"oklch(0.708 0 0)",500:"oklch(0.556 0 0)",600:"oklch(0.439 0 0)",700:"oklch(0.371 0 0)",800:"oklch(0.269 0 0)",900:"oklch(0.205 0 0)",950:"oklch(0.145 0 0)"},stone:{50:"oklch(0.985 0.001 106.423)",100:"oklch(0.97 0.001 106.424)",200:"oklch(0.923 0.003 48.717)",300:"oklch(0.869 0.005 56.366)",400:"oklch(0.709 0.01 56.259)",500:"oklch(0.553 0.013 58.071)",600:"oklch(0.444 0.011 73.639)",700:"oklch(0.374 0.01 67.558)",800:"oklch(0.268 0.007 34.298)",900:"oklch(0.216 0.006 56.043)",950:"oklch(0.147 0.004 49.25)"}},$e={background:{name:"Background",description:"The background color of the page",lightDefault:{color:"white"},darkDefault:{baseShade:"950"},groupKey:"page",category:"surface"},foreground:{name:"Foreground",description:"The foreground color of the page",lightDefault:{baseShade:"950"},darkDefault:{baseShade:"50"},groupKey:"page",category:"surface"},muted:{name:"Muted Background",description:"Muted backgrounds such as <TabsList />, <Skeleton /> and <Switch />, also used as background for containers on white background or vice versa",lightDefault:{baseShade:"100"},darkDefault:{baseShade:"800"},groupKey:"muted",category:"surface"},mutedForeground:{name:"Muted Foreground",description:"Used for secondary text and subtitles",lightDefault:{baseShade:"500"},darkDefault:{baseShade:"400"},groupKey:"muted",category:"surface"},card:{name:"Card Background",description:"Background color for <Card />",lightDefault:{color:"white"},darkDefault:{baseShade:"950"},groupKey:"card",category:"surface"},cardForeground:{name:"Card Foreground",description:"Foreground color for <Card />",lightDefault:{baseShade:"950"},darkDefault:{baseShade:"50"},groupKey:"card",category:"surface"},popover:{name:"Popover Background",description:"Background color for popovers such as <DropdownMenu />, <HoverCard />, <Popover />",lightDefault:{color:"white"},darkDefault:{baseShade:"950"},groupKey:"popover",category:"surface"},popoverForeground:{name:"Popover Foreground",description:"Foreground color for popovers such as <DropdownMenu />, <HoverCard />, <Popover />",lightDefault:{baseShade:"950"},darkDefault:{baseShade:"50"},groupKey:"popover",category:"surface"},accent:{name:"Accent",description:"Used for accents such as hover effects on <DropdownMenuItem>, <SelectItem>...",lightDefault:{baseShade:"100"},darkDefault:{baseShade:"800"},groupKey:"accent",category:"surface"},accentForeground:{name:"Accent Foreground",description:"Used for accent foregrounds such as hover effects on <DropdownMenuItem>, <SelectItem>...",lightDefault:{baseShade:"900"},darkDefault:{baseShade:"50"},groupKey:"accent",category:"surface"},success:{name:"Success",description:"Used for success state on input fields, toast or alerts",lightDefault:{color:"emerald-50"},darkDefault:{color:"emerald-950"},groupKey:"success",category:"surface"},successForeground:{name:"Success Foreground",description:"Used for success foregrounds",lightDefault:{color:"emerald-950"},darkDefault:{color:"emerald-50"},groupKey:"success",category:"surface"},warning:{name:"Warning",description:"Used for warning color on toast or alert",lightDefault:{color:"amber-50"},darkDefault:{color:"amber-950"},groupKey:"warning",category:"surface"},warningForeground:{name:"Warning Foreground",description:"Used for warning foregrounds",lightDefault:{color:"amber-950"},darkDefault:{color:"amber-50"},groupKey:"warning",category:"surface"},error:{name:"Error",description:"Used for error state on input fields, toast or alerts",lightDefault:{color:"red-50"},darkDefault:{color:"red-950"},groupKey:"error",category:"surface"},errorForeground:{name:"Error Foreground",description:"Used for error foregrounds",lightDefault:{color:"red-950"},darkDefault:{color:"red-50"},groupKey:"error",category:"surface"},primary:{name:"Primary",description:"Primary colors for <Button /> and other active states for interactive elements such as checkbox",lightDefault:{primaryShade:"800"},darkDefault:{primaryShade:"950"},groupKey:"primary",category:"interactive"},primaryHover:{name:"Primary Hover",description:"Hover background for primary color",lightDefault:{primaryShade:"900"},darkDefault:{primaryShade:"800"},groupKey:"primary",category:"interactive"},primaryForeground:{name:"Primary Foreground",description:"Text color for primary button",lightDefault:{baseShade:"50"},darkDefault:{baseShade:"50"},groupKey:"primary",category:"interactive"},secondary:{name:"Secondary",description:"Secondary colors for <Button />",lightDefault:{baseShade:"100"},darkDefault:{baseShade:"800"},groupKey:"secondary",category:"interactive"},secondaryHover:{name:"Secondary Hover",description:"Hover background for secondary color",lightDefault:{baseShade:"300"},darkDefault:{baseShade:"600"},groupKey:"secondary",category:"interactive"},secondaryForeground:{name:"Secondary Foreground",description:"Text color for secondary button",lightDefault:{baseShade:"900"},darkDefault:{baseShade:"50"},groupKey:"secondary",category:"interactive"},destructive:{name:"Destructive",description:'Used for destructive actions such as <Button variant="destructive">',lightDefault:{color:"red-500"},darkDefault:{color:"red-900"},groupKey:"destructive",category:"interactive"},destructiveHover:{name:"Destructive Hover",description:"Hover color for destructive background",lightDefault:{color:"red-700"},darkDefault:{color:"red-700"},groupKey:"destructive",category:"interactive"},destructiveForeground:{name:"Destructive Foreground",description:"Hover color for destructive background",lightDefault:{baseShade:"50"},darkDefault:{baseShade:"50"},groupKey:"destructive",category:"interactive"},link:{name:"Link",description:"Used for interactive links mostly in text",lightDefault:{primaryShade:"700"},darkDefault:{primaryShade:"600"},groupKey:"link",category:"interactive"},linkVisited:{name:"Visited Link",description:"Color for link after being visited",lightDefault:{primaryShade:"800"},darkDefault:{primaryShade:"700"},groupKey:"link",category:"interactive"},border:{name:"Border",description:"Default border color",lightDefault:{baseShade:"200"},darkDefault:{baseShade:"800"},groupKey:"border",category:"utility"},input:{name:"Input Border",description:"Border color for inputs such as <Input />, <Select />, <Textarea />",lightDefault:{baseShade:"200"},darkDefault:{baseShade:"800"},groupKey:"border",category:"utility"},ring:{name:"Focus Ring",description:"Used for focus ring.",lightDefault:{primaryShade:"400"},darkDefault:{primaryShade:"500"},groupKey:"ring",category:"utility"}},nn=Object.keys($e);function Ze(e){return e.replace(/^\./,"").split("/").filter(t=>t!=="")}function on(e,t){const n=Ze(e),o=Ze(t);for(;n.length>0&&o.length>0&&n[0]===o[0];)n.shift(),o.shift();const r=n.length;return[...Array.from({length:r}).fill(".."),...o].join("/")}function rn(e,t){const n=e.apps.find(o=>o.id===t);if(!n)throw new Error(`Unable to find app with ID ${t}`);return n}function an(e){const t=e.apps.filter(o=>o.type==="backend");if(t.length>1||t.length===0)throw new Error("Only one backend app is supported and must exist");return t[0]}function Te(e){return e.packageLocation?e.packageLocation:`packages/${e.name}`}function sn(e,t){return on(Te(e),Te(t))}const jr={byId:rn,getBackendApp:an,getBackendRelativePath:sn,getAppDirectory:Te},ze=F("app");function $r(e){return e}const{CASE_VALIDATORS:ln}=await f("@baseplate-dev/utils"),{z:oe}=await f("zod"),_e={id:oe.string().default(ze.generateNewId()),name:ln.KEBAB_CASE,type:oe.string(),packageLocation:oe.string().regex(/^(?!.*(?:\/|\.\.)\/)(?!^\.\.$)(?!^\.$)(?:[\w\-.]+\/?)+[\w\-.]*|^$/,{message:"Invalid package location. Must be a valid subdirectory."}).optional()},zr=oe.object(_e),{z:j}=await f("zod"),cn=u(()=>j.object({..._e,type:j.literal("backend"),enableStripe:j.boolean().optional(),enableRedis:j.boolean().optional(),enableBullQueue:j.boolean().optional(),enablePostmark:j.boolean().optional(),enableSubscriptions:j.boolean().optional(),enableAxios:j.boolean().optional()})),_r="backend",Oe=F("role");function Pe(e){return e instanceof ct?e.value:Array.isArray(e)?e.map(Pe):typeof e=="object"&&e!==null?Object.fromEntries(Object.entries(e).map(([t,n])=>[t,Pe(n)])):e}function Or(e){return e}class dn{constructor(t,n,o){Object.defineProperty(this,"references",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"entitiesWithNameResolver",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"pathPrefix",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"context",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"pathMap",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"data",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.references=[],this.entitiesWithNameResolver=[],this.pathPrefix=t,this.context=n,this.pathMap=new Map,this.data=o}_constructPathWithoutPrefix(t){return t?t.split(".").map(o=>/^[0-9]+$/.test(o)?Number.parseInt(o,10):o):[]}_constructPath(t){return t?[...this.pathPrefix,...this._constructPathWithoutPrefix(t)]:this.pathPrefix}_constructPathWithContext(t,n){if(typeof t=="string")return this._constructPath(t);const o=this.context.pathMap.get(t.context);if(!o)throw new Error(`Could not find context for ${t.context} from ${this.pathPrefix.join(".")}`);if(o.type!==n)throw new Error(`Attempted to retrieve context for ${t.context} from ${this.pathPrefix.join(".")} expecting ${n.name}, but found ${o.type.name}`);return o.path}addReference(t){if(!t.type.parentType&&t.parentPath)throw new Error("Parent path does nothing since reference does not have parent");if(t.type.parentType&&!t.parentPath)throw new Error("Parent path required if reference type has parent type");const n=this._constructPathWithoutPrefix(t.path),o=n.length===0?this.data:D(this.data,n);if(o==null)return;const r=this._constructPath(t.path);this.references.push({type:t.type,path:r,parentPath:t.parentPath&&t.type.parentType&&this._constructPathWithContext(t.parentPath,t.type.parentType),onDelete:t.onDelete}),t.addContext&&this._addPathToContext(r,t.type,t.addContext)}addEntity(t){const n=this._constructPath(t.path),o=t.idPath?this._constructPathWithoutPrefix(t.idPath):[...this._constructPathWithoutPrefix(t.path),"id"],r=D(this.data,o);if(!r)throw new Error(`No id found for entity ${t.type.name}`);if(!t.type.isId(r))throw new Error(`Invalid id: ${r} for entity ${t.type.name}`);const i=(t.getNameResolver??(d=>D(d,"name")))(Pe(this.data));if(!i)throw new Error(`No name resolver found for entity ${t.type.name} at ${n.join(".")}`);const s={id:r,type:t.type,path:n,idPath:[...this.pathPrefix,...o],parentPath:t.parentPath&&t.type.parentType&&this._constructPathWithContext(t.parentPath,t.type.parentType)};this.entitiesWithNameResolver.push({...s,nameResolver:typeof i=="string"?{resolveName:()=>i}:i}),t.addContext&&this._addPathToContext([...this.pathPrefix,...o],t.type,t.addContext)}_addPathToContext(t,n,o){this.pathMap.set(o,{path:t,type:n}),this.context.pathMap.set(o,{path:t,type:n})}addPathToContext(t,n,o){this._addPathToContext(this._constructPath(t),n,o)}}function re(e,t,n){const o=new dn(n,t.context,e);if(e instanceof ct)return o.addReference(e.reference),t.references.push(...o.references),t.entitiesWithNameResolver.push(...o.entitiesWithNameResolver),e.value;if(typeof e=="object"&&e!==null&&be in e){const r=e[be];for(const s of r.entities)o.addEntity(s);for(const s of r.references)o.addReference(s);for(const s of r.contextPaths)o.addPathToContext(s.path,s.type,s.context);t.references.push(...o.references),t.entitiesWithNameResolver.push(...o.entitiesWithNameResolver);const{[be]:a,...i}=e;return Object.fromEntries(Object.entries(i).map(([s,d])=>[s,re(d,t,[...n,s])]))}return Array.isArray(e)?e.map((r,a)=>re(r,t,[...n,a])):typeof e=="object"&&e!==null?Object.fromEntries(Object.entries(e).map(([r,a])=>[r,re(a,t,[...n,r])])):e}function un(e){const t={context:{pathMap:new Map},references:[],entitiesWithNameResolver:[]},n=re(e,t,[]),o=new Set;for(const r of t.entitiesWithNameResolver){if(o.has(r.id))throw new Error(`Duplicate ID found: ${r.id}`);o.add(r.id)}return{data:n,references:t.references,entitiesWithNameResolver:t.entitiesWithNameResolver}}const{toposort:mn}=await f("@baseplate-dev/utils");function pn(e,{skipReferenceNameResolution:t=!1,allowInvalidReferences:n=!1}={}){const{entitiesWithNameResolver:o,references:r,data:a}=e,i=pe(o,l=>l.id),s=new Map,d=mn(o.map(l=>l.id),o.flatMap(l=>{const y=l.nameResolver.idsToResolve??{};return Object.values(y).flat().filter(p=>p in i).map(p=>[p,l.id])}));function c(l){if(t)return l;const y=s.get(l);if(!y){if(n)return l;throw new Error(`Could not resolve entity name for id: ${l}`)}return y.name}for(const l of d){const{nameResolver:y,...p}=i[l],O=Me(y.idsToResolve??{},h=>Array.isArray(h)?h.map(C=>c(C)):c(h));s.set(p.id,{...p,name:y.resolveName(O)})}return{entities:[...s.values()],references:r,data:a}}function he(e,t,n,o){const r=dt({...n,transformReferences:!0}),i=e(r).parse(t),s=un(i);return pn(s,o)}const{toposort:fn}=await f("@baseplate-dev/utils");function Qe(e,t){return JSON.stringify({name:e,parentId:t})}function yt(e,t,n){const o=he(e,t,n,{skipReferenceNameResolution:!0});return hn(o)}function hn(e){const{references:t,entities:n,data:o}=e,r=ne(n,p=>p.id),a=Object.values(r).filter(p=>p.length>1);if(a.length>0)throw new Error(`Found multiple duplicate entity IDs: ${a.map(p=>`${p[0].id} (${p.map(O=>O.path.join(".")).join(",")})`).join(", ")}`);if(ke(n.map(p=>p.id)).length!==n.length)throw new Error("Found duplicate entity IDs");const s=ke(n.map(p=>p.type)),d=ke(s.map(p=>p.name));if(d.length!==s.length)throw new Error("Found more entity types than entity type names implying duplicate entity type name");const c=fn(d,s.filter(p=>!!p.parentType).map(p=>[p.parentType?.name??"",p.name])),l=ne(n,p=>p.type.name),y=ne(t,p=>p.type.name);for(const p of c){const O=l[p]??[],h=y[p]??[],C=pe(O,b=>{const{parentPath:v}=b,J=v?D(o,v):void 0;if(v&&typeof J!="string")throw new Error(`Could not resolve parent path: ${v.join(".")}`);return Qe(b.name,J)});for(const b of h){const v=D(o,b.path),J=b.parentPath&&D(o,b.parentPath),We=Qe(v,J),Ve=C[We];if(!Ve)throw new Error(`Unable to resolve reference: ${b.path.join(".")} (${b.type.name} ${We})`);ie(o,b.path,Ve.id)}}return e}const Ye="deleted-sentinel-id";function gn(e,t,n){const o=[];let r,a=t;for(r=0;r<100;r++){let p=function(h){if(h.length===0)return!1;const C=h.slice(0,-1),b=D(a,C);return Array.isArray(b)?(y.push({path:C,idx:h.at(-1)}),!0):!1};const i=he(e,a,n,{allowInvalidReferences:!0}),{references:s,entities:d}=i;a=i.data;const c=new Map(d.map(h=>[h.id,h])),l=s.filter(h=>{const C=D(a,h.path);return C!==Ye&&!c.has(C)});if(l.length===0)return o.length>0?{type:"failure",issues:o}:{type:"success",value:a,refPayload:i};const y=[];for(const h of l){const C=D(a,h.path);switch(h.onDelete){case"SET_UNDEFINED":{if(h.path.length>0){const b=h.path.slice(0,-1),v=D(a,b);if(Array.isArray(v))throw new TypeError(`SET_UNDEFINED cannot be used for references inside arrays at path ${h.path.join(".")}. Use DELETE instead to remove the array element.`)}ie(a,h.path,void 0);break}case"RESTRICT":{o.push({ref:h,entityId:C}),ie(a,h.path,Ye);break}case"DELETE":{if(!p(h.path))throw new Error("Unable to find ref to cascade delete to");break}case"DELETE_PARENT":{if(!p(h.path.slice(0,-1)))throw new Error("Unable to find ref to cascade delete to");break}default:throw new Error(`Unknown onDelete action ${h.onDelete}`)}}const O=ne(y,h=>h.path.join("."));for(const[,h]of Object.entries(O)){const C=zt(h,[b=>-b.idx]);for(const b of C){const v=D(a,b.path);if(!Array.isArray(v))throw new TypeError(`Expected parent to be an array at path ${b.path.join(".")}`);v.splice(b.idx,1)}}}throw new Error("Exceeded max iterations fixing deletions")}function yn(e){const{references:t,entities:n,data:o}=e,r=new Map(n.map(a=>[a.id,a]));return Fe(a=>{for(const i of t){const s=D(a,i.path),d=r.get(s);if(!d)throw new Error(`Could not find entity with ID: ${s} at ${i.path.join(".")}`);ie(a,i.path,d.name)}})(o)}function bn(e,t,n){const o=he(e,t,n);return yn(o)}const kn=["string","uuid","int","boolean","dateTime","float","decimal","json","date","enum"],{z:I}=await f("zod"),De=I.string().regex(/^oklch\(\s*([\d.]+)\s+([\d.]+)\s+([\d.]+)(?:\s*\/\s*([\d.]+))?\s*\)$/,{message:'OKLCH color must be of the format "oklch(l c h [/ a])" where l and c are between 0 and 1 and h is between 0 and 360 and a is between 0 and 100'}),Je=I.record(I.enum(nn),De),le=I.object({paletteName:I.string().min(1),customBase:De.nullish(),shades:I.record(I.enum(tn),De)}).refine(e=>e.paletteName!=="custom"||!!e.paletteName,{message:"A custom base color is required if using a custom base palette",path:["customBase"]}),xr=I.object({base:le,primary:le}),wn=u(()=>I.object({palettes:I.object({base:le,primary:le}),colors:I.object({light:Je,dark:Je})})),{z:K}=await f("zod"),ce={PASCAL_CASE_STRING:K.string().regex(/^[A-Z][a-zA-Z0-9]*$/,"Should be PascalCase, e.g. 'MyModel'"),CAMEL_CASE_STRING:K.string().regex(/^[a-z][a-zA-Z0-9]*$/,"Should be camelCase, e.g. 'myField'"),CONSTANT_CASE_STRING:K.string().regex(/^[A-Z][A-Z0-9_]*$/,"Should be CONSTANT_CASE, e.g. 'MY_CONSTANT'"),OPTIONAL_CONSTANT_CASE_STRING:K.string().regex(/^[A-Z][A-Z0-9_]*$/,"Should be CONSTANT_CASE, e.g. 'MY_CONSTANT'").or(K.literal("")).optional()},{z:k}=await f("zod"),W=u(e=>e.withDefault(k.array(e.withRef({type:Oe,onDelete:"DELETE"})),[])),Rn=u(e=>k.object({objectType:e.withDefault(k.object({enabled:e.withDefault(k.boolean(),!1),fields:e.withDefault(k.array(e.withRef({type:T,onDelete:"DELETE",parentPath:{context:"model"}})),[]),localRelations:e.withDefault(k.array(e.withRef({type:Y,onDelete:"DELETE",parentPath:{context:"model"}})),[]),foreignRelations:e.withDefault(k.array(e.withRef({type:Z,onDelete:"DELETE",parentPath:{context:"model"}})),[])}),{}),queries:e.withDefault(k.object({get:e.withDefault(k.object({enabled:e.withDefault(k.boolean(),!1),roles:W(e)}),{}),list:e.withDefault(k.object({enabled:e.withDefault(k.boolean(),!1),roles:W(e)}),{})}),{}),mutations:e.withDefault(k.object({create:e.withDefault(k.object({enabled:e.withDefault(k.boolean(),!1),roles:W(e)}),{}),update:e.withDefault(k.object({enabled:e.withDefault(k.boolean(),!1),roles:W(e)}),{}),delete:e.withDefault(k.object({enabled:e.withDefault(k.boolean(),!1),roles:W(e)}),{})}),{})})),{z:ve}=await f("zod"),xe={id:ve.string(),type:ve.string().min(1)},Xe=ve.object(xe);function Ur(e){return e}const{z:L}=await f("zod"),Sn=u(e=>e.withEnt(L.object({...xe,type:L.literal("password")}),{type:Q,parentPath:{context:"model"},getNameResolver:()=>"password"})),Cn=u(e=>e.withRefBuilder(e.withEnt(L.object({...xe,foreignRelationRef:e.withRef({type:Z,onDelete:"DELETE_PARENT",parentPath:{context:"model"}}),type:L.literal("embeddedRelation"),embeddedFieldNames:L.array(e.withRef({type:T,onDelete:"RESTRICT",parentPath:{context:"embeddedModel"}})),embeddedTransformerNames:L.array(e.withRef({type:Q,onDelete:"RESTRICT",parentPath:{context:"embeddedModel"}})).optional(),modelRef:e.withRef({type:N,onDelete:"RESTRICT"})}),{type:Q,parentPath:{context:"model"},getNameResolver:t=>({idsToResolve:{foreignRelation:t.foreignRelationRef},resolveName:n=>n.foreignRelation})}),t=>{t.addPathToContext("modelRef",N,"embeddedModel")})),En=[{name:"password",createSchema:Sn,getName:()=>"Password"},{name:"embeddedRelation",createSchema:Cn,getName:(e,t)=>e.nameFromId(t.foreignRelationRef)}];function Tn(){const e={};for(const t of En)e[t.name]=t;return{registerModelTransformer(t){if(e[t.name])throw new Error(`Model transformer with name ${t.name} is already registered`);e[t.name]=t},getModelTransformers(){return e},getModelTransformer(t){const n=e[t];if(!n)throw new Error(`Unable to find transformer with name ${t}`);return n}}}const ge=P("core/model-transformer",{defaultInitializer:Tn}),Pn=u(e=>Xe.passthrough().transform((t,n)=>{const{type:o}=t;return e.plugins.getPluginSpec(ge).getModelTransformer(o).createSchema(e).and(Xe).parse(t,{path:n.path})})),{z:M}=await f("zod"),Dn=u(e=>e.withEnt(M.object({id:M.string(),name:M.string().min(1),friendlyName:M.string().min(1)}),{type:ut,parentPath:{context:"enum"}})),vn=u(e=>M.object({id:M.string(),name:M.string().min(1),featureRef:e.withRef({type:Ne,onDelete:"RESTRICT"}),values:M.array(Dn(e)),isExposed:M.boolean()})),In=u(e=>e.withEnt(vn(e),{type:mt,addContext:"enum"})),{z:m}=await f("zod"),An=u(e=>e.withEnt(m.object({id:m.string(),name:ce.CAMEL_CASE_STRING,type:m.enum(kn),isOptional:m.boolean().default(!1),options:e.withRefBuilder(m.object({default:m.string().default(""),genUuid:m.boolean().optional(),updatedAt:m.boolean().optional(),defaultToNow:m.boolean().optional(),enumRef:e.withRef({type:mt,onDelete:"RESTRICT"}).optional(),defaultEnumValueRef:m.string().optional()}).transform(t=>({...t,...t.enumRef?{}:{defaultEnumValueRef:void 0}})).default({default:""}),t=>{t.addReference({type:ut,onDelete:"RESTRICT",path:"defaultEnumValueRef",parentPath:"enumRef"})})}),{type:T,parentPath:{context:"model"}}).superRefine((t,n)=>{const o=t.options.default,{type:r}=t;o&&r==="boolean"&&!["true","false"].includes(o)&&n.addIssue({path:["options","default"],code:"custom",message:"Default value must be true or false"})}).transform(t=>t.type!=="enum"&&t.options.enumRef?{...t,options:{...t.options,enumRef:void 0}}:t)),et=["Cascade","Restrict","NoAction","SetNull","SetDefault"],Mn=u(e=>e.withRefBuilder(m.object({id:m.string(),foreignId:m.string().default(()=>Z.generateNewId()),name:ce.CAMEL_CASE_STRING,references:m.array(m.object({localRef:e.withRef({type:T,onDelete:"RESTRICT",parentPath:{context:"model"}}),foreignRef:e.withRef({type:T,onDelete:"RESTRICT",parentPath:{context:"foreignModel"}})})),modelRef:m.string().min(1),foreignRelationName:ce.CAMEL_CASE_STRING,onDelete:m.enum(et).default("Cascade"),onUpdate:m.enum(et).default("Restrict")}),t=>{t.addReference({type:N,onDelete:"RESTRICT",addContext:"foreignModel",path:"modelRef"}),t.addEntity({type:Y,parentPath:{context:"model"}}),t.addEntity({type:Z,idPath:"foreignId",getNameResolver:n=>n.foreignRelationName,parentPath:"modelRef"})})),Nn=u(e=>e.withEnt(m.object({id:m.string(),fields:m.array(m.object({fieldRef:e.withRef({type:T,onDelete:"RESTRICT",parentPath:{context:"model"}})}))}),{type:Se,parentPath:{context:"model"},getNameResolver(t){return{idsToResolve:{fields:t.fields.map(n=>n.fieldRef)},resolveName:n=>n.fields.join("_")}}})),Fn=u(e=>m.object({create:m.object({enabled:m.boolean().default(!1),fields:m.array(e.withRef({type:T,onDelete:"DELETE",parentPath:{context:"model"}})).optional(),transformerNames:m.array(e.withRef({type:Q,onDelete:"DELETE",parentPath:{context:"model"}})).optional()}).default({enabled:!1}),update:m.object({enabled:m.boolean().default(!1),fields:m.array(e.withRef({type:T,onDelete:"DELETE",parentPath:{context:"model"}})).optional(),transformerNames:m.array(e.withRef({type:Q,onDelete:"DELETE",parentPath:{context:"model"}})).optional()}).default({enabled:!1}),delete:m.object({enabled:m.boolean().default(!1)}).default({enabled:!1}),transformers:m.array(Pn(e)).default([])})),jn=u(e=>m.object({id:m.string(),name:ce.PASCAL_CASE_STRING,featureRef:e.withRef({type:Ne,onDelete:"RESTRICT"}),model:m.object({fields:m.array(An(e)),relations:m.array(Mn(e)).optional(),primaryKeyFieldRefs:m.array(e.withRef({type:T,onDelete:"RESTRICT",parentPath:{context:"model"}})).min(1),uniqueConstraints:m.array(Nn(e)).optional()}),service:Fn(e).default({create:{enabled:!1},update:{enabled:!1},delete:{enabled:!1},transformers:[]}),graphql:e.withDefault(Rn(e).optional(),{})})),$n=u(e=>e.withEnt(jn(e),{type:N,addContext:"model"})),U=F("admin-section",{parentType:ze}),Lr=F("admin-crud-section-column",{parentType:U}),{z:V}=await f("zod"),zn=u(e=>V.object({id:V.string().default(U.generateNewId()),name:V.string().min(1),featureRef:e.withRef({type:Ne,onDelete:"RESTRICT"}),icon:V.string().optional(),type:V.string().min(1)})),{z:X}=await f("zod"),de=X.object({id:X.string().min(1).default(()=>bt.generateNewId()),type:X.string().min(1),position:X.enum(["inline","dropdown"]).default("dropdown")});function Br(e){return e}const bt=F("admin-crud-action",{parentType:U}),{z:kt}=await f("zod"),_n=u(()=>de.extend({type:kt.literal("edit")})),On={name:"edit",createSchema:_n},xn=u(()=>de.extend({type:kt.literal("delete")})),Un={name:"delete",createSchema:xn},Ln=[On,Un];function Bn(){const e=new Map(Ln.map(t=>[t.name,t]));return{registerAdminCrudAction(t){if(e.has(t.name))throw new Error(`Admin CRUD action with name ${t.name} is already registered`);e.set(t.name,t)},getAdminCrudActions(){return e},getAdminCrudAction(t){const n=e.get(t);if(!n)throw new Error(`Unable to find action with name ${t}`);return n}}}const wt=P("core/admin-crud-action",{defaultInitializer:Bn}),Kn=u(e=>e.withEnt(de.passthrough(),{type:bt,parentPath:{context:"admin-section"},getNameResolver:t=>t.type}).transform((t,n)=>{const{type:o}=t;return e.plugins.getPluginSpec(wt).getAdminCrudAction(o).createSchema(e).and(de).parse(t,{path:n.path})})),{z:ee}=await f("zod"),ue=ee.object({id:ee.string().min(1).default(()=>Rt.generateNewId()),type:ee.string().min(1),label:ee.string().min(1)});function Kr(e){return e}const Rt=F("admin-crud-column",{parentType:U}),{z:ae}=await f("zod"),Wn=u(e=>ue.extend({type:ae.literal("text"),modelFieldRef:e.withRef({type:T,onDelete:"RESTRICT",parentPath:{context:"model"}})})),Vn={name:"text",createSchema:Wn},qn=u(e=>ue.extend({type:ae.literal("foreign"),localRelationRef:e.withRef({type:Y,onDelete:"RESTRICT",parentPath:{context:"model"}}),labelExpression:ae.string().min(1),valueExpression:ae.string().min(1)})),Hn={name:"foreign",createSchema:qn},Gn=[Vn,Hn];function Zn(){const e=new Map(Gn.map(t=>[t.name,t]));return{registerAdminCrudColumn(t){if(e.has(t.name))throw new Error(`Admin CRUD column with name ${t.name} is already registered`);e.set(t.name,t)},getAdminCrudColumns(){return e},getAdminCrudColumn(t){const n=e.get(t);if(!n)throw new Error(`Unable to find column with name ${t}`);return n}}}const St=P("core/admin-crud-column",{defaultInitializer:Zn}),Ct=u(e=>e.withEnt(ue.passthrough(),{type:Rt,parentPath:{context:"admin-section"},getNameResolver:t=>t.type}).transform((t,n)=>{const{type:o}=t;return e.plugins.getPluginSpec(St).getAdminCrudColumn(o).createSchema(e).and(ue).parse(t,{path:n.path})})),{z:te}=await f("zod"),_=te.object({id:te.string().min(1).default(()=>Et.generateNewId()),type:te.string().min(1),label:te.string().min(1)});function Wr(e){return e}const Ue=F("admin-crud-embedded-form",{parentType:U}),Et=F("admin-crud-input",{parentType:U}),{z:S}=await f("zod"),Qn=u(e=>_.extend({type:S.literal("text"),label:S.string().min(1),modelFieldRef:e.withRef({type:T,onDelete:"RESTRICT",parentPath:{context:"model"}}),validation:S.string().optional()})),Yn={name:"text",createSchema:Qn},Jn=u(e=>_.extend({type:S.literal("foreign"),label:S.string().min(1),localRelationRef:e.withRef({type:Y,onDelete:"RESTRICT",parentPath:{context:"model"}}),labelExpression:S.string().min(1),valueExpression:S.string().min(1),defaultLabel:S.string().optional(),nullLabel:S.string().optional()})),Xn={name:"foreign",createSchema:Jn},eo=u(e=>_.extend({type:S.literal("enum"),label:S.string().min(1),modelFieldRef:e.withRef({type:T,onDelete:"RESTRICT",parentPath:{context:"model"}})})),to={name:"enum",createSchema:eo},no=u(e=>_.extend({type:S.literal("embedded"),label:S.string().min(1),modelRelationRef:e.withRef({type:Z,onDelete:"RESTRICT",parentPath:{context:"model"}}),embeddedFormRef:e.withRef({type:Ue,parentPath:{context:"admin-section"},onDelete:"RESTRICT"})})),oo={name:"embedded",createSchema:no},ro=u(e=>_.extend({type:S.literal("embeddedLocal"),label:S.string().min(1),localRelationRef:e.withRef({type:Y,onDelete:"RESTRICT",parentPath:{context:"model"}}),embeddedFormRef:e.withRef({type:Ue,parentPath:{context:"admin-section"},onDelete:"RESTRICT"})})),ao={name:"embeddedLocal",createSchema:ro},io=u(()=>_.extend({type:S.literal("password"),label:S.string().min(1)})),so={name:"password",createSchema:io},lo=[Yn,Xn,to,oo,ao,so];function co(){const e=new Map(lo.map(t=>[t.name,t]));return{registerAdminCrudInput(t){if(e.has(t.name))throw new Error(`Admin CRUD input with name ${t.name} is already registered`);e.set(t.name,t)},getAdminCrudInputs(){return e},getAdminCrudInput(t){const n=e.get(t);if(!n)throw new Error(`Unable to find input with name ${t}`);return n}}}const Tt=P("core/admin-crud-input",{defaultInitializer:co}),Le=u(e=>e.withEnt(_.passthrough(),{type:Et,parentPath:{context:"admin-section"},getNameResolver:t=>t.id??""}).transform((t,n)=>{const{type:o}=t;return e.plugins.getPluginSpec(Tt).getAdminCrudInput(o).createSchema(e).and(_).parse(t,{path:n.path})})),{z:g}=await f("zod"),uo=u(e=>g.object({id:g.string().min(1),name:g.string().min(1),modelRef:e.withRef({type:N,onDelete:"RESTRICT"}),includeIdField:g.boolean().optional(),type:g.literal("object"),form:g.object({fields:g.array(Le(e))})})),mo=u(e=>g.object({id:g.string().min(1),name:g.string().min(1),modelRef:e.withRef({type:N,onDelete:"RESTRICT"}),includeIdField:g.boolean().optional(),type:g.literal("list"),table:g.object({columns:g.array(Ct(e))}),form:g.object({fields:g.array(Le(e))})})),po=u(e=>e.withRefBuilder(g.discriminatedUnion("type",[uo(e),mo(e)]),t=>{t.addEntity({type:Ue,parentPath:{context:"admin-section"}}),t.addPathToContext("modelRef",N,"model")})),fo=u(e=>e.withRefBuilder(zn(e).and(g.object({type:g.literal("crud"),modelRef:e.withRef({type:N,onDelete:"RESTRICT"}),nameFieldRef:e.withRef({type:T,onDelete:"RESTRICT",parentPath:{context:"model"}}),disableCreate:e.withDefault(g.boolean(),!1),table:g.object({columns:g.array(Ct(e)),actions:e.withDefault(g.array(Kn(e)),[{type:"edit",position:"inline"},{type:"delete",position:"dropdown"}])}),form:g.object({fields:g.array(Le(e))}),embeddedForms:g.array(po(e)).optional()})),t=>{t.addPathToContext("modelRef",N,"model")})),{z:q}=await f("zod"),ho=u(e=>e.withRefBuilder(fo(e),t=>{t.addEntity({type:U,parentPath:{context:"app"},addContext:"admin-section"})})),go=u(e=>e.withDefault(q.object({enabled:q.boolean(),pathPrefix:q.string().default("/admin"),allowedRoles:e.withDefault(q.array(e.withRef({type:Oe,onDelete:"DELETE"})),[]),sections:e.withDefault(q.array(ho(e)),[])}),{enabled:!1,pathPrefix:"/admin"})),{z:x}=await f("zod"),yo=u(e=>x.object({..._e,type:x.literal("web"),includeAuth:e.withDefault(x.boolean(),!1),title:x.string().default(""),description:x.string().default(""),includeUploadComponents:e.withDefault(x.boolean(),!1),enableSubscriptions:e.withDefault(x.boolean(),!1),adminApp:go(e)})),Vr="web",{z:$}=await f("zod"),Ie=$.object({id:$.string(),packageName:$.string(),name:$.string(),version:$.string(),config:$.unknown(),configSchemaVersion:$.number().optional()}),bo=u(e=>e.withEnt(Ie.passthrough(),{type:A}).transform((t,n)=>{const o=A.keyFromId(t.id),r=e.plugins.getPluginSpec(fe).getSchemaCreator(o);let a=Ie;return r&&(a=a.extend({config:r(e)})),a.parse(t,{path:n.path})})),ko=u(e=>$.array(bo(e))),{z:we}=await f("zod"),wo=u(()=>we.object({writeMetadata:we.boolean().default(!1),fileIdRegexWhitelist:we.string().default("")})),{CASE_VALIDATORS:tt}=await f("@baseplate-dev/utils"),{z:G}=await f("zod"),Ro=G.object({name:tt.KEBAB_CASE,packageScope:G.union([G.literal(""),tt.KEBAB_CASE]).default(""),portOffset:G.number().min(1e3).max(6e4).int().refine(e=>e%1e3===0,"Port offset must be a multiple of 1000, e.g. 1000, 2000, 3000, etc.")}),So=u(e=>G.object({general:Ro,templateExtractor:wo(e).optional(),theme:wn(e).optional()})),{z}=await f("zod"),Co=u(e=>e.withRefBuilder(z.discriminatedUnion("type",[cn(e),yo(e)]),t=>{t.addEntity({type:ze,addContext:"app"})})),B=u(e=>z.object({cliVersion:z.string().nullish(),apps:z.array(Co(e)).default([]),features:Mt(e),models:z.array($n(e)).default([]),enums:z.array(In(e)).optional(),isInitialized:z.boolean().default(!1),schemaVersion:z.number(),plugins:ko(e).optional(),settings:So(e)}));function Pt(e,t){return e.enums?.find(n=>n.id===t)}function Eo(e,t){const n=Pt(e,t);if(!n)throw new Error(`Could not find enum with ID ${t}`);return n}const qr={byId:Pt,byIdOrThrow:Eo};function To(e,t){const{primaryKeyFieldRefs:n}=e.model,o=e.model.uniqueConstraints??[];return n.length===1&&n.includes(t)||o.some(r=>r.fields.length===1&&r.fields[0].fieldRef===t)}function Dt(e,t){const n=[...t].sort();return(qe([...e.model.primaryKeyFieldRefs].sort(),n)||e.model.uniqueConstraints?.some(o=>qe(o.fields.map(r=>r.fieldRef).sort(),n)))??!1}function Be(e,t){return t.references.map(n=>{const o=e.model.fields.find(r=>r.id===n.localRef);if(!o)throw new Error(`Could not find field ${n.localRef} from relation ${t.name} in model ${e.name}`);return o})}function Po(e,t){return Be(e,t).some(o=>o.isOptional)}function Do(e,t){const o=Be(e,t).map(r=>r.id).sort();return Dt(e,o)}function vo(e){switch(e.type){case"boolean":return"boolean()";case"date":return"string()";case"int":case"float":return"number()";case"dateTime":case"string":case"decimal":case"uuid":return"string()";default:throw new Error(`Unsupported validator for ${e.type}`)}}function Io(e,t,n,o){const r=Nt.byIdOrThrow(e,t),a=r.model.fields.find(d=>d.id===n);if(!a)throw new Error(`Field ${n} not found in model ${r.name}`);const i=a.isOptional?".nullish()":"";if(a.type==="int")return`z.number().or(z.string()).pipe(z.coerce.number().finite().int())${i}`;if(a.type==="float")return`z.number().or(z.string()).pipe(z.coerce.number().finite())${i}`;const s=`z.${vo(a)}${i}`;return s}const Hr={isScalarUnique:To,areScalarsUnique:Dt,getRelationLocalFields:Be,isRelationOptional:Po,isRelationOneToOne:Do,getModelFieldValidation:Io};function Ao(e,t){return t.getPluginSpec(ge).getModelTransformer(e.type)}function Mo(e,t,n){return n.getPluginSpec(ge).getModelTransformer(t.type).getName(e,t)}const Gr={getTransformer:Ao,getTransformName:Mo};function Ke(e,t){const n=A.idFromKey(t);return e.plugins?.find(r=>r.id===n)}function vt(e,t){const n=Ke(e,t);if(!n)throw new Error(`Could not find plugin with ID ${t}`);return n}function No(e,t){return Ke(e,t)?.config}function Fo(e,t){return vt(e,t).config}function jo(e,t,n,o){const r=e.plugins??[],a=A.idFromKey(t.key),s=o.getPluginSpec(fe).getLastMigrationVersion(t.key);e.plugins=r.some(d=>d.id===a)?r.map(d=>a===d.id?{...d,config:n}:d):[...r,{id:a,name:t.name,version:t.version,packageName:t.packageName,config:n,configSchemaVersion:s}]}function It(e,t,n){const o=Ee(n.pluginStore,t),r=e.plugins?.filter(a=>Ee(n.pluginStore,A.keyFromId(a.id)).managedBy===o.fullyQualifiedName);if(r)for(const a of r)It(e,a.id,n);e.plugins=e.plugins?.filter(a=>a.id!==A.idFromKey(t))}const Zr={byKey:Ke,byKeyOrThrow:vt,configByKey:No,setPluginConfig:jo,configByKeyOrThrow:Fo,disablePlugin:It},{z:nt}=await f("zod"),$o=[fe,ge,Tt,wt,