@quilted/quilt 0.0.0-fix-react-types-20220320044002

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (174) hide show
  1. package/CHANGELOG.md +104 -0
  2. package/build/cjs/App.cjs +37 -0
  3. package/build/cjs/email.cjs +32 -0
  4. package/build/cjs/env.cjs +2 -0
  5. package/build/cjs/global.cjs +5 -0
  6. package/build/cjs/html.cjs +112 -0
  7. package/build/cjs/http-handlers/index.cjs +14 -0
  8. package/build/cjs/http-handlers/node.cjs +14 -0
  9. package/build/cjs/http.cjs +108 -0
  10. package/build/cjs/index.cjs +166 -0
  11. package/build/cjs/matchers.cjs +5 -0
  12. package/build/cjs/polyfills/base.cjs +4 -0
  13. package/build/cjs/polyfills/fetch.cjs +4 -0
  14. package/build/cjs/polyfills/noop.cjs +4 -0
  15. package/build/cjs/react/index.cjs +22 -0
  16. package/build/cjs/react/jsx-runtime.cjs +14 -0
  17. package/build/cjs/react/server.cjs +14 -0
  18. package/build/cjs/react/test-utils.cjs +14 -0
  19. package/build/cjs/server/ServerContext.cjs +22 -0
  20. package/build/cjs/server/http-handler.cjs +87 -0
  21. package/build/cjs/server/index.cjs +89 -0
  22. package/build/cjs/server/render.cjs +44 -0
  23. package/build/cjs/static/StaticContext.cjs +22 -0
  24. package/build/cjs/static/index.cjs +302 -0
  25. package/build/cjs/static/render.cjs +44 -0
  26. package/build/cjs/testing.cjs +42 -0
  27. package/build/cjs/utilities/react.cjs +14 -0
  28. package/build/esm/App.mjs +33 -0
  29. package/build/esm/email.mjs +1 -0
  30. package/build/esm/env.mjs +1 -0
  31. package/build/esm/global.mjs +3 -0
  32. package/build/esm/html.mjs +1 -0
  33. package/build/esm/http-handlers/index.mjs +1 -0
  34. package/build/esm/http-handlers/node.mjs +1 -0
  35. package/build/esm/http.mjs +1 -0
  36. package/build/esm/index.mjs +10 -0
  37. package/build/esm/matchers.mjs +2 -0
  38. package/build/esm/polyfills/base.mjs +1 -0
  39. package/build/esm/polyfills/fetch.mjs +1 -0
  40. package/build/esm/polyfills/noop.mjs +1 -0
  41. package/build/esm/react/index.mjs +2 -0
  42. package/build/esm/react/jsx-runtime.mjs +1 -0
  43. package/build/esm/react/server.mjs +1 -0
  44. package/build/esm/react/test-utils.mjs +1 -0
  45. package/build/esm/server/ServerContext.mjs +18 -0
  46. package/build/esm/server/http-handler.mjs +81 -0
  47. package/build/esm/server/index.mjs +9 -0
  48. package/build/esm/server/render.mjs +40 -0
  49. package/build/esm/static/StaticContext.mjs +18 -0
  50. package/build/esm/static/index.mjs +280 -0
  51. package/build/esm/static/render.mjs +40 -0
  52. package/build/esm/testing.mjs +3 -0
  53. package/build/esm/utilities/react.mjs +10 -0
  54. package/build/esnext/App.esnext +33 -0
  55. package/build/esnext/email.esnext +1 -0
  56. package/build/esnext/env.esnext +1 -0
  57. package/build/esnext/global.esnext +3 -0
  58. package/build/esnext/html.esnext +1 -0
  59. package/build/esnext/http-handlers/index.esnext +1 -0
  60. package/build/esnext/http-handlers/node.esnext +1 -0
  61. package/build/esnext/http.esnext +1 -0
  62. package/build/esnext/index.esnext +10 -0
  63. package/build/esnext/matchers.esnext +2 -0
  64. package/build/esnext/polyfills/base.esnext +1 -0
  65. package/build/esnext/polyfills/fetch.esnext +1 -0
  66. package/build/esnext/polyfills/noop.esnext +1 -0
  67. package/build/esnext/react/index.esnext +2 -0
  68. package/build/esnext/react/jsx-runtime.esnext +1 -0
  69. package/build/esnext/react/server.esnext +1 -0
  70. package/build/esnext/react/test-utils.esnext +1 -0
  71. package/build/esnext/server/ServerContext.esnext +18 -0
  72. package/build/esnext/server/http-handler.esnext +81 -0
  73. package/build/esnext/server/index.esnext +9 -0
  74. package/build/esnext/server/render.esnext +40 -0
  75. package/build/esnext/static/StaticContext.esnext +18 -0
  76. package/build/esnext/static/index.esnext +280 -0
  77. package/build/esnext/static/render.esnext +40 -0
  78. package/build/esnext/testing.esnext +3 -0
  79. package/build/esnext/utilities/react.esnext +10 -0
  80. package/build/tsconfig.tsbuildinfo +1 -0
  81. package/build/typescript/App.d.ts +15 -0
  82. package/build/typescript/App.d.ts.map +1 -0
  83. package/build/typescript/email.d.ts +3 -0
  84. package/build/typescript/email.d.ts.map +1 -0
  85. package/build/typescript/env.d.ts +5 -0
  86. package/build/typescript/env.d.ts.map +1 -0
  87. package/build/typescript/global.d.ts +2 -0
  88. package/build/typescript/global.d.ts.map +1 -0
  89. package/build/typescript/html.d.ts +3 -0
  90. package/build/typescript/html.d.ts.map +1 -0
  91. package/build/typescript/http-handlers/index.d.ts +2 -0
  92. package/build/typescript/http-handlers/index.d.ts.map +1 -0
  93. package/build/typescript/http-handlers/node.d.ts +2 -0
  94. package/build/typescript/http-handlers/node.d.ts.map +1 -0
  95. package/build/typescript/http.d.ts +2 -0
  96. package/build/typescript/http.d.ts.map +1 -0
  97. package/build/typescript/index.d.ts +18 -0
  98. package/build/typescript/index.d.ts.map +1 -0
  99. package/build/typescript/magic/app.d.ts +4 -0
  100. package/build/typescript/magic/app.d.ts.map +1 -0
  101. package/build/typescript/magic/asset-loader.d.ts +6 -0
  102. package/build/typescript/magic/asset-loader.d.ts.map +1 -0
  103. package/build/typescript/magic/http-handler.d.ts +4 -0
  104. package/build/typescript/magic/http-handler.d.ts.map +1 -0
  105. package/build/typescript/matchers.d.ts +3 -0
  106. package/build/typescript/matchers.d.ts.map +1 -0
  107. package/build/typescript/polyfills/base.d.ts +2 -0
  108. package/build/typescript/polyfills/base.d.ts.map +1 -0
  109. package/build/typescript/polyfills/crypto.d.ts +2 -0
  110. package/build/typescript/polyfills/crypto.d.ts.map +1 -0
  111. package/build/typescript/polyfills/fetch.d.ts +2 -0
  112. package/build/typescript/polyfills/fetch.d.ts.map +1 -0
  113. package/build/typescript/polyfills/noop.d.ts +2 -0
  114. package/build/typescript/polyfills/noop.d.ts.map +1 -0
  115. package/build/typescript/react/index.d.ts +3 -0
  116. package/build/typescript/react/index.d.ts.map +1 -0
  117. package/build/typescript/react/jsx-runtime.d.ts +2 -0
  118. package/build/typescript/react/jsx-runtime.d.ts.map +1 -0
  119. package/build/typescript/react/server.d.ts +2 -0
  120. package/build/typescript/react/server.d.ts.map +1 -0
  121. package/build/typescript/react/test-utils.d.ts +2 -0
  122. package/build/typescript/react/test-utils.d.ts.map +1 -0
  123. package/build/typescript/server/ServerContext.d.ts +13 -0
  124. package/build/typescript/server/ServerContext.d.ts.map +1 -0
  125. package/build/typescript/server/http-handler.d.ts +15 -0
  126. package/build/typescript/server/http-handler.d.ts.map +1 -0
  127. package/build/typescript/server/index.d.ts +13 -0
  128. package/build/typescript/server/index.d.ts.map +1 -0
  129. package/build/typescript/server/render.d.ts +17 -0
  130. package/build/typescript/server/render.d.ts.map +1 -0
  131. package/build/typescript/static/StaticContext.d.ts +13 -0
  132. package/build/typescript/static/StaticContext.d.ts.map +1 -0
  133. package/build/typescript/static/index.d.ts +22 -0
  134. package/build/typescript/static/index.d.ts.map +1 -0
  135. package/build/typescript/static/render.d.ts +17 -0
  136. package/build/typescript/static/render.d.ts.map +1 -0
  137. package/build/typescript/testing.d.ts +4 -0
  138. package/build/typescript/testing.d.ts.map +1 -0
  139. package/build/typescript/utilities/react.d.ts +3 -0
  140. package/build/typescript/utilities/react.d.ts.map +1 -0
  141. package/package.json +255 -0
  142. package/sewing-kit.config.ts +37 -0
  143. package/src/App.tsx +53 -0
  144. package/src/email.ts +9 -0
  145. package/src/env.ts +5 -0
  146. package/src/global.ts +3 -0
  147. package/src/html.ts +29 -0
  148. package/src/http-handlers/index.ts +1 -0
  149. package/src/http-handlers/node.ts +1 -0
  150. package/src/http.ts +27 -0
  151. package/src/index.ts +83 -0
  152. package/src/magic/app.ts +5 -0
  153. package/src/magic/asset-loader.ts +5 -0
  154. package/src/magic/http-handler.ts +5 -0
  155. package/src/matchers.ts +2 -0
  156. package/src/polyfills/README.md +3 -0
  157. package/src/polyfills/base.ts +1 -0
  158. package/src/polyfills/crypto.ts +1 -0
  159. package/src/polyfills/fetch.ts +1 -0
  160. package/src/polyfills/noop.ts +1 -0
  161. package/src/react/index.ts +4 -0
  162. package/src/react/jsx-runtime.ts +2 -0
  163. package/src/react/server.ts +2 -0
  164. package/src/react/test-utils.ts +2 -0
  165. package/src/server/ServerContext.tsx +42 -0
  166. package/src/server/http-handler.tsx +101 -0
  167. package/src/server/index.ts +40 -0
  168. package/src/server/render.tsx +43 -0
  169. package/src/static/StaticContext.tsx +42 -0
  170. package/src/static/index.tsx +307 -0
  171. package/src/static/render.tsx +43 -0
  172. package/src/testing.ts +7 -0
  173. package/src/utilities/react.tsx +13 -0
  174. package/tsconfig.json +29 -0
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var testUtils = require('@quilted/react/test-utils');
6
+
7
+
8
+
9
+ Object.keys(testUtils).forEach(function (k) {
10
+ if (k !== 'default' && !exports.hasOwnProperty(k)) Object.defineProperty(exports, k, {
11
+ enumerable: true,
12
+ get: function () { return testUtils[k]; }
13
+ });
14
+ });
@@ -0,0 +1,22 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var reactRouter = require('@quilted/react-router');
6
+ var server$1 = require('@quilted/react-html/server');
7
+ var server$2 = require('@quilted/react-async/server');
8
+ var server = require('@quilted/react-http/server');
9
+ var react = require('../utilities/react.cjs');
10
+
11
+ function ServerContext({
12
+ url,
13
+ html,
14
+ http,
15
+ asyncAssets,
16
+ children
17
+ }) {
18
+ const normalizedUrl = typeof url === 'string' ? new URL(url) : url;
19
+ return react.maybeWrapContext(server$2.AsyncAssetContext, asyncAssets, react.maybeWrapContext(server.HttpServerContext, http, react.maybeWrapContext(server$1.HtmlContext, html, react.maybeWrapContext(reactRouter.InitialUrlContext, normalizedUrl, children))));
20
+ }
21
+
22
+ exports.ServerContext = ServerContext;
@@ -0,0 +1,87 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var server = require('@quilted/react-html/server');
6
+ var httpHandlers = require('@quilted/http-handlers');
7
+ var render = require('./render.cjs');
8
+ var jsxRuntime = require('react/jsx-runtime');
9
+
10
+ function createServerRenderingHttpHandler(App, {
11
+ handler = httpHandlers.createHttpHandler(),
12
+ ...options
13
+ }) {
14
+ handler.get(createServerRenderingRequestHandler(App, options));
15
+ return handler;
16
+ }
17
+ function createServerRenderingRequestHandler(App, {
18
+ renderProps,
19
+ ...options
20
+ } = {}) {
21
+ return request => {
22
+ return renderToResponse( /*#__PURE__*/jsxRuntime.jsx(App, { ...renderProps?.({
23
+ request
24
+ })
25
+ }), request, options);
26
+ };
27
+ }
28
+ async function renderToResponse(element, request, {
29
+ assets,
30
+ ...options
31
+ } = {}) {
32
+ const accepts = request.headers.get('Accept');
33
+ if (accepts != null && !accepts.includes('text/html')) return;
34
+ const {
35
+ html: htmlManager,
36
+ http,
37
+ markup,
38
+ asyncAssets
39
+ } = await render.renderApp(element, { ...options,
40
+ url: request.url,
41
+ headers: request.headers
42
+ });
43
+ const {
44
+ headers,
45
+ statusCode = 200,
46
+ redirectUrl
47
+ } = http.state;
48
+
49
+ if (redirectUrl) {
50
+ return httpHandlers.redirect(redirectUrl, {
51
+ status: statusCode,
52
+ headers
53
+ });
54
+ }
55
+
56
+ const usedAssets = asyncAssets.used({
57
+ timing: 'load'
58
+ });
59
+ const assetOptions = {
60
+ userAgent: request.headers.get('User-Agent')
61
+ };
62
+ const [styles, scripts, preload] = assets ? await Promise.all([assets.styles({
63
+ async: usedAssets,
64
+ options: assetOptions
65
+ }), assets.scripts({
66
+ async: usedAssets,
67
+ options: assetOptions
68
+ }), assets.asyncAssets(asyncAssets.used({
69
+ timing: 'preload'
70
+ }), {
71
+ options: assetOptions
72
+ })]) : [];
73
+ return httpHandlers.html(server.render( /*#__PURE__*/jsxRuntime.jsx(server.Html, {
74
+ manager: htmlManager,
75
+ styles: styles,
76
+ scripts: scripts,
77
+ preloadAssets: preload,
78
+ children: markup
79
+ })), {
80
+ headers,
81
+ status: statusCode
82
+ });
83
+ }
84
+
85
+ exports.createServerRenderingHttpHandler = createServerRenderingHttpHandler;
86
+ exports.createServerRenderingRequestHandler = createServerRenderingRequestHandler;
87
+ exports.renderToResponse = renderToResponse;
@@ -0,0 +1,89 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var server = require('@quilted/react-html/server');
6
+ var server$1 = require('@quilted/react-server-render/server');
7
+ var server$2 = require('@quilted/async/server');
8
+ var server$3 = require('@quilted/react-async/server');
9
+ var server$4 = require('@quilted/react-email/server');
10
+ var httpHandlers = require('@quilted/http-handlers');
11
+ var render = require('./render.cjs');
12
+ var ServerContext = require('./ServerContext.cjs');
13
+ var httpHandler = require('./http-handler.cjs');
14
+
15
+
16
+
17
+ Object.defineProperty(exports, 'HTML_SERVER_ACTION_ID', {
18
+ enumerable: true,
19
+ get: function () { return server.SERVER_ACTION_ID; }
20
+ });
21
+ Object.defineProperty(exports, 'Html', {
22
+ enumerable: true,
23
+ get: function () { return server.Html; }
24
+ });
25
+ Object.defineProperty(exports, 'HtmlContext', {
26
+ enumerable: true,
27
+ get: function () { return server.HtmlContext; }
28
+ });
29
+ Object.defineProperty(exports, 'HtmlManager', {
30
+ enumerable: true,
31
+ get: function () { return server.HtmlManager; }
32
+ });
33
+ Object.defineProperty(exports, 'Serialize', {
34
+ enumerable: true,
35
+ get: function () { return server.Serialize; }
36
+ });
37
+ Object.defineProperty(exports, 'render', {
38
+ enumerable: true,
39
+ get: function () { return server.render; }
40
+ });
41
+ Object.defineProperty(exports, 'ServerAction', {
42
+ enumerable: true,
43
+ get: function () { return server$1.ServerAction; }
44
+ });
45
+ Object.defineProperty(exports, 'ServerRenderContext', {
46
+ enumerable: true,
47
+ get: function () { return server$1.ServerRenderContext; }
48
+ });
49
+ Object.defineProperty(exports, 'ServerRenderManager', {
50
+ enumerable: true,
51
+ get: function () { return server$1.ServerRenderManager; }
52
+ });
53
+ Object.defineProperty(exports, 'extract', {
54
+ enumerable: true,
55
+ get: function () { return server$1.extract; }
56
+ });
57
+ Object.defineProperty(exports, 'useServerAction', {
58
+ enumerable: true,
59
+ get: function () { return server$1.useServerAction; }
60
+ });
61
+ Object.defineProperty(exports, 'createAssetLoader', {
62
+ enumerable: true,
63
+ get: function () { return server$2.createAssetLoader; }
64
+ });
65
+ Object.defineProperty(exports, 'ASYNC_ASSETS_SERVER_ACTION_ID', {
66
+ enumerable: true,
67
+ get: function () { return server$3.SERVER_ACTION_ID; }
68
+ });
69
+ Object.defineProperty(exports, 'AsyncAssetContext', {
70
+ enumerable: true,
71
+ get: function () { return server$3.AsyncAssetContext; }
72
+ });
73
+ Object.defineProperty(exports, 'AsyncAssetManager', {
74
+ enumerable: true,
75
+ get: function () { return server$3.AsyncAssetManager; }
76
+ });
77
+ Object.defineProperty(exports, 'renderEmail', {
78
+ enumerable: true,
79
+ get: function () { return server$4.renderEmail; }
80
+ });
81
+ Object.defineProperty(exports, 'createHttpHandler', {
82
+ enumerable: true,
83
+ get: function () { return httpHandlers.createHttpHandler; }
84
+ });
85
+ exports.renderApp = render.renderApp;
86
+ exports.ServerContext = ServerContext.ServerContext;
87
+ exports.createServerRenderingHttpHandler = httpHandler.createServerRenderingHttpHandler;
88
+ exports.createServerRenderingRequestHandler = httpHandler.createServerRenderingRequestHandler;
89
+ exports.renderToResponse = httpHandler.renderToResponse;
@@ -0,0 +1,44 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var server$3 = require('@quilted/react-server-render/server');
6
+ var server = require('@quilted/react-html/server');
7
+ var server$2 = require('@quilted/react-http/server');
8
+ var server$1 = require('@quilted/react-async/server');
9
+ var ServerContext = require('./ServerContext.cjs');
10
+ var jsxRuntime = require('react/jsx-runtime');
11
+
12
+ async function renderApp(app, {
13
+ decorate,
14
+ url,
15
+ headers,
16
+ ...rest
17
+ } = {}) {
18
+ const html = new server.HtmlManager();
19
+ const asyncAssets = new server$1.AsyncAssetManager();
20
+ const http = new server$2.HttpManager({
21
+ headers
22
+ });
23
+ const markup = await server$3.extract(app, {
24
+ decorate(app) {
25
+ return /*#__PURE__*/jsxRuntime.jsx(ServerContext.ServerContext, {
26
+ asyncAssets: asyncAssets,
27
+ http: http,
28
+ html: html,
29
+ url: url,
30
+ children: decorate?.(app) ?? app
31
+ });
32
+ },
33
+
34
+ ...rest
35
+ });
36
+ return {
37
+ markup,
38
+ http,
39
+ html,
40
+ asyncAssets
41
+ };
42
+ }
43
+
44
+ exports.renderApp = renderApp;
@@ -0,0 +1,22 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var reactRouter = require('@quilted/react-router');
6
+ var server$1 = require('@quilted/react-html/server');
7
+ var server$2 = require('@quilted/react-async/server');
8
+ var server = require('@quilted/react-http/server');
9
+ var react = require('../utilities/react.cjs');
10
+
11
+ function StaticContext({
12
+ url,
13
+ html,
14
+ http,
15
+ asyncAssets,
16
+ children
17
+ }) {
18
+ const normalizedUrl = typeof url === 'string' ? new URL(url) : url;
19
+ return react.maybeWrapContext(server$2.AsyncAssetContext, asyncAssets, react.maybeWrapContext(server.HttpServerContext, http, react.maybeWrapContext(server$1.HtmlContext, html, react.maybeWrapContext(reactRouter.InitialUrlContext, normalizedUrl, children))));
20
+ }
21
+
22
+ exports.StaticContext = StaticContext;
@@ -0,0 +1,302 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var server = require('@quilted/react-html/server');
6
+ var _static = require('@quilted/react-router/static');
7
+ var render = require('./render.cjs');
8
+ var jsxRuntime = require('react/jsx-runtime');
9
+
10
+ function _interopNamespace(e) {
11
+ if (e && e.__esModule) return e;
12
+ var n = Object.create(null);
13
+ if (e) {
14
+ Object.keys(e).forEach(function (k) {
15
+ if (k !== 'default') {
16
+ var d = Object.getOwnPropertyDescriptor(e, k);
17
+ Object.defineProperty(n, k, d.get ? d : {
18
+ enumerable: true,
19
+ get: function () { return e[k]; }
20
+ });
21
+ }
22
+ });
23
+ }
24
+ n["default"] = e;
25
+ return Object.freeze(n);
26
+ }
27
+
28
+ const BASE_URL = 'http://localhost:3000';
29
+ async function renderStatic(App, {
30
+ assets,
31
+ routes: startingRoutes,
32
+ onRender,
33
+ crawl = true,
34
+ baseUrl = BASE_URL,
35
+ prettify = true
36
+ }) {
37
+ const routesToHandle = startingRoutes.map(route => ({
38
+ route: removePostfixSlash(new URL(route, baseUrl).pathname),
39
+ fallback: false
40
+ }));
41
+ const seenRoutes = [...routesToHandle];
42
+ const seenRouteIds = new Set(seenRoutes.map(({
43
+ route
44
+ }) => route));
45
+ let renderableRoute;
46
+
47
+ while (renderableRoute = routesToHandle.shift()) {
48
+ const {
49
+ route,
50
+ fallback
51
+ } = renderableRoute;
52
+ const url = new URL(route, baseUrl);
53
+ const {
54
+ html,
55
+ http,
56
+ routes
57
+ } = await renderUrl(url, {
58
+ fallback
59
+ });
60
+
61
+ if (crawl) {
62
+ for (const {
63
+ routes: routeDefinitions,
64
+ fallback = false,
65
+ consumedPath,
66
+ prefix
67
+ } of routes) {
68
+ const basePathname = joinPath(prefix, consumedPath);
69
+ const baseId = basePathname === '/' ? basePathname : `__QUILT_BASE_${basePathname}__`;
70
+
71
+ for (const routeDefinition of routeDefinitions) {
72
+ await recordRouteDefinition(routeDefinition, {
73
+ baseId,
74
+ basePathname,
75
+ addFallbacks: fallback
76
+ });
77
+ }
78
+
79
+ if (fallback && routeDefinitions[routeDefinitions.length - 1]?.match != null) {
80
+ await recordRouteDefinition({}, {
81
+ baseId,
82
+ basePathname,
83
+ addFallbacks: fallback
84
+ });
85
+ }
86
+ }
87
+ }
88
+
89
+ await onRender({
90
+ route,
91
+ content: html,
92
+ http,
93
+ fallback,
94
+ hasChildren: !fallback && seenRoutes.some(otherRoute => otherRoute.route.startsWith(`${route}/`))
95
+ });
96
+ }
97
+
98
+ async function recordRouteDefinition({
99
+ match,
100
+ children,
101
+ renderStatic
102
+ }, {
103
+ basePathname,
104
+ baseId,
105
+ addFallbacks
106
+ }) {
107
+ if (renderStatic === false) return;
108
+ let routeId;
109
+ const hasChildren = children && children.length > 0;
110
+ const hasManualMatches = typeof renderStatic === 'function' && typeof match !== 'string';
111
+ const matchedRoutes = [];
112
+
113
+ if (typeof match === 'string') {
114
+ routeId = joinPath(baseId, match);
115
+ matchedRoutes.push({
116
+ id: routeId,
117
+ route: joinPath(basePathname, match),
118
+ fallback: false
119
+ });
120
+ } else if (typeof match === 'function') {
121
+ routeId = joinPath(baseId, `__QUILT_FUNCTION_ROUTE_${match.toString()}__`);
122
+ } else if (match instanceof RegExp) {
123
+ routeId = joinPath(`__QUILT_REGEX_ROUTE_${match.source}__`);
124
+ } else {
125
+ routeId = joinPath(baseId, '__QUILT_FALLBACK_ROUTE__');
126
+
127
+ if (!hasManualMatches) {
128
+ matchedRoutes.push({
129
+ id: routeId,
130
+ route: basePathname,
131
+ fallback: true
132
+ });
133
+ }
134
+ }
135
+
136
+ if (seenRouteIds.has(routeId)) return;
137
+ seenRouteIds.add(routeId);
138
+
139
+ if (typeof renderStatic === 'function' && typeof match !== 'string') {
140
+ const matchedRouteParts = await renderStatic();
141
+
142
+ for (const routePart of matchedRouteParts) {
143
+ const id = joinPath(baseId, `__QUILT_MATCH_${routePart}__`);
144
+ seenRouteIds.add(id);
145
+ matchedRoutes.push({
146
+ id,
147
+ route: joinPath(basePathname, routePart),
148
+ fallback: false
149
+ });
150
+ }
151
+ }
152
+
153
+ if (hasChildren) {
154
+ for (const {
155
+ id,
156
+ route
157
+ } of matchedRoutes) {
158
+ for (const child of children) {
159
+ await recordRouteDefinition(child, {
160
+ addFallbacks,
161
+ basePathname: route,
162
+ baseId: id
163
+ });
164
+ }
165
+
166
+ if (addFallbacks && children[children.length - 1]?.match != null) {
167
+ await recordRouteDefinition({}, {
168
+ addFallbacks,
169
+ basePathname: route,
170
+ baseId: id
171
+ });
172
+ }
173
+ }
174
+
175
+ return;
176
+ }
177
+
178
+ for (const {
179
+ route,
180
+ fallback
181
+ } of matchedRoutes) {
182
+ const renderableRoute = {
183
+ route,
184
+ fallback
185
+ };
186
+ seenRoutes.push(renderableRoute);
187
+ routesToHandle.push(renderableRoute);
188
+ }
189
+ }
190
+
191
+ async function renderUrl(url, {
192
+ fallback = false
193
+ } = {}) {
194
+ const routeRecorder = new _static.StaticRenderer({
195
+ forceFallback: fallback ? url.pathname : undefined
196
+ });
197
+ const {
198
+ http,
199
+ html: htmlManager,
200
+ markup,
201
+ asyncAssets
202
+ } = await render.renderApp( /*#__PURE__*/jsxRuntime.jsx(App, {}), {
203
+ url,
204
+
205
+ decorate(app) {
206
+ return /*#__PURE__*/jsxRuntime.jsx(_static.StaticRendererContext.Provider, {
207
+ value: routeRecorder,
208
+ children: app
209
+ });
210
+ }
211
+
212
+ });
213
+ const usedAssets = asyncAssets.used({
214
+ timing: 'load'
215
+ });
216
+ const [moduleStyles, moduleScripts, modulePreload, nomoduleStyles, nomoduleScripts] = await Promise.all([assets.styles({
217
+ async: usedAssets,
218
+ options: {
219
+ modules: true
220
+ }
221
+ }), assets.scripts({
222
+ async: usedAssets,
223
+ options: {
224
+ modules: true
225
+ }
226
+ }), assets.asyncAssets(asyncAssets.used({
227
+ timing: 'preload'
228
+ }), {
229
+ options: {
230
+ modules: true
231
+ }
232
+ }), assets.styles({
233
+ async: usedAssets,
234
+ options: {
235
+ modules: false
236
+ }
237
+ }), assets.scripts({
238
+ async: usedAssets,
239
+ options: {
240
+ modules: false
241
+ }
242
+ })]); // We don’t want to load styles from both bundles, so we only use module styles,
243
+ // since modules are intended to be the default and CSS (usually) doesn’t
244
+ // have features that meaningfully break older user agents.
245
+
246
+ const styles = moduleStyles.length > 0 ? moduleStyles : nomoduleStyles; // If there are nomodule scripts, we can’t really do preloading, because we can’t
247
+ // prevent the nomodule scripts from being preloaded in module browsers. If there
248
+ // are only module scripts, we can preload those.
249
+
250
+ const preload = nomoduleScripts.length > 0 ? [] : modulePreload;
251
+ const scripts = [...moduleScripts, ...nomoduleScripts.map(script => ({ ...script,
252
+ nomodule: true
253
+ }))];
254
+ const minifiedHtml = server.render( /*#__PURE__*/jsxRuntime.jsx(server.Html, {
255
+ manager: htmlManager,
256
+ styles: styles,
257
+ scripts: scripts,
258
+ preloadAssets: preload,
259
+ children: markup
260
+ }));
261
+ const html = prettify ? await prettifyHtml(minifiedHtml) : minifiedHtml;
262
+ return {
263
+ html,
264
+ http: http.state,
265
+ routes: routeRecorder.state
266
+ };
267
+ }
268
+ }
269
+
270
+ async function prettifyHtml(html) {
271
+ try {
272
+ const {
273
+ default: prettier
274
+ } = await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('prettier')); });
275
+ return prettier.format(html, {
276
+ parser: 'html'
277
+ });
278
+ } catch (error) {
279
+ return html;
280
+ }
281
+ }
282
+
283
+ function joinPath(...parts) {
284
+ let path = '/';
285
+
286
+ for (const part of parts) {
287
+ if (typeof part !== 'string') continue;
288
+ const normalizedPart = part.startsWith('/') ? part.slice(1) : part;
289
+ if (normalizedPart.length === 0) continue;
290
+ if (path !== '/') path += '/';
291
+ path += normalizedPart;
292
+ path = removePostfixSlash(path);
293
+ }
294
+
295
+ return path;
296
+ }
297
+
298
+ function removePostfixSlash(value) {
299
+ return value.endsWith('/') && value !== '/' ? value.slice(0, value.length - 1) : value;
300
+ }
301
+
302
+ exports.renderStatic = renderStatic;
@@ -0,0 +1,44 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var server$3 = require('@quilted/react-server-render/server');
6
+ var server = require('@quilted/react-html/server');
7
+ var server$2 = require('@quilted/react-http/server');
8
+ var server$1 = require('@quilted/react-async/server');
9
+ var StaticContext = require('./StaticContext.cjs');
10
+ var jsxRuntime = require('react/jsx-runtime');
11
+
12
+ async function renderApp(app, {
13
+ decorate,
14
+ url,
15
+ headers,
16
+ ...rest
17
+ } = {}) {
18
+ const html = new server.HtmlManager();
19
+ const asyncAssets = new server$1.AsyncAssetManager();
20
+ const http = new server$2.HttpManager({
21
+ headers
22
+ });
23
+ const markup = await server$3.extract(app, {
24
+ decorate(app) {
25
+ return /*#__PURE__*/jsxRuntime.jsx(StaticContext.StaticContext, {
26
+ asyncAssets: asyncAssets,
27
+ html: html,
28
+ http: http,
29
+ url: url,
30
+ children: decorate?.(app) ?? app
31
+ });
32
+ },
33
+
34
+ ...rest
35
+ });
36
+ return {
37
+ markup,
38
+ http,
39
+ html,
40
+ asyncAssets
41
+ };
42
+ }
43
+
44
+ exports.renderApp = renderApp;
@@ -0,0 +1,42 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var reactTesting = require('@quilted/react-testing');
6
+ var testing = require('@quilted/react-router/testing');
7
+ var testing$1 = require('@quilted/react-graphql/testing');
8
+
9
+
10
+
11
+ Object.defineProperty(exports, 'createMount', {
12
+ enumerable: true,
13
+ get: function () { return reactTesting.createMount; }
14
+ });
15
+ Object.defineProperty(exports, 'mount', {
16
+ enumerable: true,
17
+ get: function () { return reactTesting.mount; }
18
+ });
19
+ Object.defineProperty(exports, 'unmountAll', {
20
+ enumerable: true,
21
+ get: function () { return reactTesting.unmountAll; }
22
+ });
23
+ Object.defineProperty(exports, 'TestRouter', {
24
+ enumerable: true,
25
+ get: function () { return testing.TestRouter; }
26
+ });
27
+ Object.defineProperty(exports, 'createTestRouter', {
28
+ enumerable: true,
29
+ get: function () { return testing.createTestRouter; }
30
+ });
31
+ Object.defineProperty(exports, 'TestGraphQL', {
32
+ enumerable: true,
33
+ get: function () { return testing$1.TestGraphQL; }
34
+ });
35
+ Object.defineProperty(exports, 'createFiller', {
36
+ enumerable: true,
37
+ get: function () { return testing$1.createFiller; }
38
+ });
39
+ Object.defineProperty(exports, 'createTestGraphQL', {
40
+ enumerable: true,
41
+ get: function () { return testing$1.createTestGraphQL; }
42
+ });
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+
7
+ function maybeWrapContext(Context, value, children) {
8
+ return value ? /*#__PURE__*/jsxRuntime.jsx(Context.Provider, {
9
+ value: value,
10
+ children: children
11
+ }) : children;
12
+ }
13
+
14
+ exports.maybeWrapContext = maybeWrapContext;