diff --git a/package-lock.json b/package-lock.json index 9fb00c496..443a0f50d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9506,7 +9506,7 @@ "dependencies": { "abbrev": { "version": "1.1.1", - "resolved": false, + "resolved": "", "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true, "optional": true @@ -9520,14 +9520,14 @@ }, "aproba": { "version": "1.2.0", - "resolved": false, + "resolved": "", "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true, "optional": true }, "are-we-there-yet": { "version": "1.1.5", - "resolved": false, + "resolved": "", "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", "dev": true, "optional": true, @@ -9538,14 +9538,14 @@ }, "balanced-match": { "version": "1.0.0", - "resolved": false, + "resolved": "", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true, "optional": true }, "brace-expansion": { "version": "1.1.11", - "resolved": false, + "resolved": "", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "optional": true, @@ -9556,7 +9556,7 @@ }, "chownr": { "version": "1.1.1", - "resolved": false, + "resolved": "", "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", "dev": true, "optional": true @@ -9591,7 +9591,7 @@ }, "debug": { "version": "2.6.9", - "resolved": false, + "resolved": "", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "optional": true, @@ -9601,7 +9601,7 @@ }, "deep-extend": { "version": "0.6.0", - "resolved": false, + "resolved": "", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true, "optional": true @@ -9615,14 +9615,14 @@ }, "detect-libc": { "version": "1.0.3", - "resolved": false, + "resolved": "", "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", "dev": true, "optional": true }, "fs-minipass": { "version": "1.2.5", - "resolved": false, + "resolved": "", "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", "dev": true, "optional": true, @@ -9656,7 +9656,7 @@ }, "glob": { "version": "7.1.3", - "resolved": false, + "resolved": "", "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "dev": true, "optional": true, @@ -9678,7 +9678,7 @@ }, "iconv-lite": { "version": "0.4.24", - "resolved": false, + "resolved": "", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "optional": true, @@ -9688,7 +9688,7 @@ }, "ignore-walk": { "version": "3.0.1", - "resolved": false, + "resolved": "", "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", "dev": true, "optional": true, @@ -9716,7 +9716,7 @@ }, "ini": { "version": "1.3.5", - "resolved": false, + "resolved": "", "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "dev": true, "optional": true @@ -9757,7 +9757,7 @@ }, "minipass": { "version": "2.3.5", - "resolved": false, + "resolved": "", "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", "dev": true, "optional": true, @@ -9768,7 +9768,7 @@ }, "minizlib": { "version": "1.2.1", - "resolved": false, + "resolved": "", "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", "dev": true, "optional": true, @@ -9795,7 +9795,7 @@ }, "needle": { "version": "2.2.4", - "resolved": false, + "resolved": "", "integrity": "sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA==", "dev": true, "optional": true, @@ -9807,7 +9807,7 @@ }, "node-pre-gyp": { "version": "0.10.3", - "resolved": false, + "resolved": "", "integrity": "sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A==", "dev": true, "optional": true, @@ -9837,14 +9837,14 @@ }, "npm-bundled": { "version": "1.0.5", - "resolved": false, + "resolved": "", "integrity": "sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g==", "dev": true, "optional": true }, "npm-packlist": { "version": "1.2.0", - "resolved": false, + "resolved": "", "integrity": "sha512-7Mni4Z8Xkx0/oegoqlcao/JpPCPEMtUvsmB0q7mgvlMinykJLSRTYuFqoQLYgGY8biuxIeiHO+QNJKbCfljewQ==", "dev": true, "optional": true, @@ -9855,7 +9855,7 @@ }, "npmlog": { "version": "4.1.2", - "resolved": false, + "resolved": "", "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "dev": true, "optional": true, @@ -9906,7 +9906,7 @@ }, "osenv": { "version": "0.1.5", - "resolved": false, + "resolved": "", "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "dev": true, "optional": true, @@ -9924,14 +9924,14 @@ }, "process-nextick-args": { "version": "2.0.0", - "resolved": false, + "resolved": "", "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", "dev": true, "optional": true }, "rc": { "version": "1.2.8", - "resolved": false, + "resolved": "", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, "optional": true, @@ -9953,7 +9953,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": false, + "resolved": "", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "optional": true, @@ -9969,7 +9969,7 @@ }, "rimraf": { "version": "2.6.3", - "resolved": false, + "resolved": "", "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "dev": true, "optional": true, @@ -9979,28 +9979,28 @@ }, "safe-buffer": { "version": "5.1.2", - "resolved": false, + "resolved": "", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true, "optional": true }, "safer-buffer": { "version": "2.1.2", - "resolved": false, + "resolved": "", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true, "optional": true }, "sax": { "version": "1.2.4", - "resolved": false, + "resolved": "", "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true, "optional": true }, "semver": { "version": "5.6.0", - "resolved": false, + "resolved": "", "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", "dev": true, "optional": true @@ -10033,7 +10033,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": false, + "resolved": "", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "optional": true, @@ -10060,7 +10060,7 @@ }, "tar": { "version": "4.4.8", - "resolved": false, + "resolved": "", "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==", "dev": true, "optional": true, @@ -10083,7 +10083,7 @@ }, "wide-align": { "version": "1.1.3", - "resolved": false, + "resolved": "", "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", "dev": true, "optional": true, @@ -10100,7 +10100,7 @@ }, "yallist": { "version": "3.0.3", - "resolved": false, + "resolved": "", "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", "dev": true, "optional": true diff --git a/preact.config.js b/preact.config.js index 3e8e46a10..37c49076f 100644 --- a/preact.config.js +++ b/preact.config.js @@ -19,6 +19,16 @@ export default function (config, env, helpers) { 'promise-polyfill$': resolve(__dirname, 'src/promise-polyfill.js') }); + config.module.rules.forEach(loader => { + if (/async-loader/.test(loader.loader)) { + console.log('found async-loader'); + } + if (/@preact\/async-loader/.test(loader.loader)) { + console.log('found and replaced @preact/async-loader'); + loader.loader = resolve(__dirname, 'temp/async-loader.js'); + } + }); + // Use our custom polyfill entry if (!config.entry['ssr-bundle']) { config.entry.polyfills = resolve(__dirname, 'src/polyfills.js'); diff --git a/size-plugin-browser.json b/size-plugin-browser.json index f484de10e..4c54b4386 100644 --- a/size-plugin-browser.json +++ b/size-plugin-browser.json @@ -1,151 +1 @@ -[ - { - "timestamp": 1579731985547, - "files": [ - { - "filename": "sw-esm.js", - "previous": 859, - "size": 859, - "diff": 0 - }, - { - "filename": "sw.js", - "previous": 856, - "size": 856, - "diff": 0 - }, - { - "filename": "prism.47b12.worker.js", - "previous": 7324, - "size": 7324, - "diff": 0 - }, - { - "filename": "markdown.c7df8.worker.js", - "previous": 10004, - "size": 10004, - "diff": 0 - }, - { - "filename": "repl.7dc8b.worker.js", - "previous": 71887, - "size": 71887, - "diff": 0 - }, - { - "filename": "editor.chunk.78d77.css", - "previous": 2164, - "size": 2164, - "diff": 0 - }, - { - "filename": "editor.chunk.67755.esm.js", - "previous": 66866, - "size": 66866, - "diff": 0 - }, - { - "filename": "emoji.chunk.400ac.esm.js", - "previous": 8856, - "size": 8856, - "diff": 0 - }, - { - "filename": "polyfills.c454e.esm.js", - "previous": 2136, - "size": 2136, - "diff": 0 - }, - { - "filename": "runner.chunk.fbe16.esm.js", - "previous": 5849, - "size": 5849, - "diff": 0 - }, - { - "filename": "5.chunk.65231.css", - "previous": 1467, - "size": 1467, - "diff": 0 - }, - { - "filename": "5.chunk.2e498.esm.js", - "previous": 3382, - "size": 3382, - "diff": 0 - }, - { - "filename": "markdown.f1c81.worker.js", - "previous": 10256, - "size": 10256, - "diff": 0 - }, - { - "filename": "repl.3c8bd.worker.js", - "previous": 73414, - "size": 73414, - "diff": 0 - }, - { - "filename": "editor.chunk.bd419.js", - "previous": 66910, - "size": 66910, - "diff": 0 - }, - { - "filename": "emoji.chunk.64d9d.js", - "previous": 8851, - "size": 8851, - "diff": 0 - }, - { - "filename": "polyfills.dc190.js", - "previous": 2134, - "size": 2134, - "diff": 0 - }, - { - "filename": "runner.chunk.0f446.js", - "previous": 5902, - "size": 5902, - "diff": 0 - }, - { - "filename": "5.chunk.7d278.js", - "previous": 3456, - "size": 3456, - "diff": 0 - }, - { - "filename": "bundle.447b7.css", - "previous": 9336, - "size": 9336, - "diff": 0 - }, - { - "filename": "bundle.cb61a.esm.js", - "previous": 23714, - "size": 0, - "diff": -23714 - }, - { - "filename": "bundle.e4956.js", - "previous": 24125, - "size": 0, - "diff": -24125 - }, - { - "filename": "bundle.d8904.esm.js", - "previous": 0, - "size": 23804, - "diff": 23804 - }, - { - "filename": "bundle.a5f4c.js", - "previous": 0, - "size": 24215, - "diff": 24215 - } - ] - } -] \ No newline at end of file +[{"timestamp":1580187974362,"files":[{"filename":"sw.js","previous":857,"size":857,"diff":0},{"filename":"prism.47b12.worker.js","previous":7324,"size":7324,"diff":0},{"filename":"markdown.f1c81.worker.js","previous":10256,"size":10256,"diff":0},{"filename":"repl.3c8bd.worker.js","previous":73414,"size":73414,"diff":0},{"filename":"bundle.a2b8d.css","previous":9375,"size":9375,"diff":0},{"filename":"editor.chunk.88db4.css","previous":2164,"size":2164,"diff":0},{"filename":"5.chunk.c0da1.css","previous":1467,"size":1467,"diff":0},{"filename":"bundle.*****.js","previous":24327,"size":24368,"diff":41},{"filename":"editor.chunk.*****.js","previous":66911,"size":66911,"diff":0},{"filename":"emoji.chunk.*****.js","previous":8851,"size":8851,"diff":0},{"filename":"polyfills.*****.js","previous":2134,"size":2134,"diff":0},{"filename":"runner.chunk.*****.js","previous":7993,"size":7993,"diff":0},{"filename":"5.chunk.*****.js","previous":3455,"size":3455,"diff":0}]},{"timestamp":1580187758869,"files":[{"filename":"sw.js","previous":857,"size":857,"diff":0},{"filename":"prism.47b12.worker.js","previous":7324,"size":7324,"diff":0},{"filename":"markdown.f1c81.worker.js","previous":10256,"size":10256,"diff":0},{"filename":"repl.3c8bd.worker.js","previous":73414,"size":73414,"diff":0},{"filename":"bundle.a2b8d.css","previous":9375,"size":9375,"diff":0},{"filename":"editor.chunk.88db4.css","previous":2164,"size":2164,"diff":0},{"filename":"5.chunk.c0da1.css","previous":1467,"size":1467,"diff":0},{"filename":"bundle.*****.js","previous":24404,"size":24327,"diff":-77},{"filename":"editor.chunk.*****.js","previous":66911,"size":66911,"diff":0},{"filename":"emoji.chunk.*****.js","previous":8851,"size":8851,"diff":0},{"filename":"polyfills.*****.js","previous":2134,"size":2134,"diff":0},{"filename":"runner.chunk.*****.js","previous":7993,"size":7993,"diff":0},{"filename":"5.chunk.*****.js","previous":3455,"size":3455,"diff":0}]},{"timestamp":1580187605533,"files":[{"filename":"sw.js","previous":857,"size":857,"diff":0},{"filename":"prism.47b12.worker.js","previous":7324,"size":7324,"diff":0},{"filename":"markdown.f1c81.worker.js","previous":10256,"size":10256,"diff":0},{"filename":"repl.3c8bd.worker.js","previous":73414,"size":73414,"diff":0},{"filename":"bundle.a2b8d.css","previous":9375,"size":9375,"diff":0},{"filename":"editor.chunk.88db4.css","previous":2164,"size":2164,"diff":0},{"filename":"5.chunk.c0da1.css","previous":1467,"size":1467,"diff":0},{"filename":"bundle.*****.js","previous":24406,"size":24404,"diff":-2},{"filename":"editor.chunk.*****.js","previous":66911,"size":66911,"diff":0},{"filename":"emoji.chunk.*****.js","previous":8851,"size":8851,"diff":0},{"filename":"polyfills.*****.js","previous":2134,"size":2134,"diff":0},{"filename":"runner.chunk.*****.js","previous":7993,"size":7993,"diff":0},{"filename":"5.chunk.*****.js","previous":3455,"size":3455,"diff":0}]},{"timestamp":1580186020315,"files":[{"filename":"sw.js","previous":857,"size":857,"diff":0},{"filename":"prism.47b12.worker.js","previous":7324,"size":7324,"diff":0},{"filename":"markdown.f1c81.worker.js","previous":10256,"size":10256,"diff":0},{"filename":"repl.3c8bd.worker.js","previous":73414,"size":73414,"diff":0},{"filename":"bundle.a2b8d.css","previous":9375,"size":9375,"diff":0},{"filename":"editor.chunk.88db4.css","previous":2164,"size":2164,"diff":0},{"filename":"5.chunk.c0da1.css","previous":1467,"size":1467,"diff":0},{"filename":"bundle.*****.js","previous":24713,"size":24406,"diff":-307},{"filename":"editor.chunk.*****.js","previous":66911,"size":66911,"diff":0},{"filename":"emoji.chunk.*****.js","previous":8851,"size":8851,"diff":0},{"filename":"polyfills.*****.js","previous":2134,"size":2134,"diff":0},{"filename":"runner.chunk.*****.js","previous":7993,"size":7993,"diff":0},{"filename":"5.chunk.*****.js","previous":3455,"size":3455,"diff":0}]},{"timestamp":1580184994889,"files":[{"filename":"sw.js","previous":857,"size":857,"diff":0},{"filename":"prism.47b12.worker.js","previous":7324,"size":7324,"diff":0},{"filename":"markdown.f1c81.worker.js","previous":10256,"size":10256,"diff":0},{"filename":"repl.3c8bd.worker.js","previous":73414,"size":73414,"diff":0},{"filename":"bundle.a2b8d.css","previous":9375,"size":9375,"diff":0},{"filename":"editor.chunk.88db4.css","previous":2164,"size":2164,"diff":0},{"filename":"5.chunk.c0da1.css","previous":1467,"size":1467,"diff":0},{"filename":"bundle.*****.js","previous":24706,"size":24713,"diff":7},{"filename":"editor.chunk.*****.js","previous":66911,"size":66911,"diff":0},{"filename":"emoji.chunk.*****.js","previous":8851,"size":8851,"diff":0},{"filename":"polyfills.*****.js","previous":2134,"size":2134,"diff":0},{"filename":"runner.chunk.*****.js","previous":7993,"size":7993,"diff":0},{"filename":"5.chunk.*****.js","previous":3455,"size":3455,"diff":0}]},{"timestamp":1580184886989,"files":[{"filename":"sw.js","previous":857,"size":857,"diff":0},{"filename":"prism.47b12.worker.js","previous":7324,"size":7324,"diff":0},{"filename":"markdown.f1c81.worker.js","previous":10256,"size":10256,"diff":0},{"filename":"repl.3c8bd.worker.js","previous":73414,"size":73414,"diff":0},{"filename":"bundle.a2b8d.css","previous":9375,"size":9375,"diff":0},{"filename":"editor.chunk.88db4.css","previous":2164,"size":2164,"diff":0},{"filename":"5.chunk.c0da1.css","previous":1467,"size":1467,"diff":0},{"filename":"bundle.*****.js","previous":24670,"size":24706,"diff":36},{"filename":"editor.chunk.*****.js","previous":66911,"size":66911,"diff":0},{"filename":"emoji.chunk.*****.js","previous":8851,"size":8851,"diff":0},{"filename":"polyfills.*****.js","previous":2134,"size":2134,"diff":0},{"filename":"runner.chunk.*****.js","previous":7993,"size":7993,"diff":0},{"filename":"5.chunk.*****.js","previous":3455,"size":3455,"diff":0}]},{"timestamp":1580183473830,"files":[{"filename":"sw-esm.js","previous":859,"size":0,"diff":-859},{"filename":"sw.js","previous":856,"size":857,"diff":1},{"filename":"prism.47b12.worker.js","previous":7324,"size":7324,"diff":0},{"filename":"markdown.c7df8.worker.js","previous":10004,"size":0,"diff":-10004},{"filename":"repl.7dc8b.worker.js","previous":71887,"size":0,"diff":-71887},{"filename":"emoji.chunk.400ac.esm.js","previous":8856,"size":0,"diff":-8856},{"filename":"polyfills.c454e.esm.js","previous":2136,"size":0,"diff":-2136},{"filename":"markdown.f1c81.worker.js","previous":10256,"size":10256,"diff":0},{"filename":"repl.3c8bd.worker.js","previous":73414,"size":73414,"diff":0},{"filename":"emoji.chunk.64d9d.js","previous":8851,"size":0,"diff":-8851},{"filename":"polyfills.dc190.js","previous":2134,"size":0,"diff":-2134},{"filename":"bundle.a2b8d.css","previous":9336,"size":9375,"diff":39},{"filename":"bundle.c9250.esm.js","previous":24207,"size":0,"diff":-24207},{"filename":"editor.chunk.88db4.css","previous":2164,"size":2164,"diff":0},{"filename":"editor.chunk.cdc7a.esm.js","previous":66865,"size":0,"diff":-66865},{"filename":"runner.chunk.e50e7.esm.js","previous":7926,"size":0,"diff":-7926},{"filename":"5.chunk.c0da1.css","previous":1467,"size":1467,"diff":0},{"filename":"5.chunk.bb36e.esm.js","previous":3384,"size":0,"diff":-3384},{"filename":"bundle.23e82.js","previous":24670,"size":0,"diff":-24670},{"filename":"editor.chunk.2508e.js","previous":66911,"size":0,"diff":-66911},{"filename":"runner.chunk.d488e.js","previous":7993,"size":0,"diff":-7993},{"filename":"5.chunk.209e0.js","previous":3455,"size":0,"diff":-3455},{"filename":"bundle.*****.js","previous":0,"size":24670,"diff":24670},{"filename":"editor.chunk.*****.js","previous":0,"size":66911,"diff":66911},{"filename":"emoji.chunk.*****.js","previous":0,"size":8851,"diff":8851},{"filename":"polyfills.*****.js","previous":0,"size":2134,"diff":2134},{"filename":"runner.chunk.*****.js","previous":0,"size":7993,"diff":7993},{"filename":"5.chunk.*****.js","previous":0,"size":3455,"diff":3455}]},{"timestamp":1580181214558,"files":[{"filename":"sw-esm.js","previous":859,"size":859,"diff":0},{"filename":"sw.js","previous":856,"size":856,"diff":0},{"filename":"prism.47b12.worker.js","previous":7324,"size":7324,"diff":0},{"filename":"markdown.c7df8.worker.js","previous":10004,"size":10004,"diff":0},{"filename":"repl.7dc8b.worker.js","previous":71887,"size":71887,"diff":0},{"filename":"editor.chunk.78d77.css","previous":2164,"size":0,"diff":-2164},{"filename":"editor.chunk.67755.esm.js","previous":66866,"size":0,"diff":-66866},{"filename":"emoji.chunk.400ac.esm.js","previous":8856,"size":8856,"diff":0},{"filename":"polyfills.c454e.esm.js","previous":2136,"size":2136,"diff":0},{"filename":"runner.chunk.fbe16.esm.js","previous":5849,"size":0,"diff":-5849},{"filename":"5.chunk.65231.css","previous":1467,"size":0,"diff":-1467},{"filename":"5.chunk.2e498.esm.js","previous":3382,"size":0,"diff":-3382},{"filename":"markdown.f1c81.worker.js","previous":10256,"size":10256,"diff":0},{"filename":"repl.3c8bd.worker.js","previous":73414,"size":73414,"diff":0},{"filename":"editor.chunk.bd419.js","previous":66910,"size":0,"diff":-66910},{"filename":"emoji.chunk.64d9d.js","previous":8851,"size":8851,"diff":0},{"filename":"polyfills.dc190.js","previous":2134,"size":2134,"diff":0},{"filename":"runner.chunk.0f446.js","previous":5902,"size":0,"diff":-5902},{"filename":"5.chunk.7d278.js","previous":3456,"size":0,"diff":-3456},{"filename":"bundle.447b7.css","previous":9336,"size":0,"diff":-9336},{"filename":"bundle.d8904.esm.js","previous":23804,"size":0,"diff":-23804},{"filename":"bundle.a5f4c.js","previous":24215,"size":0,"diff":-24215},{"filename":"bundle.a2b8d.css","previous":0,"size":9336,"diff":9336},{"filename":"bundle.c9250.esm.js","previous":0,"size":24207,"diff":24207},{"filename":"editor.chunk.88db4.css","previous":0,"size":2164,"diff":2164},{"filename":"editor.chunk.cdc7a.esm.js","previous":0,"size":66865,"diff":66865},{"filename":"runner.chunk.e50e7.esm.js","previous":0,"size":7926,"diff":7926},{"filename":"5.chunk.c0da1.css","previous":0,"size":1467,"diff":1467},{"filename":"5.chunk.bb36e.esm.js","previous":0,"size":3384,"diff":3384},{"filename":"bundle.23e82.js","previous":0,"size":24670,"diff":24670},{"filename":"editor.chunk.2508e.js","previous":0,"size":66911,"diff":66911},{"filename":"runner.chunk.d488e.js","previous":0,"size":7993,"diff":7993},{"filename":"5.chunk.209e0.js","previous":0,"size":3455,"diff":3455}]},{"timestamp":1579731985547,"files":[{"filename":"sw-esm.js","previous":859,"size":859,"diff":0},{"filename":"sw.js","previous":856,"size":856,"diff":0},{"filename":"prism.47b12.worker.js","previous":7324,"size":7324,"diff":0},{"filename":"markdown.c7df8.worker.js","previous":10004,"size":10004,"diff":0},{"filename":"repl.7dc8b.worker.js","previous":71887,"size":71887,"diff":0},{"filename":"editor.chunk.78d77.css","previous":2164,"size":2164,"diff":0},{"filename":"editor.chunk.67755.esm.js","previous":66866,"size":66866,"diff":0},{"filename":"emoji.chunk.400ac.esm.js","previous":8856,"size":8856,"diff":0},{"filename":"polyfills.c454e.esm.js","previous":2136,"size":2136,"diff":0},{"filename":"runner.chunk.fbe16.esm.js","previous":5849,"size":5849,"diff":0},{"filename":"5.chunk.65231.css","previous":1467,"size":1467,"diff":0},{"filename":"5.chunk.2e498.esm.js","previous":3382,"size":3382,"diff":0},{"filename":"markdown.f1c81.worker.js","previous":10256,"size":10256,"diff":0},{"filename":"repl.3c8bd.worker.js","previous":73414,"size":73414,"diff":0},{"filename":"editor.chunk.bd419.js","previous":66910,"size":66910,"diff":0},{"filename":"emoji.chunk.64d9d.js","previous":8851,"size":8851,"diff":0},{"filename":"polyfills.dc190.js","previous":2134,"size":2134,"diff":0},{"filename":"runner.chunk.0f446.js","previous":5902,"size":5902,"diff":0},{"filename":"5.chunk.7d278.js","previous":3456,"size":3456,"diff":0},{"filename":"bundle.447b7.css","previous":9336,"size":9336,"diff":0},{"filename":"bundle.cb61a.esm.js","previous":23714,"size":0,"diff":-23714},{"filename":"bundle.e4956.js","previous":24125,"size":0,"diff":-24125},{"filename":"bundle.d8904.esm.js","previous":0,"size":23804,"diff":23804},{"filename":"bundle.a5f4c.js","previous":0,"size":24215,"diff":24215}]}] diff --git a/size-plugin-ssr.json b/size-plugin-ssr.json index 3a5a9eee8..47074a031 100644 --- a/size-plugin-ssr.json +++ b/size-plugin-ssr.json @@ -1,61 +1 @@ -[ - { - "timestamp": 1579731907448, - "files": [ - { - "filename": "editor.chunk.*****.js", - "previous": 66430, - "size": 66430, - "diff": 0 - }, - { - "filename": "emoji.chunk.*****.js", - "previous": 8834, - "size": 8834, - "diff": 0 - }, - { - "filename": "runner.chunk.*****.js", - "previous": 5931, - "size": 5931, - "diff": 0 - }, - { - "filename": "ssr-bundle.js", - "previous": 28159, - "size": 28237, - "diff": 78 - }, - { - "filename": "markdown.c9960.worker.js", - "previous": 10199, - "size": 10199, - "diff": 0 - }, - { - "filename": "prism.05c92.worker.js", - "previous": 7246, - "size": 7246, - "diff": 0 - }, - { - "filename": "repl.eadff.worker.js", - "previous": 73721, - "size": 73721, - "diff": 0 - }, - { - "filename": "editor.chunk.78d77.css", - "previous": 3188, - "size": 3188, - "diff": 0 - }, - { - "filename": "ssr-bundle.8178b.css", - "previous": 11783, - "size": 11783, - "diff": 0 - } - ] - } -] \ No newline at end of file +[{"timestamp":1580185999596,"files":[{"filename":"editor.chunk.*****.js","previous":66430,"size":66430,"diff":0},{"filename":"emoji.chunk.*****.js","previous":8834,"size":8834,"diff":0},{"filename":"runner.chunk.*****.js","previous":8019,"size":8019,"diff":0},{"filename":"ssr-bundle.js","previous":28362,"size":28274,"diff":-88},{"filename":"markdown.c9960.worker.js","previous":10199,"size":10199,"diff":0},{"filename":"prism.05c92.worker.js","previous":7246,"size":7246,"diff":0},{"filename":"repl.eadff.worker.js","previous":73721,"size":73721,"diff":0},{"filename":"editor.chunk.88db4.css","previous":3188,"size":3188,"diff":0},{"filename":"ssr-bundle.a33f5.css","previous":11783,"size":0,"diff":-11783},{"filename":"ssr-bundle.61544.css","previous":0,"size":11783,"diff":11783}]},{"timestamp":1580184867259,"files":[{"filename":"editor.chunk.*****.js","previous":66430,"size":66430,"diff":0},{"filename":"emoji.chunk.*****.js","previous":8834,"size":8834,"diff":0},{"filename":"runner.chunk.*****.js","previous":8019,"size":8019,"diff":0},{"filename":"ssr-bundle.js","previous":28363,"size":28362,"diff":-1},{"filename":"markdown.c9960.worker.js","previous":10199,"size":10199,"diff":0},{"filename":"prism.05c92.worker.js","previous":7246,"size":7246,"diff":0},{"filename":"repl.eadff.worker.js","previous":73721,"size":73721,"diff":0},{"filename":"editor.chunk.88db4.css","previous":3188,"size":3188,"diff":0},{"filename":"ssr-bundle.a33f5.css","previous":11783,"size":11783,"diff":0}]},{"timestamp":1580181142595,"files":[{"filename":"editor.chunk.*****.js","previous":66430,"size":66430,"diff":0},{"filename":"emoji.chunk.*****.js","previous":8834,"size":8834,"diff":0},{"filename":"runner.chunk.*****.js","previous":5931,"size":8019,"diff":2088},{"filename":"ssr-bundle.js","previous":28237,"size":28363,"diff":126},{"filename":"markdown.c9960.worker.js","previous":10199,"size":10199,"diff":0},{"filename":"prism.05c92.worker.js","previous":7246,"size":7246,"diff":0},{"filename":"repl.eadff.worker.js","previous":73721,"size":73721,"diff":0},{"filename":"editor.chunk.78d77.css","previous":3188,"size":0,"diff":-3188},{"filename":"ssr-bundle.8178b.css","previous":11783,"size":0,"diff":-11783},{"filename":"editor.chunk.88db4.css","previous":0,"size":3188,"diff":3188},{"filename":"ssr-bundle.a33f5.css","previous":0,"size":11783,"diff":11783}]},{"timestamp":1579731907448,"files":[{"filename":"editor.chunk.*****.js","previous":66430,"size":66430,"diff":0},{"filename":"emoji.chunk.*****.js","previous":8834,"size":8834,"diff":0},{"filename":"runner.chunk.*****.js","previous":5931,"size":5931,"diff":0},{"filename":"ssr-bundle.js","previous":28159,"size":28237,"diff":78},{"filename":"markdown.c9960.worker.js","previous":10199,"size":10199,"diff":0},{"filename":"prism.05c92.worker.js","previous":7246,"size":7246,"diff":0},{"filename":"repl.eadff.worker.js","previous":73721,"size":73721,"diff":0},{"filename":"editor.chunk.78d77.css","previous":3188,"size":3188,"diff":0},{"filename":"ssr-bundle.8178b.css","previous":11783,"size":11783,"diff":0}]}] diff --git a/src/index.js b/src/index.js index 72591d7d0..3ef8f42e4 100755 --- a/src/index.js +++ b/src/index.js @@ -5,7 +5,15 @@ import App from './components/app'; import * as preact from 'preact'; import * as hooks from 'preact/hooks'; -export default App; +let app = App; + +if (!PRERENDER) { + app = undefined; + const root = document.getElementById('app'); + preact.hydrate(preact.h(App), root.parentNode, root); +} + +export default app; // allows users to play with preact in the browser developer console global.preact = { ...preact, ...hooks }; diff --git a/src/lib/hydrator.js b/src/lib/hydrator.js index 340346c75..ccac5ca89 100644 --- a/src/lib/hydrator.js +++ b/src/lib/hydrator.js @@ -1,4 +1,4 @@ -import { Component, render, hydrate, createRef } from 'preact'; +import { h, Component, render, hydrate, createRef } from 'preact'; import { lazily, cancelLazily } from './lazily'; function interopDefault(mod) { @@ -16,6 +16,68 @@ function ServerHydrator({ load, component, wrapperProps, ...props }) { ); } +const PENDING = {}; + +function Pending() { + throw PENDING; +} + +class Hydrator extends Component { + boot = nextProps => { + // don't initialize booting twice: + if (this.booted) return; + this.booted = true; + const { component, load } = nextProps || this.props; + const ready = exports => { + console.log('loaded Hydrator boundary'); + this.timer = lazily(() => { + console.log('rendering Hydrator boundary'); + this.timer = null; + this.Child = interopDefault(exports) || (() => {}); + this.setState({}); + }); + }; + console.log('loading Hydrator boundary'); + if (component) return ready(component); + Promise.resolve() + .then(load) + .then(ready); + }; + + componentDidCatch(err) { + if (err !== PENDING) { + throw err; + } + } + + componentWillUnmount() { + if (this.timer) { + cancelLazily(this.timer); + } + } + + // not sure if componentDidMount would still be called when we bail out of render. + setup(props) { + const root = this.base; + if (root && this.props.lazy && typeof IntersectionObserver === 'function') { + new IntersectionObserver(([entry], obs) => { + if (!entry.isIntersecting) return; + obs.unobserve(root); + this.boot(); + }).observe(root); + } else if (this.props.boot !== false) { + this.boot(props); + } + } + + render(props) { + if (this.Child) console.log('restored Hydrator boundary'); + this.setup(props); + return h(this.Child || Pending, props); + } +} + +/* class ContextProvider extends Component { getChildContext() { return this.props.context; @@ -102,5 +164,6 @@ class Hydrator extends Component { ); } } +*/ export default PRERENDER ? ServerHydrator : Hydrator; diff --git a/temp/async-loader.js b/temp/async-loader.js new file mode 100644 index 000000000..ecf0478c9 --- /dev/null +++ b/temp/async-loader.js @@ -0,0 +1,34 @@ +const path = require('path'); +const { getOptions, stringifyRequest } = require('loader-utils'); + +exports.pitch = function(req) { + console.log('custom async-loader called'); + this.cacheable && this.cacheable(); + + let name; + let query = getOptions(this) || {}; + let routeName = + typeof query.name === 'function' ? query.name(this.resourcePath) : null; + + if (routeName !== null) { + name = routeName; + } else if ('name' in query) { + name = query.name; + } else if ('formatName' in query) { + name = query.formatName(this.resourcePath); + } + + // import Async from '${path.relative(process.cwd(), path.resolve(__dirname, 'async-component.js'))}'; + return ` + import Async from ${stringifyRequest( + this, + path.resolve(__dirname, 'async.js') + )}; + function load(cb) { + require.ensure([], function (require) { + cb( require(${stringifyRequest(this, '!!' + req)}) ); + }${name ? ', ' + JSON.stringify(name) : ''}); + } + export default Async(load); + `; +}; diff --git a/temp/async.js b/temp/async.js new file mode 100644 index 000000000..252c7f953 --- /dev/null +++ b/temp/async.js @@ -0,0 +1,31 @@ +import { h, Component } from 'preact'; + +const PENDING = {}; + +function Pending() { + throw PENDING; +} + +export default function async(load) { + let component; + function AsyncComponent() { + Component.call(this); + if (!component) { + (this.componentWillMount = () => { + load(mod => { + component = (mod && mod.default) || mod; + this.componentDidCatch = null; + this.setState({}); + }); + }), + (this.componentDidCatch = err => { + if (err !== PENDING) throw err; + }); + this.shouldComponentUpdate = () => component != null; + } + this.render = props => h(component || Pending, props); + } + AsyncComponent.preload = load; + (AsyncComponent.prototype = new Component()).constructor = AsyncComponent; + return AsyncComponent; +}