@baseplate-dev/project-builder-web
Version:
Web interface for constructing project builder JSON
1 lines • 71.1 kB
JavaScript
import{c as A,m as Ne,a as F,d as u,D as ct,g as D,R as ye,b as dt,s as re,e as H,f as G,h as T,i as N,j as ae,k as ut,l as Fe,n as mt,o as Se,p as Nt,M as Ft,q as Ce,r as $t}from"../model-merger-Cbxub7G0.js";import{I as fa,G as ha,H as ga,u as ya,F as ba,L as Ra,B as ka,C as wa,E as Sa,K as Ca,J as Ea,w as Ta,t as Aa,y as Da,A as Ia,z as Pa,v as va,x as Ma}from"../model-merger-Cbxub7G0.js";import{p as jt,c as pt,f as zt}from"../index-D5UX5AHP.js";import{i as f}from"../_virtual___federation_fn_import-C4el_tlG.js";import{i as qe}from"../isEqual-C420KeG-.js";import{p as $e}from"../immer-B7fdkLVi.js";import{s as _t}from"../sortBy-C9bvycg5.js";import{i as He}from"../inflection-C1nKqrJS.js";function te(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 me(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 be(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 Ot(){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 Cr=A("core/admin-crud-action-compiler",{defaultInitializer:Ot});function Er(e){return e}function xt(){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 Tr=A("core/admin-crud-column-compiler",{defaultInitializer:xt});function Bt(){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 Ar=A("core/admin-crud-input-compiler",{defaultInitializer:Bt});function Dr(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 Ir(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 Pr(e){if(e)return e}class ht{implementations;constructor(t){this.implementations=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 Kt(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 Vt(e,t){const n=me(e,i=>i.id),o=Ne(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(Ne(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 qt(e,t){const n=Kt(e),o=me(n,i=>i.id),r=Vt(n,t),a=Wt(r.map(i=>o[i]),t);return new ht(a)}function vr(e){return e}function Ht(e,t){return e.availablePlugins.find(n=>n.metadata.key===t)?.metadata}function Ee(e,t){const n=Ht(e,t);if(!n)throw new Error(`Could not find plugin with key ${t}`);return n}function Mr(e,t){const n=Ee(e,t);return e.availablePlugins.filter(o=>o.metadata.managedBy===n.fullyQualifiedName).map(o=>o.metadata)}const{z:k}=await f("zod"),Gt=k.string().regex(/^(\d+\.\d+\.\d+)$/),Zt=k.object({spec:k.string().min(1),version:k.string().min(1)}),Qt=k.object({spec:k.string(),version:k.string()}),Nr=k.object({name:k.string().min(1).regex(/^[a-z0-9-]+$/),moduleDirectories:k.array(k.string()).optional(),displayName:k.string().min(1),icon:k.string().optional(),description:k.string(),managedBy:k.string().optional(),version:Gt,specs:k.object({exports:k.array(Zt).optional(),dependencies:k.array(Qt).optional()}).optional(),hidden:k.boolean().optional()}),v=F("plugin");function Yt(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 Jt(){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=Yt(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 pe=A("core/plugin-config",{defaultInitializer:Jt});function Fr(e,t){const n=t.getPluginSpec(pe);return $e(e,o=>{for(const r of o.plugins??[]){const a=n.getMigrations(v.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 $r=A("core/auth-config",{}),jr=A("core/auth-model-config",{});function Xt(){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 zr=A("core/web-config",{platforms:"web",defaultInitializer:Xt}),{safeMerge:Ge}=await f("@baseplate-dev/utils");function _r(){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 en(){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 Or=A("AppCompiler",{defaultInitializer:en});function tn(){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 xr=A("core/model-transformer-compiler",{defaultInitializer:tn}),nn=["50","100","200","300","400","500","600","700","800","900","950"],gt={white:"oklch(1 0 0)",black:"oklch(0 0 0)"},ie={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)"}},ze={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"}},on=Object.keys(ze);function Ze(e){return e.replace(/^\./,"").split("/").filter(t=>t!=="")}function rn(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 an(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 sn(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,t){return`${t?.appsFolder??"apps"}/${e.name}`}function ln(e,t,n){return rn(Te(e,n),Te(t,n))}const Br={byId:an,getBackendApp:sn,getBackendRelativePath:ln,getAppDirectory:Te},_e=F("app");function Ur(e){return e}const{CASE_VALIDATORS:cn}=await f("@baseplate-dev/utils"),{z:Ae}=await f("zod"),Oe={id:Ae.string().default(_e.generateNewId()),name:cn.KEBAB_CASE,type:Ae.string()},Lr=Ae.object(Oe),{z:O}=await f("zod"),dn=u(()=>O.object({...Oe,type:O.literal("backend"),enableStripe:O.boolean().optional(),enableBullQueue:O.boolean().optional(),enablePostmark:O.boolean().optional(),enableSubscriptions:O.boolean().optional(),enableAxios:O.boolean().optional()})),Kr="backend",xe=F("role");function De(e){return e instanceof ct?e.value:Array.isArray(e)?e.map(De):typeof e=="object"&&e!==null?Object.fromEntries(Object.entries(e).map(([t,n])=>[t,De(n)])):e}function Vr(e){return e}class un{references;entitiesWithNameResolver;pathPrefix;context;pathMap;data;constructor(t,n,o){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")))(De(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 ne(e,t,n){const o=new un(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&&ye in e){const r=e[ye];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{[ye]:a,...i}=e;return Object.fromEntries(Object.entries(i).map(([s,d])=>[s,ne(d,t,[...n,s])]))}return Array.isArray(e)?e.map((r,a)=>ne(r,t,[...n,a])):typeof e=="object"&&e!==null?Object.fromEntries(Object.entries(e).map(([r,a])=>[r,ne(a,t,[...n,r])])):e}function mn(e){const t={context:{pathMap:new Map},references:[],entitiesWithNameResolver:[]},n=ne(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:pn}=await f("@baseplate-dev/utils");function fn(e,{skipReferenceNameResolution:t=!1,allowInvalidReferences:n=!1}={}){const{entitiesWithNameResolver:o,references:r,data:a}=e,i=me(o,l=>l.id),s=new Map,d=pn(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],_=Ne(y.idsToResolve??{},h=>Array.isArray(h)?h.map(C=>c(C)):c(h));s.set(p.id,{...p,name:y.resolveName(_)})}return{entities:[...s.values()],references:r,data:a}}function fe(e,t,n,o){const r=dt({...n,transformReferences:!0}),i=e(r).parse(t),s=mn(i);return fn(s,o)}const{toposort:hn}=await f("@baseplate-dev/utils");function Qe(e,t){return JSON.stringify({name:e,parentId:t})}function yt(e,t,n){const o=fe(e,t,n,{skipReferenceNameResolution:!0});return gn(o)}function gn(e){const{references:t,entities:n,data:o}=e,r=te(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(_=>_.path.join(".")).join(",")})`).join(", ")}`);if(be(n.map(p=>p.id)).length!==n.length)throw new Error("Found duplicate entity IDs");const s=be(n.map(p=>p.type)),d=be(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=hn(d,s.filter(p=>!!p.parentType).map(p=>[p.parentType?.name??"",p.name])),l=te(n,p=>p.type.name),y=te(t,p=>p.type.name);for(const p of c){const _=l[p]??[],h=y[p]??[],C=me(_,b=>{const{parentPath:I}=b,Z=I?D(o,I):void 0;if(I&&typeof Z!="string")throw new Error(`Could not resolve parent path: ${I.join(".")}`);return Qe(b.name,Z)});for(const b of h){const I=D(o,b.path),Z=b.parentPath&&D(o,b.parentPath),Ve=Qe(I,Z),We=C[Ve];if(!We)throw new Error(`Unable to resolve reference: ${b.path.join(".")} (${b.type.name} ${Ve})`);re(o,b.path,We.id)}}return e}const Ye="deleted-sentinel-id";function yn(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=fe(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),I=D(a,b);if(Array.isArray(I))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.`)}re(a,h.path,void 0);break}case"RESTRICT":{o.push({ref:h,entityId:C}),re(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 _=te(y,h=>h.path.join("."));for(const[,h]of Object.entries(_)){const C=_t(h,[b=>-b.idx]);for(const b of C){const I=D(a,b.path);if(!Array.isArray(I))throw new TypeError(`Expected parent to be an array at path ${b.path.join(".")}`);I.splice(b.idx,1)}}}throw new Error("Exceeded max iterations fixing deletions")}function bn(e){const{references:t,entities:n,data:o}=e,r=new Map(n.map(a=>[a.id,a]));return $e(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(".")}`);re(a,i.path,d.name)}})(o)}function Rn(e,t,n){const o=fe(e,t,n);return bn(o)}const kn=["string","uuid","int","boolean","dateTime","float","decimal","json","date","enum"],{z:L}=await f("zod"),se={PASCAL_CASE_STRING:L.string().regex(/^[A-Z][a-zA-Z0-9]*$/,"Should be PascalCase, e.g. 'MyModel'"),CAMEL_CASE_STRING:L.string().regex(/^[a-z][a-zA-Z0-9]*$/,"Should be camelCase, e.g. 'myField'"),CONSTANT_CASE_STRING:L.string().regex(/^[A-Z][A-Z0-9_]*$/,"Should be CONSTANT_CASE, e.g. 'MY_CONSTANT'"),OPTIONAL_CONSTANT_CASE_STRING:L.string().regex(/^[A-Z][A-Z0-9_]*$/,"Should be CONSTANT_CASE, e.g. 'MY_CONSTANT'").or(L.literal("")).optional()},{z:R}=await f("zod"),K=u(e=>e.withDefault(R.array(e.withRef({type:xe,onDelete:"DELETE"})),[])),wn=u(e=>R.object({objectType:e.withDefault(R.object({enabled:e.withDefault(R.boolean(),!1),fields:e.withDefault(R.array(e.withRef({type:T,onDelete:"DELETE",parentPath:{context:"model"}})),[]),localRelations:e.withDefault(R.array(e.withRef({type:G,onDelete:"DELETE",parentPath:{context:"model"}})),[]),foreignRelations:e.withDefault(R.array(e.withRef({type:H,onDelete:"DELETE",parentPath:{context:"model"}})),[])}),{}),queries:e.withDefault(R.object({get:e.withDefault(R.object({enabled:e.withDefault(R.boolean(),!1),roles:K(e)}),{}),list:e.withDefault(R.object({enabled:e.withDefault(R.boolean(),!1),roles:K(e)}),{})}),{}),mutations:e.withDefault(R.object({create:e.withDefault(R.object({enabled:e.withDefault(R.boolean(),!1),roles:K(e)}),{}),update:e.withDefault(R.object({enabled:e.withDefault(R.boolean(),!1),roles:K(e)}),{}),delete:e.withDefault(R.object({enabled:e.withDefault(R.boolean(),!1),roles:K(e)}),{})}),{})})),{z:Ie}=await f("zod"),bt={id:Ie.string(),type:Ie.string().min(1)},Je=Ie.object(bt);function Wr(e){return e}const{z:Q}=await f("zod"),Sn=u(e=>e.withRefBuilder(e.withEnt(Q.object({...bt,foreignRelationRef:e.withRef({type:H,onDelete:"DELETE_PARENT",parentPath:{context:"model"}}),type:Q.literal("embeddedRelation"),embeddedFieldNames:Q.array(e.withRef({type:T,onDelete:"RESTRICT",parentPath:{context:"embeddedModel"}})),embeddedTransformerNames:Q.array(e.withRef({type:ae,onDelete:"RESTRICT",parentPath:{context:"embeddedModel"}})).optional(),modelRef:e.withRef({type:N,onDelete:"RESTRICT"})}),{type:ae,parentPath:{context:"model"},getNameResolver:t=>({idsToResolve:{foreignRelation:t.foreignRelationRef},resolveName:n=>n.foreignRelation})}),t=>{t.addPathToContext("modelRef",N,"embeddedModel")})),Cn=[{name:"embeddedRelation",createSchema:Sn,getName:(e,t)=>e.nameFromId(t.foreignRelationRef)}];function En(){const e={};for(const t of Cn)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 he=A("core/model-transformer",{defaultInitializer:En}),Tn=u(e=>Je.passthrough().transform((t,n)=>{const{type:o}=t;return e.plugins.getPluginSpec(he).getModelTransformer(o).createSchema(e).and(Je).parse(t,{path:n.path})})),{z:M}=await f("zod"),An=u(e=>e.withEnt(M.object({id:M.string(),name:M.string().min(1),friendlyName:M.string().min(1)}),{type:ut,parentPath:{context:"enum"}})),Dn=u(e=>M.object({id:M.string(),name:M.string().min(1),featureRef:e.withRef({type:Fe,onDelete:"RESTRICT"}),values:M.array(An(e)),isExposed:M.boolean()})),In=u(e=>e.withEnt(Dn(e),{type:mt,addContext:"enum"})),{z:m}=await f("zod"),Pn=u(e=>e.withEnt(m.object({id:m.string(),name:se.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)),Xe=["Cascade","Restrict","NoAction","SetNull","SetDefault"],vn=u(e=>e.withRefBuilder(m.object({id:m.string(),foreignId:m.string().default(()=>H.generateNewId()),name:se.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:se.CAMEL_CASE_STRING,onDelete:m.enum(Xe).default("Cascade"),onUpdate:m.enum(Xe).default("Restrict")}),t=>{t.addReference({type:N,onDelete:"RESTRICT",addContext:"foreignModel",path:"modelRef"}),t.addEntity({type:G,parentPath:{context:"model"}}),t.addEntity({type:H,idPath:"foreignId",getNameResolver:n=>n.foreignRelationName,parentPath:"modelRef"})})),Mn=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("_")}}})),Nn=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:ae,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:ae,onDelete:"DELETE",parentPath:{context:"model"}})).optional()}).default({enabled:!1}),delete:m.object({enabled:m.boolean().default(!1)}).default({enabled:!1}),transformers:m.array(Tn(e)).default([])})),Fn=u(e=>m.object({id:m.string(),name:se.PASCAL_CASE_STRING,featureRef:e.withRef({type:Fe,onDelete:"RESTRICT"}),model:m.object({fields:m.array(Pn(e)),relations:m.array(vn(e)).optional(),primaryKeyFieldRefs:m.array(e.withRef({type:T,onDelete:"RESTRICT",parentPath:{context:"model"}})).min(1),uniqueConstraints:m.array(Mn(e)).optional()}),service:Nn(e).default({create:{enabled:!1},update:{enabled:!1},delete:{enabled:!1},transformers:[]}),graphql:e.withDefault(wn(e).optional(),{})})),$n=u(e=>e.withEnt(Fn(e),{type:N,addContext:"model"})),B=F("admin-section",{parentType:_e}),qr=F("admin-crud-section-column",{parentType:B}),{z:V}=await f("zod"),jn=u(e=>V.object({id:V.string().default(B.generateNewId()),name:V.string().min(1),featureRef:e.withRef({type:Fe,onDelete:"RESTRICT"}),icon:V.string().optional(),type:V.string().min(1)})),{z:Y}=await f("zod"),le=Y.object({id:Y.string().min(1).default(()=>Rt.generateNewId()),type:Y.string().min(1),position:Y.enum(["inline","dropdown"]).default("dropdown")});function Hr(e){return e}const Rt=F("admin-crud-action",{parentType:B}),{z:kt}=await f("zod"),zn=u(()=>le.extend({type:kt.literal("edit")})),_n={name:"edit",createSchema:zn},On=u(()=>le.extend({type:kt.literal("delete")})),xn={name:"delete",createSchema:On},Bn=[_n,xn];function Un(){const e=new Map(Bn.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=A("core/admin-crud-action",{defaultInitializer:Un}),Ln=u(e=>e.withEnt(le.passthrough(),{type:Rt,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(le).parse(t,{path:n.path})})),{z:J}=await f("zod"),ce=J.object({id:J.string().min(1).default(()=>St.generateNewId()),type:J.string().min(1),label:J.string().min(1)});function Gr(e){return e}const St=F("admin-crud-column",{parentType:B}),{z:oe}=await f("zod"),Kn=u(e=>ce.extend({type:oe.literal("text"),modelFieldRef:e.withRef({type:T,onDelete:"RESTRICT",parentPath:{context:"model"}})})),Vn={name:"text",createSchema:Kn},Wn=u(e=>ce.extend({type:oe.literal("foreign"),localRelationRef:e.withRef({type:G,onDelete:"RESTRICT",parentPath:{context:"model"}}),labelExpression:oe.string().min(1),valueExpression:oe.string().min(1)})),qn={name:"foreign",createSchema:Wn},Hn=[Vn,qn];function Gn(){const e=new Map(Hn.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 Ct=A("core/admin-crud-column",{defaultInitializer:Gn}),Et=u(e=>e.withEnt(ce.passthrough(),{type:St,parentPath:{context:"admin-section"},getNameResolver:t=>t.type}).transform((t,n)=>{const{type:o}=t;return e.plugins.getPluginSpec(Ct).getAdminCrudColumn(o).createSchema(e).and(ce).parse(t,{path:n.path})})),{z:X}=await f("zod"),z=X.object({id:X.string().min(1).default(()=>Tt.generateNewId()),type:X.string().min(1),label:X.string().min(1)});function Zr(e){return e}const Be=F("admin-crud-embedded-form",{parentType:B}),Tt=F("admin-crud-input",{parentType:B}),{z:S}=await f("zod"),Zn=u(e=>z.extend({type:S.literal("text"),label:S.string().min(1),modelFieldRef:e.withRef({type:T,onDelete:"RESTRICT",parentPath:{context:"model"}}),validation:S.string().optional()})),Qn={name:"text",createSchema:Zn},Yn=u(e=>z.extend({type:S.literal("foreign"),label:S.string().min(1),localRelationRef:e.withRef({type:G,onDelete:"RESTRICT",parentPath:{context:"model"}}),labelExpression:S.string().min(1),valueExpression:S.string().min(1),defaultLabel:S.string().optional(),nullLabel:S.string().optional()})),Jn={name:"foreign",createSchema:Yn},Xn=u(e=>z.extend({type:S.literal("enum"),label:S.string().min(1),modelFieldRef:e.withRef({type:T,onDelete:"RESTRICT",parentPath:{context:"model"}})})),eo={name:"enum",createSchema:Xn},to=u(e=>z.extend({type:S.literal("embedded"),label:S.string().min(1),modelRelationRef:e.withRef({type:H,onDelete:"RESTRICT",parentPath:{context:"model"}}),embeddedFormRef:e.withRef({type:Be,parentPath:{context:"admin-section"},onDelete:"RESTRICT"})})),no={name:"embedded",createSchema:to},oo=u(e=>z.extend({type:S.literal("embeddedLocal"),label:S.string().min(1),localRelationRef:e.withRef({type:G,onDelete:"RESTRICT",parentPath:{context:"model"}}),embeddedFormRef:e.withRef({type:Be,parentPath:{context:"admin-section"},onDelete:"RESTRICT"})})),ro={name:"embeddedLocal",createSchema:oo},ao=u(()=>z.extend({type:S.literal("password"),label:S.string().min(1)})),io={name:"password",createSchema:ao},so=[Qn,Jn,eo,no,ro,io];function lo(){const e=new Map(so.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 At=A("core/admin-crud-input",{defaultInitializer:lo}),Ue=u(e=>e.withEnt(z.passthrough(),{type:Tt,parentPath:{context:"admin-section"},getNameResolver:t=>t.id??""}).transform((t,n)=>{const{type:o}=t;return e.plugins.getPluginSpec(At).getAdminCrudInput(o).createSchema(e).and(z).parse(t,{path:n.path})})),{z:g}=await f("zod"),co=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(Ue(e))})})),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("list"),table:g.object({columns:g.array(Et(e))}),form:g.object({fields:g.array(Ue(e))})})),mo=u(e=>e.withRefBuilder(g.discriminatedUnion("type",[co(e),uo(e)]),t=>{t.addEntity({type:Be,parentPath:{context:"admin-section"}}),t.addPathToContext("modelRef",N,"model")})),po=u(e=>e.withRefBuilder(jn(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(Et(e)),actions:e.withDefault(g.array(Ln(e)),[{type:"edit",position:"inline"},{type:"delete",position:"dropdown"}])}),form:g.object({fields:g.array(Ue(e))}),embeddedForms:g.array(mo(e)).optional()})),t=>{t.addPathToContext("modelRef",N,"model")})),{z:W}=await f("zod"),fo=u(e=>e.withRefBuilder(po(e),t=>{t.addEntity({type:B,parentPath:{context:"app"},addContext:"admin-section"})})),ho=u(e=>e.withDefault(W.object({enabled:W.boolean(),pathPrefix:W.string().default("/admin"),allowedRoles:e.withDefault(W.array(e.withRef({type:xe,onDelete:"DELETE"})),[]),sections:e.withDefault(W.array(fo(e)),[])}),{enabled:!1,pathPrefix:"/admin"})),{z:x}=await f("zod"),go=u(e=>x.object({...Oe,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:ho(e)})),Qr="web",{z:$}=await f("zod"),Pe=$.object({id:$.string(),packageName:$.string(),name:$.string(),version:$.string(),config:$.unknown(),configSchemaVersion:$.number().optional()}),yo=u(e=>e.withEnt(Pe.passthrough(),{type:v}).transform((t,n)=>{const o=v.keyFromId(t.id),r=e.plugins.getPluginSpec(pe).getSchemaCreator(o);let a=Pe;return r&&(a=a.extend({config:r(e)})),a.parse(t,{path:n.path})})),bo=u(e=>$.array(yo(e))),{CASE_VALIDATORS:et}=await f("@baseplate-dev/utils"),{z:ee}=await f("zod"),Ro=ee.object({name:et.KEBAB_CASE,packageScope:ee.union([ee.literal(""),et.KEBAB_CASE]).default(""),portOffset:ee.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.")}),{z:Re}=await f("zod"),ko=Re.object({redis:Re.object({enabled:Re.boolean().default(!1)}).optional()}),{CASE_VALIDATORS:wo}=await f("@baseplate-dev/utils"),{z:So}=await f("zod"),Co=So.object({appsFolder:wo.KEBAB_CASE.min(1).max(50).regex(/^[a-z0-9-]+$/,{message:"Apps folder must contain only lowercase letters, numbers, and dashes (no slashes)"}).default("apps")}),{z:ke}=await f("zod"),Eo=u(()=>ke.object({writeMetadata:ke.boolean().default(!1),fileIdRegexWhitelist:ke.string().default("")})),{z:P}=await f("zod"),ve=P.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'}),tt=P.record(P.enum(on),ve),de=P.object({paletteName:P.string().min(1),customBase:ve.nullish(),shades:P.record(P.enum(nn),ve)}).refine(e=>e.paletteName!=="custom"||!!e.customBase,{message:"A custom base color is required if using a custom base palette",path:["customBase"]}),Yr=P.object({base:de,primary:de}),To=u(()=>P.object({palettes:P.object({base:de,primary:de}),colors:P.object({light:tt,dark:tt})})),{z:Ao}=await f("zod"),Do=u(e=>Ao.object({general:Ro,infrastructure:ko.optional(),monorepo:Co.optional(),templateExtractor:Eo(e).optional(),theme:To(e).optional()})),{z:j}=await f("zod"),Io=u(e=>e.withRefBuilder(j.discriminatedUnion("type",[dn(e),go(e)]),t=>{t.addEntity({type:_e,addContext:"app"})})),U=u(e=>j.object({cliVersion:j.string().nullish(),apps:j.array(Io(e)).default([]),features:Nt(e),models:j.array($n(e)).default([]),enums:j.array(In(e)).optional(),isInitialized:j.boolean().default(!1),schemaVersion:j.number(),plugins:bo(e).optional(),settings:Do(e)}));function Dt(e,t){return e.enums?.find(n=>n.id===t)}function Po(e,t){const n=Dt(e,t);if(!n)throw new Error(`Could not find enum with ID ${t}`);return n}const Jr={byId:Dt,byIdOrThrow:Po};function vo(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 It(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 Le(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 Mo(e,t){return Le(e,t).some(o=>o.isOptional)}function No(e,t){const o=Le(e,t).map(r=>r.id).sort();return It(e,o)}function Fo(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 $o(e,t,n,o){const r=Ft.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.${Fo(a)}${i}`;return s}const Xr={isScalarUnique:vo,areScalarsUnique:It,getRelationLocalFields:Le,isRelationOptional:Mo,isRelationOneToOne:No,getModelFieldValidation:$o};function jo(e,t){return t.getPluginSpec(he).getModelTransformer(e.type)}function zo(e,t,n){return n.getPluginSpec(he).getModelTransformer(t.type).getName(e,t)}const ea={getTransformer:jo,getTransformName:zo};function Ke(e,t){const n=v.idFromKey(t);return e.plugins?.find(r=>r.id===n)}function Pt(e,t){const n=Ke(e,t);if(!n)throw new Error(`Could not find plugin with ID ${t}`);return n}function _o(e,t){return Ke(e,t)?.config}function Oo(e,t){return Pt(e,t).config}function xo(e,t,n,o){const r=e.plugins??[],a=v.idFromKey(t.key),s=o.getPluginSpec(pe).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 vt(e,t,n){const o=Ee(n.pluginStore,t),r=e.plugins?.filter(a=>Ee(n.pluginStore,v.keyFromId(a.id)).managedBy===o.fullyQualifiedName);if(r)for(const a of r)vt(e,a.id,n);e.plugins=e.plugins?.filter(a=>a.id!==v.idFromKey(t))}const ta={byKey:Ke,byKeyOrThrow:Pt,configByKey:_o,setPluginConfig:xo,configByKeyOrThrow:Oo,disablePlugin:vt},{z:nt}=await f("zod"),Bo=[pe,he,At,wt,Ct];function ge(e,t){const{availablePlugins:n,builtinSpecImplementations:o=[]}=e,r=nt.object({plugins:nt.array(Pe).optional()}).parse(t),{plugins:a=[]}=r,i=[...Bo,...o],s={};for(const c of i)if("type"in c){if(typeof c.defaultInitializer!="function")throw new TypeError(`Spec ${c.type} does not have a defaultInitializer function!`);s[c.name]=c.defaultInitializer()}else s[c.spec.name]=c.implementation;const d=a.map(c=>{const l=n.find(({metadata:p})=>p.name===c.name&&p.packageName===c.packageName),y=`${c.packageName}/${c.name}`;if(!l)throw new Error(`Unable to