@looker/sdk-codegen 21.3.1 → 21.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/swift.gen.ts"],"names":["EnumType","mayQuote","strBody","CodeGen","commentBlock","SwiftGen","Set","supportsMultiApi","methodsPrologue","_indent","warnEditing","packageName","indentStr","streamsPrologue","methodsEpilogue","modelsPrologue","modelsEpilogue","reserve","name","keywords","has","sdkFileName","baseFileName","fileName","commentHeader","indent","text","commentStr","noComment","beginRegion","description","endRegion","_description","useAnyString","property","nameCheck","toLowerCase","anyString","type","endsWith","privy","declareProperty","optional","required","refCount","typeMap","specialHandling","munge","declaration","bump","bumper","setter","describeProperty","paramComment","param","mapped","declareParameter","method","location","writeableType","pOpt","line","default","construct","args","posArgs","inits","posInits","props","typeProperties","forEach","prop","propName","push","declareConstructorArg","declarePositionalArg","varName","it","namedInit","join","argDelimiter","posInit","some","p","mappedType","propType","nullStr","methodHeaderDeclaration","streamer","resultType","returnType","head","trim","headComment","httpMethod","endpoint","fragment","requestType","requestTypeName","params","allParams","length","paramDelimiter","responseIsBoth","responseIsBinary","header","methodSignature","encodePathParams","encodings","pathParams","declareMethod","httpCall","streamerSignature","declareStreamer","streamCall","codingKeys","special","keys","Object","values","properties","map","alias","useIt","jsonName","hasSpecialNeeds","bump2","cases","declareEnumValue","value","quote","codeQuote","typeSignature","recursive","isRecursive","typeName","access","baseClass","isEnum","num","elementType","needClass","errorResponses","_method","httpPath","path","prefix","indexOf","tweak","replace","argGroup","hash","arg","queryGroup","getParams","asAny","castIt","argList","argFill","current","httpArgs","request","useRequest","result","bodyArg","errors","summary","typeNames","countError","names","api","types","Error","filter","intrinsic","ns","swiftTypes","Group","Locale","any","boolean","byte","date","datetime","double","float","int32","int64","integer","number","object","password","string","uri","url","void","className","mapName","JSON","stringify"],"mappings":";;AAkCA,SAASA,QAAT,EAAmBC,QAAnB,EAA6BC,OAA7B,QAA4C,aAA5C;AAEA,SAASC,OAAT,EAAkBC,YAAlB,QAAsC,WAAtC;AAEA,OAAO,MAAMC,QAAN,SAAuBF,OAAvB,CAA+B;AAAA;AAAA;;AAAA,uCAExB,IAFwB;;AAAA,sCAGzB,UAHyB;;AAAA,yCAItB,QAJsB;;AAAA,oCAK3B,MAL2B;;AAAA,2CAMpB,QANoB;;AAAA,wCAOvB,KAPuB;;AAAA,qCAQ1B,KAR0B;;AAAA,uCASxB,WATwB;;AAAA,0CAWrB,IAXqB;;AAAA,4CAYnB,KAZmB;;AAAA,2CAapB,IAboB;;AAAA,2CAcpB,IAdoB;;AAAA,uCAexB,GAfwB;;AAAA,uCAiBxB,MAjBwB;;AAAA;;AAAA,+CAmBhB,KAnBgB;;AAAA,0CAoBrB,IApBqB;;AAAA,sCAqBzB,IAAIG,GAAJ,CAAgB,CACzB,gBADyB,EAEzB,OAFyB,EAGzB,QAHyB,EAIzB,MAJyB,EAKzB,WALyB,EAMzB,aANyB,EAOzB,MAPyB,EAQzB,QARyB,EASzB,MATyB,EAUzB,OAVyB,EAWzB,UAXyB,EAYzB,KAZyB,EAazB,MAbyB,EAczB,UAdyB,EAezB,SAfyB,EAgBzB,UAhByB,EAiBzB,QAjByB,EAkBzB,QAlByB,EAmBzB,QAnByB,EAoBzB,WApByB,EAqBzB,WArByB,EAsBzB,KAtByB,EAuBzB,OAvByB,EAwBzB,MAxByB,EAyBzB,UAzByB,EA0BzB,SA1ByB,EA2BzB,OA3ByB,EA4BzB,IA5ByB,EA6BzB,MA7ByB,EA8BzB,aA9ByB,EA+BzB,KA/ByB,EAgCzB,OAhCyB,EAiCzB,IAjCyB,EAkCzB,IAlCyB,EAmCzB,QAnCyB,EAoCzB,QApCyB,EAqCzB,QArCyB,EAsCzB,OAtCyB,EAuCzB,OAvCyB,EAwCzB,IAxCyB,EAyCzB,KAzCyB,EA0CzB,OA1CyB,EA2CzB,OA3CyB,EA4CzB,IA5CyB,EA6CzB,KA7CyB,EA8CzB,UA9CyB,EA+CzB,OA/CyB,EAgDzB,MAhDyB,EAiDzB,MAjDyB,EAkDzB,OAlDyB,EAmDzB,QAnDyB,EAoDzB,MApDyB,EAqDzB,KArDyB,EAsDzB,GAtDyB,EAuDzB,YAvDyB,EAwDzB,eAxDyB,EAyDzB,SAzDyB,EA0DzB,OA1DyB,EA2DzB,SA3DyB,EA4DzB,QA5DyB,EA6DzB,OA7DyB,EA8DzB,cA9DyB,EA+DzB,WA/DyB,EAgEzB,KAhEyB,EAiEzB,eAjEyB,EAkEzB,OAlEyB,EAmEzB,WAnEyB,EAoEzB,qBApEyB,EAqEzB,eArEyB,EAsEzB,aAtEyB,EAuEzB,SAvEyB,EAwEzB,QAxEyB,EAyEzB,OAzEyB,EA0EzB,KA1EyB,EA2EzB,OA3EyB,EA4EzB,UA5EyB,EA6EzB,MA7EyB,EA8EzB,MA9EyB,EA+EzB,UA/EyB,EAgFzB,MAhFyB,EAiFzB,aAjFyB,EAkFzB,UAlFyB,EAmFzB,UAnFyB,EAoFzB,SApFyB,EAqFzB,YArFyB,EAsFzB,QAtFyB,EAuFzB,UAvFyB,EAyFzB,OAzFyB,EA0FzB,KA1FyB,EA2FzB,MA3FyB,EA4FzB,SA5FyB,EA6FzB,MA7FyB,EA8FzB,SA9FyB,CAAhB,CArByB;AAAA;;AAsHpCC,EAAAA,gBAAgB,GAAY;AAC1B,WAAO,KAAP;AACD;;AAEDC,EAAAA,eAAe,CAACC,OAAD,EAAkB;AAC/B,2BACE,KAAKC,WAAL,EADF,2EAMS,KAAKC,WANd,+BAQF,KAAKC,SARH,sCAQwC,KAAKD,WAR7C;AAUD;;AAEDE,EAAAA,eAAe,CAACJ,OAAD,EAA0B;AACvC,2BACE,KAAKC,WAAL,EADF,2EAMS,KAAKC,WANd;AAQD;;AAEDG,EAAAA,eAAe,CAACL,OAAD,EAAkB;AAC/B,WAAO,KAAP;AACD;;AAEDM,EAAAA,cAAc,CAACN,OAAD,EAAkB;AAC9B,2BACE,KAAKC,WAAL,EADF;AAKD;;AAEDM,EAAAA,cAAc,CAACP,OAAD,EAAkB;AAC9B,WAAO,IAAP;AACD;;AAEDQ,EAAAA,OAAO,CAACC,IAAD,EAAe;AACpB,QAAI,KAAKC,QAAL,CAAcC,GAAd,CAAkBF,IAAlB,CAAJ,EAA6B;AAC3B,wBAAYA,IAAZ;AACD;;AACD,WAAOA,IAAP;AACD;;AAEDG,EAAAA,WAAW,CAACC,YAAD,EAAuB;AAEhC,WAAO,KAAKC,QAAL,eAAqBD,YAArB,EAAP;AACD;;AAEDE,EAAAA,aAAa,CAACC,MAAD,EAAiBC,IAAjB,EAA+D;AAAA,QAApBC,UAAoB,uEAAP,KAAO;AAC1E,QAAI,KAAKC,SAAL,IAAkB,CAACF,IAAvB,EAA6B,OAAO,EAAP;;AAC7B,QAAIC,UAAU,KAAK,GAAnB,EAAwB;AACtB,uBAAUF,MAAV,oBAA0BrB,YAAY,CACpCsB,IADoC,EAEpCD,MAFoC,EAGpCE,UAHoC,CAAtC,eAIMF,MAJN;AAKD;;AACD,qBAAUA,MAAV,kBAAwBrB,YAAY,CAClCsB,IADkC,EAElCD,MAFkC,EAGlCE,UAHkC,CAApC,eAIMF,MAJN;AAKD;;AAEDI,EAAAA,WAAW,CAACJ,MAAD,EAAiBK,WAAjB,EAA8C;AACvD,qBAAUL,MAAV,qBAA2BK,WAA3B;AACD;;AAEDC,EAAAA,SAAS,CAACtB,OAAD,EAAkBuB,YAAlB,EAAgD;AACvD,WAAO,EAAP;AACD;;AAMDC,EAAAA,YAAY,CAACC,QAAD,EAAsB;AAChC,QAAMC,SAAS,GAAGD,QAAQ,CAAChB,IAAT,CAAckB,WAAd,EAAlB;AACA,WACE,KAAKC,SAAL,IACAH,QAAQ,CAACI,IAAT,CAAcpB,IAAd,CAAmBkB,WAAnB,OAAqC,QADrC,KAECD,SAAS,KAAK,IAAd,IAAsBA,SAAS,CAACI,QAAV,CAAmB,KAAnB,CAFvB,CADF;AAKD;;AAMDC,EAAAA,KAAK,CAACtB,IAAD,EAAe;AAClB,WAAO,KAAKD,OAAL,CAAa,MAAMC,IAAnB,CAAP;AACD;;AAEDuB,EAAAA,eAAe,CAAChB,MAAD,EAAiBS,QAAjB,EAAsC;AAEnD,QAAMQ,QAAQ,GAAGR,QAAQ,CAACS,QAAT,GAAoB,EAApB,GAAyB,GAA1C;;AACA,QAAIT,QAAQ,CAAChB,IAAT,KAAkBhB,OAAtB,EAA+B;AAE7BgC,MAAAA,QAAQ,CAACI,IAAT,CAAcM,QAAd;AACA,aACE,KAAKpB,aAAL,CACEC,MADF,EAEES,QAAQ,CAACJ,WAAT,IACE,qDAHJ,cAKGL,MALH,iBAKgB,KAAKR,OAAL,CAAaiB,QAAQ,CAAChB,IAAtB,CALhB,eAMEgB,QAAQ,CAACI,IAAT,CAAcpB,IANhB,SAOGwB,QAPH,CADF;AAUD;;AACD,QAAMJ,IAAI,GAAG,KAAKO,OAAL,CAAaX,QAAQ,CAACI,IAAtB,CAAb;AACA,QAAMQ,eAAe,GAAG,KAAKb,YAAL,CAAkBC,QAAlB,CAAxB;AACA,QAAIa,KAAK,GAAG,EAAZ;AACA,QAAIC,WAAW,aAAMvB,MAAN,wBAA0B,KAAKR,OAAL,CAAaiB,QAAQ,CAAChB,IAAtB,CAA1B,eACboB,IAAI,CAACpB,IADQ,SAEZwB,QAFY,OAAf;;AAGA,QAAII,eAAJ,EAAqB;AACnB,UAAMN,KAAK,GAAG,KAAKvB,OAAL,CAAa,MAAMiB,QAAQ,CAAChB,IAA5B,CAAd;AACA,UAAM+B,IAAI,GAAG,KAAKC,MAAL,CAAYzB,MAAZ,CAAb;AACA,UAAM0B,MAAM,GAAGjB,QAAQ,CAACS,QAAT,GACX,0BADW,GAEX,8BAFJ;AAGAI,MAAAA,KAAK,aAAMtB,MAAN,yBAA2Be,KAA3B,wBAA8CE,QAA9C,OAAL;AACAM,MAAAA,WAAW,aAAMvB,MAAN,wBAA0B,KAAKR,OAAL,CAAaiB,QAAQ,CAAChB,IAAtB,CAA1B,eACToB,IAAI,CAACpB,IADI,SAERwB,QAFQ,iBAGfO,IAHe,mBAGFT,KAHE,SAGME,QAHN,uBAIfO,IAJe,mBAIFT,KAJE,gBAISW,MAJT,iBAKf1B,MALe,QAAX;AAMD;;AACD,WACEsB,KAAK,GACL,KAAKvB,aAAL,CAAmBC,MAAnB,EAA2B,KAAK2B,gBAAL,CAAsBlB,QAAtB,CAA3B,CADA,GAEAc,WAHF;AAKD;;AAEDK,EAAAA,YAAY,CAACC,KAAD,EAAoBC,MAApB,EAAyC;AACnD,6BAAkBA,MAAM,CAACrC,IAAzB,eAAkCoC,KAAK,CAACpC,IAAxC,cAAgDoC,KAAK,CAACxB,WAAtD;AACD;;AAED0B,EAAAA,gBAAgB,CAAC/B,MAAD,EAAiBgC,MAAjB,EAAkCH,KAAlC,EAAqD;AACnE,QAAMhB,IAAI,GACRgB,KAAK,CAACI,QAAN,KAAmBxD,OAAnB,GACI,KAAKyD,aAAL,CAAmBL,KAAK,CAAChB,IAAzB,EAA+BmB,MAA/B,KAA0CH,KAAK,CAAChB,IADpD,GAEIgB,KAAK,CAAChB,IAHZ;AAIA,QAAMiB,MAAM,GAAG,KAAKV,OAAL,CAAaP,IAAb,CAAf;AACA,QAAIsB,IAAI,GAAG,EAAX;AACA,QAAIC,IAAI,GAAG,EAAX;;AACA,QAAIP,KAAK,CAACI,QAAN,KAAmBxD,OAAvB,EAAgC;AAC9BqD,MAAAA,MAAM,CAACrC,IAAP,aAAiBqC,MAAM,CAACrC,IAAxB;AACD;;AACD,QAAI,CAACoC,KAAK,CAACX,QAAX,EAAqB;AACnBiB,MAAAA,IAAI,GAAG,GAAP;AACD,KAFD,MAEO;AACLC,MAAAA,IAAI,GAAG,IAAP;AACD;;AACD,WACE,KAAKrC,aAAL,CAAmBC,MAAnB,EAA2B,KAAK4B,YAAL,CAAkBC,KAAlB,EAAyBC,MAAzB,CAA3B,cACG9B,MADH,SACYoC,IADZ,SACmB,KAAK5C,OAAL,CAAaqC,KAAK,CAACpC,IAAnB,CADnB,eACgDqC,MAAM,CAACrC,IADvD,SAC8D0C,IAD9D,KAECN,KAAK,CAACX,QAAN,GAAiB,EAAjB,GAAsBY,MAAM,CAACO,OAAP,gBAAuBP,MAAM,CAACO,OAA9B,IAA0C,EAFjE,CADF;AAKD;;AAEDC,EAAAA,SAAS,CAACtC,MAAD,EAAiBa,IAAjB,EAA8B;AACrC,QAAIA,IAAI,YAAYtC,QAApB,EAA8B,OAAO,EAAP;AAC9ByB,IAAAA,MAAM,GAAG,KAAKyB,MAAL,CAAYzB,MAAZ,CAAT;AACA,QAAMwB,IAAI,GAAG,KAAKC,MAAL,CAAYzB,MAAZ,CAAb;AACA,QAAMuC,IAAc,GAAG,EAAvB;AACA,QAAMC,OAAiB,GAAG,EAA1B;AACA,QAAMC,KAAe,GAAG,EAAxB;AACA,QAAMC,QAAkB,GAAG,EAA3B;AACA,QAAMC,KAAK,GAAG,KAAKC,cAAL,CAAoB/B,IAApB,CAAd;AACA8B,IAAAA,KAAK,CAACE,OAAN,CAAeC,IAAD,IAAU;AACtB,UAAMC,QAAQ,GAAG,KAAKvD,OAAL,CAAasD,IAAI,CAACrD,IAAlB,CAAjB;AACA8C,MAAAA,IAAI,CAACS,IAAL,CAAU,KAAKC,qBAAL,CAA2B,EAA3B,EAA+BH,IAA/B,CAAV;AACAN,MAAAA,OAAO,CAACQ,IAAR,CAAa,KAAKE,oBAAL,CAA0B,EAA1B,EAA8BJ,IAA9B,CAAb;;AACA,UAAI,KAAKtC,YAAL,CAAkBsC,IAAlB,CAAJ,EAA6B;AAC3B,YAAMK,OAAO,GAAG,KAAKpC,KAAL,CAAWgC,QAAX,CAAhB;;AACA,YAAID,IAAI,CAAC5B,QAAT,EAAmB;AACjBuB,UAAAA,KAAK,CAACO,IAAN,WAAcxB,IAAd,SAAqB,KAAK4B,EAAL,CAAQD,OAAR,CAArB,+BAA0DJ,QAA1D;AACD,SAFD,MAEO;AACLN,UAAAA,KAAK,CAACO,IAAN,WACKxB,IADL,SACY,KAAK4B,EAAL,CAAQD,OAAR,CADZ,gBACkCJ,QADlC;AAGD;AACF,OATD,MASO;AACLN,QAAAA,KAAK,CAACO,IAAN,WAAcxB,IAAd,SAAqB,KAAK4B,EAAL,CAAQL,QAAR,CAArB,gBAA4CA,QAA5C;AACD;;AACDL,MAAAA,QAAQ,CAACM,IAAT,WAAiBD,QAAjB,eAA8BA,QAA9B;AACD,KAjBD;AAkBA,QAAMM,SAAS,GACb,UAAGrD,MAAH,8BACGuC,IAAI,CAACe,IAAL,CAAU,KAAKC,YAAf,CADH,aAEAd,KAAK,CAACa,IAAN,CAAW,IAAX,CAFA,eAGKtD,MAHL,MADF;AAKA,QAAIwD,OAAO,GAAG,EAAd;;AACA,QAAIb,KAAK,CAACc,IAAN,CAAYC,CAAD,IAAOA,CAAC,CAACxC,QAApB,CAAJ,EAAmC;AACjCsC,MAAAA,OAAO,GACL,YAAKxD,MAAL,8BACGwC,OAAO,CAACc,IAAR,CAAa,KAAKC,YAAlB,CADH,uBAEG/B,IAFH,SAEU,KAAK4B,EAAL,CAAQ,MAAR,CAFV,cAE6BV,QAAQ,CAACY,IAAT,CAAc,IAAd,CAF7B,qBAGKtD,MAHL,QADF;AAKD;;AACD,uBAAYqD,SAAZ,eAA0BG,OAA1B;AACD;;AAEDN,EAAAA,oBAAoB,CAAClD,MAAD,EAAiBS,QAAjB,EAAsC;AACxD,QAAMkD,UAAU,GAAG,KAAKvC,OAAL,CAAaX,QAAQ,CAACI,IAAtB,CAAnB;AACA,QAAI+C,QAAJ;AACA,QAAIxB,IAAI,GAAG,IAAX;;AACA,QAAI3B,QAAQ,CAACS,QAAb,EAAuB;AACrB0C,MAAAA,QAAQ,GAAGD,UAAU,CAAClE,IAAtB;AACD,KAFD,MAEO;AACL2C,MAAAA,IAAI,GAAG,EAAP;AACAwB,MAAAA,QAAQ,aAAMD,UAAU,CAAClE,IAAjB,iBAA4B,KAAKoE,OAAjC,CAAR;AACD;;AACD,QAAMd,QAAQ,GAAG,KAAKvD,OAAL,CAAaiB,QAAQ,CAAChB,IAAtB,CAAjB;AACA,qBAAUO,MAAV,SAAmBoC,IAAnB,SAA0BW,QAA1B,eAAuCa,QAAvC;AACD;;AAEDX,EAAAA,qBAAqB,CAACjD,MAAD,EAAiBS,QAAjB,EAAsC;AACzD,QAAMkD,UAAU,GAAG,KAAKvC,OAAL,CAAaX,QAAQ,CAACI,IAAtB,CAAnB;AACA,QAAI+C,QAAJ;;AACA,QAAInD,QAAQ,CAACS,QAAb,EAAuB;AACrB0C,MAAAA,QAAQ,GAAGD,UAAU,CAAClE,IAAtB;AACD,KAFD,MAEO;AACLmE,MAAAA,QAAQ,aAAMD,UAAU,CAAClE,IAAjB,iBAA4B,KAAKoE,OAAjC,CAAR;AACD;;AACD,QAAMd,QAAQ,GAAG,KAAKvD,OAAL,CAAaiB,QAAQ,CAAChB,IAAtB,CAAjB;AACA,qBAAUO,MAAV,SAAmB+C,QAAnB,eAAgCa,QAAhC;AACD;;AAEDE,EAAAA,uBAAuB,CAAC9D,MAAD,EAAiBgC,MAAjB,EAAoD;AAAA;;AAAA,QAAlB+B,QAAkB,uEAAP,KAAO;AACzE,QAAMlD,IAAI,GAAG,KAAKO,OAAL,CAAaY,MAAM,CAACnB,IAApB,CAAb;AACA,QAAMmD,UAAU,GAAGD,QAAQ,GAAG,MAAH,GAAYlD,IAAI,CAACpB,IAA5C;AACA,QAAMwE,UAAU,GACdpD,IAAI,CAACpB,IAAL,KAAc,MAAd,GAAuB,UAAvB,yBAAmDuE,UAAnD,gBADF;AAEA,QAAME,IAAI,0BAAGlC,MAAM,CAAC3B,WAAV,wDAAG,oBAAoB8D,IAApB,EAAb;AACA,QAAIC,WAAW,GACb,CAACF,IAAI,aAAMA,IAAN,YAAmB,EAAxB,cACGlC,MAAM,CAACqC,UADV,cACwBrC,MAAM,CAACsC,QAD/B,iBAC8CzD,IAAI,CAACpB,IADnD,CADF;AAGA,QAAI8E,QAAJ;AACA,QAAMC,WAAW,GAAG,KAAKC,eAAL,CAAqBzC,MAArB,CAApB;AACA,QAAMR,IAAI,GAAGxB,MAAM,GAAG,KAAKb,SAA3B;;AAEA,QAAIqF,WAAJ,EAAiB;AAEfD,MAAAA,QAAQ,uBAAgBC,WAAhB,CAAR;AACD,KAHD,MAGO;AACL,UAAME,MAAgB,GAAG,EAAzB;AACA,UAAMnC,IAAI,GAAGP,MAAM,CAAC2C,SAApB;AACA,UAAIpC,IAAI,IAAIA,IAAI,CAACqC,MAAL,GAAc,CAA1B,EACErC,IAAI,CAACM,OAAL,CAAca,CAAD,IAAOgB,MAAM,CAAC1B,IAAP,CAAY,KAAKjB,gBAAL,CAAsBP,IAAtB,EAA4BQ,MAA5B,EAAoC0B,CAApC,CAAZ,CAApB;AACFa,MAAAA,QAAQ,GACNG,MAAM,CAACE,MAAP,GAAgB,CAAhB,eAAyBF,MAAM,CAACpB,IAAP,CAAY,KAAKuB,cAAjB,CAAzB,IAA8D,EADhE;AAED;;AACD,QAAI7C,MAAM,CAAC8C,cAAP,EAAJ,EAA6B;AAC3BV,MAAAA,WAAW,kEAAX;AACD,KAFD,MAEO,IAAIpC,MAAM,CAAC+C,gBAAP,EAAJ,EAA+B;AACpCX,MAAAA,WAAW,gEAAX;AACD;;AACD,QAAMY,MAAM,GACV,KAAKjF,aAAL,CAAmBC,MAAnB,EAA2BoE,WAA3B,cACGpE,MADH,yBACwBgC,MAAM,CAACvC,IAD/B,MADF;AAIA,WACEuF,MAAM,GACNT,QADA,aAGEA,QAAQ,GAAG,GAAH,GAAS,EAHnB,eAIK/C,IAJL,iDAIgDxB,MAJhD,kBAI8DiE,UAJ9D,SADF;AAOD;;AAEDgB,EAAAA,eAAe,CAACjF,MAAD,EAAiBgC,MAAjB,EAAkC;AAC/C,WAAO,KAAK8B,uBAAL,CAA6B9D,MAA7B,EAAqCgC,MAArC,EAA6C,KAA7C,CAAP;AACD;;AAEDkD,EAAAA,gBAAgB,CAAClF,MAAD,EAAiBgC,MAAjB,EAAkC;AAChD,QAAImD,SAAS,GAAG,EAAhB;;AACA,QAAInD,MAAM,CAACoD,UAAP,CAAkBR,MAAlB,GAA2B,CAA/B,EAAkC;AAChC,WAAK,IAAM/C,KAAX,IAAoBG,MAAM,CAACoD,UAA3B,EAAuC;AAErCD,QAAAA,SAAS,cAAOnF,MAAP,sBAAyB6B,KAAK,CAACpC,IAA/B,4BAAqDoC,KAAK,CAACpC,IAA3D,QAAT;AACD;AACF;;AACD,WAAO0F,SAAP;AACD;;AAEDE,EAAAA,aAAa,CAACrF,MAAD,EAAiBgC,MAAjB,EAAkC;AAC7C,QAAMR,IAAI,GAAG,KAAKC,MAAL,CAAYzB,MAAZ,CAAb;AACA,WACE,KAAKiF,eAAL,CAAqBjF,MAArB,EAA6BgC,MAA7B,IACA,KAAKkD,gBAAL,CAAsB1D,IAAtB,EAA4BQ,MAA5B,CADA,GAEA,KAAKsD,QAAL,CAAc9D,IAAd,EAAoBQ,MAApB,CAFA,eAGKhC,MAHL,MADF;AAMD;;AAEDuF,EAAAA,iBAAiB,CAACvF,MAAD,EAAiBgC,MAAjB,EAAkC;AACjD,WAAO,KAAK8B,uBAAL,CAA6B9D,MAA7B,EAAqCgC,MAArC,EAA6C,IAA7C,CAAP;AACD;;AAEDwD,EAAAA,eAAe,CAACxF,MAAD,EAAiBgC,MAAjB,EAAkC;AAC/C,QAAMR,IAAI,GAAG,KAAKC,MAAL,CAAYzB,MAAZ,CAAb;AACA,WACE,KAAKuF,iBAAL,CAAuBvF,MAAvB,EAA+BgC,MAA/B,IACA,KAAKkD,gBAAL,CAAsB1D,IAAtB,EAA4BQ,MAA5B,CADA,GAEA,KAAKyD,UAAL,CAAgBjE,IAAhB,EAAsBQ,MAAtB,CAFA,eAGKhC,MAHL,MADF;AAMD;;AAED0F,EAAAA,UAAU,CAAC1F,MAAD,EAAiBa,IAAjB,EAA8B;AACtC,QAAI8E,OAAO,GAAG,KAAd;AAEA,QAAMC,IAAI,GAAGC,MAAM,CAACC,MAAP,CAAcjF,IAAI,CAACkF,UAAnB,EAA+BC,GAA/B,CAAoCtC,CAAD,IAAO;AACrD,UAAIjE,IAAI,GAAG,KAAKD,OAAL,CAAakE,CAAC,CAACjE,IAAf,CAAX;AACA,UAAIwG,KAAK,GAAG,EAAZ;AACA,UAAMC,KAAK,GAAG,KAAK1F,YAAL,CAAkBkD,CAAlB,CAAd;;AACA,UAAIwC,KAAJ,EAAW;AACTzG,QAAAA,IAAI,GAAG,KAAKsB,KAAL,CAAWtB,IAAX,CAAP;AACAkG,QAAAA,OAAO,GAAG,IAAV;AACAM,QAAAA,KAAK,GAAGvC,CAAC,CAACyC,QAAV;AACD,OAJD,MAIO,IAAIzC,CAAC,CAAC0C,eAAN,EAAuB;AAC5BT,QAAAA,OAAO,GAAG,IAAV;AACAM,QAAAA,KAAK,GAAGvC,CAAC,CAACyC,QAAV;AACD;;AACD,aAAO1G,IAAI,IAAIwG,KAAK,kBAAUA,KAAV,UAAqB,EAA9B,CAAX;AACD,KAbY,CAAb;AAeA,QAAI,CAACN,OAAL,EAAc,OAAO,EAAP;AACd,QAAMnE,IAAI,GAAG,KAAKC,MAAL,CAAYzB,MAAZ,CAAb;AACA,QAAMqG,KAAK,GAAG,KAAK5E,MAAL,CAAYD,IAAZ,CAAd;AACA,QAAM8E,KAAK,GAAGV,IAAI,CAACtC,IAAL,aAAe+C,KAAf,WAAd;AAEA,WACE,YAAK7E,IAAL,iEACK6E,KADL,kBACkBC,KADlB,gBAEK9E,IAFL,QADF;AAKD;;AAKD+E,EAAAA,gBAAgB,CAACvG,MAAD,EAAiBwG,KAAjB,EAAuC;AACrD,QAAMC,KAAK,GAAG,OAAOD,KAAP,KAAiB,QAAjB,GAA4B,KAAKE,SAAjC,GAA6C,EAA3D;AACA,qBAAU1G,MAAV,kBAAwBxB,QAAQ,CAACgI,KAAD,CAAhC,gBAA6CC,KAA7C,SAAqDD,KAArD,SAA6DC,KAA7D;AACD;;AAEDE,EAAAA,aAAa,CAAC3G,MAAD,EAAiBa,IAAjB,EAA8B;AACzC,QAAM+F,SAAS,GAAG/F,IAAI,CAACgG,WAAL,EAAlB;AACA,QAAIC,QAAQ,GAAGF,SAAS,GAAG,OAAH,GAAa,QAArC;AACA,QAAMG,MAAM,GAAGH,SAAS,GAAG,MAAH,GAAY,QAApC;AACA,QAAII,SAAS,GAAG,UAAhB;AACA,QAAMC,MAAM,GAAGpG,IAAI,YAAYtC,QAA/B;;AACA,QAAI0I,MAAJ,EAAY;AACVH,MAAAA,QAAQ,GAAG,MAAX;AACA,UAAMI,GAAG,GAAGrG,IAAZ;;AACA,UAAMiB,OAAM,GAAG,KAAKV,OAAL,CAAa8F,GAAG,CAACC,WAAjB,CAAf;;AACAH,MAAAA,SAAS,aAAMlF,OAAM,CAACrC,IAAb,cAAT;AACD;;AAED,QAAMmG,IAAI,GAAG,KAAKF,UAAL,CAAgB1F,MAAhB,EAAwBa,IAAxB,CAAb;AAEA,QAAMuG,SAAS,GAAGR,SAAS,GACvB,8DADuB,GAEvB,EAFJ;AAGA,QAAM9E,MAAM,GAAG,KAAKV,OAAL,CAAaP,IAAb,CAAf;AACA,WACE,KAAKd,aAAL,CAAmBC,MAAnB,EAA2Ba,IAAI,CAACR,WAAL,GAAmB+G,SAA9C,cACGpH,MADH,SACY+G,MADZ,cACsBD,QADtB,cACkChF,MAAM,CAACrC,IADzC,eACkDuH,SADlD,iBACkEpB,IADlE,CADF;AAID;;AAEDyB,EAAAA,cAAc,CAACrI,OAAD,EAAkBsI,OAAlB,EAAoC;AAKhD,WAAO,UAAP;AACD;;AAEDC,EAAAA,QAAQ,CAACC,IAAD,EAAeC,MAAf,EAAgC;AACtCA,IAAAA,MAAM,GAAGA,MAAM,IAAI,EAAnB;;AACA,QAAID,IAAI,CAACE,OAAL,CAAa,GAAb,KAAqB,CAAzB,EAA4B;AAC1B,UAAIC,KAAK,GAAGH,IAAI,CAACI,OAAL,CAAa,KAAb,EAAoB,aAAaH,MAAjC,CAAZ;AACAE,MAAAA,KAAK,GAAGA,KAAK,CAACC,OAAN,CAAc,KAAd,EAAqB,GAArB,CAAR;AACA,yBAAWD,KAAX;AACD;;AACD,uBAAWH,IAAX;AACD;;AAEDK,EAAAA,QAAQ,CAAC7H,MAAD,EAAiBuC,IAAjB,EAA8BkF,MAA9B,EAA+C;AACrD,QAAI,CAAClF,IAAD,IAASA,IAAI,CAACqC,MAAL,KAAgB,CAA7B,EAAgC,OAAO,KAAKf,OAAZ;AAChC,QAAMiE,IAAc,GAAG,EAAvB;;AACA,SAAK,IAAMC,GAAX,IAAkBxF,IAAlB,EAAwB;AACtB,UAAIkF,MAAJ,EAAY;AACVK,QAAAA,IAAI,CAAC9E,IAAL,aAAc+E,GAAd,iBAAuBN,MAAvB,SAAgCM,GAAhC;AACD,OAFD,MAEO;AACLD,QAAAA,IAAI,CAAC9E,IAAL,aAAc+E,GAAd,iBAAuBA,GAAvB;AACD;AACF;;AACD,uBAAY/H,MAAZ,cAAsB8H,IAAI,CAACxE,IAAL,CAAU,KAAKC,YAAf,CAAtB;AACD;;AAEDyE,EAAAA,UAAU,CAAChI,MAAD,EAAiBgC,MAAjB,EAAkCyF,MAAlC,EAAmD;AAC3D,QAAM/C,MAAM,GAAG1C,MAAM,CAACiG,SAAP,CAAiB,OAAjB,CAAf;AACA,QAAI,CAACvD,MAAD,IAAWA,MAAM,CAACE,MAAP,KAAkB,CAAjC,EAAoC,OAAO,KAAKf,OAAZ;AACpC,QAAMiE,IAAc,GAAG,EAAvB;;AACA,SAAK,IAAMjG,KAAX,IAAoB6C,MAApB,EAA4B;AAC1B,UAAMqD,GAAG,GAAG,KAAKG,KAAL,CAAWrG,KAAX,CAAZ;;AACA,UAAI4F,MAAJ,EAAY;AACVK,QAAAA,IAAI,CAAC9E,IAAL,aAAcnB,KAAK,CAACpC,IAApB,iBAA8BgI,MAA9B,SAAuCM,GAAvC;AACD,OAFD,MAEO;AACLD,QAAAA,IAAI,CAAC9E,IAAL,aAAcnB,KAAK,CAACpC,IAApB,iBAA8BsI,GAA9B;AACD;AACF;;AACD,uBAAY/H,MAAZ,cAAsB8H,IAAI,CAACxE,IAAL,CAAU,KAAKC,YAAf,CAAtB;AACD;;AAED2E,EAAAA,KAAK,CAACrG,KAAD,EAAyB;AAC5B,QAAIsG,MAAJ;;AACA,QAAItG,KAAK,CAAChB,IAAN,CAAWsG,WAAf,EAA4B;AAC1BgB,MAAAA,MAAM,GAAG,IAAT;AACD,KAFD,MAEO;AACL,UAAMrG,MAAM,GAAG,KAAKV,OAAL,CAAaS,KAAK,CAAChB,IAAnB,CAAf;;AACA,cAAQiB,MAAM,CAACrC,IAAP,CAAYkB,WAAZ,EAAR;AACE,aAAK,MAAL;AACA,aAAK,UAAL;AACA,aAAK,QAAL;AACA,aAAK,MAAL;AACEwH,UAAAA,MAAM,GAAG,IAAT;AACA;;AACF;AACEA,UAAAA,MAAM,GAAG,KAAT;AACA;AATJ;AAWD;;AACD,WAAOtG,KAAK,CAACpC,IAAN,IAAc0I,MAAM,GAAG,UAAH,GAAgB,EAApC,CAAP;AACD;;AAEDC,EAAAA,OAAO,CAACpI,MAAD,EAAiBuC,IAAjB,EAA8BkF,MAA9B,EAA+C;AACpDA,IAAAA,MAAM,GAAGA,MAAM,IAAI,EAAnB;AACA,WAAOlF,IAAI,IAAIA,IAAI,CAACqC,MAAL,KAAgB,CAAxB,eACE5E,MADF,SACWyH,MADX,SACoBlF,IAAI,CAACe,IAAL,CAAU,KAAKC,YAAL,GAAoBkE,MAA9B,CADpB,IAEH,KAAK5D,OAFT;AAGD;;AAQDwE,EAAAA,OAAO,CAACC,OAAD,EAAkB/F,IAAlB,EAAgC;AACrC,QAAI,CAAC+F,OAAD,IAAY/F,IAAI,CAAC4B,IAAL,OAAgB,KAAKN,OAArC,EAA8C;AAE5C,aAAO,EAAP;AACD;;AACD,qBAAUtB,IAAV,SAAiB+F,OAAO,GAAG,KAAK/E,YAAR,GAAuB,EAA/C,SAAoD+E,OAApD;AACD;;AAeDC,EAAAA,QAAQ,CAACvI,MAAD,EAAiBgC,MAAjB,EAAkC;AACxC,QAAMwG,OAAO,GAAG,KAAKC,UAAL,CAAgBzG,MAAhB,IAA0B,UAA1B,GAAuC,EAAvD;AAIA,QAAI0G,MAAM,GAAG,KAAKL,OAAL,CAAa,EAAb,EAAiB,SAAjB,CAAb;AAGAK,IAAAA,MAAM,GAAG,KAAKL,OAAL,CACPK,MADO,EAEP1G,MAAM,CAAC2G,OAAP,8BACwBH,OADxB,SACkCxG,MAAM,CAAC2G,OADzC,SAEI,KAAK9E,OAJF,CAAT;AAMA6E,IAAAA,MAAM,GAAG,KAAKL,OAAL,CAAaK,MAAb,EAAqB,KAAKV,UAAL,CAAgBhI,MAAhB,EAAwBgC,MAAxB,EAAgCwG,OAAhC,CAArB,CAAT;AACA,WAAOE,MAAP;AACD;;AAEDpD,EAAAA,QAAQ,CAACtF,MAAD,EAAiBgC,MAAjB,EAAkC;AACxC,QAAMwG,OAAO,GAAG,KAAKC,UAAL,CAAgBzG,MAAhB,IAA0B,UAA1B,GAAuC,EAAvD;AACA,QAAMnB,IAAI,GAAG,KAAKO,OAAL,CAAaY,MAAM,CAACnB,IAApB,CAAb;AACA,QAAMW,IAAI,GAAG,KAAKC,MAAL,CAAYzB,MAAZ,CAAb;AACA,QAAMuC,IAAI,GAAG,KAAKgG,QAAL,CAAc/G,IAAd,EAAoBQ,MAApB,CAAb;AACA,QAAM4G,MAAM,GAAG,KAAKvB,cAAL,CAAoBrH,MAApB,EAA4BgC,MAA5B,CAAf;AACA,qBAAUhC,MAAV,qCACEa,IAAI,CAACpB,IADP,eAEKmJ,MAFL,iBAEkB,KAAKxF,EAAL,CAAQpB,MAAM,CAACqC,UAAP,CAAkB1D,WAAlB,EAAR,CAFlB,cAE8D,KAAK4G,QAAL,CAC5DvF,MAAM,CAACsC,QADqD,EAE5DkE,OAF4D,CAF9D,SAKIjG,IAAI,GAAG,OAAOA,IAAV,GAAiB,EALzB,gBAMFvC,MANE;AAOD;;AAEDyF,EAAAA,UAAU,CAACzF,MAAD,EAAiBgC,MAAjB,EAAkC;AAC1C,QAAMwG,OAAO,GAAG,KAAKC,UAAL,CAAgBzG,MAAhB,IAA0B,UAA1B,GAAuC,EAAvD;AAEA,QAAMR,IAAI,GAAGxB,MAAM,GAAG,KAAKb,SAA3B;AACA,QAAMoD,IAAI,GAAG,KAAKgG,QAAL,CAAc/G,IAAd,EAAoBQ,MAApB,CAAb;AACA,QAAM4G,MAAM,GAAG,KAAKvB,cAAL,CAAoBrH,MAApB,EAA4BgC,MAA5B,CAAf;AACA,qBAAUhC,MAAV,2CAAiD4I,MAAjD,iBAA8D,KAAKxF,EAAL,CAC5DpB,MAAM,CAACqC,UAAP,CAAkB1D,WAAlB,EAD4D,CAA9D,cAEK,KAAK4G,QAAL,CAAcvF,MAAM,CAACsC,QAArB,EAA+BkE,OAA/B,CAFL,SAE+CjG,IAAI,GAAG,OAAOA,IAAV,GAAiB,EAFpE,gBAGFvC,MAHE;AAID;;AAED6I,EAAAA,OAAO,CAAC7I,MAAD,EAAiBC,IAAjB,EAA2C;AAChD,WAAO,KAAKF,aAAL,CAAmBC,MAAnB,EAA2BC,IAA3B,CAAP;AACD;;AAGD6I,EAAAA,SAAS,GAAoB;AAAA,QAAnBC,UAAmB,uEAAN,IAAM;AAC3B,QAAMC,KAAe,GAAG,EAAxB;AACA,QAAI,CAAC,KAAKC,GAAV,EAAe,OAAOD,KAAP;;AACf,QAAID,UAAJ,EAAgB;AACd,WAAKE,GAAL,CAASC,KAAT,CAAeC,KAAf,CAAqBhI,QAArB;AACD,KAFD,MAEO;AACL,WAAK8H,GAAL,CAASC,KAAT,CAAeC,KAAf,CAAqBhI,QAArB,GAAgC,CAAhC;AACD;;AACD,QAAM+H,KAAK,GAAG,KAAKD,GAAL,CAASC,KAAvB;AACArD,IAAAA,MAAM,CAACC,MAAP,CAAcoD,KAAd,EACGE,MADH,CACWvI,IAAD,IAAUA,IAAI,CAACM,QAAL,GAAgB,CAAhB,IAAqB,CAACN,IAAI,CAACwI,SAD/C,EAEGxG,OAFH,CAEYhC,IAAD,IAAUmI,KAAK,CAAChG,IAAN,YAAenC,IAAI,CAACpB,IAApB,EAFrB;AAOA,WAAOuJ,KAAP;AACD;;AAED5H,EAAAA,OAAO,CAACP,IAAD,EAA2B;AAChC,UAAMO,OAAN,CAAcP,IAAd;AAGA,QAAMyI,EAAE,GAAG,IAAX;AAEA,QAAMC,UAAuC,GAAG;AAC9CJ,MAAAA,KAAK,EAAE;AAAE9G,QAAAA,OAAO,EAAE,EAAX;AAAe5C,QAAAA,IAAI,YAAK6J,EAAL;AAAnB,OADuC;AAE9CE,MAAAA,KAAK,EAAE;AAAEnH,QAAAA,OAAO,EAAE,EAAX;AAAe5C,QAAAA,IAAI,YAAK6J,EAAL;AAAnB,OAFuC;AAG9CG,MAAAA,MAAM,EAAE;AAAEpH,QAAAA,OAAO,EAAE,EAAX;AAAe5C,QAAAA,IAAI,YAAK6J,EAAL;AAAnB,OAHsC;AAI9CI,MAAAA,GAAG,EAAE;AAAErH,QAAAA,OAAO,EAAE,KAAKwB,OAAhB;AAAyBpE,QAAAA,IAAI,EAAE;AAA/B,OAJyC;AAK9CkK,MAAAA,OAAO,EAAE;AAAEtH,QAAAA,OAAO,EAAE,KAAKwB,OAAhB;AAAyBpE,QAAAA,IAAI,EAAE;AAA/B,OALqC;AAM9CmK,MAAAA,IAAI,EAAE;AAAEvH,QAAAA,OAAO,EAAE,KAAKwB,OAAhB;AAAyBpE,QAAAA,IAAI,EAAE;AAA/B,OANwC;AAO9CoK,MAAAA,IAAI,EAAE;AAAExH,QAAAA,OAAO,EAAE,KAAKwB,OAAhB;AAAyBpE,QAAAA,IAAI,EAAE;AAA/B,OAPwC;AAQ9CqK,MAAAA,QAAQ,EAAE;AAAEzH,QAAAA,OAAO,EAAE,KAAKwB,OAAhB;AAAyBpE,QAAAA,IAAI,EAAE;AAA/B,OARoC;AAS9CsK,MAAAA,MAAM,EAAE;AAAE1H,QAAAA,OAAO,EAAE,KAAKwB,OAAhB;AAAyBpE,QAAAA,IAAI,EAAE;AAA/B,OATsC;AAU9CuK,MAAAA,KAAK,EAAE;AAAE3H,QAAAA,OAAO,EAAE,KAAKwB,OAAhB;AAAyBpE,QAAAA,IAAI,EAAE;AAA/B,OAVuC;AAW9CwK,MAAAA,KAAK,EAAE;AAAE5H,QAAAA,OAAO,EAAE,KAAKwB,OAAhB;AAAyBpE,QAAAA,IAAI,EAAE;AAA/B,OAXuC;AAY9CyK,MAAAA,KAAK,EAAE;AAAE7H,QAAAA,OAAO,EAAE,KAAKwB,OAAhB;AAAyBpE,QAAAA,IAAI,EAAE;AAA/B,OAZuC;AAa9C0K,MAAAA,OAAO,EAAE;AAAE9H,QAAAA,OAAO,EAAE,KAAKwB,OAAhB;AAAyBpE,QAAAA,IAAI,EAAE;AAA/B,OAbqC;AAc9C2K,MAAAA,MAAM,EAAE;AAAE/H,QAAAA,OAAO,EAAE,KAAKwB,OAAhB;AAAyBpE,QAAAA,IAAI,EAAE;AAA/B,OAdsC;AAe9C4K,MAAAA,MAAM,EAAE;AAAEhI,QAAAA,OAAO,EAAE,KAAKwB,OAAhB;AAAyBpE,QAAAA,IAAI,EAAE;AAA/B,OAfsC;AAgB9C6K,MAAAA,QAAQ,EAAE;AAAEjI,QAAAA,OAAO,EAAE,KAAKwB,OAAhB;AAAyBpE,QAAAA,IAAI,EAAE;AAA/B,OAhBoC;AAiB9C8K,MAAAA,MAAM,EAAE;AAAElI,QAAAA,OAAO,EAAE,KAAKwB,OAAhB;AAAyBpE,QAAAA,IAAI,EAAE;AAA/B,OAjBsC;AAkB9C+K,MAAAA,GAAG,EAAE;AAAEnI,QAAAA,OAAO,EAAE,KAAKwB,OAAhB;AAAyBpE,QAAAA,IAAI,EAAE;AAA/B,OAlByC;AAmB9CgL,MAAAA,GAAG,EAAE;AAAEpI,QAAAA,OAAO,EAAE,KAAKwB,OAAhB;AAAyBpE,QAAAA,IAAI,EAAE;AAA/B,OAnByC;AAoB9CiL,MAAAA,IAAI,EAAE;AAAErI,QAAAA,OAAO,EAAE,EAAX;AAAe5C,QAAAA,IAAI,EAAE;AAArB;AApBwC,KAAhD;;AAuBA,QAAIoB,IAAI,CAACsG,WAAT,EAAsB;AAEpB,UAAMnB,GAAG,GAAG,KAAK5E,OAAL,CAAaP,IAAI,CAACsG,WAAlB,CAAZ;;AACA,cAAQtG,IAAI,CAAC8J,SAAb;AACE,aAAK,WAAL;AACE,iBAAO;AAAEtI,YAAAA,OAAO,EAAE,IAAX;AAAiB5C,YAAAA,IAAI,aAAMuG,GAAG,CAACvG,IAAV;AAArB,WAAP;;AACF,aAAK,UAAL;AAAiB;AACf,gBAAMmL,OAAO,GACX/J,IAAI,CAACsG,WAAL,CAAiB1H,IAAjB,KAA0B,QAA1B,GAAqC,YAArC,GAAoDuG,GAAG,CAACvG,IAD1D;AAGA,mBAAO;AAAE4C,cAAAA,OAAO,EAAE,KAAX;AAAkB5C,cAAAA,IAAI,6BAAsBmL,OAAtB;AAAtB,aAAP;AACD;;AACD,aAAK,gBAAL;AACE,iBAAO;AAAEvI,YAAAA,OAAO,EAAE,KAAX;AAAkB5C,YAAAA,IAAI,uBAAgBuG,GAAG,CAACvG,IAApB;AAAtB,WAAP;;AACF,aAAK,UAAL;AACE,iBAAO;AAAE4C,YAAAA,OAAO,EAAE,KAAX;AAAkB5C,YAAAA,IAAI,EAAEoB,IAAI,CAACpB;AAA7B,WAAP;AAZJ;;AAcA,YAAM,IAAI0J,KAAJ,qCAAuC0B,IAAI,CAACC,SAAL,CAAejK,IAAf,CAAvC,EAAN;AACD;;AAED,QAAIA,IAAI,CAACpB,IAAT,EAAe;AACb,aAAO8J,UAAU,CAAC1I,IAAI,CAACpB,IAAN,CAAV,IAAyB;AAAE4C,QAAAA,OAAO,EAAE,EAAX;AAAe5C,QAAAA,IAAI,YAAKoB,IAAI,CAACpB,IAAV;AAAnB,OAAhC;AACD,KAFD,MAEO;AACL,YAAM,IAAI0J,KAAJ,CAAU,gCAAV,CAAN;AACD;AACF;;AAvtBmC","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport type {\n Arg,\n EnumValueType,\n IMethod,\n IParameter,\n IProperty,\n IType,\n} from './sdkModels'\nimport { EnumType, mayQuote, strBody } from './sdkModels'\nimport type { IMappedType } from './codeGen'\nimport { CodeGen, commentBlock } from './codeGen'\n\nexport class SwiftGen extends CodeGen {\n // Use AnyString JSON parser for number or string ids\n anyString = true\n codePath = './swift/'\n packagePath = 'looker'\n itself = 'self'\n fileExtension = '.swift'\n commentStr = '// '\n nullStr = 'nil'\n transport = 'transport'\n\n argDelimiter = ', '\n paramDelimiter = ',\\n'\n propDelimiter = '\\n'\n enumDelimiter = '\\n'\n codeQuote = '\"'\n\n indentStr = ' '\n endTypeStr = `\\n}`\n needsRequestTypes = false\n willItStream = true\n keywords = new Set<string>([\n 'associatedtype',\n 'class',\n 'deinit',\n 'enum',\n 'extension',\n 'fileprivate',\n 'func',\n 'import',\n 'init',\n 'inout',\n 'internal',\n 'let',\n 'open',\n 'operator',\n 'private',\n 'protocol',\n 'public',\n 'static',\n 'struct',\n 'subscript',\n 'typealias',\n 'var',\n 'break',\n 'case',\n 'continue',\n 'default',\n 'defer',\n 'do',\n 'else',\n 'fallthrough',\n 'for',\n 'guard',\n 'if',\n 'in',\n 'repeat',\n 'return',\n 'switch',\n 'where',\n 'while',\n 'as',\n 'Any',\n 'catch',\n 'false',\n 'is',\n 'nil',\n 'rethrows',\n 'super',\n 'self',\n 'Self',\n 'throw',\n 'throws',\n 'true',\n 'try',\n '_',\n '#available',\n '#colorLiteral',\n '#column',\n '#else',\n '#elseif',\n '#endif',\n '#file',\n '#fileLiteral',\n '#function',\n '#if',\n '#imageLiteral',\n '#line',\n '#selector',\n 'and #sourceLocation',\n 'associativity',\n 'convenience',\n 'dynamic',\n 'didSet',\n 'final',\n 'get',\n 'infix',\n 'indirect',\n 'lazy',\n 'left',\n 'mutating',\n 'none',\n 'nonmutating',\n 'optional',\n 'override',\n 'postfix',\n 'precedence',\n 'prefix',\n 'Protocol',\n // 'required', removing this from the list because Swift complains about it being escaped\n 'right',\n 'set',\n 'Type',\n 'unowned',\n 'weak',\n 'willSet',\n ])\n\n supportsMultiApi(): boolean {\n return false\n }\n\n methodsPrologue(_indent: string) {\n return `\n/// ${this.warnEditing()}\n\nimport Foundation\n\n@available(OSX 10.15, *)\nopen class ${this.packageName}: APIMethods {\n\n${this.indentStr}public lazy var stream = ${this.packageName}Stream(authSession)\n`\n }\n\n streamsPrologue(_indent: string): string {\n return `\n/// ${this.warnEditing()}\n\nimport Foundation\n\n@available(OSX 10.15, *)\nopen class ${this.packageName}Stream: APIMethods {\n`\n }\n\n methodsEpilogue(_indent: string) {\n return '\\n}'\n }\n\n modelsPrologue(_indent: string) {\n return `\n/// ${this.warnEditing()}\n\nimport Foundation\n`\n }\n\n modelsEpilogue(_indent: string) {\n return '\\n'\n }\n\n reserve(name: string) {\n if (this.keywords.has(name)) {\n return `\\`${name}\\``\n }\n return name\n }\n\n sdkFileName(baseFileName: string) {\n // return this.fileName(`sdk/${baseFileName}${this.apiRef}`)\n return this.fileName(`sdk/${baseFileName}`)\n }\n\n commentHeader(indent: string, text: string | undefined, commentStr = ' * ') {\n if (this.noComment || !text) return ''\n if (commentStr === ' ') {\n return `${indent}/**\\n\\n${commentBlock(\n text,\n indent,\n commentStr\n )}\\n${indent} */\\n`\n }\n return `${indent}/**\\n${commentBlock(\n text,\n indent,\n commentStr\n )}\\n${indent} */\\n`\n }\n\n beginRegion(indent: string, description: string): string {\n return `${indent}// MARK ${description}`\n }\n\n endRegion(_indent: string, _description: string): string {\n return '' // No end MARK in Swift, and XCode appears to no longer process MARKs anyway\n }\n\n /**\n * true if this property should use AnyString\n * @param property to check\n */\n useAnyString(property: IProperty) {\n const nameCheck = property.name.toLowerCase()\n return (\n this.anyString &&\n property.type.name.toLowerCase() === 'string' &&\n (nameCheck === 'id' || nameCheck.endsWith('_id'))\n )\n }\n\n /**\n * Private version of the name (_ prefix)\n * @param name to privatize\n */\n privy(name: string) {\n return this.reserve('_' + name)\n }\n\n declareProperty(indent: string, property: IProperty) {\n // const optional = (property.nullable || !property.required) ? '?' : ''\n const optional = property.required ? '' : '?'\n if (property.name === strBody) {\n // TODO refactor this hack to track context when the body parameter is created for the request type\n property.type.refCount++\n return (\n this.commentHeader(\n indent,\n property.description ||\n 'body parameter for dynamically created request type'\n ) +\n `${indent}var ${this.reserve(property.name)}: ${\n property.type.name\n }${optional}`\n )\n }\n const type = this.typeMap(property.type)\n const specialHandling = this.useAnyString(property)\n let munge = ''\n let declaration = `${indent}public var ${this.reserve(property.name)}: ${\n type.name\n }${optional}\\n`\n if (specialHandling) {\n const privy = this.reserve('_' + property.name)\n const bump = this.bumper(indent)\n const setter = property.required\n ? 'AnyString.init(newValue)'\n : 'newValue.map(AnyString.init)'\n munge = `${indent}private var ${privy}: AnyString${optional}\\n`\n declaration = `${indent}public var ${this.reserve(property.name)}: ${\n type.name\n }${optional} {\n${bump}get { ${privy}${optional}.value }\n${bump}set { ${privy} = ${setter} }\n${indent}}\\n`\n }\n return (\n munge +\n this.commentHeader(indent, this.describeProperty(property)) +\n declaration\n )\n }\n\n paramComment(param: IParameter, mapped: IMappedType) {\n return `@param {${mapped.name}} ${param.name} ${param.description}`\n }\n\n declareParameter(indent: string, method: IMethod, param: IParameter) {\n const type =\n param.location === strBody\n ? this.writeableType(param.type, method) || param.type\n : param.type\n const mapped = this.typeMap(type)\n let pOpt = ''\n let line = ''\n if (param.location === strBody) {\n mapped.name = `${mapped.name}`\n }\n if (!param.required) {\n pOpt = '?'\n } else {\n line = '_ '\n }\n return (\n this.commentHeader(indent, this.paramComment(param, mapped)) +\n `${indent}${line}${this.reserve(param.name)}: ${mapped.name}${pOpt}` +\n (param.required ? '' : mapped.default ? ` = ${mapped.default}` : '')\n )\n }\n\n construct(indent: string, type: IType) {\n if (type instanceof EnumType) return ''\n indent = this.bumper(indent)\n const bump = this.bumper(indent)\n const args: string[] = []\n const posArgs: string[] = []\n const inits: string[] = []\n const posInits: string[] = []\n const props = this.typeProperties(type)\n props.forEach((prop) => {\n const propName = this.reserve(prop.name)\n args.push(this.declareConstructorArg('', prop))\n posArgs.push(this.declarePositionalArg('', prop))\n if (this.useAnyString(prop)) {\n const varName = this.privy(propName)\n if (prop.required) {\n inits.push(`${bump}${this.it(varName)} = AnyString.init(${propName})`)\n } else {\n inits.push(\n `${bump}${this.it(varName)} = ${propName}.map(AnyString.init)`\n )\n }\n } else {\n inits.push(`${bump}${this.it(propName)} = ${propName}`)\n }\n posInits.push(`${propName}: ${propName}`)\n })\n const namedInit =\n `${indent}public init(` +\n `${args.join(this.argDelimiter)}) {\\n` +\n inits.join('\\n') +\n `\\n${indent}}`\n let posInit = ''\n if (props.some((p) => p.required)) {\n posInit =\n `\\n${indent}public init(` +\n `${posArgs.join(this.argDelimiter)}) {\\n` +\n `${bump}${this.it('init')}(${posInits.join(', ')})` +\n `\\n${indent}}\\n`\n }\n return `\\n${namedInit}\\n${posInit}`\n }\n\n declarePositionalArg(indent: string, property: IProperty) {\n const mappedType = this.typeMap(property.type)\n let propType: string\n let line = '_ '\n if (property.required) {\n propType = mappedType.name\n } else {\n line = ''\n propType = `${mappedType.name}? = ${this.nullStr}`\n }\n const propName = this.reserve(property.name)\n return `${indent}${line}${propName}: ${propType}`\n }\n\n declareConstructorArg(indent: string, property: IProperty) {\n const mappedType = this.typeMap(property.type)\n let propType: string\n if (property.required) {\n propType = mappedType.name\n } else {\n propType = `${mappedType.name}? = ${this.nullStr}`\n }\n const propName = this.reserve(property.name)\n return `${indent}${propName}: ${propType}`\n }\n\n methodHeaderDeclaration(indent: string, method: IMethod, streamer = false) {\n const type = this.typeMap(method.type)\n const resultType = streamer ? 'Data' : type.name\n const returnType =\n type.name === 'Void' ? 'Voidable' : `SDKResponse<${resultType}, SDKError>`\n const head = method.description?.trim()\n let headComment =\n (head ? `${head}\\n\\n` : '') +\n `${method.httpMethod} ${method.endpoint} -> ${type.name}`\n let fragment\n const requestType = this.requestTypeName(method)\n const bump = indent + this.indentStr\n\n if (requestType) {\n // use the request type that will be generated in models.ts\n fragment = `request: I${requestType}`\n } else {\n const params: string[] = []\n const args = method.allParams // get the params in signature order\n if (args && args.length > 0)\n args.forEach((p) => params.push(this.declareParameter(bump, method, p)))\n fragment =\n params.length > 0 ? `\\n${params.join(this.paramDelimiter)}` : ''\n }\n if (method.responseIsBoth()) {\n headComment += `\\n\\n**Note**: Binary content may be returned by this method.`\n } else if (method.responseIsBinary()) {\n headComment += `\\n\\n**Note**: Binary content is returned by this method.\\n`\n }\n const header =\n this.commentHeader(indent, headComment) +\n `${indent}public func ${method.name}(`\n\n return (\n header +\n fragment +\n `${\n fragment ? ',' : ''\n }\\n${bump}options: ITransportSettings? = nil\\n${indent}) -> ${returnType} {\\n`\n )\n }\n\n methodSignature(indent: string, method: IMethod) {\n return this.methodHeaderDeclaration(indent, method, false)\n }\n\n encodePathParams(indent: string, method: IMethod) {\n let encodings = ''\n if (method.pathParams.length > 0) {\n for (const param of method.pathParams) {\n // For swift, just encode all path params because of awkward variable renames\n encodings += `${indent}let path_${param.name} = encodeParam(${param.name})\\n`\n }\n }\n return encodings\n }\n\n declareMethod(indent: string, method: IMethod) {\n const bump = this.bumper(indent)\n return (\n this.methodSignature(indent, method) +\n this.encodePathParams(bump, method) +\n this.httpCall(bump, method) +\n `\\n${indent}}`\n )\n }\n\n streamerSignature(indent: string, method: IMethod) {\n return this.methodHeaderDeclaration(indent, method, true)\n }\n\n declareStreamer(indent: string, method: IMethod) {\n const bump = this.bumper(indent)\n return (\n this.streamerSignature(indent, method) +\n this.encodePathParams(bump, method) +\n this.streamCall(bump, method) +\n `\\n${indent}}`\n )\n }\n\n codingKeys(indent: string, type: IType) {\n let special = false\n\n const keys = Object.values(type.properties).map((p) => {\n let name = this.reserve(p.name)\n let alias = ''\n const useIt = this.useAnyString(p)\n if (useIt) {\n name = this.privy(name)\n special = true\n alias = p.jsonName\n } else if (p.hasSpecialNeeds) {\n special = true\n alias = p.jsonName\n }\n return name + (alias ? ` = \"${alias}\"` : '')\n })\n\n if (!special) return ''\n const bump = this.bumper(indent)\n const bump2 = this.bumper(bump)\n const cases = keys.join(`\\n${bump2}case `)\n\n return (\n `\\n${bump}private enum CodingKeys : String, CodingKey {` +\n `\\n${bump2}case ${cases}` +\n `\\n${bump}}\\n`\n )\n }\n\n // declareType(indent: string, type: IType): string {\n // return super.declareType(this.bumper(indent), type)\n // }\n declareEnumValue(indent: string, value: EnumValueType) {\n const quote = typeof value === 'string' ? this.codeQuote : ''\n return `${indent}case ${mayQuote(value)} = ${quote}${value}${quote}`\n }\n\n typeSignature(indent: string, type: IType) {\n const recursive = type.isRecursive()\n let typeName = recursive ? 'class' : 'struct'\n const access = recursive ? 'open' : 'public'\n let baseClass = 'SDKModel'\n const isEnum = type instanceof EnumType\n if (isEnum) {\n typeName = 'enum'\n const num = type as EnumType\n const mapped = this.typeMap(num.elementType)\n baseClass = `${mapped.name}, Codable`\n }\n\n const keys = this.codingKeys(indent, type)\n\n const needClass = recursive\n ? '\\nRecursive type references must use Class instead of Struct'\n : ''\n const mapped = this.typeMap(type)\n return (\n this.commentHeader(indent, type.description + needClass) +\n `${indent}${access} ${typeName} ${mapped.name}: ${baseClass} {\\n${keys}`\n )\n }\n\n errorResponses(_indent: string, _method: IMethod) {\n // const results: string[] = method.errorResponses\n // .map(r => `${r.type.name}`)\n // return results.join(' | ')\n // TODO figure out how to express Union error type responses\n return 'SDKError'\n }\n\n httpPath(path: string, prefix?: string) {\n prefix = prefix || ''\n if (path.indexOf('{') >= 0) {\n let tweak = path.replace(/{/gi, '\\\\(path_' + prefix)\n tweak = tweak.replace(/}/gi, ')')\n return `\"${tweak}\"`\n }\n return `\"${path}\"`\n }\n\n argGroup(indent: string, args: Arg[], prefix?: string) {\n if (!args || args.length === 0) return this.nullStr\n const hash: string[] = []\n for (const arg of args) {\n if (prefix) {\n hash.push(`\"${arg}\": ${prefix}${arg}`)\n } else {\n hash.push(`\"${arg}\": ${arg}`)\n }\n }\n return `\\n${indent}[${hash.join(this.argDelimiter)}]`\n }\n\n queryGroup(indent: string, method: IMethod, prefix?: string) {\n const params = method.getParams('query')\n if (!params || params.length === 0) return this.nullStr\n const hash: string[] = []\n for (const param of params) {\n const arg = this.asAny(param)\n if (prefix) {\n hash.push(`\"${param.name}\": ${prefix}${arg}`)\n } else {\n hash.push(`\"${param.name}\": ${arg}`)\n }\n }\n return `\\n${indent}[${hash.join(this.argDelimiter)}]`\n }\n\n asAny(param: IParameter): Arg {\n let castIt\n if (param.type.elementType) {\n castIt = true\n } else {\n const mapped = this.typeMap(param.type)\n switch (mapped.name.toLowerCase()) {\n case 'date':\n case 'datetime': // case 'url': case 'uri':\n case 'object':\n case 'bool':\n castIt = true\n break\n default:\n castIt = false\n break\n }\n }\n return param.name + (castIt ? ' as Any?' : '')\n }\n\n argList(indent: string, args: Arg[], prefix?: string) {\n prefix = prefix || ''\n return args && args.length !== 0\n ? `\\n${indent}${prefix}${args.join(this.argDelimiter + prefix)}`\n : this.nullStr\n }\n\n /**\n * this is a builder function to produce arguments with optional null place holders but no extra required optional arguments\n * @param {string} current accumulator\n * @param {string} args names of parameters\n * @returns {string} accumulated argument list\n */\n argFill(current: string, args: string) {\n if (!current && args.trim() === this.nullStr) {\n // Don't append trailing optional arguments if none have been set yet\n return ''\n }\n return `${args}${current ? this.argDelimiter : ''}${current}`\n }\n\n /**\n * build the http argument list from back to front, so trailing undefined arguments\n * can be omitted. Path arguments are resolved as part of the path parameter to general\n * purpose API method call\n * e.g.\n * {queryArgs...}, bodyArg, {headerArgs...}, {cookieArgs...}\n * {queryArgs...}, null, null, {cookieArgs...}\n * null, bodyArg\n * {queryArgs...}\n * @param {string} indent\n * @param {IMethod} method\n * @returns {string}\n */\n httpArgs(indent: string, method: IMethod) {\n const request = this.useRequest(method) ? 'request.' : ''\n // add options at the end of the request calls. this will cause all other arguments to be\n // filled in but there's no way to avoid this for passing in the last optional parameter.\n // Fortunately, this code bloat is minimal and also hidden from the consumer.\n let result = this.argFill('', 'options')\n // let result = this.argFill('', this.argGroup(indent, method.cookieArgs, request))\n // result = this.argFill(result, this.argGroup(indent, method.headerArgs, request))\n result = this.argFill(\n result,\n method.bodyArg\n ? `try! self.encode(${request}${method.bodyArg})`\n : this.nullStr\n )\n result = this.argFill(result, this.queryGroup(indent, method, request))\n return result\n }\n\n httpCall(indent: string, method: IMethod) {\n const request = this.useRequest(method) ? 'request.' : ''\n const type = this.typeMap(method.type)\n const bump = this.bumper(indent)\n const args = this.httpArgs(bump, method)\n const errors = this.errorResponses(indent, method)\n return `${indent}let result: SDKResponse<${\n type.name\n }, ${errors}> = ${this.it(method.httpMethod.toLowerCase())}(${this.httpPath(\n method.endpoint,\n request\n )}${args ? ', ' + args : ''})\n${indent}return result`\n }\n\n streamCall(indent: string, method: IMethod) {\n const request = this.useRequest(method) ? 'request.' : ''\n // const type = this.typeMap(method.type)\n const bump = indent + this.indentStr\n const args = this.httpArgs(bump, method)\n const errors = this.errorResponses(indent, method)\n return `${indent}let result: SDKResponse<Data, ${errors}> = ${this.it(\n method.httpMethod.toLowerCase()\n )}(${this.httpPath(method.endpoint, request)}${args ? ', ' + args : ''})\n${indent}return result`\n }\n\n summary(indent: string, text: string | undefined) {\n return this.commentHeader(indent, text)\n }\n\n // TODO avoid duplicate code\n typeNames(countError = true) {\n const names: string[] = []\n if (!this.api) return names\n if (countError) {\n this.api.types.Error.refCount++\n } else {\n this.api.types.Error.refCount = 0\n }\n const types = this.api.types\n Object.values(types)\n .filter((type) => type.refCount > 0 && !type.intrinsic)\n .forEach((type) => names.push(`I${type.name}`))\n // TODO import default constants if necessary\n // Object.values(types)\n // .filter(type => type instanceof RequestType)\n // .forEach(type => names.push(`${strDefault}${type.name.substring(strRequest.length)}`))\n return names\n }\n\n typeMap(type: IType): IMappedType {\n super.typeMap(type)\n // const ns = `api${this.apiRef}.`\n // const ns = `Looker.`\n const ns = 'Lk'\n\n const swiftTypes: Record<string, IMappedType> = {\n Error: { default: '', name: `${ns}Error` },\n Group: { default: '', name: `${ns}Group` },\n Locale: { default: '', name: `${ns}Locale` },\n any: { default: this.nullStr, name: 'AnyCodable' },\n boolean: { default: this.nullStr, name: 'Bool' },\n byte: { default: this.nullStr, name: 'binary' },\n date: { default: this.nullStr, name: 'Date' },\n datetime: { default: this.nullStr, name: 'Date' },\n double: { default: this.nullStr, name: 'Double' },\n float: { default: this.nullStr, name: 'Float' },\n int32: { default: this.nullStr, name: 'Int32' },\n int64: { default: this.nullStr, name: 'Int64' },\n integer: { default: this.nullStr, name: 'Int' },\n number: { default: this.nullStr, name: 'Double' },\n object: { default: this.nullStr, name: 'Any' },\n password: { default: this.nullStr, name: 'Password' },\n string: { default: this.nullStr, name: 'String' },\n uri: { default: this.nullStr, name: 'URI' },\n url: { default: this.nullStr, name: 'URL' },\n void: { default: '', name: 'Voidable' },\n }\n\n if (type.elementType) {\n // This is a structure with nested types\n const map = this.typeMap(type.elementType)\n switch (type.className) {\n case 'ArrayType':\n return { default: '[]', name: `[${map.name}]` }\n case 'HashType': {\n const mapName =\n type.elementType.name === 'string' ? 'AnyCodable' : map.name // TODO fix bad API spec, like MergeQuery vis_config\n\n return { default: 'nil', name: `StringDictionary<${mapName}>` }\n }\n case 'DelimArrayType':\n return { default: 'nil', name: `DelimArray<${map.name}>` }\n case 'EnumType':\n return { default: 'nil', name: type.name }\n }\n throw new Error(`Don't know how to handle: ${JSON.stringify(type)}`)\n }\n\n if (type.name) {\n return swiftTypes[type.name] || { default: '', name: `${type.name}` } // No null default for complex types\n } else {\n throw new Error('Cannot output a nameless type.')\n }\n }\n}\n"],"file":"swift.gen.js"}
1
+ {"version":3,"sources":["../../src/swift.gen.ts"],"names":["describeParam","EnumType","mayQuote","strBody","TypeOfType","typeOfType","CodeGen","commentBlock","SwiftGen","Set","supportsMultiApi","methodsPrologue","_indent","warnEditing","packageName","indentStr","streamsPrologue","methodsEpilogue","modelsPrologue","modelsEpilogue","reserve","name","keywords","has","sdkFileName","baseFileName","fileName","commentHeader","indent","text","commentStr","noComment","beginRegion","description","endRegion","_description","isIdProp","_property","itemType","property","type","Array","elementType","useAnyString","typeCheck","toLowerCase","anyString","useAnyInt","privy","replace","getSpecialHandling","declareProperty","optional","required","refCount","typeMap","specialHandling","munge","declaration","ra","bump","bumper","setter","getter","describeProperty","paramComment","param","mapped","declareParameter","method","location","writeableType","pOpt","line","default","initProp","prop","propName","varName","it","construct","args","posArgs","inits","posInits","props","typeProperties","forEach","push","declareConstructorArg","declarePositionalArg","namedInit","join","argDelimiter","posInit","some","p","mappedType","propType","nullStr","methodHeaderDeclaration","streamer","resultType","returnType","head","trim","headComment","httpMethod","endpoint","fragment","requestType","requestTypeName","params","allParams","length","paramDelimiter","responseIsBoth","responseIsBinary","dep","deprecated","header","methodSignature","encodePathParams","encodings","pathParams","declareMethod","httpCall","streamerSignature","declareStreamer","streamCall","codingKeys","special","keys","Object","values","properties","map","alias","useIt","jsonName","hasSpecialNeeds","bump2","cases","declareEnumValue","value","quote","codeQuote","typeSignature","recursive","isRecursive","typeName","access","baseClass","isEnum","num","needClass","errorResponses","_method","httpPath","path","prefix","indexOf","tweak","argGroup","hash","arg","queryGroup","getParams","asAny","castIt","argList","argFill","current","httpArgs","request","useRequest","result","bodyArg","errors","summary","typeNames","countError","names","api","types","Error","filter","intrinsic","ns","swiftTypes","Group","Locale","any","boolean","byte","date","datetime","double","float","int32","int64","integer","number","object","password","string","uri","url","void","className","mapName","JSON","stringify"],"mappings":"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","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport type {\n Arg,\n EnumValueType,\n IMethod,\n IParameter,\n IProperty,\n IType,\n} from './sdkModels'\nimport {\n describeParam,\n EnumType,\n mayQuote,\n strBody,\n TypeOfType,\n typeOfType,\n} from './sdkModels'\nimport type { IMappedType } from './codeGen'\nimport { CodeGen, commentBlock } from './codeGen'\n\nexport class SwiftGen extends CodeGen {\n // Use AnyString JSON parser for number or string ids\n anyString = true\n codePath = './swift/'\n packagePath = 'looker'\n itself = 'self'\n fileExtension = '.swift'\n commentStr = '// '\n nullStr = 'nil'\n transport = 'transport'\n\n argDelimiter = ', '\n paramDelimiter = ',\\n'\n propDelimiter = '\\n'\n enumDelimiter = '\\n'\n codeQuote = '\"'\n\n indentStr = ' '\n endTypeStr = `\\n}`\n needsRequestTypes = false\n willItStream = true\n keywords = new Set<string>([\n 'associatedtype',\n 'class',\n 'deinit',\n 'enum',\n 'extension',\n 'fileprivate',\n 'func',\n 'import',\n 'init',\n 'inout',\n 'internal',\n 'let',\n 'open',\n 'operator',\n 'private',\n 'protocol',\n 'public',\n 'static',\n 'struct',\n 'subscript',\n 'typealias',\n 'var',\n 'break',\n 'case',\n 'continue',\n 'default',\n 'defer',\n 'do',\n 'else',\n 'fallthrough',\n 'for',\n 'guard',\n 'if',\n 'in',\n 'repeat',\n 'return',\n 'switch',\n 'where',\n 'while',\n 'as',\n 'Any',\n 'catch',\n 'false',\n 'is',\n 'nil',\n 'rethrows',\n 'super',\n 'self',\n 'Self',\n 'throw',\n 'throws',\n 'true',\n 'try',\n '_',\n '#available',\n '#colorLiteral',\n '#column',\n '#else',\n '#elseif',\n '#endif',\n '#file',\n '#fileLiteral',\n '#function',\n '#if',\n '#imageLiteral',\n '#line',\n '#selector',\n 'and #sourceLocation',\n 'associativity',\n 'convenience',\n 'dynamic',\n 'didSet',\n 'final',\n 'get',\n 'infix',\n 'indirect',\n 'lazy',\n 'left',\n 'mutating',\n 'none',\n 'nonmutating',\n 'optional',\n 'override',\n 'postfix',\n 'precedence',\n 'prefix',\n 'Protocol',\n // 'required', removing this from the list because Swift complains about it being escaped\n 'right',\n 'set',\n 'Type',\n 'unowned',\n 'weak',\n 'willSet',\n ])\n\n supportsMultiApi(): boolean {\n return false\n }\n\n methodsPrologue(_indent: string) {\n return `\n/// ${this.warnEditing()}\n\nimport Foundation\n\n@available(OSX 10.15, *)\nopen class ${this.packageName}: APIMethods {\n\n${this.indentStr}public lazy var stream = ${this.packageName}Stream(authSession)\n`\n }\n\n streamsPrologue(_indent: string): string {\n return `\n/// ${this.warnEditing()}\n\nimport Foundation\n\n@available(OSX 10.15, *)\nopen class ${this.packageName}Stream: APIMethods {\n`\n }\n\n methodsEpilogue(_indent: string) {\n return '\\n}'\n }\n\n modelsPrologue(_indent: string) {\n return `\n/// ${this.warnEditing()}\n\nimport Foundation\n`\n }\n\n modelsEpilogue(_indent: string) {\n return '\\n'\n }\n\n reserve(name: string) {\n if (this.keywords.has(name)) {\n return `\\`${name}\\``\n }\n return name\n }\n\n sdkFileName(baseFileName: string) {\n // return this.fileName(`sdk/${baseFileName}${this.apiRef}`)\n return this.fileName(`sdk/${baseFileName}`)\n }\n\n commentHeader(indent: string, text: string | undefined, commentStr = ' * ') {\n if (this.noComment || !text) return ''\n if (commentStr === ' ') {\n return `${indent}/**\\n\\n${commentBlock(\n text,\n indent,\n commentStr\n )}\\n${indent} */\\n`\n }\n return `${indent}/**\\n${commentBlock(\n text,\n indent,\n commentStr\n )}\\n${indent} */\\n`\n }\n\n beginRegion(indent: string, description: string): string {\n return `${indent}// MARK ${description}`\n }\n\n endRegion(_indent: string, _description: string): string {\n return '' // No end MARK in Swift, and XCode appears to no longer process MARKs anyway\n }\n\n isIdProp(_property: IProperty) {\n // sadly we can't scope fuzzy decoding to only id fields because some \"id\" refs are not named correctly\n // TODO just return true until we figure out a generic solution for fuzzy JSON decoding\n return true\n // const nameCheck = property.name.toLowerCase()\n // return (\n // nameCheck === 'id' ||\n // nameCheck.endsWith('_id') ||\n // nameCheck.endsWith('_ids')\n // )\n }\n\n itemType(property: IProperty) {\n if (\n typeOfType(property.type) === TypeOfType.Array &&\n property.type.elementType\n ) {\n return property.type.elementType\n }\n return property.type\n }\n\n /**\n * true if this property should use AnyString\n * @param property to check\n */\n useAnyString(property: IProperty) {\n const typeCheck = this.itemType(property).name.toLowerCase()\n return this.anyString && typeCheck === 'string' && this.isIdProp(property)\n }\n\n /**\n * true if this property should use AnyInt\n * @param property to check\n */\n useAnyInt(property: IProperty) {\n const typeCheck = this.itemType(property).name.toLowerCase()\n return (\n this.anyString &&\n (typeCheck === 'integer' || typeCheck === 'int64') &&\n this.isIdProp(property)\n )\n }\n\n /**\n * Private version of the name (_ prefix)\n *\n * Strips reserved character markings from the name if present\n *\n * @param name to privatize\n */\n privy(name: string) {\n return this.reserve('_' + name.replace(/`/g, ''))\n }\n\n getSpecialHandling(property: IProperty) {\n return this.useAnyString(property)\n ? 'AnyString'\n : this.useAnyInt(property)\n ? 'AnyInt'\n : ''\n }\n\n declareProperty(indent: string, property: IProperty) {\n // const optional = (property.nullable || !property.required) ? '?' : ''\n const optional = property.required ? '' : '?'\n if (property.name === strBody) {\n // TODO refactor this hack to track context when the body parameter is created for the request type\n property.type.refCount++\n return (\n this.commentHeader(\n indent,\n property.description ||\n 'body parameter for dynamically created request type'\n ) +\n `${indent}var ${this.reserve(property.name)}: ${\n property.type.name\n }${optional}`\n )\n }\n const type = this.typeMap(property.type)\n const specialHandling = this.getSpecialHandling(property)\n let munge = ''\n let declaration = `${indent}public var ${this.reserve(property.name)}: ${\n type.name\n }${optional}\\n`\n if (specialHandling) {\n const ra = typeOfType(property.type) === TypeOfType.Array\n const privy = this.reserve('_' + property.name)\n const bump = this.bumper(indent)\n const setter = property.required\n ? ra\n ? `${privy} = newValue.map { ${specialHandling}.init($0) }`\n : `${privy} = ${specialHandling}.init(newValue)`\n : ra\n ? `if let v = newValue { ${privy} = v.map { ${specialHandling}.init($0) } } else { ${privy} = nil }`\n : `${privy} = newValue.map(${specialHandling}.init)`\n const getter = property.required\n ? ra\n ? `${privy}.map { $0.value }`\n : `${privy}.value`\n : ra\n ? `if let v = ${privy} { return v.map { $0.value } } else { return nil }`\n : `${privy}${optional}.value`\n munge = ra\n ? `${indent}private var ${privy}: [${specialHandling}]${optional}\\n`\n : `${indent}private var ${privy}: ${specialHandling}${optional}\\n`\n declaration = `${indent}public var ${this.reserve(property.name)}: ${\n type.name\n }${optional} {\n${bump}get { ${getter} }\n${bump}set { ${setter} }\n${indent}}\\n`\n }\n return (\n munge +\n this.commentHeader(indent, this.describeProperty(property)) +\n declaration\n )\n }\n\n paramComment(param: IParameter, mapped: IMappedType) {\n return `@param {${mapped.name}} ${param.name} ${describeParam(param)}`\n }\n\n declareParameter(indent: string, method: IMethod, param: IParameter) {\n const type =\n param.location === strBody\n ? this.writeableType(param.type, method) || param.type\n : param.type\n const mapped = this.typeMap(type)\n let pOpt = ''\n let line = ''\n if (param.location === strBody) {\n mapped.name = `${mapped.name}`\n }\n if (!param.required) {\n pOpt = '?'\n } else {\n line = '_ '\n }\n return (\n this.commentHeader(indent, this.paramComment(param, mapped)) +\n `${indent}${line}${this.reserve(param.name)}: ${mapped.name}${pOpt}` +\n (param.required ? '' : mapped.default ? ` = ${mapped.default}` : '')\n )\n }\n\n initProp(prop: IProperty) {\n const propName = this.reserve(prop.name)\n const specialHandling = this.getSpecialHandling(prop)\n if (specialHandling) {\n const ra = typeOfType(prop.type) === TypeOfType.Array\n const varName = this.privy(propName)\n if (prop.required) {\n if (ra) {\n return `${this.it(\n varName\n )} = ${propName}.map { ${specialHandling}.init($0) }`\n }\n return `${this.it(varName)} = ${specialHandling}.init(${propName})`\n } else {\n if (ra) {\n return `if let v = ${propName} { ${varName} = v.map { ${specialHandling}.init($0) } } else { ${varName} = nil }`\n }\n return `${this.it(varName)} = ${propName}.map(${specialHandling}.init)`\n }\n }\n return `${this.it(propName)} = ${propName}`\n }\n\n construct(indent: string, type: IType) {\n if (type instanceof EnumType) return ''\n indent = this.bumper(indent)\n const bump = this.bumper(indent)\n const args: string[] = []\n const posArgs: string[] = []\n const inits: string[] = []\n const posInits: string[] = []\n const props = this.typeProperties(type)\n props.forEach((prop) => {\n const propName = this.reserve(prop.name)\n args.push(this.declareConstructorArg('', prop))\n posArgs.push(this.declarePositionalArg('', prop))\n inits.push(`${bump}${this.initProp(prop)}`)\n posInits.push(`${propName}: ${propName}`)\n })\n const namedInit =\n `${indent}public init(` +\n `${args.join(this.argDelimiter)}) {\\n` +\n inits.join('\\n') +\n `\\n${indent}}`\n let posInit = ''\n if (props.some((p) => p.required)) {\n posInit =\n `\\n${indent}public init(` +\n `${posArgs.join(this.argDelimiter)}) {\\n` +\n `${bump}${this.it('init')}(${posInits.join(', ')})` +\n `\\n${indent}}\\n`\n }\n return `\\n${namedInit}\\n${posInit}`\n }\n\n declarePositionalArg(indent: string, property: IProperty) {\n const mappedType = this.typeMap(property.type)\n let propType: string\n let line = '_ '\n if (property.required) {\n propType = mappedType.name\n } else {\n line = ''\n propType = `${mappedType.name}? = ${this.nullStr}`\n }\n const propName = this.reserve(property.name)\n return `${indent}${line}${propName}: ${propType}`\n }\n\n declareConstructorArg(indent: string, property: IProperty) {\n const mappedType = this.typeMap(property.type)\n let propType: string\n if (property.required) {\n propType = mappedType.name\n } else {\n propType = `${mappedType.name}? = ${this.nullStr}`\n }\n const propName = this.reserve(property.name)\n return `${indent}${propName}: ${propType}`\n }\n\n methodHeaderDeclaration(indent: string, method: IMethod, streamer = false) {\n const type = this.typeMap(method.type)\n const resultType = streamer ? 'Data' : type.name\n const returnType =\n type.name === 'Void' ? 'Voidable' : `SDKResponse<${resultType}, SDKError>`\n const head = method.description?.trim()\n let headComment =\n (head ? `${head}\\n\\n` : '') +\n `${method.httpMethod} ${method.endpoint} -> ${type.name}`\n let fragment\n const requestType = this.requestTypeName(method)\n const bump = indent + this.indentStr\n\n if (requestType) {\n // use the request type that will be generated in models.ts\n fragment = `request: I${requestType}`\n } else {\n const params: string[] = []\n const args = method.allParams // get the params in signature order\n if (args && args.length > 0)\n args.forEach((p) => params.push(this.declareParameter(bump, method, p)))\n fragment =\n params.length > 0 ? `\\n${params.join(this.paramDelimiter)}` : ''\n }\n if (method.responseIsBoth()) {\n headComment += `\\n\\n**Note**: Binary content may be returned by this method.`\n } else if (method.responseIsBinary()) {\n headComment += `\\n\\n**Note**: Binary content is returned by this method.\\n`\n }\n const dep = method.deprecated ? `${indent}@available(*, deprecated)\\n` : ''\n const header =\n this.commentHeader(indent, headComment) +\n dep +\n `${indent}public func ${method.name}(`\n\n return (\n header +\n fragment +\n `${\n fragment ? ',' : ''\n }\\n${bump}options: ITransportSettings? = nil\\n${indent}) -> ${returnType} {\\n`\n )\n }\n\n methodSignature(indent: string, method: IMethod) {\n return this.methodHeaderDeclaration(indent, method, false)\n }\n\n encodePathParams(indent: string, method: IMethod) {\n let encodings = ''\n if (method.pathParams.length > 0) {\n for (const param of method.pathParams) {\n // For swift, just encode all path params because of awkward variable renames\n encodings += `${indent}let path_${param.name} = encodeParam(${param.name})\\n`\n }\n }\n return encodings\n }\n\n declareMethod(indent: string, method: IMethod) {\n const bump = this.bumper(indent)\n return (\n this.methodSignature(indent, method) +\n this.encodePathParams(bump, method) +\n this.httpCall(bump, method) +\n `\\n${indent}}`\n )\n }\n\n streamerSignature(indent: string, method: IMethod) {\n return this.methodHeaderDeclaration(indent, method, true)\n }\n\n declareStreamer(indent: string, method: IMethod) {\n const bump = this.bumper(indent)\n return (\n this.streamerSignature(indent, method) +\n this.encodePathParams(bump, method) +\n this.streamCall(bump, method) +\n `\\n${indent}}`\n )\n }\n\n codingKeys(indent: string, type: IType) {\n let special = false\n\n const keys = Object.values(type.properties).map((p) => {\n let name = this.reserve(p.name)\n let alias = ''\n const useIt = this.useAnyString(p) || this.useAnyInt(p)\n if (useIt) {\n name = this.privy(name)\n special = true\n alias = p.jsonName\n } else if (p.hasSpecialNeeds) {\n special = true\n alias = p.jsonName\n }\n return name + (alias ? ` = \"${alias}\"` : '')\n })\n\n if (!special) return ''\n const bump = this.bumper(indent)\n const bump2 = this.bumper(bump)\n const cases = keys.join(`\\n${bump2}case `)\n\n return (\n `\\n${bump}private enum CodingKeys : String, CodingKey {` +\n `\\n${bump2}case ${cases}` +\n `\\n${bump}}\\n`\n )\n }\n\n // declareType(indent: string, type: IType): string {\n // return super.declareType(this.bumper(indent), type)\n // }\n declareEnumValue(indent: string, value: EnumValueType) {\n const quote = typeof value === 'string' ? this.codeQuote : ''\n return `${indent}case ${mayQuote(value)} = ${quote}${value}${quote}`\n }\n\n typeSignature(indent: string, type: IType) {\n const recursive = type.isRecursive()\n let typeName = recursive ? 'class' : 'struct'\n const access = recursive ? 'open' : 'public'\n let baseClass = 'SDKModel'\n const isEnum = type instanceof EnumType\n if (isEnum) {\n typeName = 'enum'\n const num = type as EnumType\n const mapped = this.typeMap(num.elementType)\n baseClass = `${mapped.name}, Codable`\n }\n\n const keys = this.codingKeys(indent, type)\n\n const needClass = recursive\n ? '\\nRecursive type references must use Class instead of Struct'\n : ''\n const mapped = this.typeMap(type)\n return (\n this.commentHeader(indent, type.description + needClass) +\n `${indent}${access} ${typeName} ${mapped.name}: ${baseClass} {\\n${keys}`\n )\n }\n\n errorResponses(_indent: string, _method: IMethod) {\n // const results: string[] = method.errorResponses\n // .map(r => `${r.type.name}`)\n // return results.join(' | ')\n // TODO figure out how to express Union error type responses\n return 'SDKError'\n }\n\n httpPath(path: string, prefix?: string) {\n prefix = prefix || ''\n if (path.indexOf('{') >= 0) {\n let tweak = path.replace(/{/gi, '\\\\(path_' + prefix)\n tweak = tweak.replace(/}/gi, ')')\n return `\"${tweak}\"`\n }\n return `\"${path}\"`\n }\n\n argGroup(indent: string, args: Arg[], prefix?: string) {\n if (!args || args.length === 0) return this.nullStr\n const hash: string[] = []\n for (const arg of args) {\n if (prefix) {\n hash.push(`\"${arg}\": ${prefix}${arg}`)\n } else {\n hash.push(`\"${arg}\": ${arg}`)\n }\n }\n return `\\n${indent}[${hash.join(this.argDelimiter)}]`\n }\n\n queryGroup(indent: string, method: IMethod, prefix?: string) {\n const params = method.getParams('query')\n if (!params || params.length === 0) return this.nullStr\n const hash: string[] = []\n for (const param of params) {\n const arg = this.asAny(param)\n if (prefix) {\n hash.push(`\"${param.name}\": ${prefix}${arg}`)\n } else {\n hash.push(`\"${param.name}\": ${arg}`)\n }\n }\n return `\\n${indent}[${hash.join(this.argDelimiter)}]`\n }\n\n asAny(param: IParameter): Arg {\n let castIt\n if (param.type.elementType) {\n castIt = true\n } else {\n const mapped = this.typeMap(param.type)\n switch (mapped.name.toLowerCase()) {\n case 'date':\n case 'datetime': // case 'url': case 'uri':\n case 'object':\n case 'bool':\n castIt = true\n break\n default:\n castIt = false\n break\n }\n }\n return param.name + (castIt ? ' as Any?' : '')\n }\n\n argList(indent: string, args: Arg[], prefix?: string) {\n prefix = prefix || ''\n return args && args.length !== 0\n ? `\\n${indent}${prefix}${args.join(this.argDelimiter + prefix)}`\n : this.nullStr\n }\n\n /**\n * this is a builder function to produce arguments with optional null place holders but no extra required optional arguments\n * @param {string} current accumulator\n * @param {string} args names of parameters\n * @returns {string} accumulated argument list\n */\n argFill(current: string, args: string) {\n if (!current && args.trim() === this.nullStr) {\n // Don't append trailing optional arguments if none have been set yet\n return ''\n }\n return `${args}${current ? this.argDelimiter : ''}${current}`\n }\n\n /**\n * build the http argument list from back to front, so trailing undefined arguments\n * can be omitted. Path arguments are resolved as part of the path parameter to general\n * purpose API method call\n * e.g.\n * {queryArgs...}, bodyArg, {headerArgs...}, {cookieArgs...}\n * {queryArgs...}, null, null, {cookieArgs...}\n * null, bodyArg\n * {queryArgs...}\n * @param {string} indent\n * @param {IMethod} method\n * @returns {string}\n */\n httpArgs(indent: string, method: IMethod) {\n const request = this.useRequest(method) ? 'request.' : ''\n // add options at the end of the request calls. this will cause all other arguments to be\n // filled in but there's no way to avoid this for passing in the last optional parameter.\n // Fortunately, this code bloat is minimal and also hidden from the consumer.\n let result = this.argFill('', 'options')\n // let result = this.argFill('', this.argGroup(indent, method.cookieArgs, request))\n // result = this.argFill(result, this.argGroup(indent, method.headerArgs, request))\n result = this.argFill(\n result,\n method.bodyArg\n ? `try! self.encode(${request}${method.bodyArg})`\n : this.nullStr\n )\n result = this.argFill(result, this.queryGroup(indent, method, request))\n return result\n }\n\n httpCall(indent: string, method: IMethod) {\n const request = this.useRequest(method) ? 'request.' : ''\n const type = this.typeMap(method.type)\n const bump = this.bumper(indent)\n const args = this.httpArgs(bump, method)\n const errors = this.errorResponses(indent, method)\n return `${indent}let result: SDKResponse<${\n type.name\n }, ${errors}> = ${this.it(method.httpMethod.toLowerCase())}(${this.httpPath(\n method.endpoint,\n request\n )}${args ? ', ' + args : ''})\n${indent}return result`\n }\n\n streamCall(indent: string, method: IMethod) {\n const request = this.useRequest(method) ? 'request.' : ''\n // const type = this.typeMap(method.type)\n const bump = indent + this.indentStr\n const args = this.httpArgs(bump, method)\n const errors = this.errorResponses(indent, method)\n return `${indent}let result: SDKResponse<Data, ${errors}> = ${this.it(\n method.httpMethod.toLowerCase()\n )}(${this.httpPath(method.endpoint, request)}${args ? ', ' + args : ''})\n${indent}return result`\n }\n\n summary(indent: string, text: string | undefined) {\n return this.commentHeader(indent, text)\n }\n\n // TODO avoid duplicate code\n typeNames(countError = true) {\n const names: string[] = []\n if (!this.api) return names\n if (countError) {\n this.api.types.Error.refCount++\n } else {\n this.api.types.Error.refCount = 0\n }\n const types = this.api.types\n Object.values(types)\n .filter((type) => type.refCount > 0 && !type.intrinsic)\n .forEach((type) => names.push(`I${type.name}`))\n // TODO import default constants if necessary\n // Object.values(types)\n // .filter(type => type instanceof RequestType)\n // .forEach(type => names.push(`${strDefault}${type.name.substring(strRequest.length)}`))\n return names\n }\n\n typeMap(type: IType): IMappedType {\n super.typeMap(type)\n // const ns = `api${this.apiRef}.`\n // const ns = `Looker.`\n const ns = 'Lk'\n\n const swiftTypes: Record<string, IMappedType> = {\n Error: { default: '', name: `${ns}Error` },\n Group: { default: '', name: `${ns}Group` },\n Locale: { default: '', name: `${ns}Locale` },\n any: { default: this.nullStr, name: 'AnyCodable' },\n boolean: { default: this.nullStr, name: 'Bool' },\n byte: { default: this.nullStr, name: 'binary' },\n date: { default: this.nullStr, name: 'Date' },\n datetime: { default: this.nullStr, name: 'Date' },\n double: { default: this.nullStr, name: 'Double' },\n float: { default: this.nullStr, name: 'Float' },\n int32: { default: this.nullStr, name: 'Int32' },\n int64: { default: this.nullStr, name: 'Int64' },\n integer: { default: this.nullStr, name: 'Int' },\n number: { default: this.nullStr, name: 'Double' },\n object: { default: this.nullStr, name: 'Any' },\n password: { default: this.nullStr, name: 'Password' },\n string: { default: this.nullStr, name: 'String' },\n uri: { default: this.nullStr, name: 'URI' },\n url: { default: this.nullStr, name: 'URL' },\n void: { default: '', name: 'Voidable' },\n }\n\n if (type.elementType) {\n // This is a structure with nested types\n const map = this.typeMap(type.elementType)\n switch (type.className) {\n case 'ArrayType':\n return { default: '[]', name: `[${map.name}]` }\n case 'HashType': {\n const mapName =\n type.elementType.name === 'string' ? 'AnyCodable' : map.name // TODO fix bad API spec, like MergeQuery vis_config\n\n return { default: 'nil', name: `StringDictionary<${mapName}>` }\n }\n case 'DelimArrayType':\n return { default: 'nil', name: `DelimArray<${map.name}>` }\n case 'EnumType':\n return { default: 'nil', name: type.name }\n }\n throw new Error(`Don't know how to handle: ${JSON.stringify(type)}`)\n }\n\n if (type.name) {\n return swiftTypes[type.name] || { default: '', name: `${type.name}` } // No null default for complex types\n } else {\n throw new Error('Cannot output a nameless type.')\n }\n }\n}\n"],"file":"swift.gen.js"}
@@ -1,6 +1,10 @@
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
2
+
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
4
+
1
5
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
6
 
3
- import { EnumType, isSpecialName, strBody } from './sdkModels';
7
+ import { describeParam, EnumType, isSpecialName, strBody } from './sdkModels';
4
8
  import { CodeGen, trimInputs, commentBlock } from './codeGen';
5
9
  export class TypescriptGen extends CodeGen {
6
10
  constructor() {
@@ -141,7 +145,9 @@ export class TypescriptGen extends CodeGen {
141
145
  desc = this.impartial(param, mapped);
142
146
  }
143
147
 
144
- return "@param ".concat(param.name, " ").concat(desc);
148
+ return "@param ".concat(param.name, " ").concat(describeParam(_objectSpread(_objectSpread({}, param), {
149
+ description: desc
150
+ })));
145
151
  }
146
152
 
147
153
  declareParameter(indent, method, param) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/typescript.gen.ts"],"names":["EnumType","isSpecialName","strBody","CodeGen","trimInputs","commentBlock","TypescriptGen","Set","reset","rtlNeeds","sdkFileName","baseFileName","fileName","versions","spec","key","rtlImports","rtl","Array","from","join","rtlImportStatement","methodsPrologue","_indent","warnEditing","packageName","typeNames","apiVersion","functionsPrologue","apiRef","interfacesPrologue","streamsPrologue","methodsEpilogue","modelsPrologue","modelsEpilogue","commentHeader","indent","text","commentStr","noComment","commentPrefix","includes","beginRegion","description","endRegion","declareProperty","property","optional","required","nullify","nullable","name","type","refCount","typeName","mapped","typeMap","describeProperty","reserve","impartial","param","intrinsic","location","paramComment","desc","declareParameter","method","writeableType","pOpt","default","makeTheCall","inputs","resp","args","assignParams","methodHeaderComment","params","lines","trim","push","resultType","httpMethod","endpoint","deprecated","responseIsBoth","responseIsBinary","forEach","p","allParams","length","requestType","requestTypeName","paramMappedType","methodHeaderDeclaration","streamer","fragment","bump","bumper","headComment","paramDelimiter","callback","header","returns","returnType","methodSignature","encodePathParams","indentStr","encodings","pathParams","prefix","useRequest","doEncode","accessor","declareMethod","httpCall","errors","errorResponses","functionSignature","declareFunction","itself","result","declareInterface","sig","trimRight","replace","substr","streamerSignature","declareStreamer","streamCall","customType","typeSignature","meta","typeOpen","results","map","r","httpPath","path","indexOf","argGroup","nullStr","hash","arg","reserved","argDelimiter","argList","bits","a","argFill","current","httpArgs","request","bodyArg","queryArgs","it","toLowerCase","toUpperCase","summary","names","api","types","Object","values","filter","mt","asString","_","v","tsTypes","any","boolean","byte","date","datetime","double","float","int32","int64","integer","number","object","password","asVal","string","uri","url","void","_i","_v","elementType","className","add","Error","JSON","stringify"],"mappings":"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","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport type {\n Arg,\n ArgValues,\n IMethod,\n IParameter,\n IProperty,\n IType,\n} from './sdkModels'\nimport { EnumType, isSpecialName, strBody } from './sdkModels'\nimport type { CodeAssignment, IMappedType } from './codeGen'\nimport { CodeGen, trimInputs, commentBlock } from './codeGen'\n\n/**\n * TypeScript code generator\n */\nexport class TypescriptGen extends CodeGen {\n /**\n * special case for TypeScript output path due to mono repository\n */\n codePath = './packages/'\n /**\n * special case for TypeScript output path due to mono repository\n */\n useFunctions = true\n useInterfaces = true\n packagePath = 'sdk/src'\n itself = 'this'\n fileExtension = '.ts'\n commentStr = '// '\n nullStr = 'null'\n transport = 'transport'\n\n argDelimiter = ', '\n paramDelimiter = ',\\n'\n propDelimiter = '\\n'\n\n indentStr = ' '\n endTypeStr = '\\n}'\n willItStream = true\n useNamedParameters = false\n useNamedArguments = false\n /** Track special imports of sdk-rtl */\n rtlNeeds = new Set<string>()\n\n reset() {\n this.rtlNeeds = new Set<string>()\n }\n\n sdkFileName(baseFileName: string) {\n return this.fileName(`${this.versions?.spec.key}/${baseFileName}`)\n }\n\n /** lists all special sdk-rtl import types encountered */\n rtlImports() {\n let rtl = Array.from(this.rtlNeeds).join(', ')\n if (rtl) {\n rtl += ', '\n }\n return rtl\n }\n\n /** creates a full @looker/sdk-rtl import statement if one is required */\n rtlImportStatement() {\n const rtl = this.rtlImports()\n return rtl ? `\\nimport type { ${rtl} } from '@looker/sdk-rtl'\\n` : ''\n }\n\n methodsPrologue(_indent: string) {\n return `\nimport type { ${this.rtlImports()}IAuthSession, ITransportSettings, SDKResponse } from '@looker/sdk-rtl'\nimport { APIMethods, encodeParam } from '@looker/sdk-rtl'\n/**\n * ${this.warnEditing()}\n *\n */\nimport { sdkVersion } from '../constants'\nimport type { I${this.packageName} } from './methodsInterface'\nimport type { ${this.typeNames().join(', ')} } from './models'\n\nexport class ${this.packageName} extends APIMethods implements I${\n this.packageName\n } {\n static readonly ApiVersion = '${this.apiVersion}'\n constructor(authSession: IAuthSession) {\n super(authSession, sdkVersion)\n this.apiVersion = ${this.packageName}.ApiVersion\n this.apiPath =\n authSession.settings.base_url === ''\n ? ''\n : authSession.settings.base_url + '/api/' + this.apiVersion\n }\n\n`\n }\n\n functionsPrologue(_indent: string) {\n return `\nimport type { ${this.rtlImports()}IAPIMethods, IAuthSession, ITransportSettings, SDKResponse } from '@looker/sdk-rtl'\nimport { encodeParam, functionalSdk } from '@looker/sdk-rtl'\n\n/**\n * ${this.warnEditing()}\n *\n */\n\nimport { sdkVersion } from '../constants'\nimport type { ${this.typeNames().join(', ')} } from './models'\n\n/**\n * Creates a \"functional sdk\" that knows the API and Looker release version\n * @param authSession authentication session\n */\nexport const functionalSdk${this.apiRef} = (\n authSession: IAuthSession,\n) => {\n return functionalSdk(authSession, '${this.apiVersion}', sdkVersion)\n}\n\n`\n }\n\n interfacesPrologue(_indent: string) {\n return `\nimport type { ${this.rtlImports()} IAPIMethods, ITransportSettings, SDKResponse } from '@looker/sdk-rtl'\n/**\n * ${this.warnEditing()}\n *\n */\nimport type { ${this.typeNames().join(', ')} } from './models'\n\nexport interface I${this.packageName} extends IAPIMethods {\n\n`\n }\n\n streamsPrologue(_indent: string): string {\n return `\nimport type { Readable } from 'readable-stream'\nimport type { ${this.rtlImports()}IAuthSession, ITransportSettings } from '@looker/sdk-rtl'\nimport { APIMethods, encodeParam } from '@looker/sdk-rtl'\n\n/**\n * ${this.warnEditing()}\n *\n */\nimport { sdkVersion } from '../constants'\nimport type { ${this.typeNames().join(', ')} } from './models'\n\nexport class ${this.packageName}Stream extends APIMethods {\n static readonly ApiVersion = '${this.apiVersion}'\n constructor(authSession: IAuthSession) {\n super(authSession, sdkVersion)\n this.apiVersion = ${this.packageName}Stream.ApiVersion\n this.apiPath =\n authSession.settings.base_url === ''\n ? ''\n : authSession.settings.base_url + '/api/' + this.apiVersion\n }\n`\n }\n\n methodsEpilogue(_indent: string) {\n return '\\n}'\n }\n\n modelsPrologue(_indent: string) {\n return `${this.rtlImportStatement()}\n/*\n * ${this.warnEditing()}\n */\n\n`\n }\n\n modelsEpilogue(_indent: string) {\n return ''\n }\n\n commentHeader(indent: string, text: string | undefined, commentStr = ' * ') {\n if (this.noComment || !text) return ''\n const commentPrefix =\n text.includes(' License') && text.includes('Copyright (c)') ? '/*' : '/**'\n if (commentStr === ' ') {\n return `${indent}${commentPrefix}\\n\\n${commentBlock(\n text,\n indent,\n commentStr\n )}\\n${indent} */\\n`\n }\n return `${indent}${commentPrefix}\\n${commentBlock(\n text,\n indent,\n commentStr\n )}\\n${indent} */\\n`\n }\n\n beginRegion(indent: string, description: string): string {\n return `${indent}//#region ${description}`\n }\n\n endRegion(indent: string, description: string): string {\n return `${indent}//#endregion ${description}`\n }\n\n declareProperty(indent: string, property: IProperty) {\n const optional = !property.required ? '?' : ''\n const nullify = property.nullable ? ' | null' : ''\n if (property.name === strBody) {\n // TODO refactor this hack to track context when the body parameter is created for the request type\n property.type.refCount++\n return (\n this.commentHeader(\n indent,\n property.description ||\n 'body parameter for dynamically created request type'\n ) +\n `${indent}${property.name}${optional}: ${this.typeName(\n property.type\n )}${nullify}`\n )\n }\n const mapped = this.typeMap(property.type)\n return (\n this.commentHeader(indent, this.describeProperty(property)) +\n `${indent}${this.reserve(property.name)}${optional}: ${\n mapped.name\n }${nullify}`\n )\n }\n\n /**\n * Detect need for Partial<T> vs T for a parameter type\n * @param param to cast (or not)\n * @param mapped type to cast\n */\n impartial(param: IParameter, mapped: IMappedType) {\n if (param.type.intrinsic || param.location !== strBody) return mapped.name\n return `Partial<${mapped.name}>`\n }\n\n paramComment(param: IParameter, mapped: IMappedType) {\n // Don't include mapped type name for Typescript param comments in headers\n let desc = param.description || param.type.description\n if (!desc) {\n desc = this.impartial(param, mapped)\n }\n return `@param ${param.name} ${desc}`\n }\n\n declareParameter(indent: string, method: IMethod, param: IParameter) {\n const type =\n param.location === strBody\n ? this.writeableType(param.type, method) || param.type\n : param.type\n const mapped = this.typeMap(type)\n let pOpt = ''\n mapped.name = this.impartial(param, mapped)\n if (!param.required) {\n pOpt = mapped.default ? '' : '?'\n }\n return (\n `${indent}${this.reserve(param.name)}${pOpt}: ${mapped.name}` +\n (param.required ? '' : mapped.default ? ` = ${mapped.default}` : '')\n )\n }\n\n makeTheCall(method: IMethod, inputs: ArgValues): string {\n inputs = trimInputs(inputs)\n const resp = `let response = await sdk.ok(sdk.${method.name}(`\n const args = this.assignParams(method, inputs)\n return `${resp}${args}))`\n }\n\n methodHeaderComment(method: IMethod, params: string[] = []) {\n if (this.noComment) return ''\n const lines: string[] = []\n\n const desc = method.description?.trim()\n if (desc) {\n lines.push(desc)\n lines.push('')\n }\n\n const resultType = this.typeMap(method.type).name\n lines.push(`${method.httpMethod} ${method.endpoint} -> ${resultType}`)\n lines.push('')\n\n if (method.deprecated) {\n lines.push('@deprecated')\n lines.push('')\n }\n\n if (method.responseIsBoth()) {\n lines.push('@remarks')\n lines.push('**NOTE**: Binary content may be returned by this function.')\n lines.push('')\n } else if (method.responseIsBinary()) {\n lines.push('@remarks')\n lines.push('**NOTE**: Binary content is returned by this function.')\n lines.push('')\n }\n\n params.forEach((p) => lines.push(`@param ${p}`))\n\n const args = method.allParams\n if (args.length) {\n let requestType = this.requestTypeName(method)\n\n if (requestType) {\n requestType =\n method.httpMethod === 'PATCH'\n ? `Partial<I${requestType}>`\n : `I${requestType}`\n lines.push(\n `@param request composed interface \"${requestType}\" for complex method parameters`\n )\n } else {\n args.forEach((p) =>\n lines.push(this.paramComment(p, this.paramMappedType(p, method)))\n )\n }\n }\n lines.push('@param options one-time API call overrides')\n lines.push('')\n\n return lines.join('\\n')\n }\n\n methodHeaderDeclaration(\n indent: string,\n method: IMethod,\n streamer = false,\n params: string[] = []\n ) {\n const mapped = this.typeMap(method.type)\n let fragment: string\n const requestType = this.requestTypeName(method)\n const bump = this.bumper(indent)\n const headComment = streamer\n ? this.methodHeaderComment(method, ['callback streaming output function'])\n : this.methodHeaderComment(method, params)\n if (requestType) {\n // use the request type that will be generated in models.ts\n // No longer using Partial<T> by default here because required and optional are supposed to be accurate\n // However, for update methods (iow, patch) Partial<T> is still necessary since only the delta gets set\n fragment =\n method.httpMethod === 'PATCH'\n ? `request: Partial<I${requestType}>`\n : `request: I${requestType}`\n params.push(fragment)\n fragment = params.join(', ')\n } else {\n const args = method.allParams // get the params in signature order\n if (args && args.length > 0)\n args.forEach((p) => params.push(this.declareParameter(bump, method, p)))\n fragment =\n params.length > 0 ? `\\n${params.join(this.paramDelimiter)}` : ''\n }\n const callback = `callback: (readable: Readable) => Promise<${mapped.name}>,`\n const header =\n this.commentHeader(indent, headComment) +\n `${indent}async ${method.name}(` +\n (streamer ? `\\n${bump}${callback}` : '')\n const returns = streamer ? '' : `: ${this.returnType(indent, method)}`\n\n return (\n header +\n fragment +\n (fragment ? ', ' : '') +\n `options?: Partial<ITransportSettings>)${returns} {\\n`\n )\n }\n\n methodSignature(indent: string, method: IMethod) {\n return this.methodHeaderDeclaration(indent, method, false)\n }\n\n encodePathParams(indent: string, method: IMethod) {\n const bump = indent + this.indentStr\n let encodings = ''\n if (method.pathParams.length > 0) {\n const prefix = this.useRequest(method) ? 'request' : ''\n for (const param of method.pathParams) {\n if (param.doEncode()) {\n const name = this.accessor(param.name, prefix)\n encodings += `${bump}${name} = encodeParam(${name})\\n`\n }\n }\n }\n return encodings\n }\n\n declareMethod(indent: string, method: IMethod) {\n const bump = this.bumper(indent)\n return (\n this.methodSignature(indent, method) +\n this.encodePathParams(indent, method) +\n this.httpCall(bump, method) +\n `\\n${indent}}`\n )\n }\n\n /**\n * Return type declaration for the method\n * @param indent\n * @param method\n */\n returnType(indent: string, method: IMethod): string {\n const mapped = this.typeMap(method.type)\n const errors = this.errorResponses(indent, method)\n return `Promise<SDKResponse<${mapped.name}, ${errors}>>`\n }\n\n functionSignature(indent: string, method: IMethod): string {\n let fragment: string\n const requestType = this.requestTypeName(method)\n const bump = this.bumper(indent)\n const params = ['sdk: IAPIMethods']\n\n const headComment = this.methodHeaderComment(method, [\n 'sdk IAPIMethods implementation',\n ])\n if (requestType) {\n // use the request type that will be generated in models.ts\n // No longer using Partial<T> by default here because required and optional are supposed to be accurate\n // However, for update methods (iow, patch) Partial<T> is still necessary since only the delta gets set\n fragment =\n method.httpMethod === 'PATCH'\n ? `request: Partial<I${requestType}>`\n : `request: I${requestType}`\n params.push(fragment)\n fragment = params.join(', ')\n } else {\n const args = method.allParams // get the params in signature order\n if (args && args.length > 0)\n args.forEach((p) => params.push(this.declareParameter(bump, method, p)))\n fragment =\n params.length > 0 ? `\\n${params.join(this.paramDelimiter)}` : ''\n }\n const header =\n this.commentHeader(indent, headComment) +\n `${indent}export const ${method.name} = async (`\n const returns = this.returnType(indent, method)\n\n return (\n header +\n fragment +\n (fragment ? ', ' : '') +\n `options?: Partial<ITransportSettings>): ${returns} => {\\n`\n )\n }\n\n declareFunction(indent: string, method: IMethod): string {\n const bump = this.bumper(indent)\n // horribly hacky tweak to httpCall\n this.itself = 'sdk'\n const result =\n this.functionSignature(indent, method) +\n this.encodePathParams(indent, method) +\n this.httpCall(bump, method) +\n `\\n${indent}}`\n this.itself = 'this'\n return result\n }\n\n declareInterface(indent: string, method: IMethod): string {\n let sig = this.methodSignature(indent, method).trimRight()\n sig = sig.replace(/^\\s*async /gm, '')\n sig = sig.substr(0, sig.length - 2)\n return `${sig}\\n`\n }\n\n streamerSignature(indent: string, method: IMethod) {\n return this.methodHeaderDeclaration(indent, method, true)\n }\n\n declareStreamer(indent: string, method: IMethod) {\n const bump = this.bumper(indent)\n return (\n this.streamerSignature(indent, method) +\n this.encodePathParams(bump, method) +\n this.streamCall(bump, method) +\n `\\n${indent}}`\n )\n }\n\n reserve(name: string): string {\n if (!isSpecialName(name)) return name\n return `'${name}'`\n }\n\n /**\n * Get the language's type name for generation\n *\n * Also refcounts the type\n *\n * @param type to name\n * @private\n */\n private typeName(type: IType) {\n type.refCount++\n if (type.customType && !(type instanceof EnumType)) {\n return this.reserve(`I${type.name}`)\n }\n return this.reserve(type.name)\n }\n\n typeSignature(indent: string, type: IType) {\n const meta = type instanceof EnumType ? 'enum' : 'interface'\n return (\n this.commentHeader(indent, type.description) +\n `${indent}export ${meta} ${this.typeName(type)} ${this.typeOpen}\\n`\n )\n }\n\n errorResponses(_indent: string, method: IMethod) {\n const results: string[] = method.errorResponses.map(\n (r) => `${this.typeName(r.type)}`\n )\n return results.join(' | ')\n }\n\n httpPath(path: string, prefix?: string) {\n prefix = prefix || ''\n if (path.indexOf('{') >= 0)\n return `\\`${path.replace(/{/gi, '${' + prefix)}\\``\n return `'${path}'`\n }\n\n argGroup(_indent: string, args: Arg[], prefix?: string) {\n if (!args || args.length === 0) return this.nullStr\n const hash: string[] = []\n for (const arg of args) {\n const reserved = this.reserve(arg)\n if (prefix) {\n hash.push(`${reserved}: ${this.accessor(arg, prefix)}`)\n } else {\n hash.push(reserved)\n }\n }\n return `{${hash.join(this.argDelimiter)}}`\n }\n\n /**\n * Determine the type of accessor needed for the symbol name\n *\n * If the prefix is defined:\n * If the name is special, use array accessor\n * If the name is simple, use dotted notation\n *\n * With no prefix, return the \"reserved\" version of the name, which may be the same as name\n *\n * @param name variable to access\n * @param prefix optional prefix for accessor\n * @returns one of 4 possible accessor patterns\n */\n accessor(name: string, prefix?: string) {\n const reserved = this.reserve(name)\n if (!prefix) return reserved\n if (reserved === name) return `${prefix}.${name}`\n return `${prefix}[${reserved}]`\n }\n\n argList(indent: string, args: Arg[], prefix?: string) {\n prefix = prefix || ''\n const bits = args.map((a) => this.accessor(a, prefix))\n\n return args && args.length !== 0\n ? `\\n${indent}${bits.join(this.argDelimiter)}`\n : this.nullStr\n }\n\n // this is a builder function to produce arguments with optional null place holders but no extra required optional arguments\n argFill(current: string, args: string) {\n if (!current && args.trim() === this.nullStr) {\n // Don't append trailing optional arguments if none have been set yet\n return ''\n }\n return `${args}${current ? this.argDelimiter : ''}${current}`\n }\n\n // build the http argument list from back to front, so trailing undefined arguments\n // can be omitted. Path arguments are resolved as part of the path parameter to general\n // purpose API method call\n // e.g.\n // {queryArgs...}, bodyArg, {headerArgs...}, {cookieArgs...}\n // {queryArgs...}, null, null, {cookieArgs...}\n // null, bodyArg\n // {queryArgs...}\n httpArgs(indent: string, method: IMethod) {\n const request = this.useRequest(method) ? 'request' : ''\n // add options at the end of the request calls. this will cause all other arguments to be\n // filled in but there's no way to avoid this for passing in the last optional parameter.\n // Fortunately, this code bloat is minimal and also hidden from the consumer.\n let result = this.argFill('', 'options')\n // let result = this.argFill('', this.argGroup(indent, method.cookieArgs, request))\n // result = this.argFill(result, this.argGroup(indent, method.headerArgs, request))\n result = this.argFill(\n result,\n method.bodyArg ? this.accessor(method.bodyArg, request) : this.nullStr\n )\n result = this.argFill(\n result,\n this.argGroup(indent, method.queryArgs, request)\n )\n return result\n }\n\n httpCall(indent: string, method: IMethod) {\n const request = this.useRequest(method) ? 'request.' : ''\n const mapped = this.typeMap(method.type)\n const bump = this.bumper(indent)\n const args = this.httpArgs(bump, method)\n const errors = this.errorResponses(indent, method)\n return (\n `${indent}return ${this.it(method.httpMethod.toLowerCase())}` +\n `<${mapped.name}, ${errors}>(` +\n this.httpPath(method.endpoint, request) +\n `${args ? ', ' + args : ''})`\n )\n }\n\n streamCall(indent: string, method: IMethod) {\n const request = this.useRequest(method) ? 'request.' : ''\n const mapped = this.typeMap(method.type)\n const bump = indent + this.indentStr\n const args = this.httpArgs(bump, method)\n // const errors = this.errorResponses(indent, method)\n return `${indent}return ${this.it('authStream')}<${\n mapped.name\n }>(callback, '${method.httpMethod.toUpperCase()}', ${this.httpPath(\n method.endpoint,\n request\n )}${args ? ', ' + args : ''})`\n }\n\n summary(indent: string, text: string | undefined) {\n return this.commentHeader(indent, text)\n }\n\n // TODO avoid duplicate code\n typeNames() {\n const names: string[] = []\n if (!this.api) return names\n const types = this.api.types\n Object.values(types)\n .filter((type) => type.refCount > 0 && !type.intrinsic)\n .forEach((type) => names.push(this.typeName(type)))\n return names\n }\n\n typeMap(type: IType): IMappedType {\n super.typeMap(type)\n const mt = ''\n\n const asString: CodeAssignment = (_, v) => `'${v}'`\n const tsTypes: Record<string, IMappedType> = {\n any: { default: mt, name: 'any' },\n boolean: { default: mt, name: 'boolean' },\n // TODO can we use blob for binary somehow? https://developer.mozilla.org/en-US/docs/Web/API/Blob\n byte: { default: mt, name: 'binary' },\n date: { default: mt, name: 'Date' },\n datetime: { default: mt, name: 'Date' },\n double: { default: mt, name: 'number' },\n float: { default: mt, name: 'number' },\n int32: { default: mt, name: 'number' },\n int64: { default: mt, name: 'number' },\n integer: { default: mt, name: 'number' },\n number: { default: mt, name: 'number' },\n object: { default: mt, name: 'any' },\n password: { default: mt, name: 'Password', asVal: asString },\n string: { default: mt, name: 'string', asVal: asString },\n uri: { default: mt, name: 'Url', asVal: asString },\n url: { default: mt, name: 'Url', asVal: asString },\n void: { default: mt, name: 'void', asVal: (_i, _v: any) => '' },\n }\n\n if (type.elementType) {\n // This is a structure with nested types\n const map = this.typeMap(type.elementType)\n switch (type.className) {\n case 'ArrayType':\n return {\n default: '[]',\n name: `${map.name}[]`,\n }\n case 'HashType':\n this.rtlNeeds.add('IDictionary')\n return {\n default: '',\n name: `IDictionary<${map.name}>`,\n }\n case 'DelimArrayType':\n this.rtlNeeds.add('DelimArray')\n return {\n default: '',\n name: `DelimArray<${map.name}>`,\n asVal: (_, v) => `new DelimArray<${map.name}>([${v}])`,\n }\n case 'EnumType':\n return {\n default: '',\n name: this.typeName(type),\n asVal: (_, v) => `${type.name}.${v}`,\n }\n }\n throw new Error(`Don't know how to handle: ${JSON.stringify(type)}`)\n }\n\n if (type.name) {\n const mapped = tsTypes[type.name]\n if (mapped && mapped.name === 'Url') this.rtlNeeds.add(mapped.name)\n return mapped || { default: '', name: this.typeName(type) } // No null default for complex types\n } else {\n throw new Error('Cannot output a nameless type.')\n }\n }\n}\n"],"file":"typescript.gen.js"}
1
+ {"version":3,"sources":["../../src/typescript.gen.ts"],"names":["describeParam","EnumType","isSpecialName","strBody","CodeGen","trimInputs","commentBlock","TypescriptGen","Set","reset","rtlNeeds","sdkFileName","baseFileName","fileName","versions","spec","key","rtlImports","rtl","Array","from","join","rtlImportStatement","methodsPrologue","_indent","warnEditing","packageName","typeNames","apiVersion","functionsPrologue","apiRef","interfacesPrologue","streamsPrologue","methodsEpilogue","modelsPrologue","modelsEpilogue","commentHeader","indent","text","commentStr","noComment","commentPrefix","includes","beginRegion","description","endRegion","declareProperty","property","optional","required","nullify","nullable","name","type","refCount","typeName","mapped","typeMap","describeProperty","reserve","impartial","param","intrinsic","location","paramComment","desc","declareParameter","method","writeableType","pOpt","default","makeTheCall","inputs","resp","args","assignParams","methodHeaderComment","params","lines","trim","push","resultType","httpMethod","endpoint","deprecated","responseIsBoth","responseIsBinary","forEach","p","allParams","length","requestType","requestTypeName","paramMappedType","methodHeaderDeclaration","streamer","fragment","bump","bumper","headComment","paramDelimiter","callback","header","returns","returnType","methodSignature","encodePathParams","indentStr","encodings","pathParams","prefix","useRequest","doEncode","accessor","declareMethod","httpCall","errors","errorResponses","functionSignature","declareFunction","itself","result","declareInterface","sig","trimRight","replace","substr","streamerSignature","declareStreamer","streamCall","customType","typeSignature","meta","typeOpen","results","map","r","httpPath","path","indexOf","argGroup","nullStr","hash","arg","reserved","argDelimiter","argList","bits","a","argFill","current","httpArgs","request","bodyArg","queryArgs","it","toLowerCase","toUpperCase","summary","names","api","types","Object","values","filter","mt","asString","_","v","tsTypes","any","boolean","byte","date","datetime","double","float","int32","int64","integer","number","object","password","asVal","string","uri","url","void","_i","_v","elementType","className","add","Error","JSON","stringify"],"mappings":"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","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport type {\n Arg,\n ArgValues,\n IMethod,\n IParameter,\n IProperty,\n IType,\n} from './sdkModels'\nimport { describeParam, EnumType, isSpecialName, strBody } from './sdkModels'\nimport type { CodeAssignment, IMappedType } from './codeGen'\nimport { CodeGen, trimInputs, commentBlock } from './codeGen'\n\n/**\n * TypeScript code generator\n */\nexport class TypescriptGen extends CodeGen {\n /**\n * special case for TypeScript output path due to mono repository\n */\n codePath = './packages/'\n /**\n * special case for TypeScript output path due to mono repository\n */\n useFunctions = true\n useInterfaces = true\n packagePath = 'sdk/src'\n itself = 'this'\n fileExtension = '.ts'\n commentStr = '// '\n nullStr = 'null'\n transport = 'transport'\n\n argDelimiter = ', '\n paramDelimiter = ',\\n'\n propDelimiter = '\\n'\n\n indentStr = ' '\n endTypeStr = '\\n}'\n willItStream = true\n useNamedParameters = false\n useNamedArguments = false\n /** Track special imports of sdk-rtl */\n rtlNeeds = new Set<string>()\n\n reset() {\n this.rtlNeeds = new Set<string>()\n }\n\n sdkFileName(baseFileName: string) {\n return this.fileName(`${this.versions?.spec.key}/${baseFileName}`)\n }\n\n /** lists all special sdk-rtl import types encountered */\n rtlImports() {\n let rtl = Array.from(this.rtlNeeds).join(', ')\n if (rtl) {\n rtl += ', '\n }\n return rtl\n }\n\n /** creates a full @looker/sdk-rtl import statement if one is required */\n rtlImportStatement() {\n const rtl = this.rtlImports()\n return rtl ? `\\nimport type { ${rtl} } from '@looker/sdk-rtl'\\n` : ''\n }\n\n methodsPrologue(_indent: string) {\n return `\nimport type { ${this.rtlImports()}IAuthSession, ITransportSettings, SDKResponse } from '@looker/sdk-rtl'\nimport { APIMethods, encodeParam } from '@looker/sdk-rtl'\n/**\n * ${this.warnEditing()}\n *\n */\nimport { sdkVersion } from '../constants'\nimport type { I${this.packageName} } from './methodsInterface'\nimport type { ${this.typeNames().join(', ')} } from './models'\n\nexport class ${this.packageName} extends APIMethods implements I${\n this.packageName\n } {\n static readonly ApiVersion = '${this.apiVersion}'\n constructor(authSession: IAuthSession) {\n super(authSession, sdkVersion)\n this.apiVersion = ${this.packageName}.ApiVersion\n this.apiPath =\n authSession.settings.base_url === ''\n ? ''\n : authSession.settings.base_url + '/api/' + this.apiVersion\n }\n\n`\n }\n\n functionsPrologue(_indent: string) {\n return `\nimport type { ${this.rtlImports()}IAPIMethods, IAuthSession, ITransportSettings, SDKResponse } from '@looker/sdk-rtl'\nimport { encodeParam, functionalSdk } from '@looker/sdk-rtl'\n\n/**\n * ${this.warnEditing()}\n *\n */\n\nimport { sdkVersion } from '../constants'\nimport type { ${this.typeNames().join(', ')} } from './models'\n\n/**\n * Creates a \"functional sdk\" that knows the API and Looker release version\n * @param authSession authentication session\n */\nexport const functionalSdk${this.apiRef} = (\n authSession: IAuthSession,\n) => {\n return functionalSdk(authSession, '${this.apiVersion}', sdkVersion)\n}\n\n`\n }\n\n interfacesPrologue(_indent: string) {\n return `\nimport type { ${this.rtlImports()} IAPIMethods, ITransportSettings, SDKResponse } from '@looker/sdk-rtl'\n/**\n * ${this.warnEditing()}\n *\n */\nimport type { ${this.typeNames().join(', ')} } from './models'\n\nexport interface I${this.packageName} extends IAPIMethods {\n\n`\n }\n\n streamsPrologue(_indent: string): string {\n return `\nimport type { Readable } from 'readable-stream'\nimport type { ${this.rtlImports()}IAuthSession, ITransportSettings } from '@looker/sdk-rtl'\nimport { APIMethods, encodeParam } from '@looker/sdk-rtl'\n\n/**\n * ${this.warnEditing()}\n *\n */\nimport { sdkVersion } from '../constants'\nimport type { ${this.typeNames().join(', ')} } from './models'\n\nexport class ${this.packageName}Stream extends APIMethods {\n static readonly ApiVersion = '${this.apiVersion}'\n constructor(authSession: IAuthSession) {\n super(authSession, sdkVersion)\n this.apiVersion = ${this.packageName}Stream.ApiVersion\n this.apiPath =\n authSession.settings.base_url === ''\n ? ''\n : authSession.settings.base_url + '/api/' + this.apiVersion\n }\n`\n }\n\n methodsEpilogue(_indent: string) {\n return '\\n}'\n }\n\n modelsPrologue(_indent: string) {\n return `${this.rtlImportStatement()}\n/*\n * ${this.warnEditing()}\n */\n\n`\n }\n\n modelsEpilogue(_indent: string) {\n return ''\n }\n\n commentHeader(indent: string, text: string | undefined, commentStr = ' * ') {\n if (this.noComment || !text) return ''\n const commentPrefix =\n text.includes(' License') && text.includes('Copyright (c)') ? '/*' : '/**'\n if (commentStr === ' ') {\n return `${indent}${commentPrefix}\\n\\n${commentBlock(\n text,\n indent,\n commentStr\n )}\\n${indent} */\\n`\n }\n return `${indent}${commentPrefix}\\n${commentBlock(\n text,\n indent,\n commentStr\n )}\\n${indent} */\\n`\n }\n\n beginRegion(indent: string, description: string): string {\n return `${indent}//#region ${description}`\n }\n\n endRegion(indent: string, description: string): string {\n return `${indent}//#endregion ${description}`\n }\n\n declareProperty(indent: string, property: IProperty) {\n const optional = !property.required ? '?' : ''\n const nullify = property.nullable ? ' | null' : ''\n if (property.name === strBody) {\n // TODO refactor this hack to track context when the body parameter is created for the request type\n property.type.refCount++\n return (\n this.commentHeader(\n indent,\n property.description ||\n 'body parameter for dynamically created request type'\n ) +\n `${indent}${property.name}${optional}: ${this.typeName(\n property.type\n )}${nullify}`\n )\n }\n const mapped = this.typeMap(property.type)\n return (\n this.commentHeader(indent, this.describeProperty(property)) +\n `${indent}${this.reserve(property.name)}${optional}: ${\n mapped.name\n }${nullify}`\n )\n }\n\n /**\n * Detect need for Partial<T> vs T for a parameter type\n * @param param to cast (or not)\n * @param mapped type to cast\n */\n impartial(param: IParameter, mapped: IMappedType) {\n if (param.type.intrinsic || param.location !== strBody) return mapped.name\n return `Partial<${mapped.name}>`\n }\n\n paramComment(param: IParameter, mapped: IMappedType) {\n // Don't include mapped type name for Typescript param comments in headers\n let desc = param.description || param.type.description\n if (!desc) {\n desc = this.impartial(param, mapped)\n }\n\n return `@param ${param.name} ${describeParam({\n ...param,\n ...{ description: desc },\n })}`\n }\n\n declareParameter(indent: string, method: IMethod, param: IParameter) {\n const type =\n param.location === strBody\n ? this.writeableType(param.type, method) || param.type\n : param.type\n const mapped = this.typeMap(type)\n let pOpt = ''\n mapped.name = this.impartial(param, mapped)\n if (!param.required) {\n pOpt = mapped.default ? '' : '?'\n }\n return (\n `${indent}${this.reserve(param.name)}${pOpt}: ${mapped.name}` +\n (param.required ? '' : mapped.default ? ` = ${mapped.default}` : '')\n )\n }\n\n makeTheCall(method: IMethod, inputs: ArgValues): string {\n inputs = trimInputs(inputs)\n const resp = `let response = await sdk.ok(sdk.${method.name}(`\n const args = this.assignParams(method, inputs)\n return `${resp}${args}))`\n }\n\n methodHeaderComment(method: IMethod, params: string[] = []) {\n if (this.noComment) return ''\n const lines: string[] = []\n\n const desc = method.description?.trim()\n if (desc) {\n lines.push(desc)\n lines.push('')\n }\n\n const resultType = this.typeMap(method.type).name\n lines.push(`${method.httpMethod} ${method.endpoint} -> ${resultType}`)\n lines.push('')\n\n if (method.deprecated) {\n lines.push('@deprecated')\n lines.push('')\n }\n\n if (method.responseIsBoth()) {\n lines.push('@remarks')\n lines.push('**NOTE**: Binary content may be returned by this function.')\n lines.push('')\n } else if (method.responseIsBinary()) {\n lines.push('@remarks')\n lines.push('**NOTE**: Binary content is returned by this function.')\n lines.push('')\n }\n\n params.forEach((p) => lines.push(`@param ${p}`))\n\n const args = method.allParams\n if (args.length) {\n let requestType = this.requestTypeName(method)\n\n if (requestType) {\n requestType =\n method.httpMethod === 'PATCH'\n ? `Partial<I${requestType}>`\n : `I${requestType}`\n lines.push(\n `@param request composed interface \"${requestType}\" for complex method parameters`\n )\n } else {\n args.forEach((p) =>\n lines.push(this.paramComment(p, this.paramMappedType(p, method)))\n )\n }\n }\n lines.push('@param options one-time API call overrides')\n lines.push('')\n\n return lines.join('\\n')\n }\n\n methodHeaderDeclaration(\n indent: string,\n method: IMethod,\n streamer = false,\n params: string[] = []\n ) {\n const mapped = this.typeMap(method.type)\n let fragment: string\n const requestType = this.requestTypeName(method)\n const bump = this.bumper(indent)\n const headComment = streamer\n ? this.methodHeaderComment(method, ['callback streaming output function'])\n : this.methodHeaderComment(method, params)\n if (requestType) {\n // use the request type that will be generated in models.ts\n // No longer using Partial<T> by default here because required and optional are supposed to be accurate\n // However, for update methods (iow, patch) Partial<T> is still necessary since only the delta gets set\n fragment =\n method.httpMethod === 'PATCH'\n ? `request: Partial<I${requestType}>`\n : `request: I${requestType}`\n params.push(fragment)\n fragment = params.join(', ')\n } else {\n const args = method.allParams // get the params in signature order\n if (args && args.length > 0)\n args.forEach((p) => params.push(this.declareParameter(bump, method, p)))\n fragment =\n params.length > 0 ? `\\n${params.join(this.paramDelimiter)}` : ''\n }\n const callback = `callback: (readable: Readable) => Promise<${mapped.name}>,`\n const header =\n this.commentHeader(indent, headComment) +\n `${indent}async ${method.name}(` +\n (streamer ? `\\n${bump}${callback}` : '')\n const returns = streamer ? '' : `: ${this.returnType(indent, method)}`\n\n return (\n header +\n fragment +\n (fragment ? ', ' : '') +\n `options?: Partial<ITransportSettings>)${returns} {\\n`\n )\n }\n\n methodSignature(indent: string, method: IMethod) {\n return this.methodHeaderDeclaration(indent, method, false)\n }\n\n encodePathParams(indent: string, method: IMethod) {\n const bump = indent + this.indentStr\n let encodings = ''\n if (method.pathParams.length > 0) {\n const prefix = this.useRequest(method) ? 'request' : ''\n for (const param of method.pathParams) {\n if (param.doEncode()) {\n const name = this.accessor(param.name, prefix)\n encodings += `${bump}${name} = encodeParam(${name})\\n`\n }\n }\n }\n return encodings\n }\n\n declareMethod(indent: string, method: IMethod) {\n const bump = this.bumper(indent)\n return (\n this.methodSignature(indent, method) +\n this.encodePathParams(indent, method) +\n this.httpCall(bump, method) +\n `\\n${indent}}`\n )\n }\n\n /**\n * Return type declaration for the method\n * @param indent\n * @param method\n */\n returnType(indent: string, method: IMethod): string {\n const mapped = this.typeMap(method.type)\n const errors = this.errorResponses(indent, method)\n return `Promise<SDKResponse<${mapped.name}, ${errors}>>`\n }\n\n functionSignature(indent: string, method: IMethod): string {\n let fragment: string\n const requestType = this.requestTypeName(method)\n const bump = this.bumper(indent)\n const params = ['sdk: IAPIMethods']\n\n const headComment = this.methodHeaderComment(method, [\n 'sdk IAPIMethods implementation',\n ])\n if (requestType) {\n // use the request type that will be generated in models.ts\n // No longer using Partial<T> by default here because required and optional are supposed to be accurate\n // However, for update methods (iow, patch) Partial<T> is still necessary since only the delta gets set\n fragment =\n method.httpMethod === 'PATCH'\n ? `request: Partial<I${requestType}>`\n : `request: I${requestType}`\n params.push(fragment)\n fragment = params.join(', ')\n } else {\n const args = method.allParams // get the params in signature order\n if (args && args.length > 0)\n args.forEach((p) => params.push(this.declareParameter(bump, method, p)))\n fragment =\n params.length > 0 ? `\\n${params.join(this.paramDelimiter)}` : ''\n }\n const header =\n this.commentHeader(indent, headComment) +\n `${indent}export const ${method.name} = async (`\n const returns = this.returnType(indent, method)\n\n return (\n header +\n fragment +\n (fragment ? ', ' : '') +\n `options?: Partial<ITransportSettings>): ${returns} => {\\n`\n )\n }\n\n declareFunction(indent: string, method: IMethod): string {\n const bump = this.bumper(indent)\n // horribly hacky tweak to httpCall\n this.itself = 'sdk'\n const result =\n this.functionSignature(indent, method) +\n this.encodePathParams(indent, method) +\n this.httpCall(bump, method) +\n `\\n${indent}}`\n this.itself = 'this'\n return result\n }\n\n declareInterface(indent: string, method: IMethod): string {\n let sig = this.methodSignature(indent, method).trimRight()\n sig = sig.replace(/^\\s*async /gm, '')\n sig = sig.substr(0, sig.length - 2)\n return `${sig}\\n`\n }\n\n streamerSignature(indent: string, method: IMethod) {\n return this.methodHeaderDeclaration(indent, method, true)\n }\n\n declareStreamer(indent: string, method: IMethod) {\n const bump = this.bumper(indent)\n return (\n this.streamerSignature(indent, method) +\n this.encodePathParams(bump, method) +\n this.streamCall(bump, method) +\n `\\n${indent}}`\n )\n }\n\n reserve(name: string): string {\n if (!isSpecialName(name)) return name\n return `'${name}'`\n }\n\n /**\n * Get the language's type name for generation\n *\n * Also refcounts the type\n *\n * @param type to name\n * @private\n */\n private typeName(type: IType) {\n type.refCount++\n if (type.customType && !(type instanceof EnumType)) {\n return this.reserve(`I${type.name}`)\n }\n return this.reserve(type.name)\n }\n\n typeSignature(indent: string, type: IType) {\n const meta = type instanceof EnumType ? 'enum' : 'interface'\n return (\n this.commentHeader(indent, type.description) +\n `${indent}export ${meta} ${this.typeName(type)} ${this.typeOpen}\\n`\n )\n }\n\n errorResponses(_indent: string, method: IMethod) {\n const results: string[] = method.errorResponses.map(\n (r) => `${this.typeName(r.type)}`\n )\n return results.join(' | ')\n }\n\n httpPath(path: string, prefix?: string) {\n prefix = prefix || ''\n if (path.indexOf('{') >= 0)\n return `\\`${path.replace(/{/gi, '${' + prefix)}\\``\n return `'${path}'`\n }\n\n argGroup(_indent: string, args: Arg[], prefix?: string) {\n if (!args || args.length === 0) return this.nullStr\n const hash: string[] = []\n for (const arg of args) {\n const reserved = this.reserve(arg)\n if (prefix) {\n hash.push(`${reserved}: ${this.accessor(arg, prefix)}`)\n } else {\n hash.push(reserved)\n }\n }\n return `{${hash.join(this.argDelimiter)}}`\n }\n\n /**\n * Determine the type of accessor needed for the symbol name\n *\n * If the prefix is defined:\n * If the name is special, use array accessor\n * If the name is simple, use dotted notation\n *\n * With no prefix, return the \"reserved\" version of the name, which may be the same as name\n *\n * @param name variable to access\n * @param prefix optional prefix for accessor\n * @returns one of 4 possible accessor patterns\n */\n accessor(name: string, prefix?: string) {\n const reserved = this.reserve(name)\n if (!prefix) return reserved\n if (reserved === name) return `${prefix}.${name}`\n return `${prefix}[${reserved}]`\n }\n\n argList(indent: string, args: Arg[], prefix?: string) {\n prefix = prefix || ''\n const bits = args.map((a) => this.accessor(a, prefix))\n\n return args && args.length !== 0\n ? `\\n${indent}${bits.join(this.argDelimiter)}`\n : this.nullStr\n }\n\n // this is a builder function to produce arguments with optional null place holders but no extra required optional arguments\n argFill(current: string, args: string) {\n if (!current && args.trim() === this.nullStr) {\n // Don't append trailing optional arguments if none have been set yet\n return ''\n }\n return `${args}${current ? this.argDelimiter : ''}${current}`\n }\n\n // build the http argument list from back to front, so trailing undefined arguments\n // can be omitted. Path arguments are resolved as part of the path parameter to general\n // purpose API method call\n // e.g.\n // {queryArgs...}, bodyArg, {headerArgs...}, {cookieArgs...}\n // {queryArgs...}, null, null, {cookieArgs...}\n // null, bodyArg\n // {queryArgs...}\n httpArgs(indent: string, method: IMethod) {\n const request = this.useRequest(method) ? 'request' : ''\n // add options at the end of the request calls. this will cause all other arguments to be\n // filled in but there's no way to avoid this for passing in the last optional parameter.\n // Fortunately, this code bloat is minimal and also hidden from the consumer.\n let result = this.argFill('', 'options')\n // let result = this.argFill('', this.argGroup(indent, method.cookieArgs, request))\n // result = this.argFill(result, this.argGroup(indent, method.headerArgs, request))\n result = this.argFill(\n result,\n method.bodyArg ? this.accessor(method.bodyArg, request) : this.nullStr\n )\n result = this.argFill(\n result,\n this.argGroup(indent, method.queryArgs, request)\n )\n return result\n }\n\n httpCall(indent: string, method: IMethod) {\n const request = this.useRequest(method) ? 'request.' : ''\n const mapped = this.typeMap(method.type)\n const bump = this.bumper(indent)\n const args = this.httpArgs(bump, method)\n const errors = this.errorResponses(indent, method)\n return (\n `${indent}return ${this.it(method.httpMethod.toLowerCase())}` +\n `<${mapped.name}, ${errors}>(` +\n this.httpPath(method.endpoint, request) +\n `${args ? ', ' + args : ''})`\n )\n }\n\n streamCall(indent: string, method: IMethod) {\n const request = this.useRequest(method) ? 'request.' : ''\n const mapped = this.typeMap(method.type)\n const bump = indent + this.indentStr\n const args = this.httpArgs(bump, method)\n // const errors = this.errorResponses(indent, method)\n return `${indent}return ${this.it('authStream')}<${\n mapped.name\n }>(callback, '${method.httpMethod.toUpperCase()}', ${this.httpPath(\n method.endpoint,\n request\n )}${args ? ', ' + args : ''})`\n }\n\n summary(indent: string, text: string | undefined) {\n return this.commentHeader(indent, text)\n }\n\n // TODO avoid duplicate code\n typeNames() {\n const names: string[] = []\n if (!this.api) return names\n const types = this.api.types\n Object.values(types)\n .filter((type) => type.refCount > 0 && !type.intrinsic)\n .forEach((type) => names.push(this.typeName(type)))\n return names\n }\n\n typeMap(type: IType): IMappedType {\n super.typeMap(type)\n const mt = ''\n\n const asString: CodeAssignment = (_, v) => `'${v}'`\n const tsTypes: Record<string, IMappedType> = {\n any: { default: mt, name: 'any' },\n boolean: { default: mt, name: 'boolean' },\n // TODO can we use blob for binary somehow? https://developer.mozilla.org/en-US/docs/Web/API/Blob\n byte: { default: mt, name: 'binary' },\n date: { default: mt, name: 'Date' },\n datetime: { default: mt, name: 'Date' },\n double: { default: mt, name: 'number' },\n float: { default: mt, name: 'number' },\n int32: { default: mt, name: 'number' },\n int64: { default: mt, name: 'number' },\n integer: { default: mt, name: 'number' },\n number: { default: mt, name: 'number' },\n object: { default: mt, name: 'any' },\n password: { default: mt, name: 'Password', asVal: asString },\n string: { default: mt, name: 'string', asVal: asString },\n uri: { default: mt, name: 'Url', asVal: asString },\n url: { default: mt, name: 'Url', asVal: asString },\n void: { default: mt, name: 'void', asVal: (_i, _v: any) => '' },\n }\n\n if (type.elementType) {\n // This is a structure with nested types\n const map = this.typeMap(type.elementType)\n switch (type.className) {\n case 'ArrayType':\n return {\n default: '[]',\n name: `${map.name}[]`,\n }\n case 'HashType':\n this.rtlNeeds.add('IDictionary')\n return {\n default: '',\n name: `IDictionary<${map.name}>`,\n }\n case 'DelimArrayType':\n this.rtlNeeds.add('DelimArray')\n return {\n default: '',\n name: `DelimArray<${map.name}>`,\n asVal: (_, v) => `new DelimArray<${map.name}>([${v}])`,\n }\n case 'EnumType':\n return {\n default: '',\n name: this.typeName(type),\n asVal: (_, v) => `${type.name}.${v}`,\n }\n }\n throw new Error(`Don't know how to handle: ${JSON.stringify(type)}`)\n }\n\n if (type.name) {\n const mapped = tsTypes[type.name]\n if (mapped && mapped.name === 'Url') this.rtlNeeds.add(mapped.name)\n return mapped || { default: '', name: this.typeName(type) } // No null default for complex types\n } else {\n throw new Error('Cannot output a nameless type.')\n }\n }\n}\n"],"file":"typescript.gen.js"}
package/lib/go.gen.d.ts CHANGED
@@ -23,6 +23,7 @@ export declare class GoGen extends CodeGen {
23
23
  needsRequestTypes: boolean;
24
24
  keywords: Set<string>;
25
25
  constructor(api: ApiModel, versions?: IVersionInfo | undefined);
26
+ supportsMultiApi(): boolean;
26
27
  reserve(name: string): string;
27
28
  commentHeader(indent: string, text: string | undefined): string;
28
29
  comment(indent: string, description: string): string;
@@ -31,7 +32,6 @@ export declare class GoGen extends CodeGen {
31
32
  methodHeaderDeclaration(indent: string, method: IMethod, streamer?: boolean): string;
32
33
  declareMethod(indent: string, method: IMethod): string;
33
34
  declareParameter(indent: string, method: IMethod, param: IParameter): string;
34
- paramComment(param: IParameter, mapped: IMappedType): string;
35
35
  encodePathParams(indent: string, method: IMethod): string;
36
36
  httpCall(indent: string, method: IMethod): string;
37
37
  httpArgs(indent: string, method: IMethod): string;
package/lib/go.gen.js CHANGED
@@ -82,6 +82,10 @@ class GoGen extends _codeGen.CodeGen {
82
82
  this.apiVersion = this.packageName;
83
83
  }
84
84
 
85
+ supportsMultiApi() {
86
+ return false;
87
+ }
88
+
85
89
  reserve(name) {
86
90
  if (this.keywords.has(name)) {
87
91
  return "".concat(name, "0");
@@ -129,11 +133,15 @@ class GoGen extends _codeGen.CodeGen {
129
133
  }
130
134
 
131
135
  if (method.responseIsBoth()) {
132
- headComment += "\n\n**Note**: Binary content may be returned by this method.";
136
+ headComment += "\n\n**Note**: Binary content may be returned by this method.\n";
133
137
  } else if (method.responseIsBinary()) {
134
138
  headComment += "\n\n**Note**: Binary content is returned by this method.\n";
135
139
  }
136
140
 
141
+ if (method.deprecated) {
142
+ headComment += '\n\nDeprecated: This method is deprecated.\n';
143
+ }
144
+
137
145
  var callback = "callback: (readable: Readable) => Promise<".concat(mapped.name, ">,");
138
146
  var retType = mapped.name === 'Void' ? '' : "".concat(mapped.name, ", ");
139
147
  var header = this.comment('', headComment) + '\n' + "func (l *LookerSDK) ".concat(this.toCamelCaseCap(method.name), "(") + (streamer ? "\n".concat(bump).concat(callback) : '');
@@ -161,10 +169,6 @@ class GoGen extends _codeGen.CodeGen {
161
169
  return "".concat(indent).concat(this.toCamelCase(this.reserve(param.name)), " ").concat(pOpt).concat(mapped.name);
162
170
  }
163
171
 
164
- paramComment(param, mapped) {
165
- return "@param {".concat(mapped.name, "} ").concat(param.name, " ").concat(param.description);
166
- }
167
-
168
172
  encodePathParams(indent, method) {
169
173
  var encodings = '';
170
174
 
@@ -250,11 +254,6 @@ class GoGen extends _codeGen.CodeGen {
250
254
 
251
255
  modelsPrologue(_indent) {
252
256
  var goImport = "\nimport (\n \"github.com/looker-open-source/sdk-codegen/go/rtl\"\n \"time\"\n)";
253
-
254
- if (this.packageName === 'v3') {
255
- goImport = "\nimport (\n \"github.com/looker-open-source/sdk-codegen/go/rtl\"\n \"net/url\"\n \"time\"\n)";
256
- }
257
-
258
257
  return "\n// ".concat(this.warnEditing(), "\n\npackage ").concat(this.packageName, "\n").concat(goImport, "\n");
259
258
  }
260
259
 
@@ -328,7 +327,7 @@ class GoGen extends _codeGen.CodeGen {
328
327
  },
329
328
  object: {
330
329
  default: mt,
331
- name: 'struct'
330
+ name: 'interface{}'
332
331
  },
333
332
  password: {
334
333
  default: mt,