UNPKG

@baseplate-dev/project-builder-web

Version:

Web interface for constructing project builder JSON

3 lines (2 loc) 18.1 kB
import{i as w}from"./_virtual___federation_fn_import-o6aKHb82.js";import{g as J,a as x,e as Y}from"./isEqual-C420KeG-.js";function N(e){return e==null||typeof e!="object"&&typeof e!="function"}function Z(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function h(e,t,r,i=new Map,f=void 0){const o=f?.(e,t,r,i);if(o!=null)return o;if(N(e))return e;if(i.has(e))return i.get(e);if(Array.isArray(e)){const n=new Array(e.length);i.set(e,n);for(let s=0;s<e.length;s++)n[s]=h(e[s],s,r,i,f);return Object.hasOwn(e,"index")&&(n.index=e.index),Object.hasOwn(e,"input")&&(n.input=e.input),n}if(e instanceof Date)return new Date(e.getTime());if(e instanceof RegExp){const n=new RegExp(e.source,e.flags);return n.lastIndex=e.lastIndex,n}if(e instanceof Map){const n=new Map;i.set(e,n);for(const[s,a]of e)n.set(s,h(a,s,r,i,f));return n}if(e instanceof Set){const n=new Set;i.set(e,n);for(const s of e)n.add(h(s,void 0,r,i,f));return n}if(typeof Buffer<"u"&&Buffer.isBuffer(e))return e.subarray();if(Z(e)){const n=new(Object.getPrototypeOf(e)).constructor(e.length);i.set(e,n);for(let s=0;s<e.length;s++)n[s]=h(e[s],s,r,i,f);return n}if(e instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&e instanceof SharedArrayBuffer)return e.slice(0);if(e instanceof DataView){const n=new DataView(e.buffer.slice(0),e.byteOffset,e.byteLength);return i.set(e,n),b(n,e,r,i,f),n}if(typeof File<"u"&&e instanceof File){const n=new File([e],e.name,{type:e.type});return i.set(e,n),b(n,e,r,i,f),n}if(e instanceof Blob){const n=new Blob([e],{type:e.type});return i.set(e,n),b(n,e,r,i,f),n}if(e instanceof Error){const n=new e.constructor;return i.set(e,n),n.message=e.message,n.name=e.name,n.stack=e.stack,n.cause=e.cause,b(n,e,r,i,f),n}if(typeof e=="object"&&e!==null){const n=Object.create(Object.getPrototypeOf(e));return i.set(e,n),b(n,e,r,i,f),n}return e}function b(e,t,r=e,i,f){const o=[...Object.keys(t),...J(t)];for(let n=0;n<o.length;n++){const s=o[n],a=Object.getOwnPropertyDescriptor(e,s);(a==null||a.writable)&&(e[s]=h(t[s],s,r,i,f))}}function q(e){return h(e,void 0,e,new Map,void 0)}function B(e,t){const r={},i=Object.keys(e);for(let f=0;f<i.length;f++){const o=i[f],n=e[o];r[o]=t(n,o,e)}return r}function R(e,t){const r=Object.keys(t);for(let i=0;i<r.length;i++){const f=r[i],o=t[f],n=e[f];Array.isArray(o)?Array.isArray(n)?e[f]=R(n,o):e[f]=R([],o):x(o)?x(n)?e[f]=R(n,o):e[f]=R({},o):(n===void 0||o!==void 0)&&(e[f]=o)}return e}function S(e,t){const r={...e};for(let i=0;i<t.length;i++){const f=t[i];delete r[f]}return r}function T(e,t){return R(q(e),t)}function Ye(e,t){return{spec:e,implementation:t}}function Ze(e,t){const{platforms:r,defaultInitializer:i}=t??{};return{type:"plugin-spec",name:e,platforms:r&&(Array.isArray(r)?r:[r]),isOptional:!1,optional(){return{...this,isOptional:!0}},defaultInitializer:i}}const{randomKey:C}=await w("@baseplate-dev/utils");class v{constructor(t,r,i){Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:t}),Object.defineProperty(this,"parentType",{enumerable:!0,configurable:!0,writable:!0,value:i}),Object.defineProperty(this,"prefix",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.prefix=r??t.split("/").pop()??t}generateNewId(){return`${this.prefix}:${C()}`}idFromKey(t){if(t)return`${this.prefix}:${t}`}keyFromId(t){return t.split(":")[1]}isId(t){return t.startsWith(`${this.prefix}:`)}}function p(e,t){const{parentType:r,prefix:i}=t??{};return new v(e,i,r)}class ee{constructor(t,r){Object.defineProperty(this,"value",{enumerable:!0,configurable:!0,writable:!0,value:t}),Object.defineProperty(this,"reference",{enumerable:!0,configurable:!0,writable:!0,value:r})}toString(){return this.value??""}}const m=Symbol("refAnnotationsMarker"),{z:te}=await w("zod");function re({transformReferences:e}){function t(f){return te.string().transform(o=>e&&o?new ee(o,f):o)}function r(f,o){if(!("id"in f.shape))throw new Error(`Entity must have an id field. Entity type: ${o.type.name}. Schema keys: ${Object.keys(f.shape).join(", ")}`);return f.transform(n=>{if(!("id"in n)||!o.type.isId(n.id))throw new Error(`Invalid id for entity ${o.type.name}. Id: ${n.id}`);if(e){const s=m in n?n[m]:void 0;return{...n,[m]:{entities:[...s?.entities??[],o],references:s?.references??[],contextPaths:s?.contextPaths??[]}}}return n})}function i(f,o){return f.transform(n=>{if(!n)return n;if(typeof n!="object")throw new TypeError(`refBuilder requires an object, but got ${typeof n}`);const s=m in n?n[m]:void 0,a=s?.entities??[],d=s?.references??[],u=s?.contextPaths??[];return o?.({addReference:l=>{d.push(l)},addEntity:l=>{a.push(l)},addPathToContext:(l,H,X)=>{u.push({path:l,type:H,context:X})}},n),e?{...n,[m]:{entities:a,references:d,contextPaths:u}}:n})}return{withRef:t,withEnt:r,withRefBuilder:i}}const{z:ne}=await w("zod");function ie(e){return e==null?!0:Array.isArray(e)?e.length===0:typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype?Object.values(e).every(t=>t===void 0):typeof e=="string"?e==="":!1}function se(e){const t=e.defaultMode??"populate";return{withDefault:function(i,f){const o=i.optional();switch(t){case"populate":return ne.preprocess(n=>n===void 0?f:n,o);case"strip":return o.transform(n=>{if(!ie(n))return n});case"preserve":return o.transform(n=>n)}}}}function Te(e){return{...e,...re(e),...se(e)}}function K(e){return t=>e(t)}function fe(e){switch(typeof e){case"number":case"symbol":return!1;case"string":return e.includes(".")||e.includes("[")||e.includes("]")}}function oe(e){return Object.is(e,-0)?"-0":e.toString()}function $(e){const t=[],r=e.length;if(r===0)return t;let i=0,f="",o="",n=!1;for(e.charCodeAt(0)===46&&(t.push(""),i++);i<r;){const s=e[i];o?s==="\\"&&i+1<r?(i++,f+=e[i]):s===o?o="":f+=s:n?s==='"'||s==="'"?o=s:s==="]"?(n=!1,t.push(f),f=""):f+=s:s==="["?(n=!0,f&&(t.push(f),f="")):s==="."?f&&(t.push(f),f=""):f+=s,i++}return f&&t.push(f),t}function M(e,t,r){if(e==null)return r;switch(typeof t){case"string":{const i=e[t];return i===void 0?fe(t)?M(e,$(t),r):r:i}case"number":case"symbol":{typeof t=="number"&&(t=oe(t));const i=e[t];return i===void 0?r:i}default:{if(Array.isArray(t))return ae(e,t,r);Object.is(t?.valueOf(),-0)?t="-0":t=String(t);const i=e[t];return i===void 0?r:i}}}function ae(e,t,r){if(t.length===0)return r;let i=e;for(let f=0;f<t.length;f++){if(i==null)return r;i=i[t[f]]}return i===void 0?r:i}function de(e){return e!==null&&(typeof e=="object"||typeof e=="function")}function g(e,t){if(t===e)return!0;switch(typeof t){case"object":{if(t==null)return!0;const r=Object.keys(t);if(e==null)return r.length===0;if(Array.isArray(t))return z(e,t);if(t instanceof Map)return ue(e,t);if(t instanceof Set)return ce(e,t);for(let i=0;i<r.length;i++){const f=r[i];if(!N(e)&&!(f in e)||t[f]===void 0&&e[f]!==void 0||t[f]===null&&e[f]!==null||!g(e[f],t[f]))return!1}return!0}case"function":return Object.keys(t).length>0?g(e,{...t}):!1;default:return de(e)?!t:Y(e,t)}}function ue(e,t){if(t.size===0)return!0;if(!(e instanceof Map))return!1;for(const[r,i]of t.entries())if(!g(e.get(r),i))return!1;return!0}function z(e,t){if(t.length===0)return!0;if(!Array.isArray(e))return!1;const r=new Set;for(let i=0;i<t.length;i++){const f=t[i],o=e.findIndex((n,s)=>g(n,f)&&!r.has(s));if(o===-1)return!1;r.add(o)}return!0}function ce(e,t){return t.size===0?!0:e instanceof Set?z([...e],[...t]):!1}const le=/^(?:0|[1-9]\d*)$/;function pe(e,t=Number.MAX_SAFE_INTEGER){switch(typeof e){case"number":return Number.isInteger(e)&&e>=0&&e<t;case"symbol":return!1;case"string":return le.test(e)}}function ye(e,t,r){const i=Array.isArray(t)?t:typeof t=="string"?$(t):[t];let f=e;for(let n=0;n<i.length-1;n++){const s=i[n],a=i[n+1];f[s]==null&&(f[s]=pe(a)?[]:{}),f=f[s]}const o=i[i.length-1];return f[o]=r,e}const{CASE_VALIDATORS:me}=await w("@baseplate-dev/utils"),{z:I}=await w("zod"),A=p("feature"),L=me.KEBAB_CASE,he=K(e=>e.withEnt(I.object({id:I.string(),name:I.string().min(1).refine(t=>t.split("/").every(r=>L.safeParse(r).success),{message:"Feature name must be lowercase and contain only letters, numbers, and dashes"}),parentRef:e.withRef({type:A,onDelete:"DELETE_PARENT"}).optional()}),{type:A})),Ce=K(e=>I.array(he(e)).default([])),y=p("model"),ge=p("model-scalar-field",{parentType:y}),we=p("model-local-relation",{parentType:y}),be=p("model-foreign-relation",{parentType:y}),Re=p("model-unique-constraint",{parentType:y}),ve=p("model-transformer",{parentType:y}),Ie=p("model-enum"),et=p("model-enum-value",{parentType:Ie});function Me(e){return e.features.filter(t=>!t.parentRef)}function _(e,t){return e.features.find(r=>r.id===t)}function j(e,t){const r=_(e,t);if(!r)throw new Error(`Could not find feature with ID ${t}`);return r}function Ae(e,t){return e.features.filter(r=>r.parentRef===t)}function k(e){return e.name.split("/").pop()??""}function Ee(e,t){const r=j(e,t);return k(r)}function Fe(e,t){return j(e,t).name}function Oe(e){return e.split("/").every(r=>L.safeParse(r).success)}function je(e,t){if(A.isId(t))return t;const r=t.split("/");let i="",f;for(const o of r){const n=e.features.find(a=>a.name===o&&a.parentRef===f),s=[i,o].filter(Boolean).join("/");if(n)f=n.id;else{const a={id:A.generateNewId(),name:s,parentRef:f};e.features.push(a),f=a.id}i=s}if(!f)throw new Error("Failed to create feature");return f}function G(e,t){return e.features.find(r=>r.name===t)}function De(e,t){return G(e,t)?.id??t}const tt={getRootFeatures:Me,getFeatureById:_,getFeatureByIdOrThrow:j,getFeatureChildren:Ae,getFeatureName:k,getFeatureNameById:Ee,getFeaturePathById:Fe,validateFeatureName:Oe,ensureFeatureByNameRecursively:je,getFeatureByName:G,getFeatureIdByNameOrDefault:De},{PASCAL_CASE_REGEX:xe}=await w("@baseplate-dev/utils");function W(e,t){return e.models.find(r=>r.id===t)}function Se(e,t){const r=W(e,t);if(!r)throw new Error(`Could not find model with ID ${t}`);return r}function Pe(e,t){const r=e.model.fields.find(i=>i.id===t);if(!r)throw new Error(`Could not find field with ID ${t}`);return r}function Ne(e,t){return e.models.flatMap(r=>r.model.relations?.filter(i=>i.modelRef===t).map(i=>({model:r,relation:i}))??[])}function qe(e,t){return e.models.filter(r=>r.featureRef===t)}function Be(e){return e.model.primaryKeyFieldRefs}function Ke(e){return!!e.service.create.enabled||!!e.service.update.enabled||!!e.service.delete.enabled||e.service.transformers.length>0}function $e(e){return xe.test(e)}function ze(e,t){return e.models.find(r=>r.name===t)?.id??t}const E={byId:W,byIdOrThrow:Se,getScalarFieldById:Pe,getRelationsToModel:Ne,getModelsForFeature:qe,getModelIdFields:Be,hasService:Ke,validateModelName:$e,getModelIdByNameOrDefault:ze};class D{constructor(t){Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:t})}}class F extends D{constructor(t,r,i={}){super(t),Object.defineProperty(this,"getKey",{enumerable:!0,configurable:!0,writable:!0,value:r}),Object.defineProperty(this,"options",{enumerable:!0,configurable:!0,writable:!0,value:i}),this.getKey=r}diff(t,r){const i=t??[],f=r??[];if(!Array.isArray(i)||!Array.isArray(f))throw new TypeError("Current and desired must be arrays");const o=[],{allowRemove:n,ignoreFields:s=["id"]}=this.options,a=new Map(i.map(u=>[this.getKey(u),u])),d=new Map(f.map(u=>[this.getKey(u),u]));for(const[u,c]of d){const l=a.get(u);if(!l){o.push({type:"add",key:u,item:c});continue}g(S(l,s),S(c,s))||o.push({type:"update",key:u,item:c})}if(n)for(const[u,c]of a)d.has(u)||o.push({type:"remove",key:u,item:c});return o}apply(t,r){const i=r,f=t??[];if(!Array.isArray(f))throw new TypeError("Current must be array");const o=[...f];for(const{type:n,key:s,item:a}of i){const d=o.findIndex(u=>this.getKey(u)===s);switch(n){case"add":{o.push(a);break}case"update":{if(d===-1)throw new Error(`Cannot apply patch. Item with key "${s}" not found.`);o[d]=T(o[d],a);break}case"remove":{d!==-1&&o.splice(d,1);break}}}return o}getActionVerb(t){return t?"created":"added or updated"}}class P extends D{diff(t,r){return r===void 0?[]:g(t,r)?[]:[{type:"update",key:"*",item:r}]}apply(t,r){return r.length===0?t:r[0].item}getActionVerb(t){return t?"set":"replaced"}}class O extends D{constructor(t,r){super(t),Object.defineProperty(this,"getKey",{enumerable:!0,configurable:!0,writable:!0,value:r})}diff(t,r){const i=t??[],f=r??[];if(!Array.isArray(i)||!Array.isArray(f))throw new TypeError("Current and desired must be arrays");const o=[],n=new Set(this.getKey?i.map(this.getKey):i);for(const s of f){const a=this.getKey?this.getKey(s):String(s);n.has(a)||o.push({type:"add",key:a,item:s})}return o}apply(t,r){const i=t??[];if(!Array.isArray(i))throw new TypeError("Current must be array");const f=[...i];for(const{type:o,item:n}of r)o==="add"&&f.push(n);return f}getActionVerb(t){return t?"created":"added"}}function rt(e){return e}function Le(e,t,r){const i=B(r,(f,o)=>f?f.diff(M(e,o),M(t,o)):[]);if(!Object.values(i).every(f=>f.length===0))return i}function _e(e,t,r){const i=q(e);for(const[f,o]of Object.entries(t)){if(!o)continue;const n=r[f],s=M(i,f);ye(i,f,n.apply(s,o))}return i}function ke(e){return e.fields.map(r=>r.fieldRef).sort().join("|")}const U={"model.fields":new F("fields",e=>e.name),"model.relations":new F("relations",e=>e.name),"model.uniqueConstraints":new F("unique constraints",e=>ke(e)),"model.primaryKeyFieldRefs":new P("primary key fields"),"graphql.objectType.enabled":new P("GraphQL object type enabled"),"graphql.objectType.fields":new O("GraphQL object type fields"),"graphql.objectType.localRelations":new O("GraphQL object type local relations"),"graphql.objectType.foreignRelations":new O("GraphQL object type foreign relations")};function Q(e,t,r){const i=new Map([...e.model.fields.map(s=>[s.id,s.name]),...r.flatMap(s=>s.model.fields.map(a=>[a.id,a.name]))]),f=new Map([...(e.model.relations??[]).map(s=>[s.id,s.name]),...r.flatMap(s=>(s.model.relations??[]).map(a=>[a.id,a.name])),...(e.model.relations??[]).map(s=>[s.foreignId,s.foreignRelationName]),...r.flatMap(s=>(s.model.relations??[]).map(a=>[a.foreignId,a.foreignRelationName]))]),o=s=>i.get(s)??t.nameFromId(s),n=s=>f.get(s)??t.nameFromId(s);return{...e,model:{...e.model,relations:e.model.relations?.map(s=>({...s,references:s.references.map(a=>({...a,localRef:o(a.localRef),foreignRef:o(a.foreignRef)}))})),uniqueConstraints:e.model.uniqueConstraints?.map(s=>({...s,fields:s.fields.map(a=>({...a,fieldRef:o(a.fieldRef)}))})),primaryKeyFieldRefs:e.model.primaryKeyFieldRefs.map(o)},graphql:{...e.graphql,objectType:{...e.graphql?.objectType,fields:e.graphql?.objectType?.fields?.map(o)??[],localRelations:e.graphql?.objectType?.localRelations?.map(n)??[],foreignRelations:e.graphql?.objectType?.foreignRelations?.map(n)??[]}}}}function Ge(e){return{...e,model:{...e.model,fields:e.model.fields.map(t=>({...t,id:t.id??ge.generateNewId()})),relations:e.model.relations?.map(t=>({...t,id:t.id??we.generateNewId(),foreignId:t.foreignId??be.generateNewId()})),uniqueConstraints:e.model.uniqueConstraints?.map(t=>({...t,id:t.id??Re.generateNewId()}))}}}function We(e,t,r,i){const f=Ge(e),o=s=>{const a=f.model.fields.find(d=>d.name===s);if(!a)throw new Error(`Field ${s} not found`);return a.id},n=s=>{const a=f.model.relations?.find(d=>d.name===s);if(!a)throw new Error(`Relation ${s} not found`);return a.id};return{...f,model:{...f.model,relations:f.model.relations?.map(s=>({...s,modelRef:i(s.modelRef),references:s.references.map(a=>({...a,localRef:o(a.localRef),foreignRef:t(s.modelRef,a.foreignRef)}))})),uniqueConstraints:f.model.uniqueConstraints?.map(s=>({...s,fields:s.fields.map(a=>({...a,fieldRef:o(a.fieldRef)}))})),primaryKeyFieldRefs:f.model.primaryKeyFieldRefs.map(s=>o(s))},graphql:{...f.graphql,objectType:{...f.graphql?.objectType,fields:f.graphql?.objectType?.fields?.map(s=>o(s))??[],localRelations:f.graphql?.objectType?.localRelations?.map(s=>n(s))??[],foreignRelations:f.graphql?.objectType?.foreignRelations?.map(s=>r(s))??[]}}}}function V(e,t,r){return{id:r,name:e,featureRef:t,model:{fields:[],primaryKeyFieldRefs:[]}}}function Ue(e,t,r,{siblingModels:i=[]}={}){const f=e??V(t.name,t.featureRef,y.generateNewId()),o=Q(f,r,i),n=Le(o,t,U);if(n)return{isNewModel:!e,id:f.id,name:f.name,featureRef:f.featureRef,changes:n}}function nt(e){return Object.values(e).some(t=>t?.changes)}function Qe(e,t,r,{siblingModels:i=[]}={}){return B(t,(f,o)=>Ue(e[o]&&y.isId(e[o])?E.byIdOrThrow(r.definition,e[o]):void 0,f,r,{siblingModels:i}))}function Ve(e,t,r,i=[]){const f=Q(e,r,i),o=_e(f,t,U);return{...e,...We(o,(n,s)=>{const a=i.find(c=>c.id===n||c.name===n);if(a){const c=a.model.fields.find(l=>l.name===s);if(!c)throw new Error(`Field ${s} not found in sibling model ${n}`);return c.id}const d=E.byIdOrThrow(r.definition,n),u=d.model.fields.find(c=>c.name===s);if(!u)throw new Error(`Field ${s} not found in model ${d.name}`);return u.id},n=>{let s;for(const u of i){const c=u.model.relations?.find(l=>l.foreignRelationName===n);if(c){s=c.foreignId;break}}if(s)return s;const d=E.getRelationsToModel(r.definition,e.id).find(u=>u.relation.foreignRelationName===n&&u.relation.modelRef===e.id);if(!d)throw new Error(`Relation ${n} not found in model ${e.name}`);return d.relation.foreignId},n=>{const s=i.find(a=>a.id===n||a.name===n);return s?s.id:n})}}function He(e,t,r,i,{siblingModels:f=[]}={}){const o=Ve(t,r.changes,i,f);if(r.isNewModel)e.models.push(o);else{const n=e.models.findIndex(s=>s.id===r.id);if(n===-1)throw new Error(`Model ${r.id} not found`);e.models[n]=o}return o.id}function it(e,t,r,i,{siblingModels:f=[]}={}){const o=Qe(t,r,i,{siblingModels:f}),n=[],s={};for(const[a,d]of Object.entries(o))if(d){const u=d.isNewModel?V(d.name,d.featureRef,d.id):E.byIdOrThrow(i.definition,d.id);He(e,u,d,i,{siblingModels:n});const c=e.models.find(l=>l.id===d.id);c&&n.push(c),s[a]=u.id}else s[a]=r[a].name;return s}export{Qe as A,Ve as B,He as C,ee as D,it as E,tt as F,F as G,P as H,O as I,rt as J,Le as K,_e as L,E as M,m as R,p as a,Te as b,Ze as c,K as d,be as e,we as f,M as g,ge as h,ve as i,y as j,et as k,A as l,B as m,Ie as n,Re as o,Ce as p,S as q,q as r,ye as s,Ye as t,v as u,L as v,he as w,U as x,Ue as y,nt as z}; //# sourceMappingURL=model-merger-DsXmt1nu.js.map