Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | 26x 26x 26x 1669x 7x 1662x 8x 7x 8x 8x 8x 8x 15x 15x 14x 14x | import { HtmlCompilerModule, HtmlCompilerContext } from '../htmlCompiler'; import { InternalScriptNode, ExternalScriptNode, MimeType } from '../../..'; import {resolveResPath} from '../../../fs/pathUtils'; export class ScriptModule implements HtmlCompilerModule { async enterNode(htmlContext: HtmlCompilerContext): Promise<void> { if (InternalScriptNode.isInternalScriptNode(htmlContext.node)) { // compile internal <script> await compileInternalScript(htmlContext.node, htmlContext); } else if (ExternalScriptNode.isExternalScriptNode(htmlContext.node)) { // compile external <script> await compileExternalScript(htmlContext.node, htmlContext); } } } async function compileInternalScript(node: InternalScriptNode, htmlContext: HtmlCompilerContext): Promise<void> { await compileScript(htmlContext, node.scriptContent); } async function compileExternalScript(node: ExternalScriptNode, htmlContext: HtmlCompilerContext): Promise<void> { const pipelineContext = htmlContext.pipelineContext; const resPath = resolveResPath(node.src, pipelineContext.fragment.path); const scriptContent = await pipelineContext.pipeline.getRawText(resPath, MimeType.JAVASCRIPT); await compileScript(htmlContext, scriptContent); } async function compileScript(htmlContext: HtmlCompilerContext, scriptText: string): Promise<void> { // create eval context. This will use parent scope if it exists, or else will fall back to current scope. const evalContext = htmlContext.createParentScopeEvalContext(); // compile and execute await htmlContext.pipelineContext.pipeline.compileScript(scriptText, evalContext); // remove when done htmlContext.node.removeSelf(); htmlContext.setDeleted(); } |