@b9g/crank 0.7.6 → 0.7.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -9
- package/_css.cjs.map +1 -1
- package/_css.d.ts +21 -0
- package/_css.js.map +1 -1
- package/_svg.cjs.map +1 -1
- package/_svg.d.ts +1 -0
- package/_svg.js.map +1 -1
- package/_utils.cjs +21 -0
- package/_utils.cjs.map +1 -1
- package/_utils.d.ts +17 -0
- package/_utils.js +19 -1
- package/_utils.js.map +1 -1
- package/async.cjs.map +1 -1
- package/async.d.ts +107 -0
- package/async.js.map +1 -1
- package/crank.cjs +31 -2
- package/crank.cjs.map +1 -1
- package/crank.d.ts +733 -0
- package/crank.js +32 -3
- package/crank.js.map +1 -1
- package/dom.cjs.map +1 -1
- package/dom.d.ts +14 -0
- package/dom.js.map +1 -1
- package/event-target.cjs.map +1 -1
- package/event-target.d.ts +26 -0
- package/event-target.js.map +1 -1
- package/html.cjs.map +1 -1
- package/html.d.ts +24 -0
- package/html.js.map +1 -1
- package/jsx-runtime.cjs.map +1 -1
- package/jsx-runtime.d.ts +6 -0
- package/jsx-runtime.js.map +1 -1
- package/jsx-tag.cjs.map +1 -1
- package/jsx-tag.d.ts +45 -0
- package/jsx-tag.js.map +1 -1
- package/package.json +1 -1
- package/standalone.d.ts +4 -0
- package/umd.d.ts +3 -0
- package/umd.js +49 -2
- package/umd.js.map +1 -1
package/crank.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="crank.d.ts" />
|
|
2
2
|
import { removeEventTargetDelegates, addEventTargetDelegates, clearEventListeners, CustomEventTarget } from './event-target.js';
|
|
3
|
-
import { isPromiseLike, unwrap, wrap, arrayify, safeRace, isIteratorLike } from './_utils.js';
|
|
3
|
+
import { markStart, isPromiseLike, measureMark, unwrap, wrap, arrayify, safeRace, isIteratorLike } from './_utils.js';
|
|
4
4
|
|
|
5
5
|
const NOOP = () => { };
|
|
6
6
|
function getTagName(tag) {
|
|
@@ -425,11 +425,16 @@ function getRootRetainer(renderer, bridge, { children, root, hydrate, }) {
|
|
|
425
425
|
return ret;
|
|
426
426
|
}
|
|
427
427
|
function renderRoot(adapter, root, ret, children) {
|
|
428
|
+
const commitLabel = "commit (" + getTagName(ret.el.tag) + ")";
|
|
429
|
+
markStart("diff");
|
|
428
430
|
const diff = diffChildren(adapter, root, ret, ret.ctx, ret.scope, ret, children);
|
|
429
431
|
const schedulePromises = [];
|
|
430
432
|
if (isPromiseLike(diff)) {
|
|
431
433
|
return diff.then(() => {
|
|
434
|
+
measureMark("diff");
|
|
435
|
+
markStart(commitLabel);
|
|
432
436
|
commit(adapter, ret, ret, ret.ctx, ret.scope, root, 0, schedulePromises, undefined);
|
|
437
|
+
measureMark(commitLabel);
|
|
433
438
|
if (schedulePromises.length > 0) {
|
|
434
439
|
return Promise.all(schedulePromises).then(() => {
|
|
435
440
|
if (typeof root !== "object" || root === null) {
|
|
@@ -444,7 +449,10 @@ function renderRoot(adapter, root, ret, children) {
|
|
|
444
449
|
return adapter.read(unwrap(getChildValues(ret)));
|
|
445
450
|
});
|
|
446
451
|
}
|
|
452
|
+
measureMark("diff");
|
|
453
|
+
markStart(commitLabel);
|
|
447
454
|
commit(adapter, ret, ret, ret.ctx, ret.scope, root, 0, schedulePromises, undefined);
|
|
455
|
+
measureMark(commitLabel);
|
|
448
456
|
if (schedulePromises.length > 0) {
|
|
449
457
|
return Promise.all(schedulePromises).then(() => {
|
|
450
458
|
if (typeof root !== "object" || root === null) {
|
|
@@ -1546,6 +1554,7 @@ class Context extends CustomEventTarget {
|
|
|
1546
1554
|
if (getFlag(ctx.ret, IsScheduling)) {
|
|
1547
1555
|
setFlag(ctx.ret, IsSchedulingRefresh);
|
|
1548
1556
|
}
|
|
1557
|
+
const commitLabel = "commit (" + getTagName(ctx.ret.el.tag) + ")";
|
|
1549
1558
|
let diff;
|
|
1550
1559
|
const schedulePromises = [];
|
|
1551
1560
|
try {
|
|
@@ -1553,7 +1562,12 @@ class Context extends CustomEventTarget {
|
|
|
1553
1562
|
diff = enqueueComponent(ctx);
|
|
1554
1563
|
if (isPromiseLike(diff)) {
|
|
1555
1564
|
return diff
|
|
1556
|
-
.then(() =>
|
|
1565
|
+
.then(() => {
|
|
1566
|
+
markStart(commitLabel);
|
|
1567
|
+
const value = commitComponent(ctx, schedulePromises);
|
|
1568
|
+
measureMark(commitLabel);
|
|
1569
|
+
return ctx.adapter.read(value);
|
|
1570
|
+
})
|
|
1557
1571
|
.then((result) => {
|
|
1558
1572
|
if (schedulePromises.length) {
|
|
1559
1573
|
return Promise.all(schedulePromises).then(() => {
|
|
@@ -1583,7 +1597,9 @@ class Context extends CustomEventTarget {
|
|
|
1583
1597
|
})
|
|
1584
1598
|
.finally(() => setFlag(ctx.ret, IsRefreshing, false));
|
|
1585
1599
|
}
|
|
1600
|
+
markStart(commitLabel);
|
|
1586
1601
|
const result = ctx.adapter.read(commitComponent(ctx, schedulePromises));
|
|
1602
|
+
measureMark(commitLabel);
|
|
1587
1603
|
if (schedulePromises.length) {
|
|
1588
1604
|
return Promise.all(schedulePromises).then(() => {
|
|
1589
1605
|
return ctx.adapter.read(getValue(ctx.ret));
|
|
@@ -1813,11 +1829,13 @@ function runComponent(ctx) {
|
|
|
1813
1829
|
}
|
|
1814
1830
|
const ret = ctx.ret;
|
|
1815
1831
|
const initial = !ctx.iterator;
|
|
1832
|
+
const tagName = getTagName(ret.el.tag);
|
|
1816
1833
|
if (initial) {
|
|
1817
1834
|
setFlag(ctx.ret, IsExecuting);
|
|
1818
1835
|
clearEventListeners(ctx.ctx);
|
|
1819
1836
|
let returned;
|
|
1820
1837
|
try {
|
|
1838
|
+
markStart(tagName);
|
|
1821
1839
|
returned = ret.el.tag.call(ctx.ctx, ret.el.props, ctx.ctx);
|
|
1822
1840
|
}
|
|
1823
1841
|
catch (err) {
|
|
@@ -1832,6 +1850,7 @@ function runComponent(ctx) {
|
|
|
1832
1850
|
}
|
|
1833
1851
|
else if (!isPromiseLike(returned)) {
|
|
1834
1852
|
// sync function component
|
|
1853
|
+
measureMark(tagName);
|
|
1835
1854
|
return [
|
|
1836
1855
|
undefined,
|
|
1837
1856
|
diffComponentChildren(ctx, returned, false),
|
|
@@ -1840,6 +1859,7 @@ function runComponent(ctx) {
|
|
|
1840
1859
|
else {
|
|
1841
1860
|
// async function component
|
|
1842
1861
|
const returned1 = returned instanceof Promise ? returned : Promise.resolve(returned);
|
|
1862
|
+
returned1.then(() => measureMark(tagName), () => measureMark(tagName));
|
|
1843
1863
|
return [
|
|
1844
1864
|
returned1.catch(NOOP),
|
|
1845
1865
|
returned1.then((returned) => diffComponentChildren(ctx, returned, false), (err) => {
|
|
@@ -1853,6 +1873,7 @@ function runComponent(ctx) {
|
|
|
1853
1873
|
if (initial) {
|
|
1854
1874
|
try {
|
|
1855
1875
|
setFlag(ctx.ret, IsExecuting);
|
|
1876
|
+
markStart(tagName);
|
|
1856
1877
|
iteration = ctx.iterator.next();
|
|
1857
1878
|
}
|
|
1858
1879
|
catch (err) {
|
|
@@ -1875,7 +1896,9 @@ function runComponent(ctx) {
|
|
|
1875
1896
|
try {
|
|
1876
1897
|
setFlag(ctx.ret, IsExecuting);
|
|
1877
1898
|
const oldResult = ctx.adapter.read(getValue(ctx.ret));
|
|
1899
|
+
markStart(tagName);
|
|
1878
1900
|
iteration = ctx.iterator.next(oldResult);
|
|
1901
|
+
measureMark(tagName);
|
|
1879
1902
|
}
|
|
1880
1903
|
catch (err) {
|
|
1881
1904
|
setFlag(ctx.ret, IsErrored);
|
|
@@ -1885,6 +1908,9 @@ function runComponent(ctx) {
|
|
|
1885
1908
|
setFlag(ctx.ret, IsExecuting, false);
|
|
1886
1909
|
}
|
|
1887
1910
|
}
|
|
1911
|
+
else {
|
|
1912
|
+
measureMark(tagName);
|
|
1913
|
+
}
|
|
1888
1914
|
if (isPromiseLike(iteration)) {
|
|
1889
1915
|
throw new Error("Mixed generator component");
|
|
1890
1916
|
}
|
|
@@ -1907,6 +1933,7 @@ function runComponent(ctx) {
|
|
|
1907
1933
|
else {
|
|
1908
1934
|
if (getFlag(ctx.ret, IsInForAwaitOfLoop)) {
|
|
1909
1935
|
// initializes the async generator loop
|
|
1936
|
+
measureMark(tagName);
|
|
1910
1937
|
pullComponent(ctx, iteration);
|
|
1911
1938
|
const block = resumePropsAsyncIterator(ctx);
|
|
1912
1939
|
return [block, ctx.pull && ctx.pull.diff];
|
|
@@ -1919,6 +1946,7 @@ function runComponent(ctx) {
|
|
|
1919
1946
|
try {
|
|
1920
1947
|
setFlag(ctx.ret, IsExecuting);
|
|
1921
1948
|
const oldResult = ctx.adapter.read(getValue(ctx.ret));
|
|
1949
|
+
markStart(tagName);
|
|
1922
1950
|
iteration = ctx.iterator.next(oldResult);
|
|
1923
1951
|
}
|
|
1924
1952
|
catch (err) {
|
|
@@ -1932,6 +1960,7 @@ function runComponent(ctx) {
|
|
|
1932
1960
|
if (!isPromiseLike(iteration)) {
|
|
1933
1961
|
throw new Error("Mixed generator component");
|
|
1934
1962
|
}
|
|
1963
|
+
iteration.then(() => measureMark(tagName), () => measureMark(tagName));
|
|
1935
1964
|
const diff = iteration.then((iteration) => {
|
|
1936
1965
|
if (getFlag(ctx.ret, IsInForAwaitOfLoop)) {
|
|
1937
1966
|
// We have entered a for await...of loop, so we start pulling
|
|
@@ -2326,7 +2355,7 @@ async function unmountComponent(ctx, isNested) {
|
|
|
2326
2355
|
}
|
|
2327
2356
|
}
|
|
2328
2357
|
let didLinger = false;
|
|
2329
|
-
if (!isNested && cleanupPromises
|
|
2358
|
+
if (!isNested && cleanupPromises) {
|
|
2330
2359
|
didLinger = true;
|
|
2331
2360
|
const index = ctx.index;
|
|
2332
2361
|
const lingerers = ctx.host.lingerers || (ctx.host.lingerers = []);
|