@elyx-code/project-logic-tree 0.0.6934 → 0.0.6935
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.cjs +6 -6
- package/dist/index.js +6 -12
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -40,7 +40,7 @@ If an entity is called by another, they must be in the same scope, which means t
|
|
|
40
40
|
You shouldn't have to manually update a 'parent' property. The equivalent result is to change its callers, the value writers of its inputs, or the value readers of its outputs.`})),{errors:r,explanations:a,modifiedData:i}}subscribeDependents(i){return i.forEach(r=>{this.detachedDependents[r.entity.id]||(this.detachedDependents[r.entity.id]=r)}),this}unsubscribeDependents(i){return i.forEach(r=>{this.detachedDependents[r.entity.id]&&delete this.detachedDependents[r.entity.id]}),this}syncDependents(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"sync-dependents"))){const r=[],a=[],c=[],e=[];return Object.values(this.detachedDependents).forEach(f=>{const h=f.entity.afterAllChildrenInitialized(i);r.push(...h.updated),a.push(...h.added),c.push(...h.removed),e.push(...h.affected)}),i==null||i.attemptAutoclose("sync-dependents",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}onDetachedDependencyRemoved(i,r,a){const c=[],e=[],f=[],h=[];if(r==="parent"){const{updated:m,added:E,removed:b}=this.remove({ignoreUpstream:!1},a);c.push(...m),e.push(...E),f.push(...b)}return{updated:C(c),added:C(e),removed:C(f),affected:C(h),self:this}}onDetachedDependencyRestored(i,r,a){const c=[],e=[],f=[],h=[];if(r==="parent"){const{updated:m,added:E,removed:b}=this.restore({},a);c.push(...m),e.push(...E),f.push(...b)}return{updated:C(c),added:C(e),removed:C(f),affected:C(h),self:this}}unsubscribeFromDependencies(){var i;return(i=this.parent)==null||i.unsubscribeDependents([{entity:this,field:"parent"}]),this}subscribeToDependencies(){var i;return(i=this.parent)==null||i.subscribeDependents([{entity:this,field:"parent"}]),this}increaseVersion(i){var r;if(this.project.diggestedBuiltInBaseEntitiesIds.has(this.id))return this;if(i&&!B(i).isValid())throw new Error(`The shared timestamp '${i}' is not a valid ISO 8601 date string.`);if(i&&B(i).isSame(B(this.createdAt)))return this;if(!((r=this.knownVersions)!=null&&r.has(this.version))&&this.project.initialized)throw new Error(`The current ${this.type} ${this.id} version '${this.version}' is not captured in the 'knownVersions' map. Capture the current version before increasing it to avoid losing data.`);if(!this.activeVersion)throw new Error(`Only active versions can be increased. Entity with id '${this.id}' and version '${this.version}' is not active.`);return this.previousVersion=this.version,this.version=x.UUID.uuid(),this.createdAt=B(i).toISOString()||B().toISOString(),this}captureVersion(){var r;const i=((r=this.knownVersions)==null?void 0:r.get(this.version))||new gi(this,this.project);if(!this.activeVersion)throw new Error(`Only active versions can be captured. Entity of type ${this.type} with id '${this.id}' and version '${this.version}' is not active.`);if(this.version!==i.version)throw new Error(`Captured ${this.type} with id '${this.id}', version '${i.version}' does not match current entity version '${this.version}'.`);return this.knownVersions=this.knownVersions?this.knownVersions.set(this.version,i):new Map().set(this.version,i),this.apply(i),this}snapshot(){const i=new gi(this,this.project);return this.apply(i)}apply(i){const r=this.toMeta();return i.metaSync(r,null),i.inputs=[...this.inputs],i.outputs=[...this.outputs],i.error=this.error,i.successCalls=[...this.successCalls],i.errorCalls=[...this.errorCalls],i.calledBySuccess=[...this.calledBySuccess],i.calledByError=[...this.calledByError],i.calledByEntry=[...this.calledByEntry],i.writesValues=[...this.writesValues],i.declaration=this.declaration,i.parent=this.parent,i}recursiveCaptureUpstreamVersions(i){const r=[],a=[],c=[],e=[];if(this.parent){this.parent.increaseVersion(i);const f=this.parent.recursiveCaptureUpstreamVersions(i);r.push(this.parent,...f.updated),a.push(...f.added),c.push(...f.removed)}return{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}async restoreVersion(i,r){var m;const a=[],c=[],e=[],f=[];if(this.version===i&&(r!=null&&r.skipIfSameVersion))return{updated:C(a),added:C(c),removed:C(e),affected:C(f),self:this};if(!this.knownVersions){const E=new Map;for(const[b,A]of this.knownVersions||new Map){if(E.set(b,A),A.activeVersion=!1,A.knownVersions)for(const[_,P]of A.knownVersions)E.set(_,P);A.knownVersions=null}}let h=(m=this.knownVersions)==null?void 0:m.get(i);if(!h){const E=await this.APILoadVersion({},i);if(!E)throw new Error(`Version with id '${i}' for entity with id '${this.id}' not found.`);h=new gi(E,this.project)}return this.metaSync(h.toShallowJSON(),null),this.previousVersion=h.previousVersion,this.version=h.version,this.createdAt=h.createdAt,this.author=h.author,this.deleted=h.deleted,this.inputs=[...h.inputs],this.outputs=[...h.outputs],this.error=h.error,this.successCalls=[...h.successCalls],this.errorCalls=[...h.errorCalls],this.calledBySuccess=[...h.calledBySuccess],this.calledByError=[...h.calledByError],this.calledByEntry=[...h.calledByEntry],this.writesValues=[...h.writesValues],this.declaration=h.declaration,this.parent=h.parent,{updated:C(a),added:C(c),removed:C(e),affected:C(f),self:this}}updateWithShallowTransfer(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.UpdateWithShallowTransfer))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[updateWithShallowTransfer] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),this;if(this.metaSync(i,r),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 a=te(i.parent),c=this.project.get(a),e=this.parent;if(e&&e.id!==(c==null?void 0:c.id)&&this.removeFromParent(r),c)this.setParent(c,r),this.addSelfToProject(r);else throw r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),new Error(`${this.type} with id '${this.id}' has a 'parent' reference '${a}' that isn't found in the project`)}else throw r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),new Error(`${this.type} with id '${this.id}' must have a 'parent'`);if(i.declaration){const a=te(i.declaration),c=this.project.get(a);c&&this.setDeclaration(c)}return i.calledByEntry.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addEntryCaller(e,r),e.addCall(this,r))}),[...this.calledByEntry].forEach(a=>{i.calledByEntry.find(e=>te(e)===a.id)||(this.removeCaller(a,r),a.removeCall(this,r))}),i.calledBySuccess.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addSuccessCaller(e,r),e.addSuccessCall(this,r))}),[...this.calledBySuccess].forEach(a=>{i.calledBySuccess.find(e=>te(e)===a.id)||(this.removeCaller(a,r),a.removeCall(this,r))}),i.calledByError.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addErrorCaller(e,r),e.addErrorCall(this,r))}),[...this.calledByError].forEach(a=>{i.calledByError.find(e=>te(e)===a.id)||(this.removeCaller(a,r),a.removeCall(this,r))}),i.outputs.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addOutput(e,r),e.setParent(this,r))}),[...this.outputs].forEach(a=>{i.outputs.find(e=>te(e)===a.id)||(this.removeOutput(a,r),a.removeFromParent(r))}),i.inputs.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addInput(e,r),e.setParent(this,r))}),[...this.inputs].forEach(a=>{i.inputs.find(e=>te(e)===a.id)||(this.removeInput(a,r),a.removeFromParent(r))}),i.writesValues.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addValueReader(e,r),e.setValueWriter(this,r))}),[...this.writesValues].forEach(a=>{i.writesValues.find(e=>te(e)===a.id)||(this.removeValueReader(a,r),a.setValueWriter(null,r))}),this.captureVersion(),this.subscribeToDependencies(),r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),this}updateWithGenerationTarget(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.UpdateWithGenerationTarget))){var a,c,e;if(!this.checkCanEdit(this,r))return z.Logger.warn(`[updateWithGenerationTarget] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),this;if(this.metaSync(i,r),i.parent){const f=te(i.parent),h=this.project.get(f),m=this.parent;if(m&&m.id!==(h==null?void 0:h.id)&&this.removeFromParent(r),h)this.setParent(h,r),this.addSelfToProject(r);else throw r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),new Error(`${this.type} with id '${this.id}' has a 'parent' reference '${f}' that isn't found in the project`)}if(i.declaration){const f=te(i.declaration),h=this.project.get(f);if(h)this.setDeclaration(h);else throw new Error(`${this.type} with id '${this.id}' has a 'declaration' reference '${f}' that isn't found in the project`)}return(a=i.calledByEntry)==null||a.forEach(f=>{const h=te(f),m=this.project.get(h);if(m)this.addEntryCaller(m,r),m.addCall(this,r);else throw new Error(`${this.type} with id '${this.id}' has a 'calledByEntry' reference '${h}' that isn't found in the project`)}),i.calledByEntry&&[...this.calledByEntry].forEach(f=>{var m;((m=i.calledByEntry)==null?void 0:m.find(E=>te(E)===f.id))||(this.removeCaller(f,r),f.removeCall(this,r))}),(c=i.calledBySuccess)==null||c.forEach(f=>{const h=te(f),m=this.project.get(h);if(m)this.addSuccessCaller(m,r),m.addSuccessCall(this,r);else throw new Error(`${this.type} with id '${this.id}' has a 'calledBySuccess' reference '${h}' that isn't found in the project`)}),i.calledBySuccess&&[...this.calledBySuccess].forEach(f=>{var m;((m=i.calledBySuccess)==null?void 0:m.find(E=>te(E)===f.id))||(this.removeCaller(f,r),f.removeCall(this,r))}),(e=i.calledByError)==null||e.forEach(f=>{const h=te(f),m=this.project.get(h);if(m)this.addErrorCaller(m,r),m.addErrorCall(this,r);else throw new Error(`${this.type} with id '${this.id}' has a 'calledByError' reference '${h}' that isn't found in the project`)}),i.calledByError&&[...this.calledByError].forEach(f=>{var m;((m=i.calledByError)==null?void 0:m.find(E=>te(E)===f.id))||(this.removeCaller(f,r),f.removeCall(this,r))}),this.captureVersion(),this.subscribeToDependencies(),r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),this}hydrateAncestors(){const i=[],r=[],a=[],c=[];if(this.initialData.parent){const e=te(this.initialData.parent),f=this.project.get(e);if(f)this.setParent(f,null),i.push(f);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=te(this.initialData.declaration),f=this.project.get(e);f&&(this.setDeclaration(f),i.push(f))}return this.initialData.calledByEntry.forEach(e=>{const f=te(e),h=this.project.get(f);h&&this.addEntryCaller(h,null)}),this.initialData.calledBySuccess.forEach(e=>{const f=te(e),h=this.project.get(f);h&&this.addSuccessCaller(h,null)}),this.initialData.calledByError.forEach(e=>{const f=te(e),h=this.project.get(f);h&&this.addErrorCaller(h,null)}),{updated:C(i),added:C(r),removed:C(a),affected:C(c),self:this}}afterAllChildrenInitialized(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AfterAllChildrenInitialized))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[afterAllChildrenInitialized] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.AfterAllChildrenInitialized,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];this.initialized=!0;const{updated:f,added:h,removed:m}=this.syncInputs(i),{updated:E,added:b,removed:A}=this.syncOutputs(i),{updated:_,added:P,removed:V}=this.declaration.syncOperationInstance(this,i);return r.push(...f,...E,..._),a.push(...h,...b,...P),c.push(...m,...A,...V),this.inputs.sort((G,M)=>{var k,K;return(G.index??((k=G.declaration)==null?void 0:k.index))-(M.index??((K=M.declaration)==null?void 0:K.index))}),this.outputs.sort((G,M)=>{var k,K;return(G.index??((k=G.declaration)==null?void 0:k.index))-(M.index??((K=M.declaration)==null?void 0:K.index))}),i==null||i.attemptAutoclose(w.AfterAllChildrenInitialized,this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}addSelfToProject(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"add-self-to-project"))){const r=[this],a=[],c=[],e=[];return this.parent===this.project&&this.project.addOperation(this),this.successCalls.forEach(f=>{f.addSuccessCaller(this,i),r.push(f)}),this.errorCalls.forEach(f=>{f.addErrorCaller(this,i),r.push(f)}),this.calledBySuccess.forEach(f=>{f.addSuccessCall(this,i),r.push(f)}),this.calledByError.forEach(f=>{f.addErrorCall(this,i),r.push(f)}),this.calledByEntry.forEach(f=>{f.addCall(this,i),r.push(f)}),this.subscribe(),this.subscribeToDependencies(),i==null||i.attemptAutoclose("add-self-to-project",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}get calledBy(){return[...this.calledByEntry,...this.calledBySuccess,...this.calledByError]}removeInput(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveInput))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[removeInput] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.RemoveInput,this.id),this;const a=this.inputs.findIndex(c=>c.id===i.id);return a>-1&&(this.inputs.splice(a,1),r&&(r==null||r.add(this,W.Affected))),r==null||r.attemptAutoclose(w.RemoveInput,this.id),this}addInput(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddInput))){return this.checkCanEdit(this,r)?this.inputs.includes(i)?(r==null||r.attemptAutoclose(w.AddInput,this.id),this):(this.inputs.push(i),r==null||r.add(this,W.Affected),r==null||r.attemptAutoclose(w.AddInput,this.id),this):(z.Logger.warn(`[addInput] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.AddInput,this.id),this)}addOutput(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"add-output"))){return this.checkCanEdit(this,r)?this.outputs.includes(i)?(r==null||r.attemptAutoclose("add-output",this.id),this):(this.outputs.push(i),r==null||r.add(this,W.Affected),r==null||r.attemptAutoclose("add-output",this.id),this):(z.Logger.warn(`[addOutput] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("add-output",this.id),this)}removeOutput(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"remove-output"))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[removeOutput] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("remove-output",this.id),this;const a=this.outputs.findIndex(c=>c.id===i.id);return a>-1&&(this.outputs.splice(a,1),r&&(r==null||r.add(this,W.Affected))),r==null||r.attemptAutoclose("remove-output",this.id),this}addValueReader(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddValueReader))){var e,f,h,m;if(!this.checkCanEditFromScopeOwnerWithSideEffects(this,w.AddValueReader,r))return this;(i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.SetValueWriter}-${this.id}`,action:w.SetValueWriter,owner:this,errorReason:Me.CannotValueWriteItself,rootAction:((e=r==null?void 0:r.self)==null?void 0:e.id)===this.id&&(r==null?void 0:r.actionName)===w.SetValueWriter}));const a=i.type===d.InputMap&&i.parent.type===d.VariableInstance&&((f=i.declaration)==null?void 0:f.type)===d.Property&&((h=i.declaration)==null?void 0:h.constant),c=i.type===d.VariableInstance&&((m=i.declaration)==null?void 0:m.constant);return(a||c)&&i?(r==null||r.event({id:`${w.SetValueWriter}-${this.id}--${i.id}`,action:w.SetValueWriter,owner:i,counterpart:this,errorReason:Me.ValueReadingOverridesConstantVariable,rootAction:!1}),r==null||r.attemptAutoclose(w.AddValueReader,this.id),this):this.writesValues.includes(i)?(r==null||r.attemptAutoclose(w.AddValueReader,this.id),this):(this.writesValues.push(i),r==null||r.add(this,W.Affected),this)}removeValueReader(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveValueReader))){return this.checkCanEditFromScopeOwnerWithSideEffects(this,w.RemoveValueReader,r)?this.writesValues.includes(i)?(this.writesValues=this.writesValues.filter(a=>a.id!==i.id),r==null||r.add(this,W.Affected),this):(r==null||r.attemptAutoclose(w.RemoveValueReader,this.id),this):this}addSuccessCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddSuccessCaller)),a=!1){var c;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddSuccessCaller,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddSuccessCaller}-${this.id}--${Me.CannotSuccessCallItself}`,action:w.AddSuccessCaller,owner:this,errorReason:Me.CannotSuccessCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddSuccessCaller})),this.calledBySuccess.find(e=>e.id===i.id)||(this.calledBySuccess.push(i),r==null||r.add(this,W.Updated),a&&bt(this,r)),r==null||r.attemptAutoclose(w.AddSuccessCaller,this.id),this):this}addErrorCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddErrorCaller)),a=!1){var c;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddErrorCaller,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddErrorCaller}-${this.id}--${Me.CannotErrorCallItself}`,action:w.AddErrorCaller,owner:this,errorReason:Me.CannotErrorCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddErrorCaller})),this.calledByError.find(e=>e.id===i.id)||(this.calledByError.push(i),r==null||r.add(this,W.Updated),a&&bt(this,r)),r==null||r.attemptAutoclose(w.AddErrorCaller,this.id),this):this}addEntryCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddEntryCaller)),a=!1){var c;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddEntryCaller,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddEntryCaller}-${this.id}--${Me.CannotEntryCallItself}`,action:w.AddEntryCaller,owner:this,errorReason:Me.CannotEntryCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddEntryCaller})),this.calledByEntry.find(e=>e.id===i.id)||(this.calledByEntry.push(i),r==null||r.add(this,W.Updated),a&&bt(this,r)),r==null||r.attemptAutoclose(w.AddEntryCaller,this.id),this):this}addErrorCall(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddErrorCall)),a=!1){var c;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddErrorCall,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddErrorCaller}-${this.id}--${Me.CannotErrorCallItself}`,action:w.AddErrorCaller,owner:this,errorReason:Me.CannotErrorCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddErrorCaller})),this.errorCalls.find(e=>e.id===i.id)||(this.errorCalls.push(i),this.catchesError&&this.metaSync({catchesError:!1},r),a&&bt(this,r),r==null||r.add(this,W.Affected)),r==null||r.attemptAutoclose(w.AddErrorCall,this.id),this):this}addSuccessCall(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddSuccessCall)),a=!1){var c;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddSuccessCall,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddSuccessCaller}-${this.id}`,action:w.AddSuccessCaller,owner:this,errorReason:Me.CannotSuccessCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddSuccessCaller})),this.successCalls.find(e=>e.id===i.id)||(this.successCalls.push(i),a&&bt(this,r),r==null||r.add(this,W.Affected)),r==null||r.attemptAutoclose(w.AddSuccessCall,this.id),this):this}removeCall(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveCall)),a=!1){if(!this.checkCanEditWithCounterpartAndSideEffects(this,i,w.RemoveCall,r))return this;const c=this.successCalls.findIndex(f=>f.id===i.id);c>-1&&(this.successCalls.splice(c,1),r==null||r.add(this,W.Affected));const e=this.errorCalls.findIndex(f=>f.id===i.id);return e>-1&&(this.errorCalls.splice(e,1),r==null||r.add(this,W.Affected)),a&&bt(this,r),r==null||r.attemptAutoclose(w.RemoveCall,this.id),this}removeCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"remove-caller")),a=!1){return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.RemoveCaller,r)?(this.calledBySuccess=this.calledBySuccess.filter(c=>c.id!==i.id?!0:(r==null||r.add(this,W.Updated),r==null||r.add(c,W.Affected),!1)),this.calledByError=this.calledByError.filter(c=>c.id!==i.id?!0:(r==null||r.add(this,W.Updated),r==null||r.add(c,W.Affected),!1)),this.calledByEntry=this.calledByEntry.filter(c=>c.id!==i.id?!0:(r==null||r.add(this,W.Updated),r==null||r.add(c,W.Affected),!1)),a&&bt(this,r),r==null||r.attemptAutoclose(w.RemoveCaller,this.id),this):this}setError(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetErrorEntity))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[setError] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.SetErrorEntity,this.id),this;const a=this.error;return(a==null?void 0:a.id)!==(i==null?void 0:i.id)&&(a==null||a.remove({ignoreUpstream:!0},r),this.error=i,this.subscribeToDependencies(),r==null||r.add(this,W.Affected)),r==null||r.attemptAutoclose(w.SetErrorEntity,this.id),this}setParent(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetParent))){var a;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.SetParent,r)?(((a=this.parent)==null?void 0:a.id)!==(i==null?void 0:i.id)&&(this.parent=i,r&&(r==null||r.add(this,W.Updated))),r==null||r.attemptAutoclose(w.SetParent,this.id),this):this}setDeclaration(i){return this.declaration=i,this}initChildren(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"init-children"))){return this.initialized||this.startedInitialization?this:(this.startedInitialization=!0,this.declaration=Ie(this.initialData.declaration,this.project),this.successCalls=this.initialData.successCalls.map(r=>{const a=Ie(r,this.project);if(a.addSuccessCaller(this,null),[d.BreakStatement,d.ContinueStatement].includes(a.type))a.setParent(this.parent.parent,null);else if(a.type===d.ReturnStatement){const c=gn(this,this.project);a.setParent(c,null),a.initChildren(i)}else a.type!==d.InternalCall&&a.setParent(this.parent,null);return a.initChildren(i),a}),this.errorCalls=this.initialData.errorCalls.map(r=>{const a=Ie(r,this.project);if(a.addErrorCaller(this,null),[d.BreakStatement,d.ContinueStatement].includes(a.type))a.setParent(this.parent.parent,null),a.initChildren(i);else if(a.type===d.ReturnStatement){const c=gn(this,this.project);a.setParent(c,null),a.initChildren(i)}else a.type!==d.InternalCall&&(a.setParent(this.parent,null),a.initChildren(i));return a}),this.inputs=this.initialData.inputs.map(r=>{const a=Ie(r,this.project);return a.setParent(this,null),a.initChildren(i),a}),this.outputs=this.initialData.outputs.map(r=>{const a=Ie(r,this.project);return a.setParent(this,null),a.initChildren(i),a}),this.initialData.error&&(this.error=Ie(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(){var i;return this.activeVersion=!0,(i=this.knownVersions)==null||i.forEach(r=>{r.version!==this.version&&(r.activeVersion=!1)}),this.project.subscribeInstance(this),this}unsubscribe(){return this.project.unsubscribeInstance(this),this}metaSync(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"meta-sync"))){const a=tn(this,i,r),c=en(this,a),e=this.toMeta();return this.x=a.x||e.x,this.y=a.y||e.y,this.catchesError=a.catchesError!==void 0?a.catchesError:this.catchesError,super.baseMetaSync(a,this,r),a.deleted===!0&&!e.deleted?r==null||r.add(this,W.Removed):a.deleted===!1&&e.deleted?r==null||r.add(this,W.Added):c&&(r==null||r.add(this,W.Updated)),r==null||r.attemptAutoclose("meta-sync",this.id),this}async APILoad(i=Ke,...r){return await gi.repository.APILoad(this.id,...r),this}async APICreate(i=Ke,...r){return await gi.repository.APICreate(this.toShallowJSON(),...r),this}async APIUpdate(i=Ke,...r){return await gi.repository.APIUpdate(this.toShallowJSON(),...r),this}async APIDelete(i=Ke,...r){return await gi.repository.APIDelete(this.toShallowJSON(),...r),this}async APIClone(i=Ke,...r){return await gi.repository.APIClone(this.id,...r),this}async APILoadVersion(i=Ke,r,...a){return await gi.repository.APILoadVersion(this.id,r,...a)}removeFromParent(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveFromParent))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[removeFromParent] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveFromParent,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];return this.parent.type===d.Project?(this.parent.removeOperation(this),e.push(this.parent)):this.parent.detachedChildren.includes(this)&&this.parent.unsubscribeDetachedChild(this),i==null||i.attemptAutoclose(w.RemoveFromParent,this.id),{added:C(c),updated:C(r),removed:C(a),affected:C(e),self:this}}remove({ignoreUpstream:i}={ignoreUpstream:!1},r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveEntity))){var h;if(!this.checkCanDelete(this,r))return z.Logger.warn(`[remove] User is not allowed to delete or edit this ${this.type} entity with id: ${this.id}`),r==null||r.event({id:`${w.RemoveEntity}-${this.id}--${Me.ActionOwnerEntityNonDeletable}`,action:w.RemoveEntity,owner:this,errorReason:Me.ActionOwnerEntityNonDeletable,rootAction:((h=r==null?void 0:r.self)==null?void 0:h.id)===this.id&&(r==null?void 0:r.actionName)===w.RemoveEntity}),r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const a=[],c=[],e=[],f=[];if(r!=null&&r.hasRemoved(this.id))return r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};if(c.push(this),this.unsubscribe(),this.unsubscribeFromDependencies(),this.project.subscribeDeletedInstance(this),this.metaSync({deleted:!0},r),Object.values(this.detachedDependents).forEach(m=>{const{updated:E,removed:b,added:A}=m.entity.onDetachedDependencyRemoved(this,m.field,r);a.push(...E),c.push(...b),e.push(...A)}),this.inputs.forEach(m=>{const{updated:E,removed:b}=m.remove({ignoreUpstream:!0},r);a.push(...E),c.push(...b)}),this.outputs.forEach(m=>{const{updated:E,removed:b}=m.remove({ignoreUpstream:!0},r);a.push(...E),c.push(...b)}),this.error){const{updated:m,removed:E}=this.error.remove({ignoreUpstream:!0},r);a.push(...m),c.push(...E)}if(this.successCalls.forEach(m=>{a.push(m),m.removeCaller(this,r)}),this.errorCalls.forEach(m=>{a.push(m),m.removeCaller(this,r)}),!i){const m=this.removeFromParent(r);e.push(...m.added),a.push(...m.updated),c.push(...m.removed),f.push(...m.affected),this.calledBy.forEach(E=>{a.push(E),E.removeCall(this,r)})}return r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:C(e),updated:C(a),removed:C(c),affected:C(f),self:this}}restore({}={},i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RestoreEntity))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[restore] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RestoreEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];return i!=null&&i.hasAdded(this.id)?(i==null||i.attemptAutoclose(w.RestoreEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this}):(this.subscribe(),this.project.unsubscribeDeletedInstance(this),this.metaSync({deleted:!1},i),Object.values(this.detachedDependents).forEach(f=>{const{updated:h,removed:m,added:E}=f.entity.onDetachedDependencyRestored(this,f.field,i);a.push(...h),c.push(...m),r.push(...E)}),this.inputs.forEach(f=>{const{updated:h}=f.restore({},i);a.push(...h)}),this.outputs.forEach(f=>{const{updated:h}=f.restore({},i);a.push(...h)}),this.successCalls.forEach(f=>{a.push(f),f.addSuccessCaller(this,i)}),this.errorCalls.forEach(f=>{a.push(f),f.addErrorCaller(this,i)}),this.calledBySuccess.forEach(f=>{a.push(f),f.addSuccessCall(this,i)}),this.calledByError.forEach(f=>{a.push(f),f.addErrorCall(this,i)}),this.calledByEntry.forEach(f=>{a.push(f),f.addCall(this,i)}),i==null||i.attemptAutoclose(w.RestoreEntity,this.id),{added:C(r),updated:C(a),removed:C(c),affected:C(e),self:this})}toFlat(i=new Set){return i.has(this.id)?[]:(i.add(this.id),[this,...this.successCalls.flatMap(a=>a.toFlat(i)),...this.errorCalls.flatMap(a=>a.toFlat(i)),...this.inputs.flatMap(a=>a.toFlat(i)),...this.outputs.flatMap(a=>a.toFlat(i)),...this.calledBy.flatMap(a=>a.toFlat(i)),...this.error?this.error.toFlat(i):[]])}toFlatIds(i=new Set){return i.has(this.id)?[]:(i.add(this.id),[this.id,...this.successCalls.flatMap(a=>a.toFlatIds(i)),...this.errorCalls.flatMap(a=>a.toFlatIds(i)),...this.inputs.flatMap(a=>a.toFlatIds(i)),...this.outputs.flatMap(a=>a.toFlatIds(i)),...this.error?this.error.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,editable:this.editable,deletable:this.deletable,catchesError:this.catchesError}}toJSON(i=new Set){var r;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,editable:this.editable,deletable:this.deletable,catchesError:this.catchesError,x:this.x,y:this.y,successCalls:this.successCalls.map(a=>a.toJSON(i)),errorCalls:this.errorCalls.map(a=>a.toJSON(i)),calledBySuccess:this.calledBySuccess.map(a=>a.toReference()),calledByError:this.calledByError.map(a=>a.toReference()),calledByEntry:this.calledByEntry.map(a=>a.toReference()),writesValues:this.writesValues.map(a=>a.toJSON(i)),declaration:this.declaration.toJSON(i),inputs:this.inputs.map(a=>a.toJSON(i)),outputs:this.outputs.map(a=>a.toJSON(i)),parent:this.parent.toReference(),error:(r=this.error)==null?void 0:r.toJSON(i)})}toJSONClone(i=at){var a,c,e,f,h,m;let r;return(a=i.seenEntityMaps)!=null&&a.has(this.id)?r=i.seenEntityMaps.get(this.id):(r=i.newId||dn(this,this.project,i.uuidStrategy),i.seenEntityMaps&&i.seenEntityMaps.set(this.id,r)),(c=i.seenEntities)!=null&&c.has(r)||(e=i.seenEntities)!=null&&e.has(this.id)?this.toReference({seenEntityMaps:i.seenEntityMaps}):((f=i.seenEntities)==null||f.add(r),(h=i.seenEntities)==null||h.add(this.id),{id:r,version:x.UUID.uuid(),createdAt:i.timestamp||B().toISOString(),previousVersion:null,author:this.author,deleted:this.deleted,type:this.type,editable:this.editable,deletable:this.deletable,catchesError:this.catchesError,x:this.x,y:this.y,successCalls:this.successCalls.map(E=>E.toJSONClone({...i,newId:null})),errorCalls:this.errorCalls.map(E=>E.toJSONClone({...i,newId:null})),calledBySuccess:this.calledBySuccess.map(E=>E.toReference({seenEntityMaps:i.seenEntityMaps})),calledByError:this.calledByError.map(E=>E.toReference({seenEntityMaps:i.seenEntityMaps})),calledByEntry:this.calledByEntry.map(E=>E.toReference({seenEntityMaps:i.seenEntityMaps})),writesValues:this.writesValues.map(E=>E.toJSONClone({...i,newId:null})),declaration:this.declaration.toJSON(),inputs:this.inputs.map(E=>E.toJSONClone({...i,newId:null})),outputs:this.outputs.map(E=>E.toJSONClone({...i,newId:null})),parent:this.parent.toReference({seenEntityMaps:i.seenEntityMaps}),error:(m=this.error)==null?void 0:m.toJSONClone({...i,newId:null})})}toReference(i=at){var a;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r+"--"+x.UUID.uuid()+"--ref",type:d.GenericReference,entityId:r,version:this.version,entityType:this.type}}toShallowJSON(i=at){var a;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r,version:this.version,createdAt:this.createdAt,previousVersion:this.previousVersion,author:this.author,deleted:this.deleted,type:this.type,editable:this.editable,deletable:this.deletable,catchesError:this.catchesError,x:this.x,y:this.y,inputs:this.inputs.map(c=>c.toReference(i)),outputs:this.outputs.map(c=>c.toReference(i)),declaration:this.declaration.toReference(i),writesValues:this.writesValues.map(c=>c.toReference(i)),successCalls:this.successCalls.map(c=>c.toReference(i)),errorCalls:this.errorCalls.map(c=>c.toReference(i)),calledBySuccess:this.calledBySuccess.map(c=>c.toReference(i)),calledByError:this.calledByError.map(c=>c.toReference(i)),calledByEntry:this.calledByEntry.map(c=>c.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(a=>a.toFlatJSON(i)),...this.errorCalls.flatMap(a=>a.toFlatJSON(i)),...this.inputs.flatMap(a=>a.toFlatJSON(i)),...this.outputs.flatMap(a=>a.toFlatJSON(i)),...this.calledBy.flatMap(a=>a.toFlatJSON(i)),...this.error?this.error.toFlatJSON(i):[]])}toGenerationTarget(i=at){var c,e;const r=this.parent.type===d.Project?void 0:(c=i.seenEntityMaps)!=null&&c.has(this.parent.id)?i.seenEntityMaps.get(this.parent.id):this.parent.id;let a=this.id;return(e=i.seenEntityMaps)!=null&&e.has(this.id)&&(a=i.seenEntityMaps.get(this.id)),{id:a,type:this.type,calledByEntry:this.calledByEntry.map(f=>f.id),calledBySuccess:this.calledBySuccess.map(f=>f.id),calledByError:this.calledByError.map(f=>f.id),declaration:this.declaration.id,parent:r}}toFlatGenerationTarget(i=new Set){return i.has(this.id)?[]:(i.add(this.id),[this.toGenerationTarget(),...this.successCalls.flatMap(a=>a.toFlatGenerationTarget(i)),...this.errorCalls.flatMap(a=>a.toFlatGenerationTarget(i)),...this.inputs.flatMap(a=>a.toFlatGenerationTarget(i)),...this.outputs.flatMap(a=>a.toFlatGenerationTarget(i)),...this.error?this.error.toFlatGenerationTarget(i):[]])}clearErrors(){var i;return this.errors=[],this.inputs.forEach(r=>r.clearErrors()),this.outputs.forEach(r=>r.clearErrors()),this.successCalls.forEach(r=>r.clearErrors()),this.errorCalls.forEach(r=>r.clearErrors()),(i=this.error)==null||i.clearErrors(),this}validate(){return this.errors=Z_e(this),{success:!0}}async validateAsync(i={}){const r=z.YieldTracker.from(i);return this.errors=await S_e(this,{tracker:r}),{success:!0}}getErrors(){return[...this.errors,...this.inputs.flatMap(r=>r.getErrors()),...this.outputs.flatMap(r=>r.getErrors()),...this.error?this.error.getErrors():[]]}async getErrorsAsync(i={}){const r=z.YieldTracker.from(i),a=[...this.errors];await r.tick();for(const c of this.inputs)a.push(...await c.getErrorsAsync({tracker:r}));for(const c of this.outputs)a.push(...await c.getErrorsAsync({tracker:r}));return this.error&&a.push(...await this.error.getErrorsAsync({tracker:r})),a}getShallowErrors(){return this.errors}clone(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.CloneEntity)),r=null,a=null,c=!0){var P,V;const e=Fr(r,this),f=this.toJSON(),h=a||x.UUID.uuid();f.inputs=[];const m=h.split("-id"),E=m[m.length-1||0]||h;f.id=h,f.version=x.UUID.uuid(),f.createdAt=(i==null?void 0:i.timestamp)||B().toISOString(),f.author=(i==null?void 0:i.author)||"1",f.previousVersion=null,f.deleted=!1,f.deletable=!0,f.editable=!0;const b=lr(f,e);r?b.setParent(r,i):b.setParent(this.parent,null),c&&b.subscribe(),b.initChildren(i),i==null||i.add(b,W.Added);const A=(P=this.inputs)==null?void 0:P.map((G,M)=>G.clone(i,b,E+"-input-map-"+M+"-id",c));b.inputs=A;const _=(V=this.outputs)==null?void 0:V.map((G,M)=>G.clone(i,b,E+"-output-map-"+M+"-id",c));return b.outputs=_,this.error&&(b.error=this.error.clone(i,b,E+"-error-map-id",c)),i||b.captureVersion(),i==null||i.attemptAutoclose(w.CloneEntity,this.id),b}removeUnrecognizedInputs(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveUnrecognizedInputs))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[removeUnrecognizedInputs] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveUnrecognizedInputs,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];return this.inputs.forEach(h=>{if(!this.declaration.inputs.find(E=>{var b;return E.id===((b=h.declaration)==null?void 0:b.id)})){const E=h.remove({ignoreUpstream:!1},i);c.push(...E.removed),r.push(...E.updated)}}),this.inputs.filter((h,m)=>{const E=this.inputs.findIndex(A=>A.declaration===h.declaration&&A!==h&&h.declaration.parentRelationType!==j.DynamicArgument);if(E===-1)return!1;const b=this.inputs[E];return B(b==null?void 0:b.createdAt).isSame(B(h.createdAt))?m>E:!!B(b==null?void 0:b.createdAt).isAfter(h.createdAt)}).forEach(h=>{const m=h.remove({ignoreUpstream:!1},i);c.push(...m.removed),r.push(...m.updated)}),i==null||i.attemptAutoclose(w.RemoveUnrecognizedInputs,this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}removeUnrecognizedOutputs(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveUnrecognizedOutputs))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[removeUnrecognizedOutputs] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveUnrecognizedOutputs,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[],f=this.declaration.dataType&&this.declaration.dataType.entity&&this.declaration.dataType.entity.type===d.DefinitionEntity?this.declaration.dataType.entity.properties:[];return this.outputs.forEach(m=>{if(!f.find(b=>{var A;return b.id===((A=m.declaration)==null?void 0:A.id)})){const b=m.remove({ignoreUpstream:!1},i);c.push(...b.removed),r.push(...b.updated)}}),this.outputs.filter((m,E)=>{const b=this.outputs.findIndex(_=>_.declaration===m.declaration&&_!==m);if(b===-1)return!1;const A=this.outputs[b];return B(A==null?void 0:A.createdAt).isSame(B(m.createdAt))?E>b:!!B(A==null?void 0:A.createdAt).isAfter(m.createdAt)}).forEach(m=>{const E=m.remove({ignoreUpstream:!1},i);c.push(...E.removed),r.push(...E.updated)}),i==null||i.attemptAutoclose(w.RemoveUnrecognizedOutputs,this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}syncInputs(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SyncInputs))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[syncInputs] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.SyncInputs,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[],f=this.declaration.inputs.sort((b,A)=>b.index-A.index).filter(b=>b.parentRelationType===j.FixedArguments&&!this.inputs.find(A=>{var _;return((_=A.declaration)==null?void 0:_.id)===b.id}));this.inputs.sort((b,A)=>b.index-A.index),f.forEach(b=>(this.inputs.forEach(A=>{A.index>=b.index&&A.metaSync({index:A.index+1},i)}),b.implementAsInputMap(i,this)));const{updated:h,added:m,removed:E}=this.removeUnrecognizedInputs(i);return r.push(...h),a.push(...m),c.push(...E),this.inputs.forEach(b=>{const{updated:A,added:_,removed:P}=b.afterAllChildrenInitialized(i);r.push(...A),a.push(..._),c.push(...P)}),this.inputs.sort((b,A)=>b.index-A.index),i==null||i.attemptAutoclose(w.SyncInputs,this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}syncOutputs(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SyncOutputs))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[syncOutputs] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.SyncOutputs,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[],h=(this.declaration.dataType&&this.declaration.dataType.entity&&this.declaration.dataType.entity.type===d.DefinitionEntity?this.declaration.dataType.entity.properties:[]).filter(A=>!this.outputs.find(_=>{var P;return((P=_.declaration)==null?void 0:P.id)===A.id}));this.outputs.sort((A,_)=>A.index-_.index),h.forEach(A=>{this.outputs.forEach(V=>{V.index>=A.index&&V.index++});const _={id:x.UUID.uuid(),version:x.UUID.uuid(),createdAt:(i==null?void 0:i.timestamp)||B().toISOString(),author:x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.OutputMap,declaration:A.toJSON(),dataType:null,writesValues:[],index:A.index,parent:this.toReference()},P=Ie(_,this.project);P.hydrateAncestors(),P.setParent(this,i),P.addSelfToProject(i),i==null||i.add(P,W.Added),P.initChildren(i),i||P.captureVersion()});const{updated:m,added:E,removed:b}=this.removeUnrecognizedOutputs(i);return r.push(...m),a.push(...E),c.push(...b),this.outputs.forEach(A=>{const{updated:_,added:P,removed:V}=A.afterAllChildrenInitialized(i);r.push(..._),a.push(...P),c.push(...V)}),this.outputs.sort((A,_)=>A.index-_.index),i==null||i.attemptAutoclose(w.SyncOutputs,this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(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)}getDataType(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"get-data-type"))){var a;const r=((a=this.declaration)==null?void 0:a.getDataType(i))||null;return i==null||i.attemptAutoclose("get-data-type",this.id),r}};R(gi,"repository",{APICreate:async(i,...r)=>i,APIUpdate:async(i,...r)=>i,APIDelete:async(i,...r)=>i,APIClone:async(i,...r)=>{},APILoad:async(i,...r)=>null,APILoadVersion:async(i,r,...a)=>null}),R(gi,"type",d.Operation),R(gi,"USER_MANAGED_PARENT_TYPES",[...Dr,d.Project]),R(gi,"PARENT_TYPES",[...gi.USER_MANAGED_PARENT_TYPES]),R(gi,"MUTABLE_BASE_PROPERTIES",["catchesError"]),R(gi,"INMUTABLE_BASE_PROPERTIES",["id","type","version","createdAt","author","previousVersion"]),R(gi,"BASE_PROPERTIES",[...gi.MUTABLE_BASE_PROPERTIES,...gi.INMUTABLE_BASE_PROPERTIES]),R(gi,"MUTABLE_META_PROPERTIES",[...gi.MUTABLE_BASE_PROPERTIES,"x","y"]),R(gi,"INMUTABLE_META_PROPERTIES",[...gi.INMUTABLE_BASE_PROPERTIES]),R(gi,"META_PROPERTIES",[...gi.MUTABLE_META_PROPERTIES,...gi.INMUTABLE_META_PROPERTIES]),R(gi,"MUTABLE_UPSTREAM_PROPERTIES",["calledBySuccess","calledByError","calledByEntry"]),R(gi,"INMUTABLE_UPSTREAM_PROPERTIES",["parent","declaration"]),R(gi,"UPSTREAM_PROPERTIES",[...gi.MUTABLE_UPSTREAM_PROPERTIES,...gi.INMUTABLE_UPSTREAM_PROPERTIES]),R(gi,"MUTABLE_DOWNSTREAM_PROPERTIES",["inputs","outputs","writesValues","successCalls","errorCalls","error"]),R(gi,"INMUTABLE_DOWNSTREAM_PROPERTIES",[]),R(gi,"DOWNSTREAM_PROPERTIES",[...gi.MUTABLE_DOWNSTREAM_PROPERTIES,...gi.INMUTABLE_DOWNSTREAM_PROPERTIES]),R(gi,"PROPERTIES",[...gi.META_PROPERTIES,...gi.UPSTREAM_PROPERTIES,...gi.DOWNSTREAM_PROPERTIES]);let Op=gi;async function W_e(s,p={}){var c;const i=z.YieldTracker.from(p),r=[...Rn(s),...Xa(s)];await i.tick();const a=qt(s.errors,r);for(const e of s.outputs)await e.validateAsync({tracker:i});return await((c=s.throws)==null?void 0:c.validateAsync({tracker:i})),a}function z_e(s){var i;s.outputs.forEach(r=>r.validate()),(i=s.throws)==null||i.validate();const p=[...Rn(s),...Xa(s)];return qt(s.errors,p)}const $gi=Object.freeze(Object.defineProperty({__proto__:null,validate:z_e,validateAsync:W_e},Symbol.toStringTag,{value:"Module"}));var Gx=(s=>(s.Parent="return-statement-parent-field",s.DataTypeEntity="return-statement-data-type-entity-field",s.DataType="return-statement-data-type-field",s.ParentDataType="return-statement-parent-data-type-field",s.ParentDataTypeEntity="return-statement-parent-data-type-entity-field",s))(Gx||{});const ki=class ki extends un{constructor(i,r){super(i);R(this,"initialData");R(this,"id");R(this,"x");R(this,"y");R(this,"type",d.ReturnStatement);R(this,"outputs",[]);R(this,"readsValue",null);R(this,"dataType",null);R(this,"defaultValue",null);R(this,"calledBySuccess",[]);R(this,"calledByError",[]);R(this,"calledByEntry",[]);R(this,"throws",null);R(this,"project");R(this,"errors",[]);R(this,"parent");R(this,"detachedDependents",{});R(this,"knownVersions",null);R(this,"activeVersion",!1);R(this,"initialized",!1);R(this,"startedInitialization",!1);R(this,"suggestion",!1);R(this,"_codeNativeValueValidation",null);this.initialData=i,this.project=r,this.id=i.id,this.x=i.x,this.y=i.y}static new(i=null){return{id:x.UUID.uuid(),version:x.UUID.uuid(),createdAt:(i==null?void 0:i.timestamp)||B().toISOString(),author:(i==null?void 0:i.author)||x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.ReturnStatement,outputs:[],defaultValue:null,dataType:null,readsValue:null,throws:null,parent:null,calledByEntry:[],calledBySuccess:[],calledByError:[],x:0,y:0}}static fromGenerationTarget(i,r,a){const c=a===void 0?r.addChangeSet(new S(r,x.sessionAuthor,B().toISOString(),r,!0,w.CreateFromGenerationTarget)):a,e=te(i.parent),f=r.get(e),h=(i.calledByEntry||[]).map(P=>{const V=te(P);return r.get(V)}),m=(i.calledBySuccess||[]).map(P=>{const V=te(P);return r.get(V)}),E=(i.calledByError||[]).map(P=>{const V=te(P);return r.get(V)});let b=null;if(i.readsValue){const P=te(i.readsValue);b=r.get(P)}const A={id:i.id,version:x.UUID.uuid(),createdAt:(c==null?void 0:c.timestamp)||B().toISOString(),author:(c==null?void 0:c.author)||x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.ReturnStatement,x:0,y:0,outputs:[],defaultValue:null,dataType:null,readsValue:b?b.toReference():null,calledByEntry:h.map(P=>P.toReference()),calledBySuccess:m.map(P=>P.toReference()),calledByError:E.map(P=>P.toReference()),throws:null,parent:f.toReference()},_=Ie(A,r);return _.hydrateAncestors(),_.setParent(f,c),_.addSelfToProject(c),c==null||c.add(_,W.Added),_.initChildren(c),c||_.captureVersion(),_}static validateGenerationTarget(i,r){let a=JSON.parse(JSON.stringify(i));const c=[],e=[],f=Bn(a,{parent:{list:!1,types:Dr}},r);c.push(...f.explanations),a=f.modifiedData;const h=Xr(a);return e.push(...f.errors,...h.errors),c.push(...h.explanations),{errors:e,explanations:c,modifiedData:a}}get codeNativeValueValidation(){return this._codeNativeValueValidation||null}validateGeneratedUpdate(i){const r=[],a=[];let c=JSON.parse(JSON.stringify(i));const e=dy(c,this);return c=e.modifiedData,r.push(...e.errors),i.parent&&r.push(new we({id:`${this.id}--${Te.InvalidParentUpdate}`,code:Te.InvalidParentUpdate,severity:ve.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.
|
|
41
41
|
If an entity is called by another, they must be in the same scope, which means they have the same parent.
|
|
42
42
|
You shouldn't have to manually update a 'parent' property.
|
|
43
|
-
Specifically for return statements the parent needs to always be the 'function-declaration' or 'global-event' that contains it.`})),{errors:r,explanations:a,modifiedData:i}}subscribeDependents(i){return i.forEach(r=>{this.detachedDependents[r.entity.id]||(this.detachedDependents[r.entity.id]=r)}),this}unsubscribeDependents(i){return i.forEach(r=>{this.detachedDependents[r.entity.id]&&delete this.detachedDependents[r.entity.id]}),this}syncDependents(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"sync-dependents"))){const r=[],a=[],c=[],e=[];return Object.values(this.detachedDependents).forEach(f=>{const h=f.entity.afterAllChildrenInitialized(i);r.push(...h.updated),a.push(...h.added),c.push(...h.removed),e.push(...h.affected)}),i==null||i.attemptAutoclose("sync-dependents",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}onDetachedDependencyRemoved(i,r,a){const c=[],e=[],f=[],h=[];if(r==="return-statement-parent-field"){const{updated:m,added:E,removed:b}=this.remove({ignoreUpstream:!1},a);c.push(...m),e.push(...E),f.push(...b)}if(r==="return-statement-parent-data-type-field"){const{updated:m,added:E,removed:b}=this.afterAllChildrenInitialized(a);c.push(...m),e.push(...E),f.push(...b)}if(r==="return-statement-parent-data-type-entity-field"){const{updated:m,added:E,removed:b}=this.afterAllChildrenInitialized(a);c.push(...m),e.push(...E),f.push(...b)}return{updated:C(c),added:C(e),removed:C(f),affected:C(h),self:this}}onDetachedDependencyRestored(i,r,a){const c=[],e=[],f=[],h=[];if(r==="return-statement-parent-field"){const{updated:m,added:E,removed:b}=this.restore({},a);c.push(...m),e.push(...E),f.push(...b)}if(r==="return-statement-parent-data-type-field"){const{updated:m,added:E,removed:b}=this.afterAllChildrenInitialized(a);c.push(...m),e.push(...E),f.push(...b)}if(r==="return-statement-parent-data-type-entity-field"){const{updated:m,added:E,removed:b}=this.afterAllChildrenInitialized(a);c.push(...m),e.push(...E),f.push(...b)}return{updated:C(c),added:C(e),removed:C(f),affected:C(h),self:this}}unsubscribeFromDependencies(){var i,r,a,c,e,f,h,m,E,b,A,_,P;return(i=this.parent)==null||i.unsubscribeDependents([{entity:this,field:"return-statement-parent-field"}]),(c=(a=(r=this.dataType)==null?void 0:r.entity)==null?void 0:a.unsubscribeDependents)==null||c.call(a,[{entity:this,field:"return-statement-data-type-entity-field"}]),(f=(e=this.dataType)==null?void 0:e.unsubscribeDependents)==null||f.call(e,[{entity:this,field:"return-statement-data-type-field"}]),(b=(E=(m=(h=this.parent)==null?void 0:h.dataType)==null?void 0:m.entity)==null?void 0:E.unsubscribeDependents)==null||b.call(E,[{entity:this,field:"return-statement-parent-data-type-entity-field"}]),(P=(_=(A=this.parent)==null?void 0:A.dataType)==null?void 0:_.unsubscribeDependents)==null||P.call(_,[{entity:this,field:"return-statement-parent-data-type-field"}]),this}subscribeToDependencies(){var i,r,a,c,e,f,h,m,E,b,A,_,P;return(i=this.parent)==null||i.subscribeDependents([{entity:this,field:"return-statement-parent-field"}]),(c=(a=(r=this.dataType)==null?void 0:r.entity)==null?void 0:a.subscribeDependents)==null||c.call(a,[{entity:this,field:"return-statement-data-type-entity-field"}]),(f=(e=this.dataType)==null?void 0:e.subscribeDependents)==null||f.call(e,[{entity:this,field:"return-statement-data-type-field"}]),(b=(E=(m=(h=this.parent)==null?void 0:h.dataType)==null?void 0:m.entity)==null?void 0:E.subscribeDependents)==null||b.call(E,[{entity:this,field:"return-statement-parent-data-type-entity-field"}]),(P=(_=(A=this.parent)==null?void 0:A.dataType)==null?void 0:_.subscribeDependents)==null||P.call(_,[{entity:this,field:"return-statement-parent-data-type-field"}]),this}increaseVersion(i){var r;if(this.project.diggestedBuiltInBaseEntitiesIds.has(this.id))return this;if(i&&!B(i).isValid())throw new Error(`The shared timestamp '${i}' is not a valid ISO 8601 date string.`);if(i&&B(i).isSame(B(this.createdAt)))return this;if(!((r=this.knownVersions)!=null&&r.has(this.version))&&this.project.initialized)throw new Error(`The current ${this.type} ${this.id} version '${this.version}' is not captured in the 'knownVersions' map. Capture the current version before increasing it to avoid losing data.`);if(!this.activeVersion)throw new Error(`Only active versions can be increased. Entity with id '${this.id}' and version '${this.version}' is not active.`);return this.previousVersion=this.version,this.version=x.UUID.uuid(),this.createdAt=B(i).toISOString()||B().toISOString(),this}captureVersion(){var r;const i=((r=this.knownVersions)==null?void 0:r.get(this.version))||new ki(this,this.project);if(!this.activeVersion)throw new Error(`Only active versions can be captured. Entity of type ${this.type} with id '${this.id}' and version '${this.version}' is not active.`);if(this.version!==i.version)throw new Error(`Captured ${this.type} with id '${this.id}', version '${i.version}' does not match current entity version '${this.version}'.`);return this.knownVersions=this.knownVersions?this.knownVersions.set(this.version,i):new Map().set(this.version,i),this.apply(i),this}snapshot(){const i=new ki(this,this.project);return this.apply(i)}apply(i){const r=this.toMeta();return i.metaSync(r,null),i.outputs=[...this.outputs],i.readsValue=this.readsValue,i.defaultValue=this.defaultValue,i.dataType=this.dataType,i.throws=this.throws,i.calledBySuccess=[...this.calledBySuccess],i.calledByError=[...this.calledByError],i.calledByEntry=[...this.calledByEntry],i.parent=this.parent,i}recursiveCaptureUpstreamVersions(i){const r=[],a=[],c=[],e=[];if(this.parent){this.parent.increaseVersion(i);const f=this.parent.recursiveCaptureUpstreamVersions(i);r.push(this.parent,...f.updated),a.push(...f.added),c.push(...f.removed)}return{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}async restoreVersion(i,r){var m;const a=[],c=[],e=[],f=[];if(this.version===i&&(r!=null&&r.skipIfSameVersion))return{updated:C(a),added:C(c),removed:C(e),affected:C(f),self:this};if(!this.knownVersions){const E=new Map;for(const[b,A]of this.knownVersions||new Map){if(E.set(b,A),A.activeVersion=!1,A.knownVersions)for(const[_,P]of A.knownVersions)E.set(_,P);A.knownVersions=null}}let h=(m=this.knownVersions)==null?void 0:m.get(i);if(!h){const E=await this.APILoadVersion({},i);if(!E)throw new Error(`Version with id '${i}' for entity with id '${this.id}' not found.`);h=new ki(E,this.project)}return this.metaSync(h.toShallowJSON(),null),this.previousVersion=h.previousVersion,this.version=h.version,this.createdAt=h.createdAt,this.author=h.author,this.deleted=h.deleted,this.outputs=[...h.outputs],this.readsValue=h.readsValue,this.defaultValue=h.defaultValue,this.dataType=h.dataType,this.throws=h.throws,this.calledBySuccess=[...h.calledBySuccess],this.calledByError=[...h.calledByError],this.calledByEntry=[...h.calledByEntry],this.parent=h.parent,{updated:C(a),added:C(c),removed:C(e),affected:C(f),self:this}}updateWithShallowTransfer(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.UpdateWithShallowTransfer))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[updateWithShallowTransfer] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),this;if(this.metaSync(i,r),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 a=te(i.parent),c=this.project.get(a),e=this.parent;if(e&&e.id!==(c==null?void 0:c.id)&&this.removeFromParent(r),c)this.setParent(c,r),this.addSelfToProject(r);else throw r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),new Error(`${this.type} with id '${this.id}' has a 'parent' reference '${a}' that isn't found in the project`)}else throw r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),new Error(`${this.type} with id '${this.id}' must have a 'parent'`);if(i.readsValue){const a=te(i.readsValue),c=this.project.get(a),e=this.readsValue;e&&e.id!==(c==null?void 0:c.id)&&this.removeValueWriter(r),c&&this.setValueWriter(c,r)}else this.removeValueWriter(r);if(i.calledByEntry.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addEntryCaller(e,r),e.addCall(this,r))}),[...this.calledByEntry].forEach(a=>{i.calledByEntry.find(e=>te(e)===a.id)||(this.removeCaller(a,r),a.removeCall(this,r))}),i.calledBySuccess.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addSuccessCaller(e,r),e.addSuccessCall(this,r))}),[...this.calledBySuccess].forEach(a=>{i.calledBySuccess.find(e=>te(e)===a.id)||(this.removeCaller(a,r),a.removeCall(this,r))}),i.calledByError.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addErrorCaller(e,r),e.addErrorCall(this,r))}),[...this.calledByError].forEach(a=>{i.calledByError.find(e=>te(e)===a.id)||(this.removeCaller(a,r),a.removeCall(this,r))}),i.outputs.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addOutput(e,r),e.setParent(this,r))}),[...this.outputs].forEach(a=>{i.outputs.find(e=>te(e)===a.id)||(this.removeOutput(a,r),a.removeFromParent(r))}),i.dataType){const a=te(i.dataType),c=this.project.get(a);c&&this.setDataType(c,r)}else this.setDataType(null,r);if(i.defaultValue){const a=te(i.defaultValue),c=this.project.get(a);c&&this.setDefaultValue(c,r)}else this.setDefaultValue(null,r);return this.captureVersion(),this.subscribeToDependencies(),r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),this}updateWithGenerationTarget(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.UpdateWithGenerationTarget))){var a,c,e;if(!this.checkCanEdit(this,r))return z.Logger.warn(`[updateWithGenerationTarget] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),this;if(this.metaSync(i,r),i.parent){const f=te(i.parent),h=this.project.get(f),m=this.parent;if(m&&m.id!==(h==null?void 0:h.id)&&this.removeFromParent(r),h)this.setParent(h,r),this.addSelfToProject(r);else throw r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),new Error(`${this.type} with id '${this.id}' has a 'parent' reference '${f}' that isn't found in the project`)}if(i.readsValue){const f=te(i.readsValue),h=this.project.get(f);if(!h)throw new Error(`${this.type} with id '${this.id}' has a 'readsValue' reference '${f}' that isn't found in the project`);const m=this.readsValue;m&&m.id!==(h==null?void 0:h.id)&&this.removeValueWriter(r),h&&this.setValueWriter(h,r)}else i.readsValue===null&&this.removeValueWriter(r);return(a=i.calledByEntry)==null||a.forEach(f=>{const h=te(f),m=this.project.get(h);if(m)this.addEntryCaller(m,r),m.addCall(this,r);else throw new Error(`${this.type} with id '${this.id}' has a 'calledByEntry' reference '${h}' that isn't found in the project`)}),i.calledByEntry&&[...this.calledByEntry].forEach(f=>{var m;((m=i.calledByEntry)==null?void 0:m.find(E=>te(E)===f.id))||(this.removeCaller(f,r),f.removeCall(this,r))}),(c=i.calledBySuccess)==null||c.forEach(f=>{const h=te(f),m=this.project.get(h);if(m)this.addSuccessCaller(m,r),m.addSuccessCall(this,r);else throw new Error(`${this.type} with id '${this.id}' has a 'calledBySuccess' reference '${h}' that isn't found in the project`)}),i.calledBySuccess&&[...this.calledBySuccess].forEach(f=>{var m;((m=i.calledBySuccess)==null?void 0:m.find(E=>te(E)===f.id))||(this.removeCaller(f,r),f.removeCall(this,r))}),(e=i.calledByError)==null||e.forEach(f=>{const h=te(f),m=this.project.get(h);if(m)this.addErrorCaller(m,r),m.addErrorCall(this,r);else throw new Error(`${this.type} with id '${this.id}' has a 'calledByError' reference '${h}' that isn't found in the project`)}),i.calledByError&&[...this.calledByError].forEach(f=>{var m;((m=i.calledByError)==null?void 0:m.find(E=>te(E)===f.id))||(this.removeCaller(f,r),f.removeCall(this,r))}),this.captureVersion(),this.subscribeToDependencies(),r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),this}hydrateAncestors(){const i=[],r=[],a=[],c=[];if(this.initialData.parent){const e=te(this.initialData.parent),f=this.project.get(e);if(f)this.setParent(f,null),i.push(f);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.readsValue){const e=te(this.initialData.readsValue),f=this.project.get(e);f&&(this.setValueWriter(f,null),i.push(f))}return this.initialData.calledByEntry.forEach(e=>{const f=te(e),h=this.project.get(f);h&&this.addEntryCaller(h,null)}),this.initialData.calledBySuccess.forEach(e=>{const f=te(e),h=this.project.get(f);h&&this.addSuccessCaller(h,null)}),this.initialData.calledByError.forEach(e=>{const f=te(e),h=this.project.get(f);h&&this.addErrorCaller(h,null)}),{updated:C(i),added:C(r),removed:C(a),affected:C(c),self:this}}afterAllChildrenInitialized(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AfterAllChildrenInitialized))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[afterAllChildrenInitialized] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.AfterAllChildrenInitialized,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];if(this.initialized=!0,!this.dataType||this.dataType.inferred,this.readsValue&&this.defaultValue&&(this.project.diggestedBuiltInBaseEntitiesIds.has(this.defaultValue.id)||this.defaultValue.remove({ignoreUpstream:!1},i),this.setDefaultValue(null,i)),this.defaultValue&&!this.readsValue&&!this.project.diggestedBuiltInBaseEntitiesIds.has(this.id)&&this.project.diggestedBuiltInBaseEntitiesIds.has(this.defaultValue.id)){const b=this.defaultValue.clone(i,this);this.setDefaultValue(b,i)}const{updated:f,added:h,removed:m,affected:E}=this.syncInputs(i);return r.push(...f),a.push(...h),c.push(...m),e.push(...E),this.outputs.sort((b,A)=>(b.index||0)-(A.index||0)),i==null||i.attemptAutoclose(w.AfterAllChildrenInitialized,this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}addSelfToProject(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"add-self-to-project"))){var f;const r=[this],a=[],c=[],e=[];return this.readsValue&&(this.readsValue.addValueReader(this,i),r.push(this.readsValue)),this.calledByEntry.forEach(h=>{h.addCall(this,i),r.push(h)}),this.calledBySuccess.forEach(h=>{h.addSuccessCall(this,i),r.push(h)}),this.calledByError.forEach(h=>{h.addErrorCall(this,i),r.push(h)}),this.parent.addReturnStatement(this),e.push(this.parent),i==null||i.add(this.parent,W.Affected),(f=this.parent)==null||f.returnStatements.forEach(h=>{h.id!==this.id&&(e.push(h),i==null||i.add(h,W.Affected))}),this.subscribe(),this.subscribeToDependencies(),i==null||i.attemptAutoclose("add-self-to-project",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}get calledBy(){return[...this.calledByEntry,...this.calledBySuccess,...this.calledByError]}addSuccessCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddSuccessCaller)),a=!1){var c;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddSuccessCaller,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddSuccessCaller}-${this.id}--${Me.CannotSuccessCallItself}`,action:w.AddSuccessCaller,owner:this,errorReason:Me.CannotSuccessCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddSuccessCaller})),this.calledBySuccess.find(e=>e.id===i.id)||(this.calledBySuccess.push(i),r==null||r.add(this,W.Updated),a&&bt(this,r)),r==null||r.attemptAutoclose(w.AddSuccessCaller,this.id),this):this}addErrorCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddErrorCaller)),a=!1){var c;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddErrorCaller,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddErrorCaller}-${this.id}--${Me.CannotErrorCallItself}`,action:w.AddErrorCaller,owner:this,errorReason:Me.CannotErrorCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddErrorCaller})),this.calledByError.find(e=>e.id===i.id)||(this.calledByError.push(i),r==null||r.add(this,W.Updated),a&&bt(this,r)),r==null||r.attemptAutoclose(w.AddErrorCaller,this.id),this):this}addEntryCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddEntryCaller)),a=!1){var c;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddEntryCaller,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddEntryCaller}-${this.id}--${Me.CannotEntryCallItself}`,action:w.AddEntryCaller,owner:this,errorReason:Me.CannotEntryCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddEntryCaller})),this.calledByEntry.find(e=>e.id===i.id)||(this.calledByEntry.push(i),r==null||r.add(this,W.Updated),a&&bt(this,r)),r==null||r.attemptAutoclose(w.AddEntryCaller,this.id),this):this}removeCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"remove-caller")),a=!1){return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.RemoveCaller,r)?(this.calledBySuccess=this.calledBySuccess.filter(c=>c.id!==i.id?!0:(r==null||r.add(this,W.Updated),r==null||r.add(c,W.Affected),!1)),this.calledByError=this.calledByError.filter(c=>c.id!==i.id?!0:(r==null||r.add(this,W.Updated),r==null||r.add(c,W.Affected),!1)),this.calledByEntry=this.calledByEntry.filter(c=>c.id!==i.id?!0:(r==null||r.add(this,W.Updated),r==null||r.add(c,W.Affected),!1)),a&&bt(this,r),r==null||r.attemptAutoclose(w.RemoveCaller,this.id),this):this}setThrows(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"set-throws"))){var a,c,e;if(!this.checkCanEdit(this,r))return z.Logger.warn(`[setThrows] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("set-throws",this.id),this;if(i!==null&&i.parentRelationType!==dd.Error)throw new Error("The 'throws' InputMap must have a parentRelationType of 'Error'.");return((a=this.throws)==null?void 0:a.id)!==(i==null?void 0:i.id)&&(this.throws=i,r==null||r.add(this,W.Updated),this.throws&&((c=this.readsValue)==null||c.removeValueReader(this,r),this.setValueWriter(null,r),(e=this.defaultValue)==null||e.remove({ignoreUpstream:!1},r))),r==null||r.attemptAutoclose("set-throws",this.id),this}addOutput(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"add-output"))){return this.checkCanEdit(this,r)?this.outputs.includes(i)?(r==null||r.attemptAutoclose("add-output",this.id),this):(this.outputs.push(i),r==null||r.add(this,W.Affected),r==null||r.attemptAutoclose("add-output",this.id),this):(z.Logger.warn(`[addOutput] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("add-output",this.id),this)}removeOutput(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"remove-output"))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[removeOutput] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("remove-output",this.id),this;const a=this.outputs.findIndex(c=>c.id===i.id);return a>-1&&(this.outputs.splice(a,1),r&&(r==null||r.add(this,W.Affected))),r==null||r.attemptAutoclose("remove-output",this.id),this}setParent(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetParent))){var a;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.SetParent,r)?(((a=this.parent)==null?void 0:a.id)!==(i==null?void 0:i.id)&&(this.parent=i,r&&(r==null||r.add(this,W.Updated))),r==null||r.attemptAutoclose(w.SetParent,this.id),this):this}setValueWriter(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetValueWriter))){var a,c,e,f;return this.checkCanEditFromScopeOwnerWithSideEffects(this,w.SetValueWriter,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.SetValueWriter}-${this.id}--${Me.CannotValueWriteItself}`,action:w.SetValueWriter,owner:this,errorReason:Me.CannotValueWriteItself,rootAction:((a=r==null?void 0:r.self)==null?void 0:a.id)===this.id&&(r==null?void 0:r.actionName)===w.SetValueWriter})),((c=this.readsValue)==null?void 0:c.id)!==(i==null?void 0:i.id)&&(this.readsValue=i,this.readsValue&&((e=this.defaultValue)==null||e.remove({ignoreUpstream:!1},r)),this.readsValue&&((f=this.throws)==null||f.remove({ignoreUpstream:!1},r),this.setThrows(null,r)),r==null||r.add(this,W.Updated)),r==null||r.attemptAutoclose(w.SetValueWriter,this.id),this):this}removeValueWriter(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveValueWriter))){return this.readsValue&&!this.checkCanEditWithCounterpartAndSideEffects(this,this.readsValue,w.RemoveValueWriter,i)?this:(this.readsValue&&(this.readsValue=null,i==null||i.add(this,W.Updated)),i==null||i.attemptAutoclose(w.RemoveValueWriter,this.id),this)}initChildren(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"init-children"))){return this.initialized||this.startedInitialization?this:(this.startedInitialization=!0,this.initialData.defaultValue&&(this.defaultValue=Ie(this.initialData.defaultValue,this.project),this.defaultValue.setParent(this,null),this.defaultValue.initChildren(i)),this.initialData.dataType&&(this.setDataType(Ie(this.initialData.dataType,this.project),i),this.dataType.setParent(this,null),this.dataType.initChildren(i)),uy.initReadsValue(this),this.outputs=this.initialData.outputs.map(r=>{const a=Ie(r,this.project);return a.setParent(this,null),a.initChildren(i),a}),this.initialData.throws&&(this.throws=Ie(this.initialData.throws,this.project),this.throws.setParent(this,null),this.throws.initChildren(i)),this.subscribeToDependencies(),this.afterAllChildrenInitialized(i),i==null||i.attemptAutoclose("init-children",this.id),this)}subscribe(){var i;return this.activeVersion=!0,(i=this.knownVersions)==null||i.forEach(r=>{r.version!==this.version&&(r.activeVersion=!1)}),this.project.subscribeInstance(this),this}unsubscribe(){return this.project.unsubscribeInstance(this),this}metaSync(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"meta-sync"))){const a=tn(this,i,r),c=en(this,a),e=this.toMeta();return this.x=a.x||e.x,this.y=a.y||e.y,super.baseMetaSync(a,this,r),a.deleted===!0&&!e.deleted?r==null||r.add(this,W.Removed):a.deleted===!1&&e.deleted?r==null||r.add(this,W.Added):c&&(r==null||r.add(this,W.Updated)),r==null||r.attemptAutoclose("meta-sync",this.id),this}async APILoad(i=Ke,...r){return await ki.repository.APILoad(this.id,...r),this}async APICreate(i=Ke,...r){return await ki.repository.APICreate(this.toShallowJSON(),...r),this}async APIUpdate(i=Ke,...r){return await ki.repository.APIUpdate(this.toShallowJSON(),...r),this}async APIDelete(i=Ke,...r){return await ki.repository.APIDelete(this.toShallowJSON(),...r),this}async APIClone(i=Ke,...r){return await ki.repository.APIClone(this.id,...r),this}async APILoadVersion(i=Ke,r,...a){return await ki.repository.APILoadVersion(this.id,r,...a)}removeFromParent(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveFromParent))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[removeFromParent] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveFromParent,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];return this.parent.removeReturnStatement(this),e.push(this.parent),i==null||i.attemptAutoclose(w.RemoveFromParent,this.id),{added:C(c),updated:C(r),removed:C(a),affected:C(e),self:this}}remove({ignoreUpstream:i}={ignoreUpstream:!1},r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveEntity))){var h,m;if(!this.checkCanDelete(this,r))return z.Logger.warn(`[remove] User is not allowed to delete or edit this ${this.type} entity with id: ${this.id}`),r==null||r.event({id:`${w.RemoveEntity}-${this.id}--${Me.ActionOwnerEntityNonDeletable}`,action:w.RemoveEntity,owner:this,errorReason:Me.ActionOwnerEntityNonDeletable,rootAction:((h=r==null?void 0:r.self)==null?void 0:h.id)===this.id&&(r==null?void 0:r.actionName)===w.RemoveEntity}),r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const a=[],c=[],e=[],f=[];if(r!=null&&r.hasRemoved(this.id))return r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};if(c.push(this),this.unsubscribe(),this.unsubscribeFromDependencies(),this.project.subscribeDeletedInstance(this),this.metaSync({deleted:!0},r),Object.values(this.detachedDependents).forEach(E=>{const{updated:b,removed:A,added:_}=E.entity.onDetachedDependencyRemoved(this,E.field,r);a.push(...b),c.push(...A),e.push(..._)}),this.readsValue&&(a.push(this.readsValue),this.readsValue.removeValueReader(this,r)),this.outputs.forEach(E=>{const{updated:b,removed:A}=E.remove({ignoreUpstream:!0},r);a.push(...b),c.push(...A)}),this.throws){const{updated:E,removed:b}=this.throws.remove({ignoreUpstream:!0},r);a.push(...E),c.push(...b)}if(this.dataType){const{updated:E,removed:b}=this.dataType.remove({ignoreUpstream:!0},r);a.push(...E),c.push(...b)}if(!i){const E=this.removeFromParent(r);e.push(...E.added),a.push(...E.updated),c.push(...E.removed),f.push(...E.affected),this.calledBy.forEach(b=>{a.push(b),b.removeCall(this,r)})}return r==null||r.add(this.parent,W.Affected),(m=this.parent)==null||m.returnStatements.forEach(E=>{E.id!==this.id&&(f.push(E),r==null||r.add(E,W.Affected))}),r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:C(e),updated:C(a),removed:C(c),affected:C(f),self:this}}restore({}={},i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RestoreEntity))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[restore] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RestoreEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];if(i!=null&&i.hasAdded(this.id))return i==null||i.attemptAutoclose(w.RestoreEntity,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(f=>{const{updated:h,removed:m,added:E}=f.entity.onDetachedDependencyRestored(this,f.field,i);a.push(...h),c.push(...m),r.push(...E)}),this.readsValue&&(a.push(this.readsValue),this.readsValue.addValueReader(this,i)),this.outputs.forEach(f=>{const{updated:h}=f.restore({},i);a.push(...h)}),this.throws){const{updated:f}=this.throws.restore({},i);a.push(...f)}if(this.dataType){const{updated:f}=this.dataType.restore({},i);a.push(...f)}return this.parent.addReturnStatement(this),this.calledBySuccess.forEach(f=>{a.push(f),f.addSuccessCall(this,i)}),this.calledByError.forEach(f=>{a.push(f),f.addErrorCall(this,i)}),this.calledByEntry.forEach(f=>{a.push(f),f.addCall(this,i)}),i==null||i.attemptAutoclose(w.RestoreEntity,this.id),{added:C(r),updated:C(a),removed:C(c),affected:C(e),self:this}}toFlat(i=new Set){return i.has(this.id)?[]:(i.add(this.id),[this,...this.outputs.flatMap(a=>a.toFlat(i)),...this.throws?this.throws.toFlat(i):[],...this.dataType?this.dataType.toFlat(i):[]])}toFlatIds(i=new Set){return i.has(this.id)?[]:(i.add(this.id),[this.id,...this.outputs.flatMap(a=>a.toFlatIds(i)),...this.throws?this.throws.toFlatIds(i):[],...this.dataType?this.dataType.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,editable:this.editable,deletable:this.deletable}}toJSON(i=new Set){var r,a,c,e,f;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,editable:this.editable,deletable:this.deletable,x:this.x,y:this.y,defaultValue:((r=this.defaultValue)==null?void 0:r.toJSON(i))||null,dataType:((a=this.dataType)==null?void 0:a.toJSON(i))||null,readsValue:((c=this.readsValue)==null?void 0:c.toReference())||null,calledBySuccess:this.calledBySuccess.map(h=>h.toReference()),calledByError:this.calledByError.map(h=>h.toReference()),calledByEntry:this.calledByEntry.map(h=>h.toReference()),outputs:this.outputs.map(h=>h.toJSON(i)),parent:((e=this.parent)==null?void 0:e.toReference())||null,throws:((f=this.throws)==null?void 0:f.toJSON(i))||null})}toJSONClone(i=at){var a,c,e,f,h,m,E,b,A,_;let r;return(a=i.seenEntityMaps)!=null&&a.has(this.id)?r=i.seenEntityMaps.get(this.id):(r=i.newId||dn(this,this.project,i.uuidStrategy),i.seenEntityMaps&&i.seenEntityMaps.set(this.id,r)),(c=i.seenEntities)!=null&&c.has(r)||(e=i.seenEntities)!=null&&e.has(this.id)?this.toReference({seenEntityMaps:i.seenEntityMaps}):((f=i.seenEntities)==null||f.add(r),(h=i.seenEntities)==null||h.add(this.id),{id:r,version:x.UUID.uuid(),createdAt:i.timestamp||B().toISOString(),previousVersion:null,author:this.author,deleted:this.deleted,type:this.type,editable:this.editable,deletable:this.deletable,x:this.x,y:this.y,defaultValue:((m=this.defaultValue)==null?void 0:m.toJSONClone({...i,newId:null}))||null,dataType:((E=this.dataType)==null?void 0:E.toJSONClone({...i,newId:null}))||null,readsValue:((b=this.readsValue)==null?void 0:b.toReference({seenEntityMaps:i.seenEntityMaps}))||null,calledBySuccess:this.calledBySuccess.map(P=>P.toReference({seenEntityMaps:i.seenEntityMaps})),calledByError:this.calledByError.map(P=>P.toReference({seenEntityMaps:i.seenEntityMaps})),calledByEntry:this.calledByEntry.map(P=>P.toReference({seenEntityMaps:i.seenEntityMaps})),outputs:this.outputs.map(P=>P.toJSONClone({...i,newId:null})),parent:((A=this.parent)==null?void 0:A.toReference({seenEntityMaps:i.seenEntityMaps}))||null,throws:((_=this.throws)==null?void 0:_.toJSONClone({...i,newId:null}))||null})}toReference(i=at){var a;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r+"--"+x.UUID.uuid()+"--ref",type:d.GenericReference,entityId:r,version:this.version,entityType:this.type}}toShallowJSON(i=at){var a,c,e,f,h,m;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r,version:this.version,createdAt:this.createdAt,previousVersion:this.previousVersion,author:this.author,deleted:this.deleted,type:this.type,editable:this.editable,deletable:this.deletable,x:this.x,y:this.y,defaultValue:((c=this.defaultValue)==null?void 0:c.toReference(i))||null,dataType:((e=this.dataType)==null?void 0:e.toReference(i))||null,readsValue:((f=this.readsValue)==null?void 0:f.toReference(i))||null,outputs:this.outputs.map(E=>E.toReference(i)),calledBySuccess:this.calledBySuccess.map(E=>E.toReference(i)),calledByError:this.calledByError.map(E=>E.toReference(i)),calledByEntry:this.calledByEntry.map(E=>E.toReference(i)),throws:((h=this.throws)==null?void 0:h.toReference(i))||null,parent:((m=this.parent)==null?void 0:m.toReference(i))||null}}toFlatJSON(i=new Set){var a,c;return i.has(this.id)?[]:(i.add(this.id),[this.toShallowJSON(),...((a=this.defaultValue)==null?void 0:a.toFlatJSON(i))||[],...((c=this.dataType)==null?void 0:c.toFlatJSON(i))||[],...this.outputs.flatMap(e=>e.toFlatJSON(i)),...this.throws?this.throws.toFlatJSON(i):[]])}toGenerationTarget(i=at){var a;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r,type:this.type,calledByEntry:this.calledByEntry.map(c=>c.id),calledByError:this.calledByError.map(c=>c.id),calledBySuccess:this.calledBySuccess.map(c=>c.id),parent:this.parent.id}}toFlatGenerationTarget(i=new Set){var a,c;return i.has(this.id)?[]:(i.add(this.id),[this.toGenerationTarget(),...((a=this.defaultValue)==null?void 0:a.toFlatGenerationTarget(i))||[],...((c=this.dataType)==null?void 0:c.toFlatGenerationTarget(i))||[],...this.outputs.flatMap(e=>e.toFlatGenerationTarget(i)),...this.throws?this.throws.toFlatGenerationTarget(i):[]])}clearErrors(){var i,r,a;return this.errors=[],(i=this.dataType)==null||i.clearErrors(),(r=this.defaultValue)==null||r.clearErrors(),this.outputs.forEach(c=>c.clearErrors()),(a=this.throws)==null||a.clearErrors(),this}validate(){return this.errors=z_e(this),{success:!0}}async validateAsync(i={}){const r=z.YieldTracker.from(i);return this.errors=await W_e(this,{tracker:r}),{success:!0}}getErrors(){var r,a,c;return[...this.errors,...((r=this.defaultValue)==null?void 0:r.getErrors())||[],...((a=this.dataType)==null?void 0:a.getErrors())||[],...this.outputs.flatMap(e=>e.getErrors()),...((c=this.throws)==null?void 0:c.getErrors())||[]]}async getErrorsAsync(i={}){const r=z.YieldTracker.from(i),a=[...this.errors];if(await r.tick(),this.defaultValue){const c=await this.defaultValue.getErrorsAsync({tracker:r});a.push(...c)}if(this.dataType){const c=await this.dataType.getErrorsAsync({tracker:r});a.push(...c)}for(const c of this.outputs){const e=await c.getErrorsAsync({tracker:r});a.push(...e)}if(this.throws){const c=await this.throws.getErrorsAsync({tracker:r});a.push(...c)}return a}getShallowErrors(){return this.errors}getDefaultValue(){return this.defaultValue||null}setDefaultValue(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"set-default-value"))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[setDefaultValue] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("set-default-value",this.id),this;const a=this.defaultValue;if((a==null?void 0:a.id)!==(i==null?void 0:i.id)){if(a==null||a.remove({ignoreUpstream:!0},r),this.defaultValue=i,this.defaultValue){const c=this.readsValue;this.removeValueWriter(r),c==null||c.removeValueReader(this,r)}r==null||r.add(this,W.Affected)}return r==null||r.attemptAutoclose("set-default-value",this.id),this}clone(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.CloneEntity)),r=null,a=null,c=!0){var V,G,M;const e=Fr(r,this),f=this.toJSON(),h=a||x.UUID.uuid();f.outputs=[];const m=h.split("-id"),E=m[m.length-1||0]||h;f.id=h,f.version=x.UUID.uuid(),f.createdAt=(i==null?void 0:i.timestamp)||B().toISOString(),f.author=(i==null?void 0:i.author)||"1",f.previousVersion=null,f.deleted=!1,f.deletable=!0,f.editable=!0;const b=lr(f,e);r?b.setParent(r,i):b.setParent(this.parent,null),c&&b.subscribe(),b.initChildren(i),i==null||i.add(b,W.Added);const A=(V=this.dataType)==null?void 0:V.clone(i,b,x.UUID.uuid(),c);b.setDataType(A||null,i);const _=(G=this.defaultValue)==null?void 0:G.clone(i,b,x.UUID.uuid(),c);b.setDefaultValue(_||null,i);const P=(M=this.outputs)==null?void 0:M.map((k,K)=>k.clone(i,b,E+"-return-declaration-"+K+"-id",c));return b.outputs=P,this.throws&&(b.throws=this.throws.clone(i,b,E+"-throws-id",c)),i||b.captureVersion(),i==null||i.attemptAutoclose(w.CloneEntity,this.id),b}removeUnrecognizedInputs(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveUnrecognizedInputs))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[removeUnrecognizedInputs] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveUnrecognizedInputs,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[],f=this.getDataType(null);return f&&!f.isObject()?[...this.outputs].forEach(m=>{const E=m.remove({ignoreUpstream:!1},i);c.push(...E.removed),r.push(...E.updated)}):f&&f.hasStrictObjectStructure()&&[...this.outputs].forEach(m=>{if(!m.declaration){const b=m.remove({ignoreUpstream:!1},i);c.push(...b.removed),r.push(...b.updated);return}if(![...(f==null?void 0:f.entity).allProperties].find(b=>{var A,_,P;return((A=m.declaration)==null?void 0:A.id)===b.id||!!((_=m.declaration.implements)!=null&&_.find(V=>V.id))||((P=m.declaration.extends)==null?void 0:P.id)==b.id})){const b=m.remove({ignoreUpstream:!1},i);c.push(...b.removed),r.push(...b.updated)}}),this.outputs.filter((m,E)=>{const b=this.outputs.findIndex(_=>_.declaration===m.declaration&&_!==m);if(b===-1)return!1;const A=this.outputs[b];return B(A==null?void 0:A.createdAt).isSame(B(m.createdAt))?E>b:!!B(A==null?void 0:A.createdAt).isAfter(m.createdAt)}).forEach(m=>{const E=m.remove({ignoreUpstream:!1},i);c.push(...E.removed),r.push(...E.updated)}),i==null||i.attemptAutoclose(w.RemoveUnrecognizedInputs,this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}syncInputs(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"sync-returned-inputs"))){const r=[],a=[],c=[],e=[];if(this.throws&&this.outputs.length&&(!this.parent.implements||this.parent.implements.error))return[...this.outputs].forEach(b=>{var A;if(b.id!==((A=this.throws)==null?void 0:A.id)){const{updated:_,removed:P}=b.remove({ignoreUpstream:!0},i);r.push(..._),c.push(...P),this.removeOutput(b,i)}}),i==null||i.attemptAutoclose("sync-returned-inputs",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this};const f=this.getDataType(null);if(f){const b=[];f!=null&&f.entity&&(f.entity.type===d.DefinitionEntity||f.entity.type===d.BuiltInBaseEntity)&&(f!=null&&f.entity.properties.length)?b.push(f==null?void 0:f.entity):((f==null?void 0:f.orChildrenGroup)||[]).forEach(k=>{k.entity&&(k.entity.type===d.DefinitionEntity||k.entity.type===d.BuiltInBaseEntity)&&k.entity.properties.length&&b.push(k.entity)});const A=b[0],_=(A==null?void 0:A.type)===d.DefinitionEntity||(A==null?void 0:A.type)===d.BuiltInBaseEntity?A.properties:[];_.filter(k=>Dh(k)&&!this.outputs.find(K=>{var ne;return((ne=K.declaration)==null?void 0:ne.id)===k.id&&(K.declaration.type===d.ValueDescriptor?K.declaration.parentRelationType!==j.ReturnedError:!0)})).forEach(k=>{const K=k.implementAsInputMap(i,this);a.push(K)}),[...this.outputs].forEach(k=>{if(!_.find(ne=>{var X;return((X=k.declaration)==null?void 0:X.id)===ne.id&&(k.declaration.type===d.ValueDescriptor?k.declaration.parentRelationType!==j.ReturnedError:!0)})){const{updated:ne,removed:X}=k.remove({ignoreUpstream:!1},i);r.push(...ne),c.push(...X),this.removeOutput(k,i)}if(!_g(k)){const{updated:ne,removed:X}=k.remove({ignoreUpstream:!1},i);r.push(...ne),c.push(...X),this.removeOutput(k,i)}});const{updated:V,added:G,removed:M}=this.removeUnrecognizedInputs(i);return r.push(...V),a.push(...G),c.push(...M),i==null||i.attemptAutoclose("sync-returned-inputs",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}const{updated:h,added:m,removed:E}=this.removeUnrecognizedInputs(i);return r.push(...h),a.push(...m),c.push(...E),this.outputs.forEach(b=>{const{updated:A,added:_,removed:P}=b.afterAllChildrenInitialized(i);r.push(...A),a.push(..._),c.push(...P)}),this.outputs.sort((b,A)=>b.index-A.index),i==null||i.attemptAutoclose("sync-returned-inputs",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}setDataType(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetDataType))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[setDataType] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.SetDataType,this.id),this;const a=this.dataType;return(a==null?void 0:a.id)!==(i==null?void 0:i.id)&&(a==null||a.remove({ignoreUpstream:!0},r),this.dataType=i,this.subscribeToDependencies(),r==null||r.add(this,W.Affected)),r==null||r.attemptAutoclose(w.SetDataType,this.id),this}removeDataType(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveDataType))){return this.checkCanEdit(this,i)?(this.dataType&&(this.dataType.remove({ignoreUpstream:!0},i),i==null||i.add(this,W.Affected),this.dataType=null),i==null||i.attemptAutoclose(w.RemoveDataType,this.id),this):(z.Logger.warn(`[removeDataType] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveDataType,this.id),this)}getDataType(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"get-data-type"))){var c,e;if((!this.dataType||this.dataType.inferred)&&this.project.initialized,this.dataType)return i==null||i.attemptAutoclose("get-data-type",this.id),this.dataType;if(this.parent.type===d.GlobalEvent){const f=(c=this.parent.implements)==null?void 0:c.dataType;return i==null||i.attemptAutoclose("get-data-type",this.id),f||null}const r=this.parent.dataType;if(r)return i==null||i.attemptAutoclose("get-data-type",this.id),r;const a=(e=this.parent.implements)==null?void 0:e.dataType;return i==null||i.attemptAutoclose("get-data-type",this.id),a||null}};R(ki,"repository",{APICreate:async(i,...r)=>i,APIUpdate:async(i,...r)=>i,APIDelete:async(i,...r)=>i,APIClone:async(i,...r)=>{},APILoad:async(i,...r)=>null,APILoadVersion:async(i,r,...a)=>null}),R(ki,"type",d.ReturnStatement),R(ki,"USER_MANAGED_PARENT_TYPES",[...Dr]),R(ki,"PARENT_TYPES",[...ki.USER_MANAGED_PARENT_TYPES]),R(ki,"MUTABLE_BASE_PROPERTIES",[]),R(ki,"INMUTABLE_BASE_PROPERTIES",["id","type","version","createdAt","author","previousVersion"]),R(ki,"BASE_PROPERTIES",[...ki.MUTABLE_BASE_PROPERTIES,...ki.INMUTABLE_BASE_PROPERTIES]),R(ki,"MUTABLE_META_PROPERTIES",["x","y"]),R(ki,"INMUTABLE_META_PROPERTIES",[...ki.INMUTABLE_BASE_PROPERTIES]),R(ki,"META_PROPERTIES",[...ki.MUTABLE_META_PROPERTIES,...ki.INMUTABLE_META_PROPERTIES]),R(ki,"MUTABLE_UPSTREAM_PROPERTIES",["calledBySuccess","calledByError","calledByEntry","readsValue"]),R(ki,"INMUTABLE_UPSTREAM_PROPERTIES",["parent"]),R(ki,"UPSTREAM_PROPERTIES",[...ki.MUTABLE_UPSTREAM_PROPERTIES,...ki.INMUTABLE_UPSTREAM_PROPERTIES]),R(ki,"MUTABLE_DOWNSTREAM_PROPERTIES",["outputs","throws"]),R(ki,"INMUTABLE_DOWNSTREAM_PROPERTIES",["dataType","defaultValue"]),R(ki,"DOWNSTREAM_PROPERTIES",[...ki.MUTABLE_DOWNSTREAM_PROPERTIES,...ki.INMUTABLE_DOWNSTREAM_PROPERTIES]),R(ki,"PROPERTIES",[...ki.META_PROPERTIES,...ki.UPSTREAM_PROPERTIES,...ki.DOWNSTREAM_PROPERTIES]);let su=ki;async function Y_e(s,p={}){const i=z.YieldTracker.from(p),r=Q_e(s),a=zE(s),c=[...r,...a],e=qt(s.errors,c);await i.tick();const f=await py(s,{tracker:i});for(const h of s.inputs)await h.validateAsync({tracker:i});for(const h of f)await h.validateAsync({tracker:i});return e}function J_e(s){const p=ml(s);s.inputs.forEach(r=>r.validate()),p.forEach(r=>r.validate());const i=[...zE(s),...Q_e(s)];return qt(s.errors,i)}function Q_e(s){const p=[];if(!s.calls.length){const i=It({id:`${s.id}--${be.ScopeWithoutLogic}`,message:`Action "${oe(s,s.project)}" with id "${s.id}" does not have any logic defined. So it doesn't do anything.`,severity:ve.Warning,code:be.ScopeWithoutLogic,entity:s});p.push(i.error)}return qt(s.errors,p)}const Lgi=Object.freeze(Object.defineProperty({__proto__:null,validate:J_e,validateAsync:Y_e},Symbol.toStringTag,{value:"Module"})),Ii=class Ii extends un{constructor(i,r){super(i);R(this,"initialData");R(this,"id");R(this,"name");R(this,"description",null);R(this,"x");R(this,"y");R(this,"collapsed");R(this,"type",d.GlobalEvent);R(this,"inputs",[]);R(this,"calls",[]);R(this,"parent");R(this,"implements");R(this,"detachedChildren",[]);R(this,"errors",[]);R(this,"project");R(this,"detachedDependents",{});R(this,"knownVersions",null);R(this,"activeVersion",!1);R(this,"initialized",!1);R(this,"startedInitialization",!1);this.initialData=i,this.project=r,this.id=i.id,this.name=i.name,this.description=i.description,this.x=i.x,this.y=i.y,this.collapsed=i.collapsed}static new(i=null){return{id:x.UUID.uuid(),version:x.UUID.uuid(),createdAt:(i==null?void 0:i.timestamp)||B().toISOString(),author:(i==null?void 0:i.author)||x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.GlobalEvent,name:"",description:"",collapsed:!1,implements:null,inputs:[],parent:null,calls:[],x:0,y:0}}static fromGenerationTarget(i,r,a){const c=a===void 0?r.addChangeSet(new S(r,x.sessionAuthor,B().toISOString(),r,!0,w.CreateFromGenerationTarget)):a;let e=r;if(i.parent){const E=te(i.parent);e=r.get(E)}let f;i.implements&&(f=r.getBuiltIn(i.implements));const h={id:i.id,version:x.UUID.uuid(),createdAt:(c==null?void 0:c.timestamp)||B().toISOString(),author:(c==null?void 0:c.author)||x.sessionAuthor,previousVersion:null,deleted:!1,name:i.name,description:i.description||null,deletable:!0,editable:!0,type:d.GlobalEvent,collapsed:!1,calls:[],inputs:[],implements:f,x:0,y:0,parent:e.toReference()},m=Ie(h,r);return m.hydrateAncestors(),m.setParent(e,c),m.addSelfToProject(c),c==null||c.add(m,W.Added),m.initChildren(c),c||m.captureVersion(),m}static validateGenerationTarget(i,r){let a=JSON.parse(JSON.stringify(i));const c=[],e=[],f=Bn(a,{},r);c.push(...f.explanations),a=f.modifiedData;const h=Xr(a);if(e.push(...f.errors,...h.errors),c.push(...h.explanations),!i.implements)e.push(new we({id:`${i.id}--${Ce.InvalidObjectStructure}`,code:Ce.InvalidObjectStructure,severity:ve.Error,message:`Entity of type '${i.type}' with id '${i.id}' is missing the 'implements' property. This property is required for a '${i.type}' entity and must point to one of the built-in action descriptors reserved for 'global-event' entities.`})),c.push({id:Qi.AllGlobalEventsActionDescriptors,message:bg(r)});else if(!r.get(i.implements))e.push(new we({id:`${i.id}--${Te.ReferencedEntityNotFound}`,code:Te.ReferencedEntityNotFound,severity:ve.Error,message:`Entity of type '${i.type}' with id '${i.id}' has an 'implements' property that isn't found in the project. The 'implements' property must point to one of the built-in action descriptors reserved for 'global-event' entities.`})),c.push({id:Qi.AllGlobalEventsActionDescriptors,message:bg(r)});else if(!r.globalEventActionDescriptors.find(b=>b.id===i.implements))e.push(new we({id:`${i.id}--${Te.InvalidImplementsReference}`,code:Te.InvalidImplementsReference,severity:ve.Error,message:`Entity of type '${i.type}' with id '${i.id}' has an 'implements' property that isn't pointing to an action descriptor reserved for 'global-event' entities.`})),c.push({id:Qi.AllGlobalEventsActionDescriptors,message:bg(r)});else{const b=r.events.find(A=>A.implements.id===i.implements);b&&e.push(new we({id:`${i.id}--${Te.InvalidImplementsReference}`,code:Te.InvalidImplementsReference,severity:ve.Error,message:`Entity of type '${i.type}' with id '${i.id}' has an 'implements' property that points to an action descriptor that is already implemented by another global event with id '${b.id}' in the project. Each global event must implement a unique action descriptor.
|
|
43
|
+
Specifically for return statements the parent needs to always be the 'function-declaration' or 'global-event' that contains it.`})),{errors:r,explanations:a,modifiedData:i}}subscribeDependents(i){return i.forEach(r=>{this.detachedDependents[r.entity.id]||(this.detachedDependents[r.entity.id]=r)}),this}unsubscribeDependents(i){return i.forEach(r=>{this.detachedDependents[r.entity.id]&&delete this.detachedDependents[r.entity.id]}),this}syncDependents(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"sync-dependents"))){const r=[],a=[],c=[],e=[];return Object.values(this.detachedDependents).forEach(f=>{const h=f.entity.afterAllChildrenInitialized(i);r.push(...h.updated),a.push(...h.added),c.push(...h.removed),e.push(...h.affected)}),i==null||i.attemptAutoclose("sync-dependents",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}onDetachedDependencyRemoved(i,r,a){const c=[],e=[],f=[],h=[];if(r==="return-statement-parent-field"){const{updated:m,added:E,removed:b}=this.remove({ignoreUpstream:!1},a);c.push(...m),e.push(...E),f.push(...b)}if(r==="return-statement-parent-data-type-field"){const{updated:m,added:E,removed:b}=this.afterAllChildrenInitialized(a);c.push(...m),e.push(...E),f.push(...b)}if(r==="return-statement-parent-data-type-entity-field"){const{updated:m,added:E,removed:b}=this.afterAllChildrenInitialized(a);c.push(...m),e.push(...E),f.push(...b)}return{updated:C(c),added:C(e),removed:C(f),affected:C(h),self:this}}onDetachedDependencyRestored(i,r,a){const c=[],e=[],f=[],h=[];if(r==="return-statement-parent-field"){const{updated:m,added:E,removed:b}=this.restore({},a);c.push(...m),e.push(...E),f.push(...b)}if(r==="return-statement-parent-data-type-field"){const{updated:m,added:E,removed:b}=this.afterAllChildrenInitialized(a);c.push(...m),e.push(...E),f.push(...b)}if(r==="return-statement-parent-data-type-entity-field"){const{updated:m,added:E,removed:b}=this.afterAllChildrenInitialized(a);c.push(...m),e.push(...E),f.push(...b)}return{updated:C(c),added:C(e),removed:C(f),affected:C(h),self:this}}unsubscribeFromDependencies(){var i,r,a,c,e,f,h,m,E,b,A,_,P;return(i=this.parent)==null||i.unsubscribeDependents([{entity:this,field:"return-statement-parent-field"}]),(c=(a=(r=this.dataType)==null?void 0:r.entity)==null?void 0:a.unsubscribeDependents)==null||c.call(a,[{entity:this,field:"return-statement-data-type-entity-field"}]),(f=(e=this.dataType)==null?void 0:e.unsubscribeDependents)==null||f.call(e,[{entity:this,field:"return-statement-data-type-field"}]),(b=(E=(m=(h=this.parent)==null?void 0:h.dataType)==null?void 0:m.entity)==null?void 0:E.unsubscribeDependents)==null||b.call(E,[{entity:this,field:"return-statement-parent-data-type-entity-field"}]),(P=(_=(A=this.parent)==null?void 0:A.dataType)==null?void 0:_.unsubscribeDependents)==null||P.call(_,[{entity:this,field:"return-statement-parent-data-type-field"}]),this}subscribeToDependencies(){var i,r,a,c,e,f,h,m,E,b,A,_,P;return(i=this.parent)==null||i.subscribeDependents([{entity:this,field:"return-statement-parent-field"}]),(c=(a=(r=this.dataType)==null?void 0:r.entity)==null?void 0:a.subscribeDependents)==null||c.call(a,[{entity:this,field:"return-statement-data-type-entity-field"}]),(f=(e=this.dataType)==null?void 0:e.subscribeDependents)==null||f.call(e,[{entity:this,field:"return-statement-data-type-field"}]),(b=(E=(m=(h=this.parent)==null?void 0:h.dataType)==null?void 0:m.entity)==null?void 0:E.subscribeDependents)==null||b.call(E,[{entity:this,field:"return-statement-parent-data-type-entity-field"}]),(P=(_=(A=this.parent)==null?void 0:A.dataType)==null?void 0:_.subscribeDependents)==null||P.call(_,[{entity:this,field:"return-statement-parent-data-type-field"}]),this}increaseVersion(i){var r;if(this.project.diggestedBuiltInBaseEntitiesIds.has(this.id))return this;if(i&&!B(i).isValid())throw new Error(`The shared timestamp '${i}' is not a valid ISO 8601 date string.`);if(i&&B(i).isSame(B(this.createdAt)))return this;if(!((r=this.knownVersions)!=null&&r.has(this.version))&&this.project.initialized)throw new Error(`The current ${this.type} ${this.id} version '${this.version}' is not captured in the 'knownVersions' map. Capture the current version before increasing it to avoid losing data.`);if(!this.activeVersion)throw new Error(`Only active versions can be increased. Entity with id '${this.id}' and version '${this.version}' is not active.`);return this.previousVersion=this.version,this.version=x.UUID.uuid(),this.createdAt=B(i).toISOString()||B().toISOString(),this}captureVersion(){var r;const i=((r=this.knownVersions)==null?void 0:r.get(this.version))||new ki(this,this.project);if(!this.activeVersion)throw new Error(`Only active versions can be captured. Entity of type ${this.type} with id '${this.id}' and version '${this.version}' is not active.`);if(this.version!==i.version)throw new Error(`Captured ${this.type} with id '${this.id}', version '${i.version}' does not match current entity version '${this.version}'.`);return this.knownVersions=this.knownVersions?this.knownVersions.set(this.version,i):new Map().set(this.version,i),this.apply(i),this}snapshot(){const i=new ki(this,this.project);return this.apply(i)}apply(i){const r=this.toMeta();return i.metaSync(r,null),i.outputs=[...this.outputs],i.readsValue=this.readsValue,i.defaultValue=this.defaultValue,i.dataType=this.dataType,i.throws=this.throws,i.calledBySuccess=[...this.calledBySuccess],i.calledByError=[...this.calledByError],i.calledByEntry=[...this.calledByEntry],i.parent=this.parent,i}recursiveCaptureUpstreamVersions(i){const r=[],a=[],c=[],e=[];if(this.parent){this.parent.increaseVersion(i);const f=this.parent.recursiveCaptureUpstreamVersions(i);r.push(this.parent,...f.updated),a.push(...f.added),c.push(...f.removed)}return{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}async restoreVersion(i,r){var m;const a=[],c=[],e=[],f=[];if(this.version===i&&(r!=null&&r.skipIfSameVersion))return{updated:C(a),added:C(c),removed:C(e),affected:C(f),self:this};if(!this.knownVersions){const E=new Map;for(const[b,A]of this.knownVersions||new Map){if(E.set(b,A),A.activeVersion=!1,A.knownVersions)for(const[_,P]of A.knownVersions)E.set(_,P);A.knownVersions=null}}let h=(m=this.knownVersions)==null?void 0:m.get(i);if(!h){const E=await this.APILoadVersion({},i);if(!E)throw new Error(`Version with id '${i}' for entity with id '${this.id}' not found.`);h=new ki(E,this.project)}return this.metaSync(h.toShallowJSON(),null),this.previousVersion=h.previousVersion,this.version=h.version,this.createdAt=h.createdAt,this.author=h.author,this.deleted=h.deleted,this.outputs=[...h.outputs],this.readsValue=h.readsValue,this.defaultValue=h.defaultValue,this.dataType=h.dataType,this.throws=h.throws,this.calledBySuccess=[...h.calledBySuccess],this.calledByError=[...h.calledByError],this.calledByEntry=[...h.calledByEntry],this.parent=h.parent,{updated:C(a),added:C(c),removed:C(e),affected:C(f),self:this}}updateWithShallowTransfer(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.UpdateWithShallowTransfer))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[updateWithShallowTransfer] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),this;if(this.metaSync(i,r),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 a=te(i.parent),c=this.project.get(a),e=this.parent;if(e&&e.id!==(c==null?void 0:c.id)&&this.removeFromParent(r),c)this.setParent(c,r),this.addSelfToProject(r);else throw r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),new Error(`${this.type} with id '${this.id}' has a 'parent' reference '${a}' that isn't found in the project`)}else throw r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),new Error(`${this.type} with id '${this.id}' must have a 'parent'`);if(i.readsValue){const a=te(i.readsValue),c=this.project.get(a),e=this.readsValue;e&&e.id!==(c==null?void 0:c.id)&&this.removeValueWriter(r),c&&this.setValueWriter(c,r)}else this.removeValueWriter(r);if(i.calledByEntry.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addEntryCaller(e,r),e.addCall(this,r))}),[...this.calledByEntry].forEach(a=>{i.calledByEntry.find(e=>te(e)===a.id)||(this.removeCaller(a,r),a.removeCall(this,r))}),i.calledBySuccess.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addSuccessCaller(e,r),e.addSuccessCall(this,r))}),[...this.calledBySuccess].forEach(a=>{i.calledBySuccess.find(e=>te(e)===a.id)||(this.removeCaller(a,r),a.removeCall(this,r))}),i.calledByError.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addErrorCaller(e,r),e.addErrorCall(this,r))}),[...this.calledByError].forEach(a=>{i.calledByError.find(e=>te(e)===a.id)||(this.removeCaller(a,r),a.removeCall(this,r))}),i.outputs.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addOutput(e,r),e.setParent(this,r))}),[...this.outputs].forEach(a=>{i.outputs.find(e=>te(e)===a.id)||(this.removeOutput(a,r),a.removeFromParent(r))}),i.dataType){const a=te(i.dataType),c=this.project.get(a);c&&this.setDataType(c,r)}else this.setDataType(null,r);if(i.defaultValue){const a=te(i.defaultValue),c=this.project.get(a);c&&this.setDefaultValue(c,r)}else this.setDefaultValue(null,r);return this.captureVersion(),this.subscribeToDependencies(),r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),this}updateWithGenerationTarget(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.UpdateWithGenerationTarget))){var a,c,e;if(!this.checkCanEdit(this,r))return z.Logger.warn(`[updateWithGenerationTarget] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),this;if(this.metaSync(i,r),i.parent){const f=te(i.parent),h=this.project.get(f),m=this.parent;if(m&&m.id!==(h==null?void 0:h.id)&&this.removeFromParent(r),h)this.setParent(h,r),this.addSelfToProject(r);else throw r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),new Error(`${this.type} with id '${this.id}' has a 'parent' reference '${f}' that isn't found in the project`)}if(i.readsValue){const f=te(i.readsValue),h=this.project.get(f);if(!h)throw new Error(`${this.type} with id '${this.id}' has a 'readsValue' reference '${f}' that isn't found in the project`);const m=this.readsValue;m&&m.id!==(h==null?void 0:h.id)&&this.removeValueWriter(r),h&&this.setValueWriter(h,r)}else i.readsValue===null&&this.removeValueWriter(r);return(a=i.calledByEntry)==null||a.forEach(f=>{const h=te(f),m=this.project.get(h);if(m)this.addEntryCaller(m,r),m.addCall(this,r);else throw new Error(`${this.type} with id '${this.id}' has a 'calledByEntry' reference '${h}' that isn't found in the project`)}),i.calledByEntry&&[...this.calledByEntry].forEach(f=>{var m;((m=i.calledByEntry)==null?void 0:m.find(E=>te(E)===f.id))||(this.removeCaller(f,r),f.removeCall(this,r))}),(c=i.calledBySuccess)==null||c.forEach(f=>{const h=te(f),m=this.project.get(h);if(m)this.addSuccessCaller(m,r),m.addSuccessCall(this,r);else throw new Error(`${this.type} with id '${this.id}' has a 'calledBySuccess' reference '${h}' that isn't found in the project`)}),i.calledBySuccess&&[...this.calledBySuccess].forEach(f=>{var m;((m=i.calledBySuccess)==null?void 0:m.find(E=>te(E)===f.id))||(this.removeCaller(f,r),f.removeCall(this,r))}),(e=i.calledByError)==null||e.forEach(f=>{const h=te(f),m=this.project.get(h);if(m)this.addErrorCaller(m,r),m.addErrorCall(this,r);else throw new Error(`${this.type} with id '${this.id}' has a 'calledByError' reference '${h}' that isn't found in the project`)}),i.calledByError&&[...this.calledByError].forEach(f=>{var m;((m=i.calledByError)==null?void 0:m.find(E=>te(E)===f.id))||(this.removeCaller(f,r),f.removeCall(this,r))}),this.captureVersion(),this.subscribeToDependencies(),r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),this}hydrateAncestors(){const i=[],r=[],a=[],c=[];if(this.initialData.parent){const e=te(this.initialData.parent),f=this.project.get(e);if(f)this.setParent(f,null),i.push(f);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.readsValue){const e=te(this.initialData.readsValue),f=this.project.get(e);f&&(this.setValueWriter(f,null),i.push(f))}return this.initialData.calledByEntry.forEach(e=>{const f=te(e),h=this.project.get(f);h&&this.addEntryCaller(h,null)}),this.initialData.calledBySuccess.forEach(e=>{const f=te(e),h=this.project.get(f);h&&this.addSuccessCaller(h,null)}),this.initialData.calledByError.forEach(e=>{const f=te(e),h=this.project.get(f);h&&this.addErrorCaller(h,null)}),{updated:C(i),added:C(r),removed:C(a),affected:C(c),self:this}}afterAllChildrenInitialized(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AfterAllChildrenInitialized))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[afterAllChildrenInitialized] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.AfterAllChildrenInitialized,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];if(this.initialized=!0,!this.dataType||this.dataType.inferred,this.readsValue&&this.defaultValue&&(this.project.diggestedBuiltInBaseEntitiesIds.has(this.defaultValue.id)||this.defaultValue.remove({ignoreUpstream:!1},i),this.setDefaultValue(null,i)),this.defaultValue&&!this.readsValue&&!this.project.diggestedBuiltInBaseEntitiesIds.has(this.id)&&this.project.diggestedBuiltInBaseEntitiesIds.has(this.defaultValue.id)){const b=this.defaultValue.clone(i,this);this.setDefaultValue(b,i)}const{updated:f,added:h,removed:m,affected:E}=this.syncInputs(i);return r.push(...f),a.push(...h),c.push(...m),e.push(...E),this.outputs.sort((b,A)=>(b.index||0)-(A.index||0)),i==null||i.attemptAutoclose(w.AfterAllChildrenInitialized,this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}addSelfToProject(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"add-self-to-project"))){var f;const r=[this],a=[],c=[],e=[];return this.readsValue&&(this.readsValue.addValueReader(this,i),r.push(this.readsValue)),this.calledByEntry.forEach(h=>{h.addCall(this,i),r.push(h)}),this.calledBySuccess.forEach(h=>{h.addSuccessCall(this,i),r.push(h)}),this.calledByError.forEach(h=>{h.addErrorCall(this,i),r.push(h)}),this.parent.addReturnStatement(this),e.push(this.parent),i==null||i.add(this.parent,W.Affected),(f=this.parent)==null||f.returnStatements.forEach(h=>{h.id!==this.id&&(e.push(h),i==null||i.add(h,W.Affected))}),this.subscribe(),this.subscribeToDependencies(),i==null||i.attemptAutoclose("add-self-to-project",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}get calledBy(){return[...this.calledByEntry,...this.calledBySuccess,...this.calledByError]}addSuccessCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddSuccessCaller)),a=!1){var c;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddSuccessCaller,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddSuccessCaller}-${this.id}--${Me.CannotSuccessCallItself}`,action:w.AddSuccessCaller,owner:this,errorReason:Me.CannotSuccessCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddSuccessCaller})),this.calledBySuccess.find(e=>e.id===i.id)||(this.calledBySuccess.push(i),r==null||r.add(this,W.Updated),a&&bt(this,r)),r==null||r.attemptAutoclose(w.AddSuccessCaller,this.id),this):this}addErrorCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddErrorCaller)),a=!1){var c;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddErrorCaller,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddErrorCaller}-${this.id}--${Me.CannotErrorCallItself}`,action:w.AddErrorCaller,owner:this,errorReason:Me.CannotErrorCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddErrorCaller})),this.calledByError.find(e=>e.id===i.id)||(this.calledByError.push(i),r==null||r.add(this,W.Updated),a&&bt(this,r)),r==null||r.attemptAutoclose(w.AddErrorCaller,this.id),this):this}addEntryCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddEntryCaller)),a=!1){var c;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddEntryCaller,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddEntryCaller}-${this.id}--${Me.CannotEntryCallItself}`,action:w.AddEntryCaller,owner:this,errorReason:Me.CannotEntryCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddEntryCaller})),this.calledByEntry.find(e=>e.id===i.id)||(this.calledByEntry.push(i),r==null||r.add(this,W.Updated),a&&bt(this,r)),r==null||r.attemptAutoclose(w.AddEntryCaller,this.id),this):this}removeCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"remove-caller")),a=!1){return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.RemoveCaller,r)?(this.calledBySuccess=this.calledBySuccess.filter(c=>c.id!==i.id?!0:(r==null||r.add(this,W.Updated),r==null||r.add(c,W.Affected),!1)),this.calledByError=this.calledByError.filter(c=>c.id!==i.id?!0:(r==null||r.add(this,W.Updated),r==null||r.add(c,W.Affected),!1)),this.calledByEntry=this.calledByEntry.filter(c=>c.id!==i.id?!0:(r==null||r.add(this,W.Updated),r==null||r.add(c,W.Affected),!1)),a&&bt(this,r),r==null||r.attemptAutoclose(w.RemoveCaller,this.id),this):this}setThrows(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"set-throws"))){var a,c,e;if(!this.checkCanEdit(this,r))return z.Logger.warn(`[setThrows] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("set-throws",this.id),this;if(i!==null&&i.parentRelationType!==dd.Error)throw new Error("The 'throws' InputMap must have a parentRelationType of 'Error'.");return((a=this.throws)==null?void 0:a.id)!==(i==null?void 0:i.id)&&(this.throws=i,r==null||r.add(this,W.Updated),this.throws&&((c=this.readsValue)==null||c.removeValueReader(this,r),this.setValueWriter(null,r),(e=this.defaultValue)==null||e.remove({ignoreUpstream:!1},r))),r==null||r.attemptAutoclose("set-throws",this.id),this}addOutput(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"add-output"))){return this.checkCanEdit(this,r)?this.outputs.includes(i)?(r==null||r.attemptAutoclose("add-output",this.id),this):(this.outputs.push(i),r==null||r.add(this,W.Affected),r==null||r.attemptAutoclose("add-output",this.id),this):(z.Logger.warn(`[addOutput] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("add-output",this.id),this)}removeOutput(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"remove-output"))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[removeOutput] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("remove-output",this.id),this;const a=this.outputs.findIndex(c=>c.id===i.id);return a>-1&&(this.outputs.splice(a,1),r&&(r==null||r.add(this,W.Affected))),r==null||r.attemptAutoclose("remove-output",this.id),this}setParent(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetParent))){var a;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.SetParent,r)?(((a=this.parent)==null?void 0:a.id)!==(i==null?void 0:i.id)&&(this.parent=i,r&&(r==null||r.add(this,W.Updated))),r==null||r.attemptAutoclose(w.SetParent,this.id),this):this}setValueWriter(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetValueWriter))){var a,c,e,f;return this.checkCanEditFromScopeOwnerWithSideEffects(this,w.SetValueWriter,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.SetValueWriter}-${this.id}--${Me.CannotValueWriteItself}`,action:w.SetValueWriter,owner:this,errorReason:Me.CannotValueWriteItself,rootAction:((a=r==null?void 0:r.self)==null?void 0:a.id)===this.id&&(r==null?void 0:r.actionName)===w.SetValueWriter})),((c=this.readsValue)==null?void 0:c.id)!==(i==null?void 0:i.id)&&(this.readsValue=i,this.readsValue&&((e=this.defaultValue)==null||e.remove({ignoreUpstream:!1},r)),this.readsValue&&((f=this.throws)==null||f.remove({ignoreUpstream:!1},r),this.setThrows(null,r)),r==null||r.add(this,W.Updated)),r==null||r.attemptAutoclose(w.SetValueWriter,this.id),this):this}removeValueWriter(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveValueWriter))){return this.readsValue&&!this.checkCanEditFromScopeOwnerWithSideEffects(this,w.RemoveValueWriter,i)?this:(this.readsValue&&(this.readsValue=null,i==null||i.add(this,W.Updated)),i==null||i.attemptAutoclose(w.RemoveValueWriter,this.id),this)}initChildren(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"init-children"))){return this.initialized||this.startedInitialization?this:(this.startedInitialization=!0,this.initialData.defaultValue&&(this.defaultValue=Ie(this.initialData.defaultValue,this.project),this.defaultValue.setParent(this,null),this.defaultValue.initChildren(i)),this.initialData.dataType&&(this.setDataType(Ie(this.initialData.dataType,this.project),i),this.dataType.setParent(this,null),this.dataType.initChildren(i)),uy.initReadsValue(this),this.outputs=this.initialData.outputs.map(r=>{const a=Ie(r,this.project);return a.setParent(this,null),a.initChildren(i),a}),this.initialData.throws&&(this.throws=Ie(this.initialData.throws,this.project),this.throws.setParent(this,null),this.throws.initChildren(i)),this.subscribeToDependencies(),this.afterAllChildrenInitialized(i),i==null||i.attemptAutoclose("init-children",this.id),this)}subscribe(){var i;return this.activeVersion=!0,(i=this.knownVersions)==null||i.forEach(r=>{r.version!==this.version&&(r.activeVersion=!1)}),this.project.subscribeInstance(this),this}unsubscribe(){return this.project.unsubscribeInstance(this),this}metaSync(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"meta-sync"))){const a=tn(this,i,r),c=en(this,a),e=this.toMeta();return this.x=a.x||e.x,this.y=a.y||e.y,super.baseMetaSync(a,this,r),a.deleted===!0&&!e.deleted?r==null||r.add(this,W.Removed):a.deleted===!1&&e.deleted?r==null||r.add(this,W.Added):c&&(r==null||r.add(this,W.Updated)),r==null||r.attemptAutoclose("meta-sync",this.id),this}async APILoad(i=Ke,...r){return await ki.repository.APILoad(this.id,...r),this}async APICreate(i=Ke,...r){return await ki.repository.APICreate(this.toShallowJSON(),...r),this}async APIUpdate(i=Ke,...r){return await ki.repository.APIUpdate(this.toShallowJSON(),...r),this}async APIDelete(i=Ke,...r){return await ki.repository.APIDelete(this.toShallowJSON(),...r),this}async APIClone(i=Ke,...r){return await ki.repository.APIClone(this.id,...r),this}async APILoadVersion(i=Ke,r,...a){return await ki.repository.APILoadVersion(this.id,r,...a)}removeFromParent(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveFromParent))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[removeFromParent] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveFromParent,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];return this.parent.removeReturnStatement(this),e.push(this.parent),i==null||i.attemptAutoclose(w.RemoveFromParent,this.id),{added:C(c),updated:C(r),removed:C(a),affected:C(e),self:this}}remove({ignoreUpstream:i}={ignoreUpstream:!1},r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveEntity))){var h,m;if(!this.checkCanDelete(this,r))return z.Logger.warn(`[remove] User is not allowed to delete or edit this ${this.type} entity with id: ${this.id}`),r==null||r.event({id:`${w.RemoveEntity}-${this.id}--${Me.ActionOwnerEntityNonDeletable}`,action:w.RemoveEntity,owner:this,errorReason:Me.ActionOwnerEntityNonDeletable,rootAction:((h=r==null?void 0:r.self)==null?void 0:h.id)===this.id&&(r==null?void 0:r.actionName)===w.RemoveEntity}),r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const a=[],c=[],e=[],f=[];if(r!=null&&r.hasRemoved(this.id))return r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};if(c.push(this),this.unsubscribe(),this.unsubscribeFromDependencies(),this.project.subscribeDeletedInstance(this),this.metaSync({deleted:!0},r),Object.values(this.detachedDependents).forEach(E=>{const{updated:b,removed:A,added:_}=E.entity.onDetachedDependencyRemoved(this,E.field,r);a.push(...b),c.push(...A),e.push(..._)}),this.readsValue&&(a.push(this.readsValue),this.readsValue.removeValueReader(this,r)),this.outputs.forEach(E=>{const{updated:b,removed:A}=E.remove({ignoreUpstream:!0},r);a.push(...b),c.push(...A)}),this.throws){const{updated:E,removed:b}=this.throws.remove({ignoreUpstream:!0},r);a.push(...E),c.push(...b)}if(this.dataType){const{updated:E,removed:b}=this.dataType.remove({ignoreUpstream:!0},r);a.push(...E),c.push(...b)}if(!i){const E=this.removeFromParent(r);e.push(...E.added),a.push(...E.updated),c.push(...E.removed),f.push(...E.affected),this.calledBy.forEach(b=>{a.push(b),b.removeCall(this,r)})}return r==null||r.add(this.parent,W.Affected),(m=this.parent)==null||m.returnStatements.forEach(E=>{E.id!==this.id&&(f.push(E),r==null||r.add(E,W.Affected))}),r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:C(e),updated:C(a),removed:C(c),affected:C(f),self:this}}restore({}={},i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RestoreEntity))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[restore] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RestoreEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];if(i!=null&&i.hasAdded(this.id))return i==null||i.attemptAutoclose(w.RestoreEntity,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(f=>{const{updated:h,removed:m,added:E}=f.entity.onDetachedDependencyRestored(this,f.field,i);a.push(...h),c.push(...m),r.push(...E)}),this.readsValue&&(a.push(this.readsValue),this.readsValue.addValueReader(this,i)),this.outputs.forEach(f=>{const{updated:h}=f.restore({},i);a.push(...h)}),this.throws){const{updated:f}=this.throws.restore({},i);a.push(...f)}if(this.dataType){const{updated:f}=this.dataType.restore({},i);a.push(...f)}return this.parent.addReturnStatement(this),this.calledBySuccess.forEach(f=>{a.push(f),f.addSuccessCall(this,i)}),this.calledByError.forEach(f=>{a.push(f),f.addErrorCall(this,i)}),this.calledByEntry.forEach(f=>{a.push(f),f.addCall(this,i)}),i==null||i.attemptAutoclose(w.RestoreEntity,this.id),{added:C(r),updated:C(a),removed:C(c),affected:C(e),self:this}}toFlat(i=new Set){return i.has(this.id)?[]:(i.add(this.id),[this,...this.outputs.flatMap(a=>a.toFlat(i)),...this.throws?this.throws.toFlat(i):[],...this.dataType?this.dataType.toFlat(i):[]])}toFlatIds(i=new Set){return i.has(this.id)?[]:(i.add(this.id),[this.id,...this.outputs.flatMap(a=>a.toFlatIds(i)),...this.throws?this.throws.toFlatIds(i):[],...this.dataType?this.dataType.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,editable:this.editable,deletable:this.deletable}}toJSON(i=new Set){var r,a,c,e,f;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,editable:this.editable,deletable:this.deletable,x:this.x,y:this.y,defaultValue:((r=this.defaultValue)==null?void 0:r.toJSON(i))||null,dataType:((a=this.dataType)==null?void 0:a.toJSON(i))||null,readsValue:((c=this.readsValue)==null?void 0:c.toReference())||null,calledBySuccess:this.calledBySuccess.map(h=>h.toReference()),calledByError:this.calledByError.map(h=>h.toReference()),calledByEntry:this.calledByEntry.map(h=>h.toReference()),outputs:this.outputs.map(h=>h.toJSON(i)),parent:((e=this.parent)==null?void 0:e.toReference())||null,throws:((f=this.throws)==null?void 0:f.toJSON(i))||null})}toJSONClone(i=at){var a,c,e,f,h,m,E,b,A,_;let r;return(a=i.seenEntityMaps)!=null&&a.has(this.id)?r=i.seenEntityMaps.get(this.id):(r=i.newId||dn(this,this.project,i.uuidStrategy),i.seenEntityMaps&&i.seenEntityMaps.set(this.id,r)),(c=i.seenEntities)!=null&&c.has(r)||(e=i.seenEntities)!=null&&e.has(this.id)?this.toReference({seenEntityMaps:i.seenEntityMaps}):((f=i.seenEntities)==null||f.add(r),(h=i.seenEntities)==null||h.add(this.id),{id:r,version:x.UUID.uuid(),createdAt:i.timestamp||B().toISOString(),previousVersion:null,author:this.author,deleted:this.deleted,type:this.type,editable:this.editable,deletable:this.deletable,x:this.x,y:this.y,defaultValue:((m=this.defaultValue)==null?void 0:m.toJSONClone({...i,newId:null}))||null,dataType:((E=this.dataType)==null?void 0:E.toJSONClone({...i,newId:null}))||null,readsValue:((b=this.readsValue)==null?void 0:b.toReference({seenEntityMaps:i.seenEntityMaps}))||null,calledBySuccess:this.calledBySuccess.map(P=>P.toReference({seenEntityMaps:i.seenEntityMaps})),calledByError:this.calledByError.map(P=>P.toReference({seenEntityMaps:i.seenEntityMaps})),calledByEntry:this.calledByEntry.map(P=>P.toReference({seenEntityMaps:i.seenEntityMaps})),outputs:this.outputs.map(P=>P.toJSONClone({...i,newId:null})),parent:((A=this.parent)==null?void 0:A.toReference({seenEntityMaps:i.seenEntityMaps}))||null,throws:((_=this.throws)==null?void 0:_.toJSONClone({...i,newId:null}))||null})}toReference(i=at){var a;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r+"--"+x.UUID.uuid()+"--ref",type:d.GenericReference,entityId:r,version:this.version,entityType:this.type}}toShallowJSON(i=at){var a,c,e,f,h,m;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r,version:this.version,createdAt:this.createdAt,previousVersion:this.previousVersion,author:this.author,deleted:this.deleted,type:this.type,editable:this.editable,deletable:this.deletable,x:this.x,y:this.y,defaultValue:((c=this.defaultValue)==null?void 0:c.toReference(i))||null,dataType:((e=this.dataType)==null?void 0:e.toReference(i))||null,readsValue:((f=this.readsValue)==null?void 0:f.toReference(i))||null,outputs:this.outputs.map(E=>E.toReference(i)),calledBySuccess:this.calledBySuccess.map(E=>E.toReference(i)),calledByError:this.calledByError.map(E=>E.toReference(i)),calledByEntry:this.calledByEntry.map(E=>E.toReference(i)),throws:((h=this.throws)==null?void 0:h.toReference(i))||null,parent:((m=this.parent)==null?void 0:m.toReference(i))||null}}toFlatJSON(i=new Set){var a,c;return i.has(this.id)?[]:(i.add(this.id),[this.toShallowJSON(),...((a=this.defaultValue)==null?void 0:a.toFlatJSON(i))||[],...((c=this.dataType)==null?void 0:c.toFlatJSON(i))||[],...this.outputs.flatMap(e=>e.toFlatJSON(i)),...this.throws?this.throws.toFlatJSON(i):[]])}toGenerationTarget(i=at){var a;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r,type:this.type,calledByEntry:this.calledByEntry.map(c=>c.id),calledByError:this.calledByError.map(c=>c.id),calledBySuccess:this.calledBySuccess.map(c=>c.id),parent:this.parent.id}}toFlatGenerationTarget(i=new Set){var a,c;return i.has(this.id)?[]:(i.add(this.id),[this.toGenerationTarget(),...((a=this.defaultValue)==null?void 0:a.toFlatGenerationTarget(i))||[],...((c=this.dataType)==null?void 0:c.toFlatGenerationTarget(i))||[],...this.outputs.flatMap(e=>e.toFlatGenerationTarget(i)),...this.throws?this.throws.toFlatGenerationTarget(i):[]])}clearErrors(){var i,r,a;return this.errors=[],(i=this.dataType)==null||i.clearErrors(),(r=this.defaultValue)==null||r.clearErrors(),this.outputs.forEach(c=>c.clearErrors()),(a=this.throws)==null||a.clearErrors(),this}validate(){return this.errors=z_e(this),{success:!0}}async validateAsync(i={}){const r=z.YieldTracker.from(i);return this.errors=await W_e(this,{tracker:r}),{success:!0}}getErrors(){var r,a,c;return[...this.errors,...((r=this.defaultValue)==null?void 0:r.getErrors())||[],...((a=this.dataType)==null?void 0:a.getErrors())||[],...this.outputs.flatMap(e=>e.getErrors()),...((c=this.throws)==null?void 0:c.getErrors())||[]]}async getErrorsAsync(i={}){const r=z.YieldTracker.from(i),a=[...this.errors];if(await r.tick(),this.defaultValue){const c=await this.defaultValue.getErrorsAsync({tracker:r});a.push(...c)}if(this.dataType){const c=await this.dataType.getErrorsAsync({tracker:r});a.push(...c)}for(const c of this.outputs){const e=await c.getErrorsAsync({tracker:r});a.push(...e)}if(this.throws){const c=await this.throws.getErrorsAsync({tracker:r});a.push(...c)}return a}getShallowErrors(){return this.errors}getDefaultValue(){return this.defaultValue||null}setDefaultValue(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"set-default-value"))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[setDefaultValue] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("set-default-value",this.id),this;const a=this.defaultValue;if((a==null?void 0:a.id)!==(i==null?void 0:i.id)){if(a==null||a.remove({ignoreUpstream:!0},r),this.defaultValue=i,this.defaultValue){const c=this.readsValue;this.removeValueWriter(r),c==null||c.removeValueReader(this,r)}r==null||r.add(this,W.Affected)}return r==null||r.attemptAutoclose("set-default-value",this.id),this}clone(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.CloneEntity)),r=null,a=null,c=!0){var V,G,M;const e=Fr(r,this),f=this.toJSON(),h=a||x.UUID.uuid();f.outputs=[];const m=h.split("-id"),E=m[m.length-1||0]||h;f.id=h,f.version=x.UUID.uuid(),f.createdAt=(i==null?void 0:i.timestamp)||B().toISOString(),f.author=(i==null?void 0:i.author)||"1",f.previousVersion=null,f.deleted=!1,f.deletable=!0,f.editable=!0;const b=lr(f,e);r?b.setParent(r,i):b.setParent(this.parent,null),c&&b.subscribe(),b.initChildren(i),i==null||i.add(b,W.Added);const A=(V=this.dataType)==null?void 0:V.clone(i,b,x.UUID.uuid(),c);b.setDataType(A||null,i);const _=(G=this.defaultValue)==null?void 0:G.clone(i,b,x.UUID.uuid(),c);b.setDefaultValue(_||null,i);const P=(M=this.outputs)==null?void 0:M.map((k,K)=>k.clone(i,b,E+"-return-declaration-"+K+"-id",c));return b.outputs=P,this.throws&&(b.throws=this.throws.clone(i,b,E+"-throws-id",c)),i||b.captureVersion(),i==null||i.attemptAutoclose(w.CloneEntity,this.id),b}removeUnrecognizedInputs(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveUnrecognizedInputs))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[removeUnrecognizedInputs] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveUnrecognizedInputs,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[],f=this.getDataType(null);return f&&!f.isObject()?[...this.outputs].forEach(m=>{const E=m.remove({ignoreUpstream:!1},i);c.push(...E.removed),r.push(...E.updated)}):f&&f.hasStrictObjectStructure()&&[...this.outputs].forEach(m=>{if(!m.declaration){const b=m.remove({ignoreUpstream:!1},i);c.push(...b.removed),r.push(...b.updated);return}if(![...(f==null?void 0:f.entity).allProperties].find(b=>{var A,_,P;return((A=m.declaration)==null?void 0:A.id)===b.id||!!((_=m.declaration.implements)!=null&&_.find(V=>V.id))||((P=m.declaration.extends)==null?void 0:P.id)==b.id})){const b=m.remove({ignoreUpstream:!1},i);c.push(...b.removed),r.push(...b.updated)}}),this.outputs.filter((m,E)=>{const b=this.outputs.findIndex(_=>_.declaration===m.declaration&&_!==m);if(b===-1)return!1;const A=this.outputs[b];return B(A==null?void 0:A.createdAt).isSame(B(m.createdAt))?E>b:!!B(A==null?void 0:A.createdAt).isAfter(m.createdAt)}).forEach(m=>{const E=m.remove({ignoreUpstream:!1},i);c.push(...E.removed),r.push(...E.updated)}),i==null||i.attemptAutoclose(w.RemoveUnrecognizedInputs,this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}syncInputs(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"sync-returned-inputs"))){const r=[],a=[],c=[],e=[];if(this.throws&&this.outputs.length&&(!this.parent.implements||this.parent.implements.error))return[...this.outputs].forEach(b=>{var A;if(b.id!==((A=this.throws)==null?void 0:A.id)){const{updated:_,removed:P}=b.remove({ignoreUpstream:!0},i);r.push(..._),c.push(...P),this.removeOutput(b,i)}}),i==null||i.attemptAutoclose("sync-returned-inputs",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this};const f=this.getDataType(null);if(f){const b=[];f!=null&&f.entity&&(f.entity.type===d.DefinitionEntity||f.entity.type===d.BuiltInBaseEntity)&&(f!=null&&f.entity.properties.length)?b.push(f==null?void 0:f.entity):((f==null?void 0:f.orChildrenGroup)||[]).forEach(k=>{k.entity&&(k.entity.type===d.DefinitionEntity||k.entity.type===d.BuiltInBaseEntity)&&k.entity.properties.length&&b.push(k.entity)});const A=b[0],_=(A==null?void 0:A.type)===d.DefinitionEntity||(A==null?void 0:A.type)===d.BuiltInBaseEntity?A.properties:[];_.filter(k=>Dh(k)&&!this.outputs.find(K=>{var ne;return((ne=K.declaration)==null?void 0:ne.id)===k.id&&(K.declaration.type===d.ValueDescriptor?K.declaration.parentRelationType!==j.ReturnedError:!0)})).forEach(k=>{const K=k.implementAsInputMap(i,this);a.push(K)}),[...this.outputs].forEach(k=>{if(!_.find(ne=>{var X;return((X=k.declaration)==null?void 0:X.id)===ne.id&&(k.declaration.type===d.ValueDescriptor?k.declaration.parentRelationType!==j.ReturnedError:!0)})){const{updated:ne,removed:X}=k.remove({ignoreUpstream:!1},i);r.push(...ne),c.push(...X),this.removeOutput(k,i)}if(!_g(k)){const{updated:ne,removed:X}=k.remove({ignoreUpstream:!1},i);r.push(...ne),c.push(...X),this.removeOutput(k,i)}});const{updated:V,added:G,removed:M}=this.removeUnrecognizedInputs(i);return r.push(...V),a.push(...G),c.push(...M),i==null||i.attemptAutoclose("sync-returned-inputs",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}const{updated:h,added:m,removed:E}=this.removeUnrecognizedInputs(i);return r.push(...h),a.push(...m),c.push(...E),this.outputs.forEach(b=>{const{updated:A,added:_,removed:P}=b.afterAllChildrenInitialized(i);r.push(...A),a.push(..._),c.push(...P)}),this.outputs.sort((b,A)=>b.index-A.index),i==null||i.attemptAutoclose("sync-returned-inputs",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}setDataType(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetDataType))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[setDataType] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.SetDataType,this.id),this;const a=this.dataType;return(a==null?void 0:a.id)!==(i==null?void 0:i.id)&&(a==null||a.remove({ignoreUpstream:!0},r),this.dataType=i,this.subscribeToDependencies(),r==null||r.add(this,W.Affected)),r==null||r.attemptAutoclose(w.SetDataType,this.id),this}removeDataType(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveDataType))){return this.checkCanEdit(this,i)?(this.dataType&&(this.dataType.remove({ignoreUpstream:!0},i),i==null||i.add(this,W.Affected),this.dataType=null),i==null||i.attemptAutoclose(w.RemoveDataType,this.id),this):(z.Logger.warn(`[removeDataType] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveDataType,this.id),this)}getDataType(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"get-data-type"))){var c,e;if((!this.dataType||this.dataType.inferred)&&this.project.initialized,this.dataType)return i==null||i.attemptAutoclose("get-data-type",this.id),this.dataType;if(this.parent.type===d.GlobalEvent){const f=(c=this.parent.implements)==null?void 0:c.dataType;return i==null||i.attemptAutoclose("get-data-type",this.id),f||null}const r=this.parent.dataType;if(r)return i==null||i.attemptAutoclose("get-data-type",this.id),r;const a=(e=this.parent.implements)==null?void 0:e.dataType;return i==null||i.attemptAutoclose("get-data-type",this.id),a||null}};R(ki,"repository",{APICreate:async(i,...r)=>i,APIUpdate:async(i,...r)=>i,APIDelete:async(i,...r)=>i,APIClone:async(i,...r)=>{},APILoad:async(i,...r)=>null,APILoadVersion:async(i,r,...a)=>null}),R(ki,"type",d.ReturnStatement),R(ki,"USER_MANAGED_PARENT_TYPES",[...Dr]),R(ki,"PARENT_TYPES",[...ki.USER_MANAGED_PARENT_TYPES]),R(ki,"MUTABLE_BASE_PROPERTIES",[]),R(ki,"INMUTABLE_BASE_PROPERTIES",["id","type","version","createdAt","author","previousVersion"]),R(ki,"BASE_PROPERTIES",[...ki.MUTABLE_BASE_PROPERTIES,...ki.INMUTABLE_BASE_PROPERTIES]),R(ki,"MUTABLE_META_PROPERTIES",["x","y"]),R(ki,"INMUTABLE_META_PROPERTIES",[...ki.INMUTABLE_BASE_PROPERTIES]),R(ki,"META_PROPERTIES",[...ki.MUTABLE_META_PROPERTIES,...ki.INMUTABLE_META_PROPERTIES]),R(ki,"MUTABLE_UPSTREAM_PROPERTIES",["calledBySuccess","calledByError","calledByEntry","readsValue"]),R(ki,"INMUTABLE_UPSTREAM_PROPERTIES",["parent"]),R(ki,"UPSTREAM_PROPERTIES",[...ki.MUTABLE_UPSTREAM_PROPERTIES,...ki.INMUTABLE_UPSTREAM_PROPERTIES]),R(ki,"MUTABLE_DOWNSTREAM_PROPERTIES",["outputs","throws"]),R(ki,"INMUTABLE_DOWNSTREAM_PROPERTIES",["dataType","defaultValue"]),R(ki,"DOWNSTREAM_PROPERTIES",[...ki.MUTABLE_DOWNSTREAM_PROPERTIES,...ki.INMUTABLE_DOWNSTREAM_PROPERTIES]),R(ki,"PROPERTIES",[...ki.META_PROPERTIES,...ki.UPSTREAM_PROPERTIES,...ki.DOWNSTREAM_PROPERTIES]);let su=ki;async function Y_e(s,p={}){const i=z.YieldTracker.from(p),r=Q_e(s),a=zE(s),c=[...r,...a],e=qt(s.errors,c);await i.tick();const f=await py(s,{tracker:i});for(const h of s.inputs)await h.validateAsync({tracker:i});for(const h of f)await h.validateAsync({tracker:i});return e}function J_e(s){const p=ml(s);s.inputs.forEach(r=>r.validate()),p.forEach(r=>r.validate());const i=[...zE(s),...Q_e(s)];return qt(s.errors,i)}function Q_e(s){const p=[];if(!s.calls.length){const i=It({id:`${s.id}--${be.ScopeWithoutLogic}`,message:`Action "${oe(s,s.project)}" with id "${s.id}" does not have any logic defined. So it doesn't do anything.`,severity:ve.Warning,code:be.ScopeWithoutLogic,entity:s});p.push(i.error)}return qt(s.errors,p)}const Lgi=Object.freeze(Object.defineProperty({__proto__:null,validate:J_e,validateAsync:Y_e},Symbol.toStringTag,{value:"Module"})),Ii=class Ii extends un{constructor(i,r){super(i);R(this,"initialData");R(this,"id");R(this,"name");R(this,"description",null);R(this,"x");R(this,"y");R(this,"collapsed");R(this,"type",d.GlobalEvent);R(this,"inputs",[]);R(this,"calls",[]);R(this,"parent");R(this,"implements");R(this,"detachedChildren",[]);R(this,"errors",[]);R(this,"project");R(this,"detachedDependents",{});R(this,"knownVersions",null);R(this,"activeVersion",!1);R(this,"initialized",!1);R(this,"startedInitialization",!1);this.initialData=i,this.project=r,this.id=i.id,this.name=i.name,this.description=i.description,this.x=i.x,this.y=i.y,this.collapsed=i.collapsed}static new(i=null){return{id:x.UUID.uuid(),version:x.UUID.uuid(),createdAt:(i==null?void 0:i.timestamp)||B().toISOString(),author:(i==null?void 0:i.author)||x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.GlobalEvent,name:"",description:"",collapsed:!1,implements:null,inputs:[],parent:null,calls:[],x:0,y:0}}static fromGenerationTarget(i,r,a){const c=a===void 0?r.addChangeSet(new S(r,x.sessionAuthor,B().toISOString(),r,!0,w.CreateFromGenerationTarget)):a;let e=r;if(i.parent){const E=te(i.parent);e=r.get(E)}let f;i.implements&&(f=r.getBuiltIn(i.implements));const h={id:i.id,version:x.UUID.uuid(),createdAt:(c==null?void 0:c.timestamp)||B().toISOString(),author:(c==null?void 0:c.author)||x.sessionAuthor,previousVersion:null,deleted:!1,name:i.name,description:i.description||null,deletable:!0,editable:!0,type:d.GlobalEvent,collapsed:!1,calls:[],inputs:[],implements:f,x:0,y:0,parent:e.toReference()},m=Ie(h,r);return m.hydrateAncestors(),m.setParent(e,c),m.addSelfToProject(c),c==null||c.add(m,W.Added),m.initChildren(c),c||m.captureVersion(),m}static validateGenerationTarget(i,r){let a=JSON.parse(JSON.stringify(i));const c=[],e=[],f=Bn(a,{},r);c.push(...f.explanations),a=f.modifiedData;const h=Xr(a);if(e.push(...f.errors,...h.errors),c.push(...h.explanations),!i.implements)e.push(new we({id:`${i.id}--${Ce.InvalidObjectStructure}`,code:Ce.InvalidObjectStructure,severity:ve.Error,message:`Entity of type '${i.type}' with id '${i.id}' is missing the 'implements' property. This property is required for a '${i.type}' entity and must point to one of the built-in action descriptors reserved for 'global-event' entities.`})),c.push({id:Qi.AllGlobalEventsActionDescriptors,message:bg(r)});else if(!r.get(i.implements))e.push(new we({id:`${i.id}--${Te.ReferencedEntityNotFound}`,code:Te.ReferencedEntityNotFound,severity:ve.Error,message:`Entity of type '${i.type}' with id '${i.id}' has an 'implements' property that isn't found in the project. The 'implements' property must point to one of the built-in action descriptors reserved for 'global-event' entities.`})),c.push({id:Qi.AllGlobalEventsActionDescriptors,message:bg(r)});else if(!r.globalEventActionDescriptors.find(b=>b.id===i.implements))e.push(new we({id:`${i.id}--${Te.InvalidImplementsReference}`,code:Te.InvalidImplementsReference,severity:ve.Error,message:`Entity of type '${i.type}' with id '${i.id}' has an 'implements' property that isn't pointing to an action descriptor reserved for 'global-event' entities.`})),c.push({id:Qi.AllGlobalEventsActionDescriptors,message:bg(r)});else{const b=r.events.find(A=>A.implements.id===i.implements);b&&e.push(new we({id:`${i.id}--${Te.InvalidImplementsReference}`,code:Te.InvalidImplementsReference,severity:ve.Error,message:`Entity of type '${i.type}' with id '${i.id}' has an 'implements' property that points to an action descriptor that is already implemented by another global event with id '${b.id}' in the project. Each global event must implement a unique action descriptor.
|
|
44
44
|
You can attach new logic to the existing 'global-event' but creating a new callable entity that gets called by it.`}))}return{errors:e,explanations:c,modifiedData:a}}get returnStatements(){const i=[];return Object.values(this.detachedDependents).forEach(r=>{r.field===Gx.Parent&&r.entity.type===d.ReturnStatement&&!i.includes(r.entity)&&i.push(r.entity)}),i}validateGeneratedUpdate(i){const r=[],a=[];return i.parent&&r.push(new we({id:`${this.id}--${Te.InvalidParentUpdate}`,code:Te.InvalidParentUpdate,severity:ve.Error,message:`Entity of type '${this.type}' with id '${this.id}' cannot have the 'parent' property updated. The 'parent' on an '${this.type}', must be the root project as it is a globally declared entity.`})),{errors:r,explanations:a,modifiedData:i}}subscribeDependents(i){return i.forEach(r=>{this.detachedDependents[r.entity.id]||(this.detachedDependents[r.entity.id]=r)}),this}unsubscribeDependents(i){return i.forEach(r=>{this.detachedDependents[r.entity.id]&&delete this.detachedDependents[r.entity.id]}),this}syncDependents(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"sync-dependents"))){const r=[],a=[],c=[],e=[];return Object.values(this.detachedDependents).forEach(f=>{const h=f.entity.afterAllChildrenInitialized(i);r.push(...h.updated),a.push(...h.added),c.push(...h.removed),e.push(...h.affected)}),i==null||i.attemptAutoclose("sync-dependents",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}onDetachedDependencyRemoved(i,r,a){const c=[],e=[],f=[],h=[];return{updated:C(c),added:C(e),removed:C(f),affected:C(h),self:this}}onDetachedDependencyRestored(i,r,a){const c=[],e=[],f=[],h=[];return{updated:C(c),added:C(e),removed:C(f),affected:C(h),self:this}}unsubscribeFromDependencies(){return this}subscribeToDependencies(){return this}increaseVersion(i){var r;if(this.project.diggestedBuiltInBaseEntitiesIds.has(this.id))return this;if(i&&!B(i).isValid())throw new Error(`The shared timestamp '${i}' is not a valid ISO 8601 date string.`);if(i&&B(i).isSame(B(this.createdAt)))return this;if(!((r=this.knownVersions)!=null&&r.has(this.version))&&this.project.initialized)throw new Error(`The current ${this.type} ${this.id} version '${this.version}' is not captured in the 'knownVersions' map. Capture the current version before increasing it to avoid losing data.`);if(!this.activeVersion)throw new Error(`Only active versions can be increased. Entity with id '${this.id}' and version '${this.version}' is not active.`);return this.previousVersion=this.version,this.version=x.UUID.uuid(),this.createdAt=B(i).toISOString()||B().toISOString(),this}captureVersion(){var r;const i=((r=this.knownVersions)==null?void 0:r.get(this.version))||new Ii(this,this.project);if(!this.activeVersion)throw new Error(`Only active versions can be captured. Entity of type ${this.type} with id '${this.id}' and version '${this.version}' is not active.`);if(this.version!==i.version)throw new Error(`Captured ${this.type} with id '${this.id}', version '${i.version}' does not match current entity version '${this.version}'.`);return this.knownVersions=this.knownVersions?this.knownVersions.set(this.version,i):new Map().set(this.version,i),this.apply(i),this}snapshot(){const i=new Ii(this,this.project);return this.apply(i)}apply(i){const r=this.toMeta();return i.metaSync(r,null),i.inputs=[...this.inputs],i.calls=[...this.calls],i.implements=this.implements,i.detachedChildren=[...this.detachedChildren],i.parent=this.parent,i}recursiveCaptureUpstreamVersions(i){const r=[],a=[],c=[],e=[];if(this.parent){this.parent.increaseVersion(i);const f=this.parent.recursiveCaptureUpstreamVersions(i);r.push(this.parent,...f.updated),a.push(...f.added),c.push(...f.removed)}return{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}async restoreVersion(i,r){var m;const a=[],c=[],e=[],f=[];if(this.version===i&&(r!=null&&r.skipIfSameVersion))return{updated:C(a),added:C(c),removed:C(e),affected:C(f),self:this};if(!this.knownVersions){const E=new Map;for(const[b,A]of this.knownVersions||new Map){if(E.set(b,A),A.activeVersion=!1,A.knownVersions)for(const[_,P]of A.knownVersions)E.set(_,P);A.knownVersions=null}}let h=(m=this.knownVersions)==null?void 0:m.get(i);if(!h){const E=await this.APILoadVersion({},i);if(!E)throw new Error(`Version with id '${i}' for entity with id '${this.id}' not found.`);h=new Ii(E,this.project)}return this.metaSync(h.toShallowJSON(),null),this.previousVersion=h.previousVersion,this.version=h.version,this.createdAt=h.createdAt,this.author=h.author,this.deleted=h.deleted,this.inputs=[...h.inputs],this.calls=h.calls,this.implements=h.implements,this.detachedChildren=h.detachedChildren,this.parent=h.parent,{updated:C(a),added:C(c),removed:C(e),affected:C(f),self:this}}updateWithShallowTransfer(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.UpdateWithShallowTransfer))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[updateWithShallowTransfer] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),this;if(this.metaSync(i,r),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 a=te(i.parent),c=this.project.get(a),e=this.parent;if(e&&e.id!==(c==null?void 0:c.id)&&this.removeFromParent(r),c)this.setParent(c,null);else throw r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),new Error(`${this.type} with id '${this.id}' has a 'parent' reference '${a}' that isn't found in the project`)}else throw r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),new Error(`${this.type} with id '${this.id}' must have a 'parent'`);if(i.implements){const a=te(i.implements),c=this.project.get(a);if(c)this.setImplements(c,r);else throw new Error(`${fr(this.type)} with id '${this.id}' has a 'implements' reference "${a}" which is missing in the project`)}else throw new Error(`${fr(this.type)} with id '${this.id}' is missing a 'implements' reference`);return this.captureVersion(),this.subscribeToDependencies(),r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),this}updateWithGenerationTarget(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.UpdateWithGenerationTarget))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[updateWithGenerationTarget] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),this;if(this.metaSync(i,r),i.parent){const a=te(i.parent),c=this.project.get(a),e=this.parent;if(e&&e.id!==(c==null?void 0:c.id)&&this.removeFromParent(r),c)this.setParent(c,null);else throw r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),new Error(`${this.type} with id '${this.id}' has a 'parent' reference '${a}' that isn't found in the project`)}if(i.implements){const a=te(i.implements),c=this.project.get(a);if(c)this.setImplements(c,r);else throw new Error(`${fr(this.type)} with id '${this.id}' has a 'implements' reference "${a}" which is missing in the project`)}else throw new Error(`${fr(this.type)} with id '${this.id}' is missing a 'implements' reference`);return this.captureVersion(),this.subscribeToDependencies(),r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),this}hydrateAncestors(){const i=[],r=[],a=[],c=[];if(this.initialData.parent){const e=te(this.initialData.parent),f=this.project.get(e);if(f)this.setParent(f,null),i.push(f);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.implements){const e=te(this.initialData.implements),f=this.project.get(e);if(f)this.setImplements(f,null),i.push(f);else throw new Error(`${fr(this.type)} with id '${this.id}' has a 'implements' reference "${e}" which is missing in the project`)}else throw new Error(`${fr(this.type)} with id '${this.id}' is missing a 'implements' reference`);return{updated:C(i),added:C(r),removed:C(a),affected:C(c),self:this}}afterAllChildrenInitialized(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AfterAllChildrenInitialized))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[afterAllChildrenInitialized] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.AfterAllChildrenInitialized,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];this.initialized=!0;const{updated:f,added:h,removed:m}=this.syncInputs(i);return r.push(...f),a.push(...h),c.push(...m),this.inputs.sort((E,b)=>E.index-b.index),i==null||i.attemptAutoclose(w.AfterAllChildrenInitialized,this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}addSelfToProject(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"add-self-to-project"))){const r=[this],a=[],c=[],e=[];return this.project.addGlobalEvent(this),this.subscribe(),this.subscribeToDependencies(),i==null||i.attemptAutoclose("add-self-to-project",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}replaceDetachedChild(i,r){const a=this.detachedChildren.indexOf(i);return a!==-1&&(this.detachedChildren[a]=r),this}subscribeDetachedChild(i){return this.detachedChildren.includes(i)||this.detachedChildren.push(i),this}unsubscribeDetachedChild(i){const r=this.detachedChildren.indexOf(i);return r!==-1&&this.detachedChildren.splice(r,1),this}setParent(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetParent))){var a;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.SetParent,r)?(((a=this.parent)==null?void 0:a.id)!==(i==null?void 0:i.id)&&(this.parent=i,r&&(r==null||r.add(this,W.Updated))),r==null||r.attemptAutoclose(w.SetParent,this.id),this):this}setImplements(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetImplements))){var a;return this.checkCanEdit(this,r)?(((a=this.implements)==null?void 0:a.id)!==(i==null?void 0:i.id)&&(this.implements=i,r&&(r==null||r.add(this,W.Updated))),r==null||r.attemptAutoclose(w.SetImplements,this.id),this):(z.Logger.warn(`[setImplements] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.SetImplements,this.id),this)}addCall(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddCall))){var a;return this.checkCanEdit(this,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddCall}-${this.id}--${Me.CannotEntryCallItself}`,action:w.AddCall,owner:this,errorReason:Me.CannotEntryCallItself,rootAction:((a=r==null?void 0:r.self)==null?void 0:a.id)===this.id&&(r==null?void 0:r.actionName)===w.AddCall})),this.calls.includes(i)||(this.calls.push(i),r==null||r.add(i,W.Affected)),r==null||r.attemptAutoclose(w.AddCall,this.id),this):(z.Logger.warn(`[addCall] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.AddCall,this.id),this)}removeCall(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveCall))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[removeCall] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.RemoveCall,this.id),this;const a=this.calls.indexOf(i);return a!==-1&&(this.calls.splice(a,1),r==null||r.add(i,W.Affected)),r==null||r.attemptAutoclose(w.RemoveCall,this.id),this}addInputDeclaration(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"add-input-declaration"))){return this.inputs.includes(i)?(r==null||r.attemptAutoclose("add-input-declaration",this.id),this):(this.inputs.push(i),r==null||r.attemptAutoclose("add-input-declaration",this.id),this)}removeInputDeclaration(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"remove-input-declaration"))){const a=this.inputs.findIndex(c=>c.id===i.id);return a>-1&&(this.inputs.splice(a,1),r&&(r==null||r.add(this,W.Affected))),r==null||r.attemptAutoclose("remove-input-declaration",this.id),this}initChildren(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"init-children"))){return this.initialized||this.startedInitialization?this:(this.startedInitialization=!0,this.inputs=this.initialData.inputs.map(r=>{const a=Ie(r,this.project);return a.setParent(this,null),a.initChildren(i),a}),this.calls=this.initialData.calls.map(r=>{const a=Ie(r,this.project);if(a.addEntryCaller(this,null),a.type===d.ReturnStatement){const c=gn(this,this.project);a.setParent(c,null),a.initChildren(i)}else a.type!==d.InternalCall&&(a.setParent(this,null),a.initChildren(i));return a}),this.implements=Ie(this.initialData.implements,this.project),this.subscribeToDependencies(),this.afterAllChildrenInitialized(i),i==null||i.attemptAutoclose("init-children",this.id),this)}subscribe(){var i;return this.activeVersion=!0,(i=this.knownVersions)==null||i.forEach(r=>{r.version!==this.version&&(r.activeVersion=!1)}),this.project.subscribeInstance(this),this}unsubscribe(){return this.project.unsubscribeInstance(this),this}metaSync(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"meta-sync"))){const a=tn(this,i,r),c=en(this,a),e=this.toMeta();return this.name=a.name!==void 0?a.name:e.name,this.description=a.description!==void 0?a.description:e.description,this.x=a.x||e.x,this.y=a.y||e.y,this.collapsed=a.collapsed!==void 0?a.collapsed:e.collapsed,super.baseMetaSync(a,this,r),a.deleted===!0&&!e.deleted?r==null||r.add(this,W.Removed):a.deleted===!1&&e.deleted?r==null||r.add(this,W.Added):c&&(r==null||r.add(this,W.Updated)),r==null||r.attemptAutoclose("meta-sync",this.id),this}async APILoad(i=Ke,...r){return await Ii.repository.APILoad(this.id,...r),this}async APICreate(i=Ke,...r){return await Ii.repository.APICreate(this.toShallowJSON(),...r),this}async APIUpdate(i=Ke,...r){return await Ii.repository.APIUpdate(this.toShallowJSON(),...r),this}async APIDelete(i=Ke,...r){return await Ii.repository.APIDelete(this.toShallowJSON(),...r),this}async APIClone(i=Ke,...r){return await Ii.repository.APIClone(this.id,...r),this}async APILoadVersion(i=Ke,r,...a){return await Ii.repository.APILoadVersion(this.id,r,...a)}removeFromParent(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveFromParent))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[removeFromParent] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveFromParent,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];return this.parent.type===d.Project&&(this.project.removeGlobalEvent(this),i==null||i.add(this.parent,W.Affected),e.push(this.parent)),i==null||i.attemptAutoclose(w.RemoveFromParent,this.id),{added:C(c),updated:C(r),removed:C(a),affected:C(e),self:this}}remove({ignoreUpstream:i}={ignoreUpstream:!1},r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveEntity))){var m;if(!this.checkCanDelete(this,r))return z.Logger.warn(`[remove] User is not allowed to delete or edit this ${this.type} entity with id: ${this.id}`),r==null||r.event({id:`${w.RemoveEntity}-${this.id}--${Me.ActionOwnerEntityNonDeletable}`,action:w.RemoveEntity,owner:this,errorReason:Me.ActionOwnerEntityNonDeletable,rootAction:((m=r==null?void 0:r.self)==null?void 0:m.id)===this.id&&(r==null?void 0:r.actionName)===w.RemoveEntity}),r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const a=[],c=[],e=[],f=[];if(r!=null&&r.hasRemoved(this.id))return r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};if(c.push(this),this.unsubscribe(),this.unsubscribeFromDependencies(),this.project.subscribeDeletedInstance(this),this.metaSync({deleted:!0},r),Object.values(this.detachedDependents).forEach(E=>{const{updated:b,removed:A,added:_}=E.entity.onDetachedDependencyRemoved(this,E.field,r);a.push(...b),c.push(...A),e.push(..._)}),this.inputs.forEach(E=>{const{updated:b,removed:A}=E.remove({ignoreUpstream:!0},r);a.push(...b),c.push(...A)}),ml(this).forEach(E=>{const{updated:b,removed:A}=E.remove({ignoreUpstream:!0},r);a.push(...b),c.push(...A)}),!i){const E=this.removeFromParent(r);e.push(...E.added),a.push(...E.updated),c.push(...E.removed),f.push(...E.affected)}return r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:C(e),updated:C(a),removed:C(c),affected:C(f),self:this}}restore({}={},i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RestoreEntity))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[restore] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RestoreEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];return i!=null&&i.hasAdded(this.id)?(i==null||i.attemptAutoclose(w.RestoreEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this}):(this.subscribe(),this.project.unsubscribeDeletedInstance(this),this.metaSync({deleted:!1},i),Object.values(this.detachedDependents).forEach(h=>{const{updated:m,removed:E,added:b}=h.entity.onDetachedDependencyRestored(this,h.field,i);a.push(...m),c.push(...E),r.push(...b)}),this.inputs.forEach(h=>{const{updated:m}=h.restore({},i);a.push(...m)}),ml(this).forEach(h=>{const{updated:m}=h.restore({},i);a.push(...m)}),i==null||i.attemptAutoclose(w.RestoreEntity,this.id),{added:C(r),updated:C(a),removed:C(c),affected:C(e),self:this})}toFlat(i=new Set){return i.has(this.id)?[]:(i.add(this.id),[this,...this.inputs.flatMap(a=>a.toFlat(i)),...this.calls.flatMap(a=>a.toFlat(i)),...this.returnStatements.flatMap(a=>a.toFlat(i)),...this.implements?this.implements.toFlat(i):[]])}toFlatIds(i=new Set){if(i.has(this.id))return[];i.add(this.id);const r=ml(this);return[this.id,...this.inputs.flatMap(c=>c.toFlatIds(i)),...this.calls.flatMap(c=>c.toFlatIds(i)),...this.returnStatements.flatMap(c=>c.toFlatIds(i)),...this.implements?this.implements.toFlatIds(i):[],...r.flatMap(c=>c.toFlatIds(i))]}toMeta(){return{id:this.id,version:this.version,createdAt:this.createdAt,previousVersion:this.previousVersion,author:this.author,deleted:this.deleted,description:this.description,collapsed:this.collapsed,x:this.x,y:this.y,type:this.type,editable:this.editable,deletable:this.deletable,name:this.name}}toJSON(i=new Set){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,editable:this.editable,deletable:this.deletable,name:this.name,description:this.description,x:this.x,y:this.y,collapsed:this.collapsed,implements:this.implements.toJSON(i),inputs:this.inputs.map(r=>r.toJSON(i)),calls:this.calls.map(r=>r.toJSON(i)),parent:this.parent.toReference()})}toJSONClone(i=at){var a,c,e,f,h;let r;return(a=i.seenEntityMaps)!=null&&a.has(this.id)?r=i.seenEntityMaps.get(this.id):(r=i.newId||dn(this,this.project,i.uuidStrategy),i.seenEntityMaps&&i.seenEntityMaps.set(this.id,r)),(c=i.seenEntities)!=null&&c.has(r)||(e=i.seenEntities)!=null&&e.has(this.id)?this.toReference({seenEntityMaps:i.seenEntityMaps}):((f=i.seenEntities)==null||f.add(r),(h=i.seenEntities)==null||h.add(this.id),{id:r,version:x.UUID.uuid(),createdAt:i.timestamp||B().toISOString(),previousVersion:null,author:this.author,deleted:this.deleted,type:this.type,editable:this.editable,deletable:this.deletable,name:this.name,description:this.description,x:this.x,y:this.y,collapsed:this.collapsed,implements:this.implements.toJSON(),inputs:this.inputs.map(m=>m.toJSONClone({...i,newId:null})),calls:this.calls.map(m=>m.toJSONClone({...i,newId:null})),parent:this.parent.toReference({seenEntityMaps:i.seenEntityMaps})})}toReference(i=at){var a;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r+"--"+x.UUID.uuid()+"--ref",type:d.GenericReference,entityId:r,version:this.version,entityType:this.type}}toShallowJSON(i=at){var a;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r,version:this.version,createdAt:this.createdAt,previousVersion:this.previousVersion,author:this.author,deleted:this.deleted,type:this.type,editable:this.editable,deletable:this.deletable,name:this.name,description:this.description,collapsed:this.collapsed,x:this.x,y:this.y,implements:this.implements.toReference(i),inputs:this.inputs.map(c=>c.toReference(i)),calls:this.calls.map(c=>c.toReference(i)),parent:this.parent.toReference(i)}}toFlatJSON(i=new Set){return i.has(this.id)?[]:(i.add(this.id),[this.toShallowJSON(),...this.inputs.flatMap(a=>a.toFlatJSON(i)),...this.calls.flatMap(a=>a.toFlatJSON(i)),...this.returnStatements.flatMap(a=>a.toFlatJSON(i))])}toGenerationTarget(i=at){var a;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r,name:this.name,description:this.description||void 0,type:this.type,implements:this.implements.id}}toFlatGenerationTarget(i=new Set){return i.has(this.id)?[]:(i.add(this.id),[this.toGenerationTarget(),...this.inputs.flatMap(a=>a.toFlatGenerationTarget(i)),...this.calls.flatMap(a=>a.toFlatGenerationTarget(i)),...this.returnStatements.flatMap(a=>a.toFlatGenerationTarget(i))])}clearErrors(){return this.errors=[],this.inputs.forEach(i=>i.clearErrors()),this.calls.forEach(i=>i.clearErrors()),this.returnStatements.forEach(i=>i.clearErrors()),this}validate(){return this.errors=J_e(this),{success:!0}}async validateAsync(i={}){const r=z.YieldTracker.from(i);return this.errors=await Y_e(this,{tracker:r}),{success:!0}}getErrors(){const i=pt(this);return[...this.errors,...this.inputs.flatMap(a=>a.getErrors()),...i.flatMap(a=>a.getErrors())]}async getErrorsAsync(i={}){const r=z.YieldTracker.from(i),a=[...this.errors];await r.tick();for(const e of this.inputs){const f=await e.getErrorsAsync({tracker:r});a.push(...f)}const c=await py(this,{tracker:r});for(const e of c){const f=await e.getErrorsAsync({tracker:r});a.push(...f)}return a}getShallowErrors(){return this.errors}clone(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.CloneEntity)),r=null,a=null,c=!0,e=!1){var V;const f=Fr(r,this),h=this.toJSON(),m=a||x.UUID.uuid();h.inputs=[];const E=m.split("-id"),b=E[E.length-1||0]||m;h.id=m,h.version=x.UUID.uuid(),h.createdAt=(i==null?void 0:i.timestamp)||B().toISOString(),h.author=(i==null?void 0:i.author)||"1",h.previousVersion=null,h.deleted=!1,h.deletable=!0,h.editable=!0;const A=lr(h,f);r?A.setParent(r,i):A.setParent(this.parent,null),c&&A.subscribe(),A.initChildren(i),i==null||i.add(A,W.Added);const _=(V=this.inputs)==null?void 0:V.map((G,M)=>G.clone(i,A,b+"-argument-declaration-"+M+"-id",c));return A.inputs=_,e?(ml(this).map((G,M)=>G.clone(i,A,b+"-body-entity-"+M+"-id")),i||A.captureVersion(),i==null||i.attemptAutoclose(w.CloneEntity,this.id),A):(i==null||i.attemptAutoclose(w.CloneEntity,this.id),A)}getVariableInstances(){return cr(this).filter(a=>a.type===d.VariableInstance)}addReturnStatement(i){return this.returnStatements.includes(i)||this.returnStatements.push(i),this}removeReturnStatement(i){const r=this.returnStatements.indexOf(i);return r!==-1&&this.returnStatements.splice(r,1),this}removeUnrecognizedInputs(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveUnrecognizedInputs))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[removeUnrecognizedInputs] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveUnrecognizedInputs,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];return this.implements?(this.inputs.forEach(h=>{var E;if(!(((E=this.implements)==null?void 0:E.inputs)||[]).find(b=>h.implements.find(A=>A.id===b.id))){const b=h.remove({ignoreUpstream:!1},i);c.push(...b.removed),r.push(...b.updated)}}),this.inputs.filter((h,m)=>{const E=this.inputs.findIndex(A=>!!A.implements&&!!h.implements&&A.implements===h.implements&&A!==h);if(E===-1)return!1;const b=this.inputs[E];return B(b==null?void 0:b.createdAt).isSame(B(h.createdAt))?m>E:!!B(b==null?void 0:b.createdAt).isAfter(h.createdAt)}).forEach(h=>{const m=h.remove({ignoreUpstream:!1},i);c.push(...m.removed),r.push(...m.updated)}),i==null||i.attemptAutoclose(w.RemoveUnrecognizedInputs,this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}):(i==null||i.attemptAutoclose(w.RemoveUnrecognizedInputs,this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this})}syncInputs(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SyncInputs))){var b;if(!this.checkCanEdit(this,i))return z.Logger.warn(`[syncInputs] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.SyncInputs,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[],f=(((b=this.implements)==null?void 0:b.inputs)||[]).filter(A=>A.parentRelationType===j.FixedArguments&&!this.inputs.find(_=>_.implements.find(P=>P.id===A.id)));this.inputs.sort((A,_)=>A.index-_.index),f.forEach(A=>{this.inputs.forEach(V=>{V.index>=A.index&&V.metaSync({index:V.index+1},i)});const _=Za.new(i);_.implements=[A.toJSON()],_.index=A.index,_.parent=this.toReference(),_.name=A.name;const P=Ie(_,this.project);P.hydrateAncestors(),P.setParent(this,i),P.addSelfToProject(i),i==null||i.add(P,W.Added),P.initChildren(i),i||P.captureVersion()}),this.inputs.forEach(A=>{const{updated:_,added:P,removed:V,affected:G}=A.afterAllChildrenInitialized(i);r.push(..._),a.push(...P),c.push(...V),e.push(...G)}),this.inputs.sort((A,_)=>A.index-_.index);const{updated:h,added:m,removed:E}=this.removeUnrecognizedInputs(i);return r.push(...h),a.push(...m),c.push(...E),i==null||i.attemptAutoclose(w.SyncInputs,this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}getDataType(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"get-data-type"))){var r;return i==null||i.attemptAutoclose("get-data-type",this.id),((r=this.implements)==null?void 0:r.dataType)||null}};R(Ii,"repository",{APICreate:async(i,...r)=>i,APIUpdate:async(i,...r)=>i,APIDelete:async(i,...r)=>i,APIClone:async(i,...r)=>{},APILoad:async(i,...r)=>null,APILoadVersion:async(i,r,...a)=>null}),R(Ii,"type",d.GlobalEvent),R(Ii,"USER_MANAGED_PARENT_TYPES",[d.Project]),R(Ii,"PARENT_TYPES",[...Ii.USER_MANAGED_PARENT_TYPES]),R(Ii,"MUTABLE_BASE_PROPERTIES",["description"]),R(Ii,"INMUTABLE_BASE_PROPERTIES",["id","type","version","createdAt","author","previousVersion"]),R(Ii,"BASE_PROPERTIES",[...Ii.MUTABLE_BASE_PROPERTIES,...Ii.INMUTABLE_BASE_PROPERTIES]),R(Ii,"MUTABLE_META_PROPERTIES",[...Ii.MUTABLE_BASE_PROPERTIES,"x","y","collapsed"]),R(Ii,"INMUTABLE_META_PROPERTIES",[...Ii.INMUTABLE_BASE_PROPERTIES]),R(Ii,"META_PROPERTIES",[...Ii.MUTABLE_META_PROPERTIES,...Ii.INMUTABLE_META_PROPERTIES]),R(Ii,"MUTABLE_UPSTREAM_PROPERTIES",[]),R(Ii,"INMUTABLE_UPSTREAM_PROPERTIES",["parent","implements"]),R(Ii,"UPSTREAM_PROPERTIES",[...Ii.MUTABLE_UPSTREAM_PROPERTIES,...Ii.INMUTABLE_UPSTREAM_PROPERTIES]),R(Ii,"MUTABLE_DOWNSTREAM_PROPERTIES",["inputs","calls","returnStatements"]),R(Ii,"INMUTABLE_DOWNSTREAM_PROPERTIES",[]),R(Ii,"DOWNSTREAM_PROPERTIES",[...Ii.MUTABLE_DOWNSTREAM_PROPERTIES,...Ii.INMUTABLE_DOWNSTREAM_PROPERTIES]),R(Ii,"PROPERTIES",[...Ii.META_PROPERTIES,...Ii.UPSTREAM_PROPERTIES,...Ii.DOWNSTREAM_PROPERTIES]);let _p=Ii;async function X_e(s,p={}){var f,h,m;const i=z.YieldTracker.from(p),r=Aa(s),a=ga(s),c=[...r,...a],e=qt(s.errors,c);await i.tick();for(const E of s.inputs)await E.validateAsync({tracker:i});for(const E of s.outputs)await E.validateAsync({tracker:i});return await((f=s.error)==null?void 0:f.validateAsync({tracker:i})),await((h=s.body)==null?void 0:h.validateAsync({tracker:i})),await((m=s.dataType)==null?void 0:m.validateAsync({tracker:i})),e}function kx(s){var r,a,c;s.inputs.forEach(e=>e.validate()),s.outputs.forEach(e=>e.validate()),(r=s.error)==null||r.validate(),(a=s.body)==null||a.validate(),(c=s.dataType)==null||c.validate();const i=[...Aa(s),...ga(s)];return qt(s.errors,i)}function Bgi(s){return kx(s)}const Mgi=Object.freeze(Object.defineProperty({__proto__:null,validate:kx,validateAsync:X_e,validateListLoop:Bgi},Symbol.toStringTag,{value:"Module"}));async function eVe(s,p={}){var c;const i=z.YieldTracker.from(p),r=[],a=qt(s.errors,r);await i.tick();for(const e of s.inputs)await e.validateAsync({tracker:i});return await((c=s.dataType)==null?void 0:c.validateAsync({tracker:i})),a}function tVe(s){var r;s.inputs.flatMap(a=>a.validate()),(r=s.dataType)==null||r.validate();const p=[];return qt(s.errors,p)}const Ggi=Object.freeze(Object.defineProperty({__proto__:null,validate:tVe,validateAsync:eVe},Symbol.toStringTag,{value:"Module"}));var U=(s=>(s.Success="success",s.ConditionNotMet="condition-not-met",s.CaughtError="caught-error",s.UnhandledError="unhandled-error",s.Break="break",s.Continue="continue",s.Return="return",s))(U||{});const Ri=class Ri extends un{constructor(i,r){super(i);R(this,"initialData");R(this,"id");R(this,"name");R(this,"codeName",null);R(this,"description",null);R(this,"index",null);R(this,"outputName",null);R(this,"outputDescription",null);R(this,"type",d.ActionDescriptor);R(this,"inputs",[]);R(this,"dataType",null);R(this,"error",null);R(this,"implementation",null);R(this,"parent",null);R(this,"errors",[]);R(this,"project");R(this,"detachedDependents",{});R(this,"knownVersions",null);R(this,"activeVersion",!1);R(this,"initialized",!1);R(this,"startedInitialization",!1);R(this,"autoexecutable",!1);this.initialData=i,this.project=r,this.id=i.id,this.name=i.name,this.codeName=i.codeName,this.description=i.description,this.index=i.index,this.outputName=i.outputName,this.outputDescription=i.outputDescription}static new(i=null){return{id:x.UUID.uuid(),version:x.UUID.uuid(),createdAt:(i==null?void 0:i.timestamp)||B().toISOString(),author:(i==null?void 0:i.author)||x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.ActionDescriptor,name:"",codeName:null,description:"",error:null,inputs:[],dataType:null,outputName:null,outputDescription:null,index:null,parent:null}}static fromGenerationTarget(i,r,a){const c=a===void 0?r.addChangeSet(new S(r,x.sessionAuthor,B().toISOString(),r,!0,w.CreateFromGenerationTarget)):a;let e=null;if(i.parent){const m=te(i.parent);e=r.get(m)}const f={id:i.id,version:x.UUID.uuid(),createdAt:(c==null?void 0:c.timestamp)||B().toISOString(),author:(c==null?void 0:c.author)||x.sessionAuthor,previousVersion:null,deleted:!1,name:i.name,deletable:!0,editable:!0,type:d.ActionDescriptor,codeName:i.codeName,description:i.description,inputs:[],dataType:null,outputName:null,outputDescription:null,index:null,error:null,parent:(e==null?void 0:e.toReference())||null},h=Ie(f,r);return h.hydrateAncestors(),e&&h.setParent(e,null),h.addSelfToProject(c),c==null||c.add(h,W.Added),h.initChildren(c),h.captureVersion(),h}static validateGenerationTarget(i,r){let a=JSON.parse(JSON.stringify(i));const c=[],e=[],f=Bn(a,{parent:{list:!1,types:[d.DefinitionEntity,d.DataType]}},r);c.push(...f.explanations),a=f.modifiedData;const h=a.parent?r.get(a.parent):null;if(h&&h.type===d.DefinitionEntity){const E=h,A=ea(E).filter(_=>!_.interactive);if(A.length){let _=A.length>1?`The entity of type '${i.type}' with id '${i.id}' can't be added to the 'parent' entity with id '${E.id}' because it extends or implements multiple '${d.BuiltInBaseEntity}' entities that are non-interactive ("${Et(A.map(P=>oe(P,P.project)),'", "','" and "')}").`:`The entity of type '${i.type}' with id '${i.id}' can't be added to the 'parent' entity with id '${E.id}' because it extends or implements a '${d.BuiltInBaseEntity}' entity that is non-interactive ("${oe(A[0],A[0].project)}").`;c.push({id:Qi.NonInteractiveBaseEntities,message:du}),e.push(new we({id:`${i.id}--${Te.NonInteractiveEntityReferenced}`,code:Te.NonInteractiveEntityReferenced,severity:ve.Error,message:_}))}}const m=Xr(a);return e.push(...f.errors,...m.errors),c.push(...m.explanations),{errors:e,explanations:c,modifiedData:a}}syncOperationInstance(i,r){return{updated:[],added:[],removed:[],affected:[],self:i}}inferInputMapDataType(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"infer-input-map-data-type"))){const a=Rx(i);return r==null||r.attemptAutoclose("infer-input-map-data-type",this.id),{updated:[],added:[],removed:[],affected:[],self:a}}inferOutputMapDataType(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"infer-output-map-data-type"))){const a=Dx(i);return r==null||r.attemptAutoclose("infer-output-map-data-type",this.id),{updated:[],added:[],removed:[],affected:[],self:a}}validateGeneratedUpdate(i){const r=[],a=[];return i.parent&&r.push(new we({id:`${this.id}--${Te.InvalidParentUpdate}`,code:Te.InvalidParentUpdate,severity:ve.Error,message:`Entity of type '${this.type}' with id '${this.id}' cannot have the 'parent' property updated, as it would mean moving the '${this.type}' entity to another parent entity.
|
|
45
45
|
This is likely an incorrect strategy, either the '${this.type}' entity doesn't need to be updated or it should be deleted and a new one created in the desired parent.`})),{errors:r,explanations:a,modifiedData:i}}subscribeDependents(i){return i.forEach(r=>{this.detachedDependents[r.entity.id]||(this.detachedDependents[r.entity.id]=r)}),this}unsubscribeDependents(i){return i.forEach(r=>{this.detachedDependents[r.entity.id]&&delete this.detachedDependents[r.entity.id]}),this}syncDependents(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"sync-dependents"))){const r=[],a=[],c=[],e=[];return Object.values(this.detachedDependents).forEach(f=>{const h=f.entity.afterAllChildrenInitialized(i);r.push(...h.updated),a.push(...h.added),c.push(...h.removed),e.push(...h.affected)}),i==null||i.attemptAutoclose("sync-dependents",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}onDetachedDependencyRemoved(i,r,a){const c=[],e=[],f=[],h=[];return{updated:C(c),added:C(e),removed:C(f),affected:C(h),self:this}}onDetachedDependencyRestored(i,r,a){const c=[],e=[],f=[],h=[];return{updated:C(c),added:C(e),removed:C(f),affected:C(h),self:this}}unsubscribeFromDependencies(){return this}subscribeToDependencies(){return this}increaseVersion(i){var r;if(this.project.diggestedBuiltInBaseEntitiesIds.has(this.id))return this;if(i&&!B(i).isValid())throw new Error(`The shared timestamp '${i}' is not a valid ISO 8601 date string.`);if(i&&B(i).isSame(B(this.createdAt)))return this;if(!((r=this.knownVersions)!=null&&r.has(this.version))&&this.project.initialized)throw new Error(`The current ${this.type} ${this.id} version '${this.version}' is not captured in the 'knownVersions' map. Capture the current version before increasing it to avoid losing data.`);if(!this.activeVersion)throw new Error(`Only active versions can be increased. Entity with id '${this.id}' and version '${this.version}' is not active.`);return this.previousVersion=this.version,this.version=x.UUID.uuid(),this.createdAt=B(i).toISOString()||B().toISOString(),this}captureVersion(){var r;const i=((r=this.knownVersions)==null?void 0:r.get(this.version))||new Ri(this,this.project);if(!this.activeVersion)throw new Error(`Only active versions can be captured. Entity of type ${this.type} with id '${this.id}' and version '${this.version}' is not active.`);if(this.version!==i.version)throw new Error(`Captured ${this.type} with id '${this.id}', version '${i.version}' does not match current entity version '${this.version}'.`);return this.knownVersions=this.knownVersions?this.knownVersions.set(this.version,i):new Map().set(this.version,i),this.apply(i),this}snapshot(){const i=new Ri(this,this.project);return this.apply(i)}apply(i){const r=this.toMeta();return i.metaSync(r,null),i.inputs=[...this.inputs],i.dataType=this.dataType,i.error=this.error,i.parent=this.parent,i}recursiveCaptureUpstreamVersions(i){const r=[],a=[],c=[],e=[];if(this.parent&&this.parent.type!==d.BuiltInBaseEntity&&this.parent.type!==d.PrimitiveEntity){this.parent.increaseVersion(i);const f=this.parent.recursiveCaptureUpstreamVersions(i);r.push(this.parent,...f.updated),a.push(...f.added),c.push(...f.removed)}return{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}async restoreVersion(i,r){var m;const a=[],c=[],e=[],f=[];if(this.version===i&&(r!=null&&r.skipIfSameVersion))return{updated:C(a),added:C(c),removed:C(e),affected:C(f),self:this};if(!this.knownVersions){const E=new Map;for(const[b,A]of this.knownVersions||new Map){if(E.set(b,A),A.activeVersion=!1,A.knownVersions)for(const[_,P]of A.knownVersions)E.set(_,P);A.knownVersions=null}}let h=(m=this.knownVersions)==null?void 0:m.get(i);if(!h){const E=await this.APILoadVersion({},i);if(!E)throw new Error(`Version with id '${i}' for entity with id '${this.id}' not found.`);h=new Ri(E,this.project)}return this.metaSync(h.toShallowJSON(),null),this.previousVersion=h.previousVersion,this.version=h.version,this.createdAt=h.createdAt,this.author=h.author,this.deleted=h.deleted,this.inputs=[...h.inputs],this.dataType=h.dataType,this.error=h.error,this.parent=h.parent,{updated:C(a),added:C(c),removed:C(e),affected:C(f),self:this}}updateWithShallowTransfer(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.UpdateWithShallowTransfer))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[updateWithShallowTransfer] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),this;if(this.metaSync(i,r),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 a=te(i.parent),c=this.project.get(a),e=this.parent;if(e&&e.id!==(c==null?void 0:c.id)&&(this.removeFromParent(r),this.parent=null),c)this.setParent(c,r),this.addSelfToProject(r);else throw r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),new Error(`${this.type} with id '${this.id}' has a 'parent' reference '${a}' that isn't found in the project`)}else throw r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),new Error(`${this.type} with id '${this.id}' must have a 'parent'`);if(i.error||this.setError(null,r),i.inputs.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addInput(e,r),e.setParent(this,r))}),[...this.inputs].forEach(a=>{i.inputs.find(e=>te(e)===a.id)||(this.removeInput(a,r),a.removeFromParent(r))}),i.dataType){const a=te(i.dataType),c=this.project.get(a);c&&this.setDataType(c,r)}else this.setDataType(null,r);return this.captureVersion(),this.subscribeToDependencies(),r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),this}updateWithGenerationTarget(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.UpdateWithGenerationTarget))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[updateWithGenerationTarget] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),this;if(this.metaSync(i,r),i.parent){const a=te(i.parent),c=this.project.get(a),e=this.parent;if(e&&e.id!==(c==null?void 0:c.id)&&(this.removeFromParent(r),this.parent=null),c)this.setParent(c,r),this.addSelfToProject(r);else throw r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),new Error(`${this.type} with id '${this.id}' has a 'parent' reference '${a}' that isn't found in the project`)}return this.captureVersion(),this.subscribeToDependencies(),r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),this}hydrateAncestors(){const i=[],r=[],a=[],c=[];if(this.initialData.parent){const e=te(this.initialData.parent),f=this.project.get(e);if(f)this.setParent(f,null),i.push(f);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'`);return{updated:C(i),added:C(r),removed:C(a),affected:C(c),self:this}}afterAllChildrenInitialized(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AfterAllChildrenInitialized))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[afterAllChildrenInitialized] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.AfterAllChildrenInitialized,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];return this.initialized=!0,this.inputs.sort((f,h)=>f.index-h.index),i==null||i.attemptAutoclose(w.AfterAllChildrenInitialized,this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}addSelfToProject(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"add-self-to-project"))){const r=[this],a=[],c=[],e=[];return this.parent?(this.parent.type===d.DefinitionEntity?(this.parent.addAbstractMethod(this,i),e.push(this.parent)):this.parent.type===d.DataType&&(this.parent.setEntity(this,i),e.push(this.parent)),this.subscribe(),this.subscribeToDependencies(),i==null||i.attemptAutoclose("add-self-to-project",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}):(this.subscribe(),this.subscribeToDependencies(),i==null||i.attemptAutoclose("add-self-to-project",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this})}setParent(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetParent))){var a;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.SetParent,r)?(((a=this.parent)==null?void 0:a.id)!==(i==null?void 0:i.id)&&(this.parent=i,r&&(r==null||r.add(this,W.Updated))),r==null||r.attemptAutoclose(w.SetParent,this.id),this):this}initChildren(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"init-children"))){return this.initialized||this.startedInitialization?this:(this.startedInitialization=!0,this.initialData.dataType&&(this.dataType=Ie(this.initialData.dataType,this.project),this.dataType.setParent(this,null),this.dataType.initChildren(i)),this.inputs=this.initialData.inputs.map(r=>{const a=Ie(r,this.project);return a.setParent(this,null),a.initChildren(i),a}),this.initialData.error&&(this.error=Ie(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(){var i;return this.activeVersion=!0,(i=this.knownVersions)==null||i.forEach(r=>{r.version!==this.version&&(r.activeVersion=!1)}),this.project.subscribeInstance(this),this}unsubscribe(){return this.project.unsubscribeInstance(this),this}metaSync(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"meta-sync"))){const a=tn(this,i,r),c=en(this,a),e=this.toMeta();return this.name=a.name!==void 0?a.name:e.name,this.codeName=a.codeName!==void 0?a.codeName:e.codeName,this.description=a.description!==void 0?a.description:e.description,super.baseMetaSync(a,this,r),a.deleted===!0&&!e.deleted?r==null||r.add(this,W.Removed):a.deleted===!1&&e.deleted?r==null||r.add(this,W.Added):c&&(r==null||r.add(this,W.Updated)),r==null||r.attemptAutoclose("meta-sync",this.id),this}async APILoad(i=Ke,...r){return await Ri.repository.APILoad(this.id,...r),this}async APICreate(i=Ke,...r){return await Ri.repository.APICreate(this.toShallowJSON(),...r),this}async APIUpdate(i=Ke,...r){return await Ri.repository.APIUpdate(this.toShallowJSON(),...r),this}async APIDelete(i=Ke,...r){return await Ri.repository.APIDelete(this.toShallowJSON(),...r),this}async APIClone(i=Ke,...r){return await Ri.repository.APIClone(this.id,...r),this}async APILoadVersion(i=Ke,r,...a){return await Ri.repository.APILoadVersion(this.id,r,...a)}removeFromParent(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveFromParent))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[removeFromParent] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveFromParent,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];return this.parent&&(this.parent.type===d.DataType?(this.parent.setEntity(null,i),e.push(this.parent)):this.parent.type===d.DefinitionEntity&&(this.parent.removeAbstractMethod(this,i),e.push(this.parent))),i==null||i.attemptAutoclose(w.RemoveFromParent,this.id),{added:C(c),updated:C(r),removed:C(a),affected:C(e),self:this}}remove({ignoreUpstream:i}={ignoreUpstream:!1},r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveEntity))){var h;if(!this.checkCanDelete(this,r))return z.Logger.warn(`[remove] User is not allowed to delete or edit this ${this.type} entity with id: ${this.id}`),r==null||r.event({id:`${w.RemoveEntity}-${this.id}--${Me.ActionOwnerEntityNonDeletable}`,action:w.RemoveEntity,owner:this,errorReason:Me.ActionOwnerEntityNonDeletable,rootAction:((h=r==null?void 0:r.self)==null?void 0:h.id)===this.id&&(r==null?void 0:r.actionName)===w.RemoveEntity}),r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const a=[],c=[],e=[],f=[];if(r!=null&&r.hasRemoved(this.id))return r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};if(c.push(this),this.unsubscribe(),this.project.subscribeDeletedInstance(this),this.metaSync({deleted:!0},r),Object.values(this.detachedDependents).forEach(m=>{const{updated:E,removed:b,added:A}=m.entity.onDetachedDependencyRemoved(this,m.field,r);a.push(...E),c.push(...b),e.push(...A)}),this.inputs.forEach(m=>{const E=m.remove({ignoreUpstream:!0},r);a.push(...E.updated),c.push(...E.removed)}),this.dataType){const{updated:m,removed:E}=this.dataType.remove({ignoreUpstream:!0},r);a.push(...m),c.push(...E)}if(this.error){const m=this.error.remove({ignoreUpstream:!0},r);a.push(...m.updated),c.push(...m.removed)}if(this.parent&&!i){const m=this.removeFromParent(r);e.push(...m.added),a.push(...m.updated),c.push(...m.removed),f.push(...m.affected)}return r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:C(e),updated:C(a),removed:C(c),affected:C(f),self:this}}restore({}={},i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RestoreEntity))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[restore] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RestoreEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];if(i!=null&&i.hasAdded(this.id))return i==null||i.attemptAutoclose(w.RestoreEntity,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(f=>{const{updated:h,removed:m,added:E}=f.entity.onDetachedDependencyRestored(this,f.field,i);a.push(...h),c.push(...m),r.push(...E)}),this.inputs.forEach(f=>{const h=f.restore({},i);a.push(...h.updated)}),this.dataType){const{updated:f}=this.dataType.restore({},i);a.push(...f)}if(this.error){const f=this.error.restore({},i);a.push(...f.updated)}return i==null||i.attemptAutoclose(w.RestoreEntity,this.id),{added:C(r),updated:C(a),removed:C(c),affected:C(e),self:this}}toFlat(i=new Set){var a;return i.has(this.id)?[]:(i.add(this.id),[this,...((a=this.dataType)==null?void 0:a.toFlat(i))||[],...this.inputs.flatMap(c=>c.toFlat(i))])}toFlatIds(i=new Set){var a;return i.has(this.id)?[]:(i.add(this.id),[this.id,...((a=this.dataType)==null?void 0:a.toFlatIds(i))||[],...this.inputs.flatMap(c=>c.toFlatIds(i))])}toMeta(){return{id:this.id,version:this.version,createdAt:this.createdAt,previousVersion:this.previousVersion,author:this.author,deleted:this.deleted,codeName:this.codeName,description:this.description,outputName:this.outputName,outputDescription:this.outputDescription,index:this.index,type:this.type,editable:this.editable,deletable:this.deletable,name:this.name}}toJSON(i=new Set){var r,a,c;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,editable:this.editable,deletable:this.deletable,name:this.name,codeName:this.codeName,description:this.description,outputName:this.outputName,outputDescription:this.outputDescription,index:this.index,dataType:((r=this.dataType)==null?void 0:r.toJSON(i))||null,error:((a=this.error)==null?void 0:a.toJSON(i))||null,inputs:this.inputs.map(e=>e.toJSON(i)),parent:((c=this.parent)==null?void 0:c.toReference())||null})}toJSONClone(i=at){var a,c,e,f,h,m,E,b;let r;return(a=i.seenEntityMaps)!=null&&a.has(this.id)?r=i.seenEntityMaps.get(this.id):(r=i.newId||dn(this,this.project,i.uuidStrategy),i.seenEntityMaps&&i.seenEntityMaps.set(this.id,r)),(c=i.seenEntities)!=null&&c.has(r)||(e=i.seenEntities)!=null&&e.has(this.id)?this.toReference({seenEntityMaps:i.seenEntityMaps}):((f=i.seenEntities)==null||f.add(r),(h=i.seenEntities)==null||h.add(this.id),{id:r,version:x.UUID.uuid(),createdAt:i.timestamp||B().toISOString(),previousVersion:null,author:this.author,deleted:this.deleted,type:this.type,editable:this.editable,deletable:this.deletable,name:this.name,codeName:this.codeName,description:this.description,outputName:this.outputName,outputDescription:this.outputDescription,index:this.index,dataType:((m=this.dataType)==null?void 0:m.toJSONClone({...i,newId:null}))||null,error:((E=this.error)==null?void 0:E.toJSONClone({...i,newId:null}))||null,inputs:this.inputs.map(A=>A.toJSONClone({...i,newId:null})),parent:((b=this.parent)==null?void 0:b.toReference({seenEntityMaps:i.seenEntityMaps}))||null})}toReference(i=at){var a;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r+"--"+x.UUID.uuid()+"--ref",type:d.GenericReference,entityId:r,version:this.version,entityType:this.type}}toShallowJSON(i=at){var a,c,e,f;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r,version:this.version,createdAt:this.createdAt,previousVersion:this.previousVersion,author:this.author,deleted:this.deleted,type:this.type,editable:this.editable,deletable:this.deletable,name:this.name,codeName:this.codeName,description:this.description,outputName:this.outputName,outputDescription:this.outputDescription,index:this.index,dataType:((c=this.dataType)==null?void 0:c.toReference(i))||null,error:((e=this.error)==null?void 0:e.toReference(i))||null,inputs:this.inputs.map(h=>h.toReference(i)),parent:((f=this.parent)==null?void 0:f.toReference(i))||null}}toFlatJSON(i=new Set){var a;return i.has(this.id)?[]:(i.add(this.id),[this.toShallowJSON(),...((a=this.dataType)==null?void 0:a.toFlatJSON(i))||[],...this.inputs.flatMap(c=>c.toFlatJSON(i))])}toGenerationTarget(i=at){var a,c;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r,name:this.name,codeName:this.codeName,description:this.description,type:this.type,parent:((c=this.parent)==null?void 0:c.id)||void 0,outputName:this.outputName,outputDescription:this.outputDescription,index:this.index}}toFlatGenerationTarget(i=new Set){var a;return i.has(this.id)?[]:(i.add(this.id),[this.toGenerationTarget(),...((a=this.dataType)==null?void 0:a.toFlatGenerationTarget(i))||[],...this.inputs.flatMap(c=>c.toFlatGenerationTarget(i))])}implementAsGlobalEvent(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"implement-as-global-event")),r,a){const c=r||this.project,e=a||x.UUID.uuid(),f=x.UUID.uuid(),h={id:e,version:f,createdAt:(i==null?void 0:i.timestamp)||B().toISOString(),author:x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.GlobalEvent,name:this.name,description:this.description,inputs:[],calls:[],collapsed:!1,implements:this.toJSON(),parent:(c==null?void 0:c.toReference())||null,x:0,y:0},m=Ie(h,this.project);if(m.hydrateAncestors(),m.setParent(c,i),m.addSelfToProject(i),i==null||i.add(m,W.Added),m.initChildren(i),this.dataType&&this.dataType.entity&&this.dataType.entity.type===d.DefinitionEntity&&this.dataType.entity.properties.length){const E=x.UUID.uuid(),b=x.UUID.uuid(),A={id:x.UUID.uuid(),type:d.GenericReference,version:f,entityType:d.GlobalEvent,entityId:e},_={id:x.UUID.uuid(),type:d.GenericReference,version:f,entityType:d.GlobalEvent,entityId:e},P=this.dataType.toJSONClone(),V={id:E,version:b,createdAt:(i==null?void 0:i.timestamp)||B().toISOString(),author:x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.ReturnStatement,outputs:[],throws:null,calledBySuccess:[],calledByError:[],calledByEntry:[_],defaultValue:null,dataType:P,readsValue:null,parent:A,x:0,y:0},G=Ie(V,this.project);G.setParent(m,i),G.initChildren(i),i==null||i.add(G,W.Added),G.hydrateAncestors(),G.addSelfToProject(i),this.dataType.entity.properties.map((M,k)=>{var ie;const K={id:x.UUID.uuid(),type:d.GenericReference,entityId:E,version:b,entityType:d.ReturnStatement},ne={dataType:null,id:x.UUID.uuid(),version:x.UUID.uuid(),createdAt:(i==null?void 0:i.timestamp)||B().toISOString(),author:x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.InputMap,parentRelationType:null,name:M.name,codeName:M.codeName,description:M.description,readsValue:null,defaultValue:null,declaration:M.toJSON(),index:k,parent:K},X=Ie(ne,this.project);X.setParent(G,i),X.initChildren(i),i==null||i.add(X,W.Added),X.hydrateAncestors(),X.addSelfToProject(i);const de=((ie=M.dataType)==null?void 0:ie.clone(i,X))||null;de&&(i==null||i.add(de,W.Added),i||de.captureVersion()),X.setDataType(de,i),i||X.captureVersion()}),i||G.captureVersion()}return i||m.captureVersion(),i==null||i.attemptAutoclose("implement-as-function-declaration",this.id),m}implementAsFunctionDeclaration(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"implement-as-function-declaration")),r,a){let c=r?Fr(r,this):this.project;const e=r||this.project,f=a||x.UUID.uuid(),h=x.UUID.uuid(),m=md.new(i);if(m.id=f,m.version=h,m.parent=(e==null?void 0:e.toReference())||null,m.codeName=this.codeName,m.name=this.name,m.description=this.description,m.implements=this.toJSON(),e.type===d.DefinitionEntity){let A=this.index||0;const _=e.methods.filter(P=>!P.deleted);_.length&&(A>=_.length?A=_.length:A<0?A=0:_.filter(P=>(P.index||0)>=A).forEach(P=>{P.metaSync({index:(P.index||0)+1},i),i==null||i.add(P,W.Updated)})),m.index=A}const E=Ie(m,c);E.hydrateAncestors(),E.setParent(e,i),E.addSelfToProject(i),i==null||i.add(E,W.Added),E.initChildren(i);const b=[];return this.dataType&&(this.dataType.entity&&(this.dataType.entity.type===d.DefinitionEntity||this.dataType.entity.type===d.BuiltInBaseEntity)&&this.dataType.entity.properties.length?b.push(this.dataType):(this.dataType.orChildrenGroup||[]).forEach(A=>{A.entity&&(A.entity.type===d.DefinitionEntity||A.entity.type===d.BuiltInBaseEntity)&&A.entity.properties.length&&b.push(A)})),b.forEach(A=>{const _=x.UUID.uuid(),P=x.UUID.uuid(),V={id:x.UUID.uuid(),type:d.GenericReference,version:h,entityType:d.FunctionDeclaration,entityId:f},G={id:x.UUID.uuid(),type:d.GenericReference,version:h,entityType:d.FunctionDeclaration,entityId:f},M=su.new(i);M.id=_,M.version=P,M.parent=V,M.calledByEntry=[G];const k=Ie(M,c);k.hydrateAncestors(),k.setParent(E,i),k.addSelfToProject(i),i==null||i.add(k,W.Added),k.initChildren(i),this.project.diggestedBuiltInBaseEntitiesIds.has(A.id)?k.setDataType(c.getBuiltIn(A.id),i):A.clone(i,k),k.afterAllChildrenInitialized(i),i||k.captureVersion()}),i||E.captureVersion(),i==null||i.attemptAutoclose("implement-as-function-declaration",this.id),E}implementAsLoop(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"implement-as-loop")),r,a){const c=r||this.project,e=a||x.UUID.uuid(),f=x.UUID.uuid(),h={catchesError:!1,id:e,version:f,createdAt:(i==null?void 0:i.timestamp)||B().toISOString(),author:x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.Loop,writesValues:[],declaration:this.toJSON(),inputs:[],outputs:[],error:null,dataType:null,successCalls:[],errorCalls:[],calledByEntry:[],calledByError:[],calledBySuccess:[],body:null,x:0,y:0,parent:c.toReference()},m=Ie(h,this.project);return m.hydrateAncestors(),m.setParent(c,i),m.addSelfToProject(i),i==null||i.add(m,W.Added),m.initChildren(i),c===this.project&&this.project.addLoop(m),i||m.captureVersion(),i==null||i.attemptAutoclose("implement-as-loop",this.id),m}implementAsOperation(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"implement-as-operation")),r,a){const c=r||this.project,e=a||x.UUID.uuid(),f=x.UUID.uuid(),h={catchesError:!1,id:e,version:f,createdAt:(i==null?void 0:i.timestamp)||B().toISOString(),author:x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.Operation,writesValues:[],declaration:this.toJSON(),inputs:[],outputs:[],error:null,successCalls:[],errorCalls:[],calledByEntry:[],calledByError:[],calledBySuccess:[],x:0,y:0,parent:c.toReference()},m=Ie(h,this.project);return m.hydrateAncestors(),m.setParent(c,i),m.addSelfToProject(i),i==null||i.add(m,W.Added),m.initChildren(i),c===this.project&&this.project.addOperation(m),i||m.captureVersion(),i==null||i.attemptAutoclose("implement-as-operation",this.id),m}implementAsCondition(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"implement-as-condition")),r,a){const c=r||this.project,e=a||x.UUID.uuid(),f=x.UUID.uuid(),h={id:e,version:f,createdAt:(i==null?void 0:i.timestamp)||B().toISOString(),author:x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.Condition,index:null,andChildrenGroup:null,orChildrenGroup:null,declaration:this.toJSON(),inputs:[],successCalls:[],errorCalls:[],calledByEntry:[],calledByError:[],calledBySuccess:[],x:0,y:0,parent:c.toReference()},m=Ie(h,this.project);return m.hydrateAncestors(),m.setParent(c,i),m.addSelfToProject(i),i==null||i.add(m,W.Added),m.initChildren(i),c===this.project&&this.project.addCondition(m),i||m.captureVersion(),i==null||i.attemptAutoclose("implement-as-condition",this.id),m}clearErrors(){var i,r;return this.errors=[],this.inputs.forEach(a=>a.clearErrors()),(i=this.dataType)==null||i.clearErrors(),(r=this.error)==null||r.clearErrors(),this}validate(){return this.errors=tVe(this),{success:!0}}async validateAsync(i={}){const r=z.YieldTracker.from(i);return this.errors=await eVe(this,{tracker:r}),{success:!0}}getErrors(){var r;return[...this.errors,...((r=this.dataType)==null?void 0:r.getErrors())||[],...this.inputs.flatMap(a=>a.getErrors())]}async getErrorsAsync(i={}){const r=z.YieldTracker.from(i),a=[...this.errors];if(await r.tick(),this.dataType){const c=await this.dataType.getErrorsAsync({tracker:r});a.push(...c)}for(const c of this.inputs){const e=await c.getErrorsAsync({tracker:r});a.push(...e)}return a}getShallowErrors(){return this.errors}clone(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.CloneEntity)),r=null,a=null,c=!0){var P,V;if(this.project.diggestedBuiltInBaseEntitiesIds.has(this.id))return this;const e=Fr(r,this),f=this.toJSON(),h=a||x.UUID.uuid();f.inputs=[],f.dataType=null,f.error=null;const m=h.split("-id"),E=m[m.length-1||0]||h;f.id=h,f.version=x.UUID.uuid(),f.createdAt=(i==null?void 0:i.timestamp)||B().toISOString(),f.author=(i==null?void 0:i.author)||"1",f.previousVersion=null,f.deleted=!1,f.deletable=!0,f.editable=!0;const b=lr(f,e);r?b.setParent(r,i):this.parent&&b.setParent(this.parent,null),c&&b.subscribe(),b.initChildren(i),i==null||i.add(b,W.Added);const A=(P=this.dataType)==null?void 0:P.clone(i,b,x.UUID.uuid(),c);b.setDataType(A||null,i);const _=(V=this.inputs)==null?void 0:V.map((G,M)=>G.clone(i,b,E+"-argument-value-descriptor-"+M+"-id",c));return b.inputs=_,this.error&&(b.error=this.error.clone(i,b,E+"-error-action-descriptor-id",c)),i||b.captureVersion(),i==null||i.attemptAutoclose(w.CloneEntity,this.id),b}addInput(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddInput))){return this.checkCanEdit(this,r)?(this.inputs.find(a=>a.id===i.id)||(this.inputs.push(i),r==null||r.add(this,W.Affected)),r==null||r.attemptAutoclose(w.AddInput,this.id),this):(z.Logger.warn(`[addInput] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.AddInput,this.id),this)}removeInput(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveInput))){return this.checkCanEdit(this,r)?(this.inputs.find(a=>a.id===i.id)&&(this.inputs=this.inputs.filter(a=>a.id!==i.id),r==null||r.add(this,W.Affected)),r==null||r.attemptAutoclose(w.RemoveInput,this.id),this):(z.Logger.warn(`[removeInput] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.RemoveInput,this.id),this)}setError(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetErrorEntity))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[setError] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.SetErrorEntity,this.id),this;const a=this.error;return(a==null?void 0:a.id)!==(i==null?void 0:i.id)&&(a==null||a.remove({ignoreUpstream:!0},r),this.error=i,this.subscribeToDependencies(),r==null||r.add(this,W.Affected)),r==null||r.attemptAutoclose(w.SetErrorEntity,this.id),this}setDataType(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetDataType))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[setDataType] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.SetDataType,this.id),this;const a=this.dataType;return(a==null?void 0:a.id)!==(i==null?void 0:i.id)&&(a==null||a.remove({ignoreUpstream:!0},r),this.dataType=i,this.subscribeToDependencies(),r==null||r.add(this,W.Affected)),r==null||r.attemptAutoclose(w.SetDataType,this.id),this}removeDataType(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveDataType))){return this.checkCanEdit(this,i)?(this.dataType&&(this.dataType.remove({ignoreUpstream:!0},i),i==null||i.add(this,W.Affected),this.dataType=null),i==null||i.attemptAutoclose(w.RemoveDataType,this.id),this):(z.Logger.warn(`[removeDataType] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveDataType,this.id),this)}getDataType(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"get-data-type"))){return i==null||i.attemptAutoclose("get-data-type",this.id),this.dataType||null}createInternalCall(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"create-internal")),r,a={}){const c={catchesError:!1,id:a.id||x.UUID.uuid(),version:a.version||x.UUID.uuid(),createdAt:a.createdAt||(i==null?void 0:i.timestamp)||B().toISOString(),author:a.author||x.sessionAuthor||"1",previousVersion:a.previousVersion||null,deleted:a.deleted||!1,deletable:!0,editable:!0,type:d.InternalCall,writesValues:[],parent:r.toReference(),successCalls:a.successCalls||[],errorCalls:a.errorCalls||[],inputs:a.inputs||[],outputs:a.outputs||[],error:a.error||null,calledBySuccess:a.calledBySuccess||[],calledByError:a.calledByError||[],calledByEntry:a.calledByEntry||[],declaration:this.toShallowJSON(),index:r.internalCalls.length},e=Ie(c,this.project);return e.hydrateAncestors(),e.addSelfToProject(i),i==null||i.add(e,W.Added),e.setParent(r,i),e.initChildren(i),e.afterAllChildrenInitialized(i),i||e.captureVersion(),i==null||i.attemptAutoclose("create-internal",this.id),e}getUniqueOutputProperties(){const i=[];return this.dataType&&this.dataType.entity&&this.dataType.entity.type===d.DefinitionEntity&&this.dataType.entity.properties.length?this.dataType.entity.properties:i}};R(Ri,"repository",{APICreate:async(i,...r)=>i,APIUpdate:async(i,...r)=>i,APIDelete:async(i,...r)=>i,APIClone:async(i,...r)=>{},APILoad:async(i,...r)=>null,APILoadVersion:async(i,r,...a)=>null}),R(Ri,"type",d.ActionDescriptor),R(Ri,"USER_MANAGED_PARENT_TYPES",[d.DefinitionEntity,d.DataType]),R(Ri,"PARENT_TYPES",[...Ri.USER_MANAGED_PARENT_TYPES,d.PrimitiveEntity,d.BuiltInBaseEntity]),R(Ri,"MUTABLE_BASE_PROPERTIES",["name","codeName","description","index","outputName","outputDescription"]),R(Ri,"INMUTABLE_BASE_PROPERTIES",["id","type","version","createdAt","author","previousVersion"]),R(Ri,"BASE_PROPERTIES",[...Ri.MUTABLE_BASE_PROPERTIES,...Ri.INMUTABLE_BASE_PROPERTIES]),R(Ri,"MUTABLE_META_PROPERTIES",[...Ri.MUTABLE_BASE_PROPERTIES]),R(Ri,"INMUTABLE_META_PROPERTIES",[...Ri.INMUTABLE_BASE_PROPERTIES]),R(Ri,"META_PROPERTIES",[...Ri.MUTABLE_META_PROPERTIES,...Ri.INMUTABLE_META_PROPERTIES]),R(Ri,"MUTABLE_UPSTREAM_PROPERTIES",[]),R(Ri,"INMUTABLE_UPSTREAM_PROPERTIES",["parent"]),R(Ri,"UPSTREAM_PROPERTIES",[...Ri.MUTABLE_UPSTREAM_PROPERTIES,...Ri.INMUTABLE_UPSTREAM_PROPERTIES]),R(Ri,"MUTABLE_DOWNSTREAM_PROPERTIES",["inputs","outputs"]),R(Ri,"INMUTABLE_DOWNSTREAM_PROPERTIES",[]),R(Ri,"DOWNSTREAM_PROPERTIES",[...Ri.MUTABLE_DOWNSTREAM_PROPERTIES,...Ri.INMUTABLE_DOWNSTREAM_PROPERTIES]),R(Ri,"PROPERTIES",[...Ri.META_PROPERTIES,...Ri.UPSTREAM_PROPERTIES,...Ri.DOWNSTREAM_PROPERTIES]);let er=Ri;var iVe=(s=>(s.Parent="loop-parent-field",s.LoopDataTypeEntity="loop-data-type-entity-field",s.LoopDataType="loop-data-type-field",s.LoopBodyDataTypeEntity="loop-body-data-type-entity-field",s.LoopBodyDataType="loop-body-data-type-field",s))(iVe||{});const ii=class ii extends un{constructor(i,r){super(i);R(this,"initialData");R(this,"id");R(this,"x");R(this,"y");R(this,"type",d.Loop);R(this,"catchesError",!1);R(this,"declaration");R(this,"writesValues",[]);R(this,"dataType",null);R(this,"inputs",[]);R(this,"outputs",[]);R(this,"successCalls",[]);R(this,"errorCalls",[]);R(this,"error",null);R(this,"body");R(this,"calledBySuccess",[]);R(this,"calledByError",[]);R(this,"calledByEntry",[]);R(this,"parent");R(this,"detachedChildren",[]);R(this,"errors",[]);R(this,"project");R(this,"detachedDependents",{});R(this,"knownVersions",null);R(this,"activeVersion",!1);R(this,"initialized",!1);R(this,"startedInitialization",!1);this.initialData=i,this.project=r,this.id=i.id,this.x=i.x,this.y=i.y,this.catchesError=i.catchesError||!1}static new(i=null){return{id:x.UUID.uuid(),version:x.UUID.uuid(),createdAt:(i==null?void 0:i.timestamp)||B().toISOString(),author:(i==null?void 0:i.author)||x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.Loop,writesValues:[],catchesError:!1,declaration:null,inputs:[],outputs:[],dataType:null,error:null,body:null,parent:null,calledByEntry:[],calledBySuccess:[],calledByError:[],errorCalls:[],successCalls:[],x:0,y:0}}static fromGenerationTarget(i,r,a){const c=a===void 0?r.addChangeSet(new S(r,x.sessionAuthor,B().toISOString(),r,!0,w.CreateFromGenerationTarget)):a;let e=r;if(i.parent){const P=te(i.parent);e=r.get(P)}const f=te(i.declaration),h=r.get(f),m=(i.calledByEntry||[]).map(P=>{const V=te(P);return r.get(V)}),E=(i.calledBySuccess||[]).map(P=>{const V=te(P);return r.get(V)}),b=(i.calledByError||[]).map(P=>{const V=te(P);return r.get(V)}),A={id:i.id,version:x.UUID.uuid(),createdAt:(c==null?void 0:c.timestamp)||B().toISOString(),author:(c==null?void 0:c.author)||x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.Loop,writesValues:[],dataType:null,catchesError:i.catchesError||!1,declaration:h.toJSON(),calledByEntry:m.map(P=>P.toReference()),calledBySuccess:E.map(P=>P.toReference()),calledByError:b.map(P=>P.toReference()),errorCalls:[],successCalls:[],inputs:[],outputs:[],body:null,error:null,x:0,y:0,parent:e.toReference()},_=Ie(A,r);return _.hydrateAncestors(),_.setParent(e,c),_.addSelfToProject(c),c==null||c.add(_,W.Added),_.initChildren(c),c||_.captureVersion(),_}static validateGenerationTarget(i,r){let a=JSON.parse(JSON.stringify(i));const c=[],e=[],f=Bn(a,{parent:{list:!1,types:[...Dr,d.Project],optional:!0},declaration:{list:!1,types:[d.ActionDescriptor]}},r);c.push(...f.explanations),a=f.modifiedData;const h=Xr(a);if(e.push(...f.errors,...h.errors),c.push(...h.explanations),!i.declaration)e.push(new we({id:`${i.id}--${Ce.InvalidObjectStructure}`,code:Ce.InvalidObjectStructure,severity:ve.Error,message:`Entity of type '${i.type}' with id '${i.id}' is missing the 'declaration' property. This property is required for a '${i.type}' entity and must point to one of the built-in action descriptors reserved for '${d.Loop}' entities.`})),c.push({id:Qi.AllOperationActionDescriptors,message:qg(r)});else if(!r.get(i.declaration))e.push(new we({id:`${i.id}--${Te.ReferencedEntityNotFound}`,code:Te.ReferencedEntityNotFound,severity:ve.Error,message:`Entity of type '${i.type}' with id '${i.id}' has an 'declaration' property that isn't found in the project. The 'declaration' property must point to one of the built-in action descriptors reserved for '${d.Loop}' entities.`})),c.push({id:Qi.AllOperationActionDescriptors,message:qg(r)});else{const E=Gje(i.declaration,r);e.push(...E.errors),c.push(...E.explanations)}return{errors:e,explanations:c,modifiedData:a}}get currentIterationNumberArgumentDeclaration(){var a;const i=(a=re[d.Loop][this.declaration.id].body.inputs.iterationNumber)==null?void 0:a.id;return this.body.inputs.find(c=>!!c.implements.find(e=>e.id===i)||c.name===ii.CURRENT_ITERATION_NUMBER_ARG_NAME)}get currentValueArgumentDeclaration(){var a;if(this.declaration.id===ft.ManualFlow||this.declaration.id===ft.Counted)return null;const i=(a=re[d.Loop][this.declaration.id].body.inputs.currentValue)==null?void 0:a.id;return this.body.inputs.find(c=>!!c.implements.find(e=>e.id===i)||c.name===ii.CURRENT_VALUE_ARG_NAME)||null}get continueStatements(){return pt(this.body).filter(a=>a.type===d.ContinueStatement&&a.parent.id===this.id)}get breakStatements(){return pt(this.body).filter(a=>a.type===d.BreakStatement&&a.parent.id===this.id)}validateGeneratedUpdate(i){const r=[],a=[];return i.parent&&r.push(new we({id:`${this.id}--${Te.InvalidParentUpdate}`,code:Te.InvalidParentUpdate,severity:ve.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.
|
|
46
46
|
If an entity is called by another, they must be in the same scope, which means they have the same parent.
|
|
@@ -59,7 +59,7 @@ The 'variable-declaration' must be called before any internal call that referenc
|
|
|
59
59
|
The 'variable-declaration' must be called in a different branch that executes before any internal call that references it can be called.`,entity:s}).error)}}}return p}const Q1i=Object.freeze(Object.defineProperty({__proto__:null,validate:MMe,validateAsync:BMe,validateCallAfterDeclaration:sd,validateConstantValueOverride:GMe},Symbol.toStringTag,{value:"Module"}));var g$=(s=>(s.Parent="parent",s.DataTypeEntity="data-type-entity",s.VarDeclaration="var-declaration",s))(g$||{});const Di=class Di extends un{constructor(i,r){super(i);R(this,"initialData");R(this,"id");R(this,"x");R(this,"y");R(this,"type",d.VariableInstance);R(this,"catchesError",!1);R(this,"defaultValue",null);R(this,"writesValues",[]);R(this,"readsValue",null);R(this,"declaration");R(this,"inputs",[]);R(this,"outputs",[]);R(this,"error",null);R(this,"calledBySuccess",[]);R(this,"calledByError",[]);R(this,"calledByEntry",[]);R(this,"successCalls",[]);R(this,"errorCalls",[]);R(this,"internalCalls",[]);R(this,"project");R(this,"errors",[]);R(this,"parent");R(this,"detachedDependents",{});R(this,"knownVersions",null);R(this,"activeVersion",!1);R(this,"initialized",!1);R(this,"startedInitialization",!1);R(this,"suggestion",!1);R(this,"_codeNativeValueValidation",null);this.initialData=i,this.project=r,this.id=i.id,this.x=i.x,this.y=i.y,this.catchesError=i.catchesError||!1}static new(i=null){return{id:x.UUID.uuid(),version:x.UUID.uuid(),createdAt:(i==null?void 0:i.timestamp)||B().toISOString(),author:(i==null?void 0:i.author)||x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.VariableInstance,catchesError:!1,declaration:null,internalCalls:[],successCalls:[],errorCalls:[],readsValue:null,writesValues:[],defaultValue:null,inputs:[],outputs:[],parent:null,calledByEntry:[],calledBySuccess:[],calledByError:[],error:null,x:0,y:0}}static fromGenerationTarget(i,r,a){const c=a===void 0?r.addChangeSet(new S(r,x.sessionAuthor,B().toISOString(),r,!0,w.CreateFromGenerationTarget)):a;let e=r;if(i.parent){const V=te(i.parent);e=r.get(V)}const f=te(i.declaration),h=r.get(f),m=(i.calledByEntry||[]).map(V=>{const G=te(V);return r.get(G)}),E=(i.calledBySuccess||[]).map(V=>{const G=te(V);return r.get(G)}),b=(i.calledByError||[]).map(V=>{const G=te(V);return r.get(G)});let A=null;if(i.readsValue){const V=te(i.readsValue);A=r.get(V)}const _={id:i.id,version:x.UUID.uuid(),createdAt:(c==null?void 0:c.timestamp)||B().toISOString(),author:(c==null?void 0:c.author)||x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.VariableInstance,catchesError:i.catchesError||!1,declaration:h.toReference(),calledByEntry:m.map(V=>V.toReference()),calledBySuccess:E.map(V=>V.toReference()),calledByError:b.map(V=>V.toReference()),defaultValue:null,errorCalls:[],successCalls:[],internalCalls:[],readsValue:A?A.toReference():null,inputs:[],outputs:[],writesValues:[],error:null,x:0,y:0,parent:e.toReference()},P=Ie(_,r);return P.hydrateAncestors(),P.setParent(e,c),P.addSelfToProject(c),c==null||c.add(P,W.Added),P.initChildren(c),c||P.captureVersion(),P}static validateGenerationTarget(i,r){let a=JSON.parse(JSON.stringify(i));const c=[],e=[],f=Bn(a,{parent:{list:!1,types:[...Dr,d.Project],optional:!0},declaration:{list:!1,types:[d.VariableDeclaration]}},r);c.push(...f.explanations),a=f.modifiedData;const h=Xr(a);return e.push(...f.errors,...h.errors),c.push(...h.explanations),{errors:e,explanations:c,modifiedData:a}}get codeName(){var i;return(i=this.declaration)==null?void 0:i.codeName}get codeNativeValueValidation(){var i;return this._codeNativeValueValidation||((i=this.declaration)==null?void 0:i.codeNativeValueValidation)||null}validateGeneratedUpdate(i){const r=[],a=[];let c=JSON.parse(JSON.stringify(i));const e=dy(c,this);return c=e.modifiedData,r.push(...e.errors),i.parent&&r.push(new we({id:`${this.id}--${Te.InvalidParentUpdate}`,code:Te.InvalidParentUpdate,severity:ve.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.
|
|
60
60
|
If an entity is called by another, they must be in the same scope, which means they have the same parent.
|
|
61
61
|
Specifically for variables, their scope is also calculated from their value readers and value writers.
|
|
62
|
-
You shouldn't have to manually update a 'parent' property. The equivalent result is to change its value readers, value writers, or callers.`})),{errors:r,explanations:a,modifiedData:c}}subscribeDependents(i){return i.forEach(r=>{this.detachedDependents[r.entity.id]||(this.detachedDependents[r.entity.id]=r)}),this}unsubscribeDependents(i){return i.forEach(r=>{this.detachedDependents[r.entity.id]&&delete this.detachedDependents[r.entity.id]}),this}syncDependents(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"sync-dependents"))){const r=[],a=[],c=[],e=[];return Object.values(this.detachedDependents).forEach(f=>{const h=f.entity.afterAllChildrenInitialized(i);r.push(...h.updated),a.push(...h.added),c.push(...h.removed),e.push(...h.affected)}),i==null||i.attemptAutoclose("sync-dependents",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}onDetachedDependencyRemoved(i,r,a){const c=[],e=[],f=[],h=[];if(r==="parent"){const{updated:m,added:E,removed:b}=this.remove({ignoreUpstream:!1},a);c.push(...m),e.push(...E),f.push(...b)}if(r==="var-declaration"){const{updated:m,added:E,removed:b}=this.remove({ignoreUpstream:!1},a);c.push(...m),e.push(...E),f.push(...b)}return{updated:C(c),added:C(e),removed:C(f),affected:C(h),self:this}}onDetachedDependencyRestored(i,r,a){const c=[],e=[],f=[],h=[];if(r==="parent"){const{updated:m,added:E,removed:b}=this.restore({},a);c.push(...m),e.push(...E),f.push(...b)}if(r==="var-declaration"){const{updated:m,added:E,removed:b}=this.restore({},a);c.push(...m),e.push(...E),f.push(...b)}return{updated:C(c),added:C(e),removed:C(f),affected:C(h),self:this}}unsubscribeFromDependencies(){var i,r,a,c,e,f,h;return(r=(i=this.parent)==null?void 0:i.unsubscribeDependents)==null||r.call(i,[{entity:this,field:"parent"}]),(e=(c=(a=this.declaration.dataType)==null?void 0:a.entity)==null?void 0:c.unsubscribeDependents)==null||e.call(c,[{entity:this,field:"data-type-entity"}]),(h=(f=this.declaration)==null?void 0:f.unsubscribeDependents)==null||h.call(f,[{entity:this,field:"var-declaration"}]),this}subscribeToDependencies(){var i,r,a,c;return(i=this.parent)==null||i.subscribeDependents([{entity:this,field:"parent"}]),(c=(a=(r=this.declaration.dataType)==null?void 0:r.entity)==null?void 0:a.subscribeDependents)==null||c.call(a,[{entity:this,field:"data-type-entity"}]),this.declaration.subscribeDependents([{entity:this,field:"var-declaration"}]),this}increaseVersion(i){var r;if(this.project.diggestedBuiltInBaseEntitiesIds.has(this.id))return this;if(i&&!B(i).isValid())throw new Error(`The shared timestamp '${i}' is not a valid ISO 8601 date string.`);if(i&&B(i).isSame(B(this.createdAt)))return this;if(!((r=this.knownVersions)!=null&&r.has(this.version))&&this.project.initialized)throw new Error(`The current ${this.type} ${this.id} version '${this.version}' is not captured in the 'knownVersions' map. Capture the current version before increasing it to avoid losing data.`);if(!this.activeVersion)throw new Error(`Only active versions can be increased. Entity with id '${this.id}' and version '${this.version}' is not active.`);return this.previousVersion=this.version,this.version=x.UUID.uuid(),this.createdAt=B(i).toISOString()||B().toISOString(),this}captureVersion(){var r;const i=((r=this.knownVersions)==null?void 0:r.get(this.version))||new Di(this,this.project);if(!this.activeVersion)throw new Error(`Only active versions can be captured. Entity of type ${this.type} with id '${this.id}' and version '${this.version}' is not active.`);if(this.version!==i.version)throw new Error(`Captured ${this.type} with id '${this.id}', version '${i.version}' does not match current entity version '${this.version}'.`);return this.knownVersions=this.knownVersions?this.knownVersions.set(this.version,i):new Map().set(this.version,i),this.apply(i),this}snapshot(){const i=new Di(this,this.project);return this.apply(i)}apply(i){const r=this.toMeta();return i.metaSync(r,null),i.inputs=[...this.inputs],i.outputs=[...this.outputs],i.internalCalls=[...this.internalCalls],i.successCalls=[...this.successCalls],i.errorCalls=[...this.errorCalls],i.writesValues=[...this.writesValues],i.readsValue=this.readsValue,i.defaultValue=this.defaultValue,i.declaration=this.declaration,i.calledBySuccess=[...this.calledBySuccess],i.calledByError=[...this.calledByError],i.calledByEntry=[...this.calledByEntry],i.error=this.error,i.parent=this.parent,i}recursiveCaptureUpstreamVersions(i){const r=[],a=[],c=[],e=[];if(this.parent){this.parent.increaseVersion(i);const f=this.parent.recursiveCaptureUpstreamVersions(i);r.push(this.parent,...f.updated),a.push(...f.added),c.push(...f.removed)}return{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}async restoreVersion(i,r){var m;const a=[],c=[],e=[],f=[];if(this.version===i&&(r!=null&&r.skipIfSameVersion))return{updated:C(a),added:C(c),removed:C(e),affected:C(f),self:this};if(!this.knownVersions){const E=new Map;for(const[b,A]of this.knownVersions||new Map){if(E.set(b,A),A.activeVersion=!1,A.knownVersions)for(const[_,P]of A.knownVersions)E.set(_,P);A.knownVersions=null}}let h=(m=this.knownVersions)==null?void 0:m.get(i);if(!h){const E=await this.APILoadVersion({},i);if(!E)throw new Error(`Version with id '${i}' for entity with id '${this.id}' not found.`);h=new Di(E,this.project)}return this.metaSync(h.toShallowJSON(),null),this.previousVersion=h.previousVersion,this.version=h.version,this.createdAt=h.createdAt,this.author=h.author,this.deleted=h.deleted,this.inputs=[...h.inputs],this.outputs=[...h.outputs],this.internalCalls=[...h.internalCalls],this.successCalls=[...h.successCalls],this.errorCalls=[...h.errorCalls],this.writesValues=[...h.writesValues],this.readsValue=h.readsValue,this.defaultValue=h.defaultValue,this.declaration=h.declaration,this.calledBySuccess=[...h.calledBySuccess],this.calledByError=[...h.calledByError],this.calledByEntry=[...h.calledByEntry],this.error=h.error,this.parent=h.parent,{updated:C(a),added:C(c),removed:C(e),affected:C(f),self:this}}updateWithShallowTransfer(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.UpdateWithShallowTransfer))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[updateWithShallowTransfer] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),this;if(this.metaSync(i,r),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 a=te(i.parent),c=this.project.get(a),e=this.parent;if(e&&e.id!==(c==null?void 0:c.id)&&this.removeFromParent(r),c)this.setParent(c,r),this.addSelfToProject(r);else throw r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),new Error(`${this.type} with id '${this.id}' has a 'parent' reference '${a}' that isn't found in the project`)}else throw r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),new Error(`${this.type} with id '${this.id}' must have a 'parent'`);if(i.readsValue){const a=te(i.readsValue),c=this.project.get(a),e=this.readsValue;e&&e.id!==(c==null?void 0:c.id)&&this.removeValueWriter(r),c&&this.setValueWriter(c,r)}else this.removeValueWriter(r);if(i.declaration){const a=te(i.declaration),c=this.project.get(a);c&&this.setDeclaration(c)}if(i.calledByEntry.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addEntryCaller(e,r),e.addCall(this,r))}),[...this.calledByEntry].forEach(a=>{i.calledByEntry.find(e=>te(e)===a.id)||(this.removeCaller(a,r),a.removeCall(this,r))}),i.calledBySuccess.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addSuccessCaller(e,r),e.addSuccessCall(this,r))}),[...this.calledBySuccess].forEach(a=>{i.calledBySuccess.find(e=>te(e)===a.id)||(this.removeCaller(a,r),a.removeCall(this,r))}),i.calledByError.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addErrorCaller(e,r),e.addErrorCall(this,r))}),[...this.calledByError].forEach(a=>{i.calledByError.find(e=>te(e)===a.id)||(this.removeCaller(a,r),a.removeCall(this,r))}),i.outputs.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addOutput(e,r),e.setParent(this,r))}),[...this.outputs].forEach(a=>{i.outputs.find(e=>te(e)===a.id)||(this.removeOutput(a,r),a.removeFromParent(r))}),i.inputs.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addInput(e,r),e.setParent(this,r))}),[...this.inputs].forEach(a=>{i.inputs.find(e=>te(e)===a.id)||(this.removeInput(a,r),a.removeFromParent(r))}),i.defaultValue){const a=te(i.defaultValue),c=this.project.get(a);c&&this.setDefaultValue(c,r)}else this.setDefaultValue(null,r);return i.writesValues.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addValueReader(e,r),e.setValueWriter(this,r))}),[...this.writesValues].forEach(a=>{i.writesValues.find(e=>te(e)===a.id)||(this.removeValueReader(a,r),a.setValueWriter(null,r))}),this.captureVersion(),this.subscribeToDependencies(),r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),this}updateWithGenerationTarget(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.UpdateWithGenerationTarget))){var a,c,e;if(!this.checkCanEdit(this,r))return z.Logger.warn(`[updateWithGenerationTarget] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),this;if(this.metaSync(i,r),i.parent){const f=te(i.parent),h=this.project.get(f),m=this.parent;if(m&&m.id!==(h==null?void 0:h.id)&&this.removeFromParent(r),h)this.setParent(h,r),this.addSelfToProject(r);else throw r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),new Error(`${this.type} with id '${this.id}' has a 'parent' reference '${f}' that isn't found in the project`)}if(i.declaration){const f=te(i.declaration),h=this.project.get(f);if(h)this.setDeclaration(h);else throw new Error(`${this.type} with id '${this.id}' has a 'declaration' reference '${f}' that isn't found in the project`)}if(i.readsValue){const f=te(i.readsValue),h=this.project.get(f);if(!h)throw new Error(`${this.type} with id '${this.id}' has a 'readsValue' reference '${f}' that isn't found in the project`);const m=this.readsValue;m&&m.id!==(h==null?void 0:h.id)&&this.removeValueWriter(r),h&&this.setValueWriter(h,r)}else i.readsValue===null&&this.removeValueWriter(r);return(a=i.calledByEntry)==null||a.forEach(f=>{const h=te(f),m=this.project.get(h);if(m)this.addEntryCaller(m,r),m.addCall(this,r);else throw new Error(`${this.type} with id '${this.id}' has a 'calledByEntry' reference '${h}' that isn't found in the project`)}),i.calledByEntry&&[...this.calledByEntry].forEach(f=>{var m;((m=i.calledByEntry)==null?void 0:m.find(E=>te(E)===f.id))||(this.removeCaller(f,r),f.removeCall(this,r))}),(c=i.calledBySuccess)==null||c.forEach(f=>{const h=te(f),m=this.project.get(h);if(m)this.addSuccessCaller(m,r),m.addSuccessCall(this,r);else throw new Error(`${this.type} with id '${this.id}' has a 'calledBySuccess' reference '${h}' that isn't found in the project`)}),i.calledBySuccess&&[...this.calledBySuccess].forEach(f=>{var m;((m=i.calledBySuccess)==null?void 0:m.find(E=>te(E)===f.id))||(this.removeCaller(f,r),f.removeCall(this,r))}),(e=i.calledByError)==null||e.forEach(f=>{const h=te(f),m=this.project.get(h);if(m)this.addErrorCaller(m,r),m.addErrorCall(this,r);else throw new Error(`${this.type} with id '${this.id}' has a 'calledByError' reference '${h}' that isn't found in the project`)}),i.calledByError&&[...this.calledByError].forEach(f=>{var m;((m=i.calledByError)==null?void 0:m.find(E=>te(E)===f.id))||(this.removeCaller(f,r),f.removeCall(this,r))}),this.captureVersion(),this.subscribeToDependencies(),r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),this}hydrateAncestors(){const i=[],r=[],a=[],c=[];if(this.initialData.parent){const e=te(this.initialData.parent),f=this.project.get(e);if(f)this.setParent(f,null),i.push(f);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.readsValue){const e=te(this.initialData.readsValue),f=this.project.get(e);f&&(this.setValueWriter(f,null),i.push(f))}if(this.initialData.declaration){const e=te(this.initialData.declaration),f=this.project.get(e);f&&(this.setDeclaration(f),i.push(f))}return this.initialData.calledByEntry.forEach(e=>{const f=te(e),h=this.project.get(f);h&&this.addEntryCaller(h,null)}),this.initialData.calledBySuccess.forEach(e=>{const f=te(e),h=this.project.get(f);h&&this.addSuccessCaller(h,null)}),this.initialData.calledByError.forEach(e=>{const f=te(e),h=this.project.get(f);h&&this.addErrorCaller(h,null)}),{updated:C(i),added:C(r),removed:C(a),affected:C(c),self:this}}afterAllChildrenInitialized(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AfterAllChildrenInitialized))){var he;if(!this.checkCanEdit(this,i))return z.Logger.warn(`[afterAllChildrenInitialized] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.AfterAllChildrenInitialized,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];if(this.initialized=!0,!this.declaration.dataType||(he=this.declaration.dataType)!=null&&he.inferred){const{added:ge,updated:Re,removed:xe,affected:Ge}=this.declaration.inferDataTypeAndSyncInstancesInputsAndOutputs(i);a.push(...ge),r.push(...Re),c.push(...xe),e.push(...Ge)}if(this.readsValue&&this.defaultValue&&(this.project.diggestedBuiltInBaseEntitiesIds.has(this.defaultValue.id)||this.defaultValue.remove({ignoreUpstream:!1},i),this.setDefaultValue(null,i)),this.defaultValue&&!this.readsValue&&!this.project.diggestedBuiltInBaseEntitiesIds.has(this.id)&&this.project.diggestedBuiltInBaseEntitiesIds.has(this.defaultValue.id)){const ge=this.defaultValue.clone(i,this);this.setDefaultValue(ge,i)}const{added:f,updated:h,removed:m,affected:E}=this.syncInputs(i);a.push(...f),r.push(...h),c.push(...m),e.push(...E);const{added:b,updated:A,removed:_,affected:P}=this.syncOutputs(i);a.push(...b),r.push(...A),c.push(..._),e.push(...P);const{added:V,updated:G,removed:M,affected:k}=this.generateUnusedInternalCalls(i);a.push(...V),r.push(...G),c.push(...M),e.push(...k);const{added:K,updated:ne,removed:X,affected:de}=this.removeUnrecognizedInputs(i);a.push(...K),r.push(...ne),c.push(...X),e.push(...de);const{added:ie,updated:le,removed:ye,affected:Y}=this.removeUnrecognizedOutputs(i);a.push(...ie),r.push(...le),c.push(...ye),e.push(...Y);const{added:ee,updated:pe,removed:se,affected:ue}=this.removeUnrecognizedInternalCalls(i);return a.push(...ee),r.push(...pe),c.push(...se),e.push(...ue),this.inputs.sort((ge,Re)=>{var xe,Ge;return(ge.index??((xe=ge.declaration)==null?void 0:xe.index))-(Re.index??((Ge=Re.declaration)==null?void 0:Ge.index))}),this.outputs.sort((ge,Re)=>{var xe,Ge;return(ge.index??((xe=ge.declaration)==null?void 0:xe.index))-(Re.index??((Ge=Re.declaration)==null?void 0:Ge.index))}),this.declaration.constant&&this.readsValue&&(this.readsValue.removeValueReader(this,i),this.removeValueWriter(i)),this.declaration.constant&&this.defaultValue&&this.defaultValue.remove({ignoreUpstream:!1},i),i==null||i.attemptAutoclose(w.AfterAllChildrenInitialized,this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}addSelfToProject(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"add-self-to-project"))){const r=[this],a=[],c=[],e=[];return this.parent===this.project&&this.project.addVariableInstance(this),this.readsValue&&(this.readsValue.addValueReader(this,i),r.push(this.readsValue)),this.writesValues.forEach(f=>{f.setValueWriter(this,i),r.push(f)}),this.successCalls.forEach(f=>{f.addSuccessCaller(this,i),r.push(f)}),this.errorCalls.forEach(f=>{f.addErrorCaller(this,i),r.push(f)}),this.calledBySuccess.forEach(f=>{f.addSuccessCall(this,i),r.push(f)}),this.calledByError.forEach(f=>{f.addErrorCall(this,i),r.push(f)}),this.calledByEntry.forEach(f=>{f.addCall(this,i),r.push(f)}),this.subscribe(),this.subscribeToDependencies(),i==null||i.attemptAutoclose("add-self-to-project",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}get calledBy(){return[...this.calledByEntry,...this.calledBySuccess,...this.calledByError]}get usedInputs(){return this.inputs.filter(i=>i.readsValue||i.defaultValue)}get unusedInputs(){return this.inputs.filter(i=>!i.readsValue&&!i.defaultValue)}get usedOutputs(){return this.outputs.filter(i=>i.writesValues.length)}get unusedOutputs(){return this.outputs.filter(i=>!i.writesValues.length)}get usedInternalCalls(){return this.internalCalls.filter(i=>!!i.calledBy.length||!!i.writesValues.length||!!i.successCalls.length||!!i.errorCalls.length)}get unusedInternalCalls(){const i=this.usedInternalCalls;return this.internalCalls.filter(a=>!(i.find(f=>f.id===a.id)||i.find(f=>f.declaration===a.declaration)))}removeInternalCall(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"remove-variable-instance-internal-call"))){const a=this.internalCalls.findIndex(c=>c.id===i.id);return a>-1&&(this.internalCalls.splice(a,1),r&&(r==null||r.add(this,W.Affected))),r==null||r.attemptAutoclose("remove-variable-instance-internal-call",this.id),this}removeInput(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveInput))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[removeInput] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.RemoveInput,this.id),this;const a=this.inputs.findIndex(c=>c.id===i.id);return a>-1&&(this.inputs.splice(a,1),r&&(r==null||r.add(this,W.Affected))),r==null||r.attemptAutoclose(w.RemoveInput,this.id),this}addInput(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddInput))){return this.checkCanEdit(this,r)?this.inputs.includes(i)?(r==null||r.attemptAutoclose(w.AddInput,this.id),this):(this.inputs.push(i),r==null||r.add(this,W.Affected),r==null||r.attemptAutoclose(w.AddInput,this.id),this):(z.Logger.warn(`[addInput] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.AddInput,this.id),this)}addOutput(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"add-output"))){return this.checkCanEdit(this,r)?this.outputs.includes(i)?(r==null||r.attemptAutoclose("add-output",this.id),this):(this.outputs.push(i),r==null||r.add(this,W.Affected),r==null||r.attemptAutoclose("add-output",this.id),this):(z.Logger.warn(`[addOutput] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("add-output",this.id),this)}removeOutput(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"remove-output"))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[removeOutput] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("remove-output",this.id),this;const a=this.outputs.findIndex(c=>c.id===i.id);return a>-1&&(this.outputs.splice(a,1),r&&(r==null||r.add(this,W.Affected))),r==null||r.attemptAutoclose("remove-output",this.id),this}addSuccessCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddSuccessCaller)),a=!1){var c;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddSuccessCaller,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddSuccessCaller}-${this.id}--${Me.CannotSuccessCallItself}`,action:w.AddSuccessCaller,owner:this,errorReason:Me.CannotSuccessCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddSuccessCaller})),this.calledBySuccess.find(e=>e.id===i.id)||(this.calledBySuccess.push(i),r==null||r.add(this,W.Updated),a&&bt(this,r)),r==null||r.attemptAutoclose(w.AddSuccessCaller,this.id),this):this}addErrorCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddErrorCaller)),a=!1){var c;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddErrorCaller,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddErrorCaller}-${this.id}--${Me.CannotErrorCallItself}`,action:w.AddErrorCaller,owner:this,errorReason:Me.CannotErrorCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddErrorCaller})),this.calledByError.find(e=>e.id===i.id)||(this.calledByError.push(i),r==null||r.add(this,W.Updated),a&&bt(this,r)),r==null||r.attemptAutoclose(w.AddErrorCaller,this.id),this):this}addEntryCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddEntryCaller)),a=!1){var c;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddEntryCaller,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddEntryCaller}-${this.id}--${Me.CannotEntryCallItself}`,action:w.AddEntryCaller,owner:this,errorReason:Me.CannotEntryCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddEntryCaller})),this.calledByEntry.find(e=>e.id===i.id)||(this.calledByEntry.push(i),r==null||r.add(this,W.Updated),a&&bt(this,r)),r==null||r.attemptAutoclose(w.AddEntryCaller,this.id),this):this}addErrorCall(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddErrorCall)),a=!1){var c;if(!this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddErrorCall,r))return this;if((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddErrorCaller}-${this.id}--${Me.CannotErrorCallItself}`,action:w.AddErrorCaller,owner:this,errorReason:Me.CannotErrorCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddErrorCaller})),!this.errorCalls.find(e=>e.id===i.id)){const e=sd(this);this.errorCalls.push(i);const f=this.catchesError;this.catchesError&&this.metaSync({catchesError:!1},r),a&&bt(this,r);const h=sd(this);e.length<h.length&&(h.forEach(m=>{var E;r==null||r.event({id:`${w.AddErrorCaller}-${this.id}--cannot-be-${m.code}`,action:w.AddErrorCaller,owner:this,errorReason:`cannot-be-${m.code}`,rootAction:((E=r==null?void 0:r.self)==null?void 0:E.id)===this.id&&(r==null?void 0:r.actionName)===w.AddErrorCaller})}),this.errorCalls=this.errorCalls.filter(m=>m.id!==i.id),this.metaSync({catchesError:f},r)),r==null||r.add(this,W.Affected)}return r==null||r.attemptAutoclose(w.AddErrorCall,this.id),this}addSuccessCall(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddSuccessCall)),a=!1){var c;if(!this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddSuccessCall,r))return this;if((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddSuccessCaller}-${this.id}`,action:w.AddSuccessCaller,owner:this,errorReason:Me.CannotSuccessCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddSuccessCaller})),!this.successCalls.find(e=>e.id===i.id)){const e=sd(this);this.successCalls.push(i),a&&bt(this,r);const f=sd(this);e.length<f.length&&(f.forEach(h=>{var m;r==null||r.event({id:`${w.AddSuccessCall}-${this.id}--cannot-be-${h.code}`,action:w.AddSuccessCall,owner:this,errorReason:`cannot-be-${h.code}`,rootAction:((m=r==null?void 0:r.self)==null?void 0:m.id)===this.id&&(r==null?void 0:r.actionName)===w.AddSuccessCall})}),this.successCalls=this.successCalls.filter(h=>h.id!==i.id)),r==null||r.add(this,W.Affected)}return r==null||r.attemptAutoclose(w.AddSuccessCall,this.id),this}removeCall(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveCall)),a=!1){if(!this.checkCanEditWithCounterpartAndSideEffects(this,i,w.RemoveCall,r))return this;const c=this.successCalls.findIndex(f=>f.id===i.id);c>-1&&(this.successCalls.splice(c,1),r==null||r.add(this,W.Affected));const e=this.errorCalls.findIndex(f=>f.id===i.id);return e>-1&&(this.errorCalls.splice(e,1),r==null||r.add(this,W.Affected)),a&&bt(this,r),r==null||r.attemptAutoclose(w.RemoveCall,this.id),this}removeCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"remove-caller")),a=!1){return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.RemoveCaller,r)?(this.calledBySuccess=this.calledBySuccess.filter(c=>c.id!==i.id?!0:(r==null||r.add(this,W.Updated),r==null||r.add(c,W.Affected),!1)),this.calledByError=this.calledByError.filter(c=>c.id!==i.id?!0:(r==null||r.add(this,W.Updated),r==null||r.add(c,W.Affected),!1)),this.calledByEntry=this.calledByEntry.filter(c=>c.id!==i.id?!0:(r==null||r.add(this,W.Updated),r==null||r.add(c,W.Affected),!1)),a&&bt(this,r),r==null||r.attemptAutoclose(w.RemoveCaller,this.id),this):this}addValueReader(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddValueReader))){var e,f,h,m;if(!this.checkCanEditFromScopeOwnerWithSideEffects(this,w.AddValueReader,r))return this;(i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.SetValueWriter}-${this.id}`,action:w.SetValueWriter,owner:this,errorReason:Me.CannotValueWriteItself,rootAction:((e=r==null?void 0:r.self)==null?void 0:e.id)===this.id&&(r==null?void 0:r.actionName)===w.SetValueWriter}));const a=i.type===d.InputMap&&i.parent.type===d.VariableInstance&&((f=i.declaration)==null?void 0:f.type)===d.Property&&((h=i.declaration)==null?void 0:h.constant),c=i.type===d.VariableInstance&&((m=i.declaration)==null?void 0:m.constant);return(a||c)&&i?(r==null||r.event({id:`${w.SetValueWriter}-${this.id}--${i.id}`,action:w.SetValueWriter,owner:i,counterpart:this,errorReason:Me.ValueReadingOverridesConstantVariable,rootAction:!1}),r==null||r.attemptAutoclose(w.AddValueReader,this.id),this):this.writesValues.includes(i)?(r==null||r.attemptAutoclose(w.AddValueReader,this.id),this):(this.writesValues.push(i),r==null||r.add(this,W.Affected),this)}setError(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetErrorEntity))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[setError] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.SetErrorEntity,this.id),this;const a=this.error;return(a==null?void 0:a.id)!==(i==null?void 0:i.id)&&(a==null||a.remove({ignoreUpstream:!0},r),this.error=i,this.subscribeToDependencies(),r==null||r.add(this,W.Affected)),r==null||r.attemptAutoclose(w.SetErrorEntity,this.id),this}setParent(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetParent))){var a;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.SetParent,r)?(((a=this.parent)==null?void 0:a.id)!==(i==null?void 0:i.id)&&(this.parent=i,r&&(r==null||r.add(this,W.Updated))),r==null||r.attemptAutoclose(w.SetParent,this.id),this):this}initChildren(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"init-children"))){if(this.initialized||this.startedInitialization)return this;if(this.startedInitialization=!0,this.initialData.defaultValue&&(this.defaultValue=Ie(this.initialData.defaultValue,this.project),this.defaultValue.setParent(this,null),this.defaultValue.initChildren(i)),this.initialData.declaration.type===d.GenericReference){const r=this.project.findSubscribedInstanceFromReference(this.initialData.declaration);if(!r)return this;this.declaration=r}else this.declaration=Ie(this.initialData.declaration,this.project),this.declaration.initChildren(i);return JE.initWritesValues(this,this.parent),uy.initReadsValue(this),this.initialData.inputs.forEach(r=>{const a=Ie(r,this.project);return a.setParent(this,null),a.initChildren(i),this.addInput(a,null),a}),this.initialData.outputs.forEach(r=>{const a=Ie(r,this.project);return a.setParent(this,null),a.initChildren(i),this.addOutput(a,i),a}),this.successCalls=this.initialData.successCalls.map(r=>{const a=Ie(r,this.project);if(a.addSuccessCaller(this,null),[d.BreakStatement,d.ContinueStatement].includes(a.type))a.setParent(this.parent.parent,null),a.initChildren(i);else if(a.type===d.ReturnStatement){const c=gn(this,this.project);a.setParent(c,null),a.initChildren(i)}else a.type!==d.InternalCall&&(a.setParent(this.parent,null),a.initChildren(i));return a}),this.errorCalls=this.initialData.errorCalls.map(r=>{const a=Ie(r,this.project);if(a.addErrorCaller(this,null),[d.BreakStatement,d.ContinueStatement].includes(a.type))a.setParent(this.parent.parent,null),a.initChildren(i);else if(a.type===d.ReturnStatement){const c=gn(this,this.project);a.setParent(c,null),a.initChildren(i)}else a.type!==d.InternalCall&&(a.setParent(this.parent,null),a.initChildren(i));return a}),this.internalCalls=this.initialData.internalCalls.reduce((r,a)=>{if(a.type===d.GenericReference){const c=this.project.findSubscribedInstanceFromReference(a);if(!c)return r;const e=c;return e.setParent(this,null),[...r,e]}else{const c=Ie(a,this.project);return c.setParent(this,null),c.initChildren(i),[...r,c]}},[]),this.initialData.error&&(this.error=Ie(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}setValueWriter(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetValueWriter))){var c,e,f,h,m;return this.checkCanEditFromScopeOwnerWithSideEffects(this,w.SetValueWriter,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.SetValueWriter}-${this.id}`,action:w.SetValueWriter,owner:this,errorReason:Me.CannotValueWriteItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.SetValueWriter})),((e=this.declaration)==null?void 0:e.constant)&&i?(r==null||r.event({id:`${w.SetValueWriter}-${this.id}--${i.id}`,action:w.SetValueWriter,owner:this,counterpart:i,errorReason:Me.ValueReadingOverridesConstantVariable,rootAction:((f=r==null?void 0:r.self)==null?void 0:f.id)===this.id&&(r==null?void 0:r.actionName)===w.SetValueWriter}),r==null||r.attemptAutoclose(w.SetValueWriter,this.id),this):(((h=this.readsValue)==null?void 0:h.id)!==(i==null?void 0:i.id)&&(this.readsValue=i,this.readsValue&&((m=this.defaultValue)==null||m.remove({ignoreUpstream:!1},r)),r==null||r.add(this,W.Updated)),r==null||r.attemptAutoclose(w.SetValueWriter,this.id),this)):this}removeValueWriter(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveValueWriter))){return this.readsValue&&!this.checkCanEditWithCounterpartAndSideEffects(this,this.readsValue,w.RemoveValueWriter,i)?this:(this.readsValue&&(this.readsValue=null,i==null||i.add(this,W.Updated)),i==null||i.attemptAutoclose(w.RemoveValueWriter,this.id),this)}removeValueReader(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveValueReader))){return this.checkCanEditFromScopeOwnerWithSideEffects(this,w.RemoveValueReader,r)?this.writesValues.includes(i)?(this.writesValues=this.writesValues.filter(a=>a.id!==i.id),r==null||r.add(this,W.Affected),this):(r==null||r.attemptAutoclose(w.RemoveValueReader,this.id),this):this}subscribe(){var i;return this.activeVersion=!0,(i=this.knownVersions)==null||i.forEach(r=>{r.version!==this.version&&(r.activeVersion=!1)}),this.project.subscribeInstance(this),this}unsubscribe(){return this.project.unsubscribeInstance(this),this}metaSync(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"meta-sync"))){const a=tn(this,i,r),c=en(this,a),e=this.toMeta();return this.x=a.x||e.x,this.y=a.y||e.y,this.catchesError=a.catchesError!==void 0?a.catchesError:this.catchesError,super.baseMetaSync(a,this,r),a.deleted===!0&&!e.deleted?r==null||r.add(this,W.Removed):a.deleted===!1&&e.deleted?r==null||r.add(this,W.Added):c&&(r==null||r.add(this,W.Updated)),r==null||r.attemptAutoclose("meta-sync",this.id),this}async APILoad(i=Ke,...r){return await Di.repository.APILoad(this.id,...r),this}async APICreate(i=Ke,...r){return await Di.repository.APICreate(this.toShallowJSON(),...r),this}async APIUpdate(i=Ke,...r){return await Di.repository.APIUpdate(this.toShallowJSON(),...r),this}async APIDelete(i=Ke,...r){return await Di.repository.APIDelete(this.toShallowJSON(),...r),this}async APIClone(i=Ke,...r){return await Di.repository.APIClone(this.id,...r),this}async APILoadVersion(i=Ke,r,...a){return await Di.repository.APILoadVersion(this.id,r,...a)}removeFromParent(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveFromParent))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[removeFromParent] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveFromParent,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];return this.parent.type===d.Project?(this.parent.removeVariableInstance(this),e.push(this.parent)):this.parent.detachedChildren.includes(this)&&this.parent.unsubscribeDetachedChild(this),i==null||i.attemptAutoclose(w.RemoveFromParent,this.id),{added:C(c),updated:C(r),removed:C(a),affected:C(e),self:this}}remove({ignoreUpstream:i}={ignoreUpstream:!1},r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveEntity))){var h;if(!this.checkCanDelete(this,r))return z.Logger.warn(`[remove] User is not allowed to delete or edit this ${this.type} entity with id: ${this.id}`),r==null||r.event({id:`${w.RemoveEntity}-${this.id}--${Me.ActionOwnerEntityNonDeletable}`,action:w.RemoveEntity,owner:this,errorReason:Me.ActionOwnerEntityNonDeletable,rootAction:((h=r==null?void 0:r.self)==null?void 0:h.id)===this.id&&(r==null?void 0:r.actionName)===w.RemoveEntity}),r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const a=[],c=[],e=[],f=[];if(r!=null&&r.hasRemoved(this.id))return r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};if(c.push(this),this.unsubscribe(),this.unsubscribeFromDependencies(),this.project.subscribeDeletedInstance(this),this.metaSync({deleted:!0},r),Object.values(this.detachedDependents).forEach(m=>{const{updated:E,removed:b,added:A}=m.entity.onDetachedDependencyRemoved(this,m.field,r);a.push(...E),c.push(...b),e.push(...A)}),this.defaultValue){const{updated:m,removed:E}=this.defaultValue.remove({ignoreUpstream:!0},r);a.push(...m),c.push(...E)}if(this.readsValue&&(a.push(this.readsValue),this.readsValue.removeValueReader(this,r)),this.writesValues.forEach(m=>{a.push(m),m.setValueWriter(null,r)}),this.inputs.forEach(m=>{const{updated:E,removed:b}=m.remove({ignoreUpstream:!0},r);a.push(...E),c.push(...b)}),this.outputs.forEach(m=>{const{updated:E,removed:b}=m.remove({ignoreUpstream:!0},r);a.push(...E),c.push(...b)}),this.successCalls.forEach(m=>{a.push(m),m.removeCaller(this,r)}),this.errorCalls.forEach(m=>{a.push(m),m.removeCaller(this,r)}),this.internalCalls.forEach(m=>{const{updated:E,removed:b}=m.remove({ignoreUpstream:!0},r);a.push(...E),c.push(...b)}),!i){const m=this.removeFromParent(r);e.push(...m.added),a.push(...m.updated),c.push(...m.removed),f.push(...m.affected),this.calledBy.forEach(E=>{a.push(E),E.removeCall(this,r)})}return r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:C(e),updated:C(a),removed:C(c),affected:C(f),self:this}}restore({}={},i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RestoreEntity))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[restore] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RestoreEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];if(i!=null&&i.hasAdded(this.id))return i==null||i.attemptAutoclose(w.RestoreEntity,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(f=>{const{updated:h,removed:m,added:E}=f.entity.onDetachedDependencyRestored(this,f.field,i);a.push(...h),c.push(...m),r.push(...E)}),this.defaultValue){const{updated:f}=this.defaultValue.restore({},i);a.push(...f)}return this.readsValue&&(a.push(this.readsValue),this.readsValue.addValueReader(this,i)),this.writesValues.forEach(f=>{a.push(f),f.setValueWriter(this,i)}),this.inputs.forEach(f=>{const{updated:h}=f.restore({},i);a.push(...h)}),this.outputs.forEach(f=>{const{updated:h}=f.restore({},i);a.push(...h)}),this.successCalls.forEach(f=>{a.push(f),f.addSuccessCaller(this,i)}),this.errorCalls.forEach(f=>{a.push(f),f.addErrorCaller(this,i)}),this.internalCalls.forEach(f=>{const{updated:h}=f.restore({},i);a.push(...h)}),this.calledBySuccess.forEach(f=>{a.push(f),f.addSuccessCall(this,i)}),this.calledByError.forEach(f=>{a.push(f),f.addErrorCall(this,i)}),this.calledByEntry.forEach(f=>{a.push(f),f.addCall(this,i)}),i==null||i.attemptAutoclose(w.RestoreEntity,this.id),{added:C(r),updated:C(a),removed:C(c),affected:C(e),self:this}}toFlat(i=new Set){var a,c;return i.has(this.id)?[]:(i.add(this.id),[this,...((a=this.defaultValue)==null?void 0:a.toFlat(i))||[],...this.writesValues.flatMap(e=>e.toFlat(i)),...((c=this.readsValue)==null?void 0:c.toFlat(i))||[],...this.successCalls.flatMap(e=>e.toFlat(i)),...this.errorCalls.flatMap(e=>e.toFlat(i)),...this.inputs.flatMap(e=>e.toFlat(i)),...this.outputs.flatMap(e=>e.toFlat(i)),...this.internalCalls.flatMap(e=>e.toFlat(i))])}toFlatIds(i=new Set){var a;return i.has(this.id)?[]:(i.add(this.id),[this.id,...((a=this.defaultValue)==null?void 0:a.toFlatIds(i))||[],...this.writesValues.flatMap(c=>c.toFlatIds(i)),...this.successCalls.flatMap(c=>c.toFlatIds(i)),...this.errorCalls.flatMap(c=>c.toFlatIds(i)),...this.inputs.flatMap(c=>c.toFlatIds(i)),...this.outputs.flatMap(c=>c.toFlatIds(i)),...this.internalCalls.flatMap(c=>c.toFlatIds(i))])}toMeta(){return{id:this.id,version:this.version,createdAt:this.createdAt,catchesError:this.catchesError,previousVersion:this.previousVersion,author:this.author,deleted:this.deleted,x:this.x,y:this.y,type:this.type,editable:this.editable,deletable:this.deletable}}toJSON(i=new Set){var r,a,c;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,catchesError:this.catchesError,type:this.type,editable:this.editable,deletable:this.deletable,declaration:this.declaration.toJSON(i),defaultValue:((r=this.defaultValue)==null?void 0:r.toJSON(i))||null,readsValue:((a=this.readsValue)==null?void 0:a.toReference())||null,writesValues:this.writesValues.map(e=>e.toJSON(i)),inputs:this.inputs.map(e=>e.toJSON(i)),outputs:this.outputs.map(e=>e.toJSON(i)),successCalls:this.successCalls.map(e=>e.toJSON(i)),errorCalls:this.errorCalls.map(e=>e.toJSON(i)),internalCalls:this.internalCalls.map(e=>e.toJSON(i)),calledBySuccess:this.calledBySuccess.map(e=>e.toReference()),calledByError:this.calledByError.map(e=>e.toReference()),calledByEntry:this.calledByEntry.map(e=>e.toReference()),parent:this.parent.toReference(),error:((c=this.error)==null?void 0:c.toJSON(i))||null,x:this.x,y:this.y})}toJSONClone(i=at){var a,c,e,f,h,m,E,b;let r;return(a=i.seenEntityMaps)!=null&&a.has(this.id)?r=i.seenEntityMaps.get(this.id):(r=i.newId||dn(this,this.project,i.uuidStrategy),i.seenEntityMaps&&i.seenEntityMaps.set(this.id,r)),(c=i.seenEntities)!=null&&c.has(r)||(e=i.seenEntities)!=null&&e.has(this.id)?this.toReference({seenEntityMaps:i.seenEntityMaps}):((f=i.seenEntities)==null||f.add(r),(h=i.seenEntities)==null||h.add(this.id),{id:r,version:x.UUID.uuid(),createdAt:i.timestamp||B().toISOString(),previousVersion:null,author:this.author,deleted:this.deleted,catchesError:this.catchesError,type:this.type,editable:this.editable,deletable:this.deletable,defaultValue:((m=this.defaultValue)==null?void 0:m.toJSONClone({...i,newId:null}))||null,declaration:this.declaration.toReference({seenEntityMaps:i.seenEntityMaps}),readsValue:((E=this.readsValue)==null?void 0:E.toReference({seenEntityMaps:i.seenEntityMaps}))||null,writesValues:this.writesValues.map(A=>A.toJSONClone({...i,newId:null})),inputs:this.inputs.map(A=>A.toJSONClone({...i,newId:null})),outputs:this.outputs.map(A=>A.toJSONClone({...i,newId:null})),successCalls:this.successCalls.map(A=>A.toJSONClone({...i,newId:null})),errorCalls:this.errorCalls.map(A=>A.toJSONClone({...i,newId:null})),internalCalls:this.internalCalls.map(A=>this.calledBy.length||this.readsValue?A.toJSONClone({...i,newId:null}):A.toReference({seenEntityMaps:i.seenEntityMaps})),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})),error:((b=this.error)==null?void 0:b.toJSONClone({...i,newId:null}))||null,parent:this.parent.toReference({seenEntityMaps:i.seenEntityMaps}),x:this.x,y:this.y})}toReference(i=at){var a;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r+"--"+x.UUID.uuid()+"--ref",type:d.GenericReference,entityId:r,version:this.version,entityType:this.type}}toShallowJSON(i=at){var a,c,e,f,h;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r,version:this.version,createdAt:this.createdAt,previousVersion:this.previousVersion,author:this.author,deleted:this.deleted,catchesError:this.catchesError,type:this.type,editable:this.editable,deletable:this.deletable,x:this.x,y:this.y,defaultValue:((c=this.defaultValue)==null?void 0:c.toReference(i))||null,declaration:((e=this.declaration)==null?void 0:e.toReference(i))||null,readsValue:((f=this.readsValue)==null?void 0:f.toReference(i))||null,writesValues:this.writesValues.map(m=>m.toReference(i)),inputs:this.inputs.map(m=>m.toReference(i)),outputs:this.outputs.map(m=>m.toReference(i)),successCalls:this.successCalls.map(m=>m.toReference(i)),errorCalls:this.errorCalls.map(m=>m.toReference(i)),calledBySuccess:this.calledBySuccess.map(m=>m.toReference(i)),calledByError:this.calledByError.map(m=>m.toReference(i)),calledByEntry:this.calledByEntry.map(m=>m.toReference(i)),internalCalls:this.internalCalls.map(m=>m.toReference(i)),error:((h=this.error)==null?void 0:h.toReference(i))||null,parent:this.parent.toReference(i)}}toFlatJSON(i=new Set){var a,c;return i.has(this.id)?[]:(i.add(this.id),[this.toShallowJSON(),...((a=this.defaultValue)==null?void 0:a.toFlatJSON(i))||[],...((c=this.declaration)==null?void 0:c.toFlatJSON(i))||[],...this.writesValues.flatMap(e=>e.toFlatJSON(i)),...this.successCalls.flatMap(e=>e.toFlatJSON(i)),...this.errorCalls.flatMap(e=>e.toFlatJSON(i)),...this.inputs.flatMap(e=>e.toFlatJSON(i)),...this.outputs.flatMap(e=>e.toFlatJSON(i)),...this.internalCalls.flatMap(e=>e.toFlatJSON(i)),...this.calledBy.flatMap(e=>e.toFlatJSON(i))])}toGenerationTarget(i=at){var c,e;const r=this.parent.type===d.Project?void 0:(c=i.seenEntityMaps)!=null&&c.has(this.parent.id)?i.seenEntityMaps.get(this.parent.id):this.parent.id;let a=this.id;return(e=i.seenEntityMaps)!=null&&e.has(this.id)&&(a=i.seenEntityMaps.get(this.id)),{id:a,type:this.type,declaration:this.declaration.id,calledByEntry:this.calledByEntry.map(f=>f.id),calledBySuccess:this.calledBySuccess.map(f=>f.id),calledByError:this.calledByError.map(f=>f.id),parent:r}}toFlatGenerationTarget(i=new Set){var a,c,e;return i.has(this.id)?[]:(i.add(this.id),[this.toGenerationTarget(),...((a=this.defaultValue)==null?void 0:a.toFlatGenerationTarget(i))||[],...((c=this.declaration)==null?void 0:c.toFlatGenerationTarget(i))||[],...((e=this.readsValue)==null?void 0:e.toFlatGenerationTarget(i))||[],...this.writesValues.flatMap(f=>f.toFlatGenerationTarget(i)),...this.successCalls.flatMap(f=>f.toFlatGenerationTarget(i)),...this.errorCalls.flatMap(f=>f.toFlatGenerationTarget(i)),...this.inputs.flatMap(f=>f.toFlatGenerationTarget(i)),...this.outputs.flatMap(f=>f.toFlatGenerationTarget(i)),...this.internalCalls.flatMap(f=>f.toFlatGenerationTarget(i))])}clearErrors(){var i;return this.errors=[],(i=this.defaultValue)==null||i.clearErrors(),this.inputs.forEach(r=>r.clearErrors()),this.outputs.forEach(r=>r.clearErrors()),this.successCalls.forEach(r=>r.clearErrors()),this.errorCalls.forEach(r=>r.clearErrors()),this.internalCalls.forEach(r=>r.clearErrors()),this}validate(){return this.errors=MMe(this),{success:!0}}async validateAsync(i={}){const r=z.YieldTracker.from(i);return this.errors=await BMe(this,{tracker:r}),{success:!0}}getErrors(){var r;return[...this.errors,...((r=this.defaultValue)==null?void 0:r.getErrors())||[],...this.inputs.flatMap(a=>a.getErrors()),...this.internalCalls.flatMap(a=>a.getErrors()),...this.outputs.flatMap(a=>a.getErrors())]}async getErrorsAsync(i={}){var e;const r=z.YieldTracker.from(i),a=[...this.errors];await r.tick();const c=await((e=this.defaultValue)==null?void 0:e.getErrorsAsync({tracker:r}));c&&a.push(...c);for(const f of this.inputs){const h=await f.getErrorsAsync({tracker:r});a.push(...h)}for(const f of this.internalCalls){const h=await f.getErrorsAsync({tracker:r});a.push(...h)}for(const f of this.outputs){const h=await f.getErrorsAsync({tracker:r});a.push(...h)}return a}getShallowErrors(){return this.errors}getDefaultValue(){var i;return this.defaultValue||((i=this.declaration)==null?void 0:i.defaultValue)||null}setDefaultValue(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"set-default-value"))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[setDefaultValue] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("set-default-value",this.id),this;const a=this.defaultValue;if((a==null?void 0:a.id)!==(i==null?void 0:i.id)){if(a==null||a.remove({ignoreUpstream:!0},r),this.defaultValue=i,this.defaultValue){const c=this.readsValue;this.removeValueWriter(r),c==null||c.removeValueReader(this,r)}r==null||r.add(this,W.Affected)}return r==null||r.attemptAutoclose("set-default-value",this.id),this}clone(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.CloneEntity)),r=null,a=null,c=!0){var P,V,G,M;const e=Fr(r,this),f=this.toJSON(),h=a||x.UUID.uuid();f.inputs=[],f.id=h,f.version=x.UUID.uuid(),f.createdAt=(i==null?void 0:i.timestamp)||B().toISOString(),f.author=(i==null?void 0:i.author)||"1",f.previousVersion=null,f.deleted=!1,f.deletable=!0,f.editable=!0;const m=lr(f,e);r?m.setParent(r,i):m.setParent(this.parent,null),c&&m.subscribe(),m.initChildren(i),i==null||i.add(m,W.Added);const E=(P=this.defaultValue)==null?void 0:P.clone(i,m,x.UUID.uuid(),c);m.defaultValue=E||null;const b=(V=this.inputs)==null?void 0:V.map(k=>k.clone(i,m,x.UUID.uuid(),c));m.inputs=b;const A=(G=this.outputs)==null?void 0:G.map(k=>k.clone(i,m,x.UUID.uuid(),c));m.outputs=A;const _=(M=this.internalCalls)==null?void 0:M.map(k=>k.clone(i,m,x.UUID.uuid(),c));return m.internalCalls=_,i||m.captureVersion(),i==null||i.attemptAutoclose(w.CloneEntity,this.id),m}addInternalCall(i){return this.internalCalls.find(r=>r===i)||this.internalCalls.push(i),this}setDeclaration(i){return this.declaration!==i&&(this.declaration=i),this}removeUnrecognizedInputs(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveUnrecognizedInputs))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[removeUnrecognizedInputs] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveUnrecognizedInputs,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];return this.declaration.dataType&&!this.declaration.dataType.isObject()?[...this.inputs].forEach(h=>{const m=h.remove({ignoreUpstream:!1},i);c.push(...m.removed),r.push(...m.updated)}):this.declaration.dataType&&this.declaration.dataType.hasStrictObjectStructure()&&[...this.inputs].forEach(h=>{var E;if(!h.declaration){const b=h.remove({ignoreUpstream:!1},i);c.push(...b.removed),r.push(...b.updated);return}if(![...((E=this.declaration.dataType)==null?void 0:E.entity).allProperties].find(b=>h.declaration===b)){const b=h.remove({ignoreUpstream:!1},i);c.push(...b.removed),r.push(...b.updated)}}),this.inputs.filter((h,m)=>{const E=this.inputs.findIndex(A=>A.declaration===h.declaration&&A!==h);if(E===-1)return!1;const b=this.inputs[E];return B(b==null?void 0:b.createdAt).isSame(B(h.createdAt))?m>E:!!B(b==null?void 0:b.createdAt).isAfter(h.createdAt)}).forEach(h=>{const m=h.remove({ignoreUpstream:!1},i);c.push(...m.removed),r.push(...m.updated)}),i==null||i.attemptAutoclose(w.RemoveUnrecognizedInputs,this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}removeUnrecognizedOutputs(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"remove-unrecognized-variable-instance-outputs"))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[removeUnrecognizedOutputs] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveUnrecognizedOutputs,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];return this.declaration.dataType&&!this.declaration.dataType.isObject()?[...this.outputs].forEach(f=>{const h=f.remove({ignoreUpstream:!1},i);c.push(...h.removed),r.push(...h.updated)}):this.declaration.dataType&&this.declaration.dataType.hasStrictObjectStructure()&&[...this.outputs].forEach(f=>{var m;if(!f.declaration){const E=f.remove({ignoreUpstream:!1},i);c.push(...E.removed),r.push(...E.updated);return}if(![...((m=this.declaration.dataType)==null?void 0:m.entity).allProperties].find(E=>f.declaration===E)){const E=f.remove({ignoreUpstream:!1},i);c.push(...E.removed),r.push(...E.updated)}}),i==null||i.attemptAutoclose("remove-unrecognized-variable-instance-outputs",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}removeUnrecognizedInternalCalls(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"remove-unrecognized-variable-declaration-internal-calls"))){const r=[],a=[],c=[],e=[];if(!this.declaration.dataType||!this.declaration.dataType.entity||![d.DefinitionEntity,d.PrimitiveEntity,d.BuiltInBaseEntity].includes(this.declaration.dataType.entity.type))[...this.internalCalls].forEach(h=>{const m=h.remove({ignoreUpstream:!1},i);c.push(...m.removed),r.push(...m.updated)});else if(this.declaration.dataType&&this.declaration.dataType.entity&&[d.DefinitionEntity,d.PrimitiveEntity,d.BuiltInBaseEntity].includes(this.declaration.dataType.entity.type)){const h=[...this.declaration.dataType.entity.getAllInteractiveMethods()],m=[...h].filter(E=>!h.some(b=>{var A,_;return b.id!==E.id&&(((A=b.implements)==null?void 0:A.id)===E.id||((_=b.extends)==null?void 0:_.id)===E.id)})&&!E.deleted);[...this.internalCalls].forEach(E=>{if(!E.declaration){const A=E.remove({ignoreUpstream:!1},i);c.push(...A.removed),r.push(...A.updated);return}if(!m.find(A=>E.declaration===A)){const A=E.remove({ignoreUpstream:!1},i);c.push(...A.removed),r.push(...A.updated);return}})}return this.internalCalls.filter((h,m)=>{const E=this.internalCalls.findIndex(A=>A.declaration===h.declaration&&A!==h);if(E===-1)return!1;const b=this.internalCalls[E];return B(b==null?void 0:b.createdAt).isSame(B(h.createdAt))?m>E:!!B(b==null?void 0:b.createdAt).isAfter(h.createdAt)}).forEach(h=>{const m=h.remove({ignoreUpstream:!1},i);c.push(...m.removed),r.push(...m.updated)}),i==null||i.attemptAutoclose("remove-unrecognized-variable-declaration-internal-calls",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}syncInputs(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"sync-variable-instance-inputs"))){const r=[],a=[],c=[],e=[];if(this.declaration.dataType)if(this.declaration.dataType.entity){if([d.DefinitionEntity,d.PrimitiveEntity,d.BuiltInBaseEntity].includes(this.declaration.dataType.entity.type)&&!this.declaration.dataType.isList){const f=[...this.declaration.dataType.entity.properties];f.filter(b=>!b.getDataType(i)).forEach(b=>{const A=this.inputs.find(V=>oe(V,this.project)===oe(b,this.project));if(!A)return;const _=this.declaration.getMasterInputWithValueWriterFromAllInstances(A);if(!_)return;const P=iu(_);b.setDataType(P,i),A.setDeclaration(b,i)}),f.filter(b=>!this.inputs.find(A=>{var _;return((_=A.declaration)==null?void 0:_.id)===b.id})).forEach(b=>{const A={dataType:null,id:x.UUID.uuid(),version:x.UUID.uuid(),createdAt:(i==null?void 0:i.timestamp)||B().toISOString(),author:x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.InputMap,parentRelationType:null,parent:this.toReference(),name:null,description:null,codeName:null,declaration:b,defaultValue:null,index:b.index,readsValue:null},_=Ie(A,this.project);return _.setParent(this,i),_.initChildren(i),i==null||i.add(_,W.Added),i||_.captureVersion(),this.addInput(_,i),_}),this.inputs.filter(b=>!b.declaration).forEach(b=>{const A=f.find(_=>oe(_,this.project)===oe(b,this.project));A&&b.setDeclaration(A,i)})}}else return i==null||i.attemptAutoclose("sync-variable-instance-inputs",this.id),{added:[],updated:[],removed:[],affected:[],self:this};else return i==null||i.attemptAutoclose("sync-variable-instance-inputs",this.id),{added:[],updated:[],removed:[],affected:[],self:this};return this.inputs.forEach(f=>{const{updated:h,added:m,removed:E}=f.afterAllChildrenInitialized(i);a.push(...h),r.push(...m),c.push(...E)}),this.inputs.sort((f,h)=>f.index-h.index),i==null||i.attemptAutoclose("sync-variable-instance-inputs",this.id),{added:C(r),updated:C(a),removed:C(c),affected:C(e),self:this}}syncOutputs(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SyncOutputs))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[syncOutputs] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.SyncOutputs,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];if(this.declaration.dataType)if(this.declaration.dataType.entity)[d.DefinitionEntity,d.PrimitiveEntity,d.BuiltInBaseEntity].includes(this.declaration.dataType.entity.type)&&!this.declaration.dataType.isList&&[...this.declaration.dataType.entity.properties].filter(m=>!this.outputs.find(E=>E.declaration===m)).map(m=>{const E={dataType:null,id:x.UUID.uuid(),version:x.UUID.uuid(),createdAt:(i==null?void 0:i.timestamp)||B().toISOString(),author:x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.OutputMap,parent:this.toReference(),declaration:m,index:m.index,writesValues:[]},b=Ie(E,this.project);return b.setParent(this,i),b.initChildren(i),i==null||i.add(b,W.Added),i||b.captureVersion(),this.addOutput(b,i),b});else return i==null||i.attemptAutoclose(w.SyncOutputs,this.id),{added:[],updated:[],removed:[],affected:[],self:this};else return i==null||i.attemptAutoclose(w.SyncOutputs,this.id),{added:[],updated:[],removed:[],affected:[],self:this};return this.outputs.forEach(f=>{const{updated:h,added:m,removed:E}=f.afterAllChildrenInitialized(i);a.push(...h),r.push(...m),c.push(...E)}),this.outputs.sort((f,h)=>f.index-h.index),i==null||i.attemptAutoclose(w.SyncOutputs,this.id),{added:C(r),updated:C(a),removed:C(c),affected:C(e),self:this}}generateUnusedInternalCalls(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"generate-unused-internal-calls"))){const r=[],a=[],c=[],e=[];if(this.declaration.dataType)if(this.declaration.dataType.entity){if([d.DefinitionEntity,d.PrimitiveEntity,d.BuiltInBaseEntity].includes(this.declaration.dataType.entity.type)&&!this.declaration.dataType.isList){const f=[...this.declaration.dataType.entity.getAllInteractiveMethods()];[...f].filter(E=>!f.some(b=>{var A,_;return b.id!==E.id&&(((A=b.implements)==null?void 0:A.id)===E.id||((_=b.extends)==null?void 0:_.id)===E.id)})&&!E.deleted).filter(E=>!this.internalCalls.find(A=>{var P,V,G,M,k;return(((P=A.declaration)==null?void 0:P.id)||((G=(V=A.initialData)==null?void 0:V.declaration)==null?void 0:G.entityId)||((k=(M=A.initialData)==null?void 0:M.declaration)==null?void 0:k.id))===E.id})).forEach(E=>{const b=this.internalCalls.find(A=>{const _=Nf(A.declaration),P=Nf(E);return _.id===P.id});if(b)b.setDeclaration(E),b.subscribeToDependencies();else{const A=E.createInternalCall(i,this);i==null||i.add(A,W.Added),this.addInternalCall(A)}})}}else return i==null||i.attemptAutoclose("generate-unused-internal-calls",this.id),{added:[],updated:[],removed:[],affected:[],self:this};else return i==null||i.attemptAutoclose("generate-unused-internal-calls",this.id),{added:[],updated:[],removed:[],affected:[],self:this};return i==null||i.attemptAutoclose("generate-unused-internal-calls",this.id),{added:C(r),updated:C(a),removed:C(c),affected:C(e),self:this}}getDataType(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"get-data-type"))){var a;const r=((a=this.declaration)==null?void 0:a.getDataType(i))||null;return i==null||i.attemptAutoclose("get-data-type",this.id),r}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)}};R(Di,"repository",{APICreate:async(i,...r)=>i,APIUpdate:async(i,...r)=>i,APIDelete:async(i,...r)=>i,APIClone:async(i,...r)=>{},APILoad:async(i,...r)=>null,APILoadVersion:async(i,r,...a)=>null}),R(Di,"type",d.VariableInstance),R(Di,"USER_MANAGED_PARENT_TYPES",[...Dr,d.Project]),R(Di,"PARENT_TYPES",[...Di.USER_MANAGED_PARENT_TYPES]),R(Di,"MUTABLE_BASE_PROPERTIES",["catchesError"]),R(Di,"INMUTABLE_BASE_PROPERTIES",["id","type","version","createdAt","author","previousVersion"]),R(Di,"BASE_PROPERTIES",[...Di.MUTABLE_BASE_PROPERTIES,...Di.INMUTABLE_BASE_PROPERTIES]),R(Di,"MUTABLE_META_PROPERTIES",[...Di.MUTABLE_BASE_PROPERTIES,"x","y"]),R(Di,"INMUTABLE_META_PROPERTIES",[...Di.INMUTABLE_BASE_PROPERTIES]),R(Di,"META_PROPERTIES",[...Di.MUTABLE_META_PROPERTIES,...Di.INMUTABLE_META_PROPERTIES]),R(Di,"MUTABLE_UPSTREAM_PROPERTIES",["calledBySuccess","calledByError","calledByEntry","readsValue"]),R(Di,"INMUTABLE_UPSTREAM_PROPERTIES",["declaration","parent"]),R(Di,"UPSTREAM_PROPERTIES",[...Di.MUTABLE_UPSTREAM_PROPERTIES,...Di.INMUTABLE_UPSTREAM_PROPERTIES]),R(Di,"MUTABLE_DOWNSTREAM_PROPERTIES",["writesValues","inputs","outputs","successCalls","errorCalls","internalCalls"]),R(Di,"INMUTABLE_DOWNSTREAM_PROPERTIES",["defaultValue"]),R(Di,"DOWNSTREAM_PROPERTIES",[...Di.MUTABLE_DOWNSTREAM_PROPERTIES,...Di.INMUTABLE_DOWNSTREAM_PROPERTIES]),R(Di,"PROPERTIES",[...Di.META_PROPERTIES,...Di.UPSTREAM_PROPERTIES,...Di.DOWNSTREAM_PROPERTIES]);let xp=Di;async function kMe(s,p={}){var m;const i=z.YieldTracker.from(p),r=Aa(s),a=I$(s),c=ga(s),e=ld(s),f=[...r,...a,...c,...e],h=qt(s.errors,f);await i.tick();for(const E of s.inputs)await E.validateAsync({tracker:i});for(const E of s.outputs)await E.validateAsync({tracker:i});return await((m=s.error)==null?void 0:m.validateAsync({tracker:i})),h}function jMe(s){var a;s.inputs.forEach(c=>c.validate()),s.outputs.forEach(c=>c.validate()),(a=s.error)==null||a.validate();const p=Aa(s),i=I$(s),r=[...p,...i,...ga(s)];return qt(s.errors,r)}function I$(s){const p=[],i=wx(s.parent,null),r=i==null?void 0:i.entity;if(!r)p.push(It({id:`${s.id}--${Ce.InternalCallParentMissingDataType}`,code:Ce.InternalCallParentMissingDataType,severity:ve.Error,message:`Entity of type "${s.type}" with id "${s.id}", belongs to a variable whose data type entity doesn't contain its declaration method ('${d.FunctionDeclaration}' or '${d.ActionDescriptor}') its id "${s.declaration}".`,entity:s}).error);else if(![d.DefinitionEntity,d.BuiltInBaseEntity,d.PrimitiveEntity].includes(r.type))p.push(It({id:`${s.id}--${Ce.InternalCallParentDeclarationEntityInvalidType}`,code:Ce.InternalCallParentDeclarationEntityInvalidType,severity:ve.Error,message:`Entity of type "${s.type}" with id "${s.id}", belongs to a variable whose data type 'entity' is not a definition entity, built-in base entity or primitive entity.
|
|
62
|
+
You shouldn't have to manually update a 'parent' property. The equivalent result is to change its value readers, value writers, or callers.`})),{errors:r,explanations:a,modifiedData:c}}subscribeDependents(i){return i.forEach(r=>{this.detachedDependents[r.entity.id]||(this.detachedDependents[r.entity.id]=r)}),this}unsubscribeDependents(i){return i.forEach(r=>{this.detachedDependents[r.entity.id]&&delete this.detachedDependents[r.entity.id]}),this}syncDependents(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"sync-dependents"))){const r=[],a=[],c=[],e=[];return Object.values(this.detachedDependents).forEach(f=>{const h=f.entity.afterAllChildrenInitialized(i);r.push(...h.updated),a.push(...h.added),c.push(...h.removed),e.push(...h.affected)}),i==null||i.attemptAutoclose("sync-dependents",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}onDetachedDependencyRemoved(i,r,a){const c=[],e=[],f=[],h=[];if(r==="parent"){const{updated:m,added:E,removed:b}=this.remove({ignoreUpstream:!1},a);c.push(...m),e.push(...E),f.push(...b)}if(r==="var-declaration"){const{updated:m,added:E,removed:b}=this.remove({ignoreUpstream:!1},a);c.push(...m),e.push(...E),f.push(...b)}return{updated:C(c),added:C(e),removed:C(f),affected:C(h),self:this}}onDetachedDependencyRestored(i,r,a){const c=[],e=[],f=[],h=[];if(r==="parent"){const{updated:m,added:E,removed:b}=this.restore({},a);c.push(...m),e.push(...E),f.push(...b)}if(r==="var-declaration"){const{updated:m,added:E,removed:b}=this.restore({},a);c.push(...m),e.push(...E),f.push(...b)}return{updated:C(c),added:C(e),removed:C(f),affected:C(h),self:this}}unsubscribeFromDependencies(){var i,r,a,c,e,f,h;return(r=(i=this.parent)==null?void 0:i.unsubscribeDependents)==null||r.call(i,[{entity:this,field:"parent"}]),(e=(c=(a=this.declaration.dataType)==null?void 0:a.entity)==null?void 0:c.unsubscribeDependents)==null||e.call(c,[{entity:this,field:"data-type-entity"}]),(h=(f=this.declaration)==null?void 0:f.unsubscribeDependents)==null||h.call(f,[{entity:this,field:"var-declaration"}]),this}subscribeToDependencies(){var i,r,a,c;return(i=this.parent)==null||i.subscribeDependents([{entity:this,field:"parent"}]),(c=(a=(r=this.declaration.dataType)==null?void 0:r.entity)==null?void 0:a.subscribeDependents)==null||c.call(a,[{entity:this,field:"data-type-entity"}]),this.declaration.subscribeDependents([{entity:this,field:"var-declaration"}]),this}increaseVersion(i){var r;if(this.project.diggestedBuiltInBaseEntitiesIds.has(this.id))return this;if(i&&!B(i).isValid())throw new Error(`The shared timestamp '${i}' is not a valid ISO 8601 date string.`);if(i&&B(i).isSame(B(this.createdAt)))return this;if(!((r=this.knownVersions)!=null&&r.has(this.version))&&this.project.initialized)throw new Error(`The current ${this.type} ${this.id} version '${this.version}' is not captured in the 'knownVersions' map. Capture the current version before increasing it to avoid losing data.`);if(!this.activeVersion)throw new Error(`Only active versions can be increased. Entity with id '${this.id}' and version '${this.version}' is not active.`);return this.previousVersion=this.version,this.version=x.UUID.uuid(),this.createdAt=B(i).toISOString()||B().toISOString(),this}captureVersion(){var r;const i=((r=this.knownVersions)==null?void 0:r.get(this.version))||new Di(this,this.project);if(!this.activeVersion)throw new Error(`Only active versions can be captured. Entity of type ${this.type} with id '${this.id}' and version '${this.version}' is not active.`);if(this.version!==i.version)throw new Error(`Captured ${this.type} with id '${this.id}', version '${i.version}' does not match current entity version '${this.version}'.`);return this.knownVersions=this.knownVersions?this.knownVersions.set(this.version,i):new Map().set(this.version,i),this.apply(i),this}snapshot(){const i=new Di(this,this.project);return this.apply(i)}apply(i){const r=this.toMeta();return i.metaSync(r,null),i.inputs=[...this.inputs],i.outputs=[...this.outputs],i.internalCalls=[...this.internalCalls],i.successCalls=[...this.successCalls],i.errorCalls=[...this.errorCalls],i.writesValues=[...this.writesValues],i.readsValue=this.readsValue,i.defaultValue=this.defaultValue,i.declaration=this.declaration,i.calledBySuccess=[...this.calledBySuccess],i.calledByError=[...this.calledByError],i.calledByEntry=[...this.calledByEntry],i.error=this.error,i.parent=this.parent,i}recursiveCaptureUpstreamVersions(i){const r=[],a=[],c=[],e=[];if(this.parent){this.parent.increaseVersion(i);const f=this.parent.recursiveCaptureUpstreamVersions(i);r.push(this.parent,...f.updated),a.push(...f.added),c.push(...f.removed)}return{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}async restoreVersion(i,r){var m;const a=[],c=[],e=[],f=[];if(this.version===i&&(r!=null&&r.skipIfSameVersion))return{updated:C(a),added:C(c),removed:C(e),affected:C(f),self:this};if(!this.knownVersions){const E=new Map;for(const[b,A]of this.knownVersions||new Map){if(E.set(b,A),A.activeVersion=!1,A.knownVersions)for(const[_,P]of A.knownVersions)E.set(_,P);A.knownVersions=null}}let h=(m=this.knownVersions)==null?void 0:m.get(i);if(!h){const E=await this.APILoadVersion({},i);if(!E)throw new Error(`Version with id '${i}' for entity with id '${this.id}' not found.`);h=new Di(E,this.project)}return this.metaSync(h.toShallowJSON(),null),this.previousVersion=h.previousVersion,this.version=h.version,this.createdAt=h.createdAt,this.author=h.author,this.deleted=h.deleted,this.inputs=[...h.inputs],this.outputs=[...h.outputs],this.internalCalls=[...h.internalCalls],this.successCalls=[...h.successCalls],this.errorCalls=[...h.errorCalls],this.writesValues=[...h.writesValues],this.readsValue=h.readsValue,this.defaultValue=h.defaultValue,this.declaration=h.declaration,this.calledBySuccess=[...h.calledBySuccess],this.calledByError=[...h.calledByError],this.calledByEntry=[...h.calledByEntry],this.error=h.error,this.parent=h.parent,{updated:C(a),added:C(c),removed:C(e),affected:C(f),self:this}}updateWithShallowTransfer(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.UpdateWithShallowTransfer))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[updateWithShallowTransfer] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),this;if(this.metaSync(i,r),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 a=te(i.parent),c=this.project.get(a),e=this.parent;if(e&&e.id!==(c==null?void 0:c.id)&&this.removeFromParent(r),c)this.setParent(c,r),this.addSelfToProject(r);else throw r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),new Error(`${this.type} with id '${this.id}' has a 'parent' reference '${a}' that isn't found in the project`)}else throw r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),new Error(`${this.type} with id '${this.id}' must have a 'parent'`);if(i.readsValue){const a=te(i.readsValue),c=this.project.get(a),e=this.readsValue;e&&e.id!==(c==null?void 0:c.id)&&this.removeValueWriter(r),c&&this.setValueWriter(c,r)}else this.removeValueWriter(r);if(i.declaration){const a=te(i.declaration),c=this.project.get(a);c&&this.setDeclaration(c)}if(i.calledByEntry.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addEntryCaller(e,r),e.addCall(this,r))}),[...this.calledByEntry].forEach(a=>{i.calledByEntry.find(e=>te(e)===a.id)||(this.removeCaller(a,r),a.removeCall(this,r))}),i.calledBySuccess.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addSuccessCaller(e,r),e.addSuccessCall(this,r))}),[...this.calledBySuccess].forEach(a=>{i.calledBySuccess.find(e=>te(e)===a.id)||(this.removeCaller(a,r),a.removeCall(this,r))}),i.calledByError.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addErrorCaller(e,r),e.addErrorCall(this,r))}),[...this.calledByError].forEach(a=>{i.calledByError.find(e=>te(e)===a.id)||(this.removeCaller(a,r),a.removeCall(this,r))}),i.outputs.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addOutput(e,r),e.setParent(this,r))}),[...this.outputs].forEach(a=>{i.outputs.find(e=>te(e)===a.id)||(this.removeOutput(a,r),a.removeFromParent(r))}),i.inputs.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addInput(e,r),e.setParent(this,r))}),[...this.inputs].forEach(a=>{i.inputs.find(e=>te(e)===a.id)||(this.removeInput(a,r),a.removeFromParent(r))}),i.defaultValue){const a=te(i.defaultValue),c=this.project.get(a);c&&this.setDefaultValue(c,r)}else this.setDefaultValue(null,r);return i.writesValues.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addValueReader(e,r),e.setValueWriter(this,r))}),[...this.writesValues].forEach(a=>{i.writesValues.find(e=>te(e)===a.id)||(this.removeValueReader(a,r),a.setValueWriter(null,r))}),this.captureVersion(),this.subscribeToDependencies(),r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),this}updateWithGenerationTarget(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.UpdateWithGenerationTarget))){var a,c,e;if(!this.checkCanEdit(this,r))return z.Logger.warn(`[updateWithGenerationTarget] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),this;if(this.metaSync(i,r),i.parent){const f=te(i.parent),h=this.project.get(f),m=this.parent;if(m&&m.id!==(h==null?void 0:h.id)&&this.removeFromParent(r),h)this.setParent(h,r),this.addSelfToProject(r);else throw r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),new Error(`${this.type} with id '${this.id}' has a 'parent' reference '${f}' that isn't found in the project`)}if(i.declaration){const f=te(i.declaration),h=this.project.get(f);if(h)this.setDeclaration(h);else throw new Error(`${this.type} with id '${this.id}' has a 'declaration' reference '${f}' that isn't found in the project`)}if(i.readsValue){const f=te(i.readsValue),h=this.project.get(f);if(!h)throw new Error(`${this.type} with id '${this.id}' has a 'readsValue' reference '${f}' that isn't found in the project`);const m=this.readsValue;m&&m.id!==(h==null?void 0:h.id)&&this.removeValueWriter(r),h&&this.setValueWriter(h,r)}else i.readsValue===null&&this.removeValueWriter(r);return(a=i.calledByEntry)==null||a.forEach(f=>{const h=te(f),m=this.project.get(h);if(m)this.addEntryCaller(m,r),m.addCall(this,r);else throw new Error(`${this.type} with id '${this.id}' has a 'calledByEntry' reference '${h}' that isn't found in the project`)}),i.calledByEntry&&[...this.calledByEntry].forEach(f=>{var m;((m=i.calledByEntry)==null?void 0:m.find(E=>te(E)===f.id))||(this.removeCaller(f,r),f.removeCall(this,r))}),(c=i.calledBySuccess)==null||c.forEach(f=>{const h=te(f),m=this.project.get(h);if(m)this.addSuccessCaller(m,r),m.addSuccessCall(this,r);else throw new Error(`${this.type} with id '${this.id}' has a 'calledBySuccess' reference '${h}' that isn't found in the project`)}),i.calledBySuccess&&[...this.calledBySuccess].forEach(f=>{var m;((m=i.calledBySuccess)==null?void 0:m.find(E=>te(E)===f.id))||(this.removeCaller(f,r),f.removeCall(this,r))}),(e=i.calledByError)==null||e.forEach(f=>{const h=te(f),m=this.project.get(h);if(m)this.addErrorCaller(m,r),m.addErrorCall(this,r);else throw new Error(`${this.type} with id '${this.id}' has a 'calledByError' reference '${h}' that isn't found in the project`)}),i.calledByError&&[...this.calledByError].forEach(f=>{var m;((m=i.calledByError)==null?void 0:m.find(E=>te(E)===f.id))||(this.removeCaller(f,r),f.removeCall(this,r))}),this.captureVersion(),this.subscribeToDependencies(),r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),this}hydrateAncestors(){const i=[],r=[],a=[],c=[];if(this.initialData.parent){const e=te(this.initialData.parent),f=this.project.get(e);if(f)this.setParent(f,null),i.push(f);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.readsValue){const e=te(this.initialData.readsValue),f=this.project.get(e);f&&(this.setValueWriter(f,null),i.push(f))}if(this.initialData.declaration){const e=te(this.initialData.declaration),f=this.project.get(e);f&&(this.setDeclaration(f),i.push(f))}return this.initialData.calledByEntry.forEach(e=>{const f=te(e),h=this.project.get(f);h&&this.addEntryCaller(h,null)}),this.initialData.calledBySuccess.forEach(e=>{const f=te(e),h=this.project.get(f);h&&this.addSuccessCaller(h,null)}),this.initialData.calledByError.forEach(e=>{const f=te(e),h=this.project.get(f);h&&this.addErrorCaller(h,null)}),{updated:C(i),added:C(r),removed:C(a),affected:C(c),self:this}}afterAllChildrenInitialized(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AfterAllChildrenInitialized))){var he;if(!this.checkCanEdit(this,i))return z.Logger.warn(`[afterAllChildrenInitialized] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.AfterAllChildrenInitialized,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];if(this.initialized=!0,!this.declaration.dataType||(he=this.declaration.dataType)!=null&&he.inferred){const{added:ge,updated:Re,removed:xe,affected:Ge}=this.declaration.inferDataTypeAndSyncInstancesInputsAndOutputs(i);a.push(...ge),r.push(...Re),c.push(...xe),e.push(...Ge)}if(this.readsValue&&this.defaultValue&&(this.project.diggestedBuiltInBaseEntitiesIds.has(this.defaultValue.id)||this.defaultValue.remove({ignoreUpstream:!1},i),this.setDefaultValue(null,i)),this.defaultValue&&!this.readsValue&&!this.project.diggestedBuiltInBaseEntitiesIds.has(this.id)&&this.project.diggestedBuiltInBaseEntitiesIds.has(this.defaultValue.id)){const ge=this.defaultValue.clone(i,this);this.setDefaultValue(ge,i)}const{added:f,updated:h,removed:m,affected:E}=this.syncInputs(i);a.push(...f),r.push(...h),c.push(...m),e.push(...E);const{added:b,updated:A,removed:_,affected:P}=this.syncOutputs(i);a.push(...b),r.push(...A),c.push(..._),e.push(...P);const{added:V,updated:G,removed:M,affected:k}=this.generateUnusedInternalCalls(i);a.push(...V),r.push(...G),c.push(...M),e.push(...k);const{added:K,updated:ne,removed:X,affected:de}=this.removeUnrecognizedInputs(i);a.push(...K),r.push(...ne),c.push(...X),e.push(...de);const{added:ie,updated:le,removed:ye,affected:Y}=this.removeUnrecognizedOutputs(i);a.push(...ie),r.push(...le),c.push(...ye),e.push(...Y);const{added:ee,updated:pe,removed:se,affected:ue}=this.removeUnrecognizedInternalCalls(i);return a.push(...ee),r.push(...pe),c.push(...se),e.push(...ue),this.inputs.sort((ge,Re)=>{var xe,Ge;return(ge.index??((xe=ge.declaration)==null?void 0:xe.index))-(Re.index??((Ge=Re.declaration)==null?void 0:Ge.index))}),this.outputs.sort((ge,Re)=>{var xe,Ge;return(ge.index??((xe=ge.declaration)==null?void 0:xe.index))-(Re.index??((Ge=Re.declaration)==null?void 0:Ge.index))}),this.declaration.constant&&this.readsValue&&(this.readsValue.removeValueReader(this,i),this.removeValueWriter(i)),this.declaration.constant&&this.defaultValue&&this.defaultValue.remove({ignoreUpstream:!1},i),i==null||i.attemptAutoclose(w.AfterAllChildrenInitialized,this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}addSelfToProject(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"add-self-to-project"))){const r=[this],a=[],c=[],e=[];return this.parent===this.project&&this.project.addVariableInstance(this),this.readsValue&&(this.readsValue.addValueReader(this,i),r.push(this.readsValue)),this.writesValues.forEach(f=>{f.setValueWriter(this,i),r.push(f)}),this.successCalls.forEach(f=>{f.addSuccessCaller(this,i),r.push(f)}),this.errorCalls.forEach(f=>{f.addErrorCaller(this,i),r.push(f)}),this.calledBySuccess.forEach(f=>{f.addSuccessCall(this,i),r.push(f)}),this.calledByError.forEach(f=>{f.addErrorCall(this,i),r.push(f)}),this.calledByEntry.forEach(f=>{f.addCall(this,i),r.push(f)}),this.subscribe(),this.subscribeToDependencies(),i==null||i.attemptAutoclose("add-self-to-project",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}get calledBy(){return[...this.calledByEntry,...this.calledBySuccess,...this.calledByError]}get usedInputs(){return this.inputs.filter(i=>i.readsValue||i.defaultValue)}get unusedInputs(){return this.inputs.filter(i=>!i.readsValue&&!i.defaultValue)}get usedOutputs(){return this.outputs.filter(i=>i.writesValues.length)}get unusedOutputs(){return this.outputs.filter(i=>!i.writesValues.length)}get usedInternalCalls(){return this.internalCalls.filter(i=>!!i.calledBy.length||!!i.writesValues.length||!!i.successCalls.length||!!i.errorCalls.length)}get unusedInternalCalls(){const i=this.usedInternalCalls;return this.internalCalls.filter(a=>!(i.find(f=>f.id===a.id)||i.find(f=>f.declaration===a.declaration)))}removeInternalCall(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"remove-variable-instance-internal-call"))){const a=this.internalCalls.findIndex(c=>c.id===i.id);return a>-1&&(this.internalCalls.splice(a,1),r&&(r==null||r.add(this,W.Affected))),r==null||r.attemptAutoclose("remove-variable-instance-internal-call",this.id),this}removeInput(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveInput))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[removeInput] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.RemoveInput,this.id),this;const a=this.inputs.findIndex(c=>c.id===i.id);return a>-1&&(this.inputs.splice(a,1),r&&(r==null||r.add(this,W.Affected))),r==null||r.attemptAutoclose(w.RemoveInput,this.id),this}addInput(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddInput))){return this.checkCanEdit(this,r)?this.inputs.includes(i)?(r==null||r.attemptAutoclose(w.AddInput,this.id),this):(this.inputs.push(i),r==null||r.add(this,W.Affected),r==null||r.attemptAutoclose(w.AddInput,this.id),this):(z.Logger.warn(`[addInput] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.AddInput,this.id),this)}addOutput(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"add-output"))){return this.checkCanEdit(this,r)?this.outputs.includes(i)?(r==null||r.attemptAutoclose("add-output",this.id),this):(this.outputs.push(i),r==null||r.add(this,W.Affected),r==null||r.attemptAutoclose("add-output",this.id),this):(z.Logger.warn(`[addOutput] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("add-output",this.id),this)}removeOutput(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"remove-output"))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[removeOutput] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("remove-output",this.id),this;const a=this.outputs.findIndex(c=>c.id===i.id);return a>-1&&(this.outputs.splice(a,1),r&&(r==null||r.add(this,W.Affected))),r==null||r.attemptAutoclose("remove-output",this.id),this}addSuccessCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddSuccessCaller)),a=!1){var c;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddSuccessCaller,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddSuccessCaller}-${this.id}--${Me.CannotSuccessCallItself}`,action:w.AddSuccessCaller,owner:this,errorReason:Me.CannotSuccessCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddSuccessCaller})),this.calledBySuccess.find(e=>e.id===i.id)||(this.calledBySuccess.push(i),r==null||r.add(this,W.Updated),a&&bt(this,r)),r==null||r.attemptAutoclose(w.AddSuccessCaller,this.id),this):this}addErrorCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddErrorCaller)),a=!1){var c;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddErrorCaller,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddErrorCaller}-${this.id}--${Me.CannotErrorCallItself}`,action:w.AddErrorCaller,owner:this,errorReason:Me.CannotErrorCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddErrorCaller})),this.calledByError.find(e=>e.id===i.id)||(this.calledByError.push(i),r==null||r.add(this,W.Updated),a&&bt(this,r)),r==null||r.attemptAutoclose(w.AddErrorCaller,this.id),this):this}addEntryCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddEntryCaller)),a=!1){var c;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddEntryCaller,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddEntryCaller}-${this.id}--${Me.CannotEntryCallItself}`,action:w.AddEntryCaller,owner:this,errorReason:Me.CannotEntryCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddEntryCaller})),this.calledByEntry.find(e=>e.id===i.id)||(this.calledByEntry.push(i),r==null||r.add(this,W.Updated),a&&bt(this,r)),r==null||r.attemptAutoclose(w.AddEntryCaller,this.id),this):this}addErrorCall(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddErrorCall)),a=!1){var c;if(!this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddErrorCall,r))return this;if((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddErrorCaller}-${this.id}--${Me.CannotErrorCallItself}`,action:w.AddErrorCaller,owner:this,errorReason:Me.CannotErrorCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddErrorCaller})),!this.errorCalls.find(e=>e.id===i.id)){const e=sd(this);this.errorCalls.push(i);const f=this.catchesError;this.catchesError&&this.metaSync({catchesError:!1},r),a&&bt(this,r);const h=sd(this);e.length<h.length&&(h.forEach(m=>{var E;r==null||r.event({id:`${w.AddErrorCaller}-${this.id}--cannot-be-${m.code}`,action:w.AddErrorCaller,owner:this,errorReason:`cannot-be-${m.code}`,rootAction:((E=r==null?void 0:r.self)==null?void 0:E.id)===this.id&&(r==null?void 0:r.actionName)===w.AddErrorCaller})}),this.errorCalls=this.errorCalls.filter(m=>m.id!==i.id),this.metaSync({catchesError:f},r)),r==null||r.add(this,W.Affected)}return r==null||r.attemptAutoclose(w.AddErrorCall,this.id),this}addSuccessCall(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddSuccessCall)),a=!1){var c;if(!this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddSuccessCall,r))return this;if((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddSuccessCaller}-${this.id}`,action:w.AddSuccessCaller,owner:this,errorReason:Me.CannotSuccessCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddSuccessCaller})),!this.successCalls.find(e=>e.id===i.id)){const e=sd(this);this.successCalls.push(i),a&&bt(this,r);const f=sd(this);e.length<f.length&&(f.forEach(h=>{var m;r==null||r.event({id:`${w.AddSuccessCall}-${this.id}--cannot-be-${h.code}`,action:w.AddSuccessCall,owner:this,errorReason:`cannot-be-${h.code}`,rootAction:((m=r==null?void 0:r.self)==null?void 0:m.id)===this.id&&(r==null?void 0:r.actionName)===w.AddSuccessCall})}),this.successCalls=this.successCalls.filter(h=>h.id!==i.id)),r==null||r.add(this,W.Affected)}return r==null||r.attemptAutoclose(w.AddSuccessCall,this.id),this}removeCall(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveCall)),a=!1){if(!this.checkCanEditWithCounterpartAndSideEffects(this,i,w.RemoveCall,r))return this;const c=this.successCalls.findIndex(f=>f.id===i.id);c>-1&&(this.successCalls.splice(c,1),r==null||r.add(this,W.Affected));const e=this.errorCalls.findIndex(f=>f.id===i.id);return e>-1&&(this.errorCalls.splice(e,1),r==null||r.add(this,W.Affected)),a&&bt(this,r),r==null||r.attemptAutoclose(w.RemoveCall,this.id),this}removeCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"remove-caller")),a=!1){return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.RemoveCaller,r)?(this.calledBySuccess=this.calledBySuccess.filter(c=>c.id!==i.id?!0:(r==null||r.add(this,W.Updated),r==null||r.add(c,W.Affected),!1)),this.calledByError=this.calledByError.filter(c=>c.id!==i.id?!0:(r==null||r.add(this,W.Updated),r==null||r.add(c,W.Affected),!1)),this.calledByEntry=this.calledByEntry.filter(c=>c.id!==i.id?!0:(r==null||r.add(this,W.Updated),r==null||r.add(c,W.Affected),!1)),a&&bt(this,r),r==null||r.attemptAutoclose(w.RemoveCaller,this.id),this):this}addValueReader(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddValueReader))){var e,f,h,m;if(!this.checkCanEditFromScopeOwnerWithSideEffects(this,w.AddValueReader,r))return this;(i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.SetValueWriter}-${this.id}`,action:w.SetValueWriter,owner:this,errorReason:Me.CannotValueWriteItself,rootAction:((e=r==null?void 0:r.self)==null?void 0:e.id)===this.id&&(r==null?void 0:r.actionName)===w.SetValueWriter}));const a=i.type===d.InputMap&&i.parent.type===d.VariableInstance&&((f=i.declaration)==null?void 0:f.type)===d.Property&&((h=i.declaration)==null?void 0:h.constant),c=i.type===d.VariableInstance&&((m=i.declaration)==null?void 0:m.constant);return(a||c)&&i?(r==null||r.event({id:`${w.SetValueWriter}-${this.id}--${i.id}`,action:w.SetValueWriter,owner:i,counterpart:this,errorReason:Me.ValueReadingOverridesConstantVariable,rootAction:!1}),r==null||r.attemptAutoclose(w.AddValueReader,this.id),this):this.writesValues.includes(i)?(r==null||r.attemptAutoclose(w.AddValueReader,this.id),this):(this.writesValues.push(i),r==null||r.add(this,W.Affected),this)}setError(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetErrorEntity))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[setError] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.SetErrorEntity,this.id),this;const a=this.error;return(a==null?void 0:a.id)!==(i==null?void 0:i.id)&&(a==null||a.remove({ignoreUpstream:!0},r),this.error=i,this.subscribeToDependencies(),r==null||r.add(this,W.Affected)),r==null||r.attemptAutoclose(w.SetErrorEntity,this.id),this}setParent(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetParent))){var a;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.SetParent,r)?(((a=this.parent)==null?void 0:a.id)!==(i==null?void 0:i.id)&&(this.parent=i,r&&(r==null||r.add(this,W.Updated))),r==null||r.attemptAutoclose(w.SetParent,this.id),this):this}initChildren(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"init-children"))){if(this.initialized||this.startedInitialization)return this;if(this.startedInitialization=!0,this.initialData.defaultValue&&(this.defaultValue=Ie(this.initialData.defaultValue,this.project),this.defaultValue.setParent(this,null),this.defaultValue.initChildren(i)),this.initialData.declaration.type===d.GenericReference){const r=this.project.findSubscribedInstanceFromReference(this.initialData.declaration);if(!r)return this;this.declaration=r}else this.declaration=Ie(this.initialData.declaration,this.project),this.declaration.initChildren(i);return JE.initWritesValues(this,this.parent),uy.initReadsValue(this),this.initialData.inputs.forEach(r=>{const a=Ie(r,this.project);return a.setParent(this,null),a.initChildren(i),this.addInput(a,null),a}),this.initialData.outputs.forEach(r=>{const a=Ie(r,this.project);return a.setParent(this,null),a.initChildren(i),this.addOutput(a,i),a}),this.successCalls=this.initialData.successCalls.map(r=>{const a=Ie(r,this.project);if(a.addSuccessCaller(this,null),[d.BreakStatement,d.ContinueStatement].includes(a.type))a.setParent(this.parent.parent,null),a.initChildren(i);else if(a.type===d.ReturnStatement){const c=gn(this,this.project);a.setParent(c,null),a.initChildren(i)}else a.type!==d.InternalCall&&(a.setParent(this.parent,null),a.initChildren(i));return a}),this.errorCalls=this.initialData.errorCalls.map(r=>{const a=Ie(r,this.project);if(a.addErrorCaller(this,null),[d.BreakStatement,d.ContinueStatement].includes(a.type))a.setParent(this.parent.parent,null),a.initChildren(i);else if(a.type===d.ReturnStatement){const c=gn(this,this.project);a.setParent(c,null),a.initChildren(i)}else a.type!==d.InternalCall&&(a.setParent(this.parent,null),a.initChildren(i));return a}),this.internalCalls=this.initialData.internalCalls.reduce((r,a)=>{if(a.type===d.GenericReference){const c=this.project.findSubscribedInstanceFromReference(a);if(!c)return r;const e=c;return e.setParent(this,null),[...r,e]}else{const c=Ie(a,this.project);return c.setParent(this,null),c.initChildren(i),[...r,c]}},[]),this.initialData.error&&(this.error=Ie(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}setValueWriter(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetValueWriter))){var c,e,f,h,m;return this.checkCanEditFromScopeOwnerWithSideEffects(this,w.SetValueWriter,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.SetValueWriter}-${this.id}`,action:w.SetValueWriter,owner:this,errorReason:Me.CannotValueWriteItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.SetValueWriter})),((e=this.declaration)==null?void 0:e.constant)&&i?(r==null||r.event({id:`${w.SetValueWriter}-${this.id}--${i.id}`,action:w.SetValueWriter,owner:this,counterpart:i,errorReason:Me.ValueReadingOverridesConstantVariable,rootAction:((f=r==null?void 0:r.self)==null?void 0:f.id)===this.id&&(r==null?void 0:r.actionName)===w.SetValueWriter}),r==null||r.attemptAutoclose(w.SetValueWriter,this.id),this):(((h=this.readsValue)==null?void 0:h.id)!==(i==null?void 0:i.id)&&(this.readsValue=i,this.readsValue&&((m=this.defaultValue)==null||m.remove({ignoreUpstream:!1},r)),r==null||r.add(this,W.Updated)),r==null||r.attemptAutoclose(w.SetValueWriter,this.id),this)):this}removeValueWriter(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveValueWriter))){return this.readsValue&&!this.checkCanEditFromScopeOwnerWithSideEffects(this,w.RemoveValueWriter,i)?this:(this.readsValue&&(this.readsValue=null,i==null||i.add(this,W.Updated)),i==null||i.attemptAutoclose(w.RemoveValueWriter,this.id),this)}removeValueReader(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveValueReader))){return this.checkCanEditFromScopeOwnerWithSideEffects(this,w.RemoveValueReader,r)?this.writesValues.includes(i)?(this.writesValues=this.writesValues.filter(a=>a.id!==i.id),r==null||r.add(this,W.Affected),this):(r==null||r.attemptAutoclose(w.RemoveValueReader,this.id),this):this}subscribe(){var i;return this.activeVersion=!0,(i=this.knownVersions)==null||i.forEach(r=>{r.version!==this.version&&(r.activeVersion=!1)}),this.project.subscribeInstance(this),this}unsubscribe(){return this.project.unsubscribeInstance(this),this}metaSync(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"meta-sync"))){const a=tn(this,i,r),c=en(this,a),e=this.toMeta();return this.x=a.x||e.x,this.y=a.y||e.y,this.catchesError=a.catchesError!==void 0?a.catchesError:this.catchesError,super.baseMetaSync(a,this,r),a.deleted===!0&&!e.deleted?r==null||r.add(this,W.Removed):a.deleted===!1&&e.deleted?r==null||r.add(this,W.Added):c&&(r==null||r.add(this,W.Updated)),r==null||r.attemptAutoclose("meta-sync",this.id),this}async APILoad(i=Ke,...r){return await Di.repository.APILoad(this.id,...r),this}async APICreate(i=Ke,...r){return await Di.repository.APICreate(this.toShallowJSON(),...r),this}async APIUpdate(i=Ke,...r){return await Di.repository.APIUpdate(this.toShallowJSON(),...r),this}async APIDelete(i=Ke,...r){return await Di.repository.APIDelete(this.toShallowJSON(),...r),this}async APIClone(i=Ke,...r){return await Di.repository.APIClone(this.id,...r),this}async APILoadVersion(i=Ke,r,...a){return await Di.repository.APILoadVersion(this.id,r,...a)}removeFromParent(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveFromParent))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[removeFromParent] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveFromParent,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];return this.parent.type===d.Project?(this.parent.removeVariableInstance(this),e.push(this.parent)):this.parent.detachedChildren.includes(this)&&this.parent.unsubscribeDetachedChild(this),i==null||i.attemptAutoclose(w.RemoveFromParent,this.id),{added:C(c),updated:C(r),removed:C(a),affected:C(e),self:this}}remove({ignoreUpstream:i}={ignoreUpstream:!1},r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveEntity))){var h;if(!this.checkCanDelete(this,r))return z.Logger.warn(`[remove] User is not allowed to delete or edit this ${this.type} entity with id: ${this.id}`),r==null||r.event({id:`${w.RemoveEntity}-${this.id}--${Me.ActionOwnerEntityNonDeletable}`,action:w.RemoveEntity,owner:this,errorReason:Me.ActionOwnerEntityNonDeletable,rootAction:((h=r==null?void 0:r.self)==null?void 0:h.id)===this.id&&(r==null?void 0:r.actionName)===w.RemoveEntity}),r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const a=[],c=[],e=[],f=[];if(r!=null&&r.hasRemoved(this.id))return r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};if(c.push(this),this.unsubscribe(),this.unsubscribeFromDependencies(),this.project.subscribeDeletedInstance(this),this.metaSync({deleted:!0},r),Object.values(this.detachedDependents).forEach(m=>{const{updated:E,removed:b,added:A}=m.entity.onDetachedDependencyRemoved(this,m.field,r);a.push(...E),c.push(...b),e.push(...A)}),this.defaultValue){const{updated:m,removed:E}=this.defaultValue.remove({ignoreUpstream:!0},r);a.push(...m),c.push(...E)}if(this.readsValue&&(a.push(this.readsValue),this.readsValue.removeValueReader(this,r)),this.writesValues.forEach(m=>{a.push(m),m.setValueWriter(null,r)}),this.inputs.forEach(m=>{const{updated:E,removed:b}=m.remove({ignoreUpstream:!0},r);a.push(...E),c.push(...b)}),this.outputs.forEach(m=>{const{updated:E,removed:b}=m.remove({ignoreUpstream:!0},r);a.push(...E),c.push(...b)}),this.successCalls.forEach(m=>{a.push(m),m.removeCaller(this,r)}),this.errorCalls.forEach(m=>{a.push(m),m.removeCaller(this,r)}),this.internalCalls.forEach(m=>{const{updated:E,removed:b}=m.remove({ignoreUpstream:!0},r);a.push(...E),c.push(...b)}),!i){const m=this.removeFromParent(r);e.push(...m.added),a.push(...m.updated),c.push(...m.removed),f.push(...m.affected),this.calledBy.forEach(E=>{a.push(E),E.removeCall(this,r)})}return r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:C(e),updated:C(a),removed:C(c),affected:C(f),self:this}}restore({}={},i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RestoreEntity))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[restore] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RestoreEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];if(i!=null&&i.hasAdded(this.id))return i==null||i.attemptAutoclose(w.RestoreEntity,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(f=>{const{updated:h,removed:m,added:E}=f.entity.onDetachedDependencyRestored(this,f.field,i);a.push(...h),c.push(...m),r.push(...E)}),this.defaultValue){const{updated:f}=this.defaultValue.restore({},i);a.push(...f)}return this.readsValue&&(a.push(this.readsValue),this.readsValue.addValueReader(this,i)),this.writesValues.forEach(f=>{a.push(f),f.setValueWriter(this,i)}),this.inputs.forEach(f=>{const{updated:h}=f.restore({},i);a.push(...h)}),this.outputs.forEach(f=>{const{updated:h}=f.restore({},i);a.push(...h)}),this.successCalls.forEach(f=>{a.push(f),f.addSuccessCaller(this,i)}),this.errorCalls.forEach(f=>{a.push(f),f.addErrorCaller(this,i)}),this.internalCalls.forEach(f=>{const{updated:h}=f.restore({},i);a.push(...h)}),this.calledBySuccess.forEach(f=>{a.push(f),f.addSuccessCall(this,i)}),this.calledByError.forEach(f=>{a.push(f),f.addErrorCall(this,i)}),this.calledByEntry.forEach(f=>{a.push(f),f.addCall(this,i)}),i==null||i.attemptAutoclose(w.RestoreEntity,this.id),{added:C(r),updated:C(a),removed:C(c),affected:C(e),self:this}}toFlat(i=new Set){var a,c;return i.has(this.id)?[]:(i.add(this.id),[this,...((a=this.defaultValue)==null?void 0:a.toFlat(i))||[],...this.writesValues.flatMap(e=>e.toFlat(i)),...((c=this.readsValue)==null?void 0:c.toFlat(i))||[],...this.successCalls.flatMap(e=>e.toFlat(i)),...this.errorCalls.flatMap(e=>e.toFlat(i)),...this.inputs.flatMap(e=>e.toFlat(i)),...this.outputs.flatMap(e=>e.toFlat(i)),...this.internalCalls.flatMap(e=>e.toFlat(i))])}toFlatIds(i=new Set){var a;return i.has(this.id)?[]:(i.add(this.id),[this.id,...((a=this.defaultValue)==null?void 0:a.toFlatIds(i))||[],...this.writesValues.flatMap(c=>c.toFlatIds(i)),...this.successCalls.flatMap(c=>c.toFlatIds(i)),...this.errorCalls.flatMap(c=>c.toFlatIds(i)),...this.inputs.flatMap(c=>c.toFlatIds(i)),...this.outputs.flatMap(c=>c.toFlatIds(i)),...this.internalCalls.flatMap(c=>c.toFlatIds(i))])}toMeta(){return{id:this.id,version:this.version,createdAt:this.createdAt,catchesError:this.catchesError,previousVersion:this.previousVersion,author:this.author,deleted:this.deleted,x:this.x,y:this.y,type:this.type,editable:this.editable,deletable:this.deletable}}toJSON(i=new Set){var r,a,c;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,catchesError:this.catchesError,type:this.type,editable:this.editable,deletable:this.deletable,declaration:this.declaration.toJSON(i),defaultValue:((r=this.defaultValue)==null?void 0:r.toJSON(i))||null,readsValue:((a=this.readsValue)==null?void 0:a.toReference())||null,writesValues:this.writesValues.map(e=>e.toJSON(i)),inputs:this.inputs.map(e=>e.toJSON(i)),outputs:this.outputs.map(e=>e.toJSON(i)),successCalls:this.successCalls.map(e=>e.toJSON(i)),errorCalls:this.errorCalls.map(e=>e.toJSON(i)),internalCalls:this.internalCalls.map(e=>e.toJSON(i)),calledBySuccess:this.calledBySuccess.map(e=>e.toReference()),calledByError:this.calledByError.map(e=>e.toReference()),calledByEntry:this.calledByEntry.map(e=>e.toReference()),parent:this.parent.toReference(),error:((c=this.error)==null?void 0:c.toJSON(i))||null,x:this.x,y:this.y})}toJSONClone(i=at){var a,c,e,f,h,m,E,b;let r;return(a=i.seenEntityMaps)!=null&&a.has(this.id)?r=i.seenEntityMaps.get(this.id):(r=i.newId||dn(this,this.project,i.uuidStrategy),i.seenEntityMaps&&i.seenEntityMaps.set(this.id,r)),(c=i.seenEntities)!=null&&c.has(r)||(e=i.seenEntities)!=null&&e.has(this.id)?this.toReference({seenEntityMaps:i.seenEntityMaps}):((f=i.seenEntities)==null||f.add(r),(h=i.seenEntities)==null||h.add(this.id),{id:r,version:x.UUID.uuid(),createdAt:i.timestamp||B().toISOString(),previousVersion:null,author:this.author,deleted:this.deleted,catchesError:this.catchesError,type:this.type,editable:this.editable,deletable:this.deletable,defaultValue:((m=this.defaultValue)==null?void 0:m.toJSONClone({...i,newId:null}))||null,declaration:this.declaration.toReference({seenEntityMaps:i.seenEntityMaps}),readsValue:((E=this.readsValue)==null?void 0:E.toReference({seenEntityMaps:i.seenEntityMaps}))||null,writesValues:this.writesValues.map(A=>A.toJSONClone({...i,newId:null})),inputs:this.inputs.map(A=>A.toJSONClone({...i,newId:null})),outputs:this.outputs.map(A=>A.toJSONClone({...i,newId:null})),successCalls:this.successCalls.map(A=>A.toJSONClone({...i,newId:null})),errorCalls:this.errorCalls.map(A=>A.toJSONClone({...i,newId:null})),internalCalls:this.internalCalls.map(A=>this.calledBy.length||this.readsValue?A.toJSONClone({...i,newId:null}):A.toReference({seenEntityMaps:i.seenEntityMaps})),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})),error:((b=this.error)==null?void 0:b.toJSONClone({...i,newId:null}))||null,parent:this.parent.toReference({seenEntityMaps:i.seenEntityMaps}),x:this.x,y:this.y})}toReference(i=at){var a;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r+"--"+x.UUID.uuid()+"--ref",type:d.GenericReference,entityId:r,version:this.version,entityType:this.type}}toShallowJSON(i=at){var a,c,e,f,h;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r,version:this.version,createdAt:this.createdAt,previousVersion:this.previousVersion,author:this.author,deleted:this.deleted,catchesError:this.catchesError,type:this.type,editable:this.editable,deletable:this.deletable,x:this.x,y:this.y,defaultValue:((c=this.defaultValue)==null?void 0:c.toReference(i))||null,declaration:((e=this.declaration)==null?void 0:e.toReference(i))||null,readsValue:((f=this.readsValue)==null?void 0:f.toReference(i))||null,writesValues:this.writesValues.map(m=>m.toReference(i)),inputs:this.inputs.map(m=>m.toReference(i)),outputs:this.outputs.map(m=>m.toReference(i)),successCalls:this.successCalls.map(m=>m.toReference(i)),errorCalls:this.errorCalls.map(m=>m.toReference(i)),calledBySuccess:this.calledBySuccess.map(m=>m.toReference(i)),calledByError:this.calledByError.map(m=>m.toReference(i)),calledByEntry:this.calledByEntry.map(m=>m.toReference(i)),internalCalls:this.internalCalls.map(m=>m.toReference(i)),error:((h=this.error)==null?void 0:h.toReference(i))||null,parent:this.parent.toReference(i)}}toFlatJSON(i=new Set){var a,c;return i.has(this.id)?[]:(i.add(this.id),[this.toShallowJSON(),...((a=this.defaultValue)==null?void 0:a.toFlatJSON(i))||[],...((c=this.declaration)==null?void 0:c.toFlatJSON(i))||[],...this.writesValues.flatMap(e=>e.toFlatJSON(i)),...this.successCalls.flatMap(e=>e.toFlatJSON(i)),...this.errorCalls.flatMap(e=>e.toFlatJSON(i)),...this.inputs.flatMap(e=>e.toFlatJSON(i)),...this.outputs.flatMap(e=>e.toFlatJSON(i)),...this.internalCalls.flatMap(e=>e.toFlatJSON(i)),...this.calledBy.flatMap(e=>e.toFlatJSON(i))])}toGenerationTarget(i=at){var c,e;const r=this.parent.type===d.Project?void 0:(c=i.seenEntityMaps)!=null&&c.has(this.parent.id)?i.seenEntityMaps.get(this.parent.id):this.parent.id;let a=this.id;return(e=i.seenEntityMaps)!=null&&e.has(this.id)&&(a=i.seenEntityMaps.get(this.id)),{id:a,type:this.type,declaration:this.declaration.id,calledByEntry:this.calledByEntry.map(f=>f.id),calledBySuccess:this.calledBySuccess.map(f=>f.id),calledByError:this.calledByError.map(f=>f.id),parent:r}}toFlatGenerationTarget(i=new Set){var a,c,e;return i.has(this.id)?[]:(i.add(this.id),[this.toGenerationTarget(),...((a=this.defaultValue)==null?void 0:a.toFlatGenerationTarget(i))||[],...((c=this.declaration)==null?void 0:c.toFlatGenerationTarget(i))||[],...((e=this.readsValue)==null?void 0:e.toFlatGenerationTarget(i))||[],...this.writesValues.flatMap(f=>f.toFlatGenerationTarget(i)),...this.successCalls.flatMap(f=>f.toFlatGenerationTarget(i)),...this.errorCalls.flatMap(f=>f.toFlatGenerationTarget(i)),...this.inputs.flatMap(f=>f.toFlatGenerationTarget(i)),...this.outputs.flatMap(f=>f.toFlatGenerationTarget(i)),...this.internalCalls.flatMap(f=>f.toFlatGenerationTarget(i))])}clearErrors(){var i;return this.errors=[],(i=this.defaultValue)==null||i.clearErrors(),this.inputs.forEach(r=>r.clearErrors()),this.outputs.forEach(r=>r.clearErrors()),this.successCalls.forEach(r=>r.clearErrors()),this.errorCalls.forEach(r=>r.clearErrors()),this.internalCalls.forEach(r=>r.clearErrors()),this}validate(){return this.errors=MMe(this),{success:!0}}async validateAsync(i={}){const r=z.YieldTracker.from(i);return this.errors=await BMe(this,{tracker:r}),{success:!0}}getErrors(){var r;return[...this.errors,...((r=this.defaultValue)==null?void 0:r.getErrors())||[],...this.inputs.flatMap(a=>a.getErrors()),...this.internalCalls.flatMap(a=>a.getErrors()),...this.outputs.flatMap(a=>a.getErrors())]}async getErrorsAsync(i={}){var e;const r=z.YieldTracker.from(i),a=[...this.errors];await r.tick();const c=await((e=this.defaultValue)==null?void 0:e.getErrorsAsync({tracker:r}));c&&a.push(...c);for(const f of this.inputs){const h=await f.getErrorsAsync({tracker:r});a.push(...h)}for(const f of this.internalCalls){const h=await f.getErrorsAsync({tracker:r});a.push(...h)}for(const f of this.outputs){const h=await f.getErrorsAsync({tracker:r});a.push(...h)}return a}getShallowErrors(){return this.errors}getDefaultValue(){var i;return this.defaultValue||((i=this.declaration)==null?void 0:i.defaultValue)||null}setDefaultValue(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"set-default-value"))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[setDefaultValue] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("set-default-value",this.id),this;const a=this.defaultValue;if((a==null?void 0:a.id)!==(i==null?void 0:i.id)){if(a==null||a.remove({ignoreUpstream:!0},r),this.defaultValue=i,this.defaultValue){const c=this.readsValue;this.removeValueWriter(r),c==null||c.removeValueReader(this,r)}r==null||r.add(this,W.Affected)}return r==null||r.attemptAutoclose("set-default-value",this.id),this}clone(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.CloneEntity)),r=null,a=null,c=!0){var P,V,G,M;const e=Fr(r,this),f=this.toJSON(),h=a||x.UUID.uuid();f.inputs=[],f.id=h,f.version=x.UUID.uuid(),f.createdAt=(i==null?void 0:i.timestamp)||B().toISOString(),f.author=(i==null?void 0:i.author)||"1",f.previousVersion=null,f.deleted=!1,f.deletable=!0,f.editable=!0;const m=lr(f,e);r?m.setParent(r,i):m.setParent(this.parent,null),c&&m.subscribe(),m.initChildren(i),i==null||i.add(m,W.Added);const E=(P=this.defaultValue)==null?void 0:P.clone(i,m,x.UUID.uuid(),c);m.defaultValue=E||null;const b=(V=this.inputs)==null?void 0:V.map(k=>k.clone(i,m,x.UUID.uuid(),c));m.inputs=b;const A=(G=this.outputs)==null?void 0:G.map(k=>k.clone(i,m,x.UUID.uuid(),c));m.outputs=A;const _=(M=this.internalCalls)==null?void 0:M.map(k=>k.clone(i,m,x.UUID.uuid(),c));return m.internalCalls=_,i||m.captureVersion(),i==null||i.attemptAutoclose(w.CloneEntity,this.id),m}addInternalCall(i){return this.internalCalls.find(r=>r===i)||this.internalCalls.push(i),this}setDeclaration(i){return this.declaration!==i&&(this.declaration=i),this}removeUnrecognizedInputs(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveUnrecognizedInputs))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[removeUnrecognizedInputs] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveUnrecognizedInputs,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];return this.declaration.dataType&&!this.declaration.dataType.isObject()?[...this.inputs].forEach(h=>{const m=h.remove({ignoreUpstream:!1},i);c.push(...m.removed),r.push(...m.updated)}):this.declaration.dataType&&this.declaration.dataType.hasStrictObjectStructure()&&[...this.inputs].forEach(h=>{var E;if(!h.declaration){const b=h.remove({ignoreUpstream:!1},i);c.push(...b.removed),r.push(...b.updated);return}if(![...((E=this.declaration.dataType)==null?void 0:E.entity).allProperties].find(b=>h.declaration===b)){const b=h.remove({ignoreUpstream:!1},i);c.push(...b.removed),r.push(...b.updated)}}),this.inputs.filter((h,m)=>{const E=this.inputs.findIndex(A=>A.declaration===h.declaration&&A!==h);if(E===-1)return!1;const b=this.inputs[E];return B(b==null?void 0:b.createdAt).isSame(B(h.createdAt))?m>E:!!B(b==null?void 0:b.createdAt).isAfter(h.createdAt)}).forEach(h=>{const m=h.remove({ignoreUpstream:!1},i);c.push(...m.removed),r.push(...m.updated)}),i==null||i.attemptAutoclose(w.RemoveUnrecognizedInputs,this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}removeUnrecognizedOutputs(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"remove-unrecognized-variable-instance-outputs"))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[removeUnrecognizedOutputs] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveUnrecognizedOutputs,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];return this.declaration.dataType&&!this.declaration.dataType.isObject()?[...this.outputs].forEach(f=>{const h=f.remove({ignoreUpstream:!1},i);c.push(...h.removed),r.push(...h.updated)}):this.declaration.dataType&&this.declaration.dataType.hasStrictObjectStructure()&&[...this.outputs].forEach(f=>{var m;if(!f.declaration){const E=f.remove({ignoreUpstream:!1},i);c.push(...E.removed),r.push(...E.updated);return}if(![...((m=this.declaration.dataType)==null?void 0:m.entity).allProperties].find(E=>f.declaration===E)){const E=f.remove({ignoreUpstream:!1},i);c.push(...E.removed),r.push(...E.updated)}}),i==null||i.attemptAutoclose("remove-unrecognized-variable-instance-outputs",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}removeUnrecognizedInternalCalls(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"remove-unrecognized-variable-declaration-internal-calls"))){const r=[],a=[],c=[],e=[];if(!this.declaration.dataType||!this.declaration.dataType.entity||![d.DefinitionEntity,d.PrimitiveEntity,d.BuiltInBaseEntity].includes(this.declaration.dataType.entity.type))[...this.internalCalls].forEach(h=>{const m=h.remove({ignoreUpstream:!1},i);c.push(...m.removed),r.push(...m.updated)});else if(this.declaration.dataType&&this.declaration.dataType.entity&&[d.DefinitionEntity,d.PrimitiveEntity,d.BuiltInBaseEntity].includes(this.declaration.dataType.entity.type)){const h=[...this.declaration.dataType.entity.getAllInteractiveMethods()],m=[...h].filter(E=>!h.some(b=>{var A,_;return b.id!==E.id&&(((A=b.implements)==null?void 0:A.id)===E.id||((_=b.extends)==null?void 0:_.id)===E.id)})&&!E.deleted);[...this.internalCalls].forEach(E=>{if(!E.declaration){const A=E.remove({ignoreUpstream:!1},i);c.push(...A.removed),r.push(...A.updated);return}if(!m.find(A=>E.declaration===A)){const A=E.remove({ignoreUpstream:!1},i);c.push(...A.removed),r.push(...A.updated);return}})}return this.internalCalls.filter((h,m)=>{const E=this.internalCalls.findIndex(A=>A.declaration===h.declaration&&A!==h);if(E===-1)return!1;const b=this.internalCalls[E];return B(b==null?void 0:b.createdAt).isSame(B(h.createdAt))?m>E:!!B(b==null?void 0:b.createdAt).isAfter(h.createdAt)}).forEach(h=>{const m=h.remove({ignoreUpstream:!1},i);c.push(...m.removed),r.push(...m.updated)}),i==null||i.attemptAutoclose("remove-unrecognized-variable-declaration-internal-calls",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}syncInputs(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"sync-variable-instance-inputs"))){const r=[],a=[],c=[],e=[];if(this.declaration.dataType)if(this.declaration.dataType.entity){if([d.DefinitionEntity,d.PrimitiveEntity,d.BuiltInBaseEntity].includes(this.declaration.dataType.entity.type)&&!this.declaration.dataType.isList){const f=[...this.declaration.dataType.entity.properties];f.filter(b=>!b.getDataType(i)).forEach(b=>{const A=this.inputs.find(V=>oe(V,this.project)===oe(b,this.project));if(!A)return;const _=this.declaration.getMasterInputWithValueWriterFromAllInstances(A);if(!_)return;const P=iu(_);b.setDataType(P,i),A.setDeclaration(b,i)}),f.filter(b=>!this.inputs.find(A=>{var _;return((_=A.declaration)==null?void 0:_.id)===b.id})).forEach(b=>{const A={dataType:null,id:x.UUID.uuid(),version:x.UUID.uuid(),createdAt:(i==null?void 0:i.timestamp)||B().toISOString(),author:x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.InputMap,parentRelationType:null,parent:this.toReference(),name:null,description:null,codeName:null,declaration:b,defaultValue:null,index:b.index,readsValue:null},_=Ie(A,this.project);return _.setParent(this,i),_.initChildren(i),i==null||i.add(_,W.Added),i||_.captureVersion(),this.addInput(_,i),_}),this.inputs.filter(b=>!b.declaration).forEach(b=>{const A=f.find(_=>oe(_,this.project)===oe(b,this.project));A&&b.setDeclaration(A,i)})}}else return i==null||i.attemptAutoclose("sync-variable-instance-inputs",this.id),{added:[],updated:[],removed:[],affected:[],self:this};else return i==null||i.attemptAutoclose("sync-variable-instance-inputs",this.id),{added:[],updated:[],removed:[],affected:[],self:this};return this.inputs.forEach(f=>{const{updated:h,added:m,removed:E}=f.afterAllChildrenInitialized(i);a.push(...h),r.push(...m),c.push(...E)}),this.inputs.sort((f,h)=>f.index-h.index),i==null||i.attemptAutoclose("sync-variable-instance-inputs",this.id),{added:C(r),updated:C(a),removed:C(c),affected:C(e),self:this}}syncOutputs(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SyncOutputs))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[syncOutputs] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.SyncOutputs,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];if(this.declaration.dataType)if(this.declaration.dataType.entity)[d.DefinitionEntity,d.PrimitiveEntity,d.BuiltInBaseEntity].includes(this.declaration.dataType.entity.type)&&!this.declaration.dataType.isList&&[...this.declaration.dataType.entity.properties].filter(m=>!this.outputs.find(E=>E.declaration===m)).map(m=>{const E={dataType:null,id:x.UUID.uuid(),version:x.UUID.uuid(),createdAt:(i==null?void 0:i.timestamp)||B().toISOString(),author:x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.OutputMap,parent:this.toReference(),declaration:m,index:m.index,writesValues:[]},b=Ie(E,this.project);return b.setParent(this,i),b.initChildren(i),i==null||i.add(b,W.Added),i||b.captureVersion(),this.addOutput(b,i),b});else return i==null||i.attemptAutoclose(w.SyncOutputs,this.id),{added:[],updated:[],removed:[],affected:[],self:this};else return i==null||i.attemptAutoclose(w.SyncOutputs,this.id),{added:[],updated:[],removed:[],affected:[],self:this};return this.outputs.forEach(f=>{const{updated:h,added:m,removed:E}=f.afterAllChildrenInitialized(i);a.push(...h),r.push(...m),c.push(...E)}),this.outputs.sort((f,h)=>f.index-h.index),i==null||i.attemptAutoclose(w.SyncOutputs,this.id),{added:C(r),updated:C(a),removed:C(c),affected:C(e),self:this}}generateUnusedInternalCalls(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"generate-unused-internal-calls"))){const r=[],a=[],c=[],e=[];if(this.declaration.dataType)if(this.declaration.dataType.entity){if([d.DefinitionEntity,d.PrimitiveEntity,d.BuiltInBaseEntity].includes(this.declaration.dataType.entity.type)&&!this.declaration.dataType.isList){const f=[...this.declaration.dataType.entity.getAllInteractiveMethods()];[...f].filter(E=>!f.some(b=>{var A,_;return b.id!==E.id&&(((A=b.implements)==null?void 0:A.id)===E.id||((_=b.extends)==null?void 0:_.id)===E.id)})&&!E.deleted).filter(E=>!this.internalCalls.find(A=>{var P,V,G,M,k;return(((P=A.declaration)==null?void 0:P.id)||((G=(V=A.initialData)==null?void 0:V.declaration)==null?void 0:G.entityId)||((k=(M=A.initialData)==null?void 0:M.declaration)==null?void 0:k.id))===E.id})).forEach(E=>{const b=this.internalCalls.find(A=>{const _=Nf(A.declaration),P=Nf(E);return _.id===P.id});if(b)b.setDeclaration(E),b.subscribeToDependencies();else{const A=E.createInternalCall(i,this);i==null||i.add(A,W.Added),this.addInternalCall(A)}})}}else return i==null||i.attemptAutoclose("generate-unused-internal-calls",this.id),{added:[],updated:[],removed:[],affected:[],self:this};else return i==null||i.attemptAutoclose("generate-unused-internal-calls",this.id),{added:[],updated:[],removed:[],affected:[],self:this};return i==null||i.attemptAutoclose("generate-unused-internal-calls",this.id),{added:C(r),updated:C(a),removed:C(c),affected:C(e),self:this}}getDataType(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"get-data-type"))){var a;const r=((a=this.declaration)==null?void 0:a.getDataType(i))||null;return i==null||i.attemptAutoclose("get-data-type",this.id),r}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)}};R(Di,"repository",{APICreate:async(i,...r)=>i,APIUpdate:async(i,...r)=>i,APIDelete:async(i,...r)=>i,APIClone:async(i,...r)=>{},APILoad:async(i,...r)=>null,APILoadVersion:async(i,r,...a)=>null}),R(Di,"type",d.VariableInstance),R(Di,"USER_MANAGED_PARENT_TYPES",[...Dr,d.Project]),R(Di,"PARENT_TYPES",[...Di.USER_MANAGED_PARENT_TYPES]),R(Di,"MUTABLE_BASE_PROPERTIES",["catchesError"]),R(Di,"INMUTABLE_BASE_PROPERTIES",["id","type","version","createdAt","author","previousVersion"]),R(Di,"BASE_PROPERTIES",[...Di.MUTABLE_BASE_PROPERTIES,...Di.INMUTABLE_BASE_PROPERTIES]),R(Di,"MUTABLE_META_PROPERTIES",[...Di.MUTABLE_BASE_PROPERTIES,"x","y"]),R(Di,"INMUTABLE_META_PROPERTIES",[...Di.INMUTABLE_BASE_PROPERTIES]),R(Di,"META_PROPERTIES",[...Di.MUTABLE_META_PROPERTIES,...Di.INMUTABLE_META_PROPERTIES]),R(Di,"MUTABLE_UPSTREAM_PROPERTIES",["calledBySuccess","calledByError","calledByEntry","readsValue"]),R(Di,"INMUTABLE_UPSTREAM_PROPERTIES",["declaration","parent"]),R(Di,"UPSTREAM_PROPERTIES",[...Di.MUTABLE_UPSTREAM_PROPERTIES,...Di.INMUTABLE_UPSTREAM_PROPERTIES]),R(Di,"MUTABLE_DOWNSTREAM_PROPERTIES",["writesValues","inputs","outputs","successCalls","errorCalls","internalCalls"]),R(Di,"INMUTABLE_DOWNSTREAM_PROPERTIES",["defaultValue"]),R(Di,"DOWNSTREAM_PROPERTIES",[...Di.MUTABLE_DOWNSTREAM_PROPERTIES,...Di.INMUTABLE_DOWNSTREAM_PROPERTIES]),R(Di,"PROPERTIES",[...Di.META_PROPERTIES,...Di.UPSTREAM_PROPERTIES,...Di.DOWNSTREAM_PROPERTIES]);let xp=Di;async function kMe(s,p={}){var m;const i=z.YieldTracker.from(p),r=Aa(s),a=I$(s),c=ga(s),e=ld(s),f=[...r,...a,...c,...e],h=qt(s.errors,f);await i.tick();for(const E of s.inputs)await E.validateAsync({tracker:i});for(const E of s.outputs)await E.validateAsync({tracker:i});return await((m=s.error)==null?void 0:m.validateAsync({tracker:i})),h}function jMe(s){var a;s.inputs.forEach(c=>c.validate()),s.outputs.forEach(c=>c.validate()),(a=s.error)==null||a.validate();const p=Aa(s),i=I$(s),r=[...p,...i,...ga(s)];return qt(s.errors,r)}function I$(s){const p=[],i=wx(s.parent,null),r=i==null?void 0:i.entity;if(!r)p.push(It({id:`${s.id}--${Ce.InternalCallParentMissingDataType}`,code:Ce.InternalCallParentMissingDataType,severity:ve.Error,message:`Entity of type "${s.type}" with id "${s.id}", belongs to a variable whose data type entity doesn't contain its declaration method ('${d.FunctionDeclaration}' or '${d.ActionDescriptor}') its id "${s.declaration}".`,entity:s}).error);else if(![d.DefinitionEntity,d.BuiltInBaseEntity,d.PrimitiveEntity].includes(r.type))p.push(It({id:`${s.id}--${Ce.InternalCallParentDeclarationEntityInvalidType}`,code:Ce.InternalCallParentDeclarationEntityInvalidType,severity:ve.Error,message:`Entity of type "${s.type}" with id "${s.id}", belongs to a variable whose data type 'entity' is not a definition entity, built-in base entity or primitive entity.
|
|
63
63
|
This variable's data-type has an 'entity' field that references an entity with id '${r.id}' and of type '${r.type}'.`,entity:s}).error);else{const a=El(r),c=[];[d.DefinitionEntity].includes(r.type)&&c.push(...r.getAllInteractiveMethods());let e="";if(a?r.methods.length?e=`
|
|
64
64
|
All '${d.FunctionDeclaration}' entities attached as methods to the parent data-type 'entity' field, available to be called as 'internal-calls' in this variable are:
|
|
65
65
|
- ${r.methods.map(h=>h.id).join(`
|
|
@@ -79,7 +79,7 @@ The 'variable-declaration' must be called before any internal call that referenc
|
|
|
79
79
|
The 'variable-declaration' must be called in a different branch that executes before any internal call that references it can be called.`,entity:s}).error)}}}return p}const X1i=Object.freeze(Object.defineProperty({__proto__:null,validate:jMe,validateAsync:kMe,validateCallAfterDeclaration:ld,validateParentRelation:I$},Symbol.toStringTag,{value:"Module"}));var UMe=(s=>(s.Parent="variable-declaration-parent",s.DataTypeEntity="variable-declaration-data-type-entity",s.DataType="variable-declaration-data-type",s))(UMe||{});const wi=class wi extends un{constructor(i,r){super(i);R(this,"initialData");R(this,"id");R(this,"name");R(this,"codeName",null);R(this,"description",null);R(this,"required",!1);R(this,"constant",!1);R(this,"x");R(this,"y");R(this,"type",d.VariableDeclaration);R(this,"catchesError",!1);R(this,"defaultValue",null);R(this,"dataType",null);R(this,"writesValues",[]);R(this,"readsValue",null);R(this,"inputs",[]);R(this,"outputs",[]);R(this,"error",null);R(this,"calledBySuccess",[]);R(this,"calledByError",[]);R(this,"calledByEntry",[]);R(this,"successCalls",[]);R(this,"errorCalls",[]);R(this,"internalCalls",[]);R(this,"parent");R(this,"errors",[]);R(this,"project");R(this,"detachedDependents",{});R(this,"knownVersions",null);R(this,"activeVersion",!1);R(this,"initialized",!1);R(this,"startedInitialization",!1);R(this,"suggestion",!1);R(this,"codeNativeValueValidation",null);this.initialData=i,this.project=r,this.id=i.id,this.name=i.name,this.description=i.description,this.constant=i.constant,this.codeName=i.codeName,this.required=i.required,this.x=i.x,this.y=i.y,this.catchesError=i.catchesError||!1}static new(i=null){return{id:x.UUID.uuid(),version:x.UUID.uuid(),createdAt:(i==null?void 0:i.timestamp)||B().toISOString(),author:(i==null?void 0:i.author)||x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.VariableDeclaration,catchesError:!1,name:"",codeName:null,description:"",dataType:null,internalCalls:[],successCalls:[],errorCalls:[],readsValue:null,writesValues:[],defaultValue:null,constant:!1,required:!1,inputs:[],outputs:[],parent:null,calledByEntry:[],calledBySuccess:[],calledByError:[],error:null,x:0,y:0}}static fromGenerationTarget(i,r,a){const c=a===void 0?r.addChangeSet(new S(r,x.sessionAuthor,B().toISOString(),r,!0,w.CreateFromGenerationTarget)):a;let e=r;if(i.parent){const _=te(i.parent);e=r.get(_)}const f=(i.calledByEntry||[]).map(_=>{const P=te(_);return r.get(P)}),h=(i.calledBySuccess||[]).map(_=>{const P=te(_);return r.get(P)}),m=(i.calledByError||[]).map(_=>{const P=te(_);return r.get(P)});let E=null;if(i.readsValue){const _=te(i.readsValue);E=r.get(_)}const b={id:i.id,version:x.UUID.uuid(),createdAt:(c==null?void 0:c.timestamp)||B().toISOString(),author:(c==null?void 0:c.author)||x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.VariableDeclaration,catchesError:i.catchesError||!1,name:i.name,defaultValue:null,codeName:i.codeName||null,description:i.description||null,constant:i.constant||!1,required:i.required||!1,calledByEntry:f.map(_=>_.toReference()),calledBySuccess:h.map(_=>_.toReference()),calledByError:m.map(_=>_.toReference()),dataType:null,errorCalls:[],successCalls:[],internalCalls:[],readsValue:E?E.toReference():null,inputs:[],outputs:[],writesValues:[],error:null,x:0,y:0,parent:e.toReference()},A=Ie(b,r);return A.hydrateAncestors(),A.setParent(e,c),A.addSelfToProject(c),c==null||c.add(A,W.Added),A.initChildren(c),c||A.captureVersion(),A}static validateGenerationTarget(i,r){let a=JSON.parse(JSON.stringify(i));const c=[],e=[],f=Bn(a,{parent:{list:!1,types:[...Dr,d.Project],optional:!0}},r);c.push(...f.explanations),a=f.modifiedData;const h=Px(a,r),m=Xr(a);return e.push(...f.errors,...h,...m.errors),c.push(...m.explanations),{errors:e,explanations:c,modifiedData:a}}get variableInstances(){const i=[];return Object.values(this.detachedDependents).forEach(r=>{r.field===g$.VarDeclaration&&!i.includes(r.entity)&&i.push(r.entity)}),i}validateGeneratedUpdate(i){const r=[],a=[];let c=JSON.parse(JSON.stringify(i));const e=dy(c,this);return c=e.modifiedData,r.push(...e.errors),i.parent&&r.push(new we({id:`${this.id}--${Te.InvalidParentUpdate}`,code:Te.InvalidParentUpdate,severity:ve.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.
|
|
80
80
|
If an entity is called by another, they must be in the same scope, which means they have the same parent.
|
|
81
81
|
Specifically for variables, their scope is also calculated from their value readers and value writers.
|
|
82
|
-
You shouldn't have to manually update a 'parent' property. The equivalent result is to change its value readers, value writers, or callers.`})),{errors:r,explanations:a,modifiedData:c}}subscribeDependents(i){return i.forEach(r=>{this.detachedDependents[r.entity.id]||(this.detachedDependents[r.entity.id]=r)}),this}unsubscribeDependents(i){return i.forEach(r=>{this.detachedDependents[r.entity.id]&&delete this.detachedDependents[r.entity.id]}),this}syncDependents(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"sync-dependents"))){const r=[],a=[],c=[],e=[];return Object.values(this.detachedDependents).forEach(f=>{const h=f.entity.afterAllChildrenInitialized(i);r.push(...h.updated),a.push(...h.added),c.push(...h.removed),e.push(...h.affected)}),i==null||i.attemptAutoclose("sync-dependents",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}onDetachedDependencyRemoved(i,r,a){const c=[],e=[],f=[],h=[];if(r==="variable-declaration-parent"){const{updated:m,added:E,removed:b}=this.remove({ignoreUpstream:!1},a);c.push(...m),e.push(...E),f.push(...b)}return{updated:C(c),added:C(e),removed:C(f),affected:C(h),self:this}}onDetachedDependencyRestored(i,r,a){const c=[],e=[],f=[],h=[];if(r==="variable-declaration-parent"){const{updated:m,added:E,removed:b}=this.restore({},a);c.push(...m),e.push(...E),f.push(...b)}return{updated:C(c),added:C(e),removed:C(f),affected:C(h),self:this}}unsubscribeFromDependencies(){var i,r,a,c,e,f;return(i=this.parent)==null||i.unsubscribeDependents([{entity:this,field:"variable-declaration-parent"}]),(c=(a=(r=this.dataType)==null?void 0:r.entity)==null?void 0:a.unsubscribeDependents)==null||c.call(a,[{entity:this,field:"variable-declaration-data-type-entity"}]),(f=(e=this.dataType)==null?void 0:e.unsubscribeDependents)==null||f.call(e,[{entity:this,field:"variable-declaration-data-type"}]),this}subscribeToDependencies(){var i,r,a,c,e,f;return(i=this.parent)==null||i.subscribeDependents([{entity:this,field:"variable-declaration-parent"}]),(c=(a=(r=this.dataType)==null?void 0:r.entity)==null?void 0:a.subscribeDependents)==null||c.call(a,[{entity:this,field:"variable-declaration-data-type-entity"}]),(f=(e=this.dataType)==null?void 0:e.subscribeDependents)==null||f.call(e,[{entity:this,field:"variable-declaration-data-type"}]),this}increaseVersion(i){var r;if(this.project.diggestedBuiltInBaseEntitiesIds.has(this.id))return this;if(i&&!B(i).isValid())throw new Error(`The shared timestamp '${i}' is not a valid ISO 8601 date string.`);if(i&&B(i).isSame(B(this.createdAt)))return this;if(!((r=this.knownVersions)!=null&&r.has(this.version))&&this.project.initialized)throw new Error(`The current ${this.type} ${this.id} version '${this.version}' is not captured in the 'knownVersions' map. Capture the current version before increasing it to avoid losing data.`);if(!this.activeVersion)throw new Error(`Only active versions can be increased. Entity with id '${this.id}' and version '${this.version}' is not active.`);return this.previousVersion=this.version,this.version=x.UUID.uuid(),this.createdAt=B(i).toISOString()||B().toISOString(),this}captureVersion(){var r;const i=((r=this.knownVersions)==null?void 0:r.get(this.version))||new wi(this,this.project);if(!this.activeVersion)throw new Error(`Only active versions can be captured. Entity of type ${this.type} with id '${this.id}' and version '${this.version}' is not active.`);if(this.version!==i.version)throw new Error(`Captured ${this.type} with id '${this.id}', version '${i.version}' does not match current entity version '${this.version}'.`);return this.knownVersions=this.knownVersions?this.knownVersions.set(this.version,i):new Map().set(this.version,i),this.apply(i),this}snapshot(){const i=new wi(this,this.project);return this.apply(i)}apply(i){const r=this.toMeta();return i.metaSync(r,null),i.inputs=[...this.inputs],i.outputs=[...this.outputs],i.internalCalls=[...this.internalCalls],i.successCalls=[...this.successCalls],i.errorCalls=[...this.errorCalls],i.writesValues=[...this.writesValues],i.readsValue=this.readsValue,i.defaultValue=this.defaultValue,i.dataType=this.dataType,i.calledBySuccess=[...this.calledBySuccess],i.calledByError=[...this.calledByError],i.calledByEntry=[...this.calledByEntry],i.error=this.error,i.parent=this.parent,i}recursiveCaptureUpstreamVersions(i){const r=[],a=[],c=[],e=[];if(this.parent){this.parent.increaseVersion(i);const f=this.parent.recursiveCaptureUpstreamVersions(i);r.push(this.parent,...f.updated),a.push(...f.added),c.push(...f.removed)}return{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}async restoreVersion(i,r){var m;const a=[],c=[],e=[],f=[];if(this.version===i&&(r!=null&&r.skipIfSameVersion))return{updated:C(a),added:C(c),removed:C(e),affected:C(f),self:this};if(!this.knownVersions){const E=new Map;for(const[b,A]of this.knownVersions||new Map){if(E.set(b,A),A.activeVersion=!1,A.knownVersions)for(const[_,P]of A.knownVersions)E.set(_,P);A.knownVersions=null}}let h=(m=this.knownVersions)==null?void 0:m.get(i);if(!h){const E=await this.APILoadVersion({},i);if(!E)throw new Error(`Version with id '${i}' for entity with id '${this.id}' not found.`);h=new wi(E,this.project)}return this.metaSync(h.toShallowJSON(),null),this.previousVersion=h.previousVersion,this.version=h.version,this.createdAt=h.createdAt,this.author=h.author,this.deleted=h.deleted,this.inputs=[...h.inputs],this.outputs=[...h.outputs],this.internalCalls=[...h.internalCalls],this.successCalls=[...h.successCalls],this.errorCalls=[...h.errorCalls],this.writesValues=[...h.writesValues],this.readsValue=h.readsValue,this.defaultValue=h.defaultValue,this.dataType=h.dataType,this.calledBySuccess=[...h.calledBySuccess],this.calledByError=[...h.calledByError],this.calledByEntry=[...h.calledByEntry],this.error=h.error,this.parent=h.parent,{updated:C(a),added:C(c),removed:C(e),affected:C(f),self:this}}updateWithShallowTransfer(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.UpdateWithShallowTransfer))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[updateWithShallowTransfer] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),this;if(this.metaSync(i,r),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 a=te(i.parent),c=this.project.get(a),e=this.parent;if(e&&e.id!==(c==null?void 0:c.id)&&this.removeFromParent(r),c)this.setParent(c,r),this.addSelfToProject(r);else throw r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),new Error(`${this.type} with id '${this.id}' has a 'parent' reference '${a}' that isn't found in the project`)}else throw r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),new Error(`${this.type} with id '${this.id}' must have a 'parent'`);if(i.readsValue){const a=te(i.readsValue),c=this.project.get(a),e=this.readsValue;e&&e.id!==(c==null?void 0:c.id)&&this.removeValueWriter(r),c&&this.setValueWriter(c,r)}else this.removeValueWriter(r);if(i.calledByEntry.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addEntryCaller(e,r),e.addCall(this,r))}),[...this.calledByEntry].forEach(a=>{i.calledByEntry.find(e=>te(e)===a.id)||(this.removeCaller(a,r),a.removeCall(this,r))}),i.calledBySuccess.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addSuccessCaller(e,r),e.addSuccessCall(this,r))}),[...this.calledBySuccess].forEach(a=>{i.calledBySuccess.find(e=>te(e)===a.id)||(this.removeCaller(a,r),a.removeCall(this,r))}),i.calledByError.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addErrorCaller(e,r),e.addErrorCall(this,r))}),[...this.calledByError].forEach(a=>{i.calledByError.find(e=>te(e)===a.id)||(this.removeCaller(a,r),a.removeCall(this,r))}),i.outputs.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addOutput(e,r),e.setParent(this,r))}),[...this.outputs].forEach(a=>{i.outputs.find(e=>te(e)===a.id)||(this.removeOutput(a,r),a.removeFromParent(r))}),i.inputs.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addInput(e,r),e.setParent(this,r))}),[...this.inputs].forEach(a=>{i.inputs.find(e=>te(e)===a.id)||(this.removeInput(a,r),a.removeFromParent(r))}),i.dataType){const a=te(i.dataType),c=this.project.get(a);c&&this.setDataType(c,r)}else this.setDataType(null,r);if(i.defaultValue){const a=te(i.defaultValue),c=this.project.get(a);c&&this.setDefaultValue(c,r)}else this.setDefaultValue(null,r);return i.writesValues.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addValueReader(e,r),e.setValueWriter(this,r))}),[...this.writesValues].forEach(a=>{i.writesValues.find(e=>te(e)===a.id)||(this.removeValueReader(a,r),a.setValueWriter(null,r))}),this.captureVersion(),this.subscribeToDependencies(),r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),this}updateWithGenerationTarget(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.UpdateWithGenerationTarget))){var a,c,e;if(!this.checkCanEdit(this,r))return z.Logger.warn(`[updateWithGenerationTarget] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),this;if(this.metaSync(i,r),i.parent){const f=te(i.parent),h=this.project.get(f),m=this.parent;if(m&&m.id!==(h==null?void 0:h.id)&&this.removeFromParent(r),h)this.setParent(h,r),this.addSelfToProject(r);else throw r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),new Error(`${this.type} with id '${this.id}' has a 'parent' reference '${f}' that isn't found in the project`)}if(i.readsValue){const f=te(i.readsValue),h=this.project.get(f);if(!h)throw new Error(`${this.type} with id '${this.id}' has a 'readsValue' reference '${f}' that isn't found in the project`);const m=this.readsValue;m&&m.id!==(h==null?void 0:h.id)&&this.removeValueWriter(r),h&&this.setValueWriter(h,r)}else i.readsValue===null&&this.removeValueWriter(r);return(a=i.calledByEntry)==null||a.forEach(f=>{const h=te(f),m=this.project.get(h);if(m)this.addEntryCaller(m,r),m.addCall(this,r);else throw new Error(`${this.type} with id '${this.id}' has a 'calledByEntry' reference '${h}' that isn't found in the project`)}),i.calledByEntry&&[...this.calledByEntry].forEach(f=>{var m;((m=i.calledByEntry)==null?void 0:m.find(E=>te(E)===f.id))||(this.removeCaller(f,r),f.removeCall(this,r))}),(c=i.calledBySuccess)==null||c.forEach(f=>{const h=te(f),m=this.project.get(h);if(m)this.addSuccessCaller(m,r),m.addSuccessCall(this,r);else throw new Error(`${this.type} with id '${this.id}' has a 'calledBySuccess' reference '${h}' that isn't found in the project`)}),i.calledBySuccess&&[...this.calledBySuccess].forEach(f=>{var m;((m=i.calledBySuccess)==null?void 0:m.find(E=>te(E)===f.id))||(this.removeCaller(f,r),f.removeCall(this,r))}),(e=i.calledByError)==null||e.forEach(f=>{const h=te(f),m=this.project.get(h);if(m)this.addErrorCaller(m,r),m.addErrorCall(this,r);else throw new Error(`${this.type} with id '${this.id}' has a 'calledByError' reference '${h}' that isn't found in the project`)}),i.calledByError&&[...this.calledByError].forEach(f=>{var m;((m=i.calledByError)==null?void 0:m.find(E=>te(E)===f.id))||(this.removeCaller(f,r),f.removeCall(this,r))}),this.captureVersion(),this.subscribeToDependencies(),r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),this}hydrateAncestors(){const i=[],r=[],a=[],c=[];if(this.initialData.parent){const e=te(this.initialData.parent),f=this.project.get(e);if(f)this.setParent(f,null),i.push(f);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.readsValue){const e=te(this.initialData.readsValue),f=this.project.get(e);f&&(this.setValueWriter(f,null),i.push(f))}return this.initialData.calledByEntry.forEach(e=>{const f=te(e),h=this.project.get(f);h&&this.addEntryCaller(h,null)}),this.initialData.calledBySuccess.forEach(e=>{const f=te(e),h=this.project.get(f);h&&this.addSuccessCaller(h,null)}),this.initialData.calledByError.forEach(e=>{const f=te(e),h=this.project.get(f);h&&this.addErrorCaller(h,null)}),{updated:C(i),added:C(r),removed:C(a),affected:C(c),self:this}}afterAllChildrenInitialized(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AfterAllChildrenInitialized))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[afterAllChildrenInitialized] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.AfterAllChildrenInitialized,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];if(this.initialized=!0,!this.dataType||this.dataType.inferred){const{added:he,updated:ge,removed:Re,affected:xe}=this.inferDataTypeAndSyncInstancesInputsAndOutputs(i);a.push(...he),r.push(...ge),c.push(...Re),e.push(...xe)}if(this.readsValue&&this.defaultValue&&(this.project.diggestedBuiltInBaseEntitiesIds.has(this.defaultValue.id)||this.defaultValue.remove({ignoreUpstream:!1},i),this.setDefaultValue(null,i)),this.defaultValue&&!this.readsValue&&!this.project.diggestedBuiltInBaseEntitiesIds.has(this.id)&&this.project.diggestedBuiltInBaseEntitiesIds.has(this.defaultValue.id)){const he=this.defaultValue.clone(i,this);this.setDefaultValue(he,i)}const{added:f,updated:h,removed:m,affected:E}=this.syncInputs(i);a.push(...f),r.push(...h),c.push(...m),e.push(...E);const{added:b,updated:A,removed:_,affected:P}=this.syncOutputs(i);a.push(...b),r.push(...A),c.push(..._),e.push(...P);const{added:V,updated:G,removed:M,affected:k}=this.generateUnusedInternalCalls(i);a.push(...V),r.push(...G),c.push(...M),e.push(...k);const{added:K,updated:ne,removed:X,affected:de}=this.removeUnrecognizedInputs(i);a.push(...K),r.push(...ne),c.push(...X),e.push(...de);const{added:ie,updated:le,removed:ye,affected:Y}=this.removeUnrecognizedOutputs(i);a.push(...ie),r.push(...le),c.push(...ye),e.push(...Y);const{added:ee,updated:pe,removed:se,affected:ue}=this.removeUnrecognizedInternalCalls(i);return a.push(...ee),r.push(...pe),c.push(...se),e.push(...ue),this.parent===this.project&&(this.catchesError&&(i==null||i.event({id:`${w.RemoveErrorCatching}-${this.id}--${Me.GlobalVariableDeclarationCannnotCatchError}`,action:w.RemoveErrorCatching,owner:this,errorReason:Me.GlobalVariableDeclarationCannnotCatchError,rootAction:!1}),this.metaSync({catchesError:!1},i)),this.errorCalls.length&&(i==null||i.event({id:`${w.RemoveAllErrorCalls}-${this.id}--${Me.GlobalVariableDeclarationCannotCallFromError}`,action:w.RemoveAllErrorCalls,owner:this,errorReason:Me.GlobalVariableDeclarationCannotCallFromError,rootAction:!1}),[...this.errorCalls].forEach(he=>{this.removeCall(he,i),he.removeCaller(this,i)})),this.calledBy.length&&(i==null||i.event({id:`${w.RemoveAllCallers}-${this.id}--${Me.GlobalVariableDeclarationCannotBeCalled}`,action:w.RemoveAllCallers,owner:this,errorReason:Me.GlobalVariableDeclarationCannotBeCalled,rootAction:!1}),[...this.calledBy].forEach(he=>{this.removeCaller(he,i),he.removeCall(this,i)}))),this.inputs.sort((he,ge)=>{var Re,xe;return(he.index??((Re=he.declaration)==null?void 0:Re.index))-(ge.index??((xe=ge.declaration)==null?void 0:xe.index))}),this.outputs.sort((he,ge)=>{var Re,xe;return(he.index??((Re=he.declaration)==null?void 0:Re.index))-(ge.index??((xe=ge.declaration)==null?void 0:xe.index))}),i==null||i.attemptAutoclose(w.AfterAllChildrenInitialized,this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}addSelfToProject(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"add-self-to-project"))){const r=[this],a=[],c=[],e=[];return this.parent===this.project&&this.project.addVariableDeclaration(this),this.readsValue&&(this.readsValue.addValueReader(this,i),r.push(this.readsValue)),this.writesValues.forEach(f=>{f.setValueWriter(this,i),r.push(f)}),this.successCalls.forEach(f=>{f.addSuccessCaller(this,i),r.push(f)}),this.errorCalls.forEach(f=>{f.addErrorCaller(this,i),r.push(f)}),this.calledBySuccess.forEach(f=>{f.addSuccessCall(this,i),r.push(f)}),this.calledByError.forEach(f=>{f.addErrorCall(this,i),r.push(f)}),this.calledByEntry.forEach(f=>{f.addCall(this,i),r.push(f)}),this.subscribe(),this.subscribeToDependencies(),i==null||i.attemptAutoclose("add-self-to-project",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}get calledBy(){return[...this.calledByEntry,...this.calledBySuccess,...this.calledByError]}get usedInputs(){return this.inputs.filter(i=>i.readsValue||i.defaultValue)}get unusedInputs(){return this.inputs.filter(i=>!i.readsValue&&!i.defaultValue)}get usedOutputs(){return this.outputs.filter(i=>i.writesValues.length)}get unusedOutputs(){return this.outputs.filter(i=>!i.writesValues.length)}get usedInternalCalls(){return this.internalCalls.filter(i=>!!i.calledBy.length)}get unusedInternalCalls(){return this.internalCalls.filter(i=>!i.calledBy.length)}removeInternalCall(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"remove-variable-declaration-internal-call"))){const a=this.internalCalls.findIndex(c=>c.id===i.id);return a>-1&&(this.internalCalls.splice(a,1),r&&(r==null||r.add(this,W.Affected))),r==null||r.attemptAutoclose("remove-variable-declaration-internal-call",this.id),this}removeInput(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveInput))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[removeInput] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.RemoveInput,this.id),this;const a=this.inputs.findIndex(c=>c.id===i.id);return a>-1&&(this.inputs.splice(a,1),r&&(r==null||r.add(this,W.Affected))),r==null||r.attemptAutoclose(w.RemoveInput,this.id),this}addInput(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddInput))){return this.checkCanEdit(this,r)?this.inputs.includes(i)?(r==null||r.attemptAutoclose(w.AddInput,this.id),this):(this.inputs.push(i),r==null||r.add(this,W.Affected),r==null||r.attemptAutoclose(w.AddInput,this.id),this):(z.Logger.warn(`[addInput] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.AddInput,this.id),this)}addOutput(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"add-output"))){return this.checkCanEdit(this,r)?this.outputs.includes(i)?(r==null||r.attemptAutoclose("add-output",this.id),this):(this.outputs.push(i),r==null||r.add(this,W.Affected),r==null||r.attemptAutoclose("add-output",this.id),this):(z.Logger.warn(`[addOutput] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("add-output",this.id),this)}removeOutput(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"remove-output"))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[removeOutput] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("remove-output",this.id),this;const a=this.outputs.findIndex(c=>c.id===i.id);return a>-1&&(this.outputs.splice(a,1),r&&(r==null||r.add(this,W.Affected))),r==null||r.attemptAutoclose("remove-output",this.id),this}addSuccessCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddSuccessCaller)),a=!1){var c;if(!this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddSuccessCaller,r))return this;if((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddSuccessCaller}-${this.id}--${Me.CannotSuccessCallItself}`,action:w.AddSuccessCaller,owner:this,errorReason:Me.CannotSuccessCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddSuccessCaller})),!this.calledBySuccess.find(e=>e.id===i.id)){const e=[];if(i.type===d.InternalCall?e.push(...ld(i)):i.type===d.VariableInstance&&e.push(...sd(i)),this.calledBySuccess.push(i),a&&bt(this,r),i.type===d.InternalCall){const f=ld(i);e.length<f.length&&(f.forEach(h=>{var m;r==null||r.event({id:`${w.AddSuccessCall}-${i.id}--cannot-be-${h.code}`,action:w.AddSuccessCall,owner:i,errorReason:`cannot-be-${h.code}`,rootAction:((m=r==null?void 0:r.self)==null?void 0:m.id)===i.id&&(r==null?void 0:r.actionName)===w.AddSuccessCall})}),this.calledBySuccess=this.calledBySuccess.filter(h=>h.id!==i.id))}else if(i.type===d.VariableInstance){const f=sd(i);e.length<f.length&&(f.forEach(h=>{var m;r==null||r.event({id:`${w.AddSuccessCall}-${i.id}--cannot-be-${h.code}`,action:w.AddSuccessCall,owner:i,errorReason:`cannot-be-${h.code}`,rootAction:((m=r==null?void 0:r.self)==null?void 0:m.id)===i.id&&(r==null?void 0:r.actionName)===w.AddSuccessCall})}),this.calledBySuccess=this.calledBySuccess.filter(h=>h.id!==i.id))}r==null||r.add(this,W.Updated)}return r==null||r.attemptAutoclose(w.AddSuccessCaller,this.id),this}addErrorCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddErrorCaller)),a=!1){var c;if(!this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddErrorCaller,r))return this;if((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddErrorCaller}-${this.id}--${Me.CannotErrorCallItself}`,action:w.AddErrorCaller,owner:this,errorReason:Me.CannotErrorCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddErrorCaller})),!this.calledByError.find(e=>e.id===i.id)){const e=[];if(i.type===d.InternalCall?e.push(...ld(i)):i.type===d.VariableInstance&&e.push(...sd(i)),this.calledByError.push(i),a&&bt(this,r),i.type===d.InternalCall){const f=ld(i);e.length<f.length&&(f.forEach(h=>{var m;r==null||r.event({id:`${w.AddSuccessCall}-${i.id}--cannot-be-${h.code}`,action:w.AddSuccessCall,owner:i,errorReason:`cannot-be-${h.code}`,rootAction:((m=r==null?void 0:r.self)==null?void 0:m.id)===i.id&&(r==null?void 0:r.actionName)===w.AddSuccessCall})}),this.calledByError=this.calledByError.filter(h=>h.id!==i.id))}else if(i.type===d.VariableInstance){const f=sd(i);e.length<f.length&&(f.forEach(h=>{var m;r==null||r.event({id:`${w.AddSuccessCall}-${i.id}--cannot-be-${h.code}`,action:w.AddSuccessCall,owner:i,errorReason:`cannot-be-${h.code}`,rootAction:((m=r==null?void 0:r.self)==null?void 0:m.id)===i.id&&(r==null?void 0:r.actionName)===w.AddSuccessCall})}),this.calledByError=this.calledByError.filter(h=>h.id!==i.id))}r==null||r.add(this,W.Updated)}return r==null||r.attemptAutoclose(w.AddErrorCaller,this.id),this}addEntryCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddEntryCaller)),a=!1){var c;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddEntryCaller,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddEntryCaller}-${this.id}--${Me.CannotEntryCallItself}`,action:w.AddEntryCaller,owner:this,errorReason:Me.CannotEntryCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddEntryCaller})),this.calledByEntry.find(e=>e.id===i.id)||(this.calledByEntry.push(i),r==null||r.add(this,W.Updated),a&&bt(this,r)),r==null||r.attemptAutoclose(w.AddEntryCaller,this.id),this):this}addErrorCall(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddErrorCall)),a=!1){var c;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddErrorCall,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddErrorCaller}-${this.id}--${Me.CannotErrorCallItself}`,action:w.AddErrorCaller,owner:this,errorReason:Me.CannotErrorCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddErrorCaller})),this.errorCalls.find(e=>e.id===i.id)||(this.errorCalls.push(i),this.catchesError&&this.metaSync({catchesError:!1},r),a&&bt(this,r),r==null||r.add(this,W.Affected)),r==null||r.attemptAutoclose(w.AddErrorCall,this.id),this):this}addSuccessCall(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddSuccessCall)),a=!1){var c;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddSuccessCall,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddSuccessCaller}-${this.id}`,action:w.AddSuccessCaller,owner:this,errorReason:Me.CannotSuccessCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddSuccessCaller})),this.successCalls.find(e=>e.id===i.id)||(this.successCalls.push(i),a&&bt(this,r),r==null||r.add(this,W.Affected)),r==null||r.attemptAutoclose(w.AddSuccessCall,this.id),this):this}removeCall(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveCall)),a=!1){if(!this.checkCanEditWithCounterpartAndSideEffects(this,i,w.RemoveCall,r))return this;const c=this.successCalls.findIndex(f=>f.id===i.id);c>-1&&(this.successCalls.splice(c,1),r==null||r.add(this,W.Affected));const e=this.errorCalls.findIndex(f=>f.id===i.id);return e>-1&&(this.errorCalls.splice(e,1),r==null||r.add(this,W.Affected)),a&&bt(this,r),r==null||r.attemptAutoclose(w.RemoveCall,this.id),this}removeCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"remove-caller")),a=!1){return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.RemoveCaller,r)?(this.calledBySuccess=this.calledBySuccess.filter(c=>c.id!==i.id?!0:(r==null||r.add(this,W.Updated),r==null||r.add(c,W.Affected),!1)),this.calledByError=this.calledByError.filter(c=>c.id!==i.id?!0:(r==null||r.add(this,W.Updated),r==null||r.add(c,W.Affected),!1)),this.calledByEntry=this.calledByEntry.filter(c=>c.id!==i.id?!0:(r==null||r.add(this,W.Updated),r==null||r.add(c,W.Affected),!1)),a&&bt(this,r),r==null||r.attemptAutoclose(w.RemoveCaller,this.id),this):this}addValueReader(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddValueReader))){var e,f,h,m;if(!this.checkCanEditFromScopeOwnerWithSideEffects(this,w.AddValueReader,r))return this;(i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.SetValueWriter}-${this.id}--${Me.CannotValueWriteItself}`,action:w.SetValueWriter,owner:this,errorReason:Me.CannotValueWriteItself,rootAction:((e=r==null?void 0:r.self)==null?void 0:e.id)===this.id&&(r==null?void 0:r.actionName)===w.SetValueWriter}));const a=i.type===d.InputMap&&i.parent.type===d.VariableInstance&&((f=i.declaration)==null?void 0:f.type)===d.Property&&((h=i.declaration)==null?void 0:h.constant),c=i.type===d.VariableInstance&&((m=i.declaration)==null?void 0:m.constant);return(a||c)&&i?(r==null||r.event({id:`${w.SetValueWriter}-${this.id}--${i.id}--${Me.ValueReadingOverridesConstantVariable}`,action:w.SetValueWriter,owner:i,counterpart:this,errorReason:Me.ValueReadingOverridesConstantVariable,rootAction:!1}),r==null||r.attemptAutoclose(w.AddValueReader,this.id),this):this.writesValues.includes(i)?(r==null||r.attemptAutoclose(w.AddValueReader,this.id),this):(this.writesValues.push(i),r==null||r.add(this,W.Affected),this)}removeValueReader(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveValueReader))){return this.checkCanEditFromScopeOwnerWithSideEffects(this,w.RemoveValueReader,r)?this.writesValues.includes(i)?(this.writesValues=this.writesValues.filter(a=>a.id!==i.id),r==null||r.add(this,W.Affected),this):(r==null||r.attemptAutoclose(w.RemoveValueReader,this.id),this):this}setError(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetErrorEntity))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[setError] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.SetErrorEntity,this.id),this;const a=this.error;return(a==null?void 0:a.id)!==(i==null?void 0:i.id)&&(a==null||a.remove({ignoreUpstream:!0},r),this.error=i,this.subscribeToDependencies(),r==null||r.add(this,W.Affected)),r==null||r.attemptAutoclose(w.SetErrorEntity,this.id),this}setParent(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetParent))){var a;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.SetParent,r)?(((a=this.parent)==null?void 0:a.id)!==(i==null?void 0:i.id)&&(this.parent=i,r&&(r==null||r.add(this,W.Updated))),r==null||r.attemptAutoclose(w.SetParent,this.id),this):this}initChildren(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"init-children"))){if(this.initialized||this.startedInitialization)return this;if(this.startedInitialization=!0,this.initialData.defaultValue&&(this.defaultValue=Ie(this.initialData.defaultValue,this.project),this.defaultValue.setParent(this,null),this.defaultValue.initChildren(i)),this.initialData.dataType){const r=Ie(this.initialData.dataType,this.project);this.setDataType(r,i),this.dataType.setParent(this,null),this.dataType.initChildren(i)}return JE.initWritesValues(this,this.parent),uy.initReadsValue(this),this.successCalls=this.initialData.successCalls.map(r=>{const a=Ie(r,this.project);if(a.addSuccessCaller(this,null),[d.BreakStatement,d.ContinueStatement].includes(a.type))a.setParent(this.parent.parent,null),a.initChildren(i);else if(a.type===d.ReturnStatement){const c=gn(this,this.project);a.setParent(c,null),a.initChildren(i)}else a.type!==d.InternalCall&&(a.setParent(this.parent,null),a.initChildren(i));return a}),this.errorCalls=this.initialData.errorCalls.map(r=>{const a=Ie(r,this.project);if(a.addErrorCaller(this,null),[d.BreakStatement,d.ContinueStatement].includes(a.type))a.setParent(this.parent.parent,null),a.initChildren(i);else if(a.type===d.ReturnStatement){const c=gn(this,this.project);a.setParent(c,null),a.initChildren(i)}else a.type!==d.InternalCall&&(a.setParent(this.parent,null),a.initChildren(i));return a}),this.initialData.inputs.forEach(r=>{const a=Ie(r,this.project);return a.setParent(this,null),a.initChildren(i),this.addInput(a,null),a}),this.initialData.outputs.forEach(r=>{const a=Ie(r,this.project);return a.setParent(this,null),a.initChildren(i),this.addOutput(a,null),a}),this.initialData.internalCalls.forEach(r=>{if(r.type===d.GenericReference){const c=this.project.findSubscribedInstanceFromReference(r);if(!c)return;c.setParent(this,null),c.initChildren(i),this.addInternalCall(c);return}const a=Ie(r,this.project);return a.setParent(this,null),a.initChildren(i),this.addInternalCall(a),a}),this.initialData.error&&(this.error=Ie(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}setValueWriter(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetValueWriter))){var a,c,e;return this.checkCanEditFromScopeOwnerWithSideEffects(this,w.SetValueWriter,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.SetValueWriter}-${this.id}--${Me.CannotValueWriteItself}`,action:w.SetValueWriter,owner:this,errorReason:Me.CannotValueWriteItself,rootAction:((a=r==null?void 0:r.self)==null?void 0:a.id)===this.id&&(r==null?void 0:r.actionName)===w.SetValueWriter})),((c=this.readsValue)==null?void 0:c.id)!==(i==null?void 0:i.id)&&(this.readsValue=i,this.readsValue&&((e=this.defaultValue)==null||e.remove({ignoreUpstream:!1},r)),r==null||r.add(this,W.Updated)),r==null||r.attemptAutoclose(w.SetValueWriter,this.id),this):this}removeValueWriter(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveValueWriter))){return this.readsValue&&!this.checkCanEditWithCounterpartAndSideEffects(this,this.readsValue,w.RemoveValueWriter,i)?this:(this.readsValue&&(this.readsValue=null,i==null||i.add(this,W.Updated)),i==null||i.attemptAutoclose(w.RemoveValueWriter,this.id),this)}subscribe(){var i;return this.activeVersion=!0,(i=this.knownVersions)==null||i.forEach(r=>{r.version!==this.version&&(r.activeVersion=!1)}),this.project.subscribeInstance(this),this}unsubscribe(){return this.project.unsubscribeInstance(this),this}getMasterInputWithValueWriterFromAllInstances(i){return C([...this.inputs,...this.variableInstances.flatMap(c=>c.inputs)]).find(c=>oe(c,this.project)===oe(i,this.project)&&!!c.readsValue)||i}inferDataTypeAndSyncInstancesInputsAndOutputs(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"infer-data-type-and-sync-instances-inputs-and-outputs"))){var k,K,ne,X,de,ie,le,ye;const r=[],a=[],c=[],e=[];let f=!1;if(!this.dataType){const Y=vr.new(i);Y.parent=this.toReference(),Y.inferred=!0;const ee=Ie(Y,this.project);ee.hydrateAncestors(),ee.addSelfToProject(i),this.setDataType(ee,i),ee.setParent(this,i),ee.initChildren(i),f=!0,i==null||i.add(ee,W.Added),ee.metaSync({inferred:!0,like:!0},i)}if(this.readsValue&&((k=this.dataType)!=null&&k.inferred)){const Y=this.readsValue.getDataType(null);Y&&((K=this.dataType)==null||K.merge(Y,i),this.dataType.metaSync({inferred:!0,like:!0},i))}const h=C([...this.inputs,...this.variableInstances.flatMap(Y=>Y.inputs)]),m=[];if(h.forEach(Y=>{m.find(pe=>oe(pe,this.project)===oe(Y,this.project))||m.push(Y)}),(!((ne=this.dataType)!=null&&ne.entity)||((de=(X=this.dataType)==null?void 0:X.entity)==null?void 0:de.type)===d.DefinitionEntity&&((ie=this.dataType)==null?void 0:ie.entity.parent)===this.dataType)&&((le=this.dataType)==null||le.inferFromInputs(m,i)),!this.dataType)return i==null||i.attemptAutoclose("infer-data-type-and-sync-instances-inputs-and-outputs",this.id),{updated:C(a),added:C(r),removed:C(c),affected:C(e),self:this};const{updated:E,added:b,removed:A,affected:_}=this.syncInputs(i);r.push(...b),a.push(...E),c.push(...A),e.push(..._);const{updated:P,added:V,removed:G,affected:M}=this.syncOutputs(i);return r.push(...V),a.push(...P),c.push(...G),e.push(...M),this.variableInstances.forEach(Y=>{const{updated:ee,added:pe,removed:se,affected:ue}=Y.syncInputs(i);r.push(...pe),a.push(...ee),c.push(...se),e.push(...ue);const{updated:he,added:ge,removed:Re,affected:xe}=Y.syncOutputs(i);r.push(...ge),a.push(...he),c.push(...Re),e.push(...xe)}),f&&(i||(ye=this.dataType)==null||ye.captureVersion()),i==null||i.attemptAutoclose("infer-data-type-and-sync-instances-inputs-and-outputs",this.id),{updated:C(a),added:C(r),removed:C(c),affected:C(e),self:this}}metaSync(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"meta-sync"))){const a=tn(this,i,r),c=en(this,a),e=this.toMeta();return this.name=a.name!==void 0?a.name:e.name,this.codeName=a.codeName!==void 0?a.codeName:e.codeName,this.description=a.description!==void 0?a.description:e.description,this.x=a.x||e.x,this.y=a.y||e.y,this.constant=a.constant!==void 0?a.constant:e.constant,this.required=a.required!==void 0?a.required:e.required,this.catchesError=a.catchesError!==void 0?a.catchesError:this.catchesError,super.baseMetaSync(a,this,r),a.deleted===!0&&!e.deleted?r==null||r.add(this,W.Removed):a.deleted===!1&&e.deleted?r==null||r.add(this,W.Added):c&&(r==null||r.add(this,W.Updated)),r==null||r.attemptAutoclose("meta-sync",this.id),this}async APILoad(i=Ke,...r){return await wi.repository.APILoad(this.id,...r),this}async APICreate(i=Ke,...r){return await wi.repository.APICreate(this.toShallowJSON(),...r),this}async APIUpdate(i=Ke,...r){return await wi.repository.APIUpdate(this.toShallowJSON(),...r),this}async APIDelete(i=Ke,...r){return await wi.repository.APIDelete(this.toShallowJSON(),...r),this}async APIClone(i=Ke,...r){return await wi.repository.APIClone(this.id,...r),this}async APILoadVersion(i=Ke,r,...a){return await wi.repository.APILoadVersion(this.id,r,...a)}removeFromParent(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveFromParent))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[removeFromParent] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveFromParent,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];return this.parent.type===d.Project?(this.parent.removeVariableDeclaration(this),e.push(this.parent)):this.parent.detachedChildren.includes(this)&&this.parent.unsubscribeDetachedChild(this),i==null||i.attemptAutoclose(w.RemoveFromParent,this.id),{added:C(c),updated:C(r),removed:C(a),affected:C(e),self:this}}remove({ignoreUpstream:i}={ignoreUpstream:!1},r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveEntity))){var h;if(!this.checkCanDelete(this,r))return z.Logger.warn(`[remove] User is not allowed to delete or edit this ${this.type} entity with id: ${this.id}`),r==null||r.event({id:`${w.RemoveEntity}-${this.id}--${Me.ActionOwnerEntityNonDeletable}`,action:w.RemoveEntity,owner:this,errorReason:Me.ActionOwnerEntityNonDeletable,rootAction:((h=r==null?void 0:r.self)==null?void 0:h.id)===this.id&&(r==null?void 0:r.actionName)===w.RemoveEntity}),r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const a=[],c=[],e=[],f=[];if(r!=null&&r.hasRemoved(this.id))return r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};if(c.push(this),this.unsubscribe(),this.unsubscribeFromDependencies(),this.project.subscribeDeletedInstance(this),this.metaSync({deleted:!0},r),Object.values(this.detachedDependents).forEach(m=>{const{updated:E,removed:b,added:A}=m.entity.onDetachedDependencyRemoved(this,m.field,r);a.push(...E),c.push(...b),e.push(...A)}),this.defaultValue){const{updated:m,removed:E}=this.defaultValue.remove({ignoreUpstream:!0},r);a.push(...m),c.push(...E)}if(this.readsValue&&(a.push(this.readsValue),this.readsValue.removeValueReader(this,r)),this.writesValues.forEach(m=>{a.push(m),m.setValueWriter(null,r)}),this.inputs.forEach(m=>{const{updated:E,removed:b}=m.remove({ignoreUpstream:!0},r);a.push(...E),c.push(...b)}),this.outputs.forEach(m=>{const{updated:E,removed:b}=m.remove({ignoreUpstream:!0},r);a.push(...E),c.push(...b)}),this.successCalls.forEach(m=>{a.push(m),m.removeCaller(this,r)}),this.errorCalls.forEach(m=>{a.push(m),m.removeCaller(this,r)}),this.internalCalls.forEach(m=>{const{updated:E,removed:b}=m.remove({ignoreUpstream:!0},r);a.push(...E),c.push(...b)}),this.dataType){const{updated:m,removed:E}=this.dataType.remove({ignoreUpstream:!0},r);a.push(...m),c.push(...E)}if(!i){const m=this.removeFromParent(r);e.push(...m.added),a.push(...m.updated),c.push(...m.removed),f.push(...m.affected),this.calledBy.forEach(E=>{a.push(E),E.removeCall(this,r)})}return r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:C(e),updated:C(a),removed:C(c),affected:C(f),self:this}}restore({}={},i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RestoreEntity))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[restore] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RestoreEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];if(i!=null&&i.hasAdded(this.id))return i==null||i.attemptAutoclose(w.RestoreEntity,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(f=>{const{updated:h,removed:m,added:E}=f.entity.onDetachedDependencyRestored(this,f.field,i);a.push(...h),c.push(...m),r.push(...E)}),this.defaultValue){const{updated:f}=this.defaultValue.restore({},i);a.push(...f)}if(this.readsValue&&(a.push(this.readsValue),this.readsValue.addValueReader(this,i)),this.writesValues.forEach(f=>{a.push(f),f.setValueWriter(this,i)}),this.inputs.forEach(f=>{const{updated:h}=f.restore({},i);a.push(...h)}),this.outputs.forEach(f=>{const{updated:h}=f.restore({},i);a.push(...h)}),this.successCalls.forEach(f=>{a.push(f),f.addSuccessCaller(this,i)}),this.errorCalls.forEach(f=>{a.push(f),f.addErrorCaller(this,i)}),this.internalCalls.forEach(f=>{const{updated:h}=f.restore({},i);a.push(...h)}),this.dataType){const{updated:f}=this.dataType.restore({},i);a.push(...f)}return this.calledBySuccess.forEach(f=>{a.push(f),f.addSuccessCall(this,i)}),this.calledByError.forEach(f=>{a.push(f),f.addErrorCall(this,i)}),this.calledByEntry.forEach(f=>{a.push(f),f.addCall(this,i)}),i==null||i.attemptAutoclose(w.RestoreEntity,this.id),{added:C(r),updated:C(a),removed:C(c),affected:C(e),self:this}}toFlat(i=new Set){var a,c,e;return i.has(this.id)?[]:(i.add(this.id),[this,...((a=this.defaultValue)==null?void 0:a.toFlat(i))||[],...((c=this.dataType)==null?void 0:c.toFlat(i))||[],...((e=this.readsValue)==null?void 0:e.toFlat(i))||[],...this.writesValues.flatMap(f=>f.toFlat(i)),...this.successCalls.flatMap(f=>f.toFlat(i)),...this.errorCalls.flatMap(f=>f.toFlat(i)),...this.inputs.flatMap(f=>f.toFlat(i)),...this.outputs.flatMap(f=>f.toFlat(i)),...this.internalCalls.flatMap(f=>f.toFlat(i)),...this.calledBy.flatMap(f=>f.toFlat(i)),...this.variableInstances.flatMap(f=>f.toFlat(i))])}toFlatIds(i=new Set){var a,c;return i.has(this.id)?[]:(i.add(this.id),[this.id,...((a=this.defaultValue)==null?void 0:a.toFlatIds(i))||[],...((c=this.dataType)==null?void 0:c.toFlatIds(i))||[],...this.writesValues.flatMap(e=>e.toFlatIds(i)),...this.successCalls.flatMap(e=>e.toFlatIds(i)),...this.errorCalls.flatMap(e=>e.toFlatIds(i)),...this.inputs.flatMap(e=>e.toFlatIds(i)),...this.outputs.flatMap(e=>e.toFlatIds(i)),...this.internalCalls.flatMap(e=>e.toFlatIds(i)),...this.variableInstances.flatMap(e=>e.toFlatIds(i))])}toMeta(){return{id:this.id,version:this.version,createdAt:this.createdAt,previousVersion:this.previousVersion,author:this.author,deleted:this.deleted,codeName:this.codeName,catchesError:this.catchesError,description:this.description,required:this.required,constant:this.constant,x:this.x,y:this.y,type:this.type,editable:this.editable,deletable:this.deletable,name:this.name}}toJSON(i=new Set){var r,a,c,e;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,editable:this.editable,deletable:this.deletable,name:this.name,codeName:this.codeName,description:this.description,catchesError:this.catchesError,constant:this.constant,required:this.required,defaultValue:((r=this.defaultValue)==null?void 0:r.toJSON(i))||null,dataType:((a=this.dataType)==null?void 0:a.toJSON(i))||null,readsValue:((c=this.readsValue)==null?void 0:c.toReference())||null,writesValues:this.writesValues.map(f=>f.toJSON(i)),inputs:this.inputs.map(f=>f.toJSON(i)),outputs:this.outputs.map(f=>f.toJSON(i)),successCalls:this.successCalls.map(f=>f.toJSON(i)),errorCalls:this.errorCalls.map(f=>f.toJSON(i)),internalCalls:this.internalCalls.map(f=>f.toJSON(i)),calledBySuccess:this.calledBySuccess.map(f=>f.toReference()),calledByError:this.calledByError.map(f=>f.toReference()),calledByEntry:this.calledByEntry.map(f=>f.toReference()),error:((e=this.error)==null?void 0:e.toJSON(i))||null,parent:this.parent.toReference(),x:this.x,y:this.y})}toJSONClone(i=at){var a,c,e,f,h,m,E,b,A;let r;return(a=i.seenEntityMaps)!=null&&a.has(this.id)?r=i.seenEntityMaps.get(this.id):(r=i.newId||dn(this,this.project,i.uuidStrategy),i.seenEntityMaps&&i.seenEntityMaps.set(this.id,r)),(c=i.seenEntities)!=null&&c.has(r)||(e=i.seenEntities)!=null&&e.has(this.id)?this.toReference({seenEntityMaps:i.seenEntityMaps}):((f=i.seenEntities)==null||f.add(r),(h=i.seenEntities)==null||h.add(this.id),{id:r,version:x.UUID.uuid(),createdAt:i.timestamp||B().toISOString(),previousVersion:null,author:this.author,deleted:this.deleted,codeName:this.codeName,constant:this.constant,required:this.required,type:this.type,editable:this.editable,deletable:this.deletable,name:this.name,description:this.description,catchesError:this.catchesError,defaultValue:((m=this.defaultValue)==null?void 0:m.toJSONClone({...i,newId:null}))||null,dataType:((E=this.dataType)==null?void 0:E.toJSONClone({...i,newId:null}))||null,readsValue:((b=this.readsValue)==null?void 0:b.toReference({seenEntityMaps:i.seenEntityMaps}))||null,writesValues:this.writesValues.map(_=>_.toJSONClone({...i,newId:null})),inputs:this.inputs.map(_=>_.toJSONClone({...i,newId:null})),outputs:this.outputs.map(_=>_.toJSONClone({...i,newId:null})),successCalls:this.successCalls.map(_=>_.toJSONClone({...i,newId:null})),errorCalls:this.errorCalls.map(_=>_.toJSONClone({...i,newId:null})),internalCalls:this.internalCalls.map(_=>this.calledBy.length||this.readsValue?_.toJSONClone({...i,newId:null}):_.toReference({seenEntityMaps:i.seenEntityMaps})),calledBySuccess:this.calledBySuccess.map(_=>_.toReference({seenEntityMaps:i.seenEntityMaps})),calledByError:this.calledByError.map(_=>_.toReference({seenEntityMaps:i.seenEntityMaps})),calledByEntry:this.calledByEntry.map(_=>_.toReference({seenEntityMaps:i.seenEntityMaps})),error:((A=this.error)==null?void 0:A.toJSONClone({...i,newId:null}))||null,parent:this.parent.toReference({seenEntityMaps:i.seenEntityMaps}),x:this.x,y:this.y})}toReference(i=at){var a;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r+"--"+x.UUID.uuid()+"--ref",type:d.GenericReference,entityId:r,version:this.version,entityType:this.type}}toShallowJSON(i=at){var a,c,e,f,h;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r,version:this.version,createdAt:this.createdAt,previousVersion:this.previousVersion,author:this.author,deleted:this.deleted,type:this.type,editable:this.editable,deletable:this.deletable,name:this.name,codeName:this.codeName,description:this.description,catchesError:this.catchesError,required:this.required,constant:this.constant,x:this.x,y:this.y,defaultValue:((c=this.defaultValue)==null?void 0:c.toReference(i))||null,dataType:((e=this.dataType)==null?void 0:e.toReference(i))||null,readsValue:((f=this.readsValue)==null?void 0:f.toReference(i))||null,writesValues:this.writesValues.map(m=>m.toReference(i)),inputs:this.inputs.map(m=>m.toReference(i)),outputs:this.outputs.map(m=>m.toReference(i)),successCalls:this.successCalls.map(m=>m.toReference(i)),errorCalls:this.errorCalls.map(m=>m.toReference(i)),calledBySuccess:this.calledBySuccess.map(m=>m.toReference(i)),calledByError:this.calledByError.map(m=>m.toReference(i)),calledByEntry:this.calledByEntry.map(m=>m.toReference(i)),internalCalls:this.internalCalls.map(m=>m.toReference(i)),error:((h=this.error)==null?void 0:h.toReference(i))||null,parent:this.parent.toReference(i)}}toFlatJSON(i=new Set){var a,c;return i.has(this.id)?[]:(i.add(this.id),[this.toShallowJSON(),...((a=this.defaultValue)==null?void 0:a.toFlatJSON(i))||[],...((c=this.dataType)==null?void 0:c.toFlatJSON(i))||[],...this.writesValues.flatMap(e=>e.toFlatJSON(i)),...this.successCalls.flatMap(e=>e.toFlatJSON(i)),...this.errorCalls.flatMap(e=>e.toFlatJSON(i)),...this.inputs.flatMap(e=>e.toFlatJSON(i)),...this.outputs.flatMap(e=>e.toFlatJSON(i)),...this.internalCalls.flatMap(e=>e.toFlatJSON(i))])}toGenerationTarget(i=at){var c,e;const r=this.parent.type===d.Project?void 0:(c=i.seenEntityMaps)!=null&&c.has(this.parent.id)?i.seenEntityMaps.get(this.parent.id):this.parent.id;let a=this.id;return(e=i.seenEntityMaps)!=null&&e.has(this.id)&&(a=i.seenEntityMaps.get(this.id)),{id:a,type:this.type,name:this.name,description:this.description,calledByEntry:this.calledByEntry.map(f=>f.id),calledBySuccess:this.calledBySuccess.map(f=>f.id),calledByError:this.calledByError.map(f=>f.id),parent:r}}toFlatGenerationTarget(i=new Set){var a,c;return i.has(this.id)?[]:(i.add(this.id),[this.toGenerationTarget(),...((a=this.defaultValue)==null?void 0:a.toFlatGenerationTarget(i))||[],...((c=this.dataType)==null?void 0:c.toFlatGenerationTarget(i))||[],...this.writesValues.flatMap(e=>e.toFlatGenerationTarget(i)),...this.successCalls.flatMap(e=>e.toFlatGenerationTarget(i)),...this.errorCalls.flatMap(e=>e.toFlatGenerationTarget(i)),...this.inputs.flatMap(e=>e.toFlatGenerationTarget(i)),...this.outputs.flatMap(e=>e.toFlatGenerationTarget(i)),...this.internalCalls.flatMap(e=>e.toFlatGenerationTarget(i))])}clearErrors(){var i,r;return this.errors=[],this.inputs.forEach(a=>a.clearErrors()),this.outputs.forEach(a=>a.clearErrors()),this.successCalls.forEach(a=>a.clearErrors()),this.errorCalls.forEach(a=>a.clearErrors()),this.internalCalls.forEach(a=>a.clearErrors()),(i=this.dataType)==null||i.clearErrors(),(r=this.defaultValue)==null||r.clearErrors(),this}validate(){return this.errors=LMe(this),{success:!0}}async validateAsync(i={}){const r=z.YieldTracker.from(i);return this.errors=await $Me(this,{tracker:r}),{success:!0}}getErrors(){var r,a;return[...this.errors,...((r=this.defaultValue)==null?void 0:r.getErrors())||[],...((a=this.dataType)==null?void 0:a.getErrors())||[],...this.inputs.flatMap(c=>c.getErrors()),...this.internalCalls.flatMap(c=>c.getErrors()),...this.outputs.flatMap(c=>c.getErrors())]}async getErrorsAsync(i={}){const r=z.YieldTracker.from(i),a=[...this.errors];if(await r.tick(),this.defaultValue){const c=await this.defaultValue.getErrorsAsync({tracker:r});a.push(...c)}if(this.dataType){const c=await this.dataType.getErrorsAsync({tracker:r});a.push(...c)}for(const c of this.inputs){const e=await c.getErrorsAsync({tracker:r});a.push(...e)}for(const c of this.internalCalls){const e=await c.getErrorsAsync({tracker:r});a.push(...e)}for(const c of this.outputs){const e=await c.getErrorsAsync({tracker:r});a.push(...e)}return a}getShallowErrors(){return this.errors}getDefaultValue(){return this.defaultValue||null}setDefaultValue(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"set-default-value"))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[setDefaultValue] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("set-default-value",this.id),this;const a=this.defaultValue;if((a==null?void 0:a.id)!==(i==null?void 0:i.id)){if(a==null||a.remove({ignoreUpstream:!0},r),this.defaultValue=i,this.defaultValue){const c=this.readsValue;this.removeValueWriter(r),c==null||c.removeValueReader(this,r)}r==null||r.add(this,W.Affected)}return r==null||r.attemptAutoclose("set-default-value",this.id),this}clone(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.CloneEntity)),r=null,a=null,c=!0){var V,G,M,k,K;const e=Fr(r,this),f=this.toJSON(),h=a||x.UUID.uuid();f.inputs=[],f.id=h,f.version=x.UUID.uuid(),f.createdAt=(i==null?void 0:i.timestamp)||B().toISOString(),f.author=(i==null?void 0:i.author)||"1",f.previousVersion=null,f.deleted=!1,f.deletable=!0,f.editable=!0;const m=lr(f,e);r?m.setParent(r,i):m.setParent(this.parent,null),c&&m.subscribe(),m.initChildren(i),i==null||i.add(m,W.Added);const E=(V=this.dataType)==null?void 0:V.clone(i,m,x.UUID.uuid(),c);m.setDataType(E||null,i);const b=(G=this.defaultValue)==null?void 0:G.clone(i,m,x.UUID.uuid(),c);m.setDefaultValue(b||null,i);const A=(M=this.inputs)==null?void 0:M.map(ne=>ne.clone(i,m,x.UUID.uuid(),c));m.inputs=A;const _=(k=this.outputs)==null?void 0:k.map(ne=>ne.clone(i,m,x.UUID.uuid(),c));m.outputs=_;const P=(K=this.internalCalls)==null?void 0:K.map(ne=>ne.clone(i,m,x.UUID.uuid(),c));return m.internalCalls=P,i||m.captureVersion(),i==null||i.attemptAutoclose(w.CloneEntity,this.id),m}addInternalCall(i){return this.internalCalls.find(r=>r===i)||this.internalCalls.push(i),this}createInstance(i=this.project,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"create-instance")),a={}){const c={id:a.id||x.UUID.uuid(),version:a.version||x.UUID.uuid(),createdAt:(r==null?void 0:r.timestamp)||B().toISOString(),author:x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.VariableInstance,parent:i.toReference(),catchesError:a.catchesError||!1,defaultValue:a.defaultValue||null,successCalls:a.successCalls||[],errorCalls:a.errorCalls||[],inputs:a.inputs||[],outputs:a.outputs||[],writesValues:a.writesValues||[],internalCalls:a.internalCalls||[],readsValue:a.readsValue||null,calledByEntry:a.calledByEntry||[],calledBySuccess:a.calledBySuccess||[],calledByError:a.calledByError||[],error:a.error||null,declaration:this.toReference(),x:0,y:0},e=Ie(c,this.project);return e.hydrateAncestors(),e.setParent(i,r),r==null||r.add(e,W.Added),e.addSelfToProject(r),e.initChildren(r),r||e.captureVersion(),i===this.project&&this.project.addVariableInstance(e),r==null||r.attemptAutoclose("create-instance",this.id),e}removeUnrecognizedInputs(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveUnrecognizedInputs))){var h;if(!this.checkCanEdit(this,i))return z.Logger.warn(`[removeUnrecognizedInputs] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveUnrecognizedInputs,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];if(this.dataType&&!this.dataType.isObject())[...this.inputs].forEach(m=>{const E=m.remove({ignoreUpstream:!1},i);c.push(...E.removed),r.push(...E.updated)});else if(this.dataType&&this.dataType.hasStrictObjectStructure()){const m=[...((h=this.dataType)==null?void 0:h.entity).properties];[...this.inputs].forEach(E=>{if(!E.declaration){const A=E.remove({ignoreUpstream:!1},i);c.push(...A.removed),r.push(...A.updated);return}if(!m.find(A=>E.declaration===A)){const A=E.remove({ignoreUpstream:!1},i);c.push(...A.removed),r.push(...A.updated)}if(!_g(E)){const A=E.remove({ignoreUpstream:!1},i);c.push(...A.removed),r.push(...A.updated)}})}return this.inputs.filter((m,E)=>{const b=this.inputs.findIndex(_=>_.declaration===m.declaration&&_!==m);if(b===-1)return!1;const A=this.inputs[b];return B(A==null?void 0:A.createdAt).isSame(B(m.createdAt))?E>b:!!B(A==null?void 0:A.createdAt).isAfter(m.createdAt)}).forEach(m=>{const E=m.remove({ignoreUpstream:!1},i);c.push(...E.removed),r.push(...E.updated)}),i==null||i.attemptAutoclose(w.RemoveUnrecognizedInputs,this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}removeUnrecognizedOutputs(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"remove-unrecognized-variable-declaration-outputs"))){var h;if(!this.checkCanEdit(this,i))return z.Logger.warn(`[removeUnrecognizedOutputs] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveUnrecognizedOutputs,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];if(this.dataType&&!this.dataType.isObject())[...this.outputs].forEach(m=>{const E=m.remove({ignoreUpstream:!1},i);c.push(...E.removed),r.push(...E.updated)});else if(this.dataType&&this.dataType.hasStrictObjectStructure()){const m=[...((h=this.dataType)==null?void 0:h.entity).properties];[...this.outputs].forEach(E=>{if(!E.declaration){const A=E.remove({ignoreUpstream:!1},i);c.push(...A.removed),r.push(...A.updated);return}if(!m.find(A=>{var _;return((_=E.declaration)==null?void 0:_.id)===(A==null?void 0:A.id)})){const A=E.remove({ignoreUpstream:!1},i);c.push(...A.removed),r.push(...A.updated);return}if(!_g(E)){const A=E.remove({ignoreUpstream:!1},i);c.push(...A.removed),r.push(...A.updated)}})}return this.outputs.filter((m,E)=>{const b=this.outputs.findIndex(_=>_.declaration===m.declaration&&_!==m);if(b===-1)return!1;const A=this.outputs[b];return B(A==null?void 0:A.createdAt).isSame(B(m.createdAt))?E>b:!!B(A==null?void 0:A.createdAt).isAfter(m.createdAt)}).forEach(m=>{const E=m.remove({ignoreUpstream:!1},i);c.push(...E.removed),r.push(...E.updated)}),i==null||i.attemptAutoclose("remove-unrecognized-variable-declaration-outputs",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}removeUnrecognizedInternalCalls(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"remove-unrecognized-variable-declaration-internal-calls"))){const r=[],a=[],c=[],e=[];if(!this.dataType||!this.dataType.entity||![d.DefinitionEntity,d.PrimitiveEntity,d.BuiltInBaseEntity].includes(this.dataType.entity.type))[...this.internalCalls].forEach(h=>{const m=h.remove({ignoreUpstream:!1},i);c.push(...m.removed),r.push(...m.updated)});else if(this.dataType&&this.dataType.entity&&[d.DefinitionEntity,d.PrimitiveEntity,d.BuiltInBaseEntity].includes(this.dataType.entity.type)){const h=[...this.dataType.entity.getAllInteractiveMethods()],m=[...h].filter(E=>!h.some(b=>{var A,_;return b.id!==E.id&&(((A=b.implements)==null?void 0:A.id)===E.id||((_=b.extends)==null?void 0:_.id)===E.id)})&&!E.deleted);[...this.internalCalls].forEach(E=>{if(!E.declaration){const A=E.remove({ignoreUpstream:!1},i);c.push(...A.removed),r.push(...A.updated);return}if(!m.find(A=>E.declaration===A)){const A=E.remove({ignoreUpstream:!1},i);c.push(...A.removed),r.push(...A.updated);return}})}return this.internalCalls.filter((h,m)=>{const E=this.internalCalls.findIndex(A=>A.declaration===h.declaration&&A!==h);if(E===-1)return!1;const b=this.internalCalls[E];return B(b==null?void 0:b.createdAt).isSame(B(h.createdAt))?m>E:!!B(b==null?void 0:b.createdAt).isAfter(h.createdAt)}).forEach(h=>{const m=h.remove({ignoreUpstream:!1},i);c.push(...m.removed),r.push(...m.updated)}),i==null||i.attemptAutoclose("remove-unrecognized-variable-declaration-internal-calls",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}syncInputs(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"sync-variable-declaration-inputs"))){const r=[],a=[],c=[],e=[];if(this.dataType)if(this.dataType.entity){if(this.dataType.isObject()){const f=[...this.dataType.entity.properties];f.filter(E=>Dh(E)?!this.inputs.find(b=>{var A;return((A=b.declaration)==null?void 0:A.id)===E.id}):!1).forEach(E=>{const b={dataType:null,id:x.UUID.uuid(),version:x.UUID.uuid(),createdAt:(i==null?void 0:i.timestamp)||B().toISOString(),author:x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.InputMap,parentRelationType:null,parent:this.toReference(),name:null,description:null,codeName:null,declaration:E.toJSON(),defaultValue:null,index:E.index,readsValue:null},A=Ie(b,this.project);return A.hydrateAncestors(),i==null||i.add(A,W.Added),A.setParent(this,i),A.initChildren(i),i||A.captureVersion(),this.addInput(A,i),A}),this.inputs.filter(E=>!E.declaration).forEach(E=>{const b=f.find(A=>oe(A,this.project)===oe(E,this.project));b&&E.setDeclaration(b,i)})}}else return i==null||i.attemptAutoclose("sync-variable-declaration-inputs",this.id),{added:[],updated:[],removed:[],affected:[],self:this};else return i==null||i.attemptAutoclose("sync-variable-declaration-inputs",this.id),{added:[],updated:[],removed:[],affected:[],self:this};return this.inputs.forEach(f=>{const{updated:h,added:m,removed:E}=f.afterAllChildrenInitialized(i);a.push(...h),r.push(...m),c.push(...E)}),this.inputs.sort((f,h)=>f.index-h.index),i==null||i.attemptAutoclose("sync-variable-declaration-inputs",this.id),{added:C(r),updated:C(a),removed:C(c),affected:C(e),self:this}}syncOutputs(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SyncOutputs))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[syncOutputs] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.SyncOutputs,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];if(this.dataType)if(this.dataType.entity){if(this.dataType.isObject()){const f=[...this.dataType.entity.properties];f.filter(E=>Dh(E)?!this.outputs.find(b=>{var A;return((A=b.declaration)==null?void 0:A.id)===(E==null?void 0:E.id)}):!1).map(E=>{const b={dataType:null,id:x.UUID.uuid(),version:x.UUID.uuid(),createdAt:(i==null?void 0:i.timestamp)||B().toISOString(),author:x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.OutputMap,parent:this.toReference(),declaration:E==null?void 0:E.toJSON(),index:E.index,writesValues:[]},A=Ie(b,this.project);return A.hydrateAncestors(),i==null||i.add(A,W.Added),A.setParent(this,i),A.initChildren(i),i||A.captureVersion(),this.addOutput(A,i),A}),this.outputs.filter(E=>!E.declaration).forEach(E=>{const b=f.find(A=>oe(A,this.project)===oe(E,this.project));b&&E.setDeclaration(b,i)})}}else return i==null||i.attemptAutoclose(w.SyncOutputs,this.id),{added:[],updated:[],removed:[],affected:[],self:this};else return i==null||i.attemptAutoclose(w.SyncOutputs,this.id),{added:[],updated:[],removed:[],affected:[],self:this};return this.outputs.forEach(f=>{const{updated:h,added:m,removed:E}=f.afterAllChildrenInitialized(i);a.push(...h),r.push(...m),c.push(...E)}),this.outputs.sort((f,h)=>f.index-h.index),i==null||i.attemptAutoclose(w.SyncOutputs,this.id),{added:C(r),updated:C(a),removed:C(c),affected:C(e),self:this}}generateUnusedInternalCalls(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"generate-unused-internal-calls"))){const r=[],a=[],c=[],e=[];if(this.dataType)if(this.dataType.entity){if([d.DefinitionEntity,d.PrimitiveEntity,d.BuiltInBaseEntity].includes(this.dataType.entity.type)){const f=[...this.dataType.entity.getAllInteractiveMethods()];[...f].filter(E=>!f.some(b=>{var A,_;return b.id!==E.id&&(((A=b.implements)==null?void 0:A.id)===E.id||((_=b.extends)==null?void 0:_.id)===E.id)})&&!E.deleted).filter(E=>!this.internalCalls.find(A=>{var P,V,G,M,k;return(((P=A.declaration)==null?void 0:P.id)||((G=(V=A.initialData)==null?void 0:V.declaration)==null?void 0:G.entityId)||((k=(M=A.initialData)==null?void 0:M.declaration)==null?void 0:k.id))===E.id})).forEach(E=>{var A;const b=this.internalCalls.find(_=>{const P=Nf(_.declaration),V=Nf(E);return P.id===V.id});if(b&&((A=b.declaration)==null?void 0:A.id)!==E.id)b.setDeclaration(E);else{const _=E.createInternalCall(i,this);i==null||i.add(_,W.Added),this.addInternalCall(_)}})}}else return i==null||i.attemptAutoclose("generate-unused-internal-calls",this.id),{added:[],updated:[],removed:[],affected:[],self:this};else return i==null||i.attemptAutoclose("generate-unused-internal-calls",this.id),{added:[],updated:[],removed:[],affected:[],self:this};return i==null||i.attemptAutoclose("generate-unused-internal-calls",this.id),{added:C(r),updated:C(a),removed:C(c),affected:C(e),self:this}}setDataType(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetDataType))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[setDataType] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.SetDataType,this.id),this;const a=this.dataType;return(a==null?void 0:a.id)!==(i==null?void 0:i.id)&&(a==null||a.remove({ignoreUpstream:!0},r),this.dataType=i,this.subscribeToDependencies(),r==null||r.add(this,W.Affected)),r==null||r.attemptAutoclose(w.SetDataType,this.id),this}removeDataType(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveDataType))){return this.checkCanEdit(this,i)?(this.dataType&&(this.dataType.remove({ignoreUpstream:!0},i),i==null||i.add(this,W.Affected),this.dataType=null),i==null||i.attemptAutoclose(w.RemoveDataType,this.id),this):(z.Logger.warn(`[removeDataType] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveDataType,this.id),this)}getDataType(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"get-data-type"))){return(!this.dataType||this.dataType.inferred)&&this.project.initialized&&this.inferDataTypeAndSyncInstancesInputsAndOutputs(i),i==null||i.attemptAutoclose("get-data-type",this.id),this.dataType||null}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)}};R(wi,"repository",{APICreate:async(i,...r)=>i,APIUpdate:async(i,...r)=>i,APIDelete:async(i,...r)=>i,APIClone:async(i,...r)=>{},APILoad:async(i,...r)=>null,APILoadVersion:async(i,r,...a)=>null}),R(wi,"type",d.VariableDeclaration),R(wi,"USER_MANAGED_PARENT_TYPES",[...Dr,d.Project]),R(wi,"PARENT_TYPES",[...wi.USER_MANAGED_PARENT_TYPES]),R(wi,"MUTABLE_BASE_PROPERTIES",["name","codeName","description","constant","required","catchesError"]),R(wi,"INMUTABLE_BASE_PROPERTIES",["id","type","version","createdAt","author","previousVersion"]),R(wi,"BASE_PROPERTIES",[...wi.MUTABLE_BASE_PROPERTIES,...wi.INMUTABLE_BASE_PROPERTIES]),R(wi,"MUTABLE_META_PROPERTIES",[...wi.MUTABLE_BASE_PROPERTIES,"x","y"]),R(wi,"INMUTABLE_META_PROPERTIES",[...wi.INMUTABLE_BASE_PROPERTIES]),R(wi,"META_PROPERTIES",[...wi.MUTABLE_META_PROPERTIES,...wi.INMUTABLE_META_PROPERTIES]),R(wi,"MUTABLE_UPSTREAM_PROPERTIES",["calledBySuccess","calledByError","calledByEntry","readsValue"]),R(wi,"INMUTABLE_UPSTREAM_PROPERTIES",["parent"]),R(wi,"UPSTREAM_PROPERTIES",[...wi.MUTABLE_UPSTREAM_PROPERTIES,...wi.INMUTABLE_UPSTREAM_PROPERTIES]),R(wi,"MUTABLE_DOWNSTREAM_PROPERTIES",["writesValues","inputs","outputs","successCalls","errorCalls","internalCalls"]),R(wi,"INMUTABLE_DOWNSTREAM_PROPERTIES",["dataType","defaultValue"]),R(wi,"DOWNSTREAM_PROPERTIES",[...wi.MUTABLE_DOWNSTREAM_PROPERTIES,...wi.INMUTABLE_DOWNSTREAM_PROPERTIES]),R(wi,"PROPERTIES",[...wi.META_PROPERTIES,...wi.UPSTREAM_PROPERTIES,...wi.DOWNSTREAM_PROPERTIES]);let $p=wi;async function FMe(s,p={}){const i=z.YieldTracker.from(p),r=[...Rn(s),...R$(s),...Xa(s)],a=qt(s.errors,r);return await i.tick(),a}function KMe(s){const p=[...Rn(s),...R$(s),...Xa(s)];return qt(s.errors,p)}function R$(s){var r,a;const p=[],i=s.parent.type===d.VariableInstance&&((r=s.declaration)==null?void 0:r.type)===d.Property&&((a=s.declaration)==null?void 0:a.constant);if(i&&s.readsValue){const c=It({id:`${s.id}--${be.ValueReadingOverridesConstantProperty}`,message:`The '${s.type}' entity "${oe(s,s.project)}" with id "${s.id}" represents a constant property whose value cannot be overriden, but reads a value.`,severity:ve.Error,code:be.ValueReadingOverridesConstantProperty,entity:s});p.push(c.error)}if(i&&s.defaultValue){const c=It({id:`${s.id}--${be.DefaultValueOverridesConstantProperty}`,message:`The '${s.type}' entity "${oe(s,s.project)}" with id "${s.id}" represents a constant property whose value cannot be overridden, but has a 'defaultValue'.`,severity:ve.Error,code:be.DefaultValueOverridesConstantProperty,entity:s});p.push(c.error)}return p}const eDi=Object.freeze(Object.defineProperty({__proto__:null,validate:KMe,validateAsync:FMe,validateConstantValueOverride:R$},Symbol.toStringTag,{value:"Module"}));function Df(s){if(!s)throw new Error("[printDefEntityBuiltInFunctionality] 'entity' is required");if(s.type!==d.DefinitionEntity)throw new Error(`[printDefEntityBuiltInFunctionality] Entity of type "${s.type}" is not a definition entity.`);const p=NL(s).filter(r=>r.type===d.BuiltInBaseEntity);let i="No built-in functionality attached";return p.length&&(i=`System functionality: ${D_e(p.map(r=>r.name))}`),i}function tDi(s,p){var i;if(s.type===d.LiteralValue){let r=(i=s.value)==null?void 0:i.toString();try{r=JSON.stringify(s.value,null,2)}catch{}return`${s.type}: ${s.id} (${Bt(s,p)}) = ${r}`}return`${s.type}: ${s.id} (${Bt(s,p)})`}function Gg(s,p={nested:!1,omitTopLevelType:!1,firstLabel:"name",omitIdsFor:[],omitTypesFor:[],metadataIndent:1,ownMetadataIndent:1,omitFields:[],onlyFields:[]}){var E,b,A,_,P,V,G;const i={nested:p.nested??!1,omitTopLevelType:p.omitTopLevelType??!1,firstLabel:p.firstLabel??"name",omitIdsFor:p.omitIdsFor??[],omitTypesFor:p.omitTypesFor??[],metadataIndent:p.metadataIndent??1,omitFields:p.omitFields??[],onlyFields:p.onlyFields??[]};if(!s)return{lines:[{text:"Any (unspecified data type)",indentLevel:0}]};const r=p.onPrefix?p.onPrefix(s):"";function a(M){return i.onlyFields.length>0?i.onlyFields.includes(M):i.omitFields.length>0?!i.omitFields.includes(M):!0}const c=a("id")&&!i.omitIdsFor.includes(d.DataType)?s.id:"",e=a("type")&&!i.omitTypesFor.includes(d.DataType)?s.type:"",f=c;let h=`${r}${i.omitTopLevelType?"":e?`${e}: `:""}${f}`;h=h?h+" | ":"";let m="";if(s.interactiveEntities===!1?m+=` but only definition nodes ${s.asType?"as template ":""}that don't include non-interactive built-in functionality`:s.interactiveEntities===!0&&(m+=` but only definition nodes ${s.asType?"as template ":""}that extend or implement interactive built-in functionality`),s.staticEntities===!1?m?m+=" and that aren't a single global copy instance":m+=` but only definition nodes ${s.asType?"as template ":""}that aren't a single global copy instance`:s.staticEntities===!0&&(m?m+=" and that are a single global copy instance":m+=` but only definition nodes ${s.asType?"as template ":""}that are a single global copy instance`),s.actionEntities===!1?m?m+=" excluding executable/action nodes":m+=` excluding executable/action nodes ${s.asType?"templates ":""}`:s.actionEntities===!0&&(m?m+=" and not executable/action nodes":m+=" but not executable/action nodes"),s.entity&&(m=""),s.asType&&!m&&!((E=s.andChildrenGroup)!=null&&E.length)&&!((b=s.orChildrenGroup)!=null&&b.length)&&(m=" as template"),s.foreignKeyRef){const M=s.isList,k=Bt(s.foreignKeyRef,s.project),K=Bt(s.foreignKeyRef.parent,s.project);return{lines:[{text:M?`${h}List references to "${k}" from "${K}"${m}`:`${h}Reference to "${k}" from "${K}"${m}`,indentLevel:0}]}}else{if(s.foreignKeyAllowed)return{lines:[{text:s.isList?`${h}List of foreign key references${m}`:`${h}Foreign key reference${m}`,indentLevel:0}]};if(!s.entity){const M=s.isList;if(!((A=s.andChildrenGroup)!=null&&A.length)&&!((_=s.orChildrenGroup)!=null&&_.length))return{lines:[{text:M?`${h}List of an any data type${m}`:`${h}Any data type${m}`,indentLevel:0}]};const k=[];return M&&k.push({text:`${h}List of `,indentLevel:0}),s.andChildrenGroup&&((P=s.andChildrenGroup)==null?void 0:P.length)>1&&k.push({text:(M?"":h)+"All of the following data types (union):",indentLevel:M?0:-1}),(s.andChildrenGroup||[]).forEach((K,ne)=>{const X=ne===(s.andChildrenGroup||[]).length-1;Gg(K,{...i,omitTopLevelType:!0,onPrefix:p.onPrefix}).lines.forEach((ie,le)=>{const ye=le===0,Y=M?ie.indentLevel+1:ie.indentLevel;k.push({text:ye?"- "+ie.text:ie.text,indentLevel:ye?Y:Y+1})}),X||k.push({text:"AND",indentLevel:0})}),s.orChildrenGroup&&((V=s.orChildrenGroup)==null?void 0:V.length)>1&&k.push({text:(M?"":h)+"One of the following data types (intersection):",indentLevel:M?0:-1}),(s.orChildrenGroup||[]).forEach((K,ne)=>{const X=ne===(s.orChildrenGroup||[]).length-1;Gg(K,{...i,omitTopLevelType:!0,onPrefix:p.onPrefix}).lines.forEach((ie,le)=>{const ye=le===0,Y=M?ie.indentLevel+1:ie.indentLevel;k.push({text:ye?"- "+ie.text:ie.text,indentLevel:ye?Y:Y+1})}),X||k.push({text:"OR",indentLevel:0})}),{lines:k}}}if(s.entity.type===d.PrimitiveEntity){let M=s.entity.name;switch(s.entity.name){case fe.String:M="Text";break;case fe.KeyValue:M="Object";break;case fe.Number:M="Number";break;case fe.Boolean:M="Boolean";break;case fe.UUID:M="UUIDv4";break;case fe.Date:M="Date (string in ISO 8601 format)";break;case fe.File:M="File";break;case fe.Null:M="Null value";break;case fe.Untyped:M="Untyped value (explicit any)";break;case fe.Void:M="Void (no returned value)";break;case fe.Enum:M=`Enum (options: "${Et(s.options||[],'", "','" and "')}")`;break}return{lines:[{text:s.isList?`${h}List of ${M}s${m}`:`${h}${M.slice(0,1).toUpperCase()}${M.slice(1)}${m}`,indentLevel:0}]}}else if(s.entity.type===d.DefinitionEntity){let M=Bt(s.entity,s.project);M+=" ["+Df(s.entity)+"]";const k=a("id")&&!i.omitIdsFor.includes(d.DefinitionEntity)?s.entity.id:"",K=a("type")&&!i.omitTypesFor.includes(d.DefinitionEntity)?d.DefinitionEntity:"",ne=i.firstLabel==="name"?M:k,X=i.firstLabel==="name"?k:M,de=`${r}${i.omitTopLevelType?"":K?`${K}: `:""}${ne}${X?` (${X})`:""}`,ie=[];if(i.nested&&((G=s.entity.parent)==null?void 0:G.id)===s.id){const le=ri(s.entity,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});s.isList&&ie.push({text:`${h}List of:`,indentLevel:0}),le.lines.forEach(ye=>{ie.push({text:ye.text,indentLevel:s.isList?ye.indentLevel+1:ye.indentLevel})})}else ie.push({text:s.isList?`${h}List of ${de} values${m}`:h+de.slice(0,1).toUpperCase()+de.slice(1)+m,indentLevel:0});return{lines:ie}}else if(s.entity.type===d.BuiltInBaseEntity){const M=Ox(s.entity);return{lines:[{text:s.isList?`${h}List of ${M} values${m}`:h+M.slice(0,1).toUpperCase()+M.slice(1)+m,indentLevel:0}]}}else if(s.entity.type===d.LiteralValue){if(s.entity.name===fe.Null)return{lines:[{text:`${h}Null value`,indentLevel:0}]};if(s.entity.name===fe.Untyped)return{lines:[{text:`${h}Untyped value`,indentLevel:0}]};if(s.entity.name===fe.File)return{lines:[{text:`${h}File`,indentLevel:0}]};if(s.entity.name===fe.String||s.entity.name===fe.Enum)return{lines:[{text:`${h}"${s.entity.value}" text`,indentLevel:0}]};if(s.entity.name===fe.Number)return{lines:[{text:`${h}Number '${s.entity.value}'`,indentLevel:0}]};if(s.entity.name===fe.Boolean)return{lines:[{text:`${h}${s.entity.value} value`,indentLevel:0}]};if(s.entity.name===fe.UUID)return{lines:[{text:`${h}"${s.entity.value}" UUIDv4`,indentLevel:0}]};if(s.entity.name===fe.Date)return{lines:[{text:`${h}"${s.entity.value}" date`,indentLevel:0}]};if(s.entity.name===fe.KeyValue)return{lines:[{text:`${h}"${s.entity.value}" object`,indentLevel:0}]};if(s.entity.name===fe.Bytes)return{lines:[{text:`${h}"${s.entity.value}" bytes`,indentLevel:0}]}}return{lines:[{text:s.isList?`${h}List of ${Bt(s.entity,s.project)} values${m}`:`${h}${Bt(s.entity,s.project).slice(0,1).toUpperCase()+Bt(s.entity,s.project).slice(1)} value${m}`,indentLevel:0}]}}var qMe=(s=>(s.All="all",s.Callers="callers",s.ReadsValue="reads-value",s.WritesValues="writes-values",s.Declaration="declaration",s.Id="id",s.Type="type",s.Name="name",s.Description="description",s.Extends="extends",s.Implements="implements",s.CodeName="code-name",s.DataType="data-type",s))(qMe||{});function pp(s,p={nested:!1,omitTopLevelType:!1,firstLabel:"name",omitIdsFor:[],omitTypesFor:[],metadataIndent:1,ownMetadataIndent:1,omitFields:[],onlyFields:[]}){var c;if(!oI.includes(s.type))throw new Error(`[generateValueAssignmentLogLine] Entity type ${s.type} is not an entity with value type.`);const i={nested:p.nested??!1,omitTopLevelType:p.omitTopLevelType??!1,firstLabel:p.firstLabel??"name",omitIdsFor:p.omitIdsFor??[],omitTypesFor:p.omitTypesFor??[],metadataIndent:p.metadataIndent??1,omitFields:p.omitFields??[],onlyFields:p.onlyFields??[]},r=p.prefix??"Value assignment";let a=cv(s)?"**MISSING REQUIRED VALUE**":"";if(p.onMissingValue&&cv(s)&&(a=p.onMissingValue(s,a)),Yr.includes(s.type)&&s.readsValue){const f=s.readsValue,h=Bt(f,s.project);let m="";if(f.type===d.OutputMap||f.type===d.ArgumentDeclaration){const E=f.parent,b=Bt(E,s.project);m=`${f.type}: "${h}" (${f.id}) of ${E.type}: "${b}"`}else m=`${f.type}: "${h}" (${f.id})`;return`${r} (READING FROM) ${m}${a?` | ${a}`:""}`}else if(s.defaultValue){const e=ri(s.defaultValue,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});return`${r} (INLINE) ${e.lines[0].text}${a?` | ${a}`:""}`}else return s.type===d.ArgumentDeclaration?s.parent.parent.type===d.Loop?((c=s.parent.parent.currentIterationNumberArgumentDeclaration)==null?void 0:c.id)===s.id?`${r} INIT BY SYSTEM current loop iteration number${a?` | ${a}`:""}`:`${r} INIT BY SYSTEM with aggregate value from prev loop body${a?` | ${a}`:""}`:s.parent.parent.type===d.DefinitionEntity&&[...NL(s.parent.parent)].some(f=>s.project.diggestedBuiltInBaseEntitiesIds.has(f.id))?`${r} INIT BY SYSTEM when function is invoked${a?` | ${a}`:""}`:`${r} NONE${a?` | ${a}`:""}`:`${r} NONE${a?` | ${a}`:""}`}function SMe(s,p={nested:!1,omitTopLevelType:!1,firstLabel:"name",omitIdsFor:[],omitTypesFor:[],metadataIndent:1,ownMetadataIndent:1,omitFields:[],onlyFields:[]}){if(!$i.includes(s.type))throw new Error(`[generateWritesValuesToLogLine] Entity type ${s.type} is not a value writing type.`);const i={nested:p.nested??!1,omitTopLevelType:p.omitTopLevelType??!1,firstLabel:p.firstLabel??"name",omitIdsFor:p.omitIdsFor??[],omitTypesFor:p.omitTypesFor??[],metadataIndent:p.metadataIndent??1,omitFields:p.omitFields??[],onlyFields:p.onlyFields??[]},r=[],a=p.prefix??"Writes values to";return s.writesValues.length?s.writesValues.forEach(c=>{const e=Bt(c,s.project);let f="";if(c.type===d.InputMap){const h=c.parent,m=Bt(h,s.project);f=`${c.type}: "${e}" (${c.id}) of ${h.type}: "${m}"`}else f=`${c.type}: "${e}" (${c.id})`;r.push({text:`${a} ${f}`,indentLevel:i.metadataIndent})}):r.push({text:`${a} NONE`,indentLevel:i.metadataIndent}),{lines:r}}function ph(s,p={nested:!1,omitTopLevelType:!1,firstLabel:"name",omitIdsFor:[],omitTypesFor:[],metadataIndent:1,ownMetadataIndent:1,omitFields:[],onlyFields:[]}){const i={nested:p.nested??!1,omitTopLevelType:p.omitTopLevelType??!1,firstLabel:p.firstLabel??"name",omitIdsFor:p.omitIdsFor??[],omitTypesFor:p.omitTypesFor??[],metadataIndent:p.metadataIndent??1,omitFields:p.omitFields??[],onlyFields:p.onlyFields??[]},r=[];if(s.length>0){r.push({text:`${p.label??"OUTPUTS:"}`,indentLevel:i.metadataIndent});for(const a of s)if(a){const c=ri(a,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});c.lines.forEach((e,f)=>{const h=f===0,m=f===c.lines.length-1;r.push({text:h?"- "+e.text:e.text,indentLevel:h?e.indentLevel+2:e.indentLevel+3}),m&&r.push({text:"",indentLevel:e.indentLevel+2})})}}else r.push({text:`${p.label??"OUTPUTS:"} None`,indentLevel:i.metadataIndent});return{lines:r}}function ad(s,p={nested:!1,omitTopLevelType:!1,firstLabel:"name",omitIdsFor:[],omitTypesFor:[],metadataIndent:1,ownMetadataIndent:1,omitFields:[],onlyFields:[]}){const i={nested:p.nested??!1,omitTopLevelType:p.omitTopLevelType??!1,firstLabel:p.firstLabel??"name",omitIdsFor:p.omitIdsFor??[],omitTypesFor:p.omitTypesFor??[],metadataIndent:p.metadataIndent??1,omitFields:p.omitFields??[],onlyFields:p.onlyFields??[]},r=[];if(s.length>0){r.push({text:`${p.label??"INPUTS:"}`,indentLevel:i.metadataIndent});for(const a of s)if(a){const c=ri(a,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});c.lines.forEach((e,f)=>{const h=f===0,m=f===c.lines.length-1;r.push({text:h?"- "+e.text:e.text,indentLevel:h?e.indentLevel+(p.firstListItemIndent??2):e.indentLevel+(p.otherListItemIndent??3)}),m&&r.push({text:"",indentLevel:e.indentLevel+2})})}}else r.push({text:`${p.label??"INPUTS:"} None`,indentLevel:i.metadataIndent});return{lines:r}}function sp(s,p={nested:!1,omitTopLevelType:!1,firstLabel:"name",omitIdsFor:[],omitTypesFor:[],metadataIndent:1,ownMetadataIndent:1,omitFields:[],onlyFields:[]}){const i={nested:p.nested??!1,omitTopLevelType:p.omitTopLevelType??!1,firstLabel:p.firstLabel??"name",omitIdsFor:p.omitIdsFor??[],omitTypesFor:p.omitTypesFor??[],metadataIndent:p.metadataIndent??1,omitFields:p.omitFields??[],onlyFields:p.onlyFields??[]},r=[],a=i.onlyFields.length>0&&i.onlyFields.includes("data-type")||i.omitFields.length>0&&!i.omitFields.includes("data-type")||i.onlyFields.length===0&&i.omitFields.length===0;if(!s)a&&r.push({text:"Data Type: Any (unspecified data type)",indentLevel:0});else if(a){const c=ri(s,{...i,nested:!0,omitTopLevelType:!0,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});c.lines.length===1?r.push({text:`Data Type: ${c.lines[0].text}`,indentLevel:0}):(r.push({text:"Data Type:",indentLevel:0}),c.lines.forEach(e=>{r.push({text:e.text,indentLevel:e.indentLevel+1})}))}return{lines:r}}function BT(s,p={nested:!1,omitTopLevelType:!1,firstLabel:"name",omitIdsFor:[],omitTypesFor:[],metadataIndent:1,ownMetadataIndent:1,omitFields:[],onlyFields:[]}){var a;const i={nested:p.nested??!1,omitTopLevelType:p.omitTopLevelType??!1,firstLabel:p.firstLabel??"name",omitIdsFor:p.omitIdsFor??[],omitTypesFor:p.omitTypesFor??[],metadataIndent:p.metadataIndent??1,omitFields:p.omitFields??[],onlyFields:p.onlyFields??[]},r=[];if(s.error&&(((a=s.error)==null?void 0:a.writesValues)||[]).length>0){const c="CAUGHT ERROR value read by:";r.push({text:c,indentLevel:i.metadataIndent}),s.error.writesValues.forEach(f=>{const h=Bt(f,s.project);let m="";if(f.type===d.InputMap){const E=f.parent,b=Bt(E,s.project);m=`${f.type}: "${h}" (${f.id}) of ${E.type}: "${b}"`}else m=`${f.type}: "${h}" (${f.id})`;r.push({text:m,indentLevel:i.metadataIndent+1})})}return{lines:r}}function ri(s,p={nested:!1,omitTopLevelType:!1,firstLabel:"name",omitIdsFor:[],omitTypesFor:[],metadataIndent:1,ownMetadataIndent:1,omitFields:[],onlyFields:[]}){var P,V,G,M,k,K,ne,X,de,ie,le;const i={nested:p.nested??!1,omitTopLevelType:p.omitTopLevelType??!1,firstLabel:p.firstLabel??"name",omitIdsFor:p.omitIdsFor??[],omitTypesFor:p.omitTypesFor??[],metadataIndent:p.metadataIndent??1,omitFields:p.omitFields??[],onlyFields:p.onlyFields??[]};function r(ye){return i.onlyFields.length>0?i.onlyFields.includes(ye):i.omitFields.length>0?!i.omitFields.includes(ye):!0}const a=p.ownMetadataIndent??p.metadataIndent??1,c=p.onPrefix?p.onPrefix(s):"";if(s.type===d.LiteralValue){let ye=(P=s.value)==null?void 0:P.toString();try{ye=JSON.stringify(s.value,null,2).replace(/\n/g,"")}catch{}if(s.valueAsTypeList&&!s.valueAsTypeSingle&&s.valueAsTypeList.length>0)ye=Et(s.valueAsTypeList.map(he=>`${he.type} "${Bt(he,s.project)}" (${he.id})`),", "," and ");else if(s.valueAsTypeSingle){const he=s.valueAsTypeSingle;ye=`${he.type} "${Bt(he,s.project)}" (${he.id})`}let Y="";switch(s.name){case fe.Bytes:Y="Bytes";break;case fe.String:Y="Text";break;case fe.KeyValue:Y="Object";break;case fe.Number:Y="Number";break;case fe.Boolean:Y="Boolean";break;case fe.UUID:Y="Unique identifier UUIDv4";break;case fe.Date:Y="Date (string in ISO 8601 format)";break;case fe.File:Y="File";break;case fe.Null:Y="Null value (explicit empty)";break;case fe.Untyped:Y="Untyped value (explicit any)";break;case fe.Void:Y="Void (no returned value)";break;case fe.Enum:Y="Enum (set of text options)";break;case fe.EntityTemplate:{Y="Entity (as type/constructor)",s.valueAsTypeList&&!s.valueAsTypeSingle&&(Y+=" list");break}default:Y=Bt(s,s.project);break}r("name")||(Y="");const ee=r("id")&&!i.omitIdsFor.includes(d.LiteralValue)?s.id:"",pe=r("type")&&!i.omitTypesFor.includes(d.LiteralValue)?s.type:"",se=i.firstLabel==="name"?Y:ee,ue=i.firstLabel==="name"?ee:Y;return{lines:[{text:`${c}${i.omitTopLevelType?"":pe?`${pe}: `:""}${se}${ue?` (${ue})`:""} = ${ye}`,indentLevel:0}]}}if(s.type===d.PrimitiveEntity){const ye=r("id")&&!i.omitIdsFor.includes(d.PrimitiveEntity)?s.id:"",Y=r("type")&&!i.omitTypesFor.includes(d.PrimitiveEntity)?s.type:"";let ee="";switch(s.name){case fe.Bytes:ee="Bytes";break;case fe.String:ee="Text";break;case fe.KeyValue:ee="Object";break;case fe.Number:ee="Number";break;case fe.Boolean:ee="Boolean";break;case fe.UUID:ee="Unique identifier UUIDv4";break;case fe.Date:ee="Date (string in ISO 8601 format)";break;case fe.File:ee="File";break;case fe.Null:ee="Null value (explicit empty)";break;case fe.Untyped:ee="Untyped value (explicit any)";break;case fe.Void:ee="Void (no returned value)";break;case fe.Enum:ee="Enum (set of text options)";break;case fe.EntityTemplate:{ee="Entity as type/constructor";break}default:ee=Bt(s,s.project);break}r("name")||(ee="");const pe=i.firstLabel==="name"?ee:ye,se=i.firstLabel==="name"?ye:ee,ue=[{text:`${c}${i.omitTopLevelType?"":Y?`${Y}: `:""}${pe}${se?` (${se})`:""}`,indentLevel:0}],he=((V=s.description)==null?void 0:V.replace(/[\r\n]+/g," ").trim())||"";if(he&&r("description")&&ue.push({text:`${he}`,indentLevel:a}),s.extends&&r("extends")){const ge=Bt(s.extends,s.project);ue.push({text:`Extends: ${ge}`,indentLevel:a})}return{lines:ue}}if(s.type===d.DataType){const ye=Gg(s,{...i,onPrefix:p.onPrefix}),Y=[];return ye.lines.forEach(ee=>{Y.push({text:ee.text,indentLevel:ee.indentLevel+1})}),{lines:Y}}const e=r("name")?Bt(s,s.project):"",f=r("id")&&!i.omitIdsFor.includes(s.type)?s.id:"",h=r("type")&&!i.omitTypesFor.includes(s.type)?s.type:"",m=i.firstLabel==="name"?e:f,E=i.firstLabel==="name"?f:e,A=[{text:`${c}${i.omitTopLevelType?"":h?`${h}: `:""}${m}${E?` (${E})`:""}`,indentLevel:0}],_=((G=s.description)==null?void 0:G.replace(/[\r\n]+/g," ").trim())||"";if(_&&r("description")&&A.push({text:`${_}`,indentLevel:a}),s.codeName&&r("code-name")&&A.push({text:`Explicit name when compiled: ${s.codeName}`,indentLevel:a}),s.declaration&&r("declaration")){const ye=s;let Y="";ye.declaration.type!==d.VariableDeclaration&&(Y=`${ye.declaration.type}: `);let ee="";A.push({text:`Declaration ${Y}${ye.declaration.id}${ee}`,indentLevel:a})}if(Yr.includes(s.type)&&r("reads-value")&&!s.defaultValue&&(!Rt.includes(s.type)||!s.throws)){const ye=pp(s,{prefix:"Value assignment",...i,onMissingValue:p.onMissingValue});A.push({text:ye,indentLevel:a})}if($i.includes(s.type)&&r("writes-values")){let ye="Writes values to";Ct.includes(s.type)?ye="Full returned value read by":Mt.includes(s.type)&&(ye="Main (full) value written to"),SMe(s,{prefix:ye,...i}).lines.forEach(ee=>{A.push({text:ee.text,indentLevel:ee.indentLevel})})}if(i.nested)switch(s.type){case d.Search:{if(A.push({text:`QUERY: \`${(s.query||"").replace("{{::","{{::input-map-value:")}\``,indentLevel:a}),A.push({text:`Error handling: ${s.catchesError?"YES (catches)":"NO (can throw)"}`,indentLevel:a}),s.inputsDeclarations.length>0){A.push({text:"INPUTS (inline-declared):",indentLevel:i.metadataIndent});for(const pe of s.inputsDeclarations)if(pe){const se=ri(pe,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});se.lines.forEach((ue,he)=>{const ge=he===0,Re=he===se.lines.length-1;A.push({text:ge?"- "+ue.text:ue.text,indentLevel:ge?ue.indentLevel+2:ue.indentLevel+3}),Re&&A.push({text:"",indentLevel:ue.indentLevel+2})})}}else A.push({text:"INPUTS: None",indentLevel:i.metadataIndent});BT(s,{...i,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(pe=>{A.push({text:pe.text,indentLevel:pe.indentLevel})}),A.push({text:"OUTPUT:",indentLevel:a});const Y=s.getDataType(null);if(!Y)A.push({text:"Data Type: Any (unspecified data type)",indentLevel:a+1});else{const pe=ri(Y,{...i,nested:!0,omitTopLevelType:!0,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});pe.lines.length===1?A.push({text:`Data Type: ${pe.lines[0].text}`,indentLevel:2}):pe.lines.forEach(se=>{A.push({text:se.text,indentLevel:se.indentLevel+1})})}const ee=s.outputs.filter(pe=>!!pe.writesValues.length);ee.length>0&&ph(ee,{label:"DESTRUCT RETURNED PROPERTIES: ",...i,onPrefix:p.onPrefix}).lines.forEach(se=>{A.push({text:se.text,indentLevel:se.indentLevel})});break}case d.Condition:{((M=s.declaration)==null?void 0:M.id)!==re.condition["condition-group-and"].id&&((k=s.declaration)==null?void 0:k.id)!==re.condition["condition-group-or"].id&&ad(s.inputs,{...i,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(Y=>{A.push({text:Y.text,indentLevel:Y.indentLevel})}),((K=s.declaration)==null?void 0:K.id)===re.condition["condition-group-and"].id?(A.push({text:"NESTED AND (all conditions must be true)",indentLevel:a}),(s.andChildrenGroup||[]).forEach((ye,Y)=>{const ee=ri(ye,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}),pe=Y===(s.andChildrenGroup||[]).length-1;ee.lines.forEach((se,ue)=>{const he=ue===0;A.push({text:he?"- "+se.text:se.text,indentLevel:he?se.indentLevel+2:se.indentLevel+3})}),pe||A.push({text:"AND",indentLevel:a+2})})):((ne=s.declaration)==null?void 0:ne.id)===re.condition["condition-group-or"].id&&(A.push({text:"NESTED OR (at least one condition must be true)",indentLevel:a}),(s.orChildrenGroup||[]).forEach((ye,Y)=>{const ee=ri(ye,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}),pe=Y===(s.orChildrenGroup||[]).length-1;ee.lines.forEach((se,ue)=>{const he=ue===0;A.push({text:he?"- "+se.text:se.text,indentLevel:he?se.indentLevel+2:se.indentLevel+3})}),pe||A.push({text:"OR",indentLevel:a+2})}));break}case d.ActionDescriptor:{if(ad(s.inputs,{...i,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(pe=>{A.push({text:pe.text,indentLevel:pe.indentLevel})}),s.error&&(A.push({text:"POTENTIAL ERROR:",indentLevel:a}),ri(s.error,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(se=>{A.push({text:se.text,indentLevel:se.indentLevel+2})})),yKe(s)===d.Loop){const pe=hKe(s);pe&&(A.push({text:"Body:",indentLevel:a}),ri(pe,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(ue=>{A.push({text:ue.text,indentLevel:ue.indentLevel+2})}))}A.push({text:"OUTPUT:",indentLevel:a});const ee=s.getDataType(null);if(!ee)A.push({text:"Data Type: Any (unspecified data type)",indentLevel:a+1});else{const pe=ri(ee,{...i,nested:!0,omitTopLevelType:!0,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});pe.lines.length===1?A.push({text:`Data Type: ${pe.lines[0].text}`,indentLevel:2}):pe.lines.forEach(se=>{A.push({text:se.text,indentLevel:se.indentLevel+1})})}break}case d.GlobalEvent:case d.FunctionDeclaration:{ad(s.inputs,{...i,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(ee=>{A.push({text:ee.text,indentLevel:ee.indentLevel})}),A.push({text:"OUTPUT:",indentLevel:a});const Y=s.getDataType(null);if(!Y)A.push({text:"Data Type: Any (unspecified data type)",indentLevel:a+1});else{const ee=ri(Y,{...i,nested:!0,omitTopLevelType:!0,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});ee.lines.length===1?A.push({text:`Data Type: ${ee.lines[0].text}`,indentLevel:2}):ee.lines.forEach(pe=>{A.push({text:pe.text,indentLevel:pe.indentLevel+1})})}break}case d.InputMap:{const ye=s.getDataType(null);if(sp(ye,{...i,onPrefix:p.onPrefix}).lines.forEach(ee=>{A.push({text:ee.text,indentLevel:ee.indentLevel+1})}),s.defaultValue){const pe=`Value assignment (INLINE): ${ri(s.defaultValue,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines[0].text}`;A.push({text:pe,indentLevel:1})}break}case d.ValueDescriptor:{const ye=s.getDataType(null);if(sp(ye,{...i,onPrefix:p.onPrefix}).lines.forEach(ee=>{A.push({text:ee.text,indentLevel:ee.indentLevel+1})}),((X=s.parent)==null?void 0:X.type)===d.Search){const ee=s.parent.inputs.find(pe=>{var se;return((se=pe.declaration)==null?void 0:se.id)===s.id});ee&&ri(ee,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:[...i.omitFields,"declaration","data-type","name"],onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(se=>{A.push({text:se.text,indentLevel:se.indentLevel})})}else if(s.defaultValue){const pe=`Value assignment (INLINE): ${ri(s.defaultValue,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines[0].text}`;A.push({text:pe,indentLevel:1})}break}case d.DefinitionEntity:{A.push({text:"["+Df(s)+"]",indentLevel:a});const ye=[];if(s.abstract&&ye.push("abstract"),s.static&&ye.push("static"),s.additionalProperties?ye.push("additional properties allowed"):ye.push("no additional properties allowed"),A.push({text:`Modifiers: ${ye.join(", ")}`,indentLevel:a}),(de=s.implements)!=null&&de.length&&(A.push({text:"Implements:",indentLevel:a}),s.implements.forEach(Y=>{const ee=Bt(Y,s.project),pe=i.firstLabel==="name"?ee:Y.id,se=i.firstLabel==="name"?Y.id:ee,ue=r("type")&&!i.omitTypesFor.includes(Y.type)?Y.type:"",he=`${ue?ue+": ":""}${pe}${se?` (${se})`:""}`;A.push({text:`- ${he}`,indentLevel:a+1})})),s.extends){const Y=Bt(s.extends,s.project),ee=i.firstLabel==="name"?Y:s.extends.id,pe=i.firstLabel==="name"?s.extends.id:Y,se=r("type")&&!i.omitTypesFor.includes(s.extends.type)?s.extends.type:"",ue=`${se?se+": ":""}${ee}${pe?` (${pe})`:""}`;A.push({text:`Extends: ${ue}`,indentLevel:a})}if(s.allPropertiesImplement&&(A.push({text:"ALL PROPERTIES IMPLEMENT:",indentLevel:a}),ri(s.allPropertiesImplement,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:1,ownMetadataIndent:0,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(ee=>{A.push({text:ee.text,indentLevel:ee.indentLevel+1})})),s.additionalPropertiesDataType&&(A.push({text:"ADDITIONAL PROPERTIES DATA TYPE:",indentLevel:a}),ri(s.additionalPropertiesDataType,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:1,ownMetadataIndent:0,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(ee=>{A.push({text:ee.text,indentLevel:ee.indentLevel+1})})),s.ownDeclaredProperties.length>0){A.push({text:"PROPERTIES:",indentLevel:a});for(const Y of s.properties){const ee=ri(Y,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});ee.lines.forEach((pe,se)=>{const ue=se===0,he=se===ee.lines.length-1;A.push({text:ue?"- "+pe.text:pe.text,indentLevel:ue?pe.indentLevel+2:pe.indentLevel+3}),he&&A.push({text:"",indentLevel:pe.indentLevel+2})})}}if(s.methods.length>0){A.push({text:"METHODS:",indentLevel:a});for(const Y of s.methods){const ee=ri(Y,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});ee.lines.forEach((pe,se)=>{const ue=se===0,he=se===ee.lines.length-1;A.push({text:ue?"- "+pe.text:pe.text,indentLevel:ue?pe.indentLevel+2:pe.indentLevel+3}),he&&A.push({text:"",indentLevel:pe.indentLevel+2})})}}if(s.abstractMethods.length>0){A.push({text:"Abstract methods (action-descriptors):",indentLevel:1});for(const Y of s.abstractMethods){const ee=ri(Y,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});ee.lines.forEach((pe,se)=>{const ue=se===0,he=se===ee.lines.length-1;A.push({text:ue?"- "+pe.text:pe.text,indentLevel:ue?pe.indentLevel+2:pe.indentLevel+3}),he&&A.push({text:"",indentLevel:pe.indentLevel+2})})}}break}case d.BuiltInBaseEntity:{const ye=[];if(s.abstract&&ye.push("abstract"),s.static&&ye.push("static"),s.additionalProperties?ye.push("additional properties allowed"):ye.push("no additional properties allowed"),A.push({text:`Modifiers: ${ye.join(", ")}`,indentLevel:a}),s.extends){const Y=Bt(s.extends,s.project),ee=i.firstLabel==="name"?Y:s.extends.id,pe=i.firstLabel==="name"?s.extends.id:Y,se=r("type")&&!i.omitTypesFor.includes(s.extends.type)?s.extends.type:"",ue=`${se?se+": ":""}${ee}${pe?` (${pe})`:""}`;A.push({text:`Extends: ${ue}`,indentLevel:a})}if(s.allPropertiesImplement&&(A.push({text:"ALL PROPERTIES IMPLEMENT:",indentLevel:a}),ri(s.allPropertiesImplement,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:1,ownMetadataIndent:0,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(ee=>{A.push({text:ee.text,indentLevel:ee.indentLevel+1})})),s.additionalPropertiesDataType&&(A.push({text:"ADDITIONAL PROPERTIES DATA TYPE:",indentLevel:a}),ri(s.additionalPropertiesDataType,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:1,ownMetadataIndent:0,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(ee=>{A.push({text:ee.text,indentLevel:ee.indentLevel+1})})),s.ownDeclaredProperties.length>0){A.push({text:"PROPERTIES:",indentLevel:a});for(const Y of s.properties){const ee=ri(Y,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});ee.lines.forEach((pe,se)=>{const ue=se===0,he=se===ee.lines.length-1;A.push({text:ue?"- "+pe.text:pe.text,indentLevel:ue?pe.indentLevel+2:pe.indentLevel+3}),he&&A.push({text:"",indentLevel:pe.indentLevel+2})})}}if(s.abstractMethods.length>0){A.push({text:"ABSTRACT METHODS (action-descriptors):",indentLevel:a});for(const Y of s.abstractMethods){const ee=ri(Y,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});ee.lines.forEach((pe,se)=>{const ue=se===0,he=se===ee.lines.length-1;A.push({text:ue?"- "+pe.text:pe.text,indentLevel:ue?pe.indentLevel+2:pe.indentLevel+3}),he&&A.push({text:"",indentLevel:pe.indentLevel+2})})}}break}case d.Property:{if(s.abstract||s.static||s.constant||s.private||s.required){const ye=[];s.abstract&&ye.push("abstract"),s.static&&ye.push("static"),s.constant&&ye.push("constant"),s.private&&ye.push("private"),s.required&&ye.push("required"),s.unique&&ye.push("unique"),A.push({text:`Modifiers: ${ye.join(", ")}`,indentLevel:a})}if((ie=s.implements)!=null&&ie.length&&(A.push({text:"Implements:",indentLevel:a}),s.implements.forEach(ye=>{const Y=Bt(ye,s.project),ee=i.firstLabel==="name"?Y:ye.id,pe=i.firstLabel==="name"?ye.id:Y,se=r("type")&&!i.omitTypesFor.includes(ye.type)?ye.type:"",ue=`${se?se+": ":""}${ee}${pe?` (${pe})`:""}`;A.push({text:`- ${ue}`,indentLevel:a+1})})),s.extends){const ye=Bt(s.extends,s.project),Y=Bt(s.extends.parent,s.project),ee=i.firstLabel==="name"?ye:s.extends.id,pe=i.firstLabel==="name"?s.extends.id:ye,se=r("type")&&!i.omitTypesFor.includes(s.extends.type)?s.extends.type:"",ue=`${se?se+": ":""}${ee}${pe?` (${pe})`:""}`;A.push({text:`Extends: ${ue} -- from: ${Y}`,indentLevel:a})}if(!s.extends){const ye=s.getDataType(null);sp(ye,{...i,onPrefix:p.onPrefix}).lines.forEach(ee=>{A.push({text:ee.text,indentLevel:ee.indentLevel+1})})}if(s.defaultValue){const Y=`Value assignment (INLINE): ${ri(s.defaultValue,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines[0].text}`;A.push({text:Y,indentLevel:a})}break}case d.ArgumentDeclaration:{if(s.required||s.constant){const ee=[];s.constant&&ee.push("constant (mandatory)"),s.required&&ee.push("required"),A.push({text:`Modifiers: ${ee.join(", ")}`,indentLevel:a})}(le=s.implements)!=null&&le.length&&(A.push({text:"Implements:",indentLevel:a}),s.implements.forEach(ee=>{const pe=Bt(ee,s.project),se=i.firstLabel==="name"?pe:ee.id,ue=i.firstLabel==="name"?ee.id:pe,he=r("type")&&!i.omitTypesFor.includes(ee.type)?ee.type:"",ge=`${he?he+": ":""}${se}${ue?` (${ue})`:""}`;A.push({text:`- ${ge}`,indentLevel:a+1})}));const ye=s.getDataType(null);if(sp(ye,{...i,onPrefix:p.onPrefix}).lines.forEach(ee=>{A.push({text:ee.text,indentLevel:ee.indentLevel+1})}),s.defaultValue){const pe=`Default value (INLINE): ${ri(s.defaultValue,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines[0].text}`;A.push({text:pe,indentLevel:a})}break}case d.OutputMap:{const ye=s.getDataType(null);sp(ye,{...i,onPrefix:p.onPrefix}).lines.forEach(ee=>{A.push({text:ee.text,indentLevel:ee.indentLevel+1})});break}case d.ContinueStatement:case d.BreakStatement:case d.ReturnStatement:{const ye=s.getDataType(null);if(sp(ye,{...i,onPrefix:p.onPrefix}).lines.forEach(se=>{A.push({text:se.text,indentLevel:se.indentLevel+1})}),s.throws){const se=pp(s.throws,{prefix:"THROWS ERROR:",onMissingValue:p.onMissingValue});A.push({text:se,indentLevel:a})}if(s.defaultValue){const ue=`Value assignment (INLINE): ${ri(s.defaultValue,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines[0].text}`;A.push({text:ue,indentLevel:a})}const ee=s.outputs.filter(se=>!se.readsValue&&!se.defaultValue);ee.length>0&&ad(ee,{label:"UNUSED IN-PROPERTIES: ",...i,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(ue=>{A.push({text:ue.text,indentLevel:ue.indentLevel})});const pe=s.outputs.filter(se=>se.readsValue||se.defaultValue);pe.length>0&&ad(pe,{label:"PROPERTIES ASSIGNED: ",...i,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(ue=>{A.push({text:ue.text,indentLevel:ue.indentLevel})});break}case d.VariableInstance:case d.VariableDeclaration:{A.push({text:`Error handling: ${s.catchesError?"YES (catches)":"NO (can throw)"}`,indentLevel:a});const ye=s.getDataType(null);if(sp(ye,{...i,onPrefix:p.onPrefix}).lines.forEach(xe=>{A.push({text:xe.text,indentLevel:xe.indentLevel+1})}),s.defaultValue){const Ge=`Value assignment (INLINE): ${ri(s.defaultValue,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines[0].text}`;A.push({text:Ge,indentLevel:a})}const ee=s.unusedInputs;ee.length>0&&ad(ee,{label:"UNUSED IN-PROPERTIES: ",...i,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(Ge=>{A.push({text:Ge.text,indentLevel:Ge.indentLevel})});const pe=s.usedInputs;pe.length>0&&ad(pe,{label:"PROPERTIES ASSIGNED: ",...i,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(Ge=>{A.push({text:Ge.text,indentLevel:Ge.indentLevel})}),BT(s,{...i,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(xe=>{A.push({text:xe.text,indentLevel:xe.indentLevel})});const ue=s.unusedOutputs;ue.length>0&&ph(ue,{label:"UNUSED OUT-PROPERTIES: ",...i,onPrefix:p.onPrefix,omitFields:[...i.omitFields]}).lines.forEach(Ge=>{A.push({text:Ge.text,indentLevel:Ge.indentLevel})});const he=s.usedOutputs;he.length>0&&ph(he,{label:"DESTRUCT PROPS READ BY OTHERS: ",...i,onPrefix:p.onPrefix,omitFields:[...i.omitFields]}).lines.forEach(Ge=>{A.push({text:Ge.text,indentLevel:Ge.indentLevel})});const ge=s.unusedInternalCalls;if(ge.length>0){A.push({text:"UNUSED METHODS (available in its instance):",indentLevel:a});for(const xe of ge){const Ge=ri(xe,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});Ge.lines.forEach((Ze,Je)=>{const Se=Je===0,tt=Je===Ge.lines.length-1;A.push({text:Se?"- "+Ze.text:Ze.text,indentLevel:Se?Ze.indentLevel+2:Ze.indentLevel+3}),tt&&A.push({text:"",indentLevel:Ze.indentLevel+2})})}}const Re=s.usedInternalCalls;if(Re.length>0){A.push({text:"METHOD CALLS:",indentLevel:a});for(const xe of Re){const Ge=ri(xe,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});Ge.lines.forEach((Ze,Je)=>{const Se=Je===0,tt=Je===Ge.lines.length-1;A.push({text:Se?"- "+Ze.text:Ze.text,indentLevel:Se?Ze.indentLevel+2:Ze.indentLevel+3}),tt&&A.push({text:"",indentLevel:Ze.indentLevel+2})})}}break}case d.Loop:{A.push({text:`Error handling: ${s.catchesError?"YES (catches)":"NO (can throw)"}`,indentLevel:a}),s.inputs.length>0&&ad(s.inputs,{...i,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(se=>{A.push({text:se.text,indentLevel:se.indentLevel})}),BT(s,{...i,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(pe=>{A.push({text:pe.text,indentLevel:pe.indentLevel})}),A.push({text:"OUTPUT:",indentLevel:a});const Y=s.getDataType(null);if(!Y)A.push({text:"Data Type: Any (unspecified data type)",indentLevel:a+1});else{const pe=ri(Y,{...i,nested:!0,omitTopLevelType:!0,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});pe.lines.length===1?A.push({text:`Data Type: ${pe.lines[0].text}`,indentLevel:2}):pe.lines.forEach(se=>{A.push({text:se.text,indentLevel:se.indentLevel+1})})}const ee=s.outputs.filter(pe=>!!pe.writesValues.length);ee.length>0&&ph(ee,{label:"DESTRUCT RETURNED PROPERTIES: ",...i,onPrefix:p.onPrefix}).lines.forEach(se=>{A.push({text:se.text,indentLevel:se.indentLevel})}),s.body&&(A.push({text:"BODY:",indentLevel:a}),ri(s.body,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(se=>{A.push({text:se.text,indentLevel:se.indentLevel+2})}));break}case d.FunctionCall:case d.Operation:case d.InternalCall:{if(s.type===d.InternalCall){const pe=r("name")?Bt(s.parent,s.project):"",se=r("id")&&!i.omitIdsFor.includes(s.parent.type)?s.parent.id:"",ue=r("type")&&!i.omitTypesFor.includes(s.parent.type)?s.parent.type:"",he=i.firstLabel==="name"?pe?`"${pe}"`:"":se,ge=i.firstLabel==="name"?se:pe?`"${pe}"`:"",Re=`${c}${i.omitTopLevelType?"":ue?`${ue} `:""}${he}${ge?` (${ge})`:""}`;s.calledBy.length>0?A.push({text:`Called method on state of parent: ${Re}`,indentLevel:a}):A.push({text:`Part of state instance of parent: ${Re}`,indentLevel:a})}A.push({text:`Error handling: ${s.catchesError?"YES (catches)":"NO (can throw)"}`,indentLevel:a}),s.inputs.length>0&&ad(s.inputs,{...i,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(se=>{A.push({text:se.text,indentLevel:se.indentLevel})}),BT(s,{...i,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(pe=>{A.push({text:pe.text,indentLevel:pe.indentLevel})}),A.push({text:"OUTPUT:",indentLevel:a});const Y=s.getDataType(null);if(!Y)A.push({text:"Data Type: Any (unspecified data type)",indentLevel:a+1});else{const pe=ri(Y,{...i,nested:!0,omitTopLevelType:!0,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});pe.lines.length===1?A.push({text:`Data Type: ${pe.lines[0].text}`,indentLevel:2}):pe.lines.forEach(se=>{A.push({text:se.text,indentLevel:se.indentLevel+1})})}const ee=s.outputs.filter(pe=>!!pe.writesValues.length);ee.length>0&&ph(ee,{label:"DESTRUCT RETURNED PROPERTIES: ",...i,onPrefix:p.onPrefix}).lines.forEach(se=>{A.push({text:se.text,indentLevel:se.indentLevel})});break}case d.Project:{if(s.entities.length>0){A.push({text:"DEFINITIONS:",indentLevel:a});for(const Y of s.entities){const ee=ri(Y,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});ee.lines.forEach((pe,se)=>{const ue=se===0,he=se===ee.lines.length-1;A.push({text:ue?"- "+pe.text:pe.text,indentLevel:ue?pe.indentLevel+2:pe.indentLevel+3}),he&&A.push({text:"",indentLevel:pe.indentLevel+2})})}}else A.push({text:"DEFINITIONS: None",indentLevel:a}),A.push({text:"",indentLevel:a});if(s.functions.length>0){A.push({text:"FUNCTION DECLARATIONS:",indentLevel:a});for(const Y of s.functions){const ee=ri(Y,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});ee.lines.forEach((pe,se)=>{const ue=se===0,he=se===ee.lines.length-1;A.push({text:ue?"- "+pe.text:pe.text,indentLevel:ue?pe.indentLevel+2:pe.indentLevel+3}),he&&A.push({text:"",indentLevel:pe.indentLevel+2})})}}else A.push({text:"FUNCTION DECLARATIONS: None",indentLevel:a}),A.push({text:"",indentLevel:a});if(s.events.length>0){A.push({text:"GLOBAL EVENTS:",indentLevel:a});for(const Y of s.events){const ee=ri(Y,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});ee.lines.forEach((pe,se)=>{const ue=se===0,he=se===ee.lines.length-1;A.push({text:ue?"- "+pe.text:pe.text,indentLevel:ue?pe.indentLevel+2:pe.indentLevel+3}),he&&A.push({text:"",indentLevel:pe.indentLevel+2})})}}else A.push({text:"GLOBAL EVENTS: None",indentLevel:a}),A.push({text:"",indentLevel:a});if(s.variableDeclarations.length>0){A.push({text:"GLOBALLY DECLARED VARIABLES:",indentLevel:a});for(const Y of s.variableDeclarations){const ee=ri(Y,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});ee.lines.forEach((pe,se)=>{const ue=se===0,he=se===ee.lines.length-1;A.push({text:ue?"- "+pe.text:pe.text,indentLevel:ue?pe.indentLevel+2:pe.indentLevel+3}),he&&A.push({text:"",indentLevel:pe.indentLevel+2})})}}else A.push({text:"GLOBALLY DECLARED VARIABLES: None",indentLevel:a}),A.push({text:"",indentLevel:a});if(s.projects.length>0){A.push({text:"INSTALLED PROJECTS (external logic):",indentLevel:a});for(const Y of s.projects){const ee=ri(Y,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});ee.lines.forEach((pe,se)=>{const ue=se===0,he=se===ee.lines.length-1;A.push({text:ue?"- "+pe.text:pe.text,indentLevel:ue?pe.indentLevel+2:pe.indentLevel+3}),he&&A.push({text:"",indentLevel:pe.indentLevel+2})})}}const ye=[...s.variableInstances,...s.operations,...s.searches,...s.loops,...s.conditions,...s.functionCalls];if(ye.length>0){A.push({text:"OTHER GLOBAL LOGIC (will be ignored when deployed, since it isn't called by any entry-point):",indentLevel:a});for(const Y of ye){const ee=ri(Y,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});ee.lines.forEach((pe,se)=>{const ue=se===0,he=se===ee.lines.length-1;A.push({text:ue?"- "+pe.text:pe.text,indentLevel:ue?pe.indentLevel+2:pe.indentLevel+3}),he&&A.push({text:"",indentLevel:pe.indentLevel+2})})}}break}case d.InstalledProject:{if(s.functions.length>0){A.push({text:"EXPORTED FUNCTIONS:",indentLevel:a});for(const ye of s.functions){const Y=ri(ye,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});Y.lines.forEach((ee,pe)=>{const se=pe===0,ue=pe===Y.lines.length-1;A.push({text:se?"- "+ee.text:ee.text,indentLevel:se?ee.indentLevel+2:ee.indentLevel+3}),ue&&A.push({text:"",indentLevel:ee.indentLevel+2})})}}if(s.events.length>0){A.push({text:"EVENTS:",indentLevel:a});for(const ye of s.events){const Y=ri(ye,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});Y.lines.forEach((ee,pe)=>{const se=pe===0,ue=pe===Y.lines.length-1;A.push({text:se?"- "+ee.text:ee.text,indentLevel:se?ee.indentLevel+2:ee.indentLevel+3}),ue&&A.push({text:"",indentLevel:ee.indentLevel+2})})}}break}}return{lines:A}}function P1(s,p){const i={singleLine:(p==null?void 0:p.singleLine)??!1,indentSize:(p==null?void 0:p.indentSize)??2,singleLineSpacer:(p==null?void 0:p.singleLineSpacer)??" "};if(i.singleLine)return s.lines.map(a=>{let c=a.text.trim();return c.startsWith("- ")&&(c=c.slice(2).trim()),c}).join(i.singleLineSpacer);const r=" ".repeat(i.indentSize);return s.lines.map(a=>r.repeat(a.indentLevel)+a.text).join(`
|
|
82
|
+
You shouldn't have to manually update a 'parent' property. The equivalent result is to change its value readers, value writers, or callers.`})),{errors:r,explanations:a,modifiedData:c}}subscribeDependents(i){return i.forEach(r=>{this.detachedDependents[r.entity.id]||(this.detachedDependents[r.entity.id]=r)}),this}unsubscribeDependents(i){return i.forEach(r=>{this.detachedDependents[r.entity.id]&&delete this.detachedDependents[r.entity.id]}),this}syncDependents(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"sync-dependents"))){const r=[],a=[],c=[],e=[];return Object.values(this.detachedDependents).forEach(f=>{const h=f.entity.afterAllChildrenInitialized(i);r.push(...h.updated),a.push(...h.added),c.push(...h.removed),e.push(...h.affected)}),i==null||i.attemptAutoclose("sync-dependents",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}onDetachedDependencyRemoved(i,r,a){const c=[],e=[],f=[],h=[];if(r==="variable-declaration-parent"){const{updated:m,added:E,removed:b}=this.remove({ignoreUpstream:!1},a);c.push(...m),e.push(...E),f.push(...b)}return{updated:C(c),added:C(e),removed:C(f),affected:C(h),self:this}}onDetachedDependencyRestored(i,r,a){const c=[],e=[],f=[],h=[];if(r==="variable-declaration-parent"){const{updated:m,added:E,removed:b}=this.restore({},a);c.push(...m),e.push(...E),f.push(...b)}return{updated:C(c),added:C(e),removed:C(f),affected:C(h),self:this}}unsubscribeFromDependencies(){var i,r,a,c,e,f;return(i=this.parent)==null||i.unsubscribeDependents([{entity:this,field:"variable-declaration-parent"}]),(c=(a=(r=this.dataType)==null?void 0:r.entity)==null?void 0:a.unsubscribeDependents)==null||c.call(a,[{entity:this,field:"variable-declaration-data-type-entity"}]),(f=(e=this.dataType)==null?void 0:e.unsubscribeDependents)==null||f.call(e,[{entity:this,field:"variable-declaration-data-type"}]),this}subscribeToDependencies(){var i,r,a,c,e,f;return(i=this.parent)==null||i.subscribeDependents([{entity:this,field:"variable-declaration-parent"}]),(c=(a=(r=this.dataType)==null?void 0:r.entity)==null?void 0:a.subscribeDependents)==null||c.call(a,[{entity:this,field:"variable-declaration-data-type-entity"}]),(f=(e=this.dataType)==null?void 0:e.subscribeDependents)==null||f.call(e,[{entity:this,field:"variable-declaration-data-type"}]),this}increaseVersion(i){var r;if(this.project.diggestedBuiltInBaseEntitiesIds.has(this.id))return this;if(i&&!B(i).isValid())throw new Error(`The shared timestamp '${i}' is not a valid ISO 8601 date string.`);if(i&&B(i).isSame(B(this.createdAt)))return this;if(!((r=this.knownVersions)!=null&&r.has(this.version))&&this.project.initialized)throw new Error(`The current ${this.type} ${this.id} version '${this.version}' is not captured in the 'knownVersions' map. Capture the current version before increasing it to avoid losing data.`);if(!this.activeVersion)throw new Error(`Only active versions can be increased. Entity with id '${this.id}' and version '${this.version}' is not active.`);return this.previousVersion=this.version,this.version=x.UUID.uuid(),this.createdAt=B(i).toISOString()||B().toISOString(),this}captureVersion(){var r;const i=((r=this.knownVersions)==null?void 0:r.get(this.version))||new wi(this,this.project);if(!this.activeVersion)throw new Error(`Only active versions can be captured. Entity of type ${this.type} with id '${this.id}' and version '${this.version}' is not active.`);if(this.version!==i.version)throw new Error(`Captured ${this.type} with id '${this.id}', version '${i.version}' does not match current entity version '${this.version}'.`);return this.knownVersions=this.knownVersions?this.knownVersions.set(this.version,i):new Map().set(this.version,i),this.apply(i),this}snapshot(){const i=new wi(this,this.project);return this.apply(i)}apply(i){const r=this.toMeta();return i.metaSync(r,null),i.inputs=[...this.inputs],i.outputs=[...this.outputs],i.internalCalls=[...this.internalCalls],i.successCalls=[...this.successCalls],i.errorCalls=[...this.errorCalls],i.writesValues=[...this.writesValues],i.readsValue=this.readsValue,i.defaultValue=this.defaultValue,i.dataType=this.dataType,i.calledBySuccess=[...this.calledBySuccess],i.calledByError=[...this.calledByError],i.calledByEntry=[...this.calledByEntry],i.error=this.error,i.parent=this.parent,i}recursiveCaptureUpstreamVersions(i){const r=[],a=[],c=[],e=[];if(this.parent){this.parent.increaseVersion(i);const f=this.parent.recursiveCaptureUpstreamVersions(i);r.push(this.parent,...f.updated),a.push(...f.added),c.push(...f.removed)}return{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}async restoreVersion(i,r){var m;const a=[],c=[],e=[],f=[];if(this.version===i&&(r!=null&&r.skipIfSameVersion))return{updated:C(a),added:C(c),removed:C(e),affected:C(f),self:this};if(!this.knownVersions){const E=new Map;for(const[b,A]of this.knownVersions||new Map){if(E.set(b,A),A.activeVersion=!1,A.knownVersions)for(const[_,P]of A.knownVersions)E.set(_,P);A.knownVersions=null}}let h=(m=this.knownVersions)==null?void 0:m.get(i);if(!h){const E=await this.APILoadVersion({},i);if(!E)throw new Error(`Version with id '${i}' for entity with id '${this.id}' not found.`);h=new wi(E,this.project)}return this.metaSync(h.toShallowJSON(),null),this.previousVersion=h.previousVersion,this.version=h.version,this.createdAt=h.createdAt,this.author=h.author,this.deleted=h.deleted,this.inputs=[...h.inputs],this.outputs=[...h.outputs],this.internalCalls=[...h.internalCalls],this.successCalls=[...h.successCalls],this.errorCalls=[...h.errorCalls],this.writesValues=[...h.writesValues],this.readsValue=h.readsValue,this.defaultValue=h.defaultValue,this.dataType=h.dataType,this.calledBySuccess=[...h.calledBySuccess],this.calledByError=[...h.calledByError],this.calledByEntry=[...h.calledByEntry],this.error=h.error,this.parent=h.parent,{updated:C(a),added:C(c),removed:C(e),affected:C(f),self:this}}updateWithShallowTransfer(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.UpdateWithShallowTransfer))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[updateWithShallowTransfer] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),this;if(this.metaSync(i,r),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 a=te(i.parent),c=this.project.get(a),e=this.parent;if(e&&e.id!==(c==null?void 0:c.id)&&this.removeFromParent(r),c)this.setParent(c,r),this.addSelfToProject(r);else throw r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),new Error(`${this.type} with id '${this.id}' has a 'parent' reference '${a}' that isn't found in the project`)}else throw r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),new Error(`${this.type} with id '${this.id}' must have a 'parent'`);if(i.readsValue){const a=te(i.readsValue),c=this.project.get(a),e=this.readsValue;e&&e.id!==(c==null?void 0:c.id)&&this.removeValueWriter(r),c&&this.setValueWriter(c,r)}else this.removeValueWriter(r);if(i.calledByEntry.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addEntryCaller(e,r),e.addCall(this,r))}),[...this.calledByEntry].forEach(a=>{i.calledByEntry.find(e=>te(e)===a.id)||(this.removeCaller(a,r),a.removeCall(this,r))}),i.calledBySuccess.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addSuccessCaller(e,r),e.addSuccessCall(this,r))}),[...this.calledBySuccess].forEach(a=>{i.calledBySuccess.find(e=>te(e)===a.id)||(this.removeCaller(a,r),a.removeCall(this,r))}),i.calledByError.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addErrorCaller(e,r),e.addErrorCall(this,r))}),[...this.calledByError].forEach(a=>{i.calledByError.find(e=>te(e)===a.id)||(this.removeCaller(a,r),a.removeCall(this,r))}),i.outputs.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addOutput(e,r),e.setParent(this,r))}),[...this.outputs].forEach(a=>{i.outputs.find(e=>te(e)===a.id)||(this.removeOutput(a,r),a.removeFromParent(r))}),i.inputs.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addInput(e,r),e.setParent(this,r))}),[...this.inputs].forEach(a=>{i.inputs.find(e=>te(e)===a.id)||(this.removeInput(a,r),a.removeFromParent(r))}),i.dataType){const a=te(i.dataType),c=this.project.get(a);c&&this.setDataType(c,r)}else this.setDataType(null,r);if(i.defaultValue){const a=te(i.defaultValue),c=this.project.get(a);c&&this.setDefaultValue(c,r)}else this.setDefaultValue(null,r);return i.writesValues.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addValueReader(e,r),e.setValueWriter(this,r))}),[...this.writesValues].forEach(a=>{i.writesValues.find(e=>te(e)===a.id)||(this.removeValueReader(a,r),a.setValueWriter(null,r))}),this.captureVersion(),this.subscribeToDependencies(),r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),this}updateWithGenerationTarget(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.UpdateWithGenerationTarget))){var a,c,e;if(!this.checkCanEdit(this,r))return z.Logger.warn(`[updateWithGenerationTarget] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),this;if(this.metaSync(i,r),i.parent){const f=te(i.parent),h=this.project.get(f),m=this.parent;if(m&&m.id!==(h==null?void 0:h.id)&&this.removeFromParent(r),h)this.setParent(h,r),this.addSelfToProject(r);else throw r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),new Error(`${this.type} with id '${this.id}' has a 'parent' reference '${f}' that isn't found in the project`)}if(i.readsValue){const f=te(i.readsValue),h=this.project.get(f);if(!h)throw new Error(`${this.type} with id '${this.id}' has a 'readsValue' reference '${f}' that isn't found in the project`);const m=this.readsValue;m&&m.id!==(h==null?void 0:h.id)&&this.removeValueWriter(r),h&&this.setValueWriter(h,r)}else i.readsValue===null&&this.removeValueWriter(r);return(a=i.calledByEntry)==null||a.forEach(f=>{const h=te(f),m=this.project.get(h);if(m)this.addEntryCaller(m,r),m.addCall(this,r);else throw new Error(`${this.type} with id '${this.id}' has a 'calledByEntry' reference '${h}' that isn't found in the project`)}),i.calledByEntry&&[...this.calledByEntry].forEach(f=>{var m;((m=i.calledByEntry)==null?void 0:m.find(E=>te(E)===f.id))||(this.removeCaller(f,r),f.removeCall(this,r))}),(c=i.calledBySuccess)==null||c.forEach(f=>{const h=te(f),m=this.project.get(h);if(m)this.addSuccessCaller(m,r),m.addSuccessCall(this,r);else throw new Error(`${this.type} with id '${this.id}' has a 'calledBySuccess' reference '${h}' that isn't found in the project`)}),i.calledBySuccess&&[...this.calledBySuccess].forEach(f=>{var m;((m=i.calledBySuccess)==null?void 0:m.find(E=>te(E)===f.id))||(this.removeCaller(f,r),f.removeCall(this,r))}),(e=i.calledByError)==null||e.forEach(f=>{const h=te(f),m=this.project.get(h);if(m)this.addErrorCaller(m,r),m.addErrorCall(this,r);else throw new Error(`${this.type} with id '${this.id}' has a 'calledByError' reference '${h}' that isn't found in the project`)}),i.calledByError&&[...this.calledByError].forEach(f=>{var m;((m=i.calledByError)==null?void 0:m.find(E=>te(E)===f.id))||(this.removeCaller(f,r),f.removeCall(this,r))}),this.captureVersion(),this.subscribeToDependencies(),r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),this}hydrateAncestors(){const i=[],r=[],a=[],c=[];if(this.initialData.parent){const e=te(this.initialData.parent),f=this.project.get(e);if(f)this.setParent(f,null),i.push(f);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.readsValue){const e=te(this.initialData.readsValue),f=this.project.get(e);f&&(this.setValueWriter(f,null),i.push(f))}return this.initialData.calledByEntry.forEach(e=>{const f=te(e),h=this.project.get(f);h&&this.addEntryCaller(h,null)}),this.initialData.calledBySuccess.forEach(e=>{const f=te(e),h=this.project.get(f);h&&this.addSuccessCaller(h,null)}),this.initialData.calledByError.forEach(e=>{const f=te(e),h=this.project.get(f);h&&this.addErrorCaller(h,null)}),{updated:C(i),added:C(r),removed:C(a),affected:C(c),self:this}}afterAllChildrenInitialized(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AfterAllChildrenInitialized))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[afterAllChildrenInitialized] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.AfterAllChildrenInitialized,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];if(this.initialized=!0,!this.dataType||this.dataType.inferred){const{added:he,updated:ge,removed:Re,affected:xe}=this.inferDataTypeAndSyncInstancesInputsAndOutputs(i);a.push(...he),r.push(...ge),c.push(...Re),e.push(...xe)}if(this.readsValue&&this.defaultValue&&(this.project.diggestedBuiltInBaseEntitiesIds.has(this.defaultValue.id)||this.defaultValue.remove({ignoreUpstream:!1},i),this.setDefaultValue(null,i)),this.defaultValue&&!this.readsValue&&!this.project.diggestedBuiltInBaseEntitiesIds.has(this.id)&&this.project.diggestedBuiltInBaseEntitiesIds.has(this.defaultValue.id)){const he=this.defaultValue.clone(i,this);this.setDefaultValue(he,i)}const{added:f,updated:h,removed:m,affected:E}=this.syncInputs(i);a.push(...f),r.push(...h),c.push(...m),e.push(...E);const{added:b,updated:A,removed:_,affected:P}=this.syncOutputs(i);a.push(...b),r.push(...A),c.push(..._),e.push(...P);const{added:V,updated:G,removed:M,affected:k}=this.generateUnusedInternalCalls(i);a.push(...V),r.push(...G),c.push(...M),e.push(...k);const{added:K,updated:ne,removed:X,affected:de}=this.removeUnrecognizedInputs(i);a.push(...K),r.push(...ne),c.push(...X),e.push(...de);const{added:ie,updated:le,removed:ye,affected:Y}=this.removeUnrecognizedOutputs(i);a.push(...ie),r.push(...le),c.push(...ye),e.push(...Y);const{added:ee,updated:pe,removed:se,affected:ue}=this.removeUnrecognizedInternalCalls(i);return a.push(...ee),r.push(...pe),c.push(...se),e.push(...ue),this.parent===this.project&&(this.catchesError&&(i==null||i.event({id:`${w.RemoveErrorCatching}-${this.id}--${Me.GlobalVariableDeclarationCannnotCatchError}`,action:w.RemoveErrorCatching,owner:this,errorReason:Me.GlobalVariableDeclarationCannnotCatchError,rootAction:!1}),this.metaSync({catchesError:!1},i)),this.errorCalls.length&&(i==null||i.event({id:`${w.RemoveAllErrorCalls}-${this.id}--${Me.GlobalVariableDeclarationCannotCallFromError}`,action:w.RemoveAllErrorCalls,owner:this,errorReason:Me.GlobalVariableDeclarationCannotCallFromError,rootAction:!1}),[...this.errorCalls].forEach(he=>{this.removeCall(he,i),he.removeCaller(this,i)})),this.calledBy.length&&(i==null||i.event({id:`${w.RemoveAllCallers}-${this.id}--${Me.GlobalVariableDeclarationCannotBeCalled}`,action:w.RemoveAllCallers,owner:this,errorReason:Me.GlobalVariableDeclarationCannotBeCalled,rootAction:!1}),[...this.calledBy].forEach(he=>{this.removeCaller(he,i),he.removeCall(this,i)}))),this.inputs.sort((he,ge)=>{var Re,xe;return(he.index??((Re=he.declaration)==null?void 0:Re.index))-(ge.index??((xe=ge.declaration)==null?void 0:xe.index))}),this.outputs.sort((he,ge)=>{var Re,xe;return(he.index??((Re=he.declaration)==null?void 0:Re.index))-(ge.index??((xe=ge.declaration)==null?void 0:xe.index))}),i==null||i.attemptAutoclose(w.AfterAllChildrenInitialized,this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}addSelfToProject(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"add-self-to-project"))){const r=[this],a=[],c=[],e=[];return this.parent===this.project&&this.project.addVariableDeclaration(this),this.readsValue&&(this.readsValue.addValueReader(this,i),r.push(this.readsValue)),this.writesValues.forEach(f=>{f.setValueWriter(this,i),r.push(f)}),this.successCalls.forEach(f=>{f.addSuccessCaller(this,i),r.push(f)}),this.errorCalls.forEach(f=>{f.addErrorCaller(this,i),r.push(f)}),this.calledBySuccess.forEach(f=>{f.addSuccessCall(this,i),r.push(f)}),this.calledByError.forEach(f=>{f.addErrorCall(this,i),r.push(f)}),this.calledByEntry.forEach(f=>{f.addCall(this,i),r.push(f)}),this.subscribe(),this.subscribeToDependencies(),i==null||i.attemptAutoclose("add-self-to-project",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}get calledBy(){return[...this.calledByEntry,...this.calledBySuccess,...this.calledByError]}get usedInputs(){return this.inputs.filter(i=>i.readsValue||i.defaultValue)}get unusedInputs(){return this.inputs.filter(i=>!i.readsValue&&!i.defaultValue)}get usedOutputs(){return this.outputs.filter(i=>i.writesValues.length)}get unusedOutputs(){return this.outputs.filter(i=>!i.writesValues.length)}get usedInternalCalls(){return this.internalCalls.filter(i=>!!i.calledBy.length)}get unusedInternalCalls(){return this.internalCalls.filter(i=>!i.calledBy.length)}removeInternalCall(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"remove-variable-declaration-internal-call"))){const a=this.internalCalls.findIndex(c=>c.id===i.id);return a>-1&&(this.internalCalls.splice(a,1),r&&(r==null||r.add(this,W.Affected))),r==null||r.attemptAutoclose("remove-variable-declaration-internal-call",this.id),this}removeInput(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveInput))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[removeInput] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.RemoveInput,this.id),this;const a=this.inputs.findIndex(c=>c.id===i.id);return a>-1&&(this.inputs.splice(a,1),r&&(r==null||r.add(this,W.Affected))),r==null||r.attemptAutoclose(w.RemoveInput,this.id),this}addInput(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddInput))){return this.checkCanEdit(this,r)?this.inputs.includes(i)?(r==null||r.attemptAutoclose(w.AddInput,this.id),this):(this.inputs.push(i),r==null||r.add(this,W.Affected),r==null||r.attemptAutoclose(w.AddInput,this.id),this):(z.Logger.warn(`[addInput] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.AddInput,this.id),this)}addOutput(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"add-output"))){return this.checkCanEdit(this,r)?this.outputs.includes(i)?(r==null||r.attemptAutoclose("add-output",this.id),this):(this.outputs.push(i),r==null||r.add(this,W.Affected),r==null||r.attemptAutoclose("add-output",this.id),this):(z.Logger.warn(`[addOutput] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("add-output",this.id),this)}removeOutput(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"remove-output"))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[removeOutput] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("remove-output",this.id),this;const a=this.outputs.findIndex(c=>c.id===i.id);return a>-1&&(this.outputs.splice(a,1),r&&(r==null||r.add(this,W.Affected))),r==null||r.attemptAutoclose("remove-output",this.id),this}addSuccessCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddSuccessCaller)),a=!1){var c;if(!this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddSuccessCaller,r))return this;if((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddSuccessCaller}-${this.id}--${Me.CannotSuccessCallItself}`,action:w.AddSuccessCaller,owner:this,errorReason:Me.CannotSuccessCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddSuccessCaller})),!this.calledBySuccess.find(e=>e.id===i.id)){const e=[];if(i.type===d.InternalCall?e.push(...ld(i)):i.type===d.VariableInstance&&e.push(...sd(i)),this.calledBySuccess.push(i),a&&bt(this,r),i.type===d.InternalCall){const f=ld(i);e.length<f.length&&(f.forEach(h=>{var m;r==null||r.event({id:`${w.AddSuccessCall}-${i.id}--cannot-be-${h.code}`,action:w.AddSuccessCall,owner:i,errorReason:`cannot-be-${h.code}`,rootAction:((m=r==null?void 0:r.self)==null?void 0:m.id)===i.id&&(r==null?void 0:r.actionName)===w.AddSuccessCall})}),this.calledBySuccess=this.calledBySuccess.filter(h=>h.id!==i.id))}else if(i.type===d.VariableInstance){const f=sd(i);e.length<f.length&&(f.forEach(h=>{var m;r==null||r.event({id:`${w.AddSuccessCall}-${i.id}--cannot-be-${h.code}`,action:w.AddSuccessCall,owner:i,errorReason:`cannot-be-${h.code}`,rootAction:((m=r==null?void 0:r.self)==null?void 0:m.id)===i.id&&(r==null?void 0:r.actionName)===w.AddSuccessCall})}),this.calledBySuccess=this.calledBySuccess.filter(h=>h.id!==i.id))}r==null||r.add(this,W.Updated)}return r==null||r.attemptAutoclose(w.AddSuccessCaller,this.id),this}addErrorCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddErrorCaller)),a=!1){var c;if(!this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddErrorCaller,r))return this;if((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddErrorCaller}-${this.id}--${Me.CannotErrorCallItself}`,action:w.AddErrorCaller,owner:this,errorReason:Me.CannotErrorCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddErrorCaller})),!this.calledByError.find(e=>e.id===i.id)){const e=[];if(i.type===d.InternalCall?e.push(...ld(i)):i.type===d.VariableInstance&&e.push(...sd(i)),this.calledByError.push(i),a&&bt(this,r),i.type===d.InternalCall){const f=ld(i);e.length<f.length&&(f.forEach(h=>{var m;r==null||r.event({id:`${w.AddSuccessCall}-${i.id}--cannot-be-${h.code}`,action:w.AddSuccessCall,owner:i,errorReason:`cannot-be-${h.code}`,rootAction:((m=r==null?void 0:r.self)==null?void 0:m.id)===i.id&&(r==null?void 0:r.actionName)===w.AddSuccessCall})}),this.calledByError=this.calledByError.filter(h=>h.id!==i.id))}else if(i.type===d.VariableInstance){const f=sd(i);e.length<f.length&&(f.forEach(h=>{var m;r==null||r.event({id:`${w.AddSuccessCall}-${i.id}--cannot-be-${h.code}`,action:w.AddSuccessCall,owner:i,errorReason:`cannot-be-${h.code}`,rootAction:((m=r==null?void 0:r.self)==null?void 0:m.id)===i.id&&(r==null?void 0:r.actionName)===w.AddSuccessCall})}),this.calledByError=this.calledByError.filter(h=>h.id!==i.id))}r==null||r.add(this,W.Updated)}return r==null||r.attemptAutoclose(w.AddErrorCaller,this.id),this}addEntryCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddEntryCaller)),a=!1){var c;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddEntryCaller,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddEntryCaller}-${this.id}--${Me.CannotEntryCallItself}`,action:w.AddEntryCaller,owner:this,errorReason:Me.CannotEntryCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddEntryCaller})),this.calledByEntry.find(e=>e.id===i.id)||(this.calledByEntry.push(i),r==null||r.add(this,W.Updated),a&&bt(this,r)),r==null||r.attemptAutoclose(w.AddEntryCaller,this.id),this):this}addErrorCall(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddErrorCall)),a=!1){var c;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddErrorCall,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddErrorCaller}-${this.id}--${Me.CannotErrorCallItself}`,action:w.AddErrorCaller,owner:this,errorReason:Me.CannotErrorCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddErrorCaller})),this.errorCalls.find(e=>e.id===i.id)||(this.errorCalls.push(i),this.catchesError&&this.metaSync({catchesError:!1},r),a&&bt(this,r),r==null||r.add(this,W.Affected)),r==null||r.attemptAutoclose(w.AddErrorCall,this.id),this):this}addSuccessCall(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddSuccessCall)),a=!1){var c;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddSuccessCall,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddSuccessCaller}-${this.id}`,action:w.AddSuccessCaller,owner:this,errorReason:Me.CannotSuccessCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddSuccessCaller})),this.successCalls.find(e=>e.id===i.id)||(this.successCalls.push(i),a&&bt(this,r),r==null||r.add(this,W.Affected)),r==null||r.attemptAutoclose(w.AddSuccessCall,this.id),this):this}removeCall(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveCall)),a=!1){if(!this.checkCanEditWithCounterpartAndSideEffects(this,i,w.RemoveCall,r))return this;const c=this.successCalls.findIndex(f=>f.id===i.id);c>-1&&(this.successCalls.splice(c,1),r==null||r.add(this,W.Affected));const e=this.errorCalls.findIndex(f=>f.id===i.id);return e>-1&&(this.errorCalls.splice(e,1),r==null||r.add(this,W.Affected)),a&&bt(this,r),r==null||r.attemptAutoclose(w.RemoveCall,this.id),this}removeCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"remove-caller")),a=!1){return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.RemoveCaller,r)?(this.calledBySuccess=this.calledBySuccess.filter(c=>c.id!==i.id?!0:(r==null||r.add(this,W.Updated),r==null||r.add(c,W.Affected),!1)),this.calledByError=this.calledByError.filter(c=>c.id!==i.id?!0:(r==null||r.add(this,W.Updated),r==null||r.add(c,W.Affected),!1)),this.calledByEntry=this.calledByEntry.filter(c=>c.id!==i.id?!0:(r==null||r.add(this,W.Updated),r==null||r.add(c,W.Affected),!1)),a&&bt(this,r),r==null||r.attemptAutoclose(w.RemoveCaller,this.id),this):this}addValueReader(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddValueReader))){var e,f,h,m;if(!this.checkCanEditFromScopeOwnerWithSideEffects(this,w.AddValueReader,r))return this;(i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.SetValueWriter}-${this.id}--${Me.CannotValueWriteItself}`,action:w.SetValueWriter,owner:this,errorReason:Me.CannotValueWriteItself,rootAction:((e=r==null?void 0:r.self)==null?void 0:e.id)===this.id&&(r==null?void 0:r.actionName)===w.SetValueWriter}));const a=i.type===d.InputMap&&i.parent.type===d.VariableInstance&&((f=i.declaration)==null?void 0:f.type)===d.Property&&((h=i.declaration)==null?void 0:h.constant),c=i.type===d.VariableInstance&&((m=i.declaration)==null?void 0:m.constant);return(a||c)&&i?(r==null||r.event({id:`${w.SetValueWriter}-${this.id}--${i.id}--${Me.ValueReadingOverridesConstantVariable}`,action:w.SetValueWriter,owner:i,counterpart:this,errorReason:Me.ValueReadingOverridesConstantVariable,rootAction:!1}),r==null||r.attemptAutoclose(w.AddValueReader,this.id),this):this.writesValues.includes(i)?(r==null||r.attemptAutoclose(w.AddValueReader,this.id),this):(this.writesValues.push(i),r==null||r.add(this,W.Affected),this)}removeValueReader(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveValueReader))){return this.checkCanEditFromScopeOwnerWithSideEffects(this,w.RemoveValueReader,r)?this.writesValues.includes(i)?(this.writesValues=this.writesValues.filter(a=>a.id!==i.id),r==null||r.add(this,W.Affected),this):(r==null||r.attemptAutoclose(w.RemoveValueReader,this.id),this):this}setError(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetErrorEntity))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[setError] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.SetErrorEntity,this.id),this;const a=this.error;return(a==null?void 0:a.id)!==(i==null?void 0:i.id)&&(a==null||a.remove({ignoreUpstream:!0},r),this.error=i,this.subscribeToDependencies(),r==null||r.add(this,W.Affected)),r==null||r.attemptAutoclose(w.SetErrorEntity,this.id),this}setParent(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetParent))){var a;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.SetParent,r)?(((a=this.parent)==null?void 0:a.id)!==(i==null?void 0:i.id)&&(this.parent=i,r&&(r==null||r.add(this,W.Updated))),r==null||r.attemptAutoclose(w.SetParent,this.id),this):this}initChildren(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"init-children"))){if(this.initialized||this.startedInitialization)return this;if(this.startedInitialization=!0,this.initialData.defaultValue&&(this.defaultValue=Ie(this.initialData.defaultValue,this.project),this.defaultValue.setParent(this,null),this.defaultValue.initChildren(i)),this.initialData.dataType){const r=Ie(this.initialData.dataType,this.project);this.setDataType(r,i),this.dataType.setParent(this,null),this.dataType.initChildren(i)}return JE.initWritesValues(this,this.parent),uy.initReadsValue(this),this.successCalls=this.initialData.successCalls.map(r=>{const a=Ie(r,this.project);if(a.addSuccessCaller(this,null),[d.BreakStatement,d.ContinueStatement].includes(a.type))a.setParent(this.parent.parent,null),a.initChildren(i);else if(a.type===d.ReturnStatement){const c=gn(this,this.project);a.setParent(c,null),a.initChildren(i)}else a.type!==d.InternalCall&&(a.setParent(this.parent,null),a.initChildren(i));return a}),this.errorCalls=this.initialData.errorCalls.map(r=>{const a=Ie(r,this.project);if(a.addErrorCaller(this,null),[d.BreakStatement,d.ContinueStatement].includes(a.type))a.setParent(this.parent.parent,null),a.initChildren(i);else if(a.type===d.ReturnStatement){const c=gn(this,this.project);a.setParent(c,null),a.initChildren(i)}else a.type!==d.InternalCall&&(a.setParent(this.parent,null),a.initChildren(i));return a}),this.initialData.inputs.forEach(r=>{const a=Ie(r,this.project);return a.setParent(this,null),a.initChildren(i),this.addInput(a,null),a}),this.initialData.outputs.forEach(r=>{const a=Ie(r,this.project);return a.setParent(this,null),a.initChildren(i),this.addOutput(a,null),a}),this.initialData.internalCalls.forEach(r=>{if(r.type===d.GenericReference){const c=this.project.findSubscribedInstanceFromReference(r);if(!c)return;c.setParent(this,null),c.initChildren(i),this.addInternalCall(c);return}const a=Ie(r,this.project);return a.setParent(this,null),a.initChildren(i),this.addInternalCall(a),a}),this.initialData.error&&(this.error=Ie(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}setValueWriter(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetValueWriter))){var a,c,e;return this.checkCanEditFromScopeOwnerWithSideEffects(this,w.SetValueWriter,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.SetValueWriter}-${this.id}--${Me.CannotValueWriteItself}`,action:w.SetValueWriter,owner:this,errorReason:Me.CannotValueWriteItself,rootAction:((a=r==null?void 0:r.self)==null?void 0:a.id)===this.id&&(r==null?void 0:r.actionName)===w.SetValueWriter})),((c=this.readsValue)==null?void 0:c.id)!==(i==null?void 0:i.id)&&(this.readsValue=i,this.readsValue&&((e=this.defaultValue)==null||e.remove({ignoreUpstream:!1},r)),r==null||r.add(this,W.Updated)),r==null||r.attemptAutoclose(w.SetValueWriter,this.id),this):this}removeValueWriter(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveValueWriter))){return this.readsValue&&!this.checkCanEditFromScopeOwnerWithSideEffects(this,w.RemoveValueWriter,i)?this:(this.readsValue&&(this.readsValue=null,i==null||i.add(this,W.Updated)),i==null||i.attemptAutoclose(w.RemoveValueWriter,this.id),this)}subscribe(){var i;return this.activeVersion=!0,(i=this.knownVersions)==null||i.forEach(r=>{r.version!==this.version&&(r.activeVersion=!1)}),this.project.subscribeInstance(this),this}unsubscribe(){return this.project.unsubscribeInstance(this),this}getMasterInputWithValueWriterFromAllInstances(i){return C([...this.inputs,...this.variableInstances.flatMap(c=>c.inputs)]).find(c=>oe(c,this.project)===oe(i,this.project)&&!!c.readsValue)||i}inferDataTypeAndSyncInstancesInputsAndOutputs(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"infer-data-type-and-sync-instances-inputs-and-outputs"))){var k,K,ne,X,de,ie,le,ye;const r=[],a=[],c=[],e=[];let f=!1;if(!this.dataType){const Y=vr.new(i);Y.parent=this.toReference(),Y.inferred=!0;const ee=Ie(Y,this.project);ee.hydrateAncestors(),ee.addSelfToProject(i),this.setDataType(ee,i),ee.setParent(this,i),ee.initChildren(i),f=!0,i==null||i.add(ee,W.Added),ee.metaSync({inferred:!0,like:!0},i)}if(this.readsValue&&((k=this.dataType)!=null&&k.inferred)){const Y=this.readsValue.getDataType(null);Y&&((K=this.dataType)==null||K.merge(Y,i),this.dataType.metaSync({inferred:!0,like:!0},i))}const h=C([...this.inputs,...this.variableInstances.flatMap(Y=>Y.inputs)]),m=[];if(h.forEach(Y=>{m.find(pe=>oe(pe,this.project)===oe(Y,this.project))||m.push(Y)}),(!((ne=this.dataType)!=null&&ne.entity)||((de=(X=this.dataType)==null?void 0:X.entity)==null?void 0:de.type)===d.DefinitionEntity&&((ie=this.dataType)==null?void 0:ie.entity.parent)===this.dataType)&&((le=this.dataType)==null||le.inferFromInputs(m,i)),!this.dataType)return i==null||i.attemptAutoclose("infer-data-type-and-sync-instances-inputs-and-outputs",this.id),{updated:C(a),added:C(r),removed:C(c),affected:C(e),self:this};const{updated:E,added:b,removed:A,affected:_}=this.syncInputs(i);r.push(...b),a.push(...E),c.push(...A),e.push(..._);const{updated:P,added:V,removed:G,affected:M}=this.syncOutputs(i);return r.push(...V),a.push(...P),c.push(...G),e.push(...M),this.variableInstances.forEach(Y=>{const{updated:ee,added:pe,removed:se,affected:ue}=Y.syncInputs(i);r.push(...pe),a.push(...ee),c.push(...se),e.push(...ue);const{updated:he,added:ge,removed:Re,affected:xe}=Y.syncOutputs(i);r.push(...ge),a.push(...he),c.push(...Re),e.push(...xe)}),f&&(i||(ye=this.dataType)==null||ye.captureVersion()),i==null||i.attemptAutoclose("infer-data-type-and-sync-instances-inputs-and-outputs",this.id),{updated:C(a),added:C(r),removed:C(c),affected:C(e),self:this}}metaSync(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"meta-sync"))){const a=tn(this,i,r),c=en(this,a),e=this.toMeta();return this.name=a.name!==void 0?a.name:e.name,this.codeName=a.codeName!==void 0?a.codeName:e.codeName,this.description=a.description!==void 0?a.description:e.description,this.x=a.x||e.x,this.y=a.y||e.y,this.constant=a.constant!==void 0?a.constant:e.constant,this.required=a.required!==void 0?a.required:e.required,this.catchesError=a.catchesError!==void 0?a.catchesError:this.catchesError,super.baseMetaSync(a,this,r),a.deleted===!0&&!e.deleted?r==null||r.add(this,W.Removed):a.deleted===!1&&e.deleted?r==null||r.add(this,W.Added):c&&(r==null||r.add(this,W.Updated)),r==null||r.attemptAutoclose("meta-sync",this.id),this}async APILoad(i=Ke,...r){return await wi.repository.APILoad(this.id,...r),this}async APICreate(i=Ke,...r){return await wi.repository.APICreate(this.toShallowJSON(),...r),this}async APIUpdate(i=Ke,...r){return await wi.repository.APIUpdate(this.toShallowJSON(),...r),this}async APIDelete(i=Ke,...r){return await wi.repository.APIDelete(this.toShallowJSON(),...r),this}async APIClone(i=Ke,...r){return await wi.repository.APIClone(this.id,...r),this}async APILoadVersion(i=Ke,r,...a){return await wi.repository.APILoadVersion(this.id,r,...a)}removeFromParent(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveFromParent))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[removeFromParent] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveFromParent,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];return this.parent.type===d.Project?(this.parent.removeVariableDeclaration(this),e.push(this.parent)):this.parent.detachedChildren.includes(this)&&this.parent.unsubscribeDetachedChild(this),i==null||i.attemptAutoclose(w.RemoveFromParent,this.id),{added:C(c),updated:C(r),removed:C(a),affected:C(e),self:this}}remove({ignoreUpstream:i}={ignoreUpstream:!1},r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveEntity))){var h;if(!this.checkCanDelete(this,r))return z.Logger.warn(`[remove] User is not allowed to delete or edit this ${this.type} entity with id: ${this.id}`),r==null||r.event({id:`${w.RemoveEntity}-${this.id}--${Me.ActionOwnerEntityNonDeletable}`,action:w.RemoveEntity,owner:this,errorReason:Me.ActionOwnerEntityNonDeletable,rootAction:((h=r==null?void 0:r.self)==null?void 0:h.id)===this.id&&(r==null?void 0:r.actionName)===w.RemoveEntity}),r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const a=[],c=[],e=[],f=[];if(r!=null&&r.hasRemoved(this.id))return r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};if(c.push(this),this.unsubscribe(),this.unsubscribeFromDependencies(),this.project.subscribeDeletedInstance(this),this.metaSync({deleted:!0},r),Object.values(this.detachedDependents).forEach(m=>{const{updated:E,removed:b,added:A}=m.entity.onDetachedDependencyRemoved(this,m.field,r);a.push(...E),c.push(...b),e.push(...A)}),this.defaultValue){const{updated:m,removed:E}=this.defaultValue.remove({ignoreUpstream:!0},r);a.push(...m),c.push(...E)}if(this.readsValue&&(a.push(this.readsValue),this.readsValue.removeValueReader(this,r)),this.writesValues.forEach(m=>{a.push(m),m.setValueWriter(null,r)}),this.inputs.forEach(m=>{const{updated:E,removed:b}=m.remove({ignoreUpstream:!0},r);a.push(...E),c.push(...b)}),this.outputs.forEach(m=>{const{updated:E,removed:b}=m.remove({ignoreUpstream:!0},r);a.push(...E),c.push(...b)}),this.successCalls.forEach(m=>{a.push(m),m.removeCaller(this,r)}),this.errorCalls.forEach(m=>{a.push(m),m.removeCaller(this,r)}),this.internalCalls.forEach(m=>{const{updated:E,removed:b}=m.remove({ignoreUpstream:!0},r);a.push(...E),c.push(...b)}),this.dataType){const{updated:m,removed:E}=this.dataType.remove({ignoreUpstream:!0},r);a.push(...m),c.push(...E)}if(!i){const m=this.removeFromParent(r);e.push(...m.added),a.push(...m.updated),c.push(...m.removed),f.push(...m.affected),this.calledBy.forEach(E=>{a.push(E),E.removeCall(this,r)})}return r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:C(e),updated:C(a),removed:C(c),affected:C(f),self:this}}restore({}={},i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RestoreEntity))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[restore] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RestoreEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];if(i!=null&&i.hasAdded(this.id))return i==null||i.attemptAutoclose(w.RestoreEntity,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(f=>{const{updated:h,removed:m,added:E}=f.entity.onDetachedDependencyRestored(this,f.field,i);a.push(...h),c.push(...m),r.push(...E)}),this.defaultValue){const{updated:f}=this.defaultValue.restore({},i);a.push(...f)}if(this.readsValue&&(a.push(this.readsValue),this.readsValue.addValueReader(this,i)),this.writesValues.forEach(f=>{a.push(f),f.setValueWriter(this,i)}),this.inputs.forEach(f=>{const{updated:h}=f.restore({},i);a.push(...h)}),this.outputs.forEach(f=>{const{updated:h}=f.restore({},i);a.push(...h)}),this.successCalls.forEach(f=>{a.push(f),f.addSuccessCaller(this,i)}),this.errorCalls.forEach(f=>{a.push(f),f.addErrorCaller(this,i)}),this.internalCalls.forEach(f=>{const{updated:h}=f.restore({},i);a.push(...h)}),this.dataType){const{updated:f}=this.dataType.restore({},i);a.push(...f)}return this.calledBySuccess.forEach(f=>{a.push(f),f.addSuccessCall(this,i)}),this.calledByError.forEach(f=>{a.push(f),f.addErrorCall(this,i)}),this.calledByEntry.forEach(f=>{a.push(f),f.addCall(this,i)}),i==null||i.attemptAutoclose(w.RestoreEntity,this.id),{added:C(r),updated:C(a),removed:C(c),affected:C(e),self:this}}toFlat(i=new Set){var a,c,e;return i.has(this.id)?[]:(i.add(this.id),[this,...((a=this.defaultValue)==null?void 0:a.toFlat(i))||[],...((c=this.dataType)==null?void 0:c.toFlat(i))||[],...((e=this.readsValue)==null?void 0:e.toFlat(i))||[],...this.writesValues.flatMap(f=>f.toFlat(i)),...this.successCalls.flatMap(f=>f.toFlat(i)),...this.errorCalls.flatMap(f=>f.toFlat(i)),...this.inputs.flatMap(f=>f.toFlat(i)),...this.outputs.flatMap(f=>f.toFlat(i)),...this.internalCalls.flatMap(f=>f.toFlat(i)),...this.calledBy.flatMap(f=>f.toFlat(i)),...this.variableInstances.flatMap(f=>f.toFlat(i))])}toFlatIds(i=new Set){var a,c;return i.has(this.id)?[]:(i.add(this.id),[this.id,...((a=this.defaultValue)==null?void 0:a.toFlatIds(i))||[],...((c=this.dataType)==null?void 0:c.toFlatIds(i))||[],...this.writesValues.flatMap(e=>e.toFlatIds(i)),...this.successCalls.flatMap(e=>e.toFlatIds(i)),...this.errorCalls.flatMap(e=>e.toFlatIds(i)),...this.inputs.flatMap(e=>e.toFlatIds(i)),...this.outputs.flatMap(e=>e.toFlatIds(i)),...this.internalCalls.flatMap(e=>e.toFlatIds(i)),...this.variableInstances.flatMap(e=>e.toFlatIds(i))])}toMeta(){return{id:this.id,version:this.version,createdAt:this.createdAt,previousVersion:this.previousVersion,author:this.author,deleted:this.deleted,codeName:this.codeName,catchesError:this.catchesError,description:this.description,required:this.required,constant:this.constant,x:this.x,y:this.y,type:this.type,editable:this.editable,deletable:this.deletable,name:this.name}}toJSON(i=new Set){var r,a,c,e;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,editable:this.editable,deletable:this.deletable,name:this.name,codeName:this.codeName,description:this.description,catchesError:this.catchesError,constant:this.constant,required:this.required,defaultValue:((r=this.defaultValue)==null?void 0:r.toJSON(i))||null,dataType:((a=this.dataType)==null?void 0:a.toJSON(i))||null,readsValue:((c=this.readsValue)==null?void 0:c.toReference())||null,writesValues:this.writesValues.map(f=>f.toJSON(i)),inputs:this.inputs.map(f=>f.toJSON(i)),outputs:this.outputs.map(f=>f.toJSON(i)),successCalls:this.successCalls.map(f=>f.toJSON(i)),errorCalls:this.errorCalls.map(f=>f.toJSON(i)),internalCalls:this.internalCalls.map(f=>f.toJSON(i)),calledBySuccess:this.calledBySuccess.map(f=>f.toReference()),calledByError:this.calledByError.map(f=>f.toReference()),calledByEntry:this.calledByEntry.map(f=>f.toReference()),error:((e=this.error)==null?void 0:e.toJSON(i))||null,parent:this.parent.toReference(),x:this.x,y:this.y})}toJSONClone(i=at){var a,c,e,f,h,m,E,b,A;let r;return(a=i.seenEntityMaps)!=null&&a.has(this.id)?r=i.seenEntityMaps.get(this.id):(r=i.newId||dn(this,this.project,i.uuidStrategy),i.seenEntityMaps&&i.seenEntityMaps.set(this.id,r)),(c=i.seenEntities)!=null&&c.has(r)||(e=i.seenEntities)!=null&&e.has(this.id)?this.toReference({seenEntityMaps:i.seenEntityMaps}):((f=i.seenEntities)==null||f.add(r),(h=i.seenEntities)==null||h.add(this.id),{id:r,version:x.UUID.uuid(),createdAt:i.timestamp||B().toISOString(),previousVersion:null,author:this.author,deleted:this.deleted,codeName:this.codeName,constant:this.constant,required:this.required,type:this.type,editable:this.editable,deletable:this.deletable,name:this.name,description:this.description,catchesError:this.catchesError,defaultValue:((m=this.defaultValue)==null?void 0:m.toJSONClone({...i,newId:null}))||null,dataType:((E=this.dataType)==null?void 0:E.toJSONClone({...i,newId:null}))||null,readsValue:((b=this.readsValue)==null?void 0:b.toReference({seenEntityMaps:i.seenEntityMaps}))||null,writesValues:this.writesValues.map(_=>_.toJSONClone({...i,newId:null})),inputs:this.inputs.map(_=>_.toJSONClone({...i,newId:null})),outputs:this.outputs.map(_=>_.toJSONClone({...i,newId:null})),successCalls:this.successCalls.map(_=>_.toJSONClone({...i,newId:null})),errorCalls:this.errorCalls.map(_=>_.toJSONClone({...i,newId:null})),internalCalls:this.internalCalls.map(_=>this.calledBy.length||this.readsValue?_.toJSONClone({...i,newId:null}):_.toReference({seenEntityMaps:i.seenEntityMaps})),calledBySuccess:this.calledBySuccess.map(_=>_.toReference({seenEntityMaps:i.seenEntityMaps})),calledByError:this.calledByError.map(_=>_.toReference({seenEntityMaps:i.seenEntityMaps})),calledByEntry:this.calledByEntry.map(_=>_.toReference({seenEntityMaps:i.seenEntityMaps})),error:((A=this.error)==null?void 0:A.toJSONClone({...i,newId:null}))||null,parent:this.parent.toReference({seenEntityMaps:i.seenEntityMaps}),x:this.x,y:this.y})}toReference(i=at){var a;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r+"--"+x.UUID.uuid()+"--ref",type:d.GenericReference,entityId:r,version:this.version,entityType:this.type}}toShallowJSON(i=at){var a,c,e,f,h;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r,version:this.version,createdAt:this.createdAt,previousVersion:this.previousVersion,author:this.author,deleted:this.deleted,type:this.type,editable:this.editable,deletable:this.deletable,name:this.name,codeName:this.codeName,description:this.description,catchesError:this.catchesError,required:this.required,constant:this.constant,x:this.x,y:this.y,defaultValue:((c=this.defaultValue)==null?void 0:c.toReference(i))||null,dataType:((e=this.dataType)==null?void 0:e.toReference(i))||null,readsValue:((f=this.readsValue)==null?void 0:f.toReference(i))||null,writesValues:this.writesValues.map(m=>m.toReference(i)),inputs:this.inputs.map(m=>m.toReference(i)),outputs:this.outputs.map(m=>m.toReference(i)),successCalls:this.successCalls.map(m=>m.toReference(i)),errorCalls:this.errorCalls.map(m=>m.toReference(i)),calledBySuccess:this.calledBySuccess.map(m=>m.toReference(i)),calledByError:this.calledByError.map(m=>m.toReference(i)),calledByEntry:this.calledByEntry.map(m=>m.toReference(i)),internalCalls:this.internalCalls.map(m=>m.toReference(i)),error:((h=this.error)==null?void 0:h.toReference(i))||null,parent:this.parent.toReference(i)}}toFlatJSON(i=new Set){var a,c;return i.has(this.id)?[]:(i.add(this.id),[this.toShallowJSON(),...((a=this.defaultValue)==null?void 0:a.toFlatJSON(i))||[],...((c=this.dataType)==null?void 0:c.toFlatJSON(i))||[],...this.writesValues.flatMap(e=>e.toFlatJSON(i)),...this.successCalls.flatMap(e=>e.toFlatJSON(i)),...this.errorCalls.flatMap(e=>e.toFlatJSON(i)),...this.inputs.flatMap(e=>e.toFlatJSON(i)),...this.outputs.flatMap(e=>e.toFlatJSON(i)),...this.internalCalls.flatMap(e=>e.toFlatJSON(i))])}toGenerationTarget(i=at){var c,e;const r=this.parent.type===d.Project?void 0:(c=i.seenEntityMaps)!=null&&c.has(this.parent.id)?i.seenEntityMaps.get(this.parent.id):this.parent.id;let a=this.id;return(e=i.seenEntityMaps)!=null&&e.has(this.id)&&(a=i.seenEntityMaps.get(this.id)),{id:a,type:this.type,name:this.name,description:this.description,calledByEntry:this.calledByEntry.map(f=>f.id),calledBySuccess:this.calledBySuccess.map(f=>f.id),calledByError:this.calledByError.map(f=>f.id),parent:r}}toFlatGenerationTarget(i=new Set){var a,c;return i.has(this.id)?[]:(i.add(this.id),[this.toGenerationTarget(),...((a=this.defaultValue)==null?void 0:a.toFlatGenerationTarget(i))||[],...((c=this.dataType)==null?void 0:c.toFlatGenerationTarget(i))||[],...this.writesValues.flatMap(e=>e.toFlatGenerationTarget(i)),...this.successCalls.flatMap(e=>e.toFlatGenerationTarget(i)),...this.errorCalls.flatMap(e=>e.toFlatGenerationTarget(i)),...this.inputs.flatMap(e=>e.toFlatGenerationTarget(i)),...this.outputs.flatMap(e=>e.toFlatGenerationTarget(i)),...this.internalCalls.flatMap(e=>e.toFlatGenerationTarget(i))])}clearErrors(){var i,r;return this.errors=[],this.inputs.forEach(a=>a.clearErrors()),this.outputs.forEach(a=>a.clearErrors()),this.successCalls.forEach(a=>a.clearErrors()),this.errorCalls.forEach(a=>a.clearErrors()),this.internalCalls.forEach(a=>a.clearErrors()),(i=this.dataType)==null||i.clearErrors(),(r=this.defaultValue)==null||r.clearErrors(),this}validate(){return this.errors=LMe(this),{success:!0}}async validateAsync(i={}){const r=z.YieldTracker.from(i);return this.errors=await $Me(this,{tracker:r}),{success:!0}}getErrors(){var r,a;return[...this.errors,...((r=this.defaultValue)==null?void 0:r.getErrors())||[],...((a=this.dataType)==null?void 0:a.getErrors())||[],...this.inputs.flatMap(c=>c.getErrors()),...this.internalCalls.flatMap(c=>c.getErrors()),...this.outputs.flatMap(c=>c.getErrors())]}async getErrorsAsync(i={}){const r=z.YieldTracker.from(i),a=[...this.errors];if(await r.tick(),this.defaultValue){const c=await this.defaultValue.getErrorsAsync({tracker:r});a.push(...c)}if(this.dataType){const c=await this.dataType.getErrorsAsync({tracker:r});a.push(...c)}for(const c of this.inputs){const e=await c.getErrorsAsync({tracker:r});a.push(...e)}for(const c of this.internalCalls){const e=await c.getErrorsAsync({tracker:r});a.push(...e)}for(const c of this.outputs){const e=await c.getErrorsAsync({tracker:r});a.push(...e)}return a}getShallowErrors(){return this.errors}getDefaultValue(){return this.defaultValue||null}setDefaultValue(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"set-default-value"))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[setDefaultValue] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("set-default-value",this.id),this;const a=this.defaultValue;if((a==null?void 0:a.id)!==(i==null?void 0:i.id)){if(a==null||a.remove({ignoreUpstream:!0},r),this.defaultValue=i,this.defaultValue){const c=this.readsValue;this.removeValueWriter(r),c==null||c.removeValueReader(this,r)}r==null||r.add(this,W.Affected)}return r==null||r.attemptAutoclose("set-default-value",this.id),this}clone(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.CloneEntity)),r=null,a=null,c=!0){var V,G,M,k,K;const e=Fr(r,this),f=this.toJSON(),h=a||x.UUID.uuid();f.inputs=[],f.id=h,f.version=x.UUID.uuid(),f.createdAt=(i==null?void 0:i.timestamp)||B().toISOString(),f.author=(i==null?void 0:i.author)||"1",f.previousVersion=null,f.deleted=!1,f.deletable=!0,f.editable=!0;const m=lr(f,e);r?m.setParent(r,i):m.setParent(this.parent,null),c&&m.subscribe(),m.initChildren(i),i==null||i.add(m,W.Added);const E=(V=this.dataType)==null?void 0:V.clone(i,m,x.UUID.uuid(),c);m.setDataType(E||null,i);const b=(G=this.defaultValue)==null?void 0:G.clone(i,m,x.UUID.uuid(),c);m.setDefaultValue(b||null,i);const A=(M=this.inputs)==null?void 0:M.map(ne=>ne.clone(i,m,x.UUID.uuid(),c));m.inputs=A;const _=(k=this.outputs)==null?void 0:k.map(ne=>ne.clone(i,m,x.UUID.uuid(),c));m.outputs=_;const P=(K=this.internalCalls)==null?void 0:K.map(ne=>ne.clone(i,m,x.UUID.uuid(),c));return m.internalCalls=P,i||m.captureVersion(),i==null||i.attemptAutoclose(w.CloneEntity,this.id),m}addInternalCall(i){return this.internalCalls.find(r=>r===i)||this.internalCalls.push(i),this}createInstance(i=this.project,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"create-instance")),a={}){const c={id:a.id||x.UUID.uuid(),version:a.version||x.UUID.uuid(),createdAt:(r==null?void 0:r.timestamp)||B().toISOString(),author:x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.VariableInstance,parent:i.toReference(),catchesError:a.catchesError||!1,defaultValue:a.defaultValue||null,successCalls:a.successCalls||[],errorCalls:a.errorCalls||[],inputs:a.inputs||[],outputs:a.outputs||[],writesValues:a.writesValues||[],internalCalls:a.internalCalls||[],readsValue:a.readsValue||null,calledByEntry:a.calledByEntry||[],calledBySuccess:a.calledBySuccess||[],calledByError:a.calledByError||[],error:a.error||null,declaration:this.toReference(),x:0,y:0},e=Ie(c,this.project);return e.hydrateAncestors(),e.setParent(i,r),r==null||r.add(e,W.Added),e.addSelfToProject(r),e.initChildren(r),r||e.captureVersion(),i===this.project&&this.project.addVariableInstance(e),r==null||r.attemptAutoclose("create-instance",this.id),e}removeUnrecognizedInputs(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveUnrecognizedInputs))){var h;if(!this.checkCanEdit(this,i))return z.Logger.warn(`[removeUnrecognizedInputs] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveUnrecognizedInputs,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];if(this.dataType&&!this.dataType.isObject())[...this.inputs].forEach(m=>{const E=m.remove({ignoreUpstream:!1},i);c.push(...E.removed),r.push(...E.updated)});else if(this.dataType&&this.dataType.hasStrictObjectStructure()){const m=[...((h=this.dataType)==null?void 0:h.entity).properties];[...this.inputs].forEach(E=>{if(!E.declaration){const A=E.remove({ignoreUpstream:!1},i);c.push(...A.removed),r.push(...A.updated);return}if(!m.find(A=>E.declaration===A)){const A=E.remove({ignoreUpstream:!1},i);c.push(...A.removed),r.push(...A.updated)}if(!_g(E)){const A=E.remove({ignoreUpstream:!1},i);c.push(...A.removed),r.push(...A.updated)}})}return this.inputs.filter((m,E)=>{const b=this.inputs.findIndex(_=>_.declaration===m.declaration&&_!==m);if(b===-1)return!1;const A=this.inputs[b];return B(A==null?void 0:A.createdAt).isSame(B(m.createdAt))?E>b:!!B(A==null?void 0:A.createdAt).isAfter(m.createdAt)}).forEach(m=>{const E=m.remove({ignoreUpstream:!1},i);c.push(...E.removed),r.push(...E.updated)}),i==null||i.attemptAutoclose(w.RemoveUnrecognizedInputs,this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}removeUnrecognizedOutputs(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"remove-unrecognized-variable-declaration-outputs"))){var h;if(!this.checkCanEdit(this,i))return z.Logger.warn(`[removeUnrecognizedOutputs] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveUnrecognizedOutputs,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];if(this.dataType&&!this.dataType.isObject())[...this.outputs].forEach(m=>{const E=m.remove({ignoreUpstream:!1},i);c.push(...E.removed),r.push(...E.updated)});else if(this.dataType&&this.dataType.hasStrictObjectStructure()){const m=[...((h=this.dataType)==null?void 0:h.entity).properties];[...this.outputs].forEach(E=>{if(!E.declaration){const A=E.remove({ignoreUpstream:!1},i);c.push(...A.removed),r.push(...A.updated);return}if(!m.find(A=>{var _;return((_=E.declaration)==null?void 0:_.id)===(A==null?void 0:A.id)})){const A=E.remove({ignoreUpstream:!1},i);c.push(...A.removed),r.push(...A.updated);return}if(!_g(E)){const A=E.remove({ignoreUpstream:!1},i);c.push(...A.removed),r.push(...A.updated)}})}return this.outputs.filter((m,E)=>{const b=this.outputs.findIndex(_=>_.declaration===m.declaration&&_!==m);if(b===-1)return!1;const A=this.outputs[b];return B(A==null?void 0:A.createdAt).isSame(B(m.createdAt))?E>b:!!B(A==null?void 0:A.createdAt).isAfter(m.createdAt)}).forEach(m=>{const E=m.remove({ignoreUpstream:!1},i);c.push(...E.removed),r.push(...E.updated)}),i==null||i.attemptAutoclose("remove-unrecognized-variable-declaration-outputs",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}removeUnrecognizedInternalCalls(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"remove-unrecognized-variable-declaration-internal-calls"))){const r=[],a=[],c=[],e=[];if(!this.dataType||!this.dataType.entity||![d.DefinitionEntity,d.PrimitiveEntity,d.BuiltInBaseEntity].includes(this.dataType.entity.type))[...this.internalCalls].forEach(h=>{const m=h.remove({ignoreUpstream:!1},i);c.push(...m.removed),r.push(...m.updated)});else if(this.dataType&&this.dataType.entity&&[d.DefinitionEntity,d.PrimitiveEntity,d.BuiltInBaseEntity].includes(this.dataType.entity.type)){const h=[...this.dataType.entity.getAllInteractiveMethods()],m=[...h].filter(E=>!h.some(b=>{var A,_;return b.id!==E.id&&(((A=b.implements)==null?void 0:A.id)===E.id||((_=b.extends)==null?void 0:_.id)===E.id)})&&!E.deleted);[...this.internalCalls].forEach(E=>{if(!E.declaration){const A=E.remove({ignoreUpstream:!1},i);c.push(...A.removed),r.push(...A.updated);return}if(!m.find(A=>E.declaration===A)){const A=E.remove({ignoreUpstream:!1},i);c.push(...A.removed),r.push(...A.updated);return}})}return this.internalCalls.filter((h,m)=>{const E=this.internalCalls.findIndex(A=>A.declaration===h.declaration&&A!==h);if(E===-1)return!1;const b=this.internalCalls[E];return B(b==null?void 0:b.createdAt).isSame(B(h.createdAt))?m>E:!!B(b==null?void 0:b.createdAt).isAfter(h.createdAt)}).forEach(h=>{const m=h.remove({ignoreUpstream:!1},i);c.push(...m.removed),r.push(...m.updated)}),i==null||i.attemptAutoclose("remove-unrecognized-variable-declaration-internal-calls",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}syncInputs(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"sync-variable-declaration-inputs"))){const r=[],a=[],c=[],e=[];if(this.dataType)if(this.dataType.entity){if(this.dataType.isObject()){const f=[...this.dataType.entity.properties];f.filter(E=>Dh(E)?!this.inputs.find(b=>{var A;return((A=b.declaration)==null?void 0:A.id)===E.id}):!1).forEach(E=>{const b={dataType:null,id:x.UUID.uuid(),version:x.UUID.uuid(),createdAt:(i==null?void 0:i.timestamp)||B().toISOString(),author:x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.InputMap,parentRelationType:null,parent:this.toReference(),name:null,description:null,codeName:null,declaration:E.toJSON(),defaultValue:null,index:E.index,readsValue:null},A=Ie(b,this.project);return A.hydrateAncestors(),i==null||i.add(A,W.Added),A.setParent(this,i),A.initChildren(i),i||A.captureVersion(),this.addInput(A,i),A}),this.inputs.filter(E=>!E.declaration).forEach(E=>{const b=f.find(A=>oe(A,this.project)===oe(E,this.project));b&&E.setDeclaration(b,i)})}}else return i==null||i.attemptAutoclose("sync-variable-declaration-inputs",this.id),{added:[],updated:[],removed:[],affected:[],self:this};else return i==null||i.attemptAutoclose("sync-variable-declaration-inputs",this.id),{added:[],updated:[],removed:[],affected:[],self:this};return this.inputs.forEach(f=>{const{updated:h,added:m,removed:E}=f.afterAllChildrenInitialized(i);a.push(...h),r.push(...m),c.push(...E)}),this.inputs.sort((f,h)=>f.index-h.index),i==null||i.attemptAutoclose("sync-variable-declaration-inputs",this.id),{added:C(r),updated:C(a),removed:C(c),affected:C(e),self:this}}syncOutputs(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SyncOutputs))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[syncOutputs] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.SyncOutputs,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];if(this.dataType)if(this.dataType.entity){if(this.dataType.isObject()){const f=[...this.dataType.entity.properties];f.filter(E=>Dh(E)?!this.outputs.find(b=>{var A;return((A=b.declaration)==null?void 0:A.id)===(E==null?void 0:E.id)}):!1).map(E=>{const b={dataType:null,id:x.UUID.uuid(),version:x.UUID.uuid(),createdAt:(i==null?void 0:i.timestamp)||B().toISOString(),author:x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.OutputMap,parent:this.toReference(),declaration:E==null?void 0:E.toJSON(),index:E.index,writesValues:[]},A=Ie(b,this.project);return A.hydrateAncestors(),i==null||i.add(A,W.Added),A.setParent(this,i),A.initChildren(i),i||A.captureVersion(),this.addOutput(A,i),A}),this.outputs.filter(E=>!E.declaration).forEach(E=>{const b=f.find(A=>oe(A,this.project)===oe(E,this.project));b&&E.setDeclaration(b,i)})}}else return i==null||i.attemptAutoclose(w.SyncOutputs,this.id),{added:[],updated:[],removed:[],affected:[],self:this};else return i==null||i.attemptAutoclose(w.SyncOutputs,this.id),{added:[],updated:[],removed:[],affected:[],self:this};return this.outputs.forEach(f=>{const{updated:h,added:m,removed:E}=f.afterAllChildrenInitialized(i);a.push(...h),r.push(...m),c.push(...E)}),this.outputs.sort((f,h)=>f.index-h.index),i==null||i.attemptAutoclose(w.SyncOutputs,this.id),{added:C(r),updated:C(a),removed:C(c),affected:C(e),self:this}}generateUnusedInternalCalls(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"generate-unused-internal-calls"))){const r=[],a=[],c=[],e=[];if(this.dataType)if(this.dataType.entity){if([d.DefinitionEntity,d.PrimitiveEntity,d.BuiltInBaseEntity].includes(this.dataType.entity.type)){const f=[...this.dataType.entity.getAllInteractiveMethods()];[...f].filter(E=>!f.some(b=>{var A,_;return b.id!==E.id&&(((A=b.implements)==null?void 0:A.id)===E.id||((_=b.extends)==null?void 0:_.id)===E.id)})&&!E.deleted).filter(E=>!this.internalCalls.find(A=>{var P,V,G,M,k;return(((P=A.declaration)==null?void 0:P.id)||((G=(V=A.initialData)==null?void 0:V.declaration)==null?void 0:G.entityId)||((k=(M=A.initialData)==null?void 0:M.declaration)==null?void 0:k.id))===E.id})).forEach(E=>{var A;const b=this.internalCalls.find(_=>{const P=Nf(_.declaration),V=Nf(E);return P.id===V.id});if(b&&((A=b.declaration)==null?void 0:A.id)!==E.id)b.setDeclaration(E);else{const _=E.createInternalCall(i,this);i==null||i.add(_,W.Added),this.addInternalCall(_)}})}}else return i==null||i.attemptAutoclose("generate-unused-internal-calls",this.id),{added:[],updated:[],removed:[],affected:[],self:this};else return i==null||i.attemptAutoclose("generate-unused-internal-calls",this.id),{added:[],updated:[],removed:[],affected:[],self:this};return i==null||i.attemptAutoclose("generate-unused-internal-calls",this.id),{added:C(r),updated:C(a),removed:C(c),affected:C(e),self:this}}setDataType(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetDataType))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[setDataType] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.SetDataType,this.id),this;const a=this.dataType;return(a==null?void 0:a.id)!==(i==null?void 0:i.id)&&(a==null||a.remove({ignoreUpstream:!0},r),this.dataType=i,this.subscribeToDependencies(),r==null||r.add(this,W.Affected)),r==null||r.attemptAutoclose(w.SetDataType,this.id),this}removeDataType(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveDataType))){return this.checkCanEdit(this,i)?(this.dataType&&(this.dataType.remove({ignoreUpstream:!0},i),i==null||i.add(this,W.Affected),this.dataType=null),i==null||i.attemptAutoclose(w.RemoveDataType,this.id),this):(z.Logger.warn(`[removeDataType] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveDataType,this.id),this)}getDataType(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"get-data-type"))){return(!this.dataType||this.dataType.inferred)&&this.project.initialized&&this.inferDataTypeAndSyncInstancesInputsAndOutputs(i),i==null||i.attemptAutoclose("get-data-type",this.id),this.dataType||null}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)}};R(wi,"repository",{APICreate:async(i,...r)=>i,APIUpdate:async(i,...r)=>i,APIDelete:async(i,...r)=>i,APIClone:async(i,...r)=>{},APILoad:async(i,...r)=>null,APILoadVersion:async(i,r,...a)=>null}),R(wi,"type",d.VariableDeclaration),R(wi,"USER_MANAGED_PARENT_TYPES",[...Dr,d.Project]),R(wi,"PARENT_TYPES",[...wi.USER_MANAGED_PARENT_TYPES]),R(wi,"MUTABLE_BASE_PROPERTIES",["name","codeName","description","constant","required","catchesError"]),R(wi,"INMUTABLE_BASE_PROPERTIES",["id","type","version","createdAt","author","previousVersion"]),R(wi,"BASE_PROPERTIES",[...wi.MUTABLE_BASE_PROPERTIES,...wi.INMUTABLE_BASE_PROPERTIES]),R(wi,"MUTABLE_META_PROPERTIES",[...wi.MUTABLE_BASE_PROPERTIES,"x","y"]),R(wi,"INMUTABLE_META_PROPERTIES",[...wi.INMUTABLE_BASE_PROPERTIES]),R(wi,"META_PROPERTIES",[...wi.MUTABLE_META_PROPERTIES,...wi.INMUTABLE_META_PROPERTIES]),R(wi,"MUTABLE_UPSTREAM_PROPERTIES",["calledBySuccess","calledByError","calledByEntry","readsValue"]),R(wi,"INMUTABLE_UPSTREAM_PROPERTIES",["parent"]),R(wi,"UPSTREAM_PROPERTIES",[...wi.MUTABLE_UPSTREAM_PROPERTIES,...wi.INMUTABLE_UPSTREAM_PROPERTIES]),R(wi,"MUTABLE_DOWNSTREAM_PROPERTIES",["writesValues","inputs","outputs","successCalls","errorCalls","internalCalls"]),R(wi,"INMUTABLE_DOWNSTREAM_PROPERTIES",["dataType","defaultValue"]),R(wi,"DOWNSTREAM_PROPERTIES",[...wi.MUTABLE_DOWNSTREAM_PROPERTIES,...wi.INMUTABLE_DOWNSTREAM_PROPERTIES]),R(wi,"PROPERTIES",[...wi.META_PROPERTIES,...wi.UPSTREAM_PROPERTIES,...wi.DOWNSTREAM_PROPERTIES]);let $p=wi;async function FMe(s,p={}){const i=z.YieldTracker.from(p),r=[...Rn(s),...R$(s),...Xa(s)],a=qt(s.errors,r);return await i.tick(),a}function KMe(s){const p=[...Rn(s),...R$(s),...Xa(s)];return qt(s.errors,p)}function R$(s){var r,a;const p=[],i=s.parent.type===d.VariableInstance&&((r=s.declaration)==null?void 0:r.type)===d.Property&&((a=s.declaration)==null?void 0:a.constant);if(i&&s.readsValue){const c=It({id:`${s.id}--${be.ValueReadingOverridesConstantProperty}`,message:`The '${s.type}' entity "${oe(s,s.project)}" with id "${s.id}" represents a constant property whose value cannot be overriden, but reads a value.`,severity:ve.Error,code:be.ValueReadingOverridesConstantProperty,entity:s});p.push(c.error)}if(i&&s.defaultValue){const c=It({id:`${s.id}--${be.DefaultValueOverridesConstantProperty}`,message:`The '${s.type}' entity "${oe(s,s.project)}" with id "${s.id}" represents a constant property whose value cannot be overridden, but has a 'defaultValue'.`,severity:ve.Error,code:be.DefaultValueOverridesConstantProperty,entity:s});p.push(c.error)}return p}const eDi=Object.freeze(Object.defineProperty({__proto__:null,validate:KMe,validateAsync:FMe,validateConstantValueOverride:R$},Symbol.toStringTag,{value:"Module"}));function Df(s){if(!s)throw new Error("[printDefEntityBuiltInFunctionality] 'entity' is required");if(s.type!==d.DefinitionEntity)throw new Error(`[printDefEntityBuiltInFunctionality] Entity of type "${s.type}" is not a definition entity.`);const p=NL(s).filter(r=>r.type===d.BuiltInBaseEntity);let i="No built-in functionality attached";return p.length&&(i=`System functionality: ${D_e(p.map(r=>r.name))}`),i}function tDi(s,p){var i;if(s.type===d.LiteralValue){let r=(i=s.value)==null?void 0:i.toString();try{r=JSON.stringify(s.value,null,2)}catch{}return`${s.type}: ${s.id} (${Bt(s,p)}) = ${r}`}return`${s.type}: ${s.id} (${Bt(s,p)})`}function Gg(s,p={nested:!1,omitTopLevelType:!1,firstLabel:"name",omitIdsFor:[],omitTypesFor:[],metadataIndent:1,ownMetadataIndent:1,omitFields:[],onlyFields:[]}){var E,b,A,_,P,V,G;const i={nested:p.nested??!1,omitTopLevelType:p.omitTopLevelType??!1,firstLabel:p.firstLabel??"name",omitIdsFor:p.omitIdsFor??[],omitTypesFor:p.omitTypesFor??[],metadataIndent:p.metadataIndent??1,omitFields:p.omitFields??[],onlyFields:p.onlyFields??[]};if(!s)return{lines:[{text:"Any (unspecified data type)",indentLevel:0}]};const r=p.onPrefix?p.onPrefix(s):"";function a(M){return i.onlyFields.length>0?i.onlyFields.includes(M):i.omitFields.length>0?!i.omitFields.includes(M):!0}const c=a("id")&&!i.omitIdsFor.includes(d.DataType)?s.id:"",e=a("type")&&!i.omitTypesFor.includes(d.DataType)?s.type:"",f=c;let h=`${r}${i.omitTopLevelType?"":e?`${e}: `:""}${f}`;h=h?h+" | ":"";let m="";if(s.interactiveEntities===!1?m+=` but only definition nodes ${s.asType?"as template ":""}that don't include non-interactive built-in functionality`:s.interactiveEntities===!0&&(m+=` but only definition nodes ${s.asType?"as template ":""}that extend or implement interactive built-in functionality`),s.staticEntities===!1?m?m+=" and that aren't a single global copy instance":m+=` but only definition nodes ${s.asType?"as template ":""}that aren't a single global copy instance`:s.staticEntities===!0&&(m?m+=" and that are a single global copy instance":m+=` but only definition nodes ${s.asType?"as template ":""}that are a single global copy instance`),s.actionEntities===!1?m?m+=" excluding executable/action nodes":m+=` excluding executable/action nodes ${s.asType?"templates ":""}`:s.actionEntities===!0&&(m?m+=" and not executable/action nodes":m+=" but not executable/action nodes"),s.entity&&(m=""),s.asType&&!m&&!((E=s.andChildrenGroup)!=null&&E.length)&&!((b=s.orChildrenGroup)!=null&&b.length)&&(m=" as template"),s.foreignKeyRef){const M=s.isList,k=Bt(s.foreignKeyRef,s.project),K=Bt(s.foreignKeyRef.parent,s.project);return{lines:[{text:M?`${h}List references to "${k}" from "${K}"${m}`:`${h}Reference to "${k}" from "${K}"${m}`,indentLevel:0}]}}else{if(s.foreignKeyAllowed)return{lines:[{text:s.isList?`${h}List of foreign key references${m}`:`${h}Foreign key reference${m}`,indentLevel:0}]};if(!s.entity){const M=s.isList;if(!((A=s.andChildrenGroup)!=null&&A.length)&&!((_=s.orChildrenGroup)!=null&&_.length))return{lines:[{text:M?`${h}List of an any data type${m}`:`${h}Any data type${m}`,indentLevel:0}]};const k=[];return M&&k.push({text:`${h}List of `,indentLevel:0}),s.andChildrenGroup&&((P=s.andChildrenGroup)==null?void 0:P.length)>1&&k.push({text:(M?"":h)+"All of the following data types (union):",indentLevel:M?0:-1}),(s.andChildrenGroup||[]).forEach((K,ne)=>{const X=ne===(s.andChildrenGroup||[]).length-1;Gg(K,{...i,omitTopLevelType:!0,onPrefix:p.onPrefix}).lines.forEach((ie,le)=>{const ye=le===0,Y=M?ie.indentLevel+1:ie.indentLevel;k.push({text:ye?"- "+ie.text:ie.text,indentLevel:ye?Y:Y+1})}),X||k.push({text:"AND",indentLevel:0})}),s.orChildrenGroup&&((V=s.orChildrenGroup)==null?void 0:V.length)>1&&k.push({text:(M?"":h)+"One of the following data types (intersection):",indentLevel:M?0:-1}),(s.orChildrenGroup||[]).forEach((K,ne)=>{const X=ne===(s.orChildrenGroup||[]).length-1;Gg(K,{...i,omitTopLevelType:!0,onPrefix:p.onPrefix}).lines.forEach((ie,le)=>{const ye=le===0,Y=M?ie.indentLevel+1:ie.indentLevel;k.push({text:ye?"- "+ie.text:ie.text,indentLevel:ye?Y:Y+1})}),X||k.push({text:"OR",indentLevel:0})}),{lines:k}}}if(s.entity.type===d.PrimitiveEntity){let M=s.entity.name;switch(s.entity.name){case fe.String:M="Text";break;case fe.KeyValue:M="Object";break;case fe.Number:M="Number";break;case fe.Boolean:M="Boolean";break;case fe.UUID:M="UUIDv4";break;case fe.Date:M="Date (string in ISO 8601 format)";break;case fe.File:M="File";break;case fe.Null:M="Null value";break;case fe.Untyped:M="Untyped value (explicit any)";break;case fe.Void:M="Void (no returned value)";break;case fe.Enum:M=`Enum (options: "${Et(s.options||[],'", "','" and "')}")`;break}return{lines:[{text:s.isList?`${h}List of ${M}s${m}`:`${h}${M.slice(0,1).toUpperCase()}${M.slice(1)}${m}`,indentLevel:0}]}}else if(s.entity.type===d.DefinitionEntity){let M=Bt(s.entity,s.project);M+=" ["+Df(s.entity)+"]";const k=a("id")&&!i.omitIdsFor.includes(d.DefinitionEntity)?s.entity.id:"",K=a("type")&&!i.omitTypesFor.includes(d.DefinitionEntity)?d.DefinitionEntity:"",ne=i.firstLabel==="name"?M:k,X=i.firstLabel==="name"?k:M,de=`${r}${i.omitTopLevelType?"":K?`${K}: `:""}${ne}${X?` (${X})`:""}`,ie=[];if(i.nested&&((G=s.entity.parent)==null?void 0:G.id)===s.id){const le=ri(s.entity,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});s.isList&&ie.push({text:`${h}List of:`,indentLevel:0}),le.lines.forEach(ye=>{ie.push({text:ye.text,indentLevel:s.isList?ye.indentLevel+1:ye.indentLevel})})}else ie.push({text:s.isList?`${h}List of ${de} values${m}`:h+de.slice(0,1).toUpperCase()+de.slice(1)+m,indentLevel:0});return{lines:ie}}else if(s.entity.type===d.BuiltInBaseEntity){const M=Ox(s.entity);return{lines:[{text:s.isList?`${h}List of ${M} values${m}`:h+M.slice(0,1).toUpperCase()+M.slice(1)+m,indentLevel:0}]}}else if(s.entity.type===d.LiteralValue){if(s.entity.name===fe.Null)return{lines:[{text:`${h}Null value`,indentLevel:0}]};if(s.entity.name===fe.Untyped)return{lines:[{text:`${h}Untyped value`,indentLevel:0}]};if(s.entity.name===fe.File)return{lines:[{text:`${h}File`,indentLevel:0}]};if(s.entity.name===fe.String||s.entity.name===fe.Enum)return{lines:[{text:`${h}"${s.entity.value}" text`,indentLevel:0}]};if(s.entity.name===fe.Number)return{lines:[{text:`${h}Number '${s.entity.value}'`,indentLevel:0}]};if(s.entity.name===fe.Boolean)return{lines:[{text:`${h}${s.entity.value} value`,indentLevel:0}]};if(s.entity.name===fe.UUID)return{lines:[{text:`${h}"${s.entity.value}" UUIDv4`,indentLevel:0}]};if(s.entity.name===fe.Date)return{lines:[{text:`${h}"${s.entity.value}" date`,indentLevel:0}]};if(s.entity.name===fe.KeyValue)return{lines:[{text:`${h}"${s.entity.value}" object`,indentLevel:0}]};if(s.entity.name===fe.Bytes)return{lines:[{text:`${h}"${s.entity.value}" bytes`,indentLevel:0}]}}return{lines:[{text:s.isList?`${h}List of ${Bt(s.entity,s.project)} values${m}`:`${h}${Bt(s.entity,s.project).slice(0,1).toUpperCase()+Bt(s.entity,s.project).slice(1)} value${m}`,indentLevel:0}]}}var qMe=(s=>(s.All="all",s.Callers="callers",s.ReadsValue="reads-value",s.WritesValues="writes-values",s.Declaration="declaration",s.Id="id",s.Type="type",s.Name="name",s.Description="description",s.Extends="extends",s.Implements="implements",s.CodeName="code-name",s.DataType="data-type",s))(qMe||{});function pp(s,p={nested:!1,omitTopLevelType:!1,firstLabel:"name",omitIdsFor:[],omitTypesFor:[],metadataIndent:1,ownMetadataIndent:1,omitFields:[],onlyFields:[]}){var c;if(!oI.includes(s.type))throw new Error(`[generateValueAssignmentLogLine] Entity type ${s.type} is not an entity with value type.`);const i={nested:p.nested??!1,omitTopLevelType:p.omitTopLevelType??!1,firstLabel:p.firstLabel??"name",omitIdsFor:p.omitIdsFor??[],omitTypesFor:p.omitTypesFor??[],metadataIndent:p.metadataIndent??1,omitFields:p.omitFields??[],onlyFields:p.onlyFields??[]},r=p.prefix??"Value assignment";let a=cv(s)?"**MISSING REQUIRED VALUE**":"";if(p.onMissingValue&&cv(s)&&(a=p.onMissingValue(s,a)),Yr.includes(s.type)&&s.readsValue){const f=s.readsValue,h=Bt(f,s.project);let m="";if(f.type===d.OutputMap||f.type===d.ArgumentDeclaration){const E=f.parent,b=Bt(E,s.project);m=`${f.type}: "${h}" (${f.id}) of ${E.type}: "${b}"`}else m=`${f.type}: "${h}" (${f.id})`;return`${r} (READING FROM) ${m}${a?` | ${a}`:""}`}else if(s.defaultValue){const e=ri(s.defaultValue,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});return`${r} (INLINE) ${e.lines[0].text}${a?` | ${a}`:""}`}else return s.type===d.ArgumentDeclaration?s.parent.parent.type===d.Loop?((c=s.parent.parent.currentIterationNumberArgumentDeclaration)==null?void 0:c.id)===s.id?`${r} INIT BY SYSTEM current loop iteration number${a?` | ${a}`:""}`:`${r} INIT BY SYSTEM with aggregate value from prev loop body${a?` | ${a}`:""}`:s.parent.parent.type===d.DefinitionEntity&&[...NL(s.parent.parent)].some(f=>s.project.diggestedBuiltInBaseEntitiesIds.has(f.id))?`${r} INIT BY SYSTEM when function is invoked${a?` | ${a}`:""}`:`${r} NONE${a?` | ${a}`:""}`:`${r} NONE${a?` | ${a}`:""}`}function SMe(s,p={nested:!1,omitTopLevelType:!1,firstLabel:"name",omitIdsFor:[],omitTypesFor:[],metadataIndent:1,ownMetadataIndent:1,omitFields:[],onlyFields:[]}){if(!$i.includes(s.type))throw new Error(`[generateWritesValuesToLogLine] Entity type ${s.type} is not a value writing type.`);const i={nested:p.nested??!1,omitTopLevelType:p.omitTopLevelType??!1,firstLabel:p.firstLabel??"name",omitIdsFor:p.omitIdsFor??[],omitTypesFor:p.omitTypesFor??[],metadataIndent:p.metadataIndent??1,omitFields:p.omitFields??[],onlyFields:p.onlyFields??[]},r=[],a=p.prefix??"Writes values to";return s.writesValues.length?s.writesValues.forEach(c=>{const e=Bt(c,s.project);let f="";if(c.type===d.InputMap){const h=c.parent,m=Bt(h,s.project);f=`${c.type}: "${e}" (${c.id}) of ${h.type}: "${m}"`}else f=`${c.type}: "${e}" (${c.id})`;r.push({text:`${a} ${f}`,indentLevel:i.metadataIndent})}):r.push({text:`${a} NONE`,indentLevel:i.metadataIndent}),{lines:r}}function ph(s,p={nested:!1,omitTopLevelType:!1,firstLabel:"name",omitIdsFor:[],omitTypesFor:[],metadataIndent:1,ownMetadataIndent:1,omitFields:[],onlyFields:[]}){const i={nested:p.nested??!1,omitTopLevelType:p.omitTopLevelType??!1,firstLabel:p.firstLabel??"name",omitIdsFor:p.omitIdsFor??[],omitTypesFor:p.omitTypesFor??[],metadataIndent:p.metadataIndent??1,omitFields:p.omitFields??[],onlyFields:p.onlyFields??[]},r=[];if(s.length>0){r.push({text:`${p.label??"OUTPUTS:"}`,indentLevel:i.metadataIndent});for(const a of s)if(a){const c=ri(a,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});c.lines.forEach((e,f)=>{const h=f===0,m=f===c.lines.length-1;r.push({text:h?"- "+e.text:e.text,indentLevel:h?e.indentLevel+2:e.indentLevel+3}),m&&r.push({text:"",indentLevel:e.indentLevel+2})})}}else r.push({text:`${p.label??"OUTPUTS:"} None`,indentLevel:i.metadataIndent});return{lines:r}}function ad(s,p={nested:!1,omitTopLevelType:!1,firstLabel:"name",omitIdsFor:[],omitTypesFor:[],metadataIndent:1,ownMetadataIndent:1,omitFields:[],onlyFields:[]}){const i={nested:p.nested??!1,omitTopLevelType:p.omitTopLevelType??!1,firstLabel:p.firstLabel??"name",omitIdsFor:p.omitIdsFor??[],omitTypesFor:p.omitTypesFor??[],metadataIndent:p.metadataIndent??1,omitFields:p.omitFields??[],onlyFields:p.onlyFields??[]},r=[];if(s.length>0){r.push({text:`${p.label??"INPUTS:"}`,indentLevel:i.metadataIndent});for(const a of s)if(a){const c=ri(a,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});c.lines.forEach((e,f)=>{const h=f===0,m=f===c.lines.length-1;r.push({text:h?"- "+e.text:e.text,indentLevel:h?e.indentLevel+(p.firstListItemIndent??2):e.indentLevel+(p.otherListItemIndent??3)}),m&&r.push({text:"",indentLevel:e.indentLevel+2})})}}else r.push({text:`${p.label??"INPUTS:"} None`,indentLevel:i.metadataIndent});return{lines:r}}function sp(s,p={nested:!1,omitTopLevelType:!1,firstLabel:"name",omitIdsFor:[],omitTypesFor:[],metadataIndent:1,ownMetadataIndent:1,omitFields:[],onlyFields:[]}){const i={nested:p.nested??!1,omitTopLevelType:p.omitTopLevelType??!1,firstLabel:p.firstLabel??"name",omitIdsFor:p.omitIdsFor??[],omitTypesFor:p.omitTypesFor??[],metadataIndent:p.metadataIndent??1,omitFields:p.omitFields??[],onlyFields:p.onlyFields??[]},r=[],a=i.onlyFields.length>0&&i.onlyFields.includes("data-type")||i.omitFields.length>0&&!i.omitFields.includes("data-type")||i.onlyFields.length===0&&i.omitFields.length===0;if(!s)a&&r.push({text:"Data Type: Any (unspecified data type)",indentLevel:0});else if(a){const c=ri(s,{...i,nested:!0,omitTopLevelType:!0,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});c.lines.length===1?r.push({text:`Data Type: ${c.lines[0].text}`,indentLevel:0}):(r.push({text:"Data Type:",indentLevel:0}),c.lines.forEach(e=>{r.push({text:e.text,indentLevel:e.indentLevel+1})}))}return{lines:r}}function BT(s,p={nested:!1,omitTopLevelType:!1,firstLabel:"name",omitIdsFor:[],omitTypesFor:[],metadataIndent:1,ownMetadataIndent:1,omitFields:[],onlyFields:[]}){var a;const i={nested:p.nested??!1,omitTopLevelType:p.omitTopLevelType??!1,firstLabel:p.firstLabel??"name",omitIdsFor:p.omitIdsFor??[],omitTypesFor:p.omitTypesFor??[],metadataIndent:p.metadataIndent??1,omitFields:p.omitFields??[],onlyFields:p.onlyFields??[]},r=[];if(s.error&&(((a=s.error)==null?void 0:a.writesValues)||[]).length>0){const c="CAUGHT ERROR value read by:";r.push({text:c,indentLevel:i.metadataIndent}),s.error.writesValues.forEach(f=>{const h=Bt(f,s.project);let m="";if(f.type===d.InputMap){const E=f.parent,b=Bt(E,s.project);m=`${f.type}: "${h}" (${f.id}) of ${E.type}: "${b}"`}else m=`${f.type}: "${h}" (${f.id})`;r.push({text:m,indentLevel:i.metadataIndent+1})})}return{lines:r}}function ri(s,p={nested:!1,omitTopLevelType:!1,firstLabel:"name",omitIdsFor:[],omitTypesFor:[],metadataIndent:1,ownMetadataIndent:1,omitFields:[],onlyFields:[]}){var P,V,G,M,k,K,ne,X,de,ie,le;const i={nested:p.nested??!1,omitTopLevelType:p.omitTopLevelType??!1,firstLabel:p.firstLabel??"name",omitIdsFor:p.omitIdsFor??[],omitTypesFor:p.omitTypesFor??[],metadataIndent:p.metadataIndent??1,omitFields:p.omitFields??[],onlyFields:p.onlyFields??[]};function r(ye){return i.onlyFields.length>0?i.onlyFields.includes(ye):i.omitFields.length>0?!i.omitFields.includes(ye):!0}const a=p.ownMetadataIndent??p.metadataIndent??1,c=p.onPrefix?p.onPrefix(s):"";if(s.type===d.LiteralValue){let ye=(P=s.value)==null?void 0:P.toString();try{ye=JSON.stringify(s.value,null,2).replace(/\n/g,"")}catch{}if(s.valueAsTypeList&&!s.valueAsTypeSingle&&s.valueAsTypeList.length>0)ye=Et(s.valueAsTypeList.map(he=>`${he.type} "${Bt(he,s.project)}" (${he.id})`),", "," and ");else if(s.valueAsTypeSingle){const he=s.valueAsTypeSingle;ye=`${he.type} "${Bt(he,s.project)}" (${he.id})`}let Y="";switch(s.name){case fe.Bytes:Y="Bytes";break;case fe.String:Y="Text";break;case fe.KeyValue:Y="Object";break;case fe.Number:Y="Number";break;case fe.Boolean:Y="Boolean";break;case fe.UUID:Y="Unique identifier UUIDv4";break;case fe.Date:Y="Date (string in ISO 8601 format)";break;case fe.File:Y="File";break;case fe.Null:Y="Null value (explicit empty)";break;case fe.Untyped:Y="Untyped value (explicit any)";break;case fe.Void:Y="Void (no returned value)";break;case fe.Enum:Y="Enum (set of text options)";break;case fe.EntityTemplate:{Y="Entity (as type/constructor)",s.valueAsTypeList&&!s.valueAsTypeSingle&&(Y+=" list");break}default:Y=Bt(s,s.project);break}r("name")||(Y="");const ee=r("id")&&!i.omitIdsFor.includes(d.LiteralValue)?s.id:"",pe=r("type")&&!i.omitTypesFor.includes(d.LiteralValue)?s.type:"",se=i.firstLabel==="name"?Y:ee,ue=i.firstLabel==="name"?ee:Y;return{lines:[{text:`${c}${i.omitTopLevelType?"":pe?`${pe}: `:""}${se}${ue?` (${ue})`:""} = ${ye}`,indentLevel:0}]}}if(s.type===d.PrimitiveEntity){const ye=r("id")&&!i.omitIdsFor.includes(d.PrimitiveEntity)?s.id:"",Y=r("type")&&!i.omitTypesFor.includes(d.PrimitiveEntity)?s.type:"";let ee="";switch(s.name){case fe.Bytes:ee="Bytes";break;case fe.String:ee="Text";break;case fe.KeyValue:ee="Object";break;case fe.Number:ee="Number";break;case fe.Boolean:ee="Boolean";break;case fe.UUID:ee="Unique identifier UUIDv4";break;case fe.Date:ee="Date (string in ISO 8601 format)";break;case fe.File:ee="File";break;case fe.Null:ee="Null value (explicit empty)";break;case fe.Untyped:ee="Untyped value (explicit any)";break;case fe.Void:ee="Void (no returned value)";break;case fe.Enum:ee="Enum (set of text options)";break;case fe.EntityTemplate:{ee="Entity as type/constructor";break}default:ee=Bt(s,s.project);break}r("name")||(ee="");const pe=i.firstLabel==="name"?ee:ye,se=i.firstLabel==="name"?ye:ee,ue=[{text:`${c}${i.omitTopLevelType?"":Y?`${Y}: `:""}${pe}${se?` (${se})`:""}`,indentLevel:0}],he=((V=s.description)==null?void 0:V.replace(/[\r\n]+/g," ").trim())||"";if(he&&r("description")&&ue.push({text:`${he}`,indentLevel:a}),s.extends&&r("extends")){const ge=Bt(s.extends,s.project);ue.push({text:`Extends: ${ge}`,indentLevel:a})}return{lines:ue}}if(s.type===d.DataType){const ye=Gg(s,{...i,onPrefix:p.onPrefix}),Y=[];return ye.lines.forEach(ee=>{Y.push({text:ee.text,indentLevel:ee.indentLevel+1})}),{lines:Y}}const e=r("name")?Bt(s,s.project):"",f=r("id")&&!i.omitIdsFor.includes(s.type)?s.id:"",h=r("type")&&!i.omitTypesFor.includes(s.type)?s.type:"",m=i.firstLabel==="name"?e:f,E=i.firstLabel==="name"?f:e,A=[{text:`${c}${i.omitTopLevelType?"":h?`${h}: `:""}${m}${E?` (${E})`:""}`,indentLevel:0}],_=((G=s.description)==null?void 0:G.replace(/[\r\n]+/g," ").trim())||"";if(_&&r("description")&&A.push({text:`${_}`,indentLevel:a}),s.codeName&&r("code-name")&&A.push({text:`Explicit name when compiled: ${s.codeName}`,indentLevel:a}),s.declaration&&r("declaration")){const ye=s;let Y="";ye.declaration.type!==d.VariableDeclaration&&(Y=`${ye.declaration.type}: `);let ee="";A.push({text:`Declaration ${Y}${ye.declaration.id}${ee}`,indentLevel:a})}if(Yr.includes(s.type)&&r("reads-value")&&!s.defaultValue&&(!Rt.includes(s.type)||!s.throws)){const ye=pp(s,{prefix:"Value assignment",...i,onMissingValue:p.onMissingValue});A.push({text:ye,indentLevel:a})}if($i.includes(s.type)&&r("writes-values")){let ye="Writes values to";Ct.includes(s.type)?ye="Full returned value read by":Mt.includes(s.type)&&(ye="Main (full) value written to"),SMe(s,{prefix:ye,...i}).lines.forEach(ee=>{A.push({text:ee.text,indentLevel:ee.indentLevel})})}if(i.nested)switch(s.type){case d.Search:{if(A.push({text:`QUERY: \`${(s.query||"").replace("{{::","{{::input-map-value:")}\``,indentLevel:a}),A.push({text:`Error handling: ${s.catchesError?"YES (catches)":"NO (can throw)"}`,indentLevel:a}),s.inputsDeclarations.length>0){A.push({text:"INPUTS (inline-declared):",indentLevel:i.metadataIndent});for(const pe of s.inputsDeclarations)if(pe){const se=ri(pe,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});se.lines.forEach((ue,he)=>{const ge=he===0,Re=he===se.lines.length-1;A.push({text:ge?"- "+ue.text:ue.text,indentLevel:ge?ue.indentLevel+2:ue.indentLevel+3}),Re&&A.push({text:"",indentLevel:ue.indentLevel+2})})}}else A.push({text:"INPUTS: None",indentLevel:i.metadataIndent});BT(s,{...i,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(pe=>{A.push({text:pe.text,indentLevel:pe.indentLevel})}),A.push({text:"OUTPUT:",indentLevel:a});const Y=s.getDataType(null);if(!Y)A.push({text:"Data Type: Any (unspecified data type)",indentLevel:a+1});else{const pe=ri(Y,{...i,nested:!0,omitTopLevelType:!0,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});pe.lines.length===1?A.push({text:`Data Type: ${pe.lines[0].text}`,indentLevel:2}):pe.lines.forEach(se=>{A.push({text:se.text,indentLevel:se.indentLevel+1})})}const ee=s.outputs.filter(pe=>!!pe.writesValues.length);ee.length>0&&ph(ee,{label:"DESTRUCT RETURNED PROPERTIES: ",...i,onPrefix:p.onPrefix}).lines.forEach(se=>{A.push({text:se.text,indentLevel:se.indentLevel})});break}case d.Condition:{((M=s.declaration)==null?void 0:M.id)!==re.condition["condition-group-and"].id&&((k=s.declaration)==null?void 0:k.id)!==re.condition["condition-group-or"].id&&ad(s.inputs,{...i,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(Y=>{A.push({text:Y.text,indentLevel:Y.indentLevel})}),((K=s.declaration)==null?void 0:K.id)===re.condition["condition-group-and"].id?(A.push({text:"NESTED AND (all conditions must be true)",indentLevel:a}),(s.andChildrenGroup||[]).forEach((ye,Y)=>{const ee=ri(ye,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}),pe=Y===(s.andChildrenGroup||[]).length-1;ee.lines.forEach((se,ue)=>{const he=ue===0;A.push({text:he?"- "+se.text:se.text,indentLevel:he?se.indentLevel+2:se.indentLevel+3})}),pe||A.push({text:"AND",indentLevel:a+2})})):((ne=s.declaration)==null?void 0:ne.id)===re.condition["condition-group-or"].id&&(A.push({text:"NESTED OR (at least one condition must be true)",indentLevel:a}),(s.orChildrenGroup||[]).forEach((ye,Y)=>{const ee=ri(ye,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}),pe=Y===(s.orChildrenGroup||[]).length-1;ee.lines.forEach((se,ue)=>{const he=ue===0;A.push({text:he?"- "+se.text:se.text,indentLevel:he?se.indentLevel+2:se.indentLevel+3})}),pe||A.push({text:"OR",indentLevel:a+2})}));break}case d.ActionDescriptor:{if(ad(s.inputs,{...i,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(pe=>{A.push({text:pe.text,indentLevel:pe.indentLevel})}),s.error&&(A.push({text:"POTENTIAL ERROR:",indentLevel:a}),ri(s.error,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(se=>{A.push({text:se.text,indentLevel:se.indentLevel+2})})),yKe(s)===d.Loop){const pe=hKe(s);pe&&(A.push({text:"Body:",indentLevel:a}),ri(pe,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(ue=>{A.push({text:ue.text,indentLevel:ue.indentLevel+2})}))}A.push({text:"OUTPUT:",indentLevel:a});const ee=s.getDataType(null);if(!ee)A.push({text:"Data Type: Any (unspecified data type)",indentLevel:a+1});else{const pe=ri(ee,{...i,nested:!0,omitTopLevelType:!0,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});pe.lines.length===1?A.push({text:`Data Type: ${pe.lines[0].text}`,indentLevel:2}):pe.lines.forEach(se=>{A.push({text:se.text,indentLevel:se.indentLevel+1})})}break}case d.GlobalEvent:case d.FunctionDeclaration:{ad(s.inputs,{...i,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(ee=>{A.push({text:ee.text,indentLevel:ee.indentLevel})}),A.push({text:"OUTPUT:",indentLevel:a});const Y=s.getDataType(null);if(!Y)A.push({text:"Data Type: Any (unspecified data type)",indentLevel:a+1});else{const ee=ri(Y,{...i,nested:!0,omitTopLevelType:!0,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});ee.lines.length===1?A.push({text:`Data Type: ${ee.lines[0].text}`,indentLevel:2}):ee.lines.forEach(pe=>{A.push({text:pe.text,indentLevel:pe.indentLevel+1})})}break}case d.InputMap:{const ye=s.getDataType(null);if(sp(ye,{...i,onPrefix:p.onPrefix}).lines.forEach(ee=>{A.push({text:ee.text,indentLevel:ee.indentLevel+1})}),s.defaultValue){const pe=`Value assignment (INLINE): ${ri(s.defaultValue,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines[0].text}`;A.push({text:pe,indentLevel:1})}break}case d.ValueDescriptor:{const ye=s.getDataType(null);if(sp(ye,{...i,onPrefix:p.onPrefix}).lines.forEach(ee=>{A.push({text:ee.text,indentLevel:ee.indentLevel+1})}),((X=s.parent)==null?void 0:X.type)===d.Search){const ee=s.parent.inputs.find(pe=>{var se;return((se=pe.declaration)==null?void 0:se.id)===s.id});ee&&ri(ee,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:[...i.omitFields,"declaration","data-type","name"],onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(se=>{A.push({text:se.text,indentLevel:se.indentLevel})})}else if(s.defaultValue){const pe=`Value assignment (INLINE): ${ri(s.defaultValue,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines[0].text}`;A.push({text:pe,indentLevel:1})}break}case d.DefinitionEntity:{A.push({text:"["+Df(s)+"]",indentLevel:a});const ye=[];if(s.abstract&&ye.push("abstract"),s.static&&ye.push("static"),s.additionalProperties?ye.push("additional properties allowed"):ye.push("no additional properties allowed"),A.push({text:`Modifiers: ${ye.join(", ")}`,indentLevel:a}),(de=s.implements)!=null&&de.length&&(A.push({text:"Implements:",indentLevel:a}),s.implements.forEach(Y=>{const ee=Bt(Y,s.project),pe=i.firstLabel==="name"?ee:Y.id,se=i.firstLabel==="name"?Y.id:ee,ue=r("type")&&!i.omitTypesFor.includes(Y.type)?Y.type:"",he=`${ue?ue+": ":""}${pe}${se?` (${se})`:""}`;A.push({text:`- ${he}`,indentLevel:a+1})})),s.extends){const Y=Bt(s.extends,s.project),ee=i.firstLabel==="name"?Y:s.extends.id,pe=i.firstLabel==="name"?s.extends.id:Y,se=r("type")&&!i.omitTypesFor.includes(s.extends.type)?s.extends.type:"",ue=`${se?se+": ":""}${ee}${pe?` (${pe})`:""}`;A.push({text:`Extends: ${ue}`,indentLevel:a})}if(s.allPropertiesImplement&&(A.push({text:"ALL PROPERTIES IMPLEMENT:",indentLevel:a}),ri(s.allPropertiesImplement,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:1,ownMetadataIndent:0,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(ee=>{A.push({text:ee.text,indentLevel:ee.indentLevel+1})})),s.additionalPropertiesDataType&&(A.push({text:"ADDITIONAL PROPERTIES DATA TYPE:",indentLevel:a}),ri(s.additionalPropertiesDataType,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:1,ownMetadataIndent:0,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(ee=>{A.push({text:ee.text,indentLevel:ee.indentLevel+1})})),s.ownDeclaredProperties.length>0){A.push({text:"PROPERTIES:",indentLevel:a});for(const Y of s.properties){const ee=ri(Y,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});ee.lines.forEach((pe,se)=>{const ue=se===0,he=se===ee.lines.length-1;A.push({text:ue?"- "+pe.text:pe.text,indentLevel:ue?pe.indentLevel+2:pe.indentLevel+3}),he&&A.push({text:"",indentLevel:pe.indentLevel+2})})}}if(s.methods.length>0){A.push({text:"METHODS:",indentLevel:a});for(const Y of s.methods){const ee=ri(Y,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});ee.lines.forEach((pe,se)=>{const ue=se===0,he=se===ee.lines.length-1;A.push({text:ue?"- "+pe.text:pe.text,indentLevel:ue?pe.indentLevel+2:pe.indentLevel+3}),he&&A.push({text:"",indentLevel:pe.indentLevel+2})})}}if(s.abstractMethods.length>0){A.push({text:"Abstract methods (action-descriptors):",indentLevel:1});for(const Y of s.abstractMethods){const ee=ri(Y,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});ee.lines.forEach((pe,se)=>{const ue=se===0,he=se===ee.lines.length-1;A.push({text:ue?"- "+pe.text:pe.text,indentLevel:ue?pe.indentLevel+2:pe.indentLevel+3}),he&&A.push({text:"",indentLevel:pe.indentLevel+2})})}}break}case d.BuiltInBaseEntity:{const ye=[];if(s.abstract&&ye.push("abstract"),s.static&&ye.push("static"),s.additionalProperties?ye.push("additional properties allowed"):ye.push("no additional properties allowed"),A.push({text:`Modifiers: ${ye.join(", ")}`,indentLevel:a}),s.extends){const Y=Bt(s.extends,s.project),ee=i.firstLabel==="name"?Y:s.extends.id,pe=i.firstLabel==="name"?s.extends.id:Y,se=r("type")&&!i.omitTypesFor.includes(s.extends.type)?s.extends.type:"",ue=`${se?se+": ":""}${ee}${pe?` (${pe})`:""}`;A.push({text:`Extends: ${ue}`,indentLevel:a})}if(s.allPropertiesImplement&&(A.push({text:"ALL PROPERTIES IMPLEMENT:",indentLevel:a}),ri(s.allPropertiesImplement,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:1,ownMetadataIndent:0,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(ee=>{A.push({text:ee.text,indentLevel:ee.indentLevel+1})})),s.additionalPropertiesDataType&&(A.push({text:"ADDITIONAL PROPERTIES DATA TYPE:",indentLevel:a}),ri(s.additionalPropertiesDataType,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:1,ownMetadataIndent:0,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(ee=>{A.push({text:ee.text,indentLevel:ee.indentLevel+1})})),s.ownDeclaredProperties.length>0){A.push({text:"PROPERTIES:",indentLevel:a});for(const Y of s.properties){const ee=ri(Y,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});ee.lines.forEach((pe,se)=>{const ue=se===0,he=se===ee.lines.length-1;A.push({text:ue?"- "+pe.text:pe.text,indentLevel:ue?pe.indentLevel+2:pe.indentLevel+3}),he&&A.push({text:"",indentLevel:pe.indentLevel+2})})}}if(s.abstractMethods.length>0){A.push({text:"ABSTRACT METHODS (action-descriptors):",indentLevel:a});for(const Y of s.abstractMethods){const ee=ri(Y,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});ee.lines.forEach((pe,se)=>{const ue=se===0,he=se===ee.lines.length-1;A.push({text:ue?"- "+pe.text:pe.text,indentLevel:ue?pe.indentLevel+2:pe.indentLevel+3}),he&&A.push({text:"",indentLevel:pe.indentLevel+2})})}}break}case d.Property:{if(s.abstract||s.static||s.constant||s.private||s.required){const ye=[];s.abstract&&ye.push("abstract"),s.static&&ye.push("static"),s.constant&&ye.push("constant"),s.private&&ye.push("private"),s.required&&ye.push("required"),s.unique&&ye.push("unique"),A.push({text:`Modifiers: ${ye.join(", ")}`,indentLevel:a})}if((ie=s.implements)!=null&&ie.length&&(A.push({text:"Implements:",indentLevel:a}),s.implements.forEach(ye=>{const Y=Bt(ye,s.project),ee=i.firstLabel==="name"?Y:ye.id,pe=i.firstLabel==="name"?ye.id:Y,se=r("type")&&!i.omitTypesFor.includes(ye.type)?ye.type:"",ue=`${se?se+": ":""}${ee}${pe?` (${pe})`:""}`;A.push({text:`- ${ue}`,indentLevel:a+1})})),s.extends){const ye=Bt(s.extends,s.project),Y=Bt(s.extends.parent,s.project),ee=i.firstLabel==="name"?ye:s.extends.id,pe=i.firstLabel==="name"?s.extends.id:ye,se=r("type")&&!i.omitTypesFor.includes(s.extends.type)?s.extends.type:"",ue=`${se?se+": ":""}${ee}${pe?` (${pe})`:""}`;A.push({text:`Extends: ${ue} -- from: ${Y}`,indentLevel:a})}if(!s.extends){const ye=s.getDataType(null);sp(ye,{...i,onPrefix:p.onPrefix}).lines.forEach(ee=>{A.push({text:ee.text,indentLevel:ee.indentLevel+1})})}if(s.defaultValue){const Y=`Value assignment (INLINE): ${ri(s.defaultValue,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines[0].text}`;A.push({text:Y,indentLevel:a})}break}case d.ArgumentDeclaration:{if(s.required||s.constant){const ee=[];s.constant&&ee.push("constant (mandatory)"),s.required&&ee.push("required"),A.push({text:`Modifiers: ${ee.join(", ")}`,indentLevel:a})}(le=s.implements)!=null&&le.length&&(A.push({text:"Implements:",indentLevel:a}),s.implements.forEach(ee=>{const pe=Bt(ee,s.project),se=i.firstLabel==="name"?pe:ee.id,ue=i.firstLabel==="name"?ee.id:pe,he=r("type")&&!i.omitTypesFor.includes(ee.type)?ee.type:"",ge=`${he?he+": ":""}${se}${ue?` (${ue})`:""}`;A.push({text:`- ${ge}`,indentLevel:a+1})}));const ye=s.getDataType(null);if(sp(ye,{...i,onPrefix:p.onPrefix}).lines.forEach(ee=>{A.push({text:ee.text,indentLevel:ee.indentLevel+1})}),s.defaultValue){const pe=`Default value (INLINE): ${ri(s.defaultValue,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines[0].text}`;A.push({text:pe,indentLevel:a})}break}case d.OutputMap:{const ye=s.getDataType(null);sp(ye,{...i,onPrefix:p.onPrefix}).lines.forEach(ee=>{A.push({text:ee.text,indentLevel:ee.indentLevel+1})});break}case d.ContinueStatement:case d.BreakStatement:case d.ReturnStatement:{const ye=s.getDataType(null);if(sp(ye,{...i,onPrefix:p.onPrefix}).lines.forEach(se=>{A.push({text:se.text,indentLevel:se.indentLevel+1})}),s.throws){const se=pp(s.throws,{prefix:"THROWS ERROR:",onMissingValue:p.onMissingValue});A.push({text:se,indentLevel:a})}if(s.defaultValue){const ue=`Value assignment (INLINE): ${ri(s.defaultValue,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines[0].text}`;A.push({text:ue,indentLevel:a})}const ee=s.outputs.filter(se=>!se.readsValue&&!se.defaultValue);ee.length>0&&ad(ee,{label:"UNUSED IN-PROPERTIES: ",...i,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(ue=>{A.push({text:ue.text,indentLevel:ue.indentLevel})});const pe=s.outputs.filter(se=>se.readsValue||se.defaultValue);pe.length>0&&ad(pe,{label:"PROPERTIES ASSIGNED: ",...i,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(ue=>{A.push({text:ue.text,indentLevel:ue.indentLevel})});break}case d.VariableInstance:case d.VariableDeclaration:{A.push({text:`Error handling: ${s.catchesError?"YES (catches)":"NO (can throw)"}`,indentLevel:a});const ye=s.getDataType(null);if(sp(ye,{...i,onPrefix:p.onPrefix}).lines.forEach(xe=>{A.push({text:xe.text,indentLevel:xe.indentLevel+1})}),s.defaultValue){const Ge=`Value assignment (INLINE): ${ri(s.defaultValue,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines[0].text}`;A.push({text:Ge,indentLevel:a})}const ee=s.unusedInputs;ee.length>0&&ad(ee,{label:"UNUSED IN-PROPERTIES: ",...i,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(Ge=>{A.push({text:Ge.text,indentLevel:Ge.indentLevel})});const pe=s.usedInputs;pe.length>0&&ad(pe,{label:"PROPERTIES ASSIGNED: ",...i,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(Ge=>{A.push({text:Ge.text,indentLevel:Ge.indentLevel})}),BT(s,{...i,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(xe=>{A.push({text:xe.text,indentLevel:xe.indentLevel})});const ue=s.unusedOutputs;ue.length>0&&ph(ue,{label:"UNUSED OUT-PROPERTIES: ",...i,onPrefix:p.onPrefix,omitFields:[...i.omitFields]}).lines.forEach(Ge=>{A.push({text:Ge.text,indentLevel:Ge.indentLevel})});const he=s.usedOutputs;he.length>0&&ph(he,{label:"DESTRUCT PROPS READ BY OTHERS: ",...i,onPrefix:p.onPrefix,omitFields:[...i.omitFields]}).lines.forEach(Ge=>{A.push({text:Ge.text,indentLevel:Ge.indentLevel})});const ge=s.unusedInternalCalls;if(ge.length>0){A.push({text:"UNUSED METHODS (available in its instance):",indentLevel:a});for(const xe of ge){const Ge=ri(xe,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});Ge.lines.forEach((Ze,Je)=>{const Se=Je===0,tt=Je===Ge.lines.length-1;A.push({text:Se?"- "+Ze.text:Ze.text,indentLevel:Se?Ze.indentLevel+2:Ze.indentLevel+3}),tt&&A.push({text:"",indentLevel:Ze.indentLevel+2})})}}const Re=s.usedInternalCalls;if(Re.length>0){A.push({text:"METHOD CALLS:",indentLevel:a});for(const xe of Re){const Ge=ri(xe,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});Ge.lines.forEach((Ze,Je)=>{const Se=Je===0,tt=Je===Ge.lines.length-1;A.push({text:Se?"- "+Ze.text:Ze.text,indentLevel:Se?Ze.indentLevel+2:Ze.indentLevel+3}),tt&&A.push({text:"",indentLevel:Ze.indentLevel+2})})}}break}case d.Loop:{A.push({text:`Error handling: ${s.catchesError?"YES (catches)":"NO (can throw)"}`,indentLevel:a}),s.inputs.length>0&&ad(s.inputs,{...i,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(se=>{A.push({text:se.text,indentLevel:se.indentLevel})}),BT(s,{...i,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(pe=>{A.push({text:pe.text,indentLevel:pe.indentLevel})}),A.push({text:"OUTPUT:",indentLevel:a});const Y=s.getDataType(null);if(!Y)A.push({text:"Data Type: Any (unspecified data type)",indentLevel:a+1});else{const pe=ri(Y,{...i,nested:!0,omitTopLevelType:!0,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});pe.lines.length===1?A.push({text:`Data Type: ${pe.lines[0].text}`,indentLevel:2}):pe.lines.forEach(se=>{A.push({text:se.text,indentLevel:se.indentLevel+1})})}const ee=s.outputs.filter(pe=>!!pe.writesValues.length);ee.length>0&&ph(ee,{label:"DESTRUCT RETURNED PROPERTIES: ",...i,onPrefix:p.onPrefix}).lines.forEach(se=>{A.push({text:se.text,indentLevel:se.indentLevel})}),s.body&&(A.push({text:"BODY:",indentLevel:a}),ri(s.body,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(se=>{A.push({text:se.text,indentLevel:se.indentLevel+2})}));break}case d.FunctionCall:case d.Operation:case d.InternalCall:{if(s.type===d.InternalCall){const pe=r("name")?Bt(s.parent,s.project):"",se=r("id")&&!i.omitIdsFor.includes(s.parent.type)?s.parent.id:"",ue=r("type")&&!i.omitTypesFor.includes(s.parent.type)?s.parent.type:"",he=i.firstLabel==="name"?pe?`"${pe}"`:"":se,ge=i.firstLabel==="name"?se:pe?`"${pe}"`:"",Re=`${c}${i.omitTopLevelType?"":ue?`${ue} `:""}${he}${ge?` (${ge})`:""}`;s.calledBy.length>0?A.push({text:`Called method on state of parent: ${Re}`,indentLevel:a}):A.push({text:`Part of state instance of parent: ${Re}`,indentLevel:a})}A.push({text:`Error handling: ${s.catchesError?"YES (catches)":"NO (can throw)"}`,indentLevel:a}),s.inputs.length>0&&ad(s.inputs,{...i,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(se=>{A.push({text:se.text,indentLevel:se.indentLevel})}),BT(s,{...i,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue}).lines.forEach(pe=>{A.push({text:pe.text,indentLevel:pe.indentLevel})}),A.push({text:"OUTPUT:",indentLevel:a});const Y=s.getDataType(null);if(!Y)A.push({text:"Data Type: Any (unspecified data type)",indentLevel:a+1});else{const pe=ri(Y,{...i,nested:!0,omitTopLevelType:!0,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});pe.lines.length===1?A.push({text:`Data Type: ${pe.lines[0].text}`,indentLevel:2}):pe.lines.forEach(se=>{A.push({text:se.text,indentLevel:se.indentLevel+1})})}const ee=s.outputs.filter(pe=>!!pe.writesValues.length);ee.length>0&&ph(ee,{label:"DESTRUCT RETURNED PROPERTIES: ",...i,onPrefix:p.onPrefix}).lines.forEach(se=>{A.push({text:se.text,indentLevel:se.indentLevel})});break}case d.Project:{if(s.entities.length>0){A.push({text:"DEFINITIONS:",indentLevel:a});for(const Y of s.entities){const ee=ri(Y,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});ee.lines.forEach((pe,se)=>{const ue=se===0,he=se===ee.lines.length-1;A.push({text:ue?"- "+pe.text:pe.text,indentLevel:ue?pe.indentLevel+2:pe.indentLevel+3}),he&&A.push({text:"",indentLevel:pe.indentLevel+2})})}}else A.push({text:"DEFINITIONS: None",indentLevel:a}),A.push({text:"",indentLevel:a});if(s.functions.length>0){A.push({text:"FUNCTION DECLARATIONS:",indentLevel:a});for(const Y of s.functions){const ee=ri(Y,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});ee.lines.forEach((pe,se)=>{const ue=se===0,he=se===ee.lines.length-1;A.push({text:ue?"- "+pe.text:pe.text,indentLevel:ue?pe.indentLevel+2:pe.indentLevel+3}),he&&A.push({text:"",indentLevel:pe.indentLevel+2})})}}else A.push({text:"FUNCTION DECLARATIONS: None",indentLevel:a}),A.push({text:"",indentLevel:a});if(s.events.length>0){A.push({text:"GLOBAL EVENTS:",indentLevel:a});for(const Y of s.events){const ee=ri(Y,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});ee.lines.forEach((pe,se)=>{const ue=se===0,he=se===ee.lines.length-1;A.push({text:ue?"- "+pe.text:pe.text,indentLevel:ue?pe.indentLevel+2:pe.indentLevel+3}),he&&A.push({text:"",indentLevel:pe.indentLevel+2})})}}else A.push({text:"GLOBAL EVENTS: None",indentLevel:a}),A.push({text:"",indentLevel:a});if(s.variableDeclarations.length>0){A.push({text:"GLOBALLY DECLARED VARIABLES:",indentLevel:a});for(const Y of s.variableDeclarations){const ee=ri(Y,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});ee.lines.forEach((pe,se)=>{const ue=se===0,he=se===ee.lines.length-1;A.push({text:ue?"- "+pe.text:pe.text,indentLevel:ue?pe.indentLevel+2:pe.indentLevel+3}),he&&A.push({text:"",indentLevel:pe.indentLevel+2})})}}else A.push({text:"GLOBALLY DECLARED VARIABLES: None",indentLevel:a}),A.push({text:"",indentLevel:a});if(s.projects.length>0){A.push({text:"INSTALLED PROJECTS (external logic):",indentLevel:a});for(const Y of s.projects){const ee=ri(Y,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});ee.lines.forEach((pe,se)=>{const ue=se===0,he=se===ee.lines.length-1;A.push({text:ue?"- "+pe.text:pe.text,indentLevel:ue?pe.indentLevel+2:pe.indentLevel+3}),he&&A.push({text:"",indentLevel:pe.indentLevel+2})})}}const ye=[...s.variableInstances,...s.operations,...s.searches,...s.loops,...s.conditions,...s.functionCalls];if(ye.length>0){A.push({text:"OTHER GLOBAL LOGIC (will be ignored when deployed, since it isn't called by any entry-point):",indentLevel:a});for(const Y of ye){const ee=ri(Y,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});ee.lines.forEach((pe,se)=>{const ue=se===0,he=se===ee.lines.length-1;A.push({text:ue?"- "+pe.text:pe.text,indentLevel:ue?pe.indentLevel+2:pe.indentLevel+3}),he&&A.push({text:"",indentLevel:pe.indentLevel+2})})}}break}case d.InstalledProject:{if(s.functions.length>0){A.push({text:"EXPORTED FUNCTIONS:",indentLevel:a});for(const ye of s.functions){const Y=ri(ye,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});Y.lines.forEach((ee,pe)=>{const se=pe===0,ue=pe===Y.lines.length-1;A.push({text:se?"- "+ee.text:ee.text,indentLevel:se?ee.indentLevel+2:ee.indentLevel+3}),ue&&A.push({text:"",indentLevel:ee.indentLevel+2})})}}if(s.events.length>0){A.push({text:"EVENTS:",indentLevel:a});for(const ye of s.events){const Y=ri(ye,{...i,nested:!0,omitTopLevelType:!1,firstLabel:i.firstLabel,omitIdsFor:i.omitIdsFor,omitTypesFor:i.omitTypesFor,metadataIndent:i.metadataIndent,omitFields:i.omitFields,onlyFields:i.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});Y.lines.forEach((ee,pe)=>{const se=pe===0,ue=pe===Y.lines.length-1;A.push({text:se?"- "+ee.text:ee.text,indentLevel:se?ee.indentLevel+2:ee.indentLevel+3}),ue&&A.push({text:"",indentLevel:ee.indentLevel+2})})}}break}}return{lines:A}}function P1(s,p){const i={singleLine:(p==null?void 0:p.singleLine)??!1,indentSize:(p==null?void 0:p.indentSize)??2,singleLineSpacer:(p==null?void 0:p.singleLineSpacer)??" "};if(i.singleLine)return s.lines.map(a=>{let c=a.text.trim();return c.startsWith("- ")&&(c=c.slice(2).trim()),c}).join(i.singleLineSpacer);const r=" ".repeat(i.indentSize);return s.lines.map(a=>r.repeat(a.indentLevel)+a.text).join(`
|
|
83
83
|
`)}function iDi(s,p={nested:!1,omitTopLevelType:!1,firstLabel:"name",omitIdsFor:[],omitTypesFor:[],omitFields:[],onlyFields:[]},i={}){const r={nested:p.nested??!1,omitTopLevelType:p.omitTopLevelType??!1,firstLabel:p.firstLabel??"name",omitIdsFor:p.omitIdsFor??[],omitTypesFor:p.omitTypesFor??[],omitFields:p.omitFields??[],onlyFields:p.onlyFields??[]},a=i.newLinesBetweenItems??3;return s.map(c=>{const e=ri(c,{...r,nested:r.nested,omitTopLevelType:r.omitTopLevelType,firstLabel:r.firstLabel,omitIdsFor:r.omitIdsFor,omitTypesFor:r.omitTypesFor,omitFields:r.omitFields,onlyFields:r.onlyFields,onPrefix:p.onPrefix,onMissingValue:p.onMissingValue});return P1(e,i)}).join(`
|
|
84
84
|
`.repeat(a))}var ZMe=(s=>(s.Declaration="declaration",s.DataTypeEntity="data-type-entity",s))(ZMe||{});const Ci=class Ci extends un{constructor(i,r){super(i);R(this,"initialData");R(this,"id");R(this,"index");R(this,"name",null);R(this,"codeName",null);R(this,"description",null);R(this,"parentRelationType",null);R(this,"type",d.InputMap);R(this,"defaultValue",null);R(this,"readsValue",null);R(this,"dataType",null);R(this,"declaration",null);R(this,"project");R(this,"errors",[]);R(this,"parent");R(this,"detachedDependents",{});R(this,"knownVersions",null);R(this,"activeVersion",!1);R(this,"initialized",!1);R(this,"startedInitialization",!1);R(this,"suggestion",!1);R(this,"_codeNativeValueValidation",null);this.initialData=i,this.project=r,this.id=i.id,this.index=i.index,this.name=i.name||null,this.codeName=i.codeName||null,this.description=i.description||null,this.parentRelationType=i.parentRelationType||null}static new(i=null){return{id:x.UUID.uuid(),version:x.UUID.uuid(),createdAt:(i==null?void 0:i.timestamp)||B().toISOString(),author:(i==null?void 0:i.author)||x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.InputMap,parentRelationType:null,dataType:null,name:"",codeName:null,description:"",declaration:null,index:0,readsValue:null,defaultValue:null,parent:null}}static fromGenerationTarget(i,r,a){const c=a===void 0?r.addChangeSet(new S(r,x.sessionAuthor,B().toISOString(),r,!0,w.CreateFromGenerationTarget)):a,e=te(i.parent),f=r.get(e);let h=null;if(i.declaration){const A=te(i.declaration);h=r.get(A)}let m=null;if(i.readsValue){const A=te(i.readsValue);m=r.get(A)}const E={id:i.id,version:x.UUID.uuid(),createdAt:(c==null?void 0:c.timestamp)||B().toISOString(),author:(c==null?void 0:c.author)||x.sessionAuthor,previousVersion:null,deleted:!1,name:i.name||null,deletable:!0,editable:!0,type:d.InputMap,parentRelationType:null,index:(f.inputs||[]).length,codeName:i.codeName||null,description:i.description||null,declaration:h,readsValue:m,dataType:null,defaultValue:null,parent:f.toReference()},b=Ie(E,r);return b.hydrateAncestors(),b.setParent(f,c),b.addSelfToProject(c),c==null||c.add(b,W.Added),b.initChildren(c),c||b.captureVersion(),b}static validateGenerationTarget(i,r){var A,_,P;let a=JSON.parse(JSON.stringify(i));const c=[],e=[],f=Bn(a,{parent:{list:!1,types:[...Ct,...Rt]}},r);c.push(...f.explanations),a=f.modifiedData;const h=r.get(a.parent);if(c.push({id:Qi.InputMapsAutogeneration,message:Dje}),h){let V="";const G=Rt.includes(h.type)?h.outputs:h.inputs;G.length===0?V=`The parent entity "${oe(h,h.project)}" of type '${h.type}' with id '${h.id}' doesn't have any input-maps. This is probably not a mistake. So you shouldn't need to add any input-maps manually.`:V=`The parent entity "${oe(h,h.project)}" of type '${h.type}' with id '${h.id}' already has the following input-maps that are connected to its inputs:
|
|
85
85
|
- ${G.map(M=>`'${M.id}' -- declaration: ${M.declaration?`"${oe(M.declaration,M.project)}" with id '${M.declaration.id}'`:"none"} | Data type: ${wh(M.getDataType(null))}`).join(`
|
|
@@ -107,7 +107,7 @@ The parent ${h.type} has a data-type that references an entity with `;ne.length?
|
|
|
107
107
|
The entity is ${ri(k,{nested:!1}).lines[0].text}.`,X+=`Technically, an implemented ${V.type} will be generated with all `,e.push(new we({id:`${a.id}--${Ce.NoOverlapWithImplementedSignature}`,code:Ce.NoOverlapWithImplementedSignature,severity:ve.Error,message:`Entity of type '${d.InputMap}' with id '${a.id}' cannot be added to the parent entity of type '${h.type}' with id '${h.id}'. The 'declaration' with '${m.id}' of the 'input-map' does not exist in 'entity' field implemented the parent ${h.type}'s 'data-type'.${X}`}))}}else if(Ct.filter(V=>Mt.includes(V)).includes(h.type)){const G=OL(h),M=G.find(K=>K.id===a.declaration),k=`The parent entity has the following argument declarations that can be referenced by input-maps, ids: '${Et(G.map(K=>K.id),"', '","' and '")}'`;M||e.push(new we({id:`${a.id}--${Ce.NoOverlapWithImplementedSignature}`,code:Ce.NoOverlapWithImplementedSignature,severity:ve.Error,message:`Entity of type '${d.InputMap}' with id '${a.id}' cannot be added to the parent entity of type '${h.type}' with id '${h.id}'. The parent entity does not have an 'argument-declaration' with id '${a.declaration}'.
|
|
108
108
|
You can't add an input-map to an entity that doesn't have a matching 'argument-declaration'.
|
|
109
109
|
${k}`}))}}const b=Xr(a);return e.push(...f.errors,...b.errors),c.push(...b.explanations),{errors:e,explanations:c,modifiedData:a}}get codeNativeValueValidation(){var i;return this._codeNativeValueValidation||((i=this.declaration)==null?void 0:i.codeNativeValueValidation)||null}validateGeneratedUpdate(i){const r=[],a=[];let c=JSON.parse(JSON.stringify(i));const e=dy(c,this);return c=e.modifiedData,r.push(...e.errors),c.parent&&r.push(new we({id:`${this.id}--${Te.InvalidParentUpdate}`,code:Te.InvalidParentUpdate,severity:ve.Error,message:`Entity of type '${this.type}' with id '${this.id}' cannot have the 'parent' property updated, as it would mean moving the '${this.type}' entity to another parent entity.
|
|
110
|
-
This is likely an incorrect strategy, either the '${this.type}' entity doesn't need to be updated or it should be deleted and a new one created in the desired parent.`})),{errors:r,explanations:a,modifiedData:c}}subscribeDependents(i){return i.forEach(r=>{this.detachedDependents[r.entity.id]||(this.detachedDependents[r.entity.id]=r)}),this}unsubscribeDependents(i){return i.forEach(r=>{this.detachedDependents[r.entity.id]&&delete this.detachedDependents[r.entity.id]}),this}syncDependents(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"sync-dependents"))){const r=[],a=[],c=[],e=[];return Object.values(this.detachedDependents).forEach(f=>{const h=f.entity.afterAllChildrenInitialized(i);r.push(...h.updated),a.push(...h.added),c.push(...h.removed),e.push(...h.affected)}),i==null||i.attemptAutoclose("sync-dependents",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}onDetachedDependencyRemoved(i,r,a){const c=[],e=[],f=[],h=[];if(r==="declaration"){const{updated:m,added:E,removed:b}=this.remove({ignoreUpstream:!1},a);c.push(...m),e.push(...E),f.push(...b)}return{updated:C(c),added:C(e),removed:C(f),affected:C(h),self:this}}onDetachedDependencyRestored(i,r,a){const c=[],e=[],f=[],h=[];if(r==="declaration"){const{updated:m,added:E,removed:b}=this.restore({},a);c.push(...m),e.push(...E),f.push(...b)}return{updated:C(c),added:C(e),removed:C(f),affected:C(h),self:this}}unsubscribeFromDependencies(){var i,r,a,c,e;return(r=(i=this.declaration)==null?void 0:i.unsubscribeDependents)==null||r.call(i,[{entity:this,field:"declaration"}]),(e=(c=(a=this.dataType)==null?void 0:a.entity)==null?void 0:c.unsubscribeDependents)==null||e.call(c,[{entity:this,field:"data-type-entity"}]),this}subscribeToDependencies(){var i,r,a,c,e;return(r=(i=this.declaration)==null?void 0:i.subscribeDependents)==null||r.call(i,[{entity:this,field:"declaration"}]),(e=(c=(a=this.dataType)==null?void 0:a.entity)==null?void 0:c.subscribeDependents)==null||e.call(c,[{entity:this,field:"data-type-entity"}]),this}increaseVersion(i){var r;if(this.project.diggestedBuiltInBaseEntitiesIds.has(this.id))return this;if(i&&!B(i).isValid())throw new Error(`The shared timestamp '${i}' is not a valid ISO 8601 date string.`);if(i&&B(i).isSame(B(this.createdAt)))return this;if(!((r=this.knownVersions)!=null&&r.has(this.version))&&this.project.initialized)throw new Error(`The current ${this.type} ${this.id} version '${this.version}' is not captured in the 'knownVersions' map. Capture the current version before increasing it to avoid losing data.`);if(!this.activeVersion)throw new Error(`Only active versions can be increased. Entity with id '${this.id}' and version '${this.version}' is not active.`);return this.previousVersion=this.version,this.version=x.UUID.uuid(),this.createdAt=B(i).toISOString()||B().toISOString(),this}captureVersion(){var r;const i=((r=this.knownVersions)==null?void 0:r.get(this.version))||new Ci(this,this.project);if(!this.activeVersion)throw new Error(`Only active versions can be captured. Entity of type ${this.type} with id '${this.id}' and version '${this.version}' is not active.`);if(this.version!==i.version)throw new Error(`Captured ${this.type} with id '${this.id}', version '${i.version}' does not match current entity version '${this.version}'.`);return this.knownVersions=this.knownVersions?this.knownVersions.set(this.version,i):new Map().set(this.version,i),this.apply(i),this}snapshot(){const i=new Ci(this,this.project);return this.apply(i)}apply(i){const r=this.toMeta();return i.metaSync(r,null),i.declaration=this.declaration,i.defaultValue=this.defaultValue,i.readsValue=this.readsValue,i.dataType=this.dataType,i.parent=this.parent,i}recursiveCaptureUpstreamVersions(i){const r=[],a=[],c=[],e=[];if(this.parent){this.parent.increaseVersion(i);const f=this.parent.recursiveCaptureUpstreamVersions(i);r.push(this.parent,...f.updated),a.push(...f.added),c.push(...f.removed)}return{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}async restoreVersion(i,r){var m;const a=[],c=[],e=[],f=[];if(this.version===i&&(r!=null&&r.skipIfSameVersion))return{updated:C(a),added:C(c),removed:C(e),affected:C(f),self:this};if(!this.knownVersions){const E=new Map;for(const[b,A]of this.knownVersions||new Map){if(E.set(b,A),A.activeVersion=!1,A.knownVersions)for(const[_,P]of A.knownVersions)E.set(_,P);A.knownVersions=null}}let h=(m=this.knownVersions)==null?void 0:m.get(i);if(!h){const E=await this.APILoadVersion({},i);if(!E)throw new Error(`Version with id '${i}' for entity with id '${this.id}' not found.`);h=new Ci(E,this.project)}return this.metaSync(h.toShallowJSON(),null),this.previousVersion=h.previousVersion,this.version=h.version,this.createdAt=h.createdAt,this.author=h.author,this.deleted=h.deleted,this.declaration=h.declaration,this.defaultValue=h.defaultValue,this.readsValue=h.readsValue,this.dataType=h.dataType,this.parent=h.parent,{updated:C(a),added:C(c),removed:C(e),affected:C(f),self:this}}updateWithShallowTransfer(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.UpdateWithShallowTransfer))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[updateWithShallowTransfer] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),this;if(this.metaSync(i,r),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 a=te(i.parent),c=this.project.get(a),e=this.parent;if(e&&e.id!==(c==null?void 0:c.id)&&this.removeFromParent(r),c)this.setParent(c,r),this.addSelfToProject(r);else throw r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),new Error(`${this.type} with id '${this.id}' has a 'parent' reference '${a}' that isn't found in the project`)}else throw r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),new Error(`${this.type} with id '${this.id}' must have a 'parent'`);if(i.readsValue){const a=te(i.readsValue),c=this.project.get(a),e=this.readsValue;e&&e.id!==(c==null?void 0:c.id)&&this.removeValueWriter(r),c&&this.setValueWriter(c,r)}else this.removeValueWriter(r);if(i.declaration){const a=te(i.declaration),c=this.project.get(a);c&&this.setDeclaration(c,r)}else this.setDeclaration(null,r);if(i.dataType){const a=te(i.dataType),c=this.project.get(a);c&&this.setDataType(c,r)}else this.setDataType(null,r);if(i.defaultValue){const a=te(i.defaultValue),c=this.project.get(a);c&&this.setDefaultValue(c,r)}else this.setDefaultValue(null,r);return this.captureVersion(),this.subscribeToDependencies(),r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),this}updateWithGenerationTarget(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.UpdateWithGenerationTarget))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[updateWithGenerationTarget] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),this;if(this.metaSync(i,r),i.parent){const a=te(i.parent),c=this.project.get(a),e=this.parent;if(e&&e.id!==(c==null?void 0:c.id)&&this.removeFromParent(r),c)this.setParent(c,r),this.addSelfToProject(r);else throw r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),new Error(`${this.type} with id '${this.id}' has a 'parent' reference '${a}' that isn't found in the project`)}if(i.readsValue){const a=te(i.readsValue),c=this.project.get(a),e=this.readsValue;if(e&&e.id!==(c==null?void 0:c.id)&&this.removeValueWriter(r),c)this.setValueWriter(c,r);else throw new Error(`${this.type} with id '${this.id}' has a 'readsValue' reference '${a}' that isn't found in the project`)}else i.readsValue===null&&this.removeValueWriter(r);if(i.declaration){const a=te(i.declaration),c=this.project.get(a);if(c)this.setDeclaration(c,r);else throw new Error(`${this.type} with id '${this.id}' has a 'declaration' reference '${a}' that isn't found in the project`)}else i.declaration===null&&this.setDeclaration(null,r);return this.captureVersion(),this.subscribeToDependencies(),r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),this}hydrateAncestors(){const i=[],r=[],a=[],c=[];if(this.initialData.parent){const e=te(this.initialData.parent),f=this.project.get(e);if(f)this.setParent(f,null),i.push(f);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.readsValue){const e=te(this.initialData.readsValue),f=this.project.get(e);f&&(this.setValueWriter(f,null),i.push(f))}if(this.initialData.declaration){const e=te(this.initialData.declaration),f=this.project.get(e);f&&(this.setDeclaration(f,null),i.push(f))}return{updated:C(i),added:C(r),removed:C(a),affected:C(c),self:this}}afterAllChildrenInitialized(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AfterAllChildrenInitialized))){var b,A,_,P;if(!this.checkCanEdit(this,i))return z.Logger.warn(`[afterAllChildrenInitialized] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.AfterAllChildrenInitialized,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];this.initialized=!0;let f=((b=this.declaration)==null?void 0:b.index)??this.index??0;const h=(Rt.includes(this.parent.type)?this.parent.outputs:this.parent.inputs).filter(V=>!V.deleted&&V.id!==this.id);h.length&&(f>h.length+1?f=h.length:f<0&&(f=0)),h.find(V=>(V.index||0)===f&&!V.deleted)&&h.filter(V=>(V.index||0)>=f&&!V.deleted).forEach(V=>{V.metaSync({index:(V.index||0)+1},i),i==null||i.add(V,W.Updated),r.push(V)});const E=this.parent.type===d.VariableInstance&&((A=this.declaration)==null?void 0:A.type)===d.Property&&((_=this.declaration)==null?void 0:_.constant);if(E&&this.readsValue&&(this.readsValue.removeValueReader(this,i),this.removeValueWriter(i)),E&&this.defaultValue&&this.defaultValue.remove({ignoreUpstream:!1},i),this.readsValue&&this.defaultValue&&(this.project.diggestedBuiltInBaseEntitiesIds.has(this.defaultValue.id)||this.defaultValue.remove({ignoreUpstream:!1},i),this.setDefaultValue(null,i)),this.defaultValue&&!this.readsValue&&!this.project.diggestedBuiltInBaseEntitiesIds.has(this.id)&&this.project.diggestedBuiltInBaseEntitiesIds.has(this.defaultValue.id)){const V=this.defaultValue.clone(i,this);this.setDefaultValue(V,i)}return this.readsValue&&this.parent.type===d.VariableDeclaration&&((P=this.parent.parent)==null?void 0:P.type)===d.Project&&(i==null||i.event({id:`${w.RemoveValueWriter}-${this.id}--${Me.InputsInGlobalVariableDeclarationsCannotReadValues}`,action:w.RemoveValueWriter,owner:this,errorReason:Me.InputsInGlobalVariableDeclarationsCannotReadValues,rootAction:!1}),this.readsValue.removeValueReader(this,i),this.removeValueWriter(i)),this.metaSync({index:f},i),i==null||i.attemptAutoclose(w.AfterAllChildrenInitialized,this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}addSelfToProject(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"add-self-to-project"))){var f;const r=[this],a=[],c=[],e=[];return Rt.includes(this.parent.type)?this.parentRelationType===dd.Error?this.parent.setThrows(this,i):this.parent.addOutput(this,i):this.parent.addInput(this,i),e.push(this.parent),(f=this.readsValue)==null||f.addValueReader(this,i),this.readsValue&&r.push(this.readsValue),this.subscribe(),this.subscribeToDependencies(),i==null||i.attemptAutoclose("add-self-to-project",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}setParent(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetParent))){var a;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.SetParent,r)?(((a=this.parent)==null?void 0:a.id)!==(i==null?void 0:i.id)&&(this.parent=i,r&&(r==null||r.add(this,W.Updated))),r==null||r.attemptAutoclose(w.SetParent,this.id),this):this}setDataType(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetDataType))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[setDataType] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.SetDataType,this.id),this;const a=this.dataType;return(a==null?void 0:a.id)!==(i==null?void 0:i.id)&&(a==null||a.remove({ignoreUpstream:!0},r),this.dataType=i,this.subscribeToDependencies(),r==null||r.add(this,W.Affected)),r==null||r.attemptAutoclose(w.SetDataType,this.id),this}removeDataType(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveDataType))){return this.checkCanEdit(this,i)?(this.dataType&&(this.dataType.remove({ignoreUpstream:!0},i),i==null||i.add(this,W.Affected),this.dataType=null),i==null||i.attemptAutoclose(w.RemoveDataType,this.id),this):(z.Logger.warn(`[removeDataType] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveDataType,this.id),this)}setDeclaration(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"set-declaration"))){var a;return((a=this.declaration)==null?void 0:a.id)!==(i==null?void 0:i.id)&&(this.declaration=i,this.subscribeToDependencies(),r&&(r==null||r.add(this,W.Updated))),r==null||r.attemptAutoclose("set-declaration",this.id),this}initChildren(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"init-children"))){return this.initialized||this.startedInitialization?this:(this.startedInitialization=!0,this.initialData.defaultValue&&(this.defaultValue=Ie(this.initialData.defaultValue,this.project),this.defaultValue.setParent(this,null),this.defaultValue.initChildren(i)),this.initialData.declaration&&(this.declaration=Ie(this.initialData.declaration,this.project)),uy.initReadsValue(this),this.subscribeToDependencies(),this.afterAllChildrenInitialized(i),i==null||i.attemptAutoclose("init-children",this.id),this)}setValueWriter(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetValueWriter))){var c,e,f,h,m,E,b;return this.checkCanEditFromScopeOwnerWithSideEffects(this,w.SetValueWriter,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.SetValueWriter}-${this.id}`,action:w.SetValueWriter,owner:this,errorReason:Me.CannotValueWriteItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.SetValueWriter})),this.parent.type===d.VariableInstance&&((e=this.declaration)==null?void 0:e.type)===d.Property&&((f=this.declaration)==null?void 0:f.constant)&&i?(r==null||r.event({id:`${w.SetValueWriter}-${this.id}--${i.id}`,action:w.SetValueWriter,owner:this,counterpart:i,errorReason:Me.ValueReadingOverridesConstantVariable,rootAction:((h=r==null?void 0:r.self)==null?void 0:h.id)===this.id&&(r==null?void 0:r.actionName)===w.SetValueWriter}),r==null||r.attemptAutoclose(w.SetValueWriter,this.id),this):(((m=this.readsValue)==null?void 0:m.id)!==(i==null?void 0:i.id)&&(this.readsValue=i,this.readsValue&&((E=this.defaultValue)==null||E.remove({ignoreUpstream:!1},r),this.parent.type===d.Search&&((b=this.declaration)==null||b.setDefaultValue(null,r))),r==null||r.add(this,W.Updated)),r==null||r.attemptAutoclose(w.SetValueWriter,this.id),this)):this}removeValueWriter(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveValueWriter))){return this.readsValue&&!this.checkCanEditWithCounterpartAndSideEffects(this,this.readsValue,w.RemoveValueWriter,i)?this:(this.readsValue&&(this.readsValue=null,i==null||i.add(this,W.Updated)),i==null||i.attemptAutoclose(w.RemoveValueWriter,this.id),this)}subscribe(){var i;return this.activeVersion=!0,(i=this.knownVersions)==null||i.forEach(r=>{r.version!==this.version&&(r.activeVersion=!1)}),this.project.subscribeInstance(this),this}unsubscribe(){return this.project.unsubscribeInstance(this),this}metaSync(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"meta-sync"))){const a=tn(this,i,r),c=en(this,a),e=this.toMeta();return this.index=a.index||(a.index!==0?e.index:0),this.name=a.name!==void 0?a.name:e.name,this.codeName=a.codeName!==void 0?a.codeName:e.codeName,this.description=a.description!==void 0?a.description:e.description,this.parentRelationType=a.parentRelationType!==void 0?a.parentRelationType:this.parentRelationType,super.baseMetaSync(a,this,r),a.deleted===!0&&!e.deleted?r==null||r.add(this,W.Removed):a.deleted===!1&&e.deleted?r==null||r.add(this,W.Added):c&&(r==null||r.add(this,W.Updated)),r==null||r.attemptAutoclose("meta-sync",this.id),this}async APILoad(i=Ke,...r){return await Ci.repository.APILoad(this.id,...r),this}async APICreate(i=Ke,...r){return await Ci.repository.APICreate(this.toShallowJSON(),...r),this}async APIUpdate(i=Ke,...r){return await Ci.repository.APIUpdate(this.toShallowJSON(),...r),this}async APIDelete(i=Ke,...r){return await Ci.repository.APIDelete(this.toShallowJSON(),...r),this}async APIClone(i=Ke,...r){return await Ci.repository.APIClone(this.id,...r),this}async APILoadVersion(i=Ke,r,...a){return await Ci.repository.APILoadVersion(this.id,r,...a)}removeFromParent(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveFromParent))){var f;if(!this.checkCanEdit(this,i))return z.Logger.warn(`[removeFromParent] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveFromParent,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];return Rt.includes((f=this.parent)==null?void 0:f.type)?this.parentRelationType===dd.Error?(this.parent.setThrows(null,i),e.push(this.parent)):(this.parent.removeOutput(this,i),e.push(this.parent)):(this.parent.removeInput(this,i),e.push(this.parent)),i==null||i.attemptAutoclose(w.RemoveFromParent,this.id),{added:C(c),updated:C(r),removed:C(a),affected:C(e),self:this}}remove({ignoreUpstream:i}={ignoreUpstream:!1},r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveEntity))){var h,m,E,b,A;if(this.deleted)return r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};if(!this.checkCanDelete(this,r))return z.Logger.warn(`[remove] User is not allowed to delete or edit this ${this.type} entity with id: ${this.id}`),r==null||r.event({id:`${w.RemoveEntity}-${this.id}--${Me.ActionOwnerEntityNonDeletable}`,action:w.RemoveEntity,owner:this,errorReason:Me.ActionOwnerEntityNonDeletable,rootAction:((h=r==null?void 0:r.self)==null?void 0:h.id)===this.id&&(r==null?void 0:r.actionName)===w.RemoveEntity}),r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const a=[],c=[],e=[],f=[];if(r!=null&&r.hasRemoved(this.id))return r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};if(c.push(this),this.unsubscribe(),this.unsubscribeFromDependencies(),this.metaSync({deleted:!0},r),r!=null&&r.hasAdded(this.id)||this.project.subscribeDeletedInstance(this),Object.values(this.detachedDependents).forEach(_=>{const{updated:P,removed:V,added:G}=_.entity.onDetachedDependencyRemoved(this,_.field,r);a.push(...P),c.push(...V),e.push(...G)}),this.defaultValue){const{updated:_,removed:P}=this.defaultValue.remove({ignoreUpstream:!0},r);a.push(..._),c.push(...P)}if(this.readsValue&&(a.push(this.readsValue),this.readsValue.removeValueReader(this,r)),this.defaultValue&&(a.push(this.defaultValue),this.defaultValue.remove({ignoreUpstream:!0},r)),this.declaration){if(this.declaration.type===d.Property&&((m=this.declaration.parent)==null?void 0:m.type)===d.DefinitionEntity&&((b=(E=this.declaration.parent)==null?void 0:E.parent)==null?void 0:b.type)===d.DataType&&!(r!=null&&r.hasRemoved(this.declaration.id))&&!this.declaration.deleted){const{updated:_,removed:P}=this.declaration.remove({ignoreUpstream:!1},r);a.push(..._),c.push(...P)}else if(this.declaration.type===d.ValueDescriptor&&((A=this.declaration.parent)==null?void 0:A.type)===d.Search&&!(r!=null&&r.hasRemoved(this.declaration.id))&&!this.declaration.deleted){const{updated:_,removed:P}=this.declaration.remove({ignoreUpstream:!1},r);a.push(..._),c.push(...P)}}if(!i){const _=this.removeFromParent(r);e.push(..._.added),a.push(..._.updated),c.push(..._.removed),f.push(..._.affected)}if(!i&&this.parent&&[d.BreakStatement,d.ContinueStatement].includes(this.parent.type)&&this.parent.parent&&this.parent.parent.type===d.Loop&&this.parent.initialized&&this.parent.parent.syncFromDataType(r),this.parentRelationType===dd.Error&&this.parent.type===d.ReturnStatement){const{updated:_,added:P,removed:V,affected:G}=this.parent.syncInputs(r);a.push(..._),e.push(...P),c.push(...V),f.push(...G)}return r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:C(e),updated:C(a),removed:C(c),affected:C(f),self:this}}restore({}={},i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RestoreEntity))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[restore] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RestoreEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];if(i!=null&&i.hasAdded(this.id))return i==null||i.attemptAutoclose(w.RestoreEntity,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(f=>{const{updated:h,removed:m,added:E}=f.entity.onDetachedDependencyRestored(this,f.field,i);a.push(...h),c.push(...m),r.push(...E)}),this.defaultValue){const{updated:f}=this.defaultValue.restore({},i);a.push(...f)}return this.readsValue&&(a.push(this.readsValue),this.readsValue.addValueReader(this,i)),this.defaultValue&&(a.push(this.defaultValue),this.defaultValue.restore({},i)),e.push(this.parent),this.parent.addInput(this,i),i==null||i.attemptAutoclose(w.RestoreEntity,this.id),{added:C(r),updated:C(a),removed:C(c),affected:C(e),self:this}}toFlat(i=new Set){return i.has(this.id)?[]:(i.add(this.id),[this,...this.defaultValue?this.defaultValue.toFlat(i):[],...this.dataType?this.dataType.toFlat(i):[],...this.declaration?this.declaration.toFlat(i):[],...this.readsValue?this.readsValue.toFlat(i):[]])}toFlatIds(i=new Set){return i.has(this.id)?[]:(i.add(this.id),[this.id,...this.defaultValue?this.defaultValue.toFlatIds(i):[],...this.dataType?this.dataType.toFlatIds(i):[],...this.declaration?this.declaration.toFlatIds(i):[],...this.readsValue?this.readsValue.toFlatIds(i):[]])}toMeta(){return{id:this.id,version:this.version,createdAt:this.createdAt,previousVersion:this.previousVersion,author:this.author,deleted:this.deleted,codeName:this.codeName,description:this.description,parentRelationType:this.parentRelationType,index:this.index,type:this.type,editable:this.editable,deletable:this.deletable,name:this.name}}toJSON(i=new Set){var r,a,c,e;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,editable:this.editable,deletable:this.deletable,index:this.index,name:this.name,codeName:this.codeName,description:this.description,parentRelationType:this.parentRelationType,defaultValue:((r=this.defaultValue)==null?void 0:r.toJSON(i))||null,dataType:((a=this.dataType)==null?void 0:a.toJSON(i))||null,declaration:((c=this.declaration)==null?void 0:c.toJSON(i))||null,readsValue:((e=this.readsValue)==null?void 0:e.toReference())||null,parent:this.parent.toReference()})}toJSONClone(i=at){var a,c,e,f,h,m,E,b,A,_,P,V;let r;return(a=i.seenEntityMaps)!=null&&a.has(this.id)?r=i.seenEntityMaps.get(this.id):(r=i.newId||dn(this,this.project,i.uuidStrategy),i.seenEntityMaps&&i.seenEntityMaps.set(this.id,r)),(c=i.seenEntities)!=null&&c.has(r)||(e=i.seenEntities)!=null&&e.has(this.id)?this.toReference({seenEntityMaps:i.seenEntityMaps}):((f=i.seenEntities)==null||f.add(r),(h=i.seenEntities)==null||h.add(this.id),{id:r,version:x.UUID.uuid(),createdAt:i.timestamp||B().toISOString(),previousVersion:null,author:this.author,deleted:this.deleted,type:this.type,editable:this.editable,deletable:this.deletable,index:this.index,name:this.name,codeName:this.codeName,description:this.description,parentRelationType:this.parentRelationType,defaultValue:((m=this.defaultValue)==null?void 0:m.toJSONClone({...i,newId:null}))||null,dataType:((E=this.dataType)==null?void 0:E.toJSONClone({...i,newId:null}))||null,declaration:(b=this.declaration)!=null&&b.id&&this.project.getBuiltIn((A=this.declaration)==null?void 0:A.id)?(_=this.declaration)==null?void 0:_.toJSON(i.seenEntities):((P=this.declaration)==null?void 0:P.toJSONClone({...i,newId:null}))||null,readsValue:((V=this.readsValue)==null?void 0:V.toReference({seenEntityMaps:i.seenEntityMaps}))||null,parent:this.parent.toReference({seenEntityMaps:i.seenEntityMaps})})}toReference(i=at){var a;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r+"--"+x.UUID.uuid()+"--ref",type:d.GenericReference,entityId:r,version:this.version,entityType:this.type}}toShallowJSON(i=at){var a,c,e,f,h;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r,version:this.version,createdAt:this.createdAt,previousVersion:this.previousVersion,author:this.author,deleted:this.deleted,type:this.type,editable:this.editable,deletable:this.deletable,name:this.name,codeName:this.codeName,description:this.description,parentRelationType:this.parentRelationType,index:this.index,dataType:((c=this.dataType)==null?void 0:c.toReference(i))||null,defaultValue:((e=this.defaultValue)==null?void 0:e.toReference(i))||null,declaration:((f=this.declaration)==null?void 0:f.toReference(i))||null,readsValue:((h=this.readsValue)==null?void 0:h.toReference(i))||null,parent:this.parent.toReference(i)}}toFlatJSON(i=new Set){return i.has(this.id)?[]:(i.add(this.id),[this.toShallowJSON(),...this.defaultValue?this.defaultValue.toFlatJSON(i):[],...this.dataType?this.dataType.toFlatJSON(i):[],...this.declaration?this.declaration.toFlatJSON(i):[],...this.readsValue?this.readsValue.toFlatJSON(i):[]])}toGenerationTarget(i=at){var a,c;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r,name:this.name||void 0,description:this.description||void 0,type:this.type,declaration:((c=this.declaration)==null?void 0:c.id)||null,parent:this.parent.id}}toFlatGenerationTarget(i=new Set){return i.has(this.id)?[]:(i.add(this.id),[this.toGenerationTarget(),...this.defaultValue?this.defaultValue.toFlatGenerationTarget(i):[],...this.dataType?this.dataType.toFlatGenerationTarget(i):[],...this.readsValue?this.readsValue.toFlatGenerationTarget(i):[],...this.declaration?this.declaration.toFlatGenerationTarget(i):[]])}clearErrors(){var i;return this.errors=[],(i=this.defaultValue)==null||i.clearErrors(),this}validate(){return this.errors=KMe(this),{success:!0}}async validateAsync(i={}){const r=z.YieldTracker.from(i);return this.errors=await FMe(this,{tracker:r}),{success:!0}}getErrors(){var r;return[...this.errors,...((r=this.defaultValue)==null?void 0:r.getErrors())||[]]}async getErrorsAsync(i={}){var e;const r=z.YieldTracker.from(i),a=[...this.errors];await r.tick();const c=await((e=this.defaultValue)==null?void 0:e.getErrorsAsync({tracker:r}));return c&&a.push(...c),a}getShallowErrors(){return this.errors}getDefaultValue(){var i;return this.defaultValue||((i=this.declaration)==null?void 0:i.getDefaultValue())||null}setDefaultValue(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"set-default-value"))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[setDefaultValue] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("set-default-value",this.id),this;const a=this.defaultValue;if((a==null?void 0:a.id)!==(i==null?void 0:i.id)){if(a==null||a.remove({ignoreUpstream:!0},r),this.defaultValue=i,this.defaultValue){const c=this.readsValue;this.removeValueWriter(r),c==null||c.removeValueReader(this,r)}r==null||r.add(this,W.Affected)}return r==null||r.attemptAutoclose("set-default-value",this.id),this}clone(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.CloneEntity)),r=null,a=null,c=!0){var b;const e=Fr(r,this),f=this.toJSON(),h=a||x.UUID.uuid();f.defaultValue=null,f.id=h,f.version=x.UUID.uuid(),f.createdAt=(i==null?void 0:i.timestamp)||B().toISOString(),f.author=(i==null?void 0:i.author)||"1",f.previousVersion=null,f.deleted=!1,f.deletable=!0,f.editable=!0;const m=lr(f,e);m.hydrateAncestors(),r&&m.setParent(r,i),c&&(m.subscribe(),m.addSelfToProject(i)),m.initChildren(i),i==null||i.add(m,W.Added);const E=(b=this.defaultValue)==null?void 0:b.clone(i,m,x.UUID.uuid(),c);return m.defaultValue=E||null,i||m.captureVersion(),i==null||i.attemptAutoclose(w.CloneEntity,this.id),m}getDataType(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"get-data-type"))){var a;if(this.parent.type===d.Operation){const c=this.parent.declaration.inferInputMapDataType(this,i);return i==null||i.attemptAutoclose("get-data-type",this.id),c.self}else Mt.includes(this.parent.type)&&gr(this.parent).getDataType(i);const r=(a=this.declaration)==null?void 0:a.getDataType(i);if(!r){const c=iu(this,i);if(c)return i==null||i.attemptAutoclose("get-data-type",this.id),c}return i==null||i.attemptAutoclose("get-data-type",this.id),r||null}getCounterparts(){let i=[];if([d.BreakStatement,d.ContinueStatement].includes(this.parent.type)){const r=this.parent.parent;i=[...r.breakStatements,...r.continueStatements].flatMap(e=>e.outputs).filter(e=>oe(e,this.project)===oe(this,this.project)&&e.id!==this.id)}else if(this.parent.type===d.ReturnStatement&&[d.FunctionDeclaration,d.GlobalEvent].includes(this.parent.parent.type)&&this.parent.parent.implements){const a=this.parent.parent.returnStatements.flatMap(c=>c.outputs);this.declaration?i=a.filter(e=>{var f;return this.declaration.id===((f=e.declaration)==null?void 0:f.id)&&e.id!==this.id}):i=a.filter(e=>oe(e,this.project)===oe(this,this.project)&&e.id!==this.id)}return i}};R(Ci,"repository",{APICreate:async(i,...r)=>i,APIUpdate:async(i,...r)=>i,APIDelete:async(i,...r)=>i,APIClone:async(i,...r)=>{},APILoad:async(i,...r)=>null,APILoadVersion:async(i,r,...a)=>null}),R(Ci,"type",d.InputMap),R(Ci,"USER_MANAGED_PARENT_TYPES",[...Ct,...Rt]),R(Ci,"PARENT_TYPES",[...Ci.USER_MANAGED_PARENT_TYPES]),R(Ci,"MUTABLE_BASE_PROPERTIES",["name","codeName","description"]),R(Ci,"INMUTABLE_BASE_PROPERTIES",["id","type","version","createdAt","author","previousVersion","parentRelationType"]),R(Ci,"BASE_PROPERTIES",[...Ci.MUTABLE_BASE_PROPERTIES,...Ci.INMUTABLE_BASE_PROPERTIES]),R(Ci,"MUTABLE_META_PROPERTIES",[...Ci.MUTABLE_BASE_PROPERTIES,"index"]),R(Ci,"INMUTABLE_META_PROPERTIES",[...Ci.INMUTABLE_BASE_PROPERTIES]),R(Ci,"META_PROPERTIES",[...Ci.MUTABLE_META_PROPERTIES,...Ci.INMUTABLE_META_PROPERTIES]),R(Ci,"MUTABLE_UPSTREAM_PROPERTIES",["readsValue"]),R(Ci,"INMUTABLE_UPSTREAM_PROPERTIES",["parent","declaration"]),R(Ci,"UPSTREAM_PROPERTIES",[...Ci.MUTABLE_UPSTREAM_PROPERTIES,...Ci.INMUTABLE_UPSTREAM_PROPERTIES]),R(Ci,"MUTABLE_DOWNSTREAM_PROPERTIES",["defaultValue"]),R(Ci,"INMUTABLE_DOWNSTREAM_PROPERTIES",[]),R(Ci,"DOWNSTREAM_PROPERTIES",[...Ci.MUTABLE_DOWNSTREAM_PROPERTIES,...Ci.INMUTABLE_DOWNSTREAM_PROPERTIES]),R(Ci,"PROPERTIES",[...Ci.META_PROPERTIES,...Ci.UPSTREAM_PROPERTIES,...Ci.DOWNSTREAM_PROPERTIES]);let Ts=Ci;class rDi extends Ts{constructor(i,r){super(i,r);R(this,"parentRelationType",null);R(this,"errors",[])}toJSON(i=new Set){return super.toJSON(i)}}class nDi extends Ts{constructor(i,r){super(i,r);R(this,"parentRelationType",null);R(this,"errors",[])}toJSON(i=new Set){return super.toJSON(i)}}class aDi extends Ts{constructor(i,r){super(i,r);R(this,"parentRelationType",null);R(this,"name",null);R(this,"description",null);R(this,"errors",[])}toJSON(i=new Set){return super.toJSON(i)}}async function HMe(s,p={}){var f,h;const i=z.YieldTracker.from(p),r=Aa(s),a=ga(s),c=[...r,...a],e=qt(s.errors,c);await i.tick();for(const m of s.inputsDeclarations)await m.validateAsync({tracker:i});for(const m of s.inputs)await m.validateAsync({tracker:i});for(const m of s.outputs)await m.validateAsync({tracker:i});return await((f=s.error)==null?void 0:f.validateAsync({tracker:i})),await((h=s.dataType)==null?void 0:h.validateAsync({tracker:i})),e}function WMe(s){var r,a;s.inputsDeclarations.forEach(c=>c.validate()),s.inputs.forEach(c=>c.validate()),s.outputs.forEach(c=>c.validate()),(r=s.error)==null||r.validate(),(a=s.dataType)==null||a.validate();const i=[...Aa(s),...ga(s)];return qt(s.errors,i)}const sDi=Object.freeze(Object.defineProperty({__proto__:null,validate:WMe,validateAsync:HMe},Symbol.toStringTag,{value:"Module"}));async function zMe(s,p={}){var a;const i=z.YieldTracker.from(p),r=[...Rn(s),...Xa(s)];return await i.tick(),await((a=s.dataType)==null?void 0:a.validateAsync({tracker:i})),qt(s.errors,r)}function YMe(s){var i;(i=s.dataType)==null||i.validate();const p=[...Rn(s),...Xa(s)];return qt(s.errors,p)}const lDi=Object.freeze(Object.defineProperty({__proto__:null,validate:YMe,validateAsync:zMe},Symbol.toStringTag,{value:"Module"}));var JMe=(s=>(s.DataTypeEntity="data-type-entity",s))(JMe||{});const hi=class hi extends un{constructor(i,r){super(i);R(this,"initialData");R(this,"id");R(this,"name");R(this,"codeName",null);R(this,"description",null);R(this,"index");R(this,"required");R(this,"parentRelationType");R(this,"type",d.ValueDescriptor);R(this,"defaultValue",null);R(this,"dataType",null);R(this,"project");R(this,"errors",[]);R(this,"parent");R(this,"detachedDependents",{});R(this,"knownVersions",null);R(this,"activeVersion",!1);R(this,"initialized",!1);R(this,"startedInitialization",!1);R(this,"_codeNativeValueValidation",null);this.initialData=i,this.project=r,this.id=i.id,this.name=i.name,this.description=i.description,this.index=i.index,this.codeName=i.codeName,this.required=i.required,this.parentRelationType=i.parentRelationType}static new(i=null){return{id:x.UUID.uuid(),version:x.UUID.uuid(),createdAt:(i==null?void 0:i.timestamp)||B().toISOString(),author:(i==null?void 0:i.author)||x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.ValueDescriptor,name:"",codeName:null,description:"",dataType:null,index:0,required:!1,parentRelationType:j.FixedArguments,defaultValue:null,parent:null}}static fromGenerationTarget(i,r,a){const c=a===void 0?r.addChangeSet(new S(r,x.sessionAuthor,B().toISOString(),r,!0,w.CreateFromGenerationTarget)):a,e=i.parent?te(i.parent):null,f=e?r.get(e):null,h=i.parentRelationType===j.FixedArguments?f==null?void 0:f.inputs.length:null,m={id:i.id,version:x.UUID.uuid(),createdAt:(c==null?void 0:c.timestamp)||B().toISOString(),author:(c==null?void 0:c.author)||x.sessionAuthor,previousVersion:null,deleted:!1,name:i.name,deletable:!0,editable:!0,type:d.ValueDescriptor,index:h||0,codeName:i.codeName,description:i.description,required:i.required,defaultValue:null,parentRelationType:i.parentRelationType,dataType:null,parent:(f==null?void 0:f.toReference())||null},E=Ie(m,r);return E.hydrateAncestors(),f&&E.setParent(f,null),E.addSelfToProject(c),c==null||c.add(E,W.Added),E.initChildren(c),c||E.captureVersion(),E}static validateGenerationTarget(i,r){let a=JSON.parse(JSON.stringify(i));const c=[],e=[],f=Bn(a,{parent:{list:!1,types:hi.USER_MANAGED_PARENT_TYPES}},r);c.push(...f.explanations),a=f.modifiedData;const h=Xr(a);e.push(...f.errors,...h.errors),c.push(...h.explanations);const m=a.parent&&r.get(a.parent),E=m&&uu(m);return E&&E.type===d.ActionDescriptor&&e.push(new we({id:`${i.id}--${Te.BuiltInEntityParent}`,code:Te.BuiltInEntityParent,severity:ve.Error,message:`Entity of type "${i.type}" with id "${i.id}", has a parent that is a built-in entity "${E.name}" of type '${E.type}' with id '${E.id}'.
|
|
110
|
+
This is likely an incorrect strategy, either the '${this.type}' entity doesn't need to be updated or it should be deleted and a new one created in the desired parent.`})),{errors:r,explanations:a,modifiedData:c}}subscribeDependents(i){return i.forEach(r=>{this.detachedDependents[r.entity.id]||(this.detachedDependents[r.entity.id]=r)}),this}unsubscribeDependents(i){return i.forEach(r=>{this.detachedDependents[r.entity.id]&&delete this.detachedDependents[r.entity.id]}),this}syncDependents(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"sync-dependents"))){const r=[],a=[],c=[],e=[];return Object.values(this.detachedDependents).forEach(f=>{const h=f.entity.afterAllChildrenInitialized(i);r.push(...h.updated),a.push(...h.added),c.push(...h.removed),e.push(...h.affected)}),i==null||i.attemptAutoclose("sync-dependents",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}onDetachedDependencyRemoved(i,r,a){const c=[],e=[],f=[],h=[];if(r==="declaration"){const{updated:m,added:E,removed:b}=this.remove({ignoreUpstream:!1},a);c.push(...m),e.push(...E),f.push(...b)}return{updated:C(c),added:C(e),removed:C(f),affected:C(h),self:this}}onDetachedDependencyRestored(i,r,a){const c=[],e=[],f=[],h=[];if(r==="declaration"){const{updated:m,added:E,removed:b}=this.restore({},a);c.push(...m),e.push(...E),f.push(...b)}return{updated:C(c),added:C(e),removed:C(f),affected:C(h),self:this}}unsubscribeFromDependencies(){var i,r,a,c,e;return(r=(i=this.declaration)==null?void 0:i.unsubscribeDependents)==null||r.call(i,[{entity:this,field:"declaration"}]),(e=(c=(a=this.dataType)==null?void 0:a.entity)==null?void 0:c.unsubscribeDependents)==null||e.call(c,[{entity:this,field:"data-type-entity"}]),this}subscribeToDependencies(){var i,r,a,c,e;return(r=(i=this.declaration)==null?void 0:i.subscribeDependents)==null||r.call(i,[{entity:this,field:"declaration"}]),(e=(c=(a=this.dataType)==null?void 0:a.entity)==null?void 0:c.subscribeDependents)==null||e.call(c,[{entity:this,field:"data-type-entity"}]),this}increaseVersion(i){var r;if(this.project.diggestedBuiltInBaseEntitiesIds.has(this.id))return this;if(i&&!B(i).isValid())throw new Error(`The shared timestamp '${i}' is not a valid ISO 8601 date string.`);if(i&&B(i).isSame(B(this.createdAt)))return this;if(!((r=this.knownVersions)!=null&&r.has(this.version))&&this.project.initialized)throw new Error(`The current ${this.type} ${this.id} version '${this.version}' is not captured in the 'knownVersions' map. Capture the current version before increasing it to avoid losing data.`);if(!this.activeVersion)throw new Error(`Only active versions can be increased. Entity with id '${this.id}' and version '${this.version}' is not active.`);return this.previousVersion=this.version,this.version=x.UUID.uuid(),this.createdAt=B(i).toISOString()||B().toISOString(),this}captureVersion(){var r;const i=((r=this.knownVersions)==null?void 0:r.get(this.version))||new Ci(this,this.project);if(!this.activeVersion)throw new Error(`Only active versions can be captured. Entity of type ${this.type} with id '${this.id}' and version '${this.version}' is not active.`);if(this.version!==i.version)throw new Error(`Captured ${this.type} with id '${this.id}', version '${i.version}' does not match current entity version '${this.version}'.`);return this.knownVersions=this.knownVersions?this.knownVersions.set(this.version,i):new Map().set(this.version,i),this.apply(i),this}snapshot(){const i=new Ci(this,this.project);return this.apply(i)}apply(i){const r=this.toMeta();return i.metaSync(r,null),i.declaration=this.declaration,i.defaultValue=this.defaultValue,i.readsValue=this.readsValue,i.dataType=this.dataType,i.parent=this.parent,i}recursiveCaptureUpstreamVersions(i){const r=[],a=[],c=[],e=[];if(this.parent){this.parent.increaseVersion(i);const f=this.parent.recursiveCaptureUpstreamVersions(i);r.push(this.parent,...f.updated),a.push(...f.added),c.push(...f.removed)}return{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}async restoreVersion(i,r){var m;const a=[],c=[],e=[],f=[];if(this.version===i&&(r!=null&&r.skipIfSameVersion))return{updated:C(a),added:C(c),removed:C(e),affected:C(f),self:this};if(!this.knownVersions){const E=new Map;for(const[b,A]of this.knownVersions||new Map){if(E.set(b,A),A.activeVersion=!1,A.knownVersions)for(const[_,P]of A.knownVersions)E.set(_,P);A.knownVersions=null}}let h=(m=this.knownVersions)==null?void 0:m.get(i);if(!h){const E=await this.APILoadVersion({},i);if(!E)throw new Error(`Version with id '${i}' for entity with id '${this.id}' not found.`);h=new Ci(E,this.project)}return this.metaSync(h.toShallowJSON(),null),this.previousVersion=h.previousVersion,this.version=h.version,this.createdAt=h.createdAt,this.author=h.author,this.deleted=h.deleted,this.declaration=h.declaration,this.defaultValue=h.defaultValue,this.readsValue=h.readsValue,this.dataType=h.dataType,this.parent=h.parent,{updated:C(a),added:C(c),removed:C(e),affected:C(f),self:this}}updateWithShallowTransfer(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.UpdateWithShallowTransfer))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[updateWithShallowTransfer] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),this;if(this.metaSync(i,r),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 a=te(i.parent),c=this.project.get(a),e=this.parent;if(e&&e.id!==(c==null?void 0:c.id)&&this.removeFromParent(r),c)this.setParent(c,r),this.addSelfToProject(r);else throw r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),new Error(`${this.type} with id '${this.id}' has a 'parent' reference '${a}' that isn't found in the project`)}else throw r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),new Error(`${this.type} with id '${this.id}' must have a 'parent'`);if(i.readsValue){const a=te(i.readsValue),c=this.project.get(a),e=this.readsValue;e&&e.id!==(c==null?void 0:c.id)&&this.removeValueWriter(r),c&&this.setValueWriter(c,r)}else this.removeValueWriter(r);if(i.declaration){const a=te(i.declaration),c=this.project.get(a);c&&this.setDeclaration(c,r)}else this.setDeclaration(null,r);if(i.dataType){const a=te(i.dataType),c=this.project.get(a);c&&this.setDataType(c,r)}else this.setDataType(null,r);if(i.defaultValue){const a=te(i.defaultValue),c=this.project.get(a);c&&this.setDefaultValue(c,r)}else this.setDefaultValue(null,r);return this.captureVersion(),this.subscribeToDependencies(),r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),this}updateWithGenerationTarget(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.UpdateWithGenerationTarget))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[updateWithGenerationTarget] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),this;if(this.metaSync(i,r),i.parent){const a=te(i.parent),c=this.project.get(a),e=this.parent;if(e&&e.id!==(c==null?void 0:c.id)&&this.removeFromParent(r),c)this.setParent(c,r),this.addSelfToProject(r);else throw r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),new Error(`${this.type} with id '${this.id}' has a 'parent' reference '${a}' that isn't found in the project`)}if(i.readsValue){const a=te(i.readsValue),c=this.project.get(a),e=this.readsValue;if(e&&e.id!==(c==null?void 0:c.id)&&this.removeValueWriter(r),c)this.setValueWriter(c,r);else throw new Error(`${this.type} with id '${this.id}' has a 'readsValue' reference '${a}' that isn't found in the project`)}else i.readsValue===null&&this.removeValueWriter(r);if(i.declaration){const a=te(i.declaration),c=this.project.get(a);if(c)this.setDeclaration(c,r);else throw new Error(`${this.type} with id '${this.id}' has a 'declaration' reference '${a}' that isn't found in the project`)}else i.declaration===null&&this.setDeclaration(null,r);return this.captureVersion(),this.subscribeToDependencies(),r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),this}hydrateAncestors(){const i=[],r=[],a=[],c=[];if(this.initialData.parent){const e=te(this.initialData.parent),f=this.project.get(e);if(f)this.setParent(f,null),i.push(f);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.readsValue){const e=te(this.initialData.readsValue),f=this.project.get(e);f&&(this.setValueWriter(f,null),i.push(f))}if(this.initialData.declaration){const e=te(this.initialData.declaration),f=this.project.get(e);f&&(this.setDeclaration(f,null),i.push(f))}return{updated:C(i),added:C(r),removed:C(a),affected:C(c),self:this}}afterAllChildrenInitialized(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AfterAllChildrenInitialized))){var b,A,_,P;if(!this.checkCanEdit(this,i))return z.Logger.warn(`[afterAllChildrenInitialized] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.AfterAllChildrenInitialized,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];this.initialized=!0;let f=((b=this.declaration)==null?void 0:b.index)??this.index??0;const h=(Rt.includes(this.parent.type)?this.parent.outputs:this.parent.inputs).filter(V=>!V.deleted&&V.id!==this.id);h.length&&(f>h.length+1?f=h.length:f<0&&(f=0)),h.find(V=>(V.index||0)===f&&!V.deleted)&&h.filter(V=>(V.index||0)>=f&&!V.deleted).forEach(V=>{V.metaSync({index:(V.index||0)+1},i),i==null||i.add(V,W.Updated),r.push(V)});const E=this.parent.type===d.VariableInstance&&((A=this.declaration)==null?void 0:A.type)===d.Property&&((_=this.declaration)==null?void 0:_.constant);if(E&&this.readsValue&&(this.readsValue.removeValueReader(this,i),this.removeValueWriter(i)),E&&this.defaultValue&&this.defaultValue.remove({ignoreUpstream:!1},i),this.readsValue&&this.defaultValue&&(this.project.diggestedBuiltInBaseEntitiesIds.has(this.defaultValue.id)||this.defaultValue.remove({ignoreUpstream:!1},i),this.setDefaultValue(null,i)),this.defaultValue&&!this.readsValue&&!this.project.diggestedBuiltInBaseEntitiesIds.has(this.id)&&this.project.diggestedBuiltInBaseEntitiesIds.has(this.defaultValue.id)){const V=this.defaultValue.clone(i,this);this.setDefaultValue(V,i)}return this.readsValue&&this.parent.type===d.VariableDeclaration&&((P=this.parent.parent)==null?void 0:P.type)===d.Project&&(i==null||i.event({id:`${w.RemoveValueWriter}-${this.id}--${Me.InputsInGlobalVariableDeclarationsCannotReadValues}`,action:w.RemoveValueWriter,owner:this,errorReason:Me.InputsInGlobalVariableDeclarationsCannotReadValues,rootAction:!1}),this.readsValue.removeValueReader(this,i),this.removeValueWriter(i)),this.metaSync({index:f},i),i==null||i.attemptAutoclose(w.AfterAllChildrenInitialized,this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}addSelfToProject(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"add-self-to-project"))){var f;const r=[this],a=[],c=[],e=[];return Rt.includes(this.parent.type)?this.parentRelationType===dd.Error?this.parent.setThrows(this,i):this.parent.addOutput(this,i):this.parent.addInput(this,i),e.push(this.parent),(f=this.readsValue)==null||f.addValueReader(this,i),this.readsValue&&r.push(this.readsValue),this.subscribe(),this.subscribeToDependencies(),i==null||i.attemptAutoclose("add-self-to-project",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}setParent(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetParent))){var a;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.SetParent,r)?(((a=this.parent)==null?void 0:a.id)!==(i==null?void 0:i.id)&&(this.parent=i,r&&(r==null||r.add(this,W.Updated))),r==null||r.attemptAutoclose(w.SetParent,this.id),this):this}setDataType(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetDataType))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[setDataType] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.SetDataType,this.id),this;const a=this.dataType;return(a==null?void 0:a.id)!==(i==null?void 0:i.id)&&(a==null||a.remove({ignoreUpstream:!0},r),this.dataType=i,this.subscribeToDependencies(),r==null||r.add(this,W.Affected)),r==null||r.attemptAutoclose(w.SetDataType,this.id),this}removeDataType(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveDataType))){return this.checkCanEdit(this,i)?(this.dataType&&(this.dataType.remove({ignoreUpstream:!0},i),i==null||i.add(this,W.Affected),this.dataType=null),i==null||i.attemptAutoclose(w.RemoveDataType,this.id),this):(z.Logger.warn(`[removeDataType] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveDataType,this.id),this)}setDeclaration(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"set-declaration"))){var a;return((a=this.declaration)==null?void 0:a.id)!==(i==null?void 0:i.id)&&(this.declaration=i,this.subscribeToDependencies(),r&&(r==null||r.add(this,W.Updated))),r==null||r.attemptAutoclose("set-declaration",this.id),this}initChildren(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"init-children"))){return this.initialized||this.startedInitialization?this:(this.startedInitialization=!0,this.initialData.defaultValue&&(this.defaultValue=Ie(this.initialData.defaultValue,this.project),this.defaultValue.setParent(this,null),this.defaultValue.initChildren(i)),this.initialData.declaration&&(this.declaration=Ie(this.initialData.declaration,this.project)),uy.initReadsValue(this),this.subscribeToDependencies(),this.afterAllChildrenInitialized(i),i==null||i.attemptAutoclose("init-children",this.id),this)}setValueWriter(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetValueWriter))){var c,e,f,h,m,E,b;return this.checkCanEditFromScopeOwnerWithSideEffects(this,w.SetValueWriter,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.SetValueWriter}-${this.id}`,action:w.SetValueWriter,owner:this,errorReason:Me.CannotValueWriteItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.SetValueWriter})),this.parent.type===d.VariableInstance&&((e=this.declaration)==null?void 0:e.type)===d.Property&&((f=this.declaration)==null?void 0:f.constant)&&i?(r==null||r.event({id:`${w.SetValueWriter}-${this.id}--${i.id}`,action:w.SetValueWriter,owner:this,counterpart:i,errorReason:Me.ValueReadingOverridesConstantVariable,rootAction:((h=r==null?void 0:r.self)==null?void 0:h.id)===this.id&&(r==null?void 0:r.actionName)===w.SetValueWriter}),r==null||r.attemptAutoclose(w.SetValueWriter,this.id),this):(((m=this.readsValue)==null?void 0:m.id)!==(i==null?void 0:i.id)&&(this.readsValue=i,this.readsValue&&((E=this.defaultValue)==null||E.remove({ignoreUpstream:!1},r),this.parent.type===d.Search&&((b=this.declaration)==null||b.setDefaultValue(null,r))),r==null||r.add(this,W.Updated)),r==null||r.attemptAutoclose(w.SetValueWriter,this.id),this)):this}removeValueWriter(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveValueWriter))){return this.readsValue&&!this.checkCanEditFromScopeOwnerWithSideEffects(this,w.RemoveValueWriter,i)?this:(this.readsValue&&(this.readsValue=null,i==null||i.add(this,W.Updated)),i==null||i.attemptAutoclose(w.RemoveValueWriter,this.id),this)}subscribe(){var i;return this.activeVersion=!0,(i=this.knownVersions)==null||i.forEach(r=>{r.version!==this.version&&(r.activeVersion=!1)}),this.project.subscribeInstance(this),this}unsubscribe(){return this.project.unsubscribeInstance(this),this}metaSync(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"meta-sync"))){const a=tn(this,i,r),c=en(this,a),e=this.toMeta();return this.index=a.index||(a.index!==0?e.index:0),this.name=a.name!==void 0?a.name:e.name,this.codeName=a.codeName!==void 0?a.codeName:e.codeName,this.description=a.description!==void 0?a.description:e.description,this.parentRelationType=a.parentRelationType!==void 0?a.parentRelationType:this.parentRelationType,super.baseMetaSync(a,this,r),a.deleted===!0&&!e.deleted?r==null||r.add(this,W.Removed):a.deleted===!1&&e.deleted?r==null||r.add(this,W.Added):c&&(r==null||r.add(this,W.Updated)),r==null||r.attemptAutoclose("meta-sync",this.id),this}async APILoad(i=Ke,...r){return await Ci.repository.APILoad(this.id,...r),this}async APICreate(i=Ke,...r){return await Ci.repository.APICreate(this.toShallowJSON(),...r),this}async APIUpdate(i=Ke,...r){return await Ci.repository.APIUpdate(this.toShallowJSON(),...r),this}async APIDelete(i=Ke,...r){return await Ci.repository.APIDelete(this.toShallowJSON(),...r),this}async APIClone(i=Ke,...r){return await Ci.repository.APIClone(this.id,...r),this}async APILoadVersion(i=Ke,r,...a){return await Ci.repository.APILoadVersion(this.id,r,...a)}removeFromParent(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveFromParent))){var f;if(!this.checkCanEdit(this,i))return z.Logger.warn(`[removeFromParent] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveFromParent,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];return Rt.includes((f=this.parent)==null?void 0:f.type)?this.parentRelationType===dd.Error?(this.parent.setThrows(null,i),e.push(this.parent)):(this.parent.removeOutput(this,i),e.push(this.parent)):(this.parent.removeInput(this,i),e.push(this.parent)),i==null||i.attemptAutoclose(w.RemoveFromParent,this.id),{added:C(c),updated:C(r),removed:C(a),affected:C(e),self:this}}remove({ignoreUpstream:i}={ignoreUpstream:!1},r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveEntity))){var h,m,E,b,A;if(this.deleted)return r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};if(!this.checkCanDelete(this,r))return z.Logger.warn(`[remove] User is not allowed to delete or edit this ${this.type} entity with id: ${this.id}`),r==null||r.event({id:`${w.RemoveEntity}-${this.id}--${Me.ActionOwnerEntityNonDeletable}`,action:w.RemoveEntity,owner:this,errorReason:Me.ActionOwnerEntityNonDeletable,rootAction:((h=r==null?void 0:r.self)==null?void 0:h.id)===this.id&&(r==null?void 0:r.actionName)===w.RemoveEntity}),r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const a=[],c=[],e=[],f=[];if(r!=null&&r.hasRemoved(this.id))return r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};if(c.push(this),this.unsubscribe(),this.unsubscribeFromDependencies(),this.metaSync({deleted:!0},r),r!=null&&r.hasAdded(this.id)||this.project.subscribeDeletedInstance(this),Object.values(this.detachedDependents).forEach(_=>{const{updated:P,removed:V,added:G}=_.entity.onDetachedDependencyRemoved(this,_.field,r);a.push(...P),c.push(...V),e.push(...G)}),this.defaultValue){const{updated:_,removed:P}=this.defaultValue.remove({ignoreUpstream:!0},r);a.push(..._),c.push(...P)}if(this.readsValue&&(a.push(this.readsValue),this.readsValue.removeValueReader(this,r)),this.defaultValue&&(a.push(this.defaultValue),this.defaultValue.remove({ignoreUpstream:!0},r)),this.declaration){if(this.declaration.type===d.Property&&((m=this.declaration.parent)==null?void 0:m.type)===d.DefinitionEntity&&((b=(E=this.declaration.parent)==null?void 0:E.parent)==null?void 0:b.type)===d.DataType&&!(r!=null&&r.hasRemoved(this.declaration.id))&&!this.declaration.deleted){const{updated:_,removed:P}=this.declaration.remove({ignoreUpstream:!1},r);a.push(..._),c.push(...P)}else if(this.declaration.type===d.ValueDescriptor&&((A=this.declaration.parent)==null?void 0:A.type)===d.Search&&!(r!=null&&r.hasRemoved(this.declaration.id))&&!this.declaration.deleted){const{updated:_,removed:P}=this.declaration.remove({ignoreUpstream:!1},r);a.push(..._),c.push(...P)}}if(!i){const _=this.removeFromParent(r);e.push(..._.added),a.push(..._.updated),c.push(..._.removed),f.push(..._.affected)}if(!i&&this.parent&&[d.BreakStatement,d.ContinueStatement].includes(this.parent.type)&&this.parent.parent&&this.parent.parent.type===d.Loop&&this.parent.initialized&&this.parent.parent.syncFromDataType(r),this.parentRelationType===dd.Error&&this.parent.type===d.ReturnStatement){const{updated:_,added:P,removed:V,affected:G}=this.parent.syncInputs(r);a.push(..._),e.push(...P),c.push(...V),f.push(...G)}return r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:C(e),updated:C(a),removed:C(c),affected:C(f),self:this}}restore({}={},i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RestoreEntity))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[restore] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RestoreEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];if(i!=null&&i.hasAdded(this.id))return i==null||i.attemptAutoclose(w.RestoreEntity,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(f=>{const{updated:h,removed:m,added:E}=f.entity.onDetachedDependencyRestored(this,f.field,i);a.push(...h),c.push(...m),r.push(...E)}),this.defaultValue){const{updated:f}=this.defaultValue.restore({},i);a.push(...f)}return this.readsValue&&(a.push(this.readsValue),this.readsValue.addValueReader(this,i)),this.defaultValue&&(a.push(this.defaultValue),this.defaultValue.restore({},i)),e.push(this.parent),this.parent.addInput(this,i),i==null||i.attemptAutoclose(w.RestoreEntity,this.id),{added:C(r),updated:C(a),removed:C(c),affected:C(e),self:this}}toFlat(i=new Set){return i.has(this.id)?[]:(i.add(this.id),[this,...this.defaultValue?this.defaultValue.toFlat(i):[],...this.dataType?this.dataType.toFlat(i):[],...this.declaration?this.declaration.toFlat(i):[],...this.readsValue?this.readsValue.toFlat(i):[]])}toFlatIds(i=new Set){return i.has(this.id)?[]:(i.add(this.id),[this.id,...this.defaultValue?this.defaultValue.toFlatIds(i):[],...this.dataType?this.dataType.toFlatIds(i):[],...this.declaration?this.declaration.toFlatIds(i):[],...this.readsValue?this.readsValue.toFlatIds(i):[]])}toMeta(){return{id:this.id,version:this.version,createdAt:this.createdAt,previousVersion:this.previousVersion,author:this.author,deleted:this.deleted,codeName:this.codeName,description:this.description,parentRelationType:this.parentRelationType,index:this.index,type:this.type,editable:this.editable,deletable:this.deletable,name:this.name}}toJSON(i=new Set){var r,a,c,e;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,editable:this.editable,deletable:this.deletable,index:this.index,name:this.name,codeName:this.codeName,description:this.description,parentRelationType:this.parentRelationType,defaultValue:((r=this.defaultValue)==null?void 0:r.toJSON(i))||null,dataType:((a=this.dataType)==null?void 0:a.toJSON(i))||null,declaration:((c=this.declaration)==null?void 0:c.toJSON(i))||null,readsValue:((e=this.readsValue)==null?void 0:e.toReference())||null,parent:this.parent.toReference()})}toJSONClone(i=at){var a,c,e,f,h,m,E,b,A,_,P,V;let r;return(a=i.seenEntityMaps)!=null&&a.has(this.id)?r=i.seenEntityMaps.get(this.id):(r=i.newId||dn(this,this.project,i.uuidStrategy),i.seenEntityMaps&&i.seenEntityMaps.set(this.id,r)),(c=i.seenEntities)!=null&&c.has(r)||(e=i.seenEntities)!=null&&e.has(this.id)?this.toReference({seenEntityMaps:i.seenEntityMaps}):((f=i.seenEntities)==null||f.add(r),(h=i.seenEntities)==null||h.add(this.id),{id:r,version:x.UUID.uuid(),createdAt:i.timestamp||B().toISOString(),previousVersion:null,author:this.author,deleted:this.deleted,type:this.type,editable:this.editable,deletable:this.deletable,index:this.index,name:this.name,codeName:this.codeName,description:this.description,parentRelationType:this.parentRelationType,defaultValue:((m=this.defaultValue)==null?void 0:m.toJSONClone({...i,newId:null}))||null,dataType:((E=this.dataType)==null?void 0:E.toJSONClone({...i,newId:null}))||null,declaration:(b=this.declaration)!=null&&b.id&&this.project.getBuiltIn((A=this.declaration)==null?void 0:A.id)?(_=this.declaration)==null?void 0:_.toJSON(i.seenEntities):((P=this.declaration)==null?void 0:P.toJSONClone({...i,newId:null}))||null,readsValue:((V=this.readsValue)==null?void 0:V.toReference({seenEntityMaps:i.seenEntityMaps}))||null,parent:this.parent.toReference({seenEntityMaps:i.seenEntityMaps})})}toReference(i=at){var a;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r+"--"+x.UUID.uuid()+"--ref",type:d.GenericReference,entityId:r,version:this.version,entityType:this.type}}toShallowJSON(i=at){var a,c,e,f,h;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r,version:this.version,createdAt:this.createdAt,previousVersion:this.previousVersion,author:this.author,deleted:this.deleted,type:this.type,editable:this.editable,deletable:this.deletable,name:this.name,codeName:this.codeName,description:this.description,parentRelationType:this.parentRelationType,index:this.index,dataType:((c=this.dataType)==null?void 0:c.toReference(i))||null,defaultValue:((e=this.defaultValue)==null?void 0:e.toReference(i))||null,declaration:((f=this.declaration)==null?void 0:f.toReference(i))||null,readsValue:((h=this.readsValue)==null?void 0:h.toReference(i))||null,parent:this.parent.toReference(i)}}toFlatJSON(i=new Set){return i.has(this.id)?[]:(i.add(this.id),[this.toShallowJSON(),...this.defaultValue?this.defaultValue.toFlatJSON(i):[],...this.dataType?this.dataType.toFlatJSON(i):[],...this.declaration?this.declaration.toFlatJSON(i):[],...this.readsValue?this.readsValue.toFlatJSON(i):[]])}toGenerationTarget(i=at){var a,c;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r,name:this.name||void 0,description:this.description||void 0,type:this.type,declaration:((c=this.declaration)==null?void 0:c.id)||null,parent:this.parent.id}}toFlatGenerationTarget(i=new Set){return i.has(this.id)?[]:(i.add(this.id),[this.toGenerationTarget(),...this.defaultValue?this.defaultValue.toFlatGenerationTarget(i):[],...this.dataType?this.dataType.toFlatGenerationTarget(i):[],...this.readsValue?this.readsValue.toFlatGenerationTarget(i):[],...this.declaration?this.declaration.toFlatGenerationTarget(i):[]])}clearErrors(){var i;return this.errors=[],(i=this.defaultValue)==null||i.clearErrors(),this}validate(){return this.errors=KMe(this),{success:!0}}async validateAsync(i={}){const r=z.YieldTracker.from(i);return this.errors=await FMe(this,{tracker:r}),{success:!0}}getErrors(){var r;return[...this.errors,...((r=this.defaultValue)==null?void 0:r.getErrors())||[]]}async getErrorsAsync(i={}){var e;const r=z.YieldTracker.from(i),a=[...this.errors];await r.tick();const c=await((e=this.defaultValue)==null?void 0:e.getErrorsAsync({tracker:r}));return c&&a.push(...c),a}getShallowErrors(){return this.errors}getDefaultValue(){var i;return this.defaultValue||((i=this.declaration)==null?void 0:i.getDefaultValue())||null}setDefaultValue(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"set-default-value"))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[setDefaultValue] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("set-default-value",this.id),this;const a=this.defaultValue;if((a==null?void 0:a.id)!==(i==null?void 0:i.id)){if(a==null||a.remove({ignoreUpstream:!0},r),this.defaultValue=i,this.defaultValue){const c=this.readsValue;this.removeValueWriter(r),c==null||c.removeValueReader(this,r)}r==null||r.add(this,W.Affected)}return r==null||r.attemptAutoclose("set-default-value",this.id),this}clone(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.CloneEntity)),r=null,a=null,c=!0){var b;const e=Fr(r,this),f=this.toJSON(),h=a||x.UUID.uuid();f.defaultValue=null,f.id=h,f.version=x.UUID.uuid(),f.createdAt=(i==null?void 0:i.timestamp)||B().toISOString(),f.author=(i==null?void 0:i.author)||"1",f.previousVersion=null,f.deleted=!1,f.deletable=!0,f.editable=!0;const m=lr(f,e);m.hydrateAncestors(),r&&m.setParent(r,i),c&&(m.subscribe(),m.addSelfToProject(i)),m.initChildren(i),i==null||i.add(m,W.Added);const E=(b=this.defaultValue)==null?void 0:b.clone(i,m,x.UUID.uuid(),c);return m.defaultValue=E||null,i||m.captureVersion(),i==null||i.attemptAutoclose(w.CloneEntity,this.id),m}getDataType(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"get-data-type"))){var a;if(this.parent.type===d.Operation){const c=this.parent.declaration.inferInputMapDataType(this,i);return i==null||i.attemptAutoclose("get-data-type",this.id),c.self}else Mt.includes(this.parent.type)&&gr(this.parent).getDataType(i);const r=(a=this.declaration)==null?void 0:a.getDataType(i);if(!r){const c=iu(this,i);if(c)return i==null||i.attemptAutoclose("get-data-type",this.id),c}return i==null||i.attemptAutoclose("get-data-type",this.id),r||null}getCounterparts(){let i=[];if([d.BreakStatement,d.ContinueStatement].includes(this.parent.type)){const r=this.parent.parent;i=[...r.breakStatements,...r.continueStatements].flatMap(e=>e.outputs).filter(e=>oe(e,this.project)===oe(this,this.project)&&e.id!==this.id)}else if(this.parent.type===d.ReturnStatement&&[d.FunctionDeclaration,d.GlobalEvent].includes(this.parent.parent.type)&&this.parent.parent.implements){const a=this.parent.parent.returnStatements.flatMap(c=>c.outputs);this.declaration?i=a.filter(e=>{var f;return this.declaration.id===((f=e.declaration)==null?void 0:f.id)&&e.id!==this.id}):i=a.filter(e=>oe(e,this.project)===oe(this,this.project)&&e.id!==this.id)}return i}};R(Ci,"repository",{APICreate:async(i,...r)=>i,APIUpdate:async(i,...r)=>i,APIDelete:async(i,...r)=>i,APIClone:async(i,...r)=>{},APILoad:async(i,...r)=>null,APILoadVersion:async(i,r,...a)=>null}),R(Ci,"type",d.InputMap),R(Ci,"USER_MANAGED_PARENT_TYPES",[...Ct,...Rt]),R(Ci,"PARENT_TYPES",[...Ci.USER_MANAGED_PARENT_TYPES]),R(Ci,"MUTABLE_BASE_PROPERTIES",["name","codeName","description"]),R(Ci,"INMUTABLE_BASE_PROPERTIES",["id","type","version","createdAt","author","previousVersion","parentRelationType"]),R(Ci,"BASE_PROPERTIES",[...Ci.MUTABLE_BASE_PROPERTIES,...Ci.INMUTABLE_BASE_PROPERTIES]),R(Ci,"MUTABLE_META_PROPERTIES",[...Ci.MUTABLE_BASE_PROPERTIES,"index"]),R(Ci,"INMUTABLE_META_PROPERTIES",[...Ci.INMUTABLE_BASE_PROPERTIES]),R(Ci,"META_PROPERTIES",[...Ci.MUTABLE_META_PROPERTIES,...Ci.INMUTABLE_META_PROPERTIES]),R(Ci,"MUTABLE_UPSTREAM_PROPERTIES",["readsValue"]),R(Ci,"INMUTABLE_UPSTREAM_PROPERTIES",["parent","declaration"]),R(Ci,"UPSTREAM_PROPERTIES",[...Ci.MUTABLE_UPSTREAM_PROPERTIES,...Ci.INMUTABLE_UPSTREAM_PROPERTIES]),R(Ci,"MUTABLE_DOWNSTREAM_PROPERTIES",["defaultValue"]),R(Ci,"INMUTABLE_DOWNSTREAM_PROPERTIES",[]),R(Ci,"DOWNSTREAM_PROPERTIES",[...Ci.MUTABLE_DOWNSTREAM_PROPERTIES,...Ci.INMUTABLE_DOWNSTREAM_PROPERTIES]),R(Ci,"PROPERTIES",[...Ci.META_PROPERTIES,...Ci.UPSTREAM_PROPERTIES,...Ci.DOWNSTREAM_PROPERTIES]);let Ts=Ci;class rDi extends Ts{constructor(i,r){super(i,r);R(this,"parentRelationType",null);R(this,"errors",[])}toJSON(i=new Set){return super.toJSON(i)}}class nDi extends Ts{constructor(i,r){super(i,r);R(this,"parentRelationType",null);R(this,"errors",[])}toJSON(i=new Set){return super.toJSON(i)}}class aDi extends Ts{constructor(i,r){super(i,r);R(this,"parentRelationType",null);R(this,"name",null);R(this,"description",null);R(this,"errors",[])}toJSON(i=new Set){return super.toJSON(i)}}async function HMe(s,p={}){var f,h;const i=z.YieldTracker.from(p),r=Aa(s),a=ga(s),c=[...r,...a],e=qt(s.errors,c);await i.tick();for(const m of s.inputsDeclarations)await m.validateAsync({tracker:i});for(const m of s.inputs)await m.validateAsync({tracker:i});for(const m of s.outputs)await m.validateAsync({tracker:i});return await((f=s.error)==null?void 0:f.validateAsync({tracker:i})),await((h=s.dataType)==null?void 0:h.validateAsync({tracker:i})),e}function WMe(s){var r,a;s.inputsDeclarations.forEach(c=>c.validate()),s.inputs.forEach(c=>c.validate()),s.outputs.forEach(c=>c.validate()),(r=s.error)==null||r.validate(),(a=s.dataType)==null||a.validate();const i=[...Aa(s),...ga(s)];return qt(s.errors,i)}const sDi=Object.freeze(Object.defineProperty({__proto__:null,validate:WMe,validateAsync:HMe},Symbol.toStringTag,{value:"Module"}));async function zMe(s,p={}){var a;const i=z.YieldTracker.from(p),r=[...Rn(s),...Xa(s)];return await i.tick(),await((a=s.dataType)==null?void 0:a.validateAsync({tracker:i})),qt(s.errors,r)}function YMe(s){var i;(i=s.dataType)==null||i.validate();const p=[...Rn(s),...Xa(s)];return qt(s.errors,p)}const lDi=Object.freeze(Object.defineProperty({__proto__:null,validate:YMe,validateAsync:zMe},Symbol.toStringTag,{value:"Module"}));var JMe=(s=>(s.DataTypeEntity="data-type-entity",s))(JMe||{});const hi=class hi extends un{constructor(i,r){super(i);R(this,"initialData");R(this,"id");R(this,"name");R(this,"codeName",null);R(this,"description",null);R(this,"index");R(this,"required");R(this,"parentRelationType");R(this,"type",d.ValueDescriptor);R(this,"defaultValue",null);R(this,"dataType",null);R(this,"project");R(this,"errors",[]);R(this,"parent");R(this,"detachedDependents",{});R(this,"knownVersions",null);R(this,"activeVersion",!1);R(this,"initialized",!1);R(this,"startedInitialization",!1);R(this,"_codeNativeValueValidation",null);this.initialData=i,this.project=r,this.id=i.id,this.name=i.name,this.description=i.description,this.index=i.index,this.codeName=i.codeName,this.required=i.required,this.parentRelationType=i.parentRelationType}static new(i=null){return{id:x.UUID.uuid(),version:x.UUID.uuid(),createdAt:(i==null?void 0:i.timestamp)||B().toISOString(),author:(i==null?void 0:i.author)||x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.ValueDescriptor,name:"",codeName:null,description:"",dataType:null,index:0,required:!1,parentRelationType:j.FixedArguments,defaultValue:null,parent:null}}static fromGenerationTarget(i,r,a){const c=a===void 0?r.addChangeSet(new S(r,x.sessionAuthor,B().toISOString(),r,!0,w.CreateFromGenerationTarget)):a,e=i.parent?te(i.parent):null,f=e?r.get(e):null,h=i.parentRelationType===j.FixedArguments?f==null?void 0:f.inputs.length:null,m={id:i.id,version:x.UUID.uuid(),createdAt:(c==null?void 0:c.timestamp)||B().toISOString(),author:(c==null?void 0:c.author)||x.sessionAuthor,previousVersion:null,deleted:!1,name:i.name,deletable:!0,editable:!0,type:d.ValueDescriptor,index:h||0,codeName:i.codeName,description:i.description,required:i.required,defaultValue:null,parentRelationType:i.parentRelationType,dataType:null,parent:(f==null?void 0:f.toReference())||null},E=Ie(m,r);return E.hydrateAncestors(),f&&E.setParent(f,null),E.addSelfToProject(c),c==null||c.add(E,W.Added),E.initChildren(c),c||E.captureVersion(),E}static validateGenerationTarget(i,r){let a=JSON.parse(JSON.stringify(i));const c=[],e=[],f=Bn(a,{parent:{list:!1,types:hi.USER_MANAGED_PARENT_TYPES}},r);c.push(...f.explanations),a=f.modifiedData;const h=Xr(a);e.push(...f.errors,...h.errors),c.push(...h.explanations);const m=a.parent&&r.get(a.parent),E=m&&uu(m);return E&&E.type===d.ActionDescriptor&&e.push(new we({id:`${i.id}--${Te.BuiltInEntityParent}`,code:Te.BuiltInEntityParent,severity:ve.Error,message:`Entity of type "${i.type}" with id "${i.id}", has a parent that is a built-in entity "${E.name}" of type '${E.type}' with id '${E.id}'.
|
|
111
111
|
You can't modify system entities that are built-in.`})),m&&m.type===d.ActionDescriptor&&(!a.parentRelationType||!(a.parentRelationType===j.FixedArguments||a.parentRelationType===j.ReturnedError||a.parentRelationType===j.DynamicArgument))&&e.push(new we({id:`${i.id}--${Te.InvalidParentRelationType}`,code:Te.InvalidParentRelationType,severity:ve.Error,message:`The entity with id '${i.id}' and type '${i.type}', must have a 'parentRelationType' property set to either '${j.FixedArguments}' or '${j.ReturnedError}' when being added as a child to an entity of type 'action-descriptor'.`})),{errors:e,explanations:c,modifiedData:a}}get codeNativeValueValidation(){return this._codeNativeValueValidation||null}validateGeneratedUpdate(i){return{errors:[],explanations:[],modifiedData:i}}subscribeDependents(i){return i.forEach(r=>{this.detachedDependents[r.entity.id]||(this.detachedDependents[r.entity.id]=r)}),this}unsubscribeDependents(i){return i.forEach(r=>{this.detachedDependents[r.entity.id]&&delete this.detachedDependents[r.entity.id]}),this}syncDependents(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"sync-dependents"))){const r=[],a=[],c=[],e=[];return Object.values(this.detachedDependents).forEach(f=>{const h=f.entity.afterAllChildrenInitialized(i);r.push(...h.updated),a.push(...h.added),c.push(...h.removed),e.push(...h.affected)}),i==null||i.attemptAutoclose("sync-dependents",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}onDetachedDependencyRemoved(i,r,a){const c=[],e=[],f=[],h=[];return{updated:C(c),added:C(e),removed:C(f),affected:C(h),self:this}}onDetachedDependencyRestored(i,r,a){const c=[],e=[],f=[],h=[];return{updated:C(c),added:C(e),removed:C(f),affected:C(h),self:this}}unsubscribeFromDependencies(){var i,r,a;return(a=(r=(i=this.dataType)==null?void 0:i.entity)==null?void 0:r.unsubscribeDependents)==null||a.call(r,[{entity:this,field:"data-type-entity"}]),this}subscribeToDependencies(){var i,r,a;return(a=(r=(i=this.dataType)==null?void 0:i.entity)==null?void 0:r.subscribeDependents)==null||a.call(r,[{entity:this,field:"data-type-entity"}]),this}increaseVersion(i){var r;if(this.project.diggestedBuiltInBaseEntitiesIds.has(this.id))return this;if(i&&!B(i).isValid())throw new Error(`The shared timestamp '${i}' is not a valid ISO 8601 date string.`);if(i&&B(i).isSame(B(this.createdAt)))return this;if(!((r=this.knownVersions)!=null&&r.has(this.version))&&this.project.initialized)throw new Error(`The current ${this.type} ${this.id} version '${this.version}' is not captured in the 'knownVersions' map. Capture the current version before increasing it to avoid losing data.`);if(!this.activeVersion)throw new Error(`Only active versions can be increased. Entity with id '${this.id}' and version '${this.version}' is not active.`);return this.previousVersion=this.version,this.version=x.UUID.uuid(),this.createdAt=B(i).toISOString()||B().toISOString(),this}captureVersion(){var r;const i=((r=this.knownVersions)==null?void 0:r.get(this.version))||new hi(this,this.project);if(!this.activeVersion)throw new Error(`Only active versions can be captured. Entity of type ${this.type} with id '${this.id}' and version '${this.version}' is not active.`);if(this.version!==i.version)throw new Error(`Captured ${this.type} with id '${this.id}', version '${i.version}' does not match current entity version '${this.version}'.`);return this.knownVersions=this.knownVersions?this.knownVersions.set(this.version,i):new Map().set(this.version,i),this.apply(i),this}snapshot(){const i=new hi(this,this.project);return this.apply(i)}apply(i){const r=this.toMeta();return i.metaSync(r,null),i.defaultValue=this.defaultValue,i.dataType=this.dataType,i.parent=this.parent,i}recursiveCaptureUpstreamVersions(i){const r=[],a=[],c=[],e=[];if(this.parent){this.parent.increaseVersion(i);const f=this.parent.recursiveCaptureUpstreamVersions(i);r.push(this.parent,...f.updated),a.push(...f.added),c.push(...f.removed)}return{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}async restoreVersion(i,r){var m;const a=[],c=[],e=[],f=[];if(this.version===i&&(r!=null&&r.skipIfSameVersion))return{updated:C(a),added:C(c),removed:C(e),affected:C(f),self:this};if(!this.knownVersions){const E=new Map;for(const[b,A]of this.knownVersions||new Map){if(E.set(b,A),A.activeVersion=!1,A.knownVersions)for(const[_,P]of A.knownVersions)E.set(_,P);A.knownVersions=null}}let h=(m=this.knownVersions)==null?void 0:m.get(i);if(!h){const E=await this.APILoadVersion({},i);if(!E)throw new Error(`Version with id '${i}' for entity with id '${this.id}' not found.`);h=new hi(E,this.project)}return this.metaSync(h.toShallowJSON(),null),this.previousVersion=h.previousVersion,this.version=h.version,this.createdAt=h.createdAt,this.author=h.author,this.deleted=h.deleted,this.defaultValue=h.defaultValue,this.dataType=h.dataType,this.parent=h.parent,{updated:C(a),added:C(c),removed:C(e),affected:C(f),self:this}}updateWithShallowTransfer(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.UpdateWithShallowTransfer))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[updateWithShallowTransfer] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),this;if(this.metaSync(i,r),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 a=te(i.parent),c=this.project.get(a),e=this.parent;if(e&&e.id!==(c==null?void 0:c.id)&&this.removeFromParent(r),c)this.setParent(c,r),this.addSelfToProject(r);else throw r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),new Error(`${this.type} with id '${this.id}' has a 'parent' reference '${a}' that isn't found in the project`)}else throw r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),new Error(`${this.type} with id '${this.id}' must have a 'parent'`);if(i.dataType){const a=te(i.dataType),c=this.project.get(a);c&&this.setDataType(c,r)}else this.setDataType(null,r);if(i.defaultValue){const a=te(i.defaultValue),c=this.project.get(a);c&&this.setDefaultValue(c,r)}else this.setDefaultValue(null,r);return this.captureVersion(),this.subscribeToDependencies(),r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),this}updateWithGenerationTarget(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.UpdateWithGenerationTarget))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[updateWithGenerationTarget] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),this;if(this.metaSync(i,r),i.parent){const a=te(i.parent),c=this.project.get(a),e=this.parent;if(e&&e.id!==(c==null?void 0:c.id)&&this.removeFromParent(r),c)this.setParent(c,r),this.addSelfToProject(r);else throw r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),new Error(`${this.type} with id '${this.id}' has a 'parent' reference '${a}' that isn't found in the project`)}return this.captureVersion(),this.subscribeToDependencies(),r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),this}hydrateAncestors(){const i=[],r=[],a=[],c=[];if(this.initialData.parent){const e=te(this.initialData.parent),f=this.project.get(e);if(f)this.setParent(f,null),i.push(f);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'`);return{updated:C(i),added:C(r),removed:C(a),affected:C(c),self:this}}afterAllChildrenInitialized(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AfterAllChildrenInitialized))){var f;if(!this.checkCanEdit(this,i))return z.Logger.warn(`[afterAllChildrenInitialized] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.AfterAllChildrenInitialized,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];if(this.defaultValue&&!this.project.diggestedBuiltInBaseEntitiesIds.has(this.id)&&this.project.diggestedBuiltInBaseEntitiesIds.has(this.defaultValue.id)){const h=this.defaultValue.clone(i,this);this.setDefaultValue(h,i)}if(((f=this.parent)==null?void 0:f.type)===d.Search){const h=this.parent.inputs.find(m=>{var E;return((E=m.declaration)==null?void 0:E.id)===this.id});h!=null&&h.readsValue&&this.setDefaultValue(null,i)}return this.initialized=!0,i==null||i.attemptAutoclose(w.AfterAllChildrenInitialized,this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}addSelfToProject(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"add-self-to-project"))){var f,h,m;const r=[this],a=[],c=[],e=[];return this.parentRelationType===j.FixedArguments||this.parentRelationType===j.DynamicArgument?((f=this.parent)==null?void 0:f.type)===d.Search?(this.parent.addInputDeclaration(this,i),e.push(this.parent)):((m=(h=this.parent)==null?void 0:h.addInput)==null||m.call(h,this,i),r.push(this.parent)):this.parentRelationType===j.ReturnedError&&this.parent&&(this.parent.error=this,e.push(this.parent)),this.subscribe(),this.subscribeToDependencies(),i==null||i.attemptAutoclose("add-self-to-project",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}setParent(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetParent))){var a;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.SetParent,r)?(((a=this.parent)==null?void 0:a.id)!==(i==null?void 0:i.id)&&(this.parent=i,r&&(r==null||r.add(this,W.Updated))),r==null||r.attemptAutoclose(w.SetParent,this.id),this):this}initChildren(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"init-children"))){return this.initialized||this.startedInitialization?this:(this.startedInitialization=!0,this.initialData.defaultValue&&(this.defaultValue=Ie(this.initialData.defaultValue,this.project),this.defaultValue.setParent(this,null),this.defaultValue.initChildren(i)),this.initialData.dataType&&(this.dataType=Ie(this.initialData.dataType,this.project),this.dataType.setParent(this,null),this.dataType.initChildren(i)),this.subscribeToDependencies(),this.afterAllChildrenInitialized(i),i==null||i.attemptAutoclose("init-children",this.id),this)}subscribe(){var i;return this.activeVersion=!0,(i=this.knownVersions)==null||i.forEach(r=>{r.version!==this.version&&(r.activeVersion=!1)}),this.project.subscribeInstance(this),this}unsubscribe(){return this.project.unsubscribeInstance(this),this}metaSync(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"meta-sync"))){const a=tn(this,i,r),c=en(this,a),e=this.toMeta();return this.name=a.name!==void 0?a.name:e.name,this.codeName=a.codeName!==void 0?a.codeName:e.codeName,this.description=a.description!==void 0?a.description:e.description,this.index=a.index||(a.index!==0?e.index:0),this.required=a.required!==void 0?a.required:this.required,this.parentRelationType=a.parentRelationType!==void 0?a.parentRelationType:this.parentRelationType,super.baseMetaSync(a,this,r),a.deleted===!0&&!e.deleted?r==null||r.add(this,W.Removed):a.deleted===!1&&e.deleted?r==null||r.add(this,W.Added):c&&(r==null||r.add(this,W.Updated)),r==null||r.attemptAutoclose("meta-sync",this.id),this}async APILoad(i=Ke,...r){return await hi.repository.APILoad(this.id,...r),this}async APICreate(i=Ke,...r){return await hi.repository.APICreate(this.toShallowJSON(),...r),this}async APIUpdate(i=Ke,...r){return await hi.repository.APIUpdate(this.toShallowJSON(),...r),this}async APIDelete(i=Ke,...r){return await hi.repository.APIDelete(this.toShallowJSON(),...r),this}async APIClone(i=Ke,...r){return await hi.repository.APIClone(this.id,...r),this}async APILoadVersion(i=Ke,r,...a){return await hi.repository.APILoadVersion(this.id,r,...a)}removeFromParent(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveFromParent))){var f,h,m;if(!this.checkCanEdit(this,i))return z.Logger.warn(`[removeFromParent] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveFromParent,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];return this.parent&&(((f=this.parent)==null?void 0:f.type)===d.Search?this.parentRelationType===j.FixedArguments||this.parentRelationType===j.DynamicArgument?((h=this.parent)==null||h.removeInputDeclaration(this,i),e.push(this.parent)):this.parentRelationType===j.ReturnedError&&(this.parent.error=null,e.push(this.parent)):(this.parentRelationType===j.FixedArguments||this.parentRelationType===j.DynamicArgument)&&((m=this.parent)==null||m.removeInput(this,i),e.push(this.parent))),i==null||i.attemptAutoclose(w.RemoveFromParent,this.id),{added:C(c),updated:C(r),removed:C(a),affected:C(e),self:this}}remove({ignoreUpstream:i}={ignoreUpstream:!1},r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveEntity))){var h;if(!this.checkCanDelete(this,r))return z.Logger.warn(`[remove] User is not allowed to delete or edit this ${this.type} entity with id: ${this.id}`),r==null||r.event({id:`${w.RemoveEntity}-${this.id}--${Me.ActionOwnerEntityNonDeletable}`,action:w.RemoveEntity,owner:this,errorReason:Me.ActionOwnerEntityNonDeletable,rootAction:((h=r==null?void 0:r.self)==null?void 0:h.id)===this.id&&(r==null?void 0:r.actionName)===w.RemoveEntity}),r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const a=[],c=[],e=[],f=[];if(this.project.diggestedBuiltInBaseEntitiesIds.has(this.id))return r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};if(r!=null&&r.hasRemoved(this.id))return r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};if(c.push(this),this.unsubscribe(),this.unsubscribeFromDependencies(),this.project.subscribeDeletedInstance(this),this.metaSync({deleted:!0},r),Object.values(this.detachedDependents).forEach(m=>{const{updated:E,removed:b,added:A}=m.entity.onDetachedDependencyRemoved(this,m.field,r);a.push(...E),c.push(...b),e.push(...A)}),this.defaultValue){const{updated:m,removed:E}=this.defaultValue.remove({ignoreUpstream:!0},r);a.push(...m),c.push(...E)}if(this.dataType){const{updated:m,removed:E}=this.dataType.remove({ignoreUpstream:!0},r);a.push(...m),c.push(...E)}if(!i){const m=this.removeFromParent(r);e.push(...m.added),a.push(...m.updated),c.push(...m.removed),f.push(...m.affected)}return r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:C(e),updated:C(a),removed:C(c),affected:C(f),self:this}}restore({}={},i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RestoreEntity))){var f,h,m;if(!this.checkCanEdit(this,i))return z.Logger.warn(`[restore] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RestoreEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];if(i!=null&&i.hasAdded(this.id))return i==null||i.attemptAutoclose(w.RestoreEntity,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(E=>{const{updated:b,removed:A,added:_}=E.entity.onDetachedDependencyRestored(this,E.field,i);a.push(...b),c.push(...A),r.push(..._)}),this.defaultValue){const{updated:E}=this.defaultValue.restore({},i);a.push(...E)}if(this.dataType){const{updated:E}=this.dataType.restore({},i);a.push(...E)}return((f=this.parent)==null?void 0:f.type)===d.Search?(this.parentRelationType===j.FixedArguments||this.parentRelationType===j.DynamicArgument)&&((h=this.parent)==null||h.addInputDeclaration(this,i)):(this.parentRelationType===j.FixedArguments||this.parentRelationType===j.DynamicArgument)&&((m=this.parent)==null||m.addInput(this,i)),i==null||i.attemptAutoclose(w.RestoreEntity,this.id),{added:C(r),updated:C(a),removed:C(c),affected:C(e),self:this}}toFlat(i=new Set){var a;return i.has(this.id)?[]:(i.add(this.id),[this,...((a=this.defaultValue)==null?void 0:a.toFlat(i))||[],...this.dataType?this.dataType.toFlat(i):[]])}toFlatIds(i=new Set){var a;return i.has(this.id)?[]:(i.add(this.id),[this.id,...((a=this.defaultValue)==null?void 0:a.toFlatIds(i))||[],...this.dataType?this.dataType.toFlatIds(i):[]])}toMeta(){return{id:this.id,version:this.version,createdAt:this.createdAt,previousVersion:this.previousVersion,author:this.author,deleted:this.deleted,codeName:this.codeName,description:this.description,index:this.index,required:this.required,parentRelationType:this.parentRelationType,type:this.type,editable:this.editable,deletable:this.deletable,name:this.name}}toJSON(i=new Set){var r,a,c;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,editable:this.editable,deletable:this.deletable,name:this.name,codeName:this.codeName,description:this.description,index:this.index,required:this.required,defaultValue:((r=this.defaultValue)==null?void 0:r.toJSON(i))||null,parentRelationType:this.parentRelationType,dataType:((a=this.dataType)==null?void 0:a.toJSON(i))||null,parent:((c=this.parent)==null?void 0:c.toReference())||null})}toJSONClone(i=at){var a,c,e,f,h,m,E,b;let r;return(a=i.seenEntityMaps)!=null&&a.has(this.id)?r=i.seenEntityMaps.get(this.id):(r=i.newId||dn(this,this.project,i.uuidStrategy),i.seenEntityMaps&&i.seenEntityMaps.set(this.id,r)),(c=i.seenEntities)!=null&&c.has(r)||(e=i.seenEntities)!=null&&e.has(this.id)?this.toReference({seenEntityMaps:i.seenEntityMaps}):((f=i.seenEntities)==null||f.add(r),(h=i.seenEntities)==null||h.add(this.id),{id:r,version:x.UUID.uuid(),createdAt:i.timestamp||B().toISOString(),author:x.sessionAuthor,previousVersion:null,deleted:!1,type:this.type,editable:this.editable,deletable:this.deletable,name:this.name,codeName:this.codeName,description:this.description,index:this.index,required:this.required,defaultValue:((m=this.defaultValue)==null?void 0:m.toJSONClone({...i,newId:null}))||null,parentRelationType:this.parentRelationType,dataType:((E=this.dataType)==null?void 0:E.toJSONClone({...i,newId:null}))||null,parent:((b=this.parent)==null?void 0:b.toReference({seenEntityMaps:i.seenEntityMaps}))||null})}toReference(i=at){var a;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r+"--"+x.UUID.uuid()+"--ref",type:d.GenericReference,entityId:r,version:this.version,entityType:this.type}}toShallowJSON(i=at){var a,c,e,f;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r,version:this.version,createdAt:this.createdAt,previousVersion:this.previousVersion,author:this.author,deleted:this.deleted,type:this.type,editable:this.editable,deletable:this.deletable,name:this.name,codeName:this.codeName,description:this.description,index:this.index,required:this.required,parentRelationType:this.parentRelationType,defaultValue:((c=this.defaultValue)==null?void 0:c.toReference(i))||null,dataType:((e=this.dataType)==null?void 0:e.toReference(i))||null,parent:((f=this.parent)==null?void 0:f.toReference(i))||null}}toFlatJSON(i=new Set){var a;return i.has(this.id)?[]:(i.add(this.id),[this.toShallowJSON(),...((a=this.defaultValue)==null?void 0:a.toFlatJSON(i))||[],...this.dataType?this.dataType.toFlatJSON(i):[]])}toGenerationTarget(i=at){var a,c;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r,name:this.name,codeName:this.codeName,description:this.description,type:this.type,required:this.required,parentRelationType:this.parentRelationType,parent:(c=this.parent)==null?void 0:c.id}}toFlatGenerationTarget(i=new Set){return i.has(this.id)?[]:(i.add(this.id),[this.toGenerationTarget(),...this.defaultValue?this.defaultValue.toFlatGenerationTarget(i):[],...this.dataType?this.dataType.toFlatGenerationTarget(i):[]])}clearErrors(){var i,r;return this.errors=[],(i=this.defaultValue)==null||i.clearErrors(),(r=this.dataType)==null||r.clearErrors(),this}validate(){return this.errors=YMe(this),{success:!0}}async validateAsync(i={}){const r=z.YieldTracker.from(i);return this.errors=await zMe(this,{tracker:r}),{success:!0}}getErrors(){return[...this.errors,...this.dataType?this.dataType.getErrors():[]]}async getErrorsAsync(i={}){const r=z.YieldTracker.from(i),a=[...this.errors];if(await r.tick(),this.dataType){const c=await this.dataType.getErrorsAsync({tracker:r});a.push(...c)}return a}getShallowErrors(){return this.errors}clone(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.CloneEntity)),r=null,a=null,c=!0){var A,_;if(this.project.diggestedBuiltInBaseEntitiesIds.has(this.id))return this;const e=Fr(r,this),f=a||x.UUID.uuid(),h=this.toJSON();h.id=f,h.version=x.UUID.uuid(),h.createdAt=(i==null?void 0:i.timestamp)||B().toISOString(),h.author=(i==null?void 0:i.author)||"1",h.previousVersion=null,h.deleted=!1,h.deletable=!0,h.editable=!0;const m=lr(h,e);r&&m.setParent(r,i),i==null||i.add(m,W.Added),c&&m.subscribe();const E=((A=this.dataType)==null?void 0:A.clone(i,m,x.UUID.uuid(),c))||null;E&&m.setDataType(E,i);const b=(_=this.defaultValue)==null?void 0:_.clone(i,m,x.UUID.uuid(),c);return m.defaultValue=b||null,i||m.captureVersion(),i==null||i.attemptAutoclose(w.CloneEntity,this.id),m}getDataType(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"get-data-type"))){return i==null||i.attemptAutoclose("get-data-type",this.id),this.dataType||null}setDataType(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetDataType))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[setDataType] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.SetDataType,this.id),this;const a=this.dataType;return(a==null?void 0:a.id)!==(i==null?void 0:i.id)&&(a==null||a.remove({ignoreUpstream:!0},r),this.dataType=i,this.subscribeToDependencies(),r==null||r.add(this,W.Affected)),r==null||r.attemptAutoclose(w.SetDataType,this.id),this}getDefaultValue(){return this.defaultValue||null}setDefaultValue(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"set-default-value"))){var c;if(!this.checkCanEdit(this,r))return z.Logger.warn(`[setDefaultValue] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("set-default-value",this.id),this;const a=this.defaultValue;if((a==null?void 0:a.id)!==(i==null?void 0:i.id)){if(a==null||a.remove({ignoreUpstream:!0},r),this.defaultValue=i,this.defaultValue&&((c=this.parent)==null?void 0:c.type)===d.Search){const e=this.parent.inputs.find(f=>f.declaration.id===this.id);if(e!=null&&e.readsValue){const f=e.readsValue;e.removeValueWriter(r),f==null||f.removeValueReader(e,r)}}r==null||r.add(this,W.Affected)}return r==null||r.attemptAutoclose("set-default-value",this.id),this}removeDataType(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveDataType))){return this.checkCanEdit(this,i)?(this.dataType&&(this.dataType.remove({ignoreUpstream:!0},i),i==null||i.add(this,W.Affected),this.dataType=null),i==null||i.attemptAutoclose(w.RemoveDataType,this.id),this):(z.Logger.warn(`[removeDataType] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveDataType,this.id),this)}implementAsInputMap(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"implement-as-input-map")),r,a){const c=Ts.new(i);c.id=a||c.id,c.name=this.name,c.description=this.description,c.parent=r.toReference(),c.declaration=this.toJSON(),c.parentRelationType=this.parentRelationType===j.ReturnedError?dd.Error:null;const e=lr(c,this.project);if(e.hydrateAncestors(),e.addSelfToProject(i),i==null||i.add(e,W.Added),e.initChildren(i),this.dataType){const f=this.dataType.clone(i,e);e.setDataType(f,i)}if(this.defaultValue){const f=this.defaultValue.clone(i,e);e.setDefaultValue(f,i)}return i||e.captureVersion(),i==null||i.attemptAutoclose("implement-as-input-map",this.id),e}implementAsArgumentDeclaration(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"implement-as-argument-declaration")),r,a){const c=Za.new(i);c.id=a||c.id,c.name=this.name,c.description=this.description,c.parent=r.toReference(),c.implements=[this.toJSON()];const e=lr(c,this.project);if(e.hydrateAncestors(),e.addSelfToProject(i),i==null||i.add(e,W.Added),e.initChildren(i),this.dataType){const f=this.dataType.clone(i,e);e.setDataType(f,i)}if(this.defaultValue){const f=this.defaultValue.clone(i,e);e.setDefaultValue(f,i)}return i||e.captureVersion(),i==null||i.attemptAutoclose("implement-as-argument-declaration",this.id),e}};R(hi,"repository",{APICreate:async(i,...r)=>i,APIUpdate:async(i,...r)=>i,APIDelete:async(i,...r)=>i,APIClone:async(i,...r)=>{},APILoad:async(i,...r)=>null,APILoadVersion:async(i,r,...a)=>null}),R(hi,"type",d.ValueDescriptor),R(hi,"USER_MANAGED_PARENT_TYPES",[d.ActionDescriptor,d.Search]),R(hi,"PARENT_TYPES",[...hi.USER_MANAGED_PARENT_TYPES]),R(hi,"MUTABLE_BASE_PROPERTIES",["name","codeName","description","required"]),R(hi,"INMUTABLE_BASE_PROPERTIES",["id","version","type","parentRelationType","createdAt","author","previousVersion"]),R(hi,"BASE_PROPERTIES",[...hi.MUTABLE_BASE_PROPERTIES,...hi.INMUTABLE_BASE_PROPERTIES]),R(hi,"MUTABLE_META_PROPERTIES",[...hi.MUTABLE_BASE_PROPERTIES,"index"]),R(hi,"INMUTABLE_META_PROPERTIES",[...hi.INMUTABLE_BASE_PROPERTIES]),R(hi,"META_PROPERTIES",[...hi.MUTABLE_META_PROPERTIES,...hi.INMUTABLE_META_PROPERTIES]),R(hi,"MUTABLE_UPSTREAM_PROPERTIES",[]),R(hi,"INMUTABLE_UPSTREAM_PROPERTIES",["parent"]),R(hi,"UPSTREAM_PROPERTIES",[...hi.MUTABLE_UPSTREAM_PROPERTIES,...hi.INMUTABLE_UPSTREAM_PROPERTIES]),R(hi,"MUTABLE_DOWNSTREAM_PROPERTIES",["dataType","defaultValue"]),R(hi,"INMUTABLE_DOWNSTREAM_PROPERTIES",[]),R(hi,"DOWNSTREAM_PROPERTIES",[...hi.MUTABLE_DOWNSTREAM_PROPERTIES,...hi.INMUTABLE_DOWNSTREAM_PROPERTIES]),R(hi,"PROPERTIES",[...hi.META_PROPERTIES,...hi.UPSTREAM_PROPERTIES,...hi.DOWNSTREAM_PROPERTIES]);let Ed=hi;var hp={},QMe={},XMe={};Object.defineProperty(XMe,"__esModule",{value:!0});var eGe={};Object.defineProperty(eGe,"__esModule",{value:!0});var tGe={};Object.defineProperty(tGe,"__esModule",{value:!0});var iGe={};Object.defineProperty(iGe,"__esModule",{value:!0});var rGe={};Object.defineProperty(rGe,"__esModule",{value:!0});var nGe={};Object.defineProperty(nGe,"__esModule",{value:!0});var aGe={};Object.defineProperty(aGe,"__esModule",{value:!0});var sGe={};Object.defineProperty(sGe,"__esModule",{value:!0});var lGe={};Object.defineProperty(lGe,"__esModule",{value:!0});var oGe={};Object.defineProperty(oGe,"__esModule",{value:!0});var dGe={};Object.defineProperty(dGe,"__esModule",{value:!0});var uGe={};Object.defineProperty(uGe,"__esModule",{value:!0});var pGe={};Object.defineProperty(pGe,"__esModule",{value:!0});var cGe={};Object.defineProperty(cGe,"__esModule",{value:!0});var fGe={};Object.defineProperty(fGe,"__esModule",{value:!0});var yGe={};Object.defineProperty(yGe,"__esModule",{value:!0});var hGe={};Object.defineProperty(hGe,"__esModule",{value:!0});var mGe={};Object.defineProperty(mGe,"__esModule",{value:!0});var TGe={};Object.defineProperty(TGe,"__esModule",{value:!0});var vGe={};Object.defineProperty(vGe,"__esModule",{value:!0});var EGe={};Object.defineProperty(EGe,"__esModule",{value:!0});var bGe={};Object.defineProperty(bGe,"__esModule",{value:!0});var AGe={};Object.defineProperty(AGe,"__esModule",{value:!0});var gGe={};Object.defineProperty(gGe,"__esModule",{value:!0});var IGe={};Object.defineProperty(IGe,"__esModule",{value:!0});var RGe={};Object.defineProperty(RGe,"__esModule",{value:!0});var DGe={};Object.defineProperty(DGe,"__esModule",{value:!0});var wGe={};Object.defineProperty(wGe,"__esModule",{value:!0});var CGe={};Object.defineProperty(CGe,"__esModule",{value:!0});var OGe={};Object.defineProperty(OGe,"__esModule",{value:!0});var _Ge={};Object.defineProperty(_Ge,"__esModule",{value:!0});var VGe={};Object.defineProperty(VGe,"__esModule",{value:!0});var PGe={};Object.defineProperty(PGe,"__esModule",{value:!0});var NGe={};Object.defineProperty(NGe,"__esModule",{value:!0});var xGe={};Object.defineProperty(xGe,"__esModule",{value:!0});var $Ge={};Object.defineProperty($Ge,"__esModule",{value:!0});var LGe={};Object.defineProperty(LGe,"__esModule",{value:!0});var BGe={};Object.defineProperty(BGe,"__esModule",{value:!0});var MGe={};Object.defineProperty(MGe,"__esModule",{value:!0});var GGe={};Object.defineProperty(GGe,"__esModule",{value:!0});var kGe={};Object.defineProperty(kGe,"__esModule",{value:!0});var jGe={};Object.defineProperty(jGe,"__esModule",{value:!0});var UGe={};Object.defineProperty(UGe,"__esModule",{value:!0});(function(s){var p=Jr&&Jr.__createBinding||(Object.create?function(r,a,c,e){e===void 0&&(e=c);var f=Object.getOwnPropertyDescriptor(a,c);(!f||("get"in f?!a.__esModule:f.writable||f.configurable))&&(f={enumerable:!0,get:function(){return a[c]}}),Object.defineProperty(r,e,f)}:function(r,a,c,e){e===void 0&&(e=c),r[e]=a[c]}),i=Jr&&Jr.__exportStar||function(r,a){for(var c in r)c!=="default"&&!Object.prototype.hasOwnProperty.call(a,c)&&p(a,r,c)};Object.defineProperty(s,"__esModule",{value:!0}),i(XMe,s),i(eGe,s),i(tGe,s),i(iGe,s),i(rGe,s),i(nGe,s),i(aGe,s),i(sGe,s),i(lGe,s),i(oGe,s),i(dGe,s),i(uGe,s),i(pGe,s),i(cGe,s),i(fGe,s),i(yGe,s),i(hGe,s),i(mGe,s),i(TGe,s),i(vGe,s),i(EGe,s),i(bGe,s),i(AGe,s),i(gGe,s),i(IGe,s),i(RGe,s),i(DGe,s),i(wGe,s),i(CGe,s),i(OGe,s),i(_Ge,s),i(VGe,s),i(PGe,s),i(NGe,s),i(xGe,s),i($Ge,s),i(LGe,s),i(BGe,s),i(MGe,s),i(GGe,s),i(kGe,s),i(jGe,s),i(UGe,s)})(QMe);var FGe={},wa={};Object.defineProperty(wa,"__esModule",{value:!0});wa.isObject=wa.isString=wa.isDefined=wa.last=wa.identity=void 0;const oDi=s=>s;wa.identity=oDi;const dDi=s=>s[s.length-1];wa.last=dDi;const uDi=s=>s!==void 0;wa.isDefined=uDi;const pDi=s=>typeof s=="string";wa.isString=pDi;const cDi=s=>typeof s=="object"&&s!==null&&!(s instanceof Array);wa.isObject=cDi;(function(s){Object.defineProperty(s,"__esModule",{value:!0}),s.cstVisitor=s.VisitorAction=void 0;const p=wa;var i;(function(c){c[c.SKIP=1]="SKIP"})(i=s.VisitorAction||(s.VisitorAction={}));function r(c){const e=f=>{const h=c[f.type];if((h==null?void 0:h(f))!==i.SKIP)for(const E of Object.values(f))a(E)?e(E):E instanceof Array&&E.filter(a).forEach(b=>e(b))};return e}s.cstVisitor=r;const a=c=>(0,p.isObject)(c)&&(0,p.isString)(c.type)})(FGe);var _E={};Object.defineProperty(_E,"__esModule",{value:!0});_E.cstTransformer=void 0;function fDi(s){return p=>{const i=s[p.type];if(!i)throw p.type?new Error(`No transform map entry for ${p.type}`):new Error(`No type field on node: ${JSON.stringify(p)}`);return i(p)}}_E.cstTransformer=fDi;var KGe={},VE={};Object.defineProperty(VE,"__esModule",{value:!0});VE.bigqueryKeywords=void 0;VE.bigqueryKeywords={ALL:!0,AND:!0,ANY:!0,ARRAY:!0,AS:!0,ASC:!0,ASSERT_ROWS_MODIFIED:!0,AT:!0,BETWEEN:!0,BY:!0,CASE:!0,CAST:!0,COLLATE:!0,CONTAINS:!0,CREATE:!0,CROSS:!0,CUBE:!0,CURRENT:!0,DEFAULT:!0,DEFINE:!0,DESC:!0,DISTINCT:!0,ELSE:!0,END:!0,ENUM:!0,ESCAPE:!0,EXCEPT:!0,EXCLUDE:!0,EXISTS:!0,EXTRACT:!0,FALSE:!0,FETCH:!0,FOLLOWING:!0,FOR:!0,FROM:!0,FULL:!0,GROUP:!0,GROUPING:!0,GROUPS:!0,HASH:!0,HAVING:!0,IF:!0,IGNORE:!0,IN:!0,INNER:!0,INTERSECT:!0,INTERVAL:!0,INTO:!0,IS:!0,JOIN:!0,LATERAL:!0,LEFT:!0,LIKE:!0,LIMIT:!0,LOOKUP:!0,MERGE:!0,NATURAL:!0,NEW:!0,NO:!0,NOT:!0,NULL:!0,NULLS:!0,OF:!0,ON:!0,OR:!0,ORDER:!0,OUTER:!0,OVER:!0,PARTITION:!0,PRECEDING:!0,PROTO:!0,QUALIFY:!0,RANGE:!0,RECURSIVE:!0,RESPECT:!0,RIGHT:!0,ROLLUP:!0,ROWS:!0,SELECT:!0,SET:!0,SOME:!0,STRUCT:!0,TABLESAMPLE:!0,THEN:!0,TO:!0,TREAT:!0,TRUE:!0,UNBOUNDED:!0,UNION:!0,UNNEST:!0,USING:!0,WHEN:!0,WHERE:!0,WINDOW:!0,WITH:!0,WITHIN:!0};var PE={};Object.defineProperty(PE,"__esModule",{value:!0});PE.mariadbKeywords=void 0;PE.mariadbKeywords={ACCESSIBLE:!0,ADD:!0,ALL:!0,ALTER:!0,ANALYZE:!0,AND:!0,AS:!0,ASC:!0,ASENSITIVE:!0,BEFORE:!0,BETWEEN:!0,BIGINT:!0,BINARY:!0,BLOB:!0,BOTH:!0,BY:!0,CALL:!0,CASCADE:!0,CASE:!0,CHANGE:!0,CHAR:!0,CHARACTER:!0,CHECK:!0,COLLATE:!0,COLUMN:!0,CONDITION:!0,CONSTRAINT:!0,CONTINUE:!0,CONVERT:!0,CREATE:!0,CROSS:!0,CURRENT_DATE:!0,CURRENT_ROLE:!0,CURRENT_TIME:!0,CURRENT_TIMESTAMP:!0,CURRENT_USER:!0,CURSOR:!0,DATABASE:!0,DATABASES:!0,DAY_HOUR:!0,DAY_MICROSECOND:!0,DAY_MINUTE:!0,DAY_SECOND:!0,DEC:!0,DECIMAL:!0,DECLARE:!0,DEFAULT:!0,DELAYED:!0,DELETE:!0,DELETE_DOMAIN_ID:!0,DESC:!0,DESCRIBE:!0,DETERMINISTIC:!0,DISTINCT:!0,DISTINCTROW:!0,DIV:!0,DO_DOMAIN_IDS:!0,DOUBLE:!0,DROP:!0,DUAL:!0,EACH:!0,ELSE:!0,ELSEIF:!0,ENCLOSED:!0,ESCAPED:!0,EXCEPT:!0,EXISTS:!0,EXIT:!0,EXPLAIN:!0,FALSE:!0,FETCH:!0,FLOAT:!0,FLOAT4:!0,FLOAT8:!0,FOR:!0,FORCE:!0,FOREIGN:!0,FROM:!0,FULLTEXT:!0,GENERAL:!0,GRANT:!0,GROUP:!0,HAVING:!0,HIGH_PRIORITY:!0,HOUR_MICROSECOND:!0,HOUR_MINUTE:!0,HOUR_SECOND:!0,IF:!0,IGNORE:!0,IGNORE_DOMAIN_IDS:!0,IGNORE_SERVER_IDS:!0,IN:!0,INDEX:!0,INFILE:!0,INNER:!0,INOUT:!0,INSENSITIVE:!0,INSERT:!0,INT:!0,INT1:!0,INT2:!0,INT3:!0,INT4:!0,INT8:!0,INTEGER:!0,INTERSECT:!0,INTERVAL:!0,INTO:!0,IS:!0,ITERATE:!0,JOIN:!0,KEY:!0,KEYS:!0,KILL:!0,LEADING:!0,LEAVE:!0,LEFT:!0,LIKE:!0,LIMIT:!0,LINEAR:!0,LINES:!0,LOAD:!0,LOCALTIME:!0,LOCALTIMESTAMP:!0,LOCK:!0,LONG:!0,LONGBLOB:!0,LONGTEXT:!0,LOOP:!0,LOW_PRIORITY:!0,MASTER_HEARTBEAT_PERIOD:!0,MASTER_SSL_VERIFY_SERVER_CERT:!0,MATCH:!0,MAXVALUE:!0,MEDIUMBLOB:!0,MEDIUMINT:!0,MEDIUMTEXT:!0,MIDDLEINT:!0,MINUTE_MICROSECOND:!0,MINUTE_SECOND:!0,MOD:!0,MODIFIES:!0,NATURAL:!0,NOT:!0,NO_WRITE_TO_BINLOG:!0,NULL:!0,NUMERIC:!0,OFFSET:!0,ON:!0,OPTIMIZE:!0,OPTION:!0,OPTIONALLY:!0,OR:!0,ORDER:!0,OUT:!0,OUTER:!0,OUTFILE:!0,OVER:!0,PAGE_CHECKSUM:!0,PARSE_VCOL_EXPR:!0,PARTITION:!0,POSITION:!0,PRECISION:!0,PRIMARY:!0,PROCEDURE:!0,PURGE:!0,RANGE:!0,READ:!0,READS:!0,READ_WRITE:!0,REAL:!0,RECURSIVE:!0,REF_SYSTEM_ID:!0,REFERENCES:!0,REGEXP:!0,RELEASE:!0,RENAME:!0,REPEAT:!0,REPLACE:!0,REQUIRE:!0,RESIGNAL:!0,RESTRICT:!0,RETURN:!0,RETURNING:!0,REVOKE:!0,RIGHT:!0,RLIKE:!0,ROWS:!0,SCHEMA:!0,SCHEMAS:!0,SECOND_MICROSECOND:!0,SELECT:!0,SENSITIVE:!0,SEPARATOR:!0,SET:!0,SHOW:!0,SIGNAL:!0,SLOW:!0,SMALLINT:!0,SPATIAL:!0,SPECIFIC:!0,SQL:!0,SQLEXCEPTION:!0,SQLSTATE:!0,SQLWARNING:!0,SQL_BIG_RESULT:!0,SQL_CALC_FOUND_ROWS:!0,SQL_SMALL_RESULT:!0,SSL:!0,STARTING:!0,STATS_AUTO_RECALC:!0,STATS_PERSISTENT:!0,STATS_SAMPLE_PAGES:!0,STRAIGHT_JOIN:!0,TABLE:!0,TERMINATED:!0,THEN:!0,TINYBLOB:!0,TINYINT:!0,TINYTEXT:!0,TO:!0,TRAILING:!0,TRIGGER:!0,TRUE:!0,UNDO:!0,UNION:!0,UNIQUE:!0,UNLOCK:!0,UNSIGNED:!0,UPDATE:!0,USAGE:!0,USE:!0,USING:!0,UTC_DATE:!0,UTC_TIME:!0,UTC_TIMESTAMP:!0,VALUES:!0,VARBINARY:!0,VARCHAR:!0,VARCHARACTER:!0,VARYING:!0,WHEN:!0,WHERE:!0,WHILE:!0,WINDOW:!0,WITH:!0,WRITE:!0,XOR:!0,YEAR_MONTH:!0,ZEROFILL:!0};var NE={};Object.defineProperty(NE,"__esModule",{value:!0});NE.mysqlKeywords=void 0;NE.mysqlKeywords={ACCESSIBLE:!0,ADD:!0,ALL:!0,ALTER:!0,ANALYZE:!0,AND:!0,AS:!0,ASC:!0,ASENSITIVE:!0,BEFORE:!0,BETWEEN:!0,BIGINT:!0,BINARY:!0,BLOB:!0,BOTH:!0,BY:!0,CALL:!0,CASCADE:!0,CASE:!0,CHANGE:!0,CHAR:!0,CHARACTER:!0,CHECK:!0,COLLATE:!0,COLUMN:!0,CONDITION:!0,CONSTRAINT:!0,CONTINUE:!0,CONVERT:!0,CREATE:!0,CROSS:!0,CUBE:!0,CUME_DIST:!0,CURRENT_DATE:!0,CURRENT_TIME:!0,CURRENT_TIMESTAMP:!0,CURRENT_USER:!0,CURSOR:!0,DATABASE:!0,DATABASES:!0,DAY_HOUR:!0,DAY_MICROSECOND:!0,DAY_MINUTE:!0,DAY_SECOND:!0,DEC:!0,DECIMAL:!0,DECLARE:!0,DEFAULT:!0,DELAYED:!0,DELETE:!0,DENSE_RANK:!0,DESC:!0,DESCRIBE:!0,DETERMINISTIC:!0,DISTINCT:!0,DISTINCTROW:!0,DIV:!0,DOUBLE:!0,DROP:!0,DUAL:!0,EACH:!0,ELSE:!0,ELSEIF:!0,EMPTY:!0,ENCLOSED:!0,ESCAPED:!0,EXCEPT:!0,EXISTS:!0,EXIT:!0,EXPLAIN:!0,FALSE:!0,FETCH:!0,FIRST_VALUE:!0,FLOAT:!0,FLOAT4:!0,FLOAT8:!0,FOR:!0,FORCE:!0,FOREIGN:!0,FROM:!0,FULLTEXT:!0,FUNCTION:!0,GENERATED:!0,GET:!0,GRANT:!0,GROUP:!0,GROUPING:!0,GROUPS:!0,HAVING:!0,HIGH_PRIORITY:!0,HOUR_MICROSECOND:!0,HOUR_MINUTE:!0,HOUR_SECOND:!0,IF:!0,IGNORE:!0,IN:!0,INDEX:!0,INFILE:!0,INNER:!0,INOUT:!0,INSENSITIVE:!0,INSERT:!0,INT:!0,INT1:!0,INT2:!0,INT3:!0,INT4:!0,INT8:!0,INTEGER:!0,INTERSECT:!0,INTERVAL:!0,INTO:!0,IO_AFTER_GTIDS:!0,IO_BEFORE_GTIDS:!0,IS:!0,ITERATE:!0,JOIN:!0,JSON_TABLE:!0,KEY:!0,KEYS:!0,KILL:!0,LAG:!0,LAST_VALUE:!0,LATERAL:!0,LEAD:!0,LEADING:!0,LEAVE:!0,LEFT:!0,LIKE:!0,LIMIT:!0,LINEAR:!0,LINES:!0,LOAD:!0,LOCALTIME:!0,LOCALTIMESTAMP:!0,LOCK:!0,LONG:!0,LONGBLOB:!0,LONGTEXT:!0,LOOP:!0,LOW_PRIORITY:!0,MASTER_BIND:!0,MASTER_SSL_VERIFY_SERVER_CERT:!0,MATCH:!0,MAXVALUE:!0,MEDIUMBLOB:!0,MEDIUMINT:!0,MEDIUMTEXT:!0,MIDDLEINT:!0,MINUTE_MICROSECOND:!0,MINUTE_SECOND:!0,MOD:!0,MODIFIES:!0,NATURAL:!0,NOT:!0,NO_WRITE_TO_BINLOG:!0,NTH_VALUE:!0,NTILE:!0,NULL:!0,NUMERIC:!0,OF:!0,ON:!0,OPTIMIZE:!0,OPTIMIZER_COSTS:!0,OPTION:!0,OPTIONALLY:!0,OR:!0,ORDER:!0,OUT:!0,OUTER:!0,OUTFILE:!0,OVER:!0,PARTITION:!0,PERCENT_RANK:!0,PRECISION:!0,PRIMARY:!0,PROCEDURE:!0,PURGE:!0,RANGE:!0,RANK:!0,READ:!0,READS:!0,READ_WRITE:!0,REAL:!0,RECURSIVE:!0,REFERENCES:!0,REGEXP:!0,RELEASE:!0,RENAME:!0,REPEAT:!0,REPLACE:!0,REQUIRE:!0,RESIGNAL:!0,RESTRICT:!0,RETURN:!0,REVOKE:!0,RIGHT:!0,RLIKE:!0,ROW:!0,ROWS:!0,ROW_NUMBER:!0,SCHEMA:!0,SCHEMAS:!0,SECOND_MICROSECOND:!0,SELECT:!0,SENSITIVE:!0,SEPARATOR:!0,SET:!0,SHOW:!0,SIGNAL:!0,SMALLINT:!0,SPATIAL:!0,SPECIFIC:!0,SQL:!0,SQLEXCEPTION:!0,SQLSTATE:!0,SQLWARNING:!0,SQL_BIG_RESULT:!0,SQL_CALC_FOUND_ROWS:!0,SQL_SMALL_RESULT:!0,SSL:!0,STARTING:!0,STORED:!0,STRAIGHT_JOIN:!0,SYSTEM:!0,TABLE:!0,TERMINATED:!0,THEN:!0,TINYBLOB:!0,TINYINT:!0,TINYTEXT:!0,TO:!0,TRAILING:!0,TRIGGER:!0,TRUE:!0,UNDO:!0,UNION:!0,UNIQUE:!0,UNLOCK:!0,UNSIGNED:!0,UPDATE:!0,USAGE:!0,USE:!0,USING:!0,UTC_DATE:!0,UTC_TIME:!0,UTC_TIMESTAMP:!0,VALUES:!0,VARBINARY:!0,VARCHAR:!0,VARCHARACTER:!0,VARYING:!0,VIRTUAL:!0,WHEN:!0,WHERE:!0,WHILE:!0,WINDOW:!0,WITH:!0,WRITE:!0,XOR:!0,YEAR_MONTH:!0,ZEROFILL:!0};var xE={};Object.defineProperty(xE,"__esModule",{value:!0});xE.sqliteKeywords=void 0;xE.sqliteKeywords={ABORT:!0,ACTION:!0,ADD:!0,AFTER:!0,ALL:!0,ALTER:!0,ALWAYS:!0,ANALYZE:!0,AND:!0,AS:!0,ASC:!0,ATTACH:!0,AUTOINCREMENT:!0,BEFORE:!0,BEGIN:!0,BETWEEN:!0,BY:!0,CASCADE:!0,CASE:!0,CAST:!0,CHECK:!0,COLLATE:!0,COMMIT:!0,CONFLICT:!0,CONSTRAINT:!0,CREATE:!0,CROSS:!0,CURRENT:!0,CURRENT_DATE:!0,CURRENT_TIME:!0,CURRENT_TIMESTAMP:!0,DATABASE:!0,DEFAULT:!0,DEFERRABLE:!0,DEFERRED:!0,DELETE:!0,DESC:!0,DETACH:!0,DISTINCT:!0,DO:!0,DROP:!0,EACH:!0,ELSE:!0,END:!0,ESCAPE:!0,EXCEPT:!0,EXCLUDE:!0,EXCLUSIVE:!0,EXISTS:!0,EXPLAIN:!0,FAIL:!0,FILTER:!0,FIRST:!0,FOLLOWING:!0,FOR:!0,FOREIGN:!0,FROM:!0,FULL:!0,GENERATED:!0,GLOB:!0,GROUP:!0,GROUPS:!0,HAVING:!0,IF:!0,IGNORE:!0,IMMEDIATE:!0,IN:!0,INDEX:!0,INDEXED:!0,INITIALLY:!0,INNER:!0,INSERT:!0,INSTEAD:!0,INTERSECT:!0,INTO:!0,IS:!0,ISNULL:!0,JOIN:!0,LAST:!0,LEFT:!0,LIKE:!0,LIMIT:!0,MATCH:!0,MATERIALIZED:!0,NATURAL:!0,NO:!0,NOT:!0,NOTHING:!0,NOTNULL:!0,NULL:!0,NULLS:!0,OF:!0,OFFSET:!0,ON:!0,OR:!0,ORDER:!0,OTHERS:!0,OUTER:!0,OVER:!0,PARTITION:!0,PLAN:!0,PRAGMA:!0,PRECEDING:!0,PRIMARY:!0,QUERY:!0,RAISE:!0,RANGE:!0,RECURSIVE:!0,REFERENCES:!0,REGEXP:!0,REINDEX:!0,RELEASE:!0,RENAME:!0,REPLACE:!0,RESTRICT:!0,RETURNING:!0,RIGHT:!0,ROLLBACK:!0,ROW:!0,ROWS:!0,SAVEPOINT:!0,SELECT:!0,SET:!0,TABLE:!0,TEMP:!0,TEMPORARY:!0,THEN:!0,TIES:!0,TO:!0,TRANSACTION:!0,TRIGGER:!0,UNBOUNDED:!0,UNION:!0,UNIQUE:!0,UPDATE:!0,USING:!0,VACUUM:!0,VALUES:!0,VIEW:!0,VIRTUAL:!0,WHEN:!0,WHERE:!0,WINDOW:!0,WITH:!0,WITHOUT:!0};var $E={};Object.defineProperty($E,"__esModule",{value:!0});$E.postgresqlKeywords=void 0;$E.postgresqlKeywords={ALL:!0,ANALYSE:!0,ANALYZE:!0,AND:!0,ANY:!0,ARRAY:!0,AS:!0,ASC:!0,ASYMMETRIC:!0,AUTHORIZATION:!0,BOTH:!0,CASE:!0,CAST:!0,CHECK:!0,COLLATE:!0,COLUMN:!0,CONSTRAINT:!0,CREATE:!0,CROSS:!0,CURRENT_CATALOG:!0,CURRENT_DATE:!0,CURRENT_ROLE:!0,CURRENT_SCHEMA:!0,CURRENT_TIME:!0,CURRENT_TIMESTAMP:!0,CURRENT_USER:!0,DAY:!0,DEFAULT:!0,DEFERRABLE:!0,DESC:!0,DISTINCT:!0,DO:!0,ELSE:!0,END:!0,EXCEPT:!0,FALSE:!0,FETCH:!0,FILTER:!0,FOR:!0,FOREIGN:!0,FREEZE:!0,FROM:!0,FULL:!0,GRANT:!0,GROUP:!0,HAVING:!0,HOUR:!0,ILIKE:!0,IN:!0,INITIALLY:!0,INNER:!0,INTERSECT:!0,INTO:!0,IS:!0,ISNULL:!0,JOIN:!0,LATERAL:!0,LEADING:!0,LEFT:!0,LIKE:!0,LIMIT:!0,LOCALTIME:!0,LOCALTIMESTAMP:!0,MINUTE:!0,MONTH:!0,NATURAL:!0,NOT:!0,NOTNULL:!0,NULL:!0,OFFSET:!0,ON:!0,ONLY:!0,OR:!0,ORDER:!0,OUTER:!0,OVER:!0,OVERLAPS:!0,PLACING:!0,PRECISION:!0,PRIMARY:!0,REFERENCES:!0,RETURNING:!0,RIGHT:!0,SECOND:!0,SELECT:!0,SESSION_USER:!0,SIMILAR:!0,SOME:!0,SYMMETRIC:!0,SYSTEM_USER:!0,TABLE:!0,TABLESAMPLE:!0,THEN:!0,TO:!0,TRAILING:!0,TRUE:!0,UNION:!0,UNIQUE:!0,USER:!0,USING:!0,VARIADIC:!0,VARYING:!0,VERBOSE:!0,WHEN:!0,WHERE:!0,WINDOW:!0,WITH:!0,WITHIN:!0,WITHOUT:!0,YEAR:!0,SET:!0};(function(s){var p=Jr&&Jr.__createBinding||(Object.create?function(r,a,c,e){e===void 0&&(e=c);var f=Object.getOwnPropertyDescriptor(a,c);(!f||("get"in f?!a.__esModule:f.writable||f.configurable))&&(f={enumerable:!0,get:function(){return a[c]}}),Object.defineProperty(r,e,f)}:function(r,a,c,e){e===void 0&&(e=c),r[e]=a[c]}),i=Jr&&Jr.__exportStar||function(r,a){for(var c in r)c!=="default"&&!Object.prototype.hasOwnProperty.call(a,c)&&p(a,r,c)};Object.defineProperty(s,"__esModule",{value:!0}),i(VE,s),i(PE,s),i(NE,s),i(xE,s),i($E,s)})(KGe);var sv={};Object.defineProperty(sv,"__esModule",{value:!0});sv.FormattedSyntaxError=void 0;class yDi extends Error{constructor(p,i,r){super(hDi(p,i,r))}}sv.FormattedSyntaxError=yDi;function hDi(s,p,i){const r=s.location.start.line,a=s.location.start.column,c=p.split(/\r\n|\n|\r/)[r-1],e="".padStart(String(r).length),f=TDi(mDi(s.found,a,c)),h=vDi(s.expected);return`Syntax Error: Unexpected ${f}
|
|
112
112
|
Was expecting to see: ${h}
|
|
113
113
|
--> ${i||"undefined"}:${r}:${a}
|
|
@@ -193,10 +193,10 @@ You can't edit output-map entities as they need to match their return declaratio
|
|
|
193
193
|
This is likely an incorrect strategy, either the '${this.type}' entity doesn't need to be updated or it should be deleted and a new one created in the desired parent.`})),{errors:r,explanations:a,modifiedData:i}}subscribeDependents(i){return i.forEach(r=>{this.detachedDependents[r.entity.id]||(this.detachedDependents[r.entity.id]=r)}),this}unsubscribeDependents(i){return i.forEach(r=>{this.detachedDependents[r.entity.id]&&delete this.detachedDependents[r.entity.id]}),this}syncDependents(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"sync-dependents"))){const r=[],a=[],c=[],e=[];return Object.values(this.detachedDependents).forEach(f=>{const h=f.entity.afterAllChildrenInitialized(i);r.push(...h.updated),a.push(...h.added),c.push(...h.removed),e.push(...h.affected)}),i==null||i.attemptAutoclose("sync-dependents",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}onDetachedDependencyRemoved(i,r,a){const c=[],e=[],f=[],h=[];if(r==="declaration"){const{updated:m,added:E,removed:b}=this.remove({ignoreUpstream:!1},a);c.push(...m),e.push(...E),f.push(...b)}return{updated:C(c),added:C(e),removed:C(f),affected:C(h),self:this}}onDetachedDependencyRestored(i,r,a){const c=[],e=[],f=[],h=[];if(r==="declaration"){const{updated:m,added:E,removed:b}=this.restore({},a);c.push(...m),e.push(...E),f.push(...b)}return{updated:C(c),added:C(e),removed:C(f),affected:C(h),self:this}}unsubscribeFromDependencies(){var i,r,a,c,e;return(r=(i=this.declaration)==null?void 0:i.unsubscribeDependents)==null||r.call(i,[{entity:this,field:"declaration"}]),(e=(c=(a=this.dataType)==null?void 0:a.entity)==null?void 0:c.unsubscribeDependents)==null||e.call(c,[{entity:this,field:"data-type-entity"}]),this}subscribeToDependencies(){var i,r,a,c,e;return(r=(i=this.declaration)==null?void 0:i.subscribeDependents)==null||r.call(i,[{entity:this,field:"declaration"}]),(e=(c=(a=this.dataType)==null?void 0:a.entity)==null?void 0:c.subscribeDependents)==null||e.call(c,[{entity:this,field:"data-type-entity"}]),this}increaseVersion(i){var r;if(this.project.diggestedBuiltInBaseEntitiesIds.has(this.id))return this;if(i&&!B(i).isValid())throw new Error(`The shared timestamp '${i}' is not a valid ISO 8601 date string.`);if(i&&B(i).isSame(B(this.createdAt)))return this;if(!((r=this.knownVersions)!=null&&r.has(this.version))&&this.project.initialized)throw new Error(`The current ${this.type} ${this.id} version '${this.version}' is not captured in the 'knownVersions' map. Capture the current version before increasing it to avoid losing data.`);if(!this.activeVersion)throw new Error(`Only active versions can be increased. Entity with id '${this.id}' and version '${this.version}' is not active.`);return this.previousVersion=this.version,this.version=x.UUID.uuid(),this.createdAt=B(i).toISOString()||B().toISOString(),this}captureVersion(){var r;const i=((r=this.knownVersions)==null?void 0:r.get(this.version))||new Vi(this,this.project);if(!this.activeVersion)throw new Error(`Only active versions can be captured. Entity of type ${this.type} with id '${this.id}' and version '${this.version}' is not active.`);if(this.version!==i.version)throw new Error(`Captured ${this.type} with id '${this.id}', version '${i.version}' does not match current entity version '${this.version}'.`);return this.knownVersions=this.knownVersions?this.knownVersions.set(this.version,i):new Map().set(this.version,i),this.apply(i),this}snapshot(){const i=new Vi(this,this.project);return this.apply(i)}apply(i){const r=this.toMeta();return i.metaSync(r,null),i.declaration=this.declaration,i.writesValues=[...this.writesValues],i.dataType=this.dataType,i.parent=this.parent,i}recursiveCaptureUpstreamVersions(i){const r=[],a=[],c=[],e=[];if(this.parent){this.parent.increaseVersion(i);const f=this.parent.recursiveCaptureUpstreamVersions(i);r.push(this.parent,...f.updated),a.push(...f.added),c.push(...f.removed)}return{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}async restoreVersion(i,r){var m;const a=[],c=[],e=[],f=[];if(this.version===i&&(r!=null&&r.skipIfSameVersion))return{updated:C(a),added:C(c),removed:C(e),affected:C(f),self:this};if(!this.knownVersions){const E=new Map;for(const[b,A]of this.knownVersions||new Map){if(E.set(b,A),A.activeVersion=!1,A.knownVersions)for(const[_,P]of A.knownVersions)E.set(_,P);A.knownVersions=null}}let h=(m=this.knownVersions)==null?void 0:m.get(i);if(!h){const E=await this.APILoadVersion({},i);if(!E)throw new Error(`Version with id '${i}' for entity with id '${this.id}' not found.`);h=new Vi(E,this.project)}return this.metaSync(h.toShallowJSON(),null),this.previousVersion=h.previousVersion,this.version=h.version,this.createdAt=h.createdAt,this.author=h.author,this.deleted=h.deleted,this.declaration=h.declaration,this.writesValues=[...h.writesValues],this.dataType=h.dataType,this.parent=h.parent,{updated:C(a),added:C(c),removed:C(e),affected:C(f),self:this}}updateWithShallowTransfer(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.UpdateWithShallowTransfer))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[updateWithShallowTransfer] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),this;if(this.metaSync(i,r),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 a=te(i.parent),c=this.project.get(a),e=this.parent;if(e&&e.id!==(c==null?void 0:c.id)&&this.removeFromParent(r),c)this.setParent(c,r),this.addSelfToProject(r);else throw r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),new Error(`${this.type} with id '${this.id}' has a 'parent' reference '${a}' that isn't found in the project`)}else throw r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),new Error(`${this.type} with id '${this.id}' must have a 'parent'`);if(i.declaration){const a=te(i.declaration),c=this.project.get(a);if(c)this.setDeclaration(c,r);else throw new Error(`${this.type} with id '${this.id}' has a 'declaration' reference '${a}' that isn't found in the project`)}else{if(this.parentRelationType!==Gs.Error)throw r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),new Error(`${this.type} with id '${this.id}' must have a 'declaration' if it is not an error output map`);this.declaration=null}if(i.dataType){const a=te(this.initialData.dataType),c=this.project.get(a);c&&this.setDataType(c,r)}else this.setDataType(null,r);return i.writesValues.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addValueReader(e,r),e.setValueWriter(this,r))}),[...this.writesValues].forEach(a=>{i.writesValues.find(e=>te(e)===a.id)||(this.removeValueReader(a,r),a.setValueWriter(null,r))}),this.captureVersion(),this.subscribeToDependencies(),r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),this}updateWithGenerationTarget(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.UpdateWithGenerationTarget))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[updateWithGenerationTarget] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),this;if(this.metaSync(i,r),i.parent){const a=te(i.parent),c=this.project.get(a),e=this.parent;if(e&&e.id!==(c==null?void 0:c.id)&&this.removeFromParent(r),c)this.setParent(c,r),this.addSelfToProject(r);else throw r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),new Error(`${this.type} with id '${this.id}' has a 'parent' reference '${a}' that isn't found in the project`)}if(i.declaration){const a=te(i.declaration),c=this.project.get(a);if(c)this.setDeclaration(c,r);else throw new Error(`${this.type} with id '${this.id}' has a 'declaration' reference '${a}' that isn't found in the project`)}return this.captureVersion(),this.subscribeToDependencies(),r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),this}hydrateAncestors(){const i=[],r=[],a=[],c=[];if(this.initialData.parent){const e=te(this.initialData.parent),f=this.project.get(e);if(f)this.setParent(f,null),i.push(f);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=te(this.initialData.declaration),f=this.project.get(e);if(f)this.setDeclaration(f,null),i.push(f);else throw new Error(`${this.type} with id '${this.id}' has a 'declaration' reference '${e}' that isn't found in the project`)}else this.initialData.parentRelationType,Gs.Error;return{updated:C(i),added:C(r),removed:C(a),affected:C(c),self:this}}afterAllChildrenInitialized(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AfterAllChildrenInitialized))){var E;if(!this.checkCanEdit(this,i))return z.Logger.warn(`[afterAllChildrenInitialized] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.AfterAllChildrenInitialized,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];this.initialized=!0;let f=((E=this.declaration)==null?void 0:E.index)??this.index??0;const h=this.parent.outputs.filter(b=>!b.deleted&&b.id!==this.id);return h.length&&(f>h.length+1?f=h.length:f<0&&(f=0)),h.find(b=>(b.index||0)===f&&!b.deleted)&&h.filter(b=>(b.index||0)>=f&&!b.deleted).forEach(b=>{b.metaSync({index:(b.index||0)+1},i),i==null||i.add(b,W.Updated),r.push(b)}),this.metaSync({index:f},i),i==null||i.attemptAutoclose(w.AfterAllChildrenInitialized,this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}addSelfToProject(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"add-self-to-project"))){const r=[this],a=[],c=[],e=[];return this.parentRelationType===Gs.Error?this.parent.error=this:this.parent.addOutput(this,i),this.writesValues.forEach(f=>{f.setValueWriter(this,i),r.push(f)}),this.subscribe(),this.subscribeToDependencies(),i==null||i.attemptAutoclose("add-self-to-project",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}addValueReader(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddValueReader))){var e,f,h,m;if(!this.checkCanEditFromScopeOwnerWithSideEffects(this,w.AddValueReader,r))return this;(i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.SetValueWriter}-${this.id}`,action:w.SetValueWriter,owner:this,errorReason:Me.CannotValueWriteItself,rootAction:((e=r==null?void 0:r.self)==null?void 0:e.id)===this.id&&(r==null?void 0:r.actionName)===w.SetValueWriter}));const a=i.type===d.InputMap&&i.parent.type===d.VariableInstance&&((f=i.declaration)==null?void 0:f.type)===d.Property&&((h=i.declaration)==null?void 0:h.constant),c=i.type===d.VariableInstance&&((m=i.declaration)==null?void 0:m.constant);return(a||c)&&i?(r==null||r.event({id:`${w.SetValueWriter}-${this.id}--${i.id}`,action:w.SetValueWriter,owner:i,counterpart:this,errorReason:Me.ValueReadingOverridesConstantVariable,rootAction:!1}),r==null||r.attemptAutoclose(w.AddValueReader,this.id),this):this.writesValues.includes(i)?(r==null||r.attemptAutoclose(w.AddValueReader,this.id),this):(this.writesValues.push(i),r==null||r.add(this,W.Affected),this)}removeValueReader(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveValueReader))){return this.checkCanEditFromScopeOwnerWithSideEffects(this,w.RemoveValueReader,r)?this.writesValues.includes(i)?(this.writesValues=this.writesValues.filter(a=>a.id!==i.id),r==null||r.add(this,W.Affected),this):(r==null||r.attemptAutoclose(w.RemoveValueReader,this.id),this):this}setParent(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetParent))){var a;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.SetParent,r)?(((a=this.parent)==null?void 0:a.id)!==(i==null?void 0:i.id)&&(this.parent=i,r&&(r==null||r.add(this,W.Updated))),r==null||r.attemptAutoclose(w.SetParent,this.id),this):this}setDataType(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetDataType))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[setDataType] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.SetDataType,this.id),this;const a=this.dataType;return(a==null?void 0:a.id)!==(i==null?void 0:i.id)&&(a==null||a.remove({ignoreUpstream:!0},r),this.dataType=i,this.subscribeToDependencies(),r==null||r.add(this,W.Affected)),r==null||r.attemptAutoclose(w.SetDataType,this.id),this}removeDataType(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveDataType))){return this.checkCanEdit(this,i)?(this.dataType&&(this.dataType.remove({ignoreUpstream:!0},i),i==null||i.add(this,W.Affected),this.dataType=null),i==null||i.attemptAutoclose(w.RemoveDataType,this.id),this):(z.Logger.warn(`[removeDataType] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveDataType,this.id),this)}setDeclaration(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"set-declaration"))){var a;return((a=this.declaration)==null?void 0:a.id)!==(i==null?void 0:i.id)&&(this.declaration=i,this.subscribeToDependencies(),r&&(r==null||r.add(this,W.Updated))),r==null||r.attemptAutoclose("set-declaration",this.id),this}initChildren(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"init-children"))){return this.initialized||this.startedInitialization?this:(this.startedInitialization=!0,JE.initWritesValues(this,this.parent.parent),this.initialData.declaration&&(this.declaration=Ie(this.initialData.declaration,this.project)),this.subscribeToDependencies(),this.afterAllChildrenInitialized(i),i==null||i.attemptAutoclose("init-children",this.id),this)}subscribe(){var i;return this.activeVersion=!0,(i=this.knownVersions)==null||i.forEach(r=>{r.version!==this.version&&(r.activeVersion=!1)}),this.project.subscribeInstance(this),this}unsubscribe(){return this.project.unsubscribeInstance(this),this}metaSync(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"meta-sync"))){const a=tn(this,i,r),c=en(this,a),e=this.toMeta();return this.index=a.index||(a.index!==0?e.index:0),this.parentRelationType=a.parentRelationType!==void 0?a.parentRelationType:this.parentRelationType,super.baseMetaSync(a,this,r),a.deleted===!0&&!e.deleted?r==null||r.add(this,W.Removed):a.deleted===!1&&e.deleted?r==null||r.add(this,W.Added):c&&(r==null||r.add(this,W.Updated)),r==null||r.attemptAutoclose("meta-sync",this.id),this}async APILoad(i=Ke,...r){return await Vi.repository.APILoad(this.id,...r),this}async APICreate(i=Ke,...r){return await Vi.repository.APICreate(this.toShallowJSON(),...r),this}async APIUpdate(i=Ke,...r){return await Vi.repository.APIUpdate(this.toShallowJSON(),...r),this}async APIDelete(i=Ke,...r){return await Vi.repository.APIDelete(this.toShallowJSON(),...r),this}async APIClone(i=Ke,...r){return await Vi.repository.APIClone(this.id,...r),this}async APILoadVersion(i=Ke,r,...a){return await Vi.repository.APILoadVersion(this.id,r,...a)}removeFromParent(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveFromParent))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[removeFromParent] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveFromParent,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];return i==null||i.attemptAutoclose(w.RemoveFromParent,this.id),{added:C(c),updated:C(r),removed:C(a),affected:C(e),self:this}}remove({ignoreUpstream:i}={ignoreUpstream:!1},r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveEntity))){var h;if(!this.checkCanDelete(this,r))return z.Logger.warn(`[remove] User is not allowed to delete or edit this ${this.type} entity with id: ${this.id}`),r==null||r.event({id:`${w.RemoveEntity}-${this.id}--${Me.ActionOwnerEntityNonDeletable}`,action:w.RemoveEntity,owner:this,errorReason:Me.ActionOwnerEntityNonDeletable,rootAction:((h=r==null?void 0:r.self)==null?void 0:h.id)===this.id&&(r==null?void 0:r.actionName)===w.RemoveEntity}),r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const a=[],c=[],e=[],f=[];if(r!=null&&r.hasRemoved(this.id))return r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};if(c.push(this),this.unsubscribe(),this.unsubscribeFromDependencies(),this.project.subscribeDeletedInstance(this),this.metaSync({deleted:!0},r),Object.values(this.detachedDependents).forEach(m=>{const{updated:E,removed:b,added:A}=m.entity.onDetachedDependencyRemoved(this,m.field,r);a.push(...E),c.push(...b),e.push(...A)}),this.writesValues.forEach(m=>{a.push(m),m.readsValue=null}),!i){const m=this.removeFromParent(r);e.push(...m.added),a.push(...m.updated),c.push(...m.removed),f.push(...m.affected),f.push(this.parent),this.parentRelationType===Gs.Error?this.parent.error=null:this.parent.removeOutput(this,r)}return r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:C(e),updated:C(a),removed:C(c),affected:C(f),self:this}}restore({}={},i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RestoreEntity))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[restore] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RestoreEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];return i!=null&&i.hasAdded(this.id)?(i==null||i.attemptAutoclose(w.RestoreEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this}):(this.subscribe(),this.project.unsubscribeDeletedInstance(this),this.metaSync({deleted:!1},i),Object.values(this.detachedDependents).forEach(f=>{const{updated:h,removed:m,added:E}=f.entity.onDetachedDependencyRestored(this,f.field,i);a.push(...h),c.push(...m),r.push(...E)}),this.writesValues.forEach(f=>{a.push(f),f.setValueWriter(this,i)}),e.push(this.parent),this.parentRelationType===Gs.Error?this.parent.error=this:this.parent.addOutput(this,i),i==null||i.attemptAutoclose(w.RestoreEntity,this.id),{added:C(r),updated:C(a),removed:C(c),affected:C(e),self:this})}toFlat(i=new Set){var a;return i.has(this.id)?[]:(i.add(this.id),[this,...((a=this.dataType)==null?void 0:a.toFlat(i))||[],...this.writesValues.flatMap(c=>c.toFlat(i)),...this.declaration?this.declaration.toFlat(i):[]])}toFlatIds(i=new Set){var a;return i.has(this.id)?[]:(i.add(this.id),[this.id,...((a=this.dataType)==null?void 0:a.toFlatIds(i))||[],...this.writesValues.flatMap(c=>c.toFlatIds(i)),...this.declaration?this.declaration.toFlatIds(i):[]])}toMeta(){return{id:this.id,version:this.version,createdAt:this.createdAt,previousVersion:this.previousVersion,author:this.author,deleted:this.deleted,index:this.index,type:this.type,editable:this.editable,deletable:this.deletable}}toJSON(i=new Set){var r,a;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,editable:this.editable,deletable:this.deletable,index:this.index,parentRelationType:this.parentRelationType,dataType:((r=this.dataType)==null?void 0:r.toJSON(i))||null,writesValues:this.writesValues.map(c=>c.toJSON(i)),declaration:((a=this.declaration)==null?void 0:a.toJSON(i))||null,parent:this.parent.toReference()})}toJSONClone(i=at){var a,c,e,f,h,m,E,b,A,_;let r;return(a=i.seenEntityMaps)!=null&&a.has(this.id)?r=i.seenEntityMaps.get(this.id):(r=i.newId||dn(this,this.project,i.uuidStrategy),i.seenEntityMaps&&i.seenEntityMaps.set(this.id,r)),(c=i.seenEntities)!=null&&c.has(r)||(e=i.seenEntities)!=null&&e.has(this.id)?this.toReference({seenEntityMaps:i.seenEntityMaps}):((f=i.seenEntities)==null||f.add(r),(h=i.seenEntities)==null||h.add(this.id),{id:r,version:x.UUID.uuid(),createdAt:i.timestamp||B().toISOString(),previousVersion:null,author:this.author,deleted:this.deleted,type:this.type,editable:this.editable,deletable:this.deletable,index:this.index,parentRelationType:this.parentRelationType,writesValues:this.writesValues.map(P=>P.toJSONClone({...i,newId:null})),dataType:((m=this.dataType)==null?void 0:m.toJSONClone({...i,newId:null}))||null,declaration:(E=this.declaration)!=null&&E.id&&this.project.getBuiltIn((b=this.declaration)==null?void 0:b.id)?(A=this.declaration)==null?void 0:A.toJSON(i.seenEntities):((_=this.declaration)==null?void 0:_.toJSONClone({...i,newId:null}))||null,parent:this.parent.toReference({seenEntityMaps:i.seenEntityMaps})})}toReference(i=at){var a;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r+"--"+x.UUID.uuid()+"--ref",type:d.GenericReference,entityId:r,version:this.version,entityType:this.type}}toShallowJSON(i=at){var a,c,e;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r,version:this.version,createdAt:this.createdAt,previousVersion:this.previousVersion,author:this.author,deleted:this.deleted,type:this.type,editable:this.editable,deletable:this.deletable,index:this.index,parentRelationType:this.parentRelationType,dataType:((c=this.dataType)==null?void 0:c.toReference(i))||null,declaration:((e=this.declaration)==null?void 0:e.toReference(i))||null,writesValues:this.writesValues.map(f=>f.toReference(i)),parent:this.parent.toReference(i)}}toFlatJSON(i=new Set){var a;return i.has(this.id)?[]:(i.add(this.id),[this.toShallowJSON(),...((a=this.dataType)==null?void 0:a.toFlatJSON(i))||[],...this.writesValues.flatMap(c=>c.toFlatJSON(i)),...this.declaration?this.declaration.toFlatJSON(i):[]])}toGenerationTarget(i=at){var a,c;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r,type:this.type,declaration:((c=this.declaration)==null?void 0:c.id)||null,parentRelationType:this.parentRelationType,parent:this.parent.id}}toFlatGenerationTarget(i=new Set){var a;return i.has(this.id)?[]:(i.add(this.id),[this.toGenerationTarget(),...((a=this.dataType)==null?void 0:a.toFlatGenerationTarget(i))||[],...this.writesValues.flatMap(c=>c.toFlatGenerationTarget(i)),...this.declaration?this.declaration.toFlatGenerationTarget(i):[]])}clearErrors(){return this.errors=[],this}validate(){return this.errors=O4e(this),{success:!0}}async validateAsync(i={}){const r=z.YieldTracker.from(i);return this.errors=await C4e(this,{tracker:r}),{success:!0}}getErrors(){return[...this.errors]}async getErrorsAsync(i={}){const r=z.YieldTracker.from(i),a=[...this.errors];return await r.tick(),a}getShallowErrors(){return this.errors}clone(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.CloneEntity)),r=null,a=null,c=!0){var b;const e=Fr(r,this),f=this.toJSON(),h=a||x.UUID.uuid();f.id=h,f.version=x.UUID.uuid(),f.createdAt=(i==null?void 0:i.timestamp)||B().toISOString(),f.author=(i==null?void 0:i.author)||"1",f.previousVersion=null,f.deleted=!1,f.deletable=!0,f.editable=!0;const m=lr(f,e);r?m.setParent(r,i):m.setParent(this.parent,null),c&&m.subscribe(),m.initChildren(i),i==null||i.add(m,W.Added);const E=(b=this.dataType)==null?void 0:b.clone(i,m,x.UUID.uuid(),c);return m.setDataType(E||null,i),i||m.captureVersion(),i==null||i.attemptAutoclose(w.CloneEntity,this.id),m}getDataType(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"get-data-type"))){var a;if(this.parent.type===d.Operation){const c=this.parent.declaration.inferOutputMapDataType(this,i);return i==null||i.attemptAutoclose("get-data-type",this.id),c.self}const r=((a=this.declaration)==null?void 0:a.getDataType(i))||null;return i==null||i.attemptAutoclose("get-data-type",this.id),r}};R(Vi,"repository",{APICreate:async(i,...r)=>i,APIUpdate:async(i,...r)=>i,APIDelete:async(i,...r)=>i,APIClone:async(i,...r)=>{},APILoad:async(i,...r)=>null,APILoadVersion:async(i,r,...a)=>null}),R(Vi,"type",d.OutputMap),R(Vi,"USER_MANAGED_PARENT_TYPES",[...Ip]),R(Vi,"PARENT_TYPES",[...Vi.USER_MANAGED_PARENT_TYPES]),R(Vi,"MUTABLE_BASE_PROPERTIES",[]),R(Vi,"INMUTABLE_BASE_PROPERTIES",["id","type","version","createdAt","author","previousVersion","parentRelationType"]),R(Vi,"BASE_PROPERTIES",[...Vi.MUTABLE_BASE_PROPERTIES,...Vi.INMUTABLE_BASE_PROPERTIES]),R(Vi,"MUTABLE_META_PROPERTIES",[...Vi.MUTABLE_BASE_PROPERTIES,"index"]),R(Vi,"INMUTABLE_META_PROPERTIES",[...Vi.INMUTABLE_BASE_PROPERTIES]),R(Vi,"META_PROPERTIES",[...Vi.MUTABLE_META_PROPERTIES,...Vi.INMUTABLE_META_PROPERTIES]),R(Vi,"MUTABLE_UPSTREAM_PROPERTIES",[]),R(Vi,"INMUTABLE_UPSTREAM_PROPERTIES",["parent","declaration"]),R(Vi,"UPSTREAM_PROPERTIES",[...Vi.MUTABLE_UPSTREAM_PROPERTIES,...Vi.INMUTABLE_UPSTREAM_PROPERTIES]),R(Vi,"MUTABLE_DOWNSTREAM_PROPERTIES",["writesValues"]),R(Vi,"INMUTABLE_DOWNSTREAM_PROPERTIES",[]),R(Vi,"DOWNSTREAM_PROPERTIES",[...Vi.MUTABLE_DOWNSTREAM_PROPERTIES,...Vi.INMUTABLE_DOWNSTREAM_PROPERTIES]),R(Vi,"PROPERTIES",[...Vi.META_PROPERTIES,...Vi.UPSTREAM_PROPERTIES,...Vi.DOWNSTREAM_PROPERTIES]);let po=Vi;class rCi extends po{constructor(i,r){super(i,r);R(this,"errors",[])}toJSON(i=new Set){return super.toJSON(i)}}class nCi extends po{constructor(i,r){super(i,r);R(this,"declaration",null);R(this,"errors",[])}toJSON(i=new Set){return super.toJSON(i)}}async function V4e(s,p={}){var c;const i=z.YieldTracker.from(p),r=[...Rn(s),...Xa(s)];await i.tick();const a=qt(s.errors,r);for(const e of s.outputs)await e.validateAsync({tracker:i});return await((c=s.throws)==null?void 0:c.validateAsync({tracker:i})),a}function P4e(s){var i;s.outputs.forEach(r=>r.validate()),(i=s.throws)==null||i.validate();const p=[...Rn(s),...Xa(s)];return qt(s.errors,p)}const aCi=Object.freeze(Object.defineProperty({__proto__:null,validate:P4e,validateAsync:V4e},Symbol.toStringTag,{value:"Module"}));var N4e=(s=>(s.Parent="break-statement-parent-field",s.DataTypeEntity="break-statement-data-type-entity-field",s.DataType="break-statement-data-type-field",s.ParentDataType="break-statement-parent-data-type-field",s.ParentDataTypeEntity="break-statement-parent-data-type-entity-field",s))(N4e||{});const Fi=class Fi extends un{constructor(i,r){super(i);R(this,"initialData");R(this,"id");R(this,"x");R(this,"y");R(this,"type",d.BreakStatement);R(this,"outputs",[]);R(this,"readsValue",null);R(this,"dataType",null);R(this,"defaultValue",null);R(this,"calledBySuccess",[]);R(this,"calledByError",[]);R(this,"calledByEntry",[]);R(this,"throws",null);R(this,"project");R(this,"errors",[]);R(this,"parent");R(this,"detachedDependents",{});R(this,"knownVersions",null);R(this,"activeVersion",!1);R(this,"initialized",!1);R(this,"startedInitialization",!1);R(this,"suggestion",!1);R(this,"_codeNativeValueValidation",null);this.initialData=i,this.project=r,this.id=i.id,this.x=i.x,this.y=i.y}static new(i=null){return{id:x.UUID.uuid(),version:x.UUID.uuid(),createdAt:(i==null?void 0:i.timestamp)||B().toISOString(),author:(i==null?void 0:i.author)||x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.BreakStatement,outputs:[],defaultValue:null,dataType:null,readsValue:null,calledBySuccess:[],calledByError:[],calledByEntry:[],throws:null,parent:null,x:0,y:0}}static fromGenerationTarget(i,r,a){const c=a===void 0?r.addChangeSet(new S(r,x.sessionAuthor,B().toISOString(),r,!0,w.CreateFromGenerationTarget)):a,e=te(i.parent),f=r.get(e),h=(i.calledByEntry||[]).map(P=>{const V=te(P);return r.get(V)}),m=(i.calledBySuccess||[]).map(P=>{const V=te(P);return r.get(V)}),E=(i.calledByError||[]).map(P=>{const V=te(P);return r.get(V)});let b=null;if(i.readsValue){const P=te(i.readsValue);b=r.get(P)}const A={id:i.id,version:x.UUID.uuid(),createdAt:(c==null?void 0:c.timestamp)||B().toISOString(),author:(c==null?void 0:c.author)||x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.BreakStatement,x:0,y:0,outputs:[],defaultValue:null,dataType:null,readsValue:b?b.toReference():null,calledByEntry:h.map(P=>P.toReference()),calledBySuccess:m.map(P=>P.toReference()),calledByError:E.map(P=>P.toReference()),throws:null,parent:f.toReference()},_=Ie(A,r);return _.hydrateAncestors(),_.setParent(f,c),_.addSelfToProject(c),c==null||c.add(_,W.Added),_.initChildren(c),c||_.captureVersion(),_}static validateGenerationTarget(i,r){let a=JSON.parse(JSON.stringify(i));const c=[],e=[],f=Bn(a,{parent:{list:!1,types:[d.Loop]}},r);c.push(...f.explanations),a=f.modifiedData;const h=Xr(a);return e.push(...f.errors,...h.errors),c.push(...h.explanations),{errors:e,explanations:c,modifiedData:a}}get codeNativeValueValidation(){return this._codeNativeValueValidation||null}validateGeneratedUpdate(i){const r=[],a=[];let c=JSON.parse(JSON.stringify(i));const e=dy(c,this);return c=e.modifiedData,r.push(...e.errors),i.parent&&r.push(new we({id:`${this.id}--${Te.InvalidParentUpdate}`,code:Te.InvalidParentUpdate,severity:ve.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.
|
|
194
194
|
If an entity is called by another, they must be in the same scope, which means they have the same parent.
|
|
195
195
|
You shouldn't have to manually update a 'parent' property.
|
|
196
|
-
Specifically for break statements the parent needs to always be the 'loop' entity that contains it.`})),{errors:r,explanations:a,modifiedData:i}}subscribeDependents(i){return i.forEach(r=>{this.detachedDependents[r.entity.id]||(this.detachedDependents[r.entity.id]=r)}),this}unsubscribeDependents(i){return i.forEach(r=>{this.detachedDependents[r.entity.id]&&delete this.detachedDependents[r.entity.id]}),this}syncDependents(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"sync-dependents"))){const r=[],a=[],c=[],e=[];return Object.values(this.detachedDependents).forEach(f=>{const h=f.entity.afterAllChildrenInitialized(i);r.push(...h.updated),a.push(...h.added),c.push(...h.removed),e.push(...h.affected)}),i==null||i.attemptAutoclose("sync-dependents",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}onDetachedDependencyRemoved(i,r,a){const c=[],e=[],f=[],h=[];if(r==="break-statement-parent-field"){const{updated:m,added:E,removed:b}=this.remove({ignoreUpstream:!1},a);c.push(...m),e.push(...E),f.push(...b)}if(r==="break-statement-parent-data-type-field"){const{updated:m,added:E,removed:b}=this.afterAllChildrenInitialized(a);c.push(...m),e.push(...E),f.push(...b)}if(r==="break-statement-parent-data-type-entity-field"){const{updated:m,added:E,removed:b}=this.afterAllChildrenInitialized(a);c.push(...m),e.push(...E),f.push(...b)}return{updated:C(c),added:C(e),removed:C(f),affected:C(h),self:this}}onDetachedDependencyRestored(i,r,a){const c=[],e=[],f=[],h=[];if(r==="break-statement-parent-field"){const{updated:m,added:E,removed:b}=this.restore({},a);c.push(...m),e.push(...E),f.push(...b)}if(r==="break-statement-parent-data-type-field"){const{updated:m,added:E,removed:b}=this.afterAllChildrenInitialized(a);c.push(...m),e.push(...E),f.push(...b)}if(r==="break-statement-parent-data-type-entity-field"){const{updated:m,added:E,removed:b}=this.afterAllChildrenInitialized(a);c.push(...m),e.push(...E),f.push(...b)}return{updated:C(c),added:C(e),removed:C(f),affected:C(h),self:this}}unsubscribeFromDependencies(){var i,r,a,c,e,f,h,m,E,b,A,_;return this.parent.unsubscribeDependents([{entity:this,field:"break-statement-parent-field"}]),(a=(r=(i=this.dataType)==null?void 0:i.entity)==null?void 0:r.unsubscribeDependents)==null||a.call(r,[{entity:this,field:"break-statement-data-type-entity-field"}]),(e=(c=this.dataType)==null?void 0:c.unsubscribeDependents)==null||e.call(c,[{entity:this,field:"break-statement-data-type-field"}]),(E=(m=(h=(f=this.parent)==null?void 0:f.dataType)==null?void 0:h.entity)==null?void 0:m.unsubscribeDependents)==null||E.call(m,[{entity:this,field:"break-statement-parent-data-type-entity-field"}]),(_=(A=(b=this.parent)==null?void 0:b.dataType)==null?void 0:A.unsubscribeDependents)==null||_.call(A,[{entity:this,field:"break-statement-parent-data-type-field"}]),this}subscribeToDependencies(){var i,r,a,c,e,f,h,m,E,b,A,_,P;return(i=this.parent)==null||i.subscribeDependents([{entity:this,field:"break-statement-parent-field"}]),(c=(a=(r=this.dataType)==null?void 0:r.entity)==null?void 0:a.subscribeDependents)==null||c.call(a,[{entity:this,field:"break-statement-data-type-entity-field"}]),(f=(e=this.dataType)==null?void 0:e.subscribeDependents)==null||f.call(e,[{entity:this,field:"break-statement-data-type-field"}]),(b=(E=(m=(h=this.parent)==null?void 0:h.dataType)==null?void 0:m.entity)==null?void 0:E.subscribeDependents)==null||b.call(E,[{entity:this,field:"break-statement-parent-data-type-entity-field"}]),(P=(_=(A=this.parent)==null?void 0:A.dataType)==null?void 0:_.subscribeDependents)==null||P.call(_,[{entity:this,field:"break-statement-parent-data-type-field"}]),this}increaseVersion(i){var r;if(this.project.diggestedBuiltInBaseEntitiesIds.has(this.id))return this;if(i&&!B(i).isValid())throw new Error(`The shared timestamp '${i}' is not a valid ISO 8601 date string.`);if(i&&B(i).isSame(B(this.createdAt)))return this;if(!((r=this.knownVersions)!=null&&r.has(this.version))&&this.project.initialized)throw new Error(`The current ${this.type} ${this.id} version '${this.version}' is not captured in the 'knownVersions' map. Capture the current version before increasing it to avoid losing data.`);if(!this.activeVersion)throw new Error(`Only active versions can be increased. Entity with id '${this.id}' and version '${this.version}' is not active.`);return this.previousVersion=this.version,this.version=x.UUID.uuid(),this.createdAt=B(i).toISOString()||B().toISOString(),this}captureVersion(){var r;const i=((r=this.knownVersions)==null?void 0:r.get(this.version))||new Fi(this,this.project);if(!this.activeVersion)throw new Error(`Only active versions can be captured. Entity of type ${this.type} with id '${this.id}' and version '${this.version}' is not active.`);if(this.version!==i.version)throw new Error(`Captured ${this.type} with id '${this.id}', version '${i.version}' does not match current entity version '${this.version}'.`);return this.knownVersions=this.knownVersions?this.knownVersions.set(this.version,i):new Map().set(this.version,i),this.apply(i),this}snapshot(){const i=new Fi(this,this.project);return this.apply(i)}apply(i){const r=this.toMeta();return i.metaSync(r,null),i.outputs=[...this.outputs],i.readsValue=this.readsValue,i.defaultValue=this.defaultValue,i.dataType=this.dataType,i.throws=this.throws,i.calledBySuccess=[...this.calledBySuccess],i.calledByError=[...this.calledByError],i.calledByEntry=[...this.calledByEntry],i.parent=this.parent,i}recursiveCaptureUpstreamVersions(i){const r=[],a=[],c=[],e=[];if(this.parent){this.parent.increaseVersion(i);const f=this.parent.recursiveCaptureUpstreamVersions(i);r.push(this.parent,...f.updated),a.push(...f.added),c.push(...f.removed)}return{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}async restoreVersion(i,r){var m;const a=[],c=[],e=[],f=[];if(this.version===i&&(r!=null&&r.skipIfSameVersion))return{updated:C(a),added:C(c),removed:C(e),affected:C(f),self:this};if(!this.knownVersions){const E=new Map;for(const[b,A]of this.knownVersions||new Map){if(E.set(b,A),A.activeVersion=!1,A.knownVersions)for(const[_,P]of A.knownVersions)E.set(_,P);A.knownVersions=null}}let h=(m=this.knownVersions)==null?void 0:m.get(i);if(!h){const E=await this.APILoadVersion({},i);if(!E)throw new Error(`Version with id '${i}' for entity with id '${this.id}' not found.`);h=new Fi(E,this.project)}return this.metaSync(h.toShallowJSON(),null),this.previousVersion=h.previousVersion,this.version=h.version,this.createdAt=h.createdAt,this.author=h.author,this.deleted=h.deleted,this.outputs=[...h.outputs],this.readsValue=h.readsValue,this.defaultValue=h.defaultValue,this.dataType=h.dataType,this.throws=h.throws,this.calledBySuccess=[...h.calledBySuccess],this.calledByError=[...h.calledByError],this.calledByEntry=[...h.calledByEntry],this.parent=h.parent,{updated:C(a),added:C(c),removed:C(e),affected:C(f),self:this}}updateWithShallowTransfer(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.UpdateWithShallowTransfer))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[updateWithShallowTransfer] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),this;if(this.metaSync(i,r),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 a=te(i.parent),c=this.project.get(a),e=this.parent;if(e&&e.id!==(c==null?void 0:c.id)&&this.removeFromParent(r),c)this.setParent(c,r),this.addSelfToProject(r);else throw r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),new Error(`${this.type} with id '${this.id}' has a 'parent' reference '${a}' that isn't found in the project`)}else throw r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),new Error(`${this.type} with id '${this.id}' must have a 'parent'`);if(i.readsValue){const a=te(i.readsValue),c=this.project.get(a),e=this.readsValue;e&&e.id!==(c==null?void 0:c.id)&&this.removeValueWriter(r),c&&this.setValueWriter(c,r)}else this.removeValueWriter(r);if(i.calledByEntry.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addEntryCaller(e,r),e.addCall(this,r))}),[...this.calledByEntry].forEach(a=>{i.calledByEntry.find(e=>te(e)===a.id)||(this.removeCaller(a,r),a.removeCall(this,r))}),i.calledBySuccess.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addSuccessCaller(e,r),e.addSuccessCall(this,r))}),[...this.calledBySuccess].forEach(a=>{i.calledBySuccess.find(e=>te(e)===a.id)||(this.removeCaller(a,r),a.removeCall(this,r))}),i.calledByError.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addErrorCaller(e,r),e.addErrorCall(this,r))}),[...this.calledByError].forEach(a=>{i.calledByError.find(e=>te(e)===a.id)||(this.removeCaller(a,r),a.removeCall(this,r))}),i.outputs.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addOutput(e,r),e.setParent(this,r))}),[...this.outputs].forEach(a=>{i.outputs.find(e=>te(e)===a.id)||(this.removeOutput(a,r),a.removeFromParent(r))}),i.dataType){const a=te(i.dataType),c=this.project.get(a);c&&this.setDataType(c,r)}else this.setDataType(null,r);if(i.defaultValue){const a=te(i.defaultValue),c=this.project.get(a);c&&this.setDefaultValue(c,r)}else this.setDefaultValue(null,r);return this.captureVersion(),this.subscribeToDependencies(),r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),this}updateWithGenerationTarget(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.UpdateWithGenerationTarget))){var a,c,e;if(!this.checkCanEdit(this,r))return z.Logger.warn(`[updateWithGenerationTarget] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),this;if(this.metaSync(i,r),i.parent){const f=te(i.parent),h=this.project.get(f),m=this.parent;if(m&&m.id!==(h==null?void 0:h.id)&&this.removeFromParent(r),h)this.setParent(h,r),this.addSelfToProject(r);else throw r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),new Error(`${this.type} with id '${this.id}' has a 'parent' reference '${f}' that isn't found in the project`)}if(i.readsValue){const f=te(i.readsValue),h=this.project.get(f);if(!h)throw new Error(`${this.type} with id '${this.id}' has a 'readsValue' reference '${f}' that isn't found in the project`);const m=this.readsValue;m&&m.id!==(h==null?void 0:h.id)&&this.removeValueWriter(r),h&&this.setValueWriter(h,r)}else i.readsValue===null&&this.removeValueWriter(r);return(a=i.calledByEntry)==null||a.forEach(f=>{const h=te(f),m=this.project.get(h);if(m)this.addEntryCaller(m,r),m.addCall(this,r);else throw new Error(`${this.type} with id '${this.id}' has a 'calledByEntry' reference '${h}' that isn't found in the project`)}),i.calledByEntry&&[...this.calledByEntry].forEach(f=>{var m;((m=i.calledByEntry)==null?void 0:m.find(E=>te(E)===f.id))||(this.removeCaller(f,r),f.removeCall(this,r))}),(c=i.calledBySuccess)==null||c.forEach(f=>{const h=te(f),m=this.project.get(h);if(m)this.addSuccessCaller(m,r),m.addSuccessCall(this,r);else throw new Error(`${this.type} with id '${this.id}' has a 'calledBySuccess' reference '${h}' that isn't found in the project`)}),i.calledBySuccess&&[...this.calledBySuccess].forEach(f=>{var m;((m=i.calledBySuccess)==null?void 0:m.find(E=>te(E)===f.id))||(this.removeCaller(f,r),f.removeCall(this,r))}),(e=i.calledByError)==null||e.forEach(f=>{const h=te(f),m=this.project.get(h);if(m)this.addErrorCaller(m,r),m.addErrorCall(this,r);else throw new Error(`${this.type} with id '${this.id}' has a 'calledByError' reference '${h}' that isn't found in the project`)}),i.calledByError&&[...this.calledByError].forEach(f=>{var m;((m=i.calledByError)==null?void 0:m.find(E=>te(E)===f.id))||(this.removeCaller(f,r),f.removeCall(this,r))}),this.captureVersion(),this.subscribeToDependencies(),r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),this}hydrateAncestors(){const i=[],r=[],a=[],c=[];if(this.initialData.parent){const e=te(this.initialData.parent),f=this.project.get(e);if(f)this.setParent(f,null),i.push(f);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.readsValue){const e=te(this.initialData.readsValue),f=this.project.get(e);f&&(this.setValueWriter(f,null),i.push(f))}return this.initialData.calledByEntry.forEach(e=>{const f=te(e),h=this.project.get(f);h&&(this.addEntryCaller(h,null),i.push(h))}),this.initialData.calledBySuccess.forEach(e=>{const f=te(e),h=this.project.get(f);h&&(this.addSuccessCaller(h,null),i.push(h))}),this.initialData.calledByError.forEach(e=>{const f=te(e),h=this.project.get(f);h&&(this.addErrorCaller(h,null),i.push(h))}),{updated:C(i),added:C(r),removed:C(a),affected:C(c),self:this}}afterAllChildrenInitialized(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AfterAllChildrenInitialized))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[afterAllChildrenInitialized] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.AfterAllChildrenInitialized,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];if(this.initialized=!0,!this.dataType||this.dataType.inferred,this.readsValue&&this.defaultValue&&(this.project.diggestedBuiltInBaseEntitiesIds.has(this.defaultValue.id)||this.defaultValue.remove({ignoreUpstream:!1},i),this.setDefaultValue(null,i)),this.defaultValue&&!this.readsValue&&!this.project.diggestedBuiltInBaseEntitiesIds.has(this.id)&&this.project.diggestedBuiltInBaseEntitiesIds.has(this.defaultValue.id)){const b=this.defaultValue.clone(i,this);this.setDefaultValue(b,i)}const{added:f,updated:h,removed:m,affected:E}=this.syncInputs(i);return a.push(...f),r.push(...h),c.push(...m),e.push(...E),this.parent.syncTerminationStatements(i),this.outputs.sort((b,A)=>{var _,P;return(b.index??((_=b.declaration)==null?void 0:_.index))-(A.index??((P=A.declaration)==null?void 0:P.index))}),i==null||i.attemptAutoclose(w.AfterAllChildrenInitialized,this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}addSelfToProject(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"add-self-to-project"))){var f,h;const r=[this],a=[],c=[],e=[];return this.readsValue&&(this.readsValue.addValueReader(this,i),r.push(this.readsValue)),this.calledByEntry.forEach(m=>{m.addCall(this,i),r.push(m)}),this.calledBySuccess.forEach(m=>{m.addSuccessCall(this,i),r.push(m)}),this.calledByError.forEach(m=>{m.addErrorCall(this,i),r.push(m)}),this.parent.addBreakStatement(this),e.push(this.parent),i==null||i.add(this.parent,W.Affected),(f=this.parent)==null||f.breakStatements.forEach(m=>{m.id!==this.id&&(e.push(m),i==null||i.add(m,W.Affected))}),(h=this.parent)==null||h.continueStatements.forEach(m=>{m.id!==this.id&&(e.push(m),i==null||i.add(m,W.Affected))}),this.subscribe(),this.subscribeToDependencies(),i==null||i.attemptAutoclose("add-self-to-project",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}get calledBy(){return[...this.calledByEntry,...this.calledBySuccess,...this.calledByError]}addSuccessCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddSuccessCaller)),a=!1){var c;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddSuccessCaller,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddSuccessCaller}-${this.id}--${Me.CannotSuccessCallItself}`,action:w.AddSuccessCaller,owner:this,errorReason:Me.CannotSuccessCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddSuccessCaller})),this.calledBySuccess.find(e=>e.id===i.id)||(this.calledBySuccess.push(i),r==null||r.add(this,W.Updated),a&&bt(this,r)),r==null||r.attemptAutoclose(w.AddSuccessCaller,this.id),this):this}addErrorCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddErrorCaller)),a=!1){var c;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddErrorCaller,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddErrorCaller}-${this.id}--${Me.CannotErrorCallItself}`,action:w.AddErrorCaller,owner:this,errorReason:Me.CannotErrorCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddErrorCaller})),this.calledByError.find(e=>e.id===i.id)||(this.calledByError.push(i),r==null||r.add(this,W.Updated),a&&bt(this,r)),r==null||r.attemptAutoclose(w.AddErrorCaller,this.id),this):this}addEntryCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddEntryCaller)),a=!1){var c;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddEntryCaller,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddEntryCaller}-${this.id}--${Me.CannotEntryCallItself}`,action:w.AddEntryCaller,owner:this,errorReason:Me.CannotEntryCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddEntryCaller})),this.calledByEntry.find(e=>e.id===i.id)||(this.calledByEntry.push(i),r==null||r.add(this,W.Updated),a&&bt(this,r)),r==null||r.attemptAutoclose(w.AddEntryCaller,this.id),this):this}removeCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"remove-caller")),a=!1){return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.RemoveCaller,r)?(this.calledBySuccess=this.calledBySuccess.filter(c=>c.id!==i.id?!0:(r==null||r.add(this,W.Updated),r==null||r.add(c,W.Affected),!1)),this.calledByError=this.calledByError.filter(c=>c.id!==i.id?!0:(r==null||r.add(this,W.Updated),r==null||r.add(c,W.Affected),!1)),this.calledByEntry=this.calledByEntry.filter(c=>c.id!==i.id?!0:(r==null||r.add(this,W.Updated),r==null||r.add(c,W.Affected),!1)),a&&bt(this,r),r==null||r.attemptAutoclose(w.RemoveCaller,this.id),this):this}setThrows(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"set-throws"))){var a;if(!this.checkCanEdit(this,r))return z.Logger.warn(`[setThrows] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("set-throws",this.id),this;if(i!==null&&i.parentRelationType!==dd.Error)throw new Error("The 'throws' InputMap must have a parentRelationType of 'Error'.");return((a=this.throws)==null?void 0:a.id)!==(i==null?void 0:i.id)&&(this.throws=i,r==null||r.add(this,W.Updated)),r==null||r.attemptAutoclose("set-throws",this.id),this}addOutput(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"add-output"))){return this.checkCanEdit(this,r)?this.outputs.includes(i)?(r==null||r.attemptAutoclose("add-output",this.id),this):(this.outputs.push(i),r==null||r.add(this,W.Affected),r==null||r.attemptAutoclose("add-output",this.id),this):(z.Logger.warn(`[addOutput] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("add-output",this.id),this)}removeOutput(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"remove-output"))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[removeOutput] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("remove-output",this.id),this;const a=this.outputs.findIndex(c=>c.id===i.id);return a>-1&&(this.outputs.splice(a,1),r&&(r==null||r.add(this,W.Affected))),r==null||r.attemptAutoclose("remove-output",this.id),this}setParent(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetParent))){var a;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.SetParent,r)?(((a=this.parent)==null?void 0:a.id)!==(i==null?void 0:i.id)&&(this.parent=i,r&&(r==null||r.add(this,W.Updated))),r==null||r.attemptAutoclose(w.SetParent,this.id),this):this}setValueWriter(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetValueWriter))){var a,c,e;return this.checkCanEditFromScopeOwnerWithSideEffects(this,w.SetValueWriter,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.SetValueWriter}-${this.id}--${Me.CannotValueWriteItself}`,action:w.SetValueWriter,owner:this,errorReason:Me.CannotValueWriteItself,rootAction:((a=r==null?void 0:r.self)==null?void 0:a.id)===this.id&&(r==null?void 0:r.actionName)===w.SetValueWriter})),((c=this.readsValue)==null?void 0:c.id)!==(i==null?void 0:i.id)&&(this.readsValue=i,this.readsValue&&((e=this.defaultValue)==null||e.remove({ignoreUpstream:!1},r)),r==null||r.add(this,W.Updated)),r==null||r.attemptAutoclose(w.SetValueWriter,this.id),this):this}removeValueWriter(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveValueWriter))){return this.readsValue&&!this.checkCanEditWithCounterpartAndSideEffects(this,this.readsValue,w.RemoveValueWriter,i)?this:(this.readsValue&&(this.readsValue=null,i==null||i.add(this,W.Updated)),i==null||i.attemptAutoclose(w.RemoveValueWriter,this.id),this)}initChildren(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"init-children"))){return this.initialized||this.startedInitialization?this:(this.startedInitialization=!0,this.initialData.defaultValue&&(this.defaultValue=Ie(this.initialData.defaultValue,this.project),this.defaultValue.setParent(this,null),this.defaultValue.initChildren(i)),this.initialData.dataType&&(this.dataType=Ie(this.initialData.dataType,this.project),this.dataType.setParent(this,null),this.dataType.initChildren(i)),uy.initReadsValue(this),this.outputs=this.initialData.outputs.map(r=>{const a=Ie(r,this.project);return a.setParent(this,null),a.initChildren(i),a}),this.initialData.throws&&(this.throws=Ie(this.initialData.throws,this.project),this.throws.setParent(this,null),this.throws.initChildren(i)),this.subscribeToDependencies(),this.afterAllChildrenInitialized(i),i==null||i.attemptAutoclose("init-children",this.id),this)}subscribe(){var i;return this.activeVersion=!0,(i=this.knownVersions)==null||i.forEach(r=>{r.version!==this.version&&(r.activeVersion=!1)}),this.project.subscribeInstance(this),this}unsubscribe(){return this.project.unsubscribeInstance(this),this}metaSync(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"meta-sync"))){const a=tn(this,i,r),c=en(this,a),e=this.toMeta();return this.x=a.x||e.x,this.y=a.y||e.y,super.baseMetaSync(a,this,r),a.deleted===!0&&!e.deleted?r==null||r.add(this,W.Removed):a.deleted===!1&&e.deleted?r==null||r.add(this,W.Added):c&&(r==null||r.add(this,W.Updated)),r==null||r.attemptAutoclose("meta-sync",this.id),this}async APILoad(i=Ke,...r){return await Fi.repository.APILoad(this.id,...r),this}async APICreate(i=Ke,...r){return await Fi.repository.APICreate(this.toShallowJSON(),...r),this}async APIUpdate(i=Ke,...r){return await Fi.repository.APIUpdate(this.toShallowJSON(),...r),this}async APIDelete(i=Ke,...r){return await Fi.repository.APIDelete(this.toShallowJSON(),...r),this}async APIClone(i=Ke,...r){return await Fi.repository.APIClone(this.id,...r),this}async APILoadVersion(i=Ke,r,...a){return await Fi.repository.APILoadVersion(this.id,r,...a)}removeFromParent(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveFromParent))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[removeFromParent] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveFromParent,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];return this.parent.removeBreakStatement(this),e.push(this.parent),i==null||i.attemptAutoclose(w.RemoveFromParent,this.id),{added:C(c),updated:C(r),removed:C(a),affected:C(e),self:this}}remove({ignoreUpstream:i}={ignoreUpstream:!1},r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveEntity))){var h,m,E;if(!this.checkCanDelete(this,r))return z.Logger.warn(`[remove] User is not allowed to delete or edit this ${this.type} entity with id: ${this.id}`),r==null||r.event({id:`${w.RemoveEntity}-${this.id}--${Me.ActionOwnerEntityNonDeletable}`,action:w.RemoveEntity,owner:this,errorReason:Me.ActionOwnerEntityNonDeletable,rootAction:((h=r==null?void 0:r.self)==null?void 0:h.id)===this.id&&(r==null?void 0:r.actionName)===w.RemoveEntity}),r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const a=[],c=[],e=[],f=[];if(r!=null&&r.hasRemoved(this.id))return r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};if(c.push(this),this.unsubscribe(),this.unsubscribeFromDependencies(),this.project.subscribeDeletedInstance(this),this.metaSync({deleted:!0},r),Object.values(this.detachedDependents).forEach(b=>{const{updated:A,removed:_,added:P}=b.entity.onDetachedDependencyRemoved(this,b.field,r);a.push(...A),c.push(..._),e.push(...P)}),this.readsValue&&(a.push(this.readsValue),this.readsValue.removeValueReader(this,r)),this.outputs.forEach(b=>{const{updated:A,removed:_}=b.remove({ignoreUpstream:!0},r);a.push(...A),c.push(..._)}),this.throws){const{updated:b,removed:A}=this.throws.remove({ignoreUpstream:!0},r);a.push(...b),c.push(...A)}if(this.dataType){const{updated:b,removed:A}=this.dataType.remove({ignoreUpstream:!0},r);a.push(...b),c.push(...A)}if(!i){const b=this.removeFromParent(r);e.push(...b.added),a.push(...b.updated),c.push(...b.removed),f.push(...b.affected),this.calledBy.forEach(A=>{a.push(A),A.removeCall(this,r)})}return r==null||r.add(this.parent,W.Affected),(m=this.parent)==null||m.breakStatements.forEach(b=>{b.id!==this.id&&(f.push(b),r==null||r.add(b,W.Affected))}),(E=this.parent)==null||E.continueStatements.forEach(b=>{b.id!==this.id&&(f.push(b),r==null||r.add(b,W.Affected))}),r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:C(e),updated:C(a),removed:C(c),affected:C(f),self:this}}restore({}={},i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RestoreEntity))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[restore] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RestoreEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];if(i!=null&&i.hasAdded(this.id))return i==null||i.attemptAutoclose(w.RestoreEntity,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(f=>{const{updated:h,removed:m,added:E}=f.entity.onDetachedDependencyRestored(this,f.field,i);a.push(...h),c.push(...m),r.push(...E)}),this.readsValue&&(a.push(this.readsValue),this.readsValue.addValueReader(this,i)),this.outputs.forEach(f=>{const{updated:h}=f.restore({},i);a.push(...h)}),this.throws){const{updated:f}=this.throws.restore({},i);a.push(...f)}if(this.dataType){const{updated:f}=this.dataType.restore({},i);a.push(...f)}return this.parent.addBreakStatement(this),this.calledBySuccess.forEach(f=>{a.push(f),f.addSuccessCall(this,i)}),this.calledByError.forEach(f=>{a.push(f),f.addErrorCall(this,i)}),this.calledByEntry.forEach(f=>{a.push(f),f.addCall(this,i)}),i==null||i.attemptAutoclose(w.RestoreEntity,this.id),{added:C(r),updated:C(a),removed:C(c),affected:C(e),self:this}}toFlat(i=new Set){return i.has(this.id)?[]:(i.add(this.id),[this,...this.outputs.flatMap(a=>a.toFlat(i)),...this.throws?this.throws.toFlat(i):[],...this.dataType?this.dataType.toFlat(i):[]])}toFlatIds(i=new Set){return i.has(this.id)?[]:(i.add(this.id),[this.id,...this.outputs.flatMap(a=>a.toFlatIds(i)),...this.throws?this.throws.toFlatIds(i):[],...this.dataType?this.dataType.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,editable:this.editable,deletable:this.deletable}}toJSON(i=new Set){var r,a,c,e,f;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,editable:this.editable,deletable:this.deletable,x:this.x,y:this.y,defaultValue:((r=this.defaultValue)==null?void 0:r.toJSON(i))||null,dataType:((a=this.dataType)==null?void 0:a.toJSON(i))||null,readsValue:((c=this.readsValue)==null?void 0:c.toReference())||null,outputs:this.outputs.map(h=>h.toJSON(i)),calledBySuccess:this.calledBySuccess.map(h=>h.toReference()),calledByError:this.calledByError.map(h=>h.toReference()),calledByEntry:this.calledByEntry.map(h=>h.toReference()),parent:((e=this.parent)==null?void 0:e.toReference())||null,throws:((f=this.throws)==null?void 0:f.toJSON(i))||null})}toJSONClone(i=at){var a,c,e,f,h,m,E,b,A,_;let r;return(a=i.seenEntityMaps)!=null&&a.has(this.id)?r=i.seenEntityMaps.get(this.id):(r=i.newId||dn(this,this.project,i.uuidStrategy),i.seenEntityMaps&&i.seenEntityMaps.set(this.id,r)),(c=i.seenEntities)!=null&&c.has(r)||(e=i.seenEntities)!=null&&e.has(this.id)?this.toReference({seenEntityMaps:i.seenEntityMaps}):((f=i.seenEntities)==null||f.add(r),(h=i.seenEntities)==null||h.add(this.id),{id:r,version:x.UUID.uuid(),createdAt:i.timestamp||B().toISOString(),previousVersion:null,author:this.author,deleted:this.deleted,type:this.type,editable:this.editable,deletable:this.deletable,x:this.x,y:this.y,defaultValue:((m=this.defaultValue)==null?void 0:m.toJSONClone({...i,newId:null}))||null,dataType:((E=this.dataType)==null?void 0:E.toJSONClone({...i,newId:null}))||null,readsValue:((b=this.readsValue)==null?void 0:b.toReference({seenEntityMaps:i.seenEntityMaps}))||null,outputs:this.outputs.map(P=>P.toJSONClone({...i,newId:null})),calledBySuccess:this.calledBySuccess.map(P=>P.toReference({seenEntityMaps:i.seenEntityMaps})),calledByError:this.calledByError.map(P=>P.toReference({seenEntityMaps:i.seenEntityMaps})),calledByEntry:this.calledByEntry.map(P=>P.toReference({seenEntityMaps:i.seenEntityMaps})),parent:((A=this.parent)==null?void 0:A.toReference({seenEntityMaps:i.seenEntityMaps}))||null,throws:((_=this.throws)==null?void 0:_.toJSONClone({...i,newId:null}))||null})}toReference(i=at){var a;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r+"--"+x.UUID.uuid()+"--ref",type:d.GenericReference,entityId:r,version:this.version,entityType:this.type}}toShallowJSON(i=at){var a,c,e,f,h,m;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r,version:this.version,createdAt:this.createdAt,previousVersion:this.previousVersion,author:this.author,deleted:this.deleted,type:this.type,editable:this.editable,deletable:this.deletable,x:this.x,y:this.y,defaultValue:((c=this.defaultValue)==null?void 0:c.toReference(i))||null,dataType:((e=this.dataType)==null?void 0:e.toReference(i))||null,readsValue:((f=this.readsValue)==null?void 0:f.toReference(i))||null,outputs:this.outputs.map(E=>E.toReference(i)),calledBySuccess:this.calledBySuccess.map(E=>E.toReference(i)),calledByError:this.calledByError.map(E=>E.toReference(i)),calledByEntry:this.calledByEntry.map(E=>E.toReference(i)),throws:((h=this.throws)==null?void 0:h.toReference(i))||null,parent:((m=this.parent)==null?void 0:m.toReference(i))||null}}toFlatJSON(i=new Set){var a,c;return i.has(this.id)?[]:(i.add(this.id),[this.toShallowJSON(),...((a=this.defaultValue)==null?void 0:a.toFlatJSON(i))||[],...((c=this.dataType)==null?void 0:c.toFlatJSON(i))||[],...this.outputs.flatMap(e=>e.toFlatJSON(i)),...this.throws?this.throws.toFlatJSON(i):[]])}toGenerationTarget(i=at){var a;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r,type:this.type,calledByEntry:this.calledByEntry.map(c=>c.id),calledByError:this.calledByError.map(c=>c.id),calledBySuccess:this.calledBySuccess.map(c=>c.id),parent:this.parent.id}}toFlatGenerationTarget(i=new Set){var a,c;return i.has(this.id)?[]:(i.add(this.id),[this.toGenerationTarget(),...((a=this.defaultValue)==null?void 0:a.toFlatGenerationTarget(i))||[],...((c=this.dataType)==null?void 0:c.toFlatGenerationTarget(i))||[],...this.outputs.flatMap(e=>e.toFlatGenerationTarget(i)),...this.throws?this.throws.toFlatGenerationTarget(i):[]])}clearErrors(){var i,r,a;return this.errors=[],(i=this.dataType)==null||i.clearErrors(),(r=this.defaultValue)==null||r.clearErrors(),this.outputs.forEach(c=>c.clearErrors()),(a=this.throws)==null||a.clearErrors(),this}validate(){return this.errors=P4e(this),{success:!0}}async validateAsync(i={}){const r=z.YieldTracker.from(i);return this.errors=await V4e(this,{tracker:r}),{success:!0}}getErrors(){var r,a;return[...this.errors,...((r=this.defaultValue)==null?void 0:r.getErrors())||[],...((a=this.dataType)==null?void 0:a.getErrors())||[],...this.outputs.flatMap(c=>c.getErrors()),...this.throws?this.throws.getErrors():[]]}async getErrorsAsync(i={}){const r=z.YieldTracker.from(i),a=[...this.errors];if(await r.tick(),this.defaultValue){const c=await this.defaultValue.getErrorsAsync({tracker:r});a.push(...c)}if(this.dataType){const c=await this.dataType.getErrorsAsync({tracker:r});a.push(...c)}for(const c of this.outputs){const e=await c.getErrorsAsync({tracker:r});a.push(...e)}if(this.throws){const c=await this.throws.getErrorsAsync({tracker:r});a.push(...c)}return a}getShallowErrors(){return this.errors}getDefaultValue(){return this.defaultValue||null}setDefaultValue(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"set-default-value"))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[setDefaultValue] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("set-default-value",this.id),this;const a=this.defaultValue;if((a==null?void 0:a.id)!==(i==null?void 0:i.id)){if(a==null||a.remove({ignoreUpstream:!0},r),this.defaultValue=i,this.defaultValue){const c=this.readsValue;this.removeValueWriter(r),c==null||c.removeValueReader(this,r)}r==null||r.add(this,W.Affected)}return r==null||r.attemptAutoclose("set-default-value",this.id),this}clone(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.CloneEntity)),r=null,a=null,c=!0){var V,G,M;const e=Fr(r,this),f=this.toJSON(),h=a||x.UUID.uuid();f.outputs=[];const m=h.split("-id"),E=m[m.length-1||0]||h;f.id=h,f.version=x.UUID.uuid(),f.createdAt=(i==null?void 0:i.timestamp)||B().toISOString(),f.author=(i==null?void 0:i.author)||"1",f.previousVersion=null,f.deleted=!1,f.deletable=!0,f.editable=!0;const b=lr(f,e);r?b.setParent(r,i):b.setParent(this.parent,null),c&&b.subscribe(),b.initChildren(i),i==null||i.add(b,W.Added);const A=(V=this.dataType)==null?void 0:V.clone(i,b,x.UUID.uuid(),c);b.setDataType(A||null,i);const _=(G=this.defaultValue)==null?void 0:G.clone(i,b,x.UUID.uuid(),c);b.setDefaultValue(_||null,i);const P=(M=this.outputs)==null?void 0:M.map((k,K)=>k.clone(i,b,E+"-return-declaration-"+K+"-id",c));return b.outputs=P,this.throws&&(b.throws=this.throws.clone(i,b,E+"-throws-id",c)),i||b.captureVersion(),i==null||i.attemptAutoclose(w.CloneEntity,this.id),b}getMasterInputWithValueWriterFromAllInstances(i){return C([...this.outputs,...this.parent.breakStatements.filter(c=>c.id!==this.id).flatMap(c=>c.outputs),...this.parent.continueStatements.flatMap(c=>c.outputs)]).find(c=>oe(c,this.project)===oe(i,this.project)&&!!c.readsValue)||i}removeUnrecognizedInputs(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveUnrecognizedInputs))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[removeUnrecognizedInputs] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveUnrecognizedInputs,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[],f=this.getDataType(null);return f&&!f.isObject()?[...this.outputs].forEach(m=>{const E=m.remove({ignoreUpstream:!1},i);c.push(...E.removed),r.push(...E.updated)}):f&&f.hasStrictObjectStructure()&&[...this.outputs].forEach(m=>{if(!m.declaration){const b=m.remove({ignoreUpstream:!1},i);c.push(...b.removed),r.push(...b.updated);return}if(![...(f==null?void 0:f.entity).allProperties].find(b=>m.declaration===b)){const b=m.remove({ignoreUpstream:!1},i);c.push(...b.removed),r.push(...b.updated)}}),this.outputs.filter((m,E)=>{const b=this.outputs.findIndex(_=>_.declaration===m.declaration&&_!==m);if(b===-1)return!1;const A=this.outputs[b];return B(A==null?void 0:A.createdAt).isSame(B(m.createdAt))?E>b:!!B(A==null?void 0:A.createdAt).isAfter(m.createdAt)}).forEach(m=>{const E=m.remove({ignoreUpstream:!1},i);c.push(...E.removed),r.push(...E.updated)}),i==null||i.attemptAutoclose(w.RemoveUnrecognizedInputs,this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}syncInputs(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"sync-break-statement-inputs"))){const r=[],a=[],c=[],e=[],f=this.getDataType(i);if(f)if(f.entity){if(f.isObject()){const b=[...f.entity.properties];this.outputs.filter(P=>!P.declaration||!b.find(V=>{var G;return V.id===((G=P.declaration)==null?void 0:G.id)})).forEach(P=>{const V=b.find(G=>oe(G,this.project)===oe(P,this.project));V&&P.setDeclaration(V,i)}),b.filter(P=>!this.outputs.find(V=>{var G;return((G=V.declaration)==null?void 0:G.id)===P.id})).forEach(P=>{const V={dataType:null,id:x.UUID.uuid(),version:x.UUID.uuid(),createdAt:(i==null?void 0:i.timestamp)||B().toISOString(),author:x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.InputMap,parentRelationType:null,parent:this.toReference(),name:null,description:null,codeName:null,declaration:P,defaultValue:null,index:P.index,readsValue:null},G=Ie(V,this.project);return G.hydrateAncestors(),i==null||i.add(G,W.Added),G.setParent(this,i),G.initChildren(i),this.addOutput(G,i),i||G.captureVersion(),G})}}else return i==null||i.attemptAutoclose("sync-break-statement-inputs",this.id),{added:[],updated:[],removed:[],affected:[],self:this};else return i==null||i.attemptAutoclose("sync-break-statement-inputs",this.id),{added:[],updated:[],removed:[],affected:[],self:this};const{updated:h,added:m,removed:E}=this.removeUnrecognizedInputs(i);return a.push(...h),r.push(...m),c.push(...E),this.outputs.forEach(b=>{const{updated:A,added:_,removed:P}=b.afterAllChildrenInitialized(i);a.push(...A),r.push(..._),c.push(...P)}),this.outputs.sort((b,A)=>b.index-A.index),i==null||i.attemptAutoclose("sync-break-statement-inputs",this.id),{added:C(r),updated:C(a),removed:C(c),affected:C(e),self:this}}setDataType(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetDataType))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[setDataType] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.SetDataType,this.id),this;const a=this.dataType;return(a==null?void 0:a.id)!==(i==null?void 0:i.id)&&(a==null||a.remove({ignoreUpstream:!0},r),this.dataType=i,this.subscribeToDependencies(),r==null||r.add(this,W.Affected)),r==null||r.attemptAutoclose(w.SetDataType,this.id),this}removeDataType(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveDataType))){return this.checkCanEdit(this,i)?(this.dataType&&(this.dataType.remove({ignoreUpstream:!0},i),i==null||i.add(this,W.Affected),this.dataType=null),i==null||i.attemptAutoclose(w.RemoveDataType,this.id),this):(z.Logger.warn(`[removeDataType] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveDataType,this.id),this)}getDataType(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"get-data-type"))){if((!this.dataType||this.dataType.inferred)&&this.project.initialized,this.dataType)return i==null||i.attemptAutoclose("get-data-type",this.id),this.dataType;const r=this.parent.getDataType(i);return r?(i==null||i.attemptAutoclose("get-data-type",this.id),r):(i==null||i.attemptAutoclose("get-data-type",this.id),null)}};R(Fi,"repository",{APICreate:async(i,...r)=>i,APIUpdate:async(i,...r)=>i,APIDelete:async(i,...r)=>i,APIClone:async(i,...r)=>{},APILoad:async(i,...r)=>null,APILoadVersion:async(i,r,...a)=>null}),R(Fi,"type",d.BreakStatement),R(Fi,"USER_MANAGED_PARENT_TYPES",[d.Loop]),R(Fi,"PARENT_TYPES",[...Fi.USER_MANAGED_PARENT_TYPES]),R(Fi,"MUTABLE_BASE_PROPERTIES",[]),R(Fi,"INMUTABLE_BASE_PROPERTIES",["id","type","version","createdAt","author","previousVersion"]),R(Fi,"BASE_PROPERTIES",[...Fi.MUTABLE_BASE_PROPERTIES,...Fi.INMUTABLE_BASE_PROPERTIES]),R(Fi,"MUTABLE_META_PROPERTIES",["x","y"]),R(Fi,"INMUTABLE_META_PROPERTIES",[...Fi.INMUTABLE_BASE_PROPERTIES]),R(Fi,"META_PROPERTIES",[...Fi.MUTABLE_META_PROPERTIES,...Fi.INMUTABLE_META_PROPERTIES]),R(Fi,"MUTABLE_UPSTREAM_PROPERTIES",["calledBySuccess","calledByError","calledByEntry","readsValue"]),R(Fi,"INMUTABLE_UPSTREAM_PROPERTIES",["parent"]),R(Fi,"UPSTREAM_PROPERTIES",[...Fi.MUTABLE_UPSTREAM_PROPERTIES,...Fi.INMUTABLE_UPSTREAM_PROPERTIES]),R(Fi,"MUTABLE_DOWNSTREAM_PROPERTIES",["outputs","throws"]),R(Fi,"INMUTABLE_DOWNSTREAM_PROPERTIES",["dataType","defaultValue"]),R(Fi,"DOWNSTREAM_PROPERTIES",[...Fi.MUTABLE_DOWNSTREAM_PROPERTIES,...Fi.INMUTABLE_DOWNSTREAM_PROPERTIES]),R(Fi,"PROPERTIES",[...Fi.META_PROPERTIES,...Fi.UPSTREAM_PROPERTIES,...Fi.DOWNSTREAM_PROPERTIES]);let Gp=Fi;async function x4e(s,p={}){var c;const i=z.YieldTracker.from(p),r=[...Rn(s),...Xa(s)];await i.tick();const a=qt(s.errors,r);for(const e of s.outputs)await e.validateAsync({tracker:i});return await((c=s.throws)==null?void 0:c.validateAsync({tracker:i})),a}function $4e(s){var i;s.outputs.forEach(r=>r.validate()),(i=s.throws)==null||i.validate();const p=[...Rn(s),...Xa(s)];return qt(s.errors,p)}const sCi=Object.freeze(Object.defineProperty({__proto__:null,validate:$4e,validateAsync:x4e},Symbol.toStringTag,{value:"Module"}));var L4e=(s=>(s.Parent="continue-statement-parent-field",s.DataTypeEntity="continue-statement-data-type-entity-field",s.DataType="continue-statement-data-type-field",s.ParentDataType="continue-statement-parent-data-type-field",s.ParentDataTypeEntity="continue-statement-parent-data-type-entity-field",s))(L4e||{});const Ki=class Ki extends un{constructor(i,r){super(i);R(this,"initialData");R(this,"id");R(this,"x");R(this,"y");R(this,"type",d.ContinueStatement);R(this,"outputs",[]);R(this,"readsValue",null);R(this,"dataType",null);R(this,"defaultValue",null);R(this,"calledBySuccess",[]);R(this,"calledByError",[]);R(this,"calledByEntry",[]);R(this,"throws",null);R(this,"project");R(this,"errors",[]);R(this,"parent");R(this,"detachedDependents",{});R(this,"knownVersions",null);R(this,"activeVersion",!1);R(this,"initialized",!1);R(this,"startedInitialization",!1);R(this,"suggestion",!1);R(this,"_codeNativeValueValidation",null);this.initialData=i,this.project=r,this.id=i.id,this.x=i.x,this.y=i.y}static new(i=null){return{id:x.UUID.uuid(),version:x.UUID.uuid(),createdAt:(i==null?void 0:i.timestamp)||B().toISOString(),author:(i==null?void 0:i.author)||x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.ContinueStatement,outputs:[],defaultValue:null,dataType:null,readsValue:null,throws:null,parent:null,calledByEntry:[],calledBySuccess:[],calledByError:[],x:0,y:0}}static fromGenerationTarget(i,r,a){const c=a===void 0?r.addChangeSet(new S(r,x.sessionAuthor,B().toISOString(),r,!0,w.CreateFromGenerationTarget)):a,e=te(i.parent),f=r.get(e),h=(i.calledByEntry||[]).map(P=>{const V=te(P);return r.get(V)}),m=(i.calledBySuccess||[]).map(P=>{const V=te(P);return r.get(V)}),E=(i.calledByError||[]).map(P=>{const V=te(P);return r.get(V)});let b=null;if(i.readsValue){const P=te(i.readsValue);b=r.get(P)}const A={id:i.id,version:x.UUID.uuid(),createdAt:(c==null?void 0:c.timestamp)||B().toISOString(),author:(c==null?void 0:c.author)||x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.ContinueStatement,x:0,y:0,outputs:[],defaultValue:null,dataType:null,readsValue:b?b.toReference():null,calledByEntry:h.map(P=>P.toReference()),calledBySuccess:m.map(P=>P.toReference()),calledByError:E.map(P=>P.toReference()),throws:null,parent:f.toReference()},_=Ie(A,r);return _.hydrateAncestors(),_.setParent(f,c),_.addSelfToProject(c),c==null||c.add(_,W.Added),_.initChildren(c),c||_.captureVersion(),_}static validateGenerationTarget(i,r){let a=JSON.parse(JSON.stringify(i));const c=[],e=[],f=Bn(a,{parent:{list:!1,types:[d.Loop]}},r);c.push(...f.explanations),a=f.modifiedData;const h=Xr(a);return e.push(...f.errors,...h.errors),c.push(...h.explanations),{errors:e,explanations:c,modifiedData:a}}get codeNativeValueValidation(){return this._codeNativeValueValidation||null}validateGeneratedUpdate(i){const r=[],a=[];let c=JSON.parse(JSON.stringify(i));const e=dy(c,this);return c=e.modifiedData,r.push(...e.errors),i.parent&&r.push(new we({id:`${this.id}--${Te.InvalidParentUpdate}`,code:Te.InvalidParentUpdate,severity:ve.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.
|
|
196
|
+
Specifically for break statements the parent needs to always be the 'loop' entity that contains it.`})),{errors:r,explanations:a,modifiedData:i}}subscribeDependents(i){return i.forEach(r=>{this.detachedDependents[r.entity.id]||(this.detachedDependents[r.entity.id]=r)}),this}unsubscribeDependents(i){return i.forEach(r=>{this.detachedDependents[r.entity.id]&&delete this.detachedDependents[r.entity.id]}),this}syncDependents(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"sync-dependents"))){const r=[],a=[],c=[],e=[];return Object.values(this.detachedDependents).forEach(f=>{const h=f.entity.afterAllChildrenInitialized(i);r.push(...h.updated),a.push(...h.added),c.push(...h.removed),e.push(...h.affected)}),i==null||i.attemptAutoclose("sync-dependents",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}onDetachedDependencyRemoved(i,r,a){const c=[],e=[],f=[],h=[];if(r==="break-statement-parent-field"){const{updated:m,added:E,removed:b}=this.remove({ignoreUpstream:!1},a);c.push(...m),e.push(...E),f.push(...b)}if(r==="break-statement-parent-data-type-field"){const{updated:m,added:E,removed:b}=this.afterAllChildrenInitialized(a);c.push(...m),e.push(...E),f.push(...b)}if(r==="break-statement-parent-data-type-entity-field"){const{updated:m,added:E,removed:b}=this.afterAllChildrenInitialized(a);c.push(...m),e.push(...E),f.push(...b)}return{updated:C(c),added:C(e),removed:C(f),affected:C(h),self:this}}onDetachedDependencyRestored(i,r,a){const c=[],e=[],f=[],h=[];if(r==="break-statement-parent-field"){const{updated:m,added:E,removed:b}=this.restore({},a);c.push(...m),e.push(...E),f.push(...b)}if(r==="break-statement-parent-data-type-field"){const{updated:m,added:E,removed:b}=this.afterAllChildrenInitialized(a);c.push(...m),e.push(...E),f.push(...b)}if(r==="break-statement-parent-data-type-entity-field"){const{updated:m,added:E,removed:b}=this.afterAllChildrenInitialized(a);c.push(...m),e.push(...E),f.push(...b)}return{updated:C(c),added:C(e),removed:C(f),affected:C(h),self:this}}unsubscribeFromDependencies(){var i,r,a,c,e,f,h,m,E,b,A,_;return this.parent.unsubscribeDependents([{entity:this,field:"break-statement-parent-field"}]),(a=(r=(i=this.dataType)==null?void 0:i.entity)==null?void 0:r.unsubscribeDependents)==null||a.call(r,[{entity:this,field:"break-statement-data-type-entity-field"}]),(e=(c=this.dataType)==null?void 0:c.unsubscribeDependents)==null||e.call(c,[{entity:this,field:"break-statement-data-type-field"}]),(E=(m=(h=(f=this.parent)==null?void 0:f.dataType)==null?void 0:h.entity)==null?void 0:m.unsubscribeDependents)==null||E.call(m,[{entity:this,field:"break-statement-parent-data-type-entity-field"}]),(_=(A=(b=this.parent)==null?void 0:b.dataType)==null?void 0:A.unsubscribeDependents)==null||_.call(A,[{entity:this,field:"break-statement-parent-data-type-field"}]),this}subscribeToDependencies(){var i,r,a,c,e,f,h,m,E,b,A,_,P;return(i=this.parent)==null||i.subscribeDependents([{entity:this,field:"break-statement-parent-field"}]),(c=(a=(r=this.dataType)==null?void 0:r.entity)==null?void 0:a.subscribeDependents)==null||c.call(a,[{entity:this,field:"break-statement-data-type-entity-field"}]),(f=(e=this.dataType)==null?void 0:e.subscribeDependents)==null||f.call(e,[{entity:this,field:"break-statement-data-type-field"}]),(b=(E=(m=(h=this.parent)==null?void 0:h.dataType)==null?void 0:m.entity)==null?void 0:E.subscribeDependents)==null||b.call(E,[{entity:this,field:"break-statement-parent-data-type-entity-field"}]),(P=(_=(A=this.parent)==null?void 0:A.dataType)==null?void 0:_.subscribeDependents)==null||P.call(_,[{entity:this,field:"break-statement-parent-data-type-field"}]),this}increaseVersion(i){var r;if(this.project.diggestedBuiltInBaseEntitiesIds.has(this.id))return this;if(i&&!B(i).isValid())throw new Error(`The shared timestamp '${i}' is not a valid ISO 8601 date string.`);if(i&&B(i).isSame(B(this.createdAt)))return this;if(!((r=this.knownVersions)!=null&&r.has(this.version))&&this.project.initialized)throw new Error(`The current ${this.type} ${this.id} version '${this.version}' is not captured in the 'knownVersions' map. Capture the current version before increasing it to avoid losing data.`);if(!this.activeVersion)throw new Error(`Only active versions can be increased. Entity with id '${this.id}' and version '${this.version}' is not active.`);return this.previousVersion=this.version,this.version=x.UUID.uuid(),this.createdAt=B(i).toISOString()||B().toISOString(),this}captureVersion(){var r;const i=((r=this.knownVersions)==null?void 0:r.get(this.version))||new Fi(this,this.project);if(!this.activeVersion)throw new Error(`Only active versions can be captured. Entity of type ${this.type} with id '${this.id}' and version '${this.version}' is not active.`);if(this.version!==i.version)throw new Error(`Captured ${this.type} with id '${this.id}', version '${i.version}' does not match current entity version '${this.version}'.`);return this.knownVersions=this.knownVersions?this.knownVersions.set(this.version,i):new Map().set(this.version,i),this.apply(i),this}snapshot(){const i=new Fi(this,this.project);return this.apply(i)}apply(i){const r=this.toMeta();return i.metaSync(r,null),i.outputs=[...this.outputs],i.readsValue=this.readsValue,i.defaultValue=this.defaultValue,i.dataType=this.dataType,i.throws=this.throws,i.calledBySuccess=[...this.calledBySuccess],i.calledByError=[...this.calledByError],i.calledByEntry=[...this.calledByEntry],i.parent=this.parent,i}recursiveCaptureUpstreamVersions(i){const r=[],a=[],c=[],e=[];if(this.parent){this.parent.increaseVersion(i);const f=this.parent.recursiveCaptureUpstreamVersions(i);r.push(this.parent,...f.updated),a.push(...f.added),c.push(...f.removed)}return{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}async restoreVersion(i,r){var m;const a=[],c=[],e=[],f=[];if(this.version===i&&(r!=null&&r.skipIfSameVersion))return{updated:C(a),added:C(c),removed:C(e),affected:C(f),self:this};if(!this.knownVersions){const E=new Map;for(const[b,A]of this.knownVersions||new Map){if(E.set(b,A),A.activeVersion=!1,A.knownVersions)for(const[_,P]of A.knownVersions)E.set(_,P);A.knownVersions=null}}let h=(m=this.knownVersions)==null?void 0:m.get(i);if(!h){const E=await this.APILoadVersion({},i);if(!E)throw new Error(`Version with id '${i}' for entity with id '${this.id}' not found.`);h=new Fi(E,this.project)}return this.metaSync(h.toShallowJSON(),null),this.previousVersion=h.previousVersion,this.version=h.version,this.createdAt=h.createdAt,this.author=h.author,this.deleted=h.deleted,this.outputs=[...h.outputs],this.readsValue=h.readsValue,this.defaultValue=h.defaultValue,this.dataType=h.dataType,this.throws=h.throws,this.calledBySuccess=[...h.calledBySuccess],this.calledByError=[...h.calledByError],this.calledByEntry=[...h.calledByEntry],this.parent=h.parent,{updated:C(a),added:C(c),removed:C(e),affected:C(f),self:this}}updateWithShallowTransfer(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.UpdateWithShallowTransfer))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[updateWithShallowTransfer] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),this;if(this.metaSync(i,r),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 a=te(i.parent),c=this.project.get(a),e=this.parent;if(e&&e.id!==(c==null?void 0:c.id)&&this.removeFromParent(r),c)this.setParent(c,r),this.addSelfToProject(r);else throw r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),new Error(`${this.type} with id '${this.id}' has a 'parent' reference '${a}' that isn't found in the project`)}else throw r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),new Error(`${this.type} with id '${this.id}' must have a 'parent'`);if(i.readsValue){const a=te(i.readsValue),c=this.project.get(a),e=this.readsValue;e&&e.id!==(c==null?void 0:c.id)&&this.removeValueWriter(r),c&&this.setValueWriter(c,r)}else this.removeValueWriter(r);if(i.calledByEntry.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addEntryCaller(e,r),e.addCall(this,r))}),[...this.calledByEntry].forEach(a=>{i.calledByEntry.find(e=>te(e)===a.id)||(this.removeCaller(a,r),a.removeCall(this,r))}),i.calledBySuccess.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addSuccessCaller(e,r),e.addSuccessCall(this,r))}),[...this.calledBySuccess].forEach(a=>{i.calledBySuccess.find(e=>te(e)===a.id)||(this.removeCaller(a,r),a.removeCall(this,r))}),i.calledByError.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addErrorCaller(e,r),e.addErrorCall(this,r))}),[...this.calledByError].forEach(a=>{i.calledByError.find(e=>te(e)===a.id)||(this.removeCaller(a,r),a.removeCall(this,r))}),i.outputs.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addOutput(e,r),e.setParent(this,r))}),[...this.outputs].forEach(a=>{i.outputs.find(e=>te(e)===a.id)||(this.removeOutput(a,r),a.removeFromParent(r))}),i.dataType){const a=te(i.dataType),c=this.project.get(a);c&&this.setDataType(c,r)}else this.setDataType(null,r);if(i.defaultValue){const a=te(i.defaultValue),c=this.project.get(a);c&&this.setDefaultValue(c,r)}else this.setDefaultValue(null,r);return this.captureVersion(),this.subscribeToDependencies(),r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),this}updateWithGenerationTarget(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.UpdateWithGenerationTarget))){var a,c,e;if(!this.checkCanEdit(this,r))return z.Logger.warn(`[updateWithGenerationTarget] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),this;if(this.metaSync(i,r),i.parent){const f=te(i.parent),h=this.project.get(f),m=this.parent;if(m&&m.id!==(h==null?void 0:h.id)&&this.removeFromParent(r),h)this.setParent(h,r),this.addSelfToProject(r);else throw r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),new Error(`${this.type} with id '${this.id}' has a 'parent' reference '${f}' that isn't found in the project`)}if(i.readsValue){const f=te(i.readsValue),h=this.project.get(f);if(!h)throw new Error(`${this.type} with id '${this.id}' has a 'readsValue' reference '${f}' that isn't found in the project`);const m=this.readsValue;m&&m.id!==(h==null?void 0:h.id)&&this.removeValueWriter(r),h&&this.setValueWriter(h,r)}else i.readsValue===null&&this.removeValueWriter(r);return(a=i.calledByEntry)==null||a.forEach(f=>{const h=te(f),m=this.project.get(h);if(m)this.addEntryCaller(m,r),m.addCall(this,r);else throw new Error(`${this.type} with id '${this.id}' has a 'calledByEntry' reference '${h}' that isn't found in the project`)}),i.calledByEntry&&[...this.calledByEntry].forEach(f=>{var m;((m=i.calledByEntry)==null?void 0:m.find(E=>te(E)===f.id))||(this.removeCaller(f,r),f.removeCall(this,r))}),(c=i.calledBySuccess)==null||c.forEach(f=>{const h=te(f),m=this.project.get(h);if(m)this.addSuccessCaller(m,r),m.addSuccessCall(this,r);else throw new Error(`${this.type} with id '${this.id}' has a 'calledBySuccess' reference '${h}' that isn't found in the project`)}),i.calledBySuccess&&[...this.calledBySuccess].forEach(f=>{var m;((m=i.calledBySuccess)==null?void 0:m.find(E=>te(E)===f.id))||(this.removeCaller(f,r),f.removeCall(this,r))}),(e=i.calledByError)==null||e.forEach(f=>{const h=te(f),m=this.project.get(h);if(m)this.addErrorCaller(m,r),m.addErrorCall(this,r);else throw new Error(`${this.type} with id '${this.id}' has a 'calledByError' reference '${h}' that isn't found in the project`)}),i.calledByError&&[...this.calledByError].forEach(f=>{var m;((m=i.calledByError)==null?void 0:m.find(E=>te(E)===f.id))||(this.removeCaller(f,r),f.removeCall(this,r))}),this.captureVersion(),this.subscribeToDependencies(),r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),this}hydrateAncestors(){const i=[],r=[],a=[],c=[];if(this.initialData.parent){const e=te(this.initialData.parent),f=this.project.get(e);if(f)this.setParent(f,null),i.push(f);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.readsValue){const e=te(this.initialData.readsValue),f=this.project.get(e);f&&(this.setValueWriter(f,null),i.push(f))}return this.initialData.calledByEntry.forEach(e=>{const f=te(e),h=this.project.get(f);h&&(this.addEntryCaller(h,null),i.push(h))}),this.initialData.calledBySuccess.forEach(e=>{const f=te(e),h=this.project.get(f);h&&(this.addSuccessCaller(h,null),i.push(h))}),this.initialData.calledByError.forEach(e=>{const f=te(e),h=this.project.get(f);h&&(this.addErrorCaller(h,null),i.push(h))}),{updated:C(i),added:C(r),removed:C(a),affected:C(c),self:this}}afterAllChildrenInitialized(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AfterAllChildrenInitialized))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[afterAllChildrenInitialized] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.AfterAllChildrenInitialized,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];if(this.initialized=!0,!this.dataType||this.dataType.inferred,this.readsValue&&this.defaultValue&&(this.project.diggestedBuiltInBaseEntitiesIds.has(this.defaultValue.id)||this.defaultValue.remove({ignoreUpstream:!1},i),this.setDefaultValue(null,i)),this.defaultValue&&!this.readsValue&&!this.project.diggestedBuiltInBaseEntitiesIds.has(this.id)&&this.project.diggestedBuiltInBaseEntitiesIds.has(this.defaultValue.id)){const b=this.defaultValue.clone(i,this);this.setDefaultValue(b,i)}const{added:f,updated:h,removed:m,affected:E}=this.syncInputs(i);return a.push(...f),r.push(...h),c.push(...m),e.push(...E),this.parent.syncTerminationStatements(i),this.outputs.sort((b,A)=>{var _,P;return(b.index??((_=b.declaration)==null?void 0:_.index))-(A.index??((P=A.declaration)==null?void 0:P.index))}),i==null||i.attemptAutoclose(w.AfterAllChildrenInitialized,this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}addSelfToProject(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"add-self-to-project"))){var f,h;const r=[this],a=[],c=[],e=[];return this.readsValue&&(this.readsValue.addValueReader(this,i),r.push(this.readsValue)),this.calledByEntry.forEach(m=>{m.addCall(this,i),r.push(m)}),this.calledBySuccess.forEach(m=>{m.addSuccessCall(this,i),r.push(m)}),this.calledByError.forEach(m=>{m.addErrorCall(this,i),r.push(m)}),this.parent.addBreakStatement(this),e.push(this.parent),i==null||i.add(this.parent,W.Affected),(f=this.parent)==null||f.breakStatements.forEach(m=>{m.id!==this.id&&(e.push(m),i==null||i.add(m,W.Affected))}),(h=this.parent)==null||h.continueStatements.forEach(m=>{m.id!==this.id&&(e.push(m),i==null||i.add(m,W.Affected))}),this.subscribe(),this.subscribeToDependencies(),i==null||i.attemptAutoclose("add-self-to-project",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}get calledBy(){return[...this.calledByEntry,...this.calledBySuccess,...this.calledByError]}addSuccessCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddSuccessCaller)),a=!1){var c;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddSuccessCaller,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddSuccessCaller}-${this.id}--${Me.CannotSuccessCallItself}`,action:w.AddSuccessCaller,owner:this,errorReason:Me.CannotSuccessCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddSuccessCaller})),this.calledBySuccess.find(e=>e.id===i.id)||(this.calledBySuccess.push(i),r==null||r.add(this,W.Updated),a&&bt(this,r)),r==null||r.attemptAutoclose(w.AddSuccessCaller,this.id),this):this}addErrorCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddErrorCaller)),a=!1){var c;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddErrorCaller,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddErrorCaller}-${this.id}--${Me.CannotErrorCallItself}`,action:w.AddErrorCaller,owner:this,errorReason:Me.CannotErrorCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddErrorCaller})),this.calledByError.find(e=>e.id===i.id)||(this.calledByError.push(i),r==null||r.add(this,W.Updated),a&&bt(this,r)),r==null||r.attemptAutoclose(w.AddErrorCaller,this.id),this):this}addEntryCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddEntryCaller)),a=!1){var c;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddEntryCaller,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddEntryCaller}-${this.id}--${Me.CannotEntryCallItself}`,action:w.AddEntryCaller,owner:this,errorReason:Me.CannotEntryCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddEntryCaller})),this.calledByEntry.find(e=>e.id===i.id)||(this.calledByEntry.push(i),r==null||r.add(this,W.Updated),a&&bt(this,r)),r==null||r.attemptAutoclose(w.AddEntryCaller,this.id),this):this}removeCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"remove-caller")),a=!1){return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.RemoveCaller,r)?(this.calledBySuccess=this.calledBySuccess.filter(c=>c.id!==i.id?!0:(r==null||r.add(this,W.Updated),r==null||r.add(c,W.Affected),!1)),this.calledByError=this.calledByError.filter(c=>c.id!==i.id?!0:(r==null||r.add(this,W.Updated),r==null||r.add(c,W.Affected),!1)),this.calledByEntry=this.calledByEntry.filter(c=>c.id!==i.id?!0:(r==null||r.add(this,W.Updated),r==null||r.add(c,W.Affected),!1)),a&&bt(this,r),r==null||r.attemptAutoclose(w.RemoveCaller,this.id),this):this}setThrows(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"set-throws"))){var a;if(!this.checkCanEdit(this,r))return z.Logger.warn(`[setThrows] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("set-throws",this.id),this;if(i!==null&&i.parentRelationType!==dd.Error)throw new Error("The 'throws' InputMap must have a parentRelationType of 'Error'.");return((a=this.throws)==null?void 0:a.id)!==(i==null?void 0:i.id)&&(this.throws=i,r==null||r.add(this,W.Updated)),r==null||r.attemptAutoclose("set-throws",this.id),this}addOutput(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"add-output"))){return this.checkCanEdit(this,r)?this.outputs.includes(i)?(r==null||r.attemptAutoclose("add-output",this.id),this):(this.outputs.push(i),r==null||r.add(this,W.Affected),r==null||r.attemptAutoclose("add-output",this.id),this):(z.Logger.warn(`[addOutput] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("add-output",this.id),this)}removeOutput(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"remove-output"))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[removeOutput] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("remove-output",this.id),this;const a=this.outputs.findIndex(c=>c.id===i.id);return a>-1&&(this.outputs.splice(a,1),r&&(r==null||r.add(this,W.Affected))),r==null||r.attemptAutoclose("remove-output",this.id),this}setParent(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetParent))){var a;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.SetParent,r)?(((a=this.parent)==null?void 0:a.id)!==(i==null?void 0:i.id)&&(this.parent=i,r&&(r==null||r.add(this,W.Updated))),r==null||r.attemptAutoclose(w.SetParent,this.id),this):this}setValueWriter(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetValueWriter))){var a,c,e;return this.checkCanEditFromScopeOwnerWithSideEffects(this,w.SetValueWriter,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.SetValueWriter}-${this.id}--${Me.CannotValueWriteItself}`,action:w.SetValueWriter,owner:this,errorReason:Me.CannotValueWriteItself,rootAction:((a=r==null?void 0:r.self)==null?void 0:a.id)===this.id&&(r==null?void 0:r.actionName)===w.SetValueWriter})),((c=this.readsValue)==null?void 0:c.id)!==(i==null?void 0:i.id)&&(this.readsValue=i,this.readsValue&&((e=this.defaultValue)==null||e.remove({ignoreUpstream:!1},r)),r==null||r.add(this,W.Updated)),r==null||r.attemptAutoclose(w.SetValueWriter,this.id),this):this}removeValueWriter(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveValueWriter))){return this.readsValue&&!this.checkCanEditFromScopeOwnerWithSideEffects(this,w.RemoveValueWriter,i)?this:(this.readsValue&&(this.readsValue=null,i==null||i.add(this,W.Updated)),i==null||i.attemptAutoclose(w.RemoveValueWriter,this.id),this)}initChildren(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"init-children"))){return this.initialized||this.startedInitialization?this:(this.startedInitialization=!0,this.initialData.defaultValue&&(this.defaultValue=Ie(this.initialData.defaultValue,this.project),this.defaultValue.setParent(this,null),this.defaultValue.initChildren(i)),this.initialData.dataType&&(this.dataType=Ie(this.initialData.dataType,this.project),this.dataType.setParent(this,null),this.dataType.initChildren(i)),uy.initReadsValue(this),this.outputs=this.initialData.outputs.map(r=>{const a=Ie(r,this.project);return a.setParent(this,null),a.initChildren(i),a}),this.initialData.throws&&(this.throws=Ie(this.initialData.throws,this.project),this.throws.setParent(this,null),this.throws.initChildren(i)),this.subscribeToDependencies(),this.afterAllChildrenInitialized(i),i==null||i.attemptAutoclose("init-children",this.id),this)}subscribe(){var i;return this.activeVersion=!0,(i=this.knownVersions)==null||i.forEach(r=>{r.version!==this.version&&(r.activeVersion=!1)}),this.project.subscribeInstance(this),this}unsubscribe(){return this.project.unsubscribeInstance(this),this}metaSync(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"meta-sync"))){const a=tn(this,i,r),c=en(this,a),e=this.toMeta();return this.x=a.x||e.x,this.y=a.y||e.y,super.baseMetaSync(a,this,r),a.deleted===!0&&!e.deleted?r==null||r.add(this,W.Removed):a.deleted===!1&&e.deleted?r==null||r.add(this,W.Added):c&&(r==null||r.add(this,W.Updated)),r==null||r.attemptAutoclose("meta-sync",this.id),this}async APILoad(i=Ke,...r){return await Fi.repository.APILoad(this.id,...r),this}async APICreate(i=Ke,...r){return await Fi.repository.APICreate(this.toShallowJSON(),...r),this}async APIUpdate(i=Ke,...r){return await Fi.repository.APIUpdate(this.toShallowJSON(),...r),this}async APIDelete(i=Ke,...r){return await Fi.repository.APIDelete(this.toShallowJSON(),...r),this}async APIClone(i=Ke,...r){return await Fi.repository.APIClone(this.id,...r),this}async APILoadVersion(i=Ke,r,...a){return await Fi.repository.APILoadVersion(this.id,r,...a)}removeFromParent(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveFromParent))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[removeFromParent] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveFromParent,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];return this.parent.removeBreakStatement(this),e.push(this.parent),i==null||i.attemptAutoclose(w.RemoveFromParent,this.id),{added:C(c),updated:C(r),removed:C(a),affected:C(e),self:this}}remove({ignoreUpstream:i}={ignoreUpstream:!1},r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveEntity))){var h,m,E;if(!this.checkCanDelete(this,r))return z.Logger.warn(`[remove] User is not allowed to delete or edit this ${this.type} entity with id: ${this.id}`),r==null||r.event({id:`${w.RemoveEntity}-${this.id}--${Me.ActionOwnerEntityNonDeletable}`,action:w.RemoveEntity,owner:this,errorReason:Me.ActionOwnerEntityNonDeletable,rootAction:((h=r==null?void 0:r.self)==null?void 0:h.id)===this.id&&(r==null?void 0:r.actionName)===w.RemoveEntity}),r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const a=[],c=[],e=[],f=[];if(r!=null&&r.hasRemoved(this.id))return r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};if(c.push(this),this.unsubscribe(),this.unsubscribeFromDependencies(),this.project.subscribeDeletedInstance(this),this.metaSync({deleted:!0},r),Object.values(this.detachedDependents).forEach(b=>{const{updated:A,removed:_,added:P}=b.entity.onDetachedDependencyRemoved(this,b.field,r);a.push(...A),c.push(..._),e.push(...P)}),this.readsValue&&(a.push(this.readsValue),this.readsValue.removeValueReader(this,r)),this.outputs.forEach(b=>{const{updated:A,removed:_}=b.remove({ignoreUpstream:!0},r);a.push(...A),c.push(..._)}),this.throws){const{updated:b,removed:A}=this.throws.remove({ignoreUpstream:!0},r);a.push(...b),c.push(...A)}if(this.dataType){const{updated:b,removed:A}=this.dataType.remove({ignoreUpstream:!0},r);a.push(...b),c.push(...A)}if(!i){const b=this.removeFromParent(r);e.push(...b.added),a.push(...b.updated),c.push(...b.removed),f.push(...b.affected),this.calledBy.forEach(A=>{a.push(A),A.removeCall(this,r)})}return r==null||r.add(this.parent,W.Affected),(m=this.parent)==null||m.breakStatements.forEach(b=>{b.id!==this.id&&(f.push(b),r==null||r.add(b,W.Affected))}),(E=this.parent)==null||E.continueStatements.forEach(b=>{b.id!==this.id&&(f.push(b),r==null||r.add(b,W.Affected))}),r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:C(e),updated:C(a),removed:C(c),affected:C(f),self:this}}restore({}={},i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RestoreEntity))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[restore] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RestoreEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];if(i!=null&&i.hasAdded(this.id))return i==null||i.attemptAutoclose(w.RestoreEntity,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(f=>{const{updated:h,removed:m,added:E}=f.entity.onDetachedDependencyRestored(this,f.field,i);a.push(...h),c.push(...m),r.push(...E)}),this.readsValue&&(a.push(this.readsValue),this.readsValue.addValueReader(this,i)),this.outputs.forEach(f=>{const{updated:h}=f.restore({},i);a.push(...h)}),this.throws){const{updated:f}=this.throws.restore({},i);a.push(...f)}if(this.dataType){const{updated:f}=this.dataType.restore({},i);a.push(...f)}return this.parent.addBreakStatement(this),this.calledBySuccess.forEach(f=>{a.push(f),f.addSuccessCall(this,i)}),this.calledByError.forEach(f=>{a.push(f),f.addErrorCall(this,i)}),this.calledByEntry.forEach(f=>{a.push(f),f.addCall(this,i)}),i==null||i.attemptAutoclose(w.RestoreEntity,this.id),{added:C(r),updated:C(a),removed:C(c),affected:C(e),self:this}}toFlat(i=new Set){return i.has(this.id)?[]:(i.add(this.id),[this,...this.outputs.flatMap(a=>a.toFlat(i)),...this.throws?this.throws.toFlat(i):[],...this.dataType?this.dataType.toFlat(i):[]])}toFlatIds(i=new Set){return i.has(this.id)?[]:(i.add(this.id),[this.id,...this.outputs.flatMap(a=>a.toFlatIds(i)),...this.throws?this.throws.toFlatIds(i):[],...this.dataType?this.dataType.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,editable:this.editable,deletable:this.deletable}}toJSON(i=new Set){var r,a,c,e,f;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,editable:this.editable,deletable:this.deletable,x:this.x,y:this.y,defaultValue:((r=this.defaultValue)==null?void 0:r.toJSON(i))||null,dataType:((a=this.dataType)==null?void 0:a.toJSON(i))||null,readsValue:((c=this.readsValue)==null?void 0:c.toReference())||null,outputs:this.outputs.map(h=>h.toJSON(i)),calledBySuccess:this.calledBySuccess.map(h=>h.toReference()),calledByError:this.calledByError.map(h=>h.toReference()),calledByEntry:this.calledByEntry.map(h=>h.toReference()),parent:((e=this.parent)==null?void 0:e.toReference())||null,throws:((f=this.throws)==null?void 0:f.toJSON(i))||null})}toJSONClone(i=at){var a,c,e,f,h,m,E,b,A,_;let r;return(a=i.seenEntityMaps)!=null&&a.has(this.id)?r=i.seenEntityMaps.get(this.id):(r=i.newId||dn(this,this.project,i.uuidStrategy),i.seenEntityMaps&&i.seenEntityMaps.set(this.id,r)),(c=i.seenEntities)!=null&&c.has(r)||(e=i.seenEntities)!=null&&e.has(this.id)?this.toReference({seenEntityMaps:i.seenEntityMaps}):((f=i.seenEntities)==null||f.add(r),(h=i.seenEntities)==null||h.add(this.id),{id:r,version:x.UUID.uuid(),createdAt:i.timestamp||B().toISOString(),previousVersion:null,author:this.author,deleted:this.deleted,type:this.type,editable:this.editable,deletable:this.deletable,x:this.x,y:this.y,defaultValue:((m=this.defaultValue)==null?void 0:m.toJSONClone({...i,newId:null}))||null,dataType:((E=this.dataType)==null?void 0:E.toJSONClone({...i,newId:null}))||null,readsValue:((b=this.readsValue)==null?void 0:b.toReference({seenEntityMaps:i.seenEntityMaps}))||null,outputs:this.outputs.map(P=>P.toJSONClone({...i,newId:null})),calledBySuccess:this.calledBySuccess.map(P=>P.toReference({seenEntityMaps:i.seenEntityMaps})),calledByError:this.calledByError.map(P=>P.toReference({seenEntityMaps:i.seenEntityMaps})),calledByEntry:this.calledByEntry.map(P=>P.toReference({seenEntityMaps:i.seenEntityMaps})),parent:((A=this.parent)==null?void 0:A.toReference({seenEntityMaps:i.seenEntityMaps}))||null,throws:((_=this.throws)==null?void 0:_.toJSONClone({...i,newId:null}))||null})}toReference(i=at){var a;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r+"--"+x.UUID.uuid()+"--ref",type:d.GenericReference,entityId:r,version:this.version,entityType:this.type}}toShallowJSON(i=at){var a,c,e,f,h,m;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r,version:this.version,createdAt:this.createdAt,previousVersion:this.previousVersion,author:this.author,deleted:this.deleted,type:this.type,editable:this.editable,deletable:this.deletable,x:this.x,y:this.y,defaultValue:((c=this.defaultValue)==null?void 0:c.toReference(i))||null,dataType:((e=this.dataType)==null?void 0:e.toReference(i))||null,readsValue:((f=this.readsValue)==null?void 0:f.toReference(i))||null,outputs:this.outputs.map(E=>E.toReference(i)),calledBySuccess:this.calledBySuccess.map(E=>E.toReference(i)),calledByError:this.calledByError.map(E=>E.toReference(i)),calledByEntry:this.calledByEntry.map(E=>E.toReference(i)),throws:((h=this.throws)==null?void 0:h.toReference(i))||null,parent:((m=this.parent)==null?void 0:m.toReference(i))||null}}toFlatJSON(i=new Set){var a,c;return i.has(this.id)?[]:(i.add(this.id),[this.toShallowJSON(),...((a=this.defaultValue)==null?void 0:a.toFlatJSON(i))||[],...((c=this.dataType)==null?void 0:c.toFlatJSON(i))||[],...this.outputs.flatMap(e=>e.toFlatJSON(i)),...this.throws?this.throws.toFlatJSON(i):[]])}toGenerationTarget(i=at){var a;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r,type:this.type,calledByEntry:this.calledByEntry.map(c=>c.id),calledByError:this.calledByError.map(c=>c.id),calledBySuccess:this.calledBySuccess.map(c=>c.id),parent:this.parent.id}}toFlatGenerationTarget(i=new Set){var a,c;return i.has(this.id)?[]:(i.add(this.id),[this.toGenerationTarget(),...((a=this.defaultValue)==null?void 0:a.toFlatGenerationTarget(i))||[],...((c=this.dataType)==null?void 0:c.toFlatGenerationTarget(i))||[],...this.outputs.flatMap(e=>e.toFlatGenerationTarget(i)),...this.throws?this.throws.toFlatGenerationTarget(i):[]])}clearErrors(){var i,r,a;return this.errors=[],(i=this.dataType)==null||i.clearErrors(),(r=this.defaultValue)==null||r.clearErrors(),this.outputs.forEach(c=>c.clearErrors()),(a=this.throws)==null||a.clearErrors(),this}validate(){return this.errors=P4e(this),{success:!0}}async validateAsync(i={}){const r=z.YieldTracker.from(i);return this.errors=await V4e(this,{tracker:r}),{success:!0}}getErrors(){var r,a;return[...this.errors,...((r=this.defaultValue)==null?void 0:r.getErrors())||[],...((a=this.dataType)==null?void 0:a.getErrors())||[],...this.outputs.flatMap(c=>c.getErrors()),...this.throws?this.throws.getErrors():[]]}async getErrorsAsync(i={}){const r=z.YieldTracker.from(i),a=[...this.errors];if(await r.tick(),this.defaultValue){const c=await this.defaultValue.getErrorsAsync({tracker:r});a.push(...c)}if(this.dataType){const c=await this.dataType.getErrorsAsync({tracker:r});a.push(...c)}for(const c of this.outputs){const e=await c.getErrorsAsync({tracker:r});a.push(...e)}if(this.throws){const c=await this.throws.getErrorsAsync({tracker:r});a.push(...c)}return a}getShallowErrors(){return this.errors}getDefaultValue(){return this.defaultValue||null}setDefaultValue(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"set-default-value"))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[setDefaultValue] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("set-default-value",this.id),this;const a=this.defaultValue;if((a==null?void 0:a.id)!==(i==null?void 0:i.id)){if(a==null||a.remove({ignoreUpstream:!0},r),this.defaultValue=i,this.defaultValue){const c=this.readsValue;this.removeValueWriter(r),c==null||c.removeValueReader(this,r)}r==null||r.add(this,W.Affected)}return r==null||r.attemptAutoclose("set-default-value",this.id),this}clone(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.CloneEntity)),r=null,a=null,c=!0){var V,G,M;const e=Fr(r,this),f=this.toJSON(),h=a||x.UUID.uuid();f.outputs=[];const m=h.split("-id"),E=m[m.length-1||0]||h;f.id=h,f.version=x.UUID.uuid(),f.createdAt=(i==null?void 0:i.timestamp)||B().toISOString(),f.author=(i==null?void 0:i.author)||"1",f.previousVersion=null,f.deleted=!1,f.deletable=!0,f.editable=!0;const b=lr(f,e);r?b.setParent(r,i):b.setParent(this.parent,null),c&&b.subscribe(),b.initChildren(i),i==null||i.add(b,W.Added);const A=(V=this.dataType)==null?void 0:V.clone(i,b,x.UUID.uuid(),c);b.setDataType(A||null,i);const _=(G=this.defaultValue)==null?void 0:G.clone(i,b,x.UUID.uuid(),c);b.setDefaultValue(_||null,i);const P=(M=this.outputs)==null?void 0:M.map((k,K)=>k.clone(i,b,E+"-return-declaration-"+K+"-id",c));return b.outputs=P,this.throws&&(b.throws=this.throws.clone(i,b,E+"-throws-id",c)),i||b.captureVersion(),i==null||i.attemptAutoclose(w.CloneEntity,this.id),b}getMasterInputWithValueWriterFromAllInstances(i){return C([...this.outputs,...this.parent.breakStatements.filter(c=>c.id!==this.id).flatMap(c=>c.outputs),...this.parent.continueStatements.flatMap(c=>c.outputs)]).find(c=>oe(c,this.project)===oe(i,this.project)&&!!c.readsValue)||i}removeUnrecognizedInputs(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveUnrecognizedInputs))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[removeUnrecognizedInputs] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveUnrecognizedInputs,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[],f=this.getDataType(null);return f&&!f.isObject()?[...this.outputs].forEach(m=>{const E=m.remove({ignoreUpstream:!1},i);c.push(...E.removed),r.push(...E.updated)}):f&&f.hasStrictObjectStructure()&&[...this.outputs].forEach(m=>{if(!m.declaration){const b=m.remove({ignoreUpstream:!1},i);c.push(...b.removed),r.push(...b.updated);return}if(![...(f==null?void 0:f.entity).allProperties].find(b=>m.declaration===b)){const b=m.remove({ignoreUpstream:!1},i);c.push(...b.removed),r.push(...b.updated)}}),this.outputs.filter((m,E)=>{const b=this.outputs.findIndex(_=>_.declaration===m.declaration&&_!==m);if(b===-1)return!1;const A=this.outputs[b];return B(A==null?void 0:A.createdAt).isSame(B(m.createdAt))?E>b:!!B(A==null?void 0:A.createdAt).isAfter(m.createdAt)}).forEach(m=>{const E=m.remove({ignoreUpstream:!1},i);c.push(...E.removed),r.push(...E.updated)}),i==null||i.attemptAutoclose(w.RemoveUnrecognizedInputs,this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}syncInputs(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"sync-break-statement-inputs"))){const r=[],a=[],c=[],e=[],f=this.getDataType(i);if(f)if(f.entity){if(f.isObject()){const b=[...f.entity.properties];this.outputs.filter(P=>!P.declaration||!b.find(V=>{var G;return V.id===((G=P.declaration)==null?void 0:G.id)})).forEach(P=>{const V=b.find(G=>oe(G,this.project)===oe(P,this.project));V&&P.setDeclaration(V,i)}),b.filter(P=>!this.outputs.find(V=>{var G;return((G=V.declaration)==null?void 0:G.id)===P.id})).forEach(P=>{const V={dataType:null,id:x.UUID.uuid(),version:x.UUID.uuid(),createdAt:(i==null?void 0:i.timestamp)||B().toISOString(),author:x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.InputMap,parentRelationType:null,parent:this.toReference(),name:null,description:null,codeName:null,declaration:P,defaultValue:null,index:P.index,readsValue:null},G=Ie(V,this.project);return G.hydrateAncestors(),i==null||i.add(G,W.Added),G.setParent(this,i),G.initChildren(i),this.addOutput(G,i),i||G.captureVersion(),G})}}else return i==null||i.attemptAutoclose("sync-break-statement-inputs",this.id),{added:[],updated:[],removed:[],affected:[],self:this};else return i==null||i.attemptAutoclose("sync-break-statement-inputs",this.id),{added:[],updated:[],removed:[],affected:[],self:this};const{updated:h,added:m,removed:E}=this.removeUnrecognizedInputs(i);return a.push(...h),r.push(...m),c.push(...E),this.outputs.forEach(b=>{const{updated:A,added:_,removed:P}=b.afterAllChildrenInitialized(i);a.push(...A),r.push(..._),c.push(...P)}),this.outputs.sort((b,A)=>b.index-A.index),i==null||i.attemptAutoclose("sync-break-statement-inputs",this.id),{added:C(r),updated:C(a),removed:C(c),affected:C(e),self:this}}setDataType(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetDataType))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[setDataType] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.SetDataType,this.id),this;const a=this.dataType;return(a==null?void 0:a.id)!==(i==null?void 0:i.id)&&(a==null||a.remove({ignoreUpstream:!0},r),this.dataType=i,this.subscribeToDependencies(),r==null||r.add(this,W.Affected)),r==null||r.attemptAutoclose(w.SetDataType,this.id),this}removeDataType(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveDataType))){return this.checkCanEdit(this,i)?(this.dataType&&(this.dataType.remove({ignoreUpstream:!0},i),i==null||i.add(this,W.Affected),this.dataType=null),i==null||i.attemptAutoclose(w.RemoveDataType,this.id),this):(z.Logger.warn(`[removeDataType] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveDataType,this.id),this)}getDataType(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"get-data-type"))){if((!this.dataType||this.dataType.inferred)&&this.project.initialized,this.dataType)return i==null||i.attemptAutoclose("get-data-type",this.id),this.dataType;const r=this.parent.getDataType(i);return r?(i==null||i.attemptAutoclose("get-data-type",this.id),r):(i==null||i.attemptAutoclose("get-data-type",this.id),null)}};R(Fi,"repository",{APICreate:async(i,...r)=>i,APIUpdate:async(i,...r)=>i,APIDelete:async(i,...r)=>i,APIClone:async(i,...r)=>{},APILoad:async(i,...r)=>null,APILoadVersion:async(i,r,...a)=>null}),R(Fi,"type",d.BreakStatement),R(Fi,"USER_MANAGED_PARENT_TYPES",[d.Loop]),R(Fi,"PARENT_TYPES",[...Fi.USER_MANAGED_PARENT_TYPES]),R(Fi,"MUTABLE_BASE_PROPERTIES",[]),R(Fi,"INMUTABLE_BASE_PROPERTIES",["id","type","version","createdAt","author","previousVersion"]),R(Fi,"BASE_PROPERTIES",[...Fi.MUTABLE_BASE_PROPERTIES,...Fi.INMUTABLE_BASE_PROPERTIES]),R(Fi,"MUTABLE_META_PROPERTIES",["x","y"]),R(Fi,"INMUTABLE_META_PROPERTIES",[...Fi.INMUTABLE_BASE_PROPERTIES]),R(Fi,"META_PROPERTIES",[...Fi.MUTABLE_META_PROPERTIES,...Fi.INMUTABLE_META_PROPERTIES]),R(Fi,"MUTABLE_UPSTREAM_PROPERTIES",["calledBySuccess","calledByError","calledByEntry","readsValue"]),R(Fi,"INMUTABLE_UPSTREAM_PROPERTIES",["parent"]),R(Fi,"UPSTREAM_PROPERTIES",[...Fi.MUTABLE_UPSTREAM_PROPERTIES,...Fi.INMUTABLE_UPSTREAM_PROPERTIES]),R(Fi,"MUTABLE_DOWNSTREAM_PROPERTIES",["outputs","throws"]),R(Fi,"INMUTABLE_DOWNSTREAM_PROPERTIES",["dataType","defaultValue"]),R(Fi,"DOWNSTREAM_PROPERTIES",[...Fi.MUTABLE_DOWNSTREAM_PROPERTIES,...Fi.INMUTABLE_DOWNSTREAM_PROPERTIES]),R(Fi,"PROPERTIES",[...Fi.META_PROPERTIES,...Fi.UPSTREAM_PROPERTIES,...Fi.DOWNSTREAM_PROPERTIES]);let Gp=Fi;async function x4e(s,p={}){var c;const i=z.YieldTracker.from(p),r=[...Rn(s),...Xa(s)];await i.tick();const a=qt(s.errors,r);for(const e of s.outputs)await e.validateAsync({tracker:i});return await((c=s.throws)==null?void 0:c.validateAsync({tracker:i})),a}function $4e(s){var i;s.outputs.forEach(r=>r.validate()),(i=s.throws)==null||i.validate();const p=[...Rn(s),...Xa(s)];return qt(s.errors,p)}const sCi=Object.freeze(Object.defineProperty({__proto__:null,validate:$4e,validateAsync:x4e},Symbol.toStringTag,{value:"Module"}));var L4e=(s=>(s.Parent="continue-statement-parent-field",s.DataTypeEntity="continue-statement-data-type-entity-field",s.DataType="continue-statement-data-type-field",s.ParentDataType="continue-statement-parent-data-type-field",s.ParentDataTypeEntity="continue-statement-parent-data-type-entity-field",s))(L4e||{});const Ki=class Ki extends un{constructor(i,r){super(i);R(this,"initialData");R(this,"id");R(this,"x");R(this,"y");R(this,"type",d.ContinueStatement);R(this,"outputs",[]);R(this,"readsValue",null);R(this,"dataType",null);R(this,"defaultValue",null);R(this,"calledBySuccess",[]);R(this,"calledByError",[]);R(this,"calledByEntry",[]);R(this,"throws",null);R(this,"project");R(this,"errors",[]);R(this,"parent");R(this,"detachedDependents",{});R(this,"knownVersions",null);R(this,"activeVersion",!1);R(this,"initialized",!1);R(this,"startedInitialization",!1);R(this,"suggestion",!1);R(this,"_codeNativeValueValidation",null);this.initialData=i,this.project=r,this.id=i.id,this.x=i.x,this.y=i.y}static new(i=null){return{id:x.UUID.uuid(),version:x.UUID.uuid(),createdAt:(i==null?void 0:i.timestamp)||B().toISOString(),author:(i==null?void 0:i.author)||x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.ContinueStatement,outputs:[],defaultValue:null,dataType:null,readsValue:null,throws:null,parent:null,calledByEntry:[],calledBySuccess:[],calledByError:[],x:0,y:0}}static fromGenerationTarget(i,r,a){const c=a===void 0?r.addChangeSet(new S(r,x.sessionAuthor,B().toISOString(),r,!0,w.CreateFromGenerationTarget)):a,e=te(i.parent),f=r.get(e),h=(i.calledByEntry||[]).map(P=>{const V=te(P);return r.get(V)}),m=(i.calledBySuccess||[]).map(P=>{const V=te(P);return r.get(V)}),E=(i.calledByError||[]).map(P=>{const V=te(P);return r.get(V)});let b=null;if(i.readsValue){const P=te(i.readsValue);b=r.get(P)}const A={id:i.id,version:x.UUID.uuid(),createdAt:(c==null?void 0:c.timestamp)||B().toISOString(),author:(c==null?void 0:c.author)||x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.ContinueStatement,x:0,y:0,outputs:[],defaultValue:null,dataType:null,readsValue:b?b.toReference():null,calledByEntry:h.map(P=>P.toReference()),calledBySuccess:m.map(P=>P.toReference()),calledByError:E.map(P=>P.toReference()),throws:null,parent:f.toReference()},_=Ie(A,r);return _.hydrateAncestors(),_.setParent(f,c),_.addSelfToProject(c),c==null||c.add(_,W.Added),_.initChildren(c),c||_.captureVersion(),_}static validateGenerationTarget(i,r){let a=JSON.parse(JSON.stringify(i));const c=[],e=[],f=Bn(a,{parent:{list:!1,types:[d.Loop]}},r);c.push(...f.explanations),a=f.modifiedData;const h=Xr(a);return e.push(...f.errors,...h.errors),c.push(...h.explanations),{errors:e,explanations:c,modifiedData:a}}get codeNativeValueValidation(){return this._codeNativeValueValidation||null}validateGeneratedUpdate(i){const r=[],a=[];let c=JSON.parse(JSON.stringify(i));const e=dy(c,this);return c=e.modifiedData,r.push(...e.errors),i.parent&&r.push(new we({id:`${this.id}--${Te.InvalidParentUpdate}`,code:Te.InvalidParentUpdate,severity:ve.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.
|
|
197
197
|
If an entity is called by another, they must be in the same scope, which means they have the same parent.
|
|
198
198
|
You shouldn't have to manually update a 'parent' property.
|
|
199
|
-
Specifically for continue statements the parent needs to always be the 'loop' entity that contains it.`})),{errors:r,explanations:a,modifiedData:i}}subscribeDependents(i){return i.forEach(r=>{this.detachedDependents[r.entity.id]||(this.detachedDependents[r.entity.id]=r)}),this}unsubscribeDependents(i){return i.forEach(r=>{this.detachedDependents[r.entity.id]&&delete this.detachedDependents[r.entity.id]}),this}syncDependents(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"sync-dependents"))){const r=[],a=[],c=[],e=[];return Object.values(this.detachedDependents).forEach(f=>{const h=f.entity.afterAllChildrenInitialized(i);r.push(...h.updated),a.push(...h.added),c.push(...h.removed),e.push(...h.affected)}),i==null||i.attemptAutoclose("sync-dependents",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}onDetachedDependencyRemoved(i,r,a){const c=[],e=[],f=[],h=[];if(r==="continue-statement-parent-field"){const{updated:m,added:E,removed:b}=this.remove({ignoreUpstream:!1},a);c.push(...m),e.push(...E),f.push(...b)}if(r==="continue-statement-parent-data-type-field"){const{updated:m,added:E,removed:b}=this.afterAllChildrenInitialized(a);c.push(...m),e.push(...E),f.push(...b)}if(r==="continue-statement-parent-data-type-entity-field"){const{updated:m,added:E,removed:b}=this.afterAllChildrenInitialized(a);c.push(...m),e.push(...E),f.push(...b)}return{updated:C(c),added:C(e),removed:C(f),affected:C(h),self:this}}onDetachedDependencyRestored(i,r,a){const c=[],e=[],f=[],h=[];if(r==="continue-statement-parent-field"){const{updated:m,added:E,removed:b}=this.restore({},a);c.push(...m),e.push(...E),f.push(...b)}if(r==="continue-statement-parent-data-type-field"){const{updated:m,added:E,removed:b}=this.afterAllChildrenInitialized(a);c.push(...m),e.push(...E),f.push(...b)}if(r==="continue-statement-parent-data-type-entity-field"){const{updated:m,added:E,removed:b}=this.afterAllChildrenInitialized(a);c.push(...m),e.push(...E),f.push(...b)}return{updated:C(c),added:C(e),removed:C(f),affected:C(h),self:this}}unsubscribeFromDependencies(){var i,r,a,c,e,f,h,m,E,b,A,_,P;return(i=this.parent)==null||i.unsubscribeDependents([{entity:this,field:"continue-statement-parent-field"}]),(c=(a=(r=this.dataType)==null?void 0:r.entity)==null?void 0:a.unsubscribeDependents)==null||c.call(a,[{entity:this,field:"continue-statement-data-type-entity-field"}]),(f=(e=this.dataType)==null?void 0:e.unsubscribeDependents)==null||f.call(e,[{entity:this,field:"continue-statement-data-type-field"}]),(b=(E=(m=(h=this.parent)==null?void 0:h.dataType)==null?void 0:m.entity)==null?void 0:E.unsubscribeDependents)==null||b.call(E,[{entity:this,field:"continue-statement-parent-data-type-entity-field"}]),(P=(_=(A=this.parent)==null?void 0:A.dataType)==null?void 0:_.unsubscribeDependents)==null||P.call(_,[{entity:this,field:"continue-statement-parent-data-type-field"}]),this}subscribeToDependencies(){var i,r,a,c,e,f,h,m,E,b,A,_,P;return(i=this.parent)==null||i.subscribeDependents([{entity:this,field:"continue-statement-parent-field"}]),(c=(a=(r=this.dataType)==null?void 0:r.entity)==null?void 0:a.subscribeDependents)==null||c.call(a,[{entity:this,field:"continue-statement-data-type-entity-field"}]),(f=(e=this.dataType)==null?void 0:e.subscribeDependents)==null||f.call(e,[{entity:this,field:"continue-statement-data-type-field"}]),(b=(E=(m=(h=this.parent)==null?void 0:h.dataType)==null?void 0:m.entity)==null?void 0:E.subscribeDependents)==null||b.call(E,[{entity:this,field:"continue-statement-parent-data-type-entity-field"}]),(P=(_=(A=this.parent)==null?void 0:A.dataType)==null?void 0:_.subscribeDependents)==null||P.call(_,[{entity:this,field:"continue-statement-parent-data-type-field"}]),this}increaseVersion(i){var r;if(this.project.diggestedBuiltInBaseEntitiesIds.has(this.id))return this;if(i&&!B(i).isValid())throw new Error(`The shared timestamp '${i}' is not a valid ISO 8601 date string.`);if(i&&B(i).isSame(B(this.createdAt)))return this;if(!((r=this.knownVersions)!=null&&r.has(this.version))&&this.project.initialized)throw new Error(`The current ${this.type} ${this.id} version '${this.version}' is not captured in the 'knownVersions' map. Capture the current version before increasing it to avoid losing data.`);if(!this.activeVersion)throw new Error(`Only active versions can be increased. Entity with id '${this.id}' and version '${this.version}' is not active.`);return this.previousVersion=this.version,this.version=x.UUID.uuid(),this.createdAt=B(i).toISOString()||B().toISOString(),this}captureVersion(){var r;const i=((r=this.knownVersions)==null?void 0:r.get(this.version))||new Ki(this,this.project);if(!this.activeVersion)throw new Error(`Only active versions can be captured. Entity of type ${this.type} with id '${this.id}' and version '${this.version}' is not active.`);if(this.version!==i.version)throw new Error(`Captured ${this.type} with id '${this.id}', version '${i.version}' does not match current entity version '${this.version}'.`);return this.knownVersions=this.knownVersions?this.knownVersions.set(this.version,i):new Map().set(this.version,i),this.apply(i),this}snapshot(){const i=new Ki(this,this.project);return this.apply(i)}apply(i){const r=this.toMeta();return i.metaSync(r,null),i.outputs=[...this.outputs],i.readsValue=this.readsValue,i.defaultValue=this.defaultValue,i.dataType=this.dataType,i.throws=this.throws,i.calledBySuccess=[...this.calledBySuccess],i.calledByError=[...this.calledByError],i.calledByEntry=[...this.calledByEntry],i.parent=this.parent,i}recursiveCaptureUpstreamVersions(i){const r=[],a=[],c=[],e=[];if(this.parent){this.parent.increaseVersion(i);const f=this.parent.recursiveCaptureUpstreamVersions(i);r.push(this.parent,...f.updated),a.push(...f.added),c.push(...f.removed)}return{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}async restoreVersion(i,r){var m;const a=[],c=[],e=[],f=[];if(this.version===i&&(r!=null&&r.skipIfSameVersion))return{updated:C(a),added:C(c),removed:C(e),affected:C(f),self:this};if(!this.knownVersions){const E=new Map;for(const[b,A]of this.knownVersions||new Map){if(E.set(b,A),A.activeVersion=!1,A.knownVersions)for(const[_,P]of A.knownVersions)E.set(_,P);A.knownVersions=null}}let h=(m=this.knownVersions)==null?void 0:m.get(i);if(!h){const E=await this.APILoadVersion({},i);if(!E)throw new Error(`Version with id '${i}' for entity with id '${this.id}' not found.`);h=new Ki(E,this.project)}return this.metaSync(h.toShallowJSON(),null),this.previousVersion=h.previousVersion,this.version=h.version,this.createdAt=h.createdAt,this.author=h.author,this.deleted=h.deleted,this.outputs=[...h.outputs],this.readsValue=h.readsValue,this.defaultValue=h.defaultValue,this.dataType=h.dataType,this.throws=h.throws,this.calledBySuccess=[...h.calledBySuccess],this.calledByError=[...h.calledByError],this.calledByEntry=[...h.calledByEntry],this.parent=h.parent,{updated:C(a),added:C(c),removed:C(e),affected:C(f),self:this}}updateWithShallowTransfer(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.UpdateWithShallowTransfer))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[updateWithShallowTransfer] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),this;if(this.metaSync(i,r),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 a=te(i.parent),c=this.project.get(a),e=this.parent;if(e&&e.id!==(c==null?void 0:c.id)&&this.removeFromParent(r),c)this.setParent(c,r),this.addSelfToProject(r);else throw r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),new Error(`${this.type} with id '${this.id}' has a 'parent' reference '${a}' that isn't found in the project`)}else throw r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),new Error(`${this.type} with id '${this.id}' must have a 'parent'`);if(i.readsValue){const a=te(i.readsValue),c=this.project.get(a),e=this.readsValue;e&&e.id!==(c==null?void 0:c.id)&&this.removeValueWriter(r),c&&this.setValueWriter(c,r)}else this.removeValueWriter(r);if(i.calledByEntry.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addEntryCaller(e,r),e.addCall(this,r))}),[...this.calledByEntry].forEach(a=>{i.calledByEntry.find(e=>te(e)===a.id)||(this.removeCaller(a,r),a.removeCall(this,r))}),i.calledBySuccess.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addSuccessCaller(e,r),e.addSuccessCall(this,r))}),[...this.calledBySuccess].forEach(a=>{i.calledBySuccess.find(e=>te(e)===a.id)||(this.removeCaller(a,r),a.removeCall(this,r))}),i.calledByError.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addErrorCaller(e,r),e.addErrorCall(this,r))}),[...this.calledByError].forEach(a=>{i.calledByError.find(e=>te(e)===a.id)||(this.removeCaller(a,r),a.removeCall(this,r))}),i.outputs.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addOutput(e,r),e.setParent(this,r))}),[...this.outputs].forEach(a=>{i.outputs.find(e=>te(e)===a.id)||(this.removeOutput(a,r),a.removeFromParent(r))}),i.dataType){const a=te(i.dataType),c=this.project.get(a);c&&this.setDataType(c,r)}else this.setDataType(null,r);if(i.defaultValue){const a=te(i.defaultValue),c=this.project.get(a);c&&this.setDefaultValue(c,r)}else this.setDefaultValue(null,r);return this.captureVersion(),this.subscribeToDependencies(),r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),this}updateWithGenerationTarget(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.UpdateWithGenerationTarget))){var a,c,e;if(!this.checkCanEdit(this,r))return z.Logger.warn(`[updateWithGenerationTarget] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),this;if(this.metaSync(i,r),i.parent){const f=te(i.parent),h=this.project.get(f),m=this.parent;if(m&&m.id!==(h==null?void 0:h.id)&&this.removeFromParent(r),h)this.setParent(h,r),this.addSelfToProject(r);else throw r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),new Error(`${this.type} with id '${this.id}' has a 'parent' reference '${f}' that isn't found in the project`)}if(i.readsValue){const f=te(i.readsValue),h=this.project.get(f);if(!h)throw new Error(`${this.type} with id '${this.id}' has a 'readsValue' reference '${f}' that isn't found in the project`);const m=this.readsValue;m&&m.id!==(h==null?void 0:h.id)&&this.removeValueWriter(r),h&&this.setValueWriter(h,r)}else i.readsValue===null&&this.removeValueWriter(r);return(a=i.calledByEntry)==null||a.forEach(f=>{const h=te(f),m=this.project.get(h);if(m)this.addEntryCaller(m,r),m.addCall(this,r);else throw new Error(`${this.type} with id '${this.id}' has a 'calledByEntry' reference '${h}' that isn't found in the project`)}),i.calledByEntry&&[...this.calledByEntry].forEach(f=>{var m;((m=i.calledByEntry)==null?void 0:m.find(E=>te(E)===f.id))||(this.removeCaller(f,r),f.removeCall(this,r))}),(c=i.calledBySuccess)==null||c.forEach(f=>{const h=te(f),m=this.project.get(h);if(m)this.addSuccessCaller(m,r),m.addSuccessCall(this,r);else throw new Error(`${this.type} with id '${this.id}' has a 'calledBySuccess' reference '${h}' that isn't found in the project`)}),i.calledBySuccess&&[...this.calledBySuccess].forEach(f=>{var m;((m=i.calledBySuccess)==null?void 0:m.find(E=>te(E)===f.id))||(this.removeCaller(f,r),f.removeCall(this,r))}),(e=i.calledByError)==null||e.forEach(f=>{const h=te(f),m=this.project.get(h);if(m)this.addErrorCaller(m,r),m.addErrorCall(this,r);else throw new Error(`${this.type} with id '${this.id}' has a 'calledByError' reference '${h}' that isn't found in the project`)}),i.calledByError&&[...this.calledByError].forEach(f=>{var m;((m=i.calledByError)==null?void 0:m.find(E=>te(E)===f.id))||(this.removeCaller(f,r),f.removeCall(this,r))}),this.captureVersion(),this.subscribeToDependencies(),r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),this}hydrateAncestors(){const i=[],r=[],a=[],c=[];if(this.initialData.parent){const e=te(this.initialData.parent),f=this.project.get(e);if(f)this.setParent(f,null),i.push(f);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.readsValue){const e=te(this.initialData.readsValue),f=this.project.get(e);f&&(this.setValueWriter(f,null),i.push(f))}return this.initialData.calledByEntry.forEach(e=>{const f=te(e),h=this.project.get(f);h&&this.addEntryCaller(h,null)}),this.initialData.calledBySuccess.forEach(e=>{const f=te(e),h=this.project.get(f);h&&this.addSuccessCaller(h,null)}),this.initialData.calledByError.forEach(e=>{const f=te(e),h=this.project.get(f);h&&this.addErrorCaller(h,null)}),{updated:C(i),added:C(r),removed:C(a),affected:C(c),self:this}}afterAllChildrenInitialized(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AfterAllChildrenInitialized))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[afterAllChildrenInitialized] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.AfterAllChildrenInitialized,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];if(this.initialized=!0,!this.dataType||this.dataType.inferred,this.readsValue&&this.defaultValue&&(this.project.diggestedBuiltInBaseEntitiesIds.has(this.defaultValue.id)||this.defaultValue.remove({ignoreUpstream:!1},i),this.setDefaultValue(null,i)),this.defaultValue&&!this.readsValue&&!this.project.diggestedBuiltInBaseEntitiesIds.has(this.id)&&this.project.diggestedBuiltInBaseEntitiesIds.has(this.defaultValue.id)){const b=this.defaultValue.clone(i,this);this.setDefaultValue(b,i)}const{added:f,updated:h,removed:m,affected:E}=this.syncInputs(i);return a.push(...f),r.push(...h),c.push(...m),e.push(...E),this.parent.syncTerminationStatements(i),this.outputs.sort((b,A)=>{var _,P;return(b.index??((_=b.declaration)==null?void 0:_.index))-(A.index??((P=A.declaration)==null?void 0:P.index))}),i==null||i.attemptAutoclose(w.AfterAllChildrenInitialized,this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}addSelfToProject(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"add-self-to-project"))){var f,h;const r=[this],a=[],c=[],e=[];return this.readsValue&&(this.readsValue.addValueReader(this,i),r.push(this.readsValue)),this.calledByEntry.forEach(m=>{m.addCall(this,i),r.push(m)}),this.calledBySuccess.forEach(m=>{m.addSuccessCall(this,i),r.push(m)}),this.calledByError.forEach(m=>{m.addErrorCall(this,i),r.push(m)}),this.parent.addContinueStatement(this),r.push(this),i==null||i.add(this.parent,W.Affected),(f=this.parent)==null||f.breakStatements.forEach(m=>{m.id!==this.id&&(e.push(m),i==null||i.add(m,W.Affected))}),(h=this.parent)==null||h.continueStatements.forEach(m=>{m.id!==this.id&&(e.push(m),i==null||i.add(m,W.Affected))}),this.subscribe(),this.subscribeToDependencies(),i==null||i.attemptAutoclose("add-self-to-project",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}get calledBy(){return[...this.calledByEntry,...this.calledBySuccess,...this.calledByError]}addSuccessCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddSuccessCaller)),a=!1){var c;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddSuccessCaller,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddSuccessCaller}-${this.id}--${Me.CannotSuccessCallItself}`,action:w.AddSuccessCaller,owner:this,errorReason:Me.CannotSuccessCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddSuccessCaller})),this.calledBySuccess.find(e=>e.id===i.id)||(this.calledBySuccess.push(i),r==null||r.add(this,W.Updated),a&&bt(this,r)),r==null||r.attemptAutoclose(w.AddSuccessCaller,this.id),this):this}addErrorCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddErrorCaller)),a=!1){var c;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddErrorCaller,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddErrorCaller}-${this.id}--${Me.CannotErrorCallItself}`,action:w.AddErrorCaller,owner:this,errorReason:Me.CannotErrorCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddErrorCaller})),this.calledByError.find(e=>e.id===i.id)||(this.calledByError.push(i),r==null||r.add(this,W.Updated),a&&bt(this,r)),r==null||r.attemptAutoclose(w.AddErrorCaller,this.id),this):this}addEntryCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddEntryCaller)),a=!1){var c;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddEntryCaller,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddEntryCaller}-${this.id}--${Me.CannotEntryCallItself}`,action:w.AddEntryCaller,owner:this,errorReason:Me.CannotEntryCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddEntryCaller})),this.calledByEntry.find(e=>e.id===i.id)||(this.calledByEntry.push(i),r==null||r.add(this,W.Updated),a&&bt(this,r)),r==null||r.attemptAutoclose(w.AddEntryCaller,this.id),this):this}removeCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"remove-caller")),a=!1){return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.RemoveCaller,r)?(this.calledBySuccess=this.calledBySuccess.filter(c=>c.id!==i.id?!0:(r==null||r.add(this,W.Updated),r==null||r.add(c,W.Affected),!1)),this.calledByError=this.calledByError.filter(c=>c.id!==i.id?!0:(r==null||r.add(this,W.Updated),r==null||r.add(c,W.Affected),!1)),this.calledByEntry=this.calledByEntry.filter(c=>c.id!==i.id?!0:(r==null||r.add(this,W.Updated),r==null||r.add(c,W.Affected),!1)),a&&bt(this,r),r==null||r.attemptAutoclose(w.RemoveCaller,this.id),this):this}setThrows(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"set-throws"))){var a;if(!this.checkCanEdit(this,r))return z.Logger.warn(`[setThrows] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("set-throws",this.id),this;if(i!==null&&i.parentRelationType!==dd.Error)throw new Error("The 'throws' InputMap must have a parentRelationType of 'Error'.");return((a=this.throws)==null?void 0:a.id)!==(i==null?void 0:i.id)&&(this.throws=i,r==null||r.add(this,W.Updated)),r==null||r.attemptAutoclose("set-throws",this.id),this}addOutput(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"add-output"))){return this.checkCanEdit(this,r)?this.outputs.includes(i)?(r==null||r.attemptAutoclose("add-output",this.id),this):(this.outputs.push(i),r==null||r.add(this,W.Affected),r==null||r.attemptAutoclose("add-output",this.id),this):(z.Logger.warn(`[addOutput] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("add-output",this.id),this)}removeOutput(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"remove-output"))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[removeOutput] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("remove-output",this.id),this;const a=this.outputs.findIndex(c=>c.id===i.id);return a>-1&&(this.outputs.splice(a,1),r&&(r==null||r.add(this,W.Affected))),r==null||r.attemptAutoclose("remove-output",this.id),this}setParent(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetParent))){var a;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.SetParent,r)?(((a=this.parent)==null?void 0:a.id)!==(i==null?void 0:i.id)&&(this.parent=i,r&&(r==null||r.add(this,W.Updated))),r==null||r.attemptAutoclose(w.SetParent,this.id),this):this}setValueWriter(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetValueWriter))){var a,c,e;return this.checkCanEditFromScopeOwnerWithSideEffects(this,w.SetValueWriter,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.SetValueWriter}-${this.id}--${Me.CannotValueWriteItself}`,action:w.SetValueWriter,owner:this,errorReason:Me.CannotValueWriteItself,rootAction:((a=r==null?void 0:r.self)==null?void 0:a.id)===this.id&&(r==null?void 0:r.actionName)===w.SetValueWriter})),((c=this.readsValue)==null?void 0:c.id)!==(i==null?void 0:i.id)&&(this.readsValue=i,this.readsValue&&((e=this.defaultValue)==null||e.remove({ignoreUpstream:!1},r)),r==null||r.add(this,W.Updated)),r==null||r.attemptAutoclose(w.SetValueWriter,this.id),this):this}removeValueWriter(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveValueWriter))){return this.readsValue&&!this.checkCanEditWithCounterpartAndSideEffects(this,this.readsValue,w.RemoveValueWriter,i)?this:(this.readsValue&&(this.readsValue=null,i==null||i.add(this,W.Updated)),i==null||i.attemptAutoclose(w.RemoveValueWriter,this.id),this)}initChildren(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"init-children"))){return this.initialized||this.startedInitialization?this:(this.startedInitialization=!0,this.initialData.defaultValue&&(this.defaultValue=Ie(this.initialData.defaultValue,this.project),this.defaultValue.setParent(this,null),this.defaultValue.initChildren(i)),this.initialData.dataType&&(this.dataType=Ie(this.initialData.dataType,this.project),this.dataType.setParent(this,null),this.dataType.initChildren(i)),uy.initReadsValue(this),this.outputs=this.initialData.outputs.map(r=>{const a=Ie(r,this.project);return a.setParent(this,null),a.initChildren(i),a}),this.initialData.throws&&(this.throws=Ie(this.initialData.throws,this.project),this.throws.setParent(this,null),this.throws.initChildren(i)),this.subscribeToDependencies(),this.afterAllChildrenInitialized(i),i==null||i.attemptAutoclose("init-children",this.id),this)}subscribe(){var i;return this.activeVersion=!0,(i=this.knownVersions)==null||i.forEach(r=>{r.version!==this.version&&(r.activeVersion=!1)}),this.project.subscribeInstance(this),this}unsubscribe(){return this.project.unsubscribeInstance(this),this}metaSync(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"meta-sync"))){const a=tn(this,i,r),c=en(this,a),e=this.toMeta();return this.x=a.x||e.x,this.y=a.y||e.y,super.baseMetaSync(a,this,r),a.deleted===!0&&!e.deleted?r==null||r.add(this,W.Removed):a.deleted===!1&&e.deleted?r==null||r.add(this,W.Added):c&&(r==null||r.add(this,W.Updated)),r==null||r.attemptAutoclose("meta-sync",this.id),this}async APILoad(i=Ke,...r){return await Ki.repository.APILoad(this.id,...r),this}async APICreate(i=Ke,...r){return await Ki.repository.APICreate(this.toShallowJSON(),...r),this}async APIUpdate(i=Ke,...r){return await Ki.repository.APIUpdate(this.toShallowJSON(),...r),this}async APIDelete(i=Ke,...r){return await Ki.repository.APIDelete(this.toShallowJSON(),...r),this}async APIClone(i=Ke,...r){return await Ki.repository.APIClone(this.id,...r),this}async APILoadVersion(i=Ke,r,...a){return await Ki.repository.APILoadVersion(this.id,r,...a)}removeFromParent(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveFromParent))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[removeFromParent] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveFromParent,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];return this.parent.removeContinueStatement(this),this.parent.detachedChildren.includes(this)&&this.parent.unsubscribeDetachedChild(this),i==null||i.attemptAutoclose(w.RemoveFromParent,this.id),{added:C(c),updated:C(r),removed:C(a),affected:C(e),self:this}}remove({ignoreUpstream:i}={ignoreUpstream:!1},r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveEntity))){var h,m,E;if(!this.checkCanDelete(this,r))return z.Logger.warn(`[remove] User is not allowed to delete or edit this ${this.type} entity with id: ${this.id}`),r==null||r.event({id:`${w.RemoveEntity}-${this.id}--${Me.ActionOwnerEntityNonDeletable}`,action:w.RemoveEntity,owner:this,errorReason:Me.ActionOwnerEntityNonDeletable,rootAction:((h=r==null?void 0:r.self)==null?void 0:h.id)===this.id&&(r==null?void 0:r.actionName)===w.RemoveEntity}),r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const a=[],c=[],e=[],f=[];if(r!=null&&r.hasRemoved(this.id))return r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};if(c.push(this),this.unsubscribe(),this.unsubscribeFromDependencies(),this.project.subscribeDeletedInstance(this),this.metaSync({deleted:!0},r),Object.values(this.detachedDependents).forEach(b=>{const{updated:A,removed:_,added:P}=b.entity.onDetachedDependencyRemoved(this,b.field,r);a.push(...A),c.push(..._),e.push(...P)}),this.readsValue&&(a.push(this.readsValue),this.readsValue.removeValueReader(this,r)),this.outputs.forEach(b=>{const{updated:A,removed:_}=b.remove({ignoreUpstream:!0},r);a.push(...A),c.push(..._)}),this.throws){const{updated:b,removed:A}=this.throws.remove({ignoreUpstream:!0},r);a.push(...b),c.push(...A)}if(this.dataType){const{updated:b,removed:A}=this.dataType.remove({ignoreUpstream:!0},r);a.push(...b),c.push(...A)}if(!i){const b=this.removeFromParent(r);e.push(...b.added),a.push(...b.updated),c.push(...b.removed),f.push(...b.affected),this.calledBy.forEach(A=>{a.push(A),A.removeCall(this,r)})}return r==null||r.add(this.parent,W.Affected),(m=this.parent)==null||m.breakStatements.forEach(b=>{b.id!==this.id&&(f.push(b),r==null||r.add(b,W.Affected))}),(E=this.parent)==null||E.continueStatements.forEach(b=>{b.id!==this.id&&(f.push(b),r==null||r.add(b,W.Affected))}),r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:C(e),updated:C(a),removed:C(c),affected:C(f),self:this}}restore({}={},i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RestoreEntity))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[restore] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RestoreEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];if(i!=null&&i.hasAdded(this.id))return i==null||i.attemptAutoclose(w.RestoreEntity,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(f=>{const{updated:h,removed:m,added:E}=f.entity.onDetachedDependencyRestored(this,f.field,i);a.push(...h),c.push(...m),r.push(...E)}),this.readsValue&&(a.push(this.readsValue),this.readsValue.addValueReader(this,i)),this.outputs.forEach(f=>{const{updated:h}=f.restore({},i);a.push(...h)}),this.throws){const{updated:f}=this.throws.restore({},i);a.push(...f)}if(this.dataType){const{updated:f}=this.dataType.restore({},i);a.push(...f)}return this.parent.addContinueStatement(this),this.calledBySuccess.forEach(f=>{a.push(f),f.addSuccessCall(this,i)}),this.calledByError.forEach(f=>{a.push(f),f.addErrorCall(this,i)}),this.calledByEntry.forEach(f=>{a.push(f),f.addCall(this,i)}),i==null||i.attemptAutoclose(w.RestoreEntity,this.id),{added:C(r),updated:C(a),removed:C(c),affected:C(e),self:this}}toFlat(i=new Set){return i.has(this.id)?[]:(i.add(this.id),[this,...this.outputs.flatMap(a=>a.toFlat(i)),...this.calledBy.flatMap(a=>a.toFlat(i)),...this.throws?this.throws.toFlat(i):[],...this.dataType?this.dataType.toFlat(i):[]])}toFlatIds(i=new Set){return i.has(this.id)?[]:(i.add(this.id),[this.id,...this.outputs.flatMap(a=>a.toFlatIds(i)),...this.calledBy.flatMap(a=>a.toFlatIds(i)),...this.throws?this.throws.toFlatIds(i):[],...this.dataType?this.dataType.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,editable:this.editable,deletable:this.deletable}}toJSON(i=new Set){var r,a,c,e,f;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,editable:this.editable,deletable:this.deletable,x:this.x,y:this.y,defaultValue:((r=this.defaultValue)==null?void 0:r.toJSON(i))||null,dataType:((a=this.dataType)==null?void 0:a.toJSON(i))||null,readsValue:((c=this.readsValue)==null?void 0:c.toReference())||null,calledBySuccess:this.calledBySuccess.map(h=>h.toReference()),calledByError:this.calledByError.map(h=>h.toReference()),calledByEntry:this.calledByEntry.map(h=>h.toReference()),outputs:this.outputs.map(h=>h.toJSON(i)),throws:((e=this.throws)==null?void 0:e.toJSON(i))||null,parent:((f=this.parent)==null?void 0:f.toReference())||null})}toJSONClone(i=at){var a,c,e,f,h,m,E,b,A,_;let r;return(a=i.seenEntityMaps)!=null&&a.has(this.id)?r=i.seenEntityMaps.get(this.id):(r=i.newId||dn(this,this.project,i.uuidStrategy),i.seenEntityMaps&&i.seenEntityMaps.set(this.id,r)),(c=i.seenEntities)!=null&&c.has(r)||(e=i.seenEntities)!=null&&e.has(this.id)?this.toReference({seenEntityMaps:i.seenEntityMaps}):((f=i.seenEntities)==null||f.add(r),(h=i.seenEntities)==null||h.add(this.id),{id:r,version:x.UUID.uuid(),createdAt:i.timestamp||B().toISOString(),previousVersion:null,author:this.author,deleted:this.deleted,type:this.type,editable:this.editable,deletable:this.deletable,x:this.x,y:this.y,defaultValue:((m=this.defaultValue)==null?void 0:m.toJSONClone({...i,newId:null}))||null,dataType:((E=this.dataType)==null?void 0:E.toJSONClone({...i,newId:null}))||null,readsValue:((b=this.readsValue)==null?void 0:b.toReference({seenEntityMaps:i.seenEntityMaps}))||null,calledBySuccess:this.calledBySuccess.map(P=>P.toReference({seenEntityMaps:i.seenEntityMaps})),calledByError:this.calledByError.map(P=>P.toReference({seenEntityMaps:i.seenEntityMaps})),calledByEntry:this.calledByEntry.map(P=>P.toReference({seenEntityMaps:i.seenEntityMaps})),outputs:this.outputs.map(P=>P.toJSONClone({...i,newId:null})),throws:((A=this.throws)==null?void 0:A.toJSONClone({...i,newId:null}))||null,parent:((_=this.parent)==null?void 0:_.toReference({seenEntityMaps:i.seenEntityMaps}))||null})}toReference(i=at){var a;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r+"--"+x.UUID.uuid()+"--ref",type:d.GenericReference,entityId:r,version:this.version,entityType:this.type}}toShallowJSON(i=at){var a,c,e,f,h;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r,version:this.version,createdAt:this.createdAt,previousVersion:this.previousVersion,author:this.author,deleted:this.deleted,type:this.type,editable:this.editable,deletable:this.deletable,x:this.x,y:this.y,defaultValue:((c=this.defaultValue)==null?void 0:c.toReference(i))||null,dataType:((e=this.dataType)==null?void 0:e.toReference(i))||null,readsValue:((f=this.readsValue)==null?void 0:f.toReference(i))||null,outputs:this.outputs.map(m=>m.toReference(i)),calledBySuccess:this.calledBySuccess.map(m=>m.toReference(i)),calledByError:this.calledByError.map(m=>m.toReference(i)),calledByEntry:this.calledByEntry.map(m=>m.toReference(i)),throws:((h=this.throws)==null?void 0:h.toReference(i))||null,parent:this.parent.toReference(i)}}toFlatJSON(i=new Set){var a,c,e;return i.has(this.id)?[]:(i.add(this.id),[this.toShallowJSON(),...((a=this.defaultValue)==null?void 0:a.toFlatJSON(i))||[],...((c=this.dataType)==null?void 0:c.toFlatJSON(i))||[],...this.outputs.flatMap(f=>f.toFlatJSON(i)),...this.calledBy.flatMap(f=>f.toFlatJSON(i)),...((e=this.throws)==null?void 0:e.toFlatJSON(i))||[]])}toGenerationTarget(i=at){var a;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r,type:this.type,calledByEntry:this.calledByEntry.map(c=>c.id),calledByError:this.calledByError.map(c=>c.id),calledBySuccess:this.calledBySuccess.map(c=>c.id),parent:this.parent.id}}toFlatGenerationTarget(i=new Set){var a,c;return i.has(this.id)?[]:(i.add(this.id),[this.toGenerationTarget(),...((a=this.defaultValue)==null?void 0:a.toFlatGenerationTarget(i))||[],...((c=this.dataType)==null?void 0:c.toFlatGenerationTarget(i))||[],...this.outputs.flatMap(e=>e.toFlatGenerationTarget(i)),...this.throws?this.throws.toFlatGenerationTarget(i):[]])}clearErrors(){var i,r,a;return this.errors=[],(i=this.dataType)==null||i.clearErrors(),(r=this.defaultValue)==null||r.clearErrors(),this.outputs.forEach(c=>c.clearErrors()),(a=this.throws)==null||a.clearErrors(),this}validate(){return this.errors=$4e(this),{success:!0}}async validateAsync(i={}){const r=z.YieldTracker.from(i);return this.errors=await x4e(this,{tracker:r}),{success:!0}}getErrors(){var r,a;return[...this.errors,...((r=this.defaultValue)==null?void 0:r.getErrors())||[],...((a=this.dataType)==null?void 0:a.getErrors())||[],...this.outputs.flatMap(c=>c.getErrors()),...this.throws?this.throws.getErrors():[]]}async getErrorsAsync(i={}){const r=z.YieldTracker.from(i),a=[...this.errors];if(await r.tick(),this.defaultValue){const c=await this.defaultValue.getErrorsAsync({tracker:r});a.push(...c)}if(this.dataType){const c=await this.dataType.getErrorsAsync({tracker:r});a.push(...c)}for(const c of this.outputs){const e=await c.getErrorsAsync({tracker:r});a.push(...e)}if(this.throws){const c=await this.throws.getErrorsAsync({tracker:r});a.push(...c)}return a}getShallowErrors(){return this.errors}getDefaultValue(){return this.defaultValue||null}setDefaultValue(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"set-default-value"))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[setDefaultValue] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("set-default-value",this.id),this;const a=this.defaultValue;if((a==null?void 0:a.id)!==(i==null?void 0:i.id)){if(a==null||a.remove({ignoreUpstream:!0},r),this.defaultValue=i,this.defaultValue){const c=this.readsValue;this.removeValueWriter(r),c==null||c.removeValueReader(this,r)}r==null||r.add(this,W.Affected)}return r==null||r.attemptAutoclose("set-default-value",this.id),this}clone(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.CloneEntity)),r=null,a=null,c=!0){var V,G,M;const e=Fr(r,this),f=this.toJSON(),h=a||x.UUID.uuid();f.outputs=[];const m=h.split("-id"),E=m[m.length-1||0]||h;f.id=h,f.version=x.UUID.uuid(),f.createdAt=(i==null?void 0:i.timestamp)||B().toISOString(),f.author=(i==null?void 0:i.author)||"1",f.previousVersion=null,f.deleted=!1,f.deletable=!0,f.editable=!0;const b=lr(f,e);r?b.setParent(r,i):b.setParent(this.parent,null),c&&b.subscribe(),b.initChildren(i),i==null||i.add(b,W.Added);const A=(V=this.dataType)==null?void 0:V.clone(i,b,x.UUID.uuid(),c);b.setDataType(A||null,i);const _=(G=this.defaultValue)==null?void 0:G.clone(i,b,x.UUID.uuid(),c);b.setDefaultValue(_||null,i);const P=(M=this.outputs)==null?void 0:M.map((k,K)=>k.clone(i,b,E+"-return-declaration-"+K+"-id",c));return b.outputs=P,this.throws&&(b.throws=this.throws.clone(i,b,E+"-throws-id",c)),i||b.captureVersion(),i==null||i.attemptAutoclose(w.CloneEntity,this.id),b}getMasterInputWithValueWriterFromAllInstances(i){return C([...this.outputs,...this.parent.breakStatements.filter(c=>c.id!==this.id).flatMap(c=>c.outputs),...this.parent.continueStatements.flatMap(c=>c.outputs)]).find(c=>oe(c,this.project)===oe(i,this.project)&&!!c.readsValue)||i}removeUnrecognizedInputs(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveUnrecognizedInputs))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[removeUnrecognizedInputs] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveUnrecognizedInputs,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[],f=this.getDataType(null);return f&&!f.isObject()?[...this.outputs].forEach(m=>{const E=m.remove({ignoreUpstream:!1},i);c.push(...E.removed),r.push(...E.updated)}):f&&f.hasStrictObjectStructure()&&[...this.outputs].forEach(m=>{if(!m.declaration){const b=m.remove({ignoreUpstream:!1},i);c.push(...b.removed),r.push(...b.updated);return}if(![...(f==null?void 0:f.entity).allProperties].find(b=>m.declaration===b)){const b=m.remove({ignoreUpstream:!1},i);c.push(...b.removed),r.push(...b.updated)}}),this.outputs.filter((m,E)=>{const b=this.outputs.findIndex(_=>_.declaration===m.declaration&&_!==m);if(b===-1)return!1;const A=this.outputs[b];return B(A==null?void 0:A.createdAt).isSame(B(m.createdAt))?E>b:!!B(A==null?void 0:A.createdAt).isAfter(m.createdAt)}).forEach(m=>{const E=m.remove({ignoreUpstream:!1},i);c.push(...E.removed),r.push(...E.updated)}),i==null||i.attemptAutoclose(w.RemoveUnrecognizedInputs,this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}syncInputs(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"sync-continue-statement-inputs"))){const r=[],a=[],c=[],e=[],f=this.getDataType(i);if(f)if(f.entity){if(f.isObject()){const b=[...f.entity.properties];this.outputs.filter(P=>!P.declaration||!b.find(V=>{var G;return V.id===((G=P.declaration)==null?void 0:G.id)})).forEach(P=>{const V=b.find(G=>oe(G,this.project)===oe(P,this.project));V&&P.setDeclaration(V,i)}),b.filter(P=>!this.outputs.find(V=>{var G;return((G=V.declaration)==null?void 0:G.id)===P.id})).forEach(P=>{const V={dataType:null,id:x.UUID.uuid(),version:x.UUID.uuid(),createdAt:(i==null?void 0:i.timestamp)||B().toISOString(),author:x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.InputMap,parentRelationType:null,parent:this.toReference(),name:null,description:null,codeName:null,declaration:P,defaultValue:null,index:P.index,readsValue:null},G=Ie(V,this.project);return G.hydrateAncestors(),G.addSelfToProject(i),i==null||i.add(G,W.Added),G.setParent(this,i),G.initChildren(i),this.addOutput(G,i),i||G.captureVersion(),G})}}else return i==null||i.attemptAutoclose("sync-continue-statement-inputs",this.id),{added:[],updated:[],removed:[],affected:[],self:this};else return i==null||i.attemptAutoclose("sync-continue-statement-inputs",this.id),{added:[],updated:[],removed:[],affected:[],self:this};const{updated:h,added:m,removed:E}=this.removeUnrecognizedInputs(i);return a.push(...h),r.push(...m),c.push(...E),this.outputs.forEach(b=>{const{updated:A,added:_,removed:P}=b.afterAllChildrenInitialized(i);a.push(...A),r.push(..._),c.push(...P)}),this.outputs.sort((b,A)=>b.index-A.index),i==null||i.attemptAutoclose("sync-continue-statement-inputs",this.id),{added:C(r),updated:C(a),removed:C(c),affected:C(e),self:this}}setDataType(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetDataType))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[setDataType] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.SetDataType,this.id),this;const a=this.dataType;return(a==null?void 0:a.id)!==(i==null?void 0:i.id)&&(a==null||a.remove({ignoreUpstream:!0},r),this.dataType=i,this.subscribeToDependencies(),r==null||r.add(this,W.Affected)),r==null||r.attemptAutoclose(w.SetDataType,this.id),this}removeDataType(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveDataType))){return this.checkCanEdit(this,i)?(this.dataType&&(this.dataType.remove({ignoreUpstream:!0},i),i==null||i.add(this,W.Affected),this.dataType=null),i==null||i.attemptAutoclose(w.RemoveDataType,this.id),this):(z.Logger.warn(`[removeDataType] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveDataType,this.id),this)}getDataType(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"get-data-type"))){if((!this.dataType||this.dataType.inferred)&&this.project.initialized,this.dataType)return i==null||i.attemptAutoclose("get-data-type",this.id),this.dataType;const r=this.parent.getDataType(i);return r?(i==null||i.attemptAutoclose("get-data-type",this.id),r):(i==null||i.attemptAutoclose("get-data-type",this.id),null)}};R(Ki,"repository",{APICreate:async(i,...r)=>i,APIUpdate:async(i,...r)=>i,APIDelete:async(i,...r)=>i,APIClone:async(i,...r)=>{},APILoad:async(i,...r)=>null,APILoadVersion:async(i,r,...a)=>null}),R(Ki,"type",d.ContinueStatement),R(Ki,"USER_MANAGED_PARENT_TYPES",[d.Loop]),R(Ki,"PARENT_TYPES",[...Ki.USER_MANAGED_PARENT_TYPES]),R(Ki,"MUTABLE_BASE_PROPERTIES",[]),R(Ki,"INMUTABLE_BASE_PROPERTIES",["id","type","version","createdAt","author","previousVersion"]),R(Ki,"BASE_PROPERTIES",[...Ki.MUTABLE_BASE_PROPERTIES,...Ki.INMUTABLE_BASE_PROPERTIES]),R(Ki,"MUTABLE_META_PROPERTIES",["x","y"]),R(Ki,"INMUTABLE_META_PROPERTIES",[...Ki.INMUTABLE_BASE_PROPERTIES]),R(Ki,"META_PROPERTIES",[...Ki.MUTABLE_META_PROPERTIES,...Ki.INMUTABLE_META_PROPERTIES]),R(Ki,"MUTABLE_UPSTREAM_PROPERTIES",["calledBySuccess","calledByError","calledByEntry","readsValue"]),R(Ki,"INMUTABLE_UPSTREAM_PROPERTIES",["parent"]),R(Ki,"UPSTREAM_PROPERTIES",[...Ki.MUTABLE_UPSTREAM_PROPERTIES,...Ki.INMUTABLE_UPSTREAM_PROPERTIES]),R(Ki,"MUTABLE_DOWNSTREAM_PROPERTIES",["outputs","throws"]),R(Ki,"INMUTABLE_DOWNSTREAM_PROPERTIES",["dataType","defaultValue"]),R(Ki,"DOWNSTREAM_PROPERTIES",[...Ki.MUTABLE_DOWNSTREAM_PROPERTIES,...Ki.INMUTABLE_DOWNSTREAM_PROPERTIES]),R(Ki,"PROPERTIES",[...Ki.META_PROPERTIES,...Ki.UPSTREAM_PROPERTIES,...Ki.DOWNSTREAM_PROPERTIES]);let kp=Ki;function lCi(){return vt([st({type:rt(d.ValueDescriptor)}),Ur(He(),Hr())])}function oCi(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.ValueDescriptor)})}function B4e(){return st({id:He(),type:rt(d.ValueDescriptor),name:He(),required:Tr()})}function dCi(){return B4e().merge(st({}))}function uCi(){return vt([st({type:rt(d.Property)}),Ur(He(),Hr())])}function pCi(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.Property)})}function M4e(){return st({id:He(),type:rt(d.Property),name:He(),description:He().nullable(),private:Tr(),static:Tr(),required:Tr(),abstract:Tr()})}function cCi(){return M4e().merge(st({}))}function fCi(){return Bm([Ae.CRON_JOB,Ae.HTTP_ENDPOINT,Ae.PERSISTED_ENTITY,Ae.RELATIONAL_DATABASE])}function yCi(){return vt([st({type:rt(d.BuiltInBaseEntity)}),Ur(He(),Hr())])}function hCi(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.BuiltInBaseEntity)})}function G4e(){return st({id:He(),version:He(),type:rt(d.BuiltInBaseEntity),name:fCi(),description:He().nullable(),abstract:Tr(),static:Tr()})}function mCi(){return G4e().merge(st({}))}function s_(){return vt([st({type:rt(d.ActionDescriptor)}),Ur(He(),Hr())])}function l_(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.ActionDescriptor)})}function rV(){return st({id:He(),type:rt(d.ActionDescriptor),name:He(),description:He().nullable()})}function TCi(){return rV().merge(st({}))}function vCi(){return vt([st({type:rt(d.PrimitiveEntity)}),Ur(He(),Hr())])}function ECi(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.PrimitiveEntity)})}function nV(){return st({id:He(),type:rt(d.PrimitiveEntity),name:He(),description:He().nullable(),static:Tr(),abstract:Tr()})}function bCi(){return nV().merge(st({}))}function ACi(){return vt([st({type:rt(d.DataType)}),Ur(He(),Hr())])}function gCi(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.DataType)})}function k4e(){return st({id:He(),type:rt(d.DataType),isList:Tr().nullable(),asType:Tr().nullable(),options:Ix(He()).optional(),like:Tr().nullable(),implementationChooseOne:Tr().nullable(),foreignKeyAllowed:Tr().nullable(),staticEntities:Tr().nullable(),interactiveEntities:Tr().nullable(),actionEntities:Tr().nullable(),parentRelationType:Bm([ze.AndDataTypeGroup,ze.OrDataTypeGroup]).nullable().optional()})}function ICi(){return k4e().merge(st({entity:He().nullable().optional(),foreignKeyRef:He().nullable().optional(),asType:Tr().nullable().optional(),like:Tr().nullable().optional(),isList:Tr().nullable().optional(),implementationChooseOne:Tr().nullable().optional(),foreignKeyAllowed:Tr().nullable().optional(),staticEntities:Tr().nullable().optional(),interactiveEntities:Tr().nullable().optional(),actionEntities:Tr().nullable().optional(),parentRelationType:Bm([ze.AndDataTypeGroup,ze.OrDataTypeGroup]).nullable().optional()}))}function km(){return vt([st({type:rt(d.ContinueStatement)}),Ur(He(),Hr())])}function jm(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.ContinueStatement)})}function j4e(){return st({id:He(),type:rt(d.ContinueStatement)})}function RCi(){return j4e().merge(st({}))}function BE(){return vt([st({type:rt(d.Loop)}),Ur(He(),Hr())])}function ME(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.Loop)})}function DCi(){return st({id:He(),type:rt(d.Loop)})}function wCi(){return DCi().merge(st({declaration:vt([He(),FE()])}))}function Um(){return vt([st({type:rt(d.BreakStatement)}),Ur(He(),Hr())])}function Fm(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.BreakStatement)})}function U4e(){return st({id:He(),type:rt(d.BreakStatement)})}function CCi(){return U4e().merge(st({}))}function B$(){return vt([st({type:rt(d.OutputMap)}),Ur(He(),Hr())])}function M$(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.OutputMap)})}function F4e(){return st({id:He(),type:rt(d.OutputMap)})}function OCi(){return F4e().merge(st({}))}function GE(){return vt([st({type:rt(d.Operation)}),Ur(He(),Hr())])}function kE(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.Operation)})}function K4e(){return st({id:He(),type:rt(d.Operation)})}function _Ci(){return K4e().merge(st({}))}function j1(){return vt([He(),Va(),Tr(),ms(),au()])}function q4e(){return Ur(He(),j1())}function VCi(){return Ix(vt([j1(),q4e()]))}function PCi(){return vt([j1(),q4e(),VCi()])}function S4e(){return vt([j1(),PCi()])}function NCi(){return Bm(Object.values(fe))}function xCi(){return st({id:He(),name:NCi(),type:rt(d.LiteralValue),value:S4e().nullable()})}function $Ci(){return xCi().merge(st({value:S4e().nullable().optional(),valueAsTypeList:Ix(He()).nullable().optional(),valueAsTypeSingle:He().nullable().optional()}))}function jE(){return vt([st({type:rt(d.FunctionCall)}),Ur(He(),Hr())])}function UE(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.FunctionCall)})}function Z4e(){return st({id:He(),type:rt(d.FunctionCall)})}function LCi(){return Z4e().merge(st({}))}function U1(){return vt([st({type:rt(d.Condition)}),Ur(He(),Hr())])}function F1(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.Condition)})}function H4e(){return st({id:He(),type:rt(d.Condition)})}function BCi(){return H4e().merge(st({}))}function K1(){return vt([st({type:rt(d.Search)}),Ur(He(),Hr())])}function q1(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.Search)})}function W4e(){return st({id:He(),type:rt(d.Search),name:He(),query:Hr(),description:He().nullable()})}function MCi(){return W4e().merge(st({}))}function G$(){return vt([st({type:rt(d.InternalCall)}),Ur(He(),Hr())])}function k$(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.InternalCall)})}function z4e(){return st({id:He(),type:rt(d.InternalCall),index:Va()})}function GCi(){return z4e().merge(st({declaration:vt([He(),FE()])}))}function Y4e(){return vt([st({type:rt(d.InputMap)}),Ur(He(),Hr())])}function J4e(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.InputMap)})}function Q4e(){return st({id:He(),type:rt(d.InputMap),name:He().nullable().optional(),description:He().nullable().optional()})}function kCi(){return Q4e().merge(st({}))}function jCi(){return vt([st({type:rt(d.VariableDeclaration)}),Ur(He(),Hr())])}function UCi(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.VariableDeclaration)})}function X4e(){return st({id:He(),type:rt(d.VariableDeclaration),name:He(),description:He().nullable()})}function FCi(){return X4e().merge(st({}))}function KCi(){return vt([st({type:rt(d.VariableInstance)}),Ur(He(),Hr())])}function qCi(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.VariableInstance)})}function eke(){return st({id:He(),type:rt(d.VariableInstance)})}function SCi(){return eke().merge(st({}))}function Km(){return vt([st({type:rt(d.ReturnStatement)}),Ur(He(),Hr())])}function qm(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.ReturnStatement)})}function tke(){return st({id:He(),type:rt(d.ReturnStatement)})}function ZCi(){return tke().merge(st({}))}function ike(){return vt([st({type:rt(d.InstalledProject)}),Ur(He(),Hr())])}function rke(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.InstalledProject)})}function HCi(){return st({id:He(),type:rt(d.InstalledProject)})}function WCi(){return st({})}function zCi(){return vt([st({type:rt(d.GlobalEvent)}),Ur(He(),Hr())])}function YCi(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.GlobalEvent)})}function nke(){return st({id:He(),type:rt(d.GlobalEvent),name:He(),collapsed:Tr()})}function JCi(){return nke().merge(st({}))}function ay(){return vt([jCi(),KCi()])}function sy(){return vt([UCi(),qCi()])}function ake(){return vt([ay(),Y4e(),Km(),Um(),km()])}function ske(){return vt([sy(),J4e(),qm(),Fm(),jm()])}function QCi(){return vt([ay(),j$(),B$(),GE(),G$(),jE()])}function XCi(){return vt([sy(),U$(),M$(),kE(),k$(),UE()])}function eOi(){return vt([j$(),B$(),ake()])}function tOi(){return vt([U$(),M$(),ske()])}function S1(){return zCi()}function Z1(){return YCi()}function H1(){return vt([GE(),jE(),U1(),K1(),ay(),G$(),BE()])}function W1(){return vt([kE(),UE(),F1(),q1(),sy(),k$(),ME()])}function z1(){return vt([GE(),jE(),U1(),K1(),ay(),BE()])}function Y1(){return vt([kE(),UE(),F1(),q1(),sy(),ME()])}function lke(){return vt([H1(),Km(),Um(),km()])}function oke(){return vt([W1(),qm(),Fm(),jm()])}function dke(){return vt([z1(),Km(),Um(),km()])}function uke(){return vt([Y1(),qm(),Fm(),jm()])}function kc(){return vt([FE(),S1()])}function jc(){return vt([F$(),Z1()])}function iOi(){return vt([H1(),kc()])}function rOi(){return vt([W1(),jc()])}function nOi(){return vt([z1(),kc()])}function aOi(){return vt([Y1(),jc()])}function sOi(){return vt([lke(),kc()])}function lOi(){return vt([oke(),jc()])}function oOi(){return vt([dke(),kc()])}function dOi(){return vt([uke(),jc()])}function uOi(){return vt([kc(),BE()])}function pOi(){return vt([jc(),ME()])}function cOi(){return vt([H1(),kc()])}function fOi(){return vt([W1(),jc()])}function yOi(){return vt([z1(),kc()])}function hOi(){return vt([Y1(),jc()])}function mOi(){return vt([Km(),Um(),km()])}function TOi(){return vt([qm(),Fm(),jm()])}function vOi(){return vt([yCi(),ROi(),ike(),yke(),FE(),S1(),ay(),Y4e(),B$(),U1(),GE(),jE(),j$(),vCi(),ACi(),uCi(),s_(),Km(),km(),Um(),BE(),K1(),s_(),s_(),lCi(),G$()])}function EOi(){return vt([hCi(),DOi(),rke(),hke(),F$(),Z1(),sy(),J4e(),M$(),F1(),kE(),UE(),U$(),ECi(),gCi(),pCi(),l_(),qm(),jm(),Fm(),ME(),q1(),l_(),l_(),oCi(),k$()])}function bOi(){return vt([ike(),yke(),FE(),S1(),ay(),U1(),GE(),jE(),Km(),km(),Um(),BE(),K1()])}function AOi(){return vt([rke(),hke(),F$(),Z1(),sy(),F1(),kE(),UE(),qm(),jm(),Fm(),ME(),q1()])}function j$(){return vt([st({type:rt(d.ArgumentDeclaration)}),Ur(He(),Hr())])}function U$(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.ArgumentDeclaration)})}function pke(){return st({id:He(),type:rt(d.ArgumentDeclaration)})}function gOi(){return pke().merge(st({}))}function FE(){return vt([st({type:rt(d.FunctionDeclaration)}),Ur(He(),Hr())])}function F$(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.FunctionDeclaration)})}function cke(){return st({id:He(),type:rt(d.FunctionDeclaration),name:He(),description:He().nullable()})}function IOi(){return cke()}function ROi(){return vt([st({type:rt(d.Project)}),Ur(He(),Hr())])}function DOi(){return st({entityType:rt(d.Project),entityId:He(),id:He(),type:rt(d.GenericReference)})}function fke(){return st({id:He(),type:rt(d.Project),name:He(),description:He().nullable()})}function wOi(){return fke()}function yke(){return vt([st({type:rt(d.DefinitionEntity)}),Ur(He(),Hr())])}function hke(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.DefinitionEntity)})}function mke(){return st({id:He(),type:rt(d.DefinitionEntity),name:He(),description:He().nullable(),static:Tr(),abstract:Tr()})}function COi(){return mke().merge(st({}))}var Tke="1.13.8",eF=typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global||Function("return this")()||{},J1=Array.prototype,K$=Object.prototype,tF=typeof Symbol<"u"?Symbol.prototype:null,OOi=J1.push,KE=J1.slice,dv=K$.toString,_Oi=K$.hasOwnProperty,vke=typeof ArrayBuffer<"u",VOi=typeof DataView<"u",POi=Array.isArray,iF=Object.keys,rF=Object.create,nF=vke&&ArrayBuffer.isView,NOi=isNaN,xOi=isFinite,Eke=!{toString:null}.propertyIsEnumerable("toString"),aF=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],$Oi=Math.pow(2,53)-1;function vs(s,p){return p=p==null?s.length-1:+p,function(){for(var i=Math.max(arguments.length-p,0),r=Array(i),a=0;a<i;a++)r[a]=arguments[a+p];switch(p){case 0:return s.call(this,r);case 1:return s.call(this,arguments[0],r);case 2:return s.call(this,arguments[0],arguments[1],r)}var c=Array(p+1);for(a=0;a<p;a++)c[a]=arguments[a];return c[p]=r,s.apply(this,c)}}function ly(s){var p=typeof s;return p==="function"||p==="object"&&!!s}function LOi(s){return s===null}function bke(s){return s===void 0}function Ake(s){return s===!0||s===!1||dv.call(s)==="[object Boolean]"}function BOi(s){return!!(s&&s.nodeType===1)}function $a(s){var p="[object "+s+"]";return function(i){return dv.call(i)===p}}const q$=$a("String"),gke=$a("Number"),MOi=$a("Date"),GOi=$a("RegExp"),kOi=$a("Error"),Ike=$a("Symbol"),Rke=$a("ArrayBuffer");var Dke=$a("Function"),jOi=eF.document&&eF.document.childNodes;typeof/./!="function"&&typeof Int8Array!="object"&&typeof jOi!="function"&&(Dke=function(s){return typeof s=="function"||!1});const Ha=Dke,wke=$a("Object");var Cke=VOi&&(!/\[native code\]/.test(String(DataView))||wke(new DataView(new ArrayBuffer(8)))),S$=typeof Map<"u"&&wke(new Map),UOi=$a("DataView");function FOi(s){return s!=null&&Ha(s.getInt8)&&Rke(s.buffer)}const Ug=Cke?FOi:UOi,oy=POi||$a("Array");function Uc(s,p){return s!=null&&_Oi.call(s,p)}var aV=$a("Arguments");(function(){aV(arguments)||(aV=function(s){return Uc(s,"callee")})})();const Z$=aV;function KOi(s){return!Ike(s)&&xOi(s)&&!isNaN(parseFloat(s))}function Oke(s){return gke(s)&&NOi(s)}function _ke(s){return function(){return s}}function Vke(s){return function(p){var i=s(p);return typeof i=="number"&&i>=0&&i<=$Oi}}function Pke(s){return function(p){return p==null?void 0:p[s]}}const Fg=Pke("byteLength"),qOi=Vke(Fg);var SOi=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;function ZOi(s){return nF?nF(s)&&!Ug(s):qOi(s)&&SOi.test(dv.call(s))}const Nke=vke?ZOi:_ke(!1),Ca=Pke("length");function HOi(s){for(var p={},i=s.length,r=0;r<i;++r)p[s[r]]=!0;return{contains:function(a){return p[a]===!0},push:function(a){return p[a]=!0,s.push(a)}}}function xke(s,p){p=HOi(p);var i=aF.length,r=s.constructor,a=Ha(r)&&r.prototype||K$,c="constructor";for(Uc(s,c)&&!p.contains(c)&&p.push(c);i--;)c=aF[i],c in s&&s[c]!==a[c]&&!p.contains(c)&&p.push(c)}function ia(s){if(!ly(s))return[];if(iF)return iF(s);var p=[];for(var i in s)Uc(s,i)&&p.push(i);return Eke&&xke(s,p),p}function WT(s){if(s==null)return!0;var p=Ca(s);return typeof p=="number"&&(oy(s)||q$(s)||Z$(s))?p===0:Ca(ia(s))===0}function $ke(s,p){var i=ia(p),r=i.length;if(s==null)return!r;for(var a=Object(s),c=0;c<r;c++){var e=i[c];if(p[e]!==a[e]||!(e in a))return!1}return!0}function Rr(s){if(s instanceof Rr)return s;if(!(this instanceof Rr))return new Rr(s);this._wrapped=s}Rr.VERSION=Tke;Rr.prototype.value=function(){return this._wrapped};Rr.prototype.valueOf=Rr.prototype.toJSON=Rr.prototype.value;Rr.prototype.toString=function(){return String(this._wrapped)};function sF(s){return new Uint8Array(s.buffer||s,s.byteOffset||0,Fg(s))}var lF="[object DataView]";function WOi(s,p){for(var i=[{a:s,b:p}],r=[],a=[];i.length;){var c=i.pop();if(c===!0){r.pop(),a.pop();continue}if(s=c.a,p=c.b,s===p){if(s!==0||1/s===1/p)continue;return!1}if(s==null||p==null)return!1;if(s!==s){if(p!==p)continue;return!1}var e=typeof s;if(e!=="function"&&e!=="object"&&typeof p!="object")return!1;s instanceof Rr&&(s=s._wrapped),p instanceof Rr&&(p=p._wrapped);var f=dv.call(s);if(f!==dv.call(p))return!1;if(Cke&&f=="[object Object]"&&Ug(s)){if(!Ug(p))return!1;f=lF}switch(f){case"[object RegExp]":case"[object String]":if(""+s==""+p)continue;return!1;case"[object Number]":i.push({a:+s,b:+p});continue;case"[object Date]":case"[object Boolean]":if(+s==+p)continue;return!1;case"[object Symbol]":if(tF.valueOf.call(s)===tF.valueOf.call(p))continue;return!1;case"[object ArrayBuffer]":case lF:i.push({a:sF(s),b:sF(p)});continue}var h=f==="[object Array]";if(!h&&Nke(s)){var m=Fg(s);if(m!==Fg(p))return!1;if(s.buffer===p.buffer&&s.byteOffset===p.byteOffset)continue;h=!0}if(!h){if(typeof s!="object"||typeof p!="object")return!1;var E=s.constructor,b=p.constructor;if(E!==b&&!(Ha(E)&&E instanceof E&&Ha(b)&&b instanceof b)&&"constructor"in s&&"constructor"in p)return!1}for(var A=r.length;A--;)if(r[A]===s){if(a[A]===p)break;return!1}if(!(A>=0))if(r.push(s),a.push(p),i.push(!0),h){if(A=s.length,A!==p.length)return!1;for(;A--;)i.push({a:s[A],b:p[A]})}else{var _=ia(s),P;if(A=_.length,ia(p).length!==A)return!1;for(;A--;){if(P=_[A],!Uc(p,P))return!1;i.push({a:s[P],b:p[P]})}}}return!0}function qE(s){if(!ly(s))return[];var p=[];for(var i in s)p.push(i);return Eke&&xke(s,p),p}function H$(s){var p=Ca(s);return function(i){if(i==null)return!1;var r=qE(i);if(Ca(r))return!1;for(var a=0;a<p;a++)if(!Ha(i[s[a]]))return!1;return s!==Mke||!Ha(i[W$])}}var W$="forEach",Lke="has",z$=["clear","delete"],Bke=["get",Lke,"set"],zOi=z$.concat(W$,Bke),Mke=z$.concat(Bke),YOi=["add"].concat(z$,W$,Lke);const JOi=S$?H$(zOi):$a("Map"),QOi=S$?H$(Mke):$a("WeakMap"),XOi=S$?H$(YOi):$a("Set"),e_i=$a("WeakSet");function Sm(s){for(var p=ia(s),i=p.length,r=Array(i),a=0;a<i;a++)r[a]=s[p[a]];return r}function t_i(s){for(var p=ia(s),i=p.length,r=Array(i),a=0;a<i;a++)r[a]=[p[a],s[p[a]]];return r}function Gke(s){for(var p={},i=ia(s),r=0,a=i.length;r<a;r++)p[s[i[r]]]=i[r];return p}function sV(s){var p=[];for(var i in s)Ha(s[i])&&p.push(i);return p.sort()}function Y$(s,p){return function(i){var r=arguments.length;if(p&&(i=Object(i)),r<2||i==null)return i;for(var a=1;a<r;a++)for(var c=arguments[a],e=s(c),f=e.length,h=0;h<f;h++){var m=e[h];(!p||i[m]===void 0)&&(i[m]=c[m])}return i}}const kke=Y$(qE),Kg=Y$(ia),jke=Y$(qE,!0);function i_i(){return function(){}}function Uke(s){if(!ly(s))return{};if(rF)return rF(s);var p=i_i();p.prototype=s;var i=new p;return p.prototype=null,i}function r_i(s,p){var i=Uke(s);return p&&Kg(i,p),i}function n_i(s){return ly(s)?oy(s)?s.slice():kke({},s):s}function a_i(s,p){return p(s),s}function Fke(s){return oy(s)?s:[s]}Rr.toPath=Fke;function SE(s){return Rr.toPath(s)}function J$(s,p){for(var i=p.length,r=0;r<i;r++){if(s==null)return;s=s[p[r]]}return i?s:void 0}function Kke(s,p,i){var r=J$(s,SE(p));return bke(r)?i:r}function s_i(s,p){p=SE(p);for(var i=p.length,r=0;r<i;r++){var a=p[r];if(!Uc(s,a))return!1;s=s[a]}return!!i}function Q$(s){return s}function uv(s){return s=Kg({},s),function(p){return $ke(p,s)}}function X$(s){return s=SE(s),function(p){return J$(p,s)}}function ZE(s,p,i){if(p===void 0)return s;switch(i??3){case 1:return function(r){return s.call(p,r)};case 3:return function(r,a,c){return s.call(p,r,a,c)};case 4:return function(r,a,c,e){return s.call(p,r,a,c,e)}}return function(){return s.apply(p,arguments)}}function qke(s,p,i){return s==null?Q$:Ha(s)?ZE(s,p,i):ly(s)&&!oy(s)?uv(s):X$(s)}function eL(s,p){return qke(s,p,1/0)}Rr.iteratee=eL;function Os(s,p,i){return Rr.iteratee!==eL?Rr.iteratee(s,p):qke(s,p,i)}function l_i(s,p,i){p=Os(p,i);for(var r=ia(s),a=r.length,c={},e=0;e<a;e++){var f=r[e];c[f]=p(s[f],f,s)}return c}function Ske(){}function o_i(s){return s==null?Ske:function(p){return Kke(s,p)}}function d_i(s,p,i){var r=Array(Math.max(0,s));p=ZE(p,i,1);for(var a=0;a<s;a++)r[a]=p(a);return r}function lV(s,p){return p==null&&(p=s,s=0),s+Math.floor(Math.random()*(p-s+1))}const pv=Date.now||function(){return new Date().getTime()};function Zke(s){var p=function(c){return s[c]},i="(?:"+ia(s).join("|")+")",r=RegExp(i),a=RegExp(i,"g");return function(c){return c=c==null?"":""+c,r.test(c)?c.replace(a,p):c}}const Hke={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},u_i=Zke(Hke),p_i=Gke(Hke),c_i=Zke(p_i),f_i=Rr.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var o_=/(.)^/,y_i={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},h_i=/\\|'|\r|\n|\u2028|\u2029/g;function m_i(s){return"\\"+y_i[s]}var T_i=/^\s*(\w|\$)+\s*$/;function v_i(s,p,i){!p&&i&&(p=i),p=jke({},p,Rr.templateSettings);var r=RegExp([(p.escape||o_).source,(p.interpolate||o_).source,(p.evaluate||o_).source].join("|")+"|$","g"),a=0,c="__p+='";s.replace(r,function(m,E,b,A,_){return c+=s.slice(a,_).replace(h_i,m_i),a=_+m.length,E?c+=`'+
|
|
199
|
+
Specifically for continue statements the parent needs to always be the 'loop' entity that contains it.`})),{errors:r,explanations:a,modifiedData:i}}subscribeDependents(i){return i.forEach(r=>{this.detachedDependents[r.entity.id]||(this.detachedDependents[r.entity.id]=r)}),this}unsubscribeDependents(i){return i.forEach(r=>{this.detachedDependents[r.entity.id]&&delete this.detachedDependents[r.entity.id]}),this}syncDependents(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"sync-dependents"))){const r=[],a=[],c=[],e=[];return Object.values(this.detachedDependents).forEach(f=>{const h=f.entity.afterAllChildrenInitialized(i);r.push(...h.updated),a.push(...h.added),c.push(...h.removed),e.push(...h.affected)}),i==null||i.attemptAutoclose("sync-dependents",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}onDetachedDependencyRemoved(i,r,a){const c=[],e=[],f=[],h=[];if(r==="continue-statement-parent-field"){const{updated:m,added:E,removed:b}=this.remove({ignoreUpstream:!1},a);c.push(...m),e.push(...E),f.push(...b)}if(r==="continue-statement-parent-data-type-field"){const{updated:m,added:E,removed:b}=this.afterAllChildrenInitialized(a);c.push(...m),e.push(...E),f.push(...b)}if(r==="continue-statement-parent-data-type-entity-field"){const{updated:m,added:E,removed:b}=this.afterAllChildrenInitialized(a);c.push(...m),e.push(...E),f.push(...b)}return{updated:C(c),added:C(e),removed:C(f),affected:C(h),self:this}}onDetachedDependencyRestored(i,r,a){const c=[],e=[],f=[],h=[];if(r==="continue-statement-parent-field"){const{updated:m,added:E,removed:b}=this.restore({},a);c.push(...m),e.push(...E),f.push(...b)}if(r==="continue-statement-parent-data-type-field"){const{updated:m,added:E,removed:b}=this.afterAllChildrenInitialized(a);c.push(...m),e.push(...E),f.push(...b)}if(r==="continue-statement-parent-data-type-entity-field"){const{updated:m,added:E,removed:b}=this.afterAllChildrenInitialized(a);c.push(...m),e.push(...E),f.push(...b)}return{updated:C(c),added:C(e),removed:C(f),affected:C(h),self:this}}unsubscribeFromDependencies(){var i,r,a,c,e,f,h,m,E,b,A,_,P;return(i=this.parent)==null||i.unsubscribeDependents([{entity:this,field:"continue-statement-parent-field"}]),(c=(a=(r=this.dataType)==null?void 0:r.entity)==null?void 0:a.unsubscribeDependents)==null||c.call(a,[{entity:this,field:"continue-statement-data-type-entity-field"}]),(f=(e=this.dataType)==null?void 0:e.unsubscribeDependents)==null||f.call(e,[{entity:this,field:"continue-statement-data-type-field"}]),(b=(E=(m=(h=this.parent)==null?void 0:h.dataType)==null?void 0:m.entity)==null?void 0:E.unsubscribeDependents)==null||b.call(E,[{entity:this,field:"continue-statement-parent-data-type-entity-field"}]),(P=(_=(A=this.parent)==null?void 0:A.dataType)==null?void 0:_.unsubscribeDependents)==null||P.call(_,[{entity:this,field:"continue-statement-parent-data-type-field"}]),this}subscribeToDependencies(){var i,r,a,c,e,f,h,m,E,b,A,_,P;return(i=this.parent)==null||i.subscribeDependents([{entity:this,field:"continue-statement-parent-field"}]),(c=(a=(r=this.dataType)==null?void 0:r.entity)==null?void 0:a.subscribeDependents)==null||c.call(a,[{entity:this,field:"continue-statement-data-type-entity-field"}]),(f=(e=this.dataType)==null?void 0:e.subscribeDependents)==null||f.call(e,[{entity:this,field:"continue-statement-data-type-field"}]),(b=(E=(m=(h=this.parent)==null?void 0:h.dataType)==null?void 0:m.entity)==null?void 0:E.subscribeDependents)==null||b.call(E,[{entity:this,field:"continue-statement-parent-data-type-entity-field"}]),(P=(_=(A=this.parent)==null?void 0:A.dataType)==null?void 0:_.subscribeDependents)==null||P.call(_,[{entity:this,field:"continue-statement-parent-data-type-field"}]),this}increaseVersion(i){var r;if(this.project.diggestedBuiltInBaseEntitiesIds.has(this.id))return this;if(i&&!B(i).isValid())throw new Error(`The shared timestamp '${i}' is not a valid ISO 8601 date string.`);if(i&&B(i).isSame(B(this.createdAt)))return this;if(!((r=this.knownVersions)!=null&&r.has(this.version))&&this.project.initialized)throw new Error(`The current ${this.type} ${this.id} version '${this.version}' is not captured in the 'knownVersions' map. Capture the current version before increasing it to avoid losing data.`);if(!this.activeVersion)throw new Error(`Only active versions can be increased. Entity with id '${this.id}' and version '${this.version}' is not active.`);return this.previousVersion=this.version,this.version=x.UUID.uuid(),this.createdAt=B(i).toISOString()||B().toISOString(),this}captureVersion(){var r;const i=((r=this.knownVersions)==null?void 0:r.get(this.version))||new Ki(this,this.project);if(!this.activeVersion)throw new Error(`Only active versions can be captured. Entity of type ${this.type} with id '${this.id}' and version '${this.version}' is not active.`);if(this.version!==i.version)throw new Error(`Captured ${this.type} with id '${this.id}', version '${i.version}' does not match current entity version '${this.version}'.`);return this.knownVersions=this.knownVersions?this.knownVersions.set(this.version,i):new Map().set(this.version,i),this.apply(i),this}snapshot(){const i=new Ki(this,this.project);return this.apply(i)}apply(i){const r=this.toMeta();return i.metaSync(r,null),i.outputs=[...this.outputs],i.readsValue=this.readsValue,i.defaultValue=this.defaultValue,i.dataType=this.dataType,i.throws=this.throws,i.calledBySuccess=[...this.calledBySuccess],i.calledByError=[...this.calledByError],i.calledByEntry=[...this.calledByEntry],i.parent=this.parent,i}recursiveCaptureUpstreamVersions(i){const r=[],a=[],c=[],e=[];if(this.parent){this.parent.increaseVersion(i);const f=this.parent.recursiveCaptureUpstreamVersions(i);r.push(this.parent,...f.updated),a.push(...f.added),c.push(...f.removed)}return{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}async restoreVersion(i,r){var m;const a=[],c=[],e=[],f=[];if(this.version===i&&(r!=null&&r.skipIfSameVersion))return{updated:C(a),added:C(c),removed:C(e),affected:C(f),self:this};if(!this.knownVersions){const E=new Map;for(const[b,A]of this.knownVersions||new Map){if(E.set(b,A),A.activeVersion=!1,A.knownVersions)for(const[_,P]of A.knownVersions)E.set(_,P);A.knownVersions=null}}let h=(m=this.knownVersions)==null?void 0:m.get(i);if(!h){const E=await this.APILoadVersion({},i);if(!E)throw new Error(`Version with id '${i}' for entity with id '${this.id}' not found.`);h=new Ki(E,this.project)}return this.metaSync(h.toShallowJSON(),null),this.previousVersion=h.previousVersion,this.version=h.version,this.createdAt=h.createdAt,this.author=h.author,this.deleted=h.deleted,this.outputs=[...h.outputs],this.readsValue=h.readsValue,this.defaultValue=h.defaultValue,this.dataType=h.dataType,this.throws=h.throws,this.calledBySuccess=[...h.calledBySuccess],this.calledByError=[...h.calledByError],this.calledByEntry=[...h.calledByEntry],this.parent=h.parent,{updated:C(a),added:C(c),removed:C(e),affected:C(f),self:this}}updateWithShallowTransfer(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.UpdateWithShallowTransfer))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[updateWithShallowTransfer] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),this;if(this.metaSync(i,r),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 a=te(i.parent),c=this.project.get(a),e=this.parent;if(e&&e.id!==(c==null?void 0:c.id)&&this.removeFromParent(r),c)this.setParent(c,r),this.addSelfToProject(r);else throw r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),new Error(`${this.type} with id '${this.id}' has a 'parent' reference '${a}' that isn't found in the project`)}else throw r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),new Error(`${this.type} with id '${this.id}' must have a 'parent'`);if(i.readsValue){const a=te(i.readsValue),c=this.project.get(a),e=this.readsValue;e&&e.id!==(c==null?void 0:c.id)&&this.removeValueWriter(r),c&&this.setValueWriter(c,r)}else this.removeValueWriter(r);if(i.calledByEntry.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addEntryCaller(e,r),e.addCall(this,r))}),[...this.calledByEntry].forEach(a=>{i.calledByEntry.find(e=>te(e)===a.id)||(this.removeCaller(a,r),a.removeCall(this,r))}),i.calledBySuccess.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addSuccessCaller(e,r),e.addSuccessCall(this,r))}),[...this.calledBySuccess].forEach(a=>{i.calledBySuccess.find(e=>te(e)===a.id)||(this.removeCaller(a,r),a.removeCall(this,r))}),i.calledByError.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addErrorCaller(e,r),e.addErrorCall(this,r))}),[...this.calledByError].forEach(a=>{i.calledByError.find(e=>te(e)===a.id)||(this.removeCaller(a,r),a.removeCall(this,r))}),i.outputs.forEach(a=>{const c=te(a),e=this.project.get(c);e&&(this.addOutput(e,r),e.setParent(this,r))}),[...this.outputs].forEach(a=>{i.outputs.find(e=>te(e)===a.id)||(this.removeOutput(a,r),a.removeFromParent(r))}),i.dataType){const a=te(i.dataType),c=this.project.get(a);c&&this.setDataType(c,r)}else this.setDataType(null,r);if(i.defaultValue){const a=te(i.defaultValue),c=this.project.get(a);c&&this.setDefaultValue(c,r)}else this.setDefaultValue(null,r);return this.captureVersion(),this.subscribeToDependencies(),r==null||r.attemptAutoclose(w.UpdateWithShallowTransfer,this.id),this}updateWithGenerationTarget(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.UpdateWithGenerationTarget))){var a,c,e;if(!this.checkCanEdit(this,r))return z.Logger.warn(`[updateWithGenerationTarget] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),this;if(this.metaSync(i,r),i.parent){const f=te(i.parent),h=this.project.get(f),m=this.parent;if(m&&m.id!==(h==null?void 0:h.id)&&this.removeFromParent(r),h)this.setParent(h,r),this.addSelfToProject(r);else throw r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),new Error(`${this.type} with id '${this.id}' has a 'parent' reference '${f}' that isn't found in the project`)}if(i.readsValue){const f=te(i.readsValue),h=this.project.get(f);if(!h)throw new Error(`${this.type} with id '${this.id}' has a 'readsValue' reference '${f}' that isn't found in the project`);const m=this.readsValue;m&&m.id!==(h==null?void 0:h.id)&&this.removeValueWriter(r),h&&this.setValueWriter(h,r)}else i.readsValue===null&&this.removeValueWriter(r);return(a=i.calledByEntry)==null||a.forEach(f=>{const h=te(f),m=this.project.get(h);if(m)this.addEntryCaller(m,r),m.addCall(this,r);else throw new Error(`${this.type} with id '${this.id}' has a 'calledByEntry' reference '${h}' that isn't found in the project`)}),i.calledByEntry&&[...this.calledByEntry].forEach(f=>{var m;((m=i.calledByEntry)==null?void 0:m.find(E=>te(E)===f.id))||(this.removeCaller(f,r),f.removeCall(this,r))}),(c=i.calledBySuccess)==null||c.forEach(f=>{const h=te(f),m=this.project.get(h);if(m)this.addSuccessCaller(m,r),m.addSuccessCall(this,r);else throw new Error(`${this.type} with id '${this.id}' has a 'calledBySuccess' reference '${h}' that isn't found in the project`)}),i.calledBySuccess&&[...this.calledBySuccess].forEach(f=>{var m;((m=i.calledBySuccess)==null?void 0:m.find(E=>te(E)===f.id))||(this.removeCaller(f,r),f.removeCall(this,r))}),(e=i.calledByError)==null||e.forEach(f=>{const h=te(f),m=this.project.get(h);if(m)this.addErrorCaller(m,r),m.addErrorCall(this,r);else throw new Error(`${this.type} with id '${this.id}' has a 'calledByError' reference '${h}' that isn't found in the project`)}),i.calledByError&&[...this.calledByError].forEach(f=>{var m;((m=i.calledByError)==null?void 0:m.find(E=>te(E)===f.id))||(this.removeCaller(f,r),f.removeCall(this,r))}),this.captureVersion(),this.subscribeToDependencies(),r==null||r.attemptAutoclose(w.UpdateWithGenerationTarget,this.id),this}hydrateAncestors(){const i=[],r=[],a=[],c=[];if(this.initialData.parent){const e=te(this.initialData.parent),f=this.project.get(e);if(f)this.setParent(f,null),i.push(f);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.readsValue){const e=te(this.initialData.readsValue),f=this.project.get(e);f&&(this.setValueWriter(f,null),i.push(f))}return this.initialData.calledByEntry.forEach(e=>{const f=te(e),h=this.project.get(f);h&&this.addEntryCaller(h,null)}),this.initialData.calledBySuccess.forEach(e=>{const f=te(e),h=this.project.get(f);h&&this.addSuccessCaller(h,null)}),this.initialData.calledByError.forEach(e=>{const f=te(e),h=this.project.get(f);h&&this.addErrorCaller(h,null)}),{updated:C(i),added:C(r),removed:C(a),affected:C(c),self:this}}afterAllChildrenInitialized(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AfterAllChildrenInitialized))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[afterAllChildrenInitialized] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.AfterAllChildrenInitialized,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];if(this.initialized=!0,!this.dataType||this.dataType.inferred,this.readsValue&&this.defaultValue&&(this.project.diggestedBuiltInBaseEntitiesIds.has(this.defaultValue.id)||this.defaultValue.remove({ignoreUpstream:!1},i),this.setDefaultValue(null,i)),this.defaultValue&&!this.readsValue&&!this.project.diggestedBuiltInBaseEntitiesIds.has(this.id)&&this.project.diggestedBuiltInBaseEntitiesIds.has(this.defaultValue.id)){const b=this.defaultValue.clone(i,this);this.setDefaultValue(b,i)}const{added:f,updated:h,removed:m,affected:E}=this.syncInputs(i);return a.push(...f),r.push(...h),c.push(...m),e.push(...E),this.parent.syncTerminationStatements(i),this.outputs.sort((b,A)=>{var _,P;return(b.index??((_=b.declaration)==null?void 0:_.index))-(A.index??((P=A.declaration)==null?void 0:P.index))}),i==null||i.attemptAutoclose(w.AfterAllChildrenInitialized,this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}addSelfToProject(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"add-self-to-project"))){var f,h;const r=[this],a=[],c=[],e=[];return this.readsValue&&(this.readsValue.addValueReader(this,i),r.push(this.readsValue)),this.calledByEntry.forEach(m=>{m.addCall(this,i),r.push(m)}),this.calledBySuccess.forEach(m=>{m.addSuccessCall(this,i),r.push(m)}),this.calledByError.forEach(m=>{m.addErrorCall(this,i),r.push(m)}),this.parent.addContinueStatement(this),r.push(this),i==null||i.add(this.parent,W.Affected),(f=this.parent)==null||f.breakStatements.forEach(m=>{m.id!==this.id&&(e.push(m),i==null||i.add(m,W.Affected))}),(h=this.parent)==null||h.continueStatements.forEach(m=>{m.id!==this.id&&(e.push(m),i==null||i.add(m,W.Affected))}),this.subscribe(),this.subscribeToDependencies(),i==null||i.attemptAutoclose("add-self-to-project",this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}get calledBy(){return[...this.calledByEntry,...this.calledBySuccess,...this.calledByError]}addSuccessCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddSuccessCaller)),a=!1){var c;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddSuccessCaller,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddSuccessCaller}-${this.id}--${Me.CannotSuccessCallItself}`,action:w.AddSuccessCaller,owner:this,errorReason:Me.CannotSuccessCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddSuccessCaller})),this.calledBySuccess.find(e=>e.id===i.id)||(this.calledBySuccess.push(i),r==null||r.add(this,W.Updated),a&&bt(this,r)),r==null||r.attemptAutoclose(w.AddSuccessCaller,this.id),this):this}addErrorCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddErrorCaller)),a=!1){var c;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddErrorCaller,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddErrorCaller}-${this.id}--${Me.CannotErrorCallItself}`,action:w.AddErrorCaller,owner:this,errorReason:Me.CannotErrorCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddErrorCaller})),this.calledByError.find(e=>e.id===i.id)||(this.calledByError.push(i),r==null||r.add(this,W.Updated),a&&bt(this,r)),r==null||r.attemptAutoclose(w.AddErrorCaller,this.id),this):this}addEntryCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.AddEntryCaller)),a=!1){var c;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.AddEntryCaller,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.AddEntryCaller}-${this.id}--${Me.CannotEntryCallItself}`,action:w.AddEntryCaller,owner:this,errorReason:Me.CannotEntryCallItself,rootAction:((c=r==null?void 0:r.self)==null?void 0:c.id)===this.id&&(r==null?void 0:r.actionName)===w.AddEntryCaller})),this.calledByEntry.find(e=>e.id===i.id)||(this.calledByEntry.push(i),r==null||r.add(this,W.Updated),a&&bt(this,r)),r==null||r.attemptAutoclose(w.AddEntryCaller,this.id),this):this}removeCaller(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"remove-caller")),a=!1){return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.RemoveCaller,r)?(this.calledBySuccess=this.calledBySuccess.filter(c=>c.id!==i.id?!0:(r==null||r.add(this,W.Updated),r==null||r.add(c,W.Affected),!1)),this.calledByError=this.calledByError.filter(c=>c.id!==i.id?!0:(r==null||r.add(this,W.Updated),r==null||r.add(c,W.Affected),!1)),this.calledByEntry=this.calledByEntry.filter(c=>c.id!==i.id?!0:(r==null||r.add(this,W.Updated),r==null||r.add(c,W.Affected),!1)),a&&bt(this,r),r==null||r.attemptAutoclose(w.RemoveCaller,this.id),this):this}setThrows(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"set-throws"))){var a;if(!this.checkCanEdit(this,r))return z.Logger.warn(`[setThrows] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("set-throws",this.id),this;if(i!==null&&i.parentRelationType!==dd.Error)throw new Error("The 'throws' InputMap must have a parentRelationType of 'Error'.");return((a=this.throws)==null?void 0:a.id)!==(i==null?void 0:i.id)&&(this.throws=i,r==null||r.add(this,W.Updated)),r==null||r.attemptAutoclose("set-throws",this.id),this}addOutput(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"add-output"))){return this.checkCanEdit(this,r)?this.outputs.includes(i)?(r==null||r.attemptAutoclose("add-output",this.id),this):(this.outputs.push(i),r==null||r.add(this,W.Affected),r==null||r.attemptAutoclose("add-output",this.id),this):(z.Logger.warn(`[addOutput] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("add-output",this.id),this)}removeOutput(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"remove-output"))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[removeOutput] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("remove-output",this.id),this;const a=this.outputs.findIndex(c=>c.id===i.id);return a>-1&&(this.outputs.splice(a,1),r&&(r==null||r.add(this,W.Affected))),r==null||r.attemptAutoclose("remove-output",this.id),this}setParent(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetParent))){var a;return this.checkCanEditWithCounterpartAndSideEffects(this,i,w.SetParent,r)?(((a=this.parent)==null?void 0:a.id)!==(i==null?void 0:i.id)&&(this.parent=i,r&&(r==null||r.add(this,W.Updated))),r==null||r.attemptAutoclose(w.SetParent,this.id),this):this}setValueWriter(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetValueWriter))){var a,c,e;return this.checkCanEditFromScopeOwnerWithSideEffects(this,w.SetValueWriter,r)?((i==null?void 0:i.id)===this.id&&(r==null||r.event({id:`${w.SetValueWriter}-${this.id}--${Me.CannotValueWriteItself}`,action:w.SetValueWriter,owner:this,errorReason:Me.CannotValueWriteItself,rootAction:((a=r==null?void 0:r.self)==null?void 0:a.id)===this.id&&(r==null?void 0:r.actionName)===w.SetValueWriter})),((c=this.readsValue)==null?void 0:c.id)!==(i==null?void 0:i.id)&&(this.readsValue=i,this.readsValue&&((e=this.defaultValue)==null||e.remove({ignoreUpstream:!1},r)),r==null||r.add(this,W.Updated)),r==null||r.attemptAutoclose(w.SetValueWriter,this.id),this):this}removeValueWriter(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveValueWriter))){return this.readsValue&&!this.checkCanEditFromScopeOwnerWithSideEffects(this,w.RemoveValueWriter,i)?this:(this.readsValue&&(this.readsValue=null,i==null||i.add(this,W.Updated)),i==null||i.attemptAutoclose(w.RemoveValueWriter,this.id),this)}initChildren(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"init-children"))){return this.initialized||this.startedInitialization?this:(this.startedInitialization=!0,this.initialData.defaultValue&&(this.defaultValue=Ie(this.initialData.defaultValue,this.project),this.defaultValue.setParent(this,null),this.defaultValue.initChildren(i)),this.initialData.dataType&&(this.dataType=Ie(this.initialData.dataType,this.project),this.dataType.setParent(this,null),this.dataType.initChildren(i)),uy.initReadsValue(this),this.outputs=this.initialData.outputs.map(r=>{const a=Ie(r,this.project);return a.setParent(this,null),a.initChildren(i),a}),this.initialData.throws&&(this.throws=Ie(this.initialData.throws,this.project),this.throws.setParent(this,null),this.throws.initChildren(i)),this.subscribeToDependencies(),this.afterAllChildrenInitialized(i),i==null||i.attemptAutoclose("init-children",this.id),this)}subscribe(){var i;return this.activeVersion=!0,(i=this.knownVersions)==null||i.forEach(r=>{r.version!==this.version&&(r.activeVersion=!1)}),this.project.subscribeInstance(this),this}unsubscribe(){return this.project.unsubscribeInstance(this),this}metaSync(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"meta-sync"))){const a=tn(this,i,r),c=en(this,a),e=this.toMeta();return this.x=a.x||e.x,this.y=a.y||e.y,super.baseMetaSync(a,this,r),a.deleted===!0&&!e.deleted?r==null||r.add(this,W.Removed):a.deleted===!1&&e.deleted?r==null||r.add(this,W.Added):c&&(r==null||r.add(this,W.Updated)),r==null||r.attemptAutoclose("meta-sync",this.id),this}async APILoad(i=Ke,...r){return await Ki.repository.APILoad(this.id,...r),this}async APICreate(i=Ke,...r){return await Ki.repository.APICreate(this.toShallowJSON(),...r),this}async APIUpdate(i=Ke,...r){return await Ki.repository.APIUpdate(this.toShallowJSON(),...r),this}async APIDelete(i=Ke,...r){return await Ki.repository.APIDelete(this.toShallowJSON(),...r),this}async APIClone(i=Ke,...r){return await Ki.repository.APIClone(this.id,...r),this}async APILoadVersion(i=Ke,r,...a){return await Ki.repository.APILoadVersion(this.id,r,...a)}removeFromParent(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveFromParent))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[removeFromParent] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveFromParent,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];return this.parent.removeContinueStatement(this),this.parent.detachedChildren.includes(this)&&this.parent.unsubscribeDetachedChild(this),i==null||i.attemptAutoclose(w.RemoveFromParent,this.id),{added:C(c),updated:C(r),removed:C(a),affected:C(e),self:this}}remove({ignoreUpstream:i}={ignoreUpstream:!1},r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveEntity))){var h,m,E;if(!this.checkCanDelete(this,r))return z.Logger.warn(`[remove] User is not allowed to delete or edit this ${this.type} entity with id: ${this.id}`),r==null||r.event({id:`${w.RemoveEntity}-${this.id}--${Me.ActionOwnerEntityNonDeletable}`,action:w.RemoveEntity,owner:this,errorReason:Me.ActionOwnerEntityNonDeletable,rootAction:((h=r==null?void 0:r.self)==null?void 0:h.id)===this.id&&(r==null?void 0:r.actionName)===w.RemoveEntity}),r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const a=[],c=[],e=[],f=[];if(r!=null&&r.hasRemoved(this.id))return r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};if(c.push(this),this.unsubscribe(),this.unsubscribeFromDependencies(),this.project.subscribeDeletedInstance(this),this.metaSync({deleted:!0},r),Object.values(this.detachedDependents).forEach(b=>{const{updated:A,removed:_,added:P}=b.entity.onDetachedDependencyRemoved(this,b.field,r);a.push(...A),c.push(..._),e.push(...P)}),this.readsValue&&(a.push(this.readsValue),this.readsValue.removeValueReader(this,r)),this.outputs.forEach(b=>{const{updated:A,removed:_}=b.remove({ignoreUpstream:!0},r);a.push(...A),c.push(..._)}),this.throws){const{updated:b,removed:A}=this.throws.remove({ignoreUpstream:!0},r);a.push(...b),c.push(...A)}if(this.dataType){const{updated:b,removed:A}=this.dataType.remove({ignoreUpstream:!0},r);a.push(...b),c.push(...A)}if(!i){const b=this.removeFromParent(r);e.push(...b.added),a.push(...b.updated),c.push(...b.removed),f.push(...b.affected),this.calledBy.forEach(A=>{a.push(A),A.removeCall(this,r)})}return r==null||r.add(this.parent,W.Affected),(m=this.parent)==null||m.breakStatements.forEach(b=>{b.id!==this.id&&(f.push(b),r==null||r.add(b,W.Affected))}),(E=this.parent)==null||E.continueStatements.forEach(b=>{b.id!==this.id&&(f.push(b),r==null||r.add(b,W.Affected))}),r==null||r.attemptAutoclose(w.RemoveEntity,this.id),{added:C(e),updated:C(a),removed:C(c),affected:C(f),self:this}}restore({}={},i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RestoreEntity))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[restore] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RestoreEntity,this.id),{added:[],updated:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[];if(i!=null&&i.hasAdded(this.id))return i==null||i.attemptAutoclose(w.RestoreEntity,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(f=>{const{updated:h,removed:m,added:E}=f.entity.onDetachedDependencyRestored(this,f.field,i);a.push(...h),c.push(...m),r.push(...E)}),this.readsValue&&(a.push(this.readsValue),this.readsValue.addValueReader(this,i)),this.outputs.forEach(f=>{const{updated:h}=f.restore({},i);a.push(...h)}),this.throws){const{updated:f}=this.throws.restore({},i);a.push(...f)}if(this.dataType){const{updated:f}=this.dataType.restore({},i);a.push(...f)}return this.parent.addContinueStatement(this),this.calledBySuccess.forEach(f=>{a.push(f),f.addSuccessCall(this,i)}),this.calledByError.forEach(f=>{a.push(f),f.addErrorCall(this,i)}),this.calledByEntry.forEach(f=>{a.push(f),f.addCall(this,i)}),i==null||i.attemptAutoclose(w.RestoreEntity,this.id),{added:C(r),updated:C(a),removed:C(c),affected:C(e),self:this}}toFlat(i=new Set){return i.has(this.id)?[]:(i.add(this.id),[this,...this.outputs.flatMap(a=>a.toFlat(i)),...this.calledBy.flatMap(a=>a.toFlat(i)),...this.throws?this.throws.toFlat(i):[],...this.dataType?this.dataType.toFlat(i):[]])}toFlatIds(i=new Set){return i.has(this.id)?[]:(i.add(this.id),[this.id,...this.outputs.flatMap(a=>a.toFlatIds(i)),...this.calledBy.flatMap(a=>a.toFlatIds(i)),...this.throws?this.throws.toFlatIds(i):[],...this.dataType?this.dataType.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,editable:this.editable,deletable:this.deletable}}toJSON(i=new Set){var r,a,c,e,f;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,editable:this.editable,deletable:this.deletable,x:this.x,y:this.y,defaultValue:((r=this.defaultValue)==null?void 0:r.toJSON(i))||null,dataType:((a=this.dataType)==null?void 0:a.toJSON(i))||null,readsValue:((c=this.readsValue)==null?void 0:c.toReference())||null,calledBySuccess:this.calledBySuccess.map(h=>h.toReference()),calledByError:this.calledByError.map(h=>h.toReference()),calledByEntry:this.calledByEntry.map(h=>h.toReference()),outputs:this.outputs.map(h=>h.toJSON(i)),throws:((e=this.throws)==null?void 0:e.toJSON(i))||null,parent:((f=this.parent)==null?void 0:f.toReference())||null})}toJSONClone(i=at){var a,c,e,f,h,m,E,b,A,_;let r;return(a=i.seenEntityMaps)!=null&&a.has(this.id)?r=i.seenEntityMaps.get(this.id):(r=i.newId||dn(this,this.project,i.uuidStrategy),i.seenEntityMaps&&i.seenEntityMaps.set(this.id,r)),(c=i.seenEntities)!=null&&c.has(r)||(e=i.seenEntities)!=null&&e.has(this.id)?this.toReference({seenEntityMaps:i.seenEntityMaps}):((f=i.seenEntities)==null||f.add(r),(h=i.seenEntities)==null||h.add(this.id),{id:r,version:x.UUID.uuid(),createdAt:i.timestamp||B().toISOString(),previousVersion:null,author:this.author,deleted:this.deleted,type:this.type,editable:this.editable,deletable:this.deletable,x:this.x,y:this.y,defaultValue:((m=this.defaultValue)==null?void 0:m.toJSONClone({...i,newId:null}))||null,dataType:((E=this.dataType)==null?void 0:E.toJSONClone({...i,newId:null}))||null,readsValue:((b=this.readsValue)==null?void 0:b.toReference({seenEntityMaps:i.seenEntityMaps}))||null,calledBySuccess:this.calledBySuccess.map(P=>P.toReference({seenEntityMaps:i.seenEntityMaps})),calledByError:this.calledByError.map(P=>P.toReference({seenEntityMaps:i.seenEntityMaps})),calledByEntry:this.calledByEntry.map(P=>P.toReference({seenEntityMaps:i.seenEntityMaps})),outputs:this.outputs.map(P=>P.toJSONClone({...i,newId:null})),throws:((A=this.throws)==null?void 0:A.toJSONClone({...i,newId:null}))||null,parent:((_=this.parent)==null?void 0:_.toReference({seenEntityMaps:i.seenEntityMaps}))||null})}toReference(i=at){var a;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r+"--"+x.UUID.uuid()+"--ref",type:d.GenericReference,entityId:r,version:this.version,entityType:this.type}}toShallowJSON(i=at){var a,c,e,f,h;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r,version:this.version,createdAt:this.createdAt,previousVersion:this.previousVersion,author:this.author,deleted:this.deleted,type:this.type,editable:this.editable,deletable:this.deletable,x:this.x,y:this.y,defaultValue:((c=this.defaultValue)==null?void 0:c.toReference(i))||null,dataType:((e=this.dataType)==null?void 0:e.toReference(i))||null,readsValue:((f=this.readsValue)==null?void 0:f.toReference(i))||null,outputs:this.outputs.map(m=>m.toReference(i)),calledBySuccess:this.calledBySuccess.map(m=>m.toReference(i)),calledByError:this.calledByError.map(m=>m.toReference(i)),calledByEntry:this.calledByEntry.map(m=>m.toReference(i)),throws:((h=this.throws)==null?void 0:h.toReference(i))||null,parent:this.parent.toReference(i)}}toFlatJSON(i=new Set){var a,c,e;return i.has(this.id)?[]:(i.add(this.id),[this.toShallowJSON(),...((a=this.defaultValue)==null?void 0:a.toFlatJSON(i))||[],...((c=this.dataType)==null?void 0:c.toFlatJSON(i))||[],...this.outputs.flatMap(f=>f.toFlatJSON(i)),...this.calledBy.flatMap(f=>f.toFlatJSON(i)),...((e=this.throws)==null?void 0:e.toFlatJSON(i))||[]])}toGenerationTarget(i=at){var a;let r=this.id;return(a=i.seenEntityMaps)!=null&&a.has(this.id)&&(r=i.seenEntityMaps.get(this.id)),{id:r,type:this.type,calledByEntry:this.calledByEntry.map(c=>c.id),calledByError:this.calledByError.map(c=>c.id),calledBySuccess:this.calledBySuccess.map(c=>c.id),parent:this.parent.id}}toFlatGenerationTarget(i=new Set){var a,c;return i.has(this.id)?[]:(i.add(this.id),[this.toGenerationTarget(),...((a=this.defaultValue)==null?void 0:a.toFlatGenerationTarget(i))||[],...((c=this.dataType)==null?void 0:c.toFlatGenerationTarget(i))||[],...this.outputs.flatMap(e=>e.toFlatGenerationTarget(i)),...this.throws?this.throws.toFlatGenerationTarget(i):[]])}clearErrors(){var i,r,a;return this.errors=[],(i=this.dataType)==null||i.clearErrors(),(r=this.defaultValue)==null||r.clearErrors(),this.outputs.forEach(c=>c.clearErrors()),(a=this.throws)==null||a.clearErrors(),this}validate(){return this.errors=$4e(this),{success:!0}}async validateAsync(i={}){const r=z.YieldTracker.from(i);return this.errors=await x4e(this,{tracker:r}),{success:!0}}getErrors(){var r,a;return[...this.errors,...((r=this.defaultValue)==null?void 0:r.getErrors())||[],...((a=this.dataType)==null?void 0:a.getErrors())||[],...this.outputs.flatMap(c=>c.getErrors()),...this.throws?this.throws.getErrors():[]]}async getErrorsAsync(i={}){const r=z.YieldTracker.from(i),a=[...this.errors];if(await r.tick(),this.defaultValue){const c=await this.defaultValue.getErrorsAsync({tracker:r});a.push(...c)}if(this.dataType){const c=await this.dataType.getErrorsAsync({tracker:r});a.push(...c)}for(const c of this.outputs){const e=await c.getErrorsAsync({tracker:r});a.push(...e)}if(this.throws){const c=await this.throws.getErrorsAsync({tracker:r});a.push(...c)}return a}getShallowErrors(){return this.errors}getDefaultValue(){return this.defaultValue||null}setDefaultValue(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"set-default-value"))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[setDefaultValue] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose("set-default-value",this.id),this;const a=this.defaultValue;if((a==null?void 0:a.id)!==(i==null?void 0:i.id)){if(a==null||a.remove({ignoreUpstream:!0},r),this.defaultValue=i,this.defaultValue){const c=this.readsValue;this.removeValueWriter(r),c==null||c.removeValueReader(this,r)}r==null||r.add(this,W.Affected)}return r==null||r.attemptAutoclose("set-default-value",this.id),this}clone(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.CloneEntity)),r=null,a=null,c=!0){var V,G,M;const e=Fr(r,this),f=this.toJSON(),h=a||x.UUID.uuid();f.outputs=[];const m=h.split("-id"),E=m[m.length-1||0]||h;f.id=h,f.version=x.UUID.uuid(),f.createdAt=(i==null?void 0:i.timestamp)||B().toISOString(),f.author=(i==null?void 0:i.author)||"1",f.previousVersion=null,f.deleted=!1,f.deletable=!0,f.editable=!0;const b=lr(f,e);r?b.setParent(r,i):b.setParent(this.parent,null),c&&b.subscribe(),b.initChildren(i),i==null||i.add(b,W.Added);const A=(V=this.dataType)==null?void 0:V.clone(i,b,x.UUID.uuid(),c);b.setDataType(A||null,i);const _=(G=this.defaultValue)==null?void 0:G.clone(i,b,x.UUID.uuid(),c);b.setDefaultValue(_||null,i);const P=(M=this.outputs)==null?void 0:M.map((k,K)=>k.clone(i,b,E+"-return-declaration-"+K+"-id",c));return b.outputs=P,this.throws&&(b.throws=this.throws.clone(i,b,E+"-throws-id",c)),i||b.captureVersion(),i==null||i.attemptAutoclose(w.CloneEntity,this.id),b}getMasterInputWithValueWriterFromAllInstances(i){return C([...this.outputs,...this.parent.breakStatements.filter(c=>c.id!==this.id).flatMap(c=>c.outputs),...this.parent.continueStatements.flatMap(c=>c.outputs)]).find(c=>oe(c,this.project)===oe(i,this.project)&&!!c.readsValue)||i}removeUnrecognizedInputs(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveUnrecognizedInputs))){if(!this.checkCanEdit(this,i))return z.Logger.warn(`[removeUnrecognizedInputs] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveUnrecognizedInputs,this.id),{updated:[],added:[],removed:[],affected:[],self:this};const r=[],a=[],c=[],e=[],f=this.getDataType(null);return f&&!f.isObject()?[...this.outputs].forEach(m=>{const E=m.remove({ignoreUpstream:!1},i);c.push(...E.removed),r.push(...E.updated)}):f&&f.hasStrictObjectStructure()&&[...this.outputs].forEach(m=>{if(!m.declaration){const b=m.remove({ignoreUpstream:!1},i);c.push(...b.removed),r.push(...b.updated);return}if(![...(f==null?void 0:f.entity).allProperties].find(b=>m.declaration===b)){const b=m.remove({ignoreUpstream:!1},i);c.push(...b.removed),r.push(...b.updated)}}),this.outputs.filter((m,E)=>{const b=this.outputs.findIndex(_=>_.declaration===m.declaration&&_!==m);if(b===-1)return!1;const A=this.outputs[b];return B(A==null?void 0:A.createdAt).isSame(B(m.createdAt))?E>b:!!B(A==null?void 0:A.createdAt).isAfter(m.createdAt)}).forEach(m=>{const E=m.remove({ignoreUpstream:!1},i);c.push(...E.removed),r.push(...E.updated)}),i==null||i.attemptAutoclose(w.RemoveUnrecognizedInputs,this.id),{updated:C(r),added:C(a),removed:C(c),affected:C(e),self:this}}syncInputs(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"sync-continue-statement-inputs"))){const r=[],a=[],c=[],e=[],f=this.getDataType(i);if(f)if(f.entity){if(f.isObject()){const b=[...f.entity.properties];this.outputs.filter(P=>!P.declaration||!b.find(V=>{var G;return V.id===((G=P.declaration)==null?void 0:G.id)})).forEach(P=>{const V=b.find(G=>oe(G,this.project)===oe(P,this.project));V&&P.setDeclaration(V,i)}),b.filter(P=>!this.outputs.find(V=>{var G;return((G=V.declaration)==null?void 0:G.id)===P.id})).forEach(P=>{const V={dataType:null,id:x.UUID.uuid(),version:x.UUID.uuid(),createdAt:(i==null?void 0:i.timestamp)||B().toISOString(),author:x.sessionAuthor,previousVersion:null,deleted:!1,deletable:!0,editable:!0,type:d.InputMap,parentRelationType:null,parent:this.toReference(),name:null,description:null,codeName:null,declaration:P,defaultValue:null,index:P.index,readsValue:null},G=Ie(V,this.project);return G.hydrateAncestors(),G.addSelfToProject(i),i==null||i.add(G,W.Added),G.setParent(this,i),G.initChildren(i),this.addOutput(G,i),i||G.captureVersion(),G})}}else return i==null||i.attemptAutoclose("sync-continue-statement-inputs",this.id),{added:[],updated:[],removed:[],affected:[],self:this};else return i==null||i.attemptAutoclose("sync-continue-statement-inputs",this.id),{added:[],updated:[],removed:[],affected:[],self:this};const{updated:h,added:m,removed:E}=this.removeUnrecognizedInputs(i);return a.push(...h),r.push(...m),c.push(...E),this.outputs.forEach(b=>{const{updated:A,added:_,removed:P}=b.afterAllChildrenInitialized(i);a.push(...A),r.push(..._),c.push(...P)}),this.outputs.sort((b,A)=>b.index-A.index),i==null||i.attemptAutoclose("sync-continue-statement-inputs",this.id),{added:C(r),updated:C(a),removed:C(c),affected:C(e),self:this}}setDataType(i,r=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.SetDataType))){if(!this.checkCanEdit(this,r))return z.Logger.warn(`[setDataType] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),r==null||r.attemptAutoclose(w.SetDataType,this.id),this;const a=this.dataType;return(a==null?void 0:a.id)!==(i==null?void 0:i.id)&&(a==null||a.remove({ignoreUpstream:!0},r),this.dataType=i,this.subscribeToDependencies(),r==null||r.add(this,W.Affected)),r==null||r.attemptAutoclose(w.SetDataType,this.id),this}removeDataType(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,w.RemoveDataType))){return this.checkCanEdit(this,i)?(this.dataType&&(this.dataType.remove({ignoreUpstream:!0},i),i==null||i.add(this,W.Affected),this.dataType=null),i==null||i.attemptAutoclose(w.RemoveDataType,this.id),this):(z.Logger.warn(`[removeDataType] User is not allowed to edit this ${this.type} entity with id: ${this.id}`),i==null||i.attemptAutoclose(w.RemoveDataType,this.id),this)}getDataType(i=this.project.addChangeSet(new S(this.project,x.sessionAuthor,B().toISOString(),this,!0,"get-data-type"))){if((!this.dataType||this.dataType.inferred)&&this.project.initialized,this.dataType)return i==null||i.attemptAutoclose("get-data-type",this.id),this.dataType;const r=this.parent.getDataType(i);return r?(i==null||i.attemptAutoclose("get-data-type",this.id),r):(i==null||i.attemptAutoclose("get-data-type",this.id),null)}};R(Ki,"repository",{APICreate:async(i,...r)=>i,APIUpdate:async(i,...r)=>i,APIDelete:async(i,...r)=>i,APIClone:async(i,...r)=>{},APILoad:async(i,...r)=>null,APILoadVersion:async(i,r,...a)=>null}),R(Ki,"type",d.ContinueStatement),R(Ki,"USER_MANAGED_PARENT_TYPES",[d.Loop]),R(Ki,"PARENT_TYPES",[...Ki.USER_MANAGED_PARENT_TYPES]),R(Ki,"MUTABLE_BASE_PROPERTIES",[]),R(Ki,"INMUTABLE_BASE_PROPERTIES",["id","type","version","createdAt","author","previousVersion"]),R(Ki,"BASE_PROPERTIES",[...Ki.MUTABLE_BASE_PROPERTIES,...Ki.INMUTABLE_BASE_PROPERTIES]),R(Ki,"MUTABLE_META_PROPERTIES",["x","y"]),R(Ki,"INMUTABLE_META_PROPERTIES",[...Ki.INMUTABLE_BASE_PROPERTIES]),R(Ki,"META_PROPERTIES",[...Ki.MUTABLE_META_PROPERTIES,...Ki.INMUTABLE_META_PROPERTIES]),R(Ki,"MUTABLE_UPSTREAM_PROPERTIES",["calledBySuccess","calledByError","calledByEntry","readsValue"]),R(Ki,"INMUTABLE_UPSTREAM_PROPERTIES",["parent"]),R(Ki,"UPSTREAM_PROPERTIES",[...Ki.MUTABLE_UPSTREAM_PROPERTIES,...Ki.INMUTABLE_UPSTREAM_PROPERTIES]),R(Ki,"MUTABLE_DOWNSTREAM_PROPERTIES",["outputs","throws"]),R(Ki,"INMUTABLE_DOWNSTREAM_PROPERTIES",["dataType","defaultValue"]),R(Ki,"DOWNSTREAM_PROPERTIES",[...Ki.MUTABLE_DOWNSTREAM_PROPERTIES,...Ki.INMUTABLE_DOWNSTREAM_PROPERTIES]),R(Ki,"PROPERTIES",[...Ki.META_PROPERTIES,...Ki.UPSTREAM_PROPERTIES,...Ki.DOWNSTREAM_PROPERTIES]);let kp=Ki;function lCi(){return vt([st({type:rt(d.ValueDescriptor)}),Ur(He(),Hr())])}function oCi(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.ValueDescriptor)})}function B4e(){return st({id:He(),type:rt(d.ValueDescriptor),name:He(),required:Tr()})}function dCi(){return B4e().merge(st({}))}function uCi(){return vt([st({type:rt(d.Property)}),Ur(He(),Hr())])}function pCi(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.Property)})}function M4e(){return st({id:He(),type:rt(d.Property),name:He(),description:He().nullable(),private:Tr(),static:Tr(),required:Tr(),abstract:Tr()})}function cCi(){return M4e().merge(st({}))}function fCi(){return Bm([Ae.CRON_JOB,Ae.HTTP_ENDPOINT,Ae.PERSISTED_ENTITY,Ae.RELATIONAL_DATABASE])}function yCi(){return vt([st({type:rt(d.BuiltInBaseEntity)}),Ur(He(),Hr())])}function hCi(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.BuiltInBaseEntity)})}function G4e(){return st({id:He(),version:He(),type:rt(d.BuiltInBaseEntity),name:fCi(),description:He().nullable(),abstract:Tr(),static:Tr()})}function mCi(){return G4e().merge(st({}))}function s_(){return vt([st({type:rt(d.ActionDescriptor)}),Ur(He(),Hr())])}function l_(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.ActionDescriptor)})}function rV(){return st({id:He(),type:rt(d.ActionDescriptor),name:He(),description:He().nullable()})}function TCi(){return rV().merge(st({}))}function vCi(){return vt([st({type:rt(d.PrimitiveEntity)}),Ur(He(),Hr())])}function ECi(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.PrimitiveEntity)})}function nV(){return st({id:He(),type:rt(d.PrimitiveEntity),name:He(),description:He().nullable(),static:Tr(),abstract:Tr()})}function bCi(){return nV().merge(st({}))}function ACi(){return vt([st({type:rt(d.DataType)}),Ur(He(),Hr())])}function gCi(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.DataType)})}function k4e(){return st({id:He(),type:rt(d.DataType),isList:Tr().nullable(),asType:Tr().nullable(),options:Ix(He()).optional(),like:Tr().nullable(),implementationChooseOne:Tr().nullable(),foreignKeyAllowed:Tr().nullable(),staticEntities:Tr().nullable(),interactiveEntities:Tr().nullable(),actionEntities:Tr().nullable(),parentRelationType:Bm([ze.AndDataTypeGroup,ze.OrDataTypeGroup]).nullable().optional()})}function ICi(){return k4e().merge(st({entity:He().nullable().optional(),foreignKeyRef:He().nullable().optional(),asType:Tr().nullable().optional(),like:Tr().nullable().optional(),isList:Tr().nullable().optional(),implementationChooseOne:Tr().nullable().optional(),foreignKeyAllowed:Tr().nullable().optional(),staticEntities:Tr().nullable().optional(),interactiveEntities:Tr().nullable().optional(),actionEntities:Tr().nullable().optional(),parentRelationType:Bm([ze.AndDataTypeGroup,ze.OrDataTypeGroup]).nullable().optional()}))}function km(){return vt([st({type:rt(d.ContinueStatement)}),Ur(He(),Hr())])}function jm(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.ContinueStatement)})}function j4e(){return st({id:He(),type:rt(d.ContinueStatement)})}function RCi(){return j4e().merge(st({}))}function BE(){return vt([st({type:rt(d.Loop)}),Ur(He(),Hr())])}function ME(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.Loop)})}function DCi(){return st({id:He(),type:rt(d.Loop)})}function wCi(){return DCi().merge(st({declaration:vt([He(),FE()])}))}function Um(){return vt([st({type:rt(d.BreakStatement)}),Ur(He(),Hr())])}function Fm(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.BreakStatement)})}function U4e(){return st({id:He(),type:rt(d.BreakStatement)})}function CCi(){return U4e().merge(st({}))}function B$(){return vt([st({type:rt(d.OutputMap)}),Ur(He(),Hr())])}function M$(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.OutputMap)})}function F4e(){return st({id:He(),type:rt(d.OutputMap)})}function OCi(){return F4e().merge(st({}))}function GE(){return vt([st({type:rt(d.Operation)}),Ur(He(),Hr())])}function kE(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.Operation)})}function K4e(){return st({id:He(),type:rt(d.Operation)})}function _Ci(){return K4e().merge(st({}))}function j1(){return vt([He(),Va(),Tr(),ms(),au()])}function q4e(){return Ur(He(),j1())}function VCi(){return Ix(vt([j1(),q4e()]))}function PCi(){return vt([j1(),q4e(),VCi()])}function S4e(){return vt([j1(),PCi()])}function NCi(){return Bm(Object.values(fe))}function xCi(){return st({id:He(),name:NCi(),type:rt(d.LiteralValue),value:S4e().nullable()})}function $Ci(){return xCi().merge(st({value:S4e().nullable().optional(),valueAsTypeList:Ix(He()).nullable().optional(),valueAsTypeSingle:He().nullable().optional()}))}function jE(){return vt([st({type:rt(d.FunctionCall)}),Ur(He(),Hr())])}function UE(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.FunctionCall)})}function Z4e(){return st({id:He(),type:rt(d.FunctionCall)})}function LCi(){return Z4e().merge(st({}))}function U1(){return vt([st({type:rt(d.Condition)}),Ur(He(),Hr())])}function F1(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.Condition)})}function H4e(){return st({id:He(),type:rt(d.Condition)})}function BCi(){return H4e().merge(st({}))}function K1(){return vt([st({type:rt(d.Search)}),Ur(He(),Hr())])}function q1(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.Search)})}function W4e(){return st({id:He(),type:rt(d.Search),name:He(),query:Hr(),description:He().nullable()})}function MCi(){return W4e().merge(st({}))}function G$(){return vt([st({type:rt(d.InternalCall)}),Ur(He(),Hr())])}function k$(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.InternalCall)})}function z4e(){return st({id:He(),type:rt(d.InternalCall),index:Va()})}function GCi(){return z4e().merge(st({declaration:vt([He(),FE()])}))}function Y4e(){return vt([st({type:rt(d.InputMap)}),Ur(He(),Hr())])}function J4e(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.InputMap)})}function Q4e(){return st({id:He(),type:rt(d.InputMap),name:He().nullable().optional(),description:He().nullable().optional()})}function kCi(){return Q4e().merge(st({}))}function jCi(){return vt([st({type:rt(d.VariableDeclaration)}),Ur(He(),Hr())])}function UCi(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.VariableDeclaration)})}function X4e(){return st({id:He(),type:rt(d.VariableDeclaration),name:He(),description:He().nullable()})}function FCi(){return X4e().merge(st({}))}function KCi(){return vt([st({type:rt(d.VariableInstance)}),Ur(He(),Hr())])}function qCi(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.VariableInstance)})}function eke(){return st({id:He(),type:rt(d.VariableInstance)})}function SCi(){return eke().merge(st({}))}function Km(){return vt([st({type:rt(d.ReturnStatement)}),Ur(He(),Hr())])}function qm(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.ReturnStatement)})}function tke(){return st({id:He(),type:rt(d.ReturnStatement)})}function ZCi(){return tke().merge(st({}))}function ike(){return vt([st({type:rt(d.InstalledProject)}),Ur(He(),Hr())])}function rke(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.InstalledProject)})}function HCi(){return st({id:He(),type:rt(d.InstalledProject)})}function WCi(){return st({})}function zCi(){return vt([st({type:rt(d.GlobalEvent)}),Ur(He(),Hr())])}function YCi(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.GlobalEvent)})}function nke(){return st({id:He(),type:rt(d.GlobalEvent),name:He(),collapsed:Tr()})}function JCi(){return nke().merge(st({}))}function ay(){return vt([jCi(),KCi()])}function sy(){return vt([UCi(),qCi()])}function ake(){return vt([ay(),Y4e(),Km(),Um(),km()])}function ske(){return vt([sy(),J4e(),qm(),Fm(),jm()])}function QCi(){return vt([ay(),j$(),B$(),GE(),G$(),jE()])}function XCi(){return vt([sy(),U$(),M$(),kE(),k$(),UE()])}function eOi(){return vt([j$(),B$(),ake()])}function tOi(){return vt([U$(),M$(),ske()])}function S1(){return zCi()}function Z1(){return YCi()}function H1(){return vt([GE(),jE(),U1(),K1(),ay(),G$(),BE()])}function W1(){return vt([kE(),UE(),F1(),q1(),sy(),k$(),ME()])}function z1(){return vt([GE(),jE(),U1(),K1(),ay(),BE()])}function Y1(){return vt([kE(),UE(),F1(),q1(),sy(),ME()])}function lke(){return vt([H1(),Km(),Um(),km()])}function oke(){return vt([W1(),qm(),Fm(),jm()])}function dke(){return vt([z1(),Km(),Um(),km()])}function uke(){return vt([Y1(),qm(),Fm(),jm()])}function kc(){return vt([FE(),S1()])}function jc(){return vt([F$(),Z1()])}function iOi(){return vt([H1(),kc()])}function rOi(){return vt([W1(),jc()])}function nOi(){return vt([z1(),kc()])}function aOi(){return vt([Y1(),jc()])}function sOi(){return vt([lke(),kc()])}function lOi(){return vt([oke(),jc()])}function oOi(){return vt([dke(),kc()])}function dOi(){return vt([uke(),jc()])}function uOi(){return vt([kc(),BE()])}function pOi(){return vt([jc(),ME()])}function cOi(){return vt([H1(),kc()])}function fOi(){return vt([W1(),jc()])}function yOi(){return vt([z1(),kc()])}function hOi(){return vt([Y1(),jc()])}function mOi(){return vt([Km(),Um(),km()])}function TOi(){return vt([qm(),Fm(),jm()])}function vOi(){return vt([yCi(),ROi(),ike(),yke(),FE(),S1(),ay(),Y4e(),B$(),U1(),GE(),jE(),j$(),vCi(),ACi(),uCi(),s_(),Km(),km(),Um(),BE(),K1(),s_(),s_(),lCi(),G$()])}function EOi(){return vt([hCi(),DOi(),rke(),hke(),F$(),Z1(),sy(),J4e(),M$(),F1(),kE(),UE(),U$(),ECi(),gCi(),pCi(),l_(),qm(),jm(),Fm(),ME(),q1(),l_(),l_(),oCi(),k$()])}function bOi(){return vt([ike(),yke(),FE(),S1(),ay(),U1(),GE(),jE(),Km(),km(),Um(),BE(),K1()])}function AOi(){return vt([rke(),hke(),F$(),Z1(),sy(),F1(),kE(),UE(),qm(),jm(),Fm(),ME(),q1()])}function j$(){return vt([st({type:rt(d.ArgumentDeclaration)}),Ur(He(),Hr())])}function U$(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.ArgumentDeclaration)})}function pke(){return st({id:He(),type:rt(d.ArgumentDeclaration)})}function gOi(){return pke().merge(st({}))}function FE(){return vt([st({type:rt(d.FunctionDeclaration)}),Ur(He(),Hr())])}function F$(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.FunctionDeclaration)})}function cke(){return st({id:He(),type:rt(d.FunctionDeclaration),name:He(),description:He().nullable()})}function IOi(){return cke()}function ROi(){return vt([st({type:rt(d.Project)}),Ur(He(),Hr())])}function DOi(){return st({entityType:rt(d.Project),entityId:He(),id:He(),type:rt(d.GenericReference)})}function fke(){return st({id:He(),type:rt(d.Project),name:He(),description:He().nullable()})}function wOi(){return fke()}function yke(){return vt([st({type:rt(d.DefinitionEntity)}),Ur(He(),Hr())])}function hke(){return st({id:He(),type:rt(d.GenericReference),entityId:He(),entityType:rt(d.DefinitionEntity)})}function mke(){return st({id:He(),type:rt(d.DefinitionEntity),name:He(),description:He().nullable(),static:Tr(),abstract:Tr()})}function COi(){return mke().merge(st({}))}var Tke="1.13.8",eF=typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global||Function("return this")()||{},J1=Array.prototype,K$=Object.prototype,tF=typeof Symbol<"u"?Symbol.prototype:null,OOi=J1.push,KE=J1.slice,dv=K$.toString,_Oi=K$.hasOwnProperty,vke=typeof ArrayBuffer<"u",VOi=typeof DataView<"u",POi=Array.isArray,iF=Object.keys,rF=Object.create,nF=vke&&ArrayBuffer.isView,NOi=isNaN,xOi=isFinite,Eke=!{toString:null}.propertyIsEnumerable("toString"),aF=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],$Oi=Math.pow(2,53)-1;function vs(s,p){return p=p==null?s.length-1:+p,function(){for(var i=Math.max(arguments.length-p,0),r=Array(i),a=0;a<i;a++)r[a]=arguments[a+p];switch(p){case 0:return s.call(this,r);case 1:return s.call(this,arguments[0],r);case 2:return s.call(this,arguments[0],arguments[1],r)}var c=Array(p+1);for(a=0;a<p;a++)c[a]=arguments[a];return c[p]=r,s.apply(this,c)}}function ly(s){var p=typeof s;return p==="function"||p==="object"&&!!s}function LOi(s){return s===null}function bke(s){return s===void 0}function Ake(s){return s===!0||s===!1||dv.call(s)==="[object Boolean]"}function BOi(s){return!!(s&&s.nodeType===1)}function $a(s){var p="[object "+s+"]";return function(i){return dv.call(i)===p}}const q$=$a("String"),gke=$a("Number"),MOi=$a("Date"),GOi=$a("RegExp"),kOi=$a("Error"),Ike=$a("Symbol"),Rke=$a("ArrayBuffer");var Dke=$a("Function"),jOi=eF.document&&eF.document.childNodes;typeof/./!="function"&&typeof Int8Array!="object"&&typeof jOi!="function"&&(Dke=function(s){return typeof s=="function"||!1});const Ha=Dke,wke=$a("Object");var Cke=VOi&&(!/\[native code\]/.test(String(DataView))||wke(new DataView(new ArrayBuffer(8)))),S$=typeof Map<"u"&&wke(new Map),UOi=$a("DataView");function FOi(s){return s!=null&&Ha(s.getInt8)&&Rke(s.buffer)}const Ug=Cke?FOi:UOi,oy=POi||$a("Array");function Uc(s,p){return s!=null&&_Oi.call(s,p)}var aV=$a("Arguments");(function(){aV(arguments)||(aV=function(s){return Uc(s,"callee")})})();const Z$=aV;function KOi(s){return!Ike(s)&&xOi(s)&&!isNaN(parseFloat(s))}function Oke(s){return gke(s)&&NOi(s)}function _ke(s){return function(){return s}}function Vke(s){return function(p){var i=s(p);return typeof i=="number"&&i>=0&&i<=$Oi}}function Pke(s){return function(p){return p==null?void 0:p[s]}}const Fg=Pke("byteLength"),qOi=Vke(Fg);var SOi=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;function ZOi(s){return nF?nF(s)&&!Ug(s):qOi(s)&&SOi.test(dv.call(s))}const Nke=vke?ZOi:_ke(!1),Ca=Pke("length");function HOi(s){for(var p={},i=s.length,r=0;r<i;++r)p[s[r]]=!0;return{contains:function(a){return p[a]===!0},push:function(a){return p[a]=!0,s.push(a)}}}function xke(s,p){p=HOi(p);var i=aF.length,r=s.constructor,a=Ha(r)&&r.prototype||K$,c="constructor";for(Uc(s,c)&&!p.contains(c)&&p.push(c);i--;)c=aF[i],c in s&&s[c]!==a[c]&&!p.contains(c)&&p.push(c)}function ia(s){if(!ly(s))return[];if(iF)return iF(s);var p=[];for(var i in s)Uc(s,i)&&p.push(i);return Eke&&xke(s,p),p}function WT(s){if(s==null)return!0;var p=Ca(s);return typeof p=="number"&&(oy(s)||q$(s)||Z$(s))?p===0:Ca(ia(s))===0}function $ke(s,p){var i=ia(p),r=i.length;if(s==null)return!r;for(var a=Object(s),c=0;c<r;c++){var e=i[c];if(p[e]!==a[e]||!(e in a))return!1}return!0}function Rr(s){if(s instanceof Rr)return s;if(!(this instanceof Rr))return new Rr(s);this._wrapped=s}Rr.VERSION=Tke;Rr.prototype.value=function(){return this._wrapped};Rr.prototype.valueOf=Rr.prototype.toJSON=Rr.prototype.value;Rr.prototype.toString=function(){return String(this._wrapped)};function sF(s){return new Uint8Array(s.buffer||s,s.byteOffset||0,Fg(s))}var lF="[object DataView]";function WOi(s,p){for(var i=[{a:s,b:p}],r=[],a=[];i.length;){var c=i.pop();if(c===!0){r.pop(),a.pop();continue}if(s=c.a,p=c.b,s===p){if(s!==0||1/s===1/p)continue;return!1}if(s==null||p==null)return!1;if(s!==s){if(p!==p)continue;return!1}var e=typeof s;if(e!=="function"&&e!=="object"&&typeof p!="object")return!1;s instanceof Rr&&(s=s._wrapped),p instanceof Rr&&(p=p._wrapped);var f=dv.call(s);if(f!==dv.call(p))return!1;if(Cke&&f=="[object Object]"&&Ug(s)){if(!Ug(p))return!1;f=lF}switch(f){case"[object RegExp]":case"[object String]":if(""+s==""+p)continue;return!1;case"[object Number]":i.push({a:+s,b:+p});continue;case"[object Date]":case"[object Boolean]":if(+s==+p)continue;return!1;case"[object Symbol]":if(tF.valueOf.call(s)===tF.valueOf.call(p))continue;return!1;case"[object ArrayBuffer]":case lF:i.push({a:sF(s),b:sF(p)});continue}var h=f==="[object Array]";if(!h&&Nke(s)){var m=Fg(s);if(m!==Fg(p))return!1;if(s.buffer===p.buffer&&s.byteOffset===p.byteOffset)continue;h=!0}if(!h){if(typeof s!="object"||typeof p!="object")return!1;var E=s.constructor,b=p.constructor;if(E!==b&&!(Ha(E)&&E instanceof E&&Ha(b)&&b instanceof b)&&"constructor"in s&&"constructor"in p)return!1}for(var A=r.length;A--;)if(r[A]===s){if(a[A]===p)break;return!1}if(!(A>=0))if(r.push(s),a.push(p),i.push(!0),h){if(A=s.length,A!==p.length)return!1;for(;A--;)i.push({a:s[A],b:p[A]})}else{var _=ia(s),P;if(A=_.length,ia(p).length!==A)return!1;for(;A--;){if(P=_[A],!Uc(p,P))return!1;i.push({a:s[P],b:p[P]})}}}return!0}function qE(s){if(!ly(s))return[];var p=[];for(var i in s)p.push(i);return Eke&&xke(s,p),p}function H$(s){var p=Ca(s);return function(i){if(i==null)return!1;var r=qE(i);if(Ca(r))return!1;for(var a=0;a<p;a++)if(!Ha(i[s[a]]))return!1;return s!==Mke||!Ha(i[W$])}}var W$="forEach",Lke="has",z$=["clear","delete"],Bke=["get",Lke,"set"],zOi=z$.concat(W$,Bke),Mke=z$.concat(Bke),YOi=["add"].concat(z$,W$,Lke);const JOi=S$?H$(zOi):$a("Map"),QOi=S$?H$(Mke):$a("WeakMap"),XOi=S$?H$(YOi):$a("Set"),e_i=$a("WeakSet");function Sm(s){for(var p=ia(s),i=p.length,r=Array(i),a=0;a<i;a++)r[a]=s[p[a]];return r}function t_i(s){for(var p=ia(s),i=p.length,r=Array(i),a=0;a<i;a++)r[a]=[p[a],s[p[a]]];return r}function Gke(s){for(var p={},i=ia(s),r=0,a=i.length;r<a;r++)p[s[i[r]]]=i[r];return p}function sV(s){var p=[];for(var i in s)Ha(s[i])&&p.push(i);return p.sort()}function Y$(s,p){return function(i){var r=arguments.length;if(p&&(i=Object(i)),r<2||i==null)return i;for(var a=1;a<r;a++)for(var c=arguments[a],e=s(c),f=e.length,h=0;h<f;h++){var m=e[h];(!p||i[m]===void 0)&&(i[m]=c[m])}return i}}const kke=Y$(qE),Kg=Y$(ia),jke=Y$(qE,!0);function i_i(){return function(){}}function Uke(s){if(!ly(s))return{};if(rF)return rF(s);var p=i_i();p.prototype=s;var i=new p;return p.prototype=null,i}function r_i(s,p){var i=Uke(s);return p&&Kg(i,p),i}function n_i(s){return ly(s)?oy(s)?s.slice():kke({},s):s}function a_i(s,p){return p(s),s}function Fke(s){return oy(s)?s:[s]}Rr.toPath=Fke;function SE(s){return Rr.toPath(s)}function J$(s,p){for(var i=p.length,r=0;r<i;r++){if(s==null)return;s=s[p[r]]}return i?s:void 0}function Kke(s,p,i){var r=J$(s,SE(p));return bke(r)?i:r}function s_i(s,p){p=SE(p);for(var i=p.length,r=0;r<i;r++){var a=p[r];if(!Uc(s,a))return!1;s=s[a]}return!!i}function Q$(s){return s}function uv(s){return s=Kg({},s),function(p){return $ke(p,s)}}function X$(s){return s=SE(s),function(p){return J$(p,s)}}function ZE(s,p,i){if(p===void 0)return s;switch(i??3){case 1:return function(r){return s.call(p,r)};case 3:return function(r,a,c){return s.call(p,r,a,c)};case 4:return function(r,a,c,e){return s.call(p,r,a,c,e)}}return function(){return s.apply(p,arguments)}}function qke(s,p,i){return s==null?Q$:Ha(s)?ZE(s,p,i):ly(s)&&!oy(s)?uv(s):X$(s)}function eL(s,p){return qke(s,p,1/0)}Rr.iteratee=eL;function Os(s,p,i){return Rr.iteratee!==eL?Rr.iteratee(s,p):qke(s,p,i)}function l_i(s,p,i){p=Os(p,i);for(var r=ia(s),a=r.length,c={},e=0;e<a;e++){var f=r[e];c[f]=p(s[f],f,s)}return c}function Ske(){}function o_i(s){return s==null?Ske:function(p){return Kke(s,p)}}function d_i(s,p,i){var r=Array(Math.max(0,s));p=ZE(p,i,1);for(var a=0;a<s;a++)r[a]=p(a);return r}function lV(s,p){return p==null&&(p=s,s=0),s+Math.floor(Math.random()*(p-s+1))}const pv=Date.now||function(){return new Date().getTime()};function Zke(s){var p=function(c){return s[c]},i="(?:"+ia(s).join("|")+")",r=RegExp(i),a=RegExp(i,"g");return function(c){return c=c==null?"":""+c,r.test(c)?c.replace(a,p):c}}const Hke={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},u_i=Zke(Hke),p_i=Gke(Hke),c_i=Zke(p_i),f_i=Rr.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var o_=/(.)^/,y_i={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},h_i=/\\|'|\r|\n|\u2028|\u2029/g;function m_i(s){return"\\"+y_i[s]}var T_i=/^\s*(\w|\$)+\s*$/;function v_i(s,p,i){!p&&i&&(p=i),p=jke({},p,Rr.templateSettings);var r=RegExp([(p.escape||o_).source,(p.interpolate||o_).source,(p.evaluate||o_).source].join("|")+"|$","g"),a=0,c="__p+='";s.replace(r,function(m,E,b,A,_){return c+=s.slice(a,_).replace(h_i,m_i),a=_+m.length,E?c+=`'+
|
|
200
200
|
((__t=(`+E+`))==null?'':_.escape(__t))+
|
|
201
201
|
'`:b?c+=`'+
|
|
202
202
|
((__t=(`+b+`))==null?'':__t)+
|