typegpu
Version:
A thin layer between JS and WebGPU/WGSL that improves development experience and allows for faster iteration.
33 lines (32 loc) • 974 B
JavaScript
import { isMatInstance, isVecInstance } from "../data/wgslTypes.js";
import { logger } from "../tgpuLogger.js";
export function safeStringify(item) {
if (Array.isArray(item)) {
return `[${item.map(safeStringify).join(', ')}]`;
}
const asString = String(item);
if (asString !== '[object Object]') {
return asString;
}
try {
return JSON.stringify(item);
}
catch (error) {
logger.warn('suspicious', 'Error parsing JSON:', error);
return '<invalid json>';
}
}
export function niceStringify(item) {
if (isVecInstance(item) || isMatInstance(item)) {
return item.toString();
}
if (Array.isArray(item)) {
return `[${item.map(niceStringify).join(', ')}]`;
}
if (item && typeof item === 'object') {
return `{ ${Object.entries(item)
.map(([key, value]) => `${key}: ${niceStringify(value)}`)
.join(', ')} }`;
}
return String(item);
}