webpack-license-plugin
Version:
Extracts OSS license information of the npm packages in your webpack output
1 lines • 64.2 kB
Source Map (JSON)
{"version":3,"sources":["/Users/christoph/repos/own/webpack-license-plugin/dist/index.cjs","index.ts","WebpackLicensePlugin.ts","LicenseFileWriter.ts","LicenseIdentifier.ts","LicenseTextReader.ts","DefaultLicenseTextProvider.ts","NoticeTextReader.ts","LicenseMetaAggregator.ts","ModuleDirectoryLocator.ts","OptionsProvider.ts","defaultOptions.ts","PackageJsonReader.ts","WebpackAlertAggregator.ts","WebpackAssetManager.ts","WebpackChunkModuleIterator.ts","WebpackModuleFileIterator.ts","WebpackChunkIterator.ts","WebpackFileSystem.ts"],"names":["he","Object","create","u","defineProperty","ue","getOwnPropertyDescriptor","pe","getOwnPropertyNames","ge","getPrototypeOf","me","prototype","hasOwnProperty","ye","l","e","t","enumerable","configurable","writable","value","n","we","get","Q","s","i","call","f","__esModule","xe","r","index_exports","__export","default","index_default","module","exports","__toCommonJS","import_webpack","require","import_lodash","lodash","compact","uniq","LicenseFileWriter","assetManager","moduleDirectoryLocator","licenseMetaAggregator","writeLicenseFiles","filenames","options","moduleDirs","includePackages","licenseMeta","fileContents","filename","result","getModuleDirs","aggregateMeta","Set","JSON","stringify","addFile","outputFilename","keys","additionalFiles","map","getModuleDir","_LicenseFileWriter","import_spdx_expression_validate","LicenseIdentifier","alertAggregator","preferredLicenses","identifyLicense","meta","id","name","version","license","licenseOverrides","type","Array","isArray","licenses","length","findPreferredLicense","unacceptableLicenseTest","addError","validate","licenseTypes","preferredLicenseType","licenseType","_LicenseIdentifier","import_node_path","import_needle","fetch","url","res","needle","statusCode","body","REPO_URL","DefaultLicenseTextProvider","request","cache","retrieveLicenseText","_DefaultLicenseTextProvider","LicenseTextReader","fileSystem","defaultLicenseReader","readLicenseText","moduleDir","pathsInModuleDir","licenseFilename","indexOf","split","readFile","listPaths","getLicenseFilename","replenishDefaultLicenseTexts","getDefaultLicenseText","paths","path","test","directory","join","replace","_LicenseTextReader","NoticeTextReader","readNoticeText","noticeFilename","noticeFilePath","find","_NoticeTextReader","LicenseMetaAggregator","packageJsonReader","licenseIdentifier","licenseTextReader","noticeTextReader","getNpmTarballUrl","pkgName","pkgVersion","scopelessName","plusPos","substring","packageSet","sortedModuleDirs","packageIdentifier","licenseText","noticeText","sort","a","b","readPackageJson","localeCompare","has","excludedPackageTest","add","includeNoticeText","undefined","push","author","getAuthor","repository","getRepository","source","email","_LicenseMetaAggregator","ModuleDirectoryLocator","buildRoot","lastIndexOf","sep","checkModuleDir","dirWithVersion","dirWithLicense","prevModuleDir","pathExists","packageMeta","resolve","_ModuleDirectoryLocator","defaultOptions","__name","defaultOptions_default","OptionsProvider","getOptions","inputOptions","validateOptions","fileName","packageVersion","_OptionsProvider","PackageJsonReader","parse","_PackageJsonReader","WebpackError","webpack","WebpackAlertAggregator","compilation","errors","warnings","message","addWarning","flushAlerts","prefix","w","_WebpackAlertAggregator","sources","WebpackAssetManager","contents","assets","RawSource","_WebpackAssetManager","WebpackChunkModuleIterator","iterateModules","chunk","callback","chunkGraph","getChunkModulesIterable","modulesIterable","forEachModule","modules","forEach","getChunkEntryModulesIterable","entryModule","_WebpackChunkModuleIterator","WebpackModuleFileIterator","iterateFiles","resource","rootModule","fileDependencies","dependencies","dep","originModule","_parentModule","_WebpackModuleFileIterator","WebpackChunkIterator","moduleIterator","fileIterator","iterateChunks","chunks","_WebpackChunkIterator","WebpackFileSystem","fs","statSync","readFileSync","toString","dir","readdirSync","_WebpackFileSystem","pluginName","WebpackLicensePlugin","pluginOptions","createdFiles","observedCompilers","apply","compiler","hooks","tap","handleCompilation","bind","watchRun","tapAsync","handleWatchRun","plugin","_","processAssets","boundHandleChunkAssetOptimization","handleChunkAssetOptimization","stage","Compilation","PROCESS_ASSETS_STAGE_ANALYSE","optimizeChunkAssets","observedCompilersMessage","errorMessage","chunkIterator","isChild","inputFileSystem","context","_WebpackLicensePlugin"],"mappings":"2iGAAA,IAAIA,EAAGC,OAAOC,MAAM,CAAC,IAAIC,EAAEF,OAAOG,cAAc,CAAC,IAAIC,EAAGJ,OAAOK,wBAAwB,CAAC,IAAIC,EAAGN,OAAOO,mBAAmB,CAAC,IAAIC,EAAGR,OAAOS,cAAc,CAACC,EAAGV,OAAOW,SAAS,CAACC,cAAc,CAAC,IAAIC,EAAG,SAACC,EAAEC,EAAEC,UAAID,KAAKD,EAAEZ,EAAEY,EAAEC,EAAE,CAACE,WAAW,CAAC,EAAEC,aAAa,CAAC,EAAEC,SAAS,CAAC,EAAEC,MAAMJ,CAAC,GAAGF,CAAC,CAACC,EAAE,CAACC,GAAE,IAAIK,EAAE,SAACP,EAAEC,UAAIb,EAAEY,EAAE,OAAO,CAACM,MAAML,EAAEG,aAAa,CAAC,CAAC,IAAG,IAAII,EAAG,SAACR,EAAEC,GAAK,IAAI,IAAIC,KAAKD,EAAEb,EAAEY,EAAEE,EAAE,CAACO,IAAIR,CAAC,CAACC,EAAE,CAACC,WAAW,CAAC,CAAC,EAAE,EAAEO,EAAE,SAACV,EAAEC,EAAEC,EAAES,OAAwD,OAAA,QAAA,YAAnD,GAAGV,GAAG,CAAA,OAAOA,4BAAP,EAAOA,EAAAA,GAAG,UAAU,OAAOA,GAAG,gCAAe,IAAIW,EAAJ,OAAe,EAAChB,EAAGiB,IAAI,CAACb,EAAEY,IAAIA,IAAIV,GAAGd,EAAEY,EAAEY,EAAE,CAACH,IAAI,kBAAIR,CAAC,CAACW,EAAE,EAACT,WAAW,CAAEQ,CAAAA,EAAErB,EAAGW,EAAEW,EAAC,GAAID,EAAER,UAAU,IAAlG,QAAI,EAASX,EAAGS,sBAAZ,IAAA,GAAA,EAAA,gBAAA,oBAAA,OAAA,oBAAA,GAAA,gBAAA,uBAAA,SAAA,IAAiG,OAAOD,CAAC,EAAE,IAAIc,EAAE,SAACd,EAAEC,EAAEC,UAAKA,EAAEF,GAAG,KAAKf,EAAGS,EAAGM,IAAI,CAAC,EAAEU,EAAET,GAAG,CAACD,GAAG,CAACA,EAAEe,UAAU,CAAC3B,EAAEc,EAAE,UAAU,CAACI,MAAMN,EAAEG,WAAW,CAAC,CAAC,GAAGD,EAAEF,IAAIgB,EAAGhB,SAAAA,UAAGU,EAAEtB,EAAE,CAAC,EAAE,aAAa,CAACkB,MAAM,CAAC,CAAC,GAAGN,IAAG,IAAIiB,EAAE,SAACjB,EAAEC,EAAEC,UAAIH,EAAGC,EAAE,CAAA,OAAOC,4BAAP,EAAOA,EAAAA,GAAG,SAASA,EAAE,GAAGA,EAAEC,ICAnvB,IAAAgB,EAAA,CAAA,EAAAC,EAAAD,EAAA,CAAAE,QAAA,kBAAAC,GAAAA,EAAAC,CAAAA,OAAAC,OAAA,CAAAC,EAAAN,GCGA,IAAAO,EAAoBX,EAAAY,QAAA,WAAA,GCCpB,IAAAC,EAAmBb,EAAAY,QAAA,UAAA,GAEnB,IAA0BE,EAAAA,EAAAA,OAAAA,CAAlBC,EAAkBD,EAAlBC,QAASC,EAASF,EAATE,KAEIC,eAArB,iCAAqBA,EAETC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,SAJSH,GAKjBd,EAAA,IAAA,CAAA,gBAAAA,EAAA,IAAA,CAAA,0BAAAA,EAAA,IAAA,CAAA,wBAAA,CAAA,IAAA,CAHQe,YAAAA,CAAAA,EAAAA,IAAAA,CACAC,sBAAAA,CAAAA,EAAAA,IAAAA,CACAC,qBAAAA,CAAAA,QAGGC,IAAAA,0BAAb,SAAaA,EACXC,CAAAA,CACAC,CAAAA,oBAFF,EAAA,eAIQC,EACAC,EACAC,EAIAC,EAGN,EAAA,EAAA,EAAA,EAAA,EAAWC,EACHC,qDAVFL,EAAa,EAAKM,aAAAA,CAAcR,GACd,SAAMC,EAAQE,eAAAA,WAAhCA,EAAkB,SACJ,SAAM,EAAKL,qBAAAA,CAAsBW,aAAAA,CAAc,EAC9D,IAAIC,IAAI,EAAIR,UAAAA,EAAeC,eAD1BC,EAAc,SAIdC,EAAeM,KAAKC,SAAAA,CAAUR,EAAa,KAAM,GACvD,EAAKR,YAAAA,CAAaiB,OAAAA,CAAQZ,EAAQa,cAAAA,CAAgBT,GAElD,OAAA,QAAA,qDAAA,EAAuBvD,OAAOiE,IAAAA,CAAKd,EAAQe,eAAe,4CAA1D,GAAA,EAAA,4BAAWV,EAAX,QACiB,SAAML,EAAQe,eAAAA,CAAgBV,EAAAA,CAAUF,WAAjDG,EAAS,SACf,EAAKX,YAAAA,CAAaiB,OAAAA,CAAQP,EAAUC,oBAFtC,yDAAA,OAAA,gCAAA,GAAA,gBAAA,uBAAA,SAAA,iCAIF,QAEOC,IAAAA,sBAAAA,SAAAA,EAAcR,CAAAA,aACnB,OAAON,EACLD,EACEO,EAAUiB,GAAAA,CAAKX,SAAAA,UACN,EAAKT,sBAAAA,CAAuBqB,YAAAA,CAAaZ,MAIxD,iBAlCmBX,EAAAA,EAAAA,qBAArB,IAAqBA,EAArBwB,ECLA,IAAAC,EAAqB1C,EAAAY,QAAA,4BAAA,GAMrB,IAAqB+B,eAArB,iCAAqBA,EAETC,CAAAA,MACSC,EAAAA,uDAA8B,EAAA,QAH9BF,GAIjBxC,EAAA,IAAA,CAAA,mBAAAA,EAAA,IAAA,CAAA,oBAAA,CAAA,IAAA,CAFQyC,eAAAA,CAAAA,EAAAA,IAAAA,CACSC,iBAAAA,CAAAA,QAGZC,IAAAA,wBAAAA,SAAAA,EACLC,CAAAA,CACAxB,CAAAA,EAKA,IAAMyB,EAAK,GAAgBD,OAAbA,EAAKE,IAAI,CAAA,KAAgB,OAAZF,EAAKG,OAAO,EACnCC,EAEJ,OAAI5B,EAAQ6B,gBAAAA,CAAiBJ,EAAAA,CAC3BG,EAAU5B,EAAQ6B,gBAAAA,CAAiBJ,EAAAA,CAE5B,EAAOD,EAAKI,OAAAA,GAAY,SAC/BA,EAAUJ,EAAKI,OAAAA,CAAQE,IAAAA,CAEhBN,EAAKI,OAAAA,CACZA,EAAUJ,EAAKI,OAAAA,CAERG,MAAMC,OAAAA,CAAQR,EAAKS,QAAQ,GAAKT,EAAKS,QAAAA,CAASC,MAAAA,CAAS,EAE9DN,EACI,IAAA,CAAKO,oBAAAA,CAAqBX,EAAKS,QAAAA,CAASjB,GAAAA,CAAIrD,SAAAA,UAAKA,EAAEmE,IAAI,KACpDN,EAAKS,QAAAA,CAAS,EAAA,CAAGH,IAAAA,CAEjB,OAAON,EAAKS,QAAAA,EAAa,UAGhCL,CAAAA,EAAUJ,EAAKS,QAAAA,EAGZL,EAGI5B,EAAQoC,uBAAAA,CAAwBR,GACvC,IAAA,CAAKP,eAAAA,CAAgBgB,QAAAA,CACnB,+BAA+CZ,OAAhBG,EAAAA,UAAgBH,OAAAA,IAAI,CAAA,EAG7Ca,EAAAA,OAAAA,EAASV,IACjB,IAAA,CAAKP,eAAAA,CAAgBgB,QAAAA,CACnB,YAA4BZ,OAAhBG,EAAAA,UAAgBH,OAAAA,EAAAA,qCAT9B,IAAA,CAAKJ,eAAAA,CAAgBgB,QAAAA,CAAS,mCAAmCZ,OAAAA,IAa5DG,GAAW,IACpB,IAEQO,IAAAA,6BAAAA,SAAAA,EAAqBI,CAAAA,MAEzB,OAAA,QAAA,YADF,OAAA,QAAA,gBAAA,QAAA,EAAmC,IAAA,CAAKjB,iBAAAA,oBAAxC,IAAA,GAAA,EAAA,gBAAA,QAAA,IAAWkB,EAAX,YACE,QAAA,EAA0BD,qBAA1B,IAAA,GAAA,EAAA,gBAAA,QAAA,IAAWE,EAAX,QACE,GAAID,IAAyBC,EAC3B,OAAOD,YAFX,OAAA,oBAAA,GAAA,gBAAA,uBAAA,SAAA,eADF,OAAA,oBAAA,GAAA,gBAAA,uBAAA,SAAA,IAOA,OAAO,IACT,iBA/DmBpB,EAAAA,EAAAA,qBAArB,IAAqBA,EAArBsB,ECJA,IAAAC,EAAqBtD,QAAA,QCLrB,IAAAuD,EAAmBnE,EAAAY,QAAA,UAAA,YAEGwD,EAAMC,CAAAA,SAAND,iCAAAA,IAAAA,EAAtB,EAAA,SAA4BC,CAAAA,MACpBC,mDAAM,SAAA,CAAA,EAAMC,EAAAA,OAAAA,EAAO,MAAOF,WAA1BC,EAAM,SACZ,SAAOA,EAAIE,UAAAA,GAAe,IAAMF,EAAIG,IAAAA,CAAO,QAC7C,UAHsBL,wBAAAA,EAAAA,EAAAA,SAKf,IAAMM,EACT,2DAMiBC,eAArB,iCAAqBA,QAGCC,EAAAA,uDAAwBR,SAHzBO,GAGgCxE,EAAA,IAAA,CAAA,WAF3C0E,EAAAA,IAAAA,CAAAA,QAAAA,CAAAA,IAAAA,CAEYD,OAAAA,CAAAA,EAAAA,IAAAA,CAFZC,KAAAA,CAAkC,CAAC,QAI9BC,IAAAA,4BAAb,SAAaA,EAAoB3B,CAAAA,oBAAjC,EAAA,eAEUmB,uDADJ,CAAC,EAAKO,KAAAA,CAAM1B,EAAAA,CAAZ,YACU,SAAM,EAAKyB,OAAAA,CAAQ,GAAyBzB,OAAtBuB,EAAAA,eAAsBvB,OAAAA,EAAAA,iBAAlDmB,EAAM,QACZ,GAAKO,KAAAA,CAAM1B,EAAAA,CAAWmB,mBAGxB,SAAO,EAAKO,KAAAA,CAAM1B,EAAAA,EAAY,QAChC,qBAZmBwB,EAAAA,EAAAA,8BAArB,IAAqBA,EAArBI,EDCA,IAAqBC,eAArB,iCAAqBA,EAETpC,CAAAA,CACAqC,CAAAA,CACA1D,CAAAA,MACA2D,EAAAA,uDAAoD,IAAIP,SAL/CK,GAMjB7E,EAAA,IAAA,CAAA,mBAAAA,EAAA,IAAA,CAAA,cAAAA,EAAA,IAAA,CAAA,WAAAA,EAAA,IAAA,CAAA,uBAAA,CAAA,IAAA,CAJQyC,eAAAA,CAAAA,EAAAA,IAAAA,CACAqC,UAAAA,CAAAA,EAAAA,IAAAA,CACA1D,OAAAA,CAAAA,EAAAA,IAAAA,CACA2D,oBAAAA,CAAAA,QAGGC,IAAAA,wBAAb,SAAaA,EACXpC,CAAAA,CACAI,CAAAA,CACAiC,CAAAA,oBAHF,EAAA,eAKQpC,EAOEpB,EAYFyD,EACAC,uDApBAtC,EAAK,GAAgBD,OAAbA,EAAKE,IAAI,CAAA,KAAgB,OAAZF,EAAKG,OAAO,EAEvC,GAAI,CAACC,EACH,SAAO,MAGT,GAAIA,EAAQoC,OAAAA,CAAQ,qBAAuB,EAAG,CACtC3D,EAAWuB,EAAQqC,KAAAA,CAAM,IAAA,CAAK,EAAA,CACpC,GAAI,CACF,SAAO,EAAKC,QAAAA,CAASL,EAAWxD,GAClC,CAAA,QAEU,CACR,EAAKgB,eAAAA,CAAgBgB,QAAAA,CACnB,kEAAkEZ,OAAAA,GAEtE,CACF,CAEMqC,EAAmB,EAAKJ,UAAAA,CAAWS,SAAAA,CAAUN,GAC7CE,EAAkB,EAAKK,kBAAAA,CAAmBN,OAE5CC,CAAAA,IAAoB,IAAA,EAApBA,cACK,EAAKG,QAAAA,CAASL,EAAWE,0BAG9B,EAAK/D,OAAAA,CAAQqE,4BAAAA,CAAb,YACK,SAAM,EAAKC,qBAAAA,CAAsB1C,aAAjC,8BAGF,2CARP,cASF,QAEOwC,IAAAA,2BAAAA,SAAAA,EAAmBG,CAAAA,MACxB,OAAA,QAAA,gBAAA,QAAA,EAAmBA,qBAAnB,IAAA,GAAA,EAAA,gBAAA,QAAA,IAAWC,EAAX,QACE,GAAI,eAAeC,IAAAA,CAAKD,GACtB,OAAOA,YAFX,OAAA,oBAAA,GAAA,gBAAA,uBAAA,SAAA,IAMA,OAAO,IACT,IAEON,IAAAA,iBAAAA,SAAAA,EAASQ,CAAAA,CAAmBrE,CAAAA,EACjC,OAAO,IAAA,CAAKqD,UAAAA,CACTQ,QAAAA,CAAAA,CAAAA,EAASS,EAAAA,IAAAA,EAAKD,EAAWrE,IACzBuE,OAAAA,CAAQ,QAAS,KACtB,IAEaN,IAAAA,8BAAb,SAAaA,EAAsB1C,CAAAA,oBAAnC,EAAA,4DACS,SAAM,EAAK+B,oBAAAA,CAAqBJ,mBAAAA,CAAoB3B,WAA3D,SAAO,YACT,qBAhEmB6B,EAAAA,EAAAA,qBAArB,IAAqBA,EAArBoB,EEdA,IAAAlC,EAAqBtD,QAAA,QAOrB,IAAqByF,eAArB,iCAAqBA,EACCpB,CAAAA,SADDoB,GAC0BlG,EAAA,IAAA,CAAA,aAAA,CAAA,IAAA,CAAzB8E,UAAAA,CAAAA,QAEPqB,IAAAA,uBAAb,SAAaA,EAAelB,CAAAA,oBAA5B,EAAA,eACQmB,EAQAC,4BARAD,EAAiB,EAAKtB,UAAAA,CACzBS,SAAAA,CAAUN,GACVqB,IAAAA,CAAK7E,SAAAA,SAAY,WAAWoE,IAAAA,CAAKpE,KAEpC,GAAI,CAAC2E,EACH,SAAO,MAGHC,EAAAA,CAAAA,EAAiBN,EAAAA,IAAAA,EAAKd,EAAWmB,GACvC,SAAO,EAAKtB,UAAAA,CAAWQ,QAAAA,CAASe,GAAgBL,OAAAA,CAAQ,QAAS,QACnE,qBAdmBE,EAAAA,EAAAA,oBAArB,IAAqBA,EAArBK,ECMA,IAAqBC,eAArB,iCAAqBA,EAEjB1B,CAAAA,CACArC,CAAAA,CACQrB,CAAAA,CACAqF,CAAAA,MACAC,EAAAA,uDAAwC,IAAIlE,EAClDC,GAEMkE,EAAAA,uDAAwC,IAAI9B,EAClDpC,EACAqC,EACA1D,GAEMwF,EAAAA,uDAAsC,IAAIV,EAChDpB,UAfe0B,GAiBjBxG,EAAA,IAAA,CAAA,WAAAA,EAAA,IAAA,CAAA,qBAAAA,EAAA,IAAA,CAAA,qBAAAA,EAAA,IAAA,CAAA,qBAAAA,EAAA,IAAA,CAAA,mBAAA,CAAA,IAAA,CAbQoB,OAAAA,CAAAA,EAAAA,IAAAA,CACAqF,iBAAAA,CAAAA,EAAAA,IAAAA,CACAC,iBAAAA,CAAAA,EAAAA,IAAAA,CAGAC,iBAAAA,CAAAA,EAAAA,IAAAA,CAKAC,gBAAAA,CAAAA,QAKFC,IAAAA,yBAAAA,SAAAA,EACNC,CAAAA,CACAC,CAAAA,EAEA,IAAMC,EAAgBF,CAAAA,CAAQ,EAAA,GAAO,IAAMA,EAAUA,EAAQzB,KAAAA,CAAM,IAAA,CAAK,EAAA,CAClE4B,EAAUF,EAAW3B,OAAAA,CAAQ,KAC7BrC,EAAUkE,IAAY,CAAA,EAAKF,EAAaA,EAAWG,SAAAA,CAAU,EAAGD,GACtE,MAAO,8BAA2CD,OAAbF,EAAAA,OAA8B/D,OAAjBiE,EAAAA,KAAiBjE,OAAAA,EAAAA,OACrE,IAEanB,IAAAA,sBAAb,SAAaA,EACXP,CAAAA,oBADF,EAAA,eAGQ8F,EACAzF,EACA0F,EAON,EAAA,EAAA,EAAA,EAAA,EAAWnC,EACHrC,EACAyE,EAWArE,EACAsE,EAKAC,uDA5BFJ,EAAa,IAAItF,IACjBH,KACA0F,EAAmB/F,EAAWmG,IAAAA,CAAK,SAACC,EAAGC,UAC3C,EAAKjB,iBAAAA,CACFkB,eAAAA,CAAgBF,GAChB3E,IAAAA,CACA8E,aAAAA,CAAc,EAAKnB,iBAAAA,CAAkBkB,eAAAA,CAAgBD,GAAG5E,IAAI,IAGjE,OAAA,QAAA,sDAAA,EAAwBsE,4CAAxB,GAAA,EAAA,4BAAWnC,EAAX,QACQrC,EAAO,EAAK6D,iBAAAA,CAAkBkB,eAAAA,CAAgB1C,GAC9CoC,EAAoB,GAAgBzE,OAAbA,EAAKE,IAAI,CAAA,KAAgB,OAAZF,EAAKG,OAAO,EAMtD,GAJIoE,EAAWU,GAAAA,CAAIR,IAIf,EAAKjG,OAAAA,CAAQ0G,mBAAAA,CAAoBlF,EAAKE,IAAAA,CAAMF,EAAKG,OAAO,EAC1D,YAGFoE,EAAWY,GAAAA,CAAIV,GACTrE,EAAU,EAAK0D,iBAAAA,CAAkB/D,eAAAA,CAAgBC,EAAM,EAAKxB,OAAO,EACrD,SAAM,EAAKuF,iBAAAA,CAAkB3B,eAAAA,CAC/CpC,EACAI,EACAiC,WAHIqC,EAAc,aAKD,EAAKlG,OAAAA,CAAQ4G,iBAAAA,CAAb,YAAiC,SAAM,EAAKpB,gBAAAA,CAAiBT,cAAAA,CAAelB,aAA3C,8BAAwDgD,KAAAA,mBAAtGV,IACN7F,EAAOwG,IAAAA,CAAK,GACVpF,KAAMF,EAAKE,IAAAA,CACXC,QAASH,EAAKG,OAAAA,CACdoF,OAAQ,EAAKC,SAAAA,CAAUxF,GACvByF,WAAY,EAAKC,aAAAA,CAAc1F,GAC/B2F,OAAQ,EAAK1B,gBAAAA,CAAiBjE,EAAKE,IAAAA,CAAMF,EAAKG,OAAO,EACrDC,QAAAA,EACAsE,YAAAA,GACIC,EAAa,CAAEA,WAAAA,CAAW,EAAI,CAAC,qBA5BvC,yDAAA,OAAA,iCAAA,GAAA,gBAAA,uBAAA,SAAA,qBAgCA,SAAO7F,KACT,QAEO0G,IAAAA,kBAAAA,SAAAA,EAAUxF,CAAAA,EACf,OAAO,EAAOA,EAAKuF,MAAAA,GAAW,SAC1B,GAAsBvF,OAAnBA,EAAKuF,MAAAA,CAAOrF,IAAI,EAClBF,OADqBA,EAAKuF,MAAAA,CAAOK,KAAAA,CAAQ,KAAsB,OAAjB5F,EAAKuF,MAAAA,CAAOK,KAAK,CAAA,KAAM,IACzB,OAA5C5F,EAAKuF,MAAAA,CAAOjE,GAAAA,CAAM,KAAoB,OAAftB,EAAKuF,MAAAA,CAAOjE,GAAG,CAAA,KAAM,IAC7CtB,EAAKuF,MACX,IAEOG,IAAAA,sBAAAA,SAAAA,EAAc1F,CAAAA,EACnB,OAAIA,EAAKyF,UAAAA,EAAczF,EAAKyF,UAAAA,CAAWnE,GAAAA,CAC9BtB,EAAKyF,UAAAA,CAAWnE,GAAAA,CAEhB,OAAOtB,EAAKyF,UAAAA,EAAe,SAC3BzF,EAAKyF,UAAAA,CAGP,IACT,iBA5FmB7B,EAAAA,EAAAA,yBAArB,IAAqBA,EAArBiC,ECXA,IAAA1E,EAA6BtD,QAAA,QAO7B,IAAqBiI,gBAArB,iCAAqBA,EAET5D,CAAAA,CACA6D,CAAAA,CACAlC,CAAAA,SAJSiC,GAKjB1I,EAAA,IAAA,CAAA,cAAAA,EAAA,IAAA,CAAA,aAAAA,EAAA,IAAA,CAAA,oBAAA,CAAA,IAAA,CAHQ8E,UAAAA,CAAAA,EAAAA,IAAAA,CACA6D,SAAAA,CAAAA,EAAAA,IAAAA,CACAlC,iBAAAA,CAAAA,QAGHpE,IAAAA,qBAAAA,SAAAA,EAAaZ,CAAAA,EAClB,IAAMwD,EAAYxD,EAASyF,SAAAA,CAAU,EAAGzF,EAASmH,WAAAA,CAAYC,EAAAA,GAAAA,GAC7D,OAAO,IAAA,CAAKC,cAAAA,CAAe7D,EAC7B,IAEQ6D,IAAAA,uBAAAA,SAAAA,EAAe7D,CAAAA,EACrB,IAAI8D,EAAgC,KAChCC,EAAgC,KAChCC,EAA+B,KAEnC,EAAG,CACD,GAAI,IAAA,CAAKnE,UAAAA,CAAWoE,UAAAA,CAAW,GAAeL,OAAZ5D,GAAY4D,OAAAA,EAAAA,GAAAA,CAAAA,iBAAoB,CAChE,IAAMM,EAAc,IAAA,CAAK1C,iBAAAA,CAAkBkB,eAAAA,CAAgB1C,EAGzDkE,CAAAA,EAAYrG,IAAAA,GAASmF,KAAAA,GAClBkB,EAAYpG,OAAAA,GAAYkF,KAAAA,GAE3Bc,CAAAA,EAAiB9D,EAAAA,AAGfkE,CAAAA,EAAYnG,OAAAA,GAAYiF,KAAAA,GACrBkB,EAAY9F,QAAAA,GAAa4E,KAAAA,CAAAA,GAE5Be,CAAAA,EAAiB/D,CAAAA,CAAAA,CAGvB,CAEAgE,EAAgBhE,EAChBA,EAAAA,CAAAA,EAAYmE,EAAAA,OAAAA,EAAQ,GAAeP,OAAZ5D,GAAoB4D,OAARA,EAAAA,GAAAA,CAAAA,MAAQA,OAAAA,EAAAA,GAAAA,EAC7C,OACE,CAACG,GACE/D,IAAcgE,GACdhE,IAAc,IAAA,CAAK0D,SAAAA,CAGxB,CAAA,OAAOK,GAAkBD,CAC3B,iBA7CmBL,EAAAA,GAAAA,0BAArB,IAAqBA,GAArBW,GCRA,IAAA9G,GAAqB1C,EAAAY,QAAA,4BAAA,GCArB,IAAM6I,GAAiC,CACrCnH,gBAAiB,CAAC,EAClBc,iBAAkB,CAAC,EACnBhB,eAAgB,oBAChBwD,6BAA8B,CAAA,EAC9BuC,kBAAmB,CAAA,EACnBxE,wBAAyB+F,EAAA,iBAAM,CAAA,GAAN,2BACzBzB,oBAAqByB,EAAA,iBAAM,CAAA,GAAN,uBACrBjI,gBAAiBiI,EAAA,iBAAM,EAAA,EAAN,kBACnB,EAEAC,GAAeF,GDRf,IAAqBG,gBAArB,iCAAqBA,EACUhH,CAAAA,SADVgH,GAC6CzJ,EAAA,IAAA,CAAA,kBAAA,CAAA,IAAA,CAAnCyC,eAAAA,CAAAA,QAEtBiH,IAAAA,mBAAAA,SAAAA,EAAWC,CAAAA,EAChB,OAAA,IAAA,CAAKC,eAAAA,CAAgBD,GACL,KAAKL,GAAmBK,EAE1C,IAEOC,IAAAA,wBAAAA,SAAAA,EAAgBD,CAAAA,MAEnB,OAAA,QAAA,YADF,GAAIA,EAAaxH,eAAAA,KACf,QAAA,EAAuBlE,OAAOiE,IAAAA,CAAKyH,EAAaxH,eAAe,qBAA/D,IAAA,GAAA,EAAA,gBAAA,QAAA,IAAW0H,EAAX,OACM,QAAOF,EAAaxH,eAAAA,CAAgB0H,EAAAA,EAAc,YACpD,IAAA,CAAKpH,eAAAA,CAAgBgB,QAAAA,CACnB,kDAAkDoG,OAAAA,EAAAA,mCAHxD,OAAA,oBAAA,GAAA,gBAAA,uBAAA,SAAA,QAUA,OAAA,QAAA,YADF,GAAIF,EAAa1G,gBAAAA,KACf,QAAA,EAA6BhF,OAAOiE,IAAAA,CAAKyH,EAAa1G,gBAAgB,qBAAtE,IAAA,GAAA,EAAA,gBAAA,QAAA,IAAW6G,EAAX,OAAsE,CAAA,CAAA,EAC/DpG,GAAAA,OAAAA,EAASiG,EAAa1G,gBAAAA,CAAiB6G,EAAe,GACzD,IAAA,CAAKrH,eAAAA,CAAgBgB,QAAAA,CACnB,qCAAkF,OAA7CkG,EAAa1G,gBAAAA,CAAiB6G,EAAe,CAAA,gDAHxF,OAAA,oBAAA,GAAA,gBAAA,uBAAA,SAAA,IAUAH,EAAalE,4BAAAA,EACV,OAAOkE,EAAalE,4BAAAA,EAAiC,WAExD,IAAA,CAAKhD,eAAAA,CAAgBgB,QAAAA,CACnB,+DAKFkG,EAAarI,eAAAA,EACV,OAAOqI,EAAarI,eAAAA,EAAoB,YAE3C,IAAA,CAAKmB,eAAAA,CAAgBgB,QAAAA,CACnB,kDAGN,iBA/CmBgG,EAAAA,GAAAA,mBAArB,IAAqBA,GAArBM,GEHA,IAAAhG,GAAqBtD,QAAA,QAMrB,IAAqBuJ,gBAArB,iCAAqBA,EAGClF,CAAAA,SAHDkF,GAG0BhK,EAAA,IAAA,CAAA,cAFrC0E,EAAAA,IAAAA,CAAAA,QAAAA,CAAAA,IAAAA,CAEYI,UAAAA,CAAAA,EAAAA,IAAAA,CAFZJ,KAAAA,CAA2B,CAAC,QAI7BiD,IAAAA,wBAAAA,SAAAA,EAAgB1C,CAAAA,EACrB,GAAI,CAAC,IAAA,CAAKP,KAAAA,CAAMO,EAAAA,CAAY,CAC1B,IAAMW,EAAAA,CAAAA,EAAOG,GAAAA,IAAAA,EAAKd,EAAW,gBACvBrC,EAAOd,KAAKmI,KAAAA,CAAM,IAAA,CAAKnF,UAAAA,CAAWQ,QAAAA,CAASM,GACjD,CAAA,IAAA,CAAKlB,KAAAA,CAAMO,EAAAA,CAAarC,CAC1B,CAEA,OAAO,IAAA,CAAK8B,KAAAA,CAAMO,EACpB,iBAbmB+E,EAAAA,GAAAA,qBAArB,IAAqBA,GAArBE,GCPA,IAAA1J,GAAoBX,EAAAY,QAAA,WAAA,GAEpB,IAAM0J,GAAeC,GAAAA,OAAAA,CAAQD,YAAAA,CAERE,gBAArB,iCAAqBA,EAIUC,CAAAA,SAJVD,GAI4CrK,EAAA,IAAA,CAAA,eAHvDuK,EAAAA,IAAAA,CAAAA,UACAC,EAAAA,IAAAA,CAAAA,WAAAA,CAAAA,IAAAA,CAEqBF,WAAAA,CAAAA,EAAAA,IAAAA,CAHrBC,MAAAA,CAAmB,EAAA,CAAA,IAAA,CACnBC,QAAAA,CAAqB,EAEmC,OAEzD/G,IAAAA,iBAAAA,SAAAA,EAASgH,CAAAA,EACd,IAAA,CAAKF,MAAAA,CAAOrC,IAAAA,CAAKuC,EACnB,IAEOC,IAAAA,mBAAAA,SAAAA,EAAWD,CAAAA,EAChB,IAAA,CAAKD,QAAAA,CAAStC,IAAAA,CAAKuC,EACrB,IAEOE,IAAAA,oBAAAA,SAAAA,EAAYC,CAAAA,MACjB,EAIA,CAJA,CAAA,CAAA,EAAA,IAAA,CAAKN,WAAAA,CAAYC,MAAAA,EAAOrC,IAAAA,OAAxB,EAA4B,EACvB,IAAA,CAAKqC,MAAAA,CAAOnI,GAAAA,CAAIpD,SAAAA,UAAK,IAAImL,GAAa,GAAcnL,OAAX4L,EAAAA,MAAW5L,OAAAA,QAEzD,IAAA,CAAKuL,MAAAA,CAAS,EAAA,CACd,CAAA,EAAA,IAAA,CAAKD,WAAAA,CAAYE,QAAAA,EAAStC,IAAAA,OAA1B,EAA8B,EACzB,IAAA,CAAKsC,QAAAA,CAASpI,GAAAA,CAAIyI,SAAAA,UAAK,IAAIV,GAAa,GAAcU,OAAXD,EAAAA,MAAWC,OAAAA,QAE3D,IAAA,CAAKL,QAAAA,CAAW,EAClB,iBAvBmBH,EAAAA,GAAAA,0BAArB,IAAqBA,GAArBS,GCHA,IAAAtK,GAAoBX,EAAAY,QAAA,WAAA,GAEpB,IAAMsK,GAAUX,GAAAA,OAAAA,CAAQW,OAAAA,CAEHC,gBAArB,iCAAqBA,EACCV,CAAAA,SADDU,GAC2BhL,EAAA,IAAA,CAAA,cAAA,CAAA,IAAA,CAA1BsK,WAAAA,CAAAA,QAEbtI,IAAAA,gBAAAA,SAAAA,EAAQP,CAAAA,CAAkBwJ,CAAAA,EAC/B,IAAA,CAAKX,WAAAA,CAAYY,MAAAA,CAAOzJ,EAAAA,CAAY,IAAIsJ,GAAQI,SAAAA,CAAUF,EAC5D,iBALmBD,EAAAA,GAAAA,uBAArB,IAAqBA,GAArBI,GCgBA,IAAqBC,gBAArB,iCAAqBA,WAAAA,SACZC,IAAAA,uBAAAA,SAAAA,EACLhB,CAAAA,CACAiB,CAAAA,CACAC,CAAAA,MAGE,OAAA,QAAA,YAOA,OAAA,QAAA,YARF,GAAI,EAAOlB,EAAYmB,UAAAA,EAAe,QACpC,QAAA,EAAqBnB,EAAYmB,UAAAA,CAAWC,uBAAAA,CAC1CH,sBADF,IAAA,GAAA,EAAA,gBAAA,QAAA,IAAWlL,EAAX,QAGEmL,EAASnL,aAHX,OAAA,oBAAA,GAAA,gBAAA,uBAAA,SAAA,SAGWA,GAGJ,EAAOkL,EAAMI,eAAAA,EAAoB,QACxC,QAAA,EAAqBJ,EAAMI,eAAAA,oBAA3B,IAAA,GAAA,EAAA,gBAAA,QAAA,IAAWtL,EAAX,QAEEmL,EAASnL,aAFX,OAAA,oBAAA,GAAA,gBAAA,uBAAA,SAAA,SAKO,OAAOkL,EAAMK,aAAAA,EAAkB,WACtCL,EAAMK,aAAAA,CAAcJ,GAEbrI,MAAMC,OAAAA,CAAQmI,EAAMM,OAAO,GAClCN,EAAMM,OAAAA,CAAQC,OAAAA,CAAQzL,SAAAA,UAAUmL,EAASnL,SAIzC,OAAA,QAAA,YADF,GAAI,EAAOiK,EAAYmB,UAAAA,EAAe,QACpC,QAAA,EAAqBnB,EAAYmB,UAAAA,CAAWM,4BAAAA,CAC1CR,sBADF,IAAA,GAAA,EAAA,gBAAA,QAAA,IAAWlL,EAAX,QAGEmL,EAASnL,aAHX,OAAA,oBAAA,GAAA,gBAAA,uBAAA,SAAA,SAMOkL,EAAMS,WAAAA,EAEbR,EAASD,EAAMS,WAAW,CAE9B,iBArCmBX,EAAAA,GAAAA,8BAArB,IAAqBA,GAArBY,GCpBA,IAAqBC,gBAArB,iCAAqBA,WAAAA,SACZC,IAAAA,qBAAAA,SAAAA,EACL,CAIc,CAEdX,CAAAA,MALEY,EADF,EACEA,SACAC,EAFF,EAEEA,WACAC,EAHF,EAGEA,iBACAC,EAJF,EAIEA,YAIEH,CAAAA,EACFZ,EAASY,GAEFC,CAAAA,UAAAA,kBAAAA,EAAYD,QAAAA,GACnBZ,EAASa,EAAWD,QAAQ,EAG1BE,GACFA,EAAiBR,OAAAA,CAAQU,SAAAA,UAAOhB,EAASgB,KAGvCD,GACFA,EAAaT,OAAAA,CAAQ,gBAAGW,IAAAA,aAAcC,IAAAA,aAChCD,EAAAA,UAAAA,kBAAAA,EAAcL,QAAAA,GAChBZ,EAASiB,EAAaL,QAAQ,EAE5BM,CAAAA,UAAAA,kBAAAA,EAAeN,QAAAA,GACjBZ,EAASkB,EAAcN,QAAQ,CAEnC,EAEJ,iBA/BmBF,EAAAA,GAAAA,6BAArB,IAAqBA,GAArBS,GCGA,IAAqBC,gBAArB,iCAAqBA,QAETC,EAAAA,uDAA6C,IAAIxB,GACjDyB,EAAAA,uDAA0C,IAAIZ,UAHrCU,GAIjB5M,EAAA,IAAA,CAAA,kBAAAA,EAAA,IAAA,CAAA,eAAA,CAAA,IAAA,CAFQ6M,cAAAA,CAAAA,EAAAA,IAAAA,CACAC,YAAAA,CAAAA,QAGHC,IAAAA,sBAAAA,SAAAA,EACLzC,CAAAA,CACA0C,CAAAA,aAEA,IAAM7L,EAAY,EAAA,KAElB,OAAA,QAAA,gBAAA,QAAA,EAAoB6L,qBAApB,IAAA,GAAA,EAAA,gBAAA,QAAA,IAAWzB,EAAX,QACE,IAAA,CAAKsB,cAAAA,CAAevB,cAAAA,CAClBhB,EACAiB,EACClL,SAAAA,GACC,EAAKyM,YAAAA,CAAaX,YAAAA,CAAa9L,EAASoB,SAAAA,GACtCN,EAAU+G,IAAAA,CAAKzG,EACjB,EACF,aARJ,OAAA,oBAAA,GAAA,gBAAA,uBAAA,SAAA,IAYA,OAAON,CACT,iBAzBmByL,EAAAA,GAAAA,wBAArB,IAAqBA,GAArBK,GCHA,IAAqBC,gBAArB,iCAAqBA,EACCC,CAAAA,SADDD,GACUlN,EAAA,IAAA,CAAA,KAAA,CAAA,IAAA,CAATmN,EAAAA,CAAAA,QAEbjE,IAAAA,mBAAAA,SAAAA,EAAWzH,CAAAA,EAChB,GAAI,CACF,OAAA,IAAA,CAAK0L,EAAAA,CAAGC,QAAAA,CAAS3L,GACV,CAAA,CACT,CAAA,QAEU,CACR,MAAO,CAAA,CACT,CACF,IAEO6D,IAAAA,iBAAAA,SAAAA,EAAS7D,CAAAA,EACd,OAAO,IAAA,CAAK0L,EAAAA,CAAGE,YAAAA,CAAa5L,GAAU6L,QAAAA,CAAS,OACjD,IAEO/H,IAAAA,kBAAAA,SAAAA,EAAUgI,CAAAA,EACf,OAAO,IAAA,CAAKJ,EAAAA,CAAGK,WAAAA,CAAYD,EAC7B,iBApBmBL,EAAAA,GAAAA,qBAArB,IAAqBA,GAArBO,GhBYA,IAAMtD,GAAeC,EAAAA,OAAAA,CAAQD,YAAAA,CACvBuD,GAAa,uBAOEC,gBAArB,iCAAqBA,QAKCC,EAAAA,uDAAyC,CAAC,SAL3CD,GAK8C3N,EAAA,IAAA,CAAA,iBAJhDmB,EAAAA,IAAAA,CAAAA,aACT0M,EAAAA,IAAAA,CAAAA,gBACAC,EAAAA,IAAAA,CAAAA,oBAAAA,CAAAA,IAAAA,CAEYF,aAAAA,CAAAA,EAAAA,IAAAA,CAJHzM,SAAAA,CAAY,IAAIU,IAAAA,IAAAA,CACzBgM,YAAAA,CAAe,CAAA,EAAA,IAAA,CACfC,iBAAAA,CAAwC,EAEkB,OAE3DC,IAAAA,cAAAA,SAAAA,EAAMC,CAAAA,EACP,EAAOA,EAASC,KAAAA,EAAU,IAC5BD,CAAAA,EAASC,KAAAA,CAAM3D,WAAAA,CAAY4D,GAAAA,CACzB,yBACA,IAAA,CAAKC,iBAAAA,CAAkBC,IAAAA,CAAK,IAAA,CAAMJ,IAEpCA,EAASC,KAAAA,CAAMI,QAAAA,CAASC,QAAAA,CACtB,yBACA,IAAA,CAAKC,cAAAA,CAAeH,IAAAA,CAAK,IAAI,EAAA,EAIxB,EAAOJ,EAASQ,MAAAA,EAAW,KAElCR,CAAAA,EAASQ,MAAAA,CACP,cACA,IAAA,CAAKL,iBAAAA,CAAkBC,IAAAA,CAAK,IAAA,CAAMJ,IAGpCA,EAASQ,MAAAA,CAAO,WAAY,IAAA,CAAKD,cAAAA,CAAeH,IAAAA,CAAK,IAAI,EAAA,CAE7D,IAEaG,IAAAA,uBAAb,SAAaA,EAAeE,CAAAA,CAAYjD,CAAAA,oBAAxC,EAAA,qCACE,EAAKqC,YAAAA,CAAe,CAAA,EACpB,EAAKC,iBAAAA,IACLtC,eACF,QAEO2C,IAAAA,0BAAAA,SAAAA,EAAkBH,CAAAA,CAAoB1D,CAAAA,EAC3C,GAAI,EAAOA,EAAY2D,KAAAA,EAAU,IAC/B,GAAI,EAAO3D,EAAY2D,KAAAA,CAAMS,aAAAA,EAAkB,IAAa,CAC1D,IAAMC,EACF,IAAA,CAAKC,4BAAAA,CAA6BR,IAAAA,CAClC,IAAA,CACAJ,EACA1D,EACAA,EAAY0C,MAAM,EAGtB1C,EAAY2D,KAAAA,CAAMS,aAAAA,CAAcJ,QAAAA,CAC9B,CACExL,KAAM,yBACN+L,MAAOzE,EAAAA,OAAAA,CAAQ0E,WAAAA,CAAYC,4BAC7B,EACA,SAAC7D,EAAQM,UAAamD,EAAkCnD,IAE5D,MAEElB,EAAY2D,KAAAA,CAAMe,mBAAAA,CAAoBV,QAAAA,CACpC,yBACA,IAAA,CAAKM,4BAAAA,CAA6BR,IAAAA,CAAK,IAAA,CAAMJ,EAAU1D,SAKpD,EAAOA,EAAYkE,MAAAA,EAAW,KAErClE,EAAYkE,MAAAA,CACV,wBACA,IAAA,CAAKI,4BAAAA,CAA6BR,IAAAA,CAAK,IAAA,CAAMJ,EAAU1D,GAG7D,IAEasE,IAAAA,qCAAb,SAAaA,EACXZ,CAAAA,CACA1D,CAAAA,CACA0C,CAAAA,CACAxB,CAAAA,oBAJF,EAAA,eAYUyD,EAGAC,EAYFzM,EAGArB,EAGA+N,EACN,EAAA,EAAA,EAAA,EAAA,EAAW1N,EASLqD,EACA2B,mDAjCN,GALA,EAAKqH,iBAAAA,CAAkB5F,IAAAA,CAAK,CAC1BpF,KAAMwH,EAAY0D,QAAAA,CAASlL,IAAAA,CAC3BsM,QAAS9E,EAAY0D,QAAAA,CAASoB,OAAAA,EAChC,GAEI,EAAKvB,YAAAA,CAAc,CACfoB,EAA2B,EAAKnB,iBAAAA,CACnC1L,GAAAA,CAAI,gBAAGU,IAAAA,KAAMsM,IAAAA,cAAc,aAA+BA,OAAlBtM,EAAAA,eAAkBsM,OAAAA,KAC1DrJ,IAAAA,CAAK,MACFmJ,EAAe,IAAI/E,GACvB,GAA8T8E,OAA3TvB,GAAAA,kTAA2TuB,OAAAA,GAEhU3E,CAAAA,EAAYC,MAAAA,CAAOrC,IAAAA,CAAKgH,GACxB1D,IACA,SACF,CAEKlB,EAAY0D,QAAAA,CAASoB,OAAAA,IACxB,CAAA,EAAKvB,YAAAA,CAAe,CAAA,CAAA,EAGhBpL,EAAkB,IAAI4H,GAAuBC,GAG7ClJ,EAFkB,IAAIqI,GAAgBhH,GAEZiH,UAAAA,CAAW,EAAKkE,aAAa,EAC7DnL,EAAgBkI,WAAAA,CAAY+C,IAEtByB,EAAgB,IAAIvC,GAC1B,OAAA,QAAA,gBAAA,IAAA,EAAuBuC,EAAcpC,aAAAA,CAAczC,EAAa0C,wBAAhE,GAAA,EAAA,gBAAA,QAAWvL,EAAX,QACE,EAAKN,SAAAA,CAAU4G,GAAAA,CAAItG,aADrB,OAAA,oBAAA,GAAA,gBAAA,uBAAA,SAAA,IAIA,GAAI6I,EAAY0D,QAAAA,CAASoB,OAAAA,GAAW,CAClC5D,IACA,SACF,CAEM1G,EAAa,IAAIoI,GAAkBc,EAASqB,eAAe,EAC3D5I,EAAoB,IAAIuD,GAAkBlF,GAgBhD,SAf0B,IAAIhE,EAC5B,IAAIkK,GAAoBV,GACxB,IAAI5B,GACF5D,EACAkJ,EAAS5M,OAAAA,CAAQkO,OAAAA,CACjB7I,GAEF,IAAID,EACF1B,EACArC,EACArB,EACAqF,IAIoBvF,iBAAAA,CAAkB,EAAI,EAAKC,SAAAA,EAAYC,WAA/D,SACAqB,EAAgBkI,WAAAA,CAAY+C,IAE5BlC,gBACF,qBAxImBmC,EAAAA,GAAAA,wBAArB,IAAqBA,GAArB4B,GDpBA,IAAAnP,GAAeuN,EDIftN,CAAAA,OAAOC,OAAO,CAAGD,OAAOC,OAAO,CAACH,OAAO","sourcesContent":["var he=Object.create;var u=Object.defineProperty;var ue=Object.getOwnPropertyDescriptor;var pe=Object.getOwnPropertyNames;var ge=Object.getPrototypeOf,me=Object.prototype.hasOwnProperty;var ye=(l,e,t)=>e in l?u(l,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):l[e]=t;var n=(l,e)=>u(l,\"name\",{value:e,configurable:!0});var we=(l,e)=>{for(var t in e)u(l,t,{get:e[t],enumerable:!0})},Q=(l,e,t,s)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let i of pe(e))!me.call(l,i)&&i!==t&&u(l,i,{get:()=>e[i],enumerable:!(s=ue(e,i))||s.enumerable});return l};var f=(l,e,t)=>(t=l!=null?he(ge(l)):{},Q(e||!l||!l.__esModule?u(t,\"default\",{value:l,enumerable:!0}):t,l)),xe=l=>Q(u({},\"__esModule\",{value:!0}),l);var r=(l,e,t)=>ye(l,typeof e!=\"symbol\"?e+\"\":e,t);var Le={};we(Le,{default:()=>Ee});module.exports=xe(Le);var B=f(require(\"webpack\"),1);var Z=f(require(\"lodash\"),1);var{compact:ke,uniq:ve}=Z.default,M=class M{constructor(e,t,s){r(this,\"assetManager\");r(this,\"moduleDirectoryLocator\");r(this,\"licenseMetaAggregator\");this.assetManager=e,this.moduleDirectoryLocator=t,this.licenseMetaAggregator=s}async writeLicenseFiles(e,t){let s=this.getModuleDirs(e),i=await t.includePackages(),o=await this.licenseMetaAggregator.aggregateMeta([...new Set([...s,...i])]),a=JSON.stringify(o,null,2);this.assetManager.addFile(t.outputFilename,a);for(let c of Object.keys(t.additionalFiles)){let d=await t.additionalFiles[c](o);this.assetManager.addFile(c,d)}}getModuleDirs(e){return ve(ke(e.map(t=>this.moduleDirectoryLocator.getModuleDir(t))))}};n(M,\"LicenseFileWriter\");var m=M;var _=f(require(\"spdx-expression-validate\"),1);var I=class I{constructor(e,t=[]){r(this,\"alertAggregator\");r(this,\"preferredLicenses\");this.alertAggregator=e,this.preferredLicenses=t}identifyLicense(e,t){let s=`${e.name}@${e.version}`,i;return t.licenseOverrides[s]?i=t.licenseOverrides[s]:typeof e.license==\"object\"?i=e.license.type:e.license?i=e.license:Array.isArray(e.licenses)&&e.licenses.length>0?i=this.findPreferredLicense(e.licenses.map(o=>o.type))||e.licenses[0].type:typeof e.licenses==\"string\"&&(i=e.licenses),i?t.unacceptableLicenseTest(i)?this.alertAggregator.addError(`Found unacceptable license \"${i}\" for ${s}`):(0,_.default)(i)||this.alertAggregator.addError(`License \"${i}\" for ${s} is not a valid SPDX expression!`):this.alertAggregator.addError(`Could not find license info for ${s}`),i||null}findPreferredLicense(e){for(let t of this.preferredLicenses)for(let s of e)if(t===s)return t;return null}};n(I,\"LicenseIdentifier\");var y=I;var te=require(\"path\");var ee=f(require(\"needle\"),1);async function Ae(l){let e=await(0,ee.default)(\"get\",l);return e.statusCode===200?e.body:null}n(Ae,\"fetch\");var $e=\"https://raw.githubusercontent.com/spdx/license-list-data\",O=class O{constructor(e=Ae){r(this,\"request\");r(this,\"cache\");this.request=e,this.cache={}}async retrieveLicenseText(e){if(!this.cache[e]){let t=await this.request(`${$e}/main/text/${e}.txt`);this.cache[e]=t}return this.cache[e]||null}};n(O,\"DefaultLicenseTextProvider\");var w=O;var J=class J{constructor(e,t,s,i=new w){r(this,\"alertAggregator\");r(this,\"fileSystem\");r(this,\"options\");r(this,\"defaultLicenseReader\");this.alertAggregator=e,this.fileSystem=t,this.options=s,this.defaultLicenseReader=i}async readLicenseText(e,t,s){let i=`${e.name}@${e.version}`;if(!t)return null;if(t.indexOf(\"SEE LICENSE IN \")===0){let c=t.split(\" \")[3];try{return this.readFile(s,c)}catch{this.alertAggregator.addError(`could not find file specified in package.json license field of ${i}`)}}let o=this.fileSystem.listPaths(s),a=this.getLicenseFilename(o);return a!==null?this.readFile(s,a):this.options.replenishDefaultLicenseTexts?await this.getDefaultLicenseText(t):null}getLicenseFilename(e){for(let t of e)if(/^licen[cs]e/i.test(t))return t;return null}readFile(e,t){return this.fileSystem.readFile((0,te.join)(e,t)).replace(/\\r\\n/g,`\n`)}async getDefaultLicenseText(e){return await this.defaultLicenseReader.retrieveLicenseText(e)}};n(J,\"LicenseTextReader\");var x=J;var se=require(\"path\");var j=class j{constructor(e){r(this,\"fileSystem\");this.fileSystem=e}async readNoticeText(e){let t=this.fileSystem.listPaths(e).find(i=>/^notice/i.test(i));if(!t)return null;let s=(0,se.join)(e,t);return this.fileSystem.readFile(s).replace(/\\r\\n/g,`\n`)}};n(j,\"NoticeTextReader\");var k=j;var N=class N{constructor(e,t,s,i,o=new y(t),a=new x(t,e,s),c=new k(e)){r(this,\"options\");r(this,\"packageJsonReader\");r(this,\"licenseIdentifier\");r(this,\"licenseTextReader\");r(this,\"noticeTextReader\");this.options=s,this.packageJsonReader=i,this.licenseIdentifier=o,this.licenseTextReader=a,this.noticeTextReader=c}getNpmTarballUrl(e,t){let s=e[0]!==\"@\"?e:e.split(\"/\")[1],i=t.indexOf(\"+\"),o=i===-1?t:t.substring(0,i);return`https://registry.npmjs.org/${e}/-/${s}-${o}.tgz`}async aggregateMeta(e){let t=new Set,s=[],i=e.sort((o,a)=>this.packageJsonReader.readPackageJson(o).name.localeCompare(this.packageJsonReader.readPackageJson(a).name));for(let o of i){let a=this.packageJsonReader.readPackageJson(o),c=`${a.name}@${a.version}`;if(t.has(c)||this.options.excludedPackageTest(a.name,a.version))continue;t.add(c);let d=this.licenseIdentifier.identifyLicense(a,this.options),p=await this.licenseTextReader.readLicenseText(a,d,o),g=this.options.includeNoticeText?await this.noticeTextReader.readNoticeText(o):void 0;s.push({name:a.name,version:a.version,author:this.getAuthor(a),repository:this.getRepository(a),source:this.getNpmTarballUrl(a.name,a.version),license:d,licenseText:p,...g?{noticeText:g}:{}})}return s}getAuthor(e){return typeof e.author==\"object\"?`${e.author.name}${e.author.email?` <${e.author.email}>`:\"\"}${e.author.url?` (${e.author.url})`:\"\"}`:e.author}getRepository(e){return e.repository&&e.repository.url?e.repository.url:typeof e.repository==\"string\"?e.repository:null}};n(N,\"LicenseMetaAggregator\");var v=N;var h=require(\"path\");var z=class z{constructor(e,t,s){r(this,\"fileSystem\");r(this,\"buildRoot\");r(this,\"packageJsonReader\");this.fileSystem=e,this.buildRoot=t,this.packageJsonReader=s}getModuleDir(e){let t=e.substring(0,e.lastIndexOf(h.sep));return this.checkModuleDir(t)}checkModuleDir(e){let t=null,s=null,i=null;do{if(this.fileSystem.pathExists(`${e}${h.sep}package.json`)){let o=this.packageJsonReader.readPackageJson(e);o.name!==void 0&&o.version!==void 0&&(t=e,(o.license!==void 0||o.licenses!==void 0)&&(s=e))}i=e,e=(0,h.resolve)(`${e}${h.sep}..${h.sep}`)}while(!s&&e!==i&&e!==this.buildRoot);return s||t}};n(z,\"ModuleDirectoryLocator\");var A=z;var re=f(require(\"spdx-expression-validate\"),1);var Fe={additionalFiles:{},licenseOverrides:{},outputFilename:\"oss-licenses.json\",replenishDefaultLicenseTexts:!1,includeNoticeText:!1,unacceptableLicenseTest:n(()=>!1,\"unacceptableLicenseTest\"),excludedPackageTest:n(()=>!1,\"excludedPackageTest\"),includePackages:n(()=>[],\"includePackages\")},ie=Fe;var D=class D{constructor(e){r(this,\"alertAggregator\");this.alertAggregator=e}getOptions(e){return this.validateOptions(e),{...ie,...e}}validateOptions(e){if(e.additionalFiles)for(let t of Object.keys(e.additionalFiles))typeof e.additionalFiles[t]!=\"function\"&&this.alertAggregator.addError(`Invalid additionalFiles option: Value for key \"${t}\" is not a function!`);if(e.licenseOverrides)for(let t of Object.keys(e.licenseOverrides))(0,re.default)(e.licenseOverrides[t])||this.alertAggregator.addError(`Invalid licenseOverrides option: \"${e.licenseOverrides[t]}\" is not a valid SPDX expression!`);e.replenishDefaultLicenseTexts&&typeof e.replenishDefaultLicenseTexts!=\"boolean\"&&this.alertAggregator.addError(\"Invalid replenishDefaultLicenseTexts option: Not a boolean!\"),e.includePackages&&typeof e.includePackages!=\"function\"&&this.alertAggregator.addError(\"Invalid includePackages option: Not a function!\")}};n(D,\"OptionsProvider\");var $=D;var ne=require(\"path\");var G=class G{constructor(e){r(this,\"fileSystem\");r(this,\"cache\");this.fileSystem=e,this.cache={}}readPackageJson(e){if(!this.cache[e]){let t=(0,ne.join)(e,\"package.json\"),s=JSON.parse(this.fileSystem.readFile(t));this.cache[e]=s}return this.cache[e]}};n(G,\"PackageJsonReader\");var F=G;var ae=f(require(\"webpack\"),1);var oe=ae.default.WebpackError,W=class W{constructor(e){r(this,\"compilation\");r(this,\"errors\");r(this,\"warnings\");this.compilation=e,this.errors=[],this.warnings=[]}addError(e){this.errors.push(e)}addWarning(e){this.warnings.push(e)}flushAlerts(e){this.compilation.errors.push(...this.errors.map(t=>new oe(`${e}: ${t}`))),this.errors=[],this.compilation.warnings.push(...this.warnings.map(t=>new oe(`${e}: ${t}`))),this.warnings=[]}};n(W,\"WebpackAlertAggregator\");var S=W;var le=f(require(\"webpack\"),1);var Se=le.default.sources,q=class q{constructor(e){r(this,\"compilation\");this.compilation=e}addFile(e,t){this.compilation.assets[e]=new Se.RawSource(t)}};n(q,\"WebpackAssetManager\");var b=q;var U=class U{iterateModules(e,t,s){if(typeof e.chunkGraph<\"u\")for(let i of e.chunkGraph.getChunkModulesIterable(t))s(i);else if(typeof t.modulesIterable<\"u\")for(let i of t.modulesIterable)s(i);else typeof t.forEachModule==\"function\"?t.forEachModule(s):Array.isArray(t.modules)&&t.modules.forEach(i=>s(i));if(typeof e.chunkGraph<\"u\")for(let i of e.chunkGraph.getChunkEntryModulesIterable(t))s(i);else t.entryModule&&s(t.entryModule)}};n(U,\"WebpackChunkModuleIterator\");var E=U;var X=class X{iterateFiles({resource:e,rootModule:t,fileDependencies:s,dependencies:i},o){e?o(e):t?.resource&&o(t.resource),s&&s.forEach(a=>o(a)),i&&i.forEach(({originModule:a,_parentModule:c})=>{a?.resource&&o(a.resource),c?.resource&&o(c.resource)})}};n(X,\"WebpackModuleFileIterator\");var L=X;var H=class H{constructor(e=new E,t=new L){r(this,\"moduleIterator\");r(this,\"fileIterator\");this.moduleIterator=e,this.fileIterator=t}iterateChunks(e,t){let s=[];for(let i of t)this.moduleIterator.iterateModules(e,i,o=>{this.fileIterator.iterateFiles(o,a=>{s.push(a)})});return s}};n(H,\"WebpackChunkIterator\");var T=H;var V=class V{constructor(e){r(this,\"fs\");this.fs=e}pathExists(e){try{return this.fs.statSync(e),!0}catch{return!1}}readFile(e){return this.fs.readFileSync(e).toString(\"utf8\")}listPaths(e){return this.fs.readdirSync(e)}};n(V,\"WebpackFileSystem\");var C=V;var be=B.default.WebpackError,Y=\"WebpackLicensePlugin\",K=class K{constructor(e={}){r(this,\"pluginOptions\");r(this,\"filenames\");r(this,\"createdFiles\");r(this,\"observedCompilers\");this.pluginOptions=e,this.filenames=new Set,this.createdFiles=!1,this.observedCompilers=[]}apply(e){typeof e.hooks<\"u\"?(e.hooks.compilation.tap(\"webpack-license-plugin\",this.handleCompilation.bind(this,e)),e.hooks.watchRun.tapAsync(\"webpack-license-plugin\",this.handleWatchRun.bind(this))):typeof e.plugin<\"u\"&&(e.plugin(\"compilation\",this.handleCompilation.bind(this,e)),e.plugin(\"watchRun\",this.handleWatchRun.bind(this)))}async handleWatchRun(e,t){this.createdFiles=!1,this.observedCompilers=[],t()}handleCompilation(e,t){if(typeof t.hooks<\"u\")if(typeof t.hooks.processAssets<\"u\"){let s=this.handleChunkAssetOptimization.bind(this,e,t,t.chunks);t.hooks.processAssets.tapAsync({name:\"webpack-license-plugin\",stage:B.default.Compilation.PROCESS_ASSETS_STAGE_ANALYSE},(i,o)=>s(o))}else t.hooks.optimizeChunkAssets.tapAsync(\"webpack-license-plugin\",this.handleChunkAssetOptimization.bind(this,e,t));else typeof t.plugin<\"u\"&&t.plugin(\"optimize-chunk-assets\",this.handleChunkAssetOptimization.bind(this,e,t))}async handleChunkAssetOptimization(e,t,s,i){if(this.observedCompilers.push({name:t.compiler.name,isChild:t.compiler.isChild()}),this.createdFiles){let P=this.observedCompilers.map(({name:de,isChild:fe})=>`compiler: ${de}, isChild: ${fe}`).join(`\n`),ce=new be(`${Y}: Found licenses after license files were already created.\nIf you see this message, you ran into an edge case we thought would not happen. Please open an isssue at https://github.com/codepunkt/webpack-license-plugin/issues with details of your webpack configuration so we can invastigate it further.\n${P}`);t.errors.push(ce),i();return}t.compiler.isChild()||(this.createdFiles=!0);let o=new S(t),c=new $(o).getOptions(this.pluginOptions);o.flushAlerts(Y);let d=new T;for(let P of d.iterateChunks(t,s))this.filenames.add(P);if(t.compiler.isChild()){i();return}let p=new C(e.inputFileSystem),g=new F(p);await new m(new b(t),new A(p,e.options.context,g),new v(p,o,c,g)).writeLicenseFiles([...this.filenames],c),o.flushAlerts(Y),i()}};n(K,\"WebpackLicensePlugin\");var R=K;var Ee=R;\nmodule.exports = module.exports.default;\n","import WebpackLicensePlugin from './WebpackLicensePlugin'\n\nexport default WebpackLicensePlugin\n","import type { Chunk, Compilation, Compiler } from 'webpack'\nimport type IPluginOptions from './types/IPluginOptions'\nimport type IWebpackPlugin from './types/IWebpackPlugin'\nimport webpack from 'webpack'\nimport LicenseFileWriter from './LicenseFileWriter'\nimport LicenseMetaAggregator from './LicenseMetaAggregator'\nimport ModuleDirectoryLocator from './ModuleDirectoryLocator'\nimport OptionsProvider from './OptionsProvider'\nimport PackageJsonReader from './PackageJsonReader'\nimport WebpackAlertAggregator from './WebpackAlertAggregator'\nimport WebpackAssetManager from './WebpackAssetManager'\nimport WebpackChunkIterator from './WebpackChunkIterator'\nimport WebpackFileSystem from './WebpackFileSystem'\n\nconst WebpackError = webpack.WebpackError\nconst pluginName = 'WebpackLicensePlugin'\n\ninterface ObservedCompiler {\n name: string\n isChild: boolean\n}\n\nexport default class WebpackLicensePlugin implements IWebpackPlugin {\n private readonly filenames = new Set<string>()\n private createdFiles = false\n private observedCompilers: ObservedCompiler[] = []\n\n constructor(private pluginOptions: Partial<IPluginOptions> = {}) {}\n\n public apply(compiler: Compiler) {\n if (typeof compiler.hooks !== 'undefined') {\n compiler.hooks.compilation.tap(\n 'webpack-license-plugin',\n this.handleCompilation.bind(this, compiler),\n )\n compiler.hooks.watchRun.tapAsync(\n 'webpack-license-plugin',\n this.handleWatchRun.bind(this),\n )\n }\n // @ts-expect-error plugin doesn't exist on compiler\n else if (typeof compiler.plugin !== 'undefined') {\n // @ts-expect-error plugin doesn't exist on compiler\n compiler.plugin(\n 'compilation',\n this.handleCompilation.bind(this, compiler),\n )\n // @ts-expect-error plugin doesn't exist on compiler\n compiler.plugin('watchRun', this.handleWatchRun.bind(this))\n }\n }\n\n public async handleWatchRun(_: unknown, callback: () => void) {\n this.createdFiles = false\n this.observedCompilers = []\n callback()\n }\n\n public handleCompilation(compiler: Compiler, compilation: Compilation) {\n if (typeof compilation.hooks !== 'undefined') {\n if (typeof compilation.hooks.processAssets !== 'undefined') {\n const boundHandleChunkAssetOptimization\n = this.handleChunkAssetOptimization.bind(\n this,\n compiler,\n compilation,\n compilation.chunks,\n )\n\n compilation.hooks.processAssets.tapAsync(\n {\n name: 'webpack-license-plugin',\n stage: webpack.Compilation.PROCESS_ASSETS_STAGE_ANALYSE,\n },\n (assets, callback) => boundHandleChunkAssetOptimization(callback),\n )\n }\n else {\n compilation.hooks.optimizeChunkAssets.tapAsync(\n 'webpack-license-plugin',\n this.handleChunkAssetOptimization.bind(this, compiler, compilation),\n )\n }\n }\n // @ts-expect-error plugin doesn't exist on compilation\n else if (typeof compilation.plugin !== 'undefined') {\n // @ts-expect-error plugin doesn't exist on compilation\n compilation.plugin(\n 'optimize-chunk-assets',\n this.handleChunkAssetOptimization.bind(this, compiler, compilation),\n )\n }\n }\n\n public async handleChunkAssetOptimization(\n compiler: Compiler,\n compilation: Compilation,\n chunks: Set<Chunk>,\n callback: () => void,\n ) {\n this.observedCompilers.push({\n name: compilation.compiler.name,\n isChild: compilation.compiler.isChild(),\n })\n\n if (this.createdFiles) {\n const observedCompilersMessage = this.observedCompilers\n .map(({ name, isChild }) => `compiler: ${name}, isChild: ${isChild}`)\n .join('\\n')\n const errorMessage = new WebpackError(\n `${pluginName}: Found licenses after license files were already created.\\nIf you see this message, you ran into an edge case we thought would not happen. Please open an isssue at https://github.com/codepunkt/webpack-license-plugin/issues with details of your webpack configuration so we can invastigate it further.\\n${observedCompilersMessage}`,\n )\n compilation.errors.push(errorMessage)\n callback()\n return\n }\n\n if (!compilation.compiler.isChild()) {\n this.createdFiles = true\n }\n\n const alertAggregator = new WebpackAlertAggregator(compilation)\n const optionsProvider = new OptionsProvider(alertAggregator)\n\n const options = optionsProvider.getOptions(this.pluginOptions)\n alertAggregator.flushAlerts(pluginName)\n\n const chunkIterator = new WebpackChunkIterator()\n for (const filename of chunkIterator.iterateChunks(compilation, chunks)) {\n this.filenames.add(filename)\n }\n\n if (compilation.compiler.isChild()) {\n callback()\n return\n }\n\n const fileSystem = new WebpackFileSystem(compiler.inputFileSystem)\n const packageJsonReader = new PackageJsonReader(fileSystem)\n const licenseFileWriter = new LicenseFileWriter(\n new WebpackAssetManager(compilation),\n new ModuleDirectoryLocator(\n fileSystem,\n compiler.options.context,\n packageJsonReader,\n ),\n new LicenseMetaAggregator(\n fileSystem,\n alertAggregator,\n options,\n packageJsonReader,\n ),\n )\n\n await licenseFileWriter.writeLicenseFiles([...this.filenames], options)\n alertAggregator.flushAlerts(pluginName)\n\n callback()\n }\n}\n","import type IAssetManager from './types/IAssetManager'\nimport type ILicenseMetaAggregator from './types/ILicenseMetaAggregator'\nimport type IModuleDirectoryLocator from './types/IModuleDirectoryLocator'\nimport type IPluginOptions from './types/IPluginOptions'\nimport lodash from 'lodash'\n\nconst { compact, uniq } = lodash\n\nexport default class LicenseFileWriter {\n constructor(\n private assetManager: IAssetManager,\n private moduleDirectoryLocator: IModuleDirectoryLocator,\n private licenseMetaAggregator: ILicenseMetaAggregator,\n ) {}\n\n public async writeLicenseFiles(\n filenames: string[],\n options: IPluginOptions,\n ): Promise<void> {\n const moduleDirs = this.getModuleDirs(filenames)\n const includePackages = await options.includePackages()\n const licenseMeta = await this.licenseMetaAggregator.aggregateMeta([\n ...new Set([...moduleDirs, ...includePackages]),\n ])\n\n const fileContents = JSON.stringify(licenseMeta, null, 2)\n this.assetManager.addFile(options.outputFilename, fileContents)\n\n for (const filename of Object.keys(options.additionalFiles)) {\n const result = await options.additionalFiles[filename](licenseMeta)\n this.assetManager.addFile(filename, result)\n }\n }\n\n public getModuleDirs(filenames: string[]): string[] {\n return uniq(\n compact(\n filenames.map((filename) => {\n return this.moduleDirectoryLocator.getModuleDir(filename)\n }),\n ),\n )\n }\n}\n","import type IAlertAggregator from './types/IAlertAggregator'\nimport type IPackageJson from './types/IPackageJson'\nimport type IPluginOptions from './types/IPluginOptions'\nimport validate from 'spdx-expression-validate'\n\n/**\n * Identifies license type based on package.json and selects\n * preferred license type if multiple are found\n */\nexport default class LicenseIdentifier {\n constructor(\n private alertAggregator: IAlertAggregator,\n private readonly preferredLicenses: string[] = [],\n ) {}\n\n public identifyLicense(\n meta: IPackageJson,\n options: Pick<\n IPluginOptions,\n 'licenseOverrides' | 'unacceptableLicenseTest'\n >,\n ): string | null {\n const id = `${meta.name}@${meta.version}`\n let license: string\n\n if (options.licenseOverrides[id]) {\n license = options.licenseOverrides[id]\n }\n else if (typeof meta.license === 'object') {\n license = meta.license.type\n }\n else if (meta.license) {\n license = meta.license\n }\n else if (Array.isArray(meta.licenses) && meta.licenses.length > 0) {\n // handle deprecated `licenses` field\n license\n = this.findPreferredLicense(meta.licenses.map(l => l.type))\n || meta.licenses[0].type\n }\n else if (typeof meta.licenses === 'string') {\n // handle invalid string values for deprecated `licenses` field\n // unfortunately, these are rather common\n license = meta.licenses\n }\n\n if (!license) {\n this.alertAggregator.addError(`Could not find license info for ${id}`)\n }\n else if (options.unacceptableLicenseTest(license)) {\n this.alertAggregator.addError(\n `Found unacceptable license \"${license}\" for ${id}`,\n )\n }\n else if (!validate(license)) {\n this.alertAggregator.addError(\n `License \"${license}\" for ${id} is not a valid SPDX expression!`,\n )\n }\n\n return license || null\n }\n\n private findPreferredLicense(licenseTypes: string[]): string | null {\n for (const preferredLicenseType of this.preferredLicenses) {\n for (const licenseType of licenseTypes) {\n if (preferredLicenseType === licenseType) {\n return preferredLicenseType\n }\n }\n }\n return null\n }\n}\n","import type IAlertAggregator from './types/IAlertAggregator'\nimport type IDefaultLicenseTextProvider from './types/IDefaultLicenseTextProvider'\nimport type IFileSystem from './types/IFileSystem'\nimport type IPackageJson from './types/IPackageJson'\nimport type IPluginOptions from './types/IPluginOptions'\nimport { join } from 'node:path'\nimport DefaultLicenseTextProvider from './DefaultLicenseTextProvider'\n\n/**\n * Reads license text from license file.\n *\n * If no license file is found, default license texts can automatically\n * be added (either retrieved from spdx github repository or read from\n * a directory).\n */\nexport default class LicenseTextReader {\n constructor(\n private alertAggregator: IAlertAggregator,\n private fileSystem: IFileSystem,\n private options: Pick<IPluginOptions, 'replenishDefaultLicenseTexts'>,\n private defaultLicenseReader: IDefaultLicenseTextProvider = new DefaultLicenseTextProvider(),\n ) {}\n\n public async readLicenseText(\n meta: IPackageJson,\n license: string,\n moduleDir: string,\n ): Promise<string | null> {\n const id = `${meta.name}@${meta.version}`\n\n if (!license) {\n return null\n }\n\n if (license.indexOf('SEE LICENSE IN ') === 0) {\n const filename = license.split(' ')[3]\n try {\n return this.readFile(moduleDir, filename)\n }\n // eslint-disable-next-line unused-imports/no-unused-vars\n catch (e) {\n this.alertAggregator.addError(\n `could not find file specified in package.json license field of ${id}`,\n )\n }\n }\n\n const pathsInModuleDir = this.fileSystem.listPaths(moduleDir)\n const licenseFilename = this.getLicenseFilename(pathsInModuleDir)\n\n if (licenseFilename !== null) {\n return this.readFile(moduleDir, licenseFilename)\n }\n\n if (this.options.replenishDefaultLicenseTexts) {\n return await this.getDefaultLicenseText(license)\n }\n\n return null\n }\n\n public getLicenseFilename(paths: string[]): string | null {\n for (const path of paths) {\n if (/^licen[cs]e/i.test(path)) {\n return path\n }\n }\n\n return null\n }\n\n public readFile(directory: string, filename: string): string {\n return this.fileSystem\n .readFile(join(directory, filename))\n .replace(/\\r\\n/g, '\\n')\n }\n\n public async getDefaultLicenseText(license: string): Promise<string> {\n return await this.defaultLicenseReader.retrieveLicenseText(license)\n }\n}\n","import needle from 'needle'\n\nexport async function fetch(url: string): Promise<string | null> {\n const res = await needle('get', url)\n return res.statusCode === 200 ? res.body : null\n}\n\nexport const REPO_URL\n = 'https://raw.githubusercontent.com/spdx/license-list-data'\n\ninterface IDefaultLicenseTextCache {\n [license: string]: string | null\n}\n\nexport default class DefaultLicenseTextProvider {\n private cache: IDefaultLicenseTextCache = {}\n\n constructor(private request: typeof fetch = fetch) {}\n\n public async retrieveLicenseText(license: string): Promise<string | null> {\n if (!this.cache[license]) {\n const res = await this.request(`${REPO_URL}/main/text/${license}.txt`)\n this.cache[license] = res\n }\n\n return this.cache[license] || null\n }\n}\n","import type IFileSystem from './types/IFileSystem'\nimport { join } from 'node:path'\n\n/**\n * Reads notice text from notice file.\n *\n * If no notice file is found returns null.\n */\nexport default class NoticeTextReader {\n constructor(private fileSystem: IFileSystem) {}\n\n public async readNoticeText(moduleDir: string): Promise<string | null> {\n const noticeFilename = this.fileSystem\n .listPaths(moduleDir)\n .find(filename => /^notice/i.test(filename))\n\n if (!noticeFilename) {\n return null\n }\n\n const noticeFilePath = join(moduleDir, noticeFilename)\n return this.fileSystem.readFile(noticeFilePath).replace(/\\r\\n/g