@quilted/quilt 0.6.13 → 0.6.15

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 (58) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/build/esm/assets.mjs +0 -1
  3. package/build/esm/async.mjs +2 -2
  4. package/build/esm/browser.mjs +2 -0
  5. package/build/esm/globals.mjs +3 -3
  6. package/build/esm/navigate.mjs +1 -1
  7. package/build/esm/server/ServerContext.mjs +10 -22
  8. package/build/esm/server/request-router.mjs +53 -95
  9. package/build/esm/server.mjs +1 -5
  10. package/build/esm/signals.mjs +1 -2
  11. package/build/esnext/assets.esnext +0 -1
  12. package/build/esnext/async.esnext +2 -2
  13. package/build/esnext/browser.esnext +2 -0
  14. package/build/esnext/globals.esnext +3 -3
  15. package/build/esnext/navigate.esnext +1 -1
  16. package/build/esnext/server/ServerContext.esnext +8 -17
  17. package/build/esnext/server/request-router.esnext +59 -86
  18. package/build/esnext/server.esnext +1 -5
  19. package/build/esnext/signals.esnext +1 -2
  20. package/build/tsconfig.tsbuildinfo +1 -1
  21. package/build/typescript/assets.d.ts +0 -1
  22. package/build/typescript/assets.d.ts.map +1 -1
  23. package/build/typescript/async.d.ts +2 -4
  24. package/build/typescript/async.d.ts.map +1 -1
  25. package/build/typescript/browser.d.ts +3 -0
  26. package/build/typescript/browser.d.ts.map +1 -0
  27. package/build/typescript/globals.d.ts +2 -2
  28. package/build/typescript/globals.d.ts.map +1 -1
  29. package/build/typescript/navigate.d.ts +1 -1
  30. package/build/typescript/server/ServerContext.d.ts +3 -8
  31. package/build/typescript/server/ServerContext.d.ts.map +1 -1
  32. package/build/typescript/server/request-router.d.ts +9 -8
  33. package/build/typescript/server/request-router.d.ts.map +1 -1
  34. package/build/typescript/server.d.ts +1 -7
  35. package/build/typescript/server.d.ts.map +1 -1
  36. package/build/typescript/signals.d.ts +1 -2
  37. package/build/typescript/signals.d.ts.map +1 -1
  38. package/package.json +27 -32
  39. package/source/assets.ts +0 -1
  40. package/source/async.ts +13 -12
  41. package/source/browser.ts +5 -0
  42. package/source/globals.ts +4 -7
  43. package/source/navigate.ts +1 -1
  44. package/source/server/ServerContext.tsx +17 -38
  45. package/source/server/request-router.tsx +81 -110
  46. package/source/server.ts +1 -33
  47. package/source/signals.ts +1 -12
  48. package/tsconfig.json +1 -4
  49. package/build/esm/html/HTML.mjs +0 -19
  50. package/build/esm/html.mjs +0 -3
  51. package/build/esm/http.mjs +0 -1
  52. package/build/esnext/html/HTML.esnext +0 -16
  53. package/build/esnext/html.esnext +0 -3
  54. package/build/esnext/http.esnext +0 -1
  55. package/source/html/HTML.tsx +0 -22
  56. package/source/html.ts +0 -40
  57. package/source/http.ts +0 -37
  58. package/source/routing.ts +0 -24
@@ -1,5 +1,8 @@
1
1
  import {isValidElement, type ReactElement} from 'react';
2
- import {renderToStaticMarkup} from 'react-dom/server';
2
+ import {
3
+ renderToStaticMarkup,
4
+ renderToStringAsync,
5
+ } from 'preact-render-to-string';
3
6
 
4
7
  import {
5
8
  styleAssetPreloadAttributes,
@@ -8,17 +11,13 @@ import {
8
11
  type BrowserAssets,
9
12
  type BrowserAssetsEntry,
10
13
  } from '@quilted/assets';
11
- import {AssetsManager} from '@quilted/react-assets/server';
12
- import {HttpManager} from '@quilted/react-http/server';
13
14
  import {
14
- Head,
15
- Script,
16
- ScriptPreload,
17
- Style,
18
- StylePreload,
19
- HTMLManager,
20
- } from '@quilted/react-html/server';
21
- import {extract} from '@quilted/react-server-render/server';
15
+ BrowserResponse,
16
+ ScriptAsset,
17
+ ScriptAssetPreload,
18
+ StyleAsset,
19
+ StyleAssetPreload,
20
+ } from '@quilted/react-browser/server';
22
21
 
23
22
  import {HTMLResponse, RedirectResponse} from '@quilted/request-router';
24
23
 
@@ -28,37 +27,38 @@ export interface RenderHTMLFunction {
28
27
  (
29
28
  content: ReadableStream<string>,
30
29
  context: {
31
- readonly manager: HTMLManager;
32
- readonly headers: Headers;
30
+ readonly response: BrowserResponse;
33
31
  readonly assets?: BrowserAssetsEntry;
34
32
  readonly preloadAssets?: BrowserAssetsEntry;
35
33
  },
36
34
  ): ReadableStream<any> | string | Promise<ReadableStream<any> | string>;
37
35
  }
38
36
 
39
- export interface RenderOptions<CacheKey = AssetsCacheKey> {
37
+ export interface RenderOptions {
40
38
  readonly request: Request;
39
+ readonly status?: number;
41
40
  readonly stream?: 'headers' | false;
42
41
  readonly headers?: HeadersInit;
43
- readonly assets?: BrowserAssets<CacheKey>;
44
- readonly cacheKey?: CacheKey;
42
+ readonly assets?: BrowserAssets;
43
+ readonly cacheKey?: Partial<AssetsCacheKey>;
44
+ readonly serializations?: Iterable<[string, unknown]>;
45
45
  readonly renderHTML?: boolean | 'fragment' | 'document' | RenderHTMLFunction;
46
46
  waitUntil?(promise: Promise<any>): void;
47
47
  }
48
48
 
49
- export async function renderToResponse<CacheKey = AssetsCacheKey>(
49
+ export async function renderToResponse(
50
50
  element: ReactElement<any>,
51
- options: RenderOptions<CacheKey>,
51
+ options: RenderOptions,
52
52
  ): Promise<HTMLResponse | RedirectResponse>;
53
- export async function renderToResponse<CacheKey = AssetsCacheKey>(
54
- options: RenderOptions<CacheKey>,
53
+ export async function renderToResponse(
54
+ options: RenderOptions,
55
55
  ): Promise<HTMLResponse | RedirectResponse>;
56
- export async function renderToResponse<CacheKey = AssetsCacheKey>(
57
- optionsOrElement: ReactElement<any> | RenderOptions<CacheKey>,
58
- definitelyOptions?: RenderOptions<CacheKey>,
56
+ export async function renderToResponse(
57
+ optionsOrElement: ReactElement<any> | RenderOptions,
58
+ definitelyOptions?: RenderOptions,
59
59
  ) {
60
60
  let element: ReactElement<any> | undefined;
61
- let options: RenderOptions<CacheKey>;
61
+ let options: RenderOptions;
62
62
 
63
63
  if (isValidElement(optionsOrElement)) {
64
64
  element = optionsOrElement;
@@ -70,67 +70,35 @@ export async function renderToResponse<CacheKey = AssetsCacheKey>(
70
70
  const {
71
71
  request,
72
72
  assets,
73
+ status: explicitStatus,
73
74
  cacheKey: explicitCacheKey,
74
75
  headers: explicitHeaders,
76
+ serializations: explicitSerializations,
75
77
  waitUntil = noop,
76
78
  stream: shouldStream = false,
77
79
  renderHTML = true,
78
80
  } = options;
79
81
 
80
- const baseUrl = (request as any).URL ?? new URL(request.url);
82
+ const baseURL = (request as any).URL ?? new URL(request.url);
81
83
 
82
84
  const cacheKey =
83
85
  explicitCacheKey ??
84
- (((await assets?.cacheKey?.(request)) ?? {}) as CacheKey);
86
+ (((await assets?.cacheKey?.(request)) ?? {}) as AssetsCacheKey);
85
87
 
86
- const html = new HTMLManager();
87
- const http = new HttpManager({headers: request.headers});
88
- const assetsManager = new AssetsManager<CacheKey>({cacheKey});
88
+ const browserResponse = new BrowserResponse({
89
+ request,
90
+ cacheKey,
91
+ status: explicitStatus,
92
+ headers: new Headers(explicitHeaders),
93
+ serializations: explicitSerializations,
94
+ });
89
95
 
90
- let responseStatus = 200;
91
96
  let appStream: ReadableStream<any> | undefined;
92
- const headers = new Headers(explicitHeaders);
93
97
 
94
98
  if (shouldStream === false && element != null) {
95
- const rendered = await extract(element, {
96
- decorate(element) {
97
- return (
98
- <ServerContext
99
- http={http}
100
- html={html}
101
- url={baseUrl}
102
- assets={assetsManager}
103
- >
104
- {element}
105
- </ServerContext>
106
- );
107
- },
108
- });
109
-
110
- const {headers: appHeaders, statusCode = 200, redirectUrl} = http.state;
111
-
112
- const hasSetCookieHeader = typeof appHeaders.getSetCookie === 'function';
113
-
114
- if (hasSetCookieHeader) {
115
- for (const cookie of appHeaders.getSetCookie()) {
116
- headers.append('Set-Cookie', cookie);
117
- }
118
- }
119
-
120
- for (const [header, value] of appHeaders.entries()) {
121
- if (hasSetCookieHeader && header.toLowerCase() === 'set-cookie') continue;
122
- headers.set(header, value);
123
- }
124
-
125
- if (redirectUrl) {
126
- return new RedirectResponse(redirectUrl, {
127
- status: statusCode as 301,
128
- headers: headers,
129
- request,
130
- });
131
- }
132
-
133
- responseStatus = statusCode;
99
+ const rendered = await renderToStringAsync(
100
+ <ServerContext browser={browserResponse}>{element}</ServerContext>,
101
+ );
134
102
 
135
103
  const appTransformStream = new TransformStream();
136
104
  const appWriter = appTransformStream.writable.getWriter();
@@ -148,20 +116,9 @@ export async function renderToResponse<CacheKey = AssetsCacheKey>(
148
116
  const appWriter = appTransformStream.writable.getWriter();
149
117
 
150
118
  if (element != null) {
151
- const rendered = await extract(element, {
152
- decorate(element) {
153
- return (
154
- <ServerContext
155
- http={http}
156
- html={html}
157
- url={baseUrl}
158
- assets={assetsManager}
159
- >
160
- {element}
161
- </ServerContext>
162
- );
163
- },
164
- });
119
+ const rendered = await renderToStringAsync(
120
+ <ServerContext browser={browserResponse}>{element}</ServerContext>,
121
+ );
165
122
 
166
123
  appWriter.write(rendered);
167
124
  }
@@ -175,8 +132,8 @@ export async function renderToResponse<CacheKey = AssetsCacheKey>(
175
132
  const body = await renderToHTMLBody(appStream);
176
133
 
177
134
  return new HTMLResponse(body, {
178
- status: responseStatus,
179
- headers,
135
+ status: browserResponse.status.value,
136
+ headers: browserResponse.headers,
180
137
  });
181
138
 
182
139
  async function renderToHTMLBody(
@@ -185,23 +142,23 @@ export async function renderToResponse<CacheKey = AssetsCacheKey>(
185
142
  const [synchronousAssets, preloadAssets] = await Promise.all([
186
143
  assets?.entry({
187
144
  cacheKey,
188
- modules: assetsManager.usedModules({timing: 'load'}),
145
+ modules: browserResponse.assets.get({timing: 'load'}),
189
146
  }),
190
- assets?.modules(assetsManager.usedModules({timing: 'preload'}), {
147
+ assets?.modules(browserResponse.assets.get({timing: 'preload'}), {
191
148
  cacheKey,
192
149
  }),
193
150
  ]);
194
151
 
195
152
  if (synchronousAssets) {
196
153
  for (const style of synchronousAssets.styles) {
197
- headers.append(
154
+ browserResponse.headers.append(
198
155
  'Link',
199
156
  preloadHeader(styleAssetPreloadAttributes(style)),
200
157
  );
201
158
  }
202
159
 
203
160
  for (const script of synchronousAssets.scripts) {
204
- headers.append(
161
+ browserResponse.headers.append(
205
162
  'Link',
206
163
  preloadHeader(scriptAssetPreloadAttributes(script)),
207
164
  );
@@ -210,8 +167,7 @@ export async function renderToResponse<CacheKey = AssetsCacheKey>(
210
167
 
211
168
  if (typeof renderHTML === 'function') {
212
169
  const body = await renderHTML(content, {
213
- manager: html,
214
- headers,
170
+ response: browserResponse,
215
171
  assets: synchronousAssets,
216
172
  preloadAssets,
217
173
  });
@@ -229,34 +185,45 @@ export async function renderToResponse<CacheKey = AssetsCacheKey>(
229
185
 
230
186
  writer.write(`<!DOCTYPE html>`);
231
187
 
232
- const {htmlAttributes, bodyAttributes, ...headProps} = html.state;
233
188
  const htmlContent = renderToStaticMarkup(
234
- <html {...htmlAttributes}>
189
+ <html {...browserResponse.htmlAttributes.value}>
235
190
  <head>
236
- <Head {...headProps} />
191
+ {browserResponse.title.value && (
192
+ <title>{browserResponse.title.value}</title>
193
+ )}
194
+ {browserResponse.links.value.map((link, index) => (
195
+ <link key={index} {...link} />
196
+ ))}
197
+ {browserResponse.metas.value.map((meta, index) => (
198
+ <meta key={index} {...meta} />
199
+ ))}
237
200
  {synchronousAssets?.scripts.map((script) => (
238
- <Script key={script.source} asset={script} baseUrl={baseUrl} />
201
+ <ScriptAsset
202
+ key={script.source}
203
+ asset={script}
204
+ baseURL={baseURL}
205
+ />
239
206
  ))}
240
207
  {synchronousAssets?.styles.map((style) => (
241
- <Style key={style.source} asset={style} baseUrl={baseUrl} />
208
+ <StyleAsset key={style.source} asset={style} baseURL={baseURL} />
242
209
  ))}
243
210
  {preloadAssets?.styles.map((style) => (
244
- <StylePreload
211
+ <StyleAssetPreload
245
212
  key={style.source}
246
213
  asset={style}
247
- baseUrl={baseUrl}
214
+ baseURL={baseURL}
248
215
  />
249
216
  ))}
250
217
  {preloadAssets?.scripts.map((script) => (
251
- <ScriptPreload
218
+ <ScriptAssetPreload
252
219
  key={script.source}
253
220
  asset={script}
254
- baseUrl={baseUrl}
221
+ baseURL={baseURL}
255
222
  />
256
223
  ))}
257
224
  </head>
258
225
  <body
259
- {...bodyAttributes}
226
+ {...browserResponse.bodyAttributes.value}
260
227
  dangerouslySetInnerHTML={{__html: '%%CONTENT%%'}}
261
228
  ></body>
262
229
  </html>,
@@ -283,9 +250,9 @@ export async function renderToResponse<CacheKey = AssetsCacheKey>(
283
250
  const [newSynchronousAssets, newPreloadAssets] = await Promise.all([
284
251
  assets?.entry({
285
252
  cacheKey,
286
- modules: assetsManager.usedModules({timing: 'load'}),
253
+ modules: browserResponse.assets.get({timing: 'load'}),
287
254
  }),
288
- assets?.modules(assetsManager.usedModules({timing: 'preload'}), {
255
+ assets?.modules(browserResponse.assets.get({timing: 'preload'}), {
289
256
  cacheKey,
290
257
  }),
291
258
  ]);
@@ -304,23 +271,27 @@ export async function renderToResponse<CacheKey = AssetsCacheKey>(
304
271
  const additionalAssetsContent = renderToStaticMarkup(
305
272
  <>
306
273
  {diffedSynchronousAssets.scripts.map((script) => (
307
- <Script key={script.source} asset={script} baseUrl={baseUrl} />
274
+ <ScriptAsset
275
+ key={script.source}
276
+ asset={script}
277
+ baseURL={baseURL}
278
+ />
308
279
  ))}
309
280
  {diffedSynchronousAssets.styles.map((style) => (
310
- <Style key={style.source} asset={style} baseUrl={baseUrl} />
281
+ <StyleAsset key={style.source} asset={style} baseURL={baseURL} />
311
282
  ))}
312
283
  {diffedPreloadAssets.styles.map((style) => (
313
- <StylePreload
284
+ <StyleAssetPreload
314
285
  key={style.source}
315
286
  asset={style}
316
- baseUrl={baseUrl}
287
+ baseURL={baseURL}
317
288
  />
318
289
  ))}
319
290
  {diffedPreloadAssets.scripts.map((script) => (
320
- <ScriptPreload
291
+ <ScriptAssetPreload
321
292
  key={script.source}
322
293
  asset={script}
323
- baseUrl={baseUrl}
294
+ baseURL={baseURL}
324
295
  />
325
296
  ))}
326
297
  </>,
package/source/server.ts CHANGED
@@ -1,15 +1,4 @@
1
- export {
2
- Head,
3
- Serialize,
4
- HTMLManager,
5
- HTMLContext,
6
- SERVER_ACTION_ID as HTML_SERVER_ACTION_ID,
7
- } from '@quilted/react-html/server';
8
- export {
9
- extract,
10
- ServerRenderManager,
11
- ServerRenderManagerContext,
12
- } from '@quilted/react-server-render/server';
1
+ export * from '@quilted/react-browser/server';
13
2
 
14
3
  export {
15
4
  styleAssetAttributes,
@@ -29,28 +18,7 @@ export type {
29
18
  AssetsBuildManifest,
30
19
  AssetsBuildManifestEntry,
31
20
  } from '@quilted/assets';
32
- export {
33
- useAssetsCacheKey,
34
- useModuleAssets,
35
- AssetsContext,
36
- AssetsManager,
37
- SERVER_ACTION_ID as ASSETS_SERVER_ACTION_ID,
38
- } from '@quilted/react-assets/server';
39
- export type {HttpState} from '@quilted/react-http/server';
40
21
  export {parseAcceptLanguageHeader} from '@quilted/react-localize';
41
22
  export {createRequestRouterLocalization} from '@quilted/react-localize/request-router';
42
- export {
43
- ServerAction,
44
- useServerAction,
45
- useServerContext,
46
- } from '@quilted/react-server-render';
47
- export type {
48
- ServerActionKind,
49
- ServerActionOptions,
50
- ServerActionPerform,
51
- ServerRenderPass,
52
- ServerRenderRequestContext,
53
- } from '@quilted/react-server-render';
54
23
 
55
- export {ServerContext} from './server/ServerContext.tsx';
56
24
  export {renderToResponse} from './server/request-router.tsx';
package/source/signals.ts CHANGED
@@ -1,12 +1 @@
1
- export {
2
- signal,
3
- Signal,
4
- batch,
5
- computed,
6
- effect,
7
- isSignal,
8
- resolveSignalOrValue,
9
- signalToIterator,
10
- type SignalOrValue,
11
- } from '@quilted/signals';
12
- export {useSignal, useComputed, useSignalEffect} from '@quilted/react-signals';
1
+ export * from '@quilted/react-signals';
package/tsconfig.json CHANGED
@@ -12,17 +12,14 @@
12
12
  {"path": "../events"},
13
13
  {"path": "../graphql"},
14
14
  {"path": "../react"},
15
- {"path": "../react-assets"},
16
15
  {"path": "../react-async"},
16
+ {"path": "../react-browser"},
17
17
  {"path": "../react-dom"},
18
18
  {"path": "../react-graphql"},
19
- {"path": "../react-html"},
20
- {"path": "../react-http"},
21
19
  {"path": "../react-idle"},
22
20
  {"path": "../react-localize"},
23
21
  {"path": "../react-performance"},
24
22
  {"path": "../react-router"},
25
- {"path": "../react-server-render"},
26
23
  {"path": "../react-signals"},
27
24
  {"path": "../react-testing"},
28
25
  {"path": "../react-utilities"},
@@ -1,19 +0,0 @@
1
- import { HttpContext, CookieContext } from '@quilted/react-http';
2
- import { useHTMLUpdater } from '@quilted/react-html';
3
- import { jsx, jsxs } from 'react/jsx-runtime';
4
-
5
- function HTML({
6
- children
7
- }) {
8
- return /*#__PURE__*/jsx(HttpContext, {
9
- children: /*#__PURE__*/jsxs(CookieContext, {
10
- children: [/*#__PURE__*/jsx(HTMLUpdater, {}), children]
11
- })
12
- });
13
- }
14
- function HTMLUpdater() {
15
- useHTMLUpdater();
16
- return null;
17
- }
18
-
19
- export { HTML };
@@ -1,3 +0,0 @@
1
- export { Alternate, BodyAttributes, Favicon, HTMLAttributes, HeadScript, HeadStyle, Link, Meta, SearchRobots, Serialize, ThemeColor, Title, Viewport, getSerialized, useAlternateUrl, useBodyAttributes, useFavicon, useHTMLAttributes, useHTMLUpdater, useHeadScript, useHeadStyle, useLink, useLocale, useMeta, useSearchRobots, useSerialized, useThemeColor, useTitle, useViewport } from '@quilted/react-html';
2
- export { useCookie, useCookies } from '@quilted/react-http';
3
- export { HTML } from './html/HTML.mjs';
@@ -1 +0,0 @@
1
- export { CacheControl, ContentSecurityPolicy, ContentSecurityPolicyDirective, ContentSecurityPolicySandboxAllow, ContentSecurityPolicySpecialSource, CookieContext, CrossOriginEmbedderPolicy, CrossOriginOpenerPolicy, CrossOriginResourcePolicy, HttpContext, HttpMethod, NotFound, PermissionsPolicy, ResponseCookie, ResponseHeader, ResponseStatus, ResponseType, StatusCode, StrictTransportSecurity, useCacheControl, useContentSecurityPolicy, useCookie, useCookies, useCrossOriginEmbedderPolicy, useCrossOriginOpenerPolicy, useCrossOriginResourcePolicy, useDeleteResponseCookie, usePermissionsPolicy, useRequestHeader, useRequestHeaders, useResponseCookie, useResponseHeader, useResponseRedirect, useResponseStatus, useStrictTransportSecurity } from '@quilted/react-http';
@@ -1,16 +0,0 @@
1
- import { jsx, jsxs } from 'react/jsx-runtime';
2
- import { HttpContext, CookieContext } from '@quilted/react-http';
3
- import { useHTMLUpdater } from '@quilted/react-html';
4
-
5
- function HTML({ children }) {
6
- return /* @__PURE__ */ jsx(HttpContext, { children: /* @__PURE__ */ jsxs(CookieContext, { children: [
7
- /* @__PURE__ */ jsx(HTMLUpdater, {}),
8
- children
9
- ] }) });
10
- }
11
- function HTMLUpdater() {
12
- useHTMLUpdater();
13
- return null;
14
- }
15
-
16
- export { HTML };
@@ -1,3 +0,0 @@
1
- export { Alternate, BodyAttributes, Favicon, HTMLAttributes, HeadScript, HeadStyle, Link, Meta, SearchRobots, Serialize, ThemeColor, Title, Viewport, getSerialized, useAlternateUrl, useBodyAttributes, useFavicon, useHTMLAttributes, useHTMLUpdater, useHeadScript, useHeadStyle, useLink, useLocale, useMeta, useSearchRobots, useSerialized, useThemeColor, useTitle, useViewport } from '@quilted/react-html';
2
- export { useCookie, useCookies } from '@quilted/react-http';
3
- export { HTML } from './html/HTML.esnext';
@@ -1 +0,0 @@
1
- export { CacheControl, ContentSecurityPolicy, ContentSecurityPolicyDirective, ContentSecurityPolicySandboxAllow, ContentSecurityPolicySpecialSource, CookieContext, CrossOriginEmbedderPolicy, CrossOriginOpenerPolicy, CrossOriginResourcePolicy, HttpContext, HttpMethod, NotFound, PermissionsPolicy, ResponseCookie, ResponseHeader, ResponseStatus, ResponseType, StatusCode, StrictTransportSecurity, useCacheControl, useContentSecurityPolicy, useCookie, useCookies, useCrossOriginEmbedderPolicy, useCrossOriginOpenerPolicy, useCrossOriginResourcePolicy, useDeleteResponseCookie, usePermissionsPolicy, useRequestHeader, useRequestHeaders, useResponseCookie, useResponseHeader, useResponseRedirect, useResponseStatus, useStrictTransportSecurity } from '@quilted/react-http';
@@ -1,22 +0,0 @@
1
- import type {PropsWithChildren} from 'react';
2
-
3
- import {HttpContext, CookieContext} from '@quilted/react-http';
4
- import {useHTMLUpdater} from '@quilted/react-html';
5
-
6
- export interface HTMLProps {}
7
-
8
- export function HTML({children}: PropsWithChildren<HTMLProps>) {
9
- return (
10
- <HttpContext>
11
- <CookieContext>
12
- <HTMLUpdater />
13
- {children}
14
- </CookieContext>
15
- </HttpContext>
16
- );
17
- }
18
-
19
- function HTMLUpdater() {
20
- useHTMLUpdater();
21
- return null;
22
- }
package/source/html.ts DELETED
@@ -1,40 +0,0 @@
1
- export {
2
- Alternate,
3
- BodyAttributes,
4
- HeadScript,
5
- HeadStyle,
6
- HTMLAttributes,
7
- Link,
8
- Meta,
9
- SearchRobots,
10
- Serialize,
11
- ThemeColor,
12
- Title,
13
- Viewport,
14
- Favicon,
15
- useAlternateUrl,
16
- useSerialized,
17
- useBodyAttributes,
18
- useHeadScript,
19
- useHeadStyle,
20
- useHTMLAttributes,
21
- useFavicon,
22
- useLink,
23
- useLocale,
24
- useMeta,
25
- useSearchRobots,
26
- useThemeColor,
27
- useTitle,
28
- useViewport,
29
- useHTMLUpdater,
30
- getSerialized,
31
- } from '@quilted/react-html';
32
- export type {Serializable} from '@quilted/react-html';
33
- export {
34
- useCookie,
35
- useCookies,
36
- type Cookies,
37
- type CookieOptions,
38
- } from '@quilted/react-http';
39
-
40
- export {HTML} from './html/HTML.tsx';
package/source/http.ts DELETED
@@ -1,37 +0,0 @@
1
- export {
2
- CacheControl,
3
- ContentSecurityPolicy,
4
- HttpMethod,
5
- ResponseType,
6
- StatusCode,
7
- useCookie,
8
- useCookies,
9
- useCacheControl,
10
- useContentSecurityPolicy,
11
- useCrossOriginEmbedderPolicy,
12
- useCrossOriginOpenerPolicy,
13
- useCrossOriginResourcePolicy,
14
- usePermissionsPolicy,
15
- useRequestHeader,
16
- useRequestHeaders,
17
- useResponseCookie,
18
- useDeleteResponseCookie,
19
- useResponseHeader,
20
- useResponseRedirect,
21
- useResponseStatus,
22
- useStrictTransportSecurity,
23
- CookieContext,
24
- HttpContext,
25
- NotFound,
26
- PermissionsPolicy,
27
- ResponseCookie,
28
- ResponseHeader,
29
- ResponseStatus,
30
- StrictTransportSecurity,
31
- ContentSecurityPolicyDirective,
32
- ContentSecurityPolicySandboxAllow,
33
- ContentSecurityPolicySpecialSource,
34
- CrossOriginEmbedderPolicy,
35
- CrossOriginOpenerPolicy,
36
- CrossOriginResourcePolicy,
37
- } from '@quilted/react-http';
package/source/routing.ts DELETED
@@ -1,24 +0,0 @@
1
- export {
2
- Link,
3
- Redirect,
4
- Routing,
5
- RoutePreloading,
6
- NavigationBlock,
7
- useCurrentUrl,
8
- useInitialUrl,
9
- useRouter,
10
- useRoutes,
11
- useRouteMatch,
12
- useRouteMatchDetails,
13
- useNavigate,
14
- useRedirect,
15
- useNavigationBlock,
16
- useScrollRestoration,
17
- useRouteChangeFocusRef,
18
- } from '@quilted/react-router';
19
- export type {
20
- Router,
21
- NavigateTo,
22
- Routes,
23
- RouteDefinition,
24
- } from '@quilted/react-router';