UNPKG

fuse-box

Version:

Fuse-Box a bundler that does it right

56 lines (50 loc) 2.38 kB
import { each } from "realm-utils"; import { RequireStatement } from "../../core/nodes/RequireStatement"; import { FileAbstraction } from "../../core/FileAbstraction"; import { QuantumCore } from "../QuantumCore"; export class StatementModification { public static perform(core: QuantumCore, file: FileAbstraction): Promise<void> { return each(file.requireStatements, (statement: RequireStatement) => { if (statement.isComputed) { let customSolution = core.getCustomSolution(file); if (customSolution && !core.api.hashesUsed()) { if (customSolution.rules) { customSolution.rules.fn(statement, core); } statement.setFunctionName("$fsx.p"); } else { if (core.opts.isTargetServer() || core.opts.isTargetUniveral()) { core.api.useServerRequire(); statement.setFunctionName('$fsx.s'); } else { statement.setFunctionName('$fsx.r'); } } } else { let resolvedFile = statement.resolve(); if (resolvedFile) { if (resolvedFile.isProcessPolyfill() && !core.opts.shouldBundleProcessPolyfill()) { return statement.removeWithIdentifier(); } if (!resolvedFile.dependents.has(file)) { resolvedFile.dependents.add(file); } resolvedFile.amountOfReferences++; // trying to setup hoisting here if (statement.identifier) { file.registerHoistedIdentifiers(statement.identifier, statement, resolvedFile); } statement.setFunctionName('$fsx.r'); statement.setValue(resolvedFile.getID()); } else { if (core.opts.isTargetServer() || core.opts.isTargetUniveral()) { core.api.useServerRequire(); statement.setFunctionName('$fsx.s'); } else { statement.setFunctionName('$fsx.r'); } } } }); } }