@teambit/typescript 0.0.737 → 0.0.740
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cmds/check-types.cmd.js.map +1 -1
- package/dist/cmds/init.cmd.js.map +1 -1
- package/dist/compiler-options.js.map +1 -1
- package/dist/exceptions/index.js.map +1 -1
- package/dist/exceptions/transformer-not-found.d.ts +2 -1
- package/dist/exceptions/transformer-not-found.js +3 -2
- package/dist/exceptions/transformer-not-found.js.map +1 -1
- package/dist/export-identifier.js.map +1 -1
- package/dist/export-list.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/schema-extractor-context.d.ts +4 -1
- package/dist/schema-extractor-context.js +20 -2
- package/dist/schema-extractor-context.js.map +1 -1
- package/dist/schema-transformer.js.map +1 -1
- package/dist/schema-transformer.plugin.js.map +1 -1
- package/dist/transformers/class-deceleration.js +9 -1
- package/dist/transformers/class-deceleration.js.map +1 -1
- package/dist/transformers/constructor.js.map +1 -1
- package/dist/transformers/enum-declaration.d.ts +10 -0
- package/dist/transformers/enum-declaration.js +60 -0
- package/dist/transformers/enum-declaration.js.map +1 -0
- package/dist/transformers/export-declaration.js.map +1 -1
- package/dist/transformers/function-declaration.js.map +1 -1
- package/dist/transformers/index-signature.js.map +1 -1
- package/dist/transformers/index.d.ts +1 -0
- package/dist/transformers/index.js +16 -0
- package/dist/transformers/index.js.map +1 -1
- package/dist/transformers/interface-declaration.js.map +1 -1
- package/dist/transformers/literal-type.js.map +1 -1
- package/dist/transformers/method-declaration.js.map +1 -1
- package/dist/transformers/method-signature.js.map +1 -1
- package/dist/transformers/property-declaration.js.map +1 -1
- package/dist/transformers/property-signature.js.map +1 -1
- package/dist/transformers/source-file-transformer.js.map +1 -1
- package/dist/transformers/type-alias.js.map +1 -1
- package/dist/transformers/utils/get-params.js +53 -7
- package/dist/transformers/utils/get-params.js.map +1 -1
- package/dist/transformers/utils/parse-type-from-quick-info.d.ts +1 -0
- package/dist/transformers/utils/parse-type-from-quick-info.js +12 -3
- package/dist/transformers/utils/parse-type-from-quick-info.js.map +1 -1
- package/dist/transformers/utils/to-function-schema.js.map +1 -1
- package/dist/transformers/utils/type-node-to-schema.js +34 -4
- package/dist/transformers/utils/type-node-to-schema.js.map +1 -1
- package/dist/transformers/variable-declaration.js.map +1 -1
- package/dist/transformers/variable-statement.js.map +1 -1
- package/dist/typescript.aspect.js.map +1 -1
- package/dist/typescript.compiler.js.map +1 -1
- package/dist/typescript.compiler.spec.js.map +1 -1
- package/dist/typescript.composition.js.map +1 -1
- package/dist/typescript.extractor.d.ts +7 -1
- package/dist/typescript.extractor.js +30 -9
- package/dist/typescript.extractor.js.map +1 -1
- package/dist/typescript.main.runtime.d.ts +11 -2
- package/dist/typescript.main.runtime.js +17 -6
- package/dist/typescript.main.runtime.js.map +1 -1
- package/dist/typescript.parser.js.map +1 -1
- package/dist/typescript.parser.spec.js.map +1 -1
- package/exceptions/transformer-not-found.ts +4 -2
- package/package-tar/teambit-typescript-0.0.740.tgz +0 -0
- package/package.json +16 -15
- package/{preview-1652930732694.js → preview-1653449228788.js} +2 -2
- package/transformers/class-deceleration.ts +4 -1
- package/transformers/enum-declaration.ts +20 -0
- package/transformers/index.ts +1 -0
- package/transformers/utils/get-params.ts +53 -9
- package/transformers/utils/parse-type-from-quick-info.ts +9 -1
- package/transformers/utils/type-node-to-schema.ts +37 -4
- package/package-tar/teambit-typescript-0.0.737.tgz +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["typescript.compiler.ts"],"names":["TypescriptCompiler","constructor","id","logger","options","tsModule","distDir","distGlobPatterns","shouldCopyNonSupportedFiles","artifactName","tsconfig","compilerOptions","outDir","displayConfig","stringifyTsconfig","getDistDir","transpileFile","fileContent","isFileSupported","filePath","compilerOptionsFromTsconfig","convertCompilerOptionsFromJson","errors","length","formattedErrors","formatDiagnosticsWithColorAndContext","getFormatDiagnosticsHost","Error","sourceRoot","componentDir","rootDir","result","transpileModule","fileName","reportDiagnostics","diagnostics","formatHost","error","outputPath","replaceFileExtToJs","outputFiles","outputText","sourceMapText","push","preBuild","context","capsules","capsuleNetwork","seedersCapsules","capsuleDirs","map","capsule","path","writeTsConfig","writeTypes","writeNpmIgnore","build","componentsResults","runTscBuild","artifacts","getArtifactDefinition","postBuild","Promise","all","packageJson","PackageJsonFile","loadFromCapsuleSync","packageJsonObject","types","write","generatedBy","name","globPatterns","getDistPathBySrcPath","srcPath","fileWithJSExtIfNeeded","join","isJsAndCompile","compileJs","endsWith","isJsxAndCompile","compileJsx","network","capsulesRootDir","getCapsulesToCompile","getAllCapsuleDirs","getCanonicalFileName","p","getCurrentDirectory","getNewLine","sys","newLine","currentComponentResult","reportDiagnostic","diagnostic","errorStr","process","stdout","isTTY","formatDiagnostic","file","BitError","consoleFailure","component","reportSolutionBuilderStatus","diag","msg","messageText","debug","errorCounter","errorCount","info","host","createSolutionBuilderHost","undefined","writeProjectReferencesTsConfig","solutionBuilder","createSolutionBuilder","verbose","nextProject","longProcessLogger","createLongProcessLogger","getNextInvalidatedProject","capsulePath","project","replace","currentComponentId","getIdByPathInCapsule","logProgress","toString","getCapsule","startTime","Date","now","done","endTime","end","dirs","typePath","contents","fs","readFile","filename","basename","dir","pathExists","outputFile","NPM_IGNORE_FILE","npmIgnorePath","npmIgnoreEntriesStr","appendFile","projects","files","references","tsconfigStr","writeFile","JSON","stringify","fileExtension","extname","RegExp","version"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;AAGO,MAAMA,kBAAN,CAA6C;AAKlDC,EAAAA,WAAW,CACAC,EADA,EAEDC,MAFC,EAGDC,OAHC,EAIDC,QAJC,EAKT;AAAA;;AAAA,SAJSH,EAIT,GAJSA,EAIT;AAAA,SAHQC,MAGR,GAHQA,MAGR;AAAA,SAFQC,OAER,GAFQA,OAER;AAAA,SADQC,QACR,GADQA,QACR;AAAA;AAAA;AAAA;AAAA;AAAA,yDAYY,YAZZ;AAAA,2DAac,KAbd;AACA,SAAKC,OAAL,GAAeF,OAAO,CAACE,OAAR,IAAmB,MAAlC;AACA,SAAKC,gBAAL,GAAwBH,OAAO,CAACG,gBAAR,IAA4B,CAAE,GAAE,KAAKD,OAAQ,KAAjB,EAAwB,IAAG,KAAKA,OAAQ,uBAAxC,CAApD;AACA,SAAKE,2BAAL,GACE,OAAOJ,OAAO,CAACI,2BAAf,KAA+C,SAA/C,GAA2DJ,OAAO,CAACI,2BAAnE,GAAiG,IADnG;AAEA,SAAKC,YAAL,GAAoBL,OAAO,CAACK,YAAR,IAAwB,MAA5C;AACA,0BAAKL,OAAL,EAAaM,QAAb,mBAAaA,QAAb,GAA0B,EAA1B;AACA,kCAAKN,OAAL,CAAaM,QAAb,EAAsBC,eAAtB,2BAAsBA,eAAtB,GAA0C,EAA1C,EAPA,CAQA;;AACA,SAAKP,OAAL,CAAaM,QAAb,CAAsBC,eAAtB,CAAsCC,MAAtC,GAA+C,KAAKN,OAApD;AACD;;AAKDO,EAAAA,aAAa,GAAG;AACd,WAAO,KAAKC,iBAAL,CAAuB,KAAKV,OAAL,CAAaM,QAApC,CAAP;AACD;;AAEDK,EAAAA,UAAU,GAAG;AACX,WAAO,KAAKT,OAAZ;AACD;AAED;AACF;AACA;;;AACEU,EAAAA,aAAa,CAACC,WAAD,EAAsBb,OAAtB,EAAyE;AACpF,QAAI,CAAC,KAAKc,eAAL,CAAqBd,OAAO,CAACe,QAA7B,CAAL,EAA6C;AAC3C,aAAO,IAAP,CAD2C,CAC9B;AACd;;AACD,UAAMC,2BAA2B,GAAG,KAAKf,QAAL,CAAcgB,8BAAd,CAClC,KAAKjB,OAAL,CAAaM,QAAb,CAAsBC,eADY,EAElC,GAFkC,CAApC;;AAIA,QAAIS,2BAA2B,CAACE,MAA5B,CAAmCC,MAAvC,EAA+C;AAC7C;AACA,YAAMC,eAAe,GAAG,KAAKnB,QAAL,CAAcoB,oCAAd,CACtBL,2BAA2B,CAACE,MADN,EAEtB,KAAKI,wBAAL,EAFsB,CAAxB;AAIA,YAAM,IAAIC,KAAJ,CAAW,sCAAqCH,eAAgB,EAAhE,CAAN;AACD;;AAED,UAAMb,eAAe,GAAGS,2BAA2B,CAAChB,OAApD;AACAO,IAAAA,eAAe,CAACiB,UAAhB,GAA6BxB,OAAO,CAACyB,YAArC;AACAlB,IAAAA,eAAe,CAACmB,OAAhB,GAA0B,GAA1B;AACA,UAAMC,MAAM,GAAG,KAAK1B,QAAL,CAAc2B,eAAd,CAA8Bf,WAA9B,EAA2C;AACxDN,MAAAA,eADwD;AAExDsB,MAAAA,QAAQ,EAAE7B,OAAO,CAACe,QAFsC;AAGxDe,MAAAA,iBAAiB,EAAE;AAHqC,KAA3C,CAAf;;AAMA,QAAIH,MAAM,CAACI,WAAP,IAAsBJ,MAAM,CAACI,WAAP,CAAmBZ,MAA7C,EAAqD;AACnD,YAAMa,UAAU,GAAG,KAAKV,wBAAL,EAAnB;AACA,YAAMW,KAAK,GAAG,KAAKhC,QAAL,CAAcoB,oCAAd,CAAmDM,MAAM,CAACI,WAA1D,EAAuEC,UAAvE,CAAd,CAFmD,CAInD;;AACA,YAAM,IAAIT,KAAJ,CAAUU,KAAV,CAAN;AACD;;AAED,UAAMC,UAAU,GAAG,KAAKC,kBAAL,CAAwBnC,OAAO,CAACe,QAAhC,CAAnB;AACA,UAAMqB,WAAW,GAAG,CAAC;AAAEC,MAAAA,UAAU,EAAEV,MAAM,CAACU,UAArB;AAAiCH,MAAAA;AAAjC,KAAD,CAApB;;AACA,QAAIP,MAAM,CAACW,aAAX,EAA0B;AACxBF,MAAAA,WAAW,CAACG,IAAZ,CAAiB;AACfF,QAAAA,UAAU,EAAEV,MAAM,CAACW,aADJ;AAEfJ,QAAAA,UAAU,EAAG,GAAEA,UAAW;AAFX,OAAjB;AAID;;AACD,WAAOE,WAAP;AACD;;AAEa,QAARI,QAAQ,CAACC,OAAD,EAAwB;AACpC,UAAMC,QAAQ,GAAGD,OAAO,CAACE,cAAR,CAAuBC,eAAxC;AACA,UAAMC,WAAW,GAAGH,QAAQ,CAACI,GAAT,CAAcC,OAAD,IAAaA,OAAO,CAACC,IAAlC,CAApB;AACA,UAAM,KAAKC,aAAL,CAAmBJ,WAAnB,CAAN;AACA,UAAM,KAAKK,UAAL,CAAgBL,WAAhB,CAAN;AACA,UAAM,KAAKM,cAAL,CAAoBN,WAApB,CAAN;AACD;AAED;AACF;AACA;;;AACa,QAALO,KAAK,CAACX,OAAD,EAAkD;AAC3D,UAAMY,iBAAiB,GAAG,MAAM,KAAKC,WAAL,CAAiBb,OAAO,CAACE,cAAzB,CAAhC;AAEA,WAAO;AACLY,MAAAA,SAAS,EAAE,KAAKC,qBAAL,EADN;AAELH,MAAAA;AAFK,KAAP;AAID;;AAEc,QAATI,SAAS,CAAChB,OAAD,EAAwB;AACrC,UAAMiB,OAAO,CAACC,GAAR,CACJlB,OAAO,CAACE,cAAR,CAAuBC,eAAvB,CAAuCE,GAAvC,CAA2C,MAAOC,OAAP,IAAmB;AAC5D,YAAMa,WAAW,GAAGC,2BAAgBC,mBAAhB,CAAoCf,OAAO,CAACC,IAA5C,CAApB,CAD4D,CAE5D;AACA;;;AACA,UAAIY,WAAW,CAACG,iBAAZ,CAA8BC,KAAlC,EAAyC;AACvC,eAAOJ,WAAW,CAACG,iBAAZ,CAA8BC,KAArC;AACA,cAAMJ,WAAW,CAACK,KAAZ,EAAN;AACD;AACF,KARD,CADI,CAAN;AAWD;;AAEDT,EAAAA,qBAAqB,GAAG;AACtB,WAAO,CACL;AACEU,MAAAA,WAAW,EAAE,KAAKpE,EADpB;AAEEqE,MAAAA,IAAI,EAAE,KAAK9D,YAFb;AAGE+D,MAAAA,YAAY,EAAE,KAAKjE;AAHrB,KADK,CAAP;AAOD;AAED;AACF;AACA;;;AACEkE,EAAAA,oBAAoB,CAACC,OAAD,EAAkB;AACpC,UAAMC,qBAAqB,GAAG,KAAKpC,kBAAL,CAAwBmC,OAAxB,CAA9B;AACA,WAAOtB,gBAAKwB,IAAL,CAAU,KAAKtE,OAAf,EAAwBqE,qBAAxB,CAAP;AACD;AAED;AACF;AACA;;;AACEzD,EAAAA,eAAe,CAACC,QAAD,EAA4B;AACzC,UAAM0D,cAAc,GAAG,CAAC,CAAC,KAAKzE,OAAL,CAAa0E,SAAf,IAA4B3D,QAAQ,CAAC4D,QAAT,CAAkB,KAAlB,CAAnD;AACA,UAAMC,eAAe,GAAG,CAAC,CAAC,KAAK5E,OAAL,CAAa6E,UAAf,IAA6B9D,QAAQ,CAAC4D,QAAT,CAAkB,MAAlB,CAArD;AACA,WACE,CAAC5D,QAAQ,CAAC4D,QAAT,CAAkB,KAAlB,KAA4B5D,QAAQ,CAAC4D,QAAT,CAAkB,MAAlB,CAA5B,IAAyDF,cAAzD,IAA2EG,eAA5E,KACA,CAAC7D,QAAQ,CAAC4D,QAAT,CAAkB,OAAlB,CAFH;AAID;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;AAC2B,QAAXrB,WAAW,CAACwB,OAAD,EAA+C;AACtE,UAAMpD,OAAO,GAAGoD,OAAO,CAACC,eAAxB;AACA,UAAMrC,QAAQ,GAAG,MAAMoC,OAAO,CAACE,oBAAR,EAAvB;;AACA,QAAI,CAACtC,QAAQ,CAACvB,MAAd,EAAsB;AACpB,aAAO,EAAP;AACD;;AACD,UAAM0B,WAAW,GAAGH,QAAQ,CAACuC,iBAAT,EAApB;AACA,UAAMjD,UAAU,GAAG;AACjBkD,MAAAA,oBAAoB,EAAGC,CAAD,IAAOA,CADZ;AAEjBC,MAAAA,mBAAmB,EAAE,MAAM,EAFV;AAEc;AAC/BC,MAAAA,UAAU,EAAE,MAAM,KAAKpF,QAAL,CAAcqF,GAAd,CAAkBC;AAHnB,KAAnB;AAKA,UAAMlC,iBAAoC,GAAG,EAA7C;AACA,QAAImC,sBAAgD,GAAG;AAAEtE,MAAAA,MAAM,EAAE;AAAV,KAAvD;;AACA,UAAMuE,gBAAgB,GAAIC,UAAD,IAA+B;AACtD,YAAMC,QAAQ,GAAGC,OAAO,CAACC,MAAR,CAAeC,KAAf,GACb,KAAK7F,QAAL,CAAcoB,oCAAd,CAAmD,CAACqE,UAAD,CAAnD,EAAiE1D,UAAjE,CADa,GAEb,KAAK/B,QAAL,CAAc8F,gBAAd,CAA+BL,UAA/B,EAA2C1D,UAA3C,CAFJ;;AAGA,UAAI,CAAC0D,UAAU,CAACM,IAAhB,EAAsB;AACpB;AACA,cAAM,KAAIC,oBAAJ,EAAaN,QAAb,CAAN;AACD;;AACD,WAAK5F,MAAL,CAAYmG,cAAZ,CAA2BP,QAA3B;;AACA,UAAI,CAACH,sBAAsB,CAACW,SAAxB,IAAqC,CAACX,sBAAsB,CAACtE,MAAjE,EAAyE;AACvE,cAAM,IAAIK,KAAJ,CAAW,iDAAgDmE,UAAU,CAACM,IAAK,EAA3E,CAAN;AACD;;AACDR,MAAAA,sBAAsB,CAACtE,MAAvB,CAA8BqB,IAA9B,CAAmCoD,QAAnC;AACD,KAbD,CAdsE,CA4BtE;;;AACA,UAAMS,2BAA2B,GAAIC,IAAD,IAAyB;AAC3D,YAAMC,GAAG,GAAGD,IAAI,CAACE,WAAjB;AACA,WAAKxG,MAAL,CAAYyG,KAAZ,CAAkBF,GAAlB;AACD,KAHD;;AAIA,UAAMG,YAAY,GAAIC,UAAD,IAAwB;AAC3C,WAAK3G,MAAL,CAAY4G,IAAZ,CAAkB,sBAAqBD,UAAW,EAAlD;AACD,KAFD;;AAGA,UAAME,IAAI,GAAG,KAAK3G,QAAL,CAAc4G,yBAAd,CACXC,SADW,EAEXA,SAFW,EAGXrB,gBAHW,EAIXW,2BAJW,EAKXK,YALW,CAAb;AAOA,UAAM,KAAKM,8BAAL,CAAoCrF,OAApC,EAA6CmB,WAA7C,CAAN;AACA,UAAMmE,eAAe,GAAG,KAAK/G,QAAL,CAAcgH,qBAAd,CAAoCL,IAApC,EAA0C,CAAClF,OAAD,CAA1C,EAAqD;AAAEwF,MAAAA,OAAO,EAAE;AAAX,KAArD,CAAxB;AACA,QAAIC,WAAJ;AACA,UAAMC,iBAAiB,GAAG,KAAKrH,MAAL,CAAYsH,uBAAZ,CAAoC,+BAApC,EAAqE3E,QAAQ,CAACvB,MAA9E,CAA1B,CA9CsE,CA+CtE;;AACA,WAAQgG,WAAW,GAAGH,eAAe,CAACM,yBAAhB,EAAtB,EAAoE;AAClE;AACA;AACA,YAAMC,WAAW,GAAGJ,WAAW,CAACK,OAAZ,CAAoBC,OAApB,CAA4B,oBAA5B,EAAkD,EAAlD,CAApB;AACA,YAAMC,kBAAkB,GAAGhF,QAAQ,CAACiF,oBAAT,CAA8BJ,WAA9B,CAA3B;AACA,UAAI,CAACG,kBAAL,EAAyB,MAAM,IAAInG,KAAJ,CAAW,gCAA+BgG,WAAY,EAAtD,CAAN;AACzBH,MAAAA,iBAAiB,CAACQ,WAAlB,CAA8BF,kBAAkB,CAACG,QAAnB,EAA9B;AACA,YAAM9E,OAAO,GAAGL,QAAQ,CAACoF,UAAT,CAAoBJ,kBAApB,CAAhB;AACA,UAAI,CAAC3E,OAAL,EAAc,MAAM,IAAIxB,KAAJ,CAAW,8BAA6BmG,kBAAkB,CAACG,QAAnB,EAA8B,EAAtE,CAAN;AACdrC,MAAAA,sBAAsB,CAACW,SAAvB,GAAmCpD,OAAO,CAACoD,SAA3C;AACAX,MAAAA,sBAAsB,CAACuC,SAAvB,GAAmCC,IAAI,CAACC,GAAL,EAAnC;AACAd,MAAAA,WAAW,CAACe,IAAZ;AACA1C,MAAAA,sBAAsB,CAAC2C,OAAvB,GAAiCH,IAAI,CAACC,GAAL,EAAjC;AACA5E,MAAAA,iBAAiB,CAACd,IAAlB,mBAA4BiD,sBAA5B;AACAA,MAAAA,sBAAsB,GAAG;AAAEtE,QAAAA,MAAM,EAAE;AAAV,OAAzB;AACD;;AACDkG,IAAAA,iBAAiB,CAACgB,GAAlB;AAEA,WAAO/E,iBAAP;AACD;;AAEO/B,EAAAA,wBAAwB,GAA6B;AAC3D,WAAO;AACL4D,MAAAA,oBAAoB,EAAGC,CAAD,IAAOA,CADxB;AAELC,MAAAA,mBAAmB,EAAE,KAAKnF,QAAL,CAAcqF,GAAd,CAAkBF,mBAFlC;AAGLC,MAAAA,UAAU,EAAE,MAAM,KAAKpF,QAAL,CAAcqF,GAAd,CAAkBC;AAH/B,KAAP;AAKD;;AAEuB,QAAVrC,UAAU,CAACmF,IAAD,EAAiB;AACvC,UAAM3E,OAAO,CAACC,GAAR,CACJ,KAAK3D,OAAL,CAAagE,KAAb,CAAmBlB,GAAnB,CAAuB,MAAOwF,QAAP,IAAoB;AACzC,YAAMC,QAAQ,GAAG,MAAMC,mBAAGC,QAAH,CAAYH,QAAZ,EAAsB,MAAtB,CAAvB;;AACA,YAAMI,QAAQ,GAAG1F,gBAAK2F,QAAL,CAAcL,QAAd,CAAjB;;AAEA,YAAM5E,OAAO,CAACC,GAAR,CACJ0E,IAAI,CAACvF,GAAL,CAAS,MAAO8F,GAAP,IAAe;AACtB,cAAM7H,QAAQ,GAAGiC,gBAAKwB,IAAL,CAAUoE,GAAV,EAAe,OAAf,EAAwBF,QAAxB,CAAjB;;AACA,YAAI,EAAE,MAAMF,mBAAGK,UAAH,CAAc9H,QAAd,CAAR,CAAJ,EAAsC;AACpC,gBAAMyH,mBAAGM,UAAH,CAAc/H,QAAd,EAAwBwH,QAAxB,CAAN;AACD;AACF,OALD,CADI,CAAN;AAQD,KAZD,CADI,CAAN;AAeD;AAED;AACF;AACA;AACA;;;AAC8B,QAAdpF,cAAc,CAACkF,IAAD,EAAiB;AAC3C,UAAMU,eAAe,GAAG,YAAxB;AACA,UAAMrF,OAAO,CAACC,GAAR,CACJ0E,IAAI,CAACvF,GAAL,CAAS,MAAO8F,GAAP,IAAe;AACtB,YAAMI,aAAa,GAAGhG,gBAAKwB,IAAL,CAAUoE,GAAV,EAAeG,eAAf,CAAtB;;AACA,YAAME,mBAAmB,GAAI,KAAI,KAAK/I,OAAQ,yBAA9C;AACA,YAAMsI,mBAAGU,UAAH,CAAcF,aAAd,EAA6BC,mBAA7B,CAAN;AACD,KAJD,CADI,CAAN;AAOD;;AAE2C,QAA9BlC,8BAA8B,CAACrF,OAAD,EAAkByH,QAAlB,EAAsC;AAChF,UAAMC,KAAK,GAAG,EAAd;AACA,UAAMC,UAAU,GAAGF,QAAQ,CAACrG,GAAT,CAAc0E,OAAD,KAAc;AAAExE,MAAAA,IAAI,EAAEwE;AAAR,KAAd,CAAb,CAAnB;AACA,UAAMlH,QAAQ,GAAG;AAAE8I,MAAAA,KAAF;AAASC,MAAAA;AAAT,KAAjB;AACA,UAAMC,WAAW,GAAG,KAAK5I,iBAAL,CAAuBJ,QAAvB,CAApB;AACA,UAAMkI,mBAAGe,SAAH,CAAavG,gBAAKwB,IAAL,CAAU9C,OAAV,EAAmB,eAAnB,CAAb,EAAkD4H,WAAlD,CAAN;AACD;;AAE0B,QAAbrG,aAAa,CAACoF,IAAD,EAAiB;AAC1C,UAAMiB,WAAW,GAAG,KAAK5I,iBAAL,CAAuB,KAAKV,OAAL,CAAaM,QAApC,CAApB;AACA,UAAMoD,OAAO,CAACC,GAAR,CAAY0E,IAAI,CAACvF,GAAL,CAAU8F,GAAD,IAASJ,mBAAGe,SAAH,CAAavG,gBAAKwB,IAAL,CAAUoE,GAAV,EAAe,eAAf,CAAb,EAA8CU,WAA9C,CAAlB,CAAZ,CAAN;AACD;;AAEO5I,EAAAA,iBAAiB,CAACJ,QAAD,EAAW;AAClC,WAAOkJ,IAAI,CAACC,SAAL,CAAenJ,QAAf,EAAyBwG,SAAzB,EAAoC,CAApC,CAAP;AACD;;AAEO3E,EAAAA,kBAAkB,CAACpB,QAAD,EAA2B;AACnD,QAAI,CAAC,KAAKD,eAAL,CAAqBC,QAArB,CAAL,EAAqC,OAAOA,QAAP;;AACrC,UAAM2I,aAAa,GAAG1G,gBAAK2G,OAAL,CAAa5I,QAAb,CAAtB;;AACA,WAAOA,QAAQ,CAAC0G,OAAT,CAAiB,IAAImC,MAAJ,CAAY,GAAEF,aAAc,GAA5B,CAAjB,EAAkD,KAAlD,CAAP,CAHmD,CAGc;AAClE;;AAEDG,EAAAA,OAAO,GAAG;AACR,WAAO,KAAK5J,QAAL,CAAc4J,OAArB;AACD;;AAhSiD","sourcesContent":["import { BuildContext, BuiltTaskResult, ComponentResult } from '@teambit/builder';\nimport { Compiler, TranspileFileParams, TranspileFileOutput } from '@teambit/compiler';\nimport { Network } from '@teambit/isolator';\nimport { Logger } from '@teambit/logger';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport ts from 'typescript';\nimport { BitError } from '@teambit/bit-error';\nimport PackageJsonFile from '@teambit/legacy/dist/consumer/component/package-json-file';\nimport { TypeScriptCompilerOptions } from './compiler-options';\n\nexport class TypescriptCompiler implements Compiler {\n distDir: string;\n distGlobPatterns: string[];\n shouldCopyNonSupportedFiles: boolean;\n artifactName: string;\n constructor(\n readonly id: string,\n private logger: Logger,\n private options: TypeScriptCompilerOptions,\n private tsModule: typeof ts\n ) {\n this.distDir = options.distDir || 'dist';\n this.distGlobPatterns = options.distGlobPatterns || [`${this.distDir}/**`, `!${this.distDir}/tsconfig.tsbuildinfo`];\n this.shouldCopyNonSupportedFiles =\n typeof options.shouldCopyNonSupportedFiles === 'boolean' ? options.shouldCopyNonSupportedFiles : true;\n this.artifactName = options.artifactName || 'dist';\n this.options.tsconfig ||= {};\n this.options.tsconfig.compilerOptions ||= {};\n // mutate the outDir, otherwise, on capsules, the dists might be written to a different directory and make confusion\n this.options.tsconfig.compilerOptions.outDir = this.distDir;\n }\n\n displayName = 'TypeScript';\n deleteDistDir = false;\n\n displayConfig() {\n return this.stringifyTsconfig(this.options.tsconfig);\n }\n\n getDistDir() {\n return this.distDir;\n }\n\n /**\n * compile one file on the workspace\n */\n transpileFile(fileContent: string, options: TranspileFileParams): TranspileFileOutput {\n if (!this.isFileSupported(options.filePath)) {\n return null; // file is not supported\n }\n const compilerOptionsFromTsconfig = this.tsModule.convertCompilerOptionsFromJson(\n this.options.tsconfig.compilerOptions,\n '.'\n );\n if (compilerOptionsFromTsconfig.errors.length) {\n // :TODO @david replace to a more concrete error type and put in 'exceptions' directory here.\n const formattedErrors = this.tsModule.formatDiagnosticsWithColorAndContext(\n compilerOptionsFromTsconfig.errors,\n this.getFormatDiagnosticsHost()\n );\n throw new Error(`failed parsing the tsconfig.json.\\n${formattedErrors}`);\n }\n\n const compilerOptions = compilerOptionsFromTsconfig.options;\n compilerOptions.sourceRoot = options.componentDir;\n compilerOptions.rootDir = '.';\n const result = this.tsModule.transpileModule(fileContent, {\n compilerOptions,\n fileName: options.filePath,\n reportDiagnostics: true,\n });\n\n if (result.diagnostics && result.diagnostics.length) {\n const formatHost = this.getFormatDiagnosticsHost();\n const error = this.tsModule.formatDiagnosticsWithColorAndContext(result.diagnostics, formatHost);\n\n // :TODO @david please replace to a more concrete error type and put in 'exceptions' directory here.\n throw new Error(error);\n }\n\n const outputPath = this.replaceFileExtToJs(options.filePath);\n const outputFiles = [{ outputText: result.outputText, outputPath }];\n if (result.sourceMapText) {\n outputFiles.push({\n outputText: result.sourceMapText,\n outputPath: `${outputPath}.map`,\n });\n }\n return outputFiles;\n }\n\n async preBuild(context: BuildContext) {\n const capsules = context.capsuleNetwork.seedersCapsules;\n const capsuleDirs = capsules.map((capsule) => capsule.path);\n await this.writeTsConfig(capsuleDirs);\n await this.writeTypes(capsuleDirs);\n await this.writeNpmIgnore(capsuleDirs);\n }\n\n /**\n * compile multiple components on the capsules\n */\n async build(context: BuildContext): Promise<BuiltTaskResult> {\n const componentsResults = await this.runTscBuild(context.capsuleNetwork);\n\n return {\n artifacts: this.getArtifactDefinition(),\n componentsResults,\n };\n }\n\n async postBuild(context: BuildContext) {\n await Promise.all(\n context.capsuleNetwork.seedersCapsules.map(async (capsule) => {\n const packageJson = PackageJsonFile.loadFromCapsuleSync(capsule.path);\n // the types['index.ts'] is needed only during the build to avoid errors when tsc finds the\n // same type once in the d.ts and once in the ts file.\n if (packageJson.packageJsonObject.types) {\n delete packageJson.packageJsonObject.types;\n await packageJson.write();\n }\n })\n );\n }\n\n getArtifactDefinition() {\n return [\n {\n generatedBy: this.id,\n name: this.artifactName,\n globPatterns: this.distGlobPatterns,\n },\n ];\n }\n\n /**\n * given a source file, return its parallel in the dists. e.g. index.ts => dist/index.js\n */\n getDistPathBySrcPath(srcPath: string) {\n const fileWithJSExtIfNeeded = this.replaceFileExtToJs(srcPath);\n return path.join(this.distDir, fileWithJSExtIfNeeded);\n }\n\n /**\n * whether typescript is able to compile the given path\n */\n isFileSupported(filePath: string): boolean {\n const isJsAndCompile = !!this.options.compileJs && filePath.endsWith('.js');\n const isJsxAndCompile = !!this.options.compileJsx && filePath.endsWith('.jsx');\n return (\n (filePath.endsWith('.ts') || filePath.endsWith('.tsx') || isJsAndCompile || isJsxAndCompile) &&\n !filePath.endsWith('.d.ts')\n );\n }\n\n /**\n * we have two options here:\n * 1. pass all capsules-dir at the second parameter of createSolutionBuilder and then no\n * need to write the main tsconfig.json with all the references.\n * 2. write main tsconfig.json and pass the capsules root-dir.\n * we went with option #2 because it'll be easier for users to go to the capsule-root and run\n * `tsc --build` to debug issues.\n */\n private async runTscBuild(network: Network): Promise<ComponentResult[]> {\n const rootDir = network.capsulesRootDir;\n const capsules = await network.getCapsulesToCompile();\n if (!capsules.length) {\n return [];\n }\n const capsuleDirs = capsules.getAllCapsuleDirs();\n const formatHost = {\n getCanonicalFileName: (p) => p,\n getCurrentDirectory: () => '', // it helps to get the files with absolute paths\n getNewLine: () => this.tsModule.sys.newLine,\n };\n const componentsResults: ComponentResult[] = [];\n let currentComponentResult: Partial<ComponentResult> = { errors: [] };\n const reportDiagnostic = (diagnostic: ts.Diagnostic) => {\n const errorStr = process.stdout.isTTY\n ? this.tsModule.formatDiagnosticsWithColorAndContext([diagnostic], formatHost)\n : this.tsModule.formatDiagnostic(diagnostic, formatHost);\n if (!diagnostic.file) {\n // the error is general and not related to a specific file. e.g. tsconfig is missing.\n throw new BitError(errorStr);\n }\n this.logger.consoleFailure(errorStr);\n if (!currentComponentResult.component || !currentComponentResult.errors) {\n throw new Error(`currentComponentResult is not defined yet for ${diagnostic.file}`);\n }\n currentComponentResult.errors.push(errorStr);\n };\n // this only works when `verbose` is `true` in the `ts.createSolutionBuilder` function.\n const reportSolutionBuilderStatus = (diag: ts.Diagnostic) => {\n const msg = diag.messageText as string;\n this.logger.debug(msg);\n };\n const errorCounter = (errorCount: number) => {\n this.logger.info(`total error found: ${errorCount}`);\n };\n const host = this.tsModule.createSolutionBuilderHost(\n undefined,\n undefined,\n reportDiagnostic,\n reportSolutionBuilderStatus,\n errorCounter\n );\n await this.writeProjectReferencesTsConfig(rootDir, capsuleDirs);\n const solutionBuilder = this.tsModule.createSolutionBuilder(host, [rootDir], { verbose: true });\n let nextProject;\n const longProcessLogger = this.logger.createLongProcessLogger('compile typescript components', capsules.length);\n // eslint-disable-next-line no-cond-assign\n while ((nextProject = solutionBuilder.getNextInvalidatedProject())) {\n // regex to make sure it will work correctly for both linux and windows\n // it replaces both /tsconfig.json and \\tsocnfig.json\n const capsulePath = nextProject.project.replace(/[/\\\\]tsconfig.json/, '');\n const currentComponentId = capsules.getIdByPathInCapsule(capsulePath);\n if (!currentComponentId) throw new Error(`unable to find component for ${capsulePath}`);\n longProcessLogger.logProgress(currentComponentId.toString());\n const capsule = capsules.getCapsule(currentComponentId);\n if (!capsule) throw new Error(`unable to find capsule for ${currentComponentId.toString()}`);\n currentComponentResult.component = capsule.component;\n currentComponentResult.startTime = Date.now();\n nextProject.done();\n currentComponentResult.endTime = Date.now();\n componentsResults.push({ ...currentComponentResult } as ComponentResult);\n currentComponentResult = { errors: [] };\n }\n longProcessLogger.end();\n\n return componentsResults;\n }\n\n private getFormatDiagnosticsHost(): ts.FormatDiagnosticsHost {\n return {\n getCanonicalFileName: (p) => p,\n getCurrentDirectory: this.tsModule.sys.getCurrentDirectory,\n getNewLine: () => this.tsModule.sys.newLine,\n };\n }\n\n private async writeTypes(dirs: string[]) {\n await Promise.all(\n this.options.types.map(async (typePath) => {\n const contents = await fs.readFile(typePath, 'utf8');\n const filename = path.basename(typePath);\n\n await Promise.all(\n dirs.map(async (dir) => {\n const filePath = path.join(dir, 'types', filename);\n if (!(await fs.pathExists(filePath))) {\n await fs.outputFile(filePath, contents);\n }\n })\n );\n })\n );\n }\n\n /**\n * when using project-references, typescript adds a file \"tsconfig.tsbuildinfo\" which is not\n * needed for the package.\n */\n private async writeNpmIgnore(dirs: string[]) {\n const NPM_IGNORE_FILE = '.npmignore';\n await Promise.all(\n dirs.map(async (dir) => {\n const npmIgnorePath = path.join(dir, NPM_IGNORE_FILE);\n const npmIgnoreEntriesStr = `\\n${this.distDir}/tsconfig.tsbuildinfo\\n`;\n await fs.appendFile(npmIgnorePath, npmIgnoreEntriesStr);\n })\n );\n }\n\n private async writeProjectReferencesTsConfig(rootDir: string, projects: string[]) {\n const files = [];\n const references = projects.map((project) => ({ path: project }));\n const tsconfig = { files, references };\n const tsconfigStr = this.stringifyTsconfig(tsconfig);\n await fs.writeFile(path.join(rootDir, 'tsconfig.json'), tsconfigStr);\n }\n\n private async writeTsConfig(dirs: string[]) {\n const tsconfigStr = this.stringifyTsconfig(this.options.tsconfig);\n await Promise.all(dirs.map((dir) => fs.writeFile(path.join(dir, 'tsconfig.json'), tsconfigStr)));\n }\n\n private stringifyTsconfig(tsconfig) {\n return JSON.stringify(tsconfig, undefined, 2);\n }\n\n private replaceFileExtToJs(filePath: string): string {\n if (!this.isFileSupported(filePath)) return filePath;\n const fileExtension = path.extname(filePath);\n return filePath.replace(new RegExp(`${fileExtension}$`), '.js'); // makes sure it's the last occurrence\n }\n\n version() {\n return this.tsModule.version;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"names":["TypescriptCompiler","constructor","id","logger","options","tsModule","distDir","distGlobPatterns","shouldCopyNonSupportedFiles","artifactName","tsconfig","compilerOptions","outDir","displayConfig","stringifyTsconfig","getDistDir","transpileFile","fileContent","isFileSupported","filePath","compilerOptionsFromTsconfig","convertCompilerOptionsFromJson","errors","length","formattedErrors","formatDiagnosticsWithColorAndContext","getFormatDiagnosticsHost","Error","sourceRoot","componentDir","rootDir","result","transpileModule","fileName","reportDiagnostics","diagnostics","formatHost","error","outputPath","replaceFileExtToJs","outputFiles","outputText","sourceMapText","push","preBuild","context","capsules","capsuleNetwork","seedersCapsules","capsuleDirs","map","capsule","path","writeTsConfig","writeTypes","writeNpmIgnore","build","componentsResults","runTscBuild","artifacts","getArtifactDefinition","postBuild","Promise","all","packageJson","PackageJsonFile","loadFromCapsuleSync","packageJsonObject","types","write","generatedBy","name","globPatterns","getDistPathBySrcPath","srcPath","fileWithJSExtIfNeeded","join","isJsAndCompile","compileJs","endsWith","isJsxAndCompile","compileJsx","network","capsulesRootDir","getCapsulesToCompile","getAllCapsuleDirs","getCanonicalFileName","p","getCurrentDirectory","getNewLine","sys","newLine","currentComponentResult","reportDiagnostic","diagnostic","errorStr","process","stdout","isTTY","formatDiagnostic","file","BitError","consoleFailure","component","reportSolutionBuilderStatus","diag","msg","messageText","debug","errorCounter","errorCount","info","host","createSolutionBuilderHost","undefined","writeProjectReferencesTsConfig","solutionBuilder","createSolutionBuilder","verbose","nextProject","longProcessLogger","createLongProcessLogger","getNextInvalidatedProject","capsulePath","project","replace","currentComponentId","getIdByPathInCapsule","logProgress","toString","getCapsule","startTime","Date","now","done","endTime","end","dirs","typePath","contents","fs","readFile","filename","basename","dir","pathExists","outputFile","NPM_IGNORE_FILE","npmIgnorePath","npmIgnoreEntriesStr","appendFile","projects","files","references","tsconfigStr","writeFile","JSON","stringify","fileExtension","extname","RegExp","version"],"sources":["typescript.compiler.ts"],"sourcesContent":["import { BuildContext, BuiltTaskResult, ComponentResult } from '@teambit/builder';\nimport { Compiler, TranspileFileParams, TranspileFileOutput } from '@teambit/compiler';\nimport { Network } from '@teambit/isolator';\nimport { Logger } from '@teambit/logger';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport ts from 'typescript';\nimport { BitError } from '@teambit/bit-error';\nimport PackageJsonFile from '@teambit/legacy/dist/consumer/component/package-json-file';\nimport { TypeScriptCompilerOptions } from './compiler-options';\n\nexport class TypescriptCompiler implements Compiler {\n distDir: string;\n distGlobPatterns: string[];\n shouldCopyNonSupportedFiles: boolean;\n artifactName: string;\n constructor(\n readonly id: string,\n private logger: Logger,\n private options: TypeScriptCompilerOptions,\n private tsModule: typeof ts\n ) {\n this.distDir = options.distDir || 'dist';\n this.distGlobPatterns = options.distGlobPatterns || [`${this.distDir}/**`, `!${this.distDir}/tsconfig.tsbuildinfo`];\n this.shouldCopyNonSupportedFiles =\n typeof options.shouldCopyNonSupportedFiles === 'boolean' ? options.shouldCopyNonSupportedFiles : true;\n this.artifactName = options.artifactName || 'dist';\n this.options.tsconfig ||= {};\n this.options.tsconfig.compilerOptions ||= {};\n // mutate the outDir, otherwise, on capsules, the dists might be written to a different directory and make confusion\n this.options.tsconfig.compilerOptions.outDir = this.distDir;\n }\n\n displayName = 'TypeScript';\n deleteDistDir = false;\n\n displayConfig() {\n return this.stringifyTsconfig(this.options.tsconfig);\n }\n\n getDistDir() {\n return this.distDir;\n }\n\n /**\n * compile one file on the workspace\n */\n transpileFile(fileContent: string, options: TranspileFileParams): TranspileFileOutput {\n if (!this.isFileSupported(options.filePath)) {\n return null; // file is not supported\n }\n const compilerOptionsFromTsconfig = this.tsModule.convertCompilerOptionsFromJson(\n this.options.tsconfig.compilerOptions,\n '.'\n );\n if (compilerOptionsFromTsconfig.errors.length) {\n // :TODO @david replace to a more concrete error type and put in 'exceptions' directory here.\n const formattedErrors = this.tsModule.formatDiagnosticsWithColorAndContext(\n compilerOptionsFromTsconfig.errors,\n this.getFormatDiagnosticsHost()\n );\n throw new Error(`failed parsing the tsconfig.json.\\n${formattedErrors}`);\n }\n\n const compilerOptions = compilerOptionsFromTsconfig.options;\n compilerOptions.sourceRoot = options.componentDir;\n compilerOptions.rootDir = '.';\n const result = this.tsModule.transpileModule(fileContent, {\n compilerOptions,\n fileName: options.filePath,\n reportDiagnostics: true,\n });\n\n if (result.diagnostics && result.diagnostics.length) {\n const formatHost = this.getFormatDiagnosticsHost();\n const error = this.tsModule.formatDiagnosticsWithColorAndContext(result.diagnostics, formatHost);\n\n // :TODO @david please replace to a more concrete error type and put in 'exceptions' directory here.\n throw new Error(error);\n }\n\n const outputPath = this.replaceFileExtToJs(options.filePath);\n const outputFiles = [{ outputText: result.outputText, outputPath }];\n if (result.sourceMapText) {\n outputFiles.push({\n outputText: result.sourceMapText,\n outputPath: `${outputPath}.map`,\n });\n }\n return outputFiles;\n }\n\n async preBuild(context: BuildContext) {\n const capsules = context.capsuleNetwork.seedersCapsules;\n const capsuleDirs = capsules.map((capsule) => capsule.path);\n await this.writeTsConfig(capsuleDirs);\n await this.writeTypes(capsuleDirs);\n await this.writeNpmIgnore(capsuleDirs);\n }\n\n /**\n * compile multiple components on the capsules\n */\n async build(context: BuildContext): Promise<BuiltTaskResult> {\n const componentsResults = await this.runTscBuild(context.capsuleNetwork);\n\n return {\n artifacts: this.getArtifactDefinition(),\n componentsResults,\n };\n }\n\n async postBuild(context: BuildContext) {\n await Promise.all(\n context.capsuleNetwork.seedersCapsules.map(async (capsule) => {\n const packageJson = PackageJsonFile.loadFromCapsuleSync(capsule.path);\n // the types['index.ts'] is needed only during the build to avoid errors when tsc finds the\n // same type once in the d.ts and once in the ts file.\n if (packageJson.packageJsonObject.types) {\n delete packageJson.packageJsonObject.types;\n await packageJson.write();\n }\n })\n );\n }\n\n getArtifactDefinition() {\n return [\n {\n generatedBy: this.id,\n name: this.artifactName,\n globPatterns: this.distGlobPatterns,\n },\n ];\n }\n\n /**\n * given a source file, return its parallel in the dists. e.g. index.ts => dist/index.js\n */\n getDistPathBySrcPath(srcPath: string) {\n const fileWithJSExtIfNeeded = this.replaceFileExtToJs(srcPath);\n return path.join(this.distDir, fileWithJSExtIfNeeded);\n }\n\n /**\n * whether typescript is able to compile the given path\n */\n isFileSupported(filePath: string): boolean {\n const isJsAndCompile = !!this.options.compileJs && filePath.endsWith('.js');\n const isJsxAndCompile = !!this.options.compileJsx && filePath.endsWith('.jsx');\n return (\n (filePath.endsWith('.ts') || filePath.endsWith('.tsx') || isJsAndCompile || isJsxAndCompile) &&\n !filePath.endsWith('.d.ts')\n );\n }\n\n /**\n * we have two options here:\n * 1. pass all capsules-dir at the second parameter of createSolutionBuilder and then no\n * need to write the main tsconfig.json with all the references.\n * 2. write main tsconfig.json and pass the capsules root-dir.\n * we went with option #2 because it'll be easier for users to go to the capsule-root and run\n * `tsc --build` to debug issues.\n */\n private async runTscBuild(network: Network): Promise<ComponentResult[]> {\n const rootDir = network.capsulesRootDir;\n const capsules = await network.getCapsulesToCompile();\n if (!capsules.length) {\n return [];\n }\n const capsuleDirs = capsules.getAllCapsuleDirs();\n const formatHost = {\n getCanonicalFileName: (p) => p,\n getCurrentDirectory: () => '', // it helps to get the files with absolute paths\n getNewLine: () => this.tsModule.sys.newLine,\n };\n const componentsResults: ComponentResult[] = [];\n let currentComponentResult: Partial<ComponentResult> = { errors: [] };\n const reportDiagnostic = (diagnostic: ts.Diagnostic) => {\n const errorStr = process.stdout.isTTY\n ? this.tsModule.formatDiagnosticsWithColorAndContext([diagnostic], formatHost)\n : this.tsModule.formatDiagnostic(diagnostic, formatHost);\n if (!diagnostic.file) {\n // the error is general and not related to a specific file. e.g. tsconfig is missing.\n throw new BitError(errorStr);\n }\n this.logger.consoleFailure(errorStr);\n if (!currentComponentResult.component || !currentComponentResult.errors) {\n throw new Error(`currentComponentResult is not defined yet for ${diagnostic.file}`);\n }\n currentComponentResult.errors.push(errorStr);\n };\n // this only works when `verbose` is `true` in the `ts.createSolutionBuilder` function.\n const reportSolutionBuilderStatus = (diag: ts.Diagnostic) => {\n const msg = diag.messageText as string;\n this.logger.debug(msg);\n };\n const errorCounter = (errorCount: number) => {\n this.logger.info(`total error found: ${errorCount}`);\n };\n const host = this.tsModule.createSolutionBuilderHost(\n undefined,\n undefined,\n reportDiagnostic,\n reportSolutionBuilderStatus,\n errorCounter\n );\n await this.writeProjectReferencesTsConfig(rootDir, capsuleDirs);\n const solutionBuilder = this.tsModule.createSolutionBuilder(host, [rootDir], { verbose: true });\n let nextProject;\n const longProcessLogger = this.logger.createLongProcessLogger('compile typescript components', capsules.length);\n // eslint-disable-next-line no-cond-assign\n while ((nextProject = solutionBuilder.getNextInvalidatedProject())) {\n // regex to make sure it will work correctly for both linux and windows\n // it replaces both /tsconfig.json and \\tsocnfig.json\n const capsulePath = nextProject.project.replace(/[/\\\\]tsconfig.json/, '');\n const currentComponentId = capsules.getIdByPathInCapsule(capsulePath);\n if (!currentComponentId) throw new Error(`unable to find component for ${capsulePath}`);\n longProcessLogger.logProgress(currentComponentId.toString());\n const capsule = capsules.getCapsule(currentComponentId);\n if (!capsule) throw new Error(`unable to find capsule for ${currentComponentId.toString()}`);\n currentComponentResult.component = capsule.component;\n currentComponentResult.startTime = Date.now();\n nextProject.done();\n currentComponentResult.endTime = Date.now();\n componentsResults.push({ ...currentComponentResult } as ComponentResult);\n currentComponentResult = { errors: [] };\n }\n longProcessLogger.end();\n\n return componentsResults;\n }\n\n private getFormatDiagnosticsHost(): ts.FormatDiagnosticsHost {\n return {\n getCanonicalFileName: (p) => p,\n getCurrentDirectory: this.tsModule.sys.getCurrentDirectory,\n getNewLine: () => this.tsModule.sys.newLine,\n };\n }\n\n private async writeTypes(dirs: string[]) {\n await Promise.all(\n this.options.types.map(async (typePath) => {\n const contents = await fs.readFile(typePath, 'utf8');\n const filename = path.basename(typePath);\n\n await Promise.all(\n dirs.map(async (dir) => {\n const filePath = path.join(dir, 'types', filename);\n if (!(await fs.pathExists(filePath))) {\n await fs.outputFile(filePath, contents);\n }\n })\n );\n })\n );\n }\n\n /**\n * when using project-references, typescript adds a file \"tsconfig.tsbuildinfo\" which is not\n * needed for the package.\n */\n private async writeNpmIgnore(dirs: string[]) {\n const NPM_IGNORE_FILE = '.npmignore';\n await Promise.all(\n dirs.map(async (dir) => {\n const npmIgnorePath = path.join(dir, NPM_IGNORE_FILE);\n const npmIgnoreEntriesStr = `\\n${this.distDir}/tsconfig.tsbuildinfo\\n`;\n await fs.appendFile(npmIgnorePath, npmIgnoreEntriesStr);\n })\n );\n }\n\n private async writeProjectReferencesTsConfig(rootDir: string, projects: string[]) {\n const files = [];\n const references = projects.map((project) => ({ path: project }));\n const tsconfig = { files, references };\n const tsconfigStr = this.stringifyTsconfig(tsconfig);\n await fs.writeFile(path.join(rootDir, 'tsconfig.json'), tsconfigStr);\n }\n\n private async writeTsConfig(dirs: string[]) {\n const tsconfigStr = this.stringifyTsconfig(this.options.tsconfig);\n await Promise.all(dirs.map((dir) => fs.writeFile(path.join(dir, 'tsconfig.json'), tsconfigStr)));\n }\n\n private stringifyTsconfig(tsconfig) {\n return JSON.stringify(tsconfig, undefined, 2);\n }\n\n private replaceFileExtToJs(filePath: string): string {\n if (!this.isFileSupported(filePath)) return filePath;\n const fileExtension = path.extname(filePath);\n return filePath.replace(new RegExp(`${fileExtension}$`), '.js'); // makes sure it's the last occurrence\n }\n\n version() {\n return this.tsModule.version;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["defaultOpts","tsconfig","types","describe","it","tsCompiler","getTsCompiler","expect","getDistPathBySrcPath","to","equal","path","join","isFileSupported","be","true","false","compileJsx","compileJs","opts","finalOpts","Object","assign","TypescriptCompiler","TypescriptAspect","id","Logger","ts"],"sources":["typescript.compiler.spec.ts"],"sourcesContent":["import { Logger } from '@teambit/logger';\nimport ts from 'typescript';\nimport { expect } from 'chai';\nimport path from 'path';\nimport { TypescriptAspect } from './typescript.aspect';\n\nimport { TypescriptCompiler } from './typescript.compiler';\nimport type { TsCompilerOptionsWithoutTsConfig } from './compiler-options';\n\nconst defaultOpts = {\n tsconfig: {},\n types: [],\n};\n\ndescribe('TypescriptCompiler', () => {\n describe('getDistPathBySrcPath', () => {\n it('should replace the extension with .js and prepend the dist dir', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.getDistPathBySrcPath('index.ts')).to.equal(path.join('dist', 'index.js'));\n expect(tsCompiler.getDistPathBySrcPath('index.tsx')).to.equal(path.join('dist', 'index.js'));\n });\n it('should not replace the extension if the file is not supported', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.getDistPathBySrcPath('style.css')).to.equal(path.join('dist', 'style.css'));\n expect(tsCompiler.getDistPathBySrcPath('index.d.ts')).to.equal(path.join('dist', 'index.d.ts'));\n });\n });\n describe('isFileSupported', () => {\n it('should support .ts files', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.isFileSupported('index.ts')).to.be.true;\n });\n it('should support .tsx files', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.isFileSupported('index.tsx')).to.be.true;\n });\n it('should not support .jsx files by default', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.isFileSupported('index.jsx')).to.be.false;\n });\n it('should not support .js files by default', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.isFileSupported('index.js')).to.be.false;\n });\n it('should support .jsx files when passing compileJsx', () => {\n const tsCompiler = getTsCompiler({ compileJsx: true, ...defaultOpts });\n expect(tsCompiler.isFileSupported('index.jsx')).to.be.true;\n });\n it('should support .js files when passing compileJs', () => {\n const tsCompiler = getTsCompiler({ compileJs: true, ...defaultOpts });\n expect(tsCompiler.isFileSupported('index.js')).to.be.true;\n });\n it('should not support .d.ts files', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.isFileSupported('index.d.ts')).to.be.false;\n });\n });\n});\n\nfunction getTsCompiler(opts: TsCompilerOptionsWithoutTsConfig = defaultOpts) {\n const finalOpts = Object.assign({}, defaultOpts, opts);\n return new TypescriptCompiler(TypescriptAspect.id, new Logger('test'), finalOpts, ts);\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["Logo","height","display","justifyContent","width"],"sources":["typescript.composition.tsx"],"sourcesContent":["import React from 'react';\n\nexport const Logo = () => (\n <div style={{ height: '100%', display: 'flex', justifyContent: 'center' }}>\n <img style={{ width: 70 }} src=\"https://static.bit.dev/brands/logo-typescript.svg\" />\n </div>\n);\n"],"mappings":";;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEO,MAAMA,IAAI,GAAG,mBAClB;EAAK,KAAK,EAAE;IAAEC,MAAM,EAAE,MAAV;IAAkBC,OAAO,EAAE,MAA3B;IAAmCC,cAAc,EAAE;EAAnD;AAAZ,gBACE;EAAK,KAAK,EAAE;IAAEC,KAAK,EAAE;EAAT,CAAZ;EAA2B,GAAG,EAAC;AAA/B,EADF,CADK"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import ts, { Node } from 'typescript';
|
|
2
2
|
import { SchemaExtractor } from '@teambit/schema';
|
|
3
|
+
import type { Workspace } from '@teambit/workspace';
|
|
4
|
+
import { DependencyResolverMain } from '@teambit/dependency-resolver';
|
|
3
5
|
import { SchemaNode, APISchema } from '@teambit/semantics.entities.semantic-schema';
|
|
4
6
|
import { Component } from '@teambit/component';
|
|
5
7
|
import { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';
|
|
@@ -10,7 +12,9 @@ export declare class TypeScriptExtractor implements SchemaExtractor {
|
|
|
10
12
|
private schemaTransformerSlot;
|
|
11
13
|
private tsMain;
|
|
12
14
|
private rootPath;
|
|
13
|
-
|
|
15
|
+
private depResolver;
|
|
16
|
+
private workspace;
|
|
17
|
+
constructor(tsconfig: any, schemaTransformerSlot: SchemaTransformerSlot, tsMain: TypescriptMain, rootPath: string, depResolver: DependencyResolverMain, workspace: Workspace | undefined);
|
|
14
18
|
parseSourceFile(file: AbstractVinyl): ts.SourceFile;
|
|
15
19
|
/**
|
|
16
20
|
* extract a component schema.
|
|
@@ -18,9 +22,11 @@ export declare class TypeScriptExtractor implements SchemaExtractor {
|
|
|
18
22
|
extract(component: Component): Promise<APISchema>;
|
|
19
23
|
computeExportedIdentifiers(node: Node, context: SchemaExtractorContext): Promise<import("./export-identifier").ExportIdentifier[]>;
|
|
20
24
|
private createContext;
|
|
25
|
+
private getComponentDeps;
|
|
21
26
|
private tsserver;
|
|
22
27
|
private getTsServer;
|
|
23
28
|
computeSchema(node: Node, context: SchemaExtractorContext): Promise<SchemaNode>;
|
|
29
|
+
getComponentIDByPath(file: string): Promise<import("@teambit/component").ComponentID | null | undefined>;
|
|
24
30
|
/**
|
|
25
31
|
* select the correct transformer for a node.
|
|
26
32
|
*/
|
|
@@ -82,11 +82,13 @@ function _exportList() {
|
|
|
82
82
|
}
|
|
83
83
|
|
|
84
84
|
class TypeScriptExtractor {
|
|
85
|
-
constructor(tsconfig, schemaTransformerSlot, tsMain, rootPath) {
|
|
85
|
+
constructor(tsconfig, schemaTransformerSlot, tsMain, rootPath, depResolver, workspace) {
|
|
86
86
|
this.tsconfig = tsconfig;
|
|
87
87
|
this.schemaTransformerSlot = schemaTransformerSlot;
|
|
88
88
|
this.tsMain = tsMain;
|
|
89
89
|
this.rootPath = rootPath;
|
|
90
|
+
this.depResolver = depResolver;
|
|
91
|
+
this.workspace = workspace;
|
|
90
92
|
(0, _defineProperty2().default)(this, "tsserver", undefined);
|
|
91
93
|
}
|
|
92
94
|
|
|
@@ -102,7 +104,7 @@ class TypeScriptExtractor {
|
|
|
102
104
|
const tsserver = await this.getTsServer();
|
|
103
105
|
const mainFile = component.mainFile;
|
|
104
106
|
const mainAst = this.parseSourceFile(mainFile);
|
|
105
|
-
const context = this.createContext(tsserver, component);
|
|
107
|
+
const context = await this.createContext(tsserver, component);
|
|
106
108
|
const exportNames = await this.computeExportedIdentifiers(mainAst, context);
|
|
107
109
|
context.setExports(new (_exportList().ExportList)(exportNames));
|
|
108
110
|
const moduleSchema = await this.computeSchema(mainAst, context);
|
|
@@ -113,13 +115,24 @@ class TypeScriptExtractor {
|
|
|
113
115
|
}
|
|
114
116
|
|
|
115
117
|
async computeExportedIdentifiers(node, context) {
|
|
116
|
-
const transformer = this.getTransformer(node, context
|
|
117
|
-
|
|
118
|
+
const transformer = this.getTransformer(node, context);
|
|
119
|
+
|
|
120
|
+
if (!transformer || !transformer.getIdentifiers) {
|
|
121
|
+
throw new (_exceptions().TransformerNotFound)(node, context.component, context.getLocation(node));
|
|
122
|
+
}
|
|
123
|
+
|
|
118
124
|
return transformer.getIdentifiers(node, context);
|
|
119
125
|
}
|
|
120
126
|
|
|
121
|
-
createContext(tsserver, component) {
|
|
122
|
-
|
|
127
|
+
async createContext(tsserver, component) {
|
|
128
|
+
const componentDeps = await this.getComponentDeps(component);
|
|
129
|
+
return new (_schemaExtractorContext().SchemaExtractorContext)(tsserver, component, this, componentDeps);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
async getComponentDeps(component) {
|
|
133
|
+
const deps = await this.depResolver.getDependencies(component);
|
|
134
|
+
const componentDeps = deps.getComponentDependencies();
|
|
135
|
+
return componentDeps;
|
|
123
136
|
}
|
|
124
137
|
|
|
125
138
|
async getTsServer() {
|
|
@@ -139,20 +152,28 @@ class TypeScriptExtractor {
|
|
|
139
152
|
}
|
|
140
153
|
|
|
141
154
|
async computeSchema(node, context) {
|
|
142
|
-
const transformer = this.getTransformer(node, context
|
|
155
|
+
const transformer = this.getTransformer(node, context); // leave the next line commented out, it is used for debugging
|
|
143
156
|
// console.log('transformer', transformer.constructor.name, node.getText());
|
|
144
157
|
|
|
145
158
|
return transformer.transform(node, context);
|
|
146
159
|
}
|
|
160
|
+
|
|
161
|
+
async getComponentIDByPath(file) {
|
|
162
|
+
if (!this.workspace) {
|
|
163
|
+
return null;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
return this.workspace.getComponentIdByPath(file);
|
|
167
|
+
}
|
|
147
168
|
/**
|
|
148
169
|
* select the correct transformer for a node.
|
|
149
170
|
*/
|
|
150
171
|
|
|
151
172
|
|
|
152
|
-
getTransformer(node,
|
|
173
|
+
getTransformer(node, context) {
|
|
153
174
|
const transformers = (0, _lodash().flatten)(this.schemaTransformerSlot.values());
|
|
154
175
|
const transformer = transformers.find(singleTransformer => singleTransformer.predicate(node));
|
|
155
|
-
if (!transformer) throw new (_exceptions().TransformerNotFound)(node, component);
|
|
176
|
+
if (!transformer) throw new (_exceptions().TransformerNotFound)(node, context.component, context.getLocation(node));
|
|
156
177
|
return transformer;
|
|
157
178
|
}
|
|
158
179
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["TypeScriptExtractor","constructor","tsconfig","schemaTransformerSlot","tsMain","rootPath","depResolver","workspace","undefined","parseSourceFile","file","ts","createSourceFile","path","contents","toString","ScriptTarget","Latest","compilerOptions","extract","component","tsserver","getTsServer","mainFile","mainAst","context","createContext","exportNames","computeExportedIdentifiers","setExports","ExportList","moduleSchema","computeSchema","flatExportsRecursively","apiScheme","location","getLocation","APISchema","node","transformer","getTransformer","getIdentifiers","TransformerNotFound","componentDeps","getComponentDeps","SchemaExtractorContext","deps","getDependencies","getComponentDependencies","getTsserverClient","initTsserverClient","transform","getComponentIDByPath","getComponentIdByPath","transformers","flatten","values","find","singleTransformer","predicate"],"sources":["typescript.extractor.ts"],"sourcesContent":["import ts, { Node } from 'typescript';\nimport { SchemaExtractor } from '@teambit/schema';\nimport { TsserverClient } from '@teambit/ts-server';\nimport type { Workspace } from '@teambit/workspace';\nimport { ComponentDependency, DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { SchemaNode, APISchema, Module } from '@teambit/semantics.entities.semantic-schema';\nimport { Component } from '@teambit/component';\nimport { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\nimport { flatten } from 'lodash';\nimport { TypescriptMain, SchemaTransformerSlot } from './typescript.main.runtime';\nimport { TransformerNotFound } from './exceptions';\nimport { SchemaExtractorContext } from './schema-extractor-context';\nimport { ExportList } from './export-list';\n\nexport class TypeScriptExtractor implements SchemaExtractor {\n constructor(\n private tsconfig: any,\n private schemaTransformerSlot: SchemaTransformerSlot,\n private tsMain: TypescriptMain,\n private rootPath: string,\n private depResolver: DependencyResolverMain,\n private workspace: Workspace | undefined\n ) {}\n\n parseSourceFile(file: AbstractVinyl) {\n return ts.createSourceFile(\n file.path,\n file.contents.toString('utf8'),\n ts.ScriptTarget.Latest,\n true,\n this.tsconfig.compilerOptions\n );\n }\n\n /**\n * extract a component schema.\n */\n async extract(component: Component): Promise<APISchema> {\n const tsserver = await this.getTsServer();\n const mainFile = component.mainFile;\n const mainAst = this.parseSourceFile(mainFile);\n const context = await this.createContext(tsserver, component);\n const exportNames = await this.computeExportedIdentifiers(mainAst, context);\n context.setExports(new ExportList(exportNames));\n const moduleSchema = (await this.computeSchema(mainAst, context)) as Module;\n moduleSchema.flatExportsRecursively();\n const apiScheme = moduleSchema;\n const location = context.getLocation(mainAst);\n\n return new APISchema(location, apiScheme);\n }\n\n async computeExportedIdentifiers(node: Node, context: SchemaExtractorContext) {\n const transformer = this.getTransformer(node, context);\n if (!transformer || !transformer.getIdentifiers) {\n throw new TransformerNotFound(node, context.component, context.getLocation(node));\n }\n return transformer.getIdentifiers(node, context);\n }\n\n private async createContext(tsserver: TsserverClient, component: Component): Promise<SchemaExtractorContext> {\n const componentDeps = await this.getComponentDeps(component);\n return new SchemaExtractorContext(tsserver, component, this, componentDeps);\n }\n\n private async getComponentDeps(component: Component): Promise<ComponentDependency[]> {\n const deps = await this.depResolver.getDependencies(component);\n const componentDeps = deps.getComponentDependencies();\n return componentDeps;\n }\n\n private tsserver: TsserverClient | undefined = undefined;\n\n private async getTsServer() {\n if (!this.tsserver) {\n const tsserver = this.tsMain.getTsserverClient();\n if (tsserver) {\n this.tsserver = tsserver;\n return tsserver;\n }\n\n this.tsserver = await this.tsMain.initTsserverClient(this.rootPath);\n return this.tsserver;\n }\n\n return this.tsserver;\n }\n\n async computeSchema(node: Node, context: SchemaExtractorContext): Promise<SchemaNode> {\n const transformer = this.getTransformer(node, context);\n // leave the next line commented out, it is used for debugging\n // console.log('transformer', transformer.constructor.name, node.getText());\n return transformer.transform(node, context);\n }\n\n async getComponentIDByPath(file: string) {\n if (!this.workspace) {\n return null;\n }\n return this.workspace.getComponentIdByPath(file);\n }\n\n /**\n * select the correct transformer for a node.\n */\n private getTransformer(node: Node, context: SchemaExtractorContext) {\n const transformers = flatten(this.schemaTransformerSlot.values());\n const transformer = transformers.find((singleTransformer) => singleTransformer.predicate(node));\n\n if (!transformer) throw new TransformerNotFound(node, context.component, context.getLocation(node));\n\n return transformer;\n }\n}\n"],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ import { SchemaExtractor, SchemaMain } from '@teambit/schema';
|
|
|
7
7
|
import { PackageJsonProps } from '@teambit/pkg';
|
|
8
8
|
import { TypescriptConfigMutator } from '@teambit/typescript.modules.ts-config-mutator';
|
|
9
9
|
import type { Workspace } from '@teambit/workspace';
|
|
10
|
+
import { DependencyResolverMain } from '@teambit/dependency-resolver';
|
|
10
11
|
import { TsserverClient, TsserverClientOpts } from '@teambit/ts-server';
|
|
11
12
|
import { AspectLoaderMain } from '@teambit/aspect-loader';
|
|
12
13
|
import type { Component } from '@teambit/component';
|
|
@@ -20,7 +21,8 @@ export declare class TypescriptMain {
|
|
|
20
21
|
private logger;
|
|
21
22
|
private schemaTransformerSlot;
|
|
22
23
|
private workspace;
|
|
23
|
-
|
|
24
|
+
private depResolver;
|
|
25
|
+
constructor(logger: Logger, schemaTransformerSlot: SchemaTransformerSlot, workspace: Workspace, depResolver: DependencyResolverMain);
|
|
24
26
|
private tsServer;
|
|
25
27
|
/**
|
|
26
28
|
* create a new compiler.
|
|
@@ -91,6 +93,13 @@ export declare class TypescriptMain {
|
|
|
91
93
|
static runtime: import("@teambit/harmony").RuntimeDefinition;
|
|
92
94
|
static dependencies: import("@teambit/harmony").Aspect[];
|
|
93
95
|
static slots: ((registerFn: () => string) => SlotRegistry<SchemaTransformer[]>)[];
|
|
94
|
-
static provider([schema, loggerExt, aspectLoader, workspace, cli
|
|
96
|
+
static provider([schema, loggerExt, aspectLoader, workspace, cli, depResolver]: [
|
|
97
|
+
SchemaMain,
|
|
98
|
+
LoggerMain,
|
|
99
|
+
AspectLoaderMain,
|
|
100
|
+
Workspace,
|
|
101
|
+
CLIMain,
|
|
102
|
+
DependencyResolverMain
|
|
103
|
+
], config: any, [schemaTransformerSlot]: [SchemaTransformerSlot]): Promise<TypescriptMain>;
|
|
95
104
|
}
|
|
96
105
|
export declare function runTransformersWithContext(config: TypescriptConfigMutator, transformers: TsConfigTransformer[] | undefined, context: TsConfigTransformContext): TypescriptConfigMutator;
|
|
@@ -96,6 +96,16 @@ function _workspace() {
|
|
|
96
96
|
return data;
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
+
function _dependencyResolver() {
|
|
100
|
+
const data = require("@teambit/dependency-resolver");
|
|
101
|
+
|
|
102
|
+
_dependencyResolver = function () {
|
|
103
|
+
return data;
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
return data;
|
|
107
|
+
}
|
|
108
|
+
|
|
99
109
|
function _pMapSeries() {
|
|
100
110
|
const data = _interopRequireDefault(require("p-map-series"));
|
|
101
111
|
|
|
@@ -197,10 +207,11 @@ function _checkTypes() {
|
|
|
197
207
|
}
|
|
198
208
|
|
|
199
209
|
class TypescriptMain {
|
|
200
|
-
constructor(logger, schemaTransformerSlot, workspace) {
|
|
210
|
+
constructor(logger, schemaTransformerSlot, workspace, depResolver) {
|
|
201
211
|
this.logger = logger;
|
|
202
212
|
this.schemaTransformerSlot = schemaTransformerSlot;
|
|
203
213
|
this.workspace = workspace;
|
|
214
|
+
this.depResolver = depResolver;
|
|
204
215
|
(0, _defineProperty2().default)(this, "tsServer", void 0);
|
|
205
216
|
}
|
|
206
217
|
|
|
@@ -308,7 +319,7 @@ class TypescriptMain {
|
|
|
308
319
|
|
|
309
320
|
|
|
310
321
|
createSchemaExtractor(tsconfig, path) {
|
|
311
|
-
return new (_typescript2().TypeScriptExtractor)(tsconfig, this.schemaTransformerSlot, this, path || this.workspace.path);
|
|
322
|
+
return new (_typescript2().TypeScriptExtractor)(tsconfig, this.schemaTransformerSlot, this, path || this.workspace.path, this.depResolver, this.workspace);
|
|
312
323
|
}
|
|
313
324
|
/**
|
|
314
325
|
* add the default package json properties to the component
|
|
@@ -375,12 +386,12 @@ class TypescriptMain {
|
|
|
375
386
|
};
|
|
376
387
|
}
|
|
377
388
|
|
|
378
|
-
static async provider([schema, loggerExt, aspectLoader, workspace, cli], config, [schemaTransformerSlot]) {
|
|
389
|
+
static async provider([schema, loggerExt, aspectLoader, workspace, cli, depResolver], config, [schemaTransformerSlot]) {
|
|
379
390
|
schema.registerParser(new (_typescript5().TypeScriptParser)());
|
|
380
391
|
const logger = loggerExt.createLogger(_typescript3().TypescriptAspect.id);
|
|
381
392
|
aspectLoader.registerPlugins([new (_schemaTransformer().SchemaTransformerPlugin)(schemaTransformerSlot)]);
|
|
382
|
-
const tsMain = new TypescriptMain(logger, schemaTransformerSlot, workspace);
|
|
383
|
-
schemaTransformerSlot.register([new (_transformers().ExportDeclaration)(), new (_transformers().FunctionDeclaration)(), new (_transformers().MethodDeclaration)(), new (_transformers().PropertyDeclaration)(), new (_transformers().VariableStatementTransformer)(), new (_transformers().VariableDeclaration)(), new (_transformers().Constructor)(), new (_transformers().SourceFileTransformer)(), new (_transformers().TypeAliasTransformer)(), new (_transformers().ClassDecelerationTransformer)(), new (_transformers().PropertySignature)(), new (_transformers().LiteralTypeTransformer)(), new (_transformers().IndexSignature)(), new (_transformers().InterfaceDeclarationTransformer)(), new (_transformers().MethodSignatureTransformer)()]);
|
|
393
|
+
const tsMain = new TypescriptMain(logger, schemaTransformerSlot, workspace, depResolver);
|
|
394
|
+
schemaTransformerSlot.register([new (_transformers().ExportDeclaration)(), new (_transformers().FunctionDeclaration)(), new (_transformers().MethodDeclaration)(), new (_transformers().PropertyDeclaration)(), new (_transformers().VariableStatementTransformer)(), new (_transformers().VariableDeclaration)(), new (_transformers().Constructor)(), new (_transformers().SourceFileTransformer)(), new (_transformers().TypeAliasTransformer)(), new (_transformers().ClassDecelerationTransformer)(), new (_transformers().PropertySignature)(), new (_transformers().LiteralTypeTransformer)(), new (_transformers().IndexSignature)(), new (_transformers().InterfaceDeclarationTransformer)(), new (_transformers().MethodSignatureTransformer)(), new (_transformers().EnumDeclarationTransformer)()]);
|
|
384
395
|
|
|
385
396
|
if (workspace) {
|
|
386
397
|
workspace.registerOnPreWatch(tsMain.onPreWatch.bind(this));
|
|
@@ -397,7 +408,7 @@ class TypescriptMain {
|
|
|
397
408
|
|
|
398
409
|
exports.TypescriptMain = TypescriptMain;
|
|
399
410
|
(0, _defineProperty2().default)(TypescriptMain, "runtime", _cli().MainRuntime);
|
|
400
|
-
(0, _defineProperty2().default)(TypescriptMain, "dependencies", [_schema().SchemaAspect, _logger().LoggerAspect, _aspectLoader().default, _workspace().WorkspaceAspect, _cli().CLIAspect]);
|
|
411
|
+
(0, _defineProperty2().default)(TypescriptMain, "dependencies", [_schema().SchemaAspect, _logger().LoggerAspect, _aspectLoader().default, _workspace().WorkspaceAspect, _cli().CLIAspect, _dependencyResolver().DependencyResolverAspect]);
|
|
401
412
|
(0, _defineProperty2().default)(TypescriptMain, "slots", [_harmony().Slot.withType()]);
|
|
402
413
|
|
|
403
414
|
_typescript3().TypescriptAspect.addRuntime(TypescriptMain);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["typescript.main.runtime.ts"],"names":["TypescriptMain","constructor","logger","schemaTransformerSlot","workspace","createCompiler","options","transformers","tsModule","ts","configMutator","TypescriptConfigMutator","transformerContext","afterMutation","runTransformersWithContext","clone","TypescriptCompiler","TypescriptAspect","id","raw","getTsserverClient","tsServer","initTsserverClient","projectPath","files","TsserverClient","init","initTsserverClientFromWorkspace","Error","path","createCjsCompiler","getCjsTransformer","createEsmCompiler","getEsmTransformer","cjsTransformer","config","setModule","esmTransformer","createSchemaExtractor","tsconfig","TypeScriptExtractor","getCjsPackageJsonProps","main","types","getEsmPackageJsonProps","type","getSupportedFilesForTsserver","components","map","c","filesystem","flat","f","filter","endsWith","onPreWatch","watchOpts","spawnTSServer","verbose","checkTypes","printTypeErrors","Boolean","onComponentChange","component","results","file","onFileChange","provider","schema","loggerExt","aspectLoader","cli","registerParser","TypeScriptParser","createLogger","registerPlugins","SchemaTransformerPlugin","tsMain","register","ExportDeclaration","FunctionDeclaration","MethodDeclaration","PropertyDeclaration","VariableStatementTransformer","VariableDeclaration","Constructor","SourceFileTransformer","TypeAliasTransformer","ClassDecelerationTransformer","PropertySignature","LiteralTypeTransformer","IndexSignature","InterfaceDeclarationTransformer","MethodSignatureTransformer","registerOnPreWatch","bind","registerOnComponentChange","registerOnComponentAdd","checkTypesCmd","CheckTypesCmd","MainRuntime","SchemaAspect","LoggerAspect","AspectLoaderAspect","WorkspaceAspect","CLIAspect","Slot","withType","addRuntime","context","Array","isArray","newConfig","reduce","acc","transformer"],"mappings":"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","sourcesContent":["import ts from 'typescript';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { Compiler } from '@teambit/compiler';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { SchemaAspect, SchemaExtractor, SchemaMain } from '@teambit/schema';\nimport { PackageJsonProps } from '@teambit/pkg';\nimport { TypescriptConfigMutator } from '@teambit/typescript.modules.ts-config-mutator';\nimport { WorkspaceAspect } from '@teambit/workspace';\nimport type { WatchOptions, Workspace } from '@teambit/workspace';\nimport pMapSeries from 'p-map-series';\nimport { TsserverClient, TsserverClientOpts } from '@teambit/ts-server';\nimport AspectLoaderAspect, { AspectLoaderMain } from '@teambit/aspect-loader';\nimport type { Component } from '@teambit/component';\nimport { TypeScriptExtractor } from './typescript.extractor';\nimport { TypeScriptCompilerOptions } from './compiler-options';\nimport { TypescriptAspect } from './typescript.aspect';\nimport { TypescriptCompiler } from './typescript.compiler';\nimport { TypeScriptParser } from './typescript.parser';\nimport { SchemaTransformer } from './schema-transformer';\nimport { SchemaTransformerPlugin } from './schema-transformer.plugin';\nimport {\n ExportDeclaration,\n TypeAliasTransformer,\n FunctionDeclaration,\n MethodDeclaration,\n PropertyDeclaration,\n VariableStatementTransformer,\n VariableDeclaration,\n SourceFileTransformer,\n ClassDecelerationTransformer,\n Constructor,\n PropertySignature,\n LiteralTypeTransformer,\n IndexSignature,\n InterfaceDeclarationTransformer,\n MethodSignatureTransformer,\n} from './transformers';\nimport { CheckTypesCmd } from './cmds/check-types.cmd';\n\nexport type TsMode = 'build' | 'dev';\n\nexport type SchemaTransformerSlot = SlotRegistry<SchemaTransformer[]>;\n\nexport type TsConfigTransformContext = {\n // mode: TsMode;\n};\n\nexport type TsConfigTransformer = (\n config: TypescriptConfigMutator,\n context: TsConfigTransformContext\n) => TypescriptConfigMutator;\n\nexport class TypescriptMain {\n constructor(\n private logger: Logger,\n private schemaTransformerSlot: SchemaTransformerSlot,\n private workspace: Workspace\n ) {}\n\n private tsServer: TsserverClient;\n /**\n * create a new compiler.\n */\n createCompiler(\n options: TypeScriptCompilerOptions,\n transformers: TsConfigTransformer[] = [],\n tsModule = ts\n ): Compiler {\n const configMutator = new TypescriptConfigMutator(options);\n const transformerContext: TsConfigTransformContext = {};\n const afterMutation = runTransformersWithContext(configMutator.clone(), transformers, transformerContext);\n return new TypescriptCompiler(TypescriptAspect.id, this.logger, afterMutation.raw, tsModule);\n }\n\n /**\n * get TsserverClient instance if initiated already, otherwise, return undefined.\n */\n getTsserverClient(): TsserverClient | undefined {\n return this.tsServer;\n }\n\n /**\n * starts a tsserver process to communicate with its API.\n * @param projectPath absolute path of the project root directory\n * @param options TsserverClientOpts\n * @param files optionally, if check-types is enabled, provide files to open and type check.\n * @returns TsserverClient\n */\n async initTsserverClient(\n projectPath: string,\n options: TsserverClientOpts = {},\n files: string[] = []\n ): Promise<TsserverClient> {\n this.tsServer = new TsserverClient(projectPath, this.logger, options, files);\n this.tsServer.init();\n return this.tsServer;\n }\n\n /**\n * starts a tsserver process to communicate with its API. use only when running on the workspace.\n * @param options TsserverClientOpts\n * @param files optionally, if check-types is enabled, provide files to open and type check.\n * @returns TsserverClient\n */\n async initTsserverClientFromWorkspace(\n options: TsserverClientOpts = {},\n files: string[] = []\n ): Promise<TsserverClient> {\n if (!this.workspace) {\n throw new Error(`initTsserverClientFromWorkspace: workspace was not found`);\n }\n return this.initTsserverClient(this.workspace.path, options, files);\n }\n\n /**\n * Create a compiler instance and run the cjs transformer for it\n * @param options\n * @param transformers\n * @param tsModule\n * @returns\n */\n createCjsCompiler(options: TypeScriptCompilerOptions, transformers: TsConfigTransformer[] = [], tsModule = ts) {\n return this.createCompiler(options, [this.getCjsTransformer(), ...transformers], tsModule);\n }\n\n /**\n * Create a compiler instance and run the esm transformer for it\n * @param options\n * @param transformers\n * @param tsModule\n * @returns\n */\n createEsmCompiler(options: TypeScriptCompilerOptions, transformers: TsConfigTransformer[] = [], tsModule = ts) {\n return this.createCompiler(options, [this.getEsmTransformer(), ...transformers], tsModule);\n }\n\n /**\n * Create a transformer that change the ts module to CommonJS\n * @returns\n */\n getCjsTransformer(): TsConfigTransformer {\n const cjsTransformer = (config: TypescriptConfigMutator) => {\n config.setModule('CommonJS');\n return config;\n };\n return cjsTransformer;\n }\n\n /**\n * Create a transformer that change the ts module to ES2020\n * @returns\n */\n getEsmTransformer(): TsConfigTransformer {\n const esmTransformer = (config: TypescriptConfigMutator) => {\n config.setModule('ES2020');\n return config;\n };\n return esmTransformer;\n }\n\n /**\n * create an instance of a typescript semantic schema extractor.\n */\n createSchemaExtractor(tsconfig: any, path?: string): SchemaExtractor {\n return new TypeScriptExtractor(tsconfig, this.schemaTransformerSlot, this, path || this.workspace.path);\n }\n\n /**\n * add the default package json properties to the component\n * :TODO @gilad why do we need this DSL? can't I just get the args here.\n */\n getCjsPackageJsonProps(): PackageJsonProps {\n return {\n main: 'dist/{main}.js',\n types: '{main}.ts',\n };\n }\n\n /**\n * add type: module to the package.json props and the default props\n * :TODO @gilad why do we need this DSL? can't I just get the args here.\n */\n getEsmPackageJsonProps(): PackageJsonProps {\n return {\n // main: 'dist-esm/{main}.js',\n main: 'dist/{main}.js',\n type: 'module',\n types: '{main}.ts',\n };\n }\n\n public getSupportedFilesForTsserver(components: Component[]): string[] {\n const files = components\n .map((c) => c.filesystem.files)\n .flat()\n .map((f) => f.path);\n return files.filter((f) => f.endsWith('.ts') || f.endsWith('.tsx'));\n }\n\n private async onPreWatch(components: Component[], watchOpts: WatchOptions) {\n const workspace = this.workspace;\n if (!workspace || !watchOpts.spawnTSServer) {\n return;\n }\n const { verbose, checkTypes } = watchOpts;\n const files = checkTypes ? this.getSupportedFilesForTsserver(components) : [];\n const printTypeErrors = Boolean(checkTypes);\n await this.initTsserverClientFromWorkspace({ verbose, checkTypes, printTypeErrors }, files);\n }\n\n private async onComponentChange(component: Component, files: string[]) {\n if (!this.tsServer) {\n return {\n results: 'N/A',\n };\n }\n await pMapSeries(files, (file) => this.tsServer.onFileChange(file));\n return {\n results: 'succeed',\n };\n }\n\n static runtime = MainRuntime;\n static dependencies = [SchemaAspect, LoggerAspect, AspectLoaderAspect, WorkspaceAspect, CLIAspect];\n static slots = [Slot.withType<SchemaTransformer[]>()];\n\n static async provider(\n [schema, loggerExt, aspectLoader, workspace, cli]: [SchemaMain, LoggerMain, AspectLoaderMain, Workspace, CLIMain],\n config,\n [schemaTransformerSlot]: [SchemaTransformerSlot]\n ) {\n schema.registerParser(new TypeScriptParser());\n const logger = loggerExt.createLogger(TypescriptAspect.id);\n aspectLoader.registerPlugins([new SchemaTransformerPlugin(schemaTransformerSlot)]);\n const tsMain = new TypescriptMain(logger, schemaTransformerSlot, workspace);\n schemaTransformerSlot.register([\n new ExportDeclaration(),\n new FunctionDeclaration(),\n new MethodDeclaration(),\n new PropertyDeclaration(),\n new VariableStatementTransformer(),\n new VariableDeclaration(),\n new Constructor(),\n new SourceFileTransformer(),\n new TypeAliasTransformer(),\n new ClassDecelerationTransformer(),\n new PropertySignature(),\n new LiteralTypeTransformer(),\n new IndexSignature(),\n new InterfaceDeclarationTransformer(),\n new MethodSignatureTransformer(),\n ]);\n\n if (workspace) {\n workspace.registerOnPreWatch(tsMain.onPreWatch.bind(this));\n workspace.registerOnComponentChange(tsMain.onComponentChange.bind(this));\n workspace.registerOnComponentAdd(tsMain.onComponentChange.bind(this));\n }\n\n const checkTypesCmd = new CheckTypesCmd(tsMain, workspace, logger);\n cli.register(checkTypesCmd);\n\n return tsMain;\n }\n}\n\nTypescriptAspect.addRuntime(TypescriptMain);\n\nexport function runTransformersWithContext(\n config: TypescriptConfigMutator,\n transformers: TsConfigTransformer[] = [],\n context: TsConfigTransformContext\n): TypescriptConfigMutator {\n if (!Array.isArray(transformers)) return config;\n const newConfig = transformers.reduce((acc, transformer) => {\n return transformer(acc, context);\n }, config);\n return newConfig;\n}\n"]}
|
|
1
|
+
{"version":3,"names":["TypescriptMain","constructor","logger","schemaTransformerSlot","workspace","depResolver","createCompiler","options","transformers","tsModule","ts","configMutator","TypescriptConfigMutator","transformerContext","afterMutation","runTransformersWithContext","clone","TypescriptCompiler","TypescriptAspect","id","raw","getTsserverClient","tsServer","initTsserverClient","projectPath","files","TsserverClient","init","initTsserverClientFromWorkspace","Error","path","createCjsCompiler","getCjsTransformer","createEsmCompiler","getEsmTransformer","cjsTransformer","config","setModule","esmTransformer","createSchemaExtractor","tsconfig","TypeScriptExtractor","getCjsPackageJsonProps","main","types","getEsmPackageJsonProps","type","getSupportedFilesForTsserver","components","map","c","filesystem","flat","f","filter","endsWith","onPreWatch","watchOpts","spawnTSServer","verbose","checkTypes","printTypeErrors","Boolean","onComponentChange","component","results","pMapSeries","file","onFileChange","provider","schema","loggerExt","aspectLoader","cli","registerParser","TypeScriptParser","createLogger","registerPlugins","SchemaTransformerPlugin","tsMain","register","ExportDeclaration","FunctionDeclaration","MethodDeclaration","PropertyDeclaration","VariableStatementTransformer","VariableDeclaration","Constructor","SourceFileTransformer","TypeAliasTransformer","ClassDecelerationTransformer","PropertySignature","LiteralTypeTransformer","IndexSignature","InterfaceDeclarationTransformer","MethodSignatureTransformer","EnumDeclarationTransformer","registerOnPreWatch","bind","registerOnComponentChange","registerOnComponentAdd","checkTypesCmd","CheckTypesCmd","MainRuntime","SchemaAspect","LoggerAspect","AspectLoaderAspect","WorkspaceAspect","CLIAspect","DependencyResolverAspect","Slot","withType","addRuntime","context","Array","isArray","newConfig","reduce","acc","transformer"],"sources":["typescript.main.runtime.ts"],"sourcesContent":["import ts from 'typescript';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { Compiler } from '@teambit/compiler';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { SchemaAspect, SchemaExtractor, SchemaMain } from '@teambit/schema';\nimport { PackageJsonProps } from '@teambit/pkg';\nimport { TypescriptConfigMutator } from '@teambit/typescript.modules.ts-config-mutator';\nimport { WorkspaceAspect } from '@teambit/workspace';\nimport type { WatchOptions, Workspace } from '@teambit/workspace';\nimport { DependencyResolverAspect, DependencyResolverMain } from '@teambit/dependency-resolver';\nimport pMapSeries from 'p-map-series';\nimport { TsserverClient, TsserverClientOpts } from '@teambit/ts-server';\nimport AspectLoaderAspect, { AspectLoaderMain } from '@teambit/aspect-loader';\nimport type { Component } from '@teambit/component';\nimport { TypeScriptExtractor } from './typescript.extractor';\nimport { TypeScriptCompilerOptions } from './compiler-options';\nimport { TypescriptAspect } from './typescript.aspect';\nimport { TypescriptCompiler } from './typescript.compiler';\nimport { TypeScriptParser } from './typescript.parser';\nimport { SchemaTransformer } from './schema-transformer';\nimport { SchemaTransformerPlugin } from './schema-transformer.plugin';\nimport {\n ExportDeclaration,\n TypeAliasTransformer,\n FunctionDeclaration,\n MethodDeclaration,\n PropertyDeclaration,\n VariableStatementTransformer,\n VariableDeclaration,\n SourceFileTransformer,\n ClassDecelerationTransformer,\n Constructor,\n PropertySignature,\n LiteralTypeTransformer,\n IndexSignature,\n InterfaceDeclarationTransformer,\n MethodSignatureTransformer,\n EnumDeclarationTransformer,\n} from './transformers';\nimport { CheckTypesCmd } from './cmds/check-types.cmd';\n\nexport type TsMode = 'build' | 'dev';\n\nexport type SchemaTransformerSlot = SlotRegistry<SchemaTransformer[]>;\n\nexport type TsConfigTransformContext = {\n // mode: TsMode;\n};\n\nexport type TsConfigTransformer = (\n config: TypescriptConfigMutator,\n context: TsConfigTransformContext\n) => TypescriptConfigMutator;\n\nexport class TypescriptMain {\n constructor(\n private logger: Logger,\n private schemaTransformerSlot: SchemaTransformerSlot,\n private workspace: Workspace,\n private depResolver: DependencyResolverMain\n ) {}\n\n private tsServer: TsserverClient;\n /**\n * create a new compiler.\n */\n createCompiler(\n options: TypeScriptCompilerOptions,\n transformers: TsConfigTransformer[] = [],\n tsModule = ts\n ): Compiler {\n const configMutator = new TypescriptConfigMutator(options);\n const transformerContext: TsConfigTransformContext = {};\n const afterMutation = runTransformersWithContext(configMutator.clone(), transformers, transformerContext);\n return new TypescriptCompiler(TypescriptAspect.id, this.logger, afterMutation.raw, tsModule);\n }\n\n /**\n * get TsserverClient instance if initiated already, otherwise, return undefined.\n */\n getTsserverClient(): TsserverClient | undefined {\n return this.tsServer;\n }\n\n /**\n * starts a tsserver process to communicate with its API.\n * @param projectPath absolute path of the project root directory\n * @param options TsserverClientOpts\n * @param files optionally, if check-types is enabled, provide files to open and type check.\n * @returns TsserverClient\n */\n async initTsserverClient(\n projectPath: string,\n options: TsserverClientOpts = {},\n files: string[] = []\n ): Promise<TsserverClient> {\n this.tsServer = new TsserverClient(projectPath, this.logger, options, files);\n this.tsServer.init();\n return this.tsServer;\n }\n\n /**\n * starts a tsserver process to communicate with its API. use only when running on the workspace.\n * @param options TsserverClientOpts\n * @param files optionally, if check-types is enabled, provide files to open and type check.\n * @returns TsserverClient\n */\n async initTsserverClientFromWorkspace(\n options: TsserverClientOpts = {},\n files: string[] = []\n ): Promise<TsserverClient> {\n if (!this.workspace) {\n throw new Error(`initTsserverClientFromWorkspace: workspace was not found`);\n }\n return this.initTsserverClient(this.workspace.path, options, files);\n }\n\n /**\n * Create a compiler instance and run the cjs transformer for it\n * @param options\n * @param transformers\n * @param tsModule\n * @returns\n */\n createCjsCompiler(options: TypeScriptCompilerOptions, transformers: TsConfigTransformer[] = [], tsModule = ts) {\n return this.createCompiler(options, [this.getCjsTransformer(), ...transformers], tsModule);\n }\n\n /**\n * Create a compiler instance and run the esm transformer for it\n * @param options\n * @param transformers\n * @param tsModule\n * @returns\n */\n createEsmCompiler(options: TypeScriptCompilerOptions, transformers: TsConfigTransformer[] = [], tsModule = ts) {\n return this.createCompiler(options, [this.getEsmTransformer(), ...transformers], tsModule);\n }\n\n /**\n * Create a transformer that change the ts module to CommonJS\n * @returns\n */\n getCjsTransformer(): TsConfigTransformer {\n const cjsTransformer = (config: TypescriptConfigMutator) => {\n config.setModule('CommonJS');\n return config;\n };\n return cjsTransformer;\n }\n\n /**\n * Create a transformer that change the ts module to ES2020\n * @returns\n */\n getEsmTransformer(): TsConfigTransformer {\n const esmTransformer = (config: TypescriptConfigMutator) => {\n config.setModule('ES2020');\n return config;\n };\n return esmTransformer;\n }\n\n /**\n * create an instance of a typescript semantic schema extractor.\n */\n createSchemaExtractor(tsconfig: any, path?: string): SchemaExtractor {\n return new TypeScriptExtractor(\n tsconfig,\n this.schemaTransformerSlot,\n this,\n path || this.workspace.path,\n this.depResolver,\n this.workspace\n );\n }\n\n /**\n * add the default package json properties to the component\n * :TODO @gilad why do we need this DSL? can't I just get the args here.\n */\n getCjsPackageJsonProps(): PackageJsonProps {\n return {\n main: 'dist/{main}.js',\n types: '{main}.ts',\n };\n }\n\n /**\n * add type: module to the package.json props and the default props\n * :TODO @gilad why do we need this DSL? can't I just get the args here.\n */\n getEsmPackageJsonProps(): PackageJsonProps {\n return {\n // main: 'dist-esm/{main}.js',\n main: 'dist/{main}.js',\n type: 'module',\n types: '{main}.ts',\n };\n }\n\n public getSupportedFilesForTsserver(components: Component[]): string[] {\n const files = components\n .map((c) => c.filesystem.files)\n .flat()\n .map((f) => f.path);\n return files.filter((f) => f.endsWith('.ts') || f.endsWith('.tsx'));\n }\n\n private async onPreWatch(components: Component[], watchOpts: WatchOptions) {\n const workspace = this.workspace;\n if (!workspace || !watchOpts.spawnTSServer) {\n return;\n }\n const { verbose, checkTypes } = watchOpts;\n const files = checkTypes ? this.getSupportedFilesForTsserver(components) : [];\n const printTypeErrors = Boolean(checkTypes);\n await this.initTsserverClientFromWorkspace({ verbose, checkTypes, printTypeErrors }, files);\n }\n\n private async onComponentChange(component: Component, files: string[]) {\n if (!this.tsServer) {\n return {\n results: 'N/A',\n };\n }\n await pMapSeries(files, (file) => this.tsServer.onFileChange(file));\n return {\n results: 'succeed',\n };\n }\n\n static runtime = MainRuntime;\n static dependencies = [\n SchemaAspect,\n LoggerAspect,\n AspectLoaderAspect,\n WorkspaceAspect,\n CLIAspect,\n DependencyResolverAspect,\n ];\n static slots = [Slot.withType<SchemaTransformer[]>()];\n\n static async provider(\n [schema, loggerExt, aspectLoader, workspace, cli, depResolver]: [\n SchemaMain,\n LoggerMain,\n AspectLoaderMain,\n Workspace,\n CLIMain,\n DependencyResolverMain\n ],\n config,\n [schemaTransformerSlot]: [SchemaTransformerSlot]\n ) {\n schema.registerParser(new TypeScriptParser());\n const logger = loggerExt.createLogger(TypescriptAspect.id);\n aspectLoader.registerPlugins([new SchemaTransformerPlugin(schemaTransformerSlot)]);\n const tsMain = new TypescriptMain(logger, schemaTransformerSlot, workspace, depResolver);\n schemaTransformerSlot.register([\n new ExportDeclaration(),\n new FunctionDeclaration(),\n new MethodDeclaration(),\n new PropertyDeclaration(),\n new VariableStatementTransformer(),\n new VariableDeclaration(),\n new Constructor(),\n new SourceFileTransformer(),\n new TypeAliasTransformer(),\n new ClassDecelerationTransformer(),\n new PropertySignature(),\n new LiteralTypeTransformer(),\n new IndexSignature(),\n new InterfaceDeclarationTransformer(),\n new MethodSignatureTransformer(),\n new EnumDeclarationTransformer(),\n ]);\n\n if (workspace) {\n workspace.registerOnPreWatch(tsMain.onPreWatch.bind(this));\n workspace.registerOnComponentChange(tsMain.onComponentChange.bind(this));\n workspace.registerOnComponentAdd(tsMain.onComponentChange.bind(this));\n }\n\n const checkTypesCmd = new CheckTypesCmd(tsMain, workspace, logger);\n cli.register(checkTypesCmd);\n\n return tsMain;\n }\n}\n\nTypescriptAspect.addRuntime(TypescriptMain);\n\nexport function runTransformersWithContext(\n config: TypescriptConfigMutator,\n transformers: TsConfigTransformer[] = [],\n context: TsConfigTransformContext\n): TypescriptConfigMutator {\n if (!Array.isArray(transformers)) return config;\n const newConfig = transformers.reduce((acc, transformer) => {\n return transformer(acc, context);\n }, config);\n return newConfig;\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["TypeScriptParser","getExports","sourceFile","staticProperties","parseStaticProperties","exports","statements","filter","statement","modifiers","find","modifier","kind","ts","SyntaxKind","ExportKeyword","exportModels","map","isVariableStatement","child","declarationList","declarations","name","text","Export","get","isFunctionDeclaration","undefined","isClassDeclaration","withoutEmpty","exportModel","parseModule","modulePath","ast","createSourceFile","readFileSync","ScriptTarget","Latest","moduleExports","exportStaticProperties","Map","forEach","isExpressionStatement","isBinaryExpression","expression","operatorToken","EqualsToken","isPropertyAccessExpression","left","isIdentifier","targetName","propertyName","has","set","existingProperties","isStringLiteral","right","isNumericLiteral","UndefinedKeyword","NullKeyword","TrueKeyword","FalseKeyword","err","logger","error","constructor"],"sources":["typescript.parser.ts"],"sourcesContent":["import { Parser } from '@teambit/schema';\nimport { Export, StaticProperties } from '@teambit/semantics.entities.semantic-schema';\nimport { Logger } from '@teambit/logger';\nimport { readFileSync } from 'fs-extra';\nimport ts, {\n isClassDeclaration,\n isFunctionDeclaration,\n isVariableStatement,\n SourceFile,\n VariableStatement,\n} from 'typescript';\n\nexport class TypeScriptParser implements Parser {\n public extension = /^.*\\.(js|jsx|ts|tsx)$/;\n\n getExports(sourceFile: SourceFile): Export[] {\n const staticProperties = this.parseStaticProperties(sourceFile);\n\n const exports = sourceFile.statements.filter((statement) => {\n if (!statement.modifiers) return false;\n return statement.modifiers.find((modifier) => {\n return modifier.kind === ts.SyntaxKind.ExportKeyword;\n });\n });\n\n const exportModels = exports.map((statement) => {\n // todo refactor to a registry of variable statements.\n if (isVariableStatement(statement)) {\n const child = (statement as VariableStatement).declarationList.declarations[0];\n const name = (child as any).name.text;\n return new Export(name, staticProperties.get(name));\n }\n\n if (isFunctionDeclaration(statement)) {\n if (!statement.name) return undefined;\n const name = statement.name.text;\n return new Export(name, staticProperties.get(name));\n }\n\n if (isClassDeclaration(statement)) {\n if (!statement.name) return undefined;\n const name = statement.name.text;\n return new Export(name, staticProperties.get(name));\n }\n\n return undefined;\n });\n const withoutEmpty = exportModels.filter((exportModel) => exportModel !== undefined);\n // @ts-ignore\n return withoutEmpty;\n }\n\n parseModule(modulePath: string) {\n const ast = ts.createSourceFile(modulePath, readFileSync(modulePath, 'utf8'), ts.ScriptTarget.Latest);\n\n const moduleExports = this.getExports(ast);\n return moduleExports;\n }\n\n parseStaticProperties(sourceFile: SourceFile) {\n // TODO - should we also parse staticProperties inside classes / objects?\n\n const exportStaticProperties = new Map<string, StaticProperties>();\n\n sourceFile.statements.forEach((statement) => {\n try {\n if (!ts.isExpressionStatement(statement)) return;\n if (!ts.isBinaryExpression(statement.expression)) return;\n if (statement.expression.operatorToken.kind !== ts.SyntaxKind.EqualsToken) return;\n if (!ts.isPropertyAccessExpression(statement.expression.left)) return;\n if (!ts.isIdentifier(statement.expression.left.expression)) return;\n\n const targetName = statement.expression.left.expression.text;\n const propertyName = statement.expression.left.name.text;\n\n if (!exportStaticProperties.has(targetName)) exportStaticProperties.set(targetName, new Map());\n\n const existingProperties = exportStaticProperties.get(targetName);\n\n if (ts.isStringLiteral(statement.expression.right)) {\n existingProperties?.set(propertyName, statement.expression.right.text);\n } else if (ts.isNumericLiteral(statement.expression.right)) {\n existingProperties?.set(propertyName, +statement.expression.right.text);\n } else if (statement.expression.right.kind === ts.SyntaxKind.UndefinedKeyword) {\n existingProperties?.set(propertyName, undefined);\n } else if (statement.expression.right.kind === ts.SyntaxKind.NullKeyword) {\n existingProperties?.set(propertyName, null);\n } else if (statement.expression.right.kind === ts.SyntaxKind.TrueKeyword) {\n existingProperties?.set(propertyName, true);\n } else if (statement.expression.right.kind === ts.SyntaxKind.FalseKeyword) {\n existingProperties?.set(propertyName, false);\n }\n } catch (err) {\n this.logger?.error('failed parsing static properties', err);\n }\n });\n\n return exportStaticProperties;\n }\n\n constructor(private logger?: Logger | undefined) {}\n}\n"],"mappings":"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"}
|