UNPKG

unplugin-typegpu

Version:

Build plugins for TypeGPU, enabling seamless JavaScript -> WGSL transpilation and improved debugging.

2 lines 7.17 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _standalone = require('@babel/standalone'); var y = _interopRequireWildcard(_standalone);var _defu = require('defu'); var _defu2 = _interopRequireDefault(_defu);var _tinyest = require('tinyest');var _tinyestforwgsl = require('tinyest-for-wgsl');var E={include:/\.m?[jt]sx?(?:\?.*)?$/,autoNamingEnabled:!0,earlyPruning:!0};function F(r){return JSON.stringify(r).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}function k(r,e){let t="",n=e;for(;;)if(n.type==="MemberExpression"){if((n.property.type==="Literal"||n.property.type==="StringLiteral")&&n.property.value==="~unstable"){n=n.object;continue}if(n.property.type!=="Identifier")break;t=t?`${n.property.name}.${t}`:n.property.name,n=n.object}else if(n.type==="Identifier"){t=t?`${n.name}.${t}`:n.name;break}else break;return r.tgpuAliases.has(t)}function A(r,e){if(r.source.value==="typegpu")for(let t of r.specifiers)t.type==="ImportDefaultSpecifier"||t.type==="ImportSpecifier"&&t.imported.type==="Identifier"&&t.imported.name==="tgpu"?e.tgpuAliases.add(t.local.name):t.type==="ImportNamespaceSpecifier"&&e.tgpuAliases.add(`${t.local.name}.tgpu`)}var N=["fn","vertexFn","fragmentFn","computeFn"];function g(r,e){return r.callee.type==="CallExpression"&&r.callee.callee.type==="MemberExpression"&&r.callee.callee.property.type==="Identifier"&&N.includes(r.callee.callee.property.name)&&r.arguments.length===1&&k(e,r.callee.callee.object)}function T(r,e){var t;return(e==null?void 0:e.type)==="VariableDeclarator"&&e.id.type==="Identifier"?e.id.name:r.type==="FunctionDeclaration"||r.type==="FunctionExpression"?(t=r.id)==null?void 0:t.name:void 0}var x=["bindGroupLayout","vertexLayout","privateVar","workgroupVar","const","slot","accessor","comptime",...N,"struct","unstruct","createBuffer","createMutable","createReadonly","createUniform","createQuerySet","createPipeline","createGuardedComputePipeline","createTexture","createSampler","createComparisonSampler"];function l(r,e){if(r.type==="CallExpression"){if(g(r,e)||r.callee.type==="Identifier"&&x.includes(r.callee.name))return!0;if(r.callee.type==="MemberExpression"){if(r.callee.property.type==="Identifier"){if(x.includes(r.callee.property.name))return!0;if(r.callee.property.name==="$name")return!1}return l(r.callee.object,e)}}return r.type==="TaggedTemplateExpression"?l(r.tag,e):!1}function P(r){if(r.type==="Identifier")return r.name;if(r.type==="MemberExpression")return P(r.property)}function p(r,e,t){if(r.autoNamingEnabled)if(e.type==="VariableDeclarator"&&e.id.type==="Identifier"&&e.init&&l(e.init,r))t(e.init,e.id.name);else if(e.type==="AssignmentExpression"&&l(e.right,r)){let n=P(e.left);n&&t(e.right,n)}else((e.type==="Property"||e.type==="ObjectProperty")&&e.key.type==="Identifier"&&l(e.value,r)||(e.type==="ClassProperty"||e.type==="PropertyDefinition")&&e.value&&e.key.type==="Identifier"&&l(e.value,r))&&t(e.value,e.key.name)}var S="use gpu",z= exports.h =[/["']use gpu["']/,/t(ype)?gpu/];var _pathe = require('pathe');var _picomatch = require('picomatch'); var _picomatch2 = _interopRequireDefault(_picomatch);function I(r){let e=r||[];return Array.isArray(e)?e:[e]}var D=/\\/g;function u(r){return r.replace(D,"/")}var j=/^(?:\/|(?:[A-Z]:)?[/\\|])/i;function R(r){return j.test(r)}function _(r,e){if(r.startsWith("**")||R(r))return u(r);let t=_pathe.resolve.call(void 0, e,r);return u(t)}function v(r){if(r instanceof RegExp)return o=>{let a=u(o),m=r.test(a);return r.lastIndex=0,m};let e=process.cwd(),t=_(r,e),n=_picomatch2.default.call(void 0, t,{dot:!0});return o=>{let a=u(o);return n(a)}}function G(r,e){if(!(!r&&!e))return t=>r!=null&&r.some(n=>n(t))?!1:e!=null&&e.some(n=>n(t))?!0:!(e&&e.length>0)}function $(r){return typeof r=="string"||r instanceof RegExp?{include:[r]}:Array.isArray(r)?{include:r}:{exclude:r.exclude?I(r.exclude):void 0,include:r.include?I(r.include):void 0}}function M(r){if(!r)return;let{exclude:e,include:t}=$(r),n=e==null?void 0:e.map(v),o=t==null?void 0:t.map(v);return G(n,o)}function C(r){let e=M(r);return e?t=>!!e(t):void 0}var O=y.packages.template,i=y.packages.types;function b(r){var e,t;return("directives"in r.body?(t=(e=r.body)==null?void 0:e.directives)!=null?t:[]:[]).map(n=>n.value.value).includes(S)}function s(r){return i.identifier(r)}function c(r,e){let{params:t,body:n,externalNames:o}=_tinyestforwgsl.transpileFn.call(void 0, r),a=T(r,e),m=i.objectExpression([i.objectProperty(s("v"),i.numericLiteral(_tinyest.FORMAT_VERSION)),i.objectProperty(s("name"),a?i.stringLiteral(a):i.buildUndefinedNode()),i.objectProperty(s("ast"),O.expression`${F({params:t,body:n,externalNames:o})}`()),i.objectProperty(s("externals"),i.arrowFunctionExpression([],i.blockStatement([i.returnStatement(i.objectExpression(o.map(d=>i.objectProperty(s(d),s(d),!1,d!=="this"))))])))]);return i.callExpression(i.arrowFunctionExpression([s("$")],i.logicalExpression("&&",i.callExpression(i.memberExpression(i.assignmentExpression("??=",i.memberExpression(s("globalThis"),s("__TYPEGPU_META__")),i.newExpression(s("WeakMap"),[])),s("set")),[i.assignmentExpression("=",i.memberExpression(s("$"),s("f")),r),m]),i.memberExpression(s("$"),s("f")))),[i.objectExpression([])])}function f(r,e){return i.callExpression(O.expression("globalThis.__TYPEGPU_AUTONAME__ ?? (a => a)",{placeholderPattern:!1})(),[r,i.stringLiteral(e)])}function V(r){return{VariableDeclarator(e){p(r,e.node,(t,n)=>{e.get("init").replaceWith(f(t,n))})},AssignmentExpression(e){p(r,e.node,(t,n)=>{e.get("right").replaceWith(f(t,n))})},ObjectProperty(e){p(r,e.node,(t,n)=>{e.get("value").replaceWith(f(t,n))})},ClassProperty(e){p(r,e.node,(t,n)=>{e.get("value").replaceWith(f(t,n))})},ImportDeclaration(e){A(e.node,r)},ArrowFunctionExpression(e){let t=e.node,n=e.parentPath.node;b(t)&&(e.replaceWith(c(t,n)),e.skip())},FunctionExpression(e){let t=e.node,n=e.parentPath.node;b(t)&&(e.replaceWith(c(t,n)),e.skip())},FunctionDeclaration(e){let t=e.node,n=e.parentPath.node,o=i.functionExpression(t.id,t.params,t.body);b(e.node)&&t.id&&(e.replaceWith(i.variableDeclaration("const",[i.variableDeclarator(t.id,c(o,n))])),e.skip())},CallExpression(e){let t=e.node;if(g(t,r)){let n=t.arguments[0];if(n&&(n.type==="FunctionExpression"||n.type==="ArrowFunctionExpression")){let o=c(n,null);e.replaceWith(i.callExpression(t.callee,[o])),e.skip()}}}}}function ee(){return{visitor:{Program(r,e){let t=_defu2.default.call(void 0, e.opts,E),n=e.filename,o=C(t);if(n&&o&&!(o!=null&&o(n)))return;let a={tgpuAliases:new Set(t.forceTgpuAlias?[t.forceTgpuAlias]:[]),fileId:n,autoNamingEnabled:t.autoNamingEnabled};r.traverse(V(a))}}}}exports.a = E; exports.b = F; exports.c = A; exports.d = g; exports.e = T; exports.f = p; exports.g = S; exports.h = z; exports.i = ee; //# sourceMappingURL=chunk-DEVVEJF4.cjs.map