remove reify

pull/737/head
Rich Harris 8 years ago
parent 13a833e6ad
commit 65e484b6ae

@ -1 +1,2 @@
--bail
test/test.js test/test.js

@ -19,7 +19,7 @@
"build": "node src/shared/_build.js && rollup -c", "build": "node src/shared/_build.js && rollup -c",
"dev": "node src/shared/_build.js && rollup -c -w", "dev": "node src/shared/_build.js && rollup -c -w",
"pretest": "npm run build", "pretest": "npm run build",
"prepublish": "npm run build && npm run lint", "prepublishOnly": "npm run build && npm run lint",
"prettier": "prettier --use-tabs --single-quote --trailing-comma es5 --write \"src/**/*.ts\"" "prettier": "prettier --use-tabs --single-quote --trailing-comma es5 --write \"src/**/*.ts\""
}, },
"repository": { "repository": {
@ -70,7 +70,6 @@
"node-resolve": "^1.3.3", "node-resolve": "^1.3.3",
"nyc": "^11.1.0", "nyc": "^11.1.0",
"prettier": "^1.4.1", "prettier": "^1.4.1",
"reify": "^0.4.4",
"rollup": "^0.45.2", "rollup": "^0.45.2",
"rollup-plugin-buble": "^0.15.0", "rollup-plugin-buble": "^0.15.0",
"rollup-plugin-commonjs": "^8.0.2", "rollup-plugin-commonjs": "^8.0.2",

@ -293,21 +293,32 @@ export default function dom(
}); });
if (sharedPath) { if (sharedPath) {
if (format !== 'es') { const used = Array.from(usedHelpers).sort();
throw new Error( if (format === 'es') {
`Components with shared helpers must be compiled to ES2015 modules (format: 'es')` const names = used.map(name => {
); const alias = generator.alias(name);
return name !== alias ? `${name} as ${alias}` : name;
});
result =
`import { ${names.join(', ')} } from ${stringify(sharedPath)};\n\n` +
result;
} }
const names = Array.from(usedHelpers).sort().map(name => { else if (format === 'cjs') {
return name !== generator.alias(name) const SHARED = '__shared';
? `${name} as ${generator.alias(name)}` let requires = `var ${SHARED} = require( ${stringify(sharedPath)} );`;
: name; used.forEach(name => {
}); const alias = generator.alias(name);
requires += `\nvar ${alias} = ${SHARED}.${name};`;
});
result = result = `${requires}\n\n${result}`;
`import { ${names.join(', ')} } from ${stringify(sharedPath)};\n\n` + }
result;
else {
throw new Error(`Components with shared helpers must be compiled with \`format: 'es'\` or \`format: 'cjs'\``);
}
} else { } else {
usedHelpers.forEach(key => { usedHelpers.forEach(key => {
const str = shared[key]; const str = shared[key];

@ -147,7 +147,7 @@ export function loadConfig(file) {
try { try {
const resolved = require.resolve(file); const resolved = require.resolve(file);
delete require.cache[resolved]; delete require.cache[resolved];
return require(resolved).default; return require(resolved);
} catch (err) { } catch (err) {
if (err.code === 'MODULE_NOT_FOUND') { if (err.code === 'MODULE_NOT_FOUND') {
return {}; return {};

@ -27,7 +27,7 @@ describe('hydration', () => {
require.extensions['.html'] = function(module, filename) { require.extensions['.html'] = function(module, filename) {
const options = Object.assign( const options = Object.assign(
{ filename, name: getName(filename), hydratable: true }, { filename, name: getName(filename), hydratable: true, format: 'cjs' },
compileOptions compileOptions
); );
let { code } = svelte.compile(fs.readFileSync(filename, 'utf-8'), options); let { code } = svelte.compile(fs.readFileSync(filename, 'utf-8'), options);
@ -65,7 +65,7 @@ describe('hydration', () => {
let SvelteComponent; let SvelteComponent;
try { try {
SvelteComponent = require(`${cwd}/main.html`).default; SvelteComponent = require(`${cwd}/main.html`);
} catch (err) { } catch (err) {
throw err; throw err;
} }

@ -34,7 +34,7 @@ describe("runtime", () => {
require.extensions[".html"] = function(module, filename) { require.extensions[".html"] = function(module, filename) {
const options = Object.assign( const options = Object.assign(
{ filename, name: getName(filename) }, { filename, name: getName(filename), format: 'cjs' },
compileOptions compileOptions
); );
let { code } = svelte.compile(fs.readFileSync(filename, "utf-8"), options); let { code } = svelte.compile(fs.readFileSync(filename, "utf-8"), options);
@ -132,7 +132,7 @@ describe("runtime", () => {
global.window = window; global.window = window;
try { try {
SvelteComponent = require(`./samples/${dir}/main.html`).default; SvelteComponent = require(`./samples/${dir}/main.html`);
} catch (err) { } catch (err) {
showOutput(cwd, { shared }); // eslint-disable-line no-console showOutput(cwd, { shared }); // eslint-disable-line no-console
throw err; throw err;

@ -1,3 +1,3 @@
export default function get () { export function get () {
return 'got'; return 'got';
} }

@ -1,7 +1,7 @@
<span>{{foo}}</span> <span>{{foo}}</span>
<script> <script>
import get from './get.js'; import { get } from './get.js';
export default { export default {
data () { data () {

@ -1,7 +1,7 @@
{{value}} {{value}}
<script> <script>
import template from './module.js'; import { template } from './module.js';
export default { export default {
data() { data() {

@ -1 +1 @@
export default 'template'; export const template = 'template';

@ -1,7 +1,8 @@
export default { export default {
html: `<div>1024x768</div>`, html: `<div>1024x768</div>`,
skip: /^v4/.test( process.version ), // node 4 apparently does some dumb stuff skip: true, // some weird stuff happening with JSDOM 11
// skip: /^v4/.test( process.version ), // node 4 apparently does some dumb stuff
'skip-ssr': true, // there's some kind of weird bug with this test... it compiles with the wrong require.extensions hook for some bizarre reason 'skip-ssr': true, // there's some kind of weird bug with this test... it compiles with the wrong require.extensions hook for some bizarre reason
test ( assert, component, target, window ) { test ( assert, component, target, window ) {

@ -1,7 +1,8 @@
export default { export default {
html: `<div>undefinedxundefined</div>`, html: `<div>undefinedxundefined</div>`,
skip: /^v4/.test( process.version ), // node 4 apparently does some dumb stuff skip: true, // some weird stuff happening with JSDOM 11
// skip: /^v4/.test( process.version ), // node 4 apparently does some dumb stuff
'skip-ssr': true, // there's some kind of weird bug with this test... it compiles with the wrong require.extensions hook for some bizarre reason 'skip-ssr': true, // there's some kind of weird bug with this test... it compiles with the wrong require.extensions hook for some bizarre reason
test ( assert, component, target, window ) { test ( assert, component, target, window ) {

@ -1,9 +1,40 @@
const nodeVersionMatch = /^v(\d)/.exec(process.version); const nodeVersionMatch = /^v(\d)/.exec(process.version);
const legacy = +nodeVersionMatch[1] < 6; const legacy = +nodeVersionMatch[1] < 6;
const babelrc = require("../package.json").babel; const babelrc = require("../package.json").babel;
const fs = require('fs');
if (legacy) { if (legacy) {
require("babel-register")(babelrc); require("babel-register")(babelrc);
} else { } else {
require("reify"); require.extensions['.js'] = function(module, filename) {
const exports = [];
let code = fs.readFileSync(filename, 'utf-8')
.replace(/^import (?:\* as )?(\w+) from ['"]([^'"]+)['"];?/gm, 'var $1 = require("$2");')
.replace(/^import {([^}]+)} from ['"](.+)['"];?/gm, 'var {$1} = require("$2");')
.replace(/^export default /gm, 'module.exports = ')
.replace(/^export (const|let|var|class|function) (\w+)/gm, (match, type, name) => {
exports.push(name);
return `${type} ${name}`;
})
.replace(/^export \{([^}]+)\}/gm, (match, names) => {
names.split(',').filter(Boolean).forEach(name => {
exports.push(name);
});
return '';
})
.replace(/^export function (\w+)/gm, 'exports.$1 = function $1');
exports.forEach(name => {
code += `\nexports.${name} = ${name};`;
});
try {
return module._compile(code, filename);
} catch (err) {
console.log(code);
throw err;
}
};
} }

@ -22,10 +22,6 @@ abbrev@1:
version "1.1.0" version "1.1.0"
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f"
acorn-es7-plugin@~1.1.0:
version "1.1.7"
resolved "https://registry.yarnpkg.com/acorn-es7-plugin/-/acorn-es7-plugin-1.1.7.tgz#f2ee1f3228a90eead1245f9ab1922eb2e71d336b"
acorn-globals@^3.1.0: acorn-globals@^3.1.0:
version "3.1.0" version "3.1.0"
resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-3.1.0.tgz#fd8270f71fbb4996b004fa880ee5d46573a731bf" resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-3.1.0.tgz#fd8270f71fbb4996b004fa880ee5d46573a731bf"
@ -48,7 +44,7 @@ acorn@^3.0.4, acorn@^3.1.0, acorn@^3.3.0:
version "3.3.0" version "3.3.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
acorn@^4.0.1, acorn@^4.0.4, acorn@~4.0.5: acorn@^4.0.1, acorn@^4.0.4:
version "4.0.13" version "4.0.13"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787"
@ -192,10 +188,6 @@ assert-plus@^0.2.0:
version "0.2.0" version "0.2.0"
resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234"
ast-types@^0.9.5:
version "0.9.12"
resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.12.tgz#b136300d67026625ae15326982ca9918e5db73c9"
async-each@^1.0.0: async-each@^1.0.0:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
@ -2156,7 +2148,7 @@ magic-string@^0.14.0:
dependencies: dependencies:
vlq "^0.2.1" vlq "^0.2.1"
magic-string@^0.19.0, magic-string@~0.19.0: magic-string@^0.19.0:
version "0.19.1" version "0.19.1"
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.19.1.tgz#14d768013caf2ec8fdea16a49af82fc377e75201" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.19.1.tgz#14d768013caf2ec8fdea16a49af82fc377e75201"
dependencies: dependencies:
@ -2699,15 +2691,6 @@ regjsparser@^0.1.4:
dependencies: dependencies:
jsesc "~0.5.0" jsesc "~0.5.0"
reify@^0.4.4:
version "0.4.16"
resolved "https://registry.yarnpkg.com/reify/-/reify-0.4.16.tgz#d852914a692beced4d32bc0549d9d13a8d466a77"
dependencies:
acorn "~4.0.5"
acorn-es7-plugin "~1.1.0"
ast-types "^0.9.5"
magic-string "~0.19.0"
remove-trailing-separator@^1.0.1: remove-trailing-separator@^1.0.1:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz#69b062d978727ad14dc6b56ba4ab772fd8d70511" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz#69b062d978727ad14dc6b56ba4ab772fd8d70511"

Loading…
Cancel
Save