@modern-js/plugin-data-loader 2.35.2-alpha.0 → 2.37.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.
@@ -1,30 +0,0 @@
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 constants_exports = {};
19
- __export(constants_exports, {
20
- DIRECT_PARAM: () => DIRECT_PARAM,
21
- LOADER_ID_PARAM: () => LOADER_ID_PARAM
22
- });
23
- module.exports = __toCommonJS(constants_exports);
24
- const LOADER_ID_PARAM = "__loader";
25
- const DIRECT_PARAM = "__ssrDirect";
26
- // Annotate the CommonJS export names for ESM import in node:
27
- 0 && (module.exports = {
28
- DIRECT_PARAM,
29
- LOADER_ID_PARAM
30
- });
@@ -1,261 +0,0 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __defProps = Object.defineProperties;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
6
- var __getOwnPropNames = Object.getOwnPropertyNames;
7
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
- var __getProtoOf = Object.getPrototypeOf;
9
- var __hasOwnProp = Object.prototype.hasOwnProperty;
10
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
11
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
12
- var __spreadValues = (a, b) => {
13
- for (var prop in b || (b = {}))
14
- if (__hasOwnProp.call(b, prop))
15
- __defNormalProp(a, prop, b[prop]);
16
- if (__getOwnPropSymbols)
17
- for (var prop of __getOwnPropSymbols(b)) {
18
- if (__propIsEnum.call(b, prop))
19
- __defNormalProp(a, prop, b[prop]);
20
- }
21
- return a;
22
- };
23
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
24
- var __export = (target, all) => {
25
- for (var name in all)
26
- __defProp(target, name, { get: all[name], enumerable: true });
27
- };
28
- var __copyProps = (to, from, except, desc) => {
29
- if (from && typeof from === "object" || typeof from === "function") {
30
- for (let key of __getOwnPropNames(from))
31
- if (!__hasOwnProp.call(to, key) && key !== except)
32
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
33
- }
34
- return to;
35
- };
36
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
37
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
38
- mod
39
- ));
40
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
41
- var __async = (__this, __arguments, generator) => {
42
- return new Promise((resolve, reject) => {
43
- var fulfilled = (value) => {
44
- try {
45
- step(generator.next(value));
46
- } catch (e) {
47
- reject(e);
48
- }
49
- };
50
- var rejected = (value) => {
51
- try {
52
- step(generator.throw(value));
53
- } catch (e) {
54
- reject(e);
55
- }
56
- };
57
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
58
- step((generator = generator.apply(__this, __arguments)).next());
59
- });
60
- };
61
- var server_exports = {};
62
- __export(server_exports, {
63
- default: () => server_default,
64
- getPathWithoutEntry: () => getPathWithoutEntry,
65
- handleRequest: () => handleRequest,
66
- isRedirectResponse: () => isRedirectResponse,
67
- isResponse: () => isResponse
68
- });
69
- module.exports = __toCommonJS(server_exports);
70
- var import_path = __toESM(require("path"));
71
- var import_node = require("@remix-run/node");
72
- var import_react_router_dom = require("react-router-dom");
73
- var import_utils = require("@modern-js/utils");
74
- var import_constants = require("../common/constants");
75
- (0, import_node.installGlobals)();
76
- const redirectStatusCodes = /* @__PURE__ */ new Set([301, 302, 303, 307, 308]);
77
- function isRedirectResponse(response) {
78
- return redirectStatusCodes.has(response.status);
79
- }
80
- function isResponse(value) {
81
- return value != null && typeof value.status === "number" && typeof value.statusText === "string" && typeof value.headers === "object" && typeof value.body !== "undefined";
82
- }
83
- const json = (data, init = {}) => {
84
- const responseInit = typeof init === "number" ? { status: init } : init;
85
- const headers = new Headers(responseInit.headers);
86
- if (!headers.has("Content-Type")) {
87
- headers.set("Content-Type", "application/json; charset=utf-8");
88
- }
89
- return new import_node.Response(JSON.stringify(data), __spreadProps(__spreadValues({}, responseInit), {
90
- headers
91
- }));
92
- };
93
- const callRouteLoader = (_0) => __async(void 0, [_0], function* ({
94
- routeId,
95
- loader,
96
- params,
97
- request,
98
- loadContext
99
- }) {
100
- if (!loader) {
101
- throw new Error(
102
- `You made a ${request.method} request to ${request.url} but did not provide a default component or \`loader\` for route "${routeId}", so there is no way to handle the request.`
103
- );
104
- }
105
- let result;
106
- try {
107
- result = yield loader({
108
- request,
109
- params
110
- });
111
- } catch (error) {
112
- if (!isResponse(error)) {
113
- throw error;
114
- }
115
- result = error;
116
- }
117
- if (result === void 0) {
118
- throw new Error(
119
- `You defined a loader for route "${routeId}" but didn't return anything from your \`loader\` function. Please return a value or \`null\`.`
120
- );
121
- }
122
- return isResponse(result) ? result : json(result);
123
- });
124
- const createLoaderHeaders = (requestHeaders) => {
125
- const headers = new Headers();
126
- for (const [key, values] of Object.entries(requestHeaders)) {
127
- if (values) {
128
- if (Array.isArray(values)) {
129
- for (const value of values) {
130
- headers.append(key, value);
131
- }
132
- } else {
133
- headers.set(key, values);
134
- }
135
- }
136
- }
137
- return headers;
138
- };
139
- const createLoaderRequest = (context) => {
140
- const origin = `${context.protocol}://${context.host}`;
141
- const url = new URL(context.url, origin);
142
- const controller = new AbortController();
143
- const init = {
144
- method: context.method,
145
- headers: createLoaderHeaders(context.headers),
146
- signal: controller.signal
147
- };
148
- return new Request(url.href, init);
149
- };
150
- const sendLoaderResponse = (res, nodeResponse) => __async(void 0, null, function* () {
151
- res.statusMessage = nodeResponse.statusText;
152
- res.statusCode = nodeResponse.status;
153
- for (const [key, value] of nodeResponse.headers.entries()) {
154
- res.setHeader(key, value);
155
- }
156
- if (nodeResponse.body) {
157
- yield (0, import_node.writeReadableStreamToWritable)(nodeResponse.body, res);
158
- } else {
159
- res.end();
160
- }
161
- });
162
- const getPathWithoutEntry = (pathname, entryPath) => {
163
- if (entryPath === "/") {
164
- return pathname;
165
- }
166
- return pathname.replace(entryPath, "");
167
- };
168
- const matchEntry = (pathname, entries) => {
169
- return entries.find((entry) => pathname.startsWith(entry.urlPath));
170
- };
171
- const handleRequest = (_0) => __async(void 0, [_0], function* ({
172
- context,
173
- serverRoutes,
174
- distDir
175
- }) {
176
- const { method, query } = context;
177
- const routeId = query[import_constants.LOADER_ID_PARAM];
178
- if (!routeId || method.toLowerCase() !== "get") {
179
- return;
180
- }
181
- const entry = matchEntry(context.path, serverRoutes);
182
- if (!entry) {
183
- return;
184
- }
185
- const routesPath = import_path.default.join(
186
- distDir,
187
- import_utils.SERVER_BUNDLE_DIRECTORY,
188
- `${entry.entryName || import_utils.MAIN_ENTRY_NAME}-server-loaders`
189
- );
190
- const { routes } = yield Promise.resolve().then(() => __toESM(require(routesPath)));
191
- if (!routes) {
192
- return;
193
- }
194
- const { res } = context;
195
- const pathname = getPathWithoutEntry(context.path, entry.urlPath);
196
- const matches = (0, import_react_router_dom.matchRoutes)(routes, pathname);
197
- if (!matches) {
198
- res.statusCode = 403;
199
- res.end(`Route ${pathname} was not matched`);
200
- return;
201
- }
202
- const match = matches == null ? void 0 : matches.find((match2) => match2.route.id === routeId);
203
- if (!match) {
204
- res.statusCode = 403;
205
- res.end(`Route ${routeId} does not match URL ${context.path}`);
206
- return;
207
- }
208
- const request = createLoaderRequest(context);
209
- let response;
210
- try {
211
- response = yield callRouteLoader({
212
- loader: match.route.loader,
213
- routeId: match.route.id,
214
- params: match.params,
215
- request,
216
- loadContext: {}
217
- });
218
- if (isRedirectResponse(response)) {
219
- const headers = new Headers(response.headers);
220
- headers.set("X-Modernjs-Redirect", headers.get("Location"));
221
- headers.delete("Location");
222
- response = new import_node.Response(null, {
223
- status: 204,
224
- headers
225
- });
226
- }
227
- } catch (error) {
228
- const message = String(error);
229
- response = new import_node.Response(message, {
230
- status: 500,
231
- headers: {
232
- "Content-Type": "text/plain"
233
- }
234
- });
235
- }
236
- sendLoaderResponse(res, response);
237
- });
238
- var server_default = () => ({
239
- name: "@modern-js/plugin-data-loader",
240
- setup: () => ({
241
- preparebeforeRouteHandler({
242
- serverRoutes,
243
- distDir
244
- }) {
245
- return (context) => __async(this, null, function* () {
246
- return handleRequest({
247
- serverRoutes,
248
- distDir,
249
- context
250
- });
251
- });
252
- }
253
- })
254
- });
255
- // Annotate the CommonJS export names for ESM import in node:
256
- 0 && (module.exports = {
257
- getPathWithoutEntry,
258
- handleRequest,
259
- isRedirectResponse,
260
- isResponse
261
- });
@@ -1,186 +0,0 @@
1
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
2
- try {
3
- var info = gen[key](arg);
4
- var value = info.value;
5
- } catch (error) {
6
- reject(error);
7
- return;
8
- }
9
- if (info.done) {
10
- resolve(value);
11
- } else {
12
- Promise.resolve(value).then(_next, _throw);
13
- }
14
- }
15
- function _asyncToGenerator(fn) {
16
- return function() {
17
- var self = this, args = arguments;
18
- return new Promise(function(resolve, reject) {
19
- var gen = fn.apply(self, args);
20
- function _next(value) {
21
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
22
- }
23
- function _throw(err) {
24
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
25
- }
26
- _next(undefined);
27
- });
28
- };
29
- }
30
- var __generator = this && this.__generator || function(thisArg, body) {
31
- var f, y, t, g, _ = {
32
- label: 0,
33
- sent: function() {
34
- if (t[0] & 1) throw t[1];
35
- return t[1];
36
- },
37
- trys: [],
38
- ops: []
39
- };
40
- return(g = {
41
- next: verb(0),
42
- "throw": verb(1),
43
- "return": verb(2)
44
- }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
45
- return this;
46
- }), g);
47
- function verb(n) {
48
- return function(v) {
49
- return step([
50
- n,
51
- v
52
- ]);
53
- };
54
- }
55
- function step(op) {
56
- if (f) throw new TypeError("Generator is already executing.");
57
- while(_)try {
58
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
59
- if (y = 0, t) op = [
60
- op[0] & 2,
61
- t.value
62
- ];
63
- switch(op[0]){
64
- case 0:
65
- case 1:
66
- t = op;
67
- break;
68
- case 4:
69
- _.label++;
70
- return {
71
- value: op[1],
72
- done: false
73
- };
74
- case 5:
75
- _.label++;
76
- y = op[1];
77
- op = [
78
- 0
79
- ];
80
- continue;
81
- case 7:
82
- op = _.ops.pop();
83
- _.trys.pop();
84
- continue;
85
- default:
86
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
87
- _ = 0;
88
- continue;
89
- }
90
- if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
91
- _.label = op[1];
92
- break;
93
- }
94
- if (op[0] === 6 && _.label < t[1]) {
95
- _.label = t[1];
96
- t = op;
97
- break;
98
- }
99
- if (t && _.label < t[2]) {
100
- _.label = t[2];
101
- _.ops.push(op);
102
- break;
103
- }
104
- if (t[2]) _.ops.pop();
105
- _.trys.pop();
106
- continue;
107
- }
108
- op = body.call(thisArg, _);
109
- } catch (e) {
110
- op = [
111
- 6,
112
- e
113
- ];
114
- y = 0;
115
- } finally{
116
- f = t = 0;
117
- }
118
- if (op[0] & 5) throw op[1];
119
- return {
120
- value: op[0] ? op[1] : void 0,
121
- done: true
122
- };
123
- }
124
- };
125
- import { compile } from "path-to-regexp";
126
- import { redirect } from "react-router-dom";
127
- import { LOADER_ID_PARAM, DIRECT_PARAM } from "../common/constants";
128
- var getRequestUrl = function(param) {
129
- var params = param.params, request = param.request, routeId = param.routeId;
130
- var url = new URL(request.url);
131
- var toPath = compile(url.pathname, {
132
- encode: encodeURIComponent
133
- });
134
- var newPathName = toPath(params);
135
- url.pathname = newPathName;
136
- url.searchParams.append(LOADER_ID_PARAM, routeId);
137
- url.searchParams.append(DIRECT_PARAM, "true");
138
- return url;
139
- };
140
- var handleRedirectResponse = function(res) {
141
- var headers = res.headers;
142
- var location = headers.get("X-Modernjs-Redirect");
143
- if (location) {
144
- return redirect(location);
145
- }
146
- return res;
147
- };
148
- var createRequest = function(routeId) {
149
- var method = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "get";
150
- return function() {
151
- var _ref = _asyncToGenerator(function(param) {
152
- var params, request, url, res;
153
- return __generator(this, function(_state) {
154
- switch(_state.label){
155
- case 0:
156
- params = param.params, request = param.request;
157
- url = getRequestUrl({
158
- params: params,
159
- request: request,
160
- routeId: routeId
161
- });
162
- return [
163
- 4,
164
- fetch(url, {
165
- method: method,
166
- signal: request.signal
167
- })
168
- ];
169
- case 1:
170
- res = _state.sent();
171
- if (!res.ok) {
172
- throw res;
173
- }
174
- return [
175
- 2,
176
- handleRedirectResponse(res)
177
- ];
178
- }
179
- });
180
- });
181
- return function(_) {
182
- return _ref.apply(this, arguments);
183
- };
184
- }();
185
- };
186
- export { createRequest, getRequestUrl };
@@ -1,45 +0,0 @@
1
- import path from "path";
2
- var generateClient = function(param) {
3
- var mapFile = param.mapFile, loaderId = param.loaderId;
4
- delete require.cache[mapFile];
5
- var loadersMap = require(mapFile);
6
- var requestCode = "";
7
- var exportsCode = "";
8
- var requestCreatorPath = path.join(__dirname, "./create-request").replace("/node/cli/", "/treeshaking/cli/").replace(/\\/g, "/");
9
- var importCode = "\n import { createRequest } from '".concat(requestCreatorPath, "';\n ");
10
- if (!loaderId) {
11
- requestCode = Object.keys(loadersMap).map(function(loaderId2) {
12
- var routeId = loadersMap[loaderId2].routeId;
13
- return "\n const ".concat(loaderId2, " = createRequest('").concat(routeId, "');\n ");
14
- }).join("");
15
- exportsCode = "export {";
16
- var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
17
- try {
18
- for(var _iterator = Object.keys(loadersMap)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
19
- var loader = _step.value;
20
- exportsCode += "".concat(loader, ",");
21
- }
22
- } catch (err) {
23
- _didIteratorError = true;
24
- _iteratorError = err;
25
- } finally{
26
- try {
27
- if (!_iteratorNormalCompletion && _iterator.return != null) {
28
- _iterator.return();
29
- }
30
- } finally{
31
- if (_didIteratorError) {
32
- throw _iteratorError;
33
- }
34
- }
35
- }
36
- exportsCode += "}";
37
- } else {
38
- var loader1 = loadersMap[loaderId];
39
- requestCode = "\n const loader = createRequest('".concat(loader1.routeId, "');\n ");
40
- exportsCode = "export default loader;";
41
- }
42
- var generatedCode = "\n ".concat(importCode, "\n ").concat(requestCode, "\n ").concat(exportsCode, "\n ");
43
- return generatedCode;
44
- };
45
- export { generateClient };
@@ -1,154 +0,0 @@
1
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
2
- try {
3
- var info = gen[key](arg);
4
- var value = info.value;
5
- } catch (error) {
6
- reject(error);
7
- return;
8
- }
9
- if (info.done) {
10
- resolve(value);
11
- } else {
12
- Promise.resolve(value).then(_next, _throw);
13
- }
14
- }
15
- function _asyncToGenerator(fn) {
16
- return function() {
17
- var self = this, args = arguments;
18
- return new Promise(function(resolve, reject) {
19
- var gen = fn.apply(self, args);
20
- function _next(value) {
21
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
22
- }
23
- function _throw(err) {
24
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
25
- }
26
- _next(undefined);
27
- });
28
- };
29
- }
30
- var __generator = this && this.__generator || function(thisArg, body) {
31
- var f, y, t, g, _ = {
32
- label: 0,
33
- sent: function() {
34
- if (t[0] & 1) throw t[1];
35
- return t[1];
36
- },
37
- trys: [],
38
- ops: []
39
- };
40
- return g = {
41
- next: verb(0),
42
- "throw": verb(1),
43
- "return": verb(2)
44
- }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
45
- return this;
46
- }), g;
47
- function verb(n) {
48
- return function(v) {
49
- return step([
50
- n,
51
- v
52
- ]);
53
- };
54
- }
55
- function step(op) {
56
- if (f) throw new TypeError("Generator is already executing.");
57
- while(_)try {
58
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
59
- if (y = 0, t) op = [
60
- op[0] & 2,
61
- t.value
62
- ];
63
- switch(op[0]){
64
- case 0:
65
- case 1:
66
- t = op;
67
- break;
68
- case 4:
69
- _.label++;
70
- return {
71
- value: op[1],
72
- done: false
73
- };
74
- case 5:
75
- _.label++;
76
- y = op[1];
77
- op = [
78
- 0
79
- ];
80
- continue;
81
- case 7:
82
- op = _.ops.pop();
83
- _.trys.pop();
84
- continue;
85
- default:
86
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
87
- _ = 0;
88
- continue;
89
- }
90
- if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
91
- _.label = op[1];
92
- break;
93
- }
94
- if (op[0] === 6 && _.label < t[1]) {
95
- _.label = t[1];
96
- t = op;
97
- break;
98
- }
99
- if (t && _.label < t[2]) {
100
- _.label = t[2];
101
- _.ops.push(op);
102
- break;
103
- }
104
- if (t[2]) _.ops.pop();
105
- _.trys.pop();
106
- continue;
107
- }
108
- op = body.call(thisArg, _);
109
- } catch (e) {
110
- op = [
111
- 6,
112
- e
113
- ];
114
- y = 0;
115
- } finally{
116
- f = t = 0;
117
- }
118
- if (op[0] & 5) throw op[1];
119
- return {
120
- value: op[0] ? op[1] : void 0,
121
- done: true
122
- };
123
- }
124
- };
125
- import { generateClient } from "./generate-client";
126
- function loader(source) {
127
- return _loader.apply(this, arguments);
128
- }
129
- function _loader() {
130
- _loader = _asyncToGenerator(function(source) {
131
- var ref, target, options, code;
132
- return __generator(this, function(_state) {
133
- this.cacheable();
134
- target = (ref = this._compiler) === null || ref === void 0 ? void 0 : ref.options.target;
135
- if (target === "node") {
136
- return [
137
- 2,
138
- source
139
- ];
140
- }
141
- options = this.getOptions();
142
- code = generateClient({
143
- mapFile: options.mapFile,
144
- loaderId: options.loaderId
145
- });
146
- return [
147
- 2,
148
- code
149
- ];
150
- });
151
- });
152
- return _loader.apply(this, arguments);
153
- }
154
- export { loader as default };
@@ -1,3 +0,0 @@
1
- var LOADER_ID_PARAM = "__loader";
2
- var DIRECT_PARAM = "__ssrDirect";
3
- export { DIRECT_PARAM, LOADER_ID_PARAM };