UNPKG

bundle-declarations-webpack-plugin

Version:

Webpack plugin which wraps https://www.npmjs.com/package/dts-bundle-generator/

1 lines 3.71 kB
import{generateDtsBundle as e}from"dts-bundle-generator";import{Buffer as t}from"node:buffer";import r from"node:events";import{existsSync as o,mkdirSync as s}from"node:fs";import{resolve as i,dirname as a}from"node:path";import{Worker as n}from"node:worker_threads";function p(e,t,r,o){Object.defineProperty(e,t,{get:r,set:o,enumerable:!0,configurable:!0})}var c=globalThis,l={},f={},m=c.parcelRequire94c2;null==m&&((m=function(e){if(e in l)return l[e].exports;if(e in f){var t=f[e];delete f[e];var r={id:e,exports:{}};return l[e]=r,t.call(r.exports,r,r.exports),r.exports}var o=Error("Cannot find module '"+e+"'");throw o.code="MODULE_NOT_FOUND",o}).register=function(e,t){f[e]=t},c.parcelRequire94c2=m);var u=m.register;u("7GnAZ",function(t,r){p(t.exports,"compile",()=>a);let o=/^export\s+{\s*};?\s*$/gmi,s=/^export\s+\*.*?\bfrom\s+"[\.~\/].*$/gmi,i=/^\s*?[\r\n]+/gmi;function a(t,{compilationOptions:r,removeEmptyExports:a,removeEmptyLines:n,removeRelativeReExport:p}){return new Promise((c,l)=>{try{let l=e(t,r).flatMap(e=>e.split("\n").map(e=>e.trimEnd())).filter(e=>!(n&&i.test(e))&&!(a&&o.test(e))&&!(p&&s.test(e))).join("\n");c(Buffer.from(l))}catch(e){l(e)}})}}),u("emdrQ",function(e,t){p(e.exports,"getBundleURL",()=>r,e=>r=e);var r,o={};r=function(e){var t=o[e];return t||(t=function(){try{throw Error()}catch(t){var e=(""+t.stack).match(/(https?|file|ftp|(chrome|moz|safari-web)-extension):\/\/[^)\n]+/g);if(e)return(""+e[2]).replace(/^((?:https?|file|ftp|(chrome|moz|safari-web)-extension):\/\/.+)\/[^/]+$/,"$1")+"/"}return"/"}(),o[e]=t),t}});var d=m("7GnAZ"),h={};p(h,"DefaultOptions",()=>g),p(h,"DefaultEntryOptions",()=>E);let g={outFile:"index.d.ts",removeEmptyLines:!0,removeEmptyExports:!0,compilationOptions:{preferredConfigPath:"./tsconfig.json"}},E={output:{sortNodes:!0,noBanner:!0}},x="BundleDeclarationsWebpackPlugin";class b extends r{_options;constructor(e){super({captureRejections:!0}),this._options=e?{...g,...e}:g}apply(e){let{webpack:{sources:r,Compilation:p},options:{watch:c}}=e,{RawSource:l}=r,{entry:f,outFile:m,blockingWatch:u}=this._options,h=this.getEntriesFromConfig(f);if(c&&!u){let r;e.hooks.thisCompilation.tap(x,(c,l)=>{c.hooks.processAssets.tapPromise({name:x,stage:p.PROCESS_ASSETS_STAGE_ADDITIONAL},async p=>{h??=this.getDefaultEntries(c),r=new n(new URL("worker.9b976c2b.js",import.meta.url),{workerData:{entries:h,options:this._options},stderr:!0,stdout:!0}).on("message",r=>{this.emit("compiled",r);let n=i(e.outputPath,m),p=a(n);o(p)||s(p,{recursive:!0}),e.outputFileSystem?.writeFile(n,t.from(r),e=>{e?this.emit("error",e):this.emit("updated")})}).on("error",e=>this.emit("error",e)).on("exit",e=>{0!==e&&this.emit("error",Error(`Background generator exited with code ${e}`))})})}),e.hooks.watchClose.tap(x,()=>r?.terminate())}else e.hooks.thisCompilation.tap(x,(e,t)=>{e.hooks.processAssets.tapPromise({name:x,stage:p.PROCESS_ASSETS_STAGE_ADDITIONAL},async t=>{let r=e.getLogger(x);try{h??=this.getDefaultEntries(e),r.log("Creating .d.ts bundle",h),e.emitAsset(m,new l(await (0,d.compile)(h,this._options))),r.log(".d.ts bundle created",m)}catch(e){r.warn("Failed to create .d.ts",e)}})})}getDefaultEntries(e){let t=new Set;for(let r of e.entrypoints.values())for(let o of r.chunks)for(let r of e.chunkGraph.getChunkModulesIterable(o)){let{resource:e}=r;e&&e.endsWith(".ts")&&t.add({...E,filePath:e})}return Array.from(t)}getEntriesFromConfig(e){return e?"string"==typeof e?[{...E,filePath:e}]:Array.isArray(e)?e.map(e=>"string"==typeof e?{...E,filePath:e}:{...E,...e}):[{...E,...e}]:void 0}}var y=b,$=m("7GnAZ").compile;export{x as PLUGIN_NAME,b as BundleDeclarationsWebpackPlugin,y as default,$ as compile,g as DefaultOptions,E as DefaultEntryOptions};