From 239a738364e9578948909ec8243624523f36e289 Mon Sep 17 00:00:00 2001 From: Sebastian Silbermann Date: Fri, 13 Sep 2019 12:55:55 +0200 Subject: [PATCH] fix: Invalid hooks call --- .pnp.js | 80 ++- .../cache/styled-jsx-npm-3.2.2-6271ec4430.zip | Bin 0 -> 39776 bytes .../node_modules/next-server/amp.d.ts | 1 + .../node_modules/next-server/amp.js | 2 + .../node_modules/next-server/config.d.ts | 2 + .../node_modules/next-server/config.js | 1 + .../node_modules/next-server/constants.d.ts | 1 + .../node_modules/next-server/constants.js | 1 + .../next-server/dist/lib/amp-context.d.ts | 2 + .../next-server/dist/lib/amp-context.js | 11 + .../next-server/dist/lib/amp.d.ts | 6 + .../node_modules/next-server/dist/lib/amp.js | 16 + .../next-server/dist/lib/constants.d.ts | 23 + .../next-server/dist/lib/constants.js | 30 ++ .../dist/lib/data-manager-context.d.ts | 2 + .../dist/lib/data-manager-context.js | 11 + .../next-server/dist/lib/data-manager.d.ts | 8 + .../next-server/dist/lib/data-manager.js | 20 + .../next-server/dist/lib/dynamic.d.ts | 36 ++ .../next-server/dist/lib/dynamic.js | 104 ++++ .../dist/lib/head-manager-context.d.ts | 2 + .../dist/lib/head-manager-context.js | 11 + .../next-server/dist/lib/head.d.ts | 13 + .../node_modules/next-server/dist/lib/head.js | 114 +++++ .../dist/lib/loadable-context.d.ts | 4 + .../next-server/dist/lib/loadable-context.js | 12 + .../next-server/dist/lib/loadable.d.ts | 14 + .../next-server/dist/lib/loadable.js | 274 ++++++++++ .../next-server/dist/lib/mitt.d.ts | 8 + .../node_modules/next-server/dist/lib/mitt.js | 35 ++ .../next-server/dist/lib/request-context.d.ts | 2 + .../next-server/dist/lib/request-context.js | 11 + .../next-server/dist/lib/router-context.d.ts | 3 + .../next-server/dist/lib/router-context.js | 11 + .../lib/router/rewrite-url-for-export.d.ts | 1 + .../dist/lib/router/rewrite-url-for-export.js | 17 + .../next-server/dist/lib/router/router.d.ts | 96 ++++ .../next-server/dist/lib/router/router.js | 480 ++++++++++++++++++ .../dist/lib/router/utils/index.d.ts | 4 + .../dist/lib/router/utils/index.js | 10 + .../dist/lib/router/utils/is-dynamic.d.ts | 1 + .../dist/lib/router/utils/is-dynamic.js | 8 + .../dist/lib/router/utils/route-matcher.d.ts | 4 + .../dist/lib/router/utils/route-matcher.js | 20 + .../dist/lib/router/utils/route-regex.d.ts | 6 + .../dist/lib/router/utils/route-regex.js | 17 + .../dist/lib/router/utils/sorted-routes.d.ts | 1 + .../dist/lib/router/utils/sorted-routes.js | 87 ++++ .../next-server/dist/lib/runtime-config.d.ts | 3 + .../next-server/dist/lib/runtime-config.js | 10 + .../next-server/dist/lib/side-effect.d.ts | 28 + .../next-server/dist/lib/side-effect.js | 44 ++ .../next-server/dist/lib/utils.d.ts | 164 ++++++ .../next-server/dist/lib/utils.js | 96 ++++ .../next-server/dist/server/api-utils.d.ts | 71 +++ .../next-server/dist/server/api-utils.js | 231 +++++++++ .../next-server/dist/server/config.d.ts | 4 + .../next-server/dist/server/config.js | 119 +++++ .../dist/server/get-page-files.d.ts | 7 + .../next-server/dist/server/get-page-files.js | 17 + .../dist/server/lib/path-match.d.ts | 2 + .../next-server/dist/server/lib/path-match.js | 42 ++ .../server/lib/recursive-readdir-sync.d.ts | 7 + .../dist/server/lib/recursive-readdir-sync.js | 27 + .../dist/server/load-components.d.ts | 12 + .../dist/server/load-components.js | 37 ++ .../next-server/dist/server/next-server.d.ts | 90 ++++ .../next-server/dist/server/next-server.js | 434 ++++++++++++++++ .../dist/server/normalize-page-path.d.ts | 1 + .../dist/server/normalize-page-path.js | 20 + .../next-server/dist/server/optimize-amp.d.ts | 1 + .../next-server/dist/server/optimize-amp.js | 14 + .../next-server/dist/server/render.d.ts | 50 ++ .../next-server/dist/server/render.js | 334 ++++++++++++ .../next-server/dist/server/require.d.ts | 3 + .../next-server/dist/server/require.js | 49 ++ .../next-server/dist/server/router.d.ts | 18 + .../next-server/dist/server/router.js | 25 + .../next-server/dist/server/send-html.d.ts | 6 + .../next-server/dist/server/send-html.js | 30 ++ .../next-server/dist/server/serve-static.d.ts | 3 + .../next-server/dist/server/serve-static.js | 21 + .../next-server/dist/server/utils.d.ts | 3 + .../next-server/dist/server/utils.js | 28 + .../node_modules/next-server/dynamic.d.ts | 2 + .../node_modules/next-server/dynamic.js | 1 + .../node_modules/next-server/head.d.ts | 2 + .../node_modules/next-server/head.js | 1 + .../node_modules/next-server/index.d.ts | 2 + .../node_modules/next-server/index.js | 5 + .../node_modules/next-server/license.md | 21 + .../node_modules/next-server/next-config.js | 1 + .../node_modules/next-server/package.json | 77 +++ .../node_modules/next-server/types/index.d.ts | 14 + .../next/dist/build/webpack-config.js | 69 +-- .../next/dist/lib/resolve-request.js | 20 + package.json | 6 +- yarn.lock | 28 +- 98 files changed, 3884 insertions(+), 39 deletions(-) create mode 100644 .yarn/cache/styled-jsx-npm-3.2.2-6271ec4430.zip create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/amp.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/amp.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/config.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/config.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/constants.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/constants.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/amp-context.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/amp-context.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/amp.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/amp.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/constants.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/constants.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/data-manager-context.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/data-manager-context.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/data-manager.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/data-manager.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/dynamic.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/dynamic.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/head-manager-context.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/head-manager-context.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/head.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/head.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/loadable-context.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/loadable-context.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/loadable.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/loadable.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/mitt.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/mitt.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/request-context.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/request-context.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router-context.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router-context.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/rewrite-url-for-export.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/rewrite-url-for-export.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/router.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/router.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/index.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/index.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/is-dynamic.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/is-dynamic.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/route-matcher.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/route-matcher.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/route-regex.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/route-regex.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/sorted-routes.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/sorted-routes.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/runtime-config.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/runtime-config.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/side-effect.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/side-effect.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/utils.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/utils.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/api-utils.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/api-utils.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/config.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/config.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/get-page-files.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/get-page-files.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/lib/path-match.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/lib/path-match.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/lib/recursive-readdir-sync.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/lib/recursive-readdir-sync.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/load-components.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/load-components.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/next-server.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/next-server.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/normalize-page-path.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/normalize-page-path.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/optimize-amp.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/optimize-amp.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/render.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/render.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/require.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/require.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/router.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/router.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/send-html.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/send-html.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/serve-static.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/serve-static.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/utils.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/utils.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dynamic.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dynamic.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/head.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/head.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/index.d.ts create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/index.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/license.md create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/next-config.js create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/package.json create mode 100644 .yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/types/index.d.ts create mode 100644 .yarn/unplugged/next-virtual-910e31a40c/node_modules/next/dist/lib/resolve-request.js diff --git a/.pnp.js b/.pnp.js index 3df00a6..f4ebdfd 100755 --- a/.pnp.js +++ b/.pnp.js @@ -88,6 +88,7 @@ function $$SETUP_STATE(hydrateRuntimeState) { "./.yarn/cache/next-server-npm-9.0.5-f11adef669.zip/node_modules/next-server/", "./.yarn/cache/react-dom-npm-16.9.0-b4d29e88a3.zip/node_modules/react-dom/", "./.yarn/cache/styled-jsx-npm-3.2.1-6d2007b485.zip/node_modules/styled-jsx/", + "./.yarn/cache/styled-jsx-npm-3.2.2-6271ec4430.zip/node_modules/styled-jsx/", "./.yarn/cache/stylis-rule-sheet-npm-0.0.10-5e45458244.zip/node_modules/stylis-rule-sheet/", "./.yarn/cache/terser-webpack-plugin-npm-1.4.1-520f985579.zip/node_modules/terser-webpack-plugin/", "./.yarn/cache/ts-pnp-npm-1.1.2-908b85f2f2.zip/node_modules/ts-pnp/", @@ -189,10 +190,14 @@ function $$SETUP_STATE(hydrateRuntimeState) { [null, { "packageLocation": "./", "packageDependencies": [ + ["core-js", "npm:2.6.9"], ["next", "virtual:987832680f8d18a8aa044070aac9714a3b43fce57ce77f673983f76018259429c516b81b8cdbaee3b9ee91856818a30558f5bec62d93b091f6305f815428fe14#npm:9.0.5"], + ["next-server", "virtual:987832680f8d18a8aa044070aac9714a3b43fce57ce77f673983f76018259429c516b81b8cdbaee3b9ee91856818a30558f5bec62d93b091f6305f815428fe14#npm:9.0.5"], ["pnp-webpack-plugin", "npm:1.5.0"], + ["prop-types", "npm:15.7.2"], ["react", "npm:16.9.0"], - ["react-dom", "virtual:987832680f8d18a8aa044070aac9714a3b43fce57ce77f673983f76018259429c516b81b8cdbaee3b9ee91856818a30558f5bec62d93b091f6305f815428fe14#npm:16.9.0"] + ["react-dom", "virtual:987832680f8d18a8aa044070aac9714a3b43fce57ce77f673983f76018259429c516b81b8cdbaee3b9ee91856818a30558f5bec62d93b091f6305f815428fe14#npm:16.9.0"], + ["styled-jsx", "virtual:987832680f8d18a8aa044070aac9714a3b43fce57ce77f673983f76018259429c516b81b8cdbaee3b9ee91856818a30558f5bec62d93b091f6305f815428fe14#npm:3.2.2"] ] }] ]], @@ -1950,10 +1955,14 @@ function $$SETUP_STATE(hydrateRuntimeState) { "packageLocation": "./", "packageDependencies": [ ["berry-next", "workspace:."], + ["core-js", "npm:2.6.9"], ["next", "virtual:987832680f8d18a8aa044070aac9714a3b43fce57ce77f673983f76018259429c516b81b8cdbaee3b9ee91856818a30558f5bec62d93b091f6305f815428fe14#npm:9.0.5"], + ["next-server", "virtual:987832680f8d18a8aa044070aac9714a3b43fce57ce77f673983f76018259429c516b81b8cdbaee3b9ee91856818a30558f5bec62d93b091f6305f815428fe14#npm:9.0.5"], ["pnp-webpack-plugin", "npm:1.5.0"], + ["prop-types", "npm:15.7.2"], ["react", "npm:16.9.0"], - ["react-dom", "virtual:987832680f8d18a8aa044070aac9714a3b43fce57ce77f673983f76018259429c516b81b8cdbaee3b9ee91856818a30558f5bec62d93b091f6305f815428fe14#npm:16.9.0"] + ["react-dom", "virtual:987832680f8d18a8aa044070aac9714a3b43fce57ce77f673983f76018259429c516b81b8cdbaee3b9ee91856818a30558f5bec62d93b091f6305f815428fe14#npm:16.9.0"], + ["styled-jsx", "virtual:987832680f8d18a8aa044070aac9714a3b43fce57ce77f673983f76018259429c516b81b8cdbaee3b9ee91856818a30558f5bec62d93b091f6305f815428fe14#npm:3.2.2"] ] }] ]], @@ -4475,6 +4484,29 @@ function $$SETUP_STATE(hydrateRuntimeState) { ["styled-jsx", "virtual:10f1d7e8580a93bb6eb1b64f168eb6f996b21b95a002dc0296451ce13c0718afcd088e111b0deeb2451e3ec48fbffdef41edf300681567a8e7782f87aa66dc98#npm:3.2.1"], ["url", "npm:0.11.0"] ] + }], + ["virtual:987832680f8d18a8aa044070aac9714a3b43fce57ce77f673983f76018259429c516b81b8cdbaee3b9ee91856818a30558f5bec62d93b091f6305f815428fe14#npm:9.0.5", { + "packageLocation": "./.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/", + "packageDependencies": [ + ["next-server", "virtual:987832680f8d18a8aa044070aac9714a3b43fce57ce77f673983f76018259429c516b81b8cdbaee3b9ee91856818a30558f5bec62d93b091f6305f815428fe14#npm:9.0.5"], + ["@ampproject/toolbox-optimizer", "npm:1.0.1"], + ["chalk", "npm:2.4.2"], + ["compression", "npm:1.7.4"], + ["content-type", "npm:1.0.4"], + ["cookie", "npm:0.4.0"], + ["etag", "npm:1.8.1"], + ["find-up", "npm:4.0.0"], + ["fresh", "npm:0.5.2"], + ["path-to-regexp", "npm:2.1.0"], + ["prop-types", "npm:15.7.2"], + ["raw-body", "npm:2.4.0"], + ["react", "npm:16.9.0"], + ["react-dom", "virtual:987832680f8d18a8aa044070aac9714a3b43fce57ce77f673983f76018259429c516b81b8cdbaee3b9ee91856818a30558f5bec62d93b091f6305f815428fe14#npm:16.9.0"], + ["react-is", "npm:16.8.6"], + ["send", "npm:0.17.1"], + ["styled-jsx", "virtual:76b91ea838aa571c6132626821606310b55600454ac9621e8b2756022d3f0918660d92d95ff57611b5bf924083aa367c6aff8d909ff3dadb78ae5ca461663523#npm:3.2.1"], + ["url", "npm:0.11.0"] + ] }] ]], ["node-fetch", [ @@ -6036,6 +6068,21 @@ function $$SETUP_STATE(hydrateRuntimeState) { ["stylis-rule-sheet", "virtual:f83bf248c92b2970580680ff0d8c64170742719494e1ec1342776deff0b326ab2ebd522f994a487b6eb4eea7d657bbd7406e7a026d3d5b209d73eea0a5dda1c0#npm:0.0.10"] ] }], + ["virtual:76b91ea838aa571c6132626821606310b55600454ac9621e8b2756022d3f0918660d92d95ff57611b5bf924083aa367c6aff8d909ff3dadb78ae5ca461663523#npm:3.2.1", { + "packageLocation": "./.yarn/virtual/styled-jsx-virtual-84087fe5ef/0/cache/styled-jsx-npm-3.2.1-6d2007b485.zip/node_modules/styled-jsx/", + "packageDependencies": [ + ["styled-jsx", "virtual:76b91ea838aa571c6132626821606310b55600454ac9621e8b2756022d3f0918660d92d95ff57611b5bf924083aa367c6aff8d909ff3dadb78ae5ca461663523#npm:3.2.1"], + ["babel-plugin-syntax-jsx", "npm:6.18.0"], + ["babel-types", "npm:6.26.0"], + ["convert-source-map", "npm:1.6.0"], + ["loader-utils", "npm:1.2.3"], + ["react", "npm:16.9.0"], + ["source-map", "npm:0.7.3"], + ["string-hash", "npm:1.1.3"], + ["stylis", "npm:3.5.4"], + ["stylis-rule-sheet", "virtual:84087fe5ef5764433cd67c737beea32214ad9b578a42e2a5db184a31c121011b683137540253e53651fa84ccfe4e7de676164915e0af33d078fc8ce9553f1906#npm:0.0.10"] + ] + }], ["virtual:910e31a40c85a9d4b157bf9d7ea2a750ac35b563011574de3f6e643bf9f48adac359d842bbec90cc6a480e88e6e64edc46ca14f0b68a9c4394ee2312fa87f756#npm:3.2.1", { "packageLocation": "./.yarn/virtual/styled-jsx-virtual-4f9b8f5a74/0/cache/styled-jsx-npm-3.2.1-6d2007b485.zip/node_modules/styled-jsx/", "packageDependencies": [ @@ -6050,6 +6097,21 @@ function $$SETUP_STATE(hydrateRuntimeState) { ["stylis", "npm:3.5.4"], ["stylis-rule-sheet", "virtual:4f9b8f5a747a8dd1461ea77beaa85c2c4880d7be1f6470ec10bfc4f4a1eed96c0a1f105fbb5075184eaaaba7f818afcc4b1183657caf5987e5069b11998a69cd#npm:0.0.10"] ] + }], + ["virtual:987832680f8d18a8aa044070aac9714a3b43fce57ce77f673983f76018259429c516b81b8cdbaee3b9ee91856818a30558f5bec62d93b091f6305f815428fe14#npm:3.2.2", { + "packageLocation": "./.yarn/virtual/styled-jsx-virtual-f9ca5e461a/0/cache/styled-jsx-npm-3.2.2-6271ec4430.zip/node_modules/styled-jsx/", + "packageDependencies": [ + ["styled-jsx", "virtual:987832680f8d18a8aa044070aac9714a3b43fce57ce77f673983f76018259429c516b81b8cdbaee3b9ee91856818a30558f5bec62d93b091f6305f815428fe14#npm:3.2.2"], + ["babel-plugin-syntax-jsx", "npm:6.18.0"], + ["babel-types", "npm:6.26.0"], + ["convert-source-map", "npm:1.6.0"], + ["loader-utils", "npm:1.2.3"], + ["react", "npm:16.9.0"], + ["source-map", "npm:0.7.3"], + ["string-hash", "npm:1.1.3"], + ["stylis", "npm:3.5.4"], + ["stylis-rule-sheet", "virtual:f9ca5e461a2e6c0e2f4bbba57948244379be98c3f48dcaba51d044ca6a4647f2237cd55630594a40ef1ddd5aa22fd98cb522915214231a83937d11a26b4a2b7f#npm:0.0.10"] + ] }] ]], ["stylis", [ @@ -6068,12 +6130,26 @@ function $$SETUP_STATE(hydrateRuntimeState) { ["stylis", "npm:3.5.4"] ] }], + ["virtual:84087fe5ef5764433cd67c737beea32214ad9b578a42e2a5db184a31c121011b683137540253e53651fa84ccfe4e7de676164915e0af33d078fc8ce9553f1906#npm:0.0.10", { + "packageLocation": "./.yarn/virtual/stylis-rule-sheet-virtual-e4f7d092bb/0/cache/stylis-rule-sheet-npm-0.0.10-5e45458244.zip/node_modules/stylis-rule-sheet/", + "packageDependencies": [ + ["stylis-rule-sheet", "virtual:84087fe5ef5764433cd67c737beea32214ad9b578a42e2a5db184a31c121011b683137540253e53651fa84ccfe4e7de676164915e0af33d078fc8ce9553f1906#npm:0.0.10"], + ["stylis", "npm:3.5.4"] + ] + }], ["virtual:f83bf248c92b2970580680ff0d8c64170742719494e1ec1342776deff0b326ab2ebd522f994a487b6eb4eea7d657bbd7406e7a026d3d5b209d73eea0a5dda1c0#npm:0.0.10", { "packageLocation": "./.yarn/virtual/stylis-rule-sheet-virtual-d0d9b7fb45/0/cache/stylis-rule-sheet-npm-0.0.10-5e45458244.zip/node_modules/stylis-rule-sheet/", "packageDependencies": [ ["stylis-rule-sheet", "virtual:f83bf248c92b2970580680ff0d8c64170742719494e1ec1342776deff0b326ab2ebd522f994a487b6eb4eea7d657bbd7406e7a026d3d5b209d73eea0a5dda1c0#npm:0.0.10"], ["stylis", "npm:3.5.4"] ] + }], + ["virtual:f9ca5e461a2e6c0e2f4bbba57948244379be98c3f48dcaba51d044ca6a4647f2237cd55630594a40ef1ddd5aa22fd98cb522915214231a83937d11a26b4a2b7f#npm:0.0.10", { + "packageLocation": "./.yarn/virtual/stylis-rule-sheet-virtual-d7a418c4f3/0/cache/stylis-rule-sheet-npm-0.0.10-5e45458244.zip/node_modules/stylis-rule-sheet/", + "packageDependencies": [ + ["stylis-rule-sheet", "virtual:f9ca5e461a2e6c0e2f4bbba57948244379be98c3f48dcaba51d044ca6a4647f2237cd55630594a40ef1ddd5aa22fd98cb522915214231a83937d11a26b4a2b7f#npm:0.0.10"], + ["stylis", "npm:3.5.4"] + ] }] ]], ["supports-color", [ diff --git a/.yarn/cache/styled-jsx-npm-3.2.2-6271ec4430.zip b/.yarn/cache/styled-jsx-npm-3.2.2-6271ec4430.zip new file mode 100644 index 0000000000000000000000000000000000000000..37cd9776e624c4957481571a21f055898d766992 GIT binary patch literal 39776 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
O3x`QDeQB+RH->A&-NKF4Q^ z2WX7T4Kb=PMtt_W2o_lwH&cIBwt$6)Czol>3v{p){I-4^h{@vg1&79+zCDK*4DY(H ze5jbKC(m3LV$2CTi0W9;YiZQwpo;RA0~@6Ke)Hjlr1j2gO3I5;JShj|^Q`z9>pZ`; zB$UrRI#ljf$r#b=;DKa*W&|pIn3F6|BWZ&0D@v^j=naiHGUXBI!+fQC-%>pPIksoU zYMJ`2Rd@Pg8*-jhn{$^;!y?=Sl=PV0Z(hL=Bp~Q6fy5&hG$dAzVvVhY#q&Q?Bj<<@ zOWxy3#vGv54jE8xJC&CS(A50v*Cl_;=X(bcd`8gGvX=(k1)Fk^3 zt;ZgSo7h9$MR&>Xyugce0O@s3l3j!K~>9Kn(rhpDQZS}11)3s>(AK&~t@X3f7I54XFrjW1| zQO4?l_k4$-vf;>=5#k-=8CA31`<7$&uTYmO_pf`ntG+{?sa^`wSiFz@2DWL!Bxtn4 z#b3RlQnk$KL_gCnu@IeA`!lS~M2yG2UC+Tgd*a|nzVYiKDq|6vBDRnRgB6r19+Ztt z%F2Xi?a4@_PQF(l_vl-bZ}Kk~&^mgvC0G7rHAYFX3GlD)!JuQaMnp|`iY=QZoIfq>Qw>tJMxu7wol|6*s^Ea`%<%X zI-VO&cwAKZA}Tq1cgpT{o7;k^cC5i!O{HQR(a5)slU+`s`|o$fanw2^Z8E;51_`Y- zL<-kRPZZEFc=jTq;asfq()5|KExFvbRG53t^~&{fzPyM7MX5pB(XFE0r-M$My;t3Z ztMF0{_$YU_?5Qv0wSD+;56NDi{0>7n^;>y!7WbrwlXuob?9sJ#wi2t=wbDllVTnCp zy)+i#Ib~<(LHX3e;e4t@Ix1Pi=tc&e;w)>#u3cT_lhXwt*yVC5N=2)S5UEnSGr zv6dI^YJPO#dOmG@ch0pQ%e{ftvCN4#q`;3CNu@lsPg>S-b_`Rz&f_{4ZdlyV;i|9y zLF=KLqMggj!r|v{N`v|n_}_mh(mw3-$%G&RJ5 zB2m-6(|7|!H9ViHP(eVDKZ2;)jcmr>W9`}xm8>vCJt`zVX`bKbF2V0s(=b?2&*>d7 z7&HRnp=&yk^m*U3I5th#iJ|f%eR?lPa8|vROImN%_tEJu?PJqlBozK!{n&eNq@^Ci zv6K)T*U3d_!n)Up8MHt(Vp?NAAun97ld7_cgtmdB<3vz-67K(%+Ya=m6PZjHO{=!|vYJ-OwWJ zB+J!*MG?qmb*qJAeQKQ1(_LDs9|tlLW24 zb5^#ke84YJNt8V6X3JS2FfKU23itRV;gOY)__z7hr znu3L`HSkU7=QWegy6;9;Zd~wfL`7hods~(MA=kF^%jC#w;(CG`J+pD~ZbRnp zh6F?;uX1-%q`&|`>7f9Dc(&0F04jPX0WDoN0t%3`N-PSxJOSk{1<1j-jU~3R>Fj7_ zZT@4Fxco3s{Lu;5>@2MvT&%_It;lQ2zSnf=ziT=L^w&7KM-@EZhn7Ld-{ zpVADxHqhNW(VVRaY0^J@*p83+?$`_HX?!i-4mo? zM;;4=M3a}?Svb;syVZ6-^1-&UZ~ktC_Si~9rHY^M{tEQ5{TU+<^|6J@z%T8F+7|d@ zOT?{bmpmp0i7No;vYq;4Q$+Kv2pQx|a_3kirla~U%zwGcB4?93G$64L>i-h^FZTxI zT=HY~ByPXKuWR!{NIW@N1fD<85p!5tUxt-5E+6wj`ZO{&u!S%E14z n3u&hjOJbA1b&=TKkw2G`Y_NiXi5A!f1^#q^No@tl3; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/amp-context.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/amp-context.js new file mode 100644 index 0000000..29c616d --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/amp-context.js @@ -0,0 +1,11 @@ +"use strict"; +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; + result["default"] = mod; + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const React = __importStar(require("react")); +exports.AmpStateContext = React.createContext({}); diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/amp.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/amp.d.ts new file mode 100644 index 0000000..1f5037b --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/amp.d.ts @@ -0,0 +1,6 @@ +export declare function isInAmpMode({ ampFirst, hybrid, hasQuery, }?: { + ampFirst?: boolean | undefined; + hybrid?: boolean | undefined; + hasQuery?: boolean | undefined; +}): boolean; +export declare function useAmp(): boolean; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/amp.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/amp.js new file mode 100644 index 0000000..8b47639 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/amp.js @@ -0,0 +1,16 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const react_1 = __importDefault(require("react")); +const amp_context_1 = require("./amp-context"); +function isInAmpMode({ ampFirst = false, hybrid = false, hasQuery = false, } = {}) { + return ampFirst || (hybrid && hasQuery); +} +exports.isInAmpMode = isInAmpMode; +function useAmp() { + // Don't assign the context value to a variable to save bytes + return isInAmpMode(react_1.default.useContext(amp_context_1.AmpStateContext)); +} +exports.useAmp = useAmp; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/constants.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/constants.d.ts new file mode 100644 index 0000000..9a27c08 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/constants.d.ts @@ -0,0 +1,23 @@ +export declare const PHASE_EXPORT = "phase-export"; +export declare const PHASE_PRODUCTION_BUILD = "phase-production-build"; +export declare const PHASE_PRODUCTION_SERVER = "phase-production-server"; +export declare const PHASE_DEVELOPMENT_SERVER = "phase-development-server"; +export declare const PAGES_MANIFEST = "pages-manifest.json"; +export declare const BUILD_MANIFEST = "build-manifest.json"; +export declare const PRERENDER_MANIFEST = "prerender-manifest.json"; +export declare const REACT_LOADABLE_MANIFEST = "react-loadable-manifest.json"; +export declare const SERVER_DIRECTORY = "server"; +export declare const SERVERLESS_DIRECTORY = "serverless"; +export declare const CONFIG_FILE = "next.config.js"; +export declare const BUILD_ID_FILE = "BUILD_ID"; +export declare const BLOCKED_PAGES: string[]; +export declare const CLIENT_PUBLIC_FILES_PATH = "public"; +export declare const CLIENT_STATIC_FILES_PATH = "static"; +export declare const CLIENT_STATIC_FILES_RUNTIME = "runtime"; +export declare const CLIENT_STATIC_FILES_RUNTIME_PATH: string; +export declare const CLIENT_STATIC_FILES_RUNTIME_MAIN: string; +export declare const CLIENT_STATIC_FILES_RUNTIME_AMP: string; +export declare const CLIENT_STATIC_FILES_RUNTIME_WEBPACK: string; +export declare const IS_BUNDLED_PAGE_REGEX: RegExp; +export declare const ROUTE_NAME_REGEX: RegExp; +export declare const SERVERLESS_ROUTE_NAME_REGEX: RegExp; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/constants.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/constants.js new file mode 100644 index 0000000..1ddec38 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/constants.js @@ -0,0 +1,30 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PHASE_EXPORT = 'phase-export'; +exports.PHASE_PRODUCTION_BUILD = 'phase-production-build'; +exports.PHASE_PRODUCTION_SERVER = 'phase-production-server'; +exports.PHASE_DEVELOPMENT_SERVER = 'phase-development-server'; +exports.PAGES_MANIFEST = 'pages-manifest.json'; +exports.BUILD_MANIFEST = 'build-manifest.json'; +exports.PRERENDER_MANIFEST = 'prerender-manifest.json'; +exports.REACT_LOADABLE_MANIFEST = 'react-loadable-manifest.json'; +exports.SERVER_DIRECTORY = 'server'; +exports.SERVERLESS_DIRECTORY = 'serverless'; +exports.CONFIG_FILE = 'next.config.js'; +exports.BUILD_ID_FILE = 'BUILD_ID'; +exports.BLOCKED_PAGES = ['/_document', '/_app']; +exports.CLIENT_PUBLIC_FILES_PATH = 'public'; +exports.CLIENT_STATIC_FILES_PATH = 'static'; +exports.CLIENT_STATIC_FILES_RUNTIME = 'runtime'; +exports.CLIENT_STATIC_FILES_RUNTIME_PATH = `${exports.CLIENT_STATIC_FILES_PATH}/${exports.CLIENT_STATIC_FILES_RUNTIME}`; +// static/runtime/main.js +exports.CLIENT_STATIC_FILES_RUNTIME_MAIN = `${exports.CLIENT_STATIC_FILES_RUNTIME_PATH}/main.js`; +// static/runtime/amp.js +exports.CLIENT_STATIC_FILES_RUNTIME_AMP = `${exports.CLIENT_STATIC_FILES_RUNTIME_PATH}/amp.js`; +// static/runtime/webpack.js +exports.CLIENT_STATIC_FILES_RUNTIME_WEBPACK = `${exports.CLIENT_STATIC_FILES_RUNTIME_PATH}/webpack.js`; +// matches static//pages/.js +exports.IS_BUNDLED_PAGE_REGEX = /^static[/\\][^/\\]+[/\\]pages.*\.js$/; +// matches static//pages/:page*.js +exports.ROUTE_NAME_REGEX = /^static[/\\][^/\\]+[/\\]pages[/\\](.*)\.js$/; +exports.SERVERLESS_ROUTE_NAME_REGEX = /^pages[/\\](.*)\.js$/; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/data-manager-context.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/data-manager-context.d.ts new file mode 100644 index 0000000..c60056a --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/data-manager-context.d.ts @@ -0,0 +1,2 @@ +import * as React from 'react'; +export declare const DataManagerContext: React.Context; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/data-manager-context.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/data-manager-context.js new file mode 100644 index 0000000..e499dc3 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/data-manager-context.js @@ -0,0 +1,11 @@ +"use strict"; +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; + result["default"] = mod; + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const React = __importStar(require("react")); +exports.DataManagerContext = React.createContext(null); diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/data-manager.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/data-manager.d.ts new file mode 100644 index 0000000..819c63c --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/data-manager.d.ts @@ -0,0 +1,8 @@ +export declare class DataManager { + data: Map; + constructor(data?: any); + getData(): Map; + get(key: string): any; + set(key: string, value: any): void; + overwrite(data: any): void; +} diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/data-manager.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/data-manager.js new file mode 100644 index 0000000..5cd811c --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/data-manager.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +class DataManager { + constructor(data) { + this.data = new Map(data); + } + getData() { + return this.data; + } + get(key) { + return this.data.get(key); + } + set(key, value) { + this.data.set(key, value); + } + overwrite(data) { + this.data = new Map(data); + } +} +exports.DataManager = DataManager; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/dynamic.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/dynamic.d.ts new file mode 100644 index 0000000..8b855d5 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/dynamic.d.ts @@ -0,0 +1,36 @@ +import React from 'react'; +export declare type LoaderComponent

= Promise | { + default: React.ComponentType

; +}>; +export declare type Loader

= (() => LoaderComponent

) | LoaderComponent

; +export declare type LoaderMap = { + [mdule: string]: () => Loader; +}; +export declare type LoadableGeneratedOptions = { + webpack?(): any; + modules?(): LoaderMap; +}; +export declare type LoadableBaseOptions

= LoadableGeneratedOptions & { + loading?: ({ error, isLoading, pastDelay, }: { + error?: Error | null; + isLoading?: boolean; + pastDelay?: boolean; + timedOut?: boolean; + }) => JSX.Element | null; + loader?: Loader

| LoaderMap; + loadableGenerated?: LoadableGeneratedOptions; + ssr?: boolean; +}; +export declare type LoadableOptions

= LoadableBaseOptions

& { + render?(loader: any, props: any): JSX.Element; +}; +export declare type DynamicOptions

= LoadableBaseOptions

& { + /** + * @deprecated the modules option has been planned for removal + */ + render?(props: P, loaded: any): JSX.Element; +}; +export declare type LoadableFn

= (opts: LoadableOptions

) => React.ComponentType

; +export declare type LoadableComponent

= React.ComponentType

; +export declare function noSSR

(LoadableInitializer: LoadableFn

, loadableOptions: LoadableOptions

): React.ComponentClass | React.FunctionComponent

| (() => JSX.Element); +export default function dynamic

(dynamicOptions: DynamicOptions

| Loader

, options?: DynamicOptions

): React.ComponentType

; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/dynamic.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/dynamic.js new file mode 100644 index 0000000..d5050c1 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/dynamic.js @@ -0,0 +1,104 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const react_1 = __importDefault(require("react")); +const loadable_1 = __importDefault(require("./loadable")); +const isServerSide = typeof window === 'undefined'; +function noSSR(LoadableInitializer, loadableOptions) { + // Removing webpack and modules means react-loadable won't try preloading + delete loadableOptions.webpack; + delete loadableOptions.modules; + // This check is neccesary to prevent react-loadable from initializing on the server + if (!isServerSide) { + return LoadableInitializer(loadableOptions); + } + const Loading = loadableOptions.loading; + // This will only be rendered on the server side + return () => (react_1.default.createElement(Loading, { error: null, isLoading: true, pastDelay: false, timedOut: false })); +} +exports.noSSR = noSSR; +// function dynamic

(options: O): +function dynamic(dynamicOptions, options) { + let loadableFn = loadable_1.default; + let loadableOptions = { + // A loading component is not required, so we default it + loading: ({ error, isLoading, pastDelay }) => { + if (!pastDelay) + return null; + if (process.env.NODE_ENV === 'development') { + if (isLoading) { + return null; + } + if (error) { + return (react_1.default.createElement("p", null, + error.message, + react_1.default.createElement("br", null), + error.stack)); + } + } + return null; + }, + }; + // Support for direct import(), eg: dynamic(import('../hello-world')) + // Note that this is only kept for the edge case where someone is passing in a promise as first argument + // The react-loadable babel plugin will turn dynamic(import('../hello-world')) into dynamic(() => import('../hello-world')) + // To make sure we don't execute the import without rendering first + if (dynamicOptions instanceof Promise) { + loadableOptions.loader = () => dynamicOptions; + // Support for having import as a function, eg: dynamic(() => import('../hello-world')) + } + else if (typeof dynamicOptions === 'function') { + loadableOptions.loader = dynamicOptions; + // Support for having first argument being options, eg: dynamic({loader: import('../hello-world')}) + } + else if (typeof dynamicOptions === 'object') { + loadableOptions = Object.assign({}, loadableOptions, dynamicOptions); + } + // Support for passing options, eg: dynamic(import('../hello-world'), {loading: () =>

Loading something

}) + loadableOptions = Object.assign({}, loadableOptions, options); + if (typeof dynamicOptions === 'object' && + !(dynamicOptions instanceof Promise)) { + // show deprecation warning for `modules` key in development + if (process.env.NODE_ENV !== 'production') { + if (dynamicOptions.modules) { + console.warn('The modules option for next/dynamic has been deprecated. See here for more info https://err.sh/zeit/next.js/next-dynamic-modules'); + } + } + // Support for `render` when using a mapping, eg: `dynamic({ modules: () => {return {HelloWorld: import('../hello-world')}, render(props, loaded) {} } }) + if (dynamicOptions.render) { + loadableOptions.render = (loaded, props) => dynamicOptions.render(props, loaded); + } + // Support for `modules` when using a mapping, eg: `dynamic({ modules: () => {return {HelloWorld: import('../hello-world')}, render(props, loaded) {} } }) + if (dynamicOptions.modules) { + loadableFn = loadable_1.default.Map; + const loadModules = {}; + const modules = dynamicOptions.modules(); + Object.keys(modules).forEach(key => { + const value = modules[key]; + if (typeof value.then === 'function') { + loadModules[key] = () => value.then((mod) => mod.default || mod); + return; + } + loadModules[key] = value; + }); + loadableOptions.loader = loadModules; + } + } + // coming from build/babel/plugins/react-loadable-plugin.js + if (loadableOptions.loadableGenerated) { + loadableOptions = Object.assign({}, loadableOptions, loadableOptions.loadableGenerated); + delete loadableOptions.loadableGenerated; + } + // support for disabling server side rendering, eg: dynamic(import('../hello-world'), {ssr: false}) + if (typeof loadableOptions.ssr === 'boolean') { + if (!loadableOptions.ssr) { + delete loadableOptions.ssr; + return noSSR(loadableFn, loadableOptions); + } + delete loadableOptions.ssr; + } + return loadableFn(loadableOptions); +} +exports.default = dynamic; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/head-manager-context.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/head-manager-context.d.ts new file mode 100644 index 0000000..a2912e4 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/head-manager-context.d.ts @@ -0,0 +1,2 @@ +import * as React from 'react'; +export declare const HeadManagerContext: React.Context; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/head-manager-context.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/head-manager-context.js new file mode 100644 index 0000000..6b84157 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/head-manager-context.js @@ -0,0 +1,11 @@ +"use strict"; +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; + result["default"] = mod; + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const React = __importStar(require("react")); +exports.HeadManagerContext = React.createContext(null); diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/head.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/head.d.ts new file mode 100644 index 0000000..af67358 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/head.d.ts @@ -0,0 +1,13 @@ +import React from 'react'; +export declare function defaultHead(inAmpMode?: boolean): JSX.Element[]; +/** + * This component injects elements to `` of your page. + * To avoid duplicated `tags` in `` you can use the `key` property, which will make sure every tag is only rendered once. + */ +declare function Head({ children }: { + children: React.ReactNode; +}): JSX.Element; +declare namespace Head { + var rewind: () => React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)>[] | undefined; +} +export default Head; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/head.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/head.js new file mode 100644 index 0000000..b002b80 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/head.js @@ -0,0 +1,114 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const react_1 = __importDefault(require("react")); +const side_effect_1 = __importDefault(require("./side-effect")); +const amp_context_1 = require("./amp-context"); +const head_manager_context_1 = require("./head-manager-context"); +const amp_1 = require("./amp"); +function defaultHead(inAmpMode = false) { + const head = [react_1.default.createElement("meta", { key: "charSet", charSet: "utf-8" })]; + if (!inAmpMode) { + head.push(react_1.default.createElement("meta", { key: "viewport", name: "viewport", content: "width=device-width,minimum-scale=1,initial-scale=1" })); + } + return head; +} +exports.defaultHead = defaultHead; +function onlyReactElement(list, child) { + // React children can be "string" or "number" in this case we ignore them for backwards compat + if (typeof child === 'string' || typeof child === 'number') { + return list; + } + // Adds support for React.Fragment + if (child.type === react_1.default.Fragment) { + return list.concat(react_1.default.Children.toArray(child.props.children).reduce((fragmentList, fragmentChild) => { + if (typeof fragmentChild === 'string' || + typeof fragmentChild === 'number') { + return fragmentList; + } + return fragmentList.concat(fragmentChild); + }, [])); + } + return list.concat(child); +} +const METATYPES = ['name', 'httpEquiv', 'charSet', 'itemProp']; +/* + returns a function for filtering head child elements + which shouldn't be duplicated, like + Also adds support for deduplicated `key` properties +*/ +function unique() { + const keys = new Set(); + const tags = new Set(); + const metaTypes = new Set(); + const metaCategories = {}; + return (h) => { + if (h.key && typeof h.key !== 'number' && h.key.indexOf('.$') === 0) { + if (keys.has(h.key)) + return false; + keys.add(h.key); + return true; + } + switch (h.type) { + case 'title': + case 'base': + if (tags.has(h.type)) + return false; + tags.add(h.type); + break; + case 'meta': + for (let i = 0, len = METATYPES.length; i < len; i++) { + const metatype = METATYPES[i]; + if (!h.props.hasOwnProperty(metatype)) + continue; + if (metatype === 'charSet') { + if (metaTypes.has(metatype)) + return false; + metaTypes.add(metatype); + } + else { + const category = h.props[metatype]; + const categories = metaCategories[metatype] || new Set(); + if (categories.has(category)) + return false; + categories.add(category); + metaCategories[metatype] = categories; + } + } + break; + } + return true; + }; +} +/** + * + * @param headElement List of multiple <Head> instances + */ +function reduceComponents(headElements, props) { + return headElements + .reduce((list, headElement) => { + const headElementChildren = react_1.default.Children.toArray(headElement.props.children); + return list.concat(headElementChildren); + }, []) + .reduce(onlyReactElement, []) + .reverse() + .concat(defaultHead(props.inAmpMode)) + .filter(unique()) + .reverse() + .map((c, i) => { + const key = c.key || i; + return react_1.default.cloneElement(c, { key }); + }); +} +const Effect = side_effect_1.default(); +/** + * This component injects elements to `<head>` of your page. + * To avoid duplicated `tags` in `<head>` you can use the `key` property, which will make sure every tag is only rendered once. + */ +function Head({ children }) { + return (react_1.default.createElement(amp_context_1.AmpStateContext.Consumer, null, ampState => (react_1.default.createElement(head_manager_context_1.HeadManagerContext.Consumer, null, updateHead => (react_1.default.createElement(Effect, { reduceComponentsToState: reduceComponents, handleStateChange: updateHead, inAmpMode: amp_1.isInAmpMode(ampState) }, children)))))); +} +Head.rewind = Effect.rewind; +exports.default = Head; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/loadable-context.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/loadable-context.d.ts new file mode 100644 index 0000000..6a4131a --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/loadable-context.d.ts @@ -0,0 +1,4 @@ +import * as React from 'react'; +declare type CaptureFn = (moduleName: string) => void; +export declare const LoadableContext: React.Context<CaptureFn | null>; +export {}; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/loadable-context.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/loadable-context.js new file mode 100644 index 0000000..73d3480 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/loadable-context.js @@ -0,0 +1,12 @@ +"use strict"; +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; + result["default"] = mod; + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const React = __importStar(require("react")); +// @ts-ignore for some reason the React types don't like this, but it's correct. +exports.LoadableContext = React.createContext(null); diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/loadable.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/loadable.d.ts new file mode 100644 index 0000000..1c68ec6 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/loadable.d.ts @@ -0,0 +1,14 @@ +/* tslint:disable */ +import React from 'react' + +declare namespace LoadableExport { + interface ILoadable { + <P = {}>(opts: any): React.ComponentClass<P> + Map<P = {}>(opts: any): React.ComponentType<P> + preloadAll(): Promise<any> + } +} + +declare const LoadableExport: LoadableExport.ILoadable + +export = LoadableExport diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/loadable.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/loadable.js new file mode 100644 index 0000000..f731dc5 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/loadable.js @@ -0,0 +1,274 @@ +"use strict"; +/** +@copyright (c) 2017-present James Kyle <me@thejameskyle.com> + MIT License + Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE +*/ +// https://github.com/jamiebuilds/react-loadable/blob/v5.5.0/src/index.js +// Modified to be compatible with webpack 4 / Next.js +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const react_1 = __importDefault(require("react")); +const loadable_context_1 = require("./loadable-context"); +const ALL_INITIALIZERS = []; +const READY_INITIALIZERS = []; +let initialized = false; +function load(loader) { + let promise = loader(); + let state = { + loading: true, + loaded: null, + error: null + }; + state.promise = promise + .then(loaded => { + state.loading = false; + state.loaded = loaded; + return loaded; + }) + .catch(err => { + state.loading = false; + state.error = err; + throw err; + }); + return state; +} +function loadMap(obj) { + let state = { + loading: false, + loaded: {}, + error: null + }; + let promises = []; + try { + Object.keys(obj).forEach(key => { + let result = load(obj[key]); + if (!result.loading) { + state.loaded[key] = result.loaded; + state.error = result.error; + } + else { + state.loading = true; + } + promises.push(result.promise); + result.promise + .then(res => { + state.loaded[key] = res; + }) + .catch(err => { + state.error = err; + }); + }); + } + catch (err) { + state.error = err; + } + state.promise = Promise.all(promises) + .then(res => { + state.loading = false; + return res; + }) + .catch(err => { + state.loading = false; + throw err; + }); + return state; +} +function resolve(obj) { + return obj && obj.__esModule ? obj.default : obj; +} +function render(loaded, props) { + return react_1.default.createElement(resolve(loaded), props); +} +function createLoadableComponent(loadFn, options) { + var _a; + let opts = Object.assign({ + loader: null, + loading: null, + delay: 200, + timeout: null, + render: render, + webpack: null, + modules: null + }, options); + let res = null; + function init() { + if (!res) { + res = loadFn(opts.loader); + } + return res.promise; + } + // Server only + if (typeof window === 'undefined') { + ALL_INITIALIZERS.push(init); + } + // Client only + if (!initialized && + typeof window !== 'undefined' && + typeof opts.webpack === 'function') { + const moduleIds = opts.webpack(); + READY_INITIALIZERS.push(ids => { + for (const moduleId of moduleIds) { + if (ids.indexOf(moduleId) !== -1) { + return init(); + } + } + }); + } + return _a = class LoadableComponent extends react_1.default.Component { + constructor(props) { + super(props); + this.retry = () => { + this.setState({ error: null, loading: true, timedOut: false }); + res = loadFn(opts.loader); + this._loadModule(); + }; + init(); + this.state = { + error: res.error, + pastDelay: false, + timedOut: false, + loading: res.loading, + loaded: res.loaded + }; + } + static preload() { + return init(); + } + // TODO: change it before next major React release + // eslint-disable-next-line + UNSAFE_componentWillMount() { + this._mounted = true; + this._loadModule(); + } + _loadModule() { + if (this.context && Array.isArray(opts.modules)) { + opts.modules.forEach(moduleName => { + this.context(moduleName); + }); + } + if (!res.loading) { + return; + } + if (typeof opts.delay === 'number') { + if (opts.delay === 0) { + this.setState({ pastDelay: true }); + } + else { + this._delay = setTimeout(() => { + this.setState({ pastDelay: true }); + }, opts.delay); + } + } + if (typeof opts.timeout === 'number') { + this._timeout = setTimeout(() => { + this.setState({ timedOut: true }); + }, opts.timeout); + } + let update = () => { + if (!this._mounted) { + return; + } + this.setState({ + error: res.error, + loaded: res.loaded, + loading: res.loading + }); + this._clearTimeouts(); + }; + res.promise + .then(() => { + update(); + }) + // eslint-disable-next-line handle-callback-err + .catch(err => { + update(); + }); + } + componentWillUnmount() { + this._mounted = false; + this._clearTimeouts(); + } + _clearTimeouts() { + clearTimeout(this._delay); + clearTimeout(this._timeout); + } + render() { + if (this.state.loading || this.state.error) { + return react_1.default.createElement(opts.loading, { + isLoading: this.state.loading, + pastDelay: this.state.pastDelay, + timedOut: this.state.timedOut, + error: this.state.error, + retry: this.retry + }); + } + else if (this.state.loaded) { + return opts.render(this.state.loaded, this.props); + } + else { + return null; + } + } + }, + _a.contextType = loadable_context_1.LoadableContext, + _a; +} +function Loadable(opts) { + return createLoadableComponent(load, opts); +} +function LoadableMap(opts) { + if (typeof opts.render !== 'function') { + throw new Error('LoadableMap requires a `render(loaded, props)` function'); + } + return createLoadableComponent(loadMap, opts); +} +Loadable.Map = LoadableMap; +function flushInitializers(initializers, ids) { + let promises = []; + while (initializers.length) { + let init = initializers.pop(); + promises.push(init(ids)); + } + return Promise.all(promises).then(() => { + if (initializers.length) { + return flushInitializers(initializers, ids); + } + }); +} +Loadable.preloadAll = () => { + return new Promise((resolve, reject) => { + flushInitializers(ALL_INITIALIZERS).then(resolve, reject); + }); +}; +Loadable.preloadReady = (ids = []) => { + return new Promise(resolve => { + const res = () => { + initialized = true; + return resolve(); + }; + // We always will resolve, errors should be handled within loading UIs. + flushInitializers(READY_INITIALIZERS, ids).then(res, res); + }); +}; +if (typeof window !== 'undefined') { + window.__NEXT_PRELOADREADY = Loadable.preloadReady; +} +exports.default = Loadable; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/mitt.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/mitt.d.ts new file mode 100644 index 0000000..31635c5 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/mitt.d.ts @@ -0,0 +1,8 @@ +declare type Handler = (...evts: any[]) => void; +export declare type MittEmitter = { + on(type: string, handler: Handler): void; + off(type: string, handler: Handler): void; + emit(type: string, ...evts: any[]): void; +}; +export default function mitt(): MittEmitter; +export {}; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/mitt.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/mitt.js new file mode 100644 index 0000000..533646e --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/mitt.js @@ -0,0 +1,35 @@ +"use strict"; +/* +MIT License + +Copyright (c) Jason Miller (https://jasonformat.com/) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ +Object.defineProperty(exports, "__esModule", { value: true }); +function mitt() { + const all = Object.create(null); + return { + on(type, handler) { + ; + (all[type] || (all[type] = [])).push(handler); + }, + off(type, handler) { + if (all[type]) { + // tslint:disable-next-line:no-bitwise + all[type].splice(all[type].indexOf(handler) >>> 0, 1); + } + }, + emit(type, ...evts) { + ; + (all[type] || []).slice().map((handler) => { + handler(...evts); + }); + }, + }; +} +exports.default = mitt; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/request-context.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/request-context.d.ts new file mode 100644 index 0000000..3583aef --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/request-context.d.ts @@ -0,0 +1,2 @@ +import * as React from 'react'; +export declare const RequestContext: React.Context<any>; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/request-context.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/request-context.js new file mode 100644 index 0000000..bda828d --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/request-context.js @@ -0,0 +1,11 @@ +"use strict"; +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; + result["default"] = mod; + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const React = __importStar(require("react")); +exports.RequestContext = React.createContext(null); diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router-context.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router-context.d.ts new file mode 100644 index 0000000..d363b48 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router-context.d.ts @@ -0,0 +1,3 @@ +import * as React from 'react'; +import { NextRouter } from './router/router'; +export declare const RouterContext: React.Context<NextRouter>; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router-context.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router-context.js new file mode 100644 index 0000000..067ce7f --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router-context.js @@ -0,0 +1,11 @@ +"use strict"; +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; + result["default"] = mod; + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const React = __importStar(require("react")); +exports.RouterContext = React.createContext(null); diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/rewrite-url-for-export.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/rewrite-url-for-export.d.ts new file mode 100644 index 0000000..ae7cfc4 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/rewrite-url-for-export.d.ts @@ -0,0 +1 @@ +export declare function rewriteUrlForNextExport(url: string): string; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/rewrite-url-for-export.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/rewrite-url-for-export.js new file mode 100644 index 0000000..412f4e7 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/rewrite-url-for-export.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +function rewriteUrlForNextExport(url) { + const [pathname, hash] = url.split('#'); + // tslint:disable-next-line + let [path, qs] = pathname.split('?'); + path = path.replace(/\/$/, ''); + // Append a trailing slash if this path does not have an extension + if (!/\.[^/]+\/?$/.test(path)) + path += `/`; + if (qs) + path += '?' + qs; + if (hash) + path += '#' + hash; + return path; +} +exports.rewriteUrlForNextExport = rewriteUrlForNextExport; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/router.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/router.d.ts new file mode 100644 index 0000000..8feccfc --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/router.d.ts @@ -0,0 +1,96 @@ +/// <reference types="node" /> +import { ParsedUrlQuery } from 'querystring'; +import { ComponentType } from 'react'; +import { UrlObject } from 'url'; +import { MittEmitter } from '../mitt'; +import { NextPageContext } from '../utils'; +declare type Url = UrlObject | string; +export declare type BaseRouter = { + route: string; + pathname: string; + query: ParsedUrlQuery; + asPath: string; +}; +export declare type NextRouter = BaseRouter & Pick<Router, 'push' | 'replace' | 'reload' | 'back' | 'prefetch' | 'beforePopState' | 'events'>; +declare type RouteInfo = { + Component: ComponentType; + props?: any; + err?: Error; + error?: any; +}; +declare type Subscription = (data: RouteInfo, App?: ComponentType) => void; +declare type BeforePopStateCallback = (state: any) => boolean; +declare type ComponentLoadCancel = (() => void) | null; +export default class Router implements BaseRouter { + route: string; + pathname: string; + query: ParsedUrlQuery; + asPath: string; + /** + * Map of all components loaded in `Router` + */ + components: { + [pathname: string]: RouteInfo; + }; + sub: Subscription; + clc: ComponentLoadCancel; + pageLoader: any; + _bps: BeforePopStateCallback | undefined; + events: MittEmitter; + _wrapApp: (App: ComponentType) => any; + static events: MittEmitter; + constructor(pathname: string, query: ParsedUrlQuery, as: string, { initialProps, pageLoader, App, wrapApp, Component, err, subscription, }: { + subscription: Subscription; + initialProps: any; + pageLoader: any; + Component: ComponentType; + App: ComponentType; + wrapApp: (App: ComponentType) => any; + err?: Error; + }); + static _rewriteUrlForNextExport(url: string): string; + onPopState: (e: PopStateEvent) => void; + update(route: string, Component: ComponentType): void; + reload(): void; + /** + * Go back in history + */ + back(): void; + /** + * Performs a `pushState` with arguments + * @param url of the route + * @param as masks `url` for the browser + * @param options object you can define `shallow` and other options + */ + push(url: Url, as?: Url, options?: {}): Promise<boolean>; + /** + * Performs a `replaceState` with arguments + * @param url of the route + * @param as masks `url` for the browser + * @param options object you can define `shallow` and other options + */ + replace(url: Url, as?: Url, options?: {}): Promise<boolean>; + change(method: string, _url: Url, _as: Url, options: any): Promise<boolean>; + changeState(method: string, url: string, as: string, options?: {}): void; + getRouteInfo(route: string, pathname: string, query: any, as: string, shallow?: boolean): Promise<RouteInfo>; + set(route: string, pathname: string, query: any, as: string, data: RouteInfo): void; + /** + * Callback to execute before replacing router state + * @param cb callback to be executed + */ + beforePopState(cb: BeforePopStateCallback): void; + onlyAHashChange(as: string): boolean; + scrollToHash(as: string): void; + urlIsNew(asPath: string): boolean; + /** + * Prefetch `page` code, you may wait for the data during `page` rendering. + * This feature only works in production! + * @param url of prefetched `page` + */ + prefetch(url: string): Promise<void>; + fetchComponent(route: string): Promise<ComponentType>; + getInitialProps(Component: ComponentType, ctx: NextPageContext): Promise<any>; + abortComponentLoad(as: string): void; + notify(data: RouteInfo): void; +} +export {}; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/router.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/router.js new file mode 100644 index 0000000..3161aa0 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/router.js @@ -0,0 +1,480 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const url_1 = require("url"); +const mitt_1 = __importDefault(require("../mitt")); +const utils_1 = require("../utils"); +const rewrite_url_for_export_1 = require("./rewrite-url-for-export"); +const route_matcher_1 = require("./utils/route-matcher"); +const route_regex_1 = require("./utils/route-regex"); +const is_dynamic_1 = require("./utils/is-dynamic"); +function toRoute(path) { + return path.replace(/\/$/, '') || '/'; +} +class Router { + constructor(pathname, query, as, { initialProps, pageLoader, App, wrapApp, Component, err, subscription, }) { + this.onPopState = (e) => { + if (!e.state) { + // We get state as undefined for two reasons. + // 1. With older safari (< 8) and older chrome (< 34) + // 2. When the URL changed with # + // + // In the both cases, we don't need to proceed and change the route. + // (as it's already changed) + // But we can simply replace the state with the new changes. + // Actually, for (1) we don't need to nothing. But it's hard to detect that event. + // So, doing the following for (1) does no harm. + const { pathname, query } = this; + this.changeState('replaceState', utils_1.formatWithValidation({ pathname, query }), utils_1.getURL()); + return; + } + // Make sure we don't re-render on initial load, + // can be caused by navigating back from an external site + if (e.state.options && e.state.options.fromExternal) { + return; + } + // If the downstream application returns falsy, return. + // They will then be responsible for handling the event. + if (this._bps && !this._bps(e.state)) { + return; + } + const { url, as, options } = e.state; + if (process.env.NODE_ENV !== 'production') { + if (typeof url === 'undefined' || typeof as === 'undefined') { + console.warn('`popstate` event triggered but `event.state` did not have `url` or `as` https://err.sh/zeit/next.js/popstate-state-empty'); + } + } + this.replace(url, as, options); + }; + // represents the current component key + this.route = toRoute(pathname); + // set up the component cache (by route keys) + this.components = {}; + // We should not keep the cache, if there's an error + // Otherwise, this cause issues when when going back and + // come again to the errored page. + if (pathname !== '/_error') { + this.components[this.route] = { Component, props: initialProps, err }; + } + this.components['/_app'] = { Component: App }; + // Backwards compat for Router.router.events + // TODO: Should be remove the following major version as it was never documented + // @ts-ignore backwards compatibility + this.events = Router.events; + this.pageLoader = pageLoader; + this.pathname = pathname; + this.query = query; + this.asPath = as; + this.sub = subscription; + this.clc = null; + this._wrapApp = wrapApp; + if (typeof window !== 'undefined') { + // in order for `e.state` to work on the `onpopstate` event + // we have to register the initial route upon initialization + this.changeState('replaceState', utils_1.formatWithValidation({ pathname, query }), as); + window.addEventListener('popstate', this.onPopState); + window.addEventListener('unload', () => { + // Workaround for popstate firing on initial page load when + // navigating back from an external site + if (history.state) { + const { url, as, options } = history.state; + this.changeState('replaceState', url, as, Object.assign({}, options, { fromExternal: true })); + } + }); + } + } + // @deprecated backwards compatibility even though it's a private method. + static _rewriteUrlForNextExport(url) { + return rewrite_url_for_export_1.rewriteUrlForNextExport(url); + } + update(route, Component) { + const data = this.components[route]; + if (!data) { + throw new Error(`Cannot update unavailable route: ${route}`); + } + const newData = Object.assign({}, data, { Component }); + this.components[route] = newData; + // pages/_app.js updated + if (route === '/_app') { + this.notify(this.components[this.route]); + return; + } + if (route === this.route) { + this.notify(newData); + } + } + reload() { + window.location.reload(); + } + /** + * Go back in history + */ + back() { + window.history.back(); + } + /** + * Performs a `pushState` with arguments + * @param url of the route + * @param as masks `url` for the browser + * @param options object you can define `shallow` and other options + */ + push(url, as = url, options = {}) { + return this.change('pushState', url, as, options); + } + /** + * Performs a `replaceState` with arguments + * @param url of the route + * @param as masks `url` for the browser + * @param options object you can define `shallow` and other options + */ + replace(url, as = url, options = {}) { + return this.change('replaceState', url, as, options); + } + change(method, _url, _as, options) { + return new Promise((resolve, reject) => { + // marking route changes as a navigation start entry + if (utils_1.SUPPORTS_PERFORMANCE_USER_TIMING) { + performance.mark('routeChange'); + } + // If url and as provided as an object representation, + // we'll format them into the string version here. + const url = typeof _url === 'object' ? utils_1.formatWithValidation(_url) : _url; + let as = typeof _as === 'object' ? utils_1.formatWithValidation(_as) : _as; + // Add the ending slash to the paths. So, we can serve the + // "<page>/index.html" directly for the SSR page. + if (process.env.__NEXT_EXPORT_TRAILING_SLASH) { + // @ts-ignore this is temporarily global (attached to window) + if (__NEXT_DATA__.nextExport) { + as = rewrite_url_for_export_1.rewriteUrlForNextExport(as); + } + } + this.abortComponentLoad(as); + // If the url change is only related to a hash change + // We should not proceed. We should only change the state. + // WARNING: `_h` is an internal option for handing Next.js client-side + // hydration. Your app should _never_ use this property. It may change at + // any time without notice. + if (!options._h && this.onlyAHashChange(as)) { + this.asPath = as; + Router.events.emit('hashChangeStart', as); + this.changeState(method, url, as); + this.scrollToHash(as); + Router.events.emit('hashChangeComplete', as); + return resolve(true); + } + const { pathname, query, protocol } = url_1.parse(url, true); + if (!pathname || protocol) { + if (process.env.NODE_ENV !== 'production') { + throw new Error(`Invalid href passed to router: ${url} https://err.sh/zeit/next.js/invalid-href-passed`); + } + return resolve(false); + } + // If asked to change the current URL we should reload the current page + // (not location.reload() but reload getInitialProps and other Next.js stuffs) + // We also need to set the method = replaceState always + // as this should not go into the history (That's how browsers work) + // We should compare the new asPath to the current asPath, not the url + if (!this.urlIsNew(as)) { + method = 'replaceState'; + } + // @ts-ignore pathname is always a string + const route = toRoute(pathname); + const { shallow = false } = options; + if (is_dynamic_1.isDynamicRoute(route)) { + const { pathname: asPathname } = url_1.parse(as); + const rr = route_regex_1.getRouteRegex(route); + const routeMatch = route_matcher_1.getRouteMatcher(rr)(asPathname); + if (!routeMatch) { + console.error("Your `<Link>`'s `as` value is incompatible with the `href` value. This is invalid."); + return resolve(false); + } + // Merge params into `query`, overwriting any specified in search + Object.assign(query, routeMatch); + } + Router.events.emit('routeChangeStart', as); + // If shallow is true and the route exists in the router cache we reuse the previous result + // @ts-ignore pathname is always a string + this.getRouteInfo(route, pathname, query, as, shallow).then(routeInfo => { + const { error } = routeInfo; + if (error && error.cancelled) { + return resolve(false); + } + Router.events.emit('beforeHistoryChange', as); + this.changeState(method, url, as, options); + const hash = window.location.hash.substring(1); + if (process.env.NODE_ENV !== 'production') { + const appComp = this.components['/_app'].Component; + window.next.isPrerendered = + appComp.getInitialProps === appComp.origGetInitialProps && + !routeInfo.Component.getInitialProps; + } + // @ts-ignore pathname is always defined + this.set(route, pathname, query, as, Object.assign({}, routeInfo, { hash })); + if (error) { + Router.events.emit('routeChangeError', error, as); + throw error; + } + Router.events.emit('routeChangeComplete', as); + return resolve(true); + }, reject); + }); + } + changeState(method, url, as, options = {}) { + if (process.env.NODE_ENV !== 'production') { + if (typeof window.history === 'undefined') { + console.error(`Warning: window.history is not available.`); + return; + } + // @ts-ignore method should always exist on history + if (typeof window.history[method] === 'undefined') { + console.error(`Warning: window.history.${method} is not available`); + return; + } + } + if (method !== 'pushState' || utils_1.getURL() !== as) { + // @ts-ignore method should always exist on history + window.history[method]({ url, as, options }, null, as); + } + } + getRouteInfo(route, pathname, query, as, shallow = false) { + const cachedRouteInfo = this.components[route]; + // If there is a shallow route transition possible + // If the route is already rendered on the screen. + if (shallow && cachedRouteInfo && this.route === route) { + return Promise.resolve(cachedRouteInfo); + } + return new Promise((resolve, reject) => { + if (cachedRouteInfo) { + return resolve(cachedRouteInfo); + } + this.fetchComponent(route).then(Component => resolve({ Component }), reject); + }) + .then((routeInfo) => { + const { Component } = routeInfo; + if (process.env.NODE_ENV !== 'production') { + const { isValidElementType } = require('react-is'); + if (!isValidElementType(Component)) { + throw new Error(`The default export is not a React Component in page: "${pathname}"`); + } + } + return new Promise((resolve, reject) => { + // we provide AppTree later so this needs to be `any` + this.getInitialProps(Component, { + pathname, + query, + asPath: as, + }).then(props => { + routeInfo.props = props; + this.components[route] = routeInfo; + resolve(routeInfo); + }, reject); + }); + }) + .catch(err => { + return new Promise(resolve => { + if (err.code === 'PAGE_LOAD_ERROR') { + // If we can't load the page it could be one of following reasons + // 1. Page doesn't exists + // 2. Page does exist in a different zone + // 3. Internal error while loading the page + // So, doing a hard reload is the proper way to deal with this. + window.location.href = as; + // Changing the URL doesn't block executing the current code path. + // So, we need to mark it as a cancelled error and stop the routing logic. + err.cancelled = true; + // @ts-ignore TODO: fix the control flow here + return resolve({ error: err }); + } + if (err.cancelled) { + // @ts-ignore TODO: fix the control flow here + return resolve({ error: err }); + } + resolve(this.fetchComponent('/_error').then(Component => { + const routeInfo = { Component, err }; + return new Promise(resolve => { + this.getInitialProps(Component, { + err, + pathname, + query, + }).then(props => { + routeInfo.props = props; + routeInfo.error = err; + resolve(routeInfo); + }, gipErr => { + console.error('Error in error page `getInitialProps`: ', gipErr); + routeInfo.error = err; + routeInfo.props = {}; + resolve(routeInfo); + }); + }); + })); + }); + }); + } + set(route, pathname, query, as, data) { + this.route = route; + this.pathname = pathname; + this.query = query; + this.asPath = as; + this.notify(data); + } + /** + * Callback to execute before replacing router state + * @param cb callback to be executed + */ + beforePopState(cb) { + this._bps = cb; + } + onlyAHashChange(as) { + if (!this.asPath) + return false; + const [oldUrlNoHash, oldHash] = this.asPath.split('#'); + const [newUrlNoHash, newHash] = as.split('#'); + // Makes sure we scroll to the provided hash if the url/hash are the same + if (newHash && oldUrlNoHash === newUrlNoHash && oldHash === newHash) { + return true; + } + // If the urls are change, there's more than a hash change + if (oldUrlNoHash !== newUrlNoHash) { + return false; + } + // If the hash has changed, then it's a hash only change. + // This check is necessary to handle both the enter and + // leave hash === '' cases. The identity case falls through + // and is treated as a next reload. + return oldHash !== newHash; + } + scrollToHash(as) { + const [, hash] = as.split('#'); + // Scroll to top if the hash is just `#` with no value + if (hash === '') { + window.scrollTo(0, 0); + return; + } + // First we check if the element by id is found + const idEl = document.getElementById(hash); + if (idEl) { + idEl.scrollIntoView(); + return; + } + // If there's no element with the id, we check the `name` property + // To mirror browsers + const nameEl = document.getElementsByName(hash)[0]; + if (nameEl) { + nameEl.scrollIntoView(); + } + } + urlIsNew(asPath) { + return this.asPath !== asPath; + } + /** + * Prefetch `page` code, you may wait for the data during `page` rendering. + * This feature only works in production! + * @param url of prefetched `page` + */ + prefetch(url) { + return new Promise((resolve, reject) => { + const { pathname, protocol } = url_1.parse(url); + if (!pathname || protocol) { + if (process.env.NODE_ENV !== 'production') { + throw new Error(`Invalid href passed to router: ${url} https://err.sh/zeit/next.js/invalid-href-passed`); + } + return; + } + // Prefetch is not supported in development mode because it would trigger on-demand-entries + if (process.env.NODE_ENV !== 'production') + return; + // @ts-ignore pathname is always defined + const route = toRoute(pathname); + this.pageLoader.prefetch(route).then(resolve, reject); + }); + } + async fetchComponent(route) { + let cancelled = false; + const cancel = (this.clc = () => { + cancelled = true; + }); + const Component = await this.pageLoader.loadPage(route); + if (cancelled) { + const error = new Error(`Abort fetching component for route: "${route}"`); + error.cancelled = true; + throw error; + } + if (cancel === this.clc) { + this.clc = null; + } + return Component; + } + async getInitialProps(Component, ctx) { + let cancelled = false; + const cancel = () => { + cancelled = true; + }; + this.clc = cancel; + const { Component: App } = this.components['/_app']; + let props; + if ( + // @ts-ignore workaround for dead-code elimination + (self.__HAS_SPR || process.env.NODE_ENV !== 'production') && + Component.__NEXT_SPR) { + let status; + const url = ctx.asPath + ? ctx.asPath + : url_1.format({ + pathname: ctx.pathname, + query: ctx.query, + }); + props = await fetch(url, { + headers: { 'content-type': 'application/json' }, + }) + .then(res => { + if (!res.ok) { + status = res.status; + throw new Error('failed to load prerender data'); + } + return res.json(); + }) + .then((pageProps) => { + return { pageProps }; + }) + .catch((err) => { + return { error: err.message, status }; + }); + } + else { + const AppTree = this._wrapApp(App); + ctx.AppTree = AppTree; + props = await utils_1.loadGetInitialProps(App, { + AppTree, + Component, + router: this, + ctx, + }); + } + if (cancel === this.clc) { + this.clc = null; + } + if (cancelled) { + const err = new Error('Loading initial props cancelled'); + err.cancelled = true; + throw err; + } + return props; + } + abortComponentLoad(as) { + if (this.clc) { + const e = new Error('Route Cancelled'); + e.cancelled = true; + Router.events.emit('routeChangeError', e, as); + this.clc(); + this.clc = null; + } + } + notify(data) { + this.sub(data, this.components['/_app'].Component); + } +} +Router.events = mitt_1.default(); +exports.default = Router; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/index.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/index.d.ts new file mode 100644 index 0000000..825d312 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/index.d.ts @@ -0,0 +1,4 @@ +export { getRouteMatcher } from './route-matcher'; +export { getRouteRegex } from './route-regex'; +export { getSortedRoutes } from './sorted-routes'; +export { isDynamicRoute } from './is-dynamic'; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/index.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/index.js new file mode 100644 index 0000000..755ac52 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/index.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var route_matcher_1 = require("./route-matcher"); +exports.getRouteMatcher = route_matcher_1.getRouteMatcher; +var route_regex_1 = require("./route-regex"); +exports.getRouteRegex = route_regex_1.getRouteRegex; +var sorted_routes_1 = require("./sorted-routes"); +exports.getSortedRoutes = sorted_routes_1.getSortedRoutes; +var is_dynamic_1 = require("./is-dynamic"); +exports.isDynamicRoute = is_dynamic_1.isDynamicRoute; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/is-dynamic.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/is-dynamic.d.ts new file mode 100644 index 0000000..7d7ddbe --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/is-dynamic.d.ts @@ -0,0 +1 @@ +export declare function isDynamicRoute(route: string): boolean; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/is-dynamic.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/is-dynamic.js new file mode 100644 index 0000000..9d343b1 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/is-dynamic.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +// Identify /[param]/ in route string +const TEST_ROUTE = /\/\[[^\/]+?\](?=\/|$)/; +function isDynamicRoute(route) { + return TEST_ROUTE.test(route); +} +exports.isDynamicRoute = isDynamicRoute; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/route-matcher.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/route-matcher.d.ts new file mode 100644 index 0000000..1840e03 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/route-matcher.d.ts @@ -0,0 +1,4 @@ +import { getRouteRegex } from './route-regex'; +export declare function getRouteMatcher(routeRegex: ReturnType<typeof getRouteRegex>): (pathname: string | undefined) => false | { + [paramName: string]: string; +}; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/route-matcher.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/route-matcher.js new file mode 100644 index 0000000..45c1711 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/route-matcher.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +function getRouteMatcher(routeRegex) { + const { re, groups } = routeRegex; + return (pathname) => { + const routeMatch = re.exec(pathname); + if (!routeMatch) { + return false; + } + const params = {}; + Object.keys(groups).forEach((slugName) => { + const m = routeMatch[groups[slugName]]; + if (m !== undefined) { + params[slugName] = decodeURIComponent(m); + } + }); + return params; + }; +} +exports.getRouteMatcher = getRouteMatcher; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/route-regex.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/route-regex.d.ts new file mode 100644 index 0000000..8afe0e2 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/route-regex.d.ts @@ -0,0 +1,6 @@ +export declare function getRouteRegex(normalizedRoute: string): { + re: RegExp; + groups: { + [groupName: string]: number; + }; +}; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/route-regex.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/route-regex.js new file mode 100644 index 0000000..d05c8ae --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/route-regex.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +function getRouteRegex(normalizedRoute) { + // Escape all characters that could be considered RegEx + const escapedRoute = (normalizedRoute.replace(/\/$/, '') || '/').replace(/[|\\{}()[\]^$+*?.-]/g, '\\$&'); + const groups = {}; + let groupIndex = 1; + const parameterizedRoute = escapedRoute.replace(/\/\\\[([^\/]+?)\\\](?=\/|$)/g, (_, $1) => ((groups[$1 + // Un-escape key + .replace(/\\([|\\{}()[\]^$+*?.-])/g, '$1')] = groupIndex++), + '/([^/]+?)')); + return { + re: new RegExp('^' + parameterizedRoute + '(?:/)?$', 'i'), + groups, + }; +} +exports.getRouteRegex = getRouteRegex; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/sorted-routes.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/sorted-routes.d.ts new file mode 100644 index 0000000..2de4dfb --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/sorted-routes.d.ts @@ -0,0 +1 @@ +export declare function getSortedRoutes(normalizedPages: string[]): string[]; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/sorted-routes.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/sorted-routes.js new file mode 100644 index 0000000..1adad13 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/router/utils/sorted-routes.js @@ -0,0 +1,87 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +class UrlNode { + constructor() { + this.placeholder = true; + this.children = new Map(); + this.slugName = null; + } + hasSlug() { + return this.slugName != null; + } + insert(urlPath) { + this._insert(urlPath.split('/').filter(Boolean)); + } + smoosh() { + return this._smoosh(); + } + _smoosh(prefix = '/') { + const childrenPaths = [...this.children.keys()].sort(); + if (this.hasSlug()) { + childrenPaths.splice(childrenPaths.indexOf('[]'), 1); + } + const routes = childrenPaths + .map(c => this.children.get(c)._smoosh(`${prefix}${c}/`)) + .reduce((prev, curr) => [...prev, ...curr], []); + if (this.hasSlug()) { + routes.push(...this.children.get('[]')._smoosh(`${prefix}[${this.slugName}]/`)); + } + if (!this.placeholder) { + routes.unshift(prefix === '/' ? '/' : prefix.slice(0, -1)); + } + return routes; + } + _insert(urlPaths, slugNames = []) { + if (urlPaths.length === 0) { + this.placeholder = false; + return; + } + // The next segment in the urlPaths list + let nextSegment = urlPaths[0]; + // Check if the segment matches `[something]` + if (nextSegment.startsWith('[') && nextSegment.endsWith(']')) { + // Strip `[` and `]`, leaving only `something` + const slugName = nextSegment.slice(1, -1); + // If the specific segment already has a slug but the slug is not `something` + // This prevents collisions like: + // pages/[post]/index.js + // pages/[id]/index.js + // Because currently multiple dynamic params on the same segment level are not supported + if (this.hasSlug() && slugName !== this.slugName) { + // TODO: This error seems to be confusing for users, needs an err.sh link, the description can be based on above comment. + throw new Error('You cannot use different slug names for the same dynamic path.'); + } + if (slugNames.indexOf(slugName) !== -1) { + throw new Error(`You cannot have the same slug name "${slugName}" repeat within a single dynamic path`); + } + slugNames.push(slugName); + // slugName is kept as it can only be one particular slugName + this.slugName = slugName; + // nextSegment is overwritten to [] so that it can later be sorted specifically + nextSegment = '[]'; + } + // If this UrlNode doesn't have the nextSegment yet we create a new child UrlNode + if (!this.children.has(nextSegment)) { + this.children.set(nextSegment, new UrlNode()); + } + this.children.get(nextSegment)._insert(urlPaths.slice(1), slugNames); + } +} +function getSortedRoutes(normalizedPages) { + // First the UrlNode is created, and every UrlNode can have only 1 dynamic segment + // Eg you can't have pages/[post]/abc.js and pages/[hello]/something-else.js + // Only 1 dynamic segment per nesting level + // So in the case that is test/integration/dynamic-routing it'll be this: + // pages/[post]/comments.js + // pages/blog/[post]/comment/[id].js + // Both are fine because `pages/[post]` and `pages/blog` are on the same level + // So in this case `UrlNode` created here has `this.slugName === 'post'` + // And since your PR passed through `slugName` as an array basically it'd including it in too many possibilities + // Instead what has to be passed through is the upwards path's dynamic names + const root = new UrlNode(); + // Here the `root` gets injected multiple paths, and insert will break them up into sublevels + normalizedPages.forEach(pagePath => root.insert(pagePath)); + // Smoosh will then sort those sublevels up to the point where you get the correct route definition priority + return root.smoosh(); +} +exports.getSortedRoutes = getSortedRoutes; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/runtime-config.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/runtime-config.d.ts new file mode 100644 index 0000000..4710683 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/runtime-config.d.ts @@ -0,0 +1,3 @@ +declare const _default: () => any; +export default _default; +export declare function setConfig(configValue: any): void; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/runtime-config.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/runtime-config.js new file mode 100644 index 0000000..95085f4 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/runtime-config.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +let runtimeConfig; +exports.default = () => { + return runtimeConfig; +}; +function setConfig(configValue) { + runtimeConfig = configValue; +} +exports.setConfig = setConfig; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/side-effect.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/side-effect.d.ts new file mode 100644 index 0000000..d3c4d6d --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/side-effect.d.ts @@ -0,0 +1,28 @@ +import React from 'react'; +declare type State = Array<React.ReactElement<any>> | undefined; +declare type SideEffectProps = { + reduceComponentsToState: <T>(components: Array<React.ReactElement<any>>, props: T) => State; + handleStateChange?: (state: State) => void; + inAmpMode?: boolean; +}; +declare const _default: () => { + new (props: any): { + componentDidMount(): void; + componentDidUpdate(): void; + componentWillUnmount(): void; + render(): null; + context: any; + setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<SideEffectProps>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void; + forceUpdate(callBack?: (() => void) | undefined): void; + readonly props: Readonly<SideEffectProps> & Readonly<{ + children?: React.ReactNode; + }>; + state: Readonly<{}>; + refs: { + [key: string]: React.ReactInstance; + }; + }; + rewind(): State; + contextType?: React.Context<any> | undefined; +}; +export default _default; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/side-effect.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/side-effect.js new file mode 100644 index 0000000..de4e20e --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/side-effect.js @@ -0,0 +1,44 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const react_1 = require("react"); +const isServer = typeof window === 'undefined'; +exports.default = () => { + const mountedInstances = new Set(); + let state; + function emitChange(component) { + state = component.props.reduceComponentsToState([...mountedInstances], component.props); + if (component.props.handleStateChange) { + component.props.handleStateChange(state); + } + } + return class extends react_1.Component { + // Used when server rendering + static rewind() { + const recordedState = state; + state = undefined; + mountedInstances.clear(); + return recordedState; + } + constructor(props) { + super(props); + if (isServer) { + mountedInstances.add(this); + emitChange(this); + } + } + componentDidMount() { + mountedInstances.add(this); + emitChange(this); + } + componentDidUpdate() { + emitChange(this); + } + componentWillUnmount() { + mountedInstances.delete(this); + emitChange(this); + } + render() { + return null; + } + }; +}; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/utils.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/utils.d.ts new file mode 100644 index 0000000..4c4a232 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/utils.d.ts @@ -0,0 +1,164 @@ +/// <reference types="node" /> +import { UrlObject, URLFormatOptions } from 'url'; +import { ServerResponse, IncomingMessage } from 'http'; +import { ComponentType } from 'react'; +import { ParsedUrlQuery } from 'querystring'; +import { ManifestItem } from '../server/render'; +import { NextRouter } from './router/router'; +/** + * Types used by both next and next-server + */ +export declare type NextComponentType<C extends BaseContext = NextPageContext, IP = {}, P = {}> = ComponentType<P> & { + getInitialProps?(context: C): IP | Promise<IP>; +}; +export declare type DocumentType = NextComponentType<DocumentContext, DocumentInitialProps, DocumentProps>; +export declare type AppType = NextComponentType<AppContextType, AppInitialProps, AppPropsType>; +export declare type Enhancer<C> = (Component: C) => C; +export declare type ComponentsEnhancer = { + enhanceApp?: Enhancer<AppType>; + enhanceComponent?: Enhancer<NextComponentType>; +} | Enhancer<NextComponentType>; +export declare type RenderPageResult = { + html: string; + head?: Array<JSX.Element | null>; + dataOnly?: true; +}; +export declare type RenderPage = (options?: ComponentsEnhancer) => RenderPageResult | Promise<RenderPageResult>; +export declare type BaseContext = { + res?: ServerResponse; + [k: string]: any; +}; +export declare type NEXT_DATA = { + dataManager: string; + props: any; + page: string; + query: ParsedUrlQuery; + buildId: string; + assetPrefix?: string; + runtimeConfig?: { + [key: string]: any; + }; + nextExport?: boolean; + skeleton?: boolean; + dynamicIds?: string[]; + err?: Error & { + statusCode?: number; + }; +}; +/** + * `Next` context + */ +export interface NextPageContext { + /** + * Error object if encountered during rendering + */ + err?: Error & { + statusCode?: number; + } | null; + /** + * `HTTP` request object. + */ + req?: IncomingMessage; + /** + * `HTTP` response object. + */ + res?: ServerResponse; + /** + * Path section of `URL`. + */ + pathname: string; + /** + * Query string section of `URL` parsed as an object. + */ + query: ParsedUrlQuery; + /** + * `String` of the actual path including query. + */ + asPath?: string; + /** + * `Component` the tree of the App to use if needing to render separately + */ + AppTree: AppType; +} +export declare type AppContextType<R extends NextRouter = NextRouter> = { + Component: NextComponentType<NextPageContext>; + AppTree: AppType; + ctx: NextPageContext; + router: R; +}; +export declare type AppInitialProps = { + pageProps: any; +}; +export declare type AppPropsType<R extends NextRouter = NextRouter, P = {}> = AppInitialProps & { + Component: NextComponentType<NextPageContext, any, P>; + router: R; +}; +export declare type DocumentContext = NextPageContext & { + renderPage: RenderPage; +}; +export declare type DocumentInitialProps = RenderPageResult & { + styles?: React.ReactElement[] | React.ReactFragment; +}; +export declare type DocumentProps = DocumentInitialProps & { + __NEXT_DATA__: NEXT_DATA; + dangerousAsPath: string; + ampPath: string; + inAmpMode: boolean; + hybridAmp: boolean; + staticMarkup: boolean; + devFiles: string[]; + files: string[]; + dynamicImports: ManifestItem[]; + assetPrefix?: string; + canonicalBase: string; +}; +/** + * Next `API` route request + */ +export declare type NextApiRequest = IncomingMessage & { + /** + * Object of `query` values from url + */ + query: { + [key: string]: string | string[]; + }; + /** + * Object of `cookies` from header + */ + cookies: { + [key: string]: string; + }; + body: any; +}; +/** + * Send body of response + */ +declare type Send<T> = (body: T) => void; +/** + * Next `API` route response + */ +export declare type NextApiResponse<T = any> = ServerResponse & { + /** + * Send data `any` data in response + */ + send: Send<T>; + /** + * Send data `json` data in response + */ + json: Send<T>; + status: (statusCode: number) => NextApiResponse<T>; +}; +/** + * Utils + */ +export declare function execOnce(this: any, fn: (...args: any) => any): (...args: any) => void; +export declare function getLocationOrigin(): string; +export declare function getURL(): string; +export declare function getDisplayName(Component: ComponentType<any>): string; +export declare function isResSent(res: ServerResponse): boolean; +export declare function loadGetInitialProps<C extends BaseContext, IP = {}, P = {}>(Component: NextComponentType<C, IP, P>, ctx: C): Promise<IP>; +export declare const urlObjectKeys: string[]; +export declare function formatWithValidation(url: UrlObject, options?: URLFormatOptions): string; +export declare const SUPPORTS_PERFORMANCE: boolean; +export declare const SUPPORTS_PERFORMANCE_USER_TIMING: boolean; +export {}; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/utils.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/utils.js new file mode 100644 index 0000000..e364ac8 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/lib/utils.js @@ -0,0 +1,96 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const url_1 = require("url"); +/** + * Utils + */ +function execOnce(fn) { + let used = false; + return (...args) => { + if (!used) { + used = true; + fn.apply(this, args); + } + }; +} +exports.execOnce = execOnce; +function getLocationOrigin() { + const { protocol, hostname, port } = window.location; + return `${protocol}//${hostname}${port ? ':' + port : ''}`; +} +exports.getLocationOrigin = getLocationOrigin; +function getURL() { + const { href } = window.location; + const origin = getLocationOrigin(); + return href.substring(origin.length); +} +exports.getURL = getURL; +function getDisplayName(Component) { + return typeof Component === 'string' + ? Component + : Component.displayName || Component.name || 'Unknown'; +} +exports.getDisplayName = getDisplayName; +function isResSent(res) { + return res.finished || res.headersSent; +} +exports.isResSent = isResSent; +async function loadGetInitialProps(Component, ctx) { + if (process.env.NODE_ENV !== 'production') { + if (Component.prototype && Component.prototype.getInitialProps) { + const message = `"${getDisplayName(Component)}.getInitialProps()" is defined as an instance method - visit https://err.sh/zeit/next.js/get-initial-props-as-an-instance-method for more information.`; + throw new Error(message); + } + } + // when called from _app `ctx` is nested in `ctx` + const res = ctx.res || (ctx.ctx && ctx.ctx.res); + if (!Component.getInitialProps) { + return {}; + } + const props = await Component.getInitialProps(ctx); + if (res && isResSent(res)) { + return props; + } + if (!props) { + const message = `"${getDisplayName(Component)}.getInitialProps()" should resolve to an object. But found "${props}" instead.`; + throw new Error(message); + } + if (process.env.NODE_ENV !== 'production') { + if (Object.keys(props).length === 0 && !ctx.ctx) { + console.warn(`${getDisplayName(Component)} returned an empty object from \`getInitialProps\`. This de-optimizes and prevents automatic prerendering. https://err.sh/zeit/next.js/empty-object-getInitialProps`); + } + } + return props; +} +exports.loadGetInitialProps = loadGetInitialProps; +exports.urlObjectKeys = [ + 'auth', + 'hash', + 'host', + 'hostname', + 'href', + 'path', + 'pathname', + 'port', + 'protocol', + 'query', + 'search', + 'slashes', +]; +function formatWithValidation(url, options) { + if (process.env.NODE_ENV === 'development') { + if (url !== null && typeof url === 'object') { + Object.keys(url).forEach(key => { + if (exports.urlObjectKeys.indexOf(key) === -1) { + console.warn(`Unknown key passed via urlObject into url.format: ${key}`); + } + }); + } + } + return url_1.format(url, options); +} +exports.formatWithValidation = formatWithValidation; +exports.SUPPORTS_PERFORMANCE = typeof performance !== 'undefined'; +exports.SUPPORTS_PERFORMANCE_USER_TIMING = exports.SUPPORTS_PERFORMANCE && + typeof performance.mark === 'function' && + typeof performance.measure === 'function'; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/api-utils.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/api-utils.d.ts new file mode 100644 index 0000000..7c4899e --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/api-utils.d.ts @@ -0,0 +1,71 @@ +/// <reference types="node" /> +import { IncomingMessage } from 'http'; +import { NextApiResponse, NextApiRequest } from '../lib/utils'; +import { Params } from './router'; +export declare type NextApiRequestCookies = { + [key: string]: string; +}; +export declare type NextApiRequestQuery = { + [key: string]: string | string[]; +}; +export declare function apiResolver(req: NextApiRequest, res: NextApiResponse, params: any, resolverModule: any): Promise<void>; +/** + * Parse incoming message like `json` or `urlencoded` + * @param req request object + */ +export declare function parseBody(req: NextApiRequest, limit: string | number): Promise<any>; +/** + * Parsing query arguments from request `url` string + * @param url of request + * @returns Object with key name of query argument and its value + */ +export declare function getQueryParser({ url }: IncomingMessage): () => NextApiRequestQuery; +/** + * Parse cookeies from `req` header + * @param req request object + */ +export declare function getCookieParser(req: IncomingMessage): () => NextApiRequestCookies; +/** + * + * @param res response object + * @param statusCode `HTTP` status code of response + */ +export declare function sendStatusCode(res: NextApiResponse, statusCode: number): NextApiResponse<any>; +/** + * Send `any` body to response + * @param res response object + * @param body of response + */ +export declare function sendData(res: NextApiResponse, body: any): void; +/** + * Send `JSON` object + * @param res response object + * @param jsonBody of data + */ +export declare function sendJson(res: NextApiResponse, jsonBody: any): void; +/** + * Custom error class + */ +export declare class ApiError extends Error { + readonly statusCode: number; + constructor(statusCode: number, message: string); +} +/** + * Sends error in `response` + * @param res response object + * @param statusCode of response + * @param message of response + */ +export declare function sendError(res: NextApiResponse, statusCode: number, message: string): void; +interface LazyProps { + req: NextApiRequest; + params?: Params | boolean; +} +/** + * Execute getter function only if its needed + * @param LazyProps `req` and `params` for lazyProp + * @param prop name of property + * @param getter function to get data + */ +export declare function setLazyProp<T>({ req, params }: LazyProps, prop: string, getter: () => T): void; +export {}; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/api-utils.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/api-utils.js new file mode 100644 index 0000000..cd2b90f --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/api-utils.js @@ -0,0 +1,231 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const stream_1 = require("stream"); +const raw_body_1 = __importDefault(require("raw-body")); +const content_type_1 = require("content-type"); +const load_components_1 = require("./load-components"); +async function apiResolver(req, res, params, resolverModule) { + try { + let config = {}; + let bodyParser = true; + if (!resolverModule) { + res.statusCode = 404; + res.end('Not Found'); + return; + } + if (resolverModule.config) { + config = resolverModule.config; + if (config.api && config.api.bodyParser === false) { + bodyParser = false; + } + } + // Parsing of cookies + setLazyProp({ req }, 'cookies', getCookieParser(req)); + // Parsing query string + setLazyProp({ req, params }, 'query', getQueryParser(req)); + // // Parsing of body + if (bodyParser) { + req.body = await parseBody(req, config.api && config.api.bodyParser && config.api.bodyParser.sizeLimit + ? config.api.bodyParser.sizeLimit + : '1mb'); + } + res.status = statusCode => sendStatusCode(res, statusCode); + res.send = data => sendData(res, data); + res.json = data => sendJson(res, data); + const resolver = load_components_1.interopDefault(resolverModule); + resolver(req, res); + } + catch (e) { + if (e instanceof ApiError) { + sendError(res, e.statusCode, e.message); + } + else { + console.error(e); + sendError(res, 500, 'Internal Server Error'); + } + } +} +exports.apiResolver = apiResolver; +/** + * Parse incoming message like `json` or `urlencoded` + * @param req request object + */ +async function parseBody(req, limit) { + const contentType = content_type_1.parse(req.headers['content-type'] || 'text/plain'); + const { type, parameters } = contentType; + const encoding = parameters.charset || 'utf-8'; + let buffer; + try { + buffer = await raw_body_1.default(req, { encoding, limit }); + } + catch (e) { + if (e.type === 'entity.too.large') { + throw new ApiError(413, `Body exceeded ${limit} limit`); + } + else { + throw new ApiError(400, 'Invalid body'); + } + } + const body = buffer.toString(); + if (type === 'application/json' || type === 'application/ld+json') { + return parseJson(body); + } + else if (type === 'application/x-www-form-urlencoded') { + const qs = require('querystring'); + return qs.decode(body); + } + else { + return body; + } +} +exports.parseBody = parseBody; +/** + * Parse `JSON` and handles invalid `JSON` strings + * @param str `JSON` string + */ +function parseJson(str) { + try { + return JSON.parse(str); + } + catch (e) { + throw new ApiError(400, 'Invalid JSON'); + } +} +/** + * Parsing query arguments from request `url` string + * @param url of request + * @returns Object with key name of query argument and its value + */ +function getQueryParser({ url }) { + return function parseQuery() { + const { URL } = require('url'); + // we provide a placeholder base url because we only want searchParams + const params = new URL(url, 'https://n').searchParams; + const query = {}; + for (const [key, value] of params) { + query[key] = value; + } + return query; + }; +} +exports.getQueryParser = getQueryParser; +/** + * Parse cookeies from `req` header + * @param req request object + */ +function getCookieParser(req) { + return function parseCookie() { + const header = req.headers.cookie; + if (!header) { + return {}; + } + const { parse } = require('cookie'); + return parse(Array.isArray(header) ? header.join(';') : header); + }; +} +exports.getCookieParser = getCookieParser; +/** + * + * @param res response object + * @param statusCode `HTTP` status code of response + */ +function sendStatusCode(res, statusCode) { + res.statusCode = statusCode; + return res; +} +exports.sendStatusCode = sendStatusCode; +/** + * Send `any` body to response + * @param res response object + * @param body of response + */ +function sendData(res, body) { + if (body === null) { + res.end(); + return; + } + const contentType = res.getHeader('Content-Type'); + if (Buffer.isBuffer(body)) { + if (!contentType) { + res.setHeader('Content-Type', 'application/octet-stream'); + } + res.setHeader('Content-Length', body.length); + res.end(body); + return; + } + if (body instanceof stream_1.Stream) { + if (!contentType) { + res.setHeader('Content-Type', 'application/octet-stream'); + } + body.pipe(res); + return; + } + let str = body; + // Stringify JSON body + if (typeof body === 'object' || typeof body === 'number') { + str = JSON.stringify(body); + res.setHeader('Content-Type', 'application/json; charset=utf-8'); + } + res.setHeader('Content-Length', Buffer.byteLength(str)); + res.end(str); +} +exports.sendData = sendData; +/** + * Send `JSON` object + * @param res response object + * @param jsonBody of data + */ +function sendJson(res, jsonBody) { + // Set header to application/json + res.setHeader('Content-Type', 'application/json; charset=utf-8'); + // Use send to handle request + res.send(jsonBody); +} +exports.sendJson = sendJson; +/** + * Custom error class + */ +class ApiError extends Error { + constructor(statusCode, message) { + super(message); + this.statusCode = statusCode; + } +} +exports.ApiError = ApiError; +/** + * Sends error in `response` + * @param res response object + * @param statusCode of response + * @param message of response + */ +function sendError(res, statusCode, message) { + res.statusCode = statusCode; + res.statusMessage = message; + res.end(message); +} +exports.sendError = sendError; +/** + * Execute getter function only if its needed + * @param LazyProps `req` and `params` for lazyProp + * @param prop name of property + * @param getter function to get data + */ +function setLazyProp({ req, params }, prop, getter) { + const opts = { configurable: true, enumerable: true }; + const optsReset = Object.assign({}, opts, { writable: true }); + Object.defineProperty(req, prop, Object.assign({}, opts, { get: () => { + let value = getter(); + if (params && typeof params !== 'boolean') { + value = Object.assign({}, value, params); + } + // we set the property on the object to avoid recalculating it + Object.defineProperty(req, prop, Object.assign({}, optsReset, { value })); + return value; + }, set: value => { + Object.defineProperty(req, prop, Object.assign({}, optsReset, { value })); + } })); +} +exports.setLazyProp = setLazyProp; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/config.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/config.d.ts new file mode 100644 index 0000000..57f47c5 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/config.d.ts @@ -0,0 +1,4 @@ +export default function loadConfig(phase: string, dir: string, customConfig: any): { + [key: string]: any; +}; +export declare function isTargetLikeServerless(target: string): boolean; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/config.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/config.js new file mode 100644 index 0000000..d388da4 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/config.js @@ -0,0 +1,119 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const chalk_1 = __importDefault(require("chalk")); +const find_up_1 = __importDefault(require("find-up")); +const os_1 = __importDefault(require("os")); +const constants_1 = require("../lib/constants"); +const utils_1 = require("../lib/utils"); +const targets = ['server', 'serverless', 'experimental-serverless-trace']; +const defaultConfig = { + env: [], + webpack: null, + webpackDevMiddleware: null, + distDir: '.next', + assetPrefix: '', + configOrigin: 'default', + useFileSystemPublicRoutes: true, + generateBuildId: () => null, + generateEtags: true, + pageExtensions: ['tsx', 'ts', 'jsx', 'js'], + target: process.env.__NEXT_BUILDER_EXPERIMENTAL_TARGET || 'server', + poweredByHeader: true, + compress: true, + onDemandEntries: { + maxInactiveAge: 60 * 1000, + pagesBufferLength: 2, + }, + amp: { + canonicalBase: '', + }, + exportTrailingSlash: false, + experimental: { + cpus: Math.max(1, (Number(process.env.CIRCLE_NODE_TOTAL) || + (os_1.default.cpus() || { length: 1 }).length) - 1), + ampBindInitData: false, + profiling: false, + documentMiddleware: false, + granularChunks: false, + publicDirectory: false, + modern: false, + }, + future: { + excludeDefaultMomentLocales: false, + }, + serverRuntimeConfig: {}, + publicRuntimeConfig: {}, +}; +const experimentalWarning = utils_1.execOnce(() => { + console.warn(chalk_1.default.yellow.bold('Warning: ') + + chalk_1.default.bold('You have enabled experimental feature(s).')); + console.warn(`Experimental features are not covered by semver, and may cause unexpected or broken application behavior. ` + + `Use them at your own risk.`); + console.warn(); +}); +function assignDefaults(userConfig) { + Object.keys(userConfig).forEach((key) => { + if (key === 'experimental' && + userConfig[key] && + userConfig[key] !== defaultConfig[key]) { + experimentalWarning(); + } + const maybeObject = userConfig[key]; + if (!!maybeObject && maybeObject.constructor === Object) { + userConfig[key] = Object.assign({}, (defaultConfig[key] || {}), userConfig[key]); + } + }); + return Object.assign({}, defaultConfig, userConfig); +} +function normalizeConfig(phase, config) { + if (typeof config === 'function') { + config = config(phase, { defaultConfig }); + if (typeof config.then === 'function') { + throw new Error('> Promise returned in next config. https://err.sh/zeit/next.js/promise-in-next-config'); + } + } + return config; +} +function loadConfig(phase, dir, customConfig) { + if (customConfig) { + return assignDefaults(Object.assign({ configOrigin: 'server' }, customConfig)); + } + const path = find_up_1.default.sync(constants_1.CONFIG_FILE, { + cwd: dir, + }); + // If config file was found + if (path && path.length) { + const userConfigModule = require(path); + const userConfig = normalizeConfig(phase, userConfigModule.default || userConfigModule); + if (userConfig.target && !targets.includes(userConfig.target)) { + throw new Error(`Specified target is invalid. Provided: "${userConfig.target}" should be one of ${targets.join(', ')}`); + } + if (userConfig.amp && userConfig.amp.canonicalBase) { + const { canonicalBase } = userConfig.amp || {}; + userConfig.amp = userConfig.amp || {}; + userConfig.amp.canonicalBase = + (canonicalBase.endsWith('/') + ? canonicalBase.slice(0, -1) + : canonicalBase) || ''; + } + if (userConfig.target && + userConfig.target !== 'server' && + userConfig.publicRuntimeConfig && + Object.keys(userConfig.publicRuntimeConfig).length !== 0) { + // TODO: change error message tone to "Only compatible with [fat] server mode" + throw new Error('Cannot use publicRuntimeConfig with target=serverless https://err.sh/zeit/next.js/serverless-publicRuntimeConfig'); + } + return assignDefaults(Object.assign({ configOrigin: constants_1.CONFIG_FILE }, userConfig)); + } + return defaultConfig; +} +exports.default = loadConfig; +function isTargetLikeServerless(target) { + const isServerless = target === 'serverless'; + const isServerlessTrace = target === 'experimental-serverless-trace'; + return isServerless || isServerlessTrace; +} +exports.isTargetLikeServerless = isTargetLikeServerless; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/get-page-files.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/get-page-files.d.ts new file mode 100644 index 0000000..635c931 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/get-page-files.d.ts @@ -0,0 +1,7 @@ +export declare type BuildManifest = { + devFiles: string[]; + pages: { + [page: string]: string[]; + }; +}; +export declare function getPageFiles(buildManifest: BuildManifest, page: string): string[]; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/get-page-files.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/get-page-files.js new file mode 100644 index 0000000..a3fb8ac --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/get-page-files.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const normalize_page_path_1 = require("./normalize-page-path"); +function getPageFiles(buildManifest, page) { + const normalizedPage = normalize_page_path_1.normalizePagePath(page); + let files = buildManifest.pages[normalizedPage]; + if (!files) { + files = buildManifest.pages[normalizedPage.replace(/\/index$/, '') || '/']; + } + if (!files) { + // tslint:disable-next-line + console.warn(`Could not find files for ${normalizedPage} in .next/build-manifest.json`); + return []; + } + return files; +} +exports.getPageFiles = getPageFiles; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/lib/path-match.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/lib/path-match.d.ts new file mode 100644 index 0000000..c418b96 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/lib/path-match.d.ts @@ -0,0 +1,2 @@ +declare const _default: () => (path: string) => (pathname: string | undefined, params?: any) => any; +export default _default; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/lib/path-match.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/lib/path-match.js new file mode 100644 index 0000000..6c2559a --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/lib/path-match.js @@ -0,0 +1,42 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +// We borrow this code from https://github.com/pillarjs/path-match +// That's because, ^^^ package comes with very old version of path-to-regexp +// So, it'll give us issues when the app has used a newer version of path-to-regexp +// (When webpack resolving packages) +const pathToRegexp = require('path-to-regexp'); +exports.default = () => { + return (path) => { + const keys = []; + const re = pathToRegexp(path, keys, {}); + return (pathname, params) => { + const m = re.exec(pathname); + if (!m) + return false; + params = params || {}; + let key; + let param; + for (let i = 0; i < keys.length; i++) { + key = keys[i]; + param = m[i + 1]; + if (!param) + continue; + params[key.name] = decodeParam(param); + if (key.repeat) + params[key.name] = params[key.name].split(key.delimiter); + } + return params; + }; + }; +}; +function decodeParam(param) { + try { + return decodeURIComponent(param); + } + catch (_) { + const err = new Error('failed to decode param'); + // @ts-ignore DECODE_FAILED is handled + err.code = 'DECODE_FAILED'; + throw err; + } +} diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/lib/recursive-readdir-sync.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/lib/recursive-readdir-sync.d.ts new file mode 100644 index 0000000..a796bc8 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/lib/recursive-readdir-sync.d.ts @@ -0,0 +1,7 @@ +/** + * Recursively read directory + * @param {string[]=[]} arr This doesn't have to be provided, it's used for the recursion + * @param {string=dir`} rootDir Used to replace the initial path, only the relative path is left, it's faster than path.relative. + * @returns Array holding all relative paths + */ +export declare function recursiveReadDirSync(dir: string, arr?: string[], rootDir?: string): string[]; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/lib/recursive-readdir-sync.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/lib/recursive-readdir-sync.js new file mode 100644 index 0000000..25a7d62 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/lib/recursive-readdir-sync.js @@ -0,0 +1,27 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const fs_1 = __importDefault(require("fs")); +const path_1 = require("path"); +/** + * Recursively read directory + * @param {string[]=[]} arr This doesn't have to be provided, it's used for the recursion + * @param {string=dir`} rootDir Used to replace the initial path, only the relative path is left, it's faster than path.relative. + * @returns Array holding all relative paths + */ +function recursiveReadDirSync(dir, arr = [], rootDir = dir) { + const result = fs_1.default.readdirSync(dir); + result.forEach((part) => { + const absolutePath = path_1.join(dir, part); + const pathStat = fs_1.default.statSync(absolutePath); + if (pathStat.isDirectory()) { + recursiveReadDirSync(absolutePath, arr, rootDir); + return; + } + arr.push(absolutePath.replace(rootDir, '')); + }); + return arr; +} +exports.recursiveReadDirSync = recursiveReadDirSync; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/load-components.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/load-components.d.ts new file mode 100644 index 0000000..4cd7287 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/load-components.d.ts @@ -0,0 +1,12 @@ +import { PageConfig } from 'next-server/types'; +export declare function interopDefault(mod: any): any; +export declare type LoadComponentsReturnType = { + Component: any; + pageConfig: PageConfig; + buildManifest?: any; + reactLoadableManifest?: any; + Document?: any; + DocumentMiddleware?: any; + App?: any; +}; +export declare function loadComponents(distDir: string, buildId: string, pathname: string, serverless: boolean): Promise<LoadComponentsReturnType>; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/load-components.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/load-components.js new file mode 100644 index 0000000..5cf6a55 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/load-components.js @@ -0,0 +1,37 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const constants_1 = require("../lib/constants"); +const path_1 = require("path"); +const require_1 = require("./require"); +function interopDefault(mod) { + return mod.default || mod; +} +exports.interopDefault = interopDefault; +async function loadComponents(distDir, buildId, pathname, serverless) { + if (serverless) { + const Component = await require_1.requirePage(pathname, distDir, serverless); + return { Component, pageConfig: Component.config || {} }; + } + const documentPath = path_1.join(distDir, constants_1.SERVER_DIRECTORY, constants_1.CLIENT_STATIC_FILES_PATH, buildId, 'pages', '_document'); + const appPath = path_1.join(distDir, constants_1.SERVER_DIRECTORY, constants_1.CLIENT_STATIC_FILES_PATH, buildId, 'pages', '_app'); + const DocumentMod = require(documentPath); + const { middleware: DocumentMiddleware } = DocumentMod; + const ComponentMod = require_1.requirePage(pathname, distDir, serverless); + const [buildManifest, reactLoadableManifest, Component, Document, App,] = await Promise.all([ + require(path_1.join(distDir, constants_1.BUILD_MANIFEST)), + require(path_1.join(distDir, constants_1.REACT_LOADABLE_MANIFEST)), + interopDefault(ComponentMod), + interopDefault(DocumentMod), + interopDefault(require(appPath)), + ]); + return { + App, + Document, + Component, + buildManifest, + DocumentMiddleware, + reactLoadableManifest, + pageConfig: ComponentMod.config || {}, + }; +} +exports.loadComponents = loadComponents; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/next-server.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/next-server.d.ts new file mode 100644 index 0000000..2bc4783 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/next-server.d.ts @@ -0,0 +1,90 @@ +/// <reference types="node" /> +import { IncomingMessage, ServerResponse } from 'http'; +import { ParsedUrlQuery } from 'querystring'; +import { UrlWithParsedQuery } from 'url'; +import Router from './router'; +declare type NextConfig = any; +export declare type ServerConstructor = { + /** + * Where the Next project is located - @default '.' + */ + dir?: string; + staticMarkup?: boolean; + /** + * Hide error messages containing server information - @default false + */ + quiet?: boolean; + /** + * Object what you would use in next.config.js - @default {} + */ + conf?: NextConfig; +}; +export default class Server { + dir: string; + quiet: boolean; + nextConfig: NextConfig; + distDir: string; + publicDir: string; + pagesManifest: string; + buildId: string; + renderOpts: { + poweredByHeader: boolean; + ampBindInitData: boolean; + staticMarkup: boolean; + buildId: string; + generateEtags: boolean; + runtimeConfig?: { + [key: string]: any; + }; + assetPrefix?: string; + canonicalBase: string; + documentMiddlewareEnabled: boolean; + dev?: boolean; + }; + private compression?; + router: Router; + private dynamicRoutes?; + constructor({ dir, staticMarkup, quiet, conf, }?: ServerConstructor); + private currentPhase; + private logError; + private handleRequest; + getRequestHandler(): (req: IncomingMessage, res: ServerResponse, parsedUrl?: UrlWithParsedQuery | undefined) => Promise<void>; + setAssetPrefix(prefix?: string): void; + prepare(): Promise<void>; + private close; + private setImmutableAssetCacheControl; + private generateRoutes; + /** + * Resolves `API` request, in development builds on demand + * @param req http request + * @param res http response + * @param pathname path of request + */ + private handleApiRequest; + /** + * Resolves path to resolver function + * @param pathname path of request + */ + private resolveApiRequest; + private generatePublicRoutes; + private getDynamicRoutes; + private handleCompression; + private run; + private sendHTML; + render(req: IncomingMessage, res: ServerResponse, pathname: string, query?: ParsedUrlQuery, parsedUrl?: UrlWithParsedQuery): Promise<void>; + private findPageComponents; + private renderToHTMLWithComponents; + renderToHTML(req: IncomingMessage, res: ServerResponse, pathname: string, query?: ParsedUrlQuery, { amphtml, dataOnly, hasAmp, }?: { + amphtml?: boolean; + hasAmp?: boolean; + dataOnly?: boolean; + }): Promise<string | null>; + renderError(err: Error | null, req: IncomingMessage, res: ServerResponse, pathname: string, query?: ParsedUrlQuery): Promise<void>; + renderErrorToHTML(err: Error | null, req: IncomingMessage, res: ServerResponse, _pathname: string, query?: ParsedUrlQuery): Promise<any>; + render404(req: IncomingMessage, res: ServerResponse, parsedUrl?: UrlWithParsedQuery): Promise<void>; + serveStatic(req: IncomingMessage, res: ServerResponse, path: string, parsedUrl?: UrlWithParsedQuery): Promise<void>; + private isServeableUrl; + private readBuildId; + private readonly _isLikeServerless; +} +export {}; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/next-server.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/next-server.js new file mode 100644 index 0000000..c4f07fd --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/next-server.js @@ -0,0 +1,434 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; + result["default"] = mod; + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const compression_1 = __importDefault(require("compression")); +const fs_1 = __importDefault(require("fs")); +const path_1 = require("path"); +const querystring_1 = require("querystring"); +const url_1 = require("url"); +const constants_1 = require("../lib/constants"); +const utils_1 = require("../lib/router/utils"); +const envConfig = __importStar(require("../lib/runtime-config")); +const api_utils_1 = require("./api-utils"); +const config_1 = __importStar(require("./config")); +const recursive_readdir_sync_1 = require("./lib/recursive-readdir-sync"); +const load_components_1 = require("./load-components"); +const render_1 = require("./render"); +const require_1 = require("./require"); +const router_1 = __importStar(require("./router")); +const send_html_1 = require("./send-html"); +const serve_static_1 = require("./serve-static"); +const utils_2 = require("./utils"); +class Server { + constructor({ dir = '.', staticMarkup = false, quiet = false, conf = null, } = {}) { + this.dir = path_1.resolve(dir); + this.quiet = quiet; + const phase = this.currentPhase(); + this.nextConfig = config_1.default(phase, this.dir, conf); + this.distDir = path_1.join(this.dir, this.nextConfig.distDir); + // this.pagesDir = join(this.dir, 'pages') + this.publicDir = path_1.join(this.dir, constants_1.CLIENT_PUBLIC_FILES_PATH); + this.pagesManifest = path_1.join(this.distDir, this.nextConfig.target === 'server' + ? constants_1.SERVER_DIRECTORY + : constants_1.SERVERLESS_DIRECTORY, constants_1.PAGES_MANIFEST); + // Only serverRuntimeConfig needs the default + // publicRuntimeConfig gets it's default in client/index.js + const { serverRuntimeConfig = {}, publicRuntimeConfig, assetPrefix, generateEtags, compress, } = this.nextConfig; + this.buildId = this.readBuildId(); + this.renderOpts = { + ampBindInitData: this.nextConfig.experimental.ampBindInitData, + poweredByHeader: this.nextConfig.poweredByHeader, + canonicalBase: this.nextConfig.amp.canonicalBase, + documentMiddlewareEnabled: this.nextConfig.experimental + .documentMiddleware, + staticMarkup, + buildId: this.buildId, + generateEtags, + }; + // Only the `publicRuntimeConfig` key is exposed to the client side + // It'll be rendered as part of __NEXT_DATA__ on the client side + if (Object.keys(publicRuntimeConfig).length > 0) { + this.renderOpts.runtimeConfig = publicRuntimeConfig; + } + if (compress && this.nextConfig.target === 'server') { + this.compression = compression_1.default(); + } + // Initialize next/config with the environment configuration + envConfig.setConfig({ + serverRuntimeConfig, + publicRuntimeConfig, + }); + const routes = this.generateRoutes(); + this.router = new router_1.default(routes); + this.setAssetPrefix(assetPrefix); + } + currentPhase() { + return constants_1.PHASE_PRODUCTION_SERVER; + } + logError(...args) { + if (this.quiet) + return; + // tslint:disable-next-line + console.error(...args); + } + handleRequest(req, res, parsedUrl) { + // Parse url if parsedUrl not provided + if (!parsedUrl || typeof parsedUrl !== 'object') { + const url = req.url; + parsedUrl = url_1.parse(url, true); + } + // Parse the querystring ourselves if the user doesn't handle querystring parsing + if (typeof parsedUrl.query === 'string') { + parsedUrl.query = querystring_1.parse(parsedUrl.query); + } + res.statusCode = 200; + return this.run(req, res, parsedUrl).catch(err => { + this.logError(err); + res.statusCode = 500; + res.end('Internal Server Error'); + }); + } + getRequestHandler() { + return this.handleRequest.bind(this); + } + setAssetPrefix(prefix) { + this.renderOpts.assetPrefix = prefix ? prefix.replace(/\/$/, '') : ''; + } + // Backwards compatibility + async prepare() { } + // Backwards compatibility + async close() { } + setImmutableAssetCacheControl(res) { + res.setHeader('Cache-Control', 'public, max-age=31536000, immutable'); + } + generateRoutes() { + const routes = [ + { + match: router_1.route('/_next/static/:path*'), + fn: async (req, res, params, parsedUrl) => { + // The commons folder holds commonschunk files + // The chunks folder holds dynamic entries + // The buildId folder holds pages and potentially other assets. As buildId changes per build it can be long-term cached. + if (params.path[0] === constants_1.CLIENT_STATIC_FILES_RUNTIME || + params.path[0] === 'chunks' || + params.path[0] === this.buildId) { + this.setImmutableAssetCacheControl(res); + } + const p = path_1.join(this.distDir, constants_1.CLIENT_STATIC_FILES_PATH, ...(params.path || [])); + await this.serveStatic(req, res, p, parsedUrl); + }, + }, + { + match: router_1.route('/_next/:path*'), + // This path is needed because `render()` does a check for `/_next` and the calls the routing again + fn: async (req, res, _params, parsedUrl) => { + await this.render404(req, res, parsedUrl); + }, + }, + { + // It's very important to keep this route's param optional. + // (but it should support as many params as needed, separated by '/') + // Otherwise this will lead to a pretty simple DOS attack. + // See more: https://github.com/zeit/next.js/issues/2617 + match: router_1.route('/static/:path*'), + fn: async (req, res, params, parsedUrl) => { + const p = path_1.join(this.dir, 'static', ...(params.path || [])); + await this.serveStatic(req, res, p, parsedUrl); + }, + }, + { + match: router_1.route('/api/:path*'), + fn: async (req, res, params, parsedUrl) => { + const { pathname } = parsedUrl; + await this.handleApiRequest(req, res, pathname); + }, + }, + ]; + if (this.nextConfig.experimental.publicDirectory && + fs_1.default.existsSync(this.publicDir)) { + routes.push(...this.generatePublicRoutes()); + } + if (this.nextConfig.useFileSystemPublicRoutes) { + this.dynamicRoutes = this.getDynamicRoutes(); + // It's very important to keep this route's param optional. + // (but it should support as many params as needed, separated by '/') + // Otherwise this will lead to a pretty simple DOS attack. + // See more: https://github.com/zeit/next.js/issues/2617 + routes.push({ + match: router_1.route('/:path*'), + fn: async (req, res, _params, parsedUrl) => { + const { pathname, query } = parsedUrl; + if (!pathname) { + throw new Error('pathname is undefined'); + } + await this.render(req, res, pathname, query, parsedUrl); + }, + }); + } + return routes; + } + /** + * Resolves `API` request, in development builds on demand + * @param req http request + * @param res http response + * @param pathname path of request + */ + async handleApiRequest(req, res, pathname) { + let params = false; + let resolverFunction; + try { + resolverFunction = await this.resolveApiRequest(pathname); + } + catch (err) { } + if (this.dynamicRoutes && + this.dynamicRoutes.length > 0 && + !resolverFunction) { + for (const dynamicRoute of this.dynamicRoutes) { + params = dynamicRoute.match(pathname); + if (params) { + resolverFunction = await this.resolveApiRequest(dynamicRoute.page); + break; + } + } + } + if (!resolverFunction) { + return this.render404(req, res); + } + if (!this.renderOpts.dev && this._isLikeServerless) { + const mod = require(resolverFunction); + if (typeof mod.default === 'function') { + return mod.default(req, res); + } + } + await api_utils_1.apiResolver(req, res, params, resolverFunction ? require(resolverFunction) : undefined); + } + /** + * Resolves path to resolver function + * @param pathname path of request + */ + resolveApiRequest(pathname) { + return require_1.getPagePath(pathname, this.distDir, this._isLikeServerless, this.renderOpts.dev); + } + generatePublicRoutes() { + const routes = []; + const publicFiles = recursive_readdir_sync_1.recursiveReadDirSync(this.publicDir); + const serverBuildPath = path_1.join(this.distDir, this._isLikeServerless ? constants_1.SERVERLESS_DIRECTORY : constants_1.SERVER_DIRECTORY); + const pagesManifest = require(path_1.join(serverBuildPath, constants_1.PAGES_MANIFEST)); + publicFiles.forEach(path => { + const unixPath = path.replace(/\\/g, '/'); + // Only include public files that will not replace a page path + if (!pagesManifest[unixPath]) { + routes.push({ + match: router_1.route(unixPath), + fn: async (req, res, _params, parsedUrl) => { + const p = path_1.join(this.publicDir, unixPath); + await this.serveStatic(req, res, p, parsedUrl); + }, + }); + } + }); + return routes; + } + getDynamicRoutes() { + const manifest = require(this.pagesManifest); + const dynamicRoutedPages = Object.keys(manifest).filter(utils_1.isDynamicRoute); + return utils_1.getSortedRoutes(dynamicRoutedPages).map(page => ({ + page, + match: utils_1.getRouteMatcher(utils_1.getRouteRegex(page)), + })); + } + handleCompression(req, res) { + if (this.compression) { + this.compression(req, res, () => { }); + } + } + async run(req, res, parsedUrl) { + this.handleCompression(req, res); + try { + const fn = this.router.match(req, res, parsedUrl); + if (fn) { + await fn(); + return; + } + } + catch (err) { + if (err.code === 'DECODE_FAILED') { + res.statusCode = 400; + return this.renderError(null, req, res, '/_error', {}); + } + throw err; + } + await this.render404(req, res, parsedUrl); + } + async sendHTML(req, res, html) { + const { generateEtags, poweredByHeader } = this.renderOpts; + return send_html_1.sendHTML(req, res, html, { generateEtags, poweredByHeader }); + } + async render(req, res, pathname, query = {}, parsedUrl) { + const url = req.url; + if (utils_2.isInternalUrl(url)) { + return this.handleRequest(req, res, parsedUrl); + } + if (utils_2.isBlockedPage(pathname)) { + return this.render404(req, res, parsedUrl); + } + const html = await this.renderToHTML(req, res, pathname, query, { + dataOnly: (this.renderOpts.ampBindInitData && Boolean(query.dataOnly)) || + (req.headers && + (req.headers.accept || '').indexOf('application/amp.bind+json') !== + -1), + }); + // Request was ended by the user + if (html === null) { + return; + } + return this.sendHTML(req, res, html); + } + async findPageComponents(pathname, query = {}) { + const serverless = !this.renderOpts.dev && this._isLikeServerless; + // try serving a static AMP version first + if (query.amp) { + try { + return await load_components_1.loadComponents(this.distDir, this.buildId, (pathname === '/' ? '/index' : pathname) + '.amp', serverless); + } + catch (err) { + if (err.code !== 'ENOENT') + throw err; + } + } + return await load_components_1.loadComponents(this.distDir, this.buildId, pathname, serverless); + } + async renderToHTMLWithComponents(req, res, pathname, query = {}, result, opts) { + // handle static page + if (typeof result.Component === 'string') { + return result.Component; + } + // handle serverless + if (typeof result.Component === 'object' && + typeof result.Component.renderReqToHTML === 'function') { + return result.Component.renderReqToHTML(req, res); + } + return render_1.renderToHTML(req, res, pathname, query, Object.assign({}, result, opts)); + } + renderToHTML(req, res, pathname, query = {}, { amphtml, dataOnly, hasAmp, } = {}) { + return this.findPageComponents(pathname, query) + .then(result => { + return this.renderToHTMLWithComponents(req, res, pathname, query, result, Object.assign({}, this.renderOpts, { amphtml, hasAmp, dataOnly })); + }, err => { + if (err.code !== 'ENOENT' || !this.dynamicRoutes) { + return Promise.reject(err); + } + for (const dynamicRoute of this.dynamicRoutes) { + const params = dynamicRoute.match(pathname); + if (!params) { + continue; + } + return this.findPageComponents(dynamicRoute.page, query).then(result => { + return this.renderToHTMLWithComponents(req, res, dynamicRoute.page, Object.assign({}, query, params), result, Object.assign({}, this.renderOpts, { amphtml, hasAmp, dataOnly })); + }); + } + return Promise.reject(err); + }) + .catch(err => { + if (err && err.code === 'ENOENT') { + res.statusCode = 404; + return this.renderErrorToHTML(null, req, res, pathname, query); + } + else { + this.logError(err); + res.statusCode = 500; + return this.renderErrorToHTML(err, req, res, pathname, query); + } + }); + } + async renderError(err, req, res, pathname, query = {}) { + res.setHeader('Cache-Control', 'no-cache, no-store, max-age=0, must-revalidate'); + const html = await this.renderErrorToHTML(err, req, res, pathname, query); + if (html === null) { + return; + } + return this.sendHTML(req, res, html); + } + async renderErrorToHTML(err, req, res, _pathname, query = {}) { + const result = await this.findPageComponents('/_error', query); + let html; + try { + html = await this.renderToHTMLWithComponents(req, res, '/_error', query, result, Object.assign({}, this.renderOpts, { err })); + } + catch (err) { + console.error(err); + res.statusCode = 500; + html = 'Internal Server Error'; + } + return html; + } + async render404(req, res, parsedUrl) { + const url = req.url; + const { pathname, query } = parsedUrl ? parsedUrl : url_1.parse(url, true); + if (!pathname) { + throw new Error('pathname is undefined'); + } + res.statusCode = 404; + return this.renderError(null, req, res, pathname, query); + } + async serveStatic(req, res, path, parsedUrl) { + if (!this.isServeableUrl(path)) { + return this.render404(req, res, parsedUrl); + } + if (!(req.method === 'GET' || req.method === 'HEAD')) { + res.statusCode = 405; + res.setHeader('Allow', ['GET', 'HEAD']); + return this.renderError(null, req, res, path); + } + try { + await serve_static_1.serveStatic(req, res, path); + } + catch (err) { + if (err.code === 'ENOENT' || err.statusCode === 404) { + this.render404(req, res, parsedUrl); + } + else if (err.statusCode === 412) { + res.statusCode = 412; + return this.renderError(err, req, res, path); + } + else { + throw err; + } + } + } + isServeableUrl(path) { + const resolved = path_1.resolve(path); + if (resolved.indexOf(path_1.join(this.distDir) + path_1.sep) !== 0 && + resolved.indexOf(path_1.join(this.dir, 'static') + path_1.sep) !== 0 && + resolved.indexOf(path_1.join(this.dir, 'public') + path_1.sep) !== 0) { + // Seems like the user is trying to traverse the filesystem. + return false; + } + return true; + } + readBuildId() { + const buildIdFile = path_1.join(this.distDir, constants_1.BUILD_ID_FILE); + try { + return fs_1.default.readFileSync(buildIdFile, 'utf8').trim(); + } + catch (err) { + if (!fs_1.default.existsSync(buildIdFile)) { + throw new Error(`Could not find a valid build in the '${this.distDir}' directory! Try building your app with 'next build' before starting the server.`); + } + throw err; + } + } + get _isLikeServerless() { + return config_1.isTargetLikeServerless(this.nextConfig.target); + } +} +exports.default = Server; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/normalize-page-path.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/normalize-page-path.d.ts new file mode 100644 index 0000000..150339b --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/normalize-page-path.d.ts @@ -0,0 +1 @@ +export declare function normalizePagePath(page: string): string; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/normalize-page-path.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/normalize-page-path.js new file mode 100644 index 0000000..242b367 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/normalize-page-path.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const path_1 = require("path"); +function normalizePagePath(page) { + // If the page is `/` we need to append `/index`, otherwise the returned directory root will be bundles instead of pages + if (page === '/') { + page = '/index'; + } + // Resolve on anything that doesn't start with `/` + if (page[0] !== '/') { + page = `/${page}`; + } + // Throw when using ../ etc in the pathname + const resolvedPage = path_1.posix.normalize(page); + if (page !== resolvedPage) { + throw new Error('Requested and resolved page mismatch'); + } + return page; +} +exports.normalizePagePath = normalizePagePath; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/optimize-amp.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/optimize-amp.d.ts new file mode 100644 index 0000000..096d700 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/optimize-amp.d.ts @@ -0,0 +1 @@ +export default function optimize(html: string): Promise<string>; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/optimize-amp.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/optimize-amp.js new file mode 100644 index 0000000..05c444b --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/optimize-amp.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +async function optimize(html) { + let AmpOptimizer; + try { + AmpOptimizer = require('@ampproject/toolbox-optimizer'); + } + catch (_) { + return html; + } + const optimizer = AmpOptimizer.create(); + return optimizer.transformHtml(html); +} +exports.default = optimize; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/render.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/render.d.ts new file mode 100644 index 0000000..e302465 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/render.d.ts @@ -0,0 +1,50 @@ +/// <reference types="node" /> +import { IncomingMessage, ServerResponse } from 'http'; +import { ParsedUrlQuery } from 'querystring'; +import React from 'react'; +import { DocumentType, AppType, NextPageContext } from '../lib/utils'; +import { BuildManifest } from './get-page-files'; +import { PageConfig } from 'next-server/types'; +export declare type ManifestItem = { + id: number | string; + name: string; + file: string; + publicPath: string; +}; +declare type ReactLoadableManifest = { + [moduleId: string]: ManifestItem[]; +}; +declare type RenderOpts = { + documentMiddlewareEnabled: boolean; + ampBindInitData: boolean; + staticMarkup: boolean; + buildId: string; + canonicalBase: string; + runtimeConfig?: { + [key: string]: any; + }; + dangerousAsPath: string; + assetPrefix?: string; + err?: Error | null; + nextExport?: boolean; + skeleton?: boolean; + dev?: boolean; + ampMode?: any; + ampPath?: string; + dataOnly?: boolean; + inAmpMode?: boolean; + hybridAmp?: boolean; + buildManifest: BuildManifest; + reactLoadableManifest: ReactLoadableManifest; + pageConfig: PageConfig; + Component: React.ComponentType; + Document: DocumentType; + DocumentMiddleware: (ctx: NextPageContext) => void; + App: AppType; + ErrorDebug?: React.ComponentType<{ + error: Error; + }>; + ampValidator?: (html: string, pathname: string) => Promise<void>; +}; +export declare function renderToHTML(req: IncomingMessage, res: ServerResponse, pathname: string, query: ParsedUrlQuery, renderOpts: RenderOpts): Promise<string | null>; +export {}; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/render.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/render.js new file mode 100644 index 0000000..a6f557d --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/render.js @@ -0,0 +1,334 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; + result["default"] = mod; + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const react_1 = __importDefault(require("react")); +const server_1 = require("react-dom/server"); +const mitt_1 = __importDefault(require("../lib/mitt")); +const utils_1 = require("../lib/utils"); +const head_1 = __importStar(require("../lib/head")); +// @ts-ignore types will be added later as it's an internal module +const loadable_1 = __importDefault(require("../lib/loadable")); +const data_manager_context_1 = require("../lib/data-manager-context"); +const loadable_context_1 = require("../lib/loadable-context"); +const router_context_1 = require("../lib/router-context"); +const data_manager_1 = require("../lib/data-manager"); +const get_page_files_1 = require("./get-page-files"); +const amp_context_1 = require("../lib/amp-context"); +const optimize_amp_1 = __importDefault(require("./optimize-amp")); +const amp_1 = require("../lib/amp"); +function noRouter() { + const message = 'No router instance found. you should only use "next/router" inside the client side of your app. https://err.sh/zeit/next.js/no-router-instance'; + throw new Error(message); +} +class ServerRouter { + constructor(pathname, query, as) { + this.route = pathname.replace(/\/$/, '') || '/'; + this.pathname = pathname; + this.query = query; + this.asPath = as; + } + push() { + noRouter(); + } + replace() { + noRouter(); + } + reload() { + noRouter(); + } + back() { + noRouter(); + } + prefetch() { + noRouter(); + } + beforePopState() { + noRouter(); + } +} +// TODO: Remove in the next major version, as this would mean the user is adding event listeners in server-side `render` method +ServerRouter.events = mitt_1.default(); +function enhanceComponents(options, App, Component) { + // For backwards compatibility + if (typeof options === 'function') { + return { + App, + Component: options(Component), + }; + } + return { + App: options.enhanceApp ? options.enhanceApp(App) : App, + Component: options.enhanceComponent + ? options.enhanceComponent(Component) + : Component, + }; +} +function render(renderElementToString, element, ampMode) { + let html; + let head; + try { + html = renderElementToString(element); + } + finally { + head = head_1.default.rewind() || head_1.defaultHead(amp_1.isInAmpMode(ampMode)); + } + return { html, head }; +} +function renderDocument(Document, { dataManagerData, props, docProps, pathname, query, buildId, canonicalBase, assetPrefix, runtimeConfig, nextExport, skeleton, dynamicImportsIds, dangerousAsPath, err, dev, ampPath, ampState, inAmpMode, hybridAmp, staticMarkup, devFiles, files, dynamicImports, }) { + return ('<!DOCTYPE html>' + + server_1.renderToStaticMarkup(react_1.default.createElement(amp_context_1.AmpStateContext.Provider, { value: ampState }, + react_1.default.createElement(Document, Object.assign({ __NEXT_DATA__: { + dataManager: dataManagerData, + props, + page: pathname, + query, + buildId, + assetPrefix: assetPrefix === '' ? undefined : assetPrefix, + runtimeConfig, + nextExport, + skeleton, + dynamicIds: dynamicImportsIds.length === 0 ? undefined : dynamicImportsIds, + err: err ? serializeError(dev, err) : undefined, + }, dangerousAsPath: dangerousAsPath, canonicalBase: canonicalBase, ampPath: ampPath, inAmpMode: inAmpMode, hybridAmp: hybridAmp, staticMarkup: staticMarkup, devFiles: devFiles, files: files, dynamicImports: dynamicImports, assetPrefix: assetPrefix }, docProps))))); +} +async function renderToHTML(req, res, pathname, query, renderOpts) { + pathname = pathname === '/index' ? '/' : pathname; + const { err, dev = false, documentMiddlewareEnabled = false, ampBindInitData = false, staticMarkup = false, ampPath = '', App, Document, pageConfig = {}, DocumentMiddleware, Component, buildManifest, reactLoadableManifest, ErrorDebug, } = renderOpts; + await loadable_1.default.preloadAll(); // Make sure all dynamic imports are loaded + let isStaticPage = pageConfig.experimentalPrerender === true; + let isSkeleton = false; + if (dev) { + const { isValidElementType } = require('react-is'); + if (!isValidElementType(Component)) { + throw new Error(`The default export is not a React Component in page: "${pathname}"`); + } + if (!isValidElementType(App)) { + throw new Error(`The default export is not a React Component in page: "/_app"`); + } + if (!isValidElementType(Document)) { + throw new Error(`The default export is not a React Component in page: "/_document"`); + } + isStaticPage = typeof Component.getInitialProps !== 'function'; + const defaultAppGetInitialProps = App.getInitialProps === App.origGetInitialProps; + isStaticPage = isStaticPage && defaultAppGetInitialProps; + if (isStaticPage) { + // remove query values except ones that will be set during export + query = { + amp: query.amp, + }; + req.url = pathname; + renderOpts.nextExport = true; + } + } + // might want to change previewing of skeleton from `?_nextPreviewSkeleton=(truthy)` + isSkeleton = + pageConfig.experimentalPrerender === true && !!query._nextPreviewSkeleton; + // remove from query so it doesn't end up in document + delete query._nextPreviewSkeleton; + if (isSkeleton) + renderOpts.nextExport = true; + // @ts-ignore url will always be set + const asPath = req.url; + const router = new ServerRouter(pathname, query, asPath); + const ctx = { + err, + req: isStaticPage ? undefined : req, + res: isStaticPage ? undefined : res, + pathname, + query, + asPath, + AppTree: (props) => { + return (react_1.default.createElement(AppContainer, null, + react_1.default.createElement(App, Object.assign({}, props, { Component: Component, router: router })))); + }, + }; + let props; + const isDataPrerender = pageConfig.experimentalPrerender === true && + req.headers['content-type'] === 'application/json'; + if (documentMiddlewareEnabled && typeof DocumentMiddleware === 'function') { + await DocumentMiddleware(ctx); + } + let dataManager; + if (ampBindInitData) { + dataManager = new data_manager_1.DataManager(); + } + const ampState = { + ampFirst: pageConfig.amp === true, + hasQuery: Boolean(query.amp), + hybrid: pageConfig.amp === 'hybrid', + }; + const reactLoadableModules = []; + const AppContainer = ({ children }) => (react_1.default.createElement(router_context_1.RouterContext.Provider, { value: router }, + react_1.default.createElement(data_manager_context_1.DataManagerContext.Provider, { value: dataManager }, + react_1.default.createElement(amp_context_1.AmpStateContext.Provider, { value: ampState }, + react_1.default.createElement(loadable_context_1.LoadableContext.Provider, { value: moduleName => reactLoadableModules.push(moduleName) }, children))))); + try { + props = + isSkeleton && !isDataPrerender + ? { pageProps: {} } + : await utils_1.loadGetInitialProps(App, { + AppTree: ctx.AppTree, + Component, + router, + ctx, + }); + } + catch (err) { + if (!dev || !err) + throw err; + ctx.err = err; + renderOpts.err = err; + } + if (isDataPrerender) { + res.setHeader('content-type', 'application/json'); + res.end(JSON.stringify(props.pageProps || {})); + return null; + } + // the response might be finished on the getInitialProps call + if (utils_1.isResSent(res)) + return null; + const devFiles = buildManifest.devFiles; + const files = [ + ...new Set([ + ...get_page_files_1.getPageFiles(buildManifest, pathname), + ...get_page_files_1.getPageFiles(buildManifest, '/_app'), + ]), + ]; + const renderElementToString = staticMarkup + ? server_1.renderToStaticMarkup + : server_1.renderToString; + const renderPageError = () => { + if (ctx.err && ErrorDebug) { + return render(renderElementToString, react_1.default.createElement(ErrorDebug, { error: ctx.err }), ampState); + } + if (dev && (props.router || props.Component)) { + throw new Error(`'router' and 'Component' can not be returned in getInitialProps from _app.js https://err.sh/zeit/next.js/cant-override-next-props`); + } + }; + let renderPage; + if (ampBindInitData) { + const ssrPrepass = require('react-ssr-prepass'); + renderPage = async (options = {}) => { + const renderError = renderPageError(); + if (renderError) + return renderError; + const { App: EnhancedApp, Component: EnhancedComponent, } = enhanceComponents(options, App, Component); + const Application = () => (react_1.default.createElement(AppContainer, null, + react_1.default.createElement(EnhancedApp, Object.assign({ Component: EnhancedComponent, router: router }, props)))); + const element = react_1.default.createElement(Application, null); + try { + return render(renderElementToString, element, ampState); + } + catch (err) { + if (err && typeof err === 'object' && typeof err.then === 'function') { + await ssrPrepass(element); + if (renderOpts.dataOnly) { + return { + html: '', + head: [], + dataOnly: true, + }; + } + else { + return render(renderElementToString, element, ampState); + } + } + throw err; + } + }; + } + else { + renderPage = (options = {}) => { + const renderError = renderPageError(); + if (renderError) + return renderError; + const { App: EnhancedApp, Component: EnhancedComponent, } = enhanceComponents(options, App, Component); + return render(renderElementToString, react_1.default.createElement(AppContainer, null, + react_1.default.createElement(EnhancedApp, Object.assign({ Component: EnhancedComponent, router: router }, props))), ampState); + }; + } + const docProps = await utils_1.loadGetInitialProps(Document, Object.assign({}, ctx, { renderPage })); + // the response might be finished on the getInitialProps call + if (utils_1.isResSent(res)) + return null; + let dataManagerData = '[]'; + if (dataManager) { + dataManagerData = JSON.stringify([...dataManager.getData()]); + } + if (!docProps || typeof docProps.html !== 'string') { + const message = `"${utils_1.getDisplayName(Document)}.getInitialProps()" should resolve to an object with a "html" prop set with a valid html string`; + throw new Error(message); + } + if (docProps.dataOnly) { + return dataManagerData; + } + const dynamicImportIdsSet = new Set(); + const dynamicImports = []; + for (const mod of reactLoadableModules) { + const manifestItem = reactLoadableManifest[mod]; + if (manifestItem) { + manifestItem.map(item => { + dynamicImports.push(item); + dynamicImportIdsSet.add(item.id); + }); + } + } + const dynamicImportsIds = [...dynamicImportIdsSet]; + const inAmpMode = amp_1.isInAmpMode(ampState); + const hybridAmp = ampState.hybrid; + // update renderOpts so export knows current state + renderOpts.inAmpMode = inAmpMode; + renderOpts.hybridAmp = hybridAmp; + if (isSkeleton) + renderOpts.skeleton = true; + let html = renderDocument(Document, Object.assign({}, renderOpts, { dangerousAsPath: router.asPath, dataManagerData, + ampState, + props, + docProps, + pathname, + ampPath, + query, + inAmpMode, + hybridAmp, + dynamicImportsIds, + dynamicImports, + files, + devFiles })); + if (inAmpMode && html) { + // use replace to allow rendering directly to body in AMP mode + html = html.replace('__NEXT_AMP_RENDER_TARGET__', `<!-- __NEXT_DATA__ -->${docProps.html}`); + html = await optimize_amp_1.default(html); + if (renderOpts.ampValidator) { + await renderOpts.ampValidator(html, pathname); + } + } + if (inAmpMode || hybridAmp) { + // fix & being escaped for amphtml rel link + html = html.replace(/&amp=1/g, '&=1'); + } + return html; +} +exports.renderToHTML = renderToHTML; +function errorToJSON(err) { + const { name, message, stack } = err; + return { name, message, stack }; +} +function serializeError(dev, err) { + if (dev) { + return errorToJSON(err); + } + return { + name: 'Internal Server Error.', + message: '500 - Internal Server Error.', + statusCode: 500, + }; +} diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/require.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/require.d.ts new file mode 100644 index 0000000..3358317 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/require.d.ts @@ -0,0 +1,3 @@ +export declare function pageNotFoundError(page: string): Error; +export declare function getPagePath(page: string, distDir: string, serverless: boolean, dev?: boolean): string; +export declare function requirePage(page: string, distDir: string, serverless: boolean): any; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/require.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/require.js new file mode 100644 index 0000000..c6c7d6a --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/require.js @@ -0,0 +1,49 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const fs_1 = __importDefault(require("fs")); +const path_1 = require("path"); +const util_1 = require("util"); +const constants_1 = require("../lib/constants"); +const normalize_page_path_1 = require("./normalize-page-path"); +const readFile = util_1.promisify(fs_1.default.readFile); +function pageNotFoundError(page) { + const err = new Error(`Cannot find module for page: ${page}`); + err.code = 'ENOENT'; + return err; +} +exports.pageNotFoundError = pageNotFoundError; +function getPagePath(page, distDir, serverless, dev) { + const serverBuildPath = path_1.join(distDir, serverless && !dev ? constants_1.SERVERLESS_DIRECTORY : constants_1.SERVER_DIRECTORY); + const pagesManifest = require(path_1.join(serverBuildPath, constants_1.PAGES_MANIFEST)); + try { + page = normalize_page_path_1.normalizePagePath(page); + page = page === '/' ? '/index' : page; + } + catch (err) { + // tslint:disable-next-line + console.error(err); + throw pageNotFoundError(page); + } + if (!pagesManifest[page]) { + const cleanedPage = page.replace(/\/index$/, '') || '/'; + if (!pagesManifest[cleanedPage]) { + throw pageNotFoundError(page); + } + else { + page = cleanedPage; + } + } + return path_1.join(serverBuildPath, pagesManifest[page]); +} +exports.getPagePath = getPagePath; +function requirePage(page, distDir, serverless) { + const pagePath = getPagePath(page, distDir, serverless); + if (pagePath.endsWith('.html')) { + return readFile(pagePath, 'utf8'); + } + return require(pagePath); +} +exports.requirePage = requirePage; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/router.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/router.d.ts new file mode 100644 index 0000000..1ce1127 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/router.d.ts @@ -0,0 +1,18 @@ +/// <reference types="node" /> +import { IncomingMessage, ServerResponse } from 'http'; +import { UrlWithParsedQuery } from 'url'; +export declare const route: (path: string) => (pathname: string | undefined, params?: any) => any; +export declare type Params = { + [param: string]: any; +}; +export declare type RouteMatch = (pathname: string | undefined) => false | Params; +export declare type Route = { + match: RouteMatch; + fn: (req: IncomingMessage, res: ServerResponse, params: Params, parsedUrl: UrlWithParsedQuery) => void; +}; +export default class Router { + routes: Route[]; + constructor(routes?: Route[]); + add(route: Route): void; + match(req: IncomingMessage, res: ServerResponse, parsedUrl: UrlWithParsedQuery): (() => void) | undefined; +} diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/router.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/router.js new file mode 100644 index 0000000..1c4a86e --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/router.js @@ -0,0 +1,25 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const path_match_1 = __importDefault(require("./lib/path-match")); +exports.route = path_match_1.default(); +class Router { + constructor(routes = []) { + this.routes = routes; + } + add(route) { + this.routes.unshift(route); + } + match(req, res, parsedUrl) { + const { pathname } = parsedUrl; + for (const route of this.routes) { + const params = route.match(pathname); + if (params) { + return () => route.fn(req, res, params, parsedUrl); + } + } + } +} +exports.default = Router; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/send-html.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/send-html.d.ts new file mode 100644 index 0000000..3a134f4 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/send-html.d.ts @@ -0,0 +1,6 @@ +/// <reference types="node" /> +import { IncomingMessage, ServerResponse } from 'http'; +export declare function sendHTML(req: IncomingMessage, res: ServerResponse, html: string, { generateEtags, poweredByHeader, }: { + generateEtags: boolean; + poweredByHeader: boolean; +}): void; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/send-html.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/send-html.js new file mode 100644 index 0000000..7eb00ea --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/send-html.js @@ -0,0 +1,30 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const etag_1 = __importDefault(require("etag")); +const fresh_1 = __importDefault(require("fresh")); +const utils_1 = require("../lib/utils"); +function sendHTML(req, res, html, { generateEtags, poweredByHeader, }) { + if (utils_1.isResSent(res)) + return; + const etag = generateEtags ? etag_1.default(html) : undefined; + if (poweredByHeader) { + res.setHeader('X-Powered-By', 'Next.js'); + } + if (fresh_1.default(req.headers, { etag })) { + res.statusCode = 304; + res.end(); + return; + } + if (etag) { + res.setHeader('ETag', etag); + } + if (!res.getHeader('Content-Type')) { + res.setHeader('Content-Type', 'text/html; charset=utf-8'); + } + res.setHeader('Content-Length', Buffer.byteLength(html)); + res.end(req.method === 'HEAD' ? null : html); +} +exports.sendHTML = sendHTML; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/serve-static.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/serve-static.d.ts new file mode 100644 index 0000000..78c0867 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/serve-static.d.ts @@ -0,0 +1,3 @@ +/// <reference types="node" /> +import { IncomingMessage, ServerResponse } from 'http'; +export declare function serveStatic(req: IncomingMessage, res: ServerResponse, path: string): Promise<void>; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/serve-static.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/serve-static.js new file mode 100644 index 0000000..6739e12 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/serve-static.js @@ -0,0 +1,21 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const send_1 = __importDefault(require("send")); +function serveStatic(req, res, path) { + return new Promise((resolve, reject) => { + send_1.default(req, path) + .on('directory', () => { + // We don't allow directories to be read. + const err = new Error('No directory access'); + err.code = 'ENOENT'; + reject(err); + }) + .on('error', reject) + .pipe(res) + .on('finish', resolve); + }); +} +exports.serveStatic = serveStatic; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/utils.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/utils.d.ts new file mode 100644 index 0000000..84bf2bd --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/utils.d.ts @@ -0,0 +1,3 @@ +export declare function isInternalUrl(url: string): boolean; +export declare function isBlockedPage(pathname: string): boolean; +export declare function cleanAmpPath(pathname: string): string; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/utils.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/utils.js new file mode 100644 index 0000000..b3b50a1 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dist/server/utils.js @@ -0,0 +1,28 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const constants_1 = require("../lib/constants"); +const internalPrefixes = [/^\/_next\//, /^\/static\//]; +function isInternalUrl(url) { + for (const prefix of internalPrefixes) { + if (prefix.test(url)) { + return true; + } + } + return false; +} +exports.isInternalUrl = isInternalUrl; +function isBlockedPage(pathname) { + return constants_1.BLOCKED_PAGES.indexOf(pathname) !== -1; +} +exports.isBlockedPage = isBlockedPage; +function cleanAmpPath(pathname) { + if (pathname.match(/\?amp=(y|yes|true|1)/)) { + pathname = pathname.replace(/\?amp=(y|yes|true|1)/, '?'); + } + if (pathname.match(/&=(y|yes|true|1)/)) { + pathname = pathname.replace(/\?amp=(y|yes|true|1)/, ''); + } + pathname = pathname.replace(/\?$/, ''); + return pathname; +} +exports.cleanAmpPath = cleanAmpPath; diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dynamic.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dynamic.d.ts new file mode 100644 index 0000000..73a3c23 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dynamic.d.ts @@ -0,0 +1,2 @@ +export * from './dist/lib/dynamic' +export { default } from './dist/lib/dynamic' diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dynamic.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dynamic.js new file mode 100644 index 0000000..29e3d56 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/dynamic.js @@ -0,0 +1 @@ +module.exports = require('./dist/lib/dynamic') diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/head.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/head.d.ts new file mode 100644 index 0000000..a474f2d --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/head.d.ts @@ -0,0 +1,2 @@ +export * from './dist/lib/head' +export { default } from './dist/lib/head' diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/head.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/head.js new file mode 100644 index 0000000..c77f084 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/head.js @@ -0,0 +1 @@ +module.exports = require('./dist/lib/head') diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/index.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/index.d.ts new file mode 100644 index 0000000..a59671c --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/index.d.ts @@ -0,0 +1,2 @@ +import Server, { ServerConstructor } from './dist/server/next-server' +export default function(options: ServerConstructor): Server diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/index.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/index.js new file mode 100644 index 0000000..33cf944 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/index.js @@ -0,0 +1,5 @@ +// This file is used for when users run `require('next-server')` +const Server = require('./dist/server/next-server').default +module.exports = function (options) { + return new Server(options) +} diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/license.md b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/license.md new file mode 100644 index 0000000..4a8b342 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/license.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016-present ZEIT, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/next-config.js b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/next-config.js new file mode 100644 index 0000000..149a338 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/next-config.js @@ -0,0 +1 @@ +module.exports = require('./dist/server/config').default diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/package.json b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/package.json new file mode 100644 index 0000000..be518b4 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/package.json @@ -0,0 +1,77 @@ +{ + "name": "next-server", + "version": "9.0.5", + "main": "./index.js", + "license": "MIT", + "repository": "zeit/next.js", + "files": [ + "dist", + "index.js", + "index.d.ts", + "config.js", + "config.d.ts", + "constants.js", + "constants.d.ts", + "dynamic.js", + "dynamic.d.ts", + "head.js", + "head.d.ts", + "link.js", + "link.d.ts", + "router.js", + "router.d.ts", + "next-config.js", + "next-config.d.ts", + "amp.js", + "amp.d.ts", + "types/index.d.ts" + ], + "scripts": { + "build": "taskr", + "release": "taskr release", + "prepublish": "npm run release && yarn types", + "typescript": "tsc --noEmit --declaration", + "types": "tsc --declaration --emitDeclarationOnly --declarationDir dist" + }, + "taskr": { + "requires": [ + "./taskfile-typescript.js" + ] + }, + "dependencies": { + "@ampproject/toolbox-optimizer": "1.0.1", + "compression": "1.7.4", + "content-type": "1.0.4", + "cookie": "0.4.0", + "etag": "1.8.1", + "find-up": "4.0.0", + "fresh": "0.5.2", + "path-to-regexp": "2.1.0", + "prop-types": "15.7.2", + "raw-body": "2.4.0", + "react-is": "16.8.6", + "send": "0.17.1", + "styled-jsx": "3.2.1", + "url": "0.11.0" + }, + "peerDependencies": { + "react": "^16.6.0", + "react-dom": "^16.6.0" + }, + "devDependencies": { + "@taskr/clear": "1.1.0", + "@taskr/watch": "1.1.0", + "@types/content-type": "1.1.3", + "@types/cookie": "0.3.2", + "@types/react": "16.8.18", + "@types/react-dom": "16.8.4", + "@types/react-is": "16.7.1", + "@types/send": "0.14.4", + "taskr": "1.1.0", + "typescript": "3.5.1" + }, + "engines": { + "node": ">= 8.0.0" + }, + "gitHead": "2c7b4d8aaac475f81de21c0e9cb40fdea1a7a178" +} diff --git a/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/types/index.d.ts b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/types/index.d.ts new file mode 100644 index 0000000..5681c78 --- /dev/null +++ b/.yarn/unplugged/next-server-virtual-76b91ea838/node_modules/next-server/types/index.d.ts @@ -0,0 +1,14 @@ +/** + * `Config` type, use it for export const config + */ +export type PageConfig = { + amp?: boolean | 'hybrid' + api?: { + /** + * The byte limit of the body. This is the number of bytes or any string + * format supported by `bytes`, for example `1000`, `'500kb'` or `'3mb'`. + */ + bodyParser?: { sizeLimit?: number | string } | false + } + experimentalPrerender?: boolean +} diff --git a/.yarn/unplugged/next-virtual-910e31a40c/node_modules/next/dist/build/webpack-config.js b/.yarn/unplugged/next-virtual-910e31a40c/node_modules/next/dist/build/webpack-config.js index 55b3b81..f1eead9 100644 --- a/.yarn/unplugged/next-virtual-910e31a40c/node_modules/next/dist/build/webpack-config.js +++ b/.yarn/unplugged/next-virtual-910e31a40c/node_modules/next/dist/build/webpack-config.js @@ -5,9 +5,7 @@ var _forkTsCheckerWebpackPlugin = _interopRequireDefault( require("fork-ts-checker-webpack-plugin") ); var _constants = require("next-server/constants"); -var _index = _interopRequireDefault( - require("next/dist/compiled/resolve/index.js") -); +var resolveRequest = require("../lib/resolve-request").resolveRequest; var _path = _interopRequireDefault(require("path")); var _crypto = _interopRequireDefault(require("crypto")); var _webpack = _interopRequireDefault(require("webpack")); @@ -100,7 +98,7 @@ async function getBaseWebpackConfig( : undefined; let typeScriptPath; try { - typeScriptPath = _index.default.sync("typescript", { basedir: dir }); + typeScriptPath = resolveRequest("typescript", `${dir}/`); } catch (_) {} const tsConfigPath = _path.default.join(dir, "tsconfig.json"); const useTypeScript = Boolean( @@ -268,35 +266,40 @@ async function getBaseWebpackConfig( if (notExternalModules.indexOf(request) !== -1) { return callback(); } - (0, _index.default)( - request, - { basedir: dir, preserveSymlinks: true }, - (err, res) => { - if (err) { - return callback(); - } - if (!res) { - return callback(); - } // Default pages have to be transpiled - if ( - res.match(/next[/\\]dist[/\\]/) || - res.match(/node_modules[/\\]@babel[/\\]runtime[/\\]/) || - res.match(/node_modules[/\\]@babel[/\\]runtime-corejs2[/\\]/) - ) { - return callback(); - } // Webpack itself has to be compiled because it doesn't always use module relative paths - if ( - res.match(/node_modules[/\\]webpack/) || - res.match(/node_modules[/\\]css-loader/) - ) { - return callback(); - } - if (res.match(/node_modules[/\\].*\.js$/)) { - return callback(undefined, `commonjs ${request}`); - } - callback(); - } - ); + var res; + try { + res = resolveRequest(request, context) + } catch (err) { + return callback() + } + + if (!res) { + return callback() + } + + // Default pages have to be transpiled + if ( + !res.match(/next[/\\]dist[/\\]next-server[/\\]/) && + (res.match(/next[/\\]dist[/\\]/) || + res.match(/node_modules[/\\]@babel[/\\]runtime[/\\]/) || + res.match(/node_modules[/\\]@babel[/\\]runtime-corejs2[/\\]/)) + ) { + return callback() + } + + // Webpack itself has to be compiled because it doesn't always use module relative paths + if ( + res.match(/node_modules[/\\]webpack/) || + res.match(/node_modules[/\\]css-loader/) + ) { + return callback() + } + + if (res.match(/node_modules[/\\].*\.js$/)) { + return callback(undefined, `commonjs ${request}`) + } + + callback() } ] : [ diff --git a/.yarn/unplugged/next-virtual-910e31a40c/node_modules/next/dist/lib/resolve-request.js b/.yarn/unplugged/next-virtual-910e31a40c/node_modules/next/dist/lib/resolve-request.js new file mode 100644 index 0000000..7e69978 --- /dev/null +++ b/.yarn/unplugged/next-virtual-910e31a40c/node_modules/next/dist/lib/resolve-request.js @@ -0,0 +1,20 @@ +const resolve = require("next/dist/compiled/resolve/index.js"); +const path = require("path"); + +function resolveRequest(req, issuer) { + // The `resolve` package is prebuilt through ncc, which prevents + // PnP from being able to inject itself into it. To circumvent + // this, we simply use PnP directly when available. + if (process.versions.pnp) { + const { resolveRequest } = require(`pnpapi`); + return resolveRequest(req, issuer, { considerBuiltins: false }); + } else { + const basedir = + issuer.endsWith(path.posix.sep) || issuer.endsWith(path.win32.sep) + ? issuer + : path.dirname(issuer); + return resolve.sync(req, { basedir }); + } +} + +module.exports.resolveRequest = resolveRequest; diff --git a/package.json b/package.json index 2d0a2ec..90d22d5 100644 --- a/package.json +++ b/package.json @@ -10,10 +10,14 @@ "start": "next start" }, "dependencies": { + "core-js": "2", "next": "^9.0.5", + "next-server": "^9.0.5", "pnp-webpack-plugin": "^1.5.0", + "prop-types": "^15.7.2", "react": "^16.9.0", - "react-dom": "^16.9.0" + "react-dom": "^16.9.0", + "styled-jsx": "^3.2.2" }, "dependenciesMeta": { "next": { diff --git a/yarn.lock b/yarn.lock index e2540f9..312adcb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1701,10 +1701,14 @@ __metadata: version: 0.0.0-use.local resolution: "berry-next@workspace:." dependencies: + core-js: "npm:2" next: "npm:^9.0.5" + next-server: "npm:^9.0.5" pnp-webpack-plugin: "npm:^1.5.0" + prop-types: "npm:^15.7.2" react: "npm:^16.9.0" react-dom: "npm:^16.9.0" + styled-jsx: "npm:^3.2.2" dependenciesMeta: next: unplugged: true @@ -2244,7 +2248,7 @@ __metadata: languageName: node linkType: hard -"core-js@npm:^2.4.0, core-js@npm:^2.6.5": +"core-js@npm:2, core-js@npm:^2.4.0, core-js@npm:^2.6.5": version: 2.6.9 resolution: "core-js@npm:2.6.9" checksum: d20fd4d18430314748946cb9817643d0a02b861aee8fefce2cf070c0bc2a64249e3aff8cb51601954b84bc8cd8e8bce098841b92b3653b096968e12ea9006fd8 @@ -4129,7 +4133,7 @@ __metadata: languageName: node linkType: hard -"next-server@npm:9.0.5": +"next-server@npm:9.0.5, next-server@npm:^9.0.5": version: 9.0.5 resolution: "next-server@npm:9.0.5" dependencies: @@ -4842,7 +4846,7 @@ __metadata: languageName: node linkType: hard -"prop-types@npm:15.7.2, prop-types@npm:^15.6.2": +"prop-types@npm:15.7.2, prop-types@npm:^15.6.2, prop-types@npm:^15.7.2": version: 15.7.2 resolution: "prop-types@npm:15.7.2" dependencies: @@ -5763,6 +5767,24 @@ __metadata: languageName: node linkType: hard +"styled-jsx@npm:^3.2.2": + version: 3.2.2 + resolution: "styled-jsx@npm:3.2.2" + dependencies: + babel-plugin-syntax-jsx: "npm:6.18.0" + babel-types: "npm:6.26.0" + convert-source-map: "npm:1.6.0" + loader-utils: "npm:1.2.3" + source-map: "npm:0.7.3" + string-hash: "npm:1.1.3" + stylis: "npm:3.5.4" + stylis-rule-sheet: "npm:0.0.10" + peerDependencies: + react: 15.x.x || 16.x.x + checksum: 35af1a827fb417bc8901d6b8e81474ef3dbcc75856b9ba135cdb317e8598731332d520aef7faa6dc30c79a61e452e28294b443e4765655ce5195e83b684bbf5d + languageName: node + linkType: hard + "stylis-rule-sheet@npm:0.0.10": version: 0.0.10 resolution: "stylis-rule-sheet@npm:0.0.10"