rename onmount,ondestroy,onprops,onupdate to onMount,onDestroy,beforeRender,afterRender

pull/1864/head
Rich Harris 7 years ago
parent aceb3b7b20
commit fecda031fc

@ -1,3 +1,7 @@
import { onprops, onmount, onupdate, ondestroy, createEventDispatcher } from './internal.js'; export {
onMount,
export { onprops, onmount, onupdate, ondestroy, createEventDispatcher }; onDestroy,
beforeRender,
afterRender,
createEventDispatcher
} from './internal.js';

@ -99,9 +99,9 @@ export default class Stats {
// TODO // TODO
const hooks: Record<string, boolean> = component && { const hooks: Record<string, boolean> = component && {
oncreate: false, oncreate: false,
ondestroy: false, onDestroy: false,
onstate: false, onstate: false,
onupdate: false afterRender: false
}; };
return { return {

@ -5,10 +5,10 @@ import { blankObject } from './utils.js';
export class $$Component { export class $$Component {
constructor(options) { constructor(options) {
this.$$onprops = []; this.$$beforeRender = [];
this.$$onmount = []; this.$$onMount = [];
this.$$onupdate = []; this.$$afterRender = [];
this.$$ondestroy = []; this.$$onDestroy = [];
this.$$bindings = blankObject(); this.$$bindings = blankObject();
this.$$callbacks = blankObject(); this.$$callbacks = blankObject();
@ -60,8 +60,6 @@ export class $$Component {
$set(values) { $set(values) {
if (this.$$) { if (this.$$) {
this.$$.inject_props(values); this.$$.inject_props(values);
run_all(this.$$onprops); // TODO should this be deferred until the update?
for (const key in values) this.$$make_dirty(key); for (const key in values) this.$$make_dirty(key);
} }
} }
@ -74,10 +72,10 @@ export class $$Component {
$$destroy(detach) { $$destroy(detach) {
if (this.$$) { if (this.$$) {
this.$$fragment.d(detach); this.$$fragment.d(detach);
run_all(this.$$ondestroy); run_all(this.$$onDestroy);
// TODO null out other refs // TODO null out other refs
this.$$ondestroy = this.$$fragment = this.$$ = null; this.$$onDestroy = this.$$fragment = this.$$ = null;
} }
} }
@ -90,19 +88,21 @@ export class $$Component {
} }
$$mount(target, anchor) { $$mount(target, anchor) {
run_all(this.$$beforeRender);
this.$$fragment.c(); this.$$fragment.c();
this.$$fragment[this.$$fragment.i ? 'i' : 'm'](target, anchor); this.$$fragment[this.$$fragment.i ? 'i' : 'm'](target, anchor);
this.$$.inject_refs(this.$$refs); this.$$.inject_refs(this.$$refs);
const ondestroy = this.$$onmount.map(fn => fn()).filter(Boolean); const onDestroy = this.$$onMount.map(fn => fn()).filter(Boolean);
this.$$ondestroy.push(...ondestroy); this.$$onDestroy.push(...onDestroy);
this.$$onmount = []; this.$$onMount = [];
} }
$$update() { $$update() {
run_all(this.$$beforeRender);
this.$$fragment.p(this.$$dirty, this.$$.get_state()); this.$$fragment.p(this.$$dirty, this.$$.get_state());
this.$$.inject_refs(this.$$refs); this.$$.inject_refs(this.$$refs);
run_all(this.$$onupdate); run_all(this.$$afterRender);
this.$$dirty = null; this.$$dirty = null;
} }
} }

@ -33,7 +33,7 @@ export function handlePromise(promise, info) {
// TODO is some of this redundant? // TODO is some of this redundant?
info.component.$$.inject_refs(info.component.$$refs); info.component.$$.inject_refs(info.component.$$refs);
run_all(info.component.$$onupdate); run_all(info.component.$$afterRender);
flush(); flush();
} }

@ -4,20 +4,20 @@ export function set_current_component(component) {
current_component = component; current_component = component;
} }
export function onprops(fn) { export function beforeRender(fn) {
current_component.$$onprops.push(fn); current_component.$$beforeRender.push(fn);
} }
export function onmount(fn) { export function onMount(fn) {
current_component.$$onmount.push(fn); current_component.$$onMount.push(fn);
} }
export function onupdate(fn) { export function afterRender(fn) {
current_component.$$onupdate.push(fn); current_component.$$afterRender.push(fn);
} }
export function ondestroy(fn) { export function onDestroy(fn) {
current_component.$$ondestroy.push(fn); current_component.$$onDestroy.push(fn);
} }
export function createEventDispatcher() { export function createEventDispatcher() {

@ -1,7 +1,7 @@
<script> <script>
import { onmount } from 'svelte'; import { onMount } from 'svelte';
onmount(() => { onMount(() => {
console.log('here'); console.log('here');
}); });
</script> </script>

@ -1,7 +1,7 @@
<script> <script>
import { onmount } from 'svelte'; import { onMount } from 'svelte';
onmount(() => { onMount(() => {
console.log('here'); console.log('here');
}); });
</script> </script>

@ -1,11 +1,11 @@
<svelte:meta tag="my-app"/> <svelte:meta tag="my-app"/>
<script> <script>
import { onmount } from 'svelte'; import { onMount } from 'svelte';
export let wasCreated; export let wasCreated;
onmount(() => { onMount(() => {
wasCreated = true; wasCreated = true;
}); });
</script> </script>

@ -1,9 +1,9 @@
<script> <script>
import { onmount } from 'svelte'; import { onMount } from 'svelte';
export let foo = 'bar'; export let foo = 'bar';
onmount(() => { onMount(() => {
alert(JSON.stringify(data())); alert(JSON.stringify(data()));
}); });
</script> </script>

@ -5,14 +5,14 @@
</script> </script>
<script> <script>
import { ondestroy, onmount } from 'svelte'; import { onDestroy, onMount } from 'svelte';
onmount(() => { onMount(() => {
console.log('oncreate'); console.log('oncreate');
}); });
ondestroy(() => { onDestroy(() => {
console.log('ondestroy'); console.log('onDestroy');
}); });
function foo() { function foo() {

@ -1,10 +1,10 @@
<script> <script>
import { onmount } from 'svelte'; import { onMount } from 'svelte';
export let value; export let value;
let called = false; let called = false;
onmount(() => { onMount(() => {
called = true; called = true;
}); });
</script> </script>

@ -1,11 +1,11 @@
<script> <script>
import { onmount } from 'svelte'; import { onMount } from 'svelte';
import Two from './Two.html'; import Two from './Two.html';
export let snapshot; export let snapshot;
export let foo; export let foo;
onmount(() => { onMount(() => {
snapshot = foo; snapshot = foo;
}); });
</script> </script>

@ -1,5 +1,5 @@
<script> <script>
import { onmount } from 'svelte'; import { onMount } from 'svelte';
let id; let id;
@ -10,7 +10,7 @@
'id-3': 'three' 'id-3': 'three'
}; };
onmount(() => { onMount(() => {
value = initialValues[id]; value = initialValues[id];
}); });
</script> </script>

@ -1,5 +1,5 @@
<script> <script>
import { onmount } from 'svelte'; import { onMount } from 'svelte';
export let id; export let id;
@ -10,7 +10,7 @@
'id-3': 'three' 'id-3': 'three'
}; };
onmount(() => { onMount(() => {
value = initialValues[id]; value = initialValues[id];
}); });
</script> </script>

@ -1,5 +1,5 @@
<script> <script>
import { onprops } from 'svelte'; import { beforeRender } from 'svelte';
import Editor from './Editor.html'; import Editor from './Editor.html';
import ComponentSelector from './ComponentSelector.html'; import ComponentSelector from './ComponentSelector.html';
@ -10,7 +10,7 @@
let previouslySelectedComponent; let previouslySelectedComponent;
onprops(() => { beforeRender(() => {
components.forEach(component => { components.forEach(component => {
if (component === selectedComponent) return; if (component === selectedComponent) return;
component.compiled = component.source.toUpperCase(); component.compiled = component.source.toUpperCase();

@ -1,9 +1,9 @@
<script> <script>
import { onmount } from 'svelte'; import { onMount } from 'svelte';
export let isWidget; export let isWidget;
onmount(() => { onMount(() => {
isWidget = true; isWidget = true;
}); });
</script> </script>

@ -1,9 +1,9 @@
<script> <script>
import { onmount } from 'svelte'; import { onMount } from 'svelte';
export let isVisible; export let isVisible;
onmount(() => { onMount(() => {
isVisible = true; isVisible = true;
}); });
</script> </script>

@ -1,11 +1,11 @@
<script> <script>
import { onprops } from 'svelte'; import { beforeRender } from 'svelte';
import Nested from './Nested.html'; import Nested from './Nested.html';
export let snapshots; export let snapshots;
export let visibleThings = []; export let visibleThings = [];
onprops(() => { beforeRender(() => {
if (!snapshots) { if (!snapshots) {
// first run // first run
snapshots = []; snapshots = [];

@ -1,13 +1,13 @@
<script> <script>
import { ondestroy, onmount } from 'svelte'; import { onDestroy, onMount } from 'svelte';
export let events; export let events;
onmount(() => { onMount(() => {
events = ['create']; events = ['create'];
}); });
ondestroy(() => { onDestroy(() => {
events.push('destroy'); events.push('destroy');
}); });
</script> </script>

@ -1,12 +1,12 @@
<script> <script>
import { onupdate } from 'svelte'; import { afterRender } from 'svelte';
export let a; export let a;
export let b; export let b;
export let value; export let value;
onupdate(() => { afterRender(() => {
b.textContent = a.textContent; b.textContent = a.textContent;
}); });
</script> </script>

@ -1,7 +1,7 @@
<script> <script>
import { onmount } from 'svelte'; import { onMount } from 'svelte';
onmount(async () => { onMount(async () => {
await 123 await 123
}); });
</script> </script>

@ -1,5 +1,5 @@
<script> <script>
import { onmount } from 'svelte'; import { onMount } from 'svelte';
onmount(async () => await 123); onMount(async () => await 123);
</script> </script>

@ -1,7 +1,7 @@
<script> <script>
import { onmount } from 'svelte'; import { onMount } from 'svelte';
onmount(async () => { onMount(async () => {
await 123 await 123
}); });
</script> </script>

@ -1,11 +1,11 @@
<script> <script>
import { onmount } from 'svelte'; import { onMount } from 'svelte';
import result from './result.js'; import result from './result.js';
export let name; export let name;
onmount(() => { onMount(() => {
result.push(`oncreate ${name}`); result.push(`oncreate ${name}`);
}); });
</script> </script>

@ -1,10 +1,10 @@
<script> <script>
import { ondestroy } from 'svelte'; import { onDestroy } from 'svelte';
export let element; export let element;
export let refOnDestroy; export let refOnDestroy;
ondestroy(() => { onDestroy(() => {
refOnDestroy = element; refOnDestroy = element;
}); });
</script> </script>

@ -1,10 +1,10 @@
<script> <script>
import { onprops } from 'svelte'; import { beforeRender } from 'svelte';
export let item; export let item;
export let foo = 'XX'; export let foo = 'XX';
onprops(() => { beforeRender(() => {
foo = item; foo = item;
}); });
</script> </script>

@ -1,11 +1,11 @@
<script> <script>
import { onmount } from 'svelte'; import { onMount } from 'svelte';
export let x; export let x;
export let inDocument; export let inDocument;
onmount(() => { onMount(() => {
inDocument = document.contains(x); inDocument = document.contains(x);
}); });
</script> </script>

@ -1,11 +1,11 @@
<script> <script>
import { onmount } from 'svelte'; import { onMount } from 'svelte';
export let x; export let x;
export let inDocument; export let inDocument;
onmount(() => { onMount(() => {
inDocument = document.contains(x); inDocument = document.contains(x);
}); });
</script> </script>

@ -1,20 +1,20 @@
<script> <script>
import { onmount, onprops, onupdate } from 'svelte'; import { onMount, beforeRender, afterRender } from 'svelte';
export let onstateRanBeforeOncreate; export let onstateRanBeforeOncreate;
export let onupdateRanBeforeOncreate; export let onupdateRanBeforeOncreate;
let onpropsRan; let onpropsRan;
let onupdateRan; let onupdateRan;
onprops(() => { beforeRender(() => {
onstateRan = true; onstateRan = true;
}); });
onupdate(() => { afterRender(() => {
onupdateRan = true; onupdateRan = true;
}); });
onmount(() => { onMount(() => {
onpropsRanBeforeOncreate = onpropsRan; onpropsRanBeforeOncreate = onpropsRan;
onupdateRanBeforeOncreate = onupdateRan; onupdateRanBeforeOncreate = onupdateRan;
}); });

@ -5,10 +5,10 @@ export default {
test(assert, component, target) { test(assert, component, target) {
assert.deepEqual(order, [ assert.deepEqual(order, [
'onprops', 'beforeRender',
'render', 'render',
'oncreate', 'oncreate',
'onupdate' 'afterRender'
]); ]);
order.length = 0; order.length = 0;

@ -1,5 +1,5 @@
<script> <script>
import { onmount, onprops, onupdate } from 'svelte'; import { onMount, beforeRender, afterRender } from 'svelte';
import order from './order.js'; import order from './order.js';
@ -8,15 +8,15 @@
return x; return x;
} }
onprops(() => { beforeRender(() => {
order.push('onprops'); order.push('beforeRender');
}); });
onupdate(() => { afterRender(() => {
order.push('onupdate'); order.push('afterRender');
}); });
onmount(() => { onMount(() => {
order.push('oncreate'); order.push('oncreate');
}); });
</script> </script>

@ -1,10 +1,10 @@
<script> <script>
import { onprops } from 'svelte'; import { beforeRender } from 'svelte';
export let foo; export let foo;
export let bar; export let bar;
onprops(() => { beforeRender(() => {
bar = foo.toUpperCase(); bar = foo.toUpperCase();
}); });
</script> </script>

@ -1,12 +1,12 @@
<script> <script>
import { onupdate } from 'svelte'; import { afterRender } from 'svelte';
export let a; export let a;
export let b; export let b;
export let value; export let value;
onupdate(() => { afterRender(() => {
b.textContent = a.textContent; b.textContent = a.textContent;
}); });
</script> </script>

@ -1,9 +1,9 @@
<script> <script>
import { onmount } from 'svelte'; import { onMount } from 'svelte';
export let text; export let text;
onmount(() => { onMount(() => {
text = this.options.text; text = this.options.text;
}); });
</script> </script>

@ -1,9 +1,9 @@
<script> <script>
import { onmount } from 'svelte'; import { onMount } from 'svelte';
export let foo = 1; export let foo = 1;
onmount(() => { onMount(() => {
foo = 2; foo = 2;
}); });
</script> </script>

@ -1,26 +0,0 @@
export default {
'skip-ssr': true,
props: {
foo: 1
},
test(assert, component) {
const values = [];
let valueOnDestroy;
component.$on('destroy', () => {
component.foo = 2;
valueOnDestroy = component.foo;
});
component.$on('state', ({ current }) => {
values.push(current.foo);
});
component.$destroy();
assert.deepEqual(values, [2]);
assert.equal(valueOnDestroy, 2);
}
};

@ -1,10 +1,10 @@
<script> <script>
import { onprops } from 'svelte'; import { beforeRender } from 'svelte';
export let foo; export let foo;
export let bar; export let bar;
onprops(() => { beforeRender(() => {
if (foo.x !== bar.x) { if (foo.x !== bar.x) {
throw new Error('mismatch'); throw new Error('mismatch');
} }

@ -1,12 +1,12 @@
<script> <script>
import { onprops } from 'svelte'; import { beforeRender } from 'svelte';
import Widget from './Widget.html'; import Widget from './Widget.html';
export let foo = { x: 1 }; export let foo = { x: 1 };
export let bar = { x: 1 }; export let bar = { x: 1 };
onprops(() => { beforeRender(() => {
bar = foo; bar = foo;
}); });
</script> </script>

@ -6,11 +6,11 @@ export default {
<p>2</p> <p>2</p>
`, `,
test ( assert, component, target ) { test(assert, component, target) {
component.foo = 2; component.foo = 2;
assert.htmlEqual( target.innerHTML, ` assert.htmlEqual(target.innerHTML, `
<p>2</p> <p>2</p>
<p>4</p> <p>4</p>
` ); `);
} }
}; };

@ -1,10 +1,10 @@
<script> <script>
import { onprops } from 'svelte'; import { beforeRender } from 'svelte';
export let foo = 1; export let foo = 1;
export let bar; export let bar;
onprops(() => { beforeRender(() => {
bar = foo * 2; bar = foo * 2;
}); });
</script> </script>

@ -1,10 +1,10 @@
<script> <script>
import { onmount } from 'svelte'; import { onMount } from 'svelte';
export let foo = 1; export let foo = 1;
export let bar; export let bar;
onmount(() => { onMount(() => {
foo = undefined; foo = undefined;
}); });
</script> </script>

@ -2,7 +2,7 @@
Perhaps add on:introend etc on the elements? --> Perhaps add on:introend etc on the elements? -->
<script> <script>
import { onmount } from 'svelte'; import { onMount } from 'svelte';
// [svelte-upgrade suggestion] // [svelte-upgrade suggestion]
// manually refactor all references to __this // manually refactor all references to __this
@ -20,7 +20,7 @@
}; };
} }
onmount(() => { onMount(() => {
__this.intros = []; __this.intros = [];
__this.outros = []; __this.outros = [];
__this.introCount = 0; __this.introCount = 0;

@ -17,12 +17,12 @@ require.extensions['.js'] = function(module, filename) {
exports.push(name); exports.push(name);
return `${type} ${name}`; return `${type} ${name}`;
}) })
.replace(/^export \{([^}]+)\}/gm, (match, names) => { .replace(/^export \{([^}]+)\}(?: from ['"]([^'"]+)['"];?)?/gm, (match, names, source) => {
names.split(',').filter(Boolean).forEach(name => { names.split(',').filter(Boolean).forEach(name => {
exports.push(name); exports.push(name);
}); });
return ''; return source ? `const { ${names} } = require("${source}");` : '';
}) })
.replace(/^export function (\w+)/gm, 'exports.$1 = function $1'); .replace(/^export function (\w+)/gm, 'exports.$1 = function $1');

@ -1,7 +1,7 @@
<script> <script>
import { onmount } from 'svelte'; import { onMount } from 'svelte';
onmount(() => { onMount(() => {
console.log(42); console.log(42);
}); });
</script> </script>

@ -2,9 +2,9 @@ export default {
test(assert, stats) { test(assert, stats) {
assert.deepEqual(stats.hooks, { assert.deepEqual(stats.hooks, {
oncreate: true, oncreate: true,
ondestroy: false, onDestroy: false,
onstate: false, onstate: false,
onupdate: false afterRender: false
}); });
} }
}; };

@ -1,7 +1,7 @@
<script> <script>
import { onmount } from 'svelte'; import { onMount } from 'svelte';
onmount(() => { onMount(() => {
console.log('creating'); console.log('creating');
}); });
</script> </script>

@ -1,5 +1,5 @@
<script> <script>
import { onmount } from 'svelte'; import { onMount } from 'svelte';
onmount(() => console.log( 'rendering' )); onMount(() => console.log( 'rendering' ));
</script> </script>

@ -1,5 +1,5 @@
<script> <script>
import { ondestroy } from 'svelte'; import { onDestroy } from 'svelte';
ondestroy(() => console.log( 'tearing down' )); onDestroy(() => console.log( 'tearing down' ));
</script> </script>

@ -1,6 +1,6 @@
[{ [{
"code": "invalid-ondestroy-property", "code": "invalid-onDestroy-property",
"message": "'ondestroy' should be a function expression, not an arrow function expression", "message": "'onDestroy' should be a function expression, not an arrow function expression",
"pos": 29, "pos": 29,
"start": { "start": {
"line": 3, "line": 3,

@ -1,6 +1,6 @@
<script> <script>
export default { export default {
ondestroy: () => { onDestroy: () => {
this.set({ a: 1 }); this.set({ a: 1 });
} }
}; };

@ -1,5 +1,5 @@
<script> <script>
import { onprops } from 'svelte'; import { beforeRender } from 'svelte';
onprops(() => console.log('updating')); beforeRender(() => console.log('updating'));
</script> </script>

@ -1,5 +1,5 @@
<script> <script>
import { onupdate } from 'svelte'; import { afterRender } from 'svelte';
onupdate(() => console.log('updating')); afterRender(() => console.log('updating'));
</script> </script>

@ -1,6 +1,6 @@
[{ [{
"code": "invalid-onupdate-property", "code": "invalid-afterRender-property",
"message": "'onupdate' should be a function expression, not an arrow function expression", "message": "'afterRender' should be a function expression, not an arrow function expression",
"pos": 29, "pos": 29,
"start": { "start": {
"line": 3, "line": 3,

@ -1,6 +1,6 @@
<script> <script>
export default { export default {
onupdate: () => { afterRender: () => {
this.set({ a: 1 }); this.set({ a: 1 });
} }
}; };

Loading…
Cancel
Save