@modern-js/runtime-utils 3.0.0-alpha.1 → 3.0.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/dist/cjs/node/index.js +0 -11
- package/dist/esm/browser/index.mjs +2 -2
- package/dist/esm/browser/nestedRoutes.mjs +4 -4
- package/dist/esm/node/fileReader.mjs +1 -1
- package/dist/esm/node/index.mjs +2 -3
- package/dist/esm/node/loaderContext/index.mjs +2 -2
- package/dist/esm/node/storer/index.mjs +2 -2
- package/dist/esm/server/index.mjs +1 -1
- package/dist/esm/universal/cache.mjs +1 -1
- package/dist/esm-node/browser/deferreds.mjs +1 -0
- package/dist/esm-node/browser/index.mjs +1 -0
- package/dist/esm-node/browser/nestedRoutes.mjs +1 -0
- package/dist/esm-node/merge.mjs +1 -0
- package/dist/esm-node/node/fileReader.mjs +1 -0
- package/dist/esm-node/node/index.mjs +1 -1
- package/dist/esm-node/node/loaderContext/createLoaderCtx.mjs +1 -0
- package/dist/esm-node/node/loaderContext/createRequestCtx.mjs +1 -0
- package/dist/esm-node/node/loaderContext/index.mjs +1 -0
- package/dist/esm-node/node/serialize.mjs +1 -0
- package/dist/esm-node/node/storer/container.mjs +1 -0
- package/dist/esm-node/node/storer/index.mjs +1 -0
- package/dist/esm-node/node/storer/storage.mjs +1 -0
- package/dist/esm-node/parsed.mjs +1 -0
- package/dist/esm-node/router.mjs +1 -0
- package/dist/esm-node/rsc.mjs +1 -0
- package/dist/esm-node/server/index.mjs +1 -0
- package/dist/esm-node/server/nestedRoutes.mjs +1 -0
- package/dist/esm-node/time.mjs +1 -0
- package/dist/esm-node/universal/async_storage.mjs +1 -0
- package/dist/esm-node/universal/async_storage.server.mjs +1 -0
- package/dist/esm-node/universal/cache.mjs +1 -0
- package/dist/esm-node/universal/request.mjs +1 -0
- package/dist/esm-node/url.mjs +1 -0
- package/dist/types/node/index.d.ts +0 -1
- package/package.json +53 -31
- package/rslib.config.mts +1 -0
- package/dist/cjs/node/stream.js +0 -102
- package/dist/esm/node/stream.mjs +0 -68
- package/dist/esm-node/node/stream.mjs +0 -68
- package/dist/types/node/stream.d.ts +0 -4
package/dist/cjs/node/index.js
CHANGED
|
@@ -8,9 +8,6 @@ var __webpack_modules__ = {
|
|
|
8
8
|
},
|
|
9
9
|
"./serialize" (module) {
|
|
10
10
|
module.exports = require("./serialize.js");
|
|
11
|
-
},
|
|
12
|
-
"./stream" (module) {
|
|
13
|
-
module.exports = require("./stream.js");
|
|
14
11
|
}
|
|
15
12
|
};
|
|
16
13
|
var __webpack_module_cache__ = {};
|
|
@@ -70,14 +67,6 @@ var __webpack_exports__ = {};
|
|
|
70
67
|
"default"
|
|
71
68
|
].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_loaderContext__rspack_import_2[__rspack_import_key];
|
|
72
69
|
__webpack_require__.d(__webpack_exports__, __rspack_reexport);
|
|
73
|
-
var _stream__rspack_import_3 = __webpack_require__("./stream");
|
|
74
|
-
var __rspack_reexport = {};
|
|
75
|
-
for(const __rspack_import_key in _stream__rspack_import_3)if ([
|
|
76
|
-
"storage",
|
|
77
|
-
"serializeJson",
|
|
78
|
-
"default"
|
|
79
|
-
].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_stream__rspack_import_3[__rspack_import_key];
|
|
80
|
-
__webpack_require__.d(__webpack_exports__, __rspack_reexport);
|
|
81
70
|
})();
|
|
82
71
|
exports.serializeJson = __webpack_exports__.serializeJson;
|
|
83
72
|
exports.storage = __webpack_exports__.storage;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from "./nestedRoutes";
|
|
2
|
-
export * from "./deferreds";
|
|
1
|
+
export * from "./nestedRoutes.mjs";
|
|
2
|
+
export * from "./deferreds.mjs";
|
|
@@ -2,9 +2,9 @@ import { jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import { LOADER_REPORTER_NAME } from "@modern-js/utils/universal/constants";
|
|
3
3
|
import { Suspense } from "react";
|
|
4
4
|
import { Outlet, Route, createRoutesFromElements } from "react-router";
|
|
5
|
-
import { time } from "../time";
|
|
6
|
-
import { getAsyncLocalStorage } from "../universal/async_storage";
|
|
7
|
-
import { DeferredData, activeDeferreds as
|
|
5
|
+
import { time } from "../time.mjs";
|
|
6
|
+
import { getAsyncLocalStorage } from "../universal/async_storage.mjs";
|
|
7
|
+
import { DeferredData, activeDeferreds as external_deferreds_mjs_activeDeferreds } from "./deferreds.mjs";
|
|
8
8
|
const privateDefer = (data)=>new DeferredData(data);
|
|
9
9
|
const transformNestedRoutes = (routes)=>{
|
|
10
10
|
const routeElements = [];
|
|
@@ -81,7 +81,7 @@ function createLoader(route) {
|
|
|
81
81
|
const end = time();
|
|
82
82
|
const res = await loader(args);
|
|
83
83
|
let activeDeferreds = null;
|
|
84
|
-
activeDeferreds = "u" < typeof document ? (await getAsyncLocalStorage())?.useContext()?.activeDeferreds :
|
|
84
|
+
activeDeferreds = "u" < typeof document ? (await getAsyncLocalStorage())?.useContext()?.activeDeferreds : external_deferreds_mjs_activeDeferreds;
|
|
85
85
|
if (isPlainObject(res)) {
|
|
86
86
|
const deferredData = privateDefer(res);
|
|
87
87
|
activeDeferreds.set(route.id, deferredData);
|
package/dist/esm/node/index.mjs
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { storage } from "../universal/async_storage.server.mjs";
|
|
2
|
-
import { serializeJson } from "./serialize";
|
|
3
|
-
export * from "./loaderContext";
|
|
4
|
-
export * from "./stream";
|
|
2
|
+
import { serializeJson } from "./serialize.mjs";
|
|
3
|
+
export * from "./loaderContext/index.mjs";
|
|
5
4
|
export { serializeJson, storage };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createLoaderContext } from "./createLoaderCtx";
|
|
2
|
-
import { createRequestContext } from "./createRequestCtx";
|
|
1
|
+
import { createLoaderContext } from "./createLoaderCtx.mjs";
|
|
2
|
+
import { createRequestContext } from "./createRequestCtx.mjs";
|
|
3
3
|
const reporterCtx = createLoaderContext();
|
|
4
4
|
export { createRequestContext, reporterCtx };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { MemoryContainer } from "./container";
|
|
2
|
-
import { Storage } from "./storage";
|
|
1
|
+
import { MemoryContainer } from "./container.mjs";
|
|
2
|
+
import { Storage } from "./storage.mjs";
|
|
3
3
|
const memoryContainer = new MemoryContainer();
|
|
4
4
|
function createMemoryStorage(namespace) {
|
|
5
5
|
return new Storage(namespace, memoryContainer);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from "./nestedRoutes";
|
|
1
|
+
export * from "./nestedRoutes.mjs";
|
package/dist/esm-node/merge.mjs
CHANGED
package/dist/esm-node/parsed.mjs
CHANGED
package/dist/esm-node/router.mjs
CHANGED
package/dist/esm-node/rsc.mjs
CHANGED
package/dist/esm-node/time.mjs
CHANGED
package/dist/esm-node/url.mjs
CHANGED
package/package.json
CHANGED
|
@@ -15,72 +15,95 @@
|
|
|
15
15
|
"modern",
|
|
16
16
|
"modern.js"
|
|
17
17
|
],
|
|
18
|
-
"version": "3.0.0
|
|
18
|
+
"version": "3.0.0",
|
|
19
19
|
"_comment": "Provide ESM and CJS exports, ESM is used by runtime package, for treeshaking",
|
|
20
20
|
"exports": {
|
|
21
21
|
"./router": {
|
|
22
22
|
"types": "./dist/types/router.d.ts",
|
|
23
|
-
"
|
|
23
|
+
"modern:source": "./src/router.ts",
|
|
24
24
|
"default": "./dist/esm/router.mjs"
|
|
25
25
|
},
|
|
26
26
|
"./router/rsc": {
|
|
27
27
|
"types": "./dist/types/rsc.d.ts",
|
|
28
|
-
"
|
|
29
|
-
"default": "./dist/esm/rsc.
|
|
28
|
+
"modern:source": "./src/rsc.ts",
|
|
29
|
+
"default": "./dist/esm/rsc.mjs"
|
|
30
30
|
},
|
|
31
31
|
"./browser": {
|
|
32
32
|
"types": "./dist/types/browser/index.d.ts",
|
|
33
|
-
"
|
|
33
|
+
"modern:source": "./src/browser/index.ts",
|
|
34
34
|
"default": "./dist/esm/browser/index.mjs"
|
|
35
35
|
},
|
|
36
36
|
"./node": {
|
|
37
37
|
"types": "./dist/types/node/index.d.ts",
|
|
38
|
-
"
|
|
39
|
-
"default": "./dist/esm
|
|
38
|
+
"modern:source": "./src/node/index.ts",
|
|
39
|
+
"default": "./dist/esm/node/index.mjs"
|
|
40
40
|
},
|
|
41
41
|
"./server": {
|
|
42
42
|
"types": "./dist/types/server/index.d.ts",
|
|
43
|
-
"
|
|
43
|
+
"modern:source": "./src/server/index.ts",
|
|
44
|
+
"node": {
|
|
45
|
+
"module": "./dist/esm/server/index.mjs",
|
|
46
|
+
"import": "./dist/esm-node/server/index.mjs",
|
|
47
|
+
"require": "./dist/cjs/server/index.js"
|
|
48
|
+
},
|
|
44
49
|
"default": "./dist/esm/server/index.mjs"
|
|
45
50
|
},
|
|
46
|
-
"./universal/request": {
|
|
47
|
-
"types": "./dist/universal/request.d.ts",
|
|
48
|
-
"require": "./dist/cjs/universal/request.js",
|
|
49
|
-
"default": "./dist/esm/universal/request.mjs"
|
|
50
|
-
},
|
|
51
51
|
"./time": {
|
|
52
52
|
"types": "./dist/types/time.d.ts",
|
|
53
|
-
"
|
|
53
|
+
"modern:source": "./src/time.ts",
|
|
54
|
+
"node": {
|
|
55
|
+
"module": "./dist/esm/time.mjs",
|
|
56
|
+
"import": "./dist/esm-node/time.mjs",
|
|
57
|
+
"require": "./dist/cjs/time.js"
|
|
58
|
+
},
|
|
54
59
|
"default": "./dist/esm/time.mjs"
|
|
55
60
|
},
|
|
61
|
+
"./universal/request": {
|
|
62
|
+
"types": "./dist/types/universal/request.d.ts",
|
|
63
|
+
"modern:source": "./src/universal/request.ts",
|
|
64
|
+
"default": "./dist/esm/universal/request.mjs"
|
|
65
|
+
},
|
|
56
66
|
"./parsed": {
|
|
57
67
|
"types": "./dist/types/parsed.d.ts",
|
|
58
|
-
"
|
|
68
|
+
"modern:source": "./src/parsed.ts",
|
|
59
69
|
"default": "./dist/esm/parsed.mjs"
|
|
60
70
|
},
|
|
61
71
|
"./storer": {
|
|
62
72
|
"types": "./dist/types/node/storer/index.d.ts",
|
|
63
|
-
"
|
|
64
|
-
"
|
|
73
|
+
"modern:source": "./src/node/storer/index.ts",
|
|
74
|
+
"node": {
|
|
75
|
+
"import": "./dist/esm-node/node/storer/index.mjs",
|
|
76
|
+
"require": "./dist/cjs/node/storer/index.js"
|
|
77
|
+
},
|
|
78
|
+
"default": "./dist/cjs/node/storer/index.js"
|
|
65
79
|
},
|
|
66
80
|
"./fileReader": {
|
|
67
81
|
"types": "./dist/types/node/fileReader.d.ts",
|
|
68
|
-
"
|
|
69
|
-
"
|
|
82
|
+
"modern:source": "./src/node/fileReader.ts",
|
|
83
|
+
"node": {
|
|
84
|
+
"import": "./dist/esm-node/node/fileReader.mjs",
|
|
85
|
+
"require": "./dist/cjs/node/fileReader.js"
|
|
86
|
+
},
|
|
87
|
+
"default": "./dist/cjs/node/fileReader.js"
|
|
70
88
|
},
|
|
71
89
|
"./url": {
|
|
72
90
|
"types": "./dist/types/url.d.ts",
|
|
73
|
-
"
|
|
91
|
+
"modern:source": "./src/url.ts",
|
|
74
92
|
"default": "./dist/esm/url.mjs"
|
|
75
93
|
},
|
|
76
94
|
"./merge": {
|
|
77
95
|
"types": "./dist/types/merge.d.ts",
|
|
78
|
-
"
|
|
96
|
+
"modern:source": "./src/merge.ts",
|
|
79
97
|
"default": "./dist/esm/merge.mjs"
|
|
80
98
|
},
|
|
81
99
|
"./cache": {
|
|
82
100
|
"types": "./dist/types/universal/cache.d.ts",
|
|
83
|
-
"
|
|
101
|
+
"modern:source": "./src/universal/cache.ts",
|
|
102
|
+
"node": {
|
|
103
|
+
"module": "./dist/esm/universal/cache.mjs",
|
|
104
|
+
"import": "./dist/esm-node/universal/cache.mjs",
|
|
105
|
+
"require": "./dist/cjs/universal/cache.js"
|
|
106
|
+
},
|
|
84
107
|
"default": "./dist/esm/universal/cache.mjs"
|
|
85
108
|
}
|
|
86
109
|
},
|
|
@@ -134,10 +157,10 @@
|
|
|
134
157
|
"dependencies": {
|
|
135
158
|
"@swc/helpers": "^0.5.17",
|
|
136
159
|
"lru-cache": "^10.4.3",
|
|
137
|
-
"react-router": "7.
|
|
160
|
+
"react-router": "7.13.0",
|
|
138
161
|
"serialize-javascript": "^6.0.2",
|
|
139
|
-
"@modern-js/types": "3.0.0
|
|
140
|
-
"@modern-js/utils": "3.0.0
|
|
162
|
+
"@modern-js/types": "3.0.0",
|
|
163
|
+
"@modern-js/utils": "3.0.0"
|
|
141
164
|
},
|
|
142
165
|
"peerDependencies": {
|
|
143
166
|
"react": ">=17.0.2",
|
|
@@ -152,17 +175,16 @@
|
|
|
152
175
|
}
|
|
153
176
|
},
|
|
154
177
|
"devDependencies": {
|
|
178
|
+
"@rslib/core": "0.19.4",
|
|
155
179
|
"@types/ioredis-mock": "^8.2.6",
|
|
156
180
|
"@types/node": "^20",
|
|
157
181
|
"@types/serialize-javascript": "^5.0.4",
|
|
158
182
|
"ioredis-mock": "^8.13.1",
|
|
159
|
-
"react": "^19.2.
|
|
160
|
-
"react-dom": "^19.2.
|
|
161
|
-
"@rslib/core": "0.19.1",
|
|
183
|
+
"react": "^19.2.4",
|
|
184
|
+
"react-dom": "^19.2.4",
|
|
162
185
|
"typescript": "^5",
|
|
163
|
-
"@
|
|
164
|
-
"@scripts/rstest-config": "2.66.0"
|
|
165
|
-
"@modern-js/rslib": "2.68.10"
|
|
186
|
+
"@modern-js/rslib": "2.68.10",
|
|
187
|
+
"@scripts/rstest-config": "2.66.0"
|
|
166
188
|
},
|
|
167
189
|
"sideEffects": false,
|
|
168
190
|
"scripts": {
|
package/rslib.config.mts
CHANGED
package/dist/cjs/node/stream.js
DELETED
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __webpack_require__ = {};
|
|
3
|
-
(()=>{
|
|
4
|
-
__webpack_require__.d = (exports1, definition)=>{
|
|
5
|
-
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: definition[key]
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
})();
|
|
11
|
-
(()=>{
|
|
12
|
-
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
13
|
-
})();
|
|
14
|
-
(()=>{
|
|
15
|
-
__webpack_require__.r = (exports1)=>{
|
|
16
|
-
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
17
|
-
value: 'Module'
|
|
18
|
-
});
|
|
19
|
-
Object.defineProperty(exports1, '__esModule', {
|
|
20
|
-
value: true
|
|
21
|
-
});
|
|
22
|
-
};
|
|
23
|
-
})();
|
|
24
|
-
var __webpack_exports__ = {};
|
|
25
|
-
__webpack_require__.r(__webpack_exports__);
|
|
26
|
-
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
-
createReadableStreamFromReadable: ()=>createReadableStreamFromReadable
|
|
28
|
-
});
|
|
29
|
-
const external_stream_namespaceObject = require("stream");
|
|
30
|
-
const createReadableStreamFromReadable = (source)=>{
|
|
31
|
-
const pump = new StreamPump(source);
|
|
32
|
-
const stream = new ReadableStream(pump, pump);
|
|
33
|
-
return stream;
|
|
34
|
-
};
|
|
35
|
-
class StreamPump {
|
|
36
|
-
size(chunk) {
|
|
37
|
-
return chunk?.byteLength || 0;
|
|
38
|
-
}
|
|
39
|
-
start(controller) {
|
|
40
|
-
this.controller = controller;
|
|
41
|
-
this.stream.on('data', this.enqueue);
|
|
42
|
-
this.stream.once('error', this.error);
|
|
43
|
-
this.stream.once('end', this.close);
|
|
44
|
-
this.stream.once('close', this.close);
|
|
45
|
-
}
|
|
46
|
-
pull() {
|
|
47
|
-
this.resume();
|
|
48
|
-
}
|
|
49
|
-
cancel(reason) {
|
|
50
|
-
if (this.stream.destroy) this.stream.destroy(reason);
|
|
51
|
-
process.nextTick(()=>{
|
|
52
|
-
this.stream.off('data', this.enqueue);
|
|
53
|
-
this.stream.off('error', this.error);
|
|
54
|
-
this.stream.off('end', this.close);
|
|
55
|
-
this.stream.off('close', this.close);
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
enqueue(chunk) {
|
|
59
|
-
if (this.controller) try {
|
|
60
|
-
const bytes = chunk instanceof Uint8Array ? chunk : Buffer.from(chunk);
|
|
61
|
-
const available = (this.controller.desiredSize || 0) - bytes.byteLength;
|
|
62
|
-
this.controller.enqueue(bytes);
|
|
63
|
-
if (available <= 0) this.pause();
|
|
64
|
-
} catch (error) {
|
|
65
|
-
this.controller.error(new Error('Could not create Buffer, chunk must be of type string or an instance of Buffer, ArrayBuffer, or Array or an Array-like Object'));
|
|
66
|
-
this.cancel();
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
pause() {
|
|
70
|
-
if (this.stream.pause) this.stream.pause();
|
|
71
|
-
}
|
|
72
|
-
resume() {
|
|
73
|
-
if (this.stream.readable && this.stream.resume) this.stream.resume();
|
|
74
|
-
}
|
|
75
|
-
close() {
|
|
76
|
-
if (this.controller) {
|
|
77
|
-
this.controller.close();
|
|
78
|
-
delete this.controller;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
error(error) {
|
|
82
|
-
if (this.controller) {
|
|
83
|
-
this.controller.error(error);
|
|
84
|
-
delete this.controller;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
constructor(stream){
|
|
88
|
-
this.highWaterMark = stream.readableHighWaterMark || new external_stream_namespaceObject.Stream.Readable().readableHighWaterMark;
|
|
89
|
-
this.accumalatedSize = 0;
|
|
90
|
-
this.stream = stream;
|
|
91
|
-
this.enqueue = this.enqueue.bind(this);
|
|
92
|
-
this.error = this.error.bind(this);
|
|
93
|
-
this.close = this.close.bind(this);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
exports.createReadableStreamFromReadable = __webpack_exports__.createReadableStreamFromReadable;
|
|
97
|
-
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
98
|
-
"createReadableStreamFromReadable"
|
|
99
|
-
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
100
|
-
Object.defineProperty(exports, '__esModule', {
|
|
101
|
-
value: true
|
|
102
|
-
});
|
package/dist/esm/node/stream.mjs
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { Stream } from "stream";
|
|
2
|
-
const createReadableStreamFromReadable = (source)=>{
|
|
3
|
-
const pump = new StreamPump(source);
|
|
4
|
-
const stream = new ReadableStream(pump, pump);
|
|
5
|
-
return stream;
|
|
6
|
-
};
|
|
7
|
-
class StreamPump {
|
|
8
|
-
size(chunk) {
|
|
9
|
-
return chunk?.byteLength || 0;
|
|
10
|
-
}
|
|
11
|
-
start(controller) {
|
|
12
|
-
this.controller = controller;
|
|
13
|
-
this.stream.on('data', this.enqueue);
|
|
14
|
-
this.stream.once('error', this.error);
|
|
15
|
-
this.stream.once('end', this.close);
|
|
16
|
-
this.stream.once('close', this.close);
|
|
17
|
-
}
|
|
18
|
-
pull() {
|
|
19
|
-
this.resume();
|
|
20
|
-
}
|
|
21
|
-
cancel(reason) {
|
|
22
|
-
if (this.stream.destroy) this.stream.destroy(reason);
|
|
23
|
-
process.nextTick(()=>{
|
|
24
|
-
this.stream.off('data', this.enqueue);
|
|
25
|
-
this.stream.off('error', this.error);
|
|
26
|
-
this.stream.off('end', this.close);
|
|
27
|
-
this.stream.off('close', this.close);
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
enqueue(chunk) {
|
|
31
|
-
if (this.controller) try {
|
|
32
|
-
const bytes = chunk instanceof Uint8Array ? chunk : Buffer.from(chunk);
|
|
33
|
-
const available = (this.controller.desiredSize || 0) - bytes.byteLength;
|
|
34
|
-
this.controller.enqueue(bytes);
|
|
35
|
-
if (available <= 0) this.pause();
|
|
36
|
-
} catch (error) {
|
|
37
|
-
this.controller.error(new Error('Could not create Buffer, chunk must be of type string or an instance of Buffer, ArrayBuffer, or Array or an Array-like Object'));
|
|
38
|
-
this.cancel();
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
pause() {
|
|
42
|
-
if (this.stream.pause) this.stream.pause();
|
|
43
|
-
}
|
|
44
|
-
resume() {
|
|
45
|
-
if (this.stream.readable && this.stream.resume) this.stream.resume();
|
|
46
|
-
}
|
|
47
|
-
close() {
|
|
48
|
-
if (this.controller) {
|
|
49
|
-
this.controller.close();
|
|
50
|
-
delete this.controller;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
error(error) {
|
|
54
|
-
if (this.controller) {
|
|
55
|
-
this.controller.error(error);
|
|
56
|
-
delete this.controller;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
constructor(stream){
|
|
60
|
-
this.highWaterMark = stream.readableHighWaterMark || new Stream.Readable().readableHighWaterMark;
|
|
61
|
-
this.accumalatedSize = 0;
|
|
62
|
-
this.stream = stream;
|
|
63
|
-
this.enqueue = this.enqueue.bind(this);
|
|
64
|
-
this.error = this.error.bind(this);
|
|
65
|
-
this.close = this.close.bind(this);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
export { createReadableStreamFromReadable };
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { Stream } from "stream";
|
|
2
|
-
const createReadableStreamFromReadable = (source)=>{
|
|
3
|
-
const pump = new StreamPump(source);
|
|
4
|
-
const stream = new ReadableStream(pump, pump);
|
|
5
|
-
return stream;
|
|
6
|
-
};
|
|
7
|
-
class StreamPump {
|
|
8
|
-
size(chunk) {
|
|
9
|
-
return chunk?.byteLength || 0;
|
|
10
|
-
}
|
|
11
|
-
start(controller) {
|
|
12
|
-
this.controller = controller;
|
|
13
|
-
this.stream.on('data', this.enqueue);
|
|
14
|
-
this.stream.once('error', this.error);
|
|
15
|
-
this.stream.once('end', this.close);
|
|
16
|
-
this.stream.once('close', this.close);
|
|
17
|
-
}
|
|
18
|
-
pull() {
|
|
19
|
-
this.resume();
|
|
20
|
-
}
|
|
21
|
-
cancel(reason) {
|
|
22
|
-
if (this.stream.destroy) this.stream.destroy(reason);
|
|
23
|
-
process.nextTick(()=>{
|
|
24
|
-
this.stream.off('data', this.enqueue);
|
|
25
|
-
this.stream.off('error', this.error);
|
|
26
|
-
this.stream.off('end', this.close);
|
|
27
|
-
this.stream.off('close', this.close);
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
enqueue(chunk) {
|
|
31
|
-
if (this.controller) try {
|
|
32
|
-
const bytes = chunk instanceof Uint8Array ? chunk : Buffer.from(chunk);
|
|
33
|
-
const available = (this.controller.desiredSize || 0) - bytes.byteLength;
|
|
34
|
-
this.controller.enqueue(bytes);
|
|
35
|
-
if (available <= 0) this.pause();
|
|
36
|
-
} catch (error) {
|
|
37
|
-
this.controller.error(new Error('Could not create Buffer, chunk must be of type string or an instance of Buffer, ArrayBuffer, or Array or an Array-like Object'));
|
|
38
|
-
this.cancel();
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
pause() {
|
|
42
|
-
if (this.stream.pause) this.stream.pause();
|
|
43
|
-
}
|
|
44
|
-
resume() {
|
|
45
|
-
if (this.stream.readable && this.stream.resume) this.stream.resume();
|
|
46
|
-
}
|
|
47
|
-
close() {
|
|
48
|
-
if (this.controller) {
|
|
49
|
-
this.controller.close();
|
|
50
|
-
delete this.controller;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
error(error) {
|
|
54
|
-
if (this.controller) {
|
|
55
|
-
this.controller.error(error);
|
|
56
|
-
delete this.controller;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
constructor(stream){
|
|
60
|
-
this.highWaterMark = stream.readableHighWaterMark || new Stream.Readable().readableHighWaterMark;
|
|
61
|
-
this.accumalatedSize = 0;
|
|
62
|
-
this.stream = stream;
|
|
63
|
-
this.enqueue = this.enqueue.bind(this);
|
|
64
|
-
this.error = this.error.bind(this);
|
|
65
|
-
this.close = this.close.bind(this);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
export { createReadableStreamFromReadable };
|