@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.
Files changed (40) hide show
  1. package/dist/cjs/node/index.js +0 -11
  2. package/dist/esm/browser/index.mjs +2 -2
  3. package/dist/esm/browser/nestedRoutes.mjs +4 -4
  4. package/dist/esm/node/fileReader.mjs +1 -1
  5. package/dist/esm/node/index.mjs +2 -3
  6. package/dist/esm/node/loaderContext/index.mjs +2 -2
  7. package/dist/esm/node/storer/index.mjs +2 -2
  8. package/dist/esm/server/index.mjs +1 -1
  9. package/dist/esm/universal/cache.mjs +1 -1
  10. package/dist/esm-node/browser/deferreds.mjs +1 -0
  11. package/dist/esm-node/browser/index.mjs +1 -0
  12. package/dist/esm-node/browser/nestedRoutes.mjs +1 -0
  13. package/dist/esm-node/merge.mjs +1 -0
  14. package/dist/esm-node/node/fileReader.mjs +1 -0
  15. package/dist/esm-node/node/index.mjs +1 -1
  16. package/dist/esm-node/node/loaderContext/createLoaderCtx.mjs +1 -0
  17. package/dist/esm-node/node/loaderContext/createRequestCtx.mjs +1 -0
  18. package/dist/esm-node/node/loaderContext/index.mjs +1 -0
  19. package/dist/esm-node/node/serialize.mjs +1 -0
  20. package/dist/esm-node/node/storer/container.mjs +1 -0
  21. package/dist/esm-node/node/storer/index.mjs +1 -0
  22. package/dist/esm-node/node/storer/storage.mjs +1 -0
  23. package/dist/esm-node/parsed.mjs +1 -0
  24. package/dist/esm-node/router.mjs +1 -0
  25. package/dist/esm-node/rsc.mjs +1 -0
  26. package/dist/esm-node/server/index.mjs +1 -0
  27. package/dist/esm-node/server/nestedRoutes.mjs +1 -0
  28. package/dist/esm-node/time.mjs +1 -0
  29. package/dist/esm-node/universal/async_storage.mjs +1 -0
  30. package/dist/esm-node/universal/async_storage.server.mjs +1 -0
  31. package/dist/esm-node/universal/cache.mjs +1 -0
  32. package/dist/esm-node/universal/request.mjs +1 -0
  33. package/dist/esm-node/url.mjs +1 -0
  34. package/dist/types/node/index.d.ts +0 -1
  35. package/package.json +53 -31
  36. package/rslib.config.mts +1 -0
  37. package/dist/cjs/node/stream.js +0 -102
  38. package/dist/esm/node/stream.mjs +0 -68
  39. package/dist/esm-node/node/stream.mjs +0 -68
  40. package/dist/types/node/stream.d.ts +0 -4
@@ -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 external_deferreds_activeDeferreds } from "./deferreds";
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 : external_deferreds_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);
@@ -1,5 +1,5 @@
1
1
  import fs_extra from "@modern-js/utils/fs-extra";
2
- import { createMemoryStorage } from "./storer";
2
+ import { createMemoryStorage } from "./storer/index.mjs";
3
3
  class FileReader {
4
4
  async readFile(path, encoding = 'utf-8') {
5
5
  const { fs } = this;
@@ -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";
@@ -1,5 +1,5 @@
1
1
  import { LRUCache } from "lru-cache";
2
- import { getAsyncLocalStorage } from "./async_storage";
2
+ import { getAsyncLocalStorage } from "./async_storage.mjs";
3
3
  const CacheSize = {
4
4
  KB: 1024,
5
5
  MB: 1048576,
@@ -1,3 +1,4 @@
1
+ import "node:module";
1
2
  function invariant(value, message) {
2
3
  if (false === value || null == value) throw new Error(message);
3
4
  }
@@ -1,2 +1,3 @@
1
+ import "node:module";
1
2
  export * from "./nestedRoutes.mjs";
2
3
  export * from "./deferreds.mjs";
@@ -1,3 +1,4 @@
1
+ import "node:module";
1
2
  import { jsx } from "react/jsx-runtime";
2
3
  import { LOADER_REPORTER_NAME } from "@modern-js/utils/universal/constants";
3
4
  import { Suspense } from "react";
@@ -1,3 +1,4 @@
1
+ import "node:module";
1
2
  function isObject(obj) {
2
3
  return obj && 'object' == typeof obj && !Array.isArray(obj);
3
4
  }
@@ -1,3 +1,4 @@
1
+ import "node:module";
1
2
  import fs_extra from "@modern-js/utils/fs-extra";
2
3
  import { createMemoryStorage } from "./storer/index.mjs";
3
4
  class FileReader {
@@ -1,5 +1,5 @@
1
+ import "node:module";
1
2
  import { storage } from "../universal/async_storage.server.mjs";
2
3
  import { serializeJson } from "./serialize.mjs";
3
4
  export * from "./loaderContext/index.mjs";
4
- export * from "./stream.mjs";
5
5
  export { serializeJson, storage };
@@ -1,3 +1,4 @@
1
+ import "node:module";
1
2
  class LoaderContext {
2
3
  getDefaultValue() {
3
4
  if (!this.defaultValue) throw new Error("Can't get defaultValue before initialed");
@@ -1,3 +1,4 @@
1
+ import "node:module";
1
2
  function createRequestContext(context) {
2
3
  const _context = context || new Map();
3
4
  function get(key) {
@@ -1,3 +1,4 @@
1
+ import "node:module";
1
2
  import { createLoaderContext } from "./createLoaderCtx.mjs";
2
3
  import { createRequestContext } from "./createRequestCtx.mjs";
3
4
  const reporterCtx = createLoaderContext();
@@ -1,3 +1,4 @@
1
+ import "node:module";
1
2
  import serialize_javascript from "serialize-javascript";
2
3
  const serializeJson = (data)=>serialize_javascript(data, {
3
4
  isJSON: true
@@ -1,3 +1,4 @@
1
+ import "node:module";
1
2
  import { LRUCache } from "lru-cache";
2
3
  class MemoryContainer {
3
4
  async get(key) {
@@ -1,3 +1,4 @@
1
+ import "node:module";
1
2
  import { MemoryContainer } from "./container.mjs";
2
3
  import { Storage } from "./storage.mjs";
3
4
  const memoryContainer = new MemoryContainer();
@@ -1,3 +1,4 @@
1
+ import "node:module";
1
2
  class Storage {
2
3
  async keys() {
3
4
  const _keys = [];
@@ -1,3 +1,4 @@
1
+ import "node:module";
1
2
  const parsedJSONFromElement = (id)=>{
2
3
  const elements = document.querySelectorAll(`#${id}`);
3
4
  if (0 === elements.length) return;
@@ -1,3 +1,4 @@
1
+ import "node:module";
1
2
  export * from "react-router";
2
3
  const DEFERRED_SYMBOL = Symbol('deferred');
3
4
  const json = (data, init)=>{
@@ -1 +1,2 @@
1
+ import "node:module";
1
2
  export * from "react-router";
@@ -1 +1,2 @@
1
+ import "node:module";
1
2
  export * from "./nestedRoutes.mjs";
@@ -1,3 +1,4 @@
1
+ import "node:module";
1
2
  function sortByUrlPath(entries) {
2
3
  entries.sort(function(a, b) {
3
4
  const length1 = a.urlPath.length;
@@ -1,3 +1,4 @@
1
+ import "node:module";
1
2
  function processHrtime(previousTimestamp) {
2
3
  const now = new Date().getTime();
3
4
  const clocktime = 1e-3 * now;
@@ -1,3 +1,4 @@
1
+ import "node:module";
1
2
  const isBrowser = "u" > typeof window && void 0 !== window.document;
2
3
  const IS_WEB_FALLBACK = "u" > typeof IS_WEB ? IS_WEB : isBrowser;
3
4
  const getAsyncLocalStorage = async ()=>{
@@ -1,3 +1,4 @@
1
+ import "node:module";
1
2
  import { AsyncLocalStorage } from "async_hooks";
2
3
  const createStorage = ()=>{
3
4
  let storage;
@@ -1,3 +1,4 @@
1
+ import "node:module";
1
2
  import { LRUCache } from "lru-cache";
2
3
  import { getAsyncLocalStorage } from "./async_storage.mjs";
3
4
  const CacheSize = {
@@ -1,3 +1,4 @@
1
+ import "node:module";
1
2
  function parseQuery(req) {
2
3
  const query = {};
3
4
  const { url } = req;
@@ -1,3 +1,4 @@
1
+ import "node:module";
1
2
  function normalizePathname(pathname) {
2
3
  const normalized = '/' + pathname.replace(/^\/+|\/+$/g, '');
3
4
  return normalized;
@@ -4,4 +4,3 @@
4
4
  export { storage } from '../universal/async_storage.server';
5
5
  export { serializeJson } from './serialize';
6
6
  export * from './loaderContext';
7
- export * from './stream';
package/package.json CHANGED
@@ -15,72 +15,95 @@
15
15
  "modern",
16
16
  "modern.js"
17
17
  ],
18
- "version": "3.0.0-alpha.1",
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
- "require": "./dist/cjs/router.js",
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
- "require": "./dist/cjs/rsc.js",
29
- "default": "./dist/esm/rsc.js"
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
- "require": "./dist/cjs/browser/index.js",
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
- "require": "./dist/cjs/node/index.js",
39
- "default": "./dist/esm-node/node/index.mjs"
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
- "require": "./dist/cjs/server/index.js",
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
- "require": "./dist/cjs/time.js",
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
- "require": "./dist/cjs/parsed.js",
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
- "require": "./dist/cjs/node/storer/index.js",
64
- "default": "./dist/esm/node/storer/index.mjs"
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
- "require": "./dist/cjs/node/fileReader.js",
69
- "default": "./dist/esm/node/fileReader.mjs"
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
- "require": "./dist/cjs/url.js",
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
- "require": "./dist/cjs/merge.js",
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
- "require": "./dist/cjs/universal/cache.js",
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.11.0",
160
+ "react-router": "7.13.0",
138
161
  "serialize-javascript": "^6.0.2",
139
- "@modern-js/types": "3.0.0-alpha.1",
140
- "@modern-js/utils": "3.0.0-alpha.1"
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.3",
160
- "react-dom": "^19.2.3",
161
- "@rslib/core": "0.19.1",
183
+ "react": "^19.2.4",
184
+ "react-dom": "^19.2.4",
162
185
  "typescript": "^5",
163
- "@scripts/build": "2.66.0",
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
@@ -11,6 +11,7 @@ export default defineConfig({
11
11
  ...(isWebTarget && {
12
12
  source: {
13
13
  define: {
14
+ ...(libConfig.source?.define || {}),
14
15
  IS_WEB: 'true',
15
16
  },
16
17
  },
@@ -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
- });
@@ -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 };
@@ -1,4 +0,0 @@
1
- import { type Readable } from 'stream';
2
- export declare const createReadableStreamFromReadable: (source: Readable & {
3
- readableHighWaterMark?: number;
4
- }) => ReadableStream<Uint8Array<ArrayBufferLike>>;