From 71da4b664d6267497069a51dc88462990a194582 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Sat, 30 Jan 2021 10:56:39 -0500 Subject: [PATCH 1/8] start converting everything to ESM --- package.json | 4 +- packages/app-utils/package.json | 12 +- packages/app-utils/rimraf.js | 2 +- packages/app-utils/rollup.config.js | 23 +-- .../files/{index.spec.js => index.spec.mjs} | 2 +- packages/create-svelte/cli/index.js | 2 +- .../create-svelte/scripts/update-versions.js | 2 +- packages/kit/package.json | 11 +- packages/kit/rollup.config.js | 2 +- packages/kit/src/api/adapt/Builder.js | 2 +- packages/kit/src/api/adapt/index.js | 5 +- packages/kit/src/api/adapt/prerender.js | 4 +- .../api/adapt/test/{index.js => index.mjs} | 8 +- packages/kit/src/api/build/index.js | 1 - packages/kit/src/api/dev/transform.js | 14 +- .../{transform.spec.js => transform.spec.mjs} | 2 +- packages/kit/src/api/load_config/index.js | 8 +- .../{index.spec.js => index.spec.mjs} | 2 +- packages/kit/src/api/start/index.js | 27 +-- packages/kit/src/cli.js | 6 +- packages/kit/src/core/create_manifest_data.js | 4 +- ....spec.js => create_manifest_data.spec.mjs} | 6 +- packages/kit/svelte-kit | 4 +- pnpm-lock.yaml | 190 +++++++++--------- test/apps/amp/package.json | 5 +- test/apps/amp/test/index.js | 25 ++- test/apps/basics/package.json | 2 +- test/apps/basics/test/index.js | 2 +- test/apps/options/package.json | 2 +- test/apps/options/test/index.js | 11 +- test/package.json | 3 +- test/runner.js | 2 +- 32 files changed, 206 insertions(+), 189 deletions(-) rename packages/app-utils/src/files/{index.spec.js => index.spec.mjs} (98%) rename packages/kit/src/api/adapt/test/{index.js => index.mjs} (87%) rename packages/kit/src/api/dev/{transform.spec.js => transform.spec.mjs} (98%) rename packages/kit/src/api/load_config/{index.spec.js => index.spec.mjs} (98%) rename packages/kit/src/core/test/{create_manifest_data.spec.js => create_manifest_data.spec.mjs} (97%) diff --git a/package.json b/package.json index 81350cba5815..01ad905c9258 100644 --- a/package.json +++ b/package.json @@ -32,10 +32,10 @@ "eslint": "^7.11.0", "eslint-plugin-import": "^2.22.1", "eslint-plugin-svelte3": "^2.7.3", - "esm": "^3.2.25", "playwright": "^1.6.2", "prettier": "2.1.2", "rollup": "^2.32.0", "typescript": "^4.1.2" - } + }, + "type": "module" } diff --git a/packages/app-utils/package.json b/packages/app-utils/package.json index a592882af918..ed3b46cc0863 100644 --- a/packages/app-utils/package.json +++ b/packages/app-utils/package.json @@ -9,7 +9,7 @@ "format": "prettier --write . --config ../../.prettierrc --ignore-path .gitignore", "check-format": "prettier --check . --config ../../.prettierrc --ignore-path .gitignore", "prepublishOnly": "npm run build", - "test": "uvu -r esm" + "test": "uvu" }, "dependencies": { "mime": "^2.4.6" @@ -19,20 +19,18 @@ "@types/node": "^14.14.0", "@types/node-fetch": "^2.5.7", "devalue": "^2.0.1", - "esm": "^3.2.25", "node-fetch": "^2.6.1", "rollup": "^2.32.0", "svelte": "^3.29.0", - "uvu": "^0.3.4" + "uvu": "^0.5.1" }, + "type": "module", "exports": { "./files": { - "require": "./files/index.js", - "import": "./files/index.mjs" + "import": "./files/index.js" }, "./http": { - "require": "./http/index.js", - "import": "./http/index.mjs" + "import": "./http/index.js" } }, "files": [ diff --git a/packages/app-utils/rimraf.js b/packages/app-utils/rimraf.js index adf63f1d0bf6..8b222ad15a99 100644 --- a/packages/app-utils/rimraf.js +++ b/packages/app-utils/rimraf.js @@ -1,4 +1,4 @@ -const fs = require('fs'); +import fs from 'fs'; const rm = fs.rm || fs.rmdir; const [, , ...filenames] = process.argv; diff --git a/packages/app-utils/rollup.config.js b/packages/app-utils/rollup.config.js index fc6c1be44b50..b33c73dbbce7 100644 --- a/packages/app-utils/rollup.config.js +++ b/packages/app-utils/rollup.config.js @@ -8,22 +8,13 @@ Object.keys(pkg.exports).forEach((key) => { export default { input, - output: [ - { - dir: '.', - entryFileNames: '[name]/index.js', - chunkFileNames: 'common/[name].js', - format: 'cjs', - sourcemap: true - }, - { - dir: '.', - entryFileNames: '[name]/index.mjs', - chunkFileNames: 'common/[name].js', - format: 'esm', - sourcemap: true - } - ], + output: { + dir: '.', + entryFileNames: '[name]/index.js', + chunkFileNames: 'common/[name].js', + format: 'esm', + sourcemap: true + }, plugins: [nodeResolve()], external: [...require('module').builtinModules, ...Object.keys(pkg.dependencies)] }; diff --git a/packages/app-utils/src/files/index.spec.js b/packages/app-utils/src/files/index.spec.mjs similarity index 98% rename from packages/app-utils/src/files/index.spec.js rename to packages/app-utils/src/files/index.spec.mjs index e0e0d8f4a225..ad08a325ebd9 100644 --- a/packages/app-utils/src/files/index.spec.js +++ b/packages/app-utils/src/files/index.spec.mjs @@ -3,7 +3,7 @@ import { tmpdir } from 'os'; import { join } from 'path'; import { suite } from 'uvu'; import * as assert from 'uvu/assert'; -import { copy } from '.'; +import { copy } from './index.js'; const suite_copy = suite('#copy()'); diff --git a/packages/create-svelte/cli/index.js b/packages/create-svelte/cli/index.js index 2cfe2ab90687..76e66f13d2ca 100644 --- a/packages/create-svelte/cli/index.js +++ b/packages/create-svelte/cli/index.js @@ -4,7 +4,7 @@ import parser from 'gitignore-parser'; import { bold, cyan, gray, green, red } from 'kleur/colors'; import path from 'path'; import prompts from 'prompts/lib/index'; -import glob from 'tiny-glob/sync'; +import glob from 'tiny-glob/sync.js'; import gitignore_contents from '../template/.gitignore'; import add_css from './modifications/add_css'; import add_typescript from './modifications/add_typescript'; diff --git a/packages/create-svelte/scripts/update-versions.js b/packages/create-svelte/scripts/update-versions.js index 73829f1c59b5..af3c40a6fff3 100644 --- a/packages/create-svelte/scripts/update-versions.js +++ b/packages/create-svelte/scripts/update-versions.js @@ -1,6 +1,6 @@ const { writeFileSync } = require('fs'); const { join } = require('path'); -const glob = require('tiny-glob/sync'); +const glob = require('tiny-glob/sync.js'); const template_pkg = require('../template/package.json'); const cwd = join(__dirname, '../../'); diff --git a/packages/kit/package.json b/packages/kit/package.json index 6ac6fad6ced8..5cb36783302f 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -1,6 +1,7 @@ { "name": "@sveltejs/kit", "version": "1.0.0-next.29", + "type": "module", "dependencies": { "cheap-watch": "^1.0.2", "http-proxy": "^1.18.1", @@ -19,21 +20,21 @@ "@types/sade": "^1.7.2", "amphtml-validator": "^1.0.34", "eslint": "^7.14.0", - "esm": "^3.2.25", - "estree-walker": "^2.0.1", + "estree-walker": "^3.0.0", "is-reference": "^1.2.1", "kleur": "^4.1.3", "magic-string": "^0.25.7", "meriyah": "^3.0.3", "node-fetch": "^2.6.1", - "periscopic": "^2.0.2", + "periscopic": "^3.0.0", "port-authority": "^1.1.1", "require-relative": "^0.8.7", "rimraf": "^3.0.2", "sirv": "^1.0.7", "source-map-support": "^0.5.19", "svelte": "^3.29.0", - "tiny-glob": "^0.2.8" + "tiny-glob": "^0.2.8", + "uvu": "^0.5.1" }, "bin": { "svelte-kit": "svelte-kit" @@ -50,6 +51,6 @@ "format": "prettier --write . --config ../../.prettierrc --ignore-path .gitignore", "check-format": "prettier --check . --config ../../.prettierrc --ignore-path .gitignore", "prepublishOnly": "npm run build", - "test": "uvu src \"(spec.js|test/index.js)\" -r esm" + "test": "uvu src \"(spec.mjs|test/index.mjs)\"" } } diff --git a/packages/kit/rollup.config.js b/packages/kit/rollup.config.js index 17334deec4fb..54a20e202f92 100644 --- a/packages/kit/rollup.config.js +++ b/packages/kit/rollup.config.js @@ -45,7 +45,7 @@ export default [ }, output: { dir: 'dist', - format: 'cjs', + format: 'esm', sourcemap: true, chunkFileNames: '[name].js' }, diff --git a/packages/kit/src/api/adapt/Builder.js b/packages/kit/src/api/adapt/Builder.js index 4640ec23d96f..3369995254a9 100644 --- a/packages/kit/src/api/adapt/Builder.js +++ b/packages/kit/src/api/adapt/Builder.js @@ -1,5 +1,5 @@ import { copy } from '@sveltejs/app-utils/files'; -import { prerender } from './prerender'; +import { prerender } from './prerender.js'; export default class Builder { #generated_files; diff --git a/packages/kit/src/api/adapt/index.js b/packages/kit/src/api/adapt/index.js index 201f0f219fc7..2fc4d88f5eab 100644 --- a/packages/kit/src/api/adapt/index.js +++ b/packages/kit/src/api/adapt/index.js @@ -1,5 +1,5 @@ import colors from 'kleur'; -import relative from 'require-relative'; +import { pathToFileURL } from 'url'; import { logger } from '../utils'; import Builder from './Builder'; @@ -20,7 +20,8 @@ export async function adapt(config, { verbose }) { log }); - const fn = relative(adapter); + const resolved = await import.meta.resolve(adapter, pathToFileURL(process.cwd())); + const fn = await import(resolved); await fn(builder, options); log.success('done'); diff --git a/packages/kit/src/api/adapt/prerender.js b/packages/kit/src/api/adapt/prerender.js index ac2f0be76157..53747b2efcc7 100644 --- a/packages/kit/src/api/adapt/prerender.js +++ b/packages/kit/src/api/adapt/prerender.js @@ -1,7 +1,7 @@ import fs, { readFileSync } from 'fs'; import { dirname, join, resolve as resolve_path } from 'path'; import { parse, resolve, URLSearchParams } from 'url'; -import glob from 'tiny-glob/sync'; +import glob from 'tiny-glob/sync.js'; import { mkdirp } from '@sveltejs/app-utils/files'; function clean_html(html) { @@ -47,7 +47,7 @@ export async function prerender({ dir, out, log, config, force }) { const seen = new Set(); const server_root = resolve_path(dir); - const app = require(`${server_root}/server/app.js`); + const app = await import(`${server_root}/server/app.js`); app.init({ paths: config.paths diff --git a/packages/kit/src/api/adapt/test/index.js b/packages/kit/src/api/adapt/test/index.mjs similarity index 87% rename from packages/kit/src/api/adapt/test/index.js rename to packages/kit/src/api/adapt/test/index.mjs index 32db34cf64eb..e1ecbc6fd68e 100644 --- a/packages/kit/src/api/adapt/test/index.js +++ b/packages/kit/src/api/adapt/test/index.mjs @@ -4,8 +4,12 @@ import { join } from 'path'; import * as uvu from 'uvu'; import * as assert from 'uvu/assert'; import rimraf from 'rimraf'; -import glob from 'tiny-glob/sync'; -import Builder from '../Builder'; +import glob from 'tiny-glob/sync.js'; +import Builder from '../Builder.js'; +import { fileURLToPath } from 'url'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = join(__filename, '..'); const suite = uvu.suite('Builder'); diff --git a/packages/kit/src/api/build/index.js b/packages/kit/src/api/build/index.js index 08334c8aab82..cc5c60283c77 100644 --- a/packages/kit/src/api/build/index.js +++ b/packages/kit/src/api/build/index.js @@ -18,7 +18,6 @@ const snowpack_main = require.resolve('snowpack'); const snowpack_pkg_file = path.join(snowpack_main, '../../package.json'); const snowpack_pkg = require(snowpack_pkg_file); // eslint-disable-line const snowpack_bin = path.resolve(path.dirname(snowpack_pkg_file), snowpack_pkg.bin.snowpack); - const ignorable_warnings = new Set(['EMPTY_BUNDLE', 'MISSING_EXPORT']); const onwarn = (warning, handler) => { // TODO would be nice to just eliminate the circular dependencies instead of diff --git a/packages/kit/src/api/dev/transform.js b/packages/kit/src/api/dev/transform.js index e3b3b0e68fca..359b779ff74e 100644 --- a/packages/kit/src/api/dev/transform.js +++ b/packages/kit/src/api/dev/transform.js @@ -1,7 +1,7 @@ import * as meriyah from 'meriyah'; import MagicString from 'magic-string'; -import { analyze, extract_names } from 'periscopic'; -import { walk } from 'estree-walker'; +import * as periscopic from 'periscopic'; +import * as walker from 'estree-walker'; import is_reference from 'is-reference'; export function transform(data) { @@ -11,11 +11,11 @@ export function transform(data) { next: true }); - const { map, scope } = analyze(ast); + const { map, scope } = periscopic.analyze(ast); const all_identifiers = new Set(); // first, get a list of all the identifiers used in the module... - walk(ast, { + walker.walk(ast, { enter(node, parent) { if (is_reference(node, parent)) { all_identifiers.add(node.name); @@ -109,7 +109,7 @@ export function transform(data) { if (node.declaration.type === 'VariableDeclaration') { const names = []; node.declaration.declarations.forEach((declarator) => { - names.push(...extract_names(declarator.id)); + names.push(...periscopic.extract_names(declarator.id)); }); suffix = names.map((name) => ` ${__export}('${name}', () => ${name});`).join(''); @@ -144,7 +144,7 @@ export function transform(data) { if (replacements.size) { let current_scope = scope; - walk(ast, { + walker.walk(ast, { enter(node, parent) { if (map.has(node)) { current_scope = map.get(node) || current_scope; @@ -176,7 +176,7 @@ export function transform(data) { // replace import.meta and import(dynamic) if (/import\s*\.\s*meta/.test(data) || /import\s*\(/.test(data)) { - walk(ast.body, { + walker.walk(ast.body, { enter(node) { if (node.type === 'MetaProperty' && node.meta.name === 'import') { code.overwrite(node.start, node.end, __import_meta); diff --git a/packages/kit/src/api/dev/transform.spec.js b/packages/kit/src/api/dev/transform.spec.mjs similarity index 98% rename from packages/kit/src/api/dev/transform.spec.js rename to packages/kit/src/api/dev/transform.spec.mjs index 568faf6ee984..855e8dafcaa2 100644 --- a/packages/kit/src/api/dev/transform.spec.js +++ b/packages/kit/src/api/dev/transform.spec.mjs @@ -1,6 +1,6 @@ import { test } from 'uvu'; import * as assert from 'uvu/assert'; -import { transform } from './transform'; +import { transform } from './transform.js'; function compare(a, b) { assert.equal(a.replace(/^\t+/gm, '').trim(), b.replace(/^\t+/gm, '').trim()); diff --git a/packages/kit/src/api/load_config/index.js b/packages/kit/src/api/load_config/index.js index 38d63d625b26..35bbb05f08eb 100644 --- a/packages/kit/src/api/load_config/index.js +++ b/packages/kit/src/api/load_config/index.js @@ -1,6 +1,5 @@ -import relative from 'require-relative'; import { bold, yellow } from 'kleur/colors'; -import options from './options'; +import options from './options.js'; import * as url from 'url'; function warn(msg) { @@ -58,8 +57,9 @@ function remove_trailing_slash(str) { const expected = new Set(['compilerOptions', 'kit', 'preprocess']); -export function load_config({ cwd = process.cwd() } = {}) { - const config = relative('./svelte.config.js', cwd); +export async function load_config({ cwd = process.cwd() } = {}) { + const config_file = await import.meta.resolve('svelte.config.js', url.pathToFileURL(cwd)); + const config = await import(config_file); const validated = validate_config(config); // TODO check all the `files` exist when the config is loaded? diff --git a/packages/kit/src/api/load_config/index.spec.js b/packages/kit/src/api/load_config/index.spec.mjs similarity index 98% rename from packages/kit/src/api/load_config/index.spec.js rename to packages/kit/src/api/load_config/index.spec.mjs index 054664b5c40a..e96616b2be80 100644 --- a/packages/kit/src/api/load_config/index.spec.js +++ b/packages/kit/src/api/load_config/index.spec.mjs @@ -1,6 +1,6 @@ import { test } from 'uvu'; import * as assert from 'uvu/assert'; -import { validate_config } from './index'; +import { validate_config } from './index.js'; test('fills in defaults', () => { const validated = validate_config({}); diff --git a/packages/kit/src/api/start/index.js b/packages/kit/src/api/start/index.js index af35cdf17aa0..9ecc848d3556 100644 --- a/packages/kit/src/api/start/index.js +++ b/packages/kit/src/api/start/index.js @@ -1,7 +1,6 @@ import * as fs from 'fs'; import * as http from 'http'; -import relative from 'require-relative'; -import { parse, URLSearchParams } from 'url'; +import { parse, URLSearchParams, pathToFileURL } from 'url'; import sirv from 'sirv'; import { get_body } from '@sveltejs/app-utils/http'; import { join } from 'path'; @@ -12,19 +11,23 @@ const mutable = (dir) => maxAge: 0 }); -export function start({ port, config }) { - return new Promise((fulfil) => { - const app = relative('./.svelte/build/optimized/server/app.js'); +export async function start({ port, config }) { + const app_file = await import.meta.resolve( + '.svelte/build/optimized/server/app.js', + pathToFileURL(process.cwd()) + ); + const app = await import(app_file); - const static_handler = fs.existsSync(config.files.assets) - ? mutable(config.files.assets) - : (_req, _res, next) => next(); + const static_handler = fs.existsSync(config.files.assets) + ? mutable(config.files.assets) + : (_req, _res, next) => next(); - const assets_handler = sirv('.svelte/build/optimized/client', { - maxAge: 31536000, - immutable: true - }); + const assets_handler = sirv('.svelte/build/optimized/client', { + maxAge: 31536000, + immutable: true + }); + return new Promise((fulfil) => { const server = http.createServer((req, res) => { const parsed = parse(req.url || ''); diff --git a/packages/kit/src/cli.js b/packages/kit/src/cli.js index 584441014e91..4713c79a4e92 100644 --- a/packages/kit/src/cli.js +++ b/packages/kit/src/cli.js @@ -41,7 +41,7 @@ prog .option('-o, --open', 'Open a browser tab', false) .action(async ({ port, open }) => { process.env.NODE_ENV = 'development'; - const config = get_config(); + const config = await get_config(); const { dev } = await import('./api/dev'); @@ -68,7 +68,7 @@ prog .describe('Create a production build of your app') .action(async () => { process.env.NODE_ENV = 'production'; - const config = get_config(); + const config = await get_config(); const { build } = await import('./api/build'); @@ -86,7 +86,7 @@ prog .option('-o, --open', 'Open a browser tab', false) .action(async ({ port, open }) => { process.env.NODE_ENV = 'production'; - const config = get_config(); + const config = await get_config(); const { start } = await import('./api/start'); diff --git a/packages/kit/src/core/create_manifest_data.js b/packages/kit/src/core/create_manifest_data.js index 9d08529d7fbd..0eb07c881567 100644 --- a/packages/kit/src/core/create_manifest_data.js +++ b/packages/kit/src/core/create_manifest_data.js @@ -1,7 +1,7 @@ import * as fs from 'fs'; import * as path from 'path'; -import * as mime from 'mime'; -import { posixify, reserved_words } from '../utils'; +import mime from 'mime'; +import { posixify, reserved_words } from '../utils.js'; export default function create_manifest_data(config, extensions = '.svelte') { // TODO support .svelte.md etc? diff --git a/packages/kit/src/core/test/create_manifest_data.spec.js b/packages/kit/src/core/test/create_manifest_data.spec.mjs similarity index 97% rename from packages/kit/src/core/test/create_manifest_data.spec.js rename to packages/kit/src/core/test/create_manifest_data.spec.mjs index d00bd58ae3fe..ca5fe46faf81 100644 --- a/packages/kit/src/core/test/create_manifest_data.spec.js +++ b/packages/kit/src/core/test/create_manifest_data.spec.mjs @@ -1,7 +1,11 @@ import * as path from 'path'; +import { fileURLToPath } from 'url'; import { test } from 'uvu'; import * as assert from 'uvu/assert'; -import create_manifest_data from '../create_manifest_data'; +import create_manifest_data from '../create_manifest_data.js'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.join(__filename, '..'); const get_config = (dir) => ({ files: { diff --git a/packages/kit/svelte-kit b/packages/kit/svelte-kit index 12c60b18af94..23e3723861fa 100755 --- a/packages/kit/svelte-kit +++ b/packages/kit/svelte-kit @@ -1,3 +1,3 @@ #!/usr/bin/env node -require('source-map-support/register'); -require('./dist/cli.js'); \ No newline at end of file +import 'source-map-support/register'; +import './dist/cli.js'; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9d8bcc470695..81c7114521a0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,7 +11,6 @@ importers: eslint: 7.11.0 eslint-plugin-import: 2.22.1_eslint@7.11.0 eslint-plugin-svelte3: 2.7.3_eslint@7.11.0 - esm: 3.2.25 playwright: 1.6.2 prettier: 2.1.2 rollup: 2.32.0 @@ -21,75 +20,74 @@ importers: '@rollup/plugin-commonjs': ^15.1.0 '@rollup/plugin-json': ^4.1.0 '@rollup/plugin-node-resolve': ^9.0.0 - '@sveltejs/eslint-config': github:sveltejs/eslint-config#v5.6.0 + '@sveltejs/eslint-config': 'github:sveltejs/eslint-config#v5.6.0' '@typescript-eslint/eslint-plugin': ^4.8.2 '@typescript-eslint/parser': ^4.8.2 eslint: ^7.11.0 eslint-plugin-import: ^2.22.1 eslint-plugin-svelte3: ^2.7.3 - esm: ^3.2.25 playwright: ^1.6.2 prettier: 2.1.2 rollup: ^2.32.0 typescript: ^4.1.2 examples/hn.svelte.dev: devDependencies: - '@sveltejs/adapter-netlify': link:../../packages/adapter-netlify - '@sveltejs/kit': link:../../packages/kit - '@sveltejs/snowpack-config': link:../../packages/snowpack-config + '@sveltejs/adapter-netlify': 'link:../../packages/adapter-netlify' + '@sveltejs/kit': 'link:../../packages/kit' + '@sveltejs/snowpack-config': 'link:../../packages/snowpack-config' svelte: 3.29.0 specifiers: - '@sveltejs/adapter-netlify': workspace:* - '@sveltejs/kit': workspace:* - '@sveltejs/snowpack-config': workspace:* + '@sveltejs/adapter-netlify': 'workspace:*' + '@sveltejs/kit': 'workspace:*' + '@sveltejs/snowpack-config': 'workspace:*' svelte: ^3.29.0 examples/realworld.svelte.dev: dependencies: node-fetch: 2.6.1 devDependencies: - '@sveltejs/adapter-node': link:../../packages/adapter-node - '@sveltejs/kit': link:../../packages/kit - '@sveltejs/snowpack-config': link:../../packages/snowpack-config + '@sveltejs/adapter-node': 'link:../../packages/adapter-node' + '@sveltejs/kit': 'link:../../packages/kit' + '@sveltejs/snowpack-config': 'link:../../packages/snowpack-config' marked: 1.2.5 svelte: 3.29.0 specifiers: - '@sveltejs/adapter-node': workspace:* - '@sveltejs/kit': workspace:* - '@sveltejs/snowpack-config': workspace:* + '@sveltejs/adapter-node': 'workspace:*' + '@sveltejs/kit': 'workspace:*' + '@sveltejs/snowpack-config': 'workspace:*' marked: ^1.2.2 node-fetch: ^2.6.1 svelte: ^3.29.0 examples/sandbox: devDependencies: - '@sveltejs/adapter-node': link:../../packages/adapter-node - '@sveltejs/kit': link:../../packages/kit - '@sveltejs/snowpack-config': link:../../packages/snowpack-config + '@sveltejs/adapter-node': 'link:../../packages/adapter-node' + '@sveltejs/kit': 'link:../../packages/kit' + '@sveltejs/snowpack-config': 'link:../../packages/snowpack-config' svelte: 3.29.0 specifiers: - '@sveltejs/adapter-node': workspace:* - '@sveltejs/kit': workspace:* - '@sveltejs/snowpack-config': workspace:* + '@sveltejs/adapter-node': 'workspace:*' + '@sveltejs/kit': 'workspace:*' + '@sveltejs/snowpack-config': 'workspace:*' svelte: ^3.29.0 examples/svelte-kit-demo: devDependencies: - '@sveltejs/adapter-node': link:../../packages/adapter-node - '@sveltejs/adapter-static': link:../../packages/adapter-static - '@sveltejs/kit': link:../../packages/kit - '@sveltejs/snowpack-config': link:../../packages/snowpack-config + '@sveltejs/adapter-node': 'link:../../packages/adapter-node' + '@sveltejs/adapter-static': 'link:../../packages/adapter-static' + '@sveltejs/kit': 'link:../../packages/kit' + '@sveltejs/snowpack-config': 'link:../../packages/snowpack-config' svelte: 3.29.0 specifiers: - '@sveltejs/adapter-node': workspace:* - '@sveltejs/adapter-static': workspace:* - '@sveltejs/kit': workspace:* - '@sveltejs/snowpack-config': workspace:* + '@sveltejs/adapter-node': 'workspace:*' + '@sveltejs/adapter-static': 'workspace:*' + '@sveltejs/kit': 'workspace:*' + '@sveltejs/snowpack-config': 'workspace:*' svelte: ^3.29.0 packages/adapter-begin: dependencies: '@architect/parser': 2.3.0 - '@sveltejs/app-utils': link:../app-utils + '@sveltejs/app-utils': 'link:../app-utils' specifiers: '@architect/parser': ^2.3.0 - '@sveltejs/app-utils': workspace:* + '@sveltejs/app-utils': 'workspace:*' packages/adapter-netlify: dependencies: toml: 3.0.0 @@ -97,23 +95,23 @@ importers: toml: ^3.0.0 packages/adapter-node: devDependencies: - '@sveltejs/app-utils': link:../app-utils + '@sveltejs/app-utils': 'link:../app-utils' rollup: 2.32.0 sirv: 1.0.7 specifiers: - '@sveltejs/app-utils': workspace:* + '@sveltejs/app-utils': 'workspace:*' rollup: ^2.32.0 sirv: ^1.0.7 packages/adapter-static: specifiers: {} packages/adapter-vercel: dependencies: - '@sveltejs/app-utils': link:../app-utils + '@sveltejs/app-utils': 'link:../app-utils' devDependencies: rollup: 2.34.2 sirv: 1.0.7 specifiers: - '@sveltejs/app-utils': workspace:* + '@sveltejs/app-utils': 'workspace:*' rollup: ^2.32.0 sirv: ^1.0.7 packages/app-utils: @@ -124,29 +122,27 @@ importers: '@types/node': 14.14.0 '@types/node-fetch': 2.5.7 devalue: 2.0.1 - esm: 3.2.25 node-fetch: 2.6.1 rollup: 2.32.0 svelte: 3.29.0 - uvu: 0.3.4 + uvu: 0.5.1 specifiers: '@types/mime': ^2.0.3 '@types/node': ^14.14.0 '@types/node-fetch': ^2.5.7 devalue: ^2.0.1 - esm: ^3.2.25 mime: ^2.4.6 node-fetch: ^2.6.1 rollup: ^2.32.0 svelte: ^3.29.0 - uvu: ^0.3.4 + uvu: ^0.5.1 packages/create-svelte: devDependencies: '@rollup/plugin-json': 4.1.0_rollup@2.32.0 - '@sveltejs/adapter-node': link:../adapter-node - '@sveltejs/app-utils': link:../app-utils - '@sveltejs/kit': link:../kit - '@sveltejs/snowpack-config': link:../snowpack-config + '@sveltejs/adapter-node': 'link:../adapter-node' + '@sveltejs/app-utils': 'link:../app-utils' + '@sveltejs/kit': 'link:../kit' + '@sveltejs/snowpack-config': 'link:../snowpack-config' gitignore-parser: 0.0.2 kleur: 4.1.3 prompts: 2.3.2 @@ -154,10 +150,10 @@ importers: tiny-glob: 0.2.8 specifiers: '@rollup/plugin-json': ^4.1.0 - '@sveltejs/adapter-node': workspace:* - '@sveltejs/app-utils': workspace:* - '@sveltejs/kit': workspace:* - '@sveltejs/snowpack-config': workspace:* + '@sveltejs/adapter-node': 'workspace:*' + '@sveltejs/app-utils': 'workspace:*' + '@sveltejs/kit': 'workspace:*' + '@sveltejs/snowpack-config': 'workspace:*' gitignore-parser: ^0.0.2 kleur: ^4.1.3 prompts: ^2.3.2 @@ -175,20 +171,19 @@ importers: snowpack: 3.0.10 source-map: 0.7.3 devDependencies: - '@sveltejs/app-utils': link:../app-utils + '@sveltejs/app-utils': 'link:../app-utils' '@types/node': 14.11.10 '@types/rimraf': 3.0.0 '@types/sade': 1.7.2 amphtml-validator: 1.0.34 eslint: 7.14.0 - esm: 3.2.25 - estree-walker: 2.0.1 + estree-walker: 3.0.0 is-reference: 1.2.1 kleur: 4.1.3 magic-string: 0.25.7 - meriyah: 3.0.3 + meriyah: 3.1.6 node-fetch: 2.6.1 - periscopic: 2.0.2 + periscopic: 3.0.0 port-authority: 1.1.1 require-relative: 0.8.7 rimraf: 3.0.2 @@ -196,6 +191,7 @@ importers: source-map-support: 0.5.19 svelte: 3.29.0 tiny-glob: 0.2.8 + uvu: 0.5.1 specifiers: '@sveltejs/app-utils': '*' '@types/node': ^14.11.10 @@ -204,15 +200,14 @@ importers: amphtml-validator: ^1.0.34 cheap-watch: ^1.0.2 eslint: ^7.14.0 - esm: ^3.2.25 - estree-walker: ^2.0.1 + estree-walker: ^3.0.0 http-proxy: ^1.18.1 is-reference: ^1.2.1 kleur: ^4.1.3 magic-string: ^0.25.7 meriyah: ^3.0.3 node-fetch: ^2.6.1 - periscopic: ^2.0.2 + periscopic: ^3.0.0 port-authority: ^1.1.1 require-relative: ^0.8.7 rimraf: ^3.0.2 @@ -227,6 +222,7 @@ importers: source-map-support: ^0.5.19 svelte: ^3.29.0 tiny-glob: ^0.2.8 + uvu: ^0.5.1 packages/snowpack-config: dependencies: '@snowpack/plugin-svelte': 3.5.2 @@ -234,44 +230,44 @@ importers: '@snowpack/plugin-svelte': ^3.5.2 test: dependencies: - '@sveltejs/kit': link:../packages/kit + '@sveltejs/kit': 'link:../packages/kit' devDependencies: port-authority: 1.1.2 specifiers: - '@sveltejs/kit': workspace:* + '@sveltejs/kit': 'workspace:*' port-authority: ^1.1.2 test/apps/amp: devDependencies: - '@sveltejs/adapter-node': link:../../../packages/adapter-node - '@sveltejs/kit': link:../../../packages/kit - '@sveltejs/snowpack-config': link:../../../packages/snowpack-config + '@sveltejs/adapter-node': 'link:../../../packages/adapter-node' + '@sveltejs/kit': 'link:../../../packages/kit' + '@sveltejs/snowpack-config': 'link:../../../packages/snowpack-config' svelte: 3.29.0 specifiers: - '@sveltejs/adapter-node': workspace:* - '@sveltejs/kit': workspace:* - '@sveltejs/snowpack-config': workspace:* + '@sveltejs/adapter-node': 'workspace:*' + '@sveltejs/kit': 'workspace:*' + '@sveltejs/snowpack-config': 'workspace:*' svelte: ^3.29.0 test/apps/basics: devDependencies: - '@sveltejs/adapter-node': link:../../../packages/adapter-node - '@sveltejs/kit': link:../../../packages/kit - '@sveltejs/snowpack-config': link:../../../packages/snowpack-config + '@sveltejs/adapter-node': 'link:../../../packages/adapter-node' + '@sveltejs/kit': 'link:../../../packages/kit' + '@sveltejs/snowpack-config': 'link:../../../packages/snowpack-config' svelte: 3.29.0 specifiers: - '@sveltejs/adapter-node': workspace:* - '@sveltejs/kit': workspace:* - '@sveltejs/snowpack-config': workspace:* + '@sveltejs/adapter-node': 'workspace:*' + '@sveltejs/kit': 'workspace:*' + '@sveltejs/snowpack-config': 'workspace:*' svelte: ^3.29.0 test/apps/options: devDependencies: - '@sveltejs/adapter-node': link:../../../packages/adapter-node - '@sveltejs/kit': link:../../../packages/kit - '@sveltejs/snowpack-config': link:../../../packages/snowpack-config + '@sveltejs/adapter-node': 'link:../../../packages/adapter-node' + '@sveltejs/kit': 'link:../../../packages/kit' + '@sveltejs/snowpack-config': 'link:../../../packages/snowpack-config' svelte: 3.29.0 specifiers: - '@sveltejs/adapter-node': workspace:* - '@sveltejs/kit': workspace:* - '@sveltejs/snowpack-config': workspace:* + '@sveltejs/adapter-node': 'workspace:*' + '@sveltejs/kit': 'workspace:*' + '@sveltejs/snowpack-config': 'workspace:*' svelte: ^3.29.0 lockfileVersion: 5.2 packages: @@ -1311,12 +1307,12 @@ packages: dev: true resolution: integrity: sha512-I2TiqT5iWBEyB8GRfTDP0hiLZ0YeDJZ+upDxjBfOC2lebO5LezQMv7QvIUTzdb64jQyAKLf1AHADtGN+jw6v8Q== - /diff/4.0.2: + /diff/5.0.0: dev: true engines: node: '>=0.3.1' resolution: - integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== /dir-glob/3.0.1: dependencies: path-type: 4.0.0 @@ -1601,12 +1597,6 @@ packages: hasBin: true resolution: integrity: sha512-5YubdnPXrlrYAFCKybPuHIAH++PINe1pmKNc5wQRB9HSbqIK1ywAnntE3Wwua4giKu0bjligf1gLF6qxMGOYRA== - /esm/3.2.25: - dev: true - engines: - node: '>=6' - resolution: - integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== /espree/7.3.0: dependencies: acorn: 7.4.1 @@ -1664,6 +1654,14 @@ packages: dev: true resolution: integrity: sha512-tF0hv+Yi2Ot1cwj9eYHtxC0jB9bmjacjQs6ZBTj82H8JwUywFuc+7E83NWfNMwHXZc11mjfFcVXPe9gEP4B8dg== + /estree-walker/2.0.2: + dev: true + resolution: + integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + /estree-walker/3.0.0: + dev: true + resolution: + integrity: sha512-s6ceX0NFiU/vKPiKvFdR83U1Zffu7upwZsGwpoqfg5rbbq1l50WQ5hCeIvM6E6oD4shUHCYMsiFPns4Jk0YfMQ== /esutils/2.0.3: dev: true engines: @@ -2296,6 +2294,12 @@ packages: node: '>=6' resolution: integrity: sha512-H1tr8QP2PxFTNwAFM74Mui2b6ovcY9FoxJefgrwxY+OCJcq01k5nvhf4M/KnizzrJvLRap5STUy7dgDV35iUBw== + /kleur/4.1.4: + dev: true + engines: + node: '>=6' + resolution: + integrity: sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA== /levn/0.4.1: dependencies: prelude-ls: 1.2.1 @@ -2432,12 +2436,12 @@ packages: node: '>= 8' resolution: integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - /meriyah/3.0.3: + /meriyah/3.1.6: dev: true engines: node: '>=10.4.0' resolution: - integrity: sha512-f56aaXQq2y8Mn6+BlH4/IAXrgjxQHuLBngAHGDKqxAEaOWKm5u/+vaiA/byEi5tFPpBnDYOcLFGtHyzfa7I5wA== + integrity: sha512-JDOSi6DIItDc33U5N52UdV6P8v+gn+fqZKfbAfHzdWApRQyQWdcvxPvAr9t01bI2rBxGvSrKRQSCg3SkZC1qeg== /micromatch/4.0.2: dependencies: braces: 3.0.2 @@ -2773,13 +2777,13 @@ packages: dev: true resolution: integrity: sha1-elfrVQpng/kRUzH89GY9XI4AelA= - /periscopic/2.0.2: + /periscopic/3.0.0: dependencies: - estree-walker: 1.0.1 + estree-walker: 2.0.2 is-reference: 1.2.1 dev: true resolution: - integrity: sha512-Ngkg+fjibPB9V2ss67QY3EmNd+NBoXoxUkNEsDdvo4wk4yPW0LHyRh37/L61bkifUQsbtJxrbt8DE1oLjdV9Nw== + integrity: sha512-m/MBWIgwELB00OdTvM+Ei5saKHNKmyFWy0iW2MpbADmIdK/sL+kir3Yvb+Z2vzYeItZVtemA0bgAg5lZXoJmaA== /picomatch/2.2.2: dev: true engines: @@ -3672,11 +3676,11 @@ packages: dev: false resolution: integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA== - /uvu/0.3.4: + /uvu/0.5.1: dependencies: dequal: 2.0.2 - diff: 4.0.2 - kleur: 4.1.3 + diff: 5.0.0 + kleur: 4.1.4 sade: 1.7.4 totalist: 2.0.0 dev: true @@ -3684,7 +3688,7 @@ packages: node: '>=8' hasBin: true resolution: - integrity: sha512-UM8M8r+85jYdwn4XII8cjQTojRAkNIaB3kA6FRXX0dQTDAE2NfWs0hLcLJm9/XL1aIFwhSp05vDfDDBlpnZgcg== + integrity: sha512-JGxttnOGDFs77FaZ0yMUHIzczzQ5R1IlDeNW6Wymw6gAscwMdAffVOP6TlxLIfReZyK8tahoGwWZaTCJzNFDkg== /v8-compile-cache/2.1.1: dev: true resolution: @@ -3857,5 +3861,5 @@ packages: eslint-plugin-svelte3: '>= 2' typescript: '>= 3' resolution: - tarball: https://codeload.github.com/sveltejs/eslint-config/tar.gz/7224f2bba6ac40407c332b41fa2bede946f4868f + tarball: 'https://codeload.github.com/sveltejs/eslint-config/tar.gz/7224f2bba6ac40407c332b41fa2bede946f4868f' version: 5.6.0 diff --git a/test/apps/amp/package.json b/test/apps/amp/package.json index 7d79f074d78e..b552b1ed18f7 100644 --- a/test/apps/amp/package.json +++ b/test/apps/amp/package.json @@ -6,12 +6,13 @@ "dev": "svelte-kit dev", "build": "svelte-kit build", "start": "svelte-kit start", - "test": "uvu test -r esm" + "test": "uvu test" }, "devDependencies": { "@sveltejs/adapter-node": "workspace:*", "@sveltejs/kit": "workspace:*", "@sveltejs/snowpack-config": "workspace:*", "svelte": "^3.29.0" - } + }, + "type": "module" } diff --git a/test/apps/amp/test/index.js b/test/apps/amp/test/index.js index 13f85784db93..8608cadd14d9 100644 --- a/test/apps/amp/test/index.js +++ b/test/apps/amp/test/index.js @@ -1,13 +1,18 @@ import path from 'path'; -import glob from 'tiny-glob/sync'; -import { runner } from '../../../runner'; // TODO make this a package? +import glob from 'tiny-glob/sync.js'; +import { fileURLToPath } from 'url'; +import { runner } from '../../../runner.js'; // TODO make this a package? -runner((test, is_dev) => { - const cwd = path.join(__dirname, '../src/routes'); - const modules = glob('**/__tests__.js', { cwd }); - for (const module of modules) { - require(`../src/routes/${module}`).default(test, is_dev); +runner( + (test, is_dev) => { + const __filename = fileURLToPath(import.meta.url); + const cwd = path.join(__filename, '../../src/routes'); + const modules = glob('**/__tests__.js', { cwd }); + for (const module of modules) { + require(`../src/routes/${module}`).default(test, is_dev); + } + }, + { + amp: true } -}, { - amp: true -}); +); diff --git a/test/apps/basics/package.json b/test/apps/basics/package.json index 7d79f074d78e..662638310b3f 100644 --- a/test/apps/basics/package.json +++ b/test/apps/basics/package.json @@ -6,7 +6,7 @@ "dev": "svelte-kit dev", "build": "svelte-kit build", "start": "svelte-kit start", - "test": "uvu test -r esm" + "test": "uvu test" }, "devDependencies": { "@sveltejs/adapter-node": "workspace:*", diff --git a/test/apps/basics/test/index.js b/test/apps/basics/test/index.js index 7219cf7f907c..5ada19d992be 100644 --- a/test/apps/basics/test/index.js +++ b/test/apps/basics/test/index.js @@ -1,5 +1,5 @@ import path from 'path'; -import glob from 'tiny-glob/sync'; +import glob from 'tiny-glob/sync.js'; import * as assert from 'uvu/assert'; import { runner } from '../../../runner'; // TODO make this a package? diff --git a/test/apps/options/package.json b/test/apps/options/package.json index f2e719aa645e..53f1bb9152c3 100644 --- a/test/apps/options/package.json +++ b/test/apps/options/package.json @@ -6,7 +6,7 @@ "dev": "svelte-kit dev", "build": "svelte-kit build", "start": "svelte-kit start", - "test": "uvu -r esm" + "test": "uvu" }, "devDependencies": { "@sveltejs/adapter-node": "workspace:*", diff --git a/test/apps/options/test/index.js b/test/apps/options/test/index.js index 4c0609f92c77..0a2bbd0b7880 100644 --- a/test/apps/options/test/index.js +++ b/test/apps/options/test/index.js @@ -1,5 +1,5 @@ import path from 'path'; -import glob from 'tiny-glob/sync'; +import glob from 'tiny-glob/sync.js'; import * as assert from 'uvu/assert'; import { runner } from '../../../runner'; // TODO make this a package? @@ -13,7 +13,12 @@ runner((test, is_dev) => { test('serves /', async ({ visit, contains, js }) => { await visit('/'); assert.ok(await contains('I am in the template'), 'Should show custom template contents'); - assert.ok(await contains('We\'re on index.svelte'), 'Should show page contents'); - assert.ok(await contains(`Hello from the ${js ? 'client' : 'server'} in ${is_dev ? 'dev' : 'prod'} mode!`), 'Should run JavaScript'); + assert.ok(await contains("We're on index.svelte"), 'Should show page contents'); + assert.ok( + await contains( + `Hello from the ${js ? 'client' : 'server'} in ${is_dev ? 'dev' : 'prod'} mode!` + ), + 'Should run JavaScript' + ); }); }); diff --git a/test/package.json b/test/package.json index deee74c1f8d9..a2374d06c317 100644 --- a/test/package.json +++ b/test/package.json @@ -7,5 +7,6 @@ }, "devDependencies": { "port-authority": "^1.1.2" - } + }, + "type": "module" } diff --git a/test/runner.js b/test/runner.js index da3e4fca0cfe..55047fb183e4 100644 --- a/test/runner.js +++ b/test/runner.js @@ -2,7 +2,7 @@ import * as uvu from 'uvu'; import * as ports from 'port-authority'; import fetch from 'node-fetch'; import { chromium } from 'playwright'; -import { dev, build, start, load_config } from '@sveltejs/kit/dist/api'; +import { dev, build, start, load_config } from '@sveltejs/kit/dist/api.js'; import * as assert from 'uvu/assert'; async function setup({ port }) { From 28c546fd6547537fd71890054e08b26e40613477 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Mon, 1 Feb 2021 14:42:31 -0500 Subject: [PATCH 2/8] more stuff --- .../create-svelte/cli/modifications/utils.js | 4 +-- packages/kit/package.json | 8 ++++++ packages/kit/src/api/build/index.js | 21 ++++++++++----- packages/kit/src/api/dev/index.js | 2 +- packages/kit/src/api/dev/loader.js | 8 +++--- .../kit/src/api/dev/sourcemap_stacktrace.js | 6 ++--- packages/kit/src/api/load_config/index.js | 5 ++-- packages/kit/src/api/start/index.js | 9 +++---- packages/kit/src/api/utils.js | 6 ++++- packages/kit/src/cli.js | 4 +-- packages/snowpack-config/package.json | 2 +- ...snowpack.config.js => snowpack.config.cjs} | 0 pnpm-lock.yaml | 15 +++++++++++ test/apps/amp/package.json | 2 +- ...snowpack.config.js => snowpack.config.cjs} | 0 test/apps/amp/src/routes/invalid/__tests__.js | 2 +- .../{svelte.config.js => svelte.config.cjs} | 0 test/apps/amp/test/index.js | 13 +++++++--- test/package.json | 3 ++- test/runner.js | 26 ++++++++++++------- 20 files changed, 92 insertions(+), 44 deletions(-) rename packages/snowpack-config/{snowpack.config.js => snowpack.config.cjs} (100%) rename test/apps/amp/{snowpack.config.js => snowpack.config.cjs} (100%) rename test/apps/amp/{svelte.config.js => svelte.config.cjs} (100%) diff --git a/packages/create-svelte/cli/modifications/utils.js b/packages/create-svelte/cli/modifications/utils.js index 66cc77154c03..ea5d49f09257 100644 --- a/packages/create-svelte/cli/modifications/utils.js +++ b/packages/create-svelte/cli/modifications/utils.js @@ -33,7 +33,7 @@ export function update_component(cwd, filepath, replacements) { * Adds `svelte-preprocess` to `svelte.config.js`, if there's no preprocessor already. */ export function add_svelte_prepocess_to_config(cwd) { - const file = path.join(cwd, 'svelte.config.js'); + const file = path.join(cwd, 'svelte.config.cjs'); let config = fs.readFileSync(file, 'utf-8'); if (config.includes('preprocess:')) { @@ -56,7 +56,7 @@ export function add_svelte_prepocess_to_config(cwd) { * Adds plugin to snowpack config file, if not already present. */ export function add_snowpack_plugin_to_config(cwd, pluginname) { - const file = path.join(cwd, 'snowpack.config.js'); + const file = path.join(cwd, 'snowpack.config.cjs'); let config = fs.readFileSync(file, 'utf-8'); if (config.includes(pluginname)) { diff --git a/packages/kit/package.json b/packages/kit/package.json index 5cb36783302f..49dc7347e9c0 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -52,5 +52,13 @@ "check-format": "prettier --check . --config ../../.prettierrc --ignore-path .gitignore", "prepublishOnly": "npm run build", "test": "uvu src \"(spec.mjs|test/index.mjs)\"" + }, + "exports": { + "./api": { + "import": "./dist/api.js" + }, + "./renderer": { + "import": "./dist/renderer.js" + } } } diff --git a/packages/kit/src/api/build/index.js b/packages/kit/src/api/build/index.js index cc5c60283c77..89c1245e6cd5 100644 --- a/packages/kit/src/api/build/index.js +++ b/packages/kit/src/api/build/index.js @@ -1,4 +1,5 @@ -import fs, { readFileSync, writeFileSync } from 'fs'; +import fs, { existsSync, readFileSync, writeFileSync } from 'fs'; +import { fileURLToPath } from 'url'; import path from 'path'; import child_process from 'child_process'; import { promisify } from 'util'; @@ -14,9 +15,14 @@ import { css_injection } from './css_injection'; const execFile = promisify(child_process.execFile); -const snowpack_main = require.resolve('snowpack'); -const snowpack_pkg_file = path.join(snowpack_main, '../../package.json'); -const snowpack_pkg = require(snowpack_pkg_file); // eslint-disable-line +let snowpack_pkg_file; +let dir = fileURLToPath(import.meta.url); +while (dir !== (dir = path.join(dir, '..'))) { + snowpack_pkg_file = path.join(dir, 'node_modules/snowpack/package.json'); + if (existsSync(snowpack_pkg_file)) break; +} + +const snowpack_pkg = JSON.parse(readFileSync(snowpack_pkg_file, 'utf-8')); // eslint-disable-line const snowpack_bin = path.resolve(path.dirname(snowpack_pkg_file), snowpack_pkg.bin.snowpack); const ignorable_warnings = new Set(['EMPTY_BUNDLE', 'MISSING_EXPORT']); const onwarn = (warning, handler) => { @@ -111,7 +117,8 @@ export async function build(config) { } } }, - css_chunks({ + // TODO the .default suggests a bug in the css_chunks plugin + css_chunks.default({ sourcemap: true }), css_injection, @@ -246,7 +253,7 @@ export async function build(config) { fs.writeFileSync( app_file, ` - import * as renderer from '@sveltejs/kit/dist/renderer'; + import * as renderer from '@sveltejs/kit/renderer'; import root from './${config.appDir}/assets/generated/root.svelte.js'; import { set_paths } from './${config.appDir}/assets/runtime/internal/singletons.js'; import * as setup from './${config.appDir}/setup/index.js'; @@ -377,7 +384,7 @@ export async function build(config) { await server_chunks.write({ dir: `${OPTIMIZED}/server`, - format: 'cjs', // TODO some adapters might want ESM? + format: 'esm', exports: 'named', entryFileNames: '[name].js', chunkFileNames: 'chunks/[name].js', diff --git a/packages/kit/src/api/dev/index.js b/packages/kit/src/api/dev/index.js index b411466db572..e92fcbb37d44 100644 --- a/packages/kit/src/api/dev/index.js +++ b/packages/kit/src/api/dev/index.js @@ -84,7 +84,7 @@ class Watcher extends EventEmitter { { devOptions: { port: this.snowpack_port } }, - 'snowpack.config.js' + 'snowpack.config.cjs' ); this.snowpack_config.mount[resolve('.svelte/assets')] = { diff --git a/packages/kit/src/api/dev/loader.js b/packages/kit/src/api/dev/loader.js index 4175a239b073..787f621f9cab 100644 --- a/packages/kit/src/api/dev/loader.js +++ b/packages/kit/src/api/dev/loader.js @@ -129,14 +129,16 @@ export default function loader(sp) { return async (url) => load(url, []); } -function load_node(source) { +async function load_node(source) { + const mod = await import(source); + return mod; + // mirror Rollup's interop by allowing both of these: // import fs from 'fs'; // import { readFileSync } from 'fs'; return { - exports: new Proxy(require(source), { + exports: new Proxy(mod, { get(mod, prop) { - if (prop === 'default') return mod; return mod[prop]; } }), diff --git a/packages/kit/src/api/dev/sourcemap_stacktrace.js b/packages/kit/src/api/dev/sourcemap_stacktrace.js index 02934274bc03..2abc45551503 100644 --- a/packages/kit/src/api/dev/sourcemap_stacktrace.js +++ b/packages/kit/src/api/dev/sourcemap_stacktrace.js @@ -1,5 +1,5 @@ import path from 'path'; -import { SourceMapConsumer } from 'source-map'; +import sourcemap from 'source-map'; function get_sourcemap_url(contents) { const reversed = contents.split('\n').reverse().join('\n'); @@ -65,12 +65,12 @@ export async function sourcemap_stacktrace(stack, load_contents) { // TODO: according to typings, this code cannot work; // the constructor returns a promise that needs to be awaited - const consumer = await new SourceMapConsumer(raw_sourcemap); + const consumer = await new sourcemap.SourceMapConsumer(raw_sourcemap); const pos = consumer.originalPositionFor({ line: Number(line), column: Number(column), - bias: SourceMapConsumer.LEAST_UPPER_BOUND + bias: sourcemap.SourceMapConsumer.LEAST_UPPER_BOUND }); if (!pos.source) return input; diff --git a/packages/kit/src/api/load_config/index.js b/packages/kit/src/api/load_config/index.js index 35bbb05f08eb..27e189a14961 100644 --- a/packages/kit/src/api/load_config/index.js +++ b/packages/kit/src/api/load_config/index.js @@ -1,6 +1,7 @@ import { bold, yellow } from 'kleur/colors'; import options from './options.js'; import * as url from 'url'; +import { join } from 'path'; function warn(msg) { console.log(bold(yellow(msg))); @@ -58,9 +59,9 @@ function remove_trailing_slash(str) { const expected = new Set(['compilerOptions', 'kit', 'preprocess']); export async function load_config({ cwd = process.cwd() } = {}) { - const config_file = await import.meta.resolve('svelte.config.js', url.pathToFileURL(cwd)); + const config_file = join(cwd, 'svelte.config.cjs'); const config = await import(config_file); - const validated = validate_config(config); + const validated = validate_config(config.default); // TODO check all the `files` exist when the config is loaded? // TODO check that `target` is present in the provided template diff --git a/packages/kit/src/api/start/index.js b/packages/kit/src/api/start/index.js index 9ecc848d3556..a3230699930d 100644 --- a/packages/kit/src/api/start/index.js +++ b/packages/kit/src/api/start/index.js @@ -1,9 +1,9 @@ import * as fs from 'fs'; import * as http from 'http'; -import { parse, URLSearchParams, pathToFileURL } from 'url'; +import { parse, URLSearchParams } from 'url'; import sirv from 'sirv'; import { get_body } from '@sveltejs/app-utils/http'; -import { join } from 'path'; +import { join, resolve } from 'path'; const mutable = (dir) => sirv(dir, { @@ -12,10 +12,7 @@ const mutable = (dir) => }); export async function start({ port, config }) { - const app_file = await import.meta.resolve( - '.svelte/build/optimized/server/app.js', - pathToFileURL(process.cwd()) - ); + const app_file = resolve('.svelte/build/optimized/server/app.js'); const app = await import(app_file); const static_handler = fs.existsSync(config.files.assets) diff --git a/packages/kit/src/api/utils.js b/packages/kit/src/api/utils.js index dc8dc6aed19b..4f06e5f08963 100644 --- a/packages/kit/src/api/utils.js +++ b/packages/kit/src/api/utils.js @@ -1,6 +1,10 @@ -import { resolve } from 'path'; +import { dirname, resolve } from 'path'; import colors from 'kleur'; import { copy } from '@sveltejs/app-utils/files'; +import { fileURLToPath } from 'url'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); export function copy_assets() { copy(resolve(__dirname, '../assets'), '.svelte/assets'); diff --git a/packages/kit/src/cli.js b/packages/kit/src/cli.js index 4713c79a4e92..83e2c216f179 100644 --- a/packages/kit/src/cli.js +++ b/packages/kit/src/cli.js @@ -10,9 +10,9 @@ function get_config() { let message = error.message; if (error.code === 'ENOENT') { - message = 'Missing svelte.config.js'; + message = 'Missing svelte.config.cjs'; } else if (error.name === 'SyntaxError') { - message = 'Malformed svelte.config.js'; + message = 'Malformed svelte.config.cjs'; } console.error(colors.bold().red(message)); diff --git a/packages/snowpack-config/package.json b/packages/snowpack-config/package.json index 248b8ece9b45..e1468a95b313 100644 --- a/packages/snowpack-config/package.json +++ b/packages/snowpack-config/package.json @@ -6,7 +6,7 @@ "format": "prettier --write . --config ../../.prettierrc --ignore-path .gitignore", "check-format": "prettier --check . --config ../../.prettierrc --ignore-path .gitignore" }, - "main": "snowpack.config.js", + "main": "snowpack.config.cjs", "dependencies": { "@snowpack/plugin-svelte": "^3.5.2" } diff --git a/packages/snowpack-config/snowpack.config.js b/packages/snowpack-config/snowpack.config.cjs similarity index 100% rename from packages/snowpack-config/snowpack.config.js rename to packages/snowpack-config/snowpack.config.cjs diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 81c7114521a0..2d4cc8649073 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -233,9 +233,11 @@ importers: '@sveltejs/kit': 'link:../packages/kit' devDependencies: port-authority: 1.1.2 + uvu: 0.6.0-next.1 specifiers: '@sveltejs/kit': 'workspace:*' port-authority: ^1.1.2 + uvu: ^0.6.0-next.1 test/apps/amp: devDependencies: '@sveltejs/adapter-node': 'link:../../../packages/adapter-node' @@ -3689,6 +3691,19 @@ packages: hasBin: true resolution: integrity: sha512-JGxttnOGDFs77FaZ0yMUHIzczzQ5R1IlDeNW6Wymw6gAscwMdAffVOP6TlxLIfReZyK8tahoGwWZaTCJzNFDkg== + /uvu/0.6.0-next.1: + dependencies: + dequal: 2.0.2 + diff: 5.0.0 + kleur: 4.1.4 + sade: 1.7.4 + totalist: 2.0.0 + dev: true + engines: + node: '>=8' + hasBin: true + resolution: + integrity: sha512-YXBhSHY/tlP/ulBi+JDvLGFgDhmVUALufkFAxF61S6hUnI4IQ/9KT0tEVNTLLdzoPZs+9vpjLUTYJOWxffciPQ== /v8-compile-cache/2.1.1: dev: true resolution: diff --git a/test/apps/amp/package.json b/test/apps/amp/package.json index b552b1ed18f7..a658d8076a0a 100644 --- a/test/apps/amp/package.json +++ b/test/apps/amp/package.json @@ -6,7 +6,7 @@ "dev": "svelte-kit dev", "build": "svelte-kit build", "start": "svelte-kit start", - "test": "uvu test" + "test": "node test" }, "devDependencies": { "@sveltejs/adapter-node": "workspace:*", diff --git a/test/apps/amp/snowpack.config.js b/test/apps/amp/snowpack.config.cjs similarity index 100% rename from test/apps/amp/snowpack.config.js rename to test/apps/amp/snowpack.config.cjs diff --git a/test/apps/amp/src/routes/invalid/__tests__.js b/test/apps/amp/src/routes/invalid/__tests__.js index e8c014d0cd52..8b92f55a48ed 100644 --- a/test/apps/amp/src/routes/invalid/__tests__.js +++ b/test/apps/amp/src/routes/invalid/__tests__.js @@ -6,7 +6,7 @@ export default function (test, is_dev) { if (is_dev) { assert.ok(await contains('AMP validation failed')); - assert.ok(await contains('The tag \'img\' may only appear as a descendant of tag \'noscript\'')); + assert.ok(await contains("The tag 'img' may only appear as a descendant of tag 'noscript'")); assert.ok(await contains('<img src="potato.jpg">')); } else { assert.ok(await contains('')); diff --git a/test/apps/amp/svelte.config.js b/test/apps/amp/svelte.config.cjs similarity index 100% rename from test/apps/amp/svelte.config.js rename to test/apps/amp/svelte.config.cjs diff --git a/test/apps/amp/test/index.js b/test/apps/amp/test/index.js index 8608cadd14d9..6e175f3c9eca 100644 --- a/test/apps/amp/test/index.js +++ b/test/apps/amp/test/index.js @@ -4,13 +4,20 @@ import { fileURLToPath } from 'url'; import { runner } from '../../../runner.js'; // TODO make this a package? runner( - (test, is_dev) => { + async () => { const __filename = fileURLToPath(import.meta.url); const cwd = path.join(__filename, '../../src/routes'); const modules = glob('**/__tests__.js', { cwd }); - for (const module of modules) { - require(`../src/routes/${module}`).default(test, is_dev); + + const tests = []; + + for (const file of modules) { + console.log(file); + const mod = await import(`${cwd}/${file}`); + tests.push(mod.default); } + + return tests; }, { amp: true diff --git a/test/package.json b/test/package.json index a2374d06c317..7478b722b25f 100644 --- a/test/package.json +++ b/test/package.json @@ -6,7 +6,8 @@ "@sveltejs/kit": "workspace:*" }, "devDependencies": { - "port-authority": "^1.1.2" + "port-authority": "^1.1.2", + "uvu": "^0.6.0-next.1" }, "type": "module" } diff --git a/test/runner.js b/test/runner.js index 55047fb183e4..31c0bcae0609 100644 --- a/test/runner.js +++ b/test/runner.js @@ -1,8 +1,7 @@ -import * as uvu from 'uvu'; -import * as ports from 'port-authority'; +import ports from 'port-authority'; import fetch from 'node-fetch'; import { chromium } from 'playwright'; -import { dev, build, start, load_config } from '@sveltejs/kit/dist/api.js'; +import { dev, build, start, load_config } from '@sveltejs/kit/api'; import * as assert from 'uvu/assert'; async function setup({ port }) { @@ -82,9 +81,14 @@ async function setup({ port }) { }; } -export function runner(callback, options = {}) { - function run(is_dev, { before, after }) { +globalThis.UVU_DEFER = 1; + +export async function runner(prepare_tests, options = {}) { + const uvu = await import('uvu'); + + async function run(is_dev, { before, after }) { const suite = uvu.suite(is_dev ? 'dev' : 'build'); + const tests = await prepare_tests(); suite.before(before); suite.after(after); @@ -118,22 +122,23 @@ export function runner(callback, options = {}) { test.skip = duplicate(suite.skip); test.only = duplicate(suite.only); - callback(test, is_dev); + tests.forEach((fn) => fn(test, is_dev)); suite.run(); } - const config = load_config(); + const config_promise = load_config(); - run(true, { + await run(true, { async before(context) { const port = await ports.find(3000); + const config = await config_promise; try { context.watcher = await dev({ port, config }); Object.assign(context, await setup({ port })); } catch (e) { - console.log(e.message); + console.log(e.stack); throw e; } }, @@ -143,10 +148,11 @@ export function runner(callback, options = {}) { } }); - run(false, { + await run(false, { async before(context) { try { const port = await ports.find(3000); + const config = await config_promise; // TODO implement `svelte start` so we don't need to use an adapter await build(config); From 1d4b1ec5b808d90f70e34ec37b4d8401802e6492 Mon Sep 17 00:00:00 2001 From: Luke Edwards Date: Mon, 1 Feb 2021 15:38:11 -0800 Subject: [PATCH 3/8] chore: finish ESM conversion (#360) * fix(test): manually control `UVU_QUEUE` positions; Have to replicate the `uvu` internals since all internal loader/iterator logic is bypassed. * fix: force `UVU_QUEUE` values * chore: add `context.reset` method; - chasing unterminated process * fix(kit): return `snowpack.shutdown` promise - so that `dev.close` is await'able * fix(runner): manually exit process; - also part of what uvu cli does; derp * chore: convert "test/apps/basics" fixture * chore: convert "test/apps/options" fixture --- packages/kit/src/api/dev/index.js | 2 +- test/apps/amp/test/index.js | 1 - test/apps/basics/package.json | 3 +- ...snowpack.config.js => snowpack.config.cjs} | 0 .../{svelte.config.js => svelte.config.cjs} | 0 test/apps/basics/test/index.js | 40 +++++++++------ test/apps/options/package.json | 3 +- ...snowpack.config.js => snowpack.config.cjs} | 0 .../{svelte.config.js => svelte.config.cjs} | 0 test/apps/options/test/index.js | 50 ++++++++++++------- test/runner.js | 19 +++++-- 11 files changed, 76 insertions(+), 42 deletions(-) rename test/apps/basics/{snowpack.config.js => snowpack.config.cjs} (100%) rename test/apps/basics/{svelte.config.js => svelte.config.cjs} (100%) rename test/apps/options/{snowpack.config.js => snowpack.config.cjs} (100%) rename test/apps/options/{svelte.config.js => svelte.config.cjs} (100%) diff --git a/packages/kit/src/api/dev/index.js b/packages/kit/src/api/dev/index.js index e92fcbb37d44..957772c10172 100644 --- a/packages/kit/src/api/dev/index.js +++ b/packages/kit/src/api/dev/index.js @@ -340,7 +340,7 @@ class Watcher extends EventEmitter { this.server.close(); this.cheapwatch.close(); - this.snowpack.shutdown(); + return this.snowpack.shutdown(); } } diff --git a/test/apps/amp/test/index.js b/test/apps/amp/test/index.js index 6e175f3c9eca..61ffde938cf6 100644 --- a/test/apps/amp/test/index.js +++ b/test/apps/amp/test/index.js @@ -12,7 +12,6 @@ runner( const tests = []; for (const file of modules) { - console.log(file); const mod = await import(`${cwd}/${file}`); tests.push(mod.default); } diff --git a/test/apps/basics/package.json b/test/apps/basics/package.json index 662638310b3f..c79b1408fd05 100644 --- a/test/apps/basics/package.json +++ b/test/apps/basics/package.json @@ -1,12 +1,13 @@ { "name": "test-basics", "private": true, + "type": "module", "version": "0.0.2", "scripts": { "dev": "svelte-kit dev", "build": "svelte-kit build", "start": "svelte-kit start", - "test": "uvu test" + "test": "node test" }, "devDependencies": { "@sveltejs/adapter-node": "workspace:*", diff --git a/test/apps/basics/snowpack.config.js b/test/apps/basics/snowpack.config.cjs similarity index 100% rename from test/apps/basics/snowpack.config.js rename to test/apps/basics/snowpack.config.cjs diff --git a/test/apps/basics/svelte.config.js b/test/apps/basics/svelte.config.cjs similarity index 100% rename from test/apps/basics/svelte.config.js rename to test/apps/basics/svelte.config.cjs diff --git a/test/apps/basics/test/index.js b/test/apps/basics/test/index.js index 5ada19d992be..6cdc843a255b 100644 --- a/test/apps/basics/test/index.js +++ b/test/apps/basics/test/index.js @@ -1,20 +1,32 @@ import path from 'path'; import glob from 'tiny-glob/sync.js'; import * as assert from 'uvu/assert'; -import { runner } from '../../../runner'; // TODO make this a package? +import { fileURLToPath } from 'url'; +import { runner } from '../../../runner.js'; // TODO make this a package? -runner((test, is_dev) => { - const cwd = path.join(__dirname, '../src/routes'); - const modules = glob('**/__tests__.js', { cwd }); - for (const module of modules) { - require(`../src/routes/${module}`).default(test, is_dev); - } +runner( + async () => { + const __filename = fileURLToPath(import.meta.url); + const cwd = path.join(__filename, '../../src/routes'); + const modules = glob('**/__tests__.js', { cwd }); + + const tests = []; + + for (const file of modules) { + const mod = await import(`${cwd}/${file}`); + tests.push(mod.default); + } - test('static files', async ({ fetch }) => { - let res = await fetch('/static.json'); - assert.equal(await res.json(), 'static file'); + tests.push(suite => { + suite('static files', async ({ fetch }) => { + let res = await fetch('/static.json'); + assert.equal(await res.json(), 'static file'); - res = await fetch('/subdirectory/static.json'); - assert.equal(await res.json(), 'subdirectory file'); - }); -}); + res = await fetch('/subdirectory/static.json'); + assert.equal(await res.json(), 'subdirectory file'); + }); + }); + + return tests; + } +); diff --git a/test/apps/options/package.json b/test/apps/options/package.json index 53f1bb9152c3..e558ae14ba2a 100644 --- a/test/apps/options/package.json +++ b/test/apps/options/package.json @@ -1,12 +1,13 @@ { "name": "test-options", "private": true, + "type": "module", "version": "0.0.1", "scripts": { "dev": "svelte-kit dev", "build": "svelte-kit build", "start": "svelte-kit start", - "test": "uvu" + "test": "node test" }, "devDependencies": { "@sveltejs/adapter-node": "workspace:*", diff --git a/test/apps/options/snowpack.config.js b/test/apps/options/snowpack.config.cjs similarity index 100% rename from test/apps/options/snowpack.config.js rename to test/apps/options/snowpack.config.cjs diff --git a/test/apps/options/svelte.config.js b/test/apps/options/svelte.config.cjs similarity index 100% rename from test/apps/options/svelte.config.js rename to test/apps/options/svelte.config.cjs diff --git a/test/apps/options/test/index.js b/test/apps/options/test/index.js index 0a2bbd0b7880..23a62fedd72c 100644 --- a/test/apps/options/test/index.js +++ b/test/apps/options/test/index.js @@ -1,24 +1,36 @@ import path from 'path'; import glob from 'tiny-glob/sync.js'; import * as assert from 'uvu/assert'; -import { runner } from '../../../runner'; // TODO make this a package? +import { fileURLToPath } from 'url'; +import { runner } from '../../../runner.js'; // TODO make this a package? -runner((test, is_dev) => { - const cwd = path.join(__dirname, '../source/pages'); - const modules = glob('**/__tests__.js', { cwd }); - for (const module of modules) { - require(`../source/pages/${module}`).default(test, is_dev); - } +runner( + async () => { + const __filename = fileURLToPath(import.meta.url); + const cwd = path.join(__filename, '../../source/pages'); + const modules = glob('**/__tests__.js', { cwd }); + + const tests = []; + + for (const file of modules) { + const mod = await import(`${cwd}/${file}`); + tests.push(mod.default); + } - test('serves /', async ({ visit, contains, js }) => { - await visit('/'); - assert.ok(await contains('I am in the template'), 'Should show custom template contents'); - assert.ok(await contains("We're on index.svelte"), 'Should show page contents'); - assert.ok( - await contains( - `Hello from the ${js ? 'client' : 'server'} in ${is_dev ? 'dev' : 'prod'} mode!` - ), - 'Should run JavaScript' - ); - }); -}); + tests.push((suite, is_dev) => { + suite('serves /', async ({ visit, contains, js }) => { + await visit('/'); + assert.ok(await contains('I am in the template'), 'Should show custom template contents'); + assert.ok(await contains("We're on index.svelte"), 'Should show page contents'); + assert.ok( + await contains( + `Hello from the ${js ? 'client' : 'server'} in ${is_dev ? 'dev' : 'prod'} mode!` + ), + 'Should run JavaScript' + ); + }); + }); + + return tests; + } +); diff --git a/test/runner.js b/test/runner.js index 31c0bcae0609..1b103c9e49ef 100644 --- a/test/runner.js +++ b/test/runner.js @@ -77,17 +77,23 @@ async function setup({ port }) { pathname: () => page.url().replace(base, ''), keyboard: page.keyboard, sleep: (ms) => new Promise((f) => setTimeout(f, ms)), + reset: () => browser && browser.close(), $: (selector) => page.$(selector) }; } -globalThis.UVU_DEFER = 1; - export async function runner(prepare_tests, options = {}) { + globalThis.UVU_DEFER = 1; const uvu = await import('uvu'); async function run(is_dev, { before, after }) { - const suite = uvu.suite(is_dev ? 'dev' : 'build'); + const name = is_dev ? 'dev' : 'build'; + + // manually replicate uvu global state + const count = globalThis.UVU_QUEUE.push([name]); + globalThis.UVU_INDEX = count - 1; + + const suite = uvu.suite(name); const tests = await prepare_tests(); suite.before(before); @@ -144,7 +150,7 @@ export async function runner(prepare_tests, options = {}) { }, async after(context) { await context.watcher.close(); - if (context.browser) await context.browser.close(); + await context.reset(); } }); @@ -167,7 +173,10 @@ export async function runner(prepare_tests, options = {}) { }, async after(context) { context.server.close(); - if (context.browser) await context.browser.close(); + await context.reset(); } }); + + await uvu.exec(); + process.exit(process.exitCode || 0); } From d09a91ad2995afc129a5c7c103a73f9c3ce633ac Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Tue, 9 Feb 2021 19:09:20 -0500 Subject: [PATCH 4/8] bump meriyah --- packages/kit/package.json | 2 +- pnpm-lock.yaml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/kit/package.json b/packages/kit/package.json index b9bb248e2789..f6ce27d5e2c3 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -24,7 +24,7 @@ "is-reference": "^1.2.1", "kleur": "^4.1.4", "magic-string": "^0.25.7", - "meriyah": "^3.1.6", + "meriyah": "^4.1.1", "node-fetch": "^2.6.1", "periscopic": "^3.0.0", "port-authority": "^1.1.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 30b5f1d408a8..58b96b291e48 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -179,7 +179,7 @@ importers: is-reference: 1.2.1 kleur: 4.1.4 magic-string: 0.25.7 - meriyah: 3.1.6 + meriyah: 4.1.1 node-fetch: 2.6.1 periscopic: 3.0.0 port-authority: 1.1.2 @@ -202,7 +202,7 @@ importers: is-reference: ^1.2.1 kleur: ^4.1.4 magic-string: ^0.25.7 - meriyah: ^3.1.6 + meriyah: ^4.1.1 node-fetch: ^2.6.1 periscopic: ^3.0.0 port-authority: ^1.1.2 @@ -2329,12 +2329,12 @@ packages: node: '>= 8' resolution: integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - /meriyah/3.1.6: + /meriyah/4.1.1: dev: true engines: node: '>=10.4.0' resolution: - integrity: sha512-JDOSi6DIItDc33U5N52UdV6P8v+gn+fqZKfbAfHzdWApRQyQWdcvxPvAr9t01bI2rBxGvSrKRQSCg3SkZC1qeg== + integrity: sha512-Awk9n/HTyIZWhtpZkb8HvlrU7q7fBGl24wm4HXxVFm5IV3ov2PacmR41SL+LZ9EtuhRCudw5MkGaXUcUEcOBZg== /micromatch/4.0.2: dependencies: braces: 3.0.2 From 419f8bd3a51575326ff2ead52adbc7cddc08e8b7 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Tue, 9 Feb 2021 19:46:02 -0500 Subject: [PATCH 5/8] all tests passing, i think? --- packages/kit/src/api/build/index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/kit/src/api/build/index.js b/packages/kit/src/api/build/index.js index 7c63fa5104ea..89c1245e6cd5 100644 --- a/packages/kit/src/api/build/index.js +++ b/packages/kit/src/api/build/index.js @@ -386,9 +386,9 @@ export async function build(config) { dir: `${OPTIMIZED}/server`, format: 'esm', exports: 'named', - entryFileNames: '[name].cjs', - chunkFileNames: 'chunks/[name].cjs', - assetFileNames: 'assets/[name].cjs', + entryFileNames: '[name].js', + chunkFileNames: 'chunks/[name].js', + assetFileNames: 'assets/[name].js', sourcemap: true }); From 1442add9a39798d146f169e013abeb5e3cf1fa64 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Tue, 9 Feb 2021 19:53:30 -0500 Subject: [PATCH 6/8] simplify --- packages/kit/src/api/dev/loader.js | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/packages/kit/src/api/dev/loader.js b/packages/kit/src/api/dev/loader.js index 787f621f9cab..371356b81e1d 100644 --- a/packages/kit/src/api/dev/loader.js +++ b/packages/kit/src/api/dev/loader.js @@ -17,7 +17,7 @@ export default function loader(sp) { return load(pathname, url_stack); } - return Promise.resolve(load_node(imported)); + return import(imported); }; const invalidate_all = (path) => { @@ -128,20 +128,3 @@ export default function loader(sp) { return async (url) => load(url, []); } - -async function load_node(source) { - const mod = await import(source); - return mod; - - // mirror Rollup's interop by allowing both of these: - // import fs from 'fs'; - // import { readFileSync } from 'fs'; - return { - exports: new Proxy(mod, { - get(mod, prop) { - return mod[prop]; - } - }), - css: [] - }; -} From 3d78a94370acf238ca5c2030da197ea2088be4eb Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Tue, 9 Feb 2021 19:56:59 -0500 Subject: [PATCH 7/8] get CLI working --- packages/kit/package.json | 2 +- packages/kit/{svelte-kit => svelte-kit.js} | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename packages/kit/{svelte-kit => svelte-kit.js} (51%) diff --git a/packages/kit/package.json b/packages/kit/package.json index f6ce27d5e2c3..8f7da07c90b4 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -36,7 +36,7 @@ "tiny-glob": "^0.2.8" }, "bin": { - "svelte-kit": "svelte-kit" + "svelte-kit": "svelte-kit.js" }, "files": [ "assets", diff --git a/packages/kit/svelte-kit b/packages/kit/svelte-kit.js similarity index 51% rename from packages/kit/svelte-kit rename to packages/kit/svelte-kit.js index 23e3723861fa..3569fa32943f 100755 --- a/packages/kit/svelte-kit +++ b/packages/kit/svelte-kit.js @@ -1,3 +1,3 @@ #!/usr/bin/env node -import 'source-map-support/register'; +import 'source-map-support/register.js'; import './dist/cli.js'; From bc616144919f3ddda484f490121f5ffd1578901f Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Tue, 9 Feb 2021 20:11:17 -0500 Subject: [PATCH 8/8] brute force --- packages/kit/src/api/dev/transform.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/kit/src/api/dev/transform.js b/packages/kit/src/api/dev/transform.js index 359b779ff74e..0c0df535c3f8 100644 --- a/packages/kit/src/api/dev/transform.js +++ b/packages/kit/src/api/dev/transform.js @@ -1,6 +1,6 @@ import * as meriyah from 'meriyah'; import MagicString from 'magic-string'; -import * as periscopic from 'periscopic'; +import * as periscopic from 'periscopic'; // eslint-disable-line import/no-unresolved import * as walker from 'estree-walker'; import is_reference from 'is-reference';