@remix-run/node 2.9.1 → 2.9.2-pre.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +50 -0
- package/dist/crypto.js +1 -1
- package/dist/globals.js +1 -1
- package/dist/implementations.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +17 -1
- package/dist/sessions/fileStorage.js +1 -1
- package/dist/stream.js +1 -1
- package/dist/upload/fileUploadHandler.js +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,55 @@
|
|
|
1
1
|
# `@remix-run/node`
|
|
2
2
|
|
|
3
|
+
## 2.9.2-pre.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Typesafety for single-fetch: defineLoader, defineClientLoader, defineAction, defineClientAction ([#9372](https://github.com/remix-run/remix/pull/9372))
|
|
8
|
+
|
|
9
|
+
`defineLoader` and `defineAction` are helpers for authoring `loader`s and `action`s.
|
|
10
|
+
They are identity functions; they don't modify your loader or action at runtime.
|
|
11
|
+
Rather, they exist solely for typesafety by providing types for args and by ensuring valid return types.
|
|
12
|
+
|
|
13
|
+
```ts
|
|
14
|
+
export let loader = defineLoader(({ request }) => {
|
|
15
|
+
// ^? Request
|
|
16
|
+
return { a: 1, b: () => 2 };
|
|
17
|
+
// ^ type error: `b` is not serializable
|
|
18
|
+
});
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Note that `defineLoader` and `defineAction` are not technically necessary for defining loaders and actions if you aren't concerned with typesafety:
|
|
22
|
+
|
|
23
|
+
```ts
|
|
24
|
+
// this totally works! and typechecking is happy too!
|
|
25
|
+
export let loader = () => {
|
|
26
|
+
return { a: 1 };
|
|
27
|
+
};
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
This means that you can opt-in to `defineLoader` incrementally, one loader at a time.
|
|
31
|
+
|
|
32
|
+
You can return custom responses via the `json`/`defer` utilities, but doing so will revert back to the old JSON-based typesafety mechanism:
|
|
33
|
+
|
|
34
|
+
```ts
|
|
35
|
+
let loader1 = () => {
|
|
36
|
+
return { a: 1, b: new Date() };
|
|
37
|
+
};
|
|
38
|
+
let data1 = useLoaderData<typeof loader1>();
|
|
39
|
+
// ^? {a: number, b: Date}
|
|
40
|
+
|
|
41
|
+
let loader2 = () => {
|
|
42
|
+
return json({ a: 1, b: new Date() }); // this opts-out of turbo-stream
|
|
43
|
+
};
|
|
44
|
+
let data2 = useLoaderData<typeof loader2>();
|
|
45
|
+
// ^? JsonifyObject<{a: number, b: Date}> which is really {a: number, b: string}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
You can also continue to return totally custom responses with `Response` though this continues to be outside of the typesystem since the built-in `Response` type is not generic
|
|
49
|
+
|
|
50
|
+
- Updated dependencies:
|
|
51
|
+
- `@remix-run/server-runtime@2.9.2-pre.0`
|
|
52
|
+
|
|
3
53
|
## 2.9.1
|
|
4
54
|
|
|
5
55
|
### Patch Changes
|
package/dist/crypto.js
CHANGED
package/dist/globals.js
CHANGED
package/dist/implementations.js
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -3,5 +3,5 @@ export { createFileSessionStorage } from "./sessions/fileStorage";
|
|
|
3
3
|
export { createFileUploadHandler as unstable_createFileUploadHandler, NodeOnDiskFile, } from "./upload/fileUploadHandler";
|
|
4
4
|
export { createCookie, createCookieSessionStorage, createMemorySessionStorage, createSessionStorage, } from "./implementations";
|
|
5
5
|
export { createReadableStreamFromReadable, readableStreamToString, writeAsyncIterableToWritable, writeReadableStreamToWritable, } from "./stream";
|
|
6
|
-
export { createRequestHandler, createSession, defer, broadcastDevReady, logDevReady, isCookie, isSession, json, MaxPartSizeExceededError, redirect, redirectDocument, unstable_composeUploadHandlers, unstable_createMemoryUploadHandler, unstable_parseMultipartFormData, } from "@remix-run/server-runtime";
|
|
6
|
+
export { createRequestHandler, createSession, unstable_defineLoader, unstable_defineClientLoader, unstable_defineAction, unstable_defineClientAction, defer, broadcastDevReady, logDevReady, isCookie, isSession, json, MaxPartSizeExceededError, redirect, redirectDocument, unstable_composeUploadHandlers, unstable_createMemoryUploadHandler, unstable_parseMultipartFormData, } from "@remix-run/server-runtime";
|
|
7
7
|
export type { ActionFunction, ActionFunctionArgs, AppLoadContext, Cookie, CookieOptions, CookieParseOptions, CookieSerializeOptions, CookieSignatureOptions, DataFunctionArgs, EntryContext, ErrorResponse, HandleDataRequestFunction, HandleDocumentRequestFunction, HeadersArgs, HeadersFunction, HtmlLinkDescriptor, JsonFunction, LinkDescriptor, LinksFunction, LoaderFunction, LoaderFunctionArgs, MemoryUploadHandlerFilterArgs, MemoryUploadHandlerOptions, HandleErrorFunction, PageLinkDescriptor, RequestHandler, SerializeFrom, ServerBuild, ServerEntryModule, ServerRuntimeMetaArgs as MetaArgs, ServerRuntimeMetaDescriptor as MetaDescriptor, ServerRuntimeMetaFunction as MetaFunction, Session, SessionData, SessionIdStorageStrategy, SessionStorage, SignFunction, TypedDeferredData, TypedResponse, UnsignFunction, UploadHandler, UploadHandlerPart, } from "@remix-run/server-runtime";
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @remix-run/node v2.9.
|
|
2
|
+
* @remix-run/node v2.9.2-pre.0
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Remix Software Inc.
|
|
5
5
|
*
|
|
@@ -85,6 +85,22 @@ Object.defineProperty(exports, 'unstable_createMemoryUploadHandler', {
|
|
|
85
85
|
enumerable: true,
|
|
86
86
|
get: function () { return serverRuntime.unstable_createMemoryUploadHandler; }
|
|
87
87
|
});
|
|
88
|
+
Object.defineProperty(exports, 'unstable_defineAction', {
|
|
89
|
+
enumerable: true,
|
|
90
|
+
get: function () { return serverRuntime.unstable_defineAction; }
|
|
91
|
+
});
|
|
92
|
+
Object.defineProperty(exports, 'unstable_defineClientAction', {
|
|
93
|
+
enumerable: true,
|
|
94
|
+
get: function () { return serverRuntime.unstable_defineClientAction; }
|
|
95
|
+
});
|
|
96
|
+
Object.defineProperty(exports, 'unstable_defineClientLoader', {
|
|
97
|
+
enumerable: true,
|
|
98
|
+
get: function () { return serverRuntime.unstable_defineClientLoader; }
|
|
99
|
+
});
|
|
100
|
+
Object.defineProperty(exports, 'unstable_defineLoader', {
|
|
101
|
+
enumerable: true,
|
|
102
|
+
get: function () { return serverRuntime.unstable_defineLoader; }
|
|
103
|
+
});
|
|
88
104
|
Object.defineProperty(exports, 'unstable_parseMultipartFormData', {
|
|
89
105
|
enumerable: true,
|
|
90
106
|
get: function () { return serverRuntime.unstable_parseMultipartFormData; }
|
package/dist/stream.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remix-run/node",
|
|
3
|
-
"version": "2.9.
|
|
3
|
+
"version": "2.9.2-pre.0",
|
|
4
4
|
"description": "Node.js platform abstractions for Remix",
|
|
5
5
|
"bugs": {
|
|
6
6
|
"url": "https://github.com/remix-run/remix/issues"
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"source-map-support": "^0.5.21",
|
|
24
24
|
"stream-slice": "^0.1.2",
|
|
25
25
|
"undici": "^6.10.1",
|
|
26
|
-
"@remix-run/server-runtime": "2.9.
|
|
26
|
+
"@remix-run/server-runtime": "2.9.2-pre.0"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"@types/cookie-signature": "^1.0.3",
|