wgsl-plus
Version:
A WGSL preprocessor, prettifier, minifier, obfuscator, and compiler with C-style macros, conditional compilation, file linking, and multi-format output for WebGPU shaders.
36 lines (35 loc) • 1.29 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = generateOutput;
const path_1 = __importDefault(require("path"));
function generateOutput(outputPath, content, exportType) {
const ext = path_1.default.extname(outputPath);
if (ext === '.wgsl') {
return content;
}
else if (ext === '.ts') {
const escapedContent = content.replace(/`/g, '\\`').replace(/\${/g, '\\${');
return `export default \`${escapedContent}\`;`;
}
else if (ext === '.js') {
if (!exportType) {
exportType = 'esm';
}
const escapedContent = content.replace(/`/g, '\\`').replace(/\${/g, '\\${');
if (exportType === 'esm') {
return `export default \`${escapedContent}\`;`;
}
else if (exportType === 'commonjs') {
return `module.exports = \`${escapedContent}\`;`;
}
else {
throw new Error(`Invalid export type: ${exportType}. Must be 'esm' or 'commonjs'`);
}
}
else {
throw new Error(`Unsupported output extension: ${ext}. Must be .wgsl, .js, or .ts`);
}
}
;