UNPKG

esbuild-raw-plugin

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.

3 lines (2 loc) 1.85 kB
"use strict";var o=Object.create;var c=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var $=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty;var h=(e,t)=>{for(var a in t)c(e,a,{get:t[a],enumerable:!0})},f=(e,t,a,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of g(t))!w.call(e,i)&&i!==a&&c(e,i,{get:()=>t[i],enumerable:!(s=m(t,i))||s.enumerable});return e};var d=(e,t,a)=>(a=e!=null?o($(e)):{},f(t||!e||!e.__esModule?c(a,"default",{value:e,enumerable:!0}):a,e)),y=e=>f(c({},"__esModule",{value:!0}),e);var p={};h(p,{raw:()=>S});module.exports=y(p);var l=d(require("fs")),x=d(require("path")),S=e=>({name:`raw-${Math.random().toString(36).slice(2,10)}`,setup(t){var s,i;let a=(s=e==null?void 0:e.ext)!=null?s:["ts","tsx","js","jsx","mjs","mts","module.css","module.scss","css","scss"];t.onResolve({filter:/\?raw$/},r=>({path:r.path,pluginData:x.default.resolve(r.resolveDir,r.path).replace(/\?raw$/,""),namespace:"raw"})),t.onLoad({filter:/\?raw$/,namespace:"raw"},r=>{let n=r.pluginData;if(e!=null&&e.loader&&e.loader!=="text")return{contents:l.default.readFileSync(n,"utf8"),loader:e.loader};if(l.default.existsSync(n)&&l.default.lstatSync(n).isDirectory()&&(n=x.default.join(n,"index")),!l.default.existsSync(n)){for(let u of a)if(l.default.existsSync(`${n}.${u}`)){n+=`.${u}`;break}}if(!l.default.existsSync(n))throw new Error(`File not found: ${r.pluginData} Checked extensions: ${a.join(", ")}. You can customize this using { ext: [...] }.`);return{contents:l.default.readFileSync(n,"utf8"),loader:"text"}}),(i=e==null?void 0:e.textExtensions)!=null&&i.length&&t.onLoad({filter:new RegExp(`.(${e.textExtensions.map(r=>r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|")})$`)},r=>({contents:l.default.readFileSync(r.path,"utf8"),loader:"text"}))}});0&&(module.exports={raw});