[READ-ONLY] Mirror of https://github.com/CanadaHonk/porffor. An ahead-of-time JavaScript compiler porffor.dev
Something went wrong. Try again.
JavaScript
12345678910111213141516171819202122232425262728293031323334353637import './prefs.js';import parse from './parser/index.js';
const usesTemporal = node => { if (node == null || typeof node !== 'object') return false; if (Array.isArray(node)) return node.some(usesTemporal);
if (node.type === 'Identifier') return node.name === 'Temporal'; if (node.type === 'Literal') return false; if (node.type === 'TemplateLiteral') return usesTemporal(node.expressions); if (node.type === 'TemplateElement') return false;
if (node.type === 'Property' || node.type === 'PropertyDefinition' || node.type === 'MethodDefinition') { return (node.computed && usesTemporal(node.key)) || usesTemporal(node.value); }
if (node.type === 'VariableDeclarator') return usesTemporal(node.init); if (node.type === 'FunctionDeclaration' || node.type === 'FunctionExpression') return usesTemporal(node.params) || usesTemporal(node.body); if (node.type === 'ClassDeclaration' || node.type === 'ClassExpression') return usesTemporal(node.superClass) || usesTemporal(node.body);
for (const key in node) { if (key[0] === '_' || key === 'start' || key === 'end') continue; if (usesTemporal(node[key])) return true; }
return false;};
export default input => { const types = Prefs.parseTypes || Prefs.t || globalThis.file?.endsWith('.ts'); globalThis.typedInput = types && Prefs.optTypes;
const ast = parse(input, { module: !!Prefs.module, ts: types }); if (usesTemporal(ast)) ast._usesTemporal = true; return ast;};