@elyx-code/project-logic-tree 0.0.6418 → 0.0.6419

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -100824,46 +100824,54 @@ function NB(d) {
100824
100824
  }
100825
100825
  return [];
100826
100826
  }
100827
- function zT(d, u, i, a = !0) {
100827
+ function zT(d, u, i, a, o = !0) {
100828
100828
  return d.reduce(
100829
- (p, e) => {
100830
- if (!Vi.includes(e.type))
100831
- return p;
100832
- const y = NB(
100833
- e
100834
- ), v = y.find(
100835
- (w) => w.callee === u
100836
- ), E = y.find(
100837
- (w) => w.callee === i
100829
+ (e, y) => {
100830
+ if (!Vi.includes(y.type))
100831
+ return e;
100832
+ if (y === u || y === i)
100833
+ return [
100834
+ ...e,
100835
+ {
100836
+ ancestor: y,
100837
+ callType: a
100838
+ }
100839
+ ];
100840
+ const v = NB(
100841
+ y
100842
+ ), E = v.find(
100843
+ (A) => A.callee === u
100844
+ ), w = v.find(
100845
+ (A) => A.callee === i
100838
100846
  );
100839
- if (!v && !E)
100840
- return p;
100841
- if (v && E) {
100842
- if (v.callType === E.callType)
100847
+ if (!E && !w)
100848
+ return e;
100849
+ if (E && w) {
100850
+ if (E.callType === w.callType)
100843
100851
  return [
100844
- ...p,
100852
+ ...e,
100845
100853
  {
100846
- ancestor: e,
100847
- callType: v.callType
100854
+ ancestor: y,
100855
+ callType: E.callType
100848
100856
  }
100849
100857
  ];
100850
- if (!a)
100858
+ if (!o)
100851
100859
  return [
100852
- ...p,
100860
+ ...e,
100853
100861
  {
100854
- ancestor: e,
100855
- callType: v.callType
100862
+ ancestor: y,
100863
+ callType: E.callType
100856
100864
  }
100857
100865
  ];
100858
100866
  } else
100859
100867
  return [
100860
- ...p,
100868
+ ...e,
100861
100869
  {
100862
- ancestor: e,
100863
- callType: (v == null ? void 0 : v.callType) || (E == null ? void 0 : E.callType)
100870
+ ancestor: y,
100871
+ callType: (E == null ? void 0 : E.callType) || (w == null ? void 0 : w.callType)
100864
100872
  }
100865
100873
  ];
100866
- return p;
100874
+ return e;
100867
100875
  },
100868
100876
  []
100869
100877
  );
@@ -100871,22 +100879,25 @@ function zT(d, u, i, a = !0) {
100871
100879
  function VB(d, u, i, a = !0) {
100872
100880
  let o, p = [];
100873
100881
  if (er.includes(i.type))
100874
- p = zT(
100882
+ i.parent.type === f.Loop ? o = "loop-body" : o = "entry", p = zT(
100875
100883
  i.calls,
100876
100884
  d,
100877
100885
  u,
100886
+ o,
100878
100887
  a
100879
- ), i.parent.type === f.Loop ? o = "loop-body" : o = "entry";
100888
+ );
100880
100889
  else if (hr.includes(i.type)) {
100881
100890
  const y = zT(
100882
100891
  i.successCalls,
100883
100892
  d,
100884
100893
  u,
100894
+ "success",
100885
100895
  a
100886
100896
  ), v = zT(
100887
100897
  i.errorCalls,
100888
100898
  d,
100889
100899
  u,
100900
+ "error",
100890
100901
  a
100891
100902
  );
100892
100903
  y.length && !v.length && (p.push(
@@ -101077,6 +101088,8 @@ function vDt(d) {
101077
101088
  i = p, er.includes(i.type) ? i.parent.type === f.Loop ? a = "loop-body" : a = "entry" : i.successCalls.includes(d) ? a = "success" : i.errorCalls.includes(d) && (a = "error");
101078
101089
  continue;
101079
101090
  }
101091
+ if (i === p)
101092
+ continue;
101080
101093
  const e = l1t(
101081
101094
  i,
101082
101095
  p
@@ -393,7 +393,7 @@ All global 'function-declaration' entity ids are:
393
393
  The project currently has no global 'function-declaration' entities that can be called as 'function-call' entities.`;p.push(new ee({id:`${o.id}--${k.InvalidReference}`,code:k.InvalidReference,severity:q.Error,message:`Entity of type "${f.FunctionCall}" with id "${o.id}", has an invalid reference at the 'declaration' property. The 'declaration' property must be a valid reference to an 'function-declaration' entity.
394
394
  References can either be an ID string or an object with exacly four properties: 'id', 'entityId', 'entityType', 'type'.${v}`,issue:null}))}return{errors:p,modifiedData:o}}validateGeneratedUpdate(i){const a=[];return i.parent&&a.push(new ee({id:`${this.id}--${k.InvalidParentUpdate}`,code:k.InvalidParentUpdate,severity:q.Error,message:`Entity of type '${this.type}' with id '${this.id}' cannot have the 'parent' property updated. The 'parent' on a callable entity, is its scope. It scope is auto-calculated implicitly by the its caller.
395
395
  If an entity is called by another, they must be in the same scope, which means they have the same parent.
396
- You shouldn't have to manually update a 'parent' property. The equivalent result is to change its callers, the value writters of its inputs, or the value readers of its outputs.`,issue:null})),{errors:a,modifiedData:i}}subscribeDependents(i){return i.forEach(a=>{this.detachedDependents[a.entity.id]||(this.detachedDependents[a.entity.id]=a)}),this}unsubscribeDependents(i){return i.forEach(a=>{this.detachedDependents[a.entity.id]&&delete this.detachedDependents[a.entity.id]}),this}syncDependents(i=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"sync-dependents"))){const a=[],o=[],p=[],e=[];return Object.values(this.detachedDependents).forEach(y=>{const v=y.entity.afterAllChildrenInitialized(i);a.push(...v.updated),o.push(...v.added),p.push(...v.removed),e.push(...v.affected)}),i==null||i.attemptAutoclose("sync-dependents",this.id),{updated:R(a),added:R(o),removed:R(p),affected:R(e),self:this}}onDetachedDependencyRemoved(i,a,o){const p=[],e=[],y=[],v=[];if(a==="declaration"){const{updated:E,added:w,removed:A}=this.remove({ignoreUpstream:!1},o);p.push(...E),e.push(...w),y.push(...A)}if(a==="parent"){const{updated:E,added:w,removed:A}=this.remove({ignoreUpstream:!1},o);p.push(...E),e.push(...w),y.push(...A)}return{updated:R(p),added:R(e),removed:R(y),affected:R(v),self:this}}onDetachedDependencyRestored(i,a,o){const p=[],e=[],y=[],v=[];if(a==="declaration"){const{updated:E,added:w,removed:A}=this.restore({},o);p.push(...E),e.push(...w),y.push(...A)}if(a==="parent"){const{updated:E,added:w,removed:A}=this.restore({},o);p.push(...E),e.push(...w),y.push(...A)}return{updated:R(p),added:R(e),removed:R(y),affected:R(v),self:this}}unsubscribeFromDependencies(){var i;return(i=this.parent)==null||i.unsubscribeDependents([{entity:this,field:"parent"}]),this.declaration.unsubscribeDependents([{entity:this,field:"declaration"}]),this}subscribeToDependencies(){var i;return(i=this.parent)==null||i.subscribeDependents([{entity:this,field:"parent"}]),this.declaration.subscribeDependents([{entity:this,field:"declaration"}]),this}increaseVersion(i){if(i&&!L(i).isValid())throw new Error(`The shared timestamp '${i}' is not a valid ISO 8601 date string.`);return i&&L(i).isSame(L(this.createdAt))?this:(this.previousVersion=this.version,this.version=N.UUID.uuid(),this.createdAt=L(i).toISOString()||L().toISOString(),this)}captureVersion(){var a;const i=((a=this.knownVersions)==null?void 0:a.get(this.version))||new er(this,this.project);return i.metaSync(this.toMeta(),null),this.knownVersions=this.knownVersions?this.knownVersions.set(this.version,i):new Map([[this.version,i]]),i.inputs=[...this.inputs],i.outputs=[...this.outputs],i.error=this.error,i.successCalls=[...this.successCalls],i.errorCalls=[...this.errorCalls],i.process=this.process,i.declaration=this.declaration,i.calledBySuccess=[...this.calledBySuccess],i.calledByError=[...this.calledByError],i.calledByEntry=[...this.calledByEntry],i.parent=this.parent,this}recursiveCaptureUpstreamVersions(i){const a=[],o=[],p=[],e=[];if(this.parent){this.parent.increaseVersion(i);const y=this.parent.recursiveCaptureUpstreamVersions(i);a.push(this.parent,...y.updated),o.push(...y.added),p.push(...y.removed)}return{updated:R(a),added:R(o),removed:R(p),affected:R(e),self:this}}async restoreVersion(i){var v;const a=[],o=[],p=[],e=[];if(this.version===i)return{updated:R(a),added:R(o),removed:R(p),affected:R(e),self:this};if(!this.knownVersions){const E=new Map;for(const[w,A]of this.knownVersions||new Map){if(E.set(w,A),A.activeVersion=!1,A.knownVersions)for(const[$,V]of A.knownVersions)E.set($,V);A.knownVersions=null}}let y=(v=this.knownVersions)==null?void 0:v.get(i);if(!y){const E=await this.APILoadVersion({},i);if(!E)throw new Error(`Version with id '${i}' for entity with id '${this.id}' not found.`);y=new er(E,this.project)}return this.metaSync(y.toShallowJSON(),null),this.previousVersion=y.previousVersion,this.version=y.version,this.createdAt=y.createdAt,this.author=y.author,this.deleted=y.deleted,this.inputs=y.inputs,this.outputs=y.outputs,this.error=y.error,this.successCalls=y.successCalls,this.errorCalls=y.errorCalls,this.process=y.process,this.declaration=y.declaration,this.calledBySuccess=y.calledBySuccess,this.calledByError=y.calledByError,this.calledByEntry=y.calledByEntry,this.parent=y.parent,{updated:R(a),added:R(o),removed:R(p),affected:R(e),self:this}}updateWithShallowTransfer(i,a=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"update-with-shallow-transfer"))){if(this.metaSync(i,a),this.version=i.version,this.createdAt=i.createdAt,this.author=i.author,this.deleted=i.deleted,this.previousVersion=i.previousVersion,this.unsubscribeFromDependencies(),i.parent){const o=J(i.parent),p=this.project.get(o),e=this.parent;if(e&&e.id!==(p==null?void 0:p.id)&&this.removeFromParent(a),p)this.setParent(p,a);else throw a==null||a.attemptAutoclose("update-with-shallow-transfer",this.id),new Error(`${this.type} with id '${this.id}' has a 'parent' reference '${o}' that isn't found in the project`)}else throw a==null||a.attemptAutoclose("update-with-shallow-transfer",this.id),new Error(`${this.type} with id '${this.id}' must have a 'parent'`);if(i.declaration){const o=J(i.declaration),p=this.project.get(o);p&&this.setDeclaration(p)}return i.calledByEntry.forEach(o=>{const p=J(o),e=this.project.get(p);e&&(this.addEntryCaller(e,a),e.addCall(this,a))}),[...this.calledByEntry].forEach(o=>{i.calledByEntry.find(e=>J(e)===o.id)||(this.removeCaller(o,a),o.removeCall(this,a))}),i.calledBySuccess.forEach(o=>{const p=J(o),e=this.project.get(p);e&&(this.addSuccessCaller(e,a),e.addSuccessCall(this,a))}),[...this.calledBySuccess].forEach(o=>{i.calledBySuccess.find(e=>J(e)===o.id)||(this.removeCaller(o,a),o.removeCall(this,a))}),i.calledByError.forEach(o=>{const p=J(o),e=this.project.get(p);e&&(this.addErrorCaller(e,a),e.addErrorCall(this,a))}),[...this.calledBySuccess].forEach(o=>{i.calledBySuccess.find(e=>J(e)===o.id)||(this.removeCaller(o,a),o.removeCall(this,a))}),this.captureVersion(),this.subscribeToDependencies(),a==null||a.attemptAutoclose("update-with-shallow-transfer",this.id),this}hydrateAncestors(){const i=[],a=[],o=[],p=[];if(this.initialData.parent){const e=J(this.initialData.parent),y=this.project.get(e);if(y)this.setParent(y,null),i.push(y);else throw new Error(`${this.type} with id '${this.id}' has a 'parent' reference '${e}' that isn't found in the project`)}else throw new Error(`${this.type} with id '${this.id}' must have a 'parent'`);if(this.initialData.declaration){const e=J(this.initialData.declaration),y=this.project.get(e);y&&(this.setDeclaration(y),i.push(y))}return this.initialData.calledByEntry.forEach(e=>{const y=J(e),v=this.project.get(y);v&&this.addEntryCaller(v,null)}),this.initialData.calledBySuccess.forEach(e=>{const y=J(e),v=this.project.get(y);v&&this.addSuccessCaller(v,null)}),this.initialData.calledByError.forEach(e=>{const y=J(e),v=this.project.get(y);v&&this.addErrorCaller(v,null)}),{updated:R(i),added:R(a),removed:R(o),affected:R(p),self:this}}afterAllChildrenInitialized(i=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"after-all-children-initialized"))){const a=[],o=[],p=[],e=[];this.initialized=!0;const{updated:y,added:v,removed:E}=this.syncInputs(i),{updated:w,added:A,removed:$}=this.syncOutputs(i);return a.push(...y,...w),o.push(...v,...A),p.push(...E,...$),this.captureVersion(),i==null||i.attemptAutoclose("after-all-children-initialized",this.id),{updated:R(a),added:R(o),removed:R(p),affected:R(e),self:this}}addSelfToProject(i=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"add-self-to-project"))){var y;const a=[this],o=[],p=[],e=[];return this.parent===this.project&&this.project.addFunctionCall(this),(y=this.process)==null||y.writesValues.forEach(v=>{v.setValueWriter(this.process,i),a.push(v)}),this.successCalls.forEach(v=>{v.addSuccessCaller(this,i),a.push(v)}),this.errorCalls.forEach(v=>{v.addErrorCaller(this,i),a.push(v)}),this.calledBySuccess.forEach(v=>{v.addSuccessCall(this,i),a.push(v)}),this.calledByError.forEach(v=>{v.addErrorCall(this,i),a.push(v)}),this.calledByEntry.forEach(v=>{v.addCall(this,i),a.push(v)}),this.subscribe(),this.subscribeToDependencies(),i==null||i.attemptAutoclose("add-self-to-project",this.id),{updated:R(a),added:R(o),removed:R(p),affected:R(e),self:this}}get calledBy(){return[...this.calledByEntry,...this.calledBySuccess,...this.calledByError]}removeInput(i,a=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"remove-input"))){const o=this.inputs.findIndex(p=>p.id===i.id);return o>-1&&(this.inputs.splice(o,1),a&&(a==null||a.add(this,S.Affected))),a==null||a.attemptAutoclose("remove-input",this.id),this}addInput(i,a=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"add-input"))){return this.inputs.includes(i)?(a==null||a.attemptAutoclose("add-input",this.id),this):(this.inputs.push(i),a==null||a.add(this,S.Affected),a==null||a.attemptAutoclose("add-input",this.id),this)}addOutput(i,a=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"add-output"))){return this.outputs.includes(i)?(a==null||a.attemptAutoclose("add-output",this.id),this):(this.outputs.push(i),a==null||a.add(this,S.Affected),a==null||a.attemptAutoclose("add-output",this.id),this)}removeOutput(i,a=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"remove-output"))){const o=this.outputs.findIndex(p=>p.id===i.id);return o>-1&&(this.outputs.splice(o,1),a&&(a==null||a.add(this,S.Affected))),a==null||a.attemptAutoclose("remove-output",this.id),this}addValueReader(i,a=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"add-value-reader"))){var o;return this.process&&!this.process.writesValues.includes(i)&&((o=this.process)==null||o.addValueReader(i,a),a==null||a.add(this,S.Affected)),a==null||a.attemptAutoclose("add-value-reader",this.id),this}removeValueReader(i,a=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"remove-value-reader"))){var o;return this.process&&this.process.writesValues.includes(i)&&((o=this.process)==null||o.removeValueReader(i,a),a==null||a.add(this,S.Affected)),a==null||a.attemptAutoclose("remove-value-reader",this.id),this}addSuccessCaller(i,a=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"add-success-caller")),o=!1){return this.calledBySuccess.find(p=>p.id===i.id)||(this.calledBySuccess.push(i),a==null||a.add(this,S.Updated),o&&We(this,a)),a==null||a.attemptAutoclose("add-success-caller",this.id),this}addErrorCaller(i,a=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"add-error-caller")),o=!1){return this.calledByError.find(p=>p.id===i.id)||(this.calledByError.push(i),a==null||a.add(this,S.Updated),o&&We(this,a)),a==null||a.attemptAutoclose("add-error-caller",this.id),this}addEntryCaller(i,a=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"add-entry-caller")),o=!1){return this.calledByEntry.find(p=>p.id===i.id)||(this.calledByEntry.push(i),a==null||a.add(this,S.Updated),o&&We(this,a)),a==null||a.attemptAutoclose("add-entry-caller",this.id),this}addErrorCall(i,a=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"add-error-call")),o=!1){return this.errorCalls.find(p=>p.id===i.id)||(this.errorCalls.push(i),o&&We(this,a),a==null||a.add(this,S.Affected)),a==null||a.attemptAutoclose("add-error-call",this.id),this}addSuccessCall(i,a=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"add-success-call")),o=!1){return this.successCalls.find(p=>p.id===i.id)||(this.successCalls.push(i),o&&We(this,a),a==null||a.add(this,S.Affected)),a==null||a.attemptAutoclose("add-success-call",this.id),this}removeCall(i,a=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"remove-call")),o=!1){const p=this.successCalls.findIndex(y=>y.id===i.id);p>-1&&(this.successCalls.splice(p,1),a==null||a.add(this,S.Affected));const e=this.errorCalls.findIndex(y=>y.id===i.id);return e>-1&&(this.errorCalls.splice(e,1),a==null||a.add(this,S.Affected)),o&&We(this,a),a==null||a.attemptAutoclose("remove-call",this.id),this}removeCaller(i,a=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"remove-caller")),o=!1){return this.calledBySuccess=this.calledBySuccess.filter(p=>p.id!==i.id?!0:(a==null||a.add(this,S.Updated),a==null||a.add(p,S.Affected),!1)),this.calledByError=this.calledByError.filter(p=>p.id!==i.id?!0:(a==null||a.add(this,S.Updated),a==null||a.add(p,S.Affected),!1)),this.calledByEntry=this.calledByEntry.filter(p=>p.id!==i.id?!0:(a==null||a.add(this,S.Updated),a==null||a.add(p,S.Affected),!1)),o&&We(this,a),a==null||a.attemptAutoclose("remove-caller",this.id),this}setParent(i,a=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"set-parent"))){var o;return((o=this.parent)==null?void 0:o.id)!==(i==null?void 0:i.id)&&(this.parent=i,a&&(a==null||a.add(this,S.Updated))),a==null||a.attemptAutoclose("set-parent",this.id),this}setDeclaration(i){return this.declaration=i,this}initChildren(i=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"init-children"))){if(this.initialized||this.startedInitialization)return this;if(this.startedInitialization=!0,this.initialData.declaration.type===f.FunctionDeclaration){const a=te(this.initialData.declaration,this.project);this.declaration=a}else{const a=J(this.initialData.declaration),o=this.project.get(a);this.declaration=o}return this.successCalls=this.initialData.successCalls.map(a=>{const o=te(a,this.project);if(o.addSuccessCaller(this),[f.BreakStatement,f.ContinueStatement].includes(o.type))o.setParent(this.parent.parent,null),o.initChildren(i);else if(o.type===f.ReturnStatement){const p=Wr(this,this.project);o.setParent(p,null),o.initChildren(i)}else o.type!==f.InternalCall&&(o.setParent(this.parent,null),o.initChildren(i));return o}),this.errorCalls=this.initialData.errorCalls.map(a=>{const o=te(a,this.project);if(o.addErrorCaller(this),[f.BreakStatement,f.ContinueStatement].includes(o.type))o.setParent(this.parent.parent,null),o.initChildren(i);else if(o.type===f.ReturnStatement){const p=Wr(this,this.project);o.setParent(p,null),o.initChildren(i)}else o.type!==f.InternalCall&&(o.setParent(this.parent,null),o.initChildren(i));return o}),this.inputs=this.initialData.inputs.map(a=>{const o=te(a,this.project);return o.setParent(this,null),o.initChildren(i),o}),this.initialData.process&&(this.process=te(this.initialData.process,this.project),this.process.setParent(this,null),this.process.initChildren(i)),this.initialData.error&&(this.error=te(this.initialData.error,this.project),this.error.setParent(this,null),this.error.initChildren(i)),this.subscribeToDependencies(),this.afterAllChildrenInitialized(i),i==null||i.attemptAutoclose("init-children",this.id),this}subscribe(){return this.activeVersion=!0,this.project.subscribeInstance(this),this}unsubscribe(){return this.project.unsubscribeInstance(this),this}metaSync(i,a=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"meta-sync"))){const o=Ur(this,i),p=this.toMeta();return this.x=i.x||p.x,this.y=i.y||p.y,super.metaSync(i),i.deleted===!0&&!p.deleted?a==null||a.add(this,S.Removed):i.deleted===!1&&p.deleted?a==null||a.add(this,S.Added):o&&(a==null||a.add(this,S.Updated)),a==null||a.attemptAutoclose("meta-sync",this.id),this}async APILoad(i=ve,...a){return await er.repository.APILoad(this.id,...a),this}async APICreate(i=ve,...a){return await er.repository.APICreate(this.toShallowJSON(),...a),this}async APIUpdate(i=ve,...a){return await er.repository.APIUpdate(this.toShallowJSON(),...a),this}async APIDelete(i=ve,...a){return await er.repository.APIDelete(this.toShallowJSON(),...a),this}async APIClone(i=ve,...a){return await er.repository.APIClone(this.id,...a),this}async APILoadVersion(i=ve,a,...o){return await er.repository.APILoadVersion(this.id,a,...o)}removeFromParent(i=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"remove-from-parent"))){const a=[],o=[],p=[],e=[];return this.parent.type===f.Project?(this.parent.removeFunctionCall(this),e.push(this.parent)):this.parent.detachedChildren.includes(this)&&this.parent.unsubscribeDetachedChild(this),i==null||i.attemptAutoclose("remove-from-parent",this.id),{added:R(p),updated:R(a),removed:R(o),affected:R(e),self:this}}remove({ignoreUpstream:i}={ignoreUpstream:!1},a=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"remove-entity"))){var v;const o=[],p=[],e=[],y=[];if(a!=null&&a.hasRemoved(this.id))return a==null||a.attemptAutoclose("remove-entity",this.id),{added:[],updated:[],removed:[],affected:[],self:this};if(p.push(this),this.unsubscribe(),this.unsubscribeFromDependencies(),this.project.subscribeDeletedInstance(this),this.metaSync({deleted:!0},a),Object.values(this.detachedDependents).forEach(E=>{const{updated:w,removed:A,added:$}=E.entity.onDetachedDependencyRemoved(this,E.field,a);o.push(...w),p.push(...A),e.push(...$)}),this.process){const{updated:E,removed:w}=(v=this.process)==null?void 0:v.remove({ignoreUpstream:!0},a);o.push(...E),p.push(...w)}if(this.inputs.forEach(E=>{const{updated:w,removed:A}=E.remove({ignoreUpstream:!0},a);o.push(...w),p.push(...A)}),this.outputs.forEach(E=>{const{updated:w,removed:A}=E.remove({ignoreUpstream:!0},a);o.push(...w),p.push(...A)}),this.error){const{updated:E,removed:w}=this.error.remove({ignoreUpstream:!0},a);o.push(...E),p.push(...w)}if(this.successCalls.forEach(E=>{o.push(E),E.removeCaller(this,a)}),this.errorCalls.forEach(E=>{o.push(E),E.removeCaller(this,a)}),!i){const E=this.removeFromParent(a);e.push(...E.added),o.push(...E.updated),p.push(...E.removed),y.push(...E.affected),this.calledBy.forEach(w=>{o.push(w),w.removeCall(this,a)})}return a==null||a.attemptAutoclose("remove-entity",this.id),{added:R(e),updated:R(o),removed:R(p),affected:R(y),self:this}}restore({}={},i=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"restore-entity"))){const a=[],o=[],p=[],e=[];if(i!=null&&i.hasAdded(this.id))return i==null||i.attemptAutoclose("restore-entity",this.id),{added:[],updated:[],removed:[],affected:[],self:this};if(this.subscribe(),this.project.unsubscribeDeletedInstance(this),this.metaSync({deleted:!1},i),Object.values(this.detachedDependents).forEach(y=>{const{updated:v,removed:E,added:w}=y.entity.onDetachedDependencyRestored(this,y.field,i);o.push(...v),p.push(...E),a.push(...w)}),this.process){const{updated:y}=this.process.restore({},i);o.push(...y)}return this.inputs.forEach(y=>{const{updated:v}=y.restore({},i);o.push(...v)}),this.outputs.forEach(y=>{const{updated:v}=y.restore({},i);o.push(...v)}),this.successCalls.forEach(y=>{o.push(y),y.addSuccessCaller(this,i)}),this.errorCalls.forEach(y=>{o.push(y),y.addErrorCaller(this,i)}),this.calledBySuccess.forEach(y=>{o.push(y),y.addSuccessCall(this,i)}),this.calledByError.forEach(y=>{o.push(y),y.addErrorCall(this,i)}),this.calledByEntry.forEach(y=>{o.push(y),y.addCall(this,i)}),i==null||i.attemptAutoclose("restore-entity",this.id),{added:R(a),updated:R(o),removed:R(p),affected:R(e),self:this}}toFlat(i=new Set){return i.has(this.id)?[]:(i.add(this.id),[this,...this.successCalls.flatMap(o=>o.toFlat(i)),...this.errorCalls.flatMap(o=>o.toFlat(i)),...this.inputs.flatMap(o=>o.toFlat(i)),...this.outputs.flatMap(o=>o.toFlat(i)),...this.process?this.process.toFlat(i):[],...this.error?this.error.toFlat(i):[],...this.calledBy.flatMap(o=>o.toFlat(i))])}toFlatIds(i=new Set){return i.has(this.id)?[]:(i.add(this.id),[this.id,...this.successCalls.flatMap(o=>o.toFlatIds(i)),...this.errorCalls.flatMap(o=>o.toFlatIds(i)),...this.inputs.flatMap(o=>o.toFlatIds(i)),...this.outputs.flatMap(o=>o.toFlatIds(i))])}toMeta(){return{id:this.id,version:this.version,createdAt:this.createdAt,previousVersion:this.previousVersion,author:this.author,deleted:this.deleted,x:this.x,y:this.y,type:this.type}}toJSON(i=new Set){var a,o;return i.has(this.id)?this.toReference():(i.add(this.id),{id:this.id,version:this.version,createdAt:this.createdAt,previousVersion:this.previousVersion,author:this.author,deleted:this.deleted,type:this.type,x:this.x,y:this.y,successCalls:this.successCalls.map(p=>p.toJSON(i)),errorCalls:this.errorCalls.map(p=>p.toJSON(i)),calledBySuccess:this.calledBySuccess.map(p=>p.toReference()),calledByError:this.calledByError.map(p=>p.toReference()),calledByEntry:this.calledByEntry.map(p=>p.toReference()),process:(a=this.process)==null?void 0:a.toJSON(i),declaration:this.declaration.toJSON(i),inputs:this.inputs.map(p=>p.toJSON(i)),outputs:this.outputs.map(p=>p.toJSON(i)),parent:this.parent.toReference(),error:(o=this.error)==null?void 0:o.toJSON(i)})}toJSONClone(i=ke){var o,p,e,y,v,E,w;let a;return(o=i.seenEntityMaps)!=null&&o.has(this.id)?a=i.seenEntityMaps.get(this.id):(a=i.newId||Gr(this,this.project,i.uuidStrategy),i.seenEntityMaps&&i.seenEntityMaps.set(this.id,a)),(p=i.seenEntities)!=null&&p.has(a)||(e=i.seenEntities)!=null&&e.has(this.id)?this.toReference({seenEntityMaps:i.seenEntityMaps}):((y=i.seenEntities)==null||y.add(a),(v=i.seenEntities)==null||v.add(this.id),{id:a,version:N.UUID.uuid(),createdAt:i.timestamp||L().toISOString(),previousVersion:null,author:this.author,deleted:this.deleted,type:this.type,x:this.x,y:this.y,successCalls:this.successCalls.map(A=>A.toJSONClone({...i,newId:null})),errorCalls:this.errorCalls.map(A=>A.toJSONClone({...i,newId:null})),calledBySuccess:this.calledBySuccess.map(A=>A.toReference({seenEntityMaps:i.seenEntityMaps})),calledByError:this.calledByError.map(A=>A.toReference({seenEntityMaps:i.seenEntityMaps})),calledByEntry:this.calledByEntry.map(A=>A.toReference({seenEntityMaps:i.seenEntityMaps})),process:(E=this.process)==null?void 0:E.toJSONClone({...i,newId:null}),declaration:this.declaration.toJSONClone({...i,newId:null}),inputs:this.inputs.map(A=>A.toJSONClone({...i,newId:null})),outputs:this.outputs.map(A=>A.toJSONClone({...i,newId:null})),error:(w=this.error)==null?void 0:w.toJSONClone({...i,newId:null}),parent:this.parent.toReference({seenEntityMaps:i.seenEntityMaps})})}toReference(i=ke){var o;let a=this.id;return(o=i.seenEntityMaps)!=null&&o.has(this.id)&&(a=i.seenEntityMaps.get(this.id)),{id:a+"--"+N.UUID.uuid()+"--ref",type:f.GenericReference,entityId:a,version:this.version,entityType:this.type}}toShallowJSON(i=ke){var o;let a=this.id;return(o=i.seenEntityMaps)!=null&&o.has(this.id)&&(a=i.seenEntityMaps.get(this.id)),{id:a,version:this.version,createdAt:this.createdAt,previousVersion:this.previousVersion,author:this.author,deleted:this.deleted,type:this.type,x:this.x,y:this.y,process:this.process?this.process.toReference(i):null,inputs:this.inputs.map(p=>p.toReference(i)),outputs:this.outputs.map(p=>p.toReference(i)),declaration:this.declaration.toReference(i),successCalls:this.successCalls.map(p=>p.toReference(i)),errorCalls:this.errorCalls.map(p=>p.toReference(i)),calledBySuccess:this.calledBySuccess.map(p=>p.toReference(i)),calledByError:this.calledByError.map(p=>p.toReference(i)),calledByEntry:this.calledByEntry.map(p=>p.toReference(i)),error:this.error?this.error.toReference(i):null,parent:this.parent.toReference(i)}}toFlatJSON(i=new Set){return i.has(this.id)?[]:(i.add(this.id),[this.toShallowJSON(),...this.successCalls.flatMap(o=>o.toFlatJSON(i)),...this.errorCalls.flatMap(o=>o.toFlatJSON(i)),...this.inputs.flatMap(o=>o.toFlatJSON(i)),...this.outputs.flatMap(o=>o.toFlatJSON(i)),...this.process?this.process.toFlatJSON(i):[],...this.error?this.error.toFlatJSON(i):[]])}toGenerationTarget(){const i=this.parent.type===f.Project?void 0:this.parent.id;return{id:this.id,version:this.version,createdAt:this.createdAt,previousVersion:this.previousVersion,author:this.author,deleted:this.deleted,type:this.type,calledByEntry:this.calledByEntry.map(a=>a.id),calledBySuccess:this.calledBySuccess.map(a=>a.id),calledByError:this.calledByError.map(a=>a.id),declaration:this.declaration.id,parent:i}}toFlatGenerationTarget(i=new Set){return i.has(this.id)?[]:(i.add(this.id),[this.toGenerationTarget(),...this.successCalls.flatMap(o=>o.toFlatGenerationTarget(i)),...this.errorCalls.flatMap(o=>o.toFlatGenerationTarget(i)),...this.inputs.flatMap(o=>o.toFlatGenerationTarget(i)),...this.outputs.flatMap(o=>o.toFlatGenerationTarget(i)),...this.process?this.process.toFlatGenerationTarget(i):[],...this.error?this.error.toFlatGenerationTarget(i):[]])}clearErrors(){var i,a;return this.errors=[],this.inputs.forEach(o=>o.clearErrors()),this.outputs.forEach(o=>o.clearErrors()),this.successCalls.forEach(o=>o.clearErrors()),this.errorCalls.forEach(o=>o.clearErrors()),(i=this.process)==null||i.clearErrors(),(a=this.error)==null||a.clearErrors(),this}validate(){const i=m5(this);return this.errors=i,{success:!0,error:null,data:this.toJSON()}}getErrors(){return[...this.errors,...this.inputs.flatMap(a=>a.getErrors()),...this.outputs.flatMap(a=>a.getErrors()),...this.error?this.error.getErrors():[],...this.process?this.process.getErrors():[]]}getShallowErrors(){return this.errors}clone(i=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"clone-entity")),a=null,o=null,p=!0){var U,G;let e=Fr(a,this);const y=this.toJSON(),v=o||N.UUID.uuid();y.inputs=[];const E=v.split("-id"),w=E[E.length-1||0]||v;y.id=v,y.version=N.UUID.uuid(),y.createdAt=(i==null?void 0:i.timestamp)||L().toISOString(),y.author=(i==null?void 0:i.author)||"1",y.previousVersion=null,y.deleted=!1;const A=lr(y,e);a?A.setParent(a,null):A.setParent(this.parent,null),p&&A.subscribe(),A.initChildren(i),i==null||i.add(A,S.Added);const $=(U=this.inputs)==null?void 0:U.map((K,Z)=>K.clone(i,A,w+"-input-map-"+Z+"-id",p));A.inputs=$;const V=(G=this.outputs)==null?void 0:G.map((K,Z)=>K.clone(i,A,w+"-output-map-"+Z+"-id",p));return A.outputs=V,this.error&&(A.error=this.error.clone(i,A,w+"-error-map-id",p)),this.process&&(A.process=this.process.clone(i,A,w+"-process-id",p)),i==null||i.attemptAutoclose("clone-entity",this.id),A}removeUnrecognizedInputs(i=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"remove-unrecognized-inputs"))){const a=[],o=[],p=[],e=[];return this.inputs.forEach(v=>{if(!this.declaration.inputs.find(w=>{var A;return w.id===((A=v.declaration)==null?void 0:A.id)})){const w=v.remove({ignoreUpstream:!1},i);p.push(...w.removed),a.push(...w.updated)}}),this.inputs.filter((v,E)=>{const w=this.inputs.findIndex($=>$.declaration===v.declaration&&$!==v);if(w===-1)return!1;const A=this.inputs[w];return L(A==null?void 0:A.createdAt).isSame(L(v.createdAt))?E>w:!!L(A==null?void 0:A.createdAt).isAfter(v.createdAt)}).forEach(v=>{const E=v.remove({ignoreUpstream:!1},i);p.push(...E.removed),a.push(...E.updated)}),i==null||i.attemptAutoclose("remove-unrecognized-inputs",this.id),{updated:R(a),added:R(o),removed:R(p),affected:R(e),self:this}}removeUnrecognizedOutputs(i=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"remove-unrecognized-outputs"))){const a=[],o=[],p=[],e=[];return this.outputs.forEach(v=>{if(!this.declaration.getUniqueReturnDeclarations().find(w=>{var A;return w.id===((A=v.declaration)==null?void 0:A.id)})){const w=v.remove({ignoreUpstream:!1},i);p.push(...w.removed),a.push(...w.updated)}}),this.outputs.filter((v,E)=>{const w=this.outputs.findIndex($=>$.declaration===v.declaration&&$!==v);if(w===-1)return!1;const A=this.outputs[w];return L(A==null?void 0:A.createdAt).isSame(L(v.createdAt))?E>w:!!L(A==null?void 0:A.createdAt).isAfter(v.createdAt)}).forEach(v=>{const E=v.remove({ignoreUpstream:!1},i);p.push(...E.removed),a.push(...E.updated)}),i==null||i.attemptAutoclose("remove-unrecognized-outputs",this.id),{updated:R(a),added:R(o),removed:R(p),affected:R(e),self:this}}syncInputs(i=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"sync-missing-fixed-inputs"))){const a=[],o=[],p=[],e=[],y=this.declaration.inputs.filter(A=>!this.inputs.find($=>$.declaration.id===A.id));this.inputs.sort((A,$)=>A.index-$.index),y.forEach(A=>{this.inputs.forEach(U=>{U.index>=A.index&&U.metaSync({index:U.index+1},i)});const $={id:N.UUID.uuid(),version:N.UUID.uuid(),createdAt:(i==null?void 0:i.timestamp)||L().toISOString(),author:N.sessionAuthor,previousVersion:null,deleted:!1,type:f.InputMap,declaration:A.toJSON(),readsValue:null,defaultValue:null,index:A.index,name:null,codeName:null,description:null,parent:this.toReference()},V=te($,this.project);V.setParent(this,i),V.initChildren(i),i==null||i.add(V,S.Added),V.addSelfToProject(i),o.push(V)}),this.inputs.sort((A,$)=>A.index-$.index);const{updated:v,added:E,removed:w}=this.removeUnrecognizedInputs(i);return a.push(...v),o.push(...E),p.push(...w),i==null||i.attemptAutoclose("sync-missing-fixed-inputs",this.id),{updated:R(a),added:R(o),removed:R(p),affected:R(e),self:this}}syncOutputs(i=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"sync-missing-fixed-outputs"))){const a=[],o=[],p=[],e=[],y=[];this.outputs=this.initialData.outputs.reduce(($,V)=>{if(V.type===f.GenericReference){const G=Ji(V,this.project);return G?[...$,G]:$}const U=te(V,this.project);return y.push(U.index),U.setParent(this,null),U.initChildren(i),[...$,U]},[]);const v=this.declaration.getUniqueReturnDeclarations().filter($=>!this.outputs.find(V=>V.declaration.id===$.id));this.outputs.sort(($,V)=>$.index-V.index),v.forEach(($,V)=>{this.outputs.forEach(Z=>{Z.index>=$.index&&Z.index++});const U=y.includes($.index)?this.outputs.length-1+V:$.index,G={id:N.UUID.uuid(),version:N.UUID.uuid(),createdAt:(i==null?void 0:i.timestamp)||L().toISOString(),author:N.sessionAuthor,previousVersion:null,deleted:!1,type:f.OutputMap,declaration:$.toJSON(),defaultValue:null,writesValues:[],index:U,parent:this.toReference()},K=te(G,this.project);K.setParent(this,i),K.initChildren(i),i==null||i.add(K,S.Added),K.addSelfToProject(i)}),this.outputs.sort(($,V)=>$.index-V.index);const{updated:E,added:w,removed:A}=this.removeUnrecognizedOutputs(i);return a.push(...E),o.push(...w),p.push(...A),i==null||i.attemptAutoclose("sync-missing-fixed-outputs",this.id),{updated:R(a),added:R(o),removed:R(p),affected:R(e),self:this}}getUnusedInputs(){return this.inputs.filter(i=>i.suggestion||!i.readsValue&&!i.defaultValue)}getUnusedOutputs(){return this.outputs.filter(i=>i.suggestion||!i.writesValues.length)}getUsedInputs(){return this.inputs.filter(i=>!i.suggestion&&(i.readsValue||i.defaultValue))}getUsedOutputs(){return this.outputs.filter(i=>!i.suggestion&&i.writesValues.length)}};g(er,"repository",{APICreate:async(i,...a)=>i,APIUpdate:async(i,...a)=>i,APIDelete:async(i,...a)=>i,APIClone:async(i,...a)=>{},APILoad:async(i,...a)=>null,APILoadVersion:async(i,a,...o)=>null}),g(er,"type",f.FunctionCall),g(er,"USER_MANAGED_PARENT_TYPES",[...Mr,f.Project]),g(er,"PARENT_TYPES",[...er.USER_MANAGED_PARENT_TYPES]),g(er,"MUTABLE_BASE_PROPERTIES",[]),g(er,"INMUTABLE_BASE_PROPERTIES",["id","type","version","createdAt","author","previousVersion"]),g(er,"BASE_PROPERTIES",[...er.MUTABLE_BASE_PROPERTIES,...er.INMUTABLE_BASE_PROPERTIES]),g(er,"MUTABLE_META_PROPERTIES",["x","y"]),g(er,"INMUTABLE_META_PROPERTIES",[...er.INMUTABLE_BASE_PROPERTIES]),g(er,"META_PROPERTIES",[...er.MUTABLE_META_PROPERTIES,...er.INMUTABLE_META_PROPERTIES]),g(er,"MUTABLE_UPSTREAM_PROPERTIES",["calledBySuccess","calledByError","calledByEntry"]),g(er,"INMUTABLE_UPSTREAM_PROPERTIES",["declaration","parent"]),g(er,"UPSTREAM_PROPERTIES",[...er.MUTABLE_UPSTREAM_PROPERTIES,...er.INMUTABLE_UPSTREAM_PROPERTIES]),g(er,"MUTABLE_DOWNSTREAM_PROPERTIES",["successCalls","errorCalls","writesValues","inputs","outputs","error"]),g(er,"INMUTABLE_DOWNSTREAM_PROPERTIES",[]),g(er,"DOWNSTREAM_PROPERTIES",[...er.MUTABLE_DOWNSTREAM_PROPERTIES,...er.INMUTABLE_DOWNSTREAM_PROPERTIES]),g(er,"PROPERTIES",[...er.META_PROPERTIES,...er.UPSTREAM_PROPERTIES,...er.DOWNSTREAM_PROPERTIES]);let Ao=er;function Nb(u){return u&&typeof u.then=="function"}function BIe(u){const d=new ea(u[0]),i=u.map(o=>o.id),a={};return u.forEach(o=>{a[o.id]=o}),d.order=i,d.flatRecord=a,d.orderEntities(),d.order.map(o=>d.flatRecord[o])}function UIe(u){const d=new ea(Object.values(u)[0]),i=Object.keys(u);return d.order=i,d.flatRecord=u,d.orderEntities(),d.order}class ea{constructor(d){g(this,"order",[]);g(this,"flatRecord",{});g(this,"allBuiltInEntityIds",Xs());g(this,"onGoingVisits",{});d&&(this.flatten(d),this.orderEntities())}flatten(d){const i=new Set(Xs()),a=R(me(d,i,{ignoreBuiltInBaseEntities:!0})),o=new Set;for(const p of a)this.flatRecord[p.id]=p,o.add(p.id);this.order=Array.from(o)}moveEntityAfterDependencies(d){const{upstream:i}=ed(d,this.flatRecord,{ignoreBuiltInBaseEntities:!0,allBuiltInEntityIds:this.allBuiltInEntityIds});for(const a of Object.keys(i)){const o=this.order.indexOf(a),p=this.order.indexOf(d.id);if(o>p)return this.order.splice(p,1),this.order.splice(o,0,d.id),!0}return!1}orderEntities(){let d=!1;for(let i=0;i<this.order.length;i++){const a=this.order[i],o=this.flatRecord[a];if(o||Me.warn(`Entity with id ${a} not found in flatRecord. Skipping...`),this.moveEntityAfterDependencies(o)){d=!0;break}}d&&this.orderEntities()}getUpstreamOngoingDependenciesVisits(d,i){const{upstream:a}=ed(this.flatRecord[d],this.flatRecord,{ignoreBuiltInBaseEntities:!0,allBuiltInEntityIds:this.allBuiltInEntityIds}),o={};return Object.entries(this.onGoingVisits[i]||{}).forEach(([p,e])=>{Object.keys(a).includes(p)&&(o[p]=e)}),o}getDownstreamOngoingDependenciesVisits(d,i){const a=Object.keys(this.onGoingVisits[i]||{}),o=new Set(a.flatMap(e=>Object.keys(ed(this.flatRecord[e],this.flatRecord,{ignoreBuiltInBaseEntities:!0,allBuiltInEntityIds:this.allBuiltInEntityIds}).downstream))),p={};return Array.from(o).forEach(e=>{e===d&&(p[e]=this.onGoingVisits[i][e])}),p}async settlePromises(d,i){const a=Object.values(d);a.length&&await Promise.all(a),Object.keys(d).forEach(o=>{delete this.onGoingVisits[i][o]})}visit(d){const i=this.order;for(const a of i)d(this.flatRecord[a],this.flatRecord);return this}reverseVisit(d){const i=this.order.slice().reverse();for(const a of i)d(this.flatRecord[a],this.flatRecord);return this}async visitAsync(d){const i=this.order,a=Math.random().toString(36).substring(7);this.onGoingVisits[a]={};for(const o of i){const p=this.getUpstreamOngoingDependenciesVisits(o,a);Object.keys(p).length&&await this.settlePromises(p,a);const e=d(this.flatRecord[o],this.flatRecord);Nb(e)&&(this.onGoingVisits[a][o]=e)}return await this.settlePromises(this.onGoingVisits[a],a),this.onGoingVisits[a]={},this}async reverseVisitAsync(d){const i=this.order.slice().reverse(),a=Math.random().toString(36).substring(7);this.onGoingVisits[a]={};for(const o of i){const p=this.getDownstreamOngoingDependenciesVisits(o,a);Object.keys(p).length&&await this.settlePromises(p,a);const e=d(this.flatRecord[o],this.flatRecord);Nb(e)&&(this.onGoingVisits[a][o]=e)}return await this.settlePromises(this.onGoingVisits[a],a),this.onGoingVisits[a]={},this}}function E5(u,d){switch(u.id){case Ee["built-in-base-entity"].BUILT_IN_PERSISTED_ENTITY_ENTITY.id:{const i=u.project.entities.filter(v=>!!v.implements.find(E=>E.id===Ee["built-in-base-entity"].BUILT_IN_RELATIONAL_DATABASE_ENTITY.id)),a=i.find(v=>{const E=v.properties.find($=>$.implements&&$.implements.id===Ee["built-in-base-entity"].BUILT_IN_RELATIONAL_DATABASE_ENTITY.properties.default.id),w=E==null?void 0:E.getDefaultValue();return(w==null?void 0:w.value)===!0});if(!a&&i.length){const E=i[0].properties.find(A=>A.implements&&A.implements.id===Ee["built-in-base-entity"].BUILT_IN_RELATIONAL_DATABASE_ENTITY.properties.default.id),w=E==null?void 0:E.defaultValue;if(w)w.metaSync({value:!0},d);else if(E!=null&&E.dataType){const A={id:N.UUID.uuid(),version:N.UUID.uuid(),createdAt:(d==null?void 0:d.timestamp)||new Date().toISOString(),author:N.sessionAuthor,previousVersion:null,deleted:!1,type:f.LiteralValue,standaloneParent:null,name:Q.EntityTemplate,autogeneration:null,value:!0,valueAsTypeSingle:null,valueAsTypeList:null,parent:E==null?void 0:E.toReference()},$=te(A,u.project);return $.setParent(E,d),$.initChildren(d),d==null||d.add($,S.Added),$.addSelfToProject(d),{newEntities:[$]}}return{newEntities:[]}}else if(a)return{newEntities:[]};const o=u.project.get(Ee["built-in-base-entity"].BUILT_IN_RELATIONAL_DATABASE_ENTITY.id),p=wm(o,"Main database",d);if(p.errors.length>0)return{newEntities:[]};const e=p.properties.find(v=>v.implements&&v.implements.id===Ee["built-in-base-entity"].BUILT_IN_RELATIONAL_DATABASE_ENTITY.properties.default.id),y=e==null?void 0:e.defaultValue;if(y)y.metaSync({value:!0},d);else if(e!=null&&e.dataType){const v={id:N.UUID.uuid(),version:N.UUID.uuid(),createdAt:(d==null?void 0:d.timestamp)||new Date().toISOString(),author:N.sessionAuthor,previousVersion:null,deleted:!1,type:f.LiteralValue,standaloneParent:null,name:Q.EntityTemplate,autogeneration:null,value:!0,valueAsTypeSingle:null,valueAsTypeList:null,parent:e==null?void 0:e.toReference()},E=te(v,u.project);E.setParent(e,d),E.initChildren(d),d==null||d.add(E,S.Added),E.addSelfToProject(d)}return{newEntities:[p]}}}return{newEntities:[]}}function T5(u,d){const i=[],a=[],o=[],p=[];return u.implements.filter(y=>y.type===f.BuiltInBaseEntity).forEach(y=>{var v;switch(y.id){case Ee["built-in-base-entity"].BUILT_IN_PERSISTED_ENTITY_ENTITY.id:{const E=u.project.entities.filter(V=>V.implements.find(U=>U.id===Ee["built-in-base-entity"].BUILT_IN_RELATIONAL_DATABASE_ENTITY.id));let w=E.find(V=>!!V.properties.find(U=>{var G;return U.implements&&U.implements.id===Ee["built-in-base-entity"].BUILT_IN_RELATIONAL_DATABASE_ENTITY.properties.default.id&&((G=U.getDefaultValue())==null?void 0:G.value)===!0}));if(!w&&E.length)w=E[0];else if(!w&&!E.length){w=u.project.getBuiltIn(Ee["built-in-base-entity"].BUILT_IN_RELATIONAL_DATABASE_ENTITY.id).implement("Relational database",d);const U=w.properties.find(G=>{var K;return((K=G.implements)==null?void 0:K.id)===Ee["built-in-base-entity"].BUILT_IN_RELATIONAL_DATABASE_ENTITY.properties.default.id});(v=U==null?void 0:U.defaultValue)==null||v.metaSync({value:!0},d),a.push(w)}const A=u.properties.find(V=>V.implements&&V.implements.id===Ee["built-in-base-entity"].BUILT_IN_PERSISTED_ENTITY_ENTITY.properties.database.id),$=A==null?void 0:A.defaultValue;if(A&&!$){const V={id:N.UUID.uuid(),version:N.UUID.uuid(),createdAt:(d==null?void 0:d.timestamp)||new Date().toISOString(),author:N.sessionAuthor,previousVersion:null,deleted:!1,type:f.LiteralValue,standaloneParent:null,name:Q.EntityTemplate,autogeneration:null,value:null,valueAsTypeSingle:(w==null?void 0:w.toJSON())||null,valueAsTypeList:null,parent:A==null?void 0:A.toReference()},U=te(V,u.project);U.hydrateAncestors(),U.setParent(A,d),U.addSelfToProject(d),U.initChildren(d),d==null||d.add(U,S.Added),a.push(U);return}else $&&!$.valueAsTypeSingle&&$.setValueAsTypeSingle(w||null,d);return}}}),{self:u,updated:R(i),added:R(a),removed:R(o),affected:R(p)}}function wm(u,d,i,a){const o=a||N.UUID.uuid(),p=N.UUID.uuid(),e={id:o,version:p,createdAt:(i==null?void 0:i.timestamp)||new Date().toISOString(),author:N.sessionAuthor,previousVersion:null,deleted:!1,name:d,type:f.DefinitionEntity,codeName:null,description:null,static:u.static,abstract:!1,properties:[],methods:[],abstractMethods:[],extends:[],implements:[u.toJSON()],x:0,y:0,parent:u.project.toReference()};E5(u,i);const y=te(e,u.project);return y.hydrateAncestors(),i==null||i.add(y,S.Added),y.addSelfToProject(i),y.addImplementation(u),y.setParent(u.project,i),y.initChildren(i),T5(y,i),y}function Vb(u,d){return d.entities.find(o=>{const p=o.properties,e=p.map(A=>A.name),y=u.every(A=>e.includes(A)),v=e.filter(A=>!u.includes(A)),E=p.every(A=>!v.includes(A.name)||!A.required);return y&&E})||null}function I5(u,d,i,a=vi.OrDataTypeGroup){const o=[],p=[],e=[],y=[],E={id:N.UUID.uuid(),version:N.UUID.uuid(),createdAt:(i==null?void 0:i.timestamp)||new Date().toISOString(),author:N.sessionAuthor,previousVersion:null,deleted:!1,type:f.DataType,options:null,implementationChooseOne:!1,entity:u.toJSON(),isList:!1,asType:!1,andChildrenGroup:null,orChildrenGroup:null,staticEntities:null,interactiveEntities:null,actionEntities:null,like:!0,inferred:!1,parentRelationType:a,parent:d.toReference()},w=te(E,u.project);return p.push(w),w.setParent(d,i),w.initChildren(i),i==null||i.add(w,S.Added),w.setEntity(u,i),w.addSelfToProject(i),{updated:R(o),added:R(p),removed:R(e),affected:R(y),self:w}}function Lb(u,d,i,a,o){var E,w,A,$,V,U,G,K;const p=[],e=[],y=[],v=[];switch(typeof u){case"string":let Z=!1;const ie=new Date(u);if(ie instanceof Date&&!isNaN(ie.valueOf())&&(Z=!0),Z){const X=d.project.getBuiltIn(Ee[f.PrimitiveEntity][Q.Date].id);d.setEntity(X,a);break}else{const X=d.project.getBuiltIn(Ee[f.PrimitiveEntity][Q.String].id);d.setEntity(X,a);break}case"number":d.setEntity(d.project.getBuiltIn(Ee[f.PrimitiveEntity][Q.Number].id),a);break;case"boolean":d.setEntity(d.project.getBuiltIn(Ee[f.PrimitiveEntity][Q.Boolean].id),a);break;case"object":if(u===null){d.setEntity(d.project.getBuiltIn(Ee[f.PrimitiveEntity][Q.Null].id),a);break}else if(Array.isArray(u))if(d.metaSync({isList:!0},a),u.length>0){const X=u.slice(0,5).filter(re=>re!==void 0);if(X.every(re=>typeof re==typeof X[0])&&(typeof X[0]!="object"||X[0]===null))switch(typeof X[0]){case"string":d.setEntity(d.project.getBuiltIn(Ee[f.PrimitiveEntity][Q.String].id),a);break;case"number":d.setEntity(d.project.getBuiltIn(Ee[f.PrimitiveEntity][Q.Number].id),a);break;case"boolean":d.setEntity(d.project.getBuiltIn(Ee[f.PrimitiveEntity][Q.Boolean].id),a);break;case"object":d.setEntity(d.project.getBuiltIn(Ee[f.PrimitiveEntity][Q.Null].id),a);break}else{const re=[];let fe=!1;X.forEach(H=>{var ce,z,oe,we;if(Array.isArray(H)&&(fe=!0),typeof H=="object"&&!Array.isArray(H)&&H!==null){const xe=Rm(H,d.project,{...i,id:N.UUID.uuid()},a,o);xe.hasCreated&&re.push((ce=xe.changeSet)==null?void 0:ce.self),p.push(...(z=xe.changeSet)==null?void 0:z.updated),e.push(...(oe=xe.changeSet)==null?void 0:oe.added),y.push(...(we=xe.changeSet)==null?void 0:we.removed)}});const Y=R(re);if(!Y.length&&!fe){X.forEach(H=>{const ce={id:N.UUID.uuid(),version:N.UUID.uuid(),createdAt:(a==null?void 0:a.timestamp)||new Date().toISOString(),author:N.sessionAuthor,previousVersion:null,deleted:!1,type:f.DataType,options:null,implementationChooseOne:!1,entity:null,isList:!1,asType:!1,andChildrenGroup:null,orChildrenGroup:null,staticEntities:!1,interactiveEntities:!0,actionEntities:!1,like:!0,inferred:!1,parentRelationType:vi.OrDataTypeGroup,parent:d.toReference()},z=te(ce,d.project);switch(z.setParent(d,a),z.initChildren(a),a==null||a.add(z,S.Added),z.addSelfToProject(a),typeof H){case"string":z.setEntity(z.project.getBuiltIn(Ee[f.PrimitiveEntity][Q.String].id),a);break;case"number":z.setEntity(z.project.getBuiltIn(Ee[f.PrimitiveEntity][Q.Number].id),a);break;case"boolean":z.setEntity(z.project.getBuiltIn(Ee[f.PrimitiveEntity][Q.Boolean].id),a);break;case"object":z.setEntity(z.project.getBuiltIn(Ee[f.PrimitiveEntity][Q.Null].id),a);break}});break}else Y.length===1&&!fe?d.setEntity(Y[0],a):X.forEach(H=>{if(typeof H=="object"&&!Array.isArray(H)&&H!==null){const ce=Vb(Object.keys(H),d.project);if(ce){const z=I5(ce||Y[0],d,a,vi.OrDataTypeGroup);p.push(...z.updated),e.push(...z.added),y.push(...z.removed)}}else{const ce={id:N.UUID.uuid(),version:N.UUID.uuid(),createdAt:(a==null?void 0:a.timestamp)||new Date().toISOString(),author:N.sessionAuthor,previousVersion:null,deleted:!1,type:f.DataType,options:null,implementationChooseOne:!1,entity:null,isList:Array.isArray(H),asType:!1,andChildrenGroup:null,orChildrenGroup:null,staticEntities:!1,interactiveEntities:!0,actionEntities:!1,like:!0,inferred:!1,parentRelationType:vi.OrDataTypeGroup,parent:d.toReference()},z=te(ce,d.project);z.setParent(d,a),z.initChildren(a),a==null||a.add(z,S.Added),z.addSelfToProject(a);const oe=Lb(H,z,{...i,id:N.UUID.uuid()},a,o);p.push(...oe.updated),e.push(...oe.added),y.push(...oe.removed)}})}}else{const X=Rm(u[0],d.project,{...i},a,o);d.setEntity((E=X.changeSet)==null?void 0:E.self,a),p.push(...(w=X.changeSet)==null?void 0:w.updated),e.push(...(A=X.changeSet)==null?void 0:A.added),y.push(...($=X.changeSet)==null?void 0:$.removed);break}else{const X=Rm(u,d.project,{...i},a,o);d.setEntity((V=X.changeSet)==null?void 0:V.self,a),p.push(...(U=X.changeSet)==null?void 0:U.updated),e.push(...(G=X.changeSet)==null?void 0:G.added),y.push(...(K=X.changeSet)==null?void 0:K.removed);break}}return{updated:R(p),added:R(e),removed:R(y),affected:R(v),self:d}}function Rm(u,d,i,a,o){const p=[],e=[],y=[],v=[],E=Object.keys(u),w=Vb(E,d);if(w)return{hasCreated:!1,changeSet:{updated:[],added:[],removed:[],affected:[],self:w}};const A=o?i.name+" of "+o.name:i.name,V={id:i.id||N.UUID.uuid(),version:N.UUID.uuid(),createdAt:(a==null?void 0:a.timestamp)||new Date().toISOString(),author:N.sessionAuthor,previousVersion:null,deleted:!1,name:A,codeName:null,type:f.DefinitionEntity,description:i.description||null,static:i.static||!1,abstract:i.abstract||!1,properties:[],methods:[],abstractMethods:[],extends:[],implements:[],x:0,y:0,parent:d.toReference()},U=te(V,d);return U.setParent(d,a),U.initChildren(a),a==null||a.add(U,S.Added),U.addSelfToProject(a),e.push(U),E.forEach((G,K)=>{const ie={id:N.UUID.uuid(),version:N.UUID.uuid(),createdAt:(a==null?void 0:a.timestamp)||new Date().toISOString(),author:N.sessionAuthor,previousVersion:null,deleted:!1,name:G,type:f.Property,codeName:G,description:null,static:!1,abstract:!1,defaultValue:null,constant:!1,interactive:!0,dataType:null,implements:null,extends:null,index:K,hidden:!1,private:!1,required:!0,parent:U.toReference()},X=te(ie,d);X.setParent(U,a),X.initChildren(a),a==null||a.add(X,S.Added),X.addSelfToProject(a),e.push(X);const de=u[G],fe={id:N.UUID.uuid(),version:N.UUID.uuid(),createdAt:(a==null?void 0:a.timestamp)||new Date().toISOString(),author:N.sessionAuthor,previousVersion:null,deleted:!1,type:f.DataType,parentRelationType:null,options:null,implementationChooseOne:!1,entity:null,isList:!1,asType:!1,andChildrenGroup:null,orChildrenGroup:null,staticEntities:!1,interactiveEntities:!0,actionEntities:!1,like:!0,inferred:!1,parent:X.toReference()},Y=te(fe,d);Y.setParent(X,a),Y.initChildren(a),a==null||a.add(Y,S.Added),Y.addSelfToProject(a),e.push(Y);const H=Lb(de,Y,{...i,name:G,id:N.UUID.uuid()},a,o||U);p.push(...H.updated),e.push(...H.added),y.push(...H.removed)}),{hasCreated:!0,changeSet:{updated:R(p),added:R(e),removed:R(y),affected:R(v),self:U}}}function ja(u,d,i,a){const o=[];return!u.length||!d.length?{errors:o,overlap:!1}:(u.length>d.length?u.forEach(p=>{const e=d.find(v=>v.name===p.name),y=d.find(v=>{var E,w;return!!p.implements&&((E=v.implements)==null?void 0:E.id)===((w=p.implements)==null?void 0:w.id)});if(e){const v=new ur({id:p.id+"--"+e.id+"--"+a,message:`Entity of type ${p.type} named "${p.name}" with id "${p.id}" overrides a base ${e.type} ${e.name} with id "${e.id}" that has the same name`,issue:null,severity:q.Error,code:a,entity:p,firstRelationship:e});o.push(v)}if(y){const v=new ur({id:p.id+"--"+y.id+"--"+i,message:`Entity of type ${p.type} named "${p.name}" with id "${p.id}" overrides a base ${y.type} ${y.name} with id "${y.id}" that implements the same base descriptor`,issue:null,severity:q.Error,code:i,entity:p,firstRelationship:y});o.push(v)}}):d.forEach(p=>{var v;const e=u.find(E=>E.name===p.name),y=u.find(E=>{var w,A;return!!E.implements&&((w=E.implements)==null?void 0:w.id)===((A=p.implements)==null?void 0:A.id)});if(e){const E=new ur({id:e.id+"--"+p.id+"--"+a,message:`Entity of type ${e.type} named "${e.name}" with id "${e.id}" overrides a base entity ${p.name} with id "${p.id}" that has the same name`,issue:null,severity:q.Error,code:a,entity:e,firstRelationship:p});o.push(E)}if(y){const E=new ur({id:y.id+"--"+p.id+"--"+i,message:`Entity of type ${y.type} named "${y.name}" with id "${y.id}" overrides a base entity ${p.name} with id "${p.id}" that implements the same base ${(v=y==null?void 0:y.implements)==null?void 0:v.type}`,issue:null,severity:q.Error,code:i,entity:y,firstRelationship:p});o.push(E)}}),{errors:o,overlap:!!o.length})}function jIe(u,d){return u.abstract||(u.properties.forEach(a=>{a.abstract||a.metaSync({abstract:!0},d)}),Object.values(u.detachedDependents).forEach(a=>{a.field===dA.Entity&&a.entity.remove({ignoreUpstream:!1},d)}),u.metaSync({abstract:!0},d)),u}function xIe(u,d){return u.abstract&&(u.properties.forEach(a=>{a.abstract&&a.metaSync({abstract:!1},d)}),Object.values(u.detachedDependents).forEach(a=>{(a.field===Gm.Implements||a.field===Gm.Extends)&&a.entity.onDetachedDependencyRemoved(u,a.field,d)}),u.metaSync({abstract:!1},d)),u}function FIe(u,d){return u.static||(u.properties.forEach(a=>{a.static||a.metaSync({static:!0},d)}),u.metaSync({static:!0},d)),u}function GIe(u,d){return u.static&&u.metaSync({static:!1},d),u}var A5=(u=>(u.StringValueMustNotHaveSpaces="string-value-must-not-have-spaces",u.StringValueMustNotHaveDashes="string-value-must-not-have-dashes",u))(A5||{});function b5(u,d){const i=[],a=d;if(!a)return{errors:i,override:d};if(typeof a!="string")return{errors:[],override:d};if(a.includes(" ")){const o=new ur({id:u.id+"--string-value-must-not-have-spaces",message:`Entity of type ${u.type} with id "${u.id}" has an invalid value "${d}". The value cannot contain spaces.`,issue:null,severity:q.Error,code:"string-value-must-not-have-spaces",entity:u});i.push(o)}return{errors:i,override:a.replace(/\s/g,"-")}}function w5(u,d){const i=[],a=d;if(!a)return{errors:i,override:d};if(typeof a!="string")return{errors:[],override:d};if(a.includes(" ")){const o=new ur({id:u.id+"--string-value-must-not-have-spaces",message:`Entity of type ${u.type} with id "${u.id}" has an invalid value "${d}". The value cannot contain spaces or dashes.`,issue:null,severity:q.Error,code:"string-value-must-not-have-spaces",entity:u});i.push(o)}if(a.includes("-")){const o=new ur({id:u.id+"--string-value-must-not-have-dashes",message:`Entity of type ${u.type} with id "${u.id}" has an invalid value "${d}". The value cannot contain spaces or dashes.`,issue:null,severity:q.Error,code:"string-value-must-not-have-dashes",entity:u});i.push(o)}return{errors:i,override:a.replace(/\s|-/g,"_")}}function Mb(u,d){var i;if(u.type===f.LiteralValue){let a=(i=u.value)==null?void 0:i.toString();try{a=JSON.stringify(u.value,null,2)}catch{}return`${u.type}: ${u.id} (${ne(u,d)}) = ${a}`}if(u.type===f.DataType){if(u instanceof vs||u.increaseVersion)return`${u.type}: ${u.id} (${ad(u)})`;try{const a=ad(u);return`${u.type}: ${u.id} (${a})`}catch{}}return`${u.type}: ${u.id} (${ne(u,d)})`}function Qu(u,d){const i=bo(u);if(i.length===0)return{list:[],last:null};let a=null;return{list:i.flatMap(p=>{if(p===d)return a=p,[p];const e=Qu(p,d);return e.last&&(a=e.last),[p,...e.list]}),last:a}}function _l(u,d){const i=u.calledBy;if(i.length===0)return{list:[],last:null,callType:null};let a=null,o=null;return{list:i.flatMap(e=>{if(e===d)return a=e,Jt.includes(e.type)?e.parent.type===f.Loop?o="loop-body":o="entry":e.successCalls.includes(u)?o="success":e.errorCalls.includes(u)&&(o="error"),[e];if(!Ri.includes(e.type))return[e];const y=_l(e,d);return y.last&&(a=y.last,o=y.callType),[e,...y.list]}),last:a,callType:o}}function Bb(u){if(u.type===f.Loop){const d=[...Li(ei(u.successCalls)).map(o=>({callee:o,callType:"success"})),...Li(ei(u.errorCalls)).map(o=>({callee:o,callType:"error"})),...(u.body?Rt(u.body):[]).map(o=>({callee:o,callType:"loop-body"}))];return R(d.map(o=>o.callee)).map(o=>{var e;const p=(e=d.find(y=>y.callee===o))==null?void 0:e.callType;return{callee:o,callType:p}})}if(fr.includes(u.type)){const d=[...Li(ei(u.successCalls)).map(o=>({callee:o,callType:"success"})),...Li(ei(u.errorCalls)).map(o=>({callee:o,callType:"error"}))];return R(d.map(o=>o.callee)).map(o=>{var e;const p=(e=d.find(y=>y.callee===o))==null?void 0:e.callType;return{callee:o,callType:p}})}if(Jt.includes(u.type)){const d=[...Li(ei(u.calls)).map(o=>u.parent.type===f.Loop?{callee:o,callType:"loop-body"}:{callee:o,callType:"entry"})];return R(d.map(o=>o.callee)).map(o=>{var e;const p=(e=d.find(y=>y.callee===o))==null?void 0:e.callType;return{callee:o,callType:p}})}return[]}function Ub(u,d,i,a=!0){return u.reduce((p,e)=>{if(!_i.includes(e.type))return p;const y=Bb(e),v=y.find(w=>w.callee===d),E=y.find(w=>w.callee===i);if(!v&&!E)return p;if(v&&E){if(v.callType===E.callType)return[...p,{ancestor:e,callType:v.callType}];if(!a)return[...p,{ancestor:e,callType:v.callType}]}else return[...p,{ancestor:e,callType:(v==null?void 0:v.callType)||(E==null?void 0:E.callType)}];return p},[])}function jb(u,d,i,a=!0){let o,p=[];if(Jt.includes(i.type))p=Ub(i.calls,u,d,a),i.parent.type===f.Loop?o="loop-body":o="entry";else if(fr.includes(i.type)){const y=Ub(i.successCalls,u,d,a),v=Ub(i.errorCalls,u,d,a);y.length&&!v.length&&(p.push(...y.map(E=>({ancestor:E.ancestor,callType:E.callType}))),o="success"),!y.length&&v.length&&(p.push(...v.map(E=>({ancestor:E.ancestor,callType:E.callType}))),o="error")}if(p.length===0)return{ancestor:null,callType:null};if(p.length===1)return{ancestor:p[0].ancestor,callType:p[0].callType};const e=p.filter(y=>!p.some(v=>v.ancestor!==y.ancestor&&_l(y.ancestor,v.ancestor).last===v.ancestor));if(e.length===1){const y=jb(u,d,e[0].ancestor,a);return y.ancestor?{ancestor:y.ancestor,callType:y.callType}:{ancestor:e[0].ancestor,callType:e[0].callType}}return{ancestor:i,callType:o}}function R5(u,d,i=!0){var e,y,v,E;if(!u||!d)throw new Error("Both entities must be defined to find a common ancestor");if(u===d)return{ancestor:u,callType:"same-entity"};if(!((e=u.calledBy)!=null&&e.length)&&!((y=d.calledBy)!=null&&y.length))return{ancestor:null,callType:null};if(Ri.includes(u.type)&&_i.includes(d.type)&&(v=u.calledBy)!=null&&v.every(w=>w===d)){if(Jt.includes(d.type))return d.parent.type===f.Loop?{ancestor:d,callType:"loop-body"}:{ancestor:d,callType:"entry"};if(d.successCalls.includes(u))return{ancestor:d,callType:"success"};if(d.errorCalls.includes(u))return{ancestor:d,callType:"error"}}if(Ri.includes(d.type)&&_i.includes(u.type)&&(E=d.calledBy)!=null&&E.every(w=>w===u)){if(Jt.includes(u.type))return u.parent.type===f.Loop?{ancestor:u,callType:"loop-body"}:{ancestor:u,callType:"entry"};if(u.successCalls.includes(d))return{ancestor:u,callType:"success"};if(u.errorCalls.includes(d))return{ancestor:u,callType:"error"}}const a=tf(u),o=tf(d);if(!a||!o)return{ancestor:null,callType:null};if(a!==o)return{ancestor:null,callType:null};const p=jb(u,d,a,i);return p.ancestor?{ancestor:p.ancestor,callType:p.callType}:{ancestor:a,callType:"entry"}}function SIe(u){if(!u)return{ancestor:null,callType:null};const d=u.calledBy;if(d.length===0)return{ancestor:null,callType:null};if(d.length===1){if(Jt.includes(d[0].type))return d[0].parent.type===f.Loop?{ancestor:d[0],callType:"loop-body"}:{ancestor:d[0],callType:"entry"};if(d[0].successCalls.includes(u))return{ancestor:d[0],callType:"success"};if(d[0].errorCalls.includes(u))return{ancestor:d[0],callType:"error"}}let i=d[0],a=null;for(let o=1;o<d.length&&i;o++){const p=d[o];if(!Ri.includes(p.type)){i=p,Jt.includes(i.type)?i.parent.type===f.Loop?a="loop-body":a="entry":i.successCalls.includes(u)?a="success":i.errorCalls.includes(u)&&(a="error");continue}const e=R5(i,p);e.ancestor?(i=e.ancestor,a=e.callType):(i=null,a=null)}return i?{ancestor:i,callType:a}:{ancestor:null,callType:null}}function ef(u){const d=u.calledBy;if(d.length===0)return u.project;const i=d.reduce((a,o)=>{const p=Zi(o,u.project);return!p||p.type===f.Project?a:a.type===f.Project||Qu(p,a).last?p:(Qu(a,p).last,a)},u.project);return i.type===f.FunctionDeclaration&&i.parent.type===f.Loop?i.parent:i}function We(u,d){let i=ef(u);if(u.type===f.InternalCall)if(u.parent.type===f.VariableInstance){const o=Qs(i,u.parent.declaration,u.project);!o.compatible&&o.type!=="b-is-global-a-is-not"?u.parent.remove({ignoreUpstream:!1},d):(u.parent.setParent(i,d),u.parent.addSelfToProject(d))}else u.parent.setParent(i,d),u.parent.addSelfToProject(d);else if((u.type===f.ContinueStatement||u.type===f.BreakStatement)&&i.type!==f.Loop){u.remove({ignoreUpstream:!1},d);return}else if(u.type===f.ReturnStatement&&!Mr.includes(i.type)){u.remove({ignoreUpstream:!1},d);return}else if(mt.includes(u.type)){const o=u.usedInternalCalls[0];if(o)if(i=ef(o),u.type===f.VariableInstance){const p=Qs(i,u.declaration,u.project);!p.compatible&&p.type!=="b-is-global-a-is-not"?u.remove({ignoreUpstream:!1},d):(u.setParent(i,d),u.addSelfToProject(d))}else u.setParent(i,d),u.addSelfToProject(d);else if(u.type===f.VariableInstance){const p=Qs(i,u.declaration,u.project);!p.compatible&&p.type!=="b-is-global-a-is-not"?u.remove({ignoreUpstream:!1},d):(u.setParent(i,d),u.addSelfToProject(d))}else u.setParent(i,d),u.addSelfToProject(d)}else u.setParent(i,d),u.addSelfToProject(d);if(Ar.includes(u.type))return;Rt(u).forEach(o=>{let p=ef(o);if(o.type===f.InternalCall)if(o.parent.type===f.VariableInstance){const e=Qs(p,o.parent.declaration,u.project);!e.compatible&&e.type!=="b-is-global-a-is-not"?o.parent.remove({ignoreUpstream:!1},d):(o.parent.setParent(p,d),o.parent.addSelfToProject(d))}else o.parent.setParent(p,d),o.parent.addSelfToProject(d);else if((o.type===f.ContinueStatement||o.type===f.BreakStatement)&&p.type!==f.Loop){o.remove({ignoreUpstream:!1},d);return}else if(o.type===f.ReturnStatement&&!Mr.includes(p.type)){o.remove({ignoreUpstream:!1},d);return}else if(mt.includes(o.type)){const e=o.usedInternalCalls[0];if(e)if(p=ef(e),o.type===f.VariableInstance){const y=Qs(p,o.declaration,u.project);!y.compatible&&y.type!=="b-is-global-a-is-not"?o.remove({ignoreUpstream:!1},d):(o.setParent(p,d),o.addSelfToProject(d))}else o.setParent(p,d),o.addSelfToProject(d);else if(o.type===f.VariableInstance){const y=Qs(p,o.declaration,u.project);!y.compatible&&y.type!=="b-is-global-a-is-not"?o.remove({ignoreUpstream:!1},d):(o.setParent(p,d),o.addSelfToProject(d))}else o.setParent(p,d),o.addSelfToProject(d)}else o.setParent(p,d),o.addSelfToProject(d)})}function _m(u,d,i=new Set){const a=wn(u),o=wn(d),p=a.filter(v=>!o.includes(v)),e=a.filter(v=>o.includes(v)),y=p.reduce((v,E)=>i.has(E.id)?v:(i.add(E.id),R([...v,..._m(E,d,i)])),[]);return R([...e,...y])}function gl(u,d){const i=Qu(u,d);return i.last===d&&i.list.length>0&&i.list[0]!==d}function xb(u,d){return!!Qu(u,d).last}function KIe(u,d){return!!_l(u,d).last}function tf(u){if(Jt.includes(u.type))return u;if([...Ri,f.VariableDeclaration].includes(u.type)){const d=u.parent;return Jt.includes(d.type)?d:null}return null}function Fb(u,d){if(!u||!d)throw new Error("Both entities must be defined to find a common ancestor");if(u===d)return u;const i=u.parent;if(i){if(i===d)return d;if(i.type===f.Project)return null}else return null;const a=d.parent;if(a){if(a===u)return u;if(a.type===f.Project)return null}else return null;return Fb(i,a)}function kIe(u,d,i=!0){if(!u||!d)throw new Error("Both entities must be defined to find a common ancestor");if(u===d)return{ancestor:u,callType:"same-entity"};if(Ri.includes(u.type)&&_i.includes(d.type)){const y=_l(u,d),v=y.last;if(v){if(v===d)return{ancestor:d,callType:y.callType}}else return{ancestor:null,callType:null}}if(Ri.includes(d.type)&&_i.includes(u.type)){const y=_l(d,u),v=y.last;if(v){if(v===u)return{ancestor:u,callType:y.callType}}else return{ancestor:null,callType:null}}const a=tf(u),o=tf(d);if(!a||!o)return{ancestor:null,callType:null};if(a!==o)return{ancestor:null,callType:null};if(a.calls.includes(u)||a.calls.includes(d))return{ancestor:a,callType:"entry"};const p=a.calls.reduce((y,v)=>{if(!_i.includes(v.type))return y;const E=Bb(v),w=E.find($=>$.callee===u),A=E.find($=>$.callee===d);return w&&A&&(!i||w.callType===A.callType)?[...y,{ancestor:v,callType:w.callType}]:y},[]);if(p.length===0)return{ancestor:null,callType:null};if(p.length===1)return{ancestor:p[0].ancestor,callType:p[0].callType};const e=p.filter(y=>!p.some(v=>v.ancestor!==y.ancestor&&_l(y.ancestor,v.ancestor).last===v.ancestor));return e.length===1?{ancestor:e[0].ancestor,callType:e[0].callType}:{ancestor:a,callType:"entry"}}function Er(u){if(nh.includes(u.type)){if(u.type===f.FunctionDeclaration){const d=u.parent;if(d.type===f.DefinitionEntity)return Er(d);if(d.type===f.Loop)return d}return u.type===f.DefinitionEntity&&u.parent.type===f.DataType?Er(u.parent):u}else{const d=u.parent;return d?Er(d):null}}function gm(u,d){const i=rf(u,d);if(!i)return null;if(nh.includes(i.type)){if(i.type===f.FunctionDeclaration){const a=rf(i.parent,d);if(a){if(a.type===f.DefinitionEntity)return a;if(a.type===f.Loop)return a}}return i}else{const a=i.parent?rf(i.parent,d):null;return a?gm(a,d):null}}function _5(u){if(!u)return null;if(Ri.includes(u.type))return u;const d=u.parent;return d?_5(d):null}function g5(u){if(!u)return null;if(fr.includes(u.type))return u;const d=u.parent;return d?g5(d):null}function D5(u){if(!u)return null;if(_i.includes(u.type))return u;const d=u.parent;return d?D5(d):null}function qIe(u){return u.type===f.VariableDeclaration?[u]:fr.includes(u.type)?[...u.inputs,...u.outputs||[]]:Ar.includes(u.type)?u.outputs:So.includes(u.type)||u.type===f.FunctionDeclaration?u.inputs:[]}function ZIe(u){const d=wn(u),i=[],a=[];_g.includes(u.type)&&i.push(...Dm(u));const o=d.filter(p=>{const e=i.includes(p);return e?!1:Ri.includes(p.type)&&!e?(a.push(p),!1):!0});return i.sort((p,e)=>gl(e,p)?-1:0),a.sort((p,e)=>gl(e,p)?-1:0),[...i,...a,...o]}function O5(u){return[...u].sort((d,i)=>gl(i,d)?-1:0)}function JIe(u){const d=O5(u),i=[];return d.forEach(a=>{const o=i[i.length-1];if(o){const p=o[o.length-1];gl(a,p)?i.push([a]):o.push(a)}else i.push([a])}),i}function ei(u){const d=u.map(i=>Er(i));return R(d)}function Dm(u){return fr.includes(u.type)?[...ei(u.successCalls),...ei(u.errorCalls)]:Jt.includes(u.type)?ei(u.calls):[]}function HIe(u,d){return Dm(u).includes(d)}function Om(u){return u.writesValues||[]}function WIe(u,d){return Om(u).includes(d)}function C5(u){var d;return mt.includes((d=u==null?void 0:u.readsValue)==null?void 0:d.type)?u.readsValue:null}function YIe(u){return u.writesValues}function $5(u=[]){return u.map(C5).filter(d=>!!d)}function Cm(u=[]){return u.map(d=>d.writesValues).flat().filter(d=>mt.includes(d.type))}function P5(u=[]){return u.map(d=>d.readsValue).filter(d=>!!d&&mt.includes(d.type))}function N5(u){return mt.includes(u.type)?u:null}function V5(u){return u.writesValues.map(N5).filter(d=>!!d)}function L5(u=[]){return u.reduce((d,i)=>i.type===f.OutputMap?[...d,...V5(i)]:d,[])}function Rt(u){return u.type===f.Loop?R([...Li(ei(u.successCalls)),...Li(ei(u.errorCalls)),...u.body?Rt(u.body):[]]):fr.includes(u.type)?R([...Li(ei(u.successCalls)),...Li(ei(u.errorCalls))]):Jt.includes(u.type)?R(Li(ei(u.calls))):[]}function zIe(u){return fr.includes(u.type)?[...Li(ei(u.successCalls)),...Li(ei(u.errorCalls))]:Jt.includes(u.type)?Li(ei(u.calls)):[]}function M5(u,d=new Set){return u.writesValues.filter(a=>mt.includes(a.type)&&!d.has(a.id)).reduce((a,o)=>d.has(o.id)?a:[...a,...mr(o,d)],[])}function B5(u,d=new Set){var a;return(((a=u.readsValue)==null?void 0:a.writesValues)||[]).filter(o=>mt.includes(o.type)&&!d.has(o.id)).reduce((o,p)=>d.has(p.id)?o:[...o,...mr(p,d)],[])}function mr(u,d=new Set){if(d.has(u.id))return[];if(u.type===f.ReturnStatement)return P5(u.outputs).reduce((a,o)=>[...a,...mr(o,d)],[]);if(u.type===f.FunctionCall||u.type===f.Operation||u.type===f.Condition)return[...Rt(u).reduce((p,e)=>{const y=Er(e);return[...p,...mr(y||e,d)]},[]),...$5(u.inputs),...L5(u.outputs)].reduce((p,e)=>[...p,...mr(e,d)],[]);if(So.includes(u.type)){const i=Cm(u.inputs),o=Rt(u).reduce((p,e)=>{const y=Er(e);return[...p,...mr(y||e,d)]},[]);return i.push(...o),i.reduce((p,e)=>[...p,...mr(e,d)],[])}if(u.type===f.FunctionDeclaration){const i=[...Cm(u.inputs)],o=Rt(u).reduce((p,e)=>{const y=Er(e);return[...p,...mr(y||e,d)]},[]);return i.push(...o),i.reduce((p,e)=>[...p,...mr(e)],[])}if(mt.includes(u.type)){d.add(u.id);const a=Rt(u).reduce((o,p)=>{const e=Er(p);return[...o,...mr(e||p,d)]},[]);return[u,...a,...B5(u,d),...M5(u,d)]}return[]}function Is(u,d=new Set){return d.has(u.id)?[]:(d.add(u.id),[...wn(u).reduce((o,p)=>[...o,p,...Is(p,d)],[])])}function Li(u){return u.reduce((d,i)=>i.type===f.ReturnStatement||i.type===f.ContinueStatement||i.type===f.BreakStatement?[...d,i]:[...d,i,...Rt(i)],[])}function U5(u){const d=u.entities||[],i=[...d,...u.functions||[],...u.events||[],...u.projects||[]],a=d.reduce((v,E)=>[...v,...E.properties],[]),o=d.reduce((v,E)=>[...v,...E.methods],[]),p=o.reduce((v,E)=>[...v,...Cm(E.inputs),...Li(ei(E.calls)),...E.returnStatements],[]),e=u.functions.reduce((v,E)=>[...v,...Li(ei(E.calls)),...E.returnStatements],[]),y=u.events.reduce((v,E)=>[...v,...Li(ei(E.calls)),...E.returnStatements],[]);return[...i,...a,...o,...p,...e,...y]}function j5(u,d){return d.filter(a=>{if(!a)return!1;switch(a.type){case f.FunctionCall:return a.inputs.find(o=>o.id===u.id)!==void 0||a.outputs.find(o=>o.id===u.id)!==void 0;case f.Condition:return a.successCalls.find(o=>o.id===u.id)!==void 0||a.errorCalls.find(o=>o.id===u.id)!==void 0||a.inputs.find(o=>o.id===u.id)!==void 0;case f.Operation:return a.outputs.find(o=>o.id===u.id)!==void 0;case f.VariableDeclaration:return fr.includes(u.type)?fS(u).find(p=>{var e;return((e=p.readsValue)==null?void 0:e.id)===a.id})!==void 0:!1;case f.DefinitionEntity:return a.properties.find(o=>o.id===u.id)!==void 0||a.methods.find(o=>o.id===u.id)!==void 0;case f.FunctionDeclaration:return a.inputs.find(o=>o.id===u.id)!==void 0||(a.returnStatements.map(o=>o.outputs).flat()||[]).find(o=>o.id===u.id)!==void 0;default:return!1}})}function XIe(u){const d=U5(u.project);return j5(u,d)}function rf(u,d){return u?typeof u=="string"?d[u]:u.type===f.GenericReference?d[u.entityId]:d[u.id]?d[u.id]:null:null}function x5(u={},d){const i={};return Object.keys(u).forEach(a=>{const o=d.get(a)||a,p=u[a];i[o]=p}),i}function ed(u,d={},i={}){const a={ignoreBuiltInBaseEntities:!1,allBuiltInEntityIds:[],entityMaps:new Map,...i};if(a.ignoreBuiltInBaseEntities&&(Wi.includes(u.type)||(a.allBuiltInEntityIds||[]).includes(u.id)))return{upstream:{},downstream:{}};const o=u,p=u,e=u,y=u,v=u,E=u,w=u,A=u,$=u,V=u,U=u,G=u,K=u,Z=[...K.readsValue?[K.readsValue]:[],...K.declaration?[K.declaration]:[],...(G.calledByEntry||[]).flatMap(re=>re),...(G.calledBySuccess||[]).flatMap(re=>re),...(G.calledByError||[]).flatMap(re=>re),...V.parent?[V.parent]:[]];Array.isArray(e.implements)?Z.push(...e.implements.flatMap(re=>re)):$.implements&&Z.push($.implements),Array.isArray(e.extends)?Z.push(...e.extends.flatMap(re=>re)):$.extends&&Z.push($.extends),v.valueAsTypeList&&Array.isArray(v.valueAsTypeList)&&Z.push(...v.valueAsTypeList.flatMap(re=>re)),v.valueAsTypeSingle&&Z.push(v.valueAsTypeSingle),(K.internalCalls||[]).forEach(re=>{const fe=J(re);if(fe&&d[fe]){const Y=d[fe];[...Y.calledByEntry||[],...Y.calledBySuccess||[],...Y.calledByError||[]].forEach(H=>{const ce=J(H);ce&&d[ce]&&Z.push(d[ce])})}});const ie=[...(o.inputs||[]).flatMap(re=>re),...(U.inputsDeclarations||[]).flatMap(re=>re),...(o.outputs||[]).flatMap(re=>re),...(U.outputsDeclarations||[]).flatMap(re=>re),...(K.internalCalls||[]).flatMap(re=>re),...K.writesValues||[],...G.dataType?[G.dataType]:[],...E.body?[E.body]:[],...G.defaultValue?[G.defaultValue]:[],...(G.successCalls||[]).flatMap(re=>re),...(G.errorCalls||[]).flatMap(re=>re),...(e.properties||[]).flatMap(re=>re),...(e.methods||[]).flatMap(re=>re),...(e.abstractMethods||[]).flatMap(re=>re),...w.error?[w.error]:[],...w.process?[w.process]:[],...V.throws?[V.throws]:[],...(p.andChildrenGroup||[]).flatMap(re=>re),...(p.orChildrenGroup||[]).flatMap(re=>re),...(A.entities||[]).flatMap(re=>re),...(A.functions||[]).flatMap(re=>re),...(A.functionCalls||[]).flatMap(re=>re),...(A.events||[]).flatMap(re=>re),...(A.conditions||[]).flatMap(re=>re),...(A.operations||[]).flatMap(re=>re),...(A.loops||[]).flatMap(re=>re),...(A.variableDeclarations||[]).flatMap(re=>re),...(A.variableInstances||[]).flatMap(re=>re),...(A.searches||[]).flatMap(re=>re),...(A.projects||[]).flatMap(re=>re),...(y.calls||[]).flatMap(re=>re)];u.type===f.DataType&&(p.entity&&d[J(p.entity)]&&d[J(p.entity)].parent&&J(d[J(p.entity)].parent)===u.id?ie.push(p.entity):p.entity&&Z.push(p.entity)),(K.internalCalls||[]).forEach(re=>{const fe=J(re);if(fe&&d[fe]){const Y=d[fe];[...Y.successCalls||[],...Y.errorCalls||[]].forEach(H=>{const ce=J(H);ce&&d[ce]&&ie.push(d[ce])})}});const X={},de={};return Z.forEach(re=>{var H;const fe=J(re);if(fe&&a.ignoreBuiltInBaseEntities&&(Wi.includes(re.type)||(a.allBuiltInEntityIds||[]).includes(fe)))return;const Y=re.version;if(fe){const ce=((H=a.entityMaps)==null?void 0:H.get(fe))||fe;X[ce]=Y}}),ie.forEach(re=>{var H;const fe=J(re);if(fe&&a.ignoreBuiltInBaseEntities&&(Wi.includes(re.type)||(a.allBuiltInEntityIds||[]).includes(fe)))return;const Y=re.version;if(fe){const ce=((H=a.entityMaps)==null?void 0:H.get(fe))||fe;de[ce]=Y}}),{upstream:X,downstream:de}}function QIe(u,d){const i=[];if(Ri.includes(u.type)){Us(u).forEach(p=>{const e=gm(p,d);e&&i.push(e)});const o=[...u.inputs||[],...u.outputs||[]].map(p=>{const e=rf(p,d);return e?yS(e,d):null}).filter(p=>p!==null);i.push(...R(o))}if(mt.includes(u.type)){const a=$m(u);a&&i.push(a)}return R(i)}function bo(u){const d=[];if(Ri.includes(u.type)){u.calledBy.forEach(o=>{const p=Er(o);p&&d.push(p)});const a=[...u.inputs||[],...u.outputs||[]].map(o=>$m(o)).filter(o=>o!==null);d.push(...R(a))}if(mt.includes(u.type)){const i=$m(u);i&&d.push(i)}return R(d)}function Us(u){return[...u.calledByEntry||[],...u.calledByError||[],...u.calledBySuccess||[]].filter(d=>d.type!==f.GenericReference)}function F5(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.ActionDescriptor)throw new Error("Entity must be an action descriptor to be flattened");return[u,...u.inputs.flatMap(a=>me(a,d,i)),...u.outputs.flatMap(a=>me(a,d,i)),...u.error?me(u.error,d,i):[],...u.parent?me(u.parent,d,i):[]]}function G5(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.ArgumentDeclaration)throw new Error("Entity must be an argument declaration to be flattened");return[u,...u.defaultValue?me(u.defaultValue,d):[],...u.writesValues.flatMap(a=>me(a,d,i)),...u.dataType?me(u.dataType,d,i):[],...u.parent?me(u.parent,d,i):[]]}function S5(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.BreakStatement)throw new Error("Entity must be a break statement to be flattened");return[u,...u.outputs.flatMap(a=>me(a,d,i)),...u.throws?me(u.throws,d,i):[],...(Us(u)||[]).flatMap(a=>me(a,d,i)),...u.parent?me(u.parent,d,i):[]]}function K5(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.BuiltInBaseEntity)throw new Error("Entity must be a built-in base entity to be flattened");return[u,...(u.properties||[]).flatMap(a=>me(a,d,i)),...(u.methods||[]).flatMap(a=>me(a,d,i)),...(u.abstractMethods||[]).flatMap(a=>me(a,d,i)),...(u.extends||[]).flatMap(a=>me(a,d,i))]}function k5(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.Condition)throw new Error("Entity must be a condition to be flattened");return[u,...(u.inputs||[]).flatMap(a=>me(a,d,i)),...(u.successCalls||[]).flatMap(a=>me(a,d,i)),...(u.errorCalls||[]).flatMap(a=>me(a,d,i)),...(Us(u)||[]).flatMap(a=>me(a,d,i)),...u.parent?me(u.parent,d,i):[]]}function q5(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.ContinueStatement)throw new Error("Entity must be a continue statement to be flattened");return[u,...u.outputs.flatMap(a=>me(a,d,i)),...u.throws?me(u.throws,d,i):[],...(Us(u)||[]).flatMap(a=>me(a,d,i)),...u.parent?me(u.parent,d,i):[]]}function Z5(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.DefinitionEntity)throw new Error("Entity must be a definition entity to be flattened");return[u,...(u.extends||[]).flatMap(a=>me(a,d,i)),...(u.implements||[]).flatMap(a=>me(a,d,i)),...(u.properties||[]).flatMap(a=>me(a,d,i)),...(u.methods||[]).flatMap(a=>me(a,d,i)),...(u.abstractMethods||[]).flatMap(a=>me(a,d,i)),...u.parent?me(u.parent,d,i):[]]}function J5(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.DataType)throw new Error("Entity must be a data type to be flattened");return[u,...(u.andChildrenGroup||[]).flatMap(a=>me(a,d,i)),...(u.orChildrenGroup||[]).flatMap(a=>me(a,d,i)),...u.entity?me(u.entity,d,i):[],...u.parent?me(u.parent,d,i):[]]}function H5(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.FunctionCall)throw new Error("Entity must be a function call to be flattened");return[u,...(u.inputs||[]).flatMap(a=>me(a,d,i)),...(u.outputs||[]).flatMap(a=>me(a,d,i)),...u.error?me(u.error,d,i):[],...u.process?me(u.process,d,i):[],...(Us(u)||[]).flatMap(a=>me(a,d,i)),...(u.successCalls||[]).flatMap(a=>me(a,d,i)),...(u.errorCalls||[]).flatMap(a=>me(a,d,i)),...u.parent?me(u.parent,d,i):[]]}function W5(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.FunctionDeclaration)throw new Error("Entity must be a function declaration to be flattened");return[u,...(u.inputs||[]).flatMap(a=>me(a,d,i)),...(u.calls||[]).flatMap(a=>me(a,d,i)),...u.implements?me(u.implements,d,i):[],...u.parent?me(u.parent,d,i):[]]}function Y5(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.GlobalEvent)throw new Error("Entity must be a global event to be flattened");return[u,...(u.inputs||[]).flatMap(a=>me(a,d,i)),...(u.calls||[]).flatMap(a=>me(a,d,i)),...u.implements?me(u.implements,d,i):[],...u.parent?me(u.parent,d,i):[]]}function z5(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.InputMap)throw new Error("Entity must be an input map to be flattened");return[u,...u.readsValue?me(u.readsValue,d,i):[],...u.declaration?me(u.declaration,d,i):[],...u.defaultValue?me(u.defaultValue,d,i):[],...u.parent?me(u.parent,d,i):[]]}function X5(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.InstalledProject)throw new Error("Entity must be an installed project to be flattened");return[u,...(u.functions||[]).flatMap(a=>me(a,d,i)),...(u.events||[]).flatMap(a=>me(a,d,i)),...u.parent?me(u.parent,d,i):[]]}function Q5(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.InternalCall)throw new Error("Entity must be an internal call to be flattened");return[u,...(u.successCalls||[]).flatMap(a=>me(a,d,i)),...(u.errorCalls||[]).flatMap(a=>me(a,d,i)),...(u.inputs||[]).flatMap(a=>me(a,d,i)),...(u.outputs||[]).flatMap(a=>me(a,d,i)),...(Us(u)||[]).flatMap(a=>me(a,d,i)),...u.error?me(u.error,d,i):[],...u.process?me(u.process,d,i):[],...u.parent?me(u.parent,d,i):[]]}function eS(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.LiteralValue)throw new Error("Entity must be a literal value to be flattened");return[u,...u.valueAsTypeSingle?me(u.valueAsTypeSingle,d,i):[],...u.valueAsTypeList&&Array.isArray(u.valueAsTypeList)?u.valueAsTypeList.flatMap(a=>me(a,d,i)):[],...u.parent?me(u.parent,d,i):[]]}function tS(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.Loop)throw new Error("Entity must be a loop to be flattened");return[u,...(u.inputs||[]).flatMap(a=>me(a,d,i)),...(u.outputs||[]).flatMap(a=>me(a,d,i)),...(u.successCalls||[]).flatMap(a=>me(a,d,i)),...(u.errorCalls||[]).flatMap(a=>me(a,d,i)),...u.error?me(u.error,d,i):[],...u.process?me(u.process,d,i):[],...u.body?me(u.body,d,i):[],...(Us(u)||[]).flatMap(a=>me(a,d,i)),...u.parent?me(u.parent,d,i):[]]}function rS(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.Operation)throw new Error("Entity must be an operation to be flattened");return[u,...(u.successCalls||[]).flatMap(a=>me(a,d,i)),...(u.errorCalls||[]).flatMap(a=>me(a,d,i)),...(u.inputs||[]).flatMap(a=>me(a,d,i)),...(u.outputs||[]).flatMap(a=>me(a,d,i)),...u.error?me(u.error,d,i):[],...u.process?me(u.process,d,i):[],...(Us(u)||[]).flatMap(a=>me(a,d,i)),...u.parent?me(u.parent,d,i):[]]}function iS(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.OutputMap)throw new Error("Entity must be an output map to be flattened");return[u,...(u.writesValues||[]).flatMap(a=>me(a,d,i)),...u.declaration?me(u.declaration,d,i):[],...u.defaultValue?me(u.defaultValue,d,i):[],...u.parent?me(u.parent,d,i):[]]}function sS(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.PrimitiveEntity)throw new Error("Entity must be a primitive entity to be flattened");return[u,...(u.properties||[]).flatMap(a=>me(a,d,i)),...(u.methods||[]).flatMap(a=>me(a,d,i)),...(u.abstractMethods||[]).flatMap(a=>me(a,d,i))]}function nS(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.Project)throw new Error("Entity must be a project to be flattened");return[u,...(u.entities||[]).flatMap(a=>me(a,d,i)),...(u.functions||[]).flatMap(a=>me(a,d,i)),...(u.events||[]).flatMap(a=>me(a,d,i)),...(u.projects||[]).flatMap(a=>me(a,d,i)),...(u.variableDeclarations||[]).flatMap(a=>me(a,d,i)),...(u.variableInstances||[]).flatMap(a=>me(a,d,i)),...(u.operations||[]).flatMap(a=>me(a,d,i)),...(u.conditions||[]).flatMap(a=>me(a,d,i)),...(u.functionCalls||[]).flatMap(a=>me(a,d,i)),...(u.projects||[]).flatMap(a=>me(a,d,i)),...(u.loops||[]).flatMap(a=>me(a,d,i)),...(u.searches||[]).flatMap(a=>me(a,d,i))]}function aS(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.Property)throw new Error("Entity must be a property to be flattened");return[u,...u.defaultValue?me(u.defaultValue,d,i):[],...u.dataType?me(u.dataType,d,i):[],...u.parent?me(u.parent,d,i):[]]}function oS(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.ReturnDeclaration)throw new Error("Entity must be a return declaration to be flattened");return[u,...u.readsValue?me(u.readsValue,d,i):[],...u.defaultValue?me(u.defaultValue,d,i):[],...u.dataType?me(u.dataType,d,i):[],...u.parent?me(u.parent,d,i):[]]}function lS(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.ReturnStatement)throw new Error("Entity must be a return statement to be flattened");return[u,...(u.outputs||[]).flatMap(a=>me(a,d,i)),...u.throws?me(u.throws,d,i):[],...(Us(u)||[]).flatMap(a=>me(a,d,i)),...u.parent?me(u.parent,d,i):[]]}function uS(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.Search)throw new Error("Entity must be a search to be flattened");return[u,...(u.successCalls||[]).flatMap(a=>me(a,d,i)),...(u.errorCalls||[]).flatMap(a=>me(a,d,i)),...(u.inputsDeclarations||[]).flatMap(a=>me(a,d,i)),...(u.inputs||[]).flatMap(a=>me(a,d,i)),...(u.outputsDeclarations||[]).flatMap(a=>me(a,d,i)),...(u.outputs||[]).flatMap(a=>me(a,d,i)),...u.error?me(u.error,d,i):[],...(Us(u)||[]).flatMap(a=>me(a,d,i)),...u.parent?me(u.parent,d,i):[]]}function dS(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.ValueDescriptor)throw new Error("Entity must be a value descriptor to be flattened");return[u,...u.defaultValue?me(u.defaultValue,d,i):[],...u.dataType?me(u.dataType,d,i):[],...u.parent?me(u.parent,d,i):[]]}function cS(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.VariableDeclaration)throw new Error("Entity must be a variable declaration to be flattened");return[u,...(u.successCalls||[]).flatMap(a=>me(a,d,i)),...(u.errorCalls||[]).flatMap(a=>me(a,d,i)),...(u.inputs||[]).flatMap(a=>me(a,d,i)),...(u.outputs||[]).flatMap(a=>me(a,d,i)),...(u.internalCalls||[]).flatMap(a=>me(a,d,i)),...(u.writesValues||[]).flatMap(a=>me(a,d,i)),...u.readsValue?me(u.readsValue,d,i):[],...u.defaultValue?me(u.defaultValue,d,i):[],...(Us(u)||[]).flatMap(a=>me(a,d,i)),...u.dataType?me(u.dataType,d,i):[],...u.parent?me(u.parent,d,i):[]]}function pS(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.VariableInstance)throw new Error("Entity must be a variable instance to be flattened");return[u,...(u.successCalls||[]).flatMap(a=>me(a,d,i)),...(u.errorCalls||[]).flatMap(a=>me(a,d,i)),...(u.inputs||[]).flatMap(a=>me(a,d,i)),...(u.outputs||[]).flatMap(a=>me(a,d,i)),...(u.internalCalls||[]).flatMap(a=>me(a,d,i)),...(u.writesValues||[]).flatMap(a=>me(a,d,i)),...u.readsValue?me(u.readsValue,d,i):[],...u.defaultValue?me(u.defaultValue,d,i):[],...(Us(u)||[]).flatMap(a=>me(a,d,i)),...u.declaration?me(u.declaration,d,i):[],...u.parent?me(u.parent,d,i):[]]}function Xs(){const u=new Set,d=m2.flatMap(i=>me(i,u)).map(i=>i.id);if(!d.includes("http-request-error-return-delaration-id"))throw new Error("Built-in base entities must be included in the list");return d}function me(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(!u)throw new Error("Entity must be defined to be flattened");if(u.type===f.GenericReference)return[];if(i.ignoreBuiltInBaseEntities&&(Wi.includes(u.type)||Xs().includes(u.id)))return[];if(d.has(u.id))return[];switch(u.type){case f.FunctionCall:return H5(u,d,i);case f.Operation:return rS(u,d,i);case f.Condition:return k5(u,d,i);case f.Loop:return tS(u,d,i);case f.Search:return uS(u,d,i);case f.GlobalEvent:return Y5(u,d,i);case f.ReturnStatement:return lS(u,d,i);case f.ContinueStatement:return q5(u,d,i);case f.BreakStatement:return S5(u,d,i);case f.VariableDeclaration:return cS(u,d,i);case f.DefinitionEntity:return Z5(u,d,i);case f.FunctionDeclaration:return W5(u,d,i);case f.Project:return nS(u,d,i);case f.ActionDescriptor:return F5(u,d,i);case f.ArgumentDeclaration:return G5(u,d,i);case f.ReturnDeclaration:return oS(u,d,i);case f.ValueDescriptor:return dS(u,d,i);case f.InputMap:return z5(u,d,i);case f.OutputMap:return iS(u,d,i);case f.DataType:return J5(u,d,i);case f.InstalledProject:return X5(u,d,i);case f.InternalCall:return Q5(u,d,i);case f.LiteralValue:return eS(u,d,i);case f.Property:return aS(u,d,i);case f.VariableInstance:return pS(u,d,i);case f.BuiltInBaseEntity:return i.ignoreBuiltInBaseEntities?[]:K5(u,d,i);case f.PrimitiveEntity:return i.ignoreBuiltInBaseEntities?[]:sS(u,d,i)}return[]}function Gb(u){return u.type===f.FunctionCall||u.type===f.InternalCall||[f.Operation,f.Condition,f.Loop].includes(u.type)?u.declaration.inputs:u.type===f.FunctionDeclaration||So.includes(u.type)?u.inputs:u.type===f.Search?u.inputsDeclarations:[]}function eAe(u,d){return d.type===f.Condition?d.inputs.find(i=>i.declaration.id===u.id):d.type===f.FunctionCall||d.type===f.Operation?d.inputs.find(i=>i.declaration.id===u.id):null}function fS(u){return fr.includes(u.type)?u.inputs:[]}function hS(u){var d;return u.type===f.FunctionCall?((d=u.declaration.returnStatements[0])==null?void 0:d.outputs)||[]:[f.Operation,f.Condition,f.Loop].includes(u.type)?u.declaration.outputs:u.type===f.Search?u.outputsDeclarations:Ar.includes(u.type)?u.outputs:[]}function tAe(u,d){return d.type===f.Condition?null:d.type===f.FunctionCall||d.type===f.Operation?d.outputs.find(i=>i.declaration.id===u.id):null}function rAe(u){return u.type===f.Condition?[]:fr.includes(u.type)?u.outputs:[]}function $m(u){const d=u.readsValue;return d?Er(d):null}function yS(u,d){const i=u.readsValue;return i?gm(i,d):null}function mS(u){const d=u.internalCalls||[];return R(ei(R(d.flatMap(i=>[...i.successCalls,...i.errorCalls]))))}function vS(u){const d=u.internalCalls||[];return R(R(d.flatMap(i=>[...i.successCalls,...i.errorCalls])))}function td(u){const d=Om(u),i=[];return d.forEach(a=>{if(mt.includes(a.type))i.push(a);else if(Ln.includes(a.type)){const o=Er(a.parent);i.push(o)}}),i}function rd(u){const d=Om(u),i=[];return d.forEach(a=>{if(mt.includes(a.type))i.push(a);else if(Ln.includes(a.type)){const o=a.parent;i.push(o)}}),i}function R(u){const d=new Set;return u.filter(i=>!i||d.has(i.id)?!1:(d.add(i.id),!0))}function ES(u){return u.type===f.Project?null:gg.includes(u.type)?u:Wi.includes(u.type)?null:u.parent?ES(u.parent):null}function wn(u,d=!1){const i=[];if(u.type===f.Project&&i.push(...(u==null?void 0:u.entities)||[],...(u==null?void 0:u.functions)||[],...(u==null?void 0:u.variableDeclarations)||[],...(u==null?void 0:u.variableInstances)||[],...(u==null?void 0:u.searches)||[],...(u==null?void 0:u.loops)||[],...(u==null?void 0:u.operations)||[],...(u==null?void 0:u.conditions)||[],...(u==null?void 0:u.functionCalls)||[],...(u==null?void 0:u.events)||[],...(u==null?void 0:u.projects)||[]),Mr.includes(u.type)&&i.push(...(u==null?void 0:u.detachedChildren)||[]),u.type===f.DefinitionEntity){const a=[...u.suggestedMethods,...u.methods].flatMap(o=>o.collapsed&&d?[]:wn(o));i.push(...a)}if(u.type===f.Condition){const a=u.successCalls.map(p=>Er(p)),o=u.errorCalls.map(p=>Er(p));i.push(...a,...o)}if(So.includes(u.type)){if(u.collapsed&&d)return[];const a=u.inputs.map(p=>td(p)).flat(),o=u.calls.map(p=>Er(p));i.push(...R(a),...o)}if(fr.includes(u.type)&&u.type!==f.Condition&&u.type!==f.Loop){const a=u==null?void 0:u.outputs.map(e=>td(e)).flat(),o=u.successCalls.map(e=>Er(e)),p=u.errorCalls.map(e=>Er(e));i.push(...R(a),...o,...p)}if(mt.includes(u.type)){const a=td(u),o=mS(u);i.push(...a,...o)}if(u.type===f.Loop){const a=u.outputs.map(e=>td(e)).flat();if(u.body){const e=wn(u.body,d);i.push(...e)}const o=u.errorCalls.map(e=>Er(e)),p=u.successCalls.map(e=>Er(e));i.push(...R(a),...p,...o)}if(u.type===f.FunctionDeclaration){if(u.collapsed&&d)return[];const a=u.inputs.map(p=>td(p)).flat(),o=u.calls.map(p=>Er(p));i.push(...R(a),...o)}return R(i)}function Pm(u,d=!1){const i=[];if(u.type===f.Project&&i.push(...(u==null?void 0:u.variableDeclarations)||[],...(u==null?void 0:u.variableInstances)||[],...(u==null?void 0:u.searches)||[],...(u==null?void 0:u.loops)||[],...(u==null?void 0:u.operations)||[],...(u==null?void 0:u.conditions)||[],...(u==null?void 0:u.functionCalls)||[]),Mr.includes(u.type)&&i.push(...(u==null?void 0:u.detachedChildren)||[]),u.type===f.DefinitionEntity){const a=[...u.suggestedMethods,...u.methods].flatMap(o=>o.collapsed&&d?[]:Pm(o));i.push(...a)}if(u.type===f.Condition){const a=u.successCalls,o=u.errorCalls;i.push(...a,...o)}if(So.includes(u.type)){if(u.collapsed&&d)return[];const a=u.inputs.map(p=>rd(p)).flat(),o=u.calls;i.push(...R(a),...o)}if(fr.includes(u.type)&&u.type!==f.Condition&&u.type!==f.Loop){const a=u==null?void 0:u.outputs.map(e=>rd(e)).flat(),o=u.successCalls,p=u.errorCalls;i.push(...R(a),...o,...p)}if(mt.includes(u.type)){const a=rd(u),o=vS(u);i.push(...a,...o)}if(u.type===f.Loop){const a=u.outputs.map(e=>rd(e)).flat();if(u.body){const e=Pm(u.body,d);i.push(...e)}const o=u.errorCalls,p=u.successCalls;i.push(...R(a),...p,...o)}if(u.type===f.FunctionDeclaration){if(u.collapsed&&d)return[];const a=u.inputs.map(p=>rd(p)).flat(),o=u.calls;i.push(...R(a),...o)}return R(i)}function Nm(u,d=!1){const i=wn(u,d),a=[...i,...i.reduce((o,p)=>[...o,...Nm(p,d)],[])];return R(a)}function TS(u,d=!1){const i=Pm(u,d),a=[...i,...i.reduce((o,p)=>[...o,...TS(p,d)],[])];return R(a)}function IS(u){const d=bo(u),i=[...d,...d.reduce((a,o)=>[...a,...IS(o)],[])];return R(i)}function sf(u){return u.implements.reduce((d,i)=>i.type===f.DefinitionEntity?[...d,f.DefinitionEntity,...sf(i),...nf(i)]:[...d,i.name],[])}function nf(u){return u.extends.reduce((d,i)=>i.type===f.DefinitionEntity?[...d,f.DefinitionEntity,...nf(i),...sf(i)]:[...d,i.name],[])}function Sb(u){return u.extends.reduce((d,i)=>i.type===f.DefinitionEntity?[...d,i,...Sb(i),...Kb(i)]:[...d,i],[])}function Kb(u){return u.implements.reduce((d,i)=>i.type===f.DefinitionEntity?[...d,i,...Kb(i),...Sb(i)]:[...d,i],[])}function id(u){return[...nf(u),...sf(u)].filter((i,a,o)=>o.indexOf(i)===a)}function kb(u){return u.implements.length===0&&u.extends.length===0?null:u.implements.find(a=>a.type===f.BuiltInBaseEntity&&a.name===Ue.PERSISTED_ENTITY)?u:[...u.implements,...u.extends].reduce((a,o)=>{if(o.type===f.DefinitionEntity){const p=kb(o);if(p)return p}return a},null)}function iAe(u){const d=u.extends.find(i=>i.type===f.BuiltInBaseEntity);return d&&d.type===f.BuiltInBaseEntity?d:null}function sAe(u){const d=u.implements.find(i=>i.type===f.BuiltInBaseEntity);return d&&d.type===f.BuiltInBaseEntity?d:null}function Vm(u){const d=u.extends.find(i=>i.type===f.DefinitionEntity);return d&&d.type===f.DefinitionEntity?d:null}function Mi(u){if(u.type===f.BuiltInBaseEntity)return[u];const d=[...u.implements,...u.extends].reduce((i,a)=>a.type===f.BuiltInBaseEntity?[...i,a]:a.type===f.DefinitionEntity?[...i,...Mi(a)]:i,[]);return R(d)}function af(u){return u.type===f.PrimitiveEntity?!0:u.type===f.BuiltInBaseEntity?u.interactive:!Mi(u).find(a=>!a.interactive)}function nAe(u){return u.parent===u.project&&u.project.variableDeclarations.includes(u)}function qb(u){return u.parent!==u.project?!1:f.VariableDeclaration===u.type?u.project.variableDeclarations.includes(u):f.VariableInstance===u.type?u.project.variableInstances.includes(u):f.FunctionCall===u.type?u.project.functionCalls.includes(u):f.Condition===u.type?u.project.conditions.includes(u):f.Operation===u.type?u.project.operations.includes(u):f.Loop===u.type?u.project.loops.includes(u):f.Search===u.type?u.project.searches.includes(u):!1}function AS(u){if([...Jt,f.DefinitionEntity,f.InstalledProject,f.Project].includes(u.type)||qb(u))return!1;const d=bo(u);return d.length===0?!0:d.some(i=>AS(i))}function Zb(u){return[...Jt,f.DefinitionEntity,f.InstalledProject,f.Project].includes(u.type)||qb(u)?!1:bo(u).length===0}function bS(u,d=0){if(Zb(u)){const i=bo(u);return i.length===0?u:i.map(o=>bS(o,d+1)).reduce((o,p)=>o?p&&p.x<o.x?p:o:p,null)}return null}function wS(u){const d=[];if(Zb(u))d.push(u);else return[];return bo(u).forEach(a=>{d.push(...wS(a))}),d}function Jb(u){return u.type===f.FunctionDeclaration&&u.parent!==u.project&&!![f.DefinitionEntity,f.Loop,f.InstalledProject].includes(u.parent.type)}function aAe(u,d){const i=new Map;return u.forEach(a=>{i.set(a.id,a)}),d.forEach(a=>{i.set(a.id,a)}),Array.from(i.values())}function of(u){switch(u){case f.DefinitionEntity:return ra;case f.FunctionDeclaration:return io;case f.VariableDeclaration:return uo;case f.VariableInstance:return lo;case f.FunctionCall:return Ao;case f.Operation:return so;case f.Condition:return oo;case f.ReturnStatement:return no;case f.Loop:return Si;case f.Search:return co;case f.InputMap:return Yn;case f.OutputMap:return mn;case f.ArgumentDeclaration:return Jn;case f.ReturnDeclaration:return is;case f.Property:return ta;case f.InstalledProject:return po;case f.Project:return N;case f.DataType:return vs;case f.GlobalEvent:return ao;case f.InternalCall:return fo;case f.ValueDescriptor:return vn;case f.BuiltInBaseEntity:return ia;case f.PrimitiveEntity:return ss;case f.ActionDescriptor:return wt;case f.LiteralValue:return ki;case f.ContinueStatement:return Ni;case f.BreakStatement:return ho;default:return null}}function Zi(u,d,i=null){const a=u!=null&&u.parent?J(u==null?void 0:u.parent):null;let o=a?d.get(a):null,p=i||u;if((u==null?void 0:u.id)===(d==null?void 0:d.id))return d;if(u.type===f.ReturnStatement)return Wr(u,d,p);if(u.type===f.FunctionDeclaration&&(o==null?void 0:o.type)===f.Loop)return o;if(Jt.includes(u.type))return u;if(u.type===f.Loop)return p.id===u.id?o:u;if(Wi.includes(u.type))return null;const e=u.parent;if(!e)return null;if(e.type===f.GenericReference){const y=J(e);if(!y)return null;const v=d.get(y);return v?Zi(v,d,p):null}else return e===d?d:Zi(e,d,p)}function Wr(u,d,i=null){const a=u!=null&&u.parent?J(u==null?void 0:u.parent):null;let o=a?d.get(a):null,p=i||u;if(u.type===f.FunctionDeclaration&&(o==null?void 0:o.type)===f.Loop)return Wr(o.parent,d,p);if(Jt.includes(u.type))return u;if(Wi.includes(u.type))return null;const e=u.parent;if(!e)return null;if(e.type===f.GenericReference){const y=J(e);if(!y)return null;const v=d.get(y);return v?Wr(v,d,p):null}else return e===d?d:Wr(e,d,p)}function lf(u,d){if(Wi.includes(u.type)||d.getBuiltIn(u.id))return null;const i=Ji(u.parent,d);return i?i===d?Mr.includes(u.type)?u:null:i.type===f.DefinitionEntity?u:lf(i,d):null}function Lm(u,d,i){if(u===d||d===i||u===i||!u||!d)return!1;const a=Zi(d.parent,i);return a===i?!1:a===u?!0:Lm(a,d,i)}var Mm=(u=>(u.SameBothLocal="same-both-local",u.AInB="a-in-b",u.BInA="b-in-a",u.ParallelInCommonParent="parallel-in-common-parent",u.ParallelInProject="parallel-in-project",u.AIsGlobalBIsNot="a-is-global-b-is-not",u.BIsGlobalAIsNot="b-is-global-a-is-not",u.SameBothGlobal="same-both-global",u))(Mm||{});function Qs(u,d,i){const a=Zi(u,i),o=Zi(d,i);if(!a)throw new Error("Could not find scope owner for the entity: "+u.id);if(!o)throw new Error("Could not find scope owner for the entity: "+d.id);if(a===o&&a.type!==f.Project)return{compatible:!0,type:"same-both-local",commonAncestorScope:a};if(a===o&&a.type===f.Project)return{compatible:!0,type:"same-both-global",commonAncestorScope:a};if(a.type===f.Project&&o.type!==f.Project)return{compatible:!1,type:"a-is-global-b-is-not",commonAncestorScope:a};if(a.type!==f.Project&&o.type===f.Project)return{compatible:!1,type:"b-is-global-a-is-not",commonAncestorScope:o};if(Lm(a,o,i))return{compatible:!0,type:"b-in-a",commonAncestorScope:a};if(Lm(o,a,i))return{compatible:!0,type:"a-in-b",commonAncestorScope:o};const y=Fb(a,o);return y===i?{compatible:!1,type:"parallel-in-project",commonAncestorScope:y}:y?{compatible:!1,type:"parallel-in-common-parent",commonAncestorScope:Zi(y,i)}:{compatible:!1,type:"parallel-in-project",commonAncestorScope:i}}function RS(u,d,i){const a=Qs(u,d,i);if(!a.compatible||a.type!=="same-both-local")return null;if(u===d)return u;let o=Zi(u.parent,i);if(o){if(o===d)return d;if(o.type===f.Project)return u}else return u;for(;o;){if(o){if(o===d)return d;if(o.type===f.Project)return u}else return u;o=Zi(o.parent,i)}let p=Zi(d.parent,i);if(p){if(p===u)return u;if(p.type===f.Project)return d}else return d;for(;p;){if(p){if(p===u)return u;if(p.type===f.Project)return d}else return d;p=Zi(p.parent,i)}return null}function _S(u){return u.length===0?null:u.length===1?u[0]:u.reduce((i,a)=>{const o=RS(i,a,a.project);return!o||o===a?i:a},u[0])}function Ji(u,d){if(!u)return null;let i;return typeof u=="string"?i=u:u.type===f.GenericReference?i=J(u):i=u.id,i===d.id?d:d.get(i)}function wo(u){if(!u)return null;if(Wi.includes(u.type))return u;if(u.type===f.Project)return null;if(u.project.getBuiltIn(u.id))return u;const d=u.parent;return!d||d.type===f.Project?null:wo(d)}function uf(u){const d=[];function i(p,e){return d.some(y=>y.blockedByCaller===p&&y.blockedByCalling===e)}function a(p,e){i(p,e)||d.push({blockedByCaller:p,blockedByCalling:e})}const o=lf(u,u.project);return u.calledBySuccess.forEach(p=>{[...p.successCalls||[]].forEach(v=>{Ar.includes(v.type)&&v!==u&&(Rt(u).find(A=>A===v)||a(p,v))});let y;if(fr.includes(p.type)&&(y=p),y){const v=uf(y);v.reachable||Rt(u).find(A=>A===p)||v.blocks.forEach(A=>{a(p,A.blockedByCalling)})}}),u.calledByError.forEach(p=>{[...p.errorCalls||[]].forEach(v=>{Ar.includes(v.type)&&v!==u&&(Rt(u).find(A=>A===v)||a(p,v))});let y;if(fr.includes(p.type)&&(y=p),y){const v=uf(y);v.reachable||Rt(u).find(A=>A===p)||v.blocks.forEach(A=>{a(p,A.blockedByCalling)})}}),u.calledByEntry.forEach(p=>{if([...p.calls||[]].forEach(v=>{Ar.includes(v.type)&&v!==u&&(Rt(u).find(A=>A===v)||a(p,v))}),p===o)return;let y;if(p.type===f.FunctionDeclaration){const v=Er(p);if(v.type===f.DefinitionEntity)return;v.type===f.Loop&&(y=v)}if(y){const v=uf(y);v.reachable||v.blocks.forEach(E=>{a(p,E.blockedByCalling)})}}),{reachable:d.length===0,entryPoint:o,blocks:d}}function oAe(u){return nh.includes(u.type)?u.type===f.FunctionDeclaration?!Jb(u):!0:!1}function lAe(u){if(f.ActionDescriptor===u.type){if(u.project.operationDeclarations.find(p=>p.id===u.id))return f.Operation;if(u.project.globalEventActionDescriptors.find(p=>p.id===u.id))return f.GlobalEvent;if(u.project.loopDeclarations.find(p=>p.id===u.id))return f.Loop;if(u.project.conditionDeclarations.find(p=>p.id===u.id))return f.Condition}return u.type}function Bm(u,d){return u.type===f.BuiltInBaseEntity?u.name===d:!!nf(u).includes(d)}function uAe(u,d){return u.type===f.BuiltInBaseEntity?u.name===d:!!sf(u).includes(d)}function As(u,d){return u.type===f.BuiltInBaseEntity?u.name===d:!!id(u).includes(d)}function dAe(u){const d=[];return u.entities.forEach(i=>{if(Bm(i,Ue.PERSISTED_ENTITY)){d.push(i);return}}),R(d)}function cAe(u){const d=[];return u.entities.forEach(i=>{if(Bm(i,Ue.RELATIONAL_DATABASE)){d.push(i);return}}),R(d)}function pAe(u){return u.type!==f.DefinitionEntity||u.abstract||!Bm(u,Ue.PERSISTED_ENTITY)?null:(u==null?void 0:u.properties.find(i=>{var a;return((a=i.implements)==null?void 0:a.id)===Ee[f.BuiltInBaseEntity][Ue.PERSISTED_ENTITY].properties.primaryKey.id&&!i.abstract}))||null}function gS(u){var a;const d=kb(u);if(!d)return null;const i=d.properties.find(o=>{var p;return((p=o.implements)==null?void 0:p.id)===Ee[f.BuiltInBaseEntity][Ue.PERSISTED_ENTITY].properties.database.id});return i?(a=i.getDefaultValue())==null?void 0:a.valueAsType:null}function sd(u){if(u.type!==f.DefinitionEntity)return[];if(u.abstract)return[];if(!As(u,Ue.PERSISTED_ENTITY))return[];const d=[],i=u.properties.filter(a=>{var o;return((o=a.implements)==null?void 0:o.id)!==Ee[f.BuiltInBaseEntity][Ue.PERSISTED_ENTITY].properties.database.id&&!a.abstract});return d.push(...i),d}function fAe(u){var i;if(!u||u.type!==f.DefinitionEntity||!As(u,Ue.PERSISTED_ENTITY))return null;const d=u.properties.find(a=>{var o;return((o=a.implements)==null?void 0:o.id)===Ee[f.BuiltInBaseEntity][Ue.PERSISTED_ENTITY].properties.database.id});return(i=d==null?void 0:d.getDefaultValue())==null?void 0:i.valueAsTypeSingle}function Fr(u,d){var a;if(!Cg.includes(d.type)||!u)return d.project||null;let i=d.project;return u.type===f.Project?i=u:((a=d.project)==null?void 0:a.id)!==u.project.id&&(i=u.project),i}function hAe(u){switch(u){case f.Project:return N;case f.InstalledProject:return po;case f.DefinitionEntity:return ra;case f.FunctionDeclaration:return io;case f.GlobalEvent:return ao;case f.VariableInstance:return lo;case f.VariableDeclaration:return uo;case f.InputMap:return Yn;case f.OutputMap:return mn;case f.Condition:return oo;case f.Operation:return so;case f.FunctionCall:return Ao;case f.ReturnDeclaration:return is;case f.ArgumentDeclaration:return Jn;case f.PrimitiveEntity:return ss;case f.DataType:return vs;case f.Property:return ta;case f.ActionDescriptor:return wt;case f.ReturnStatement:return no;case f.ContinueStatement:return Ni;case f.BreakStatement:return ho;case f.Loop:return Si;case f.Search:return co;case f.ValueDescriptor:return vn;case f.InternalCall:return fo;case f.LiteralValue:return ki}return null}function yAe(u){const d={added:{},updated:{},removed:{},affected:[],seenEntities:[],self:u==null?void 0:u.self};return u==null||u.added.forEach(i=>{d.added[i.id]=i}),u==null||u.updated.forEach(i=>{d.updated[i.id]=i}),u==null||u.removed.forEach(i=>{d.removed[i.id]=i}),d.affected=Array.from(new Set(u==null?void 0:u.affected.map(i=>i.id))),d}function Ur(u,d){const i=of(u.type);return i?!i.MUTABLE_META_PROPERTIES.every(o=>{const p=u[o],e=d[o];return e===void 0||p===e?!0:Array.isArray(p)&&Array.isArray(e)?p.length!==e.length?!1:p.every((y,v)=>y===e[v]):!1}):!1}function Um(u,d={}){if(u.type===f.Project)return[];if(!u.parent)return[];const i=J(u.parent);if(!i)return[];const a=d[i];return a?[a.id,...Um(a,d)]:[]}function mAe(u){const d=[],i=new Set;return[...u.listAdded,...u.listUpdated,...u.listAffected].forEach(a=>{const o=Er(a);!o||i.has(o.id)||(i.add(o.id),d.push(o))}),R(d)}function vAe(u){if(u.type===f.Condition)return null;if(u.type===f.Search)return u.project.getBuiltIn(Ee["value-descriptor"][eu.SearchErrorOutputDescriptor].id)||null;if(u.type===f.Operation)return u.declaration.error;if(u.type===f.FunctionCall){const i=u.declaration.returnStatements.find(a=>!!a.throws);return(i==null?void 0:i.throws)||null}return null}function DS(u){const d=u.entities.filter(o=>!!o.implements.find(p=>p.id===Ee["built-in-base-entity"].BUILT_IN_RELATIONAL_DATABASE_ENTITY.id)),i=d.find(o=>{const p=o.properties.find(v=>v.implements&&v.implements.id===Ee["built-in-base-entity"].BUILT_IN_RELATIONAL_DATABASE_ENTITY.properties.default.id),e=p==null?void 0:p.getDefaultValue();return(e==null?void 0:e.value)===!0});return i||d[0]||null}function Hb(u,d){const i=Array.from(new Set([...d.getAllBuiltInIds(),...Xs()]));return!!(i.includes(u.id)||!Um(u,{...d.instances,...d.builtInInstances}).every(p=>!i.includes(p)))}function OS(u){if(!u)return null;if(u.type===f.Project)return u.id;const d=u.parent;return d?OS(d):u.id}function df(u){if(u.declaration&&u.declaration.type===f.Property){if(u.declaration.interactive){if(u.declaration.implements&&!u.declaration.implements.interactive)return!1;if(u.declaration.extends&&!u.declaration.extends.interactive)return!1}else return!1;if(u.declaration.private){const d=Er(u),i=lf(d,u.project);if((i==null?void 0:i.type)===f.FunctionDeclaration&&(i==null?void 0:i.parent.type)===f.DefinitionEntity&&(i==null?void 0:i.parent.id)!==u.declaration.parent.id)return!1}}return!0}function Wb(u){if(u.interactive){if(u.implements&&!u.implements.interactive)return!1;if(u.extends&&!u.extends.interactive)return!1}else return!1;if(u.private){const d=Er(u),i=lf(d,u.project);if((i==null?void 0:i.type)===f.FunctionDeclaration&&(i==null?void 0:i.parent.type)===f.DefinitionEntity&&(i==null?void 0:i.parent.id)!==u.parent.id)return!1}return!0}function EAe(u,d,i){const a=d,o=i,p=!!i,e=[];return a.forEach(y=>{var v;if(p){const E=Qs(o,y,u);if(!E.compatible&&E.type!=="b-is-global-a-is-not")return;e.push(y)}else{if(((v=y.parent)==null?void 0:v.type)!==f.Project)return;e.push(y)}}),R(e)}function jm(u){return u.replace(/["'`]/g,"")}function jr(u){const i=jm(u).split(/[\s-]+/).filter(e=>e.length>0);if(i.length===0)return"";const a=i[0],o=a[0].toLowerCase()+a.slice(1),p=i.slice(1).map(e=>e[0].toUpperCase()+e.slice(1));return[o,...p].join("")}function nd(u){return jm(u).split(/[\s-]+/).filter(a=>a.length>0).map(a=>a[0].toUpperCase()+a.slice(1)).join("")}function CS(u){const d=jm(u).trim();if(!d)return"";const i=d.replace(/[\s_-]+/g," ").split(" ").filter(Boolean),a=[];for(const o of i){let p=o;p=p.replace(/([A-Z]+)([A-Z][a-z]+)/g,"$1-$2"),p=p.replace(/([a-z0-9])([A-Z][a-z0-9]*)/g,"$1-$2"),p=p.replace(/([0-9])([a-zA-Z]+)/g,"$1-$2"),p=p.replace(/([a-zA-Z])([0-9])/g,"$1-$2");for(const e of p.split("-"))e&&a.push(e)}return a.join("-")}function TAe(u){const d=jm(u).trim();if(!d)return"";const i=d.replace(/[\s_-]+/g," ").split(" ").filter(Boolean),a=[];for(const o of i){let p=o;p=p.replace(/([A-Z]+)([A-Z][a-z]+)/g,"$1_$2"),p=p.replace(/([a-z0-9])([A-Z][a-z0-9]*)/g,"$1_$2"),p=p.replace(/([0-9])([a-zA-Z]+)/g,"$1_$2"),p=p.replace(/([a-zA-Z])([0-9])/g,"$1_$2");for(const e of p.split("_"))e&&a.push(e)}return a.join("_")}function xm(u){return CS(u).toLowerCase()}function ad(u){var i,a,o,p;if(!u)return"Any data type";let d="";if(u.interactiveEntities===!1?d+=` but only definition nodes ${u.asType?"as template ":""}that don't include non-interactive built-in functionality`:u.interactiveEntities===!0&&(d+=` but only definition nodes ${u.asType?"as template ":""}that extend or implement interactive built-in functionality`),u.staticEntities===!1?d?d+=" and that aren't a single global copy instance":d+=` but only definition nodes ${u.asType?"as template ":""}that aren't a single global copy instance`:u.staticEntities===!0&&(d?d+=" and that are a single global copy instance":d+=` but only definition nodes ${u.asType?"as template ":""}that are a single global copy instance`),u.actionEntities===!1?d?d+=" excluding executable/action nodes":d+=` excluding executable/action nodes ${u.asType?"templates ":""}`:u.actionEntities===!0&&(d?d+=" and not executable/action nodes":d+=" but not executable/action nodes"),u.entity&&(d=""),u.asType&&!d&&!((i=u.andChildrenGroup)!=null&&i.length)&&!((a=u.orChildrenGroup)!=null&&a.length)&&(d=" as template"),!u.entity){const e=u.isList;if(!((o=u.andChildrenGroup)!=null&&o.length)&&!((p=u.orChildrenGroup)!=null&&p.length))return e?`List of an any data type${d}`:`Any data type${d}`;let y="",v=!1,E=!1;return(u.andChildrenGroup||[]).forEach(w=>{const A=ad(w),$=Du(A);v&&(y+=" and "),w.isGroup?y+="("+$+")":v?y+=$:y+=A,v=!0,E=!0}),(u.orChildrenGroup||[]).forEach(w=>{const A=ad(w),$=Du(A);v&&(E&&(y+=","),y+=" or "),w.isGroup?y+="("+$+")":v?y+=$:y+=A,v=!0}),e?`List of ${Du(y)}`:y}if(u.entity.type===f.PrimitiveEntity){let e=u.entity.name;switch(u.entity.name){case Q.String:e="Text";break;case Q.KeyValue:e="Data structure";break}return u.isList?`List of ${e}s${d}`:`${e.slice(0,1).toUpperCase()}${e.slice(1)}${d}`}else if(u.entity.type===f.DefinitionEntity){const e=ne(u.entity,u.project);return u.isList?`List of ${e} values${d}`:e.slice(0,1).toUpperCase()+e.slice(1)+d}else if(u.entity.type===f.BuiltInBaseEntity){const e=PS(u.entity);return u.isList?`List of ${e} values${d}`:e.slice(0,1).toUpperCase()+e.slice(1)+d}else if(u.entity.type===f.LiteralValue){if(u.entity.name===Q.Null)return"Empty value";if(u.entity.name===Q.Untyped)return"Untyped value";if(u.entity.name===Q.File)return"File";if(u.entity.name===Q.String)return`"${u.entity.value}" text`;if(u.entity.name===Q.Number)return`Number '${u.entity.value}'`;if(u.entity.name===Q.Boolean)return`${u.entity.value} value`;if(u.entity.name===Q.UUID)return`"${u.entity.value}" unique identifier`;if(u.entity.name===Q.Date)return`"${u.entity.value}" date`}return u.isList?`List of ${ne(u.entity,u.project)} values${d}`:`${ne(u.entity,u.project).slice(0,1).toUpperCase()+ne(u.entity,u.project).slice(1)} value${d}`}function IAe(u){if(!u)return"Any data type";const d=u.getDataType(null);return ad(d)}function Fm(u){switch(u.declaration.id){case _r.Equal:return"is equal to";case _r.NotEqual:return"is not equal to";case _r.MoreThan:return"is greater than";case _r.MoreThanOrEqual:return"is greater than or equal to";case _r.LessThan:return"is less than";case _r.LessThanOrEqual:return"is less than or equal to";case _r.And:return"and";case _r.Or:return"or";case zr.Empty:return"is empty";case zr.NotEmpty:return"is present"}}function $S(u){return u.includes(Ue.HTTP_ENDPOINT)?"HTTP endpoint":u.includes(Ue.PERSISTED_ENTITY)?"Persisted entity":u.includes(Ue.CRON_JOB)?"Scheduled execution":u.includes(Ue.RELATIONAL_DATABASE)?"Relational database":"Entity"}function PS(u){switch(u.name){case Ue.HTTP_ENDPOINT:return"HTTP endpoint";case Ue.PERSISTED_ENTITY:return"Persisted entity";case Ue.CRON_JOB:return"Scheduled execution";case Ue.RELATIONAL_DATABASE:return"Relational database"}return"Entity"}function AAe(u){const d=Vm(u);if(!d){const i=id(u);return i.includes(Ue.HTTP_ENDPOINT)?"HTTP endpoint":i.includes(Ue.PERSISTED_ENTITY)?"Persisted entity":i.includes(Ue.CRON_JOB)?"Scheduled execution":i.includes(Ue.RELATIONAL_DATABASE)?"Relational database":ne(u,u.project)+" entity"}return ne(d,u.project)+" entity"}function NS(u){let d="Find ";return u.outputsDeclarations.forEach((i,a)=>{const o=Sy(i,null),p=Du(o&&o.entity?ne(o.entity,u.project):"unstructured data");a===0?d+=`${p} `:a===u.outputsDeclarations.length-1?d+=`and ${p} `:d+=`, ${p} `}),d}function VS(u){switch(u.name){case Q.String:return"Text";case Q.Number:return"Number";case Q.Boolean:return"Boolean";case Q.KeyValue:return"Data structure";case Q.UUID:return"Unique identifier";case Q.Date:return"Date";case Q.EntityTemplate:return"Entity as template";case Q.Enum:return"Enumeration";case Q.File:return"File";case Q.Null:return"Empty";case Q.ActionDescriptor:return"Action descriptor";case Q.Untyped:return"Untyped";default:return u.name}}function LS(u){switch(u.id){case ze.List:return"Loop over list items";case ze.ManualFlow:return"Manual flow control loop";case ze.ObjectKeys:return"Loop over object keys";case ze.ObjectValues:return"Loop over object values";case ze.Counted:return"Loop given number of times";case ze.String:return"Loop over text characters";case Zt.Addition:return"Sum numbers";case Zt.Subtraction:return"Subtract numbers";case Zt.Multiplication:return"Multiply numbers";case Zt.Division:return"Divide numbers";case Zt.Remainder:return"Get remainder of numbers";case Zt.Exponentiation:return"Get exponent of numbers";case Se.AddIndex:return"Add at index position";case Se.DeleteFirst:return"Delete first character";case Se.DeleteLast:return"Delete last character";case Se.DeleteIndex:return"Delete at index position";case Se.Join:return"Join texts";case Se.ReplaceAllMatches:return"Replace all matches";case Se.ReplaceFirst:return"Replace first match";case Se.ReplaceLast:return"Replace last match";case Se.Split:return"Split text";case Se.ReplaceIndex:return"Replace at index position";case Se.ReplaceSingleMatch:return"Replace single match";case Se.GetFirst:return"Get first character";case Se.GetLast:return"Get last character";case Se.GetIndexItem:return"Get at index position";case Se.GetIndexOf:return"Get the index number of the character";case Se.Append:return"Add at the end";case Se.Prepend:return"Add at the start";case rr.Wait:return"Wait";case rr.Parallel:return"Run in parallel";case rr.Sequential:return"Run in sequence";case mi.HttpRequest:return"HTTP request";case pr.CreateNewInstance:return"Create new copy of entity";case Je.AddIndex:return"Add item at index position";case Je.DeleteFirst:return"Delete first item";case Je.DeleteLast:return"Delete last item";case Je.DeleteIndex:return"Delete item at index position";case Je.Join:return"Join lists";case Je.ReplaceFirst:return"Replace first match";case Je.ReplaceLast:return"Replace last match";case Je.Split:return"Split list";case Je.ReplaceIndex:return"Replace at index position";case Je.GetFirst:return"Get first item";case Je.GetLast:return"Get last item";case Je.GetIndexItem:return"Get item at index position";case Je.Append:return"Add item at the end";case Je.Prepend:return"Add item at the start";case Ia.PROJECT_PUBLICATION_COMPLETED:return"Project publication completed";default:return(u.name.slice(0,1).toUpperCase()+u.name.slice(1)).replaceAll("-"," ")}}function ne(u,d){var i;if(f.FunctionDeclaration===u.type){const a=u.name;if(Object.values(Hi).includes(a))switch(a){case Hi.AbortExecution:return"Abort ongoing execution";case Hi.DeletePersistedEntity:return"Delete entry from database";case Hi.SavePersistedEntity:return"Save entity data to database";default:return Ii(u.type).replaceAll("-"," ")}return a}if(f.BuiltInBaseEntity===u.type)return $S([u.name]);if(Dg.includes(u.type)&&u.type!==f.ActionDescriptor)return u.name;switch(u.type){case f.Search:return NS(u);case f.GlobalEvent:return u.implements?ne(u.implements,d):Ii(u.type).replaceAll("-"," ");case f.Operation:case f.InternalCall:case f.Loop:const a=Ji(u.declaration,d);return a||Me.log("Loop without declaration: ",u),ne(a,d);case f.ActionDescriptor:return LS(u);case f.BreakStatement:const o=Ji(u.parent,d);return o||Me.log("Break without parent: ",u),`Stop loop ${ne(o,d)}`;case f.ContinueStatement:const p=Ji(u.parent,d);return p||Me.log("continue without parent: ",u),`Execute next iteration of ${ne(p,d)}`;case f.FunctionCall:return Ji(u.declaration,d).name;case f.Condition:{const y=u;if((i=u.inputs)!=null&&i.length){y.inputs[0]||Me.log("condition without input: ",u);const v=ne(y.inputs[0],y.project);if(y.inputs[1]){const E=y.inputs[1].declaration.name;return`If ${v} ${Fm(y)} ${E}`}return`If ${v} ${Fm(y)}`}else return`If ${Fm(y)}`}case f.ReturnStatement:{const y=Ji(u.parent,d);return y?`Output of ${ne(y,d)}`:"Return statement"}case f.InputMap:if(u.declaration){const y=Ji(u.declaration,d);return y||(Me.log("Input without declaration: ",u),Me.log("Og declaration: ",u.declaration)),ne(y,d)||""}else return u.name||"";case f.VariableInstance:{const y=Ji(u.declaration,d);return y||Me.log("Var without declaration: ",u),ne(y,d)||""}case f.OutputMap:if(u.declaration){const y=Ji(u.declaration,d);return(y==null?void 0:y.name)||""}else return"";case f.PrimitiveEntity:case f.LiteralValue:return VS(u);default:return Ii(u.type).replaceAll("-"," ")}}function Yb(u,d){const i=[];u.name||i.push(new ee({id:`${u.id}--${ae.EmptyName}`,message:`Entity with id "${u.id}" and type "${u.type}" has an empty name. Please provide a 'name' string.`,severity:q.Error,code:ae.EmptyName,issue:null}));const a=d.entities.filter(o=>o.name===u.name);return a.length&&i.push(new ee({id:`${u.id}--${ae.NameNotUniqueInScope}`,message:`Entity with id "${u.id}" and type "${u.type}" has a name "${u.name}" that is not unique in the project. Entity with id "${a[0].id}" has the same name.
396
+ You shouldn't have to manually update a 'parent' property. The equivalent result is to change its callers, the value writters of its inputs, or the value readers of its outputs.`,issue:null})),{errors:a,modifiedData:i}}subscribeDependents(i){return i.forEach(a=>{this.detachedDependents[a.entity.id]||(this.detachedDependents[a.entity.id]=a)}),this}unsubscribeDependents(i){return i.forEach(a=>{this.detachedDependents[a.entity.id]&&delete this.detachedDependents[a.entity.id]}),this}syncDependents(i=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"sync-dependents"))){const a=[],o=[],p=[],e=[];return Object.values(this.detachedDependents).forEach(y=>{const v=y.entity.afterAllChildrenInitialized(i);a.push(...v.updated),o.push(...v.added),p.push(...v.removed),e.push(...v.affected)}),i==null||i.attemptAutoclose("sync-dependents",this.id),{updated:R(a),added:R(o),removed:R(p),affected:R(e),self:this}}onDetachedDependencyRemoved(i,a,o){const p=[],e=[],y=[],v=[];if(a==="declaration"){const{updated:E,added:w,removed:A}=this.remove({ignoreUpstream:!1},o);p.push(...E),e.push(...w),y.push(...A)}if(a==="parent"){const{updated:E,added:w,removed:A}=this.remove({ignoreUpstream:!1},o);p.push(...E),e.push(...w),y.push(...A)}return{updated:R(p),added:R(e),removed:R(y),affected:R(v),self:this}}onDetachedDependencyRestored(i,a,o){const p=[],e=[],y=[],v=[];if(a==="declaration"){const{updated:E,added:w,removed:A}=this.restore({},o);p.push(...E),e.push(...w),y.push(...A)}if(a==="parent"){const{updated:E,added:w,removed:A}=this.restore({},o);p.push(...E),e.push(...w),y.push(...A)}return{updated:R(p),added:R(e),removed:R(y),affected:R(v),self:this}}unsubscribeFromDependencies(){var i;return(i=this.parent)==null||i.unsubscribeDependents([{entity:this,field:"parent"}]),this.declaration.unsubscribeDependents([{entity:this,field:"declaration"}]),this}subscribeToDependencies(){var i;return(i=this.parent)==null||i.subscribeDependents([{entity:this,field:"parent"}]),this.declaration.subscribeDependents([{entity:this,field:"declaration"}]),this}increaseVersion(i){if(i&&!L(i).isValid())throw new Error(`The shared timestamp '${i}' is not a valid ISO 8601 date string.`);return i&&L(i).isSame(L(this.createdAt))?this:(this.previousVersion=this.version,this.version=N.UUID.uuid(),this.createdAt=L(i).toISOString()||L().toISOString(),this)}captureVersion(){var a;const i=((a=this.knownVersions)==null?void 0:a.get(this.version))||new er(this,this.project);return i.metaSync(this.toMeta(),null),this.knownVersions=this.knownVersions?this.knownVersions.set(this.version,i):new Map([[this.version,i]]),i.inputs=[...this.inputs],i.outputs=[...this.outputs],i.error=this.error,i.successCalls=[...this.successCalls],i.errorCalls=[...this.errorCalls],i.process=this.process,i.declaration=this.declaration,i.calledBySuccess=[...this.calledBySuccess],i.calledByError=[...this.calledByError],i.calledByEntry=[...this.calledByEntry],i.parent=this.parent,this}recursiveCaptureUpstreamVersions(i){const a=[],o=[],p=[],e=[];if(this.parent){this.parent.increaseVersion(i);const y=this.parent.recursiveCaptureUpstreamVersions(i);a.push(this.parent,...y.updated),o.push(...y.added),p.push(...y.removed)}return{updated:R(a),added:R(o),removed:R(p),affected:R(e),self:this}}async restoreVersion(i){var v;const a=[],o=[],p=[],e=[];if(this.version===i)return{updated:R(a),added:R(o),removed:R(p),affected:R(e),self:this};if(!this.knownVersions){const E=new Map;for(const[w,A]of this.knownVersions||new Map){if(E.set(w,A),A.activeVersion=!1,A.knownVersions)for(const[$,V]of A.knownVersions)E.set($,V);A.knownVersions=null}}let y=(v=this.knownVersions)==null?void 0:v.get(i);if(!y){const E=await this.APILoadVersion({},i);if(!E)throw new Error(`Version with id '${i}' for entity with id '${this.id}' not found.`);y=new er(E,this.project)}return this.metaSync(y.toShallowJSON(),null),this.previousVersion=y.previousVersion,this.version=y.version,this.createdAt=y.createdAt,this.author=y.author,this.deleted=y.deleted,this.inputs=y.inputs,this.outputs=y.outputs,this.error=y.error,this.successCalls=y.successCalls,this.errorCalls=y.errorCalls,this.process=y.process,this.declaration=y.declaration,this.calledBySuccess=y.calledBySuccess,this.calledByError=y.calledByError,this.calledByEntry=y.calledByEntry,this.parent=y.parent,{updated:R(a),added:R(o),removed:R(p),affected:R(e),self:this}}updateWithShallowTransfer(i,a=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"update-with-shallow-transfer"))){if(this.metaSync(i,a),this.version=i.version,this.createdAt=i.createdAt,this.author=i.author,this.deleted=i.deleted,this.previousVersion=i.previousVersion,this.unsubscribeFromDependencies(),i.parent){const o=J(i.parent),p=this.project.get(o),e=this.parent;if(e&&e.id!==(p==null?void 0:p.id)&&this.removeFromParent(a),p)this.setParent(p,a);else throw a==null||a.attemptAutoclose("update-with-shallow-transfer",this.id),new Error(`${this.type} with id '${this.id}' has a 'parent' reference '${o}' that isn't found in the project`)}else throw a==null||a.attemptAutoclose("update-with-shallow-transfer",this.id),new Error(`${this.type} with id '${this.id}' must have a 'parent'`);if(i.declaration){const o=J(i.declaration),p=this.project.get(o);p&&this.setDeclaration(p)}return i.calledByEntry.forEach(o=>{const p=J(o),e=this.project.get(p);e&&(this.addEntryCaller(e,a),e.addCall(this,a))}),[...this.calledByEntry].forEach(o=>{i.calledByEntry.find(e=>J(e)===o.id)||(this.removeCaller(o,a),o.removeCall(this,a))}),i.calledBySuccess.forEach(o=>{const p=J(o),e=this.project.get(p);e&&(this.addSuccessCaller(e,a),e.addSuccessCall(this,a))}),[...this.calledBySuccess].forEach(o=>{i.calledBySuccess.find(e=>J(e)===o.id)||(this.removeCaller(o,a),o.removeCall(this,a))}),i.calledByError.forEach(o=>{const p=J(o),e=this.project.get(p);e&&(this.addErrorCaller(e,a),e.addErrorCall(this,a))}),[...this.calledBySuccess].forEach(o=>{i.calledBySuccess.find(e=>J(e)===o.id)||(this.removeCaller(o,a),o.removeCall(this,a))}),this.captureVersion(),this.subscribeToDependencies(),a==null||a.attemptAutoclose("update-with-shallow-transfer",this.id),this}hydrateAncestors(){const i=[],a=[],o=[],p=[];if(this.initialData.parent){const e=J(this.initialData.parent),y=this.project.get(e);if(y)this.setParent(y,null),i.push(y);else throw new Error(`${this.type} with id '${this.id}' has a 'parent' reference '${e}' that isn't found in the project`)}else throw new Error(`${this.type} with id '${this.id}' must have a 'parent'`);if(this.initialData.declaration){const e=J(this.initialData.declaration),y=this.project.get(e);y&&(this.setDeclaration(y),i.push(y))}return this.initialData.calledByEntry.forEach(e=>{const y=J(e),v=this.project.get(y);v&&this.addEntryCaller(v,null)}),this.initialData.calledBySuccess.forEach(e=>{const y=J(e),v=this.project.get(y);v&&this.addSuccessCaller(v,null)}),this.initialData.calledByError.forEach(e=>{const y=J(e),v=this.project.get(y);v&&this.addErrorCaller(v,null)}),{updated:R(i),added:R(a),removed:R(o),affected:R(p),self:this}}afterAllChildrenInitialized(i=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"after-all-children-initialized"))){const a=[],o=[],p=[],e=[];this.initialized=!0;const{updated:y,added:v,removed:E}=this.syncInputs(i),{updated:w,added:A,removed:$}=this.syncOutputs(i);return a.push(...y,...w),o.push(...v,...A),p.push(...E,...$),this.captureVersion(),i==null||i.attemptAutoclose("after-all-children-initialized",this.id),{updated:R(a),added:R(o),removed:R(p),affected:R(e),self:this}}addSelfToProject(i=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"add-self-to-project"))){var y;const a=[this],o=[],p=[],e=[];return this.parent===this.project&&this.project.addFunctionCall(this),(y=this.process)==null||y.writesValues.forEach(v=>{v.setValueWriter(this.process,i),a.push(v)}),this.successCalls.forEach(v=>{v.addSuccessCaller(this,i),a.push(v)}),this.errorCalls.forEach(v=>{v.addErrorCaller(this,i),a.push(v)}),this.calledBySuccess.forEach(v=>{v.addSuccessCall(this,i),a.push(v)}),this.calledByError.forEach(v=>{v.addErrorCall(this,i),a.push(v)}),this.calledByEntry.forEach(v=>{v.addCall(this,i),a.push(v)}),this.subscribe(),this.subscribeToDependencies(),i==null||i.attemptAutoclose("add-self-to-project",this.id),{updated:R(a),added:R(o),removed:R(p),affected:R(e),self:this}}get calledBy(){return[...this.calledByEntry,...this.calledBySuccess,...this.calledByError]}removeInput(i,a=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"remove-input"))){const o=this.inputs.findIndex(p=>p.id===i.id);return o>-1&&(this.inputs.splice(o,1),a&&(a==null||a.add(this,S.Affected))),a==null||a.attemptAutoclose("remove-input",this.id),this}addInput(i,a=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"add-input"))){return this.inputs.includes(i)?(a==null||a.attemptAutoclose("add-input",this.id),this):(this.inputs.push(i),a==null||a.add(this,S.Affected),a==null||a.attemptAutoclose("add-input",this.id),this)}addOutput(i,a=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"add-output"))){return this.outputs.includes(i)?(a==null||a.attemptAutoclose("add-output",this.id),this):(this.outputs.push(i),a==null||a.add(this,S.Affected),a==null||a.attemptAutoclose("add-output",this.id),this)}removeOutput(i,a=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"remove-output"))){const o=this.outputs.findIndex(p=>p.id===i.id);return o>-1&&(this.outputs.splice(o,1),a&&(a==null||a.add(this,S.Affected))),a==null||a.attemptAutoclose("remove-output",this.id),this}addValueReader(i,a=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"add-value-reader"))){var o;return this.process&&!this.process.writesValues.includes(i)&&((o=this.process)==null||o.addValueReader(i,a),a==null||a.add(this,S.Affected)),a==null||a.attemptAutoclose("add-value-reader",this.id),this}removeValueReader(i,a=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"remove-value-reader"))){var o;return this.process&&this.process.writesValues.includes(i)&&((o=this.process)==null||o.removeValueReader(i,a),a==null||a.add(this,S.Affected)),a==null||a.attemptAutoclose("remove-value-reader",this.id),this}addSuccessCaller(i,a=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"add-success-caller")),o=!1){return this.calledBySuccess.find(p=>p.id===i.id)||(this.calledBySuccess.push(i),a==null||a.add(this,S.Updated),o&&We(this,a)),a==null||a.attemptAutoclose("add-success-caller",this.id),this}addErrorCaller(i,a=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"add-error-caller")),o=!1){return this.calledByError.find(p=>p.id===i.id)||(this.calledByError.push(i),a==null||a.add(this,S.Updated),o&&We(this,a)),a==null||a.attemptAutoclose("add-error-caller",this.id),this}addEntryCaller(i,a=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"add-entry-caller")),o=!1){return this.calledByEntry.find(p=>p.id===i.id)||(this.calledByEntry.push(i),a==null||a.add(this,S.Updated),o&&We(this,a)),a==null||a.attemptAutoclose("add-entry-caller",this.id),this}addErrorCall(i,a=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"add-error-call")),o=!1){return this.errorCalls.find(p=>p.id===i.id)||(this.errorCalls.push(i),o&&We(this,a),a==null||a.add(this,S.Affected)),a==null||a.attemptAutoclose("add-error-call",this.id),this}addSuccessCall(i,a=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"add-success-call")),o=!1){return this.successCalls.find(p=>p.id===i.id)||(this.successCalls.push(i),o&&We(this,a),a==null||a.add(this,S.Affected)),a==null||a.attemptAutoclose("add-success-call",this.id),this}removeCall(i,a=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"remove-call")),o=!1){const p=this.successCalls.findIndex(y=>y.id===i.id);p>-1&&(this.successCalls.splice(p,1),a==null||a.add(this,S.Affected));const e=this.errorCalls.findIndex(y=>y.id===i.id);return e>-1&&(this.errorCalls.splice(e,1),a==null||a.add(this,S.Affected)),o&&We(this,a),a==null||a.attemptAutoclose("remove-call",this.id),this}removeCaller(i,a=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"remove-caller")),o=!1){return this.calledBySuccess=this.calledBySuccess.filter(p=>p.id!==i.id?!0:(a==null||a.add(this,S.Updated),a==null||a.add(p,S.Affected),!1)),this.calledByError=this.calledByError.filter(p=>p.id!==i.id?!0:(a==null||a.add(this,S.Updated),a==null||a.add(p,S.Affected),!1)),this.calledByEntry=this.calledByEntry.filter(p=>p.id!==i.id?!0:(a==null||a.add(this,S.Updated),a==null||a.add(p,S.Affected),!1)),o&&We(this,a),a==null||a.attemptAutoclose("remove-caller",this.id),this}setParent(i,a=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"set-parent"))){var o;return((o=this.parent)==null?void 0:o.id)!==(i==null?void 0:i.id)&&(this.parent=i,a&&(a==null||a.add(this,S.Updated))),a==null||a.attemptAutoclose("set-parent",this.id),this}setDeclaration(i){return this.declaration=i,this}initChildren(i=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"init-children"))){if(this.initialized||this.startedInitialization)return this;if(this.startedInitialization=!0,this.initialData.declaration.type===f.FunctionDeclaration){const a=te(this.initialData.declaration,this.project);this.declaration=a}else{const a=J(this.initialData.declaration),o=this.project.get(a);this.declaration=o}return this.successCalls=this.initialData.successCalls.map(a=>{const o=te(a,this.project);if(o.addSuccessCaller(this),[f.BreakStatement,f.ContinueStatement].includes(o.type))o.setParent(this.parent.parent,null),o.initChildren(i);else if(o.type===f.ReturnStatement){const p=Wr(this,this.project);o.setParent(p,null),o.initChildren(i)}else o.type!==f.InternalCall&&(o.setParent(this.parent,null),o.initChildren(i));return o}),this.errorCalls=this.initialData.errorCalls.map(a=>{const o=te(a,this.project);if(o.addErrorCaller(this),[f.BreakStatement,f.ContinueStatement].includes(o.type))o.setParent(this.parent.parent,null),o.initChildren(i);else if(o.type===f.ReturnStatement){const p=Wr(this,this.project);o.setParent(p,null),o.initChildren(i)}else o.type!==f.InternalCall&&(o.setParent(this.parent,null),o.initChildren(i));return o}),this.inputs=this.initialData.inputs.map(a=>{const o=te(a,this.project);return o.setParent(this,null),o.initChildren(i),o}),this.initialData.process&&(this.process=te(this.initialData.process,this.project),this.process.setParent(this,null),this.process.initChildren(i)),this.initialData.error&&(this.error=te(this.initialData.error,this.project),this.error.setParent(this,null),this.error.initChildren(i)),this.subscribeToDependencies(),this.afterAllChildrenInitialized(i),i==null||i.attemptAutoclose("init-children",this.id),this}subscribe(){return this.activeVersion=!0,this.project.subscribeInstance(this),this}unsubscribe(){return this.project.unsubscribeInstance(this),this}metaSync(i,a=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"meta-sync"))){const o=Ur(this,i),p=this.toMeta();return this.x=i.x||p.x,this.y=i.y||p.y,super.metaSync(i),i.deleted===!0&&!p.deleted?a==null||a.add(this,S.Removed):i.deleted===!1&&p.deleted?a==null||a.add(this,S.Added):o&&(a==null||a.add(this,S.Updated)),a==null||a.attemptAutoclose("meta-sync",this.id),this}async APILoad(i=ve,...a){return await er.repository.APILoad(this.id,...a),this}async APICreate(i=ve,...a){return await er.repository.APICreate(this.toShallowJSON(),...a),this}async APIUpdate(i=ve,...a){return await er.repository.APIUpdate(this.toShallowJSON(),...a),this}async APIDelete(i=ve,...a){return await er.repository.APIDelete(this.toShallowJSON(),...a),this}async APIClone(i=ve,...a){return await er.repository.APIClone(this.id,...a),this}async APILoadVersion(i=ve,a,...o){return await er.repository.APILoadVersion(this.id,a,...o)}removeFromParent(i=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"remove-from-parent"))){const a=[],o=[],p=[],e=[];return this.parent.type===f.Project?(this.parent.removeFunctionCall(this),e.push(this.parent)):this.parent.detachedChildren.includes(this)&&this.parent.unsubscribeDetachedChild(this),i==null||i.attemptAutoclose("remove-from-parent",this.id),{added:R(p),updated:R(a),removed:R(o),affected:R(e),self:this}}remove({ignoreUpstream:i}={ignoreUpstream:!1},a=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"remove-entity"))){var v;const o=[],p=[],e=[],y=[];if(a!=null&&a.hasRemoved(this.id))return a==null||a.attemptAutoclose("remove-entity",this.id),{added:[],updated:[],removed:[],affected:[],self:this};if(p.push(this),this.unsubscribe(),this.unsubscribeFromDependencies(),this.project.subscribeDeletedInstance(this),this.metaSync({deleted:!0},a),Object.values(this.detachedDependents).forEach(E=>{const{updated:w,removed:A,added:$}=E.entity.onDetachedDependencyRemoved(this,E.field,a);o.push(...w),p.push(...A),e.push(...$)}),this.process){const{updated:E,removed:w}=(v=this.process)==null?void 0:v.remove({ignoreUpstream:!0},a);o.push(...E),p.push(...w)}if(this.inputs.forEach(E=>{const{updated:w,removed:A}=E.remove({ignoreUpstream:!0},a);o.push(...w),p.push(...A)}),this.outputs.forEach(E=>{const{updated:w,removed:A}=E.remove({ignoreUpstream:!0},a);o.push(...w),p.push(...A)}),this.error){const{updated:E,removed:w}=this.error.remove({ignoreUpstream:!0},a);o.push(...E),p.push(...w)}if(this.successCalls.forEach(E=>{o.push(E),E.removeCaller(this,a)}),this.errorCalls.forEach(E=>{o.push(E),E.removeCaller(this,a)}),!i){const E=this.removeFromParent(a);e.push(...E.added),o.push(...E.updated),p.push(...E.removed),y.push(...E.affected),this.calledBy.forEach(w=>{o.push(w),w.removeCall(this,a)})}return a==null||a.attemptAutoclose("remove-entity",this.id),{added:R(e),updated:R(o),removed:R(p),affected:R(y),self:this}}restore({}={},i=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"restore-entity"))){const a=[],o=[],p=[],e=[];if(i!=null&&i.hasAdded(this.id))return i==null||i.attemptAutoclose("restore-entity",this.id),{added:[],updated:[],removed:[],affected:[],self:this};if(this.subscribe(),this.project.unsubscribeDeletedInstance(this),this.metaSync({deleted:!1},i),Object.values(this.detachedDependents).forEach(y=>{const{updated:v,removed:E,added:w}=y.entity.onDetachedDependencyRestored(this,y.field,i);o.push(...v),p.push(...E),a.push(...w)}),this.process){const{updated:y}=this.process.restore({},i);o.push(...y)}return this.inputs.forEach(y=>{const{updated:v}=y.restore({},i);o.push(...v)}),this.outputs.forEach(y=>{const{updated:v}=y.restore({},i);o.push(...v)}),this.successCalls.forEach(y=>{o.push(y),y.addSuccessCaller(this,i)}),this.errorCalls.forEach(y=>{o.push(y),y.addErrorCaller(this,i)}),this.calledBySuccess.forEach(y=>{o.push(y),y.addSuccessCall(this,i)}),this.calledByError.forEach(y=>{o.push(y),y.addErrorCall(this,i)}),this.calledByEntry.forEach(y=>{o.push(y),y.addCall(this,i)}),i==null||i.attemptAutoclose("restore-entity",this.id),{added:R(a),updated:R(o),removed:R(p),affected:R(e),self:this}}toFlat(i=new Set){return i.has(this.id)?[]:(i.add(this.id),[this,...this.successCalls.flatMap(o=>o.toFlat(i)),...this.errorCalls.flatMap(o=>o.toFlat(i)),...this.inputs.flatMap(o=>o.toFlat(i)),...this.outputs.flatMap(o=>o.toFlat(i)),...this.process?this.process.toFlat(i):[],...this.error?this.error.toFlat(i):[],...this.calledBy.flatMap(o=>o.toFlat(i))])}toFlatIds(i=new Set){return i.has(this.id)?[]:(i.add(this.id),[this.id,...this.successCalls.flatMap(o=>o.toFlatIds(i)),...this.errorCalls.flatMap(o=>o.toFlatIds(i)),...this.inputs.flatMap(o=>o.toFlatIds(i)),...this.outputs.flatMap(o=>o.toFlatIds(i))])}toMeta(){return{id:this.id,version:this.version,createdAt:this.createdAt,previousVersion:this.previousVersion,author:this.author,deleted:this.deleted,x:this.x,y:this.y,type:this.type}}toJSON(i=new Set){var a,o;return i.has(this.id)?this.toReference():(i.add(this.id),{id:this.id,version:this.version,createdAt:this.createdAt,previousVersion:this.previousVersion,author:this.author,deleted:this.deleted,type:this.type,x:this.x,y:this.y,successCalls:this.successCalls.map(p=>p.toJSON(i)),errorCalls:this.errorCalls.map(p=>p.toJSON(i)),calledBySuccess:this.calledBySuccess.map(p=>p.toReference()),calledByError:this.calledByError.map(p=>p.toReference()),calledByEntry:this.calledByEntry.map(p=>p.toReference()),process:(a=this.process)==null?void 0:a.toJSON(i),declaration:this.declaration.toJSON(i),inputs:this.inputs.map(p=>p.toJSON(i)),outputs:this.outputs.map(p=>p.toJSON(i)),parent:this.parent.toReference(),error:(o=this.error)==null?void 0:o.toJSON(i)})}toJSONClone(i=ke){var o,p,e,y,v,E,w;let a;return(o=i.seenEntityMaps)!=null&&o.has(this.id)?a=i.seenEntityMaps.get(this.id):(a=i.newId||Gr(this,this.project,i.uuidStrategy),i.seenEntityMaps&&i.seenEntityMaps.set(this.id,a)),(p=i.seenEntities)!=null&&p.has(a)||(e=i.seenEntities)!=null&&e.has(this.id)?this.toReference({seenEntityMaps:i.seenEntityMaps}):((y=i.seenEntities)==null||y.add(a),(v=i.seenEntities)==null||v.add(this.id),{id:a,version:N.UUID.uuid(),createdAt:i.timestamp||L().toISOString(),previousVersion:null,author:this.author,deleted:this.deleted,type:this.type,x:this.x,y:this.y,successCalls:this.successCalls.map(A=>A.toJSONClone({...i,newId:null})),errorCalls:this.errorCalls.map(A=>A.toJSONClone({...i,newId:null})),calledBySuccess:this.calledBySuccess.map(A=>A.toReference({seenEntityMaps:i.seenEntityMaps})),calledByError:this.calledByError.map(A=>A.toReference({seenEntityMaps:i.seenEntityMaps})),calledByEntry:this.calledByEntry.map(A=>A.toReference({seenEntityMaps:i.seenEntityMaps})),process:(E=this.process)==null?void 0:E.toJSONClone({...i,newId:null}),declaration:this.declaration.toJSONClone({...i,newId:null}),inputs:this.inputs.map(A=>A.toJSONClone({...i,newId:null})),outputs:this.outputs.map(A=>A.toJSONClone({...i,newId:null})),error:(w=this.error)==null?void 0:w.toJSONClone({...i,newId:null}),parent:this.parent.toReference({seenEntityMaps:i.seenEntityMaps})})}toReference(i=ke){var o;let a=this.id;return(o=i.seenEntityMaps)!=null&&o.has(this.id)&&(a=i.seenEntityMaps.get(this.id)),{id:a+"--"+N.UUID.uuid()+"--ref",type:f.GenericReference,entityId:a,version:this.version,entityType:this.type}}toShallowJSON(i=ke){var o;let a=this.id;return(o=i.seenEntityMaps)!=null&&o.has(this.id)&&(a=i.seenEntityMaps.get(this.id)),{id:a,version:this.version,createdAt:this.createdAt,previousVersion:this.previousVersion,author:this.author,deleted:this.deleted,type:this.type,x:this.x,y:this.y,process:this.process?this.process.toReference(i):null,inputs:this.inputs.map(p=>p.toReference(i)),outputs:this.outputs.map(p=>p.toReference(i)),declaration:this.declaration.toReference(i),successCalls:this.successCalls.map(p=>p.toReference(i)),errorCalls:this.errorCalls.map(p=>p.toReference(i)),calledBySuccess:this.calledBySuccess.map(p=>p.toReference(i)),calledByError:this.calledByError.map(p=>p.toReference(i)),calledByEntry:this.calledByEntry.map(p=>p.toReference(i)),error:this.error?this.error.toReference(i):null,parent:this.parent.toReference(i)}}toFlatJSON(i=new Set){return i.has(this.id)?[]:(i.add(this.id),[this.toShallowJSON(),...this.successCalls.flatMap(o=>o.toFlatJSON(i)),...this.errorCalls.flatMap(o=>o.toFlatJSON(i)),...this.inputs.flatMap(o=>o.toFlatJSON(i)),...this.outputs.flatMap(o=>o.toFlatJSON(i)),...this.process?this.process.toFlatJSON(i):[],...this.error?this.error.toFlatJSON(i):[]])}toGenerationTarget(){const i=this.parent.type===f.Project?void 0:this.parent.id;return{id:this.id,version:this.version,createdAt:this.createdAt,previousVersion:this.previousVersion,author:this.author,deleted:this.deleted,type:this.type,calledByEntry:this.calledByEntry.map(a=>a.id),calledBySuccess:this.calledBySuccess.map(a=>a.id),calledByError:this.calledByError.map(a=>a.id),declaration:this.declaration.id,parent:i}}toFlatGenerationTarget(i=new Set){return i.has(this.id)?[]:(i.add(this.id),[this.toGenerationTarget(),...this.successCalls.flatMap(o=>o.toFlatGenerationTarget(i)),...this.errorCalls.flatMap(o=>o.toFlatGenerationTarget(i)),...this.inputs.flatMap(o=>o.toFlatGenerationTarget(i)),...this.outputs.flatMap(o=>o.toFlatGenerationTarget(i)),...this.process?this.process.toFlatGenerationTarget(i):[],...this.error?this.error.toFlatGenerationTarget(i):[]])}clearErrors(){var i,a;return this.errors=[],this.inputs.forEach(o=>o.clearErrors()),this.outputs.forEach(o=>o.clearErrors()),this.successCalls.forEach(o=>o.clearErrors()),this.errorCalls.forEach(o=>o.clearErrors()),(i=this.process)==null||i.clearErrors(),(a=this.error)==null||a.clearErrors(),this}validate(){const i=m5(this);return this.errors=i,{success:!0,error:null,data:this.toJSON()}}getErrors(){return[...this.errors,...this.inputs.flatMap(a=>a.getErrors()),...this.outputs.flatMap(a=>a.getErrors()),...this.error?this.error.getErrors():[],...this.process?this.process.getErrors():[]]}getShallowErrors(){return this.errors}clone(i=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"clone-entity")),a=null,o=null,p=!0){var U,G;let e=Fr(a,this);const y=this.toJSON(),v=o||N.UUID.uuid();y.inputs=[];const E=v.split("-id"),w=E[E.length-1||0]||v;y.id=v,y.version=N.UUID.uuid(),y.createdAt=(i==null?void 0:i.timestamp)||L().toISOString(),y.author=(i==null?void 0:i.author)||"1",y.previousVersion=null,y.deleted=!1;const A=lr(y,e);a?A.setParent(a,null):A.setParent(this.parent,null),p&&A.subscribe(),A.initChildren(i),i==null||i.add(A,S.Added);const $=(U=this.inputs)==null?void 0:U.map((K,Z)=>K.clone(i,A,w+"-input-map-"+Z+"-id",p));A.inputs=$;const V=(G=this.outputs)==null?void 0:G.map((K,Z)=>K.clone(i,A,w+"-output-map-"+Z+"-id",p));return A.outputs=V,this.error&&(A.error=this.error.clone(i,A,w+"-error-map-id",p)),this.process&&(A.process=this.process.clone(i,A,w+"-process-id",p)),i==null||i.attemptAutoclose("clone-entity",this.id),A}removeUnrecognizedInputs(i=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"remove-unrecognized-inputs"))){const a=[],o=[],p=[],e=[];return this.inputs.forEach(v=>{if(!this.declaration.inputs.find(w=>{var A;return w.id===((A=v.declaration)==null?void 0:A.id)})){const w=v.remove({ignoreUpstream:!1},i);p.push(...w.removed),a.push(...w.updated)}}),this.inputs.filter((v,E)=>{const w=this.inputs.findIndex($=>$.declaration===v.declaration&&$!==v);if(w===-1)return!1;const A=this.inputs[w];return L(A==null?void 0:A.createdAt).isSame(L(v.createdAt))?E>w:!!L(A==null?void 0:A.createdAt).isAfter(v.createdAt)}).forEach(v=>{const E=v.remove({ignoreUpstream:!1},i);p.push(...E.removed),a.push(...E.updated)}),i==null||i.attemptAutoclose("remove-unrecognized-inputs",this.id),{updated:R(a),added:R(o),removed:R(p),affected:R(e),self:this}}removeUnrecognizedOutputs(i=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"remove-unrecognized-outputs"))){const a=[],o=[],p=[],e=[];return this.outputs.forEach(v=>{if(!this.declaration.getUniqueReturnDeclarations().find(w=>{var A;return w.id===((A=v.declaration)==null?void 0:A.id)})){const w=v.remove({ignoreUpstream:!1},i);p.push(...w.removed),a.push(...w.updated)}}),this.outputs.filter((v,E)=>{const w=this.outputs.findIndex($=>$.declaration===v.declaration&&$!==v);if(w===-1)return!1;const A=this.outputs[w];return L(A==null?void 0:A.createdAt).isSame(L(v.createdAt))?E>w:!!L(A==null?void 0:A.createdAt).isAfter(v.createdAt)}).forEach(v=>{const E=v.remove({ignoreUpstream:!1},i);p.push(...E.removed),a.push(...E.updated)}),i==null||i.attemptAutoclose("remove-unrecognized-outputs",this.id),{updated:R(a),added:R(o),removed:R(p),affected:R(e),self:this}}syncInputs(i=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"sync-missing-fixed-inputs"))){const a=[],o=[],p=[],e=[],y=this.declaration.inputs.filter(A=>!this.inputs.find($=>$.declaration.id===A.id));this.inputs.sort((A,$)=>A.index-$.index),y.forEach(A=>{this.inputs.forEach(U=>{U.index>=A.index&&U.metaSync({index:U.index+1},i)});const $={id:N.UUID.uuid(),version:N.UUID.uuid(),createdAt:(i==null?void 0:i.timestamp)||L().toISOString(),author:N.sessionAuthor,previousVersion:null,deleted:!1,type:f.InputMap,declaration:A.toJSON(),readsValue:null,defaultValue:null,index:A.index,name:null,codeName:null,description:null,parent:this.toReference()},V=te($,this.project);V.setParent(this,i),V.initChildren(i),i==null||i.add(V,S.Added),V.addSelfToProject(i),o.push(V)}),this.inputs.sort((A,$)=>A.index-$.index);const{updated:v,added:E,removed:w}=this.removeUnrecognizedInputs(i);return a.push(...v),o.push(...E),p.push(...w),i==null||i.attemptAutoclose("sync-missing-fixed-inputs",this.id),{updated:R(a),added:R(o),removed:R(p),affected:R(e),self:this}}syncOutputs(i=this.project.addChangeSet(new F(this.project,N.sessionAuthor,L().toISOString(),this,!0,"sync-missing-fixed-outputs"))){const a=[],o=[],p=[],e=[],y=[];this.outputs=this.initialData.outputs.reduce(($,V)=>{if(V.type===f.GenericReference){const G=Ji(V,this.project);return G?[...$,G]:$}const U=te(V,this.project);return y.push(U.index),U.setParent(this,null),U.initChildren(i),[...$,U]},[]);const v=this.declaration.getUniqueReturnDeclarations().filter($=>!this.outputs.find(V=>V.declaration.id===$.id));this.outputs.sort(($,V)=>$.index-V.index),v.forEach(($,V)=>{this.outputs.forEach(Z=>{Z.index>=$.index&&Z.index++});const U=y.includes($.index)?this.outputs.length-1+V:$.index,G={id:N.UUID.uuid(),version:N.UUID.uuid(),createdAt:(i==null?void 0:i.timestamp)||L().toISOString(),author:N.sessionAuthor,previousVersion:null,deleted:!1,type:f.OutputMap,declaration:$.toJSON(),defaultValue:null,writesValues:[],index:U,parent:this.toReference()},K=te(G,this.project);K.setParent(this,i),K.initChildren(i),i==null||i.add(K,S.Added),K.addSelfToProject(i)}),this.outputs.sort(($,V)=>$.index-V.index);const{updated:E,added:w,removed:A}=this.removeUnrecognizedOutputs(i);return a.push(...E),o.push(...w),p.push(...A),i==null||i.attemptAutoclose("sync-missing-fixed-outputs",this.id),{updated:R(a),added:R(o),removed:R(p),affected:R(e),self:this}}getUnusedInputs(){return this.inputs.filter(i=>i.suggestion||!i.readsValue&&!i.defaultValue)}getUnusedOutputs(){return this.outputs.filter(i=>i.suggestion||!i.writesValues.length)}getUsedInputs(){return this.inputs.filter(i=>!i.suggestion&&(i.readsValue||i.defaultValue))}getUsedOutputs(){return this.outputs.filter(i=>!i.suggestion&&i.writesValues.length)}};g(er,"repository",{APICreate:async(i,...a)=>i,APIUpdate:async(i,...a)=>i,APIDelete:async(i,...a)=>i,APIClone:async(i,...a)=>{},APILoad:async(i,...a)=>null,APILoadVersion:async(i,a,...o)=>null}),g(er,"type",f.FunctionCall),g(er,"USER_MANAGED_PARENT_TYPES",[...Mr,f.Project]),g(er,"PARENT_TYPES",[...er.USER_MANAGED_PARENT_TYPES]),g(er,"MUTABLE_BASE_PROPERTIES",[]),g(er,"INMUTABLE_BASE_PROPERTIES",["id","type","version","createdAt","author","previousVersion"]),g(er,"BASE_PROPERTIES",[...er.MUTABLE_BASE_PROPERTIES,...er.INMUTABLE_BASE_PROPERTIES]),g(er,"MUTABLE_META_PROPERTIES",["x","y"]),g(er,"INMUTABLE_META_PROPERTIES",[...er.INMUTABLE_BASE_PROPERTIES]),g(er,"META_PROPERTIES",[...er.MUTABLE_META_PROPERTIES,...er.INMUTABLE_META_PROPERTIES]),g(er,"MUTABLE_UPSTREAM_PROPERTIES",["calledBySuccess","calledByError","calledByEntry"]),g(er,"INMUTABLE_UPSTREAM_PROPERTIES",["declaration","parent"]),g(er,"UPSTREAM_PROPERTIES",[...er.MUTABLE_UPSTREAM_PROPERTIES,...er.INMUTABLE_UPSTREAM_PROPERTIES]),g(er,"MUTABLE_DOWNSTREAM_PROPERTIES",["successCalls","errorCalls","writesValues","inputs","outputs","error"]),g(er,"INMUTABLE_DOWNSTREAM_PROPERTIES",[]),g(er,"DOWNSTREAM_PROPERTIES",[...er.MUTABLE_DOWNSTREAM_PROPERTIES,...er.INMUTABLE_DOWNSTREAM_PROPERTIES]),g(er,"PROPERTIES",[...er.META_PROPERTIES,...er.UPSTREAM_PROPERTIES,...er.DOWNSTREAM_PROPERTIES]);let Ao=er;function Nb(u){return u&&typeof u.then=="function"}function BIe(u){const d=new ea(u[0]),i=u.map(o=>o.id),a={};return u.forEach(o=>{a[o.id]=o}),d.order=i,d.flatRecord=a,d.orderEntities(),d.order.map(o=>d.flatRecord[o])}function UIe(u){const d=new ea(Object.values(u)[0]),i=Object.keys(u);return d.order=i,d.flatRecord=u,d.orderEntities(),d.order}class ea{constructor(d){g(this,"order",[]);g(this,"flatRecord",{});g(this,"allBuiltInEntityIds",Xs());g(this,"onGoingVisits",{});d&&(this.flatten(d),this.orderEntities())}flatten(d){const i=new Set(Xs()),a=R(me(d,i,{ignoreBuiltInBaseEntities:!0})),o=new Set;for(const p of a)this.flatRecord[p.id]=p,o.add(p.id);this.order=Array.from(o)}moveEntityAfterDependencies(d){const{upstream:i}=ed(d,this.flatRecord,{ignoreBuiltInBaseEntities:!0,allBuiltInEntityIds:this.allBuiltInEntityIds});for(const a of Object.keys(i)){const o=this.order.indexOf(a),p=this.order.indexOf(d.id);if(o>p)return this.order.splice(p,1),this.order.splice(o,0,d.id),!0}return!1}orderEntities(){let d=!1;for(let i=0;i<this.order.length;i++){const a=this.order[i],o=this.flatRecord[a];if(o||Me.warn(`Entity with id ${a} not found in flatRecord. Skipping...`),this.moveEntityAfterDependencies(o)){d=!0;break}}d&&this.orderEntities()}getUpstreamOngoingDependenciesVisits(d,i){const{upstream:a}=ed(this.flatRecord[d],this.flatRecord,{ignoreBuiltInBaseEntities:!0,allBuiltInEntityIds:this.allBuiltInEntityIds}),o={};return Object.entries(this.onGoingVisits[i]||{}).forEach(([p,e])=>{Object.keys(a).includes(p)&&(o[p]=e)}),o}getDownstreamOngoingDependenciesVisits(d,i){const a=Object.keys(this.onGoingVisits[i]||{}),o=new Set(a.flatMap(e=>Object.keys(ed(this.flatRecord[e],this.flatRecord,{ignoreBuiltInBaseEntities:!0,allBuiltInEntityIds:this.allBuiltInEntityIds}).downstream))),p={};return Array.from(o).forEach(e=>{e===d&&(p[e]=this.onGoingVisits[i][e])}),p}async settlePromises(d,i){const a=Object.values(d);a.length&&await Promise.all(a),Object.keys(d).forEach(o=>{delete this.onGoingVisits[i][o]})}visit(d){const i=this.order;for(const a of i)d(this.flatRecord[a],this.flatRecord);return this}reverseVisit(d){const i=this.order.slice().reverse();for(const a of i)d(this.flatRecord[a],this.flatRecord);return this}async visitAsync(d){const i=this.order,a=Math.random().toString(36).substring(7);this.onGoingVisits[a]={};for(const o of i){const p=this.getUpstreamOngoingDependenciesVisits(o,a);Object.keys(p).length&&await this.settlePromises(p,a);const e=d(this.flatRecord[o],this.flatRecord);Nb(e)&&(this.onGoingVisits[a][o]=e)}return await this.settlePromises(this.onGoingVisits[a],a),this.onGoingVisits[a]={},this}async reverseVisitAsync(d){const i=this.order.slice().reverse(),a=Math.random().toString(36).substring(7);this.onGoingVisits[a]={};for(const o of i){const p=this.getDownstreamOngoingDependenciesVisits(o,a);Object.keys(p).length&&await this.settlePromises(p,a);const e=d(this.flatRecord[o],this.flatRecord);Nb(e)&&(this.onGoingVisits[a][o]=e)}return await this.settlePromises(this.onGoingVisits[a],a),this.onGoingVisits[a]={},this}}function E5(u,d){switch(u.id){case Ee["built-in-base-entity"].BUILT_IN_PERSISTED_ENTITY_ENTITY.id:{const i=u.project.entities.filter(v=>!!v.implements.find(E=>E.id===Ee["built-in-base-entity"].BUILT_IN_RELATIONAL_DATABASE_ENTITY.id)),a=i.find(v=>{const E=v.properties.find($=>$.implements&&$.implements.id===Ee["built-in-base-entity"].BUILT_IN_RELATIONAL_DATABASE_ENTITY.properties.default.id),w=E==null?void 0:E.getDefaultValue();return(w==null?void 0:w.value)===!0});if(!a&&i.length){const E=i[0].properties.find(A=>A.implements&&A.implements.id===Ee["built-in-base-entity"].BUILT_IN_RELATIONAL_DATABASE_ENTITY.properties.default.id),w=E==null?void 0:E.defaultValue;if(w)w.metaSync({value:!0},d);else if(E!=null&&E.dataType){const A={id:N.UUID.uuid(),version:N.UUID.uuid(),createdAt:(d==null?void 0:d.timestamp)||new Date().toISOString(),author:N.sessionAuthor,previousVersion:null,deleted:!1,type:f.LiteralValue,standaloneParent:null,name:Q.EntityTemplate,autogeneration:null,value:!0,valueAsTypeSingle:null,valueAsTypeList:null,parent:E==null?void 0:E.toReference()},$=te(A,u.project);return $.setParent(E,d),$.initChildren(d),d==null||d.add($,S.Added),$.addSelfToProject(d),{newEntities:[$]}}return{newEntities:[]}}else if(a)return{newEntities:[]};const o=u.project.get(Ee["built-in-base-entity"].BUILT_IN_RELATIONAL_DATABASE_ENTITY.id),p=wm(o,"Main database",d);if(p.errors.length>0)return{newEntities:[]};const e=p.properties.find(v=>v.implements&&v.implements.id===Ee["built-in-base-entity"].BUILT_IN_RELATIONAL_DATABASE_ENTITY.properties.default.id),y=e==null?void 0:e.defaultValue;if(y)y.metaSync({value:!0},d);else if(e!=null&&e.dataType){const v={id:N.UUID.uuid(),version:N.UUID.uuid(),createdAt:(d==null?void 0:d.timestamp)||new Date().toISOString(),author:N.sessionAuthor,previousVersion:null,deleted:!1,type:f.LiteralValue,standaloneParent:null,name:Q.EntityTemplate,autogeneration:null,value:!0,valueAsTypeSingle:null,valueAsTypeList:null,parent:e==null?void 0:e.toReference()},E=te(v,u.project);E.setParent(e,d),E.initChildren(d),d==null||d.add(E,S.Added),E.addSelfToProject(d)}return{newEntities:[p]}}}return{newEntities:[]}}function T5(u,d){const i=[],a=[],o=[],p=[];return u.implements.filter(y=>y.type===f.BuiltInBaseEntity).forEach(y=>{var v;switch(y.id){case Ee["built-in-base-entity"].BUILT_IN_PERSISTED_ENTITY_ENTITY.id:{const E=u.project.entities.filter(V=>V.implements.find(U=>U.id===Ee["built-in-base-entity"].BUILT_IN_RELATIONAL_DATABASE_ENTITY.id));let w=E.find(V=>!!V.properties.find(U=>{var G;return U.implements&&U.implements.id===Ee["built-in-base-entity"].BUILT_IN_RELATIONAL_DATABASE_ENTITY.properties.default.id&&((G=U.getDefaultValue())==null?void 0:G.value)===!0}));if(!w&&E.length)w=E[0];else if(!w&&!E.length){w=u.project.getBuiltIn(Ee["built-in-base-entity"].BUILT_IN_RELATIONAL_DATABASE_ENTITY.id).implement("Relational database",d);const U=w.properties.find(G=>{var K;return((K=G.implements)==null?void 0:K.id)===Ee["built-in-base-entity"].BUILT_IN_RELATIONAL_DATABASE_ENTITY.properties.default.id});(v=U==null?void 0:U.defaultValue)==null||v.metaSync({value:!0},d),a.push(w)}const A=u.properties.find(V=>V.implements&&V.implements.id===Ee["built-in-base-entity"].BUILT_IN_PERSISTED_ENTITY_ENTITY.properties.database.id),$=A==null?void 0:A.defaultValue;if(A&&!$){const V={id:N.UUID.uuid(),version:N.UUID.uuid(),createdAt:(d==null?void 0:d.timestamp)||new Date().toISOString(),author:N.sessionAuthor,previousVersion:null,deleted:!1,type:f.LiteralValue,standaloneParent:null,name:Q.EntityTemplate,autogeneration:null,value:null,valueAsTypeSingle:(w==null?void 0:w.toJSON())||null,valueAsTypeList:null,parent:A==null?void 0:A.toReference()},U=te(V,u.project);U.hydrateAncestors(),U.setParent(A,d),U.addSelfToProject(d),U.initChildren(d),d==null||d.add(U,S.Added),a.push(U);return}else $&&!$.valueAsTypeSingle&&$.setValueAsTypeSingle(w||null,d);return}}}),{self:u,updated:R(i),added:R(a),removed:R(o),affected:R(p)}}function wm(u,d,i,a){const o=a||N.UUID.uuid(),p=N.UUID.uuid(),e={id:o,version:p,createdAt:(i==null?void 0:i.timestamp)||new Date().toISOString(),author:N.sessionAuthor,previousVersion:null,deleted:!1,name:d,type:f.DefinitionEntity,codeName:null,description:null,static:u.static,abstract:!1,properties:[],methods:[],abstractMethods:[],extends:[],implements:[u.toJSON()],x:0,y:0,parent:u.project.toReference()};E5(u,i);const y=te(e,u.project);return y.hydrateAncestors(),i==null||i.add(y,S.Added),y.addSelfToProject(i),y.addImplementation(u),y.setParent(u.project,i),y.initChildren(i),T5(y,i),y}function Vb(u,d){return d.entities.find(o=>{const p=o.properties,e=p.map(A=>A.name),y=u.every(A=>e.includes(A)),v=e.filter(A=>!u.includes(A)),E=p.every(A=>!v.includes(A.name)||!A.required);return y&&E})||null}function I5(u,d,i,a=vi.OrDataTypeGroup){const o=[],p=[],e=[],y=[],E={id:N.UUID.uuid(),version:N.UUID.uuid(),createdAt:(i==null?void 0:i.timestamp)||new Date().toISOString(),author:N.sessionAuthor,previousVersion:null,deleted:!1,type:f.DataType,options:null,implementationChooseOne:!1,entity:u.toJSON(),isList:!1,asType:!1,andChildrenGroup:null,orChildrenGroup:null,staticEntities:null,interactiveEntities:null,actionEntities:null,like:!0,inferred:!1,parentRelationType:a,parent:d.toReference()},w=te(E,u.project);return p.push(w),w.setParent(d,i),w.initChildren(i),i==null||i.add(w,S.Added),w.setEntity(u,i),w.addSelfToProject(i),{updated:R(o),added:R(p),removed:R(e),affected:R(y),self:w}}function Lb(u,d,i,a,o){var E,w,A,$,V,U,G,K;const p=[],e=[],y=[],v=[];switch(typeof u){case"string":let Z=!1;const ie=new Date(u);if(ie instanceof Date&&!isNaN(ie.valueOf())&&(Z=!0),Z){const X=d.project.getBuiltIn(Ee[f.PrimitiveEntity][Q.Date].id);d.setEntity(X,a);break}else{const X=d.project.getBuiltIn(Ee[f.PrimitiveEntity][Q.String].id);d.setEntity(X,a);break}case"number":d.setEntity(d.project.getBuiltIn(Ee[f.PrimitiveEntity][Q.Number].id),a);break;case"boolean":d.setEntity(d.project.getBuiltIn(Ee[f.PrimitiveEntity][Q.Boolean].id),a);break;case"object":if(u===null){d.setEntity(d.project.getBuiltIn(Ee[f.PrimitiveEntity][Q.Null].id),a);break}else if(Array.isArray(u))if(d.metaSync({isList:!0},a),u.length>0){const X=u.slice(0,5).filter(re=>re!==void 0);if(X.every(re=>typeof re==typeof X[0])&&(typeof X[0]!="object"||X[0]===null))switch(typeof X[0]){case"string":d.setEntity(d.project.getBuiltIn(Ee[f.PrimitiveEntity][Q.String].id),a);break;case"number":d.setEntity(d.project.getBuiltIn(Ee[f.PrimitiveEntity][Q.Number].id),a);break;case"boolean":d.setEntity(d.project.getBuiltIn(Ee[f.PrimitiveEntity][Q.Boolean].id),a);break;case"object":d.setEntity(d.project.getBuiltIn(Ee[f.PrimitiveEntity][Q.Null].id),a);break}else{const re=[];let fe=!1;X.forEach(H=>{var ce,z,oe,we;if(Array.isArray(H)&&(fe=!0),typeof H=="object"&&!Array.isArray(H)&&H!==null){const xe=Rm(H,d.project,{...i,id:N.UUID.uuid()},a,o);xe.hasCreated&&re.push((ce=xe.changeSet)==null?void 0:ce.self),p.push(...(z=xe.changeSet)==null?void 0:z.updated),e.push(...(oe=xe.changeSet)==null?void 0:oe.added),y.push(...(we=xe.changeSet)==null?void 0:we.removed)}});const Y=R(re);if(!Y.length&&!fe){X.forEach(H=>{const ce={id:N.UUID.uuid(),version:N.UUID.uuid(),createdAt:(a==null?void 0:a.timestamp)||new Date().toISOString(),author:N.sessionAuthor,previousVersion:null,deleted:!1,type:f.DataType,options:null,implementationChooseOne:!1,entity:null,isList:!1,asType:!1,andChildrenGroup:null,orChildrenGroup:null,staticEntities:!1,interactiveEntities:!0,actionEntities:!1,like:!0,inferred:!1,parentRelationType:vi.OrDataTypeGroup,parent:d.toReference()},z=te(ce,d.project);switch(z.setParent(d,a),z.initChildren(a),a==null||a.add(z,S.Added),z.addSelfToProject(a),typeof H){case"string":z.setEntity(z.project.getBuiltIn(Ee[f.PrimitiveEntity][Q.String].id),a);break;case"number":z.setEntity(z.project.getBuiltIn(Ee[f.PrimitiveEntity][Q.Number].id),a);break;case"boolean":z.setEntity(z.project.getBuiltIn(Ee[f.PrimitiveEntity][Q.Boolean].id),a);break;case"object":z.setEntity(z.project.getBuiltIn(Ee[f.PrimitiveEntity][Q.Null].id),a);break}});break}else Y.length===1&&!fe?d.setEntity(Y[0],a):X.forEach(H=>{if(typeof H=="object"&&!Array.isArray(H)&&H!==null){const ce=Vb(Object.keys(H),d.project);if(ce){const z=I5(ce||Y[0],d,a,vi.OrDataTypeGroup);p.push(...z.updated),e.push(...z.added),y.push(...z.removed)}}else{const ce={id:N.UUID.uuid(),version:N.UUID.uuid(),createdAt:(a==null?void 0:a.timestamp)||new Date().toISOString(),author:N.sessionAuthor,previousVersion:null,deleted:!1,type:f.DataType,options:null,implementationChooseOne:!1,entity:null,isList:Array.isArray(H),asType:!1,andChildrenGroup:null,orChildrenGroup:null,staticEntities:!1,interactiveEntities:!0,actionEntities:!1,like:!0,inferred:!1,parentRelationType:vi.OrDataTypeGroup,parent:d.toReference()},z=te(ce,d.project);z.setParent(d,a),z.initChildren(a),a==null||a.add(z,S.Added),z.addSelfToProject(a);const oe=Lb(H,z,{...i,id:N.UUID.uuid()},a,o);p.push(...oe.updated),e.push(...oe.added),y.push(...oe.removed)}})}}else{const X=Rm(u[0],d.project,{...i},a,o);d.setEntity((E=X.changeSet)==null?void 0:E.self,a),p.push(...(w=X.changeSet)==null?void 0:w.updated),e.push(...(A=X.changeSet)==null?void 0:A.added),y.push(...($=X.changeSet)==null?void 0:$.removed);break}else{const X=Rm(u,d.project,{...i},a,o);d.setEntity((V=X.changeSet)==null?void 0:V.self,a),p.push(...(U=X.changeSet)==null?void 0:U.updated),e.push(...(G=X.changeSet)==null?void 0:G.added),y.push(...(K=X.changeSet)==null?void 0:K.removed);break}}return{updated:R(p),added:R(e),removed:R(y),affected:R(v),self:d}}function Rm(u,d,i,a,o){const p=[],e=[],y=[],v=[],E=Object.keys(u),w=Vb(E,d);if(w)return{hasCreated:!1,changeSet:{updated:[],added:[],removed:[],affected:[],self:w}};const A=o?i.name+" of "+o.name:i.name,V={id:i.id||N.UUID.uuid(),version:N.UUID.uuid(),createdAt:(a==null?void 0:a.timestamp)||new Date().toISOString(),author:N.sessionAuthor,previousVersion:null,deleted:!1,name:A,codeName:null,type:f.DefinitionEntity,description:i.description||null,static:i.static||!1,abstract:i.abstract||!1,properties:[],methods:[],abstractMethods:[],extends:[],implements:[],x:0,y:0,parent:d.toReference()},U=te(V,d);return U.setParent(d,a),U.initChildren(a),a==null||a.add(U,S.Added),U.addSelfToProject(a),e.push(U),E.forEach((G,K)=>{const ie={id:N.UUID.uuid(),version:N.UUID.uuid(),createdAt:(a==null?void 0:a.timestamp)||new Date().toISOString(),author:N.sessionAuthor,previousVersion:null,deleted:!1,name:G,type:f.Property,codeName:G,description:null,static:!1,abstract:!1,defaultValue:null,constant:!1,interactive:!0,dataType:null,implements:null,extends:null,index:K,hidden:!1,private:!1,required:!0,parent:U.toReference()},X=te(ie,d);X.setParent(U,a),X.initChildren(a),a==null||a.add(X,S.Added),X.addSelfToProject(a),e.push(X);const de=u[G],fe={id:N.UUID.uuid(),version:N.UUID.uuid(),createdAt:(a==null?void 0:a.timestamp)||new Date().toISOString(),author:N.sessionAuthor,previousVersion:null,deleted:!1,type:f.DataType,parentRelationType:null,options:null,implementationChooseOne:!1,entity:null,isList:!1,asType:!1,andChildrenGroup:null,orChildrenGroup:null,staticEntities:!1,interactiveEntities:!0,actionEntities:!1,like:!0,inferred:!1,parent:X.toReference()},Y=te(fe,d);Y.setParent(X,a),Y.initChildren(a),a==null||a.add(Y,S.Added),Y.addSelfToProject(a),e.push(Y);const H=Lb(de,Y,{...i,name:G,id:N.UUID.uuid()},a,o||U);p.push(...H.updated),e.push(...H.added),y.push(...H.removed)}),{hasCreated:!0,changeSet:{updated:R(p),added:R(e),removed:R(y),affected:R(v),self:U}}}function ja(u,d,i,a){const o=[];return!u.length||!d.length?{errors:o,overlap:!1}:(u.length>d.length?u.forEach(p=>{const e=d.find(v=>v.name===p.name),y=d.find(v=>{var E,w;return!!p.implements&&((E=v.implements)==null?void 0:E.id)===((w=p.implements)==null?void 0:w.id)});if(e){const v=new ur({id:p.id+"--"+e.id+"--"+a,message:`Entity of type ${p.type} named "${p.name}" with id "${p.id}" overrides a base ${e.type} ${e.name} with id "${e.id}" that has the same name`,issue:null,severity:q.Error,code:a,entity:p,firstRelationship:e});o.push(v)}if(y){const v=new ur({id:p.id+"--"+y.id+"--"+i,message:`Entity of type ${p.type} named "${p.name}" with id "${p.id}" overrides a base ${y.type} ${y.name} with id "${y.id}" that implements the same base descriptor`,issue:null,severity:q.Error,code:i,entity:p,firstRelationship:y});o.push(v)}}):d.forEach(p=>{var v;const e=u.find(E=>E.name===p.name),y=u.find(E=>{var w,A;return!!E.implements&&((w=E.implements)==null?void 0:w.id)===((A=p.implements)==null?void 0:A.id)});if(e){const E=new ur({id:e.id+"--"+p.id+"--"+a,message:`Entity of type ${e.type} named "${e.name}" with id "${e.id}" overrides a base entity ${p.name} with id "${p.id}" that has the same name`,issue:null,severity:q.Error,code:a,entity:e,firstRelationship:p});o.push(E)}if(y){const E=new ur({id:y.id+"--"+p.id+"--"+i,message:`Entity of type ${y.type} named "${y.name}" with id "${y.id}" overrides a base entity ${p.name} with id "${p.id}" that implements the same base ${(v=y==null?void 0:y.implements)==null?void 0:v.type}`,issue:null,severity:q.Error,code:i,entity:y,firstRelationship:p});o.push(E)}}),{errors:o,overlap:!!o.length})}function jIe(u,d){return u.abstract||(u.properties.forEach(a=>{a.abstract||a.metaSync({abstract:!0},d)}),Object.values(u.detachedDependents).forEach(a=>{a.field===dA.Entity&&a.entity.remove({ignoreUpstream:!1},d)}),u.metaSync({abstract:!0},d)),u}function xIe(u,d){return u.abstract&&(u.properties.forEach(a=>{a.abstract&&a.metaSync({abstract:!1},d)}),Object.values(u.detachedDependents).forEach(a=>{(a.field===Gm.Implements||a.field===Gm.Extends)&&a.entity.onDetachedDependencyRemoved(u,a.field,d)}),u.metaSync({abstract:!1},d)),u}function FIe(u,d){return u.static||(u.properties.forEach(a=>{a.static||a.metaSync({static:!0},d)}),u.metaSync({static:!0},d)),u}function GIe(u,d){return u.static&&u.metaSync({static:!1},d),u}var A5=(u=>(u.StringValueMustNotHaveSpaces="string-value-must-not-have-spaces",u.StringValueMustNotHaveDashes="string-value-must-not-have-dashes",u))(A5||{});function b5(u,d){const i=[],a=d;if(!a)return{errors:i,override:d};if(typeof a!="string")return{errors:[],override:d};if(a.includes(" ")){const o=new ur({id:u.id+"--string-value-must-not-have-spaces",message:`Entity of type ${u.type} with id "${u.id}" has an invalid value "${d}". The value cannot contain spaces.`,issue:null,severity:q.Error,code:"string-value-must-not-have-spaces",entity:u});i.push(o)}return{errors:i,override:a.replace(/\s/g,"-")}}function w5(u,d){const i=[],a=d;if(!a)return{errors:i,override:d};if(typeof a!="string")return{errors:[],override:d};if(a.includes(" ")){const o=new ur({id:u.id+"--string-value-must-not-have-spaces",message:`Entity of type ${u.type} with id "${u.id}" has an invalid value "${d}". The value cannot contain spaces or dashes.`,issue:null,severity:q.Error,code:"string-value-must-not-have-spaces",entity:u});i.push(o)}if(a.includes("-")){const o=new ur({id:u.id+"--string-value-must-not-have-dashes",message:`Entity of type ${u.type} with id "${u.id}" has an invalid value "${d}". The value cannot contain spaces or dashes.`,issue:null,severity:q.Error,code:"string-value-must-not-have-dashes",entity:u});i.push(o)}return{errors:i,override:a.replace(/\s|-/g,"_")}}function Mb(u,d){var i;if(u.type===f.LiteralValue){let a=(i=u.value)==null?void 0:i.toString();try{a=JSON.stringify(u.value,null,2)}catch{}return`${u.type}: ${u.id} (${ne(u,d)}) = ${a}`}if(u.type===f.DataType){if(u instanceof vs||u.increaseVersion)return`${u.type}: ${u.id} (${ad(u)})`;try{const a=ad(u);return`${u.type}: ${u.id} (${a})`}catch{}}return`${u.type}: ${u.id} (${ne(u,d)})`}function Qu(u,d){const i=bo(u);if(i.length===0)return{list:[],last:null};let a=null;return{list:i.flatMap(p=>{if(p===d)return a=p,[p];const e=Qu(p,d);return e.last&&(a=e.last),[p,...e.list]}),last:a}}function _l(u,d){const i=u.calledBy;if(i.length===0)return{list:[],last:null,callType:null};let a=null,o=null;return{list:i.flatMap(e=>{if(e===d)return a=e,Jt.includes(e.type)?e.parent.type===f.Loop?o="loop-body":o="entry":e.successCalls.includes(u)?o="success":e.errorCalls.includes(u)&&(o="error"),[e];if(!Ri.includes(e.type))return[e];const y=_l(e,d);return y.last&&(a=y.last,o=y.callType),[e,...y.list]}),last:a,callType:o}}function Bb(u){if(u.type===f.Loop){const d=[...Li(ei(u.successCalls)).map(o=>({callee:o,callType:"success"})),...Li(ei(u.errorCalls)).map(o=>({callee:o,callType:"error"})),...(u.body?Rt(u.body):[]).map(o=>({callee:o,callType:"loop-body"}))];return R(d.map(o=>o.callee)).map(o=>{var e;const p=(e=d.find(y=>y.callee===o))==null?void 0:e.callType;return{callee:o,callType:p}})}if(fr.includes(u.type)){const d=[...Li(ei(u.successCalls)).map(o=>({callee:o,callType:"success"})),...Li(ei(u.errorCalls)).map(o=>({callee:o,callType:"error"}))];return R(d.map(o=>o.callee)).map(o=>{var e;const p=(e=d.find(y=>y.callee===o))==null?void 0:e.callType;return{callee:o,callType:p}})}if(Jt.includes(u.type)){const d=[...Li(ei(u.calls)).map(o=>u.parent.type===f.Loop?{callee:o,callType:"loop-body"}:{callee:o,callType:"entry"})];return R(d.map(o=>o.callee)).map(o=>{var e;const p=(e=d.find(y=>y.callee===o))==null?void 0:e.callType;return{callee:o,callType:p}})}return[]}function Ub(u,d,i,a,o=!0){return u.reduce((e,y)=>{if(!_i.includes(y.type))return e;if(y===d||y===i)return[...e,{ancestor:y,callType:a}];const v=Bb(y),E=v.find(A=>A.callee===d),w=v.find(A=>A.callee===i);if(!E&&!w)return e;if(E&&w){if(E.callType===w.callType)return[...e,{ancestor:y,callType:E.callType}];if(!o)return[...e,{ancestor:y,callType:E.callType}]}else return[...e,{ancestor:y,callType:(E==null?void 0:E.callType)||(w==null?void 0:w.callType)}];return e},[])}function jb(u,d,i,a=!0){let o,p=[];if(Jt.includes(i.type))i.parent.type===f.Loop?o="loop-body":o="entry",p=Ub(i.calls,u,d,o,a);else if(fr.includes(i.type)){const y=Ub(i.successCalls,u,d,"success",a),v=Ub(i.errorCalls,u,d,"error",a);y.length&&!v.length&&(p.push(...y.map(E=>({ancestor:E.ancestor,callType:E.callType}))),o="success"),!y.length&&v.length&&(p.push(...v.map(E=>({ancestor:E.ancestor,callType:E.callType}))),o="error")}if(p.length===0)return{ancestor:null,callType:null};if(p.length===1)return{ancestor:p[0].ancestor,callType:p[0].callType};const e=p.filter(y=>!p.some(v=>v.ancestor!==y.ancestor&&_l(y.ancestor,v.ancestor).last===v.ancestor));if(e.length===1){const y=jb(u,d,e[0].ancestor,a);return y.ancestor?{ancestor:y.ancestor,callType:y.callType}:{ancestor:e[0].ancestor,callType:e[0].callType}}return{ancestor:i,callType:o}}function R5(u,d,i=!0){var e,y,v,E;if(!u||!d)throw new Error("Both entities must be defined to find a common ancestor");if(u===d)return{ancestor:u,callType:"same-entity"};if(!((e=u.calledBy)!=null&&e.length)&&!((y=d.calledBy)!=null&&y.length))return{ancestor:null,callType:null};if(Ri.includes(u.type)&&_i.includes(d.type)&&(v=u.calledBy)!=null&&v.every(w=>w===d)){if(Jt.includes(d.type))return d.parent.type===f.Loop?{ancestor:d,callType:"loop-body"}:{ancestor:d,callType:"entry"};if(d.successCalls.includes(u))return{ancestor:d,callType:"success"};if(d.errorCalls.includes(u))return{ancestor:d,callType:"error"}}if(Ri.includes(d.type)&&_i.includes(u.type)&&(E=d.calledBy)!=null&&E.every(w=>w===u)){if(Jt.includes(u.type))return u.parent.type===f.Loop?{ancestor:u,callType:"loop-body"}:{ancestor:u,callType:"entry"};if(u.successCalls.includes(d))return{ancestor:u,callType:"success"};if(u.errorCalls.includes(d))return{ancestor:u,callType:"error"}}const a=tf(u),o=tf(d);if(!a||!o)return{ancestor:null,callType:null};if(a!==o)return{ancestor:null,callType:null};const p=jb(u,d,a,i);return p.ancestor?{ancestor:p.ancestor,callType:p.callType}:{ancestor:a,callType:"entry"}}function SIe(u){if(!u)return{ancestor:null,callType:null};const d=u.calledBy;if(d.length===0)return{ancestor:null,callType:null};if(d.length===1){if(Jt.includes(d[0].type))return d[0].parent.type===f.Loop?{ancestor:d[0],callType:"loop-body"}:{ancestor:d[0],callType:"entry"};if(d[0].successCalls.includes(u))return{ancestor:d[0],callType:"success"};if(d[0].errorCalls.includes(u))return{ancestor:d[0],callType:"error"}}let i=d[0],a=null;for(let o=1;o<d.length&&i;o++){const p=d[o];if(!Ri.includes(p.type)){i=p,Jt.includes(i.type)?i.parent.type===f.Loop?a="loop-body":a="entry":i.successCalls.includes(u)?a="success":i.errorCalls.includes(u)&&(a="error");continue}if(i===p)continue;const e=R5(i,p);e.ancestor?(i=e.ancestor,a=e.callType):(i=null,a=null)}return i?{ancestor:i,callType:a}:{ancestor:null,callType:null}}function ef(u){const d=u.calledBy;if(d.length===0)return u.project;const i=d.reduce((a,o)=>{const p=Zi(o,u.project);return!p||p.type===f.Project?a:a.type===f.Project||Qu(p,a).last?p:(Qu(a,p).last,a)},u.project);return i.type===f.FunctionDeclaration&&i.parent.type===f.Loop?i.parent:i}function We(u,d){let i=ef(u);if(u.type===f.InternalCall)if(u.parent.type===f.VariableInstance){const o=Qs(i,u.parent.declaration,u.project);!o.compatible&&o.type!=="b-is-global-a-is-not"?u.parent.remove({ignoreUpstream:!1},d):(u.parent.setParent(i,d),u.parent.addSelfToProject(d))}else u.parent.setParent(i,d),u.parent.addSelfToProject(d);else if((u.type===f.ContinueStatement||u.type===f.BreakStatement)&&i.type!==f.Loop){u.remove({ignoreUpstream:!1},d);return}else if(u.type===f.ReturnStatement&&!Mr.includes(i.type)){u.remove({ignoreUpstream:!1},d);return}else if(mt.includes(u.type)){const o=u.usedInternalCalls[0];if(o)if(i=ef(o),u.type===f.VariableInstance){const p=Qs(i,u.declaration,u.project);!p.compatible&&p.type!=="b-is-global-a-is-not"?u.remove({ignoreUpstream:!1},d):(u.setParent(i,d),u.addSelfToProject(d))}else u.setParent(i,d),u.addSelfToProject(d);else if(u.type===f.VariableInstance){const p=Qs(i,u.declaration,u.project);!p.compatible&&p.type!=="b-is-global-a-is-not"?u.remove({ignoreUpstream:!1},d):(u.setParent(i,d),u.addSelfToProject(d))}else u.setParent(i,d),u.addSelfToProject(d)}else u.setParent(i,d),u.addSelfToProject(d);if(Ar.includes(u.type))return;Rt(u).forEach(o=>{let p=ef(o);if(o.type===f.InternalCall)if(o.parent.type===f.VariableInstance){const e=Qs(p,o.parent.declaration,u.project);!e.compatible&&e.type!=="b-is-global-a-is-not"?o.parent.remove({ignoreUpstream:!1},d):(o.parent.setParent(p,d),o.parent.addSelfToProject(d))}else o.parent.setParent(p,d),o.parent.addSelfToProject(d);else if((o.type===f.ContinueStatement||o.type===f.BreakStatement)&&p.type!==f.Loop){o.remove({ignoreUpstream:!1},d);return}else if(o.type===f.ReturnStatement&&!Mr.includes(p.type)){o.remove({ignoreUpstream:!1},d);return}else if(mt.includes(o.type)){const e=o.usedInternalCalls[0];if(e)if(p=ef(e),o.type===f.VariableInstance){const y=Qs(p,o.declaration,u.project);!y.compatible&&y.type!=="b-is-global-a-is-not"?o.remove({ignoreUpstream:!1},d):(o.setParent(p,d),o.addSelfToProject(d))}else o.setParent(p,d),o.addSelfToProject(d);else if(o.type===f.VariableInstance){const y=Qs(p,o.declaration,u.project);!y.compatible&&y.type!=="b-is-global-a-is-not"?o.remove({ignoreUpstream:!1},d):(o.setParent(p,d),o.addSelfToProject(d))}else o.setParent(p,d),o.addSelfToProject(d)}else o.setParent(p,d),o.addSelfToProject(d)})}function _m(u,d,i=new Set){const a=wn(u),o=wn(d),p=a.filter(v=>!o.includes(v)),e=a.filter(v=>o.includes(v)),y=p.reduce((v,E)=>i.has(E.id)?v:(i.add(E.id),R([...v,..._m(E,d,i)])),[]);return R([...e,...y])}function gl(u,d){const i=Qu(u,d);return i.last===d&&i.list.length>0&&i.list[0]!==d}function xb(u,d){return!!Qu(u,d).last}function KIe(u,d){return!!_l(u,d).last}function tf(u){if(Jt.includes(u.type))return u;if([...Ri,f.VariableDeclaration].includes(u.type)){const d=u.parent;return Jt.includes(d.type)?d:null}return null}function Fb(u,d){if(!u||!d)throw new Error("Both entities must be defined to find a common ancestor");if(u===d)return u;const i=u.parent;if(i){if(i===d)return d;if(i.type===f.Project)return null}else return null;const a=d.parent;if(a){if(a===u)return u;if(a.type===f.Project)return null}else return null;return Fb(i,a)}function kIe(u,d,i=!0){if(!u||!d)throw new Error("Both entities must be defined to find a common ancestor");if(u===d)return{ancestor:u,callType:"same-entity"};if(Ri.includes(u.type)&&_i.includes(d.type)){const y=_l(u,d),v=y.last;if(v){if(v===d)return{ancestor:d,callType:y.callType}}else return{ancestor:null,callType:null}}if(Ri.includes(d.type)&&_i.includes(u.type)){const y=_l(d,u),v=y.last;if(v){if(v===u)return{ancestor:u,callType:y.callType}}else return{ancestor:null,callType:null}}const a=tf(u),o=tf(d);if(!a||!o)return{ancestor:null,callType:null};if(a!==o)return{ancestor:null,callType:null};if(a.calls.includes(u)||a.calls.includes(d))return{ancestor:a,callType:"entry"};const p=a.calls.reduce((y,v)=>{if(!_i.includes(v.type))return y;const E=Bb(v),w=E.find($=>$.callee===u),A=E.find($=>$.callee===d);return w&&A&&(!i||w.callType===A.callType)?[...y,{ancestor:v,callType:w.callType}]:y},[]);if(p.length===0)return{ancestor:null,callType:null};if(p.length===1)return{ancestor:p[0].ancestor,callType:p[0].callType};const e=p.filter(y=>!p.some(v=>v.ancestor!==y.ancestor&&_l(y.ancestor,v.ancestor).last===v.ancestor));return e.length===1?{ancestor:e[0].ancestor,callType:e[0].callType}:{ancestor:a,callType:"entry"}}function Er(u){if(nh.includes(u.type)){if(u.type===f.FunctionDeclaration){const d=u.parent;if(d.type===f.DefinitionEntity)return Er(d);if(d.type===f.Loop)return d}return u.type===f.DefinitionEntity&&u.parent.type===f.DataType?Er(u.parent):u}else{const d=u.parent;return d?Er(d):null}}function gm(u,d){const i=rf(u,d);if(!i)return null;if(nh.includes(i.type)){if(i.type===f.FunctionDeclaration){const a=rf(i.parent,d);if(a){if(a.type===f.DefinitionEntity)return a;if(a.type===f.Loop)return a}}return i}else{const a=i.parent?rf(i.parent,d):null;return a?gm(a,d):null}}function _5(u){if(!u)return null;if(Ri.includes(u.type))return u;const d=u.parent;return d?_5(d):null}function g5(u){if(!u)return null;if(fr.includes(u.type))return u;const d=u.parent;return d?g5(d):null}function D5(u){if(!u)return null;if(_i.includes(u.type))return u;const d=u.parent;return d?D5(d):null}function qIe(u){return u.type===f.VariableDeclaration?[u]:fr.includes(u.type)?[...u.inputs,...u.outputs||[]]:Ar.includes(u.type)?u.outputs:So.includes(u.type)||u.type===f.FunctionDeclaration?u.inputs:[]}function ZIe(u){const d=wn(u),i=[],a=[];_g.includes(u.type)&&i.push(...Dm(u));const o=d.filter(p=>{const e=i.includes(p);return e?!1:Ri.includes(p.type)&&!e?(a.push(p),!1):!0});return i.sort((p,e)=>gl(e,p)?-1:0),a.sort((p,e)=>gl(e,p)?-1:0),[...i,...a,...o]}function O5(u){return[...u].sort((d,i)=>gl(i,d)?-1:0)}function JIe(u){const d=O5(u),i=[];return d.forEach(a=>{const o=i[i.length-1];if(o){const p=o[o.length-1];gl(a,p)?i.push([a]):o.push(a)}else i.push([a])}),i}function ei(u){const d=u.map(i=>Er(i));return R(d)}function Dm(u){return fr.includes(u.type)?[...ei(u.successCalls),...ei(u.errorCalls)]:Jt.includes(u.type)?ei(u.calls):[]}function HIe(u,d){return Dm(u).includes(d)}function Om(u){return u.writesValues||[]}function WIe(u,d){return Om(u).includes(d)}function C5(u){var d;return mt.includes((d=u==null?void 0:u.readsValue)==null?void 0:d.type)?u.readsValue:null}function YIe(u){return u.writesValues}function $5(u=[]){return u.map(C5).filter(d=>!!d)}function Cm(u=[]){return u.map(d=>d.writesValues).flat().filter(d=>mt.includes(d.type))}function P5(u=[]){return u.map(d=>d.readsValue).filter(d=>!!d&&mt.includes(d.type))}function N5(u){return mt.includes(u.type)?u:null}function V5(u){return u.writesValues.map(N5).filter(d=>!!d)}function L5(u=[]){return u.reduce((d,i)=>i.type===f.OutputMap?[...d,...V5(i)]:d,[])}function Rt(u){return u.type===f.Loop?R([...Li(ei(u.successCalls)),...Li(ei(u.errorCalls)),...u.body?Rt(u.body):[]]):fr.includes(u.type)?R([...Li(ei(u.successCalls)),...Li(ei(u.errorCalls))]):Jt.includes(u.type)?R(Li(ei(u.calls))):[]}function zIe(u){return fr.includes(u.type)?[...Li(ei(u.successCalls)),...Li(ei(u.errorCalls))]:Jt.includes(u.type)?Li(ei(u.calls)):[]}function M5(u,d=new Set){return u.writesValues.filter(a=>mt.includes(a.type)&&!d.has(a.id)).reduce((a,o)=>d.has(o.id)?a:[...a,...mr(o,d)],[])}function B5(u,d=new Set){var a;return(((a=u.readsValue)==null?void 0:a.writesValues)||[]).filter(o=>mt.includes(o.type)&&!d.has(o.id)).reduce((o,p)=>d.has(p.id)?o:[...o,...mr(p,d)],[])}function mr(u,d=new Set){if(d.has(u.id))return[];if(u.type===f.ReturnStatement)return P5(u.outputs).reduce((a,o)=>[...a,...mr(o,d)],[]);if(u.type===f.FunctionCall||u.type===f.Operation||u.type===f.Condition)return[...Rt(u).reduce((p,e)=>{const y=Er(e);return[...p,...mr(y||e,d)]},[]),...$5(u.inputs),...L5(u.outputs)].reduce((p,e)=>[...p,...mr(e,d)],[]);if(So.includes(u.type)){const i=Cm(u.inputs),o=Rt(u).reduce((p,e)=>{const y=Er(e);return[...p,...mr(y||e,d)]},[]);return i.push(...o),i.reduce((p,e)=>[...p,...mr(e,d)],[])}if(u.type===f.FunctionDeclaration){const i=[...Cm(u.inputs)],o=Rt(u).reduce((p,e)=>{const y=Er(e);return[...p,...mr(y||e,d)]},[]);return i.push(...o),i.reduce((p,e)=>[...p,...mr(e)],[])}if(mt.includes(u.type)){d.add(u.id);const a=Rt(u).reduce((o,p)=>{const e=Er(p);return[...o,...mr(e||p,d)]},[]);return[u,...a,...B5(u,d),...M5(u,d)]}return[]}function Is(u,d=new Set){return d.has(u.id)?[]:(d.add(u.id),[...wn(u).reduce((o,p)=>[...o,p,...Is(p,d)],[])])}function Li(u){return u.reduce((d,i)=>i.type===f.ReturnStatement||i.type===f.ContinueStatement||i.type===f.BreakStatement?[...d,i]:[...d,i,...Rt(i)],[])}function U5(u){const d=u.entities||[],i=[...d,...u.functions||[],...u.events||[],...u.projects||[]],a=d.reduce((v,E)=>[...v,...E.properties],[]),o=d.reduce((v,E)=>[...v,...E.methods],[]),p=o.reduce((v,E)=>[...v,...Cm(E.inputs),...Li(ei(E.calls)),...E.returnStatements],[]),e=u.functions.reduce((v,E)=>[...v,...Li(ei(E.calls)),...E.returnStatements],[]),y=u.events.reduce((v,E)=>[...v,...Li(ei(E.calls)),...E.returnStatements],[]);return[...i,...a,...o,...p,...e,...y]}function j5(u,d){return d.filter(a=>{if(!a)return!1;switch(a.type){case f.FunctionCall:return a.inputs.find(o=>o.id===u.id)!==void 0||a.outputs.find(o=>o.id===u.id)!==void 0;case f.Condition:return a.successCalls.find(o=>o.id===u.id)!==void 0||a.errorCalls.find(o=>o.id===u.id)!==void 0||a.inputs.find(o=>o.id===u.id)!==void 0;case f.Operation:return a.outputs.find(o=>o.id===u.id)!==void 0;case f.VariableDeclaration:return fr.includes(u.type)?fS(u).find(p=>{var e;return((e=p.readsValue)==null?void 0:e.id)===a.id})!==void 0:!1;case f.DefinitionEntity:return a.properties.find(o=>o.id===u.id)!==void 0||a.methods.find(o=>o.id===u.id)!==void 0;case f.FunctionDeclaration:return a.inputs.find(o=>o.id===u.id)!==void 0||(a.returnStatements.map(o=>o.outputs).flat()||[]).find(o=>o.id===u.id)!==void 0;default:return!1}})}function XIe(u){const d=U5(u.project);return j5(u,d)}function rf(u,d){return u?typeof u=="string"?d[u]:u.type===f.GenericReference?d[u.entityId]:d[u.id]?d[u.id]:null:null}function x5(u={},d){const i={};return Object.keys(u).forEach(a=>{const o=d.get(a)||a,p=u[a];i[o]=p}),i}function ed(u,d={},i={}){const a={ignoreBuiltInBaseEntities:!1,allBuiltInEntityIds:[],entityMaps:new Map,...i};if(a.ignoreBuiltInBaseEntities&&(Wi.includes(u.type)||(a.allBuiltInEntityIds||[]).includes(u.id)))return{upstream:{},downstream:{}};const o=u,p=u,e=u,y=u,v=u,E=u,w=u,A=u,$=u,V=u,U=u,G=u,K=u,Z=[...K.readsValue?[K.readsValue]:[],...K.declaration?[K.declaration]:[],...(G.calledByEntry||[]).flatMap(re=>re),...(G.calledBySuccess||[]).flatMap(re=>re),...(G.calledByError||[]).flatMap(re=>re),...V.parent?[V.parent]:[]];Array.isArray(e.implements)?Z.push(...e.implements.flatMap(re=>re)):$.implements&&Z.push($.implements),Array.isArray(e.extends)?Z.push(...e.extends.flatMap(re=>re)):$.extends&&Z.push($.extends),v.valueAsTypeList&&Array.isArray(v.valueAsTypeList)&&Z.push(...v.valueAsTypeList.flatMap(re=>re)),v.valueAsTypeSingle&&Z.push(v.valueAsTypeSingle),(K.internalCalls||[]).forEach(re=>{const fe=J(re);if(fe&&d[fe]){const Y=d[fe];[...Y.calledByEntry||[],...Y.calledBySuccess||[],...Y.calledByError||[]].forEach(H=>{const ce=J(H);ce&&d[ce]&&Z.push(d[ce])})}});const ie=[...(o.inputs||[]).flatMap(re=>re),...(U.inputsDeclarations||[]).flatMap(re=>re),...(o.outputs||[]).flatMap(re=>re),...(U.outputsDeclarations||[]).flatMap(re=>re),...(K.internalCalls||[]).flatMap(re=>re),...K.writesValues||[],...G.dataType?[G.dataType]:[],...E.body?[E.body]:[],...G.defaultValue?[G.defaultValue]:[],...(G.successCalls||[]).flatMap(re=>re),...(G.errorCalls||[]).flatMap(re=>re),...(e.properties||[]).flatMap(re=>re),...(e.methods||[]).flatMap(re=>re),...(e.abstractMethods||[]).flatMap(re=>re),...w.error?[w.error]:[],...w.process?[w.process]:[],...V.throws?[V.throws]:[],...(p.andChildrenGroup||[]).flatMap(re=>re),...(p.orChildrenGroup||[]).flatMap(re=>re),...(A.entities||[]).flatMap(re=>re),...(A.functions||[]).flatMap(re=>re),...(A.functionCalls||[]).flatMap(re=>re),...(A.events||[]).flatMap(re=>re),...(A.conditions||[]).flatMap(re=>re),...(A.operations||[]).flatMap(re=>re),...(A.loops||[]).flatMap(re=>re),...(A.variableDeclarations||[]).flatMap(re=>re),...(A.variableInstances||[]).flatMap(re=>re),...(A.searches||[]).flatMap(re=>re),...(A.projects||[]).flatMap(re=>re),...(y.calls||[]).flatMap(re=>re)];u.type===f.DataType&&(p.entity&&d[J(p.entity)]&&d[J(p.entity)].parent&&J(d[J(p.entity)].parent)===u.id?ie.push(p.entity):p.entity&&Z.push(p.entity)),(K.internalCalls||[]).forEach(re=>{const fe=J(re);if(fe&&d[fe]){const Y=d[fe];[...Y.successCalls||[],...Y.errorCalls||[]].forEach(H=>{const ce=J(H);ce&&d[ce]&&ie.push(d[ce])})}});const X={},de={};return Z.forEach(re=>{var H;const fe=J(re);if(fe&&a.ignoreBuiltInBaseEntities&&(Wi.includes(re.type)||(a.allBuiltInEntityIds||[]).includes(fe)))return;const Y=re.version;if(fe){const ce=((H=a.entityMaps)==null?void 0:H.get(fe))||fe;X[ce]=Y}}),ie.forEach(re=>{var H;const fe=J(re);if(fe&&a.ignoreBuiltInBaseEntities&&(Wi.includes(re.type)||(a.allBuiltInEntityIds||[]).includes(fe)))return;const Y=re.version;if(fe){const ce=((H=a.entityMaps)==null?void 0:H.get(fe))||fe;de[ce]=Y}}),{upstream:X,downstream:de}}function QIe(u,d){const i=[];if(Ri.includes(u.type)){Us(u).forEach(p=>{const e=gm(p,d);e&&i.push(e)});const o=[...u.inputs||[],...u.outputs||[]].map(p=>{const e=rf(p,d);return e?yS(e,d):null}).filter(p=>p!==null);i.push(...R(o))}if(mt.includes(u.type)){const a=$m(u);a&&i.push(a)}return R(i)}function bo(u){const d=[];if(Ri.includes(u.type)){u.calledBy.forEach(o=>{const p=Er(o);p&&d.push(p)});const a=[...u.inputs||[],...u.outputs||[]].map(o=>$m(o)).filter(o=>o!==null);d.push(...R(a))}if(mt.includes(u.type)){const i=$m(u);i&&d.push(i)}return R(d)}function Us(u){return[...u.calledByEntry||[],...u.calledByError||[],...u.calledBySuccess||[]].filter(d=>d.type!==f.GenericReference)}function F5(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.ActionDescriptor)throw new Error("Entity must be an action descriptor to be flattened");return[u,...u.inputs.flatMap(a=>me(a,d,i)),...u.outputs.flatMap(a=>me(a,d,i)),...u.error?me(u.error,d,i):[],...u.parent?me(u.parent,d,i):[]]}function G5(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.ArgumentDeclaration)throw new Error("Entity must be an argument declaration to be flattened");return[u,...u.defaultValue?me(u.defaultValue,d):[],...u.writesValues.flatMap(a=>me(a,d,i)),...u.dataType?me(u.dataType,d,i):[],...u.parent?me(u.parent,d,i):[]]}function S5(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.BreakStatement)throw new Error("Entity must be a break statement to be flattened");return[u,...u.outputs.flatMap(a=>me(a,d,i)),...u.throws?me(u.throws,d,i):[],...(Us(u)||[]).flatMap(a=>me(a,d,i)),...u.parent?me(u.parent,d,i):[]]}function K5(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.BuiltInBaseEntity)throw new Error("Entity must be a built-in base entity to be flattened");return[u,...(u.properties||[]).flatMap(a=>me(a,d,i)),...(u.methods||[]).flatMap(a=>me(a,d,i)),...(u.abstractMethods||[]).flatMap(a=>me(a,d,i)),...(u.extends||[]).flatMap(a=>me(a,d,i))]}function k5(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.Condition)throw new Error("Entity must be a condition to be flattened");return[u,...(u.inputs||[]).flatMap(a=>me(a,d,i)),...(u.successCalls||[]).flatMap(a=>me(a,d,i)),...(u.errorCalls||[]).flatMap(a=>me(a,d,i)),...(Us(u)||[]).flatMap(a=>me(a,d,i)),...u.parent?me(u.parent,d,i):[]]}function q5(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.ContinueStatement)throw new Error("Entity must be a continue statement to be flattened");return[u,...u.outputs.flatMap(a=>me(a,d,i)),...u.throws?me(u.throws,d,i):[],...(Us(u)||[]).flatMap(a=>me(a,d,i)),...u.parent?me(u.parent,d,i):[]]}function Z5(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.DefinitionEntity)throw new Error("Entity must be a definition entity to be flattened");return[u,...(u.extends||[]).flatMap(a=>me(a,d,i)),...(u.implements||[]).flatMap(a=>me(a,d,i)),...(u.properties||[]).flatMap(a=>me(a,d,i)),...(u.methods||[]).flatMap(a=>me(a,d,i)),...(u.abstractMethods||[]).flatMap(a=>me(a,d,i)),...u.parent?me(u.parent,d,i):[]]}function J5(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.DataType)throw new Error("Entity must be a data type to be flattened");return[u,...(u.andChildrenGroup||[]).flatMap(a=>me(a,d,i)),...(u.orChildrenGroup||[]).flatMap(a=>me(a,d,i)),...u.entity?me(u.entity,d,i):[],...u.parent?me(u.parent,d,i):[]]}function H5(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.FunctionCall)throw new Error("Entity must be a function call to be flattened");return[u,...(u.inputs||[]).flatMap(a=>me(a,d,i)),...(u.outputs||[]).flatMap(a=>me(a,d,i)),...u.error?me(u.error,d,i):[],...u.process?me(u.process,d,i):[],...(Us(u)||[]).flatMap(a=>me(a,d,i)),...(u.successCalls||[]).flatMap(a=>me(a,d,i)),...(u.errorCalls||[]).flatMap(a=>me(a,d,i)),...u.parent?me(u.parent,d,i):[]]}function W5(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.FunctionDeclaration)throw new Error("Entity must be a function declaration to be flattened");return[u,...(u.inputs||[]).flatMap(a=>me(a,d,i)),...(u.calls||[]).flatMap(a=>me(a,d,i)),...u.implements?me(u.implements,d,i):[],...u.parent?me(u.parent,d,i):[]]}function Y5(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.GlobalEvent)throw new Error("Entity must be a global event to be flattened");return[u,...(u.inputs||[]).flatMap(a=>me(a,d,i)),...(u.calls||[]).flatMap(a=>me(a,d,i)),...u.implements?me(u.implements,d,i):[],...u.parent?me(u.parent,d,i):[]]}function z5(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.InputMap)throw new Error("Entity must be an input map to be flattened");return[u,...u.readsValue?me(u.readsValue,d,i):[],...u.declaration?me(u.declaration,d,i):[],...u.defaultValue?me(u.defaultValue,d,i):[],...u.parent?me(u.parent,d,i):[]]}function X5(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.InstalledProject)throw new Error("Entity must be an installed project to be flattened");return[u,...(u.functions||[]).flatMap(a=>me(a,d,i)),...(u.events||[]).flatMap(a=>me(a,d,i)),...u.parent?me(u.parent,d,i):[]]}function Q5(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.InternalCall)throw new Error("Entity must be an internal call to be flattened");return[u,...(u.successCalls||[]).flatMap(a=>me(a,d,i)),...(u.errorCalls||[]).flatMap(a=>me(a,d,i)),...(u.inputs||[]).flatMap(a=>me(a,d,i)),...(u.outputs||[]).flatMap(a=>me(a,d,i)),...(Us(u)||[]).flatMap(a=>me(a,d,i)),...u.error?me(u.error,d,i):[],...u.process?me(u.process,d,i):[],...u.parent?me(u.parent,d,i):[]]}function eS(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.LiteralValue)throw new Error("Entity must be a literal value to be flattened");return[u,...u.valueAsTypeSingle?me(u.valueAsTypeSingle,d,i):[],...u.valueAsTypeList&&Array.isArray(u.valueAsTypeList)?u.valueAsTypeList.flatMap(a=>me(a,d,i)):[],...u.parent?me(u.parent,d,i):[]]}function tS(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.Loop)throw new Error("Entity must be a loop to be flattened");return[u,...(u.inputs||[]).flatMap(a=>me(a,d,i)),...(u.outputs||[]).flatMap(a=>me(a,d,i)),...(u.successCalls||[]).flatMap(a=>me(a,d,i)),...(u.errorCalls||[]).flatMap(a=>me(a,d,i)),...u.error?me(u.error,d,i):[],...u.process?me(u.process,d,i):[],...u.body?me(u.body,d,i):[],...(Us(u)||[]).flatMap(a=>me(a,d,i)),...u.parent?me(u.parent,d,i):[]]}function rS(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.Operation)throw new Error("Entity must be an operation to be flattened");return[u,...(u.successCalls||[]).flatMap(a=>me(a,d,i)),...(u.errorCalls||[]).flatMap(a=>me(a,d,i)),...(u.inputs||[]).flatMap(a=>me(a,d,i)),...(u.outputs||[]).flatMap(a=>me(a,d,i)),...u.error?me(u.error,d,i):[],...u.process?me(u.process,d,i):[],...(Us(u)||[]).flatMap(a=>me(a,d,i)),...u.parent?me(u.parent,d,i):[]]}function iS(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.OutputMap)throw new Error("Entity must be an output map to be flattened");return[u,...(u.writesValues||[]).flatMap(a=>me(a,d,i)),...u.declaration?me(u.declaration,d,i):[],...u.defaultValue?me(u.defaultValue,d,i):[],...u.parent?me(u.parent,d,i):[]]}function sS(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.PrimitiveEntity)throw new Error("Entity must be a primitive entity to be flattened");return[u,...(u.properties||[]).flatMap(a=>me(a,d,i)),...(u.methods||[]).flatMap(a=>me(a,d,i)),...(u.abstractMethods||[]).flatMap(a=>me(a,d,i))]}function nS(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.Project)throw new Error("Entity must be a project to be flattened");return[u,...(u.entities||[]).flatMap(a=>me(a,d,i)),...(u.functions||[]).flatMap(a=>me(a,d,i)),...(u.events||[]).flatMap(a=>me(a,d,i)),...(u.projects||[]).flatMap(a=>me(a,d,i)),...(u.variableDeclarations||[]).flatMap(a=>me(a,d,i)),...(u.variableInstances||[]).flatMap(a=>me(a,d,i)),...(u.operations||[]).flatMap(a=>me(a,d,i)),...(u.conditions||[]).flatMap(a=>me(a,d,i)),...(u.functionCalls||[]).flatMap(a=>me(a,d,i)),...(u.projects||[]).flatMap(a=>me(a,d,i)),...(u.loops||[]).flatMap(a=>me(a,d,i)),...(u.searches||[]).flatMap(a=>me(a,d,i))]}function aS(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.Property)throw new Error("Entity must be a property to be flattened");return[u,...u.defaultValue?me(u.defaultValue,d,i):[],...u.dataType?me(u.dataType,d,i):[],...u.parent?me(u.parent,d,i):[]]}function oS(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.ReturnDeclaration)throw new Error("Entity must be a return declaration to be flattened");return[u,...u.readsValue?me(u.readsValue,d,i):[],...u.defaultValue?me(u.defaultValue,d,i):[],...u.dataType?me(u.dataType,d,i):[],...u.parent?me(u.parent,d,i):[]]}function lS(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.ReturnStatement)throw new Error("Entity must be a return statement to be flattened");return[u,...(u.outputs||[]).flatMap(a=>me(a,d,i)),...u.throws?me(u.throws,d,i):[],...(Us(u)||[]).flatMap(a=>me(a,d,i)),...u.parent?me(u.parent,d,i):[]]}function uS(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.Search)throw new Error("Entity must be a search to be flattened");return[u,...(u.successCalls||[]).flatMap(a=>me(a,d,i)),...(u.errorCalls||[]).flatMap(a=>me(a,d,i)),...(u.inputsDeclarations||[]).flatMap(a=>me(a,d,i)),...(u.inputs||[]).flatMap(a=>me(a,d,i)),...(u.outputsDeclarations||[]).flatMap(a=>me(a,d,i)),...(u.outputs||[]).flatMap(a=>me(a,d,i)),...u.error?me(u.error,d,i):[],...(Us(u)||[]).flatMap(a=>me(a,d,i)),...u.parent?me(u.parent,d,i):[]]}function dS(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.ValueDescriptor)throw new Error("Entity must be a value descriptor to be flattened");return[u,...u.defaultValue?me(u.defaultValue,d,i):[],...u.dataType?me(u.dataType,d,i):[],...u.parent?me(u.parent,d,i):[]]}function cS(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.VariableDeclaration)throw new Error("Entity must be a variable declaration to be flattened");return[u,...(u.successCalls||[]).flatMap(a=>me(a,d,i)),...(u.errorCalls||[]).flatMap(a=>me(a,d,i)),...(u.inputs||[]).flatMap(a=>me(a,d,i)),...(u.outputs||[]).flatMap(a=>me(a,d,i)),...(u.internalCalls||[]).flatMap(a=>me(a,d,i)),...(u.writesValues||[]).flatMap(a=>me(a,d,i)),...u.readsValue?me(u.readsValue,d,i):[],...u.defaultValue?me(u.defaultValue,d,i):[],...(Us(u)||[]).flatMap(a=>me(a,d,i)),...u.dataType?me(u.dataType,d,i):[],...u.parent?me(u.parent,d,i):[]]}function pS(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(d.has(u.id))return[];if(d.add(u.id),u.type!==f.VariableInstance)throw new Error("Entity must be a variable instance to be flattened");return[u,...(u.successCalls||[]).flatMap(a=>me(a,d,i)),...(u.errorCalls||[]).flatMap(a=>me(a,d,i)),...(u.inputs||[]).flatMap(a=>me(a,d,i)),...(u.outputs||[]).flatMap(a=>me(a,d,i)),...(u.internalCalls||[]).flatMap(a=>me(a,d,i)),...(u.writesValues||[]).flatMap(a=>me(a,d,i)),...u.readsValue?me(u.readsValue,d,i):[],...u.defaultValue?me(u.defaultValue,d,i):[],...(Us(u)||[]).flatMap(a=>me(a,d,i)),...u.declaration?me(u.declaration,d,i):[],...u.parent?me(u.parent,d,i):[]]}function Xs(){const u=new Set,d=m2.flatMap(i=>me(i,u)).map(i=>i.id);if(!d.includes("http-request-error-return-delaration-id"))throw new Error("Built-in base entities must be included in the list");return d}function me(u,d=new Set,i={ignoreBuiltInBaseEntities:!1}){if(!u)throw new Error("Entity must be defined to be flattened");if(u.type===f.GenericReference)return[];if(i.ignoreBuiltInBaseEntities&&(Wi.includes(u.type)||Xs().includes(u.id)))return[];if(d.has(u.id))return[];switch(u.type){case f.FunctionCall:return H5(u,d,i);case f.Operation:return rS(u,d,i);case f.Condition:return k5(u,d,i);case f.Loop:return tS(u,d,i);case f.Search:return uS(u,d,i);case f.GlobalEvent:return Y5(u,d,i);case f.ReturnStatement:return lS(u,d,i);case f.ContinueStatement:return q5(u,d,i);case f.BreakStatement:return S5(u,d,i);case f.VariableDeclaration:return cS(u,d,i);case f.DefinitionEntity:return Z5(u,d,i);case f.FunctionDeclaration:return W5(u,d,i);case f.Project:return nS(u,d,i);case f.ActionDescriptor:return F5(u,d,i);case f.ArgumentDeclaration:return G5(u,d,i);case f.ReturnDeclaration:return oS(u,d,i);case f.ValueDescriptor:return dS(u,d,i);case f.InputMap:return z5(u,d,i);case f.OutputMap:return iS(u,d,i);case f.DataType:return J5(u,d,i);case f.InstalledProject:return X5(u,d,i);case f.InternalCall:return Q5(u,d,i);case f.LiteralValue:return eS(u,d,i);case f.Property:return aS(u,d,i);case f.VariableInstance:return pS(u,d,i);case f.BuiltInBaseEntity:return i.ignoreBuiltInBaseEntities?[]:K5(u,d,i);case f.PrimitiveEntity:return i.ignoreBuiltInBaseEntities?[]:sS(u,d,i)}return[]}function Gb(u){return u.type===f.FunctionCall||u.type===f.InternalCall||[f.Operation,f.Condition,f.Loop].includes(u.type)?u.declaration.inputs:u.type===f.FunctionDeclaration||So.includes(u.type)?u.inputs:u.type===f.Search?u.inputsDeclarations:[]}function eAe(u,d){return d.type===f.Condition?d.inputs.find(i=>i.declaration.id===u.id):d.type===f.FunctionCall||d.type===f.Operation?d.inputs.find(i=>i.declaration.id===u.id):null}function fS(u){return fr.includes(u.type)?u.inputs:[]}function hS(u){var d;return u.type===f.FunctionCall?((d=u.declaration.returnStatements[0])==null?void 0:d.outputs)||[]:[f.Operation,f.Condition,f.Loop].includes(u.type)?u.declaration.outputs:u.type===f.Search?u.outputsDeclarations:Ar.includes(u.type)?u.outputs:[]}function tAe(u,d){return d.type===f.Condition?null:d.type===f.FunctionCall||d.type===f.Operation?d.outputs.find(i=>i.declaration.id===u.id):null}function rAe(u){return u.type===f.Condition?[]:fr.includes(u.type)?u.outputs:[]}function $m(u){const d=u.readsValue;return d?Er(d):null}function yS(u,d){const i=u.readsValue;return i?gm(i,d):null}function mS(u){const d=u.internalCalls||[];return R(ei(R(d.flatMap(i=>[...i.successCalls,...i.errorCalls]))))}function vS(u){const d=u.internalCalls||[];return R(R(d.flatMap(i=>[...i.successCalls,...i.errorCalls])))}function td(u){const d=Om(u),i=[];return d.forEach(a=>{if(mt.includes(a.type))i.push(a);else if(Ln.includes(a.type)){const o=Er(a.parent);i.push(o)}}),i}function rd(u){const d=Om(u),i=[];return d.forEach(a=>{if(mt.includes(a.type))i.push(a);else if(Ln.includes(a.type)){const o=a.parent;i.push(o)}}),i}function R(u){const d=new Set;return u.filter(i=>!i||d.has(i.id)?!1:(d.add(i.id),!0))}function ES(u){return u.type===f.Project?null:gg.includes(u.type)?u:Wi.includes(u.type)?null:u.parent?ES(u.parent):null}function wn(u,d=!1){const i=[];if(u.type===f.Project&&i.push(...(u==null?void 0:u.entities)||[],...(u==null?void 0:u.functions)||[],...(u==null?void 0:u.variableDeclarations)||[],...(u==null?void 0:u.variableInstances)||[],...(u==null?void 0:u.searches)||[],...(u==null?void 0:u.loops)||[],...(u==null?void 0:u.operations)||[],...(u==null?void 0:u.conditions)||[],...(u==null?void 0:u.functionCalls)||[],...(u==null?void 0:u.events)||[],...(u==null?void 0:u.projects)||[]),Mr.includes(u.type)&&i.push(...(u==null?void 0:u.detachedChildren)||[]),u.type===f.DefinitionEntity){const a=[...u.suggestedMethods,...u.methods].flatMap(o=>o.collapsed&&d?[]:wn(o));i.push(...a)}if(u.type===f.Condition){const a=u.successCalls.map(p=>Er(p)),o=u.errorCalls.map(p=>Er(p));i.push(...a,...o)}if(So.includes(u.type)){if(u.collapsed&&d)return[];const a=u.inputs.map(p=>td(p)).flat(),o=u.calls.map(p=>Er(p));i.push(...R(a),...o)}if(fr.includes(u.type)&&u.type!==f.Condition&&u.type!==f.Loop){const a=u==null?void 0:u.outputs.map(e=>td(e)).flat(),o=u.successCalls.map(e=>Er(e)),p=u.errorCalls.map(e=>Er(e));i.push(...R(a),...o,...p)}if(mt.includes(u.type)){const a=td(u),o=mS(u);i.push(...a,...o)}if(u.type===f.Loop){const a=u.outputs.map(e=>td(e)).flat();if(u.body){const e=wn(u.body,d);i.push(...e)}const o=u.errorCalls.map(e=>Er(e)),p=u.successCalls.map(e=>Er(e));i.push(...R(a),...p,...o)}if(u.type===f.FunctionDeclaration){if(u.collapsed&&d)return[];const a=u.inputs.map(p=>td(p)).flat(),o=u.calls.map(p=>Er(p));i.push(...R(a),...o)}return R(i)}function Pm(u,d=!1){const i=[];if(u.type===f.Project&&i.push(...(u==null?void 0:u.variableDeclarations)||[],...(u==null?void 0:u.variableInstances)||[],...(u==null?void 0:u.searches)||[],...(u==null?void 0:u.loops)||[],...(u==null?void 0:u.operations)||[],...(u==null?void 0:u.conditions)||[],...(u==null?void 0:u.functionCalls)||[]),Mr.includes(u.type)&&i.push(...(u==null?void 0:u.detachedChildren)||[]),u.type===f.DefinitionEntity){const a=[...u.suggestedMethods,...u.methods].flatMap(o=>o.collapsed&&d?[]:Pm(o));i.push(...a)}if(u.type===f.Condition){const a=u.successCalls,o=u.errorCalls;i.push(...a,...o)}if(So.includes(u.type)){if(u.collapsed&&d)return[];const a=u.inputs.map(p=>rd(p)).flat(),o=u.calls;i.push(...R(a),...o)}if(fr.includes(u.type)&&u.type!==f.Condition&&u.type!==f.Loop){const a=u==null?void 0:u.outputs.map(e=>rd(e)).flat(),o=u.successCalls,p=u.errorCalls;i.push(...R(a),...o,...p)}if(mt.includes(u.type)){const a=rd(u),o=vS(u);i.push(...a,...o)}if(u.type===f.Loop){const a=u.outputs.map(e=>rd(e)).flat();if(u.body){const e=Pm(u.body,d);i.push(...e)}const o=u.errorCalls,p=u.successCalls;i.push(...R(a),...p,...o)}if(u.type===f.FunctionDeclaration){if(u.collapsed&&d)return[];const a=u.inputs.map(p=>rd(p)).flat(),o=u.calls;i.push(...R(a),...o)}return R(i)}function Nm(u,d=!1){const i=wn(u,d),a=[...i,...i.reduce((o,p)=>[...o,...Nm(p,d)],[])];return R(a)}function TS(u,d=!1){const i=Pm(u,d),a=[...i,...i.reduce((o,p)=>[...o,...TS(p,d)],[])];return R(a)}function IS(u){const d=bo(u),i=[...d,...d.reduce((a,o)=>[...a,...IS(o)],[])];return R(i)}function sf(u){return u.implements.reduce((d,i)=>i.type===f.DefinitionEntity?[...d,f.DefinitionEntity,...sf(i),...nf(i)]:[...d,i.name],[])}function nf(u){return u.extends.reduce((d,i)=>i.type===f.DefinitionEntity?[...d,f.DefinitionEntity,...nf(i),...sf(i)]:[...d,i.name],[])}function Sb(u){return u.extends.reduce((d,i)=>i.type===f.DefinitionEntity?[...d,i,...Sb(i),...Kb(i)]:[...d,i],[])}function Kb(u){return u.implements.reduce((d,i)=>i.type===f.DefinitionEntity?[...d,i,...Kb(i),...Sb(i)]:[...d,i],[])}function id(u){return[...nf(u),...sf(u)].filter((i,a,o)=>o.indexOf(i)===a)}function kb(u){return u.implements.length===0&&u.extends.length===0?null:u.implements.find(a=>a.type===f.BuiltInBaseEntity&&a.name===Ue.PERSISTED_ENTITY)?u:[...u.implements,...u.extends].reduce((a,o)=>{if(o.type===f.DefinitionEntity){const p=kb(o);if(p)return p}return a},null)}function iAe(u){const d=u.extends.find(i=>i.type===f.BuiltInBaseEntity);return d&&d.type===f.BuiltInBaseEntity?d:null}function sAe(u){const d=u.implements.find(i=>i.type===f.BuiltInBaseEntity);return d&&d.type===f.BuiltInBaseEntity?d:null}function Vm(u){const d=u.extends.find(i=>i.type===f.DefinitionEntity);return d&&d.type===f.DefinitionEntity?d:null}function Mi(u){if(u.type===f.BuiltInBaseEntity)return[u];const d=[...u.implements,...u.extends].reduce((i,a)=>a.type===f.BuiltInBaseEntity?[...i,a]:a.type===f.DefinitionEntity?[...i,...Mi(a)]:i,[]);return R(d)}function af(u){return u.type===f.PrimitiveEntity?!0:u.type===f.BuiltInBaseEntity?u.interactive:!Mi(u).find(a=>!a.interactive)}function nAe(u){return u.parent===u.project&&u.project.variableDeclarations.includes(u)}function qb(u){return u.parent!==u.project?!1:f.VariableDeclaration===u.type?u.project.variableDeclarations.includes(u):f.VariableInstance===u.type?u.project.variableInstances.includes(u):f.FunctionCall===u.type?u.project.functionCalls.includes(u):f.Condition===u.type?u.project.conditions.includes(u):f.Operation===u.type?u.project.operations.includes(u):f.Loop===u.type?u.project.loops.includes(u):f.Search===u.type?u.project.searches.includes(u):!1}function AS(u){if([...Jt,f.DefinitionEntity,f.InstalledProject,f.Project].includes(u.type)||qb(u))return!1;const d=bo(u);return d.length===0?!0:d.some(i=>AS(i))}function Zb(u){return[...Jt,f.DefinitionEntity,f.InstalledProject,f.Project].includes(u.type)||qb(u)?!1:bo(u).length===0}function bS(u,d=0){if(Zb(u)){const i=bo(u);return i.length===0?u:i.map(o=>bS(o,d+1)).reduce((o,p)=>o?p&&p.x<o.x?p:o:p,null)}return null}function wS(u){const d=[];if(Zb(u))d.push(u);else return[];return bo(u).forEach(a=>{d.push(...wS(a))}),d}function Jb(u){return u.type===f.FunctionDeclaration&&u.parent!==u.project&&!![f.DefinitionEntity,f.Loop,f.InstalledProject].includes(u.parent.type)}function aAe(u,d){const i=new Map;return u.forEach(a=>{i.set(a.id,a)}),d.forEach(a=>{i.set(a.id,a)}),Array.from(i.values())}function of(u){switch(u){case f.DefinitionEntity:return ra;case f.FunctionDeclaration:return io;case f.VariableDeclaration:return uo;case f.VariableInstance:return lo;case f.FunctionCall:return Ao;case f.Operation:return so;case f.Condition:return oo;case f.ReturnStatement:return no;case f.Loop:return Si;case f.Search:return co;case f.InputMap:return Yn;case f.OutputMap:return mn;case f.ArgumentDeclaration:return Jn;case f.ReturnDeclaration:return is;case f.Property:return ta;case f.InstalledProject:return po;case f.Project:return N;case f.DataType:return vs;case f.GlobalEvent:return ao;case f.InternalCall:return fo;case f.ValueDescriptor:return vn;case f.BuiltInBaseEntity:return ia;case f.PrimitiveEntity:return ss;case f.ActionDescriptor:return wt;case f.LiteralValue:return ki;case f.ContinueStatement:return Ni;case f.BreakStatement:return ho;default:return null}}function Zi(u,d,i=null){const a=u!=null&&u.parent?J(u==null?void 0:u.parent):null;let o=a?d.get(a):null,p=i||u;if((u==null?void 0:u.id)===(d==null?void 0:d.id))return d;if(u.type===f.ReturnStatement)return Wr(u,d,p);if(u.type===f.FunctionDeclaration&&(o==null?void 0:o.type)===f.Loop)return o;if(Jt.includes(u.type))return u;if(u.type===f.Loop)return p.id===u.id?o:u;if(Wi.includes(u.type))return null;const e=u.parent;if(!e)return null;if(e.type===f.GenericReference){const y=J(e);if(!y)return null;const v=d.get(y);return v?Zi(v,d,p):null}else return e===d?d:Zi(e,d,p)}function Wr(u,d,i=null){const a=u!=null&&u.parent?J(u==null?void 0:u.parent):null;let o=a?d.get(a):null,p=i||u;if(u.type===f.FunctionDeclaration&&(o==null?void 0:o.type)===f.Loop)return Wr(o.parent,d,p);if(Jt.includes(u.type))return u;if(Wi.includes(u.type))return null;const e=u.parent;if(!e)return null;if(e.type===f.GenericReference){const y=J(e);if(!y)return null;const v=d.get(y);return v?Wr(v,d,p):null}else return e===d?d:Wr(e,d,p)}function lf(u,d){if(Wi.includes(u.type)||d.getBuiltIn(u.id))return null;const i=Ji(u.parent,d);return i?i===d?Mr.includes(u.type)?u:null:i.type===f.DefinitionEntity?u:lf(i,d):null}function Lm(u,d,i){if(u===d||d===i||u===i||!u||!d)return!1;const a=Zi(d.parent,i);return a===i?!1:a===u?!0:Lm(a,d,i)}var Mm=(u=>(u.SameBothLocal="same-both-local",u.AInB="a-in-b",u.BInA="b-in-a",u.ParallelInCommonParent="parallel-in-common-parent",u.ParallelInProject="parallel-in-project",u.AIsGlobalBIsNot="a-is-global-b-is-not",u.BIsGlobalAIsNot="b-is-global-a-is-not",u.SameBothGlobal="same-both-global",u))(Mm||{});function Qs(u,d,i){const a=Zi(u,i),o=Zi(d,i);if(!a)throw new Error("Could not find scope owner for the entity: "+u.id);if(!o)throw new Error("Could not find scope owner for the entity: "+d.id);if(a===o&&a.type!==f.Project)return{compatible:!0,type:"same-both-local",commonAncestorScope:a};if(a===o&&a.type===f.Project)return{compatible:!0,type:"same-both-global",commonAncestorScope:a};if(a.type===f.Project&&o.type!==f.Project)return{compatible:!1,type:"a-is-global-b-is-not",commonAncestorScope:a};if(a.type!==f.Project&&o.type===f.Project)return{compatible:!1,type:"b-is-global-a-is-not",commonAncestorScope:o};if(Lm(a,o,i))return{compatible:!0,type:"b-in-a",commonAncestorScope:a};if(Lm(o,a,i))return{compatible:!0,type:"a-in-b",commonAncestorScope:o};const y=Fb(a,o);return y===i?{compatible:!1,type:"parallel-in-project",commonAncestorScope:y}:y?{compatible:!1,type:"parallel-in-common-parent",commonAncestorScope:Zi(y,i)}:{compatible:!1,type:"parallel-in-project",commonAncestorScope:i}}function RS(u,d,i){const a=Qs(u,d,i);if(!a.compatible||a.type!=="same-both-local")return null;if(u===d)return u;let o=Zi(u.parent,i);if(o){if(o===d)return d;if(o.type===f.Project)return u}else return u;for(;o;){if(o){if(o===d)return d;if(o.type===f.Project)return u}else return u;o=Zi(o.parent,i)}let p=Zi(d.parent,i);if(p){if(p===u)return u;if(p.type===f.Project)return d}else return d;for(;p;){if(p){if(p===u)return u;if(p.type===f.Project)return d}else return d;p=Zi(p.parent,i)}return null}function _S(u){return u.length===0?null:u.length===1?u[0]:u.reduce((i,a)=>{const o=RS(i,a,a.project);return!o||o===a?i:a},u[0])}function Ji(u,d){if(!u)return null;let i;return typeof u=="string"?i=u:u.type===f.GenericReference?i=J(u):i=u.id,i===d.id?d:d.get(i)}function wo(u){if(!u)return null;if(Wi.includes(u.type))return u;if(u.type===f.Project)return null;if(u.project.getBuiltIn(u.id))return u;const d=u.parent;return!d||d.type===f.Project?null:wo(d)}function uf(u){const d=[];function i(p,e){return d.some(y=>y.blockedByCaller===p&&y.blockedByCalling===e)}function a(p,e){i(p,e)||d.push({blockedByCaller:p,blockedByCalling:e})}const o=lf(u,u.project);return u.calledBySuccess.forEach(p=>{[...p.successCalls||[]].forEach(v=>{Ar.includes(v.type)&&v!==u&&(Rt(u).find(A=>A===v)||a(p,v))});let y;if(fr.includes(p.type)&&(y=p),y){const v=uf(y);v.reachable||Rt(u).find(A=>A===p)||v.blocks.forEach(A=>{a(p,A.blockedByCalling)})}}),u.calledByError.forEach(p=>{[...p.errorCalls||[]].forEach(v=>{Ar.includes(v.type)&&v!==u&&(Rt(u).find(A=>A===v)||a(p,v))});let y;if(fr.includes(p.type)&&(y=p),y){const v=uf(y);v.reachable||Rt(u).find(A=>A===p)||v.blocks.forEach(A=>{a(p,A.blockedByCalling)})}}),u.calledByEntry.forEach(p=>{if([...p.calls||[]].forEach(v=>{Ar.includes(v.type)&&v!==u&&(Rt(u).find(A=>A===v)||a(p,v))}),p===o)return;let y;if(p.type===f.FunctionDeclaration){const v=Er(p);if(v.type===f.DefinitionEntity)return;v.type===f.Loop&&(y=v)}if(y){const v=uf(y);v.reachable||v.blocks.forEach(E=>{a(p,E.blockedByCalling)})}}),{reachable:d.length===0,entryPoint:o,blocks:d}}function oAe(u){return nh.includes(u.type)?u.type===f.FunctionDeclaration?!Jb(u):!0:!1}function lAe(u){if(f.ActionDescriptor===u.type){if(u.project.operationDeclarations.find(p=>p.id===u.id))return f.Operation;if(u.project.globalEventActionDescriptors.find(p=>p.id===u.id))return f.GlobalEvent;if(u.project.loopDeclarations.find(p=>p.id===u.id))return f.Loop;if(u.project.conditionDeclarations.find(p=>p.id===u.id))return f.Condition}return u.type}function Bm(u,d){return u.type===f.BuiltInBaseEntity?u.name===d:!!nf(u).includes(d)}function uAe(u,d){return u.type===f.BuiltInBaseEntity?u.name===d:!!sf(u).includes(d)}function As(u,d){return u.type===f.BuiltInBaseEntity?u.name===d:!!id(u).includes(d)}function dAe(u){const d=[];return u.entities.forEach(i=>{if(Bm(i,Ue.PERSISTED_ENTITY)){d.push(i);return}}),R(d)}function cAe(u){const d=[];return u.entities.forEach(i=>{if(Bm(i,Ue.RELATIONAL_DATABASE)){d.push(i);return}}),R(d)}function pAe(u){return u.type!==f.DefinitionEntity||u.abstract||!Bm(u,Ue.PERSISTED_ENTITY)?null:(u==null?void 0:u.properties.find(i=>{var a;return((a=i.implements)==null?void 0:a.id)===Ee[f.BuiltInBaseEntity][Ue.PERSISTED_ENTITY].properties.primaryKey.id&&!i.abstract}))||null}function gS(u){var a;const d=kb(u);if(!d)return null;const i=d.properties.find(o=>{var p;return((p=o.implements)==null?void 0:p.id)===Ee[f.BuiltInBaseEntity][Ue.PERSISTED_ENTITY].properties.database.id});return i?(a=i.getDefaultValue())==null?void 0:a.valueAsType:null}function sd(u){if(u.type!==f.DefinitionEntity)return[];if(u.abstract)return[];if(!As(u,Ue.PERSISTED_ENTITY))return[];const d=[],i=u.properties.filter(a=>{var o;return((o=a.implements)==null?void 0:o.id)!==Ee[f.BuiltInBaseEntity][Ue.PERSISTED_ENTITY].properties.database.id&&!a.abstract});return d.push(...i),d}function fAe(u){var i;if(!u||u.type!==f.DefinitionEntity||!As(u,Ue.PERSISTED_ENTITY))return null;const d=u.properties.find(a=>{var o;return((o=a.implements)==null?void 0:o.id)===Ee[f.BuiltInBaseEntity][Ue.PERSISTED_ENTITY].properties.database.id});return(i=d==null?void 0:d.getDefaultValue())==null?void 0:i.valueAsTypeSingle}function Fr(u,d){var a;if(!Cg.includes(d.type)||!u)return d.project||null;let i=d.project;return u.type===f.Project?i=u:((a=d.project)==null?void 0:a.id)!==u.project.id&&(i=u.project),i}function hAe(u){switch(u){case f.Project:return N;case f.InstalledProject:return po;case f.DefinitionEntity:return ra;case f.FunctionDeclaration:return io;case f.GlobalEvent:return ao;case f.VariableInstance:return lo;case f.VariableDeclaration:return uo;case f.InputMap:return Yn;case f.OutputMap:return mn;case f.Condition:return oo;case f.Operation:return so;case f.FunctionCall:return Ao;case f.ReturnDeclaration:return is;case f.ArgumentDeclaration:return Jn;case f.PrimitiveEntity:return ss;case f.DataType:return vs;case f.Property:return ta;case f.ActionDescriptor:return wt;case f.ReturnStatement:return no;case f.ContinueStatement:return Ni;case f.BreakStatement:return ho;case f.Loop:return Si;case f.Search:return co;case f.ValueDescriptor:return vn;case f.InternalCall:return fo;case f.LiteralValue:return ki}return null}function yAe(u){const d={added:{},updated:{},removed:{},affected:[],seenEntities:[],self:u==null?void 0:u.self};return u==null||u.added.forEach(i=>{d.added[i.id]=i}),u==null||u.updated.forEach(i=>{d.updated[i.id]=i}),u==null||u.removed.forEach(i=>{d.removed[i.id]=i}),d.affected=Array.from(new Set(u==null?void 0:u.affected.map(i=>i.id))),d}function Ur(u,d){const i=of(u.type);return i?!i.MUTABLE_META_PROPERTIES.every(o=>{const p=u[o],e=d[o];return e===void 0||p===e?!0:Array.isArray(p)&&Array.isArray(e)?p.length!==e.length?!1:p.every((y,v)=>y===e[v]):!1}):!1}function Um(u,d={}){if(u.type===f.Project)return[];if(!u.parent)return[];const i=J(u.parent);if(!i)return[];const a=d[i];return a?[a.id,...Um(a,d)]:[]}function mAe(u){const d=[],i=new Set;return[...u.listAdded,...u.listUpdated,...u.listAffected].forEach(a=>{const o=Er(a);!o||i.has(o.id)||(i.add(o.id),d.push(o))}),R(d)}function vAe(u){if(u.type===f.Condition)return null;if(u.type===f.Search)return u.project.getBuiltIn(Ee["value-descriptor"][eu.SearchErrorOutputDescriptor].id)||null;if(u.type===f.Operation)return u.declaration.error;if(u.type===f.FunctionCall){const i=u.declaration.returnStatements.find(a=>!!a.throws);return(i==null?void 0:i.throws)||null}return null}function DS(u){const d=u.entities.filter(o=>!!o.implements.find(p=>p.id===Ee["built-in-base-entity"].BUILT_IN_RELATIONAL_DATABASE_ENTITY.id)),i=d.find(o=>{const p=o.properties.find(v=>v.implements&&v.implements.id===Ee["built-in-base-entity"].BUILT_IN_RELATIONAL_DATABASE_ENTITY.properties.default.id),e=p==null?void 0:p.getDefaultValue();return(e==null?void 0:e.value)===!0});return i||d[0]||null}function Hb(u,d){const i=Array.from(new Set([...d.getAllBuiltInIds(),...Xs()]));return!!(i.includes(u.id)||!Um(u,{...d.instances,...d.builtInInstances}).every(p=>!i.includes(p)))}function OS(u){if(!u)return null;if(u.type===f.Project)return u.id;const d=u.parent;return d?OS(d):u.id}function df(u){if(u.declaration&&u.declaration.type===f.Property){if(u.declaration.interactive){if(u.declaration.implements&&!u.declaration.implements.interactive)return!1;if(u.declaration.extends&&!u.declaration.extends.interactive)return!1}else return!1;if(u.declaration.private){const d=Er(u),i=lf(d,u.project);if((i==null?void 0:i.type)===f.FunctionDeclaration&&(i==null?void 0:i.parent.type)===f.DefinitionEntity&&(i==null?void 0:i.parent.id)!==u.declaration.parent.id)return!1}}return!0}function Wb(u){if(u.interactive){if(u.implements&&!u.implements.interactive)return!1;if(u.extends&&!u.extends.interactive)return!1}else return!1;if(u.private){const d=Er(u),i=lf(d,u.project);if((i==null?void 0:i.type)===f.FunctionDeclaration&&(i==null?void 0:i.parent.type)===f.DefinitionEntity&&(i==null?void 0:i.parent.id)!==u.parent.id)return!1}return!0}function EAe(u,d,i){const a=d,o=i,p=!!i,e=[];return a.forEach(y=>{var v;if(p){const E=Qs(o,y,u);if(!E.compatible&&E.type!=="b-is-global-a-is-not")return;e.push(y)}else{if(((v=y.parent)==null?void 0:v.type)!==f.Project)return;e.push(y)}}),R(e)}function jm(u){return u.replace(/["'`]/g,"")}function jr(u){const i=jm(u).split(/[\s-]+/).filter(e=>e.length>0);if(i.length===0)return"";const a=i[0],o=a[0].toLowerCase()+a.slice(1),p=i.slice(1).map(e=>e[0].toUpperCase()+e.slice(1));return[o,...p].join("")}function nd(u){return jm(u).split(/[\s-]+/).filter(a=>a.length>0).map(a=>a[0].toUpperCase()+a.slice(1)).join("")}function CS(u){const d=jm(u).trim();if(!d)return"";const i=d.replace(/[\s_-]+/g," ").split(" ").filter(Boolean),a=[];for(const o of i){let p=o;p=p.replace(/([A-Z]+)([A-Z][a-z]+)/g,"$1-$2"),p=p.replace(/([a-z0-9])([A-Z][a-z0-9]*)/g,"$1-$2"),p=p.replace(/([0-9])([a-zA-Z]+)/g,"$1-$2"),p=p.replace(/([a-zA-Z])([0-9])/g,"$1-$2");for(const e of p.split("-"))e&&a.push(e)}return a.join("-")}function TAe(u){const d=jm(u).trim();if(!d)return"";const i=d.replace(/[\s_-]+/g," ").split(" ").filter(Boolean),a=[];for(const o of i){let p=o;p=p.replace(/([A-Z]+)([A-Z][a-z]+)/g,"$1_$2"),p=p.replace(/([a-z0-9])([A-Z][a-z0-9]*)/g,"$1_$2"),p=p.replace(/([0-9])([a-zA-Z]+)/g,"$1_$2"),p=p.replace(/([a-zA-Z])([0-9])/g,"$1_$2");for(const e of p.split("_"))e&&a.push(e)}return a.join("_")}function xm(u){return CS(u).toLowerCase()}function ad(u){var i,a,o,p;if(!u)return"Any data type";let d="";if(u.interactiveEntities===!1?d+=` but only definition nodes ${u.asType?"as template ":""}that don't include non-interactive built-in functionality`:u.interactiveEntities===!0&&(d+=` but only definition nodes ${u.asType?"as template ":""}that extend or implement interactive built-in functionality`),u.staticEntities===!1?d?d+=" and that aren't a single global copy instance":d+=` but only definition nodes ${u.asType?"as template ":""}that aren't a single global copy instance`:u.staticEntities===!0&&(d?d+=" and that are a single global copy instance":d+=` but only definition nodes ${u.asType?"as template ":""}that are a single global copy instance`),u.actionEntities===!1?d?d+=" excluding executable/action nodes":d+=` excluding executable/action nodes ${u.asType?"templates ":""}`:u.actionEntities===!0&&(d?d+=" and not executable/action nodes":d+=" but not executable/action nodes"),u.entity&&(d=""),u.asType&&!d&&!((i=u.andChildrenGroup)!=null&&i.length)&&!((a=u.orChildrenGroup)!=null&&a.length)&&(d=" as template"),!u.entity){const e=u.isList;if(!((o=u.andChildrenGroup)!=null&&o.length)&&!((p=u.orChildrenGroup)!=null&&p.length))return e?`List of an any data type${d}`:`Any data type${d}`;let y="",v=!1,E=!1;return(u.andChildrenGroup||[]).forEach(w=>{const A=ad(w),$=Du(A);v&&(y+=" and "),w.isGroup?y+="("+$+")":v?y+=$:y+=A,v=!0,E=!0}),(u.orChildrenGroup||[]).forEach(w=>{const A=ad(w),$=Du(A);v&&(E&&(y+=","),y+=" or "),w.isGroup?y+="("+$+")":v?y+=$:y+=A,v=!0}),e?`List of ${Du(y)}`:y}if(u.entity.type===f.PrimitiveEntity){let e=u.entity.name;switch(u.entity.name){case Q.String:e="Text";break;case Q.KeyValue:e="Data structure";break}return u.isList?`List of ${e}s${d}`:`${e.slice(0,1).toUpperCase()}${e.slice(1)}${d}`}else if(u.entity.type===f.DefinitionEntity){const e=ne(u.entity,u.project);return u.isList?`List of ${e} values${d}`:e.slice(0,1).toUpperCase()+e.slice(1)+d}else if(u.entity.type===f.BuiltInBaseEntity){const e=PS(u.entity);return u.isList?`List of ${e} values${d}`:e.slice(0,1).toUpperCase()+e.slice(1)+d}else if(u.entity.type===f.LiteralValue){if(u.entity.name===Q.Null)return"Empty value";if(u.entity.name===Q.Untyped)return"Untyped value";if(u.entity.name===Q.File)return"File";if(u.entity.name===Q.String)return`"${u.entity.value}" text`;if(u.entity.name===Q.Number)return`Number '${u.entity.value}'`;if(u.entity.name===Q.Boolean)return`${u.entity.value} value`;if(u.entity.name===Q.UUID)return`"${u.entity.value}" unique identifier`;if(u.entity.name===Q.Date)return`"${u.entity.value}" date`}return u.isList?`List of ${ne(u.entity,u.project)} values${d}`:`${ne(u.entity,u.project).slice(0,1).toUpperCase()+ne(u.entity,u.project).slice(1)} value${d}`}function IAe(u){if(!u)return"Any data type";const d=u.getDataType(null);return ad(d)}function Fm(u){switch(u.declaration.id){case _r.Equal:return"is equal to";case _r.NotEqual:return"is not equal to";case _r.MoreThan:return"is greater than";case _r.MoreThanOrEqual:return"is greater than or equal to";case _r.LessThan:return"is less than";case _r.LessThanOrEqual:return"is less than or equal to";case _r.And:return"and";case _r.Or:return"or";case zr.Empty:return"is empty";case zr.NotEmpty:return"is present"}}function $S(u){return u.includes(Ue.HTTP_ENDPOINT)?"HTTP endpoint":u.includes(Ue.PERSISTED_ENTITY)?"Persisted entity":u.includes(Ue.CRON_JOB)?"Scheduled execution":u.includes(Ue.RELATIONAL_DATABASE)?"Relational database":"Entity"}function PS(u){switch(u.name){case Ue.HTTP_ENDPOINT:return"HTTP endpoint";case Ue.PERSISTED_ENTITY:return"Persisted entity";case Ue.CRON_JOB:return"Scheduled execution";case Ue.RELATIONAL_DATABASE:return"Relational database"}return"Entity"}function AAe(u){const d=Vm(u);if(!d){const i=id(u);return i.includes(Ue.HTTP_ENDPOINT)?"HTTP endpoint":i.includes(Ue.PERSISTED_ENTITY)?"Persisted entity":i.includes(Ue.CRON_JOB)?"Scheduled execution":i.includes(Ue.RELATIONAL_DATABASE)?"Relational database":ne(u,u.project)+" entity"}return ne(d,u.project)+" entity"}function NS(u){let d="Find ";return u.outputsDeclarations.forEach((i,a)=>{const o=Sy(i,null),p=Du(o&&o.entity?ne(o.entity,u.project):"unstructured data");a===0?d+=`${p} `:a===u.outputsDeclarations.length-1?d+=`and ${p} `:d+=`, ${p} `}),d}function VS(u){switch(u.name){case Q.String:return"Text";case Q.Number:return"Number";case Q.Boolean:return"Boolean";case Q.KeyValue:return"Data structure";case Q.UUID:return"Unique identifier";case Q.Date:return"Date";case Q.EntityTemplate:return"Entity as template";case Q.Enum:return"Enumeration";case Q.File:return"File";case Q.Null:return"Empty";case Q.ActionDescriptor:return"Action descriptor";case Q.Untyped:return"Untyped";default:return u.name}}function LS(u){switch(u.id){case ze.List:return"Loop over list items";case ze.ManualFlow:return"Manual flow control loop";case ze.ObjectKeys:return"Loop over object keys";case ze.ObjectValues:return"Loop over object values";case ze.Counted:return"Loop given number of times";case ze.String:return"Loop over text characters";case Zt.Addition:return"Sum numbers";case Zt.Subtraction:return"Subtract numbers";case Zt.Multiplication:return"Multiply numbers";case Zt.Division:return"Divide numbers";case Zt.Remainder:return"Get remainder of numbers";case Zt.Exponentiation:return"Get exponent of numbers";case Se.AddIndex:return"Add at index position";case Se.DeleteFirst:return"Delete first character";case Se.DeleteLast:return"Delete last character";case Se.DeleteIndex:return"Delete at index position";case Se.Join:return"Join texts";case Se.ReplaceAllMatches:return"Replace all matches";case Se.ReplaceFirst:return"Replace first match";case Se.ReplaceLast:return"Replace last match";case Se.Split:return"Split text";case Se.ReplaceIndex:return"Replace at index position";case Se.ReplaceSingleMatch:return"Replace single match";case Se.GetFirst:return"Get first character";case Se.GetLast:return"Get last character";case Se.GetIndexItem:return"Get at index position";case Se.GetIndexOf:return"Get the index number of the character";case Se.Append:return"Add at the end";case Se.Prepend:return"Add at the start";case rr.Wait:return"Wait";case rr.Parallel:return"Run in parallel";case rr.Sequential:return"Run in sequence";case mi.HttpRequest:return"HTTP request";case pr.CreateNewInstance:return"Create new copy of entity";case Je.AddIndex:return"Add item at index position";case Je.DeleteFirst:return"Delete first item";case Je.DeleteLast:return"Delete last item";case Je.DeleteIndex:return"Delete item at index position";case Je.Join:return"Join lists";case Je.ReplaceFirst:return"Replace first match";case Je.ReplaceLast:return"Replace last match";case Je.Split:return"Split list";case Je.ReplaceIndex:return"Replace at index position";case Je.GetFirst:return"Get first item";case Je.GetLast:return"Get last item";case Je.GetIndexItem:return"Get item at index position";case Je.Append:return"Add item at the end";case Je.Prepend:return"Add item at the start";case Ia.PROJECT_PUBLICATION_COMPLETED:return"Project publication completed";default:return(u.name.slice(0,1).toUpperCase()+u.name.slice(1)).replaceAll("-"," ")}}function ne(u,d){var i;if(f.FunctionDeclaration===u.type){const a=u.name;if(Object.values(Hi).includes(a))switch(a){case Hi.AbortExecution:return"Abort ongoing execution";case Hi.DeletePersistedEntity:return"Delete entry from database";case Hi.SavePersistedEntity:return"Save entity data to database";default:return Ii(u.type).replaceAll("-"," ")}return a}if(f.BuiltInBaseEntity===u.type)return $S([u.name]);if(Dg.includes(u.type)&&u.type!==f.ActionDescriptor)return u.name;switch(u.type){case f.Search:return NS(u);case f.GlobalEvent:return u.implements?ne(u.implements,d):Ii(u.type).replaceAll("-"," ");case f.Operation:case f.InternalCall:case f.Loop:const a=Ji(u.declaration,d);return a||Me.log("Loop without declaration: ",u),ne(a,d);case f.ActionDescriptor:return LS(u);case f.BreakStatement:const o=Ji(u.parent,d);return o||Me.log("Break without parent: ",u),`Stop loop ${ne(o,d)}`;case f.ContinueStatement:const p=Ji(u.parent,d);return p||Me.log("continue without parent: ",u),`Execute next iteration of ${ne(p,d)}`;case f.FunctionCall:return Ji(u.declaration,d).name;case f.Condition:{const y=u;if((i=u.inputs)!=null&&i.length){y.inputs[0]||Me.log("condition without input: ",u);const v=ne(y.inputs[0],y.project);if(y.inputs[1]){const E=y.inputs[1].declaration.name;return`If ${v} ${Fm(y)} ${E}`}return`If ${v} ${Fm(y)}`}else return`If ${Fm(y)}`}case f.ReturnStatement:{const y=Ji(u.parent,d);return y?`Output of ${ne(y,d)}`:"Return statement"}case f.InputMap:if(u.declaration){const y=Ji(u.declaration,d);return y||(Me.log("Input without declaration: ",u),Me.log("Og declaration: ",u.declaration)),ne(y,d)||""}else return u.name||"";case f.VariableInstance:{const y=Ji(u.declaration,d);return y||Me.log("Var without declaration: ",u),ne(y,d)||""}case f.OutputMap:if(u.declaration){const y=Ji(u.declaration,d);return(y==null?void 0:y.name)||""}else return"";case f.PrimitiveEntity:case f.LiteralValue:return VS(u);default:return Ii(u.type).replaceAll("-"," ")}}function Yb(u,d){const i=[];u.name||i.push(new ee({id:`${u.id}--${ae.EmptyName}`,message:`Entity with id "${u.id}" and type "${u.type}" has an empty name. Please provide a 'name' string.`,severity:q.Error,code:ae.EmptyName,issue:null}));const a=d.entities.filter(o=>o.name===u.name);return a.length&&i.push(new ee({id:`${u.id}--${ae.NameNotUniqueInScope}`,message:`Entity with id "${u.id}" and type "${u.type}" has a name "${u.name}" that is not unique in the project. Entity with id "${a[0].id}" has the same name.
397
397
  Please provide a unique 'name' string.`,severity:q.Error,code:ae.NameNotUniqueInScope,issue:null})),i}function zb(u,d){const i=[];u.name||i.push(new ee({id:`${u.id}--${ae.EmptyName}`,message:`Entity with id "${u.id}" and type "${u.type}" has an empty name. Please provide a 'name' string.`,severity:q.Error,code:ae.EmptyName,issue:null}));const a=u.parent?J(u.parent):null;let o=d;a&&(o=d.get(a));const p=[];o.type===f.DefinitionEntity?p.push(...o.methods.map(y=>y)):o.type===f.Project?p.push(...o.functions.map(y=>y)):o.type===f.Loop?o.body&&p.push(o.body):o.type===f.InstalledProject&&p.push(...o.functions.map(y=>y));const e=p.filter(y=>y.name===u.name);return e.length&&i.push(new ee({id:`${u.id}--${ae.NameNotUniqueInScope}`,message:`Entity with id "${u.id}" and type "${u.type}" has a name "${u.name}" that is not unique in ${o.type===f.Project?"the globally declared project scope":"its parent entity"}. Entity with id "${e[0].id}" has the same name.
398
398
  Please provide a unique 'name' string.`,severity:q.Error,code:ae.NameNotUniqueInScope,issue:null})),i}function Xb(u,d){const i=[];u.name||i.push(new ee({id:`${u.id}--${ae.EmptyName}`,message:`Entity with id "${u.id}" and type "${u.type}" has an empty name. Please provide a 'name' string.`,severity:q.Error,code:ae.EmptyName,issue:null}));const a=u.parent&&Ji(u.parent,d)||d;if(!a)i.push(new ee({id:`${u.id}--parent-reference--${k.ReferencedEntityNotFound}`,message:`The entity with id '${u.parent}' that isn't yet found in the project. Perhaps it should be created first. Or perhaps the ID is incorrect.`,severity:q.Error,code:k.ReferencedEntityNotFound,issue:null}));else{const p=MA(a).filter(e=>e.name===u.name);p.length&&i.push(new ee({id:`${u.id}--${ae.NameNotUniqueInScope}`,message:`Entity with id "${u.id}" and type "${u.type}" has a name "${u.name}" that is not unique in its scope or higher scopes. Entity with id "${p[0].id}" has the same name.
399
399
  Please provide a unique 'name' string.`,severity:q.Error,code:ae.NameNotUniqueInScope,issue:null}))}return i}function Qb(u,d){const i=[];u.name||i.push(new ee({id:`${u.id}--${ae.EmptyName}`,message:`Entity with id "${u.id}" and type "${u.type}" has an empty name. Please provide a 'name' string.`,severity:q.Error,code:ae.EmptyName,issue:null}));const a=J(u.parent);if(!a)i.push(new ee({id:`${u.id}--parent-reference--${k.InvalidReferenceObjectStructure}`,message:`Reference object at 'parent' property for entity with id "${u.id}" and type "${u.type}" is not a valid reference. A reference needs to be a 'id' string of an existing entity in the project.`,severity:q.Error,code:k.InvalidReferenceObjectStructure,issue:null}));else{const o=d.get(a);if(!o)i.push(new ee({id:`${u.id}--parent-reference--${k.ReferencedEntityNotFound}`,message:`The entity with id '${a}' that isn't yet found in the project. Perhaps it should be created first. Or perhaps the ID is incorrect.`,severity:q.Error,code:k.ReferencedEntityNotFound,issue:null}));else{const e=o.properties.filter(y=>y.name===u.name);e.length&&i.push(new ee({id:`${u.id}--${ae.NameNotUniqueInScope}`,message:`Entity with id "${u.id}" and type "${u.type}" has a name "${u.name}" that is not unique among all properties in the parent entity. Entity with id "${e[0].id}" has the same name.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elyx-code/project-logic-tree",
3
- "version": "0.0.6418",
3
+ "version": "0.0.6419",
4
4
  "author": "Sergio Herrero",
5
5
  "license": "UNLICENSED",
6
6
  "description": "An installable module which contains the type definitions and ephemeral state management for a projects' logic tree data structure",