diff --git a/.changeset/cold-readers-hide.md b/.changeset/cold-readers-hide.md new file mode 100644 index 00000000000..390288a7a37 --- /dev/null +++ b/.changeset/cold-readers-hide.md @@ -0,0 +1,10 @@ +--- +'@finos/legend-application': patch +'@finos/legend-extension-dsl-diagram': patch +'@finos/legend-extension-mapping-generation': patch +'@finos/legend-graph': patch +'@finos/legend-query': patch +'@finos/legend-server-sdlc': patch +'@finos/legend-shared': patch +'@finos/legend-studio': patch +--- diff --git a/.changeset/new-poems-end.md b/.changeset/new-poems-end.md new file mode 100644 index 00000000000..ff67dcee844 --- /dev/null +++ b/.changeset/new-poems-end.md @@ -0,0 +1,5 @@ +--- +'@finos/legend-graph': major +--- + +**BREAKING CHANGE:** Renamed extra fields added to the metamodels for navigation or other graph management purposes, such as `owner`, `parent`, `uuid`, etc. to `_OWNER`, `_PARENT`, `_UUID`, etc.; these fields are also made `readonly`. diff --git a/packages/legend-application/src/stores/LambdaEditorState.ts b/packages/legend-application/src/stores/LambdaEditorState.ts index e6e98e86b66..045f656c182 100644 --- a/packages/legend-application/src/stores/LambdaEditorState.ts +++ b/packages/legend-application/src/stores/LambdaEditorState.ts @@ -27,7 +27,7 @@ import { * editing _something_ but allows user to edit via text. */ export abstract class LambdaEditorState { - uuid = uuid(); + readonly uuid = uuid(); lambdaPrefix: string; lambdaString: string; // value shown in lambda editor which can be edited parserError?: ParserError | undefined; diff --git a/packages/legend-extension-dsl-diagram/src/models/metamodels/pure/packageableElements/diagram/DSLDiagram_ClassView.ts b/packages/legend-extension-dsl-diagram/src/models/metamodels/pure/packageableElements/diagram/DSLDiagram_ClassView.ts index f98b4da5aaa..32e0cb5e528 100644 --- a/packages/legend-extension-dsl-diagram/src/models/metamodels/pure/packageableElements/diagram/DSLDiagram_ClassView.ts +++ b/packages/legend-extension-dsl-diagram/src/models/metamodels/pure/packageableElements/diagram/DSLDiagram_ClassView.ts @@ -23,7 +23,8 @@ import { DIAGRAM_HASH_STRUCTURE } from '../../../../DSLDiagram_ModelUtils'; import type { Class, PackageableElementReference } from '@finos/legend-graph'; export class ClassView extends PositionedRectangle implements Hashable { - owner: Diagram; + readonly _OWNER: Diagram; + class: PackageableElementReference; id: string; hideProperties?: boolean | undefined; @@ -36,7 +37,7 @@ export class ClassView extends PositionedRectangle implements Hashable { _class: PackageableElementReference, ) { super(new Point(0, 0), new Rectangle(0, 0)); - this.owner = owner; + this._OWNER = owner; this.id = id; this.class = _class; } diff --git a/packages/legend-extension-dsl-diagram/src/models/metamodels/pure/packageableElements/diagram/DSLDiagram_ClassViewReference.ts b/packages/legend-extension-dsl-diagram/src/models/metamodels/pure/packageableElements/diagram/DSLDiagram_ClassViewReference.ts index c1969bca9be..dc64e00930d 100644 --- a/packages/legend-extension-dsl-diagram/src/models/metamodels/pure/packageableElements/diagram/DSLDiagram_ClassViewReference.ts +++ b/packages/legend-extension-dsl-diagram/src/models/metamodels/pure/packageableElements/diagram/DSLDiagram_ClassViewReference.ts @@ -42,7 +42,7 @@ export class ClassViewExplicitReference extends ClassViewReference { private constructor(value: ClassView) { const ownerReference = PackageableElementExplicitReference.create( - value.owner, + value._OWNER, ); super(ownerReference, value); this.ownerReference = ownerReference; diff --git a/packages/legend-extension-dsl-diagram/src/models/metamodels/pure/packageableElements/diagram/DSLDiagram_RelationshipView.ts b/packages/legend-extension-dsl-diagram/src/models/metamodels/pure/packageableElements/diagram/DSLDiagram_RelationshipView.ts index cb1d0e1ed3e..e46c4ad6464 100644 --- a/packages/legend-extension-dsl-diagram/src/models/metamodels/pure/packageableElements/diagram/DSLDiagram_RelationshipView.ts +++ b/packages/legend-extension-dsl-diagram/src/models/metamodels/pure/packageableElements/diagram/DSLDiagram_RelationshipView.ts @@ -23,7 +23,8 @@ import { ClassViewExplicitReference } from './DSLDiagram_ClassViewReference'; import { DIAGRAM_HASH_STRUCTURE } from '../../../../DSLDiagram_ModelUtils'; export class RelationshipView implements Hashable { - owner: Diagram; + readonly _OWNER: Diagram; + from: RelationshipEdgeView; to: RelationshipEdgeView; /** @@ -39,7 +40,7 @@ export class RelationshipView implements Hashable { path: Point[] = []; constructor(owner: Diagram, from: ClassView, to: ClassView) { - this.owner = owner; + this._OWNER = owner; this.from = new RelationshipEdgeView( ClassViewExplicitReference.create(from), ); diff --git a/packages/legend-extension-dsl-diagram/src/stores/studio/DiagramEditorState.ts b/packages/legend-extension-dsl-diagram/src/stores/studio/DiagramEditorState.ts index be102a46d85..94cd04ea4c1 100644 --- a/packages/legend-extension-dsl-diagram/src/stores/studio/DiagramEditorState.ts +++ b/packages/legend-extension-dsl-diagram/src/stores/studio/DiagramEditorState.ts @@ -71,7 +71,7 @@ const DIAGRAM_EDITOR_HOTKEY_MAP = Object.freeze({ }); export abstract class DiagramEditorSidePanelState { - uuid = uuid(); + readonly uuid = uuid(); editorStore: EditorStore; diagramEditorState: DiagramEditorState; @@ -277,7 +277,7 @@ export class DiagramEditorState extends ElementEditorState { } else if (this.renderer.mouseOverClassProperty) { return this.isReadOnly || this.editorStore.graphManagerState.isElementReadOnly( - this.renderer.mouseOverClassProperty.owner, + this.renderer.mouseOverClassProperty._OWNER, ) ? 'diagram-editor__cursor--not-allowed' : 'diagram-editor__cursor--text'; @@ -285,7 +285,7 @@ export class DiagramEditorState extends ElementEditorState { return this.isReadOnly || this.editorStore.graphManagerState.isElementReadOnly( this.renderer.mouseOverPropertyHolderViewLabel.property.value - .owner, + ._OWNER, ) ? 'diagram-editor__cursor--not-allowed' : 'diagram-editor__cursor--text'; @@ -400,7 +400,7 @@ export class DiagramEditorState extends ElementEditorState { ): void => { if ( !this.isReadOnly && - !this.editorStore.graphManagerState.isElementReadOnly(property.owner) + !this.editorStore.graphManagerState.isElementReadOnly(property._OWNER) ) { this.setInlinePropertyEditorState( new DiagramEditorInlinePropertyEditorState( diff --git a/packages/legend-extension-mapping-generation/src/components/MappingGenerationEditor.tsx b/packages/legend-extension-mapping-generation/src/components/MappingGenerationEditor.tsx index f97d0b52ed4..2e60abad96a 100644 --- a/packages/legend-extension-mapping-generation/src/components/MappingGenerationEditor.tsx +++ b/packages/legend-extension-mapping-generation/src/components/MappingGenerationEditor.tsx @@ -172,7 +172,7 @@ const ArrayEditor = observer( {arrayValues.map((value, idx) => ( // NOTE: since the value must be unique, we will use it as the key
{ const profile = graph.getProfile('ui::test1::ProfileTest'); const taggedValue = guaranteeNonNullable(pureEnum.taggedValues[0]); expect(taggedValue.value).toEqual('Enumeration Tag'); - expect(profile).toEqual(taggedValue.tag.value.owner); - expect(profile).toEqual(pureEnum.stereotypes[0]?.value.owner); + expect(profile).toEqual(taggedValue.tag.value._OWNER); + expect(profile).toEqual(pureEnum.stereotypes[0]?.value._OWNER); }); test(unitTest('Class is loaded properly'), () => { @@ -65,7 +65,7 @@ test(unitTest('Class is loaded properly'), () => { const stereotype = guaranteeNonNullable(testClass.stereotypes[0]).value; expect( graph - .getProfile(stereotype.owner.path) + .getProfile(stereotype._OWNER.path) .stereotypes.find((s) => s.value === stereotype.value), ).toBeDefined(); const personClass = graph.getClass('ui::test2::Person'); diff --git a/packages/legend-graph/src/graphManager/action/execution/ExecutionResult.ts b/packages/legend-graph/src/graphManager/action/execution/ExecutionResult.ts index 09329abbcc4..049760bab6a 100644 --- a/packages/legend-graph/src/graphManager/action/execution/ExecutionResult.ts +++ b/packages/legend-graph/src/graphManager/action/execution/ExecutionResult.ts @@ -85,7 +85,7 @@ export class TabularDataSet { } export class TdsExecutionResult extends ExecutionResult { - uuid = uuid(); + readonly _UUID = uuid(); override builder = new TdsBuilder(); result = new TabularDataSet(); } diff --git a/packages/legend-graph/src/graphManager/action/generation/DatabaseBuilderInput.ts b/packages/legend-graph/src/graphManager/action/generation/DatabaseBuilderInput.ts index 66d63c02b90..951fbaf11a8 100644 --- a/packages/legend-graph/src/graphManager/action/generation/DatabaseBuilderInput.ts +++ b/packages/legend-graph/src/graphManager/action/generation/DatabaseBuilderInput.ts @@ -14,11 +14,9 @@ * limitations under the License. */ -import { uuid } from '@finos/legend-shared'; import type { RelationalDatabaseConnection } from '../../../models/metamodels/pure/packageableElements/store/relational/connection/RelationalDatabaseConnection'; export class DatabasePattern { - readonly uuid = uuid(); schemaPattern = ''; tablePattern = ''; escapeSchemaPattern?: boolean | undefined; diff --git a/packages/legend-graph/src/helpers/MappingHelper.ts b/packages/legend-graph/src/helpers/MappingHelper.ts index f88edb935c0..6b8934f2693 100644 --- a/packages/legend-graph/src/helpers/MappingHelper.ts +++ b/packages/legend-graph/src/helpers/MappingHelper.ts @@ -128,7 +128,7 @@ export const getAllSuperSetImplementations = ( ) { const superSetImpl = [ getClassMappingById( - currentSetImpl.parent, + currentSetImpl._PARENT, currentSetImpl.superSetImplementationId, ), ]; diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/PackageableElement.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/PackageableElement.ts index eb1440dd86b..7846cdf2cc9 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/PackageableElement.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/PackageableElement.ts @@ -69,10 +69,10 @@ export interface PackageableElementVisitor { } export abstract class PackageableElement implements Hashable, Stubable { - readonly uuid = uuid(); - + readonly _UUID = uuid(); protected _isDeleted = false; protected _isDisposed = false; + name: string; package?: Package | undefined; diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/PackageableElementReference.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/PackageableElementReference.ts index 56491c12bf7..2c098ef63ac 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/PackageableElementReference.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/PackageableElementReference.ts @@ -134,7 +134,7 @@ export class PackageableElementImplicitReference< // when the parent section does not exist or has been deleted if ( this.parentSection === undefined || - this.parentSection.parent.isDeleted + this.parentSection._OWNER.isDeleted ) { return currentElementPath; } @@ -240,7 +240,7 @@ export class OptionalPackageableElementImplicitReference< // when the parent section does not exist or has been deleted if ( this.parentSection === undefined || - this.parentSection.parent.isDeleted + this.parentSection._OWNER.isDeleted ) { return currentElementPath; } diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/connection/Connection.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/connection/Connection.ts index af089464084..50c48106624 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/connection/Connection.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/connection/Connection.ts @@ -38,9 +38,11 @@ export interface ConnectionVisitor { } export abstract class Connection implements Hashable { - readonly uuid = uuid(); + readonly _UUID = uuid(); - // in Pure right now, this is of type Any[1], but technically it should be a store + /** + * NOTE: in Pure right now, this is of type Any[1], but technically it should be a store + */ store: PackageableElementReference; constructor(store: PackageableElementReference) { diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/AbstractProperty.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/AbstractProperty.ts index e14b6d551e9..43a17067022 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/AbstractProperty.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/AbstractProperty.ts @@ -26,7 +26,7 @@ export type PropertyOwner = Class | Association; export interface AbstractProperty extends Hashable, Stubable { name: string; - owner: PropertyOwner; + _OWNER: PropertyOwner; genericType: GenericTypeReference; multiplicity: Multiplicity; } diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/Association.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/Association.ts index e0be639fc20..ba0ee4f4dc7 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/Association.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/Association.ts @@ -16,6 +16,7 @@ import { type Hashable, + type Writable, guaranteeNonNullable, guaranteeType, assertTrue, @@ -36,19 +37,6 @@ import type { StereotypeReference } from './StereotypeReference'; import { DerivedProperty } from './DerivedProperty'; import type { AbstractProperty } from './AbstractProperty'; -// NOTE: we might want to revisit this decision to initialize to association properties to stubs -const initAssociationProperties = ( - association: Association, -): [Property, Property] => { - const properties: [Property, Property] = [ - Property.createStub(Class.createStub(), Class.createStub()), - Property.createStub(Class.createStub(), Class.createStub()), - ]; - properties[0].owner = association; - properties[1].owner = association; - return properties; -}; - /** * Assocation needs exactly 2 properties (for 2 classes, not enumeration, not primitive), e.g. * employees: Person[*] @@ -69,17 +57,30 @@ export class Association extends PackageableElement implements AnnotatedElement, Hashable, Stubable { - properties: [Property, Property] = initAssociationProperties(this); - stereotypes: StereotypeReference[] = []; - taggedValues: TaggedValue[] = []; - derivedProperties: DerivedProperty[] = []; - /** * To store the abstract properties generated while processing the milestoning properties. The properties * generated are `allVersions`, `allVersionsInRange` and derived property with date parameter. */ _generatedMilestonedProperties: AbstractProperty[] = []; + properties!: [Property, Property]; + stereotypes: StereotypeReference[] = []; + taggedValues: TaggedValue[] = []; + derivedProperties: DerivedProperty[] = []; + + constructor(name: string) { + super(name); + + // NOTE: we might want to revisit this decision to initialize to association properties to stubs + const properties: [Property, Property] = [ + Property.createStub(Class.createStub(), Class.createStub()), + Property.createStub(Class.createStub(), Class.createStub()), + ]; + (properties[0] as Writable)._OWNER = this; + (properties[1] as Writable)._OWNER = this; + this.properties = properties; + } + getFirstProperty = (): Property => guaranteeNonNullable(this.properties[0]); getSecondProperty = (): Property => guaranteeNonNullable(this.properties[1]); getOtherProperty = (property: Property): Property => { diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/Constraint.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/Constraint.ts index 6f1ebfd3f4b..0ab7d7c92eb 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/Constraint.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/Constraint.ts @@ -21,8 +21,8 @@ import type { Class } from './Class'; import type { Stubable } from '../../../../../helpers/Stubable'; export class Constraint implements Hashable, Stubable { - readonly uuid = uuid(); - owner: Class; + readonly _UUID = uuid(); + readonly _OWNER: Class; name: string; /** @@ -42,7 +42,7 @@ export class Constraint implements Hashable, Stubable { constructor(name: string, owner: Class, functionDefinition: RawLambda) { this.name = name; - this.owner = owner; + this._OWNER = owner; this.functionDefinition = functionDefinition; } diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/DerivedProperty.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/DerivedProperty.ts index cb4c646e671..a08e4f865cd 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/DerivedProperty.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/DerivedProperty.ts @@ -34,8 +34,8 @@ import { export class DerivedProperty implements AbstractProperty, AnnotatedElement, Hashable, Stubable { - readonly uuid = uuid(); - owner: PropertyOwner; // readonly + readonly _UUID = uuid(); + readonly _OWNER: PropertyOwner; name: string; genericType: GenericTypeReference; @@ -64,7 +64,7 @@ export class DerivedProperty this.name = name; this.multiplicity = multiplicity; this.genericType = genericType; - this.owner = owner; + this._OWNER = owner; } static createStub = (type: Type, _class: Class): DerivedProperty => new DerivedProperty( diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/Enum.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/Enum.ts index 0c6011c4646..5d595eb55cb 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/Enum.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/Enum.ts @@ -23,8 +23,8 @@ import type { Stubable } from '../../../../../helpers/Stubable'; import type { StereotypeReference } from './StereotypeReference'; export class Enum implements AnnotatedElement, Hashable, Stubable { - readonly uuid = uuid(); - owner: Enumeration; + readonly _UUID = uuid(); + readonly _OWNER: Enumeration; name: string; stereotypes: StereotypeReference[] = []; @@ -32,7 +32,7 @@ export class Enum implements AnnotatedElement, Hashable, Stubable { constructor(name: string, owner: Enumeration) { this.name = name; - this.owner = owner; + this._OWNER = owner; } static createStub = (parentEnumeration: Enumeration): Enum => diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/EnumValueReference.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/EnumValueReference.ts index 4cffa27c08f..e092e07a4e6 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/EnumValueReference.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/EnumValueReference.ts @@ -50,7 +50,7 @@ export class EnumValueExplicitReference extends EnumValueReference { private constructor(value: Enum) { const ownerReference = PackageableElementExplicitReference.create( - value.owner, + value._OWNER, ); super(ownerReference, value); this.ownerReference = ownerReference; diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/GenericType.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/GenericType.ts index e2769078230..46933736ccd 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/GenericType.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/GenericType.ts @@ -19,7 +19,8 @@ import type { Type } from './Type'; import type { Stubable } from '../../../../../helpers/Stubable'; export class GenericType implements Stubable { - readonly uuid = uuid(); + readonly _UUID = uuid(); + rawType: Type; constructor(rawType: Type) { diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/Property.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/Property.ts index 8871b86fb6a..10f0c882111 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/Property.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/Property.ts @@ -33,8 +33,8 @@ import type { StereotypeReference } from './StereotypeReference'; export class Property implements AbstractProperty, AnnotatedElement, Hashable, Stubable { - readonly uuid = uuid(); - owner: PropertyOwner; // readonly + readonly _UUID = uuid(); + readonly _OWNER: PropertyOwner; name: string; multiplicity: Multiplicity; @@ -51,7 +51,7 @@ export class Property this.name = name; this.multiplicity = multiplicity; this.genericType = genericType; - this.owner = owner; + this._OWNER = owner; } static createStub = (type: Type, _class: Class): Property => diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/PropertyReference.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/PropertyReference.ts index e472d59a54f..c910923d1c1 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/PropertyReference.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/PropertyReference.ts @@ -65,9 +65,9 @@ export class PropertyExplicitReference extends PropertyReference { private constructor(value: AbstractProperty) { const ownerReference = PackageableElementExplicitReference.create( - value.owner instanceof Association - ? value.owner.getPropertyAssociatedClass(value) - : value.owner, + value._OWNER instanceof Association + ? value._OWNER.getPropertyAssociatedClass(value) + : value._OWNER, ); super(ownerReference, value); this.ownerReference = ownerReference; diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/Stereotype.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/Stereotype.ts index e758c7c04c4..e75c78ee8b5 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/Stereotype.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/Stereotype.ts @@ -19,13 +19,13 @@ import type { Profile } from './Profile'; import type { Stubable } from '../../../../../helpers/Stubable'; export class Stereotype implements Stubable { - readonly uuid = uuid(); - owner: Profile; + readonly _UUID = uuid(); + readonly _OWNER: Profile; value: string; constructor(owner: Profile, value: string) { - this.owner = owner; + this._OWNER = owner; this.value = value; } diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/StereotypeReference.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/StereotypeReference.ts index 36aa2d1dde7..9b22e5fde79 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/StereotypeReference.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/StereotypeReference.ts @@ -62,7 +62,7 @@ export class StereotypeExplicitReference extends StereotypeReference { private constructor(value: Stereotype) { const ownerReference = PackageableElementExplicitReference.create( - value.owner, + value._OWNER, ); super(ownerReference, value); this.ownerReference = ownerReference; diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/Tag.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/Tag.ts index 9eaad03f82e..dfc35e7be53 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/Tag.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/Tag.ts @@ -19,13 +19,13 @@ import type { Profile } from './Profile'; import type { Stubable } from '../../../../../helpers/Stubable'; export class Tag implements Stubable { - readonly uuid = uuid(); - owner: Profile; + readonly _UUID = uuid(); + readonly _OWNER: Profile; value: string; constructor(owner: Profile, value: string) { - this.owner = owner; + this._OWNER = owner; this.value = value; } diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/TagReference.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/TagReference.ts index 9b5ddea5fcf..5f84504b9f6 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/TagReference.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/TagReference.ts @@ -62,7 +62,7 @@ export class TagExplicitReference extends TagReference { private constructor(value: Tag) { const ownerReference = PackageableElementExplicitReference.create( - value.owner, + value._OWNER, ); super(ownerReference, value); this.ownerReference = ownerReference; diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/TaggedValue.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/TaggedValue.ts index b399d32651d..1ff8672f545 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/TaggedValue.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/domain/TaggedValue.ts @@ -21,7 +21,7 @@ import type { Stubable } from '../../../../../helpers/Stubable'; import { type TagReference, TagExplicitReference } from './TagReference'; export class TaggedValue implements Hashable, Stubable { - readonly uuid = uuid(); + readonly _UUID = uuid(); tag: TagReference; value: string; diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/externalFormat/schemaSet/DSLExternalFormat_Schema.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/externalFormat/schemaSet/DSLExternalFormat_Schema.ts index 2fa9a448c04..370761515fd 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/externalFormat/schemaSet/DSLExternalFormat_Schema.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/externalFormat/schemaSet/DSLExternalFormat_Schema.ts @@ -18,7 +18,7 @@ import { uuid, hashArray, type Hashable } from '@finos/legend-shared'; import { DSL_EXTERNAL_FORMAT_HASH_STRUCTURE } from '../../../../../DSLExternalFormat_ModelUtils'; export class Schema implements Hashable { - readonly uuid = uuid(); + readonly _UUID = uuid(); id?: string | undefined; location?: string | undefined; diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/AssociationImplementation.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/AssociationImplementation.ts index a5ae19799d1..0163b4551ff 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/AssociationImplementation.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/AssociationImplementation.ts @@ -30,7 +30,8 @@ import type { InferableMappingElementIdValue } from './InferableMappingElementId export abstract class AssociationImplementation implements PropertyMappingsImplementation, Hashable { - readonly parent: Mapping; + readonly _PARENT: Mapping; + association: PackageableElementReference; id: InferableMappingElementIdValue; stores: PackageableElementReference[] = []; @@ -42,7 +43,7 @@ export abstract class AssociationImplementation association: PackageableElementExplicitReference, ) { this.id = id; - this.parent = parent; + this._PARENT = parent; this.association = association; } diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/EnumValueMapping.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/EnumValueMapping.ts index 4d3f81e8015..22941a21464 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/EnumValueMapping.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/EnumValueMapping.ts @@ -21,7 +21,7 @@ import type { Stubable } from '../../../../../helpers/Stubable'; import type { EnumValueReference } from '../domain/EnumValueReference'; export class SourceValue implements Stubable { - readonly uuid = uuid(); + readonly _UUID = uuid(); value: Enum | string | number | undefined; @@ -58,7 +58,7 @@ export class EnumValueMapping implements Hashable, Stubable { return isNumber(value) ? value.toString() : value instanceof Enum - ? `${value.owner.path}.${value.name}` + ? `${value._OWNER.path}.${value.name}` : value ?? ''; }), ), diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/EnumerationMapping.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/EnumerationMapping.ts index 21bf7ed7c86..0bba0496e36 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/EnumerationMapping.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/EnumerationMapping.ts @@ -33,7 +33,8 @@ import { } from './InferableMappingElementId'; export class EnumerationMapping implements Hashable, Stubable { - readonly parent: Mapping; + readonly _PARENT: Mapping; + enumeration: PackageableElementReference; id: InferableMappingElementIdValue; sourceType: OptionalPackageableElementReference; @@ -47,7 +48,7 @@ export class EnumerationMapping implements Hashable, Stubable { ) { this.id = id; this.enumeration = enumeration; - this.parent = parent; + this._PARENT = parent; this.sourceType = sourceType; } diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/MappingInclude.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/MappingInclude.ts index 3d0138ad06a..51433826da2 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/MappingInclude.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/MappingInclude.ts @@ -21,12 +21,13 @@ import type { Mapping } from './Mapping'; import type { SubstituteStore } from './SubstituteStore'; export class MappingInclude { - owner: Mapping; + readonly _OWNER: Mapping; + included: PackageableElementReference; storeSubstitutions: SubstituteStore[] = []; constructor(owner: Mapping, included: PackageableElementReference) { - this.owner = owner; + this._OWNER = owner; this.included = included; } diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/MappingTest.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/MappingTest.ts index 6e25761f066..b8968cbbe8c 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/MappingTest.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/MappingTest.ts @@ -25,7 +25,7 @@ import { } from '../../../../../helpers/ValidationHelper'; export class MappingTest implements Hashable { - readonly uuid = uuid(); + readonly _UUID = uuid(); name: string; /** diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/PropertyMapping.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/PropertyMapping.ts index b9f0b1710e5..12077876a84 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/PropertyMapping.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/PropertyMapping.ts @@ -61,9 +61,13 @@ export interface PropertyMappingVisitor { } export abstract class PropertyMapping implements Hashable, Stubable { - readonly isEmbedded: boolean = false; + /** + * the immediate parent instance set implementation that holds the property mappings + */ + readonly _OWNER: PropertyMappingsImplementation; + readonly _isEmbedded: boolean = false; + property: PropertyReference; - owner: PropertyMappingsImplementation; // the immediate parent instance set implementation that holds the property mappings // NOTE: in case the holder of this property mapping is an embedded property mapping, that embedded property mapping is considered the source // otherwise, it is always the top/root `InstanceSetImplementation` that is considered the source implementation // TODO: change this to use `SetImplemenetationReference` @@ -81,7 +85,7 @@ export abstract class PropertyMapping implements Hashable, Stubable { source: SetImplementation, target?: SetImplementation, ) { - this.owner = owner; + this._OWNER = owner; this.sourceSetImplementation = source; this.targetSetImplementation = target; this.property = property; diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/PropertyOwnerImplementation.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/PropertyOwnerImplementation.ts index 46f55fa512a..cc199bc955e 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/PropertyOwnerImplementation.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/PropertyOwnerImplementation.ts @@ -21,5 +21,5 @@ export interface PropertyOwnerImplementation { id: InferableMappingElementIdValue; // TODO: consider changing this to object ref instead of ID // superSetImplementationId?: string | undefined; - parent: Mapping; + _PARENT: Mapping; } diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/SetImplementation.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/SetImplementation.ts index 3c788822875..8093c38380c 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/SetImplementation.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/SetImplementation.ts @@ -69,8 +69,9 @@ export interface SetImplementationVisitor { export abstract class SetImplementation implements PropertyOwnerImplementation, Hashable, Stubable { - readonly parent: Mapping; - readonly isEmbedded: boolean = false; + readonly _PARENT: Mapping; + readonly _isEmbedded: boolean = false; + id: InferableMappingElementIdValue; class: PackageableElementReference; root: InferableMappingElementRoot; @@ -82,7 +83,7 @@ export abstract class SetImplementation root: InferableMappingElementRoot, ) { this.id = id; - this.parent = parent; + this._PARENT = parent; this.class = _class; this.root = root; } diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/SetImplementationContainer.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/SetImplementationContainer.ts index 97fac413a47..fc4caf83b4a 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/SetImplementationContainer.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/SetImplementationContainer.ts @@ -19,7 +19,7 @@ import type { SetImplementationReference } from './SetImplementationReference'; import type { Stubable } from '../../../../../helpers/Stubable'; export class SetImplementationContainer implements Stubable { - readonly uuid = uuid(); + readonly _UUID = uuid(); setImplementation: SetImplementationReference; diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/SetImplementationReference.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/SetImplementationReference.ts index d95b1805e51..d9ae50ce423 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/SetImplementationReference.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/SetImplementationReference.ts @@ -42,7 +42,7 @@ export class SetImplementationExplicitReference extends SetImplementationReferen private constructor(value: SetImplementation) { const ownerReference = PackageableElementExplicitReference.create( - value.parent, + value._PARENT, ); super(ownerReference, value); this.ownerReference = ownerReference; diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/SubstituteStore.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/SubstituteStore.ts index 447bf560eb1..6d0f86ddb36 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/SubstituteStore.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/mapping/SubstituteStore.ts @@ -19,7 +19,8 @@ import type { PackageableElementReference } from '../PackageableElementReference import type { MappingInclude } from './MappingInclude'; export class SubstituteStore { - owner: MappingInclude; + readonly _OWNER: MappingInclude; + original: PackageableElementReference; substitute: PackageableElementReference; @@ -28,7 +29,7 @@ export class SubstituteStore { original: PackageableElementReference, substitue: PackageableElementReference, ) { - this.owner = owner; + this._OWNER = owner; this.original = original; this.substitute = substitue; } diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/runtime/Runtime.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/runtime/Runtime.ts index 2e955be2e84..e28a2521d93 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/runtime/Runtime.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/runtime/Runtime.ts @@ -33,7 +33,7 @@ import { import type { PackageableElementReference } from '../PackageableElementReference'; export class IdentifiedConnection implements Hashable { - readonly uuid = uuid(); + readonly _UUID = uuid(); id: string; connection: Connection; diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/section/Section.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/section/Section.ts index 28e06b628f6..3819ef1ed2c 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/section/Section.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/section/Section.ts @@ -22,13 +22,14 @@ import type { SectionIndex } from './SectionIndex'; import type { PackageableElementExplicitReference } from '../PackageableElementReference'; export abstract class Section implements Hashable { - readonly parent: SectionIndex; + readonly _OWNER: SectionIndex; + parserName: string; elements: PackageableElementExplicitReference[] = []; - constructor(parserName: string, parent: SectionIndex) { + constructor(parserName: string, owner: SectionIndex) { this.parserName = parserName; - this.parent = parent; + this._OWNER = owner; } get hashCode(): string { diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/service/DEPRECATED__ServiceTest.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/service/DEPRECATED__ServiceTest.ts index 9ba038e5267..9b6c3b7810e 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/service/DEPRECATED__ServiceTest.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/service/DEPRECATED__ServiceTest.ts @@ -24,10 +24,10 @@ import type { Service } from './Service'; * @deprecated */ export abstract class DEPRECATED__ServiceTest implements Hashable { - owner: Service; + readonly _OWNER: Service; constructor(owner: Service) { - this.owner = owner; + this._OWNER = owner; } abstract get hashCode(): string; @@ -38,7 +38,7 @@ export abstract class DEPRECATED__ServiceTest implements Hashable { * @deprecated */ export class DEPRECATED__TestContainer implements Hashable { - readonly uuid = uuid(); + readonly _UUID = uuid(); parametersValues: unknown[] = []; // Any[*]; // ValueSpecification? /** diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/service/ServiceExecution.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/service/ServiceExecution.ts index 2e51be74a6e..de3062f28e0 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/service/ServiceExecution.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/service/ServiceExecution.ts @@ -31,7 +31,8 @@ export abstract class ServiceExecution implements Hashable { } export class PureExecution extends ServiceExecution implements Hashable { - owner: Service; + readonly _OWNER: Service; + /** * Studio does not process value specification, they are left in raw JSON form * @@ -42,7 +43,7 @@ export class PureExecution extends ServiceExecution implements Hashable { constructor(func: RawLambda, owner: Service) { super(); this.func = func; - this.owner = owner; + this._OWNER = owner; } get queryValidationResult(): ValidationIssue | undefined { @@ -95,7 +96,7 @@ export class PureSingleExecution extends PureExecution implements Hashable { } export class KeyedExecutionParameter implements Hashable { - readonly uuid = uuid(); + readonly _UUID = uuid(); key: string; mapping: PackageableElementReference; diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/flatData/mapping/EmbeddedFlatDataPropertyMapping.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/flatData/mapping/EmbeddedFlatDataPropertyMapping.ts index 50334fbc8ef..8a36b418c0e 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/flatData/mapping/EmbeddedFlatDataPropertyMapping.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/flatData/mapping/EmbeddedFlatDataPropertyMapping.ts @@ -50,13 +50,14 @@ export class EmbeddedFlatDataPropertyMapping extends AbstractFlatDataPropertyMapping implements InstanceSetImplementation, Hashable { + readonly _PARENT: Mapping; + override readonly _isEmbedded = true; + root = InferableMappingElementRootExplicitValue.create(false); - override readonly isEmbedded = true; class: PackageableElementReference; id: InferableMappingElementIdValue; propertyMappings: PropertyMapping[] = []; rootInstanceSetImplementation: InstanceSetImplementation; // in Pure we call this `setMappingOwner` - readonly parent: Mapping; mappingClass?: MappingClass | undefined; constructor( @@ -72,7 +73,7 @@ export class EmbeddedFlatDataPropertyMapping this.class = _class; this.id = id; this.rootInstanceSetImplementation = rootInstanceSetImplementation; - this.parent = rootInstanceSetImplementation.parent; + this._PARENT = rootInstanceSetImplementation._PARENT; } // As of now, there is no stub cases of Embedded Flat Property Mapping since they are created with an existing property mapping diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/flatData/mapping/FlatDataInstanceSetImplementation.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/flatData/mapping/FlatDataInstanceSetImplementation.ts index 594b9f88693..d1666e9be4a 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/flatData/mapping/FlatDataInstanceSetImplementation.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/flatData/mapping/FlatDataInstanceSetImplementation.ts @@ -85,7 +85,7 @@ export class FlatDataInstanceSetImplementation CORE_HASH_STRUCTURE.FLAT_DATA_INSTANCE_SET_IMPLEMENTATION, super.hashCode, this.sourceRootRecordType.ownerReference.hashValue, - this.sourceRootRecordType.value.owner.name, + this.sourceRootRecordType.value._OWNER.name, this.filter ?? '', hashArray( this.propertyMappings.filter( diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/flatData/model/FlatDataDataType.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/flatData/model/FlatDataDataType.ts index 0829c449913..35cd98393e1 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/flatData/model/FlatDataDataType.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/flatData/model/FlatDataDataType.ts @@ -20,10 +20,10 @@ import type { FlatDataSection } from './FlatDataSection'; import type { PrimitiveType } from '../../../domain/PrimitiveType'; export abstract class FlatDataDataType { - readonly correspondingPrimitiveType?: PrimitiveType | undefined; + readonly _correspondingPrimitiveType?: PrimitiveType | undefined; constructor(correspondingPrimitiveType?: PrimitiveType) { - this.correspondingPrimitiveType = correspondingPrimitiveType; + this._correspondingPrimitiveType = correspondingPrimitiveType; } abstract get hashCode(): string; @@ -156,11 +156,11 @@ export class RootFlatDataRecordType extends FlatDataRecordType implements Hashable { - owner: FlatDataSection; + readonly _OWNER: FlatDataSection; constructor(owner: FlatDataSection) { super(); - this.owner = owner; + this._OWNER = owner; } override get hashCode(): string { diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/flatData/model/FlatDataSection.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/flatData/model/FlatDataSection.ts index 76fe9ca243a..b13a865f38b 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/flatData/model/FlatDataSection.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/flatData/model/FlatDataSection.ts @@ -25,7 +25,8 @@ import type { FlatDataProperty } from './FlatDataProperty'; import type { RootFlatDataRecordType } from './FlatDataDataType'; export class FlatDataSection implements Hashable { - owner: FlatData; + readonly _OWNER: FlatData; + driverId: string; name: string; sectionProperties: FlatDataProperty[] = []; @@ -34,13 +35,13 @@ export class FlatDataSection implements Hashable { constructor(driverId: string, name: string, owner: FlatData) { this.name = name; this.driverId = driverId; - this.owner = owner; + this._OWNER = owner; } getRecordType = (): RootFlatDataRecordType => guaranteeNonNullable( this.recordType, - `No record type defined in section '${this.name}' of flat-data store '${this.owner.path}'`, + `No record type defined in section '${this.name}' of flat-data store '${this._OWNER.path}'`, ); get hashCode(): string { diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/flatData/model/FlatDataSectionReference.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/flatData/model/FlatDataSectionReference.ts index 537d51c386d..3f39f49a797 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/flatData/model/FlatDataSectionReference.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/flatData/model/FlatDataSectionReference.ts @@ -54,7 +54,7 @@ export class FlatDataSectionExplicitReference extends FlatDataSectionReference { private constructor(value: FlatDataSection) { const ownerReference = PackageableElementExplicitReference.create( - value.owner, + value._OWNER, ); super(ownerReference, value); this.ownerReference = ownerReference; diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/flatData/model/RootFlatDataRecordTypeReference.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/flatData/model/RootFlatDataRecordTypeReference.ts index 8f2d8790ce6..0428fdecf72 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/flatData/model/RootFlatDataRecordTypeReference.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/flatData/model/RootFlatDataRecordTypeReference.ts @@ -42,7 +42,7 @@ export class RootFlatDataRecordTypeExplicitReference extends RootFlatDataRecordT private constructor(value: RootFlatDataRecordType) { const ownerReference = PackageableElementExplicitReference.create( - value.owner.owner, + value._OWNER._OWNER, ); super(ownerReference, value); this.ownerReference = ownerReference; diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/relational/mapping/EmbeddedRelationalInstanceSetImplementation.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/relational/mapping/EmbeddedRelationalInstanceSetImplementation.ts index e7403aa9ecc..0230737c91c 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/relational/mapping/EmbeddedRelationalInstanceSetImplementation.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/relational/mapping/EmbeddedRelationalInstanceSetImplementation.ts @@ -49,14 +49,15 @@ export class EmbeddedRelationalInstanceSetImplementation RelationalInstanceSetImplementation, Hashable { + readonly _PARENT: Mapping; + override readonly _isEmbedded = true; + root = InferableMappingElementRootExplicitValue.create(false); - override readonly isEmbedded = true; id: InferableMappingElementIdValue; propertyMappings: PropertyMapping[] = []; class: PackageableElementReference; rootInstanceSetImplementation: RootRelationalInstanceSetImplementation; // in Pure we call this `setMappingOwner` primaryKey: RelationalOperationElement[] = []; - readonly parent: Mapping; mappingClass?: MappingClass | undefined; constructor( @@ -72,7 +73,7 @@ export class EmbeddedRelationalInstanceSetImplementation this.class = _class; this.id = id; this.rootInstanceSetImplementation = rootInstanceSetImplementation; - this.parent = rootInstanceSetImplementation.parent; + this._PARENT = rootInstanceSetImplementation._PARENT; } getEmbeddedSetImplmentations(): InstanceSetImplementation[] { diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/relational/model/ColumnReference.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/relational/model/ColumnReference.ts index 5bcbc7a1856..b2e9fb17698 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/relational/model/ColumnReference.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/relational/model/ColumnReference.ts @@ -43,7 +43,7 @@ export class ColumnExplicitReference extends ColumnReference { private constructor(value: Column) { const ownerReference = PackageableElementExplicitReference.create( - getSchemaFromRelation(value.owner).owner, + getSchemaFromRelation(value.owner)._OWNER, ); super(ownerReference, value); this.ownerReference = ownerReference; diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/relational/model/Schema.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/relational/model/Schema.ts index 836674b0ad1..dcc82eb8540 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/relational/model/Schema.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/relational/model/Schema.ts @@ -26,31 +26,32 @@ import type { View } from './View'; import type { Relation } from './RelationalOperationElement'; export class Schema implements Hashable { - owner: Database; + readonly _OWNER: Database; + name: string; tables: Table[] = []; views: View[] = []; constructor(name: string, owner: Database) { this.name = name; - this.owner = owner; + this._OWNER = owner; } getTable = (name: string): Table => guaranteeNonNullable( this.tables.find((table) => table.name === name), - `Can't find table '${name}' in schema '${this.name}' of database '${this.owner.path}'`, + `Can't find table '${name}' in schema '${this.name}' of database '${this._OWNER.path}'`, ); getView = (name: string): View => guaranteeNonNullable( this.views.find((view) => view.name === name), - `Can't find view '${name}' in schema '${this.name}' of database '${this.owner.path}'`, + `Can't find view '${name}' in schema '${this.name}' of database '${this._OWNER.path}'`, ); getRelation = (name: string): Relation => { const relations: (Table | View)[] = this.tables; return guaranteeNonNullable( relations.concat(this.views).find((relation) => relation.name === name), - `Can't find relation '${name}' in schema '${this.name}' of database '${this.owner.path}'`, + `Can't find relation '${name}' in schema '${this.name}' of database '${this._OWNER.path}'`, ); }; diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/relational/model/TableReference.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/relational/model/TableReference.ts index bf09e0028db..2355f1bfc17 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/relational/model/TableReference.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/relational/model/TableReference.ts @@ -74,7 +74,7 @@ export class TableExplicitReference extends TableReference { private constructor(value: Table) { const ownerReference = PackageableElementExplicitReference.create( - value.schema.owner, + value.schema._OWNER, ); super(ownerReference, value); this.ownerReference = ownerReference; diff --git a/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/relational/model/ViewReference.ts b/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/relational/model/ViewReference.ts index 9a6ea3c408b..659eed30199 100644 --- a/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/relational/model/ViewReference.ts +++ b/packages/legend-graph/src/models/metamodels/pure/packageableElements/store/relational/model/ViewReference.ts @@ -65,7 +65,7 @@ export class ViewExplicitReference extends ViewReference { private constructor(value: View) { const ownerReference = PackageableElementExplicitReference.create( - value.schema.owner, + value.schema._OWNER, ); super(ownerReference, value); this.ownerReference = ownerReference; diff --git a/packages/legend-graph/src/models/metamodels/pure/rawValueSpecification/RawVariableExpression.ts b/packages/legend-graph/src/models/metamodels/pure/rawValueSpecification/RawVariableExpression.ts index 7c4f8540129..afc4884482d 100644 --- a/packages/legend-graph/src/models/metamodels/pure/rawValueSpecification/RawVariableExpression.ts +++ b/packages/legend-graph/src/models/metamodels/pure/rawValueSpecification/RawVariableExpression.ts @@ -32,7 +32,8 @@ export class RawVariableExpression extends RawValueSpecification implements Hashable, Stubable { - readonly uuid = uuid(); + readonly _UUID = uuid(); + name: string; type: PackageableElementReference; multiplicity: Multiplicity; diff --git a/packages/legend-graph/src/models/protocols/pure/v1/transformation/pureGraph/from/V1_DatabaseTransformer.ts b/packages/legend-graph/src/models/protocols/pure/v1/transformation/pureGraph/from/V1_DatabaseTransformer.ts index c9772540e7b..d4dd927bcd9 100644 --- a/packages/legend-graph/src/models/protocols/pure/v1/transformation/pureGraph/from/V1_DatabaseTransformer.ts +++ b/packages/legend-graph/src/models/protocols/pure/v1/transformation/pureGraph/from/V1_DatabaseTransformer.ts @@ -192,7 +192,7 @@ export const V1_transformTableAliasToTablePointer = ( export const V1_transformTableToTablePointer = (table: Table): V1_TablePtr => { const tablePtr = new V1_TablePtr(); - tablePtr.database = table.schema.owner.path; + tablePtr.database = table.schema._OWNER.path; // NOTE: Sometimes, we interpret this, so to maintain roundtrip stability, we need to handle this differrently // See https://github.com/finos/legend-studio/issues/295 tablePtr.mainTableDb = tablePtr.database; diff --git a/packages/legend-graph/src/models/protocols/pure/v1/transformation/pureGraph/from/V1_MappingTransformer.ts b/packages/legend-graph/src/models/protocols/pure/v1/transformation/pureGraph/from/V1_MappingTransformer.ts index bfb103ed27c..d511174c601 100644 --- a/packages/legend-graph/src/models/protocols/pure/v1/transformation/pureGraph/from/V1_MappingTransformer.ts +++ b/packages/legend-graph/src/models/protocols/pure/v1/transformation/pureGraph/from/V1_MappingTransformer.ts @@ -201,7 +201,7 @@ const transformEnumValueMapping = ( } else if (value.value instanceof Enum) { const _enum = new V1_EnumValueMappingEnumSourceValue(); _enum.value = value.value.name; - _enum.enumeration = value.value.owner.path; + _enum.enumeration = value.value._OWNER.path; return _enum; } throw new UnsupportedOperationError( @@ -911,7 +911,7 @@ const transformFlatDataInstanceSetImpl = ( if (root !== undefined) { classMapping.root = root; } - classMapping.sectionName = element.sourceRootRecordType.value.owner.name; + classMapping.sectionName = element.sourceRootRecordType.value._OWNER.name; return classMapping; }; diff --git a/packages/legend-graph/src/models/protocols/pure/v1/transformation/pureGraph/from/V1_ValueSpecificationTransformer.ts b/packages/legend-graph/src/models/protocols/pure/v1/transformation/pureGraph/from/V1_ValueSpecificationTransformer.ts index bb736d16834..65c92b60b34 100644 --- a/packages/legend-graph/src/models/protocols/pure/v1/transformation/pureGraph/from/V1_ValueSpecificationTransformer.ts +++ b/packages/legend-graph/src/models/protocols/pure/v1/transformation/pureGraph/from/V1_ValueSpecificationTransformer.ts @@ -259,7 +259,7 @@ class V1_ValueSpecificationTransformer const _enumValue = new V1_EnumValue(); const _enum = guaranteeNonNullable(valueSpecification.values[0]).value; _enumValue.value = _enum.name; - _enumValue.fullPath = _enum.owner.path; + _enumValue.fullPath = _enum._OWNER.path; return _enumValue; } diff --git a/packages/legend-graph/src/models/protocols/pure/v1/transformation/pureGraph/to/V1_ProtocolToMetaModelClassMappingSecondPassBuilder.ts b/packages/legend-graph/src/models/protocols/pure/v1/transformation/pureGraph/to/V1_ProtocolToMetaModelClassMappingSecondPassBuilder.ts index 4c179398a35..cb804353269 100644 --- a/packages/legend-graph/src/models/protocols/pure/v1/transformation/pureGraph/to/V1_ProtocolToMetaModelClassMappingSecondPassBuilder.ts +++ b/packages/legend-graph/src/models/protocols/pure/v1/transformation/pureGraph/to/V1_ProtocolToMetaModelClassMappingSecondPassBuilder.ts @@ -265,7 +265,7 @@ export class V1_ProtocolToMetaModelClassMappingSecondPassBuilder ); const dbs = new Set( Array.from(tableAliasMap.values()).map( - (e) => e.relation.value.schema.owner, + (e) => e.relation.value.schema._OWNER, ), ); assertTrue( diff --git a/packages/legend-graph/src/models/protocols/pure/v1/transformation/pureGraph/to/V1_ProtocolToMetaModelPropertyMappingBuilder.ts b/packages/legend-graph/src/models/protocols/pure/v1/transformation/pureGraph/to/V1_ProtocolToMetaModelPropertyMappingBuilder.ts index 848cbbdbbd5..e47cbfce633 100644 --- a/packages/legend-graph/src/models/protocols/pure/v1/transformation/pureGraph/to/V1_ProtocolToMetaModelPropertyMappingBuilder.ts +++ b/packages/legend-graph/src/models/protocols/pure/v1/transformation/pureGraph/to/V1_ProtocolToMetaModelPropertyMappingBuilder.ts @@ -113,7 +113,7 @@ const resolveRelationalPropertyMappingSource = ( if (immediateParent instanceof AssociationImplementation) { if (value.source) { return TEMPORARY__getClassMappingByIdOrReturnUnresolved( - immediateParent.parent, + immediateParent._PARENT, value.source, ); } @@ -122,7 +122,7 @@ const resolveRelationalPropertyMappingSource = ( ); const _class = immediateParent.association.value.getPropertyAssociatedClass(property); - const setImpls = getClassMappingsByClass(immediateParent.parent, _class); + const setImpls = getClassMappingsByClass(immediateParent._PARENT, _class); return setImpls.find((r) => r.root.value) ?? setImpls[0]; } return topParent; @@ -181,7 +181,7 @@ export class V1_ProtocolToMetaModelPropertyMappingBuilder if (protocol.localMappingProperty) { const localMappingProperty = protocol.localMappingProperty; const mappingClass = new MappingClass( - `${this.topParent?.parent.path}_${this.topParent?.id}${protocol.property.property}`, + `${this.topParent?._PARENT.path}_${this.topParent?.id}${protocol.property.property}`, ); const _multiplicity = this.context.graph.getMultiplicity( localMappingProperty.multiplicity.lowerBound, @@ -220,24 +220,24 @@ export class V1_ProtocolToMetaModelPropertyMappingBuilder if (protocol.target) { targetSetImplementation = TEMPORARY__getClassMappingByIdOrReturnUnresolved( - topParent.parent, + topParent._PARENT, protocol.target, ); } else { // NOTE: if no there is one non-root class mapping, auto-nominate that as the target set implementation const setImplementation = getClassMappingsByClass( - topParent.parent, + topParent._PARENT, guaranteeType(propertyType, Class), )[0]; targetSetImplementation = guaranteeNonNullable( setImplementation, - `Can't find any class mapping for class '${propertyType.path}' in mapping '${topParent.parent.path}'`, + `Can't find any class mapping for class '${propertyType.path}' in mapping '${topParent._PARENT.path}'`, ); } } const sourceSetImplementation = protocol.source ? TEMPORARY__getClassMappingByIdOrReturnUnresolved( - topParent.parent, + topParent._PARENT, protocol.source, ) : undefined; @@ -261,7 +261,7 @@ export class V1_ProtocolToMetaModelPropertyMappingBuilder // TODO: Since we don't support includedMappings, this will throw errors, but right now we can just make it undefined. this.context.log.debug( LogEvent.create(GRAPH_MANAGER_EVENT.GRAPH_BUILDER_FAILURE), - `Can't find enumeration mapping with ID '${protocol.enumMappingId}' in mapping '${topParent.parent.path}' (perhaps because we haven't supported included mappings)`, + `Can't find enumeration mapping with ID '${protocol.enumMappingId}' in mapping '${topParent._PARENT.path}' (perhaps because we haven't supported included mappings)`, ); } purePropertyMapping.transformer = enumerationMapping; @@ -315,7 +315,7 @@ export class V1_ProtocolToMetaModelPropertyMappingBuilder if (propertyType instanceof Class && protocol.target) { targetSetImplementation = this.topParent ? TEMPORARY__getClassMappingByIdOrReturnUnresolved( - this.topParent.parent, + this.topParent._PARENT, protocol.target, ) : undefined; @@ -345,7 +345,7 @@ export class V1_ProtocolToMetaModelPropertyMappingBuilder // TODO: Since we don't support includedMappings, this will throw errors, but right now we can just make it undefined. this.context.log.debug( LogEvent.create(GRAPH_MANAGER_EVENT.GRAPH_BUILDER_FAILURE), - `Can't find enumeration mapping with ID '${protocol.enumMappingId}' in mapping '${this.topParent?.parent.path} (perhaps because we haven't supported included mappings)`, + `Can't find enumeration mapping with ID '${protocol.enumMappingId}' in mapping '${this.topParent?._PARENT.path} (perhaps because we haven't supported included mappings)`, ); } flatDataPropertyMapping.transformer = enumerationMapping; @@ -454,7 +454,7 @@ export class V1_ProtocolToMetaModelPropertyMappingBuilder if (protocol.localMappingProperty) { const localMappingProperty = protocol.localMappingProperty; const mappingClass = new MappingClass( - `${this.topParent?.parent.path}_${this.topParent?.id}${protocol.property.property}`, + `${this.topParent?._PARENT.path}_${this.topParent?.id}${protocol.property.property}`, ); const _multiplicity = this.context.graph.getMultiplicity( localMappingProperty.multiplicity.lowerBound, @@ -479,7 +479,7 @@ export class V1_ProtocolToMetaModelPropertyMappingBuilder localMapping.localMappingPropertyType = this.context.resolveType( localMappingProperty.type, ).value; - propertyOwner = property.owner; + propertyOwner = property._OWNER; } else { if (this.immediateParent instanceof AssociationImplementation) { propertyOwner = this.immediateParent.association.value; @@ -504,12 +504,12 @@ export class V1_ProtocolToMetaModelPropertyMappingBuilder const propertyType = property.genericType.value.rawType; let targetSetImplementation: SetImplementation | undefined; if (propertyType instanceof Class) { - let parentMapping = this.topParent?.parent; + let parentMapping = this.topParent?._PARENT; if ( !parentMapping && this.immediateParent instanceof AssociationImplementation ) { - parentMapping = this.immediateParent.parent; + parentMapping = this.immediateParent._PARENT; } if (protocol.target) { targetSetImplementation = parentMapping @@ -596,7 +596,7 @@ export class V1_ProtocolToMetaModelPropertyMappingBuilder // TODO: Since we don't support includedMappings, this will throw errors, but right now we can just make it undefined. this.context.log.debug( LogEvent.create(GRAPH_MANAGER_EVENT.GRAPH_BUILDER_FAILURE), - `Can't find enumeration mapping with ID '${protocol.enumMappingId}' in mapping '${this.topParent?.parent.path}' (perhaps because we haven't supported included mappings)`, + `Can't find enumeration mapping with ID '${protocol.enumMappingId}' in mapping '${this.topParent?._PARENT.path}' (perhaps because we haven't supported included mappings)`, ); } relationalPropertyMapping.transformer = enumerationMapping; @@ -665,7 +665,7 @@ export class V1_ProtocolToMetaModelPropertyMappingBuilder ); inline.inlineSetImplementation = TEMPORARY__getClassMappingByIdOrReturnUnresolved( - topParent.parent, + topParent._PARENT, protocol.setImplementationId, ); return inline; @@ -717,8 +717,8 @@ export class V1_ProtocolToMetaModelPropertyMappingBuilder this.context, embedded, this.topParent, - this.topParent?.parent - ? getAllEnumerationMappings(this.topParent.parent) + this.topParent?._PARENT + ? getAllEnumerationMappings(this.topParent._PARENT) : [], this.tableAliasMap, ), @@ -777,8 +777,8 @@ export class V1_ProtocolToMetaModelPropertyMappingBuilder this.context, otherwiseEmbedded, this.topParent, - this.topParent?.parent - ? getAllEnumerationMappings(this.topParent.parent) + this.topParent?._PARENT + ? getAllEnumerationMappings(this.topParent._PARENT) : [], this.tableAliasMap, ), @@ -790,8 +790,8 @@ export class V1_ProtocolToMetaModelPropertyMappingBuilder this.context, otherwiseEmbedded, this.topParent, - this.topParent?.parent - ? getAllEnumerationMappings(this.topParent.parent) + this.topParent?._PARENT + ? getAllEnumerationMappings(this.topParent._PARENT) : [], this.tableAliasMap, ), diff --git a/packages/legend-graph/src/models/protocols/pure/v1/transformation/pureGraph/to/helpers/V1_DatabaseBuilderHelper.ts b/packages/legend-graph/src/models/protocols/pure/v1/transformation/pureGraph/to/helpers/V1_DatabaseBuilderHelper.ts index 2220a08fc12..d134290aa15 100644 --- a/packages/legend-graph/src/models/protocols/pure/v1/transformation/pureGraph/to/helpers/V1_DatabaseBuilderHelper.ts +++ b/packages/legend-graph/src/models/protocols/pure/v1/transformation/pureGraph/to/helpers/V1_DatabaseBuilderHelper.ts @@ -534,7 +534,7 @@ const buildViewSecondPass = ( const filterPtr = srcView.filter.filter; const db = filterPtr.db ? context.resolveDatabase(filterPtr.db).value - : view.schema.owner; + : view.schema._OWNER; view.filter = processFilterMapping(srcView.filter, db, context); } if (groupByColumns.length) { diff --git a/packages/legend-graph/src/models/protocols/pure/v1/transformation/pureGraph/to/helpers/V1_MappingBuilderHelper.ts b/packages/legend-graph/src/models/protocols/pure/v1/transformation/pureGraph/to/helpers/V1_MappingBuilderHelper.ts index 5669ad47a17..d74d83d9646 100644 --- a/packages/legend-graph/src/models/protocols/pure/v1/transformation/pureGraph/to/helpers/V1_MappingBuilderHelper.ts +++ b/packages/legend-graph/src/models/protocols/pure/v1/transformation/pureGraph/to/helpers/V1_MappingBuilderHelper.ts @@ -313,7 +313,7 @@ export const V1_resolveClassMappingRoot = (mapping: Mapping): void => { // ensure you are only altering current mapping if ( classMapping.root.value === false && - classMapping.parent === mapping + classMapping._PARENT === mapping ) { classMapping.root = InferableMappingElementRootImplicitValue.create( true, diff --git a/packages/legend-graph/src/models/protocols/pure/v1/transformation/pureGraph/to/helpers/V1_MilestoneBuilderHelper.ts b/packages/legend-graph/src/models/protocols/pure/v1/transformation/pureGraph/to/helpers/V1_MilestoneBuilderHelper.ts index 64f53e5d50c..35f2eb166a3 100644 --- a/packages/legend-graph/src/models/protocols/pure/v1/transformation/pureGraph/to/helpers/V1_MilestoneBuilderHelper.ts +++ b/packages/legend-graph/src/models/protocols/pure/v1/transformation/pureGraph/to/helpers/V1_MilestoneBuilderHelper.ts @@ -74,7 +74,7 @@ export const V1_buildMilestoningProperties = ( GenericTypeExplicitReference.create( new GenericType(property.genericType.value.rawType), ), - property.owner, + property._OWNER, ); dateProperty.parameters = [ buildMilestoningParameter( @@ -87,7 +87,7 @@ export const V1_buildMilestoningProperties = ( GenericTypeExplicitReference.create( new GenericType(property.genericType.value.rawType), ), - property.owner, + property._OWNER, ); const milestonedAllVersionsInRange = new DerivedProperty( `${property.name}${MILESTONING_VERSION_PROPERTY_SUFFIX.ALL_VERSIONS_IN_RANGE}`, @@ -95,7 +95,7 @@ export const V1_buildMilestoningProperties = ( GenericTypeExplicitReference.create( new GenericType(property.genericType.value.rawType), ), - property.owner, + property._OWNER, ); milestonedAllVersionsInRange.parameters = [ buildMilestoningParameter(MILESTONING_START_DATE_PARAMETER_NAME), @@ -117,7 +117,7 @@ export const V1_buildMilestoningProperties = ( GenericTypeExplicitReference.create( new GenericType(property.genericType.value.rawType), ), - property.owner, + property._OWNER, ); dateProperty.parameters = [ buildMilestoningParameter( @@ -130,7 +130,7 @@ export const V1_buildMilestoningProperties = ( GenericTypeExplicitReference.create( new GenericType(property.genericType.value.rawType), ), - property.owner, + property._OWNER, ); const milestonedAllVersionsInRange = new DerivedProperty( `${property.name}${MILESTONING_VERSION_PROPERTY_SUFFIX.ALL_VERSIONS_IN_RANGE}`, @@ -138,7 +138,7 @@ export const V1_buildMilestoningProperties = ( GenericTypeExplicitReference.create( new GenericType(property.genericType.value.rawType), ), - property.owner, + property._OWNER, ); milestonedAllVersionsInRange.parameters = [ buildMilestoningParameter(MILESTONING_START_DATE_PARAMETER_NAME), @@ -160,7 +160,7 @@ export const V1_buildMilestoningProperties = ( GenericTypeExplicitReference.create( new GenericType(property.genericType.value.rawType), ), - property.owner, + property._OWNER, ); dateProperty.parameters = [ buildMilestoningParameter( @@ -176,7 +176,7 @@ export const V1_buildMilestoningProperties = ( GenericTypeExplicitReference.create( new GenericType(property.genericType.value.rawType), ), - property.owner, + property._OWNER, ); propertyOwner._generatedMilestonedProperties.push(dateProperty); propertyOwner._generatedMilestonedProperties.push( diff --git a/packages/legend-query/src/components/QueryBuilderFunctionsExplorerPanel.tsx b/packages/legend-query/src/components/QueryBuilderFunctionsExplorerPanel.tsx index 4f718ae2f65..a98646a2e7d 100644 --- a/packages/legend-query/src/components/QueryBuilderFunctionsExplorerPanel.tsx +++ b/packages/legend-query/src/components/QueryBuilderFunctionsExplorerPanel.tsx @@ -113,7 +113,7 @@ const QueryBuilderFunctionInfoTooltip: React.FC<{
{element.taggedValues - .filter((t) => t.tag.value.owner.name === 'doc') + .filter((t) => t.tag.value._OWNER.name === 'doc') .map((t) => t.value) .join('; ')}
diff --git a/packages/legend-query/src/components/QueryBuilderResultPanel.tsx b/packages/legend-query/src/components/QueryBuilderResultPanel.tsx index f3b05cace7f..909beb68c08 100644 --- a/packages/legend-query/src/components/QueryBuilderResultPanel.tsx +++ b/packages/legend-query/src/components/QueryBuilderResultPanel.tsx @@ -72,7 +72,7 @@ const QueryBuilderResultValues = observer( // if we execute once then immediate add another column and execute again // the old columns rendering will be kept the same and the new column // will be pushed to last regardless of its type (aggregation or simple projection) - key={executionResult.uuid} + key={executionResult._UUID} className="ag-theme-balham-dark query-builder__result__tds-grid" > diff --git a/packages/legend-query/src/components/QueryBuilderValueSpecificationEditor.tsx b/packages/legend-query/src/components/QueryBuilderValueSpecificationEditor.tsx index 1ccf814b573..2515c8b5fcf 100644 --- a/packages/legend-query/src/components/QueryBuilderValueSpecificationEditor.tsx +++ b/packages/legend-query/src/components/QueryBuilderValueSpecificationEditor.tsx @@ -278,7 +278,7 @@ const EnumValueInstanceValueEditor = observer( const { valueSpecification, className, resetValue } = props; const enumValueRef = guaranteeNonNullable(valueSpecification.values[0]); const enumValue = enumValueRef.value; - const options = enumValue.owner.values.map((value) => ({ + const options = enumValue._OWNER.values.map((value) => ({ label: value.name, value: value, })); diff --git a/packages/legend-query/src/stores/QueryBuilderAggregationState.ts b/packages/legend-query/src/stores/QueryBuilderAggregationState.ts index bce0c461520..96724870cbd 100644 --- a/packages/legend-query/src/stores/QueryBuilderAggregationState.ts +++ b/packages/legend-query/src/stores/QueryBuilderAggregationState.ts @@ -37,7 +37,7 @@ import { } from './QueryBuilderProjectionState'; export abstract class QueryBuilderAggregateOperator { - uuid = uuid(); + readonly uuid = uuid(); abstract getLabel( projectionColumnState: QueryBuilderProjectionColumnState, @@ -86,7 +86,7 @@ export abstract class QueryBuilderAggregateOperator { } export class QueryBuilderAggregateColumnState { - uuid = uuid(); + readonly uuid = uuid(); aggregationState: QueryBuilderAggregationState; projectionColumnState: QueryBuilderProjectionColumnState; lambdaParameterName: string = DEFAULT_LAMBDA_VARIABLE_NAME; diff --git a/packages/legend-query/src/stores/QueryBuilderExplorerState.ts b/packages/legend-query/src/stores/QueryBuilderExplorerState.ts index e0f30d3690b..31e272cacdc 100644 --- a/packages/legend-query/src/stores/QueryBuilderExplorerState.ts +++ b/packages/legend-query/src/stores/QueryBuilderExplorerState.ts @@ -235,7 +235,7 @@ export const buildPropertyExpressionFromExplorerTreeNodeData = ( const resolveTargetSetImplementationForPropertyMapping = ( propertyMapping: PropertyMapping, ): SetImplementation | undefined => { - if (propertyMapping.isEmbedded) { + if (propertyMapping._isEmbedded) { return propertyMapping as unknown as SetImplementation; } else if (propertyMapping.targetSetImplementation) { return propertyMapping.targetSetImplementation; diff --git a/packages/legend-query/src/stores/QueryBuilderFilterState.ts b/packages/legend-query/src/stores/QueryBuilderFilterState.ts index 473b35ddbd8..7397ea81164 100644 --- a/packages/legend-query/src/stores/QueryBuilderFilterState.ts +++ b/packages/legend-query/src/stores/QueryBuilderFilterState.ts @@ -57,7 +57,7 @@ import { } from './QueryBuilderOperatorsHelper'; export abstract class QueryBuilderFilterOperator { - uuid = uuid(); + readonly uuid = uuid(); abstract getLabel(filterConditionState: FilterConditionState): string; diff --git a/packages/legend-query/src/stores/QueryBuilderLambdaProcessor.ts b/packages/legend-query/src/stores/QueryBuilderLambdaProcessor.ts index 31e3e36af51..acfe401ebb9 100644 --- a/packages/legend-query/src/stores/QueryBuilderLambdaProcessor.ts +++ b/packages/legend-query/src/stores/QueryBuilderLambdaProcessor.ts @@ -147,11 +147,11 @@ const validatePropertyExpressionChain = ( ): void => { if ( propertyExpression.func.genericType.value.rawType instanceof Class && - propertyExpression.func.owner._generatedMilestonedProperties.length !== 0 + propertyExpression.func._OWNER._generatedMilestonedProperties.length !== 0 ) { const name = propertyExpression.func.name; const func = - propertyExpression.func.owner._generatedMilestonedProperties.find( + propertyExpression.func._OWNER._generatedMilestonedProperties.find( (e) => e.name === name, ); if (func) { diff --git a/packages/legend-query/src/stores/QueryBuilderOperatorsHelper.ts b/packages/legend-query/src/stores/QueryBuilderOperatorsHelper.ts index 33a381f702a..ef938936ab8 100644 --- a/packages/legend-query/src/stores/QueryBuilderOperatorsHelper.ts +++ b/packages/legend-query/src/stores/QueryBuilderOperatorsHelper.ts @@ -78,7 +78,7 @@ export const getNonCollectionValueSpecificationType = ( if (valueSpecification instanceof PrimitiveInstanceValue) { return valueSpecification.genericType.value.rawType; } else if (valueSpecification instanceof EnumValueInstanceValue) { - return guaranteeNonNullable(valueSpecification.values[0]).value.owner; + return guaranteeNonNullable(valueSpecification.values[0]).value._OWNER; } else if (valueSpecification instanceof VariableExpression) { return valueSpecification.genericType?.value.rawType; } else if (valueSpecification instanceof SimpleFunctionExpression) { @@ -125,7 +125,7 @@ export const getCollectionValueSpecificationType = ( (values as EnumValueInstanceValue[]).forEach((val) => { addUniqueEntry( valueEnumerationTypes, - guaranteeNonNullable(val.values[0]).value.owner, + guaranteeNonNullable(val.values[0]).value._OWNER, ); }); if (valueEnumerationTypes.length > 1) { diff --git a/packages/legend-query/src/stores/QueryBuilderPostFilterOperator.ts b/packages/legend-query/src/stores/QueryBuilderPostFilterOperator.ts index dae1ffdb7d6..696407a3fc9 100644 --- a/packages/legend-query/src/stores/QueryBuilderPostFilterOperator.ts +++ b/packages/legend-query/src/stores/QueryBuilderPostFilterOperator.ts @@ -27,7 +27,7 @@ import type { } from './QueryBuilderPostFilterState'; export abstract class QueryBuilderPostFilterOperator { - uuid = uuid(); + readonly uuid = uuid(); abstract getLabel(): string; diff --git a/packages/legend-query/src/stores/QueryBuilderProjectionState.ts b/packages/legend-query/src/stores/QueryBuilderProjectionState.ts index 4b45ef4e47b..ad79f960b6b 100644 --- a/packages/legend-query/src/stores/QueryBuilderProjectionState.ts +++ b/packages/legend-query/src/stores/QueryBuilderProjectionState.ts @@ -100,7 +100,7 @@ export interface QueryBuilderProjectionColumnDragSource { } export abstract class QueryBuilderProjectionColumnState { - uuid = uuid(); + readonly uuid = uuid(); projectionState: QueryBuilderProjectionState; isBeingDragged = false; columnName: string; diff --git a/packages/legend-query/src/stores/QueryBuilderPropertyEditorState.ts b/packages/legend-query/src/stores/QueryBuilderPropertyEditorState.ts index 5315f6e289a..caba93ffe38 100644 --- a/packages/legend-query/src/stores/QueryBuilderPropertyEditorState.ts +++ b/packages/legend-query/src/stores/QueryBuilderPropertyEditorState.ts @@ -63,7 +63,7 @@ export const getDerivedPropertyMilestoningSteoreotype = ( property: DerivedProperty, graph: PureModel, ): MILESTONING_STEREOTYPE | undefined => { - const owner = property.owner; + const owner = property._OWNER; if (owner instanceof Class) { return getMilestoneTemporalStereotype(owner, graph); } else if (owner instanceof Association) { @@ -156,7 +156,7 @@ export const generateMilestonedPropertyParameterValue = ( const temporalTarget = derivedPropertyExpressionState.propertyExpression.func.genericType.value .rawType instanceof Class && - derivedPropertyExpressionState.propertyExpression.func.owner + derivedPropertyExpressionState.propertyExpression.func._OWNER ._generatedMilestonedProperties.length !== 0 ? getMilestoneTemporalStereotype( derivedPropertyExpressionState.propertyExpression.func.genericType @@ -603,11 +603,12 @@ export class QueryBuilderPropertyExpressionState { // check if the property is milestoned if ( currentExpression.func.genericType.value.rawType instanceof Class && - currentExpression.func.owner._generatedMilestonedProperties.length !== 0 + currentExpression.func._OWNER._generatedMilestonedProperties.length !== + 0 ) { const name = currentExpression.func.name; const func = - currentExpression.func.owner._generatedMilestonedProperties.find( + currentExpression.func._OWNER._generatedMilestonedProperties.find( (e) => e.name === name, ); if (func) { diff --git a/packages/legend-query/src/stores/QueryFunctionsExplorerState.ts b/packages/legend-query/src/stores/QueryFunctionsExplorerState.ts index 7a9a1c62072..898b716b606 100644 --- a/packages/legend-query/src/stores/QueryFunctionsExplorerState.ts +++ b/packages/legend-query/src/stores/QueryFunctionsExplorerState.ts @@ -229,7 +229,7 @@ const getAllPackagesFromElement = (element: PackageableElement): Package[] => { }; export class QueryFunctionExplorerState { - uuid = uuid(); + readonly uuid = uuid(); queryFunctionsState: QueryFunctionsExplorerState; concreteFunctionDefinition: ConcreteFunctionDefinition; diff --git a/packages/legend-server-sdlc/src/models/configuration/ProjectDependency.ts b/packages/legend-server-sdlc/src/models/configuration/ProjectDependency.ts index 0f9fdae4686..9ea858b04f1 100644 --- a/packages/legend-server-sdlc/src/models/configuration/ProjectDependency.ts +++ b/packages/legend-server-sdlc/src/models/configuration/ProjectDependency.ts @@ -28,7 +28,7 @@ import { observable, action, computed, makeObservable } from 'mobx'; const PROJECT_DEPENDENCY_HASH_STRUCTURE = 'PROJECT_DEPENDENCY'; export class ProjectDependency implements Hashable { - uuid = uuid(); + readonly _UUID = uuid(); projectId: string; versionId: VersionId; diff --git a/packages/legend-shared/src/CommonUtils.ts b/packages/legend-shared/src/CommonUtils.ts index aa7b7addfe6..37aeeedadc1 100644 --- a/packages/legend-shared/src/CommonUtils.ts +++ b/packages/legend-shared/src/CommonUtils.ts @@ -205,8 +205,15 @@ export const getNullableFirstElement = (array: T[]): T | undefined => * NOTE: This is useful in network client interface where we enforce that the input and output for the network call must be plain object, * so as to force proper handling (i.e. deserialize/serialize) but also signal from documentation perspective about the type/shape of the plain object */ -// eslint-disable-next-line @typescript-eslint/no-unused-vars -export type PlainObject = Record; +export type PlainObject = Record; // eslint-disable-line @typescript-eslint/no-unused-vars + +/** + * This type allows modification of `readonly` attributes for class/interface + * This is useful to set properties like `owner`, `parent` where we can't do so in the constructors + * + * See https://stackoverflow.com/questions/46634876/how-can-i-change-a-readonly-property-in-typescript + */ +export type Writable = { -readonly [K in keyof T]: T[K] }; /** * NOTE: This object mutates the input object (obj1) diff --git a/packages/legend-studio/src/components/editor/edit-panel/FunctionEditor.tsx b/packages/legend-studio/src/components/editor/edit-panel/FunctionEditor.tsx index 7fbe17bbe11..2ce7c3eac60 100644 --- a/packages/legend-studio/src/components/editor/edit-panel/FunctionEditor.tsx +++ b/packages/legend-studio/src/components/editor/edit-panel/FunctionEditor.tsx @@ -582,7 +582,7 @@ export const FunctionMainEditor = observer( > {functionElement.parameters.map((param) => ( { > {functionElement.taggedValues.map((taggedValue) => ( { > {functionElement.stereotypes.map((stereotype) => ( ( {runtimeValue.mappings.map((mappingRef) => ( { > {dataElement.stereotypes.map((stereotype) => ( { > {dataElement.taggedValues.map((taggedValue) => ( {elements.map((elementRef) => ( {schemaSet.schemas.map((schema: Schema, index: number) => ( {matchingEnumValueMapping.sourceValues.map((sourceValue, idx) => ( propertyMappingState.instanceSetImplementationState.setSelectedType( @@ -165,8 +165,8 @@ const EnumerationPropertyMappingEditor = observer( }; // Drag and Drop const canDrop = - dragItem?.data.field.flatDataDataType.correspondingPrimitiveType && - dragItem.data.field.flatDataDataType.correspondingPrimitiveType === + dragItem?.data.field.flatDataDataType._correspondingPrimitiveType && + dragItem.data.field.flatDataDataType._correspondingPrimitiveType === expectedType; return ( diff --git a/packages/legend-studio/src/components/editor/edit-panel/mapping-editor/FlatDataRecordTypeTree.tsx b/packages/legend-studio/src/components/editor/edit-panel/mapping-editor/FlatDataRecordTypeTree.tsx index 779e0798c14..470ea4e9006 100644 --- a/packages/legend-studio/src/components/editor/edit-panel/mapping-editor/FlatDataRecordTypeTree.tsx +++ b/packages/legend-studio/src/components/editor/edit-panel/mapping-editor/FlatDataRecordTypeTree.tsx @@ -85,7 +85,7 @@ const RecordFieldTreeNodeContainer: React.FC< ); const nodeTypeIcon = ; const selectNode = (): void => onNodeSelect?.(node); - const primitiveType = node.field.flatDataDataType.correspondingPrimitiveType; + const primitiveType = node.field.flatDataDataType._correspondingPrimitiveType; return (
{ - if (!setImplementation.isEmbedded && !isReadOnly) { + if (!setImplementation._isEmbedded && !isReadOnly) { const embeddedSetImpls = setImplementation.getEmbeddedSetImplmentations(); const droppedPackagableElement = item.data.packageableElement; @@ -290,7 +290,7 @@ export const InstanceSetImplementationSourceExplorer = observer( className="panel__header__action" onClick={showSourceSelectorModal} disabled={ - isReadOnly || setImplementation.isEmbedded || isUnsupported + isReadOnly || setImplementation._isEmbedded || isUnsupported } tabIndex={-1} title="Select Source..." diff --git a/packages/legend-studio/src/components/editor/edit-panel/mapping-editor/InstanceSetImplementationSourceSelectorModal.tsx b/packages/legend-studio/src/components/editor/edit-panel/mapping-editor/InstanceSetImplementationSourceSelectorModal.tsx index 76260e9646c..2dee18d13f8 100644 --- a/packages/legend-studio/src/components/editor/edit-panel/mapping-editor/InstanceSetImplementationSourceSelectorModal.tsx +++ b/packages/legend-studio/src/components/editor/edit-panel/mapping-editor/InstanceSetImplementationSourceSelectorModal.tsx @@ -52,7 +52,7 @@ export const getMappingElementSourceFilterText = ( if (val instanceof Class) { return val.path; } else if (val instanceof RootFlatDataRecordType) { - return val.owner.name; + return val._OWNER.name; } else if (val instanceof TableAlias) { return `${val.relation.ownerReference.value.path}.${val.relation.value.schema.name}.${val.relation.value.name}`; } @@ -72,7 +72,7 @@ export const getSourceElementLabel = ( if (srcElement instanceof Class) { sourceLabel = srcElement.name; } else if (srcElement instanceof RootFlatDataRecordType) { - sourceLabel = srcElement.owner.name; + sourceLabel = srcElement._OWNER.name; } else if (srcElement instanceof TableAlias) { sourceLabel = `${srcElement.relation.ownerReference.value.name}.${ srcElement.relation.value.schema.name === DEFAULT_DATABASE_SCHEMA_NAME @@ -92,7 +92,7 @@ export const buildMappingElementSourceOption = ( return buildElementOption(source) as MappingElementSourceSelectOption; } else if (source instanceof RootFlatDataRecordType) { return { - label: `${source.owner.owner.name}.${source.owner.name}`, + label: `${source._OWNER._OWNER.name}.${source._OWNER.name}`, value: source, }; } else if (source instanceof TableAlias) { diff --git a/packages/legend-studio/src/components/editor/edit-panel/mapping-editor/MappingExplorer.tsx b/packages/legend-studio/src/components/editor/edit-panel/mapping-editor/MappingExplorer.tsx index ca02a3255e4..ebae73b8d02 100644 --- a/packages/legend-studio/src/components/editor/edit-panel/mapping-editor/MappingExplorer.tsx +++ b/packages/legend-studio/src/components/editor/edit-panel/mapping-editor/MappingExplorer.tsx @@ -338,7 +338,7 @@ const MappingElementTreeNodeContainer = observer( ); const mappingElementTarget = getMappingElementTarget(mappingElement); const mappingElementTooltipText = - mappingElement instanceof PropertyMapping && mappingElement.isEmbedded + mappingElement instanceof PropertyMapping && mappingElement._isEmbedded ? `Embedded class mapping '${mappingElement.id.value}' for property '${mappingElement.property.value.name}' (${mappingElement.property.value.genericType.value.rawType.name}) of type '${mappingElement.sourceSetImplementation.class.value.name}'` : `${toSentenceCase( getMappingElementType(mappingElement).toLowerCase(), diff --git a/packages/legend-studio/src/components/editor/edit-panel/mapping-editor/MappingTestsExplorer.tsx b/packages/legend-studio/src/components/editor/edit-panel/mapping-editor/MappingTestsExplorer.tsx index fc73f6edaca..3d1076b8f26 100644 --- a/packages/legend-studio/src/components/editor/edit-panel/mapping-editor/MappingTestsExplorer.tsx +++ b/packages/legend-studio/src/components/editor/edit-panel/mapping-editor/MappingTestsExplorer.tsx @@ -473,7 +473,7 @@ export const MappingTestsExplorer = observer( .sort((a, b) => a.test.name.localeCompare(b.test.name)) .map((testState) => ( diff --git a/packages/legend-studio/src/components/editor/edit-panel/mapping-editor/OperationSetImplementationEditor.tsx b/packages/legend-studio/src/components/editor/edit-panel/mapping-editor/OperationSetImplementationEditor.tsx index ddc48f3c563..a36d745345f 100644 --- a/packages/legend-studio/src/components/editor/edit-panel/mapping-editor/OperationSetImplementationEditor.tsx +++ b/packages/legend-studio/src/components/editor/edit-panel/mapping-editor/OperationSetImplementationEditor.tsx @@ -159,7 +159,7 @@ export const OperationSetImplementationEditor = observer( const visit = (param: SetImplementationContainer): (() => void) => (): void => { - const parent = param.setImplementation.value.parent; + const parent = param.setImplementation.value._PARENT; // TODO: think more about this flow. Right now we open the mapping element in the parent mapping if (parent !== mappingEditorState.element) { editorStore.openElement(parent); @@ -219,7 +219,7 @@ export const OperationSetImplementationEditor = observer( > {setImplementation.parameters.map((param) => (
diff --git a/packages/legend-studio/src/components/editor/edit-panel/mapping-editor/PropertyMappingsEditor.tsx b/packages/legend-studio/src/components/editor/edit-panel/mapping-editor/PropertyMappingsEditor.tsx index 4b153c8333b..214ca6e92ed 100644 --- a/packages/legend-studio/src/components/editor/edit-panel/mapping-editor/PropertyMappingsEditor.tsx +++ b/packages/legend-studio/src/components/editor/edit-panel/mapping-editor/PropertyMappingsEditor.tsx @@ -90,7 +90,7 @@ export const PropertyMappingsEditor = observer( instanceSetImplementationState.setImplementation, ); const isEmbedded = - instanceSetImplementationState.setImplementation.isEmbedded; + instanceSetImplementationState.setImplementation._isEmbedded; // Parser Error const propertyMappingStates = instanceSetImplementationState.propertyMappingStates.filter( @@ -122,7 +122,7 @@ export const PropertyMappingsEditor = observer( if (!rootMappingElement.root.value) { setImpl_setRoot(rootMappingElement, true); } - const parent = rootMappingElement.parent; + const parent = rootMappingElement._PARENT; if (parent !== mappingEditorState.element) { // TODO: think more about this flow. Right now we open the mapping element in the parent mapping editorStore.openElement(parent); diff --git a/packages/legend-studio/src/components/editor/edit-panel/mapping-editor/relational/TableOrViewSourceTree.tsx b/packages/legend-studio/src/components/editor/edit-panel/mapping-editor/relational/TableOrViewSourceTree.tsx index 45a46f1f658..3adcba9bc5b 100644 --- a/packages/legend-studio/src/components/editor/edit-panel/mapping-editor/relational/TableOrViewSourceTree.tsx +++ b/packages/legend-studio/src/components/editor/edit-panel/mapping-editor/relational/TableOrViewSourceTree.tsx @@ -108,7 +108,7 @@ const generateColumnTreeNodeId = ( ? parentNode instanceof JoinNodeData ? `${parentNode.id} ${JOIN_PIPE_SYMBOL} ${relation.name}.${column.name}` : `${parentNode.id}.${column.name}` - : `${generateDatabasePointerText(relation.schema.owner.path)}${ + : `${generateDatabasePointerText(relation.schema._OWNER.path)}${ relation.schema.name }.${relation.name}.${column.name}`; @@ -183,7 +183,7 @@ const getJoinTreeNodeData = ( ); }); // joins - relation.schema.owner.joins + relation.schema._OWNER.joins .slice() .filter( (_join) => @@ -217,7 +217,7 @@ const getRelationTreeData = ( nodes.set(columnNode.id, columnNode); }); // joins - relation.schema.owner.joins + relation.schema._OWNER.joins .slice() .filter( (join) => @@ -330,7 +330,7 @@ export const TableOrViewSourceTree: React.FC<{ treeData.nodes.set(columnNode.id, columnNode); }); // joins - node.relation.schema.owner.joins + node.relation.schema._OWNER.joins .filter( (join) => join.aliases.filter( diff --git a/packages/legend-studio/src/components/editor/edit-panel/project-configuration-editor/ProjectConfigurationEditor.tsx b/packages/legend-studio/src/components/editor/edit-panel/project-configuration-editor/ProjectConfigurationEditor.tsx index 68e6c41c3b1..bdd3c8b66b9 100644 --- a/packages/legend-studio/src/components/editor/edit-panel/project-configuration-editor/ProjectConfigurationEditor.tsx +++ b/packages/legend-studio/src/components/editor/edit-panel/project-configuration-editor/ProjectConfigurationEditor.tsx @@ -503,7 +503,7 @@ export const ProjectConfigurationEditor = observer(() => { {currentProjectConfiguration.projectDependencies.map( (projectDependency) => ( ( {association.taggedValues.map((taggedValue) => ( {association.stereotypes.map((stereotype) => ( _class.properties.filter((p) => p.name === val.name).length >= 2; @@ -185,7 +185,7 @@ const PropertyBasicEditor = observer( }; // NOTE: for now we do not allow directly modifying inherited and associated properties, // we would make the user go to the supertype or the association where the property comes from - const visitOwner = (): void => editorStore.openElement(property.owner); + const visitOwner = (): void => editorStore.openElement(property._OWNER); return (
@@ -334,7 +334,7 @@ const PropertyBasicEditor = observer( tabIndex={-1} title={`Visit ${ isInheritedProperty ? 'super type class' : 'association' - } '${property.owner.path}'`} + } '${property._OWNER.path}'`} > @@ -383,7 +383,7 @@ const DerivedPropertyBasicEditor = observer( ); const dpState = editorState.classState.getDerivedPropertyState(derivedProperty); - const isInheritedProperty = derivedProperty.owner !== _class; + const isInheritedProperty = derivedProperty._OWNER !== _class; // Name const changeValue: React.ChangeEventHandler = (event) => property_setName(derivedProperty, event.target.value); @@ -452,7 +452,7 @@ const DerivedPropertyBasicEditor = observer( } }; const visitOwner = (): void => - editorStore.openElement(derivedProperty.owner); + editorStore.openElement(derivedProperty._OWNER); const remove = applicationStore.guardUnhandledError(async () => { await flowResult(dpState.convertLambdaObjectToGrammarString(false)); deleteDerivedProperty(); @@ -602,7 +602,7 @@ const DerivedPropertyBasicEditor = observer( className="uml-element-editor__visit-parent-element-btn" onClick={visitOwner} tabIndex={-1} - title={`Visit super type class ${derivedProperty.owner.path}`} + title={`Visit super type class ${derivedProperty._OWNER.path}`} > @@ -650,7 +650,7 @@ const ConstraintEditor = observer( const hasParserError = editorState.classState.constraintStates.some( (state) => state.parserError, ); - const isInheritedConstraint = constraint.owner !== _class; + const isInheritedConstraint = constraint._OWNER !== _class; const constraintState = editorState.classState.getConstraintState(constraint); // Name @@ -663,7 +663,7 @@ const ConstraintEditor = observer( ); deleteConstraint(); }); - const visitOwner = (): void => editorStore.openElement(constraint.owner); + const visitOwner = (): void => editorStore.openElement(constraint._OWNER); return (
@@ -866,7 +866,7 @@ export const ClassFormEditor = observer( .sort((p1, p2) => p1.name.localeCompare(p2.name)) .sort( (p1, p2) => - (p1.owner === _class ? 1 : 0) - (p2.owner === _class ? 1 : 0), + (p1._OWNER === _class ? 1 : 0) - (p2._OWNER === _class ? 1 : 0), ); const deselectProperty = (): void => setSelectedProperty(undefined); // Constraints @@ -905,7 +905,7 @@ export const ClassFormEditor = observer( .sort((p1, p2) => p1.name.localeCompare(p2.name)) .sort( (p1, p2) => - (p1.owner === _class ? 1 : 0) - (p2.owner === _class ? 1 : 0), + (p1._OWNER === _class ? 1 : 0) - (p2._OWNER === _class ? 1 : 0), ); const deleteDerivedProperty = (dp: DerivedProperty): (() => void) => @@ -1238,7 +1238,7 @@ export const ClassFormEditor = observer( .concat(indirectProperties) .map((property) => ( ( ( {_class.generalizations.map((superType) => ( {_class.taggedValues.map((taggedValue) => ( {_class.stereotypes.map((stereotype) => ( - _enum.owner.values.filter((value) => value.name === val.name).length >= 2; + _enum._OWNER.values.filter((value) => value.name === val.name).length >= + 2; return (
@@ -279,7 +280,7 @@ const EnumEditor = observer( > {_enum.taggedValues.map((taggedValue) => ( {_enum.stereotypes.map((stereotype) => ( {enumeration.values.map((enumValue) => ( {enumeration.taggedValues.map((taggedValue) => ( {enumeration.stereotypes.map((stereotype) => ( - tag.owner.tags.filter((t) => t.value === val.value).length >= 2; + tag._OWNER.tags.filter((t) => t.value === val.value).length >= 2; return (
@@ -87,7 +87,7 @@ const StereotypeBasicEditor = observer( tagStereotype_setValue(stereotype, event.target.value); }; const isStereotypeDuplicated = (val: Stereotype): boolean => - stereotype.owner.stereotypes.filter((s) => s.value === val.value) + stereotype._OWNER.stereotypes.filter((s) => s.value === val.value) .length >= 2; return ( @@ -210,7 +210,7 @@ export const ProfileEditor = observer((props: { profile: Profile }) => {
{profile.tags.map((tag) => ( {
{profile.stereotypes.map((stereotype) => ( {property.taggedValues.map((taggedValue) => ( {property.stereotypes.map((stereotype) => ( - >({ value: stereotype.value.owner, label: stereotype.value.owner.name }); + >({ value: stereotype.value._OWNER, label: stereotype.value._OWNER.name }); const changeProfile = (val: PackageableElementOption): void => { if (val.value.stereotypes.length) { setSelectedProfile(val); @@ -106,7 +106,7 @@ export const StereotypeSelector = observer( className={`stereotype-selector__profile__visit-btn ${ darkTheme ? 'stereotype-selector-dark-theme' : '' }`} - disabled={stereotype.value.owner.isStub} + disabled={stereotype.value._OWNER.isStub} onClick={visitProfile} tabIndex={-1} title={'Visit profile'} diff --git a/packages/legend-studio/src/components/editor/edit-panel/uml-editor/TaggedValueEditor.tsx b/packages/legend-studio/src/components/editor/edit-panel/uml-editor/TaggedValueEditor.tsx index 0836e68e7ec..b242c3e97b2 100644 --- a/packages/legend-studio/src/components/editor/edit-panel/uml-editor/TaggedValueEditor.tsx +++ b/packages/legend-studio/src/components/editor/edit-panel/uml-editor/TaggedValueEditor.tsx @@ -64,8 +64,8 @@ export const TaggedValueEditor = observer( const [selectedProfile, setSelectedProfile] = useState< PackageableElementOption >({ - value: taggedValue.tag.value.owner, - label: taggedValue.tag.value.owner.name, + value: taggedValue.tag.value._OWNER, + label: taggedValue.tag.value._OWNER.name, }); const changeProfile = (val: PackageableElementOption): void => { if (val.value.tags.length) { @@ -117,7 +117,7 @@ export const TaggedValueEditor = observer( className={`tagged-value-editor__profile__visit-btn ${ darkTheme ? 'tagged-value-editor-dark-theme' : '' }`} - disabled={taggedValue.tag.value.owner.isStub} + disabled={taggedValue.tag.value._OWNER.isStub} onClick={visitProfile} tabIndex={-1} title={'Visit profile'} diff --git a/packages/legend-studio/src/stores/editor-state/EditorState.ts b/packages/legend-studio/src/stores/editor-state/EditorState.ts index 54aa6b98a54..cccff9c414a 100644 --- a/packages/legend-studio/src/stores/editor-state/EditorState.ts +++ b/packages/legend-studio/src/stores/editor-state/EditorState.ts @@ -18,7 +18,10 @@ import type { EditorStore } from '../EditorStore'; import { uuid } from '@finos/legend-shared'; export abstract class EditorState { - uuid = uuid(); // NOTE: used to detect when an element editor state changes so we can force a remount of the editor component + /** + * NOTE: used to detect when an element editor state changes so we can force a remount of the editor component + */ + readonly uuid = uuid(); editorStore: EditorStore; constructor(editorStore: EditorStore) { diff --git a/packages/legend-studio/src/stores/editor-state/GenerationSpecificationEditorState.ts b/packages/legend-studio/src/stores/editor-state/GenerationSpecificationEditorState.ts index 93f226eaff4..1e0fe896e28 100644 --- a/packages/legend-studio/src/stores/editor-state/GenerationSpecificationEditorState.ts +++ b/packages/legend-studio/src/stores/editor-state/GenerationSpecificationEditorState.ts @@ -46,7 +46,7 @@ export interface GenerationSpecNodeDragSource { export type GenerationSpecNodeDropTarget = GenerationSpecNodeDragSource; export class GenerationTreeNodeState { - uuid = uuid(); + readonly uuid = uuid(); node: GenerationTreeNode; isBeingDragged = false; diff --git a/packages/legend-studio/src/stores/editor-state/element-editor-state/ClassState.ts b/packages/legend-studio/src/stores/editor-state/element-editor-state/ClassState.ts index b275f414cc8..0e337c168e5 100644 --- a/packages/legend-studio/src/stores/editor-state/element-editor-state/ClassState.ts +++ b/packages/legend-studio/src/stores/editor-state/element-editor-state/ClassState.ts @@ -61,7 +61,7 @@ export class DerivedPropertyState extends LambdaEditorState { get lambdaId(): string { return buildSourceInformationSourceId([ - this.derivedProperty.owner.path, + this.derivedProperty._OWNER.path, DERIVED_PROPERTY_SOURCE_ID_LABEL, this.derivedProperty.name, this.uuid, // in case of duplications @@ -155,7 +155,7 @@ export class ConstraintState extends LambdaEditorState { get lambdaId(): string { return buildSourceInformationSourceId([ - this.constraint.owner.path, + this.constraint._OWNER.path, CONSTRAINT_SOURCE_ID_LABEL, this.constraint.name, this.uuid, // in case of duplications diff --git a/packages/legend-studio/src/stores/editor-state/element-editor-state/ElementFileGenerationState.ts b/packages/legend-studio/src/stores/editor-state/element-editor-state/ElementFileGenerationState.ts index cc656500abd..e45ce4e68d7 100644 --- a/packages/legend-studio/src/stores/editor-state/element-editor-state/ElementFileGenerationState.ts +++ b/packages/legend-studio/src/stores/editor-state/element-editor-state/ElementFileGenerationState.ts @@ -29,7 +29,7 @@ import { } from '../../graphModifier/DSLGeneration_GraphModifierHelper'; export class ElementFileGenerationState { - uuid = uuid(); + readonly uuid = uuid(); editorStore: EditorStore; fileGenerationType: string; fileGenerationState: FileGenerationState; diff --git a/packages/legend-studio/src/stores/editor-state/element-editor-state/RuntimeEditorState.ts b/packages/legend-studio/src/stores/editor-state/element-editor-state/RuntimeEditorState.ts index 2af1255d473..2cae1d30082 100644 --- a/packages/legend-studio/src/stores/editor-state/element-editor-state/RuntimeEditorState.ts +++ b/packages/legend-studio/src/stores/editor-state/element-editor-state/RuntimeEditorState.ts @@ -85,7 +85,7 @@ export const getClassMappingStore = ( if (sourceElement instanceof Class) { return editorStore.graphManagerState.graph.modelStore; } else if (sourceElement instanceof RootFlatDataRecordType) { - return sourceElement.owner.owner; + return sourceElement._OWNER._OWNER; } else if (sourceElement instanceof TableAlias) { return sourceElement.relation.ownerReference.value; } @@ -315,7 +315,7 @@ export const getRuntimeExplorerTreeData = ( }; export abstract class RuntimeEditorTabState { - uuid = uuid(); + readonly uuid = uuid(); editorStore: EditorStore; runtimeEditorState: RuntimeEditorState; @@ -617,7 +617,10 @@ export class IdentifiedConnectionsPerClassEditorTabState extends IdentifiedConne export class RuntimeEditorRuntimeTabState extends RuntimeEditorTabState {} export class RuntimeEditorState { - uuid = uuid(); // NOTE: used to force component remount on state change + /** + * NOTE: used to force component remount on state change + */ + readonly uuid = uuid(); editorStore: EditorStore; runtime: Runtime; runtimeValue: EngineRuntime; diff --git a/packages/legend-studio/src/stores/editor-state/element-editor-state/connection/ConnectionEditorState.ts b/packages/legend-studio/src/stores/editor-state/element-editor-state/connection/ConnectionEditorState.ts index 2bbe96116cb..486f7ab82cf 100644 --- a/packages/legend-studio/src/stores/editor-state/element-editor-state/connection/ConnectionEditorState.ts +++ b/packages/legend-studio/src/stores/editor-state/element-editor-state/connection/ConnectionEditorState.ts @@ -377,7 +377,10 @@ export class UnsupportedConnectionValueState extends ConnectionValueState { } export class ConnectionEditorState { - uuid = uuid(); // NOTE: used to force component remount on state change + /** + * NOTE: used to force component remount on state change + */ + readonly uuid = uuid(); editorStore: EditorStore; connection: Connection; connectionValueState: ConnectionValueState; diff --git a/packages/legend-studio/src/stores/editor-state/element-editor-state/connection/DatabaseBuilderState.ts b/packages/legend-studio/src/stores/editor-state/element-editor-state/connection/DatabaseBuilderState.ts index 13a0a9ad04b..f4fedfa42ce 100644 --- a/packages/legend-studio/src/stores/editor-state/element-editor-state/connection/DatabaseBuilderState.ts +++ b/packages/legend-studio/src/stores/editor-state/element-editor-state/connection/DatabaseBuilderState.ts @@ -18,6 +18,7 @@ import type { Entity } from '@finos/legend-model-storage'; import type { TreeData, TreeNodeData } from '@finos/legend-art'; import { type GeneratorFn, + type Writable, assertErrorThrown, LogEvent, addUniqueEntry, @@ -598,7 +599,7 @@ export class DatabaseBuilderState { }); // update existing schemas generatedDb.schemas.forEach((s) => { - s.owner = current; + (s as Writable)._OWNER = current; const currentSchemaIndex = current.schemas.findIndex( (c) => c.name === s.name, ); diff --git a/packages/legend-studio/src/stores/editor-state/element-editor-state/data/DataEditorState.ts b/packages/legend-studio/src/stores/editor-state/element-editor-state/data/DataEditorState.ts index 86ba8b4c472..41084e64105 100644 --- a/packages/legend-studio/src/stores/editor-state/element-editor-state/data/DataEditorState.ts +++ b/packages/legend-studio/src/stores/editor-state/element-editor-state/data/DataEditorState.ts @@ -83,7 +83,10 @@ export class UnSupportedDataState extends EmbeddedDataState { } export class EmbeddedDataEditorState { - uuid = uuid(); // NOTE: used to force component remount on state change + /** + * NOTE: used to force component remount on state change + */ + readonly uuid = uuid(); editorStore: EditorStore; embeddedData: EmbeddedData; embeddedDataState: EmbeddedDataState; diff --git a/packages/legend-studio/src/stores/editor-state/element-editor-state/mapping/FlatDataInstanceSetImplementationState.ts b/packages/legend-studio/src/stores/editor-state/element-editor-state/mapping/FlatDataInstanceSetImplementationState.ts index e9667eb9272..60b4ed3f517 100644 --- a/packages/legend-studio/src/stores/editor-state/element-editor-state/mapping/FlatDataInstanceSetImplementationState.ts +++ b/packages/legend-studio/src/stores/editor-state/element-editor-state/mapping/FlatDataInstanceSetImplementationState.ts @@ -67,9 +67,9 @@ export class FlatDataPropertyMappingState extends PropertyMappingState { get lambdaId(): string { return buildSourceInformationSourceId([ - this.propertyMapping.owner.parent.path, + this.propertyMapping._OWNER._PARENT.path, MAPPING_ELEMENT_SOURCE_ID_LABEL.FLAT_DATA_CLASS_MAPPING, - this.propertyMapping.owner.id.value, + this.propertyMapping._OWNER.id.value, this.propertyMapping.property.value.name, this.uuid, // in case of duplications ]); diff --git a/packages/legend-studio/src/stores/editor-state/element-editor-state/mapping/MappingEditorState.ts b/packages/legend-studio/src/stores/editor-state/element-editor-state/mapping/MappingEditorState.ts index 6f04e0256f2..8da7e9f898a 100644 --- a/packages/legend-studio/src/stores/editor-state/element-editor-state/mapping/MappingEditorState.ts +++ b/packages/legend-studio/src/stores/editor-state/element-editor-state/mapping/MappingEditorState.ts @@ -850,8 +850,8 @@ export class MappingEditorState extends ElementEditorState { return; } // Open mapping element from included mapping in another mapping editor tab - if (mappingElement.parent !== this.element) { - this.editorStore.openElement(mappingElement.parent); + if (mappingElement._PARENT !== this.element) { + this.editorStore.openElement(mappingElement._PARENT); } const currentMappingEditorState = this.editorStore.getCurrentEditorState(MappingEditorState); @@ -1018,11 +1018,11 @@ export class MappingEditorState extends ElementEditorState { } else if (mappingElement instanceof AssociationImplementation) { mapping_deleteAssociationMapping(this.mapping, mappingElement); } else if (mappingElement instanceof EmbeddedFlatDataPropertyMapping) { - deleteEntry(mappingElement.owner.propertyMappings, mappingElement); + deleteEntry(mappingElement._OWNER.propertyMappings, mappingElement); } else if ( mappingElement instanceof EmbeddedRelationalInstanceSetImplementation ) { - deleteEntry(mappingElement.owner.propertyMappings, mappingElement); + deleteEntry(mappingElement._OWNER.propertyMappings, mappingElement); } else if (mappingElement instanceof SetImplementation) { mapping_deleteClassMapping(this.mapping, mappingElement); } @@ -1457,7 +1457,7 @@ export class MappingEditorState extends ElementEditorState { ); } else if (source instanceof RootFlatDataRecordType) { inputData = new FlatDataInputData( - PackageableElementExplicitReference.create(source.owner.owner), + PackageableElementExplicitReference.create(source._OWNER._OWNER), createMockDataForMappingElementSource(source, this.editorStore), ); } else if (source instanceof TableAlias) { diff --git a/packages/legend-studio/src/stores/editor-state/element-editor-state/mapping/MappingElementDecorator.ts b/packages/legend-studio/src/stores/editor-state/element-editor-state/mapping/MappingElementDecorator.ts index 1096a581904..beac2e706e5 100644 --- a/packages/legend-studio/src/stores/editor-state/element-editor-state/mapping/MappingElementDecorator.ts +++ b/packages/legend-studio/src/stores/editor-state/element-editor-state/mapping/MappingElementDecorator.ts @@ -156,7 +156,7 @@ export class MappingElementDecorator implements SetImplementationVisitor { operationMapping_setParameters( setImplementation, setImplementation.parameters.filter((param) => - getAllClassMappings(setImplementation.parent).find( + getAllClassMappings(setImplementation._PARENT).find( (setImp) => setImp === param.setImplementation.value, ), ), @@ -169,7 +169,7 @@ export class MappingElementDecorator implements SetImplementationVisitor { operationMapping_setParameters( setImplementation, setImplementation.parameters.filter((param) => - getAllClassMappings(setImplementation.parent).find( + getAllClassMappings(setImplementation._PARENT).find( (setImp) => setImp === param.setImplementation.value, ), ), @@ -229,7 +229,7 @@ export class MappingElementDecorator implements SetImplementationVisitor { ]; // Find existing enumeration mappings for the property enumeration const existingEnumerationMappings = getEnumerationMappingsByEnumeration( - setImplementation.parent, + setImplementation._PARENT, ( enumerationPropertyMapping[0] as PurePropertyMapping ).property.value.genericType.value.getRawType(Enumeration), @@ -257,7 +257,7 @@ export class MappingElementDecorator implements SetImplementationVisitor { // or should we just simply find all class mappings for the target class // as we should not try to `understand` operation class mapping union? getLeafSetImplementations( - setImplementation.parent, + setImplementation._PARENT, property.genericType.value.getRawType(Class), ); // if there are no root-resolved set implementations for the class, return empty array @@ -367,7 +367,7 @@ export class MappingElementDecorator implements SetImplementationVisitor { ]; // Find existing enumeration mappings for the property enumeration const existingEnumerationMappings = getEnumerationMappingsByEnumeration( - setImplementation.parent, + setImplementation._PARENT, ( ePropertyMapping[0] as FlatDataPropertyMapping ).property.value.genericType.value.getRawType(Enumeration), @@ -491,7 +491,7 @@ export class MappingElementDecorator implements SetImplementationVisitor { } // Find existing enumeration mappings for the property enumeration const existingEnumerationMappings = getEnumerationMappingsByEnumeration( - setImplementation.parent, + setImplementation._PARENT, ( ePropertyMapping[0] as PropertyMapping ).property.value.genericType.value.getRawType(Enumeration), @@ -521,7 +521,7 @@ export class MappingElementDecorator implements SetImplementationVisitor { // or should we just simply find all class mappings for the target class // as we should not try to `understand` operation class mapping union? const resolvedLeafSetImps = getLeafSetImplementations( - setImplementation.parent, + setImplementation._PARENT, property.genericType.value.getRawType(Class), ); // if there are no root-resolved set implementations for the class, return empty array diff --git a/packages/legend-studio/src/stores/editor-state/element-editor-state/mapping/MappingElementState.ts b/packages/legend-studio/src/stores/editor-state/element-editor-state/mapping/MappingElementState.ts index c70b7b5b48f..81c2b150a52 100644 --- a/packages/legend-studio/src/stores/editor-state/element-editor-state/mapping/MappingElementState.ts +++ b/packages/legend-studio/src/stores/editor-state/element-editor-state/mapping/MappingElementState.ts @@ -27,7 +27,7 @@ import type { import { LambdaEditorState } from '@finos/legend-application'; export class MappingElementState { - uuid = uuid(); + readonly uuid = uuid(); editorStore: EditorStore; mappingElement: MappingElement; diff --git a/packages/legend-studio/src/stores/editor-state/element-editor-state/mapping/MappingExecutionState.ts b/packages/legend-studio/src/stores/editor-state/element-editor-state/mapping/MappingExecutionState.ts index 85fd2ed5fa5..71d2326edef 100644 --- a/packages/legend-studio/src/stores/editor-state/element-editor-state/mapping/MappingExecutionState.ts +++ b/packages/legend-studio/src/stores/editor-state/element-editor-state/mapping/MappingExecutionState.ts @@ -182,7 +182,7 @@ export class MappingExecutionQueryState extends LambdaEditorState { } abstract class MappingExecutionInputDataState { - uuid = uuid(); + readonly uuid = uuid(); editorStore: EditorStore; mapping: Mapping; inputData?: InputData | undefined; @@ -317,7 +317,7 @@ export class MappingExecutionFlatDataInputDataState extends MappingExecutionInpu mapping, new FlatDataInputData( PackageableElementExplicitReference.create( - guaranteeNonNullable(rootFlatDataRecordType.owner.owner), + guaranteeNonNullable(rootFlatDataRecordType._OWNER._OWNER), ), '', ), @@ -374,7 +374,7 @@ export class MappingExecutionRelationalInputDataState extends MappingExecutionIn mapping, new RelationalInputData( PackageableElementExplicitReference.create( - guaranteeNonNullable(tableOrView.schema.owner), + guaranteeNonNullable(tableOrView.schema._OWNER), ), '', RelationalInputType.SQL, @@ -435,7 +435,7 @@ export class MappingExecutionRelationalInputDataState extends MappingExecutionIn } export class MappingExecutionState { - uuid = uuid(); + readonly uuid = uuid(); name: string; editorStore: EditorStore; mappingEditorState: MappingEditorState; diff --git a/packages/legend-studio/src/stores/editor-state/element-editor-state/mapping/MappingTestState.ts b/packages/legend-studio/src/stores/editor-state/element-editor-state/mapping/MappingTestState.ts index 8ad26d11813..ef05cbf9ce3 100644 --- a/packages/legend-studio/src/stores/editor-state/element-editor-state/mapping/MappingTestState.ts +++ b/packages/legend-studio/src/stores/editor-state/element-editor-state/mapping/MappingTestState.ts @@ -177,7 +177,7 @@ export class MappingTestQueryState extends LambdaEditorState { } abstract class MappingTestInputDataState { - uuid = uuid(); + readonly uuid = uuid(); editorStore: EditorStore; mapping: Mapping; inputData: InputData; @@ -340,7 +340,7 @@ export class MappingTestRelationalInputDataState extends MappingTestInputDataSta } abstract class MappingTestAssertionState { - uuid = uuid(); + readonly uuid = uuid(); assert: MappingTestAssert; constructor(assert: MappingTestAssert) { @@ -389,7 +389,7 @@ export enum MAPPING_TEST_EDITOR_TAB_TYPE { } export class MappingTestState { - uuid = uuid(); + readonly uuid = uuid(); selectedTab = MAPPING_TEST_EDITOR_TAB_TYPE.SETUP; editorStore: EditorStore; mappingEditorState: MappingEditorState; @@ -549,7 +549,7 @@ export class MappingTestState { this.mappingEditorState.mapping, new FlatDataInputData( PackageableElementExplicitReference.create( - guaranteeNonNullable(source.owner.owner), + guaranteeNonNullable(source._OWNER._OWNER), ), '', ), diff --git a/packages/legend-studio/src/stores/editor-state/element-editor-state/mapping/PureInstanceSetImplementationState.ts b/packages/legend-studio/src/stores/editor-state/element-editor-state/mapping/PureInstanceSetImplementationState.ts index a6470ebdf3e..871d9e9d4ef 100644 --- a/packages/legend-studio/src/stores/editor-state/element-editor-state/mapping/PureInstanceSetImplementationState.ts +++ b/packages/legend-studio/src/stores/editor-state/element-editor-state/mapping/PureInstanceSetImplementationState.ts @@ -60,9 +60,9 @@ export class PurePropertyMappingState extends PropertyMappingState { get lambdaId(): string { return buildSourceInformationSourceId( [ - this.propertyMapping.owner.parent.path, + this.propertyMapping._OWNER._PARENT.path, MAPPING_ELEMENT_SOURCE_ID_LABEL.PURE_INSTANCE_CLASS_MAPPING, - this.propertyMapping.owner.id.value, + this.propertyMapping._OWNER.id.value, this.propertyMapping.property.value.name, this.propertyMapping.targetSetImplementation?.id.value, this.uuid, // in case of duplications @@ -147,7 +147,7 @@ export class PureInstanceSetImplementationFilterState extends LambdaEditorState get lambdaId(): string { return buildSourceInformationSourceId([ - this.instanceSetImplementation.parent.path, + this.instanceSetImplementation._PARENT.path, MAPPING_ELEMENT_SOURCE_ID_LABEL.PURE_INSTANCE_CLASS_MAPPING, FILTER_SOURCE_ID_LABEL, this.uuid, diff --git a/packages/legend-studio/src/stores/editor-state/element-editor-state/mapping/relational/RelationalInstanceSetImplementationState.ts b/packages/legend-studio/src/stores/editor-state/element-editor-state/mapping/relational/RelationalInstanceSetImplementationState.ts index 096cfdd4c6f..5776853b9f2 100644 --- a/packages/legend-studio/src/stores/editor-state/element-editor-state/mapping/relational/RelationalInstanceSetImplementationState.ts +++ b/packages/legend-studio/src/stores/editor-state/element-editor-state/mapping/relational/RelationalInstanceSetImplementationState.ts @@ -67,9 +67,9 @@ export class RelationalPropertyMappingState extends PropertyMappingState { // NOTE: Added the index here just in case but the order needs to be checked carefully as bugs may result from inaccurate orderings return buildSourceInformationSourceId( [ - this.propertyMapping.owner.parent.path, + this.propertyMapping._OWNER._PARENT.path, MAPPING_ELEMENT_SOURCE_ID_LABEL.RELATIONAL_CLASS_MAPPING, - this.propertyMapping.owner.id.value, + this.propertyMapping._OWNER.id.value, this.propertyMapping.property.value.name, this.propertyMapping.targetSetImplementation?.id.value, this.uuid, // in case of duplications diff --git a/packages/legend-studio/src/stores/editor-state/element-editor-state/service/LegacyServiceTestState.ts b/packages/legend-studio/src/stores/editor-state/element-editor-state/service/LegacyServiceTestState.ts index 80db5c9c304..2b6383232be 100644 --- a/packages/legend-studio/src/stores/editor-state/element-editor-state/service/LegacyServiceTestState.ts +++ b/packages/legend-studio/src/stores/editor-state/element-editor-state/service/LegacyServiceTestState.ts @@ -83,7 +83,7 @@ interface ServiceTestExecutionResult { } export class TestContainerState { - uuid = uuid(); + readonly uuid = uuid(); editorStore: EditorStore; serviceEditorState: ServiceEditorState; testState: LegacySingleExecutionTestState; @@ -623,7 +623,7 @@ export class LegacySingleExecutionTestState { } export class KeyedSingleExecutionState extends LegacySingleExecutionTestState { - uuid = uuid(); + readonly uuid = uuid(); declare test: DEPRECATED__KeyedSingleExecutionTest; constructor( diff --git a/packages/legend-studio/src/stores/editor-state/element-editor-state/service/ServiceExecutionState.ts b/packages/legend-studio/src/stores/editor-state/element-editor-state/service/ServiceExecutionState.ts index 068f9b68d75..acdd775b1c8 100644 --- a/packages/legend-studio/src/stores/editor-state/element-editor-state/service/ServiceExecutionState.ts +++ b/packages/legend-studio/src/stores/editor-state/element-editor-state/service/ServiceExecutionState.ts @@ -188,7 +188,7 @@ export class ServicePureExecutionQueryState extends LambdaEditorState { get lambdaId(): string { return buildSourceInformationSourceId([ - this.execution.owner.path, + this.execution._OWNER.path, 'execution', ]); } diff --git a/packages/legend-studio/src/stores/graphModifier/DSLMapping_GraphModifierHelper.ts b/packages/legend-studio/src/stores/graphModifier/DSLMapping_GraphModifierHelper.ts index b4338ff4f39..2aa05f73f24 100644 --- a/packages/legend-studio/src/stores/graphModifier/DSLMapping_GraphModifierHelper.ts +++ b/packages/legend-studio/src/stores/graphModifier/DSLMapping_GraphModifierHelper.ts @@ -335,7 +335,7 @@ export const operationMapping_deleteParameter = action( export const setImpl_updateRootOnCreate = action( (setImp: SetImplementation): void => { const classMappingsWithSimilarTarget = getOwnClassMappingsByClass( - setImp.parent, + setImp._PARENT, setImp.class.value, ).filter((si) => si !== setImp); if (classMappingsWithSimilarTarget.length) { @@ -360,7 +360,7 @@ export const setImpl_updateRootOnCreate = action( export const setImpl_updateRootOnDelete = action( (setImp: SetImplementation): void => { const classMappingsWithSimilarTarget = getOwnClassMappingsByClass( - setImp.parent, + setImp._PARENT, setImp.class.value, ).filter((si) => si !== setImp); if (classMappingsWithSimilarTarget.length === 1) { @@ -381,7 +381,7 @@ export const setImpl_updateRootOnDelete = action( export const setImpl_nominateRoot = action( (setImp: SetImplementation): void => { const classMappingsWithSimilarTarget = getOwnClassMappingsByClass( - setImp.parent, + setImp._PARENT, setImp.class.value, ); classMappingsWithSimilarTarget.forEach((si) => { diff --git a/packages/legend-studio/src/stores/graphModifier/DomainGraphModifierHelper.ts b/packages/legend-studio/src/stores/graphModifier/DomainGraphModifierHelper.ts index ee0eb3a9f5a..d402ea9e092 100644 --- a/packages/legend-studio/src/stores/graphModifier/DomainGraphModifierHelper.ts +++ b/packages/legend-studio/src/stores/graphModifier/DomainGraphModifierHelper.ts @@ -161,7 +161,7 @@ export const property_setMultiplicity = action( export const stereotypeReference_setValue = action( (sV: StereotypeReference, value: Stereotype): void => { sV.value = observe_Stereotype(value); - packageableElementReference_setValue(sV.ownerReference, value.owner); + packageableElementReference_setValue(sV.ownerReference, value._OWNER); }, ); @@ -194,7 +194,7 @@ export const annotatedElement_deleteStereotype = action( export const taggedValue_setTag = action( (taggedValue: TaggedValue, value: Tag): void => { taggedValue.tag.value = observe_Tag(value); - taggedValue.tag.ownerReference.value = value.owner; + taggedValue.tag.ownerReference.value = value._OWNER; }, ); @@ -299,7 +299,7 @@ export const enum_deleteValue = action( export const enumValueReference_setValue = action( (ref: EnumValueReference, value: Enum): void => { ref.value = observe_Enum(value); - packageableElementReference_setValue(ref.ownerReference, value.owner); + packageableElementReference_setValue(ref.ownerReference, value._OWNER); }, ); diff --git a/packages/legend-studio/src/stores/sidebar-state/WorkflowManagerState.ts b/packages/legend-studio/src/stores/sidebar-state/WorkflowManagerState.ts index 6c901b5979b..ab8fcf06358 100644 --- a/packages/legend-studio/src/stores/sidebar-state/WorkflowManagerState.ts +++ b/packages/legend-studio/src/stores/sidebar-state/WorkflowManagerState.ts @@ -186,7 +186,7 @@ export class WorkflowLogState { } export class WorkflowState { - uuid = uuid(); + readonly uuid = uuid(); editorStore: EditorStore; workflowManagerState: WorkflowManagerState; treeData: TreeData; diff --git a/packages/legend-studio/src/stores/sidebar-state/testable/TestableManagerState.ts b/packages/legend-studio/src/stores/sidebar-state/testable/TestableManagerState.ts index 2509591ef3e..d99f09774d6 100644 --- a/packages/legend-studio/src/stores/sidebar-state/testable/TestableManagerState.ts +++ b/packages/legend-studio/src/stores/sidebar-state/testable/TestableManagerState.ts @@ -270,7 +270,7 @@ export const getNodeTestableResult = ( }; export class TestableState { - uuid = uuid(); + readonly uuid = uuid(); managerState: TestableManagerState; editorStore: EditorStore; testableMetadata: TestableMetadata;