esbuild-raw-loader
Version:
An ESBuild and TSUP plugin that allows importing files as raw text. Useful for loading code files in documentation, interactive demos, or tools like react-live.
4 lines (3 loc) • 2.5 kB
JavaScript
;var P=Object.create;var h=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var j=Object.getOwnPropertyNames;var R=Object.getPrototypeOf,D=Object.prototype.hasOwnProperty;var k=(e,a)=>{for(var n in a)h(e,n,{get:a[n],enumerable:!0})},$=(e,a,n,d)=>{if(a&&typeof a=="object"||typeof a=="function")for(let l of j(a))!D.call(e,l)&&l!==n&&h(e,l,{get:()=>a[l],enumerable:!(d=S(a,l))||d.enumerable});return e};var E=(e,a,n)=>(n=e!=null?P(R(e)):{},$(a||!e||!e.__esModule?h(n,"default",{value:e,enumerable:!0}):n,e)),O=e=>$(h({},"__esModule",{value:!0}),e);var T={};k(T,{raw:()=>F});module.exports=O(T);var f=E(require("fs")),w=E(require("path")),v=["ts","tsx","js","jsx","mjs","mts","module.css","module.scss","css","scss"],F=e=>({name:(e==null?void 0:e.name)||"esbuild-raw-plugin",setup(a){var d,l,y,L;let n=(l=(d=e==null?void 0:e.ext)==null?void 0:d.map(r=>r.replace(/^\./,"")))!=null?l:v;if(a.onResolve({filter:/\?(raw|text|buffer|binary|base64|dataurl|file)$/},r=>{let c=r.path.lastIndexOf("?"),s=c!==-1?r.path.slice(0,c):r.path,t=c!==-1?r.path.slice(c+1):void 0;return{path:s,namespace:"raw",pluginData:{fullPath:w.default.resolve(r.resolveDir,s),query:t}}}),a.onLoad({filter:/.*/,namespace:"raw"},r=>{var x;let{fullPath:c,query:s}=r.pluginData,t=c;if(f.default.existsSync(t)&&f.default.lstatSync(t).isDirectory()&&(t=w.default.join(t,"index")),!f.default.existsSync(t)){let m=n.find(g=>f.default.existsSync(`${t}.${g}`));m&&(t+=`.${m}`)}if(!f.default.existsSync(t))throw new Error(`File not found: ${c}
Checked extensions: ${n.join(", ")}.
You can customize extensions list using { ext: [...] }.`);let u=f.default.readFileSync(t),i=s==null?void 0:s.toLowerCase(),b=(x=e==null?void 0:e.loader)!=null?x:"text";switch(i){case"buffer":case"binary":b="binary";break;case"text":case"file":case"base64":case"dataurl":b=i;break;case"raw":break}return{contents:u,loader:b}}),e!=null&&e.customLoaders||e!=null&&e.textExtensions){let r=[...new Set([...Object.keys((y=e.customLoaders)!=null?y:{}),...(L=e==null?void 0:e.textExtensions)!=null?L:[]])].sort((s,t)=>t.length-s.length),c=new RegExp(`\\.(${r.map(s=>s.replace(/^\./,"").replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|")})$`);a.onLoad({filter:c},s=>{var x,m;let t=s.path,u=r.find(g=>t.endsWith(g)),i=(x=e.customLoaders)==null?void 0:x[u!=null?u:""];return!i&&((m=e==null?void 0:e.textExtensions)!=null&&m.includes(u!=null?u:""))&&(i="text"),i?{contents:f.default.readFileSync(t),loader:i}:void 0})}}});0&&(module.exports={raw});