Merge branch 'master' into bugfix/2446_apply_directives_in_order

* master:
  Fix overwrite of 'offset' value in reactive statement
  fix slide example
  typos
  update svelte-repl (fixes download button)
  update svelte-repl
  update svelte-repl version
  use better eliza package
  gitignore workers
  add compiler typings to list of published files
  improve typings for animate, easing, transition, motion and internal apis
  update bundler worker
  fix gitignore
  fix types for easing functions
  fix build order
  generate internal-exports file
  update gitignore
  update folder structure - #2790
  bundle locally
pull/2737/head
Colin Casey 6 years ago
commit bed13d436f

15
.gitignore vendored

@ -3,15 +3,15 @@
.nyc_output .nyc_output
node_modules node_modules
*.map *.map
/src/compile/internal-exports.ts /src/compiler/compile/internal-exports.ts
/compiler.*js /compiler.*js
/index.*js /index.*js
/internal.*js /internal
/store.*js /store
/easing.*js /easing
/motion.*js /motion
/transition.*js /transition
/animate.*js /animate
/scratch/ /scratch/
/coverage/ /coverage/
/coverage.lcov/ /coverage.lcov/
@ -29,5 +29,6 @@ _actual*.*
/site/.sessions /site/.sessions
/site/static/svelte-app.json /site/static/svelte-app.json
/site/static/contributors.jpg /site/static/contributors.jpg
/site/static/workers
/site/scripts/svelte-app /site/scripts/svelte-app
/site/src/routes/_contributors.js /site/src/routes/_contributors.js

1
animate.d.ts vendored

@ -1 +0,0 @@
export * from './types/animate';

1
easing.d.ts vendored

@ -1 +0,0 @@
export * from './types/easing';

1
index.d.ts vendored

@ -1 +0,0 @@
export * from './types/index';

1
internal.d.ts vendored

@ -1 +0,0 @@
export * from './types/internal';

1
motion.d.ts vendored

@ -1 +0,0 @@
export * from './types/motion';

@ -6,18 +6,19 @@
"main": "index", "main": "index",
"files": [ "files": [
"types", "types",
"compiler.js", "compiler.*",
"register.js", "register.js",
"index.*", "index.*",
"internal.*", "internal",
"store.*", "store",
"animate.*", "animate",
"transition.*", "transition",
"easing.*", "easing",
"motion.*", "motion",
"svelte", "svelte",
"README.md" "README.md"
], ],
"types": "types/runtime",
"scripts": { "scripts": {
"test": "mocha --opts mocha.opts", "test": "mocha --opts mocha.opts",
"test:unit": "mocha --require sucrase/register --recursive ./**/__test__.ts", "test:unit": "mocha --require sucrase/register --recursive ./**/__test__.ts",
@ -30,8 +31,9 @@
"prepare": "npm run build && npm run tsd", "prepare": "npm run build && npm run tsd",
"dev": "rollup -cw", "dev": "rollup -cw",
"pretest": "npm run build", "pretest": "npm run build",
"posttest": "agadoo internal.mjs", "posttest": "agadoo internal/index.mjs",
"prepublishOnly": "export PUBLISH=true && npm test", "prepublishOnly": "export PUBLISH=true && npm test && npm run create-stubs",
"create-stubs": "node scripts/create-stubs.js",
"tsd": "tsc -p . --emitDeclarationOnly", "tsd": "tsc -p . --emitDeclarationOnly",
"typecheck": "tsc -p . --noEmit" "typecheck": "tsc -p . --noEmit"
}, },

@ -9,7 +9,7 @@ import pkg from './package.json';
const is_publish = !!process.env.PUBLISH; const is_publish = !!process.env.PUBLISH;
const tsPlugin = is_publish const ts_plugin = is_publish
? typescript({ ? typescript({
include: 'src/**', include: 'src/**',
typescript: require('typescript') typescript: require('typescript')
@ -18,39 +18,61 @@ const tsPlugin = is_publish
transforms: ['typescript'] transforms: ['typescript']
}); });
const external = id => id.startsWith('svelte/');
export default [ export default [
/* internal.[m]js */ /* runtime */
{ {
input: `src/internal/index.ts`, input: `src/runtime/index.ts`,
output: [ output: [
{ {
file: `internal.mjs`, file: `index.mjs`,
format: 'esm', format: 'esm',
paths: id => id.startsWith('svelte/') && id.replace('svelte', '.') paths: id => id.startsWith('svelte/') && `${id.replace('svelte', '.')}`
}, },
{ {
file: `internal.js`, file: `index.js`,
format: 'cjs', format: 'cjs',
paths: id => id.startsWith('svelte/') && id.replace('svelte', '.') paths: id => id.startsWith('svelte/') && `${id.replace('svelte', '.')}`
} }
], ],
external: id => id.startsWith('svelte/'), external,
plugins: [ts_plugin]
},
plugins: [ ...fs.readdirSync('src/runtime')
tsPlugin, .filter(dir => fs.statSync(`src/runtime/${dir}`).isDirectory())
.map(dir => ({
input: `src/runtime/${dir}/index.ts`,
output: [
{
file: `${dir}/index.mjs`,
format: 'esm',
paths: id => id.startsWith('svelte/') && `${id.replace('svelte', '..')}`
},
{ {
file: `${dir}/index.js`,
format: 'cjs',
paths: id => id.startsWith('svelte/') && `${id.replace('svelte', '..')}`
}
],
external,
plugins: [
ts_plugin,
dir === 'internal' && {
generateBundle(options, bundle) { generateBundle(options, bundle) {
const mod = bundle['internal.mjs']; const mod = bundle['index.mjs'];
if (mod) { if (mod) {
fs.writeFileSync('src/compile/internal-exports.ts', `// This file is automatically generated\nexport default new Set(${JSON.stringify(mod.exports)});`); fs.writeFileSync('src/compiler/compile/internal-exports.ts', `// This file is automatically generated\nexport default new Set(${JSON.stringify(mod.exports)});`);
} }
} }
}] }
}, ]
})),
/* compiler.js */ /* compiler.js */
{ {
input: 'src/compiler.ts', input: 'src/compiler/index.ts',
plugins: [ plugins: [
replace({ replace({
__VERSION__: pkg.version __VERSION__: pkg.version
@ -60,7 +82,7 @@ export default [
include: ['node_modules/**'] include: ['node_modules/**']
}), }),
json(), json(),
tsPlugin ts_plugin
], ],
output: { output: {
file: 'compiler.js', file: 'compiler.js',
@ -71,47 +93,5 @@ export default [
external: is_publish external: is_publish
? [] ? []
: id => id === 'acorn' || id === 'magic-string' || id.startsWith('css-tree') : id => id === 'acorn' || id === 'magic-string' || id.startsWith('css-tree')
},
/* motion.mjs */
{
input: `src/motion/index.ts`,
output: [
{
file: `motion.mjs`,
format: 'esm',
paths: id => id.startsWith('svelte/') && id.replace('svelte', '.')
},
{
file: `motion.js`,
format: 'cjs',
paths: id => id.startsWith('svelte/') && id.replace('svelte', '.')
}
],
plugins: [
tsPlugin
],
external: id => id.startsWith('svelte/')
},
// everything else
...['index', 'easing', 'transition', 'animate', 'store'].map(name => ({
input: `src/${name}.ts`,
output: [
{
file: `${name}.mjs`,
format: 'esm',
paths: id => id.startsWith('svelte/') && id.replace('svelte', '.')
},
{
file: `${name}.js`,
format: 'cjs',
paths: id => id.startsWith('svelte/') && id.replace('svelte', '.')
} }
],
plugins: [
tsPlugin
],
external: id => id.startsWith('svelte/')
}))
]; ];

@ -0,0 +1,12 @@
const fs = require('fs');
fs.readdirSync('src/runtime')
.filter(dir => fs.statSync(`src/runtime/${dir}`).isDirectory())
.forEach(dir => {
fs.writeFileSync(`${dir}/package.json`, JSON.stringify({
main: './index.js',
module: './index.mjs'
}, null, ' '));
fs.writeFileSync(`${dir}/index.d.ts`, `export * from '../types/runtime/${dir}/index.d.ts';`);
});

@ -618,13 +618,13 @@ Slides an element in and out.
```html ```html
<script> <script>
import { fly } from 'svelte/transition'; import { slide } from 'svelte/transition';
import { quintOut } from 'svelte/easing'; import { quintOut } from 'svelte/easing';
</script> </script>
{#if condition} {#if condition}
<div transition:fly="{{delay: 250, duration: 300, easing: quintOut }}"> <div transition:slide="{{delay: 250, duration: 300, easing: quintOut }}">
flies in and out slides in and out
</div> </div>
{/if} {/if}
``` ```

@ -1,5 +1,5 @@
<script> <script>
import Eliza from 'elizanode'; import Eliza from 'elizabot';
import { beforeUpdate, afterUpdate } from 'svelte'; import { beforeUpdate, afterUpdate } from 'svelte';
let div; let div;

@ -1,5 +1,5 @@
<script> <script>
import Eliza from 'elizanode'; import Eliza from 'elizabot';
import { beforeUpdate, afterUpdate } from 'svelte'; import { beforeUpdate, afterUpdate } from 'svelte';
let div; let div;

@ -1,5 +1,5 @@
<script> <script>
import Eliza from 'elizanode'; import Eliza from 'elizabot';
import { beforeUpdate, afterUpdate } from 'svelte'; import { beforeUpdate, afterUpdate } from 'svelte';
let div; let div;

@ -1362,13 +1362,15 @@
} }
}, },
"@sveltejs/svelte-repl": { "@sveltejs/svelte-repl": {
"version": "0.0.11", "version": "0.1.2",
"resolved": "https://registry.npmjs.org/@sveltejs/svelte-repl/-/svelte-repl-0.0.11.tgz", "resolved": "https://registry.npmjs.org/@sveltejs/svelte-repl/-/svelte-repl-0.1.2.tgz",
"integrity": "sha512-F284f8qaUs1rp8akqWXcB6oovlaso7qmsUz1rqm80FwUKLffjYIWy2a1p6+Yo1kRy6Q+fW8kj21JLEqv7pjOwA==", "integrity": "sha512-OHIj01ly4+/WwNb0zGqLSQL7POSs2BPx47CzryVsbu0omVDe7olYTJnCYV4ePUENnlL5JzZihzvlvxmVGP6knw==",
"dev": true, "dev": true,
"requires": { "requires": {
"codemirror": "^5.45.0", "codemirror": "^5.45.0",
"sourcemap-codec": "^1.4.4" "estree-walker": "^0.6.0",
"sourcemap-codec": "^1.4.4",
"yootils": "0.0.15"
} }
}, },
"@types/estree": { "@types/estree": {
@ -1799,9 +1801,9 @@
"dev": true "dev": true
}, },
"codemirror": { "codemirror": {
"version": "5.46.0", "version": "5.47.0",
"resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.46.0.tgz", "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.47.0.tgz",
"integrity": "sha512-3QpMge0vg4QEhHW3hBAtCipJEWjTJrqLLXdIaWptJOblf1vHFeXLNtFhPai/uX2lnFCehWNk4yOdaMR853Z02w==", "integrity": "sha512-kV49Fr+NGFHFc/Imsx6g180hSlkGhuHxTSDDmDHOuyln0MQYFLixDY4+bFkBVeCEiepYfDimAF/e++9jPJk4QA==",
"dev": true "dev": true
}, },
"collection-visit": { "collection-visit": {

@ -3,9 +3,10 @@
"version": "1.0.0", "version": "1.0.0",
"description": "Docs and examples for Svelte", "description": "Docs and examples for Svelte",
"scripts": { "scripts": {
"dev": "sapper dev", "dev": "npm run copy-workers && sapper dev",
"copy-workers": "rm -rf static/workers && cp -r node_modules/@sveltejs/svelte-repl/workers static",
"migrate": "node-pg-migrate -r dotenv/config", "migrate": "node-pg-migrate -r dotenv/config",
"sapper": "sapper build --legacy", "sapper": "npm run copy-workers && sapper build --legacy",
"update_shimport": "cp node_modules/shimport/index.js __sapper__/build/client/shimport@0.0.14.js", "update_shimport": "cp node_modules/shimport/index.js __sapper__/build/client/shimport@0.0.14.js",
"update": "node scripts/update_template.js && node scripts/get-contributors.js", "update": "node scripts/update_template.js && node scripts/get-contributors.js",
"start": "node __sapper__/build", "start": "node __sapper__/build",
@ -38,7 +39,7 @@
"@babel/runtime": "^7.4.4", "@babel/runtime": "^7.4.4",
"@sindresorhus/slugify": "^0.9.1", "@sindresorhus/slugify": "^0.9.1",
"@sveltejs/site-kit": "^1.0.4", "@sveltejs/site-kit": "^1.0.4",
"@sveltejs/svelte-repl": "0.0.11", "@sveltejs/svelte-repl": "^0.1.2",
"degit": "^2.1.3", "degit": "^2.1.3",
"dotenv": "^8.0.0", "dotenv": "^8.0.0",
"eslint-plugin-svelte3": "^1.0.0", "eslint-plugin-svelte3": "^1.0.0",

@ -116,6 +116,7 @@
{#if process.browser} {#if process.browser}
<Repl <Repl
bind:this={repl} bind:this={repl}
workersUrl="workers"
fixed={mobile} fixed={mobile}
{svelteUrl} {svelteUrl}
{rollupUrl} {rollupUrl}

@ -39,6 +39,10 @@
let isLoading = false; let isLoading = false;
const cache = {}; const cache = {};
function showExampleCodeOnChange() {
offset = 1;
}
$: title = title_by_slug[active_slug] || ''; $: title = title_by_slug[active_slug] || '';
$: first_slug = sections[0].examples[0].slug; $: first_slug = sections[0].examples[0].slug;
$: mobile = width < 768; // note: same as per media query below $: mobile = width < 768; // note: same as per media query below
@ -46,7 +50,7 @@
$: if (repl && active_slug) { $: if (repl && active_slug) {
if (active_slug in cache) { if (active_slug in cache) {
repl.set({ components: cache[active_slug] }); repl.set({ components: cache[active_slug] });
offset = 1; showExampleCodeOnChange();
} else { } else {
isLoading = true; isLoading = true;
fetch(`examples/${active_slug}.json`) fetch(`examples/${active_slug}.json`)
@ -59,7 +63,7 @@
.then(components => { .then(components => {
cache[active_slug] = components; cache[active_slug] = components;
repl.set({components}); repl.set({components});
offset = 1; showExampleCodeOnChange();
isLoading = false; isLoading = false;
}) })
.catch(() => { .catch(() => {
@ -102,6 +106,7 @@
<div class="repl-container" class:loading={isLoading}> <div class="repl-container" class:loading={isLoading}>
<Repl <Repl
bind:this={repl} bind:this={repl}
workersUrl="workers"
{svelteUrl} {svelteUrl}
{rollupUrl} {rollupUrl}
orientation={replOrientation} orientation={replOrientation}

@ -206,6 +206,7 @@
<div class="viewport" class:offset={checked}> <div class="viewport" class:offset={checked}>
<Repl <Repl
bind:this={repl} bind:this={repl}
workersUrl="workers"
{svelteUrl} {svelteUrl}
{rollupUrl} {rollupUrl}
{relaxed} {relaxed}

@ -302,6 +302,7 @@
<div class="tutorial-repl"> <div class="tutorial-repl">
<Repl <Repl
bind:this={repl} bind:this={repl}
workersUrl="workers"
{svelteUrl} {svelteUrl}
{rollupUrl} {rollupUrl}
orientation={mobile ? 'columns' : 'rows'} orientation={mobile ? 'columns' : 'rows'}

@ -2,11 +2,12 @@ import sirv from 'sirv';
import * as sapper from '@sapper/server'; import * as sapper from '@sapper/server';
import { API } from './backend/auth'; import { API } from './backend/auth';
const { PORT=3000 } = process.env; const { PORT = 3000 } = process.env;
API() API()
.use( .use(
sirv('static', { sirv('static', {
dev: process.env.NODE_ENV === 'development',
setHeaders(res) { setHeaders(res) {
res.setHeader('Access-Control-Allow-Origin', '*'); res.setHeader('Access-Control-Allow-Origin', '*');
res.hasHeader('Cache-Control') || res.setHeader('Cache-Control', 'max-age=600'); // 10min default res.hasHeader('Cache-Control') || res.setHeader('Cache-Control', 'max-age=600'); // 10min default

@ -1,4 +1,4 @@
import { assign } from '../internal/index'; import { assign } from '../../runtime/internal/index';
import Stats from '../Stats'; import Stats from '../Stats';
import parse from '../parse/index'; import parse from '../parse/index';
import render_dom from './render-dom/index'; import render_dom from './render-dom/index';

@ -1,5 +1,5 @@
import Block from '../../render-dom/Block'; import Block from '../../render-dom/Block';
import Component from './../../Component'; import Component from '../../Component';
import Node from './Node'; import Node from './Node';
import { INode } from '../interfaces'; import { INode } from '../interfaces';

@ -1,5 +1,5 @@
import Attribute from './../Attribute'; import Attribute from '../Attribute';
import Component from './../../Component'; import Component from '../../Component';
import { INode } from '../interfaces'; import { INode } from '../interfaces';
import Text from '../Text'; import Text from '../Text';

@ -1,5 +1,5 @@
import Binding from '../../../nodes/Binding'; import Binding from '../../../nodes/Binding';
import ElementWrapper from '.'; import ElementWrapper from '../Element';
import { dimensions } from '../../../../utils/patterns'; import { dimensions } from '../../../../utils/patterns';
import get_object from '../../../utils/get_object'; import get_object from '../../../utils/get_object';
import Block from '../../Block'; import Block from '../../Block';

@ -1,7 +1,7 @@
import Attribute from '../../../nodes/Attribute'; import Attribute from '../../../nodes/Attribute';
import Block from '../../Block'; import Block from '../../Block';
import AttributeWrapper from './Attribute'; import AttributeWrapper from './Attribute';
import ElementWrapper from '.'; import ElementWrapper from '../Element';
import { stringify } from '../../../utils/stringify'; import { stringify } from '../../../utils/stringify';
import add_to_set from '../../../utils/add_to_set'; import add_to_set from '../../../utils/add_to_set';
import Expression from '../../../nodes/shared/Expression'; import Expression from '../../../nodes/shared/Expression';

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save