diff --git a/.gitignore b/.gitignore index acf9b214fb..d7c1b39fcf 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,8 @@ node_modules compiler ssr +!test/compiler +!test/ssr .nyc_output coverage coverage.lcov diff --git a/rollup.config.ssr.js b/rollup.config.ssr.js index 8f0e19c5d0..dd15e6592f 100644 --- a/rollup.config.ssr.js +++ b/rollup.config.ssr.js @@ -2,7 +2,7 @@ import nodeResolve from 'rollup-plugin-node-resolve'; import commonjs from 'rollup-plugin-commonjs'; export default { - entry: 'src/ssr/register.js', + entry: 'src/server-side-rendering/register.js', moduleName: 'svelte', targets: [ { dest: 'ssr/register.js', format: 'cjs' } @@ -13,7 +13,7 @@ export default { ], external: [ 'svelte', 'magic-string' ], paths: { - svelte: '../dist/svelte.js' + svelte: '../compiler/svelte.js' }, sourceMap: true }; diff --git a/src/ssr/compile.js b/src/server-side-rendering/compile.js similarity index 100% rename from src/ssr/compile.js rename to src/server-side-rendering/compile.js diff --git a/src/ssr/register.js b/src/server-side-rendering/register.js similarity index 100% rename from src/ssr/register.js rename to src/server-side-rendering/register.js diff --git a/ssr/register.js b/ssr/register.js index 9f773b52d6..f0cff43e51 100644 --- a/ssr/register.js +++ b/ssr/register.js @@ -3,7 +3,7 @@ function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } var fs = require('fs'); -var ___dist_svelte_js = require('../dist/svelte.js'); +var ___compiler_svelte_js = require('../compiler/svelte.js'); var MagicString = require('magic-string'); var MagicString__default = _interopDefault(MagicString); @@ -135,8 +135,8 @@ function flatten ( node ) { const voidElementNames = /^(?:area|base|br|col|command|doctype|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)$/i; function compile ( source, filename ) { - const parsed = ___dist_svelte_js.parse( source, {} ); - ___dist_svelte_js.validate( parsed, source, {} ); + const parsed = ___compiler_svelte_js.parse( source, {} ); + ___compiler_svelte_js.validate( parsed, source, {} ); const code = new MagicString__default( source ); diff --git a/ssr/register.js.map b/ssr/register.js.map index 89789cbe59..c5b0fb481b 100644 --- a/ssr/register.js.map +++ b/ssr/register.js.map @@ -1 +1 @@ -{"version":3,"file":null,"sources":["../node_modules/estree-walker/dist/estree-walker.es.js","../src/utils/deindent.js","../src/utils/isReference.js","../src/utils/flattenReference.js","../src/ssr/compile.js","../src/ssr/register.js"],"sourcesContent":["function walk ( ast, ref) {\n\tvar enter = ref.enter;\n\tvar leave = ref.leave;\n\n\tvisit( ast, null, enter, leave );\n}\n\nvar context = {\n\tskip: function () { return context.shouldSkip = true; },\n\tshouldSkip: false\n};\n\nvar childKeys = {};\n\nvar toString = Object.prototype.toString;\n\nfunction isArray ( thing ) {\n\treturn toString.call( thing ) === '[object Array]';\n}\n\nfunction visit ( node, parent, enter, leave, prop, index ) {\n\tif ( !node ) return;\n\n\tif ( enter ) {\n\t\tcontext.shouldSkip = false;\n\t\tenter.call( context, node, parent, prop, index );\n\t\tif ( context.shouldSkip ) return;\n\t}\n\n\tvar keys = childKeys[ node.type ] || (\n\t\tchildKeys[ node.type ] = Object.keys( node ).filter( function (key) { return typeof node[ key ] === 'object'; } )\n\t);\n\n\tfor ( var i = 0; i < keys.length; i += 1 ) {\n\t\tvar key = keys[i];\n\t\tvar value = node[ key ];\n\n\t\tif ( isArray( value ) ) {\n\t\t\tfor ( var j = 0; j < value.length; j += 1 ) {\n\t\t\t\tvisit( value[j], node, enter, leave, key, j );\n\t\t\t}\n\t\t}\n\n\t\telse if ( value && value.type ) {\n\t\t\tvisit( value, node, enter, leave, key, null );\n\t\t}\n\t}\n\n\tif ( leave ) {\n\t\tleave( node, parent, prop, index );\n\t}\n}\n\nexport { walk };\n//# sourceMappingURL=estree-walker.es.js.map\n","const start = /\\n(\\t+)/;\n\nexport default function deindent ( strings, ...values ) {\n\tconst indentation = start.exec( strings[0] )[1];\n\tconst pattern = new RegExp( `^${indentation}`, 'gm' );\n\n\tlet result = strings[0].replace( start, '' ).replace( pattern, '' );\n\n\tlet trailingIndentation = getTrailingIndentation( result );\n\n\tfor ( let i = 1; i < strings.length; i += 1 ) {\n\t\tconst value = String( values[ i - 1 ] ).replace( /\\n/g, `\\n${trailingIndentation}` );\n\t\tresult += value + strings[i].replace( pattern, '' );\n\n\t\ttrailingIndentation = getTrailingIndentation( result );\n\t}\n\n\treturn result.trim();\n}\n\nfunction getTrailingIndentation ( str ) {\n\tlet i = str.length;\n\twhile ( str[ i - 1 ] === ' ' || str[ i - 1 ] === '\\t' ) i -= 1;\n\treturn str.slice( i, str.length );\n}\n","export default function isReference ( node, parent ) {\n\tif ( node.type === 'MemberExpression' ) {\n\t\treturn !node.computed && isReference( node.object, node );\n\t}\n\n\tif ( node.type === 'Identifier' ) {\n\t\t// the only time we could have an identifier node without a parent is\n\t\t// if it's the entire body of a function without a block statement –\n\t\t// i.e. an arrow function expression like `a => a`\n\t\tif ( !parent ) return true;\n\n\t\t// TODO is this right?\n\t\tif ( parent.type === 'MemberExpression' || parent.type === 'MethodDefinition' ) {\n\t\t\treturn parent.computed || node === parent.object;\n\t\t}\n\n\t\t// disregard the `bar` in `{ bar: foo }`, but keep it in `{ [bar]: foo }`\n\t\tif ( parent.type === 'Property' ) return parent.computed || node === parent.value;\n\n\t\t// disregard the `bar` in `class Foo { bar () {...} }`\n\t\tif ( parent.type === 'MethodDefinition' ) return false;\n\n\t\t// disregard the `bar` in `export { foo as bar }`\n\t\tif ( parent.type === 'ExportSpecifier' && node !== parent.local ) return;\n\n\t\treturn true;\n\t}\n}\n","export default function flatten ( node ) {\n\tconst parts = [];\n\twhile ( node.type === 'MemberExpression' ) {\n\t\tif ( node.computed ) return null;\n\t\tparts.unshift( node.property.name );\n\n\t\tnode = node.object;\n\t}\n\n\tif ( node.type !== 'Identifier' ) return null;\n\n\tconst name = node.name;\n\tparts.unshift( name );\n\n\treturn { name, keypath: parts.join( '.' ) };\n}\n","import { parse, validate } from 'svelte';\nimport { walk } from 'estree-walker';\nimport deindent from '../utils/deindent.js';\nimport isReference from '../utils/isReference.js';\nimport flattenReference from '../utils/flattenReference.js';\nimport MagicString, { Bundle } from 'magic-string';\n\nconst voidElementNames = /^(?:area|base|br|col|command|doctype|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)$/i;\n\nexport default function compile ( source, filename ) {\n\tconst parsed = parse( source, {} );\n\tvalidate( parsed, source, {} );\n\n\tconst code = new MagicString( source );\n\n\tconst templateProperties = {};\n\tconst components = {};\n\tconst helpers = {};\n\n\tconst imports = [];\n\n\tif ( parsed.js ) {\n\t\twalk( parsed.js.content, {\n\t\t\tenter ( node ) {\n\t\t\t\tcode.addSourcemapLocation( node.start );\n\t\t\t\tcode.addSourcemapLocation( node.end );\n\t\t\t}\n\t\t});\n\n\t\t// imports need to be hoisted out of the IIFE\n\t\tfor ( let i = 0; i < parsed.js.content.body.length; i += 1 ) {\n\t\t\tconst node = parsed.js.content.body[i];\n\t\t\tif ( node.type === 'ImportDeclaration' ) {\n\t\t\t\tlet a = node.start;\n\t\t\t\tlet b = node.end;\n\t\t\t\twhile ( /[ \\t]/.test( source[ a - 1 ] ) ) a -= 1;\n\t\t\t\twhile ( source[b] === '\\n' ) b += 1;\n\n\t\t\t\t//imports.push( source.slice( a, b ).replace( /^\\s/, '' ) );\n\t\t\t\timports.push( node );\n\t\t\t\tcode.remove( a, b );\n\t\t\t}\n\t\t}\n\n\t\tconst defaultExport = parsed.js.content.body.find( node => node.type === 'ExportDefaultDeclaration' );\n\n\t\tif ( defaultExport ) {\n\t\t\tconst finalNode = parsed.js.content.body[ parsed.js.content.body.length - 1 ];\n\t\t\tif ( defaultExport === finalNode ) {\n\t\t\t\t// export is last property, we can just return it\n\t\t\t\tcode.overwrite( defaultExport.start, defaultExport.declaration.start, `return ` );\n\t\t\t} else {\n\t\t\t\t// TODO ensure `template` isn't already declared\n\t\t\t\tcode.overwrite( defaultExport.start, defaultExport.declaration.start, `var template = ` );\n\n\t\t\t\tlet i = defaultExport.start;\n\t\t\t\twhile ( /\\s/.test( source[ i - 1 ] ) ) i--;\n\n\t\t\t\tconst indentation = source.slice( i, defaultExport.start );\n\t\t\t\tcode.appendLeft( finalNode.end, `\\n\\n${indentation}return template;` );\n\t\t\t}\n\n\t\t\tdefaultExport.declaration.properties.forEach( prop => {\n\t\t\t\ttemplateProperties[ prop.key.name ] = prop.value;\n\t\t\t});\n\n\t\t\tcode.prependRight( parsed.js.content.start, 'var template = (function () {' );\n\t\t} else {\n\t\t\tcode.prependRight( parsed.js.content.start, '(function () {' );\n\t\t}\n\n\t\tcode.appendLeft( parsed.js.content.end, '}());' );\n\n\t\tif ( templateProperties.helpers ) {\n\t\t\ttemplateProperties.helpers.properties.forEach( prop => {\n\t\t\t\thelpers[ prop.key.name ] = prop.value;\n\t\t\t});\n\t\t}\n\n\t\tif ( templateProperties.components ) {\n\t\t\ttemplateProperties.components.properties.forEach( prop => {\n\t\t\t\tcomponents[ prop.key.name ] = prop.value;\n\t\t\t});\n\t\t}\n\t}\n\n\tlet scope = new Set();\n\tconst scopes = [ scope ];\n\n\tfunction contextualise ( expression ) {\n\t\twalk( expression, {\n\t\t\tenter ( node, parent ) {\n\t\t\t\tif ( isReference( node, parent ) ) {\n\t\t\t\t\tconst { name } = flattenReference( node );\n\n\t\t\t\t\tif ( parent && parent.type === 'CallExpression' && node === parent.callee && helpers[ name ] ) {\n\t\t\t\t\t\tcode.prependRight( node.start, `template.helpers.` );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !scope.has( name ) ) {\n\t\t\t\t\t\tcode.prependRight( node.start, `data.` );\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.skip();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn {\n\t\t\tsnippet: `[✂${expression.start}-${expression.end}✂]`,\n\t\t\tstring: code.slice( expression.start, expression.end )\n\t\t};\n\t}\n\n\tconst stringifiers = {\n\t\tComponent ( node ) {\n\t\t\tconst props = node.attributes.map( attribute => {\n\t\t\t\tlet value;\n\n\t\t\t\tif ( attribute.value === true ) {\n\t\t\t\t\tvalue = `true`;\n\t\t\t\t} else if ( attribute.value.length === 0 ) {\n\t\t\t\t\tvalue = `''`;\n\t\t\t\t} else if ( attribute.value.length === 1 ) {\n\t\t\t\t\tconst chunk = attribute.value[0];\n\t\t\t\t\tif ( chunk.type === 'Text' ) {\n\t\t\t\t\t\tvalue = isNaN( parseFloat( chunk.data ) ) ? JSON.stringify( chunk.data ) : chunk.data;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst { snippet } = contextualise( chunk.expression );\n\t\t\t\t\t\tvalue = snippet;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvalue = '`' + attribute.value.map( stringify ).join( '' ) + '`';\n\t\t\t\t}\n\n\t\t\t\treturn `${attribute.name}: ${value}`;\n\t\t\t}).join( ', ' );\n\n\t\t\tlet params = `{${props}}`;\n\n\t\t\tif ( node.children.length ) {\n\t\t\t\tparams += `, { yield: () => \\`${node.children.map( stringify ).join( '' )}\\` }`;\n\t\t\t}\n\n\t\t\treturn `\\${template.components.${node.name}.render(${params})}`;\n\t\t},\n\n\t\tEachBlock ( node ) {\n\t\t\tconst { snippet } = contextualise( node.expression );\n\n\t\t\tscope = new Set();\n\t\t\tscope.add( node.context );\n\t\t\tif ( node.index ) scope.add( node.index );\n\n\t\t\tscopes.push( scope );\n\n\t\t\tconst block = `\\${ ${snippet}.map( ${ node.index ? `( ${node.context}, ${node.index} )` : node.context} => \\`${ node.children.map( stringify ).join( '' )}\\` ).join( '' )}`;\n\n\t\t\tscopes.pop();\n\t\t\tscope = scopes[ scopes.length - 1 ];\n\n\t\t\treturn block;\n\t\t},\n\n\t\tElement ( node ) {\n\t\t\tif ( node.name in components ) {\n\t\t\t\treturn stringifiers.Component( node );\n\t\t\t}\n\n\t\t\tlet element = `<${node.name}`;\n\n\t\t\tnode.attributes.forEach( attribute => {\n\t\t\t\tlet str = ` ${attribute.name}`;\n\n\t\t\t\tif ( attribute.value !== true ) {\n\t\t\t\t\tstr += `=\"` + attribute.value.map( chunk => {\n\t\t\t\t\t\tif ( chunk.type === 'Text' ) {\n\t\t\t\t\t\t\treturn chunk.data;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst { snippet } = contextualise( chunk.expression );\n\t\t\t\t\t\treturn '${' + snippet + '}';\n\t\t\t\t\t}).join( '' ) + `\"`;\n\t\t\t\t}\n\n\t\t\t\telement += str;\n\t\t\t});\n\n\t\t\tif ( voidElementNames.test( node.name ) ) {\n\t\t\t\telement += '>';\n\t\t\t} else if ( node.children.length === 0 ) {\n\t\t\t\telement += '/>';\n\t\t\t} else {\n\t\t\t\telement += '>' + node.children.map( stringify ).join( '' ) + ``;\n\t\t\t}\n\n\t\t\treturn element;\n\t\t},\n\n\t\tIfBlock ( node ) {\n\t\t\tconst { snippet } = contextualise( node.expression ); // TODO use snippet, for sourcemap support\n\n\t\t\tconst consequent = node.children.map( stringify ).join( '' );\n\t\t\tconst alternate = node.else ? node.else.children.map( stringify ).join( '' ) : '';\n\n\t\t\treturn '${ ' + snippet + ' ? `' + consequent + '` : `' + alternate + '` }';\n\t\t},\n\n\t\tMustacheTag ( node ) {\n\t\t\tconst { snippet } = contextualise( node.expression ); // TODO use snippet, for sourcemap support\n\t\t\treturn '${' + snippet + '}';\n\t\t},\n\n\t\tText ( node ) {\n\t\t\treturn node.data.replace( /\\${/g, '\\\\${' );\n\t\t},\n\n\t\tYieldTag () {\n\t\t\treturn `\\${options.yield()}`;\n\t\t}\n\t};\n\n\tfunction stringify ( node ) {\n\t\tconst stringifier = stringifiers[ node.type ];\n\n\t\tif ( !stringifier ) {\n\t\t\tthrow new Error( `Not implemented: ${node.type}` );\n\t\t}\n\n\t\treturn stringifier( node );\n\t}\n\n\tfunction createBlock ( node ) {\n\t\tconst str = stringify( node );\n\t\tif ( str.slice( 0, 2 ) === '${' ) return str.slice( 2, -1 );\n\t\treturn '`' + str + '`';\n\t}\n\n\tconst blocks = parsed.html.children.map( node => {\n\t\treturn deindent`\n\t\t\trendered += ${createBlock( node )};\n\t\t`;\n\t});\n\n\tconst topLevelStatements = [];\n\n\tconst importBlock = imports\n\t\t.map( ( declaration, i ) => {\n\t\t\tconst defaultImport = declaration.specifiers.find( x => x.type === 'ImportDefaultSpecifier' || x.type === 'ImportSpecifier' && x.imported.name === 'default' );\n\t\t\tconst namespaceImport = declaration.specifiers.find( x => x.type === 'ImportNamespaceSpecifier' );\n\t\t\tconst namedImports = declaration.specifiers.filter( x => x.type === 'ImportSpecifier' && x.imported.name !== 'default' );\n\n\t\t\tconst name = ( defaultImport || namespaceImport ) ? ( defaultImport || namespaceImport ).local.name : `__import${i}`;\n\n\t\t\tconst statements = [\n\t\t\t\t`var ${name} = require( '${declaration.source.value}' );`\n\t\t\t];\n\n\t\t\tnamedImports.forEach( specifier => {\n\t\t\t\tstatements.push( `var ${specifier.local.name} = ${name}.${specifier.imported.name};` );\n\t\t\t});\n\n\t\t\tif ( defaultImport ) {\n\t\t\t\tstatements.push( `${name} = ( ${name} && ${name}.__esModule ) ? ${name}['default'] : ${name};` );\n\t\t\t}\n\n\t\t\treturn statements.join( '\\n' );\n\t\t})\n\t\t.filter( Boolean )\n\t\t.join( '\\n' );\n\n\tif ( parsed.js ) {\n\t\tif ( imports.length ) {\n\t\t\ttopLevelStatements.push( importBlock );\n\t\t}\n\n\t\ttopLevelStatements.push( `[✂${parsed.js.content.start}-${parsed.js.content.end}✂]` );\n\t}\n\n\tif ( parsed.css ) {\n\t\tthrow new Error( 'TODO handle css' );\n\t}\n\n\tconst renderStatements = [\n\t\ttemplateProperties.data ? `data = Object.assign( template.data(), data || {} );` : `data = data || {};`\n\t];\n\n\tif ( templateProperties.computed ) {\n\t\tconst statements = [];\n\t\tconst dependencies = new Map();\n\n\t\ttemplateProperties.computed.properties.forEach( prop => {\n\t\t\tconst key = prop.key.name;\n\t\t\tconst value = prop.value;\n\n\t\t\tconst deps = value.params.map( param => param.name );\n\t\t\tdependencies.set( key, deps );\n\t\t});\n\n\t\tconst visited = new Set();\n\n\t\tfunction visit ( key ) {\n\t\t\tif ( !dependencies.has( key ) ) return; // not a computation\n\n\t\t\tif ( visited.has( key ) ) return;\n\t\t\tvisited.add( key );\n\n\t\t\tconst deps = dependencies.get( key );\n\t\t\tdeps.forEach( visit );\n\n\t\t\tstatements.push( deindent`\n\t\t\t\tdata.${key} = template.computed.${key}( ${deps.map( dep => `data.${dep}` ).join( ', ' )} );\n\t\t\t` );\n\t\t}\n\n\t\ttemplateProperties.computed.properties.forEach( prop => visit( prop.key.name ) );\n\n\t\trenderStatements.push( statements.join( '\\n' ) );\n\t}\n\n\trenderStatements.push(\n\t\t`var rendered = '';`,\n\t\tblocks.join( '\\n\\n' ),\n\t\t`return rendered;`\n\t);\n\n\ttopLevelStatements.push( deindent`\n\t\texports.render = function ( data, options ) {\n\t\t\t${renderStatements.join( '\\n\\n' )}\n\t\t};\n\t` );\n\n\tconst rendered = topLevelStatements.join( '\\n\\n' );\n\n\tconst pattern = /\\[✂(\\d+)-(\\d+)$/;\n\n\tconst parts = rendered.split( '✂]' );\n\tconst finalChunk = parts.pop();\n\n\tconst compiled = new Bundle({ separator: '' });\n\n\tfunction addString ( str ) {\n\t\tcompiled.addSource({\n\t\t\tcontent: new MagicString( str )\n\t\t});\n\t}\n\n\tparts.forEach( str => {\n\t\tconst chunk = str.replace( pattern, '' );\n\t\tif ( chunk ) addString( chunk );\n\n\t\tconst match = pattern.exec( str );\n\n\t\tconst snippet = code.snip( +match[1], +match[2] );\n\n\t\tcompiled.addSource({\n\t\t\tfilename,\n\t\t\tcontent: snippet\n\t\t});\n\t});\n\n\taddString( finalChunk );\n\n\treturn {\n\t\tcode: compiled.toString()\n\t};\n}\n","import * as fs from 'fs';\nimport compile from './compile.js';\n\nrequire.extensions[ '.html' ] = function ( module, filename ) {\n\tconst { code } = compile( fs.readFileSync( filename, 'utf-8' ) );\n\treturn module._compile( code, filename );\n};\n"],"names":["parse","validate","MagicString","flattenReference","Bundle","fs.readFileSync"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":null,"sources":["../node_modules/estree-walker/dist/estree-walker.es.js","../src/utils/deindent.js","../src/utils/isReference.js","../src/utils/flattenReference.js","../src/server-side-rendering/compile.js","../src/server-side-rendering/register.js"],"sourcesContent":["function walk ( ast, ref) {\n\tvar enter = ref.enter;\n\tvar leave = ref.leave;\n\n\tvisit( ast, null, enter, leave );\n}\n\nvar context = {\n\tskip: function () { return context.shouldSkip = true; },\n\tshouldSkip: false\n};\n\nvar childKeys = {};\n\nvar toString = Object.prototype.toString;\n\nfunction isArray ( thing ) {\n\treturn toString.call( thing ) === '[object Array]';\n}\n\nfunction visit ( node, parent, enter, leave, prop, index ) {\n\tif ( !node ) return;\n\n\tif ( enter ) {\n\t\tcontext.shouldSkip = false;\n\t\tenter.call( context, node, parent, prop, index );\n\t\tif ( context.shouldSkip ) return;\n\t}\n\n\tvar keys = childKeys[ node.type ] || (\n\t\tchildKeys[ node.type ] = Object.keys( node ).filter( function (key) { return typeof node[ key ] === 'object'; } )\n\t);\n\n\tfor ( var i = 0; i < keys.length; i += 1 ) {\n\t\tvar key = keys[i];\n\t\tvar value = node[ key ];\n\n\t\tif ( isArray( value ) ) {\n\t\t\tfor ( var j = 0; j < value.length; j += 1 ) {\n\t\t\t\tvisit( value[j], node, enter, leave, key, j );\n\t\t\t}\n\t\t}\n\n\t\telse if ( value && value.type ) {\n\t\t\tvisit( value, node, enter, leave, key, null );\n\t\t}\n\t}\n\n\tif ( leave ) {\n\t\tleave( node, parent, prop, index );\n\t}\n}\n\nexport { walk };\n//# sourceMappingURL=estree-walker.es.js.map\n","const start = /\\n(\\t+)/;\n\nexport default function deindent ( strings, ...values ) {\n\tconst indentation = start.exec( strings[0] )[1];\n\tconst pattern = new RegExp( `^${indentation}`, 'gm' );\n\n\tlet result = strings[0].replace( start, '' ).replace( pattern, '' );\n\n\tlet trailingIndentation = getTrailingIndentation( result );\n\n\tfor ( let i = 1; i < strings.length; i += 1 ) {\n\t\tconst value = String( values[ i - 1 ] ).replace( /\\n/g, `\\n${trailingIndentation}` );\n\t\tresult += value + strings[i].replace( pattern, '' );\n\n\t\ttrailingIndentation = getTrailingIndentation( result );\n\t}\n\n\treturn result.trim();\n}\n\nfunction getTrailingIndentation ( str ) {\n\tlet i = str.length;\n\twhile ( str[ i - 1 ] === ' ' || str[ i - 1 ] === '\\t' ) i -= 1;\n\treturn str.slice( i, str.length );\n}\n","export default function isReference ( node, parent ) {\n\tif ( node.type === 'MemberExpression' ) {\n\t\treturn !node.computed && isReference( node.object, node );\n\t}\n\n\tif ( node.type === 'Identifier' ) {\n\t\t// the only time we could have an identifier node without a parent is\n\t\t// if it's the entire body of a function without a block statement –\n\t\t// i.e. an arrow function expression like `a => a`\n\t\tif ( !parent ) return true;\n\n\t\t// TODO is this right?\n\t\tif ( parent.type === 'MemberExpression' || parent.type === 'MethodDefinition' ) {\n\t\t\treturn parent.computed || node === parent.object;\n\t\t}\n\n\t\t// disregard the `bar` in `{ bar: foo }`, but keep it in `{ [bar]: foo }`\n\t\tif ( parent.type === 'Property' ) return parent.computed || node === parent.value;\n\n\t\t// disregard the `bar` in `class Foo { bar () {...} }`\n\t\tif ( parent.type === 'MethodDefinition' ) return false;\n\n\t\t// disregard the `bar` in `export { foo as bar }`\n\t\tif ( parent.type === 'ExportSpecifier' && node !== parent.local ) return;\n\n\t\treturn true;\n\t}\n}\n","export default function flatten ( node ) {\n\tconst parts = [];\n\twhile ( node.type === 'MemberExpression' ) {\n\t\tif ( node.computed ) return null;\n\t\tparts.unshift( node.property.name );\n\n\t\tnode = node.object;\n\t}\n\n\tif ( node.type !== 'Identifier' ) return null;\n\n\tconst name = node.name;\n\tparts.unshift( name );\n\n\treturn { name, keypath: parts.join( '.' ) };\n}\n","import { parse, validate } from 'svelte';\nimport { walk } from 'estree-walker';\nimport deindent from '../utils/deindent.js';\nimport isReference from '../utils/isReference.js';\nimport flattenReference from '../utils/flattenReference.js';\nimport MagicString, { Bundle } from 'magic-string';\n\nconst voidElementNames = /^(?:area|base|br|col|command|doctype|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)$/i;\n\nexport default function compile ( source, filename ) {\n\tconst parsed = parse( source, {} );\n\tvalidate( parsed, source, {} );\n\n\tconst code = new MagicString( source );\n\n\tconst templateProperties = {};\n\tconst components = {};\n\tconst helpers = {};\n\n\tconst imports = [];\n\n\tif ( parsed.js ) {\n\t\twalk( parsed.js.content, {\n\t\t\tenter ( node ) {\n\t\t\t\tcode.addSourcemapLocation( node.start );\n\t\t\t\tcode.addSourcemapLocation( node.end );\n\t\t\t}\n\t\t});\n\n\t\t// imports need to be hoisted out of the IIFE\n\t\tfor ( let i = 0; i < parsed.js.content.body.length; i += 1 ) {\n\t\t\tconst node = parsed.js.content.body[i];\n\t\t\tif ( node.type === 'ImportDeclaration' ) {\n\t\t\t\tlet a = node.start;\n\t\t\t\tlet b = node.end;\n\t\t\t\twhile ( /[ \\t]/.test( source[ a - 1 ] ) ) a -= 1;\n\t\t\t\twhile ( source[b] === '\\n' ) b += 1;\n\n\t\t\t\t//imports.push( source.slice( a, b ).replace( /^\\s/, '' ) );\n\t\t\t\timports.push( node );\n\t\t\t\tcode.remove( a, b );\n\t\t\t}\n\t\t}\n\n\t\tconst defaultExport = parsed.js.content.body.find( node => node.type === 'ExportDefaultDeclaration' );\n\n\t\tif ( defaultExport ) {\n\t\t\tconst finalNode = parsed.js.content.body[ parsed.js.content.body.length - 1 ];\n\t\t\tif ( defaultExport === finalNode ) {\n\t\t\t\t// export is last property, we can just return it\n\t\t\t\tcode.overwrite( defaultExport.start, defaultExport.declaration.start, `return ` );\n\t\t\t} else {\n\t\t\t\t// TODO ensure `template` isn't already declared\n\t\t\t\tcode.overwrite( defaultExport.start, defaultExport.declaration.start, `var template = ` );\n\n\t\t\t\tlet i = defaultExport.start;\n\t\t\t\twhile ( /\\s/.test( source[ i - 1 ] ) ) i--;\n\n\t\t\t\tconst indentation = source.slice( i, defaultExport.start );\n\t\t\t\tcode.appendLeft( finalNode.end, `\\n\\n${indentation}return template;` );\n\t\t\t}\n\n\t\t\tdefaultExport.declaration.properties.forEach( prop => {\n\t\t\t\ttemplateProperties[ prop.key.name ] = prop.value;\n\t\t\t});\n\n\t\t\tcode.prependRight( parsed.js.content.start, 'var template = (function () {' );\n\t\t} else {\n\t\t\tcode.prependRight( parsed.js.content.start, '(function () {' );\n\t\t}\n\n\t\tcode.appendLeft( parsed.js.content.end, '}());' );\n\n\t\tif ( templateProperties.helpers ) {\n\t\t\ttemplateProperties.helpers.properties.forEach( prop => {\n\t\t\t\thelpers[ prop.key.name ] = prop.value;\n\t\t\t});\n\t\t}\n\n\t\tif ( templateProperties.components ) {\n\t\t\ttemplateProperties.components.properties.forEach( prop => {\n\t\t\t\tcomponents[ prop.key.name ] = prop.value;\n\t\t\t});\n\t\t}\n\t}\n\n\tlet scope = new Set();\n\tconst scopes = [ scope ];\n\n\tfunction contextualise ( expression ) {\n\t\twalk( expression, {\n\t\t\tenter ( node, parent ) {\n\t\t\t\tif ( isReference( node, parent ) ) {\n\t\t\t\t\tconst { name } = flattenReference( node );\n\n\t\t\t\t\tif ( parent && parent.type === 'CallExpression' && node === parent.callee && helpers[ name ] ) {\n\t\t\t\t\t\tcode.prependRight( node.start, `template.helpers.` );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !scope.has( name ) ) {\n\t\t\t\t\t\tcode.prependRight( node.start, `data.` );\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.skip();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn {\n\t\t\tsnippet: `[✂${expression.start}-${expression.end}✂]`,\n\t\t\tstring: code.slice( expression.start, expression.end )\n\t\t};\n\t}\n\n\tconst stringifiers = {\n\t\tComponent ( node ) {\n\t\t\tconst props = node.attributes.map( attribute => {\n\t\t\t\tlet value;\n\n\t\t\t\tif ( attribute.value === true ) {\n\t\t\t\t\tvalue = `true`;\n\t\t\t\t} else if ( attribute.value.length === 0 ) {\n\t\t\t\t\tvalue = `''`;\n\t\t\t\t} else if ( attribute.value.length === 1 ) {\n\t\t\t\t\tconst chunk = attribute.value[0];\n\t\t\t\t\tif ( chunk.type === 'Text' ) {\n\t\t\t\t\t\tvalue = isNaN( parseFloat( chunk.data ) ) ? JSON.stringify( chunk.data ) : chunk.data;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst { snippet } = contextualise( chunk.expression );\n\t\t\t\t\t\tvalue = snippet;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvalue = '`' + attribute.value.map( stringify ).join( '' ) + '`';\n\t\t\t\t}\n\n\t\t\t\treturn `${attribute.name}: ${value}`;\n\t\t\t}).join( ', ' );\n\n\t\t\tlet params = `{${props}}`;\n\n\t\t\tif ( node.children.length ) {\n\t\t\t\tparams += `, { yield: () => \\`${node.children.map( stringify ).join( '' )}\\` }`;\n\t\t\t}\n\n\t\t\treturn `\\${template.components.${node.name}.render(${params})}`;\n\t\t},\n\n\t\tEachBlock ( node ) {\n\t\t\tconst { snippet } = contextualise( node.expression );\n\n\t\t\tscope = new Set();\n\t\t\tscope.add( node.context );\n\t\t\tif ( node.index ) scope.add( node.index );\n\n\t\t\tscopes.push( scope );\n\n\t\t\tconst block = `\\${ ${snippet}.map( ${ node.index ? `( ${node.context}, ${node.index} )` : node.context} => \\`${ node.children.map( stringify ).join( '' )}\\` ).join( '' )}`;\n\n\t\t\tscopes.pop();\n\t\t\tscope = scopes[ scopes.length - 1 ];\n\n\t\t\treturn block;\n\t\t},\n\n\t\tElement ( node ) {\n\t\t\tif ( node.name in components ) {\n\t\t\t\treturn stringifiers.Component( node );\n\t\t\t}\n\n\t\t\tlet element = `<${node.name}`;\n\n\t\t\tnode.attributes.forEach( attribute => {\n\t\t\t\tlet str = ` ${attribute.name}`;\n\n\t\t\t\tif ( attribute.value !== true ) {\n\t\t\t\t\tstr += `=\"` + attribute.value.map( chunk => {\n\t\t\t\t\t\tif ( chunk.type === 'Text' ) {\n\t\t\t\t\t\t\treturn chunk.data;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst { snippet } = contextualise( chunk.expression );\n\t\t\t\t\t\treturn '${' + snippet + '}';\n\t\t\t\t\t}).join( '' ) + `\"`;\n\t\t\t\t}\n\n\t\t\t\telement += str;\n\t\t\t});\n\n\t\t\tif ( voidElementNames.test( node.name ) ) {\n\t\t\t\telement += '>';\n\t\t\t} else if ( node.children.length === 0 ) {\n\t\t\t\telement += '/>';\n\t\t\t} else {\n\t\t\t\telement += '>' + node.children.map( stringify ).join( '' ) + ``;\n\t\t\t}\n\n\t\t\treturn element;\n\t\t},\n\n\t\tIfBlock ( node ) {\n\t\t\tconst { snippet } = contextualise( node.expression ); // TODO use snippet, for sourcemap support\n\n\t\t\tconst consequent = node.children.map( stringify ).join( '' );\n\t\t\tconst alternate = node.else ? node.else.children.map( stringify ).join( '' ) : '';\n\n\t\t\treturn '${ ' + snippet + ' ? `' + consequent + '` : `' + alternate + '` }';\n\t\t},\n\n\t\tMustacheTag ( node ) {\n\t\t\tconst { snippet } = contextualise( node.expression ); // TODO use snippet, for sourcemap support\n\t\t\treturn '${' + snippet + '}';\n\t\t},\n\n\t\tText ( node ) {\n\t\t\treturn node.data.replace( /\\${/g, '\\\\${' );\n\t\t},\n\n\t\tYieldTag () {\n\t\t\treturn `\\${options.yield()}`;\n\t\t}\n\t};\n\n\tfunction stringify ( node ) {\n\t\tconst stringifier = stringifiers[ node.type ];\n\n\t\tif ( !stringifier ) {\n\t\t\tthrow new Error( `Not implemented: ${node.type}` );\n\t\t}\n\n\t\treturn stringifier( node );\n\t}\n\n\tfunction createBlock ( node ) {\n\t\tconst str = stringify( node );\n\t\tif ( str.slice( 0, 2 ) === '${' ) return str.slice( 2, -1 );\n\t\treturn '`' + str + '`';\n\t}\n\n\tconst blocks = parsed.html.children.map( node => {\n\t\treturn deindent`\n\t\t\trendered += ${createBlock( node )};\n\t\t`;\n\t});\n\n\tconst topLevelStatements = [];\n\n\tconst importBlock = imports\n\t\t.map( ( declaration, i ) => {\n\t\t\tconst defaultImport = declaration.specifiers.find( x => x.type === 'ImportDefaultSpecifier' || x.type === 'ImportSpecifier' && x.imported.name === 'default' );\n\t\t\tconst namespaceImport = declaration.specifiers.find( x => x.type === 'ImportNamespaceSpecifier' );\n\t\t\tconst namedImports = declaration.specifiers.filter( x => x.type === 'ImportSpecifier' && x.imported.name !== 'default' );\n\n\t\t\tconst name = ( defaultImport || namespaceImport ) ? ( defaultImport || namespaceImport ).local.name : `__import${i}`;\n\n\t\t\tconst statements = [\n\t\t\t\t`var ${name} = require( '${declaration.source.value}' );`\n\t\t\t];\n\n\t\t\tnamedImports.forEach( specifier => {\n\t\t\t\tstatements.push( `var ${specifier.local.name} = ${name}.${specifier.imported.name};` );\n\t\t\t});\n\n\t\t\tif ( defaultImport ) {\n\t\t\t\tstatements.push( `${name} = ( ${name} && ${name}.__esModule ) ? ${name}['default'] : ${name};` );\n\t\t\t}\n\n\t\t\treturn statements.join( '\\n' );\n\t\t})\n\t\t.filter( Boolean )\n\t\t.join( '\\n' );\n\n\tif ( parsed.js ) {\n\t\tif ( imports.length ) {\n\t\t\ttopLevelStatements.push( importBlock );\n\t\t}\n\n\t\ttopLevelStatements.push( `[✂${parsed.js.content.start}-${parsed.js.content.end}✂]` );\n\t}\n\n\tif ( parsed.css ) {\n\t\tthrow new Error( 'TODO handle css' );\n\t}\n\n\tconst renderStatements = [\n\t\ttemplateProperties.data ? `data = Object.assign( template.data(), data || {} );` : `data = data || {};`\n\t];\n\n\tif ( templateProperties.computed ) {\n\t\tconst statements = [];\n\t\tconst dependencies = new Map();\n\n\t\ttemplateProperties.computed.properties.forEach( prop => {\n\t\t\tconst key = prop.key.name;\n\t\t\tconst value = prop.value;\n\n\t\t\tconst deps = value.params.map( param => param.name );\n\t\t\tdependencies.set( key, deps );\n\t\t});\n\n\t\tconst visited = new Set();\n\n\t\tfunction visit ( key ) {\n\t\t\tif ( !dependencies.has( key ) ) return; // not a computation\n\n\t\t\tif ( visited.has( key ) ) return;\n\t\t\tvisited.add( key );\n\n\t\t\tconst deps = dependencies.get( key );\n\t\t\tdeps.forEach( visit );\n\n\t\t\tstatements.push( deindent`\n\t\t\t\tdata.${key} = template.computed.${key}( ${deps.map( dep => `data.${dep}` ).join( ', ' )} );\n\t\t\t` );\n\t\t}\n\n\t\ttemplateProperties.computed.properties.forEach( prop => visit( prop.key.name ) );\n\n\t\trenderStatements.push( statements.join( '\\n' ) );\n\t}\n\n\trenderStatements.push(\n\t\t`var rendered = '';`,\n\t\tblocks.join( '\\n\\n' ),\n\t\t`return rendered;`\n\t);\n\n\ttopLevelStatements.push( deindent`\n\t\texports.render = function ( data, options ) {\n\t\t\t${renderStatements.join( '\\n\\n' )}\n\t\t};\n\t` );\n\n\tconst rendered = topLevelStatements.join( '\\n\\n' );\n\n\tconst pattern = /\\[✂(\\d+)-(\\d+)$/;\n\n\tconst parts = rendered.split( '✂]' );\n\tconst finalChunk = parts.pop();\n\n\tconst compiled = new Bundle({ separator: '' });\n\n\tfunction addString ( str ) {\n\t\tcompiled.addSource({\n\t\t\tcontent: new MagicString( str )\n\t\t});\n\t}\n\n\tparts.forEach( str => {\n\t\tconst chunk = str.replace( pattern, '' );\n\t\tif ( chunk ) addString( chunk );\n\n\t\tconst match = pattern.exec( str );\n\n\t\tconst snippet = code.snip( +match[1], +match[2] );\n\n\t\tcompiled.addSource({\n\t\t\tfilename,\n\t\t\tcontent: snippet\n\t\t});\n\t});\n\n\taddString( finalChunk );\n\n\treturn {\n\t\tcode: compiled.toString()\n\t};\n}\n","import * as fs from 'fs';\nimport compile from './compile.js';\n\nrequire.extensions[ '.html' ] = function ( module, filename ) {\n\tconst { code } = compile( fs.readFileSync( filename, 'utf-8' ) );\n\treturn module._compile( code, filename );\n};\n"],"names":["parse","validate","MagicString","flattenReference","Bundle","fs.readFileSync"],"mappings":"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"} \ No newline at end of file diff --git a/test/compiler/attribute-dynamic-multiple/_config.js b/test/generator/attribute-dynamic-multiple/_config.js similarity index 100% rename from test/compiler/attribute-dynamic-multiple/_config.js rename to test/generator/attribute-dynamic-multiple/_config.js diff --git a/test/compiler/attribute-dynamic-multiple/main.html b/test/generator/attribute-dynamic-multiple/main.html similarity index 100% rename from test/compiler/attribute-dynamic-multiple/main.html rename to test/generator/attribute-dynamic-multiple/main.html diff --git a/test/compiler/attribute-dynamic/_config.js b/test/generator/attribute-dynamic/_config.js similarity index 100% rename from test/compiler/attribute-dynamic/_config.js rename to test/generator/attribute-dynamic/_config.js diff --git a/test/compiler/attribute-dynamic/main.html b/test/generator/attribute-dynamic/main.html similarity index 100% rename from test/compiler/attribute-dynamic/main.html rename to test/generator/attribute-dynamic/main.html diff --git a/test/compiler/attribute-empty-svg/_config.js b/test/generator/attribute-empty-svg/_config.js similarity index 100% rename from test/compiler/attribute-empty-svg/_config.js rename to test/generator/attribute-empty-svg/_config.js diff --git a/test/compiler/attribute-empty-svg/main.html b/test/generator/attribute-empty-svg/main.html similarity index 100% rename from test/compiler/attribute-empty-svg/main.html rename to test/generator/attribute-empty-svg/main.html diff --git a/test/compiler/attribute-empty/_config.js b/test/generator/attribute-empty/_config.js similarity index 100% rename from test/compiler/attribute-empty/_config.js rename to test/generator/attribute-empty/_config.js diff --git a/test/compiler/attribute-empty/main.html b/test/generator/attribute-empty/main.html similarity index 100% rename from test/compiler/attribute-empty/main.html rename to test/generator/attribute-empty/main.html diff --git a/test/compiler/attribute-static-boolean/_config.js b/test/generator/attribute-static-boolean/_config.js similarity index 100% rename from test/compiler/attribute-static-boolean/_config.js rename to test/generator/attribute-static-boolean/_config.js diff --git a/test/compiler/attribute-static-boolean/main.html b/test/generator/attribute-static-boolean/main.html similarity index 100% rename from test/compiler/attribute-static-boolean/main.html rename to test/generator/attribute-static-boolean/main.html diff --git a/test/compiler/attribute-static/_config.js b/test/generator/attribute-static/_config.js similarity index 100% rename from test/compiler/attribute-static/_config.js rename to test/generator/attribute-static/_config.js diff --git a/test/compiler/attribute-static/main.html b/test/generator/attribute-static/main.html similarity index 100% rename from test/compiler/attribute-static/main.html rename to test/generator/attribute-static/main.html diff --git a/test/compiler/autofocus/_config.js b/test/generator/autofocus/_config.js similarity index 100% rename from test/compiler/autofocus/_config.js rename to test/generator/autofocus/_config.js diff --git a/test/compiler/autofocus/main.html b/test/generator/autofocus/main.html similarity index 100% rename from test/compiler/autofocus/main.html rename to test/generator/autofocus/main.html diff --git a/test/compiler/binding-input-checkbox-deep-contextual/_config.js b/test/generator/binding-input-checkbox-deep-contextual/_config.js similarity index 100% rename from test/compiler/binding-input-checkbox-deep-contextual/_config.js rename to test/generator/binding-input-checkbox-deep-contextual/_config.js diff --git a/test/compiler/binding-input-checkbox-deep-contextual/main.html b/test/generator/binding-input-checkbox-deep-contextual/main.html similarity index 100% rename from test/compiler/binding-input-checkbox-deep-contextual/main.html rename to test/generator/binding-input-checkbox-deep-contextual/main.html diff --git a/test/compiler/binding-input-checkbox/_config.js b/test/generator/binding-input-checkbox/_config.js similarity index 100% rename from test/compiler/binding-input-checkbox/_config.js rename to test/generator/binding-input-checkbox/_config.js diff --git a/test/compiler/binding-input-checkbox/main.html b/test/generator/binding-input-checkbox/main.html similarity index 100% rename from test/compiler/binding-input-checkbox/main.html rename to test/generator/binding-input-checkbox/main.html diff --git a/test/compiler/binding-input-text-contextual/_config.js b/test/generator/binding-input-text-contextual/_config.js similarity index 100% rename from test/compiler/binding-input-text-contextual/_config.js rename to test/generator/binding-input-text-contextual/_config.js diff --git a/test/compiler/binding-input-text-contextual/main.html b/test/generator/binding-input-text-contextual/main.html similarity index 100% rename from test/compiler/binding-input-text-contextual/main.html rename to test/generator/binding-input-text-contextual/main.html diff --git a/test/compiler/binding-input-text-deep-contextual/_config.js b/test/generator/binding-input-text-deep-contextual/_config.js similarity index 100% rename from test/compiler/binding-input-text-deep-contextual/_config.js rename to test/generator/binding-input-text-deep-contextual/_config.js diff --git a/test/compiler/binding-input-text-deep-contextual/main.html b/test/generator/binding-input-text-deep-contextual/main.html similarity index 100% rename from test/compiler/binding-input-text-deep-contextual/main.html rename to test/generator/binding-input-text-deep-contextual/main.html diff --git a/test/compiler/binding-input-text-deep/_config.js b/test/generator/binding-input-text-deep/_config.js similarity index 100% rename from test/compiler/binding-input-text-deep/_config.js rename to test/generator/binding-input-text-deep/_config.js diff --git a/test/compiler/binding-input-text-deep/main.html b/test/generator/binding-input-text-deep/main.html similarity index 100% rename from test/compiler/binding-input-text-deep/main.html rename to test/generator/binding-input-text-deep/main.html diff --git a/test/compiler/binding-input-text/_config.js b/test/generator/binding-input-text/_config.js similarity index 100% rename from test/compiler/binding-input-text/_config.js rename to test/generator/binding-input-text/_config.js diff --git a/test/compiler/binding-input-text/main.html b/test/generator/binding-input-text/main.html similarity index 100% rename from test/compiler/binding-input-text/main.html rename to test/generator/binding-input-text/main.html diff --git a/test/compiler/binding-select/_config.js b/test/generator/binding-select/_config.js similarity index 100% rename from test/compiler/binding-select/_config.js rename to test/generator/binding-select/_config.js diff --git a/test/compiler/binding-select/main.html b/test/generator/binding-select/main.html similarity index 100% rename from test/compiler/binding-select/main.html rename to test/generator/binding-select/main.html diff --git a/test/compiler/component-binding-nested/Bar.html b/test/generator/component-binding-nested/Bar.html similarity index 100% rename from test/compiler/component-binding-nested/Bar.html rename to test/generator/component-binding-nested/Bar.html diff --git a/test/compiler/component-binding-nested/Baz.html b/test/generator/component-binding-nested/Baz.html similarity index 100% rename from test/compiler/component-binding-nested/Baz.html rename to test/generator/component-binding-nested/Baz.html diff --git a/test/compiler/component-binding-nested/Foo.html b/test/generator/component-binding-nested/Foo.html similarity index 100% rename from test/compiler/component-binding-nested/Foo.html rename to test/generator/component-binding-nested/Foo.html diff --git a/test/compiler/component-binding-nested/_config.js b/test/generator/component-binding-nested/_config.js similarity index 100% rename from test/compiler/component-binding-nested/_config.js rename to test/generator/component-binding-nested/_config.js diff --git a/test/compiler/component-binding-nested/main.html b/test/generator/component-binding-nested/main.html similarity index 100% rename from test/compiler/component-binding-nested/main.html rename to test/generator/component-binding-nested/main.html diff --git a/test/compiler/component-binding-parent-supercedes-child/Counter.html b/test/generator/component-binding-parent-supercedes-child/Counter.html similarity index 100% rename from test/compiler/component-binding-parent-supercedes-child/Counter.html rename to test/generator/component-binding-parent-supercedes-child/Counter.html diff --git a/test/compiler/component-binding-parent-supercedes-child/_config.js b/test/generator/component-binding-parent-supercedes-child/_config.js similarity index 100% rename from test/compiler/component-binding-parent-supercedes-child/_config.js rename to test/generator/component-binding-parent-supercedes-child/_config.js diff --git a/test/compiler/component-binding-parent-supercedes-child/main.html b/test/generator/component-binding-parent-supercedes-child/main.html similarity index 100% rename from test/compiler/component-binding-parent-supercedes-child/main.html rename to test/generator/component-binding-parent-supercedes-child/main.html diff --git a/test/compiler/component-binding/Counter.html b/test/generator/component-binding/Counter.html similarity index 100% rename from test/compiler/component-binding/Counter.html rename to test/generator/component-binding/Counter.html diff --git a/test/compiler/component-binding/_config.js b/test/generator/component-binding/_config.js similarity index 100% rename from test/compiler/component-binding/_config.js rename to test/generator/component-binding/_config.js diff --git a/test/compiler/component-binding/main.html b/test/generator/component-binding/main.html similarity index 100% rename from test/compiler/component-binding/main.html rename to test/generator/component-binding/main.html diff --git a/test/compiler/component-data-dynamic-late/Widget.html b/test/generator/component-data-dynamic-late/Widget.html similarity index 100% rename from test/compiler/component-data-dynamic-late/Widget.html rename to test/generator/component-data-dynamic-late/Widget.html diff --git a/test/compiler/component-data-dynamic-late/_config.js b/test/generator/component-data-dynamic-late/_config.js similarity index 100% rename from test/compiler/component-data-dynamic-late/_config.js rename to test/generator/component-data-dynamic-late/_config.js diff --git a/test/compiler/component-data-dynamic-late/main.html b/test/generator/component-data-dynamic-late/main.html similarity index 100% rename from test/compiler/component-data-dynamic-late/main.html rename to test/generator/component-data-dynamic-late/main.html diff --git a/test/compiler/component-data-dynamic/Widget.html b/test/generator/component-data-dynamic/Widget.html similarity index 100% rename from test/compiler/component-data-dynamic/Widget.html rename to test/generator/component-data-dynamic/Widget.html diff --git a/test/compiler/component-data-dynamic/_config.js b/test/generator/component-data-dynamic/_config.js similarity index 100% rename from test/compiler/component-data-dynamic/_config.js rename to test/generator/component-data-dynamic/_config.js diff --git a/test/compiler/component-data-dynamic/main.html b/test/generator/component-data-dynamic/main.html similarity index 100% rename from test/compiler/component-data-dynamic/main.html rename to test/generator/component-data-dynamic/main.html diff --git a/test/compiler/component-data-empty/Widget.html b/test/generator/component-data-empty/Widget.html similarity index 100% rename from test/compiler/component-data-empty/Widget.html rename to test/generator/component-data-empty/Widget.html diff --git a/test/compiler/component-data-empty/_config.js b/test/generator/component-data-empty/_config.js similarity index 100% rename from test/compiler/component-data-empty/_config.js rename to test/generator/component-data-empty/_config.js diff --git a/test/compiler/component-data-empty/main.html b/test/generator/component-data-empty/main.html similarity index 100% rename from test/compiler/component-data-empty/main.html rename to test/generator/component-data-empty/main.html diff --git a/test/compiler/component-data-static-boolean/Foo.html b/test/generator/component-data-static-boolean/Foo.html similarity index 100% rename from test/compiler/component-data-static-boolean/Foo.html rename to test/generator/component-data-static-boolean/Foo.html diff --git a/test/compiler/component-data-static-boolean/_config.js b/test/generator/component-data-static-boolean/_config.js similarity index 100% rename from test/compiler/component-data-static-boolean/_config.js rename to test/generator/component-data-static-boolean/_config.js diff --git a/test/compiler/component-data-static-boolean/main.html b/test/generator/component-data-static-boolean/main.html similarity index 100% rename from test/compiler/component-data-static-boolean/main.html rename to test/generator/component-data-static-boolean/main.html diff --git a/test/compiler/component-data-static/Widget.html b/test/generator/component-data-static/Widget.html similarity index 100% rename from test/compiler/component-data-static/Widget.html rename to test/generator/component-data-static/Widget.html diff --git a/test/compiler/component-data-static/_config.js b/test/generator/component-data-static/_config.js similarity index 100% rename from test/compiler/component-data-static/_config.js rename to test/generator/component-data-static/_config.js diff --git a/test/compiler/component-data-static/main.html b/test/generator/component-data-static/main.html similarity index 100% rename from test/compiler/component-data-static/main.html rename to test/generator/component-data-static/main.html diff --git a/test/compiler/component-events-data/Widget.html b/test/generator/component-events-data/Widget.html similarity index 100% rename from test/compiler/component-events-data/Widget.html rename to test/generator/component-events-data/Widget.html diff --git a/test/compiler/component-events-data/_config.js b/test/generator/component-events-data/_config.js similarity index 100% rename from test/compiler/component-events-data/_config.js rename to test/generator/component-events-data/_config.js diff --git a/test/compiler/component-events-data/main.html b/test/generator/component-events-data/main.html similarity index 100% rename from test/compiler/component-events-data/main.html rename to test/generator/component-events-data/main.html diff --git a/test/compiler/component-events/Widget.html b/test/generator/component-events/Widget.html similarity index 100% rename from test/compiler/component-events/Widget.html rename to test/generator/component-events/Widget.html diff --git a/test/compiler/component-events/_config.js b/test/generator/component-events/_config.js similarity index 100% rename from test/compiler/component-events/_config.js rename to test/generator/component-events/_config.js diff --git a/test/compiler/component-events/main.html b/test/generator/component-events/main.html similarity index 100% rename from test/compiler/component-events/main.html rename to test/generator/component-events/main.html diff --git a/test/compiler/component-not-void/Link.html b/test/generator/component-not-void/Link.html similarity index 100% rename from test/compiler/component-not-void/Link.html rename to test/generator/component-not-void/Link.html diff --git a/test/compiler/component-not-void/_config.js b/test/generator/component-not-void/_config.js similarity index 100% rename from test/compiler/component-not-void/_config.js rename to test/generator/component-not-void/_config.js diff --git a/test/compiler/component-not-void/main.html b/test/generator/component-not-void/main.html similarity index 100% rename from test/compiler/component-not-void/main.html rename to test/generator/component-not-void/main.html diff --git a/test/compiler/component-ref/Widget.html b/test/generator/component-ref/Widget.html similarity index 100% rename from test/compiler/component-ref/Widget.html rename to test/generator/component-ref/Widget.html diff --git a/test/compiler/component-ref/_config.js b/test/generator/component-ref/_config.js similarity index 100% rename from test/compiler/component-ref/_config.js rename to test/generator/component-ref/_config.js diff --git a/test/compiler/component-ref/main.html b/test/generator/component-ref/main.html similarity index 100% rename from test/compiler/component-ref/main.html rename to test/generator/component-ref/main.html diff --git a/test/compiler/component-yield-if/Widget.html b/test/generator/component-yield-if/Widget.html similarity index 100% rename from test/compiler/component-yield-if/Widget.html rename to test/generator/component-yield-if/Widget.html diff --git a/test/compiler/component-yield-if/_config.js b/test/generator/component-yield-if/_config.js similarity index 100% rename from test/compiler/component-yield-if/_config.js rename to test/generator/component-yield-if/_config.js diff --git a/test/compiler/component-yield-if/main.html b/test/generator/component-yield-if/main.html similarity index 100% rename from test/compiler/component-yield-if/main.html rename to test/generator/component-yield-if/main.html diff --git a/test/compiler/component-yield-parent/Widget.html b/test/generator/component-yield-parent/Widget.html similarity index 100% rename from test/compiler/component-yield-parent/Widget.html rename to test/generator/component-yield-parent/Widget.html diff --git a/test/compiler/component-yield-parent/_config.js b/test/generator/component-yield-parent/_config.js similarity index 100% rename from test/compiler/component-yield-parent/_config.js rename to test/generator/component-yield-parent/_config.js diff --git a/test/compiler/component-yield-parent/main.html b/test/generator/component-yield-parent/main.html similarity index 100% rename from test/compiler/component-yield-parent/main.html rename to test/generator/component-yield-parent/main.html diff --git a/test/compiler/component-yield/_config.js b/test/generator/component-yield/_config.js similarity index 100% rename from test/compiler/component-yield/_config.js rename to test/generator/component-yield/_config.js diff --git a/test/compiler/component-yield/main.html b/test/generator/component-yield/main.html similarity index 100% rename from test/compiler/component-yield/main.html rename to test/generator/component-yield/main.html diff --git a/test/compiler/component/Widget.html b/test/generator/component/Widget.html similarity index 100% rename from test/compiler/component/Widget.html rename to test/generator/component/Widget.html diff --git a/test/compiler/component/_config.js b/test/generator/component/_config.js similarity index 100% rename from test/compiler/component/_config.js rename to test/generator/component/_config.js diff --git a/test/compiler/component/main.html b/test/generator/component/main.html similarity index 100% rename from test/compiler/component/main.html rename to test/generator/component/main.html diff --git a/test/compiler/computed-values/_config.js b/test/generator/computed-values/_config.js similarity index 100% rename from test/compiler/computed-values/_config.js rename to test/generator/computed-values/_config.js diff --git a/test/compiler/computed-values/main.html b/test/generator/computed-values/main.html similarity index 100% rename from test/compiler/computed-values/main.html rename to test/generator/computed-values/main.html diff --git a/test/compiler/css/Widget.html b/test/generator/css/Widget.html similarity index 100% rename from test/compiler/css/Widget.html rename to test/generator/css/Widget.html diff --git a/test/compiler/css/_config.js b/test/generator/css/_config.js similarity index 100% rename from test/compiler/css/_config.js rename to test/generator/css/_config.js diff --git a/test/compiler/css/main.html b/test/generator/css/main.html similarity index 100% rename from test/compiler/css/main.html rename to test/generator/css/main.html diff --git a/test/compiler/custom-method/_config.js b/test/generator/custom-method/_config.js similarity index 100% rename from test/compiler/custom-method/_config.js rename to test/generator/custom-method/_config.js diff --git a/test/compiler/custom-method/main.html b/test/generator/custom-method/main.html similarity index 100% rename from test/compiler/custom-method/main.html rename to test/generator/custom-method/main.html diff --git a/test/compiler/default-data-override/_config.js b/test/generator/default-data-override/_config.js similarity index 100% rename from test/compiler/default-data-override/_config.js rename to test/generator/default-data-override/_config.js diff --git a/test/compiler/default-data-override/main.html b/test/generator/default-data-override/main.html similarity index 100% rename from test/compiler/default-data-override/main.html rename to test/generator/default-data-override/main.html diff --git a/test/compiler/default-data/_config.js b/test/generator/default-data/_config.js similarity index 100% rename from test/compiler/default-data/_config.js rename to test/generator/default-data/_config.js diff --git a/test/compiler/default-data/main.html b/test/generator/default-data/main.html similarity index 100% rename from test/compiler/default-data/main.html rename to test/generator/default-data/main.html diff --git a/test/compiler/each-block-containing-if/_config.js b/test/generator/each-block-containing-if/_config.js similarity index 100% rename from test/compiler/each-block-containing-if/_config.js rename to test/generator/each-block-containing-if/_config.js diff --git a/test/compiler/each-block-containing-if/main.html b/test/generator/each-block-containing-if/main.html similarity index 100% rename from test/compiler/each-block-containing-if/main.html rename to test/generator/each-block-containing-if/main.html diff --git a/test/compiler/each-block-else/_config.js b/test/generator/each-block-else/_config.js similarity index 100% rename from test/compiler/each-block-else/_config.js rename to test/generator/each-block-else/_config.js diff --git a/test/compiler/each-block-else/main.html b/test/generator/each-block-else/main.html similarity index 100% rename from test/compiler/each-block-else/main.html rename to test/generator/each-block-else/main.html diff --git a/test/compiler/each-block-indexed/_config.js b/test/generator/each-block-indexed/_config.js similarity index 100% rename from test/compiler/each-block-indexed/_config.js rename to test/generator/each-block-indexed/_config.js diff --git a/test/compiler/each-block-indexed/main.html b/test/generator/each-block-indexed/main.html similarity index 100% rename from test/compiler/each-block-indexed/main.html rename to test/generator/each-block-indexed/main.html diff --git a/test/compiler/each-block-random-permute/_config.js b/test/generator/each-block-random-permute/_config.js similarity index 100% rename from test/compiler/each-block-random-permute/_config.js rename to test/generator/each-block-random-permute/_config.js diff --git a/test/compiler/each-block-random-permute/main.html b/test/generator/each-block-random-permute/main.html similarity index 100% rename from test/compiler/each-block-random-permute/main.html rename to test/generator/each-block-random-permute/main.html diff --git a/test/compiler/each-block-text-node/_config.js b/test/generator/each-block-text-node/_config.js similarity index 100% rename from test/compiler/each-block-text-node/_config.js rename to test/generator/each-block-text-node/_config.js diff --git a/test/compiler/each-block-text-node/main.html b/test/generator/each-block-text-node/main.html similarity index 100% rename from test/compiler/each-block-text-node/main.html rename to test/generator/each-block-text-node/main.html diff --git a/test/compiler/each-block/_config.js b/test/generator/each-block/_config.js similarity index 100% rename from test/compiler/each-block/_config.js rename to test/generator/each-block/_config.js diff --git a/test/compiler/each-block/main.html b/test/generator/each-block/main.html similarity index 100% rename from test/compiler/each-block/main.html rename to test/generator/each-block/main.html diff --git a/test/compiler/each-blocks-expression/_config.js b/test/generator/each-blocks-expression/_config.js similarity index 100% rename from test/compiler/each-blocks-expression/_config.js rename to test/generator/each-blocks-expression/_config.js diff --git a/test/compiler/each-blocks-expression/main.html b/test/generator/each-blocks-expression/main.html similarity index 100% rename from test/compiler/each-blocks-expression/main.html rename to test/generator/each-blocks-expression/main.html diff --git a/test/compiler/each-blocks-nested-b/_config.js b/test/generator/each-blocks-nested-b/_config.js similarity index 100% rename from test/compiler/each-blocks-nested-b/_config.js rename to test/generator/each-blocks-nested-b/_config.js diff --git a/test/compiler/each-blocks-nested-b/main.html b/test/generator/each-blocks-nested-b/main.html similarity index 100% rename from test/compiler/each-blocks-nested-b/main.html rename to test/generator/each-blocks-nested-b/main.html diff --git a/test/compiler/each-blocks-nested/_config.js b/test/generator/each-blocks-nested/_config.js similarity index 100% rename from test/compiler/each-blocks-nested/_config.js rename to test/generator/each-blocks-nested/_config.js diff --git a/test/compiler/each-blocks-nested/main.html b/test/generator/each-blocks-nested/main.html similarity index 100% rename from test/compiler/each-blocks-nested/main.html rename to test/generator/each-blocks-nested/main.html diff --git a/test/compiler/event-handler-custom-context/_config.js b/test/generator/event-handler-custom-context/_config.js similarity index 100% rename from test/compiler/event-handler-custom-context/_config.js rename to test/generator/event-handler-custom-context/_config.js diff --git a/test/compiler/event-handler-custom-context/main.html b/test/generator/event-handler-custom-context/main.html similarity index 100% rename from test/compiler/event-handler-custom-context/main.html rename to test/generator/event-handler-custom-context/main.html diff --git a/test/compiler/event-handler-custom/_config.js b/test/generator/event-handler-custom/_config.js similarity index 100% rename from test/compiler/event-handler-custom/_config.js rename to test/generator/event-handler-custom/_config.js diff --git a/test/compiler/event-handler-custom/main.html b/test/generator/event-handler-custom/main.html similarity index 100% rename from test/compiler/event-handler-custom/main.html rename to test/generator/event-handler-custom/main.html diff --git a/test/compiler/event-handler-removal/_config.js b/test/generator/event-handler-removal/_config.js similarity index 100% rename from test/compiler/event-handler-removal/_config.js rename to test/generator/event-handler-removal/_config.js diff --git a/test/compiler/event-handler-removal/main.html b/test/generator/event-handler-removal/main.html similarity index 100% rename from test/compiler/event-handler-removal/main.html rename to test/generator/event-handler-removal/main.html diff --git a/test/compiler/event-handler/_config.js b/test/generator/event-handler/_config.js similarity index 100% rename from test/compiler/event-handler/_config.js rename to test/generator/event-handler/_config.js diff --git a/test/compiler/event-handler/main.html b/test/generator/event-handler/main.html similarity index 100% rename from test/compiler/event-handler/main.html rename to test/generator/event-handler/main.html diff --git a/test/compiler/events-custom/_config.js b/test/generator/events-custom/_config.js similarity index 100% rename from test/compiler/events-custom/_config.js rename to test/generator/events-custom/_config.js diff --git a/test/compiler/events-custom/main.html b/test/generator/events-custom/main.html similarity index 100% rename from test/compiler/events-custom/main.html rename to test/generator/events-custom/main.html diff --git a/test/compiler/events-lifecycle/_config.js b/test/generator/events-lifecycle/_config.js similarity index 100% rename from test/compiler/events-lifecycle/_config.js rename to test/generator/events-lifecycle/_config.js diff --git a/test/compiler/events-lifecycle/main.html b/test/generator/events-lifecycle/main.html similarity index 100% rename from test/compiler/events-lifecycle/main.html rename to test/generator/events-lifecycle/main.html diff --git a/test/compiler/get-state/_config.js b/test/generator/get-state/_config.js similarity index 100% rename from test/compiler/get-state/_config.js rename to test/generator/get-state/_config.js diff --git a/test/compiler/get-state/main.html b/test/generator/get-state/main.html similarity index 100% rename from test/compiler/get-state/main.html rename to test/generator/get-state/main.html diff --git a/test/compiler/hello-world/_config.js b/test/generator/hello-world/_config.js similarity index 100% rename from test/compiler/hello-world/_config.js rename to test/generator/hello-world/_config.js diff --git a/test/compiler/hello-world/main.html b/test/generator/hello-world/main.html similarity index 100% rename from test/compiler/hello-world/main.html rename to test/generator/hello-world/main.html diff --git a/test/compiler/helpers/_config.js b/test/generator/helpers/_config.js similarity index 100% rename from test/compiler/helpers/_config.js rename to test/generator/helpers/_config.js diff --git a/test/compiler/helpers/main.html b/test/generator/helpers/main.html similarity index 100% rename from test/compiler/helpers/main.html rename to test/generator/helpers/main.html diff --git a/test/compiler/if-block-else/_config.js b/test/generator/if-block-else/_config.js similarity index 100% rename from test/compiler/if-block-else/_config.js rename to test/generator/if-block-else/_config.js diff --git a/test/compiler/if-block-else/main.html b/test/generator/if-block-else/main.html similarity index 100% rename from test/compiler/if-block-else/main.html rename to test/generator/if-block-else/main.html diff --git a/test/compiler/if-block-elseif-text/_config.js b/test/generator/if-block-elseif-text/_config.js similarity index 100% rename from test/compiler/if-block-elseif-text/_config.js rename to test/generator/if-block-elseif-text/_config.js diff --git a/test/compiler/if-block-elseif-text/main.html b/test/generator/if-block-elseif-text/main.html similarity index 100% rename from test/compiler/if-block-elseif-text/main.html rename to test/generator/if-block-elseif-text/main.html diff --git a/test/compiler/if-block-elseif/_config.js b/test/generator/if-block-elseif/_config.js similarity index 100% rename from test/compiler/if-block-elseif/_config.js rename to test/generator/if-block-elseif/_config.js diff --git a/test/compiler/if-block-elseif/main.html b/test/generator/if-block-elseif/main.html similarity index 100% rename from test/compiler/if-block-elseif/main.html rename to test/generator/if-block-elseif/main.html diff --git a/test/compiler/if-block-expression/_config.js b/test/generator/if-block-expression/_config.js similarity index 100% rename from test/compiler/if-block-expression/_config.js rename to test/generator/if-block-expression/_config.js diff --git a/test/compiler/if-block-expression/main.html b/test/generator/if-block-expression/main.html similarity index 100% rename from test/compiler/if-block-expression/main.html rename to test/generator/if-block-expression/main.html diff --git a/test/compiler/if-block-widget/Widget.html b/test/generator/if-block-widget/Widget.html similarity index 100% rename from test/compiler/if-block-widget/Widget.html rename to test/generator/if-block-widget/Widget.html diff --git a/test/compiler/if-block-widget/_config.js b/test/generator/if-block-widget/_config.js similarity index 100% rename from test/compiler/if-block-widget/_config.js rename to test/generator/if-block-widget/_config.js diff --git a/test/compiler/if-block-widget/main.html b/test/generator/if-block-widget/main.html similarity index 100% rename from test/compiler/if-block-widget/main.html rename to test/generator/if-block-widget/main.html diff --git a/test/compiler/if-block/_config.js b/test/generator/if-block/_config.js similarity index 100% rename from test/compiler/if-block/_config.js rename to test/generator/if-block/_config.js diff --git a/test/compiler/if-block/main.html b/test/generator/if-block/main.html similarity index 100% rename from test/compiler/if-block/main.html rename to test/generator/if-block/main.html diff --git a/test/compiler/inline-expressions/_config.js b/test/generator/inline-expressions/_config.js similarity index 100% rename from test/compiler/inline-expressions/_config.js rename to test/generator/inline-expressions/_config.js diff --git a/test/compiler/inline-expressions/main.html b/test/generator/inline-expressions/main.html similarity index 100% rename from test/compiler/inline-expressions/main.html rename to test/generator/inline-expressions/main.html diff --git a/test/compiler/lifecycle-events/_config.js b/test/generator/lifecycle-events/_config.js similarity index 100% rename from test/compiler/lifecycle-events/_config.js rename to test/generator/lifecycle-events/_config.js diff --git a/test/compiler/lifecycle-events/main.html b/test/generator/lifecycle-events/main.html similarity index 100% rename from test/compiler/lifecycle-events/main.html rename to test/generator/lifecycle-events/main.html diff --git a/test/compiler/names-deconflicted-nested/_config.js b/test/generator/names-deconflicted-nested/_config.js similarity index 100% rename from test/compiler/names-deconflicted-nested/_config.js rename to test/generator/names-deconflicted-nested/_config.js diff --git a/test/compiler/names-deconflicted-nested/main.html b/test/generator/names-deconflicted-nested/main.html similarity index 100% rename from test/compiler/names-deconflicted-nested/main.html rename to test/generator/names-deconflicted-nested/main.html diff --git a/test/compiler/names-deconflicted/Widget.html b/test/generator/names-deconflicted/Widget.html similarity index 100% rename from test/compiler/names-deconflicted/Widget.html rename to test/generator/names-deconflicted/Widget.html diff --git a/test/compiler/names-deconflicted/_config.js b/test/generator/names-deconflicted/_config.js similarity index 100% rename from test/compiler/names-deconflicted/_config.js rename to test/generator/names-deconflicted/_config.js diff --git a/test/compiler/names-deconflicted/main.html b/test/generator/names-deconflicted/main.html similarity index 100% rename from test/compiler/names-deconflicted/main.html rename to test/generator/names-deconflicted/main.html diff --git a/test/compiler/observe-component-ignores-irrelevant-changes/Foo.html b/test/generator/observe-component-ignores-irrelevant-changes/Foo.html similarity index 100% rename from test/compiler/observe-component-ignores-irrelevant-changes/Foo.html rename to test/generator/observe-component-ignores-irrelevant-changes/Foo.html diff --git a/test/compiler/observe-component-ignores-irrelevant-changes/_config.js b/test/generator/observe-component-ignores-irrelevant-changes/_config.js similarity index 100% rename from test/compiler/observe-component-ignores-irrelevant-changes/_config.js rename to test/generator/observe-component-ignores-irrelevant-changes/_config.js diff --git a/test/compiler/observe-component-ignores-irrelevant-changes/main.html b/test/generator/observe-component-ignores-irrelevant-changes/main.html similarity index 100% rename from test/compiler/observe-component-ignores-irrelevant-changes/main.html rename to test/generator/observe-component-ignores-irrelevant-changes/main.html diff --git a/test/compiler/observe-prevents-loop/_config.js b/test/generator/observe-prevents-loop/_config.js similarity index 100% rename from test/compiler/observe-prevents-loop/_config.js rename to test/generator/observe-prevents-loop/_config.js diff --git a/test/compiler/observe-prevents-loop/main.html b/test/generator/observe-prevents-loop/main.html similarity index 100% rename from test/compiler/observe-prevents-loop/main.html rename to test/generator/observe-prevents-loop/main.html diff --git a/test/compiler/onrender-fires-when-ready-nested/ParentWidget.html b/test/generator/onrender-fires-when-ready-nested/ParentWidget.html similarity index 100% rename from test/compiler/onrender-fires-when-ready-nested/ParentWidget.html rename to test/generator/onrender-fires-when-ready-nested/ParentWidget.html diff --git a/test/compiler/onrender-fires-when-ready-nested/Widget.html b/test/generator/onrender-fires-when-ready-nested/Widget.html similarity index 100% rename from test/compiler/onrender-fires-when-ready-nested/Widget.html rename to test/generator/onrender-fires-when-ready-nested/Widget.html diff --git a/test/compiler/onrender-fires-when-ready-nested/_config.js b/test/generator/onrender-fires-when-ready-nested/_config.js similarity index 100% rename from test/compiler/onrender-fires-when-ready-nested/_config.js rename to test/generator/onrender-fires-when-ready-nested/_config.js diff --git a/test/compiler/onrender-fires-when-ready-nested/main.html b/test/generator/onrender-fires-when-ready-nested/main.html similarity index 100% rename from test/compiler/onrender-fires-when-ready-nested/main.html rename to test/generator/onrender-fires-when-ready-nested/main.html diff --git a/test/compiler/onrender-fires-when-ready/Widget.html b/test/generator/onrender-fires-when-ready/Widget.html similarity index 100% rename from test/compiler/onrender-fires-when-ready/Widget.html rename to test/generator/onrender-fires-when-ready/Widget.html diff --git a/test/compiler/onrender-fires-when-ready/_config.js b/test/generator/onrender-fires-when-ready/_config.js similarity index 100% rename from test/compiler/onrender-fires-when-ready/_config.js rename to test/generator/onrender-fires-when-ready/_config.js diff --git a/test/compiler/onrender-fires-when-ready/main.html b/test/generator/onrender-fires-when-ready/main.html similarity index 100% rename from test/compiler/onrender-fires-when-ready/main.html rename to test/generator/onrender-fires-when-ready/main.html diff --git a/test/compiler/pass-no-options/_config.js b/test/generator/pass-no-options/_config.js similarity index 100% rename from test/compiler/pass-no-options/_config.js rename to test/generator/pass-no-options/_config.js diff --git a/test/compiler/pass-no-options/main.html b/test/generator/pass-no-options/main.html similarity index 100% rename from test/compiler/pass-no-options/main.html rename to test/generator/pass-no-options/main.html diff --git a/test/compiler/raw-mustaches/_config.js b/test/generator/raw-mustaches/_config.js similarity index 100% rename from test/compiler/raw-mustaches/_config.js rename to test/generator/raw-mustaches/_config.js diff --git a/test/compiler/raw-mustaches/main.html b/test/generator/raw-mustaches/main.html similarity index 100% rename from test/compiler/raw-mustaches/main.html rename to test/generator/raw-mustaches/main.html diff --git a/test/compiler/refs-unset/_config.js b/test/generator/refs-unset/_config.js similarity index 100% rename from test/compiler/refs-unset/_config.js rename to test/generator/refs-unset/_config.js diff --git a/test/compiler/refs-unset/main.html b/test/generator/refs-unset/main.html similarity index 100% rename from test/compiler/refs-unset/main.html rename to test/generator/refs-unset/main.html diff --git a/test/compiler/refs/_config.js b/test/generator/refs/_config.js similarity index 100% rename from test/compiler/refs/_config.js rename to test/generator/refs/_config.js diff --git a/test/compiler/refs/main.html b/test/generator/refs/main.html similarity index 100% rename from test/compiler/refs/main.html rename to test/generator/refs/main.html diff --git a/test/compiler/set-in-observe-dedupes-renders/Widget.html b/test/generator/set-in-observe-dedupes-renders/Widget.html similarity index 100% rename from test/compiler/set-in-observe-dedupes-renders/Widget.html rename to test/generator/set-in-observe-dedupes-renders/Widget.html diff --git a/test/compiler/set-in-observe-dedupes-renders/_config.js b/test/generator/set-in-observe-dedupes-renders/_config.js similarity index 100% rename from test/compiler/set-in-observe-dedupes-renders/_config.js rename to test/generator/set-in-observe-dedupes-renders/_config.js diff --git a/test/compiler/set-in-observe-dedupes-renders/main.html b/test/generator/set-in-observe-dedupes-renders/main.html similarity index 100% rename from test/compiler/set-in-observe-dedupes-renders/main.html rename to test/generator/set-in-observe-dedupes-renders/main.html diff --git a/test/compiler/set-in-observe/_config.js b/test/generator/set-in-observe/_config.js similarity index 100% rename from test/compiler/set-in-observe/_config.js rename to test/generator/set-in-observe/_config.js diff --git a/test/compiler/set-in-observe/main.html b/test/generator/set-in-observe/main.html similarity index 100% rename from test/compiler/set-in-observe/main.html rename to test/generator/set-in-observe/main.html diff --git a/test/compiler/set-in-onrender/_config.js b/test/generator/set-in-onrender/_config.js similarity index 100% rename from test/compiler/set-in-onrender/_config.js rename to test/generator/set-in-onrender/_config.js diff --git a/test/compiler/set-in-onrender/main.html b/test/generator/set-in-onrender/main.html similarity index 100% rename from test/compiler/set-in-onrender/main.html rename to test/generator/set-in-onrender/main.html diff --git a/test/compiler/set-prevents-loop/Foo.html b/test/generator/set-prevents-loop/Foo.html similarity index 100% rename from test/compiler/set-prevents-loop/Foo.html rename to test/generator/set-prevents-loop/Foo.html diff --git a/test/compiler/set-prevents-loop/_config.js b/test/generator/set-prevents-loop/_config.js similarity index 100% rename from test/compiler/set-prevents-loop/_config.js rename to test/generator/set-prevents-loop/_config.js diff --git a/test/compiler/set-prevents-loop/main.html b/test/generator/set-prevents-loop/main.html similarity index 100% rename from test/compiler/set-prevents-loop/main.html rename to test/generator/set-prevents-loop/main.html diff --git a/test/compiler/single-static-element/_config.js b/test/generator/single-static-element/_config.js similarity index 100% rename from test/compiler/single-static-element/_config.js rename to test/generator/single-static-element/_config.js diff --git a/test/compiler/single-static-element/main.html b/test/generator/single-static-element/main.html similarity index 100% rename from test/compiler/single-static-element/main.html rename to test/generator/single-static-element/main.html diff --git a/test/compiler/svg-attributes/_config.js b/test/generator/svg-attributes/_config.js similarity index 100% rename from test/compiler/svg-attributes/_config.js rename to test/generator/svg-attributes/_config.js diff --git a/test/compiler/svg-attributes/main.html b/test/generator/svg-attributes/main.html similarity index 100% rename from test/compiler/svg-attributes/main.html rename to test/generator/svg-attributes/main.html diff --git a/test/compiler/svg-each-block-namespace/_config.js b/test/generator/svg-each-block-namespace/_config.js similarity index 100% rename from test/compiler/svg-each-block-namespace/_config.js rename to test/generator/svg-each-block-namespace/_config.js diff --git a/test/compiler/svg-each-block-namespace/main.html b/test/generator/svg-each-block-namespace/main.html similarity index 100% rename from test/compiler/svg-each-block-namespace/main.html rename to test/generator/svg-each-block-namespace/main.html diff --git a/test/compiler/svg-multiple/_config.js b/test/generator/svg-multiple/_config.js similarity index 100% rename from test/compiler/svg-multiple/_config.js rename to test/generator/svg-multiple/_config.js diff --git a/test/compiler/svg-multiple/main.html b/test/generator/svg-multiple/main.html similarity index 100% rename from test/compiler/svg-multiple/main.html rename to test/generator/svg-multiple/main.html diff --git a/test/compiler/svg-no-whitespace/_config.js b/test/generator/svg-no-whitespace/_config.js similarity index 100% rename from test/compiler/svg-no-whitespace/_config.js rename to test/generator/svg-no-whitespace/_config.js diff --git a/test/compiler/svg-no-whitespace/main.html b/test/generator/svg-no-whitespace/main.html similarity index 100% rename from test/compiler/svg-no-whitespace/main.html rename to test/generator/svg-no-whitespace/main.html diff --git a/test/compiler/svg-xmlns/_config.js b/test/generator/svg-xmlns/_config.js similarity index 100% rename from test/compiler/svg-xmlns/_config.js rename to test/generator/svg-xmlns/_config.js diff --git a/test/compiler/svg-xmlns/main.html b/test/generator/svg-xmlns/main.html similarity index 100% rename from test/compiler/svg-xmlns/main.html rename to test/generator/svg-xmlns/main.html diff --git a/test/compiler/svg/_config.js b/test/generator/svg/_config.js similarity index 100% rename from test/compiler/svg/_config.js rename to test/generator/svg/_config.js diff --git a/test/compiler/svg/main.html b/test/generator/svg/main.html similarity index 100% rename from test/compiler/svg/main.html rename to test/generator/svg/main.html diff --git a/test/compiler/text-node-top-level/_config.js b/test/generator/text-node-top-level/_config.js similarity index 100% rename from test/compiler/text-node-top-level/_config.js rename to test/generator/text-node-top-level/_config.js diff --git a/test/compiler/text-node-top-level/main.html b/test/generator/text-node-top-level/main.html similarity index 100% rename from test/compiler/text-node-top-level/main.html rename to test/generator/text-node-top-level/main.html diff --git a/test/ssr/attribute-boolean/_actual.html b/test/server-side-rendering/attribute-boolean/_actual.html similarity index 100% rename from test/ssr/attribute-boolean/_actual.html rename to test/server-side-rendering/attribute-boolean/_actual.html diff --git a/test/ssr/attribute-boolean/_expected.html b/test/server-side-rendering/attribute-boolean/_expected.html similarity index 100% rename from test/ssr/attribute-boolean/_expected.html rename to test/server-side-rendering/attribute-boolean/_expected.html diff --git a/test/ssr/attribute-boolean/main.html b/test/server-side-rendering/attribute-boolean/main.html similarity index 100% rename from test/ssr/attribute-boolean/main.html rename to test/server-side-rendering/attribute-boolean/main.html diff --git a/test/ssr/attribute-dynamic/_actual.html b/test/server-side-rendering/attribute-dynamic/_actual.html similarity index 100% rename from test/ssr/attribute-dynamic/_actual.html rename to test/server-side-rendering/attribute-dynamic/_actual.html diff --git a/test/ssr/attribute-dynamic/_expected.html b/test/server-side-rendering/attribute-dynamic/_expected.html similarity index 100% rename from test/ssr/attribute-dynamic/_expected.html rename to test/server-side-rendering/attribute-dynamic/_expected.html diff --git a/test/ssr/attribute-dynamic/data.json b/test/server-side-rendering/attribute-dynamic/data.json similarity index 100% rename from test/ssr/attribute-dynamic/data.json rename to test/server-side-rendering/attribute-dynamic/data.json diff --git a/test/ssr/attribute-dynamic/main.html b/test/server-side-rendering/attribute-dynamic/main.html similarity index 100% rename from test/ssr/attribute-dynamic/main.html rename to test/server-side-rendering/attribute-dynamic/main.html diff --git a/test/ssr/attribute-static/_actual.html b/test/server-side-rendering/attribute-static/_actual.html similarity index 100% rename from test/ssr/attribute-static/_actual.html rename to test/server-side-rendering/attribute-static/_actual.html diff --git a/test/ssr/attribute-static/_expected.html b/test/server-side-rendering/attribute-static/_expected.html similarity index 100% rename from test/ssr/attribute-static/_expected.html rename to test/server-side-rendering/attribute-static/_expected.html diff --git a/test/ssr/attribute-static/main.html b/test/server-side-rendering/attribute-static/main.html similarity index 100% rename from test/ssr/attribute-static/main.html rename to test/server-side-rendering/attribute-static/main.html diff --git a/test/ssr/component-data-dynamic/Widget.html b/test/server-side-rendering/component-data-dynamic/Widget.html similarity index 100% rename from test/ssr/component-data-dynamic/Widget.html rename to test/server-side-rendering/component-data-dynamic/Widget.html diff --git a/test/ssr/component-data-dynamic/_actual.html b/test/server-side-rendering/component-data-dynamic/_actual.html similarity index 100% rename from test/ssr/component-data-dynamic/_actual.html rename to test/server-side-rendering/component-data-dynamic/_actual.html diff --git a/test/ssr/component-data-dynamic/_expected.html b/test/server-side-rendering/component-data-dynamic/_expected.html similarity index 100% rename from test/ssr/component-data-dynamic/_expected.html rename to test/server-side-rendering/component-data-dynamic/_expected.html diff --git a/test/ssr/component-data-dynamic/data.json b/test/server-side-rendering/component-data-dynamic/data.json similarity index 100% rename from test/ssr/component-data-dynamic/data.json rename to test/server-side-rendering/component-data-dynamic/data.json diff --git a/test/ssr/component-data-dynamic/main.html b/test/server-side-rendering/component-data-dynamic/main.html similarity index 100% rename from test/ssr/component-data-dynamic/main.html rename to test/server-side-rendering/component-data-dynamic/main.html diff --git a/test/ssr/component-data-empty/Widget.html b/test/server-side-rendering/component-data-empty/Widget.html similarity index 100% rename from test/ssr/component-data-empty/Widget.html rename to test/server-side-rendering/component-data-empty/Widget.html diff --git a/test/ssr/component-data-empty/_actual.html b/test/server-side-rendering/component-data-empty/_actual.html similarity index 100% rename from test/ssr/component-data-empty/_actual.html rename to test/server-side-rendering/component-data-empty/_actual.html diff --git a/test/ssr/component-data-empty/_expected.html b/test/server-side-rendering/component-data-empty/_expected.html similarity index 100% rename from test/ssr/component-data-empty/_expected.html rename to test/server-side-rendering/component-data-empty/_expected.html diff --git a/test/ssr/component-data-empty/main.html b/test/server-side-rendering/component-data-empty/main.html similarity index 100% rename from test/ssr/component-data-empty/main.html rename to test/server-side-rendering/component-data-empty/main.html diff --git a/test/ssr/component-data-static/Widget.html b/test/server-side-rendering/component-data-static/Widget.html similarity index 100% rename from test/ssr/component-data-static/Widget.html rename to test/server-side-rendering/component-data-static/Widget.html diff --git a/test/ssr/component-data-static/_actual.html b/test/server-side-rendering/component-data-static/_actual.html similarity index 100% rename from test/ssr/component-data-static/_actual.html rename to test/server-side-rendering/component-data-static/_actual.html diff --git a/test/ssr/component-data-static/_expected.html b/test/server-side-rendering/component-data-static/_expected.html similarity index 100% rename from test/ssr/component-data-static/_expected.html rename to test/server-side-rendering/component-data-static/_expected.html diff --git a/test/ssr/component-data-static/main.html b/test/server-side-rendering/component-data-static/main.html similarity index 100% rename from test/ssr/component-data-static/main.html rename to test/server-side-rendering/component-data-static/main.html diff --git a/test/ssr/component-yield/Widget.html b/test/server-side-rendering/component-yield/Widget.html similarity index 100% rename from test/ssr/component-yield/Widget.html rename to test/server-side-rendering/component-yield/Widget.html diff --git a/test/ssr/component-yield/_actual.html b/test/server-side-rendering/component-yield/_actual.html similarity index 100% rename from test/ssr/component-yield/_actual.html rename to test/server-side-rendering/component-yield/_actual.html diff --git a/test/ssr/component-yield/_expected.html b/test/server-side-rendering/component-yield/_expected.html similarity index 100% rename from test/ssr/component-yield/_expected.html rename to test/server-side-rendering/component-yield/_expected.html diff --git a/test/ssr/component-yield/main.html b/test/server-side-rendering/component-yield/main.html similarity index 100% rename from test/ssr/component-yield/main.html rename to test/server-side-rendering/component-yield/main.html diff --git a/test/ssr/component/Widget.html b/test/server-side-rendering/component/Widget.html similarity index 100% rename from test/ssr/component/Widget.html rename to test/server-side-rendering/component/Widget.html diff --git a/test/ssr/component/_actual.html b/test/server-side-rendering/component/_actual.html similarity index 100% rename from test/ssr/component/_actual.html rename to test/server-side-rendering/component/_actual.html diff --git a/test/ssr/component/_expected.html b/test/server-side-rendering/component/_expected.html similarity index 100% rename from test/ssr/component/_expected.html rename to test/server-side-rendering/component/_expected.html diff --git a/test/ssr/component/main.html b/test/server-side-rendering/component/main.html similarity index 100% rename from test/ssr/component/main.html rename to test/server-side-rendering/component/main.html diff --git a/test/ssr/computed/_actual.html b/test/server-side-rendering/computed/_actual.html similarity index 100% rename from test/ssr/computed/_actual.html rename to test/server-side-rendering/computed/_actual.html diff --git a/test/ssr/computed/_expected.html b/test/server-side-rendering/computed/_expected.html similarity index 100% rename from test/ssr/computed/_expected.html rename to test/server-side-rendering/computed/_expected.html diff --git a/test/ssr/computed/data.json b/test/server-side-rendering/computed/data.json similarity index 100% rename from test/ssr/computed/data.json rename to test/server-side-rendering/computed/data.json diff --git a/test/ssr/computed/main.html b/test/server-side-rendering/computed/main.html similarity index 100% rename from test/ssr/computed/main.html rename to test/server-side-rendering/computed/main.html diff --git a/test/ssr/default-data-override/_actual.html b/test/server-side-rendering/default-data-override/_actual.html similarity index 100% rename from test/ssr/default-data-override/_actual.html rename to test/server-side-rendering/default-data-override/_actual.html diff --git a/test/ssr/default-data-override/_expected.html b/test/server-side-rendering/default-data-override/_expected.html similarity index 100% rename from test/ssr/default-data-override/_expected.html rename to test/server-side-rendering/default-data-override/_expected.html diff --git a/test/ssr/default-data-override/data.json b/test/server-side-rendering/default-data-override/data.json similarity index 100% rename from test/ssr/default-data-override/data.json rename to test/server-side-rendering/default-data-override/data.json diff --git a/test/ssr/default-data-override/main.html b/test/server-side-rendering/default-data-override/main.html similarity index 100% rename from test/ssr/default-data-override/main.html rename to test/server-side-rendering/default-data-override/main.html diff --git a/test/ssr/default-data/_actual.html b/test/server-side-rendering/default-data/_actual.html similarity index 100% rename from test/ssr/default-data/_actual.html rename to test/server-side-rendering/default-data/_actual.html diff --git a/test/ssr/default-data/_expected.html b/test/server-side-rendering/default-data/_expected.html similarity index 100% rename from test/ssr/default-data/_expected.html rename to test/server-side-rendering/default-data/_expected.html diff --git a/test/ssr/default-data/main.html b/test/server-side-rendering/default-data/main.html similarity index 100% rename from test/ssr/default-data/main.html rename to test/server-side-rendering/default-data/main.html diff --git a/test/ssr/dynamic-text/_actual.html b/test/server-side-rendering/dynamic-text/_actual.html similarity index 100% rename from test/ssr/dynamic-text/_actual.html rename to test/server-side-rendering/dynamic-text/_actual.html diff --git a/test/ssr/dynamic-text/_expected.html b/test/server-side-rendering/dynamic-text/_expected.html similarity index 100% rename from test/ssr/dynamic-text/_expected.html rename to test/server-side-rendering/dynamic-text/_expected.html diff --git a/test/ssr/dynamic-text/data.json b/test/server-side-rendering/dynamic-text/data.json similarity index 100% rename from test/ssr/dynamic-text/data.json rename to test/server-side-rendering/dynamic-text/data.json diff --git a/test/ssr/dynamic-text/main.html b/test/server-side-rendering/dynamic-text/main.html similarity index 100% rename from test/ssr/dynamic-text/main.html rename to test/server-side-rendering/dynamic-text/main.html diff --git a/test/ssr/each-block/_actual.html b/test/server-side-rendering/each-block/_actual.html similarity index 100% rename from test/ssr/each-block/_actual.html rename to test/server-side-rendering/each-block/_actual.html diff --git a/test/ssr/each-block/_expected.html b/test/server-side-rendering/each-block/_expected.html similarity index 100% rename from test/ssr/each-block/_expected.html rename to test/server-side-rendering/each-block/_expected.html diff --git a/test/ssr/each-block/data.json b/test/server-side-rendering/each-block/data.json similarity index 100% rename from test/ssr/each-block/data.json rename to test/server-side-rendering/each-block/data.json diff --git a/test/ssr/each-block/main.html b/test/server-side-rendering/each-block/main.html similarity index 100% rename from test/ssr/each-block/main.html rename to test/server-side-rendering/each-block/main.html diff --git a/test/ssr/helpers/_actual.html b/test/server-side-rendering/helpers/_actual.html similarity index 100% rename from test/ssr/helpers/_actual.html rename to test/server-side-rendering/helpers/_actual.html diff --git a/test/ssr/helpers/_expected.html b/test/server-side-rendering/helpers/_expected.html similarity index 100% rename from test/ssr/helpers/_expected.html rename to test/server-side-rendering/helpers/_expected.html diff --git a/test/ssr/helpers/main.html b/test/server-side-rendering/helpers/main.html similarity index 100% rename from test/ssr/helpers/main.html rename to test/server-side-rendering/helpers/main.html diff --git a/test/ssr/if-block-false/_actual.html b/test/server-side-rendering/if-block-false/_actual.html similarity index 100% rename from test/ssr/if-block-false/_actual.html rename to test/server-side-rendering/if-block-false/_actual.html diff --git a/test/ssr/if-block-false/_expected.html b/test/server-side-rendering/if-block-false/_expected.html similarity index 100% rename from test/ssr/if-block-false/_expected.html rename to test/server-side-rendering/if-block-false/_expected.html diff --git a/test/ssr/if-block-false/data.json b/test/server-side-rendering/if-block-false/data.json similarity index 100% rename from test/ssr/if-block-false/data.json rename to test/server-side-rendering/if-block-false/data.json diff --git a/test/ssr/if-block-false/main.html b/test/server-side-rendering/if-block-false/main.html similarity index 100% rename from test/ssr/if-block-false/main.html rename to test/server-side-rendering/if-block-false/main.html diff --git a/test/ssr/if-block-true/_actual.html b/test/server-side-rendering/if-block-true/_actual.html similarity index 100% rename from test/ssr/if-block-true/_actual.html rename to test/server-side-rendering/if-block-true/_actual.html diff --git a/test/ssr/if-block-true/_expected.html b/test/server-side-rendering/if-block-true/_expected.html similarity index 100% rename from test/ssr/if-block-true/_expected.html rename to test/server-side-rendering/if-block-true/_expected.html diff --git a/test/ssr/if-block-true/data.json b/test/server-side-rendering/if-block-true/data.json similarity index 100% rename from test/ssr/if-block-true/data.json rename to test/server-side-rendering/if-block-true/data.json diff --git a/test/ssr/if-block-true/main.html b/test/server-side-rendering/if-block-true/main.html similarity index 100% rename from test/ssr/if-block-true/main.html rename to test/server-side-rendering/if-block-true/main.html diff --git a/test/ssr/static-div/_actual.html b/test/server-side-rendering/static-div/_actual.html similarity index 100% rename from test/ssr/static-div/_actual.html rename to test/server-side-rendering/static-div/_actual.html diff --git a/test/ssr/static-div/_expected.html b/test/server-side-rendering/static-div/_expected.html similarity index 100% rename from test/ssr/static-div/_expected.html rename to test/server-side-rendering/static-div/_expected.html diff --git a/test/ssr/static-div/main.html b/test/server-side-rendering/static-div/main.html similarity index 100% rename from test/ssr/static-div/main.html rename to test/server-side-rendering/static-div/main.html diff --git a/test/ssr/static-text/_actual.html b/test/server-side-rendering/static-text/_actual.html similarity index 100% rename from test/ssr/static-text/_actual.html rename to test/server-side-rendering/static-text/_actual.html diff --git a/test/ssr/static-text/_expected.html b/test/server-side-rendering/static-text/_expected.html similarity index 100% rename from test/ssr/static-text/_expected.html rename to test/server-side-rendering/static-text/_expected.html diff --git a/test/ssr/static-text/main.html b/test/server-side-rendering/static-text/main.html similarity index 100% rename from test/ssr/static-text/main.html rename to test/server-side-rendering/static-text/main.html diff --git a/test/test.js b/test/test.js index 0eff94bd02..16f5b6e089 100644 --- a/test/test.js +++ b/test/test.js @@ -222,7 +222,7 @@ describe( 'svelte', () => { describe( 'generate', () => { function loadConfig ( dir ) { try { - return require( `./compiler/${dir}/_config.js` ).default; + return require( `./generator/${dir}/_config.js` ).default; } catch ( err ) { if ( err.code === 'E_NOT_FOUND' ) { return {}; @@ -232,7 +232,7 @@ describe( 'svelte', () => { } } - fs.readdirSync( 'test/compiler' ).forEach( dir => { + fs.readdirSync( 'test/generator' ).forEach( dir => { if ( dir[0] === '.' ) return; const config = loadConfig( dir ); @@ -243,7 +243,7 @@ describe( 'svelte', () => { showCompiledCode = config.show; try { - const source = fs.readFileSync( `test/compiler/${dir}/main.html`, 'utf-8' ); + const source = fs.readFileSync( `test/generator/${dir}/main.html`, 'utf-8' ); compiled = svelte.compile( source ); } catch ( err ) { if ( config.compileError ) { @@ -266,12 +266,12 @@ describe( 'svelte', () => { throw err; } - cache[ path.resolve( `test/compiler/${dir}/main.html` ) ] = code; + cache[ path.resolve( `test/generator/${dir}/main.html` ) ] = code; let SvelteComponent; try { - SvelteComponent = require( `./compiler/${dir}/main.html` ).default; + SvelteComponent = require( `./generator/${dir}/main.html` ).default; } catch ( err ) { if ( !config.show ) console.log( addLineNumbers( code ) ); // eslint-disable-line no-console throw err; @@ -511,20 +511,20 @@ describe( 'svelte', () => { require( '../ssr/register' ); }); - fs.readdirSync( 'test/ssr' ).forEach( dir => { + fs.readdirSync( 'test/server-side-rendering' ).forEach( dir => { if ( dir[0] === '.' ) return; - const solo = exists( `test/ssr/${dir}/solo` ); + const solo = exists( `test/server-side-rendering/${dir}/solo` ); ( solo ? it.only : it )( dir, () => { - const component = require( `./ssr/${dir}/main.html` ); + const component = require( `./server-side-rendering/${dir}/main.html` ); - const expected = fs.readFileSync( `test/ssr/${dir}/_expected.html`, 'utf-8' ); + const expected = fs.readFileSync( `test/server-side-rendering/${dir}/_expected.html`, 'utf-8' ); - const data = tryToLoadJson( `test/ssr/${dir}/data.json` ); + const data = tryToLoadJson( `test/server-side-rendering/${dir}/data.json` ); const actual = component.render( data ); - fs.writeFileSync( `test/ssr/${dir}/_actual.html`, actual ); + fs.writeFileSync( `test/server-side-rendering/${dir}/_actual.html`, actual ); assert.htmlEqual( actual, expected ); });