package Ġj sm . typescript Ċ Ċ import Ġj sm . Json Schema Ċ import Ġj sm . Json Type Ċ import Ġj sm . indent With Margin Ċ import Ġj sm . java . jackson . joint Properties Ċ import Ġj sm . java . to Lower Camel Case Ċ import Ġj sm . java . to TypeName Ċ import Ġj sm . java . to Upper Camel Case Ċ Ċ interface ĠJson Converter Ġ{ ĊĠĠĠ Ġfun ĠtoJson ( value Expression : ĠString ): ĠString ĊĠĠĠ Ġfun Ġfrom Json ( value Expression : ĠString ): ĠString ĊĠĠĠ Ġfun Ġcontent (): ĠString ? Ċ } Ċ Ċ interface ĠType Converter Ġ{ ĊĠĠĠ Ġfun Ġtype (): ĠString ĊĠĠĠ Ġfun Ġcontent (): ĠString ? ĊĠĠĠ Ġfun Ġimport Declarations (): ĠList < Import Declaration > ĊĠĠĠ Ġfun Ġinner Schemas (): ĠList < Json Schema > ĊĠĠĠ Ġval Ġjson Converter : ĠJson Converter ? Ċ } Ċ Ċ interface ĠType Converter Matcher Ġ{ ĊĠĠĠ Ġfun Ġmatch ( type Converter Registry : ĠType Converter Registry , Ġjson Schema : ĠJson Schema ): ĠType Converter ? Ċ } Ċ Ċ class ĠType Converter Registry ( private Ġval Ġconverter Matchers : ĠList < Type Converter Matcher >) Ġ{ ĊĠĠĠ Ġoperator Ġfun Ġget ( json Schema : ĠJson Schema ): ĠType Converter Ġ{ ĊĠĠĠĠĠĠĠ Ġconverter Matchers . forEach Ġ{ Ġtype Converter Matcher Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Converter Ġ= Ġtype Converter Matcher . match ( this , Ġjson Schema ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( type Converter Ġ!= Ġnull ) Ġreturn Ġtype Converter ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġerror (" Can 't Ġfind Ġconverter Ġfor Ġschema Ġ$ json Schema ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠString Converter Matcher Ġ: ĠType Converter Matcher Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġmatch ( type Converter Registry : ĠType Converter Registry , Ġjson Schema : ĠJson Schema ) Ġ= Ġwhen Ġ( json Schema . type ) Ġ{ ĊĠĠĠĠĠĠĠ ĠJson Type . Scalar . STRING Ġ-> Ġobject Ġ: ĠType Converter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtype () Ġ= Ġ" string " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcontent (): ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġimport Declarations () Ġ= Ġempty List < Import Declaration >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġinner Schemas () Ġ= Ġempty List < Json Schema >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġjson Converter : ĠJson Converter ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠInteger Converter Matcher Ġ: ĠType Converter Matcher Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġmatch ( type Converter Registry : ĠType Converter Registry , Ġjson Schema : ĠJson Schema ) Ġ= Ġwhen Ġ( json Schema . type ) Ġ{ ĊĠĠĠĠĠĠĠ ĠJson Type . Scalar . INTEGER Ġ-> Ġobject Ġ: ĠType Converter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtype () Ġ= Ġ" integer " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcontent (): ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġimport Declarations () Ġ= Ġempty List < Import Declaration >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġinner Schemas () Ġ= Ġempty List < Json Schema >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġjson Converter : ĠJson Converter ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠNumber Converter Matcher Ġ: ĠType Converter Matcher Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġmatch ( type Converter Registry : ĠType Converter Registry , Ġjson Schema : ĠJson Schema ) Ġ= Ġwhen Ġ( json Schema . type ) Ġ{ ĊĠĠĠĠĠĠĠ ĠJson Type . Scalar . NUMBER Ġ-> Ġobject Ġ: ĠType Converter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtype () Ġ= Ġ" number " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcontent (): ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġimport Declarations () Ġ= Ġempty List < Import Declaration >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġinner Schemas () Ġ= Ġempty List < Json Schema >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġjson Converter : ĠJson Converter ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠBoolean Converter Matcher Ġ: ĠType Converter Matcher Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġmatch ( type Converter Registry : ĠType Converter Registry , Ġjson Schema : ĠJson Schema ) Ġ= Ġwhen Ġ( json Schema . type ) Ġ{ ĊĠĠĠĠĠĠĠ ĠJson Type . Scalar . BOOLEAN Ġ-> Ġobject Ġ: ĠType Converter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtype () Ġ= Ġ" boolean " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcontent (): ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġimport Declarations () Ġ= Ġempty List < Import Declaration >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġinner Schemas () Ġ= Ġempty List < Json Schema >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġjson Converter : ĠJson Converter ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠLocalDateTime Converter Matcher Ġ: ĠType Converter Matcher Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġmatch ( type Converter Registry : ĠType Converter Registry , Ġjson Schema : ĠJson Schema ) Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġjson Schema . type Ġ== ĠJson Type . Scalar . STRING Ġ&& Ġjson Schema . format Ġ== Ġ" local - date - time " Ġ-> Ġobject Ġ: ĠType Converter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtype () Ġ= Ġ" LocalDateTime " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcontent (): ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġimport Declarations () Ġ= ĠlistOf ( Import Declaration (" LocalDateTime ", Ġ"@ js - joda / core ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġinner Schemas () Ġ= ĠlistOf < Json Schema >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġjson Converter Ġ= Ġobject Ġ: ĠJson Converter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoJson ( value Expression : ĠString ) Ġ= Ġ"$ value Expression . toString ()" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġfrom Json ( value Expression : ĠString ) Ġ= Ġ" LocalDateTime . parse ($ value Expression )" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcontent (): ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠArray Converter Matcher Ġ: ĠType Converter Matcher Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġmatch ( type Converter Registry : ĠType Converter Registry , Ġjson Schema : ĠJson Schema ): ĠType Converter ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( json Schema . type Ġ== ĠJson Type . ARRAY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠType Converter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitems Schema Ġ= Ġjson Schema . items () Ġ?: Ġerror (" items Ġis Ġrequired Ġin Ġ$ json Schema ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitems Type Converter Ġ= Ġtype Converter Registry [ items Schema ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitems Json Converter Ġ= Ġitems Type Converter . json Converter ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtype () Ġ= Ġ" readonly Ġ${ items Type Converter . type ()} []" ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcontent (): ĠString ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġimport Declarations () Ġ= ĠlistOf < Import Declaration >() ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġinner Schemas () Ġ= ĠlistOf ( items Schema ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġjson Converter Ġ= Ġif Ġ( items Json Converter Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠJson Converter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoJson ( value Expression : ĠString ) Ġ= Ġ" TODO " ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġfrom Json ( value Expression : ĠString ) Ġ= Ġ" TODO " ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcontent () Ġ= Ġ" TODO " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠMap Converter Matcher Ġ: ĠType Converter Matcher Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġmatch ( type Converter Registry : ĠType Converter Registry , Ġjson Schema : ĠJson Schema ): ĠType Converter ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalue Schema Ġ= Ġjson Schema . additional Properties () ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( json Schema . type Ġ== ĠJson Type . OBJECT Ġ&& Ġvalue Schema Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠType Converter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Type Converter Ġ= Ġtype Converter Registry [ value Schema ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Json Converter Ġ= Ġvalue Type Converter . json Converter ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtype () Ġ= Ġ" Map < string , Ġ${ to Lower Camel Case ( valueType Converter . type ()) }> " ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcontent (): ĠString ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġimport Declarations () Ġ= Ġempty List < Import Declaration >() ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġinner Schemas () Ġ= ĠlistOf ( value Schema ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġjson Converter Ġ= Ġif Ġ( value Json Converter Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠJson Converter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoJson ( value Expression : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTODO (" Not Ġyet Ġimplemented ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġfrom Json ( value Expression : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTODO (" Not Ġyet Ġimplemented ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcontent (): ĠString Ġ= Ġ"" ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠString Enum Converter Matcher Ġ: ĠType Converter Matcher Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġmatch ( type Converter Registry : ĠType Converter Registry , Ġjson Schema : ĠJson Schema ): ĠType Converter ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġenum Ġ= Ġjson Schema . enum () ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjson Schema . type Ġ== ĠJson Type . Scalar . STRING Ġ&& Ġenum Ġ!= Ġnull Ġ-> Ġobject Ġ: ĠType Converter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠtypeName Ġ= Ġto TypeName ( json Schema ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtype () Ġ= Ġto Upper Camel Case ( typeName . name ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcontent (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Expressions Ġ= Ġenum . map Ġ{ Ġvalue Ġ-> Ġ"${ to Upper Camel Case ( value )} Ġ= Ġ\"$ value \"" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ""" Ġ| /** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ* Ġ${ json Schema . title } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| export Ġconst Ġenum Ġ${ type ()} Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ${ value Expressions . join ToString (", \ n "). indent With Margin ( 1 )} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| } """. trim Margin () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġimport Declarations () Ġ= Ġempty List < Import Declaration >() ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġinner Schemas () Ġ= Ġempty List < Json Schema >() ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġjson Converter : ĠJson Converter ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ class ĠObject Converter Matcher Ġ: ĠType Converter Matcher Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġmatch ( type Converter Registry : ĠType Converter Registry , Ġjson Schema : ĠJson Schema ): ĠType Converter ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( json Schema . type Ġ== ĠJson Type . OBJECT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠType Converter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠtypeName Ġ= Ġto TypeName ( json Schema ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhas Mapped ToJson Properties Ġ= Ġjson Schema . joint Properties (). any Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Converter Registry [ it . value ]. json Converter Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtype () Ġ= Ġto Upper Camel Case ( typeName . name ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcontent (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfield Declarations Ġ= Ġjson Schema . joint Properties (). map Ġ{ Ġ( propertyName , Ġproperty Schema ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" | /** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ* Ġ${ property Schema . title } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| readonly Ġ${ to Lower Camel Case ( propertyName )} : Ġ${ type Converter Registry [ property Schema ]. type ()}; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| """. trim Margin () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ""" Ġ| /** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ* Ġ${ json Schema . title } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| export Ġinterface Ġ${ to Upper Camel Case ( typeName . name )} Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ${ field Declarations . indent With Margin ( 1 )} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| } """. trim Margin () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġimport Declarations () Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Mapped ToJson Properties ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( Import Declaration (" map Object Properties ", Ġ" js m - support ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġempty List () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġinner Schemas () Ġ= Ġjson Schema . joint Properties (). values . toList () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġjson Converter Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Mapped ToJson Properties Ġ-> Ġobject Ġ: ĠJson Converter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoJson ( value Expression : ĠString ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ to Lower Camel Case ( typeName . name , Ġ" to ", Ġ" json ")} ($ value Expression )" ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġfrom Json ( value Expression : ĠString ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ to Lower Camel Case ( typeName . name , Ġ" from ", Ġ" json ")} ($ value Expression )" ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġfun Ġswitch Cases ( converter Expression : Ġ( Json Converter ) Ġ-> ĠString ) Ġ= Ġjson Schema . joint Properties (). map NotNull Ġ{ Ġ( propertyName , Ġproperty Schema ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproperty Json Converter Ġ= Ġtype Converter Registry [ property Schema ]. json Converter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( property Json Converter Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" | case Ġ"$ propertyName ": ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġreturn Ġ${ converter Expression ( property Json Converter )}; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| """. trim Margin () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcontent () Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" | function Ġ${ to Lower Camel Case ( typeName . name , Ġ" from ", Ġ" json ") }( json : Ġany ): Ġ${ type ()} Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġreturn Ġmap Object Properties ( json , Ġ( key , Ġvalue ) Ġ=> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġswitch Ġ( key ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠĠĠĠ Ġ${ switch Cases Ġ{ Ġit . fromJson (" value ") Ġ}. indent With Margin ( 3 )} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠĠĠĠ Ġdefault : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġvalue ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ}); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| function Ġ${ to Lower Camel Case ( typeName . name , Ġ" to ", Ġ" json ") }( obj : Ġ${ type ()} ): Ġany Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġreturn Ġmap Object Properties ( obj , Ġ( key , Ġvalue ) Ġ=> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġswitch Ġ( key ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠĠĠĠ Ġ${ switch Cases Ġ{ Ġit . toJson (" value ") Ġ}. indent With Margin ( 3 )} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠĠĠĠ Ġdefault : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġvalue ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ}); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| } """. trim Margin () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġnull ĊĠĠĠ Ġ} Ċ } Ċ