@modern-js/plugin-data-loader 2.4.0 → 2.5.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 (33) hide show
  1. package/dist/{js/node → cjs}/cli/create-request.js +17 -26
  2. package/dist/cjs/cli/data.js +162 -0
  3. package/dist/{js/node → cjs}/cli/generate-client.js +1 -1
  4. package/dist/{js/node → cjs}/cli/loader.js +12 -34
  5. package/dist/{js/node → cjs}/common/constants.js +0 -0
  6. package/dist/cjs/runtime/index.js +159 -0
  7. package/dist/cjs/runtime/response.js +102 -0
  8. package/dist/cjs/server/index.js +64 -0
  9. package/dist/{js/treeshaking → esm}/cli/create-request.js +41 -2
  10. package/dist/esm/cli/data.js +820 -0
  11. package/dist/{js/treeshaking → esm}/cli/generate-client.js +1 -1
  12. package/dist/{js/treeshaking → esm}/cli/loader.js +2 -2
  13. package/dist/{js/treeshaking → esm}/common/constants.js +0 -0
  14. package/dist/{js/treeshaking/server → esm/runtime}/index.js +69 -225
  15. package/dist/esm/runtime/response.js +284 -0
  16. package/dist/esm/server/index.js +176 -0
  17. package/dist/{js/modern → esm-node}/cli/create-request.js +17 -26
  18. package/dist/esm-node/cli/data.js +142 -0
  19. package/dist/{js/modern → esm-node}/cli/generate-client.js +1 -1
  20. package/dist/esm-node/cli/loader.js +18 -0
  21. package/dist/{js/modern → esm-node}/common/constants.js +0 -0
  22. package/dist/esm-node/runtime/index.js +143 -0
  23. package/dist/esm-node/runtime/response.js +79 -0
  24. package/dist/esm-node/server/index.js +40 -0
  25. package/dist/types/cli/create-request.d.ts +2 -1
  26. package/dist/types/cli/data.d.ts +6 -0
  27. package/dist/types/runtime/index.d.ts +15 -0
  28. package/dist/types/runtime/response.d.ts +2 -0
  29. package/dist/types/server/index.d.ts +0 -15
  30. package/package.json +24 -14
  31. package/dist/js/modern/cli/loader.js +0 -40
  32. package/dist/js/modern/server/index.js +0 -237
  33. package/dist/js/node/server/index.js +0 -261
@@ -15,26 +15,6 @@ var __copyProps = (to, from, except, desc) => {
15
15
  return to;
16
16
  };
17
17
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
- var __async = (__this, __arguments, generator) => {
19
- return new Promise((resolve, reject) => {
20
- var fulfilled = (value) => {
21
- try {
22
- step(generator.next(value));
23
- } catch (e) {
24
- reject(e);
25
- }
26
- };
27
- var rejected = (value) => {
28
- try {
29
- step(generator.throw(value));
30
- } catch (e) {
31
- reject(e);
32
- }
33
- };
34
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
35
- step((generator = generator.apply(__this, __arguments)).next());
36
- });
37
- };
38
18
  var create_request_exports = {};
39
19
  __export(create_request_exports, {
40
20
  createRequest: () => createRequest,
@@ -44,6 +24,7 @@ module.exports = __toCommonJS(create_request_exports);
44
24
  var import_path_to_regexp = require("path-to-regexp");
45
25
  var import_react_router_dom = require("react-router-dom");
46
26
  var import_constants = require("../common/constants");
27
+ var import_data = require("./data");
47
28
  const getRequestUrl = ({
48
29
  params,
49
30
  request,
@@ -63,25 +44,35 @@ const handleRedirectResponse = (res) => {
63
44
  const { headers } = res;
64
45
  const location = headers.get("X-Modernjs-Redirect");
65
46
  if (location) {
66
- return (0, import_react_router_dom.redirect)(location);
47
+ throw (0, import_react_router_dom.redirect)(location);
48
+ }
49
+ return res;
50
+ };
51
+ const handleDeferredResponse = async (res) => {
52
+ var _a;
53
+ if (((_a = res.headers.get("Content-Type")) == null ? void 0 : _a.match(/text\/modernjs-deferred/)) && res.body) {
54
+ return await (0, import_data.parseDeferredReadableStream)(res.body);
67
55
  }
68
56
  return res;
69
57
  };
70
58
  const createRequest = (routeId, method = "get") => {
71
- return (_0) => __async(void 0, [_0], function* ({
59
+ return async ({
72
60
  params,
73
61
  request
74
- }) {
62
+ }) => {
75
63
  const url = getRequestUrl({ params, request, routeId });
76
- const res = yield fetch(url, {
64
+ let res;
65
+ res = await fetch(url, {
77
66
  method,
78
67
  signal: request.signal
79
68
  });
80
69
  if (!res.ok) {
81
70
  throw res;
82
71
  }
83
- return handleRedirectResponse(res);
84
- });
72
+ res = handleRedirectResponse(res);
73
+ res = await handleDeferredResponse(res);
74
+ return res;
75
+ };
85
76
  };
86
77
  // Annotate the CommonJS export names for ESM import in node:
87
78
  0 && (module.exports = {
@@ -0,0 +1,162 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var data_exports = {};
19
+ __export(data_exports, {
20
+ parseDeferredReadableStream: () => parseDeferredReadableStream
21
+ });
22
+ module.exports = __toCommonJS(data_exports);
23
+ var import_remix_router = require("@modern-js/utils/remix-router");
24
+ const DEFERRED_VALUE_PLACEHOLDER_PREFIX = "__deferred_promise:";
25
+ async function parseDeferredReadableStream(stream) {
26
+ if (!stream) {
27
+ throw new Error("parseDeferredReadableStream requires stream argument");
28
+ }
29
+ let deferredData;
30
+ const deferredResolvers = {};
31
+ try {
32
+ const sectionReader = readStreamSections(stream);
33
+ const initialSectionResult = await sectionReader.next();
34
+ const initialSection = initialSectionResult.value;
35
+ if (!initialSection) {
36
+ throw new Error("no critical data");
37
+ }
38
+ const criticalData = JSON.parse(initialSection);
39
+ if (typeof criticalData === "object" && criticalData !== null) {
40
+ for (const [eventKey, value] of Object.entries(criticalData)) {
41
+ if (typeof value !== "string" || !value.startsWith(DEFERRED_VALUE_PLACEHOLDER_PREFIX)) {
42
+ continue;
43
+ }
44
+ deferredData = deferredData || {};
45
+ deferredData[eventKey] = new Promise((resolve, reject) => {
46
+ deferredResolvers[eventKey] = {
47
+ resolve: (value2) => {
48
+ resolve(value2);
49
+ delete deferredResolvers[eventKey];
50
+ },
51
+ reject: (error) => {
52
+ reject(error);
53
+ delete deferredResolvers[eventKey];
54
+ }
55
+ };
56
+ });
57
+ }
58
+ }
59
+ (async () => {
60
+ try {
61
+ for await (const section of sectionReader) {
62
+ const [event, ...sectionDataStrings] = section.split(":");
63
+ const sectionDataString = sectionDataStrings.join(":");
64
+ const data = JSON.parse(sectionDataString);
65
+ if (event === "data") {
66
+ for (const [key, value] of Object.entries(data)) {
67
+ if (deferredResolvers[key]) {
68
+ deferredResolvers[key].resolve(value);
69
+ }
70
+ }
71
+ } else if (event === "error") {
72
+ for (const [key, value] of Object.entries(data)) {
73
+ const err = new Error(value.message);
74
+ err.stack = value.stack;
75
+ if (deferredResolvers[key]) {
76
+ deferredResolvers[key].reject(err);
77
+ }
78
+ }
79
+ }
80
+ }
81
+ for (const [key, resolver] of Object.entries(deferredResolvers)) {
82
+ resolver.reject(
83
+ new import_remix_router.AbortedDeferredError(`Deferred ${key} will never resolved`)
84
+ );
85
+ }
86
+ } catch (error) {
87
+ for (const resolver of Object.values(deferredResolvers)) {
88
+ resolver.reject(error);
89
+ }
90
+ }
91
+ })();
92
+ return new import_remix_router.UNSAFE_DeferredData({ ...criticalData, ...deferredData });
93
+ } catch (error) {
94
+ for (const resolver of Object.values(deferredResolvers)) {
95
+ resolver.reject(error);
96
+ }
97
+ throw error;
98
+ }
99
+ }
100
+ async function* readStreamSections(stream) {
101
+ const reader = stream.getReader();
102
+ let buffer = [];
103
+ let sections = [];
104
+ let closed = false;
105
+ const encoder = new TextEncoder();
106
+ const decoder = new TextDecoder();
107
+ const readStreamSection = async () => {
108
+ if (sections.length > 0) {
109
+ return sections.shift();
110
+ }
111
+ while (!closed && sections.length === 0) {
112
+ const chunk = await reader.read();
113
+ if (chunk.done) {
114
+ closed = true;
115
+ break;
116
+ }
117
+ buffer.push(chunk.value);
118
+ try {
119
+ const bufferedString = decoder.decode(mergeArrays(...buffer));
120
+ const splitSections = bufferedString.split("\n\n");
121
+ if (splitSections.length >= 2) {
122
+ sections.push(...splitSections.slice(0, -1));
123
+ buffer = [encoder.encode(splitSections.slice(-1).join("\n\n"))];
124
+ }
125
+ if (sections.length > 0) {
126
+ break;
127
+ }
128
+ } catch {
129
+ continue;
130
+ }
131
+ }
132
+ if (sections.length > 0) {
133
+ return sections.shift();
134
+ }
135
+ if (buffer.length > 0) {
136
+ const bufferedString = decoder.decode(mergeArrays(...buffer));
137
+ sections = bufferedString.split("\n\n").filter((s) => s);
138
+ buffer = [];
139
+ }
140
+ return sections.shift();
141
+ };
142
+ let section = await readStreamSection();
143
+ while (section) {
144
+ yield section;
145
+ section = await readStreamSection();
146
+ }
147
+ }
148
+ function mergeArrays(...arrays) {
149
+ const out = new Uint8Array(
150
+ arrays.reduce((total, arr) => total + arr.length, 0)
151
+ );
152
+ let offset = 0;
153
+ for (const arr of arrays) {
154
+ out.set(arr, offset);
155
+ offset += arr.length;
156
+ }
157
+ return out;
158
+ }
159
+ // Annotate the CommonJS export names for ESM import in node:
160
+ 0 && (module.exports = {
161
+ parseDeferredReadableStream
162
+ });
@@ -35,7 +35,7 @@ const generateClient = ({
35
35
  const loadersMap = require(mapFile);
36
36
  let requestCode = ``;
37
37
  let exportsCode = ``;
38
- const requestCreatorPath = import_path.default.join(__dirname, "./create-request").replace("/node/cli/", "/treeshaking/cli/").replace(/\\/g, "/");
38
+ const requestCreatorPath = import_path.default.join(__dirname, "./create-request").replace("/cjs/cli/", "/esm/cli/").replace(/\\/g, "/");
39
39
  const importCode = `
40
40
  import { createRequest } from '${requestCreatorPath}';
41
41
  `;
@@ -15,47 +15,25 @@ var __copyProps = (to, from, except, desc) => {
15
15
  return to;
16
16
  };
17
17
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
- var __async = (__this, __arguments, generator) => {
19
- return new Promise((resolve, reject) => {
20
- var fulfilled = (value) => {
21
- try {
22
- step(generator.next(value));
23
- } catch (e) {
24
- reject(e);
25
- }
26
- };
27
- var rejected = (value) => {
28
- try {
29
- step(generator.throw(value));
30
- } catch (e) {
31
- reject(e);
32
- }
33
- };
34
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
35
- step((generator = generator.apply(__this, __arguments)).next());
36
- });
37
- };
38
18
  var loader_exports = {};
39
19
  __export(loader_exports, {
40
20
  default: () => loader
41
21
  });
42
22
  module.exports = __toCommonJS(loader_exports);
43
23
  var import_generate_client = require("./generate-client");
44
- function loader(source) {
45
- return __async(this, null, function* () {
46
- var _a;
47
- this.cacheable();
48
- const target = (_a = this._compiler) == null ? void 0 : _a.options.target;
49
- if (target === "node") {
50
- return source;
51
- }
52
- const options = this.getOptions();
53
- const code = (0, import_generate_client.generateClient)({
54
- mapFile: options.mapFile,
55
- loaderId: options.loaderId
56
- });
57
- return code;
24
+ async function loader(source) {
25
+ var _a;
26
+ this.cacheable();
27
+ const target = (_a = this._compiler) == null ? void 0 : _a.options.target;
28
+ if (target === "node") {
29
+ return source;
30
+ }
31
+ const options = this.getOptions();
32
+ const code = (0, import_generate_client.generateClient)({
33
+ mapFile: options.mapFile,
34
+ loaderId: options.loaderId
58
35
  });
36
+ return code;
59
37
  }
60
38
  // Annotate the CommonJS export names for ESM import in node:
61
39
  0 && (module.exports = {});
File without changes
@@ -0,0 +1,159 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var runtime_exports = {};
19
+ __export(runtime_exports, {
20
+ handleRequest: () => handleRequest,
21
+ isRedirectResponse: () => isRedirectResponse,
22
+ isResponse: () => isResponse,
23
+ matchEntry: () => matchEntry
24
+ });
25
+ module.exports = __toCommonJS(runtime_exports);
26
+ var import_node = require("@remix-run/node");
27
+ var import_utils = require("@modern-js/utils");
28
+ var import_remix_router = require("@modern-js/utils/remix-router");
29
+ var import_constants = require("../common/constants");
30
+ var import_response = require("./response");
31
+ (0, import_node.installGlobals)();
32
+ const redirectStatusCodes = /* @__PURE__ */ new Set([301, 302, 303, 307, 308]);
33
+ function isRedirectResponse(status) {
34
+ return redirectStatusCodes.has(status);
35
+ }
36
+ function isResponse(value) {
37
+ return value != null && typeof value.status === "number" && typeof value.statusText === "string" && typeof value.headers === "object" && typeof value.body !== "undefined";
38
+ }
39
+ function convertModernRedirectResponse(headers) {
40
+ const newHeaders = new Headers(headers);
41
+ newHeaders.set("X-Modernjs-Redirect", headers.get("Location"));
42
+ newHeaders.delete("Location");
43
+ return new import_node.Response(null, {
44
+ status: 204,
45
+ headers: newHeaders
46
+ });
47
+ }
48
+ const createLoaderHeaders = (requestHeaders) => {
49
+ const headers = new Headers();
50
+ for (const [key, values] of Object.entries(requestHeaders)) {
51
+ if (values) {
52
+ if (Array.isArray(values)) {
53
+ for (const value of values) {
54
+ headers.append(key, value);
55
+ }
56
+ } else {
57
+ headers.set(key, values);
58
+ }
59
+ }
60
+ }
61
+ return headers;
62
+ };
63
+ const createLoaderRequest = (context) => {
64
+ const origin = `${context.protocol}://${context.host}`;
65
+ const url = new URL(context.url, origin);
66
+ const controller = new AbortController();
67
+ const init = {
68
+ method: context.method,
69
+ headers: createLoaderHeaders(context.headers),
70
+ signal: controller.signal
71
+ };
72
+ return new Request(url.href, init);
73
+ };
74
+ const sendLoaderResponse = async (res, nodeResponse) => {
75
+ res.statusMessage = nodeResponse.statusText;
76
+ res.statusCode = nodeResponse.status;
77
+ for (const [key, value] of nodeResponse.headers.entries()) {
78
+ res.setHeader(key, value);
79
+ }
80
+ if (nodeResponse.body) {
81
+ await (0, import_node.writeReadableStreamToWritable)(nodeResponse.body, res);
82
+ } else {
83
+ res.end();
84
+ }
85
+ };
86
+ const matchEntry = (pathname, entries) => {
87
+ return entries.find((entry) => pathname.startsWith(entry.urlPath));
88
+ };
89
+ const handleRequest = async ({
90
+ context,
91
+ serverRoutes,
92
+ routes
93
+ }) => {
94
+ const { method, query } = context;
95
+ const routeId = query[import_constants.LOADER_ID_PARAM];
96
+ if (!routeId) {
97
+ throw new Error(`Missing parameter: ${import_constants.LOADER_ID_PARAM}`);
98
+ }
99
+ if (method.toLowerCase() !== "get") {
100
+ throw new Error("Only support httpp GET method");
101
+ }
102
+ const entry = matchEntry(context.path, serverRoutes);
103
+ if (!entry) {
104
+ throw new Error("Route is not matched");
105
+ }
106
+ const dataRoutes = (0, import_utils.transformNestedRoutes)(routes);
107
+ const staticHandler = (0, import_remix_router.createStaticHandler)(dataRoutes, {
108
+ basename: entry.urlPath
109
+ });
110
+ const { res } = context;
111
+ const request = createLoaderRequest(context);
112
+ let response;
113
+ try {
114
+ response = await staticHandler.queryRoute(request, {
115
+ routeId,
116
+ requestContext: context
117
+ });
118
+ if (isResponse(response) && isRedirectResponse(response.status)) {
119
+ response = convertModernRedirectResponse(response.headers);
120
+ } else if (import_remix_router.UNSAFE_DEFERRED_SYMBOL in response) {
121
+ const deferredData = response[import_remix_router.UNSAFE_DEFERRED_SYMBOL];
122
+ const body = (0, import_response.createDeferredReadableStream)(deferredData, request.signal);
123
+ const init = deferredData.init || {};
124
+ if (init.status && isRedirectResponse(init.status)) {
125
+ if (!init.headers) {
126
+ throw new Error("redirect response includes no headers");
127
+ }
128
+ response = convertModernRedirectResponse(new Headers(init.headers));
129
+ } else {
130
+ const headers = new Headers(init.headers);
131
+ headers.set("Content-Type", "text/modernjs-deferred");
132
+ init.headers = headers;
133
+ response = new import_node.Response(body, init);
134
+ }
135
+ } else {
136
+ response = isResponse(response) ? response : new import_node.Response(JSON.stringify(response), {
137
+ headers: {
138
+ "Content-Type": "application/json; charset=utf-8"
139
+ }
140
+ });
141
+ }
142
+ } catch (error) {
143
+ const message = error instanceof import_remix_router.ErrorResponse ? error.data : String(error);
144
+ response = new import_node.Response(message, {
145
+ status: 500,
146
+ headers: {
147
+ "Content-Type": "text/plain"
148
+ }
149
+ });
150
+ }
151
+ sendLoaderResponse(res, response);
152
+ };
153
+ // Annotate the CommonJS export names for ESM import in node:
154
+ 0 && (module.exports = {
155
+ handleRequest,
156
+ isRedirectResponse,
157
+ isResponse,
158
+ matchEntry
159
+ });
@@ -0,0 +1,102 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var response_exports = {};
19
+ __export(response_exports, {
20
+ createDeferredReadableStream: () => createDeferredReadableStream
21
+ });
22
+ module.exports = __toCommonJS(response_exports);
23
+ var import_util = require("util");
24
+ var import_utils = require("@modern-js/utils");
25
+ function isTrackedPromise(value) {
26
+ return value != null && typeof value.then === "function" && value._tracked === true;
27
+ }
28
+ const DEFERRED_VALUE_PLACEHOLDER_PREFIX = "__deferred_promise:";
29
+ function createDeferredReadableStream(deferredData, signal) {
30
+ const encoder = new import_util.TextEncoder();
31
+ const stream = new ReadableStream({
32
+ async start(controller) {
33
+ const criticalData = {};
34
+ const preresolvedKeys = [];
35
+ for (const [key, value] of Object.entries(deferredData.data)) {
36
+ if (isTrackedPromise(value)) {
37
+ criticalData[key] = `${DEFERRED_VALUE_PLACEHOLDER_PREFIX}${key}`;
38
+ if (typeof value._data !== "undefined" || typeof value._error !== "undefined") {
39
+ preresolvedKeys.push(key);
40
+ }
41
+ } else {
42
+ criticalData[key] = value;
43
+ }
44
+ }
45
+ controller.enqueue(encoder.encode(`${JSON.stringify(criticalData)}
46
+
47
+ `));
48
+ for (const preresolvedKey of preresolvedKeys) {
49
+ enqueueTrackedPromise(
50
+ controller,
51
+ encoder,
52
+ preresolvedKey,
53
+ deferredData.data[preresolvedKey]
54
+ );
55
+ }
56
+ const unsubscribe = deferredData.subscribe((aborted, settledKey) => {
57
+ if (settledKey) {
58
+ enqueueTrackedPromise(
59
+ controller,
60
+ encoder,
61
+ settledKey,
62
+ deferredData.data[settledKey]
63
+ );
64
+ }
65
+ });
66
+ await deferredData.resolveData(signal);
67
+ unsubscribe();
68
+ controller.close();
69
+ }
70
+ });
71
+ return stream;
72
+ }
73
+ function enqueueTrackedPromise(controller, encoder, settledKey, promise) {
74
+ var _a;
75
+ if ("_error" in promise) {
76
+ const { _error } = promise;
77
+ controller.enqueue(
78
+ encoder.encode(
79
+ `error:${(0, import_utils.serializeJson)({
80
+ [settledKey]: {
81
+ message: _error.message,
82
+ stack: _error.stack
83
+ }
84
+ })}
85
+
86
+ `
87
+ )
88
+ );
89
+ } else {
90
+ controller.enqueue(
91
+ encoder.encode(
92
+ `data:${JSON.stringify({ [settledKey]: (_a = promise._data) != null ? _a : null })}
93
+
94
+ `
95
+ )
96
+ );
97
+ }
98
+ }
99
+ // Annotate the CommonJS export names for ESM import in node:
100
+ 0 && (module.exports = {
101
+ createDeferredReadableStream
102
+ });
@@ -0,0 +1,64 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
21
+ mod
22
+ ));
23
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
24
+ var server_exports = {};
25
+ __export(server_exports, {
26
+ default: () => server_default
27
+ });
28
+ module.exports = __toCommonJS(server_exports);
29
+ var import_path = __toESM(require("path"));
30
+ var import_utils = require("@modern-js/utils");
31
+ var import_runtime = require("../runtime");
32
+ var server_default = () => ({
33
+ name: "@modern-js/plugin-data-loader",
34
+ setup: () => ({
35
+ preparebeforeRouteHandler({
36
+ serverRoutes,
37
+ distDir
38
+ }) {
39
+ return async (context) => {
40
+ const entry = (0, import_runtime.matchEntry)(context.path, serverRoutes);
41
+ if (!entry) {
42
+ throw new Error("Route is not matched");
43
+ }
44
+ const routesPath = import_path.default.join(
45
+ distDir,
46
+ import_utils.SERVER_BUNDLE_DIRECTORY,
47
+ `${entry.entryName || import_utils.MAIN_ENTRY_NAME}-server-loaders`
48
+ );
49
+ const { routes, handleRequest } = await Promise.resolve().then(() => __toESM(require(routesPath)));
50
+ if (!routes) {
51
+ throw new Error("Missing route info");
52
+ ;
53
+ }
54
+ return handleRequest({
55
+ serverRoutes,
56
+ context,
57
+ routes
58
+ });
59
+ };
60
+ }
61
+ })
62
+ });
63
+ // Annotate the CommonJS export names for ESM import in node:
64
+ 0 && (module.exports = {});