simplify module wrapping

pull/7738/head
Rich Harris 8 years ago
parent 8f5303ad30
commit c765ec6acc

@ -8,7 +8,7 @@ import globalWhitelist from '../utils/globalWhitelist';
import reservedNames from '../utils/reservedNames';
import namespaces from '../utils/namespaces';
import { removeNode, removeObjectKey } from '../utils/removeNode';
import getModuleWrapper from './shared/utils/getModuleWrapper';
import wrapModule from './shared/utils/wrapModule';
import annotateWithScopes from '../utils/annotateWithScopes';
import clone from '../utils/clone';
import DomBlock from './dom/Block';
@ -305,7 +305,9 @@ export default class Generator {
generate(result: string, options: CompileOptions, { banner = '', sharedPath, helpers, name, format }: GenerateOptions ) {
const pattern = /\[✂(\d+)-(\d+)$/;
const parts = result.split('✂]');
const module = wrapModule(result, format, name, options, banner, sharedPath, helpers, this.imports, this.source);
const parts = module.split('✂]');
const finalChunk = parts.pop();
const compiled = new Bundle({ separator: '' });
@ -316,10 +318,6 @@ export default class Generator {
});
}
const { intro, outro } = getModuleWrapper(format, name, options, banner, sharedPath, helpers, this.imports, this.source);
addString(intro + '\n\n');
const { filename } = options;
// special case — the source file doesn't actually get used anywhere. we need
@ -346,7 +344,6 @@ export default class Generator {
});
addString(finalChunk);
addString('\n\n' + outro);
const { css, cssMap } = this.customElement ?
{ css: null, cssMap: null } :

@ -407,17 +407,17 @@ export default function dom(
// special case
const global = `_svelteTransitionManager`;
inlineHelpers += `var ${generator.alias('transitionManager')} = window.${global} || (window.${global} = ${code});\n\n`;
inlineHelpers += `\n\nvar ${generator.alias('transitionManager')} = window.${global} || (window.${global} = ${code});\n\n`;
} else {
const alias = generator.alias(expression.id.name);
if (alias !== expression.id.name)
code.overwrite(expression.id.start, expression.id.end, alias);
inlineHelpers += `${code}\n\n`;
inlineHelpers += `\n\n${code}`;
}
});
result = inlineHelpers + result;
result += inlineHelpers;
}
const filename = options.filename && (

@ -7,7 +7,10 @@ interface Dependency {
source: string;
}
export default function getModuleWrapper(
const wrappers = { es, amd, cjs, iife, umd, eval: expr };
export default function wrapModule(
code: string,
format: ModuleFormat,
name: string,
options: CompileOptions,
@ -16,8 +19,8 @@ export default function getModuleWrapper(
helpers: { name: string, alias: string }[],
imports: Node[],
source: string
) {
if (format === 'es') return getEsWrapper(name, options, banner, sharedPath, helpers, imports, source);
): string {
if (format === 'es') return es(code, name, options, banner, sharedPath, helpers, imports, source);
const dependencies = imports.map((declaration, i) => {
const defaultImport = declaration.specifiers.find(
@ -56,16 +59,17 @@ export default function getModuleWrapper(
return { name, statements, source: declaration.source.value };
});
if (format === 'amd') return getAmdWrapper(name, options, banner, dependencies);
if (format === 'cjs') return getCjsWrapper(name, options, banner, sharedPath, helpers, dependencies);
if (format === 'iife') return getIifeWrapper(name, options, banner, dependencies);
if (format === 'umd') return getUmdWrapper(name, options, banner, dependencies);
if (format === 'eval') return getEvalWrapper(name, options, banner, dependencies);
if (format === 'amd') return amd(code, name, options, banner, dependencies);
if (format === 'cjs') return cjs(code, name, options, banner, sharedPath, helpers, dependencies);
if (format === 'iife') return iife(code, name, options, banner, dependencies);
if (format === 'umd') return umd(code, name, options, banner, dependencies);
if (format === 'eval') return expr(code, name, options, banner, dependencies);
throw new Error(`Not implemented: ${format}`);
}
function getEsWrapper(
function es(
code: string,
name: string,
options: CompileOptions,
banner: string,
@ -78,25 +82,25 @@ function getEsWrapper(
`import { ${helpers.map(h => h.name === h.alias ? h.name : `${h.name} as ${h.alias}`).join(', ')} } from ${JSON.stringify(sharedPath)};`
);
const importBlock = imports
const importBlock = imports.length > 0 && (
imports
.map((declaration: Node) => source.slice(declaration.start, declaration.end))
.join('\n');
.join('\n')
);
return {
intro: deindent`
return deindent`
${banner}
${importHelpers}
${importBlock}
export default (function() {
`,
outro: deindent`
${code}
return ${name};
}());`
};
}());`;
}
function getAmdWrapper(
function amd(
code: string,
name: string,
options: CompileOptions,
banner: string,
@ -108,20 +112,17 @@ function getAmdWrapper(
const id = options.amd && options.amd.id;
return {
intro: deindent`
return deindent`
define(${id ? `"${id}", ` : ''}${sourceString}function(${paramString(dependencies)}) { "use strict";
${getCompatibilityStatements(dependencies)}
`,
outro: deindent`
${code}
return ${name};
});`
};
});`;
}
function getCjsWrapper(
function cjs(
code: string,
name: string,
options: CompileOptions,
banner: string,
@ -137,12 +138,13 @@ function getCjsWrapper(
}).join('\n')
);
const requireBlock = dependencies
const requireBlock = dependencies.length > 0 && (
dependencies
.map(d => `var ${d.name} = require("${d.source}");`)
.join('\n\n');
.join('\n\n')
);
const intro = requireBlock ?
deindent`
return deindent`
${banner}
"use strict";
@ -150,20 +152,13 @@ function getCjsWrapper(
${requireBlock}
${getCompatibilityStatements(dependencies)}
` :
deindent`
${banner}
"use strict";
${helperBlock}
`;
const outro = `module.exports = ${name};`
${code}
return { intro, outro };
module.exports = ${name};`
}
function getIifeWrapper(
function iife(
code: string,
name: string,
options: CompileOptions,
banner: string,
@ -175,22 +170,18 @@ function getIifeWrapper(
const globals = getGlobals(dependencies, options);
return {
intro: deindent`
return deindent`
${banner}
var ${options.name} = (function(${paramString(dependencies)}) { "use strict";
${getCompatibilityStatements(dependencies)}
`,
outro: deindent`
${code}
return ${name};
}(${globals.join(', ')}));`
};
}(${globals.join(', ')}));`;
}
function getUmdWrapper(
function umd(
code: string,
name: string,
options: CompileOptions,
banner: string,
@ -212,8 +203,7 @@ function getUmdWrapper(
const globals = getGlobals(dependencies, options);
return {
intro: deindent`
return deindent`
${banner}
(function(global, factory) {
typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory(${cjsDeps}) :
@ -223,16 +213,15 @@ function getUmdWrapper(
${getCompatibilityStatements(dependencies)}
`,
${code}
outro: deindent`
return ${name};
})));`
};
})));`;
}
function getEvalWrapper(
function expr(
code: string,
name: string,
options: CompileOptions,
banner: string,
@ -240,17 +229,16 @@ function getEvalWrapper(
) {
const globals = getGlobals(dependencies, options);
return {
intro: deindent`
return deindent`
(function (${paramString(dependencies)}) { "use strict";
${banner}
${getCompatibilityStatements(dependencies)}
`,
${code}
outro: `return ${name};\n\n}(${globals.join(', ')}))`
};
return ${name};
}(${globals.join(', ')}))`;
}
function paramString(dependencies: Dependency[]) {

@ -191,7 +191,6 @@ var proto = {
/* generated by Svelte vX.Y.Z */
var _actual = (function() {
var template = (function() {
return {
data: function () {
@ -259,7 +258,6 @@ function SvelteComponent(options) {
}
assign(SvelteComponent.prototype, proto);
return SvelteComponent;
}());

@ -1,9 +1,7 @@
/* generated by Svelte vX.Y.Z */
import { appendNode, assign, createElement, createText, detachNode, init, insertNode, noop, proto, setAttribute } from "svelte/shared.js";
export default (function() {
var template = (function() {
return {
data: function () {
@ -71,6 +69,5 @@ function SvelteComponent(options) {
}
assign(SvelteComponent.prototype, proto);
return SvelteComponent;
}());

@ -167,7 +167,6 @@ var proto = {
/* generated by Svelte vX.Y.Z */
var _actual = (function() {
var template = (function() {
return {
components: {
@ -229,7 +228,6 @@ function SvelteComponent(options) {
}
assign(SvelteComponent.prototype, proto);
return SvelteComponent;
}());

@ -1,9 +1,7 @@
/* generated by Svelte vX.Y.Z */
import { assign, callAll, init, noop, proto } from "svelte/shared.js";
export default (function() {
var template = (function() {
return {
components: {
@ -65,6 +63,5 @@ function SvelteComponent(options) {
}
assign(SvelteComponent.prototype, proto);
return SvelteComponent;
}());

@ -167,7 +167,6 @@ var proto = {
/* generated by Svelte vX.Y.Z */
var _actual = (function() {
var template = (function() {
return {
computed: {
@ -213,7 +212,6 @@ SvelteComponent.prototype._recompute = function _recompute(changed, state) {
if (differs(state.b, (state.b = template.computed.b(state.x)))) changed.b = true;
}
};
return SvelteComponent;
}());

@ -1,9 +1,7 @@
/* generated by Svelte vX.Y.Z */
import { assign, differs, init, noop, proto } from "svelte/shared.js";
export default (function() {
var template = (function() {
return {
computed: {
@ -49,6 +47,5 @@ SvelteComponent.prototype._recompute = function _recompute(changed, state) {
if (differs(state.b, (state.b = template.computed.b(state.x)))) changed.b = true;
}
}
return SvelteComponent;
}());

@ -187,7 +187,6 @@ var proto = {
/* generated by Svelte vX.Y.Z */
var _actual = (function() {
function encapsulateStyles(node) {
setAttribute(node, "svelte-2363328337", "");
}
@ -241,7 +240,6 @@ function SvelteComponent(options) {
}
assign(SvelteComponent.prototype, proto);
return SvelteComponent;
}());

@ -1,9 +1,7 @@
/* generated by Svelte vX.Y.Z */
import { appendNode, assign, createElement, detachNode, init, insertNode, noop, proto, setAttribute } from "svelte/shared.js";
export default (function() {
function encapsulateStyles(node) {
setAttribute(node, "svelte-2363328337", "");
}
@ -57,6 +55,5 @@ function SvelteComponent(options) {
}
assign(SvelteComponent.prototype, proto);
return SvelteComponent;
}());

@ -187,7 +187,6 @@ var proto = {
/* generated by Svelte vX.Y.Z */
var _actual = (function() {
function create_main_fragment(state, component) {
var div, text;
@ -248,7 +247,6 @@ assign(SvelteComponent.prototype, proto, {
this.parentNode.removeChild(this);
}
});
return SvelteComponent;
}());

@ -1,9 +1,7 @@
/* generated by Svelte vX.Y.Z */
import { appendNode, assign, createElement, createText, detachNode, init, insertNode, noop, proto } from "svelte/shared.js";
export default (function() {
function create_main_fragment(state, component) {
var div, text;
@ -64,6 +62,5 @@ assign(SvelteComponent.prototype, proto, {
this.parentNode.removeChild(this);
}
});
return SvelteComponent;
}());

@ -200,7 +200,6 @@ var proto = {
/* generated by Svelte vX.Y.Z */
var _actual = (function() {
function create_main_fragment(state, component) {
var text, p, text_1;
@ -352,7 +351,6 @@ function SvelteComponent(options) {
}
assign(SvelteComponent.prototype, proto);
return SvelteComponent;
}());

@ -1,9 +1,7 @@
/* generated by Svelte vX.Y.Z */
import { appendNode, assign, createElement, createText, destroyEach, detachAfter, detachNode, init, insertNode, noop, proto } from "svelte/shared.js";
export default (function() {
function create_main_fragment(state, component) {
var text, p, text_1;
@ -155,6 +153,5 @@ function SvelteComponent(options) {
}
assign(SvelteComponent.prototype, proto);
return SvelteComponent;
}());

@ -187,7 +187,6 @@ var proto = {
/* generated by Svelte vX.Y.Z */
var _actual = (function() {
var template = (function() {
return {
methods: {
@ -250,7 +249,6 @@ function SvelteComponent(options) {
}
assign(SvelteComponent.prototype, template.methods, proto);
return SvelteComponent;
}());

@ -1,9 +1,7 @@
/* generated by Svelte vX.Y.Z */
import { appendNode, assign, createElement, createText, detachNode, init, insertNode, noop, proto } from "svelte/shared.js";
export default (function() {
var template = (function() {
return {
methods: {
@ -66,6 +64,5 @@ function SvelteComponent(options) {
}
assign(SvelteComponent.prototype, template.methods, proto);
return SvelteComponent;
}());

@ -191,7 +191,6 @@ var proto = {
/* generated by Svelte vX.Y.Z */
var _actual = (function() {
function create_main_fragment(state, component) {
var if_block_anchor;
@ -294,7 +293,6 @@ function SvelteComponent(options) {
}
assign(SvelteComponent.prototype, proto);
return SvelteComponent;
}());

@ -1,9 +1,7 @@
/* generated by Svelte vX.Y.Z */
import { appendNode, assign, createComment, createElement, createText, detachNode, init, insertNode, noop, proto } from "svelte/shared.js";
export default (function() {
function create_main_fragment(state, component) {
var if_block_anchor;
@ -106,6 +104,5 @@ function SvelteComponent(options) {
}
assign(SvelteComponent.prototype, proto);
return SvelteComponent;
}());

@ -191,7 +191,6 @@ var proto = {
/* generated by Svelte vX.Y.Z */
var _actual = (function() {
function create_main_fragment(state, component) {
var if_block_anchor;
@ -269,7 +268,6 @@ function SvelteComponent(options) {
}
assign(SvelteComponent.prototype, proto);
return SvelteComponent;
}());

@ -1,9 +1,7 @@
/* generated by Svelte vX.Y.Z */
import { appendNode, assign, createComment, createElement, createText, detachNode, init, insertNode, noop, proto } from "svelte/shared.js";
export default (function() {
function create_main_fragment(state, component) {
var if_block_anchor;
@ -81,6 +79,5 @@ function SvelteComponent(options) {
}
assign(SvelteComponent.prototype, proto);
return SvelteComponent;
}());

@ -183,7 +183,6 @@ var proto = {
/* generated by Svelte vX.Y.Z */
var _actual = (function() {
function create_main_fragment(state, component) {
var div;
@ -233,7 +232,6 @@ function SvelteComponent(options) {
}
assign(SvelteComponent.prototype, proto);
return SvelteComponent;
}());

@ -1,9 +1,7 @@
/* generated by Svelte vX.Y.Z */
import { assign, createElement, detachNode, init, insertNode, noop, proto, setStyle } from "svelte/shared.js";
export default (function() {
function create_main_fragment(state, component) {
var div;
@ -53,6 +51,5 @@ function SvelteComponent(options) {
}
assign(SvelteComponent.prototype, proto);
return SvelteComponent;
}());

@ -183,7 +183,6 @@ var proto = {
/* generated by Svelte vX.Y.Z */
var _actual = (function() {
function create_main_fragment(state, component) {
var div;
@ -228,7 +227,6 @@ function SvelteComponent(options) {
}
assign(SvelteComponent.prototype, proto);
return SvelteComponent;
}());

@ -1,9 +1,7 @@
/* generated by Svelte vX.Y.Z */
import { assign, createElement, detachNode, init, insertNode, noop, proto, setStyle } from "svelte/shared.js";
export default (function() {
function create_main_fragment(state, component) {
var div;
@ -48,6 +46,5 @@ function SvelteComponent(options) {
}
assign(SvelteComponent.prototype, proto);
return SvelteComponent;
}());

@ -183,7 +183,6 @@ var proto = {
/* generated by Svelte vX.Y.Z */
var _actual = (function() {
function create_main_fragment(state, component) {
var div;
@ -228,7 +227,6 @@ function SvelteComponent(options) {
}
assign(SvelteComponent.prototype, proto);
return SvelteComponent;
}());

@ -1,9 +1,7 @@
/* generated by Svelte vX.Y.Z */
import { assign, createElement, detachNode, init, insertNode, noop, proto, setStyle } from "svelte/shared.js";
export default (function() {
function create_main_fragment(state, component) {
var div;
@ -48,6 +46,5 @@ function SvelteComponent(options) {
}
assign(SvelteComponent.prototype, proto);
return SvelteComponent;
}());

@ -183,7 +183,6 @@ var proto = {
/* generated by Svelte vX.Y.Z */
var _actual = (function() {
function create_main_fragment(state, component) {
var div, text, div_1, div_1_style_value;
@ -239,7 +238,6 @@ function SvelteComponent(options) {
}
assign(SvelteComponent.prototype, proto);
return SvelteComponent;
}());

@ -1,9 +1,7 @@
/* generated by Svelte vX.Y.Z */
import { assign, createElement, createText, detachNode, init, insertNode, noop, proto } from "svelte/shared.js";
export default (function() {
function create_main_fragment(state, component) {
var div, text, div_1, div_1_style_value;
@ -59,6 +57,5 @@ function SvelteComponent(options) {
}
assign(SvelteComponent.prototype, proto);
return SvelteComponent;
}());

@ -187,7 +187,6 @@ var proto = {
/* generated by Svelte vX.Y.Z */
var _actual = (function() {
function create_main_fragment(state, component) {
var input;
@ -239,7 +238,6 @@ function SvelteComponent(options) {
}
assign(SvelteComponent.prototype, proto);
return SvelteComponent;
}());

@ -1,9 +1,7 @@
/* generated by Svelte vX.Y.Z */
import { addListener, assign, createElement, detachNode, init, insertNode, proto, removeListener } from "svelte/shared.js";
export default (function() {
function create_main_fragment(state, component) {
var input;
@ -55,6 +53,5 @@ function SvelteComponent(options) {
}
assign(SvelteComponent.prototype, proto);
return SvelteComponent;
}());

@ -185,7 +185,6 @@ var proto = {
/* generated by Svelte vX.Y.Z */
var _actual = (function() {
function create_main_fragment(state, component) {
var input;
@ -226,7 +225,6 @@ function SvelteComponent(options) {
}
assign(SvelteComponent.prototype, proto);
return SvelteComponent;
}());

@ -1,9 +1,7 @@
/* generated by Svelte vX.Y.Z */
import { assign, createElement, detachNode, init, insertNode, noop, proto, setInputType } from "svelte/shared.js";
export default (function() {
function create_main_fragment(state, component) {
var input;
@ -44,6 +42,5 @@ function SvelteComponent(options) {
}
assign(SvelteComponent.prototype, proto);
return SvelteComponent;
}());

@ -202,7 +202,6 @@ var proto = {
/* generated by Svelte vX.Y.Z */
var _actual = (function() {
function create_main_fragment(state, component) {
var div;
@ -253,7 +252,6 @@ function SvelteComponent(options) {
}
assign(SvelteComponent.prototype, proto);
return SvelteComponent;
}());

@ -1,9 +1,7 @@
/* generated by Svelte vX.Y.Z */
import { assign, children, claimElement, createElement, detachNode, init, insertNode, noop, proto } from "svelte/shared.js";
export default (function() {
function create_main_fragment(state, component) {
var div;
@ -54,6 +52,5 @@ function SvelteComponent(options) {
}
assign(SvelteComponent.prototype, proto);
return SvelteComponent;
}());

@ -195,7 +195,6 @@ var proto = {
/* generated by Svelte vX.Y.Z */
var _actual = (function() {
function create_main_fragment(state, component) {
var audio, audio_updating = false, audio_animationframe, audio_paused_value = true;
@ -322,7 +321,6 @@ function SvelteComponent(options) {
}
assign(SvelteComponent.prototype, proto);
return SvelteComponent;
}());

@ -1,9 +1,7 @@
/* generated by Svelte vX.Y.Z */
import { addListener, assign, callAll, createElement, detachNode, init, insertNode, proto, removeListener, timeRangesToArray } from "svelte/shared.js";
export default (function() {
function create_main_fragment(state, component) {
var audio, audio_updating = false, audio_animationframe, audio_paused_value = true;
@ -130,6 +128,5 @@ function SvelteComponent(options) {
}
assign(SvelteComponent.prototype, proto);
return SvelteComponent;
}());

@ -181,7 +181,6 @@ var proto = {
/* generated by Svelte vX.Y.Z */
var _actual = (function() {
var template = (function() {
return {
components: {
@ -254,7 +253,6 @@ function SvelteComponent(options) {
}
assign(SvelteComponent.prototype, proto);
return SvelteComponent;
}());

@ -3,7 +3,6 @@ import { assign, callAll, createText, detachNode, init, insertNode, noop, proto
import Imported from 'Imported.html';
export default (function() {
var template = (function() {
return {
components: {
@ -76,6 +75,5 @@ function SvelteComponent(options) {
}
assign(SvelteComponent.prototype, proto);
return SvelteComponent;
}());

@ -167,7 +167,6 @@ var proto = {
/* generated by Svelte vX.Y.Z */
var _actual = (function() {
var template = (function() {
return {
// this test should be removed in v2
@ -216,7 +215,6 @@ function SvelteComponent(options) {
}
assign(SvelteComponent.prototype, proto);
return SvelteComponent;
}());

@ -1,9 +1,7 @@
/* generated by Svelte vX.Y.Z */
import { assign, callAll, init, noop, proto } from "svelte/shared.js";
export default (function() {
var template = (function() {
return {
// this test should be removed in v2
@ -52,6 +50,5 @@ function SvelteComponent(options) {
}
assign(SvelteComponent.prototype, proto);
return SvelteComponent;
}());

@ -167,7 +167,6 @@ var proto = {
/* generated by Svelte vX.Y.Z */
var _actual = (function() {
var template = (function() {
return {
methods: {
@ -217,7 +216,6 @@ function SvelteComponent(options) {
assign(SvelteComponent.prototype, template.methods, proto);
template.setup(SvelteComponent);
return SvelteComponent;
}());

@ -1,9 +1,7 @@
/* generated by Svelte vX.Y.Z */
import { assign, init, noop, proto } from "svelte/shared.js";
export default (function() {
var template = (function() {
return {
methods: {
@ -53,6 +51,5 @@ function SvelteComponent(options) {
assign(SvelteComponent.prototype, template.methods, proto);
template.setup(SvelteComponent);
return SvelteComponent;
}());

@ -191,7 +191,6 @@ var proto = {
/* generated by Svelte vX.Y.Z */
var _actual = (function() {
function create_main_fragment(state, component) {
var div, text, p, text_1, text_2, text_3, text_4, p_1, text_5, text_6, text_8, if_block_4_anchor;
@ -457,7 +456,6 @@ function SvelteComponent(options) {
}
assign(SvelteComponent.prototype, proto);
return SvelteComponent;
}());

@ -1,9 +1,7 @@
/* generated by Svelte vX.Y.Z */
import { appendNode, assign, createComment, createElement, createText, detachNode, init, insertNode, noop, proto } from "svelte/shared.js";
export default (function() {
function create_main_fragment(state, component) {
var div, text, p, text_1, text_2, text_3, text_4, p_1, text_5, text_6, text_8, if_block_4_anchor;
@ -269,6 +267,5 @@ function SvelteComponent(options) {
}
assign(SvelteComponent.prototype, proto);
return SvelteComponent;
}());
Loading…
Cancel
Save