@remix-run/node 0.0.0-experimental-8d8ac4a52 → 0.0.0-experimental-e48b44da5
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/LICENSE.md +19 -4
- package/dist/crypto.js +1 -1
- package/dist/globals.d.ts +0 -5
- package/dist/globals.js +19 -14
- package/dist/implementations.js +1 -1
- package/dist/index.d.ts +2 -5
- package/dist/index.js +13 -24
- package/dist/sessions/fileStorage.d.ts +1 -0
- package/dist/sessions/fileStorage.js +15 -14
- package/dist/stream.d.ts +1 -1
- package/dist/stream.js +24 -29
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/upload/fileUploadHandler.d.ts +2 -1
- package/dist/upload/fileUploadHandler.js +38 -19
- package/install.d.ts +1 -0
- package/install.js +8 -0
- package/package.json +21 -9
- package/dist/base64.d.ts +0 -2
- package/dist/base64.js +0 -23
- package/dist/fetch.d.ts +0 -23
- package/dist/fetch.js +0 -65
- package/dist/magicExports/esm/remix.js +0 -11
- package/dist/magicExports/remix.d.ts +0 -42
- package/dist/magicExports/remix.js +0 -36
|
@@ -44,13 +44,14 @@ export type FileUploadHandlerOptions = {
|
|
|
44
44
|
filter?(args: FileUploadHandlerFilterArgs): boolean | Promise<boolean>;
|
|
45
45
|
};
|
|
46
46
|
export declare function createFileUploadHandler({ directory, avoidFileConflicts, file, filter, maxPartSize, }?: FileUploadHandlerOptions): UploadHandler;
|
|
47
|
-
export declare class NodeOnDiskFile implements File {
|
|
47
|
+
export declare class NodeOnDiskFile implements Omit<File, "constructor"> {
|
|
48
48
|
private filepath;
|
|
49
49
|
type: string;
|
|
50
50
|
private slicer?;
|
|
51
51
|
name: string;
|
|
52
52
|
lastModified: number;
|
|
53
53
|
webkitRelativePath: string;
|
|
54
|
+
prototype: File;
|
|
54
55
|
constructor(filepath: string, type: string, slicer?: {
|
|
55
56
|
start: number;
|
|
56
57
|
end: number;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @remix-run/node v0.0.0-experimental-
|
|
2
|
+
* @remix-run/node v0.0.0-experimental-e48b44da5
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Remix Software Inc.
|
|
5
5
|
*
|
|
@@ -12,16 +12,16 @@
|
|
|
12
12
|
|
|
13
13
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
14
14
|
|
|
15
|
-
var crypto = require('crypto');
|
|
16
|
-
var
|
|
17
|
-
var promises = require('fs/promises');
|
|
18
|
-
var
|
|
19
|
-
var path = require('path');
|
|
20
|
-
var
|
|
21
|
-
var
|
|
15
|
+
var crypto = require('node:crypto');
|
|
16
|
+
var node_fs = require('node:fs');
|
|
17
|
+
var promises = require('node:fs/promises');
|
|
18
|
+
var node_os = require('node:os');
|
|
19
|
+
var path = require('node:path');
|
|
20
|
+
var node_stream = require('node:stream');
|
|
21
|
+
var node_util = require('node:util');
|
|
22
22
|
var serverRuntime = require('@remix-run/server-runtime');
|
|
23
23
|
var streamSlice = require('stream-slice');
|
|
24
|
-
var stream
|
|
24
|
+
var stream = require('../stream.js');
|
|
25
25
|
|
|
26
26
|
function _interopNamespace(e) {
|
|
27
27
|
if (e && e.__esModule) return e;
|
|
@@ -43,6 +43,11 @@ function _interopNamespace(e) {
|
|
|
43
43
|
|
|
44
44
|
var streamSlice__namespace = /*#__PURE__*/_interopNamespace(streamSlice);
|
|
45
45
|
|
|
46
|
+
/**
|
|
47
|
+
* Chooses the path of the file to be uploaded. If a string is not
|
|
48
|
+
* returned the file will not be written.
|
|
49
|
+
*/
|
|
50
|
+
|
|
46
51
|
let defaultFilePathResolver = ({
|
|
47
52
|
filename
|
|
48
53
|
}) => {
|
|
@@ -58,7 +63,7 @@ async function uniqueFile(filepath) {
|
|
|
58
63
|
return uniqueFilepath;
|
|
59
64
|
}
|
|
60
65
|
function createFileUploadHandler({
|
|
61
|
-
directory =
|
|
66
|
+
directory = node_os.tmpdir(),
|
|
62
67
|
avoidFileConflicts = true,
|
|
63
68
|
file = defaultFilePathResolver,
|
|
64
69
|
filter,
|
|
@@ -101,7 +106,7 @@ function createFileUploadHandler({
|
|
|
101
106
|
await promises.mkdir(path.dirname(filepath), {
|
|
102
107
|
recursive: true
|
|
103
108
|
}).catch(() => {});
|
|
104
|
-
let writeFileStream =
|
|
109
|
+
let writeFileStream = node_fs.createWriteStream(filepath);
|
|
105
110
|
let size = 0;
|
|
106
111
|
let deleteFile = false;
|
|
107
112
|
try {
|
|
@@ -115,17 +120,27 @@ function createFileUploadHandler({
|
|
|
115
120
|
}
|
|
116
121
|
} finally {
|
|
117
122
|
writeFileStream.end();
|
|
118
|
-
await
|
|
123
|
+
await node_util.promisify(node_stream.finished)(writeFileStream);
|
|
119
124
|
if (deleteFile) {
|
|
120
125
|
await promises.rm(filepath).catch(() => {});
|
|
121
126
|
}
|
|
122
127
|
}
|
|
128
|
+
|
|
129
|
+
// TODO: remove this typecast once TS fixed File class regression
|
|
130
|
+
// https://github.com/microsoft/TypeScript/issues/52166
|
|
123
131
|
return new NodeOnDiskFile(filepath, contentType);
|
|
124
132
|
};
|
|
125
133
|
}
|
|
134
|
+
|
|
135
|
+
// TODO: remove this `Omit` usage once TS fixed File class regression
|
|
136
|
+
// https://github.com/microsoft/TypeScript/issues/52166
|
|
126
137
|
class NodeOnDiskFile {
|
|
127
138
|
lastModified = 0;
|
|
128
139
|
webkitRelativePath = "";
|
|
140
|
+
|
|
141
|
+
// TODO: remove this property once TS fixed File class regression
|
|
142
|
+
// https://github.com/microsoft/TypeScript/issues/52166
|
|
143
|
+
prototype = File.prototype;
|
|
129
144
|
constructor(filepath, type, slicer) {
|
|
130
145
|
this.filepath = filepath;
|
|
131
146
|
this.type = type;
|
|
@@ -133,7 +148,7 @@ class NodeOnDiskFile {
|
|
|
133
148
|
this.name = path.basename(filepath);
|
|
134
149
|
}
|
|
135
150
|
get size() {
|
|
136
|
-
let stats =
|
|
151
|
+
let stats = node_fs.statSync(this.filepath);
|
|
137
152
|
if (this.slicer) {
|
|
138
153
|
let slice = this.slicer.end - this.slicer.start;
|
|
139
154
|
return slice < 0 ? 0 : slice > stats.size ? stats.size : slice;
|
|
@@ -150,10 +165,14 @@ class NodeOnDiskFile {
|
|
|
150
165
|
return new NodeOnDiskFile(this.filepath, typeof type === "string" ? type : this.type, {
|
|
151
166
|
start,
|
|
152
167
|
end
|
|
153
|
-
}
|
|
168
|
+
}
|
|
169
|
+
// TODO: remove this typecast once TS fixed File class regression
|
|
170
|
+
// https://github.com/microsoft/TypeScript/issues/52166
|
|
171
|
+
);
|
|
154
172
|
}
|
|
173
|
+
|
|
155
174
|
async arrayBuffer() {
|
|
156
|
-
let stream =
|
|
175
|
+
let stream = node_fs.createReadStream(this.filepath);
|
|
157
176
|
if (this.slicer) {
|
|
158
177
|
stream = stream.pipe(streamSlice__namespace.slice(this.slicer.start, this.slicer.end));
|
|
159
178
|
}
|
|
@@ -165,14 +184,14 @@ class NodeOnDiskFile {
|
|
|
165
184
|
});
|
|
166
185
|
}
|
|
167
186
|
stream() {
|
|
168
|
-
let stream =
|
|
187
|
+
let stream$1 = node_fs.createReadStream(this.filepath);
|
|
169
188
|
if (this.slicer) {
|
|
170
|
-
stream = stream.pipe(streamSlice__namespace.slice(this.slicer.start, this.slicer.end));
|
|
189
|
+
stream$1 = stream$1.pipe(streamSlice__namespace.slice(this.slicer.start, this.slicer.end));
|
|
171
190
|
}
|
|
172
|
-
return stream
|
|
191
|
+
return stream.createReadableStreamFromReadable(stream$1);
|
|
173
192
|
}
|
|
174
193
|
async text() {
|
|
175
|
-
return stream
|
|
194
|
+
return stream.readableStreamToString(this.stream());
|
|
176
195
|
}
|
|
177
196
|
get [Symbol.toStringTag]() {
|
|
178
197
|
return "File";
|
package/install.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/install.js
ADDED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remix-run/node",
|
|
3
|
-
"version": "0.0.0-experimental-
|
|
3
|
+
"version": "0.0.0-experimental-e48b44da5",
|
|
4
4
|
"description": "Node.js platform abstractions for Remix",
|
|
5
5
|
"bugs": {
|
|
6
6
|
"url": "https://github.com/remix-run/remix/issues"
|
|
@@ -13,28 +13,40 @@
|
|
|
13
13
|
"license": "MIT",
|
|
14
14
|
"main": "dist/index.js",
|
|
15
15
|
"typings": "dist/index.d.ts",
|
|
16
|
-
"sideEffects":
|
|
16
|
+
"sideEffects": [
|
|
17
|
+
"./install.js"
|
|
18
|
+
],
|
|
17
19
|
"dependencies": {
|
|
18
|
-
"@remix-run/server-runtime": "0.0.0-experimental-
|
|
19
|
-
"@remix-run/web-fetch": "^4.
|
|
20
|
-
"@remix-run/web-file": "^3.0
|
|
21
|
-
"@remix-run/web-stream": "^1.0
|
|
20
|
+
"@remix-run/server-runtime": "0.0.0-experimental-e48b44da5",
|
|
21
|
+
"@remix-run/web-fetch": "^4.4.1",
|
|
22
|
+
"@remix-run/web-file": "^3.1.0",
|
|
23
|
+
"@remix-run/web-stream": "^1.1.0",
|
|
22
24
|
"@web3-storage/multipart-parser": "^1.0.0",
|
|
23
|
-
"abort-controller": "^3.0.0",
|
|
24
25
|
"cookie-signature": "^1.1.0",
|
|
25
26
|
"source-map-support": "^0.5.21",
|
|
26
27
|
"stream-slice": "^0.1.2"
|
|
27
28
|
},
|
|
28
29
|
"devDependencies": {
|
|
29
30
|
"@types/cookie-signature": "^1.0.3",
|
|
30
|
-
"@types/source-map-support": "^0.5.4"
|
|
31
|
+
"@types/source-map-support": "^0.5.4",
|
|
32
|
+
"typescript": "^5.1.6"
|
|
33
|
+
},
|
|
34
|
+
"peerDependencies": {
|
|
35
|
+
"typescript": "^5.1.0"
|
|
36
|
+
},
|
|
37
|
+
"peerDependenciesMeta": {
|
|
38
|
+
"typescript": {
|
|
39
|
+
"optional": true
|
|
40
|
+
}
|
|
31
41
|
},
|
|
32
42
|
"engines": {
|
|
33
|
-
"node": ">=
|
|
43
|
+
"node": ">=18.0.0"
|
|
34
44
|
},
|
|
35
45
|
"files": [
|
|
36
46
|
"dist/",
|
|
37
47
|
"globals.d.ts",
|
|
48
|
+
"install.d.ts",
|
|
49
|
+
"install.js",
|
|
38
50
|
"CHANGELOG.md",
|
|
39
51
|
"LICENSE.md",
|
|
40
52
|
"README.md"
|
package/dist/base64.d.ts
DELETED
package/dist/base64.js
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @remix-run/node v0.0.0-experimental-8d8ac4a52
|
|
3
|
-
*
|
|
4
|
-
* Copyright (c) Remix Software Inc.
|
|
5
|
-
*
|
|
6
|
-
* This source code is licensed under the MIT license found in the
|
|
7
|
-
* LICENSE.md file in the root directory of this source tree.
|
|
8
|
-
*
|
|
9
|
-
* @license MIT
|
|
10
|
-
*/
|
|
11
|
-
'use strict';
|
|
12
|
-
|
|
13
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
14
|
-
|
|
15
|
-
function atob(a) {
|
|
16
|
-
return Buffer.from(a, "base64").toString("binary");
|
|
17
|
-
}
|
|
18
|
-
function btoa(b) {
|
|
19
|
-
return Buffer.from(b, "binary").toString("base64");
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
exports.atob = atob;
|
|
23
|
-
exports.btoa = btoa;
|
package/dist/fetch.d.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import type { Readable } from "stream";
|
|
3
|
-
import { fetch as webFetch, Headers as WebHeaders, Request as WebRequest, Response as WebResponse } from "@remix-run/web-fetch";
|
|
4
|
-
export { FormData } from "@remix-run/web-fetch";
|
|
5
|
-
export { File, Blob } from "@remix-run/web-file";
|
|
6
|
-
type NodeHeadersInit = ConstructorParameters<typeof WebHeaders>[0];
|
|
7
|
-
type NodeResponseInit = NonNullable<ConstructorParameters<typeof WebResponse>[1]>;
|
|
8
|
-
type NodeRequestInfo = ConstructorParameters<typeof WebRequest>[0] | NodeRequest;
|
|
9
|
-
type NodeRequestInit = Omit<NonNullable<ConstructorParameters<typeof WebRequest>[1]>, "body"> & {
|
|
10
|
-
body?: NonNullable<ConstructorParameters<typeof WebRequest>[1]>["body"] | Readable;
|
|
11
|
-
};
|
|
12
|
-
export type { NodeHeadersInit as HeadersInit, NodeRequestInfo as RequestInfo, NodeRequestInit as RequestInit, NodeResponseInit as ResponseInit, };
|
|
13
|
-
declare class NodeRequest extends WebRequest {
|
|
14
|
-
constructor(info: NodeRequestInfo, init?: NodeRequestInit);
|
|
15
|
-
get headers(): WebHeaders;
|
|
16
|
-
clone(): NodeRequest;
|
|
17
|
-
}
|
|
18
|
-
declare class NodeResponse extends WebResponse {
|
|
19
|
-
get headers(): WebHeaders;
|
|
20
|
-
clone(): NodeResponse;
|
|
21
|
-
}
|
|
22
|
-
export { WebHeaders as Headers, NodeRequest as Request, NodeResponse as Response, };
|
|
23
|
-
export declare const fetch: typeof webFetch;
|
package/dist/fetch.js
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @remix-run/node v0.0.0-experimental-8d8ac4a52
|
|
3
|
-
*
|
|
4
|
-
* Copyright (c) Remix Software Inc.
|
|
5
|
-
*
|
|
6
|
-
* This source code is licensed under the MIT license found in the
|
|
7
|
-
* LICENSE.md file in the root directory of this source tree.
|
|
8
|
-
*
|
|
9
|
-
* @license MIT
|
|
10
|
-
*/
|
|
11
|
-
'use strict';
|
|
12
|
-
|
|
13
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
14
|
-
|
|
15
|
-
var webFetch = require('@remix-run/web-fetch');
|
|
16
|
-
var webFile = require('@remix-run/web-file');
|
|
17
|
-
|
|
18
|
-
class NodeRequest extends webFetch.Request {
|
|
19
|
-
constructor(info, init) {
|
|
20
|
-
super(info, init);
|
|
21
|
-
}
|
|
22
|
-
get headers() {
|
|
23
|
-
return super.headers;
|
|
24
|
-
}
|
|
25
|
-
clone() {
|
|
26
|
-
return super.clone();
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
class NodeResponse extends webFetch.Response {
|
|
30
|
-
get headers() {
|
|
31
|
-
return super.headers;
|
|
32
|
-
}
|
|
33
|
-
clone() {
|
|
34
|
-
return super.clone();
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
const fetch = (info, init) => {
|
|
38
|
-
init = {
|
|
39
|
-
// Disable compression handling so people can return the result of a fetch
|
|
40
|
-
// directly in the loader without messing with the Content-Encoding header.
|
|
41
|
-
compress: false,
|
|
42
|
-
...init
|
|
43
|
-
};
|
|
44
|
-
return webFetch.fetch(info, init);
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
Object.defineProperty(exports, 'FormData', {
|
|
48
|
-
enumerable: true,
|
|
49
|
-
get: function () { return webFetch.FormData; }
|
|
50
|
-
});
|
|
51
|
-
Object.defineProperty(exports, 'Headers', {
|
|
52
|
-
enumerable: true,
|
|
53
|
-
get: function () { return webFetch.Headers; }
|
|
54
|
-
});
|
|
55
|
-
Object.defineProperty(exports, 'Blob', {
|
|
56
|
-
enumerable: true,
|
|
57
|
-
get: function () { return webFile.Blob; }
|
|
58
|
-
});
|
|
59
|
-
Object.defineProperty(exports, 'File', {
|
|
60
|
-
enumerable: true,
|
|
61
|
-
get: function () { return webFile.File; }
|
|
62
|
-
});
|
|
63
|
-
exports.Request = NodeRequest;
|
|
64
|
-
exports.Response = NodeResponse;
|
|
65
|
-
exports.fetch = fetch;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @remix-run/node v0.0.0-experimental-8d8ac4a52
|
|
3
|
-
*
|
|
4
|
-
* Copyright (c) Remix Software Inc.
|
|
5
|
-
*
|
|
6
|
-
* This source code is licensed under the MIT license found in the
|
|
7
|
-
* LICENSE.md file in the root directory of this source tree.
|
|
8
|
-
*
|
|
9
|
-
* @license MIT
|
|
10
|
-
*/
|
|
11
|
-
export { createCookie, createCookieSessionStorage, createFileSessionStorage, createMemorySessionStorage, createSessionStorage, unstable_createFileUploadHandler, unstable_createMemoryUploadHandler, unstable_parseMultipartFormData } from '@remix-run/node';
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @remix-run/node v0.0.0-experimental-8d8ac4a52
|
|
3
|
-
*
|
|
4
|
-
* Copyright (c) Remix Software Inc.
|
|
5
|
-
*
|
|
6
|
-
* This source code is licensed under the MIT license found in the
|
|
7
|
-
* LICENSE.md file in the root directory of this source tree.
|
|
8
|
-
*
|
|
9
|
-
* @license MIT
|
|
10
|
-
*/
|
|
11
|
-
import * as node from '@remix-run/node';
|
|
12
|
-
|
|
13
|
-
/** @deprecated Import `createCookie` from `@remix-run/node` instead. */
|
|
14
|
-
export declare const createCookie: typeof node.createCookie;
|
|
15
|
-
|
|
16
|
-
/** @deprecated Import `createCookieSessionStorage` from `@remix-run/node` instead. */
|
|
17
|
-
export declare const createCookieSessionStorage: typeof node.createCookieSessionStorage;
|
|
18
|
-
|
|
19
|
-
/** @deprecated Import `createFileSessionStorage` from `@remix-run/node` instead. */
|
|
20
|
-
export declare const createFileSessionStorage: typeof node.createFileSessionStorage;
|
|
21
|
-
|
|
22
|
-
/** @deprecated Import `createMemorySessionStorage` from `@remix-run/node` instead. */
|
|
23
|
-
export declare const createMemorySessionStorage: typeof node.createMemorySessionStorage;
|
|
24
|
-
|
|
25
|
-
/** @deprecated Import `createSessionStorage` from `@remix-run/node` instead. */
|
|
26
|
-
export declare const createSessionStorage: typeof node.createSessionStorage;
|
|
27
|
-
|
|
28
|
-
/** @deprecated Import `unstable_createFileUploadHandler` from `@remix-run/node` instead. */
|
|
29
|
-
export declare const unstable_createFileUploadHandler: typeof node.unstable_createFileUploadHandler;
|
|
30
|
-
|
|
31
|
-
/** @deprecated Import `unstable_createMemoryUploadHandler` from `@remix-run/node` instead. */
|
|
32
|
-
export declare const unstable_createMemoryUploadHandler: typeof node.unstable_createMemoryUploadHandler;
|
|
33
|
-
|
|
34
|
-
/** @deprecated Import `unstable_parseMultipartFormData` from `@remix-run/node` instead. */
|
|
35
|
-
export declare const unstable_parseMultipartFormData: typeof node.unstable_parseMultipartFormData;
|
|
36
|
-
import * as NodeTypes from '@remix-run/node';
|
|
37
|
-
|
|
38
|
-
/** @deprecated Import type `UploadHandler` from `@remix-run/node` instead. */
|
|
39
|
-
export declare type UploadHandler = NodeTypes.UploadHandler;
|
|
40
|
-
|
|
41
|
-
/** @deprecated Import type `UploadHandlerPart` from `@remix-run/node` instead. */
|
|
42
|
-
export declare type UploadHandlerPart = NodeTypes.UploadHandlerPart;
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @remix-run/node v0.0.0-experimental-8d8ac4a52
|
|
3
|
-
*
|
|
4
|
-
* Copyright (c) Remix Software Inc.
|
|
5
|
-
*
|
|
6
|
-
* This source code is licensed under the MIT license found in the
|
|
7
|
-
* LICENSE.md file in the root directory of this source tree.
|
|
8
|
-
*
|
|
9
|
-
* @license MIT
|
|
10
|
-
*/
|
|
11
|
-
'use strict';
|
|
12
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
13
|
-
var node = require('@remix-run/node');
|
|
14
|
-
/** @deprecated Import `createCookie` from `@remix-run/node` instead. */
|
|
15
|
-
exports.createCookie = node.createCookie;
|
|
16
|
-
|
|
17
|
-
/** @deprecated Import `createCookieSessionStorage` from `@remix-run/node` instead. */
|
|
18
|
-
exports.createCookieSessionStorage = node.createCookieSessionStorage;
|
|
19
|
-
|
|
20
|
-
/** @deprecated Import `createFileSessionStorage` from `@remix-run/node` instead. */
|
|
21
|
-
exports.createFileSessionStorage = node.createFileSessionStorage;
|
|
22
|
-
|
|
23
|
-
/** @deprecated Import `createMemorySessionStorage` from `@remix-run/node` instead. */
|
|
24
|
-
exports.createMemorySessionStorage = node.createMemorySessionStorage;
|
|
25
|
-
|
|
26
|
-
/** @deprecated Import `createSessionStorage` from `@remix-run/node` instead. */
|
|
27
|
-
exports.createSessionStorage = node.createSessionStorage;
|
|
28
|
-
|
|
29
|
-
/** @deprecated Import `unstable_createFileUploadHandler` from `@remix-run/node` instead. */
|
|
30
|
-
exports.unstable_createFileUploadHandler = node.unstable_createFileUploadHandler;
|
|
31
|
-
|
|
32
|
-
/** @deprecated Import `unstable_createMemoryUploadHandler` from `@remix-run/node` instead. */
|
|
33
|
-
exports.unstable_createMemoryUploadHandler = node.unstable_createMemoryUploadHandler;
|
|
34
|
-
|
|
35
|
-
/** @deprecated Import `unstable_parseMultipartFormData` from `@remix-run/node` instead. */
|
|
36
|
-
exports.unstable_parseMultipartFormData = node.unstable_parseMultipartFormData;
|