@@ -66,6 +66,7 @@ function getDataType(identifier: string, constructedDataTypes: ConstructedDataTy
6666 console . error ( "Skipping Identifier because it can't be identified:" + identifier )
6767 return null
6868 }
69+ const dataTypeIdentifiers : DataTypeIdentifier [ ] = [ ]
6970 const constructed : DataType = {
7071 __typename : "DataType" ,
7172 id : `gid://sagittarius/DataType/${ getID ( constructedDataTypes ) } ` ,
@@ -74,7 +75,11 @@ function getDataType(identifier: string, constructedDataTypes: ConstructedDataTy
7475 aliases : getTranslationConnection ( tucanaDataType . alias ) ,
7576 displayMessages : getTranslationConnection ( tucanaDataType . displayMessage ) ,
7677 name : getTranslationConnection ( tucanaDataType . name ) ,
77- rules : createRules ( tucanaDataType . rules , constructedDataTypes ) ,
78+ rules : createRules ( tucanaDataType . rules , constructedDataTypes , dataTypeIdentifiers ) ,
79+ dataTypeIdentifiers : {
80+ count : dataTypeIdentifiers . length ,
81+ nodes : dataTypeIdentifiers ,
82+ } ,
7883 variant : getDataTypeVariant ( tucanaDataType . variant ) ,
7984 }
8085
@@ -84,14 +89,14 @@ function getDataType(identifier: string, constructedDataTypes: ConstructedDataTy
8489 return dataType ;
8590}
8691
87- function createRules ( rule : DefinitionDataTypeRule [ ] , constructedDataTypes : ConstructedDataTypes ) : DataTypeRuleConnection {
92+ function createRules ( rule : DefinitionDataTypeRule [ ] , constructedDataTypes : ConstructedDataTypes , dataTypeIdentifiers : DataTypeIdentifier [ ] ) : DataTypeRuleConnection {
8893 return {
8994 count : rule . length ,
9095 nodes : rule . map ( r => {
9196 switch ( r . config . oneofKind ) {
9297 case "containsType" : {
9398 const ruleConfig : DataTypeRulesContainsTypeConfig = {
94- dataTypeIdentifier : getDataTypeIdentifier ( r . config . containsType . dataTypeIdentifier , constructedDataTypes ) ,
99+ dataTypeIdentifierId : registerDataTypeIdentifier ( r . config . containsType . dataTypeIdentifier , constructedDataTypes , dataTypeIdentifiers ) ,
95100 }
96101 const rule : DataTypeRule = {
97102 variant : DataTypeRulesVariant . ContainsType ,
@@ -101,7 +106,7 @@ function createRules(rule: DefinitionDataTypeRule[], constructedDataTypes: Const
101106 }
102107 case "containsKey" : {
103108 const ruleConfig : DataTypeRulesContainsKeyConfig = {
104- dataTypeIdentifier : getDataTypeIdentifier ( r . config . containsKey . dataTypeIdentifier , constructedDataTypes ) ,
109+ dataTypeIdentifierId : registerDataTypeIdentifier ( r . config . containsKey . dataTypeIdentifier , constructedDataTypes , dataTypeIdentifiers ) ,
105110 key : r . config . containsKey . key ,
106111 }
107112 const rule : DataTypeRule = {
@@ -147,7 +152,7 @@ function createRules(rule: DefinitionDataTypeRule[], constructedDataTypes: Const
147152 inputTypes : r . config . inputTypes . inputTypes . map ( i => {
148153 console . log ( "AF: " + i . inputIdentifier )
149154 const input : DataTypeRulesInputTypeConfig = {
150- dataTypeIdentifier : getDataTypeIdentifier ( i . dataTypeIdentifier , constructedDataTypes ) ,
155+ dataTypeIdentifierId : registerDataTypeIdentifier ( i . dataTypeIdentifier , constructedDataTypes , dataTypeIdentifiers ) ,
151156 inputIdentifier : i . inputIdentifier ,
152157 }
153158 return input ;
@@ -162,7 +167,7 @@ function createRules(rule: DefinitionDataTypeRule[], constructedDataTypes: Const
162167
163168 case "returnType" : {
164169 const ruleConfig : DataTypeRulesParentTypeConfig = {
165- dataTypeIdentifier : getDataTypeIdentifier ( r . config . returnType . dataTypeIdentifier , constructedDataTypes ) ,
170+ dataTypeIdentifierId : registerDataTypeIdentifier ( r . config . returnType . dataTypeIdentifier , constructedDataTypes , dataTypeIdentifiers ) ,
166171 }
167172 const rule : DataTypeRule = {
168173 variant : DataTypeRulesVariant . ReturnType ,
@@ -173,7 +178,7 @@ function createRules(rule: DefinitionDataTypeRule[], constructedDataTypes: Const
173178
174179 case "parentType" : {
175180 const ruleConfig : DataTypeRulesParentTypeConfig = {
176- dataTypeIdentifier : getDataTypeIdentifier ( r . config . parentType . parentType , constructedDataTypes ) ,
181+ dataTypeIdentifierId : registerDataTypeIdentifier ( r . config . parentType . parentType , constructedDataTypes , dataTypeIdentifiers ) ,
177182 }
178183 const rule : DataTypeRule = {
179184 variant : DataTypeRulesVariant . ParentType ,
@@ -209,7 +214,7 @@ function getDataTypeVariant(variant: DefinitionDataType_Variant): DataTypeVarian
209214 }
210215}
211216
212- function getDataTypeIdentifier ( identifier : TucanaDataTypeIdentifier | undefined , constructedDataTypes : ConstructedDataTypes ) : DataTypeIdentifier | null {
217+ function getDataTypeIdentifier ( identifier : TucanaDataTypeIdentifier | undefined , constructedDataTypes : ConstructedDataTypes , dataTypeIdentifiers : DataTypeIdentifier [ ] ) : DataTypeIdentifier | null {
213218 if ( identifier == undefined ) {
214219 return null
215220 }
@@ -240,8 +245,8 @@ function getDataTypeIdentifier(identifier: TucanaDataTypeIdentifier | undefined,
240245 type : type
241246 }
242247 } ) ,
243- sourceDataTypeIdentifiers : mapper . source . map ( id =>
244- getDataTypeIdentifier ( id , constructedDataTypes )
248+ sourceDataTypeIdentifierIds : mapper . source . map ( id =>
249+ registerDataTypeIdentifier ( id , constructedDataTypes , dataTypeIdentifiers )
245250 ) . filter ( id => id != null ) ,
246251 target : mapper . target ,
247252 id : `gid://sagittarius/GenericMapper/${ getID ( constructedDataTypes ) } ` ,
@@ -269,6 +274,15 @@ function getDataTypeIdentifier(identifier: TucanaDataTypeIdentifier | undefined,
269274 return null ;
270275}
271276
277+ function registerDataTypeIdentifier ( identifier : TucanaDataTypeIdentifier | undefined , constructedDataTypes : ConstructedDataTypes , dataTypeIdentifiers : DataTypeIdentifier [ ] ) : string | null {
278+ const mappedIdentifier = getDataTypeIdentifier ( identifier , constructedDataTypes , dataTypeIdentifiers ) ;
279+ if ( mappedIdentifier == null ) {
280+ return null ;
281+ }
282+ dataTypeIdentifiers . push ( mappedIdentifier ) ;
283+ return mappedIdentifier . id ;
284+ }
285+
272286// @ts -ignore
273287function valueToJSON ( value : Value ) {
274288 switch ( value . kind . oneofKind ) {
0 commit comments