@modern-js/runtime-utils 2.69.4 → 3.0.0-alpha.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 (135) hide show
  1. package/dist/cjs/browser/deferreds.js +141 -145
  2. package/dist/cjs/browser/index.js +62 -21
  3. package/dist/cjs/browser/nestedRoutes.js +121 -147
  4. package/dist/cjs/merge.js +51 -44
  5. package/dist/cjs/node/fileReader.js +88 -97
  6. package/dist/cjs/node/index.js +87 -33
  7. package/dist/cjs/node/loaderContext/createLoaderCtx.js +43 -36
  8. package/dist/cjs/node/loaderContext/createRequestCtx.js +43 -41
  9. package/dist/cjs/node/loaderContext/index.js +38 -29
  10. package/dist/cjs/node/serialize.js +46 -40
  11. package/dist/cjs/node/storer/container.js +62 -58
  12. package/dist/cjs/node/storer/index.js +39 -31
  13. package/dist/cjs/node/storer/storage.js +82 -92
  14. package/dist/cjs/node/stream.js +89 -91
  15. package/dist/cjs/parsed.js +40 -38
  16. package/dist/cjs/router.js +88 -19
  17. package/dist/cjs/rsc.js +58 -0
  18. package/dist/cjs/server/index.js +55 -19
  19. package/dist/cjs/server/nestedRoutes.js +43 -39
  20. package/dist/cjs/time.js +53 -47
  21. package/dist/cjs/universal/async_storage.js +53 -37
  22. package/dist/cjs/universal/async_storage.server.js +63 -74
  23. package/dist/cjs/universal/cache.js +330 -381
  24. package/dist/cjs/universal/request.js +73 -65
  25. package/dist/cjs/url.js +33 -28
  26. package/dist/esm/browser/deferreds.mjs +118 -0
  27. package/dist/esm/browser/nestedRoutes.mjs +104 -0
  28. package/dist/esm/merge.mjs +26 -0
  29. package/dist/esm/node/fileReader.mjs +47 -0
  30. package/dist/{esm-node/node/index.js → esm/node/index.mjs} +2 -5
  31. package/dist/esm/node/loaderContext/createLoaderCtx.mjs +14 -0
  32. package/dist/esm/node/loaderContext/createRequestCtx.mjs +16 -0
  33. package/dist/{esm-node/node/loaderContext/index.js → esm/node/loaderContext/index.mjs} +1 -4
  34. package/dist/esm/node/serialize.mjs +5 -0
  35. package/dist/esm/node/storer/container.mjs +38 -0
  36. package/dist/{esm-node/node/storer/index.js → esm/node/storer/index.mjs} +2 -6
  37. package/dist/esm/node/storer/storage.mjs +53 -0
  38. package/dist/esm/node/stream.mjs +68 -0
  39. package/dist/esm/parsed.mjs +12 -0
  40. package/dist/esm/router.mjs +18 -0
  41. package/dist/esm/rsc.mjs +1 -0
  42. package/dist/esm/server/nestedRoutes.mjs +15 -0
  43. package/dist/esm/time.mjs +27 -0
  44. package/dist/esm/universal/async_storage.mjs +7 -0
  45. package/dist/esm/universal/async_storage.server.mjs +32 -0
  46. package/dist/esm/universal/cache.mjs +326 -0
  47. package/dist/esm/universal/request.mjs +40 -0
  48. package/dist/esm/url.mjs +5 -0
  49. package/dist/esm-node/browser/deferreds.mjs +118 -0
  50. package/dist/esm-node/browser/index.mjs +2 -0
  51. package/dist/esm-node/browser/nestedRoutes.mjs +104 -0
  52. package/dist/esm-node/merge.mjs +26 -0
  53. package/dist/esm-node/node/fileReader.mjs +47 -0
  54. package/dist/esm-node/node/index.mjs +5 -0
  55. package/dist/esm-node/node/loaderContext/createLoaderCtx.mjs +14 -0
  56. package/dist/esm-node/node/loaderContext/createRequestCtx.mjs +16 -0
  57. package/dist/esm-node/node/loaderContext/index.mjs +4 -0
  58. package/dist/esm-node/node/serialize.mjs +5 -0
  59. package/dist/esm-node/node/storer/container.mjs +38 -0
  60. package/dist/esm-node/node/storer/index.mjs +7 -0
  61. package/dist/esm-node/node/storer/storage.mjs +53 -0
  62. package/dist/esm-node/node/stream.mjs +68 -0
  63. package/dist/esm-node/parsed.mjs +12 -0
  64. package/dist/esm-node/router.mjs +18 -0
  65. package/dist/esm-node/rsc.mjs +1 -0
  66. package/dist/esm-node/server/index.mjs +1 -0
  67. package/dist/esm-node/server/nestedRoutes.mjs +15 -0
  68. package/dist/esm-node/time.mjs +27 -0
  69. package/dist/esm-node/universal/async_storage.mjs +24 -0
  70. package/dist/esm-node/universal/async_storage.server.mjs +32 -0
  71. package/dist/esm-node/universal/cache.mjs +326 -0
  72. package/dist/esm-node/universal/request.mjs +40 -0
  73. package/dist/esm-node/url.mjs +5 -0
  74. package/dist/types/browser/nestedRoutes.d.ts +2 -1
  75. package/dist/types/node/stream.d.ts +1 -1
  76. package/dist/types/router.d.ts +6 -1
  77. package/dist/types/rsc.d.ts +1 -0
  78. package/dist/types/universal/async_storage.d.ts +1 -1
  79. package/dist/types/universal/async_storage.server.d.ts +1 -1
  80. package/package.json +36 -46
  81. package/rslib.config.mts +27 -0
  82. package/rstest.config.ts +26 -0
  83. package/dist/cjs/node/router.js +0 -22
  84. package/dist/cjs/remixRouter.js +0 -43
  85. package/dist/esm/browser/deferreds.js +0 -227
  86. package/dist/esm/browser/index.js +0 -2
  87. package/dist/esm/browser/nestedRoutes.js +0 -177
  88. package/dist/esm/merge.js +0 -33
  89. package/dist/esm/node/fileReader.js +0 -140
  90. package/dist/esm/node/index.js +0 -8
  91. package/dist/esm/node/loaderContext/createLoaderCtx.js +0 -24
  92. package/dist/esm/node/loaderContext/createRequestCtx.js +0 -24
  93. package/dist/esm/node/loaderContext/index.js +0 -7
  94. package/dist/esm/node/router.js +0 -1
  95. package/dist/esm/node/serialize.js +0 -9
  96. package/dist/esm/node/storer/container.js +0 -94
  97. package/dist/esm/node/storer/index.js +0 -11
  98. package/dist/esm/node/storer/storage.js +0 -135
  99. package/dist/esm/node/stream.js +0 -87
  100. package/dist/esm/parsed.js +0 -20
  101. package/dist/esm/remixRouter.js +0 -7
  102. package/dist/esm/router.js +0 -1
  103. package/dist/esm/server/index.js +0 -1
  104. package/dist/esm/server/nestedRoutes.js +0 -23
  105. package/dist/esm/time.js +0 -32
  106. package/dist/esm/universal/async_storage.js +0 -18
  107. package/dist/esm/universal/async_storage.server.js +0 -43
  108. package/dist/esm/universal/cache.js +0 -1032
  109. package/dist/esm/universal/request.js +0 -51
  110. package/dist/esm/url.js +0 -10
  111. package/dist/esm-node/browser/deferreds.js +0 -138
  112. package/dist/esm-node/browser/nestedRoutes.js +0 -142
  113. package/dist/esm-node/merge.js +0 -29
  114. package/dist/esm-node/node/fileReader.js +0 -68
  115. package/dist/esm-node/node/loaderContext/createLoaderCtx.js +0 -19
  116. package/dist/esm-node/node/loaderContext/createRequestCtx.js +0 -24
  117. package/dist/esm-node/node/router.js +0 -1
  118. package/dist/esm-node/node/serialize.js +0 -9
  119. package/dist/esm-node/node/storer/container.js +0 -44
  120. package/dist/esm-node/node/storer/storage.js +0 -73
  121. package/dist/esm-node/node/stream.js +0 -80
  122. package/dist/esm-node/parsed.js +0 -20
  123. package/dist/esm-node/remixRouter.js +0 -7
  124. package/dist/esm-node/router.js +0 -1
  125. package/dist/esm-node/server/nestedRoutes.js +0 -21
  126. package/dist/esm-node/time.js +0 -31
  127. package/dist/esm-node/universal/async_storage.js +0 -18
  128. package/dist/esm-node/universal/async_storage.server.js +0 -45
  129. package/dist/esm-node/universal/cache.js +0 -401
  130. package/dist/esm-node/universal/request.js +0 -50
  131. package/dist/esm-node/url.js +0 -10
  132. package/dist/types/node/router.d.ts +0 -1
  133. package/dist/types/remixRouter.d.ts +0 -2
  134. /package/dist/{esm-node/browser/index.js → esm/browser/index.mjs} +0 -0
  135. /package/dist/{esm-node/server/index.js → esm/server/index.mjs} +0 -0
@@ -1,51 +0,0 @@
1
- import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
2
- function parseQuery(req) {
3
- var query = {};
4
- var url = req.url;
5
- var q = url.split("?")[1];
6
- if (q) {
7
- var search = new URLSearchParams(q);
8
- search.forEach(function(v, k) {
9
- query[k] = v;
10
- });
11
- }
12
- return query;
13
- }
14
- function parseHeaders(request) {
15
- var headersData = {};
16
- request.headers.forEach(function(value, key) {
17
- headersData[key] = value;
18
- });
19
- return headersData;
20
- }
21
- function getPathname(request) {
22
- var match = request.url.match(/^https?:\/\/[^/]+(\/[^?]*)/);
23
- return match ? match[1] : "/";
24
- }
25
- function getHost(request) {
26
- var headers = request.headers;
27
- var host = headers.get("X-Forwarded-Host");
28
- if (!host) {
29
- host = headers.get("Host");
30
- }
31
- host = (host === null || host === void 0 ? void 0 : host.split(/\s*,\s*/, 1)[0]) || "undefined";
32
- return host;
33
- }
34
- function parseCookie(req) {
35
- var _cookie = req.headers.get("Cookie");
36
- var cookie = {};
37
- _cookie === null || _cookie === void 0 ? void 0 : _cookie.trim().split(";").forEach(function(item) {
38
- var _item_trim_split = _sliced_to_array(item.trim().split("="), 2), k = _item_trim_split[0], v = _item_trim_split[1];
39
- if (k) {
40
- cookie[k] = v;
41
- }
42
- });
43
- return cookie;
44
- }
45
- export {
46
- getHost,
47
- getPathname,
48
- parseCookie,
49
- parseHeaders,
50
- parseQuery
51
- };
package/dist/esm/url.js DELETED
@@ -1,10 +0,0 @@
1
- function normalizePathname(pathname) {
2
- var normalized = "/" + pathname.replace(/^\/+|\/+$/g, "");
3
- if (normalized === "/") {
4
- return normalized;
5
- }
6
- return normalized;
7
- }
8
- export {
9
- normalizePathname
10
- };
@@ -1,138 +0,0 @@
1
- function invariant(value, message) {
2
- if (value === false || value === null || typeof value === "undefined") {
3
- throw new Error(message);
4
- }
5
- }
6
- class AbortedDeferredError extends Error {
7
- }
8
- function isTrackedPromise(value) {
9
- return value instanceof Promise && value._tracked === true;
10
- }
11
- function unwrapTrackedPromise(value) {
12
- if (!isTrackedPromise(value)) {
13
- return value;
14
- }
15
- if (value._error) {
16
- throw value._error;
17
- }
18
- return value._data;
19
- }
20
- class DeferredData {
21
- trackPromise(key, value) {
22
- if (!(value instanceof Promise)) {
23
- return value;
24
- }
25
- this.deferredKeys.push(key);
26
- this.pendingKeysSet.add(key);
27
- const promise = Promise.race([
28
- value,
29
- this.abortPromise
30
- ]).then((data) => this.onSettle(promise, key, void 0, data), (error) => this.onSettle(promise, key, error));
31
- promise.catch(() => {
32
- });
33
- Object.defineProperty(promise, "_tracked", {
34
- get: () => true
35
- });
36
- return promise;
37
- }
38
- onSettle(promise, key, error, data) {
39
- if (this.controller.signal.aborted && error instanceof AbortedDeferredError) {
40
- this.unlistenAbortSignal();
41
- Object.defineProperty(promise, "_error", {
42
- get: () => error
43
- });
44
- return Promise.reject(error);
45
- }
46
- this.pendingKeysSet.delete(key);
47
- if (this.done) {
48
- this.unlistenAbortSignal();
49
- }
50
- if (error === void 0 && data === void 0) {
51
- const undefinedError = new Error(`Deferred data for key "${key}" resolved/rejected with \`undefined\`, you must resolve/reject with a value or \`null\`.`);
52
- Object.defineProperty(promise, "_error", {
53
- get: () => undefinedError
54
- });
55
- this.emit(false, key);
56
- return Promise.reject(undefinedError);
57
- }
58
- if (data === void 0) {
59
- Object.defineProperty(promise, "_error", {
60
- get: () => error
61
- });
62
- this.emit(false, key);
63
- return Promise.reject(error);
64
- }
65
- Object.defineProperty(promise, "_data", {
66
- get: () => data
67
- });
68
- this.emit(false, key);
69
- return data;
70
- }
71
- emit(aborted, settledKey) {
72
- this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));
73
- }
74
- subscribe(fn) {
75
- this.subscribers.add(fn);
76
- return () => this.subscribers.delete(fn);
77
- }
78
- cancel() {
79
- this.controller.abort();
80
- this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));
81
- this.emit(true);
82
- }
83
- async resolveData(signal) {
84
- let aborted = false;
85
- if (!this.done) {
86
- const onAbort = () => this.cancel();
87
- signal.addEventListener("abort", onAbort);
88
- aborted = await new Promise((resolve) => {
89
- this.subscribe((aborted2) => {
90
- signal.removeEventListener("abort", onAbort);
91
- if (aborted2 || this.done) {
92
- resolve(aborted2);
93
- }
94
- });
95
- });
96
- }
97
- return aborted;
98
- }
99
- get done() {
100
- return this.pendingKeysSet.size === 0;
101
- }
102
- get unwrappedData() {
103
- invariant(this.data !== null && this.done, "Can only unwrap data on initialized and settled deferreds");
104
- return Object.entries(this.data).reduce((acc, [key, value]) => Object.assign(acc, {
105
- [key]: unwrapTrackedPromise(value)
106
- }), {});
107
- }
108
- get pendingKeys() {
109
- return Array.from(this.pendingKeysSet);
110
- }
111
- constructor(data, responseInit) {
112
- this.pendingKeysSet = /* @__PURE__ */ new Set();
113
- this.subscribers = /* @__PURE__ */ new Set();
114
- this.__modern_deferred = true;
115
- this.deferredKeys = [];
116
- invariant(data && typeof data === "object" && !Array.isArray(data), "defer() only accepts plain objects");
117
- let reject;
118
- this.abortPromise = new Promise((_, r) => reject = r);
119
- this.controller = new AbortController();
120
- const onAbort = () => reject(new AbortedDeferredError("Deferred data aborted"));
121
- this.unlistenAbortSignal = () => this.controller.signal.removeEventListener("abort", onAbort);
122
- this.controller.signal.addEventListener("abort", onAbort);
123
- this.data = Object.entries(data).reduce((acc, [key, value]) => Object.assign(acc, {
124
- [key]: this.trackPromise(key, value)
125
- }), {});
126
- if (this.done) {
127
- this.unlistenAbortSignal();
128
- }
129
- this.init = responseInit;
130
- }
131
- }
132
- const activeDeferreds = /* @__PURE__ */ new Map();
133
- export {
134
- AbortedDeferredError,
135
- DeferredData,
136
- activeDeferreds,
137
- invariant
138
- };
@@ -1,142 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { LOADER_REPORTER_NAME } from "@modern-js/utils/universal/constants";
3
- import { Suspense } from "react";
4
- import { Outlet, Route, createRoutesFromElements } from "react-router-dom";
5
- import { time } from "../time";
6
- import { getAsyncLocalStorage } from "../universal/async_storage";
7
- import { DeferredData, activeDeferreds as originalActiveDeferreds } from "./deferreds";
8
- const privateDefer = (data) => {
9
- return new DeferredData(data);
10
- };
11
- const transformNestedRoutes = (routes) => {
12
- const routeElements = [];
13
- for (const route of routes) {
14
- const routeElement = renderNestedRoute(route);
15
- routeElements.push(routeElement);
16
- }
17
- return createRoutesFromElements(routeElements);
18
- };
19
- const renderNestedRoute = (nestedRoute, options = {}) => {
20
- const { children, index, id, component, isRoot, lazyImport, config, handle } = nestedRoute;
21
- const Component = component;
22
- const { parent, props = {} } = options;
23
- const routeProps = {
24
- caseSensitive: nestedRoute.caseSensitive,
25
- path: nestedRoute.path,
26
- id: nestedRoute.id,
27
- loader: createLoader(nestedRoute),
28
- action: nestedRoute.action,
29
- hasErrorBoundary: nestedRoute.hasErrorBoundary,
30
- shouldRevalidate: nestedRoute.shouldRevalidate,
31
- handle: {
32
- ...handle,
33
- ...typeof config === "object" ? config === null || config === void 0 ? void 0 : config.handle : {}
34
- },
35
- index: nestedRoute.index,
36
- element: nestedRoute.element,
37
- errorElement: nestedRoute.errorElement
38
- };
39
- if (nestedRoute.error) {
40
- const errorElement = /* @__PURE__ */ _jsx(nestedRoute.error, {});
41
- routeProps.errorElement = errorElement;
42
- }
43
- let element;
44
- if (Component) {
45
- if ((parent === null || parent === void 0 ? void 0 : parent.loading) && lazyImport) {
46
- const Loading = parent.loading;
47
- if (isLoadableComponent(Component)) {
48
- element = /* @__PURE__ */ _jsx(Component, {
49
- fallback: /* @__PURE__ */ _jsx(Loading, {})
50
- });
51
- } else {
52
- element = /* @__PURE__ */ _jsx(Suspense, {
53
- fallback: /* @__PURE__ */ _jsx(Loading, {}),
54
- children: /* @__PURE__ */ _jsx(Component, {})
55
- });
56
- }
57
- } else if (isLoadableComponent(Component) && lazyImport) {
58
- element = /* @__PURE__ */ _jsx(Component, {});
59
- } else if (isRoot) {
60
- element = /* @__PURE__ */ _jsx(Component, {
61
- ...props
62
- });
63
- } else if (lazyImport) {
64
- element = /* @__PURE__ */ _jsx(Suspense, {
65
- fallback: null,
66
- children: /* @__PURE__ */ _jsx(Component, {})
67
- });
68
- } else {
69
- element = /* @__PURE__ */ _jsx(Component, {});
70
- }
71
- } else {
72
- nestedRoute.loading = parent === null || parent === void 0 ? void 0 : parent.loading;
73
- routeProps.element = /* @__PURE__ */ _jsx(Outlet, {});
74
- }
75
- if (element) {
76
- routeProps.element = element;
77
- }
78
- const childElements = children === null || children === void 0 ? void 0 : children.map((childRoute) => {
79
- return renderNestedRoute(childRoute, {
80
- parent: nestedRoute
81
- });
82
- });
83
- const routeElement = index ? /* @__PURE__ */ _jsx(Route, {
84
- ...routeProps,
85
- index: true
86
- }, id) : /* @__PURE__ */ _jsx(Route, {
87
- ...routeProps,
88
- index: false,
89
- children: childElements
90
- }, id);
91
- return routeElement;
92
- };
93
- function isPlainObject(value) {
94
- return value != null && typeof value === "object" && Object.getPrototypeOf(value) === Object.prototype;
95
- }
96
- function createLoader(route) {
97
- const { loader } = route;
98
- if (loader) {
99
- return async (args) => {
100
- if (typeof route.lazyImport === "function") {
101
- route.lazyImport();
102
- }
103
- const end = time();
104
- const res = await loader(args);
105
- const isRouterV7 = process.env._MODERN_ROUTER_VERSION === "v7";
106
- if (isRouterV7) {
107
- let activeDeferreds = null;
108
- if (typeof document === "undefined") {
109
- var _getAsyncLocalStorage_useContext, _getAsyncLocalStorage;
110
- activeDeferreds = (_getAsyncLocalStorage = getAsyncLocalStorage()) === null || _getAsyncLocalStorage === void 0 ? void 0 : (_getAsyncLocalStorage_useContext = _getAsyncLocalStorage.useContext()) === null || _getAsyncLocalStorage_useContext === void 0 ? void 0 : _getAsyncLocalStorage_useContext.activeDeferreds;
111
- } else {
112
- activeDeferreds = originalActiveDeferreds;
113
- }
114
- if (isPlainObject(res)) {
115
- const deferredData = privateDefer(res);
116
- activeDeferreds.set(route.id, deferredData);
117
- }
118
- }
119
- const cost = end();
120
- if (typeof document === "undefined") {
121
- var _route_id, _storage_useContext_monitors;
122
- const storage = getAsyncLocalStorage();
123
- storage === null || storage === void 0 ? void 0 : (_storage_useContext_monitors = storage.useContext().monitors) === null || _storage_useContext_monitors === void 0 ? void 0 : _storage_useContext_monitors.timing(`${LOADER_REPORTER_NAME}-${(_route_id = route.id) === null || _route_id === void 0 ? void 0 : _route_id.replace(/\//g, "_")}`, cost);
124
- }
125
- return res;
126
- };
127
- } else {
128
- return () => {
129
- if (typeof route.lazyImport === "function") {
130
- route.lazyImport();
131
- }
132
- return null;
133
- };
134
- }
135
- }
136
- function isLoadableComponent(component) {
137
- return component && component.displayName === "Loadable" && component.preload && typeof component.preload === "function";
138
- }
139
- export {
140
- renderNestedRoute,
141
- transformNestedRoutes
142
- };
@@ -1,29 +0,0 @@
1
- function isObject(obj) {
2
- return obj && typeof obj === "object" && !Array.isArray(obj);
3
- }
4
- function merge(target, ...sources) {
5
- if (!sources.length) {
6
- return target;
7
- }
8
- const source = sources.shift();
9
- if (isObject(target) && isObject(source)) {
10
- for (const key in source) {
11
- if (isObject(source[key])) {
12
- if (!target[key]) {
13
- Object.assign(target, {
14
- [key]: {}
15
- });
16
- }
17
- merge(target[key], source[key]);
18
- } else {
19
- Object.assign(target, {
20
- [key]: source[key]
21
- });
22
- }
23
- }
24
- }
25
- return merge(target, ...sources);
26
- }
27
- export {
28
- merge
29
- };
@@ -1,68 +0,0 @@
1
- import Fs from "@modern-js/utils/fs-extra";
2
- import { createMemoryStorage } from "./storer";
3
- class FileReader {
4
- async readFile(path, encoding = "utf-8") {
5
- const { fs } = this;
6
- const _readfile = this._readFileFactory(fs);
7
- return _readfile(path, encoding);
8
- }
9
- async readFileFromSystem(path, encoding = "utf-8") {
10
- const _readfile = this._readFileFactory(Fs);
11
- return _readfile(path, encoding);
12
- }
13
- _readFileFactory(fs) {
14
- return async (path, encoding = "utf-8") => {
15
- const cache = await this.storage.get(path);
16
- if (cache === null) {
17
- return null;
18
- }
19
- if (cache) {
20
- return this.encodingContent(cache, encoding);
21
- }
22
- const isExistFile = await new Promise((resolve) => {
23
- fs.stat(path, (err, stats) => {
24
- if (err) {
25
- resolve(false);
26
- return;
27
- }
28
- if (stats.isFile()) {
29
- resolve(true);
30
- } else {
31
- resolve(false);
32
- }
33
- });
34
- });
35
- if (isExistFile) {
36
- const content = await fs.promises.readFile(path);
37
- this.storage.set(path, content);
38
- return this.encodingContent(content, encoding);
39
- } else {
40
- this.storage.set(path, null);
41
- return null;
42
- }
43
- };
44
- }
45
- /**
46
- * Clear the fileCache entriely.
47
- */
48
- reset(fs) {
49
- var _this_storage_clear, _this_storage;
50
- fs && (this.fs = fs);
51
- return (_this_storage_clear = (_this_storage = this.storage).clear) === null || _this_storage_clear === void 0 ? void 0 : _this_storage_clear.call(_this_storage);
52
- }
53
- encodingContent(value, encoding) {
54
- if (encoding === "utf-8") {
55
- return value.toString();
56
- }
57
- return value;
58
- }
59
- constructor(storage) {
60
- this.fs = Fs;
61
- this.storage = storage;
62
- }
63
- }
64
- const fileReader = new FileReader(createMemoryStorage("__file__system"));
65
- export {
66
- FileReader,
67
- fileReader
68
- };
@@ -1,19 +0,0 @@
1
- class LoaderContext {
2
- getDefaultValue() {
3
- if (!this.defaultValue) {
4
- throw new Error("Can't get defaultValue before initialed");
5
- }
6
- return this.defaultValue;
7
- }
8
- constructor(defaultValue) {
9
- this.defaultValue = defaultValue;
10
- this.symbol = Symbol("loaderContext");
11
- }
12
- }
13
- function createLoaderContext(defaultValue) {
14
- return new LoaderContext(defaultValue);
15
- }
16
- export {
17
- LoaderContext,
18
- createLoaderContext
19
- };
@@ -1,24 +0,0 @@
1
- function createRequestContext(context) {
2
- const _context = context || /* @__PURE__ */ new Map();
3
- function get(key) {
4
- if (typeof key === "string") {
5
- return _context.get(key);
6
- } else {
7
- return _context.get(key.symbol) || key.getDefaultValue();
8
- }
9
- }
10
- function set(key, value) {
11
- if (typeof key === "string") {
12
- _context.set(key, value);
13
- } else {
14
- _context.set(key.symbol, value);
15
- }
16
- }
17
- return {
18
- set,
19
- get
20
- };
21
- }
22
- export {
23
- createRequestContext
24
- };
@@ -1 +0,0 @@
1
- export * from "react-router-dom/server";
@@ -1,9 +0,0 @@
1
- import serialize from "serialize-javascript";
2
- const serializeJson = (data) => {
3
- return serialize(data, {
4
- isJSON: true
5
- });
6
- };
7
- export {
8
- serializeJson
9
- };
@@ -1,44 +0,0 @@
1
- import { LRUCache } from "lru-cache";
2
- class MemoryContainer {
3
- async get(key) {
4
- return this.cache.get(key);
5
- }
6
- async set(key, value) {
7
- this.cache.set(key, value);
8
- return this;
9
- }
10
- async has(key) {
11
- return this.cache.has(key);
12
- }
13
- async delete(key) {
14
- const exist = await this.has(key);
15
- if (exist) {
16
- this.cache.delete(key);
17
- }
18
- return exist;
19
- }
20
- forEach(callbackFn) {
21
- this.cache.forEach((value, key) => {
22
- callbackFn(value, key, this);
23
- });
24
- }
25
- constructor({ max, maxAge } = {}) {
26
- this.cache = new LRUCache({
27
- maxSize: (max || 256) * MemoryContainer.MB,
28
- ttl: maxAge || MemoryContainer.hour,
29
- sizeCalculation: (value, key) => {
30
- return JSON.stringify(value).length;
31
- }
32
- });
33
- }
34
- }
35
- MemoryContainer.BYTE = 1;
36
- MemoryContainer.KB = 1024 * MemoryContainer.BYTE;
37
- MemoryContainer.MB = 1024 * MemoryContainer.KB;
38
- MemoryContainer.ms = 1;
39
- MemoryContainer.second = MemoryContainer.ms * 1e3;
40
- MemoryContainer.minute = MemoryContainer.second * 60;
41
- MemoryContainer.hour = MemoryContainer.minute * 60;
42
- export {
43
- MemoryContainer
44
- };
@@ -1,73 +0,0 @@
1
- class Storage {
2
- async keys() {
3
- var _this_forEach, _this;
4
- const _keys = [];
5
- (_this_forEach = (_this = this).forEach) === null || _this_forEach === void 0 ? void 0 : _this_forEach.call(_this, (_, k) => {
6
- _keys.push(k);
7
- });
8
- return _keys;
9
- }
10
- async values() {
11
- var _this_forEach, _this;
12
- const _values = [];
13
- (_this_forEach = (_this = this).forEach) === null || _this_forEach === void 0 ? void 0 : _this_forEach.call(_this, (v) => {
14
- _values.push(v);
15
- });
16
- return _values;
17
- }
18
- /**
19
- * Returns a specified element from the container. If the value that is associated to the provided key is an object, then you will get a reference to that object and any change made to that object will effectively modify it inside the Container.
20
- * @returns Returns the element associated with the specified key. If no element is associated with the specified key, undefined is returned.
21
- */
22
- get(key) {
23
- const uniqueKey = this.computedUniqueKey(key);
24
- return this.container.get(uniqueKey);
25
- }
26
- /**
27
- * Adds a new element with a specified key and value to the storage. If an element with the same key already exists, the element will be updated.
28
- */
29
- async set(key, value) {
30
- const uniqueKey = this.computedUniqueKey(key);
31
- await this.container.set(uniqueKey, value);
32
- return this;
33
- }
34
- /**
35
- * @returns boolean indicating whether an element with the specified key exists or not.
36
- */
37
- has(key) {
38
- const uniqueKey = this.computedUniqueKey(key);
39
- return this.container.has(uniqueKey);
40
- }
41
- delete(key) {
42
- const uniqueKey = this.computedUniqueKey(key);
43
- return this.container.delete(uniqueKey);
44
- }
45
- async clear() {
46
- var _this_keys, _this;
47
- const keys = await ((_this_keys = (_this = this).keys) === null || _this_keys === void 0 ? void 0 : _this_keys.call(_this));
48
- await Promise.all((keys === null || keys === void 0 ? void 0 : keys.map(async (key) => {
49
- return this.container.delete(key);
50
- })) || []);
51
- }
52
- forEach(fallbackFn) {
53
- var _this_container_forEach, _this_container;
54
- (_this_container_forEach = (_this_container = this.container).forEach) === null || _this_container_forEach === void 0 ? void 0 : _this_container_forEach.call(_this_container, (v, k) => {
55
- if (this.checkIsOwnkey(k)) {
56
- fallbackFn(v, k, this);
57
- }
58
- });
59
- }
60
- computedUniqueKey(k) {
61
- return `${this.namespace}:${k}`;
62
- }
63
- checkIsOwnkey(k) {
64
- return k.startsWith(this.namespace);
65
- }
66
- constructor(namespace, container) {
67
- this.namespace = namespace;
68
- this.container = container;
69
- }
70
- }
71
- export {
72
- Storage
73
- };
@@ -1,80 +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 === null || chunk === void 0 ? void 0 : 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) {
23
- this.stream.destroy(reason);
24
- }
25
- process.nextTick(() => {
26
- this.stream.off("data", this.enqueue);
27
- this.stream.off("error", this.error);
28
- this.stream.off("end", this.close);
29
- this.stream.off("close", this.close);
30
- });
31
- }
32
- enqueue(chunk) {
33
- if (this.controller) {
34
- try {
35
- const bytes = chunk instanceof Uint8Array ? chunk : Buffer.from(chunk);
36
- const available = (this.controller.desiredSize || 0) - bytes.byteLength;
37
- this.controller.enqueue(bytes);
38
- if (available <= 0) {
39
- this.pause();
40
- }
41
- } catch (error) {
42
- 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"));
43
- this.cancel();
44
- }
45
- }
46
- }
47
- pause() {
48
- if (this.stream.pause) {
49
- this.stream.pause();
50
- }
51
- }
52
- resume() {
53
- if (this.stream.readable && this.stream.resume) {
54
- this.stream.resume();
55
- }
56
- }
57
- close() {
58
- if (this.controller) {
59
- this.controller.close();
60
- delete this.controller;
61
- }
62
- }
63
- error(error) {
64
- if (this.controller) {
65
- this.controller.error(error);
66
- delete this.controller;
67
- }
68
- }
69
- constructor(stream) {
70
- this.highWaterMark = stream.readableHighWaterMark || new Stream.Readable().readableHighWaterMark;
71
- this.accumalatedSize = 0;
72
- this.stream = stream;
73
- this.enqueue = this.enqueue.bind(this);
74
- this.error = this.error.bind(this);
75
- this.close = this.close.bind(this);
76
- }
77
- }
78
- export {
79
- createReadableStreamFromReadable
80
- };