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.
26 lines (25 loc) • 999 B
text/typescript
import path from "path";
export default // Generate output content based on file extension and export type
function generateOutput(outputPath: string, content: string, exportType?: string): string {
const ext = path.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`);
}
}