@entity-access/server-pages 1.0.43 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Page.d.ts +6 -13
- package/dist/Page.d.ts.map +1 -1
- package/dist/Page.js +10 -44
- package/dist/Page.js.map +1 -1
- package/dist/ServerPages.d.ts.map +1 -1
- package/dist/ServerPages.js +14 -2
- package/dist/ServerPages.js.map +1 -1
- package/dist/core/CacheProperty.d.ts +5 -0
- package/dist/core/CacheProperty.d.ts.map +1 -0
- package/dist/core/CacheProperty.js +19 -0
- package/dist/core/CacheProperty.js.map +1 -0
- package/dist/core/Executor.d.ts +5 -0
- package/dist/core/Executor.d.ts.map +1 -0
- package/dist/core/Executor.js +13 -0
- package/dist/core/Executor.js.map +1 -0
- package/dist/core/RouteTree.d.ts.map +1 -1
- package/dist/core/RouteTree.js +15 -6
- package/dist/core/RouteTree.js.map +1 -1
- package/dist/core/SessionUser.d.ts +7 -5
- package/dist/core/SessionUser.d.ts.map +1 -1
- package/dist/core/SessionUser.js +36 -0
- package/dist/core/SessionUser.js.map +1 -1
- package/dist/core/Wrapped.d.ts +14 -16
- package/dist/core/Wrapped.d.ts.map +1 -1
- package/dist/core/Wrapped.js +157 -234
- package/dist/core/Wrapped.js.map +1 -1
- package/dist/decorators/Prepare.d.ts +14 -0
- package/dist/decorators/Prepare.d.ts.map +1 -0
- package/dist/decorators/Prepare.js +111 -0
- package/dist/decorators/Prepare.js.map +1 -0
- package/dist/routes/api/entity/index.d.ts.map +1 -1
- package/dist/routes/api/entity/index.js +9 -3
- package/dist/routes/api/entity/index.js.map +1 -1
- package/dist/routes/api/entity/model/get.d.ts.map +1 -1
- package/dist/routes/api/entity/model/get.js.map +1 -1
- package/dist/routes/api/entity/query/get.d.ts.map +1 -1
- package/dist/routes/api/entity/query/get.js +9 -3
- package/dist/routes/api/entity/query/get.js.map +1 -1
- package/dist/services/CookieService.d.ts.map +1 -1
- package/dist/services/CookieService.js +8 -0
- package/dist/services/CookieService.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/Page.tsx +11 -53
- package/src/ServerPages.ts +14 -2
- package/src/core/CacheProperty.ts +18 -0
- package/src/core/Executor.ts +16 -0
- package/src/core/RouteTree.ts +7 -2
- package/src/core/SessionUser.ts +21 -5
- package/src/core/Wrapped.ts +215 -269
- package/src/decorators/Prepare.ts +132 -0
- package/src/routes/api/entity/index.tsx +4 -1
- package/src/routes/api/entity/model/get.tsx +1 -1
- package/src/routes/api/entity/query/get.ts +4 -1
- package/src/services/CookieService.ts +9 -1
- package/dist/decorators/Authorize.d.ts +0 -2
- package/dist/decorators/Authorize.d.ts.map +0 -1
- package/dist/decorators/Authorize.js +0 -3
- package/dist/decorators/Authorize.js.map +0 -1
- package/src/decorators/Authorize.ts +0 -3
package/dist/core/Wrapped.js
CHANGED
|
@@ -1,265 +1,188 @@
|
|
|
1
|
-
import busboy from "busboy";
|
|
2
|
-
import SessionUser from "./SessionUser.js";
|
|
3
1
|
import { parse, serialize } from "cookie";
|
|
4
|
-
import TempFolder from "./TempFolder.js";
|
|
5
2
|
import { LocalFile } from "./LocalFile.js";
|
|
6
|
-
import { Writable } from "stream";
|
|
7
|
-
import CookieService from "../services/CookieService.js";
|
|
8
3
|
import { stat } from "fs/promises";
|
|
9
|
-
import
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
4
|
+
import { CacheProperty } from "./CacheProperty.js";
|
|
5
|
+
const extendedSymbol = Symbol("extended");
|
|
6
|
+
const extendRequest = (A) => {
|
|
7
|
+
let c = A[extendedSymbol];
|
|
8
|
+
if (!c) {
|
|
9
|
+
c = class IntermediateRequest extends A {
|
|
10
|
+
get host() {
|
|
11
|
+
const r = this;
|
|
12
|
+
const host = r.authority || r.headers[":authority"] || r.headers.host || null;
|
|
13
|
+
return CacheProperty.value(this, "host", host);
|
|
14
|
+
}
|
|
15
|
+
get path() {
|
|
16
|
+
return this.URL.pathname;
|
|
17
|
+
}
|
|
18
|
+
get cookies() {
|
|
19
|
+
const cookie = this.headers.cookie;
|
|
20
|
+
const cookies = parse(cookie);
|
|
21
|
+
return CacheProperty.value(this, "cookies", cookies);
|
|
22
|
+
}
|
|
23
|
+
get URL() {
|
|
24
|
+
const r = this;
|
|
25
|
+
const url = new URL(r.url, `https:${this.host}`);
|
|
26
|
+
return CacheProperty.value(this, "URL", url);
|
|
27
|
+
}
|
|
28
|
+
get remoteIPAddress() {
|
|
29
|
+
const r = this;
|
|
30
|
+
return CacheProperty.value(this, "remoteIPAddress", r.socket.remoteAddress);
|
|
31
|
+
}
|
|
32
|
+
accepts(...types) {
|
|
33
|
+
const h = this;
|
|
34
|
+
const accepts = (h.headers.accept ?? "").split(";");
|
|
35
|
+
const value = (...types) => {
|
|
36
|
+
if (types.length > 0) {
|
|
37
|
+
for (const type of types) {
|
|
38
|
+
for (const iterator of accepts) {
|
|
39
|
+
if (iterator.includes(type)) {
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
22
43
|
}
|
|
44
|
+
return false;
|
|
23
45
|
}
|
|
24
|
-
|
|
25
|
-
|
|
46
|
+
return accepts;
|
|
47
|
+
};
|
|
48
|
+
Object.defineProperty(this, "accepts", {
|
|
49
|
+
value,
|
|
50
|
+
enumerable: true,
|
|
51
|
+
configurable: true
|
|
52
|
+
});
|
|
53
|
+
return value(...types);
|
|
54
|
+
}
|
|
55
|
+
get query() {
|
|
56
|
+
throw new Error("Please decorate `Ensure.parseQuery` callee or call `await Ensure.parseQuery(this)` before accessing this member");
|
|
57
|
+
}
|
|
58
|
+
get body() {
|
|
59
|
+
throw new Error("Please decorate `Ensure.parseBody` callee or call `await Ensure.parseBody(this)` before accessing this member");
|
|
60
|
+
}
|
|
61
|
+
get form() {
|
|
62
|
+
throw new Error("Please decorate `Ensure.parseForm` callee or call `await Ensure.parseForm(this)` before accessing this member");
|
|
63
|
+
}
|
|
64
|
+
get params() {
|
|
65
|
+
throw new Error("Please decorate `Ensure.parseAll` callee or call `await Ensure.parseAll(this)` before accessing this member");
|
|
66
|
+
}
|
|
67
|
+
get sessionUser() {
|
|
68
|
+
throw new Error("Please decorate `Ensure.authorize` callee or call `await Ensure.authorize(this)` before accessing this member");
|
|
26
69
|
}
|
|
27
|
-
return accepts;
|
|
28
|
-
};
|
|
29
|
-
},
|
|
30
|
-
URL() {
|
|
31
|
-
const w = this;
|
|
32
|
-
return new URL(this.url, `http://${w.host}`);
|
|
33
|
-
},
|
|
34
|
-
path() {
|
|
35
|
-
return this.URL.pathname;
|
|
36
|
-
},
|
|
37
|
-
host() {
|
|
38
|
-
return this.headers[":authority"] ?? this.headers["host"];
|
|
39
|
-
},
|
|
40
|
-
query() {
|
|
41
|
-
const u = this.URL;
|
|
42
|
-
const items = {};
|
|
43
|
-
for (const [key, value] of u.searchParams.entries()) {
|
|
44
|
-
items[key] = value;
|
|
45
|
-
}
|
|
46
|
-
return items;
|
|
47
|
-
},
|
|
48
|
-
cookies() {
|
|
49
|
-
const cookie = this.headers.cookie;
|
|
50
|
-
const cookies = parse(cookie);
|
|
51
|
-
return cookies;
|
|
52
|
-
},
|
|
53
|
-
async asyncParams() {
|
|
54
|
-
return {
|
|
55
|
-
...this.query,
|
|
56
|
-
...this.asyncJsonBody,
|
|
57
|
-
...this.asyncForm
|
|
58
|
-
};
|
|
59
|
-
},
|
|
60
|
-
async asyncJsonBody() {
|
|
61
|
-
const req = this;
|
|
62
|
-
let buffer = null;
|
|
63
|
-
let encoding = this.headers["content-encoding"] ?? "utf-8";
|
|
64
|
-
const contentType = this.headers["content-type"];
|
|
65
|
-
if (!/\/json/i.test(contentType)) {
|
|
66
|
-
return {};
|
|
67
|
-
}
|
|
68
|
-
await new Promise((resolve, reject) => {
|
|
69
|
-
req.pipe(new Writable({
|
|
70
|
-
write(chunk, enc, callback) {
|
|
71
|
-
encoding ||= enc;
|
|
72
|
-
let b = typeof chunk === "string"
|
|
73
|
-
? Buffer.from(chunk)
|
|
74
|
-
: chunk;
|
|
75
|
-
buffer = buffer
|
|
76
|
-
? Buffer.concat([buffer, b])
|
|
77
|
-
: b;
|
|
78
|
-
callback();
|
|
79
|
-
},
|
|
80
|
-
final(callback) {
|
|
81
|
-
resolve();
|
|
82
|
-
callback();
|
|
83
|
-
},
|
|
84
|
-
}), { end: true });
|
|
85
|
-
});
|
|
86
|
-
const text = buffer.toString(encoding);
|
|
87
|
-
return JSON.parse(text);
|
|
88
|
-
},
|
|
89
|
-
async asyncSessionUser() {
|
|
90
|
-
try {
|
|
91
|
-
const cookieService = this.scope.resolve(CookieService);
|
|
92
|
-
const tokenService = this.scope.resolve(TokenService);
|
|
93
|
-
const cookie = this.cookies[tokenService.authCookieName];
|
|
94
|
-
const sessionUser = await cookieService.createSessionUserFromCookie(cookie, this.remoteIPAddress);
|
|
95
|
-
sessionUser.resp = this.response;
|
|
96
|
-
return sessionUser;
|
|
97
|
-
}
|
|
98
|
-
catch (error) {
|
|
99
|
-
console.error(error);
|
|
100
|
-
const su = this.scope.resolve(SessionUser);
|
|
101
|
-
su.resp = this.response;
|
|
102
|
-
return su;
|
|
103
|
-
}
|
|
104
|
-
},
|
|
105
|
-
async asyncForm() {
|
|
106
|
-
let tempFolder;
|
|
107
|
-
const result = {
|
|
108
|
-
fields: {},
|
|
109
|
-
files: []
|
|
110
70
|
};
|
|
111
|
-
|
|
112
|
-
const bb = busboy({ headers: req.headers, defParamCharset: "utf8" });
|
|
113
|
-
const tasks = [];
|
|
114
|
-
await new Promise((resolve, reject) => {
|
|
115
|
-
bb.on("field", (name, value) => {
|
|
116
|
-
result.fields[name] = value;
|
|
117
|
-
});
|
|
118
|
-
bb.on("file", (name, file, info) => {
|
|
119
|
-
if (!tempFolder) {
|
|
120
|
-
tempFolder = new TempFolder();
|
|
121
|
-
this.disposables.push(tempFolder);
|
|
122
|
-
}
|
|
123
|
-
const tf = tempFolder.get(info.filename, info.mimeType);
|
|
124
|
-
tasks.push(tf.writeAll(file).then(() => {
|
|
125
|
-
result.files.push(tf);
|
|
126
|
-
}));
|
|
127
|
-
});
|
|
128
|
-
bb.on("error", reject);
|
|
129
|
-
bb.on("close", resolve);
|
|
130
|
-
req.pipe(bb);
|
|
131
|
-
});
|
|
132
|
-
await Promise.all(tasks);
|
|
133
|
-
return result;
|
|
71
|
+
A[extendedSymbol] = c;
|
|
134
72
|
}
|
|
73
|
+
return c;
|
|
135
74
|
};
|
|
136
|
-
const
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
return new Promise((resolve) => this.write(buffer, resolve));
|
|
143
|
-
};
|
|
144
|
-
},
|
|
145
|
-
cookie() {
|
|
146
|
-
return (name, value, options = {}) => {
|
|
147
|
-
const cv = this.getHeaders()["set-cookie"];
|
|
148
|
-
const cookies = Array.isArray(cv) ? cv : [cv];
|
|
149
|
-
const nk = cookies.filter((x) => !x.startsWith(name + "="));
|
|
150
|
-
nk.push(serialize(name, value, options));
|
|
151
|
-
this.setHeader("set-cookie", nk);
|
|
152
|
-
};
|
|
153
|
-
},
|
|
154
|
-
send() {
|
|
155
|
-
return async (data, status = 200) => {
|
|
156
|
-
try {
|
|
157
|
-
this.statusCode = status;
|
|
158
|
-
this.writeHead(this.statusCode, this.getHeaders());
|
|
159
|
-
await new Promise((resolve, reject) => {
|
|
160
|
-
this.write(data, (error) => error ? reject(error) : resolve());
|
|
161
|
-
});
|
|
162
|
-
return this.asyncEnd();
|
|
75
|
+
const extendResponse = (A) => {
|
|
76
|
+
let c = A[extendedSymbol];
|
|
77
|
+
if (!c) {
|
|
78
|
+
c = class WrappedResponse extends A {
|
|
79
|
+
asyncEnd() {
|
|
80
|
+
return new Promise((resolve) => this.end(resolve));
|
|
163
81
|
}
|
|
164
|
-
|
|
165
|
-
|
|
82
|
+
asyncWrite(buffer, start, length) {
|
|
83
|
+
return new Promise((resolve, reject) => this.write(buffer, (error) => error ? reject(error) : resolve()));
|
|
166
84
|
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
};
|
|
177
|
-
},
|
|
178
|
-
sendFile() {
|
|
179
|
-
return async (filePath, options) => {
|
|
180
|
-
/** Calculate Size of file */
|
|
181
|
-
const { size } = await stat(filePath);
|
|
182
|
-
const range = this.request.headers.range;
|
|
183
|
-
const lf = new LocalFile(filePath);
|
|
184
|
-
/** Check for Range header */
|
|
185
|
-
if (!range) {
|
|
186
|
-
this.writeHead(200, {
|
|
187
|
-
"Content-Length": size,
|
|
188
|
-
"Content-Type": "video/mp4"
|
|
189
|
-
});
|
|
190
|
-
await lf.writeTo(this);
|
|
191
|
-
return this.asyncEnd();
|
|
85
|
+
cookie(name, value, options = {}) {
|
|
86
|
+
const headers = this.getHeaders();
|
|
87
|
+
const cv = headers["set-cookie"];
|
|
88
|
+
const cookies = Array.isArray(cv)
|
|
89
|
+
? cv
|
|
90
|
+
: (cv ? [cv] : []);
|
|
91
|
+
const nk = cookies.filter((x) => !x.startsWith(name + "="));
|
|
92
|
+
nk.push(serialize(name, value, options));
|
|
93
|
+
headers["set-cookie"] = nk;
|
|
192
94
|
}
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
end = end ? parseInt(end, 10) : size - 1;
|
|
197
|
-
if (!isNaN(start) && isNaN(end)) {
|
|
198
|
-
start = start;
|
|
199
|
-
end = size - 1;
|
|
95
|
+
setHeader(name, value) {
|
|
96
|
+
const headers = this.getHeaders();
|
|
97
|
+
headers[name] = value;
|
|
200
98
|
}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
99
|
+
async send(data, status = 200) {
|
|
100
|
+
try {
|
|
101
|
+
const wrapped = this;
|
|
102
|
+
wrapped.statusCode = status;
|
|
103
|
+
this.writeHead(wrapped.statusCode, this.getHeaders());
|
|
104
|
+
await new Promise((resolve, reject) => {
|
|
105
|
+
this.write(data, (error) => error ? reject(error) : resolve());
|
|
106
|
+
});
|
|
107
|
+
return this.asyncEnd();
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
console.error(error);
|
|
111
|
+
}
|
|
204
112
|
}
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
"Content-Range": `bytes */${size}`
|
|
113
|
+
async sendRedirect(location, permanent = false) {
|
|
114
|
+
this.statusCode = 301;
|
|
115
|
+
this.writeHead(this.statusCode, {
|
|
116
|
+
location
|
|
210
117
|
});
|
|
211
118
|
return this.asyncEnd();
|
|
212
119
|
}
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
120
|
+
async sendFile(filePath, options) {
|
|
121
|
+
/** Calculate Size of file */
|
|
122
|
+
const { size } = await stat(filePath);
|
|
123
|
+
const range = this.request.headers.range;
|
|
124
|
+
const lf = new LocalFile(filePath);
|
|
125
|
+
/** Check for Range header */
|
|
126
|
+
if (!range) {
|
|
127
|
+
this.writeHead(200, {
|
|
128
|
+
"Content-Length": size,
|
|
129
|
+
"Content-Type": "video/mp4"
|
|
130
|
+
});
|
|
131
|
+
await lf.writeTo(this);
|
|
132
|
+
return this.asyncEnd();
|
|
133
|
+
}
|
|
134
|
+
/** Extracting Start and End value from Range Header */
|
|
135
|
+
let [start, end] = range.replace(/bytes=/, "").split("-");
|
|
136
|
+
start = parseInt(start, 10);
|
|
137
|
+
end = end ? parseInt(end, 10) : size - 1;
|
|
138
|
+
if (!isNaN(start) && isNaN(end)) {
|
|
139
|
+
start = start;
|
|
140
|
+
end = size - 1;
|
|
141
|
+
}
|
|
142
|
+
if (isNaN(start) && !isNaN(end)) {
|
|
143
|
+
start = size - end;
|
|
144
|
+
end = size - 1;
|
|
145
|
+
}
|
|
146
|
+
// Handle unavailable range request
|
|
147
|
+
if (start >= size || end >= size) {
|
|
148
|
+
// Return the 416 Range Not Satisfiable.
|
|
149
|
+
this.writeHead(416, {
|
|
150
|
+
"Content-Range": `bytes */${size}`
|
|
151
|
+
});
|
|
152
|
+
return this.asyncEnd();
|
|
153
|
+
}
|
|
154
|
+
/** Sending Partial Content With HTTP Code 206 */
|
|
155
|
+
this.writeHead(206, {
|
|
156
|
+
"Content-Range": `bytes ${start}-${end}/${size}`,
|
|
157
|
+
"Accept-Ranges": "bytes",
|
|
158
|
+
"Content-Length": end - start + 1,
|
|
159
|
+
"Content-Type": "video/mp4"
|
|
160
|
+
});
|
|
161
|
+
await lf.writeTo(this, start, end);
|
|
162
|
+
}
|
|
221
163
|
};
|
|
222
|
-
}
|
|
164
|
+
}
|
|
165
|
+
return c;
|
|
223
166
|
};
|
|
224
167
|
export const Wrapped = {
|
|
225
168
|
request: (req) => {
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
get() {
|
|
231
|
-
const value = element.call(this);
|
|
232
|
-
Object.defineProperty(this, key, { value, enumerable: true, writable: false });
|
|
233
|
-
return value;
|
|
234
|
-
},
|
|
235
|
-
enumerable: true,
|
|
236
|
-
configurable: true
|
|
237
|
-
});
|
|
238
|
-
}
|
|
239
|
-
}
|
|
169
|
+
let prototype = Object.getPrototypeOf(req);
|
|
170
|
+
const { constructor } = prototype;
|
|
171
|
+
prototype = extendRequest(constructor);
|
|
172
|
+
Object.setPrototypeOf(req, prototype);
|
|
240
173
|
const wr = req;
|
|
241
174
|
wr.disposables = [];
|
|
242
|
-
return
|
|
175
|
+
return req;
|
|
243
176
|
},
|
|
244
177
|
response: (req, res) => {
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
get() {
|
|
250
|
-
const value = element.call(this);
|
|
251
|
-
Object.defineProperty(this, key, { value, enumerable: true, writable: false });
|
|
252
|
-
return value;
|
|
253
|
-
},
|
|
254
|
-
enumerable: true,
|
|
255
|
-
configurable: true
|
|
256
|
-
});
|
|
257
|
-
}
|
|
258
|
-
}
|
|
178
|
+
let prototype = Object.getPrototypeOf(res);
|
|
179
|
+
const { constructor } = prototype;
|
|
180
|
+
prototype = extendResponse(constructor);
|
|
181
|
+
Object.setPrototypeOf(res, prototype);
|
|
259
182
|
const wr = res;
|
|
260
183
|
wr.request = req;
|
|
261
184
|
req.response = wr;
|
|
262
|
-
return
|
|
185
|
+
return res;
|
|
263
186
|
}
|
|
264
187
|
};
|
|
265
188
|
//# sourceMappingURL=Wrapped.js.map
|
package/dist/core/Wrapped.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Wrapped.js","sourceRoot":"","sources":["../../src/core/Wrapped.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Wrapped.js","sourceRoot":"","sources":["../../src/core/Wrapped.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { LocalFile } from "../core/LocalFile.js";
|
|
2
|
+
export declare const prepareSymbol: unique symbol;
|
|
3
|
+
export interface IFormData {
|
|
4
|
+
fields: {
|
|
5
|
+
[key: string]: string;
|
|
6
|
+
};
|
|
7
|
+
files: LocalFile[];
|
|
8
|
+
}
|
|
9
|
+
export declare const Prepare: {
|
|
10
|
+
parseJsonBody: (page?: any) => any;
|
|
11
|
+
authorize: (page?: any) => any;
|
|
12
|
+
parseForm: (page?: any) => any;
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=Prepare.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Prepare.d.ts","sourceRoot":"","sources":["../../src/decorators/Prepare.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,eAAO,MAAM,aAAa,eAAkB,CAAC;AAG7C,MAAM,WAAW,SAAS;IACtB,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAC,CAAC;IACjC,KAAK,EAAE,SAAS,EAAE,CAAC;CACtB;AAmHD,eAAO,MAAM,OAAO;mCAjHW,GAAG;+BAmDP,GAAG;+BAaH,GAAG;CAqD7B,CAAC"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import busboy from "busboy";
|
|
2
|
+
import { Writable } from "node:stream";
|
|
3
|
+
import Page from "../Page.js";
|
|
4
|
+
import TempFolder from "../core/TempFolder.js";
|
|
5
|
+
export const prepareSymbol = Symbol("Parse");
|
|
6
|
+
const parseJsonBody = (page) => {
|
|
7
|
+
if (!page) {
|
|
8
|
+
return (target) => parseJsonBody(target);
|
|
9
|
+
}
|
|
10
|
+
if (!(page instanceof Page)) {
|
|
11
|
+
(page[prepareSymbol] ??= []).push(parseJsonBody);
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
if (page.body) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
return (async () => {
|
|
18
|
+
try {
|
|
19
|
+
let buffer = null;
|
|
20
|
+
let encoding = page.request.headers["content-encoding"] ?? "utf-8";
|
|
21
|
+
const contentType = page.request.headers["content-type"];
|
|
22
|
+
if (!/\/json/i.test(contentType)) {
|
|
23
|
+
return {};
|
|
24
|
+
}
|
|
25
|
+
await new Promise((resolve, reject) => {
|
|
26
|
+
page.request.pipe(new Writable({
|
|
27
|
+
write(chunk, enc, callback) {
|
|
28
|
+
encoding ||= enc;
|
|
29
|
+
let b = typeof chunk === "string"
|
|
30
|
+
? Buffer.from(chunk)
|
|
31
|
+
: chunk;
|
|
32
|
+
buffer = buffer
|
|
33
|
+
? Buffer.concat([buffer, b])
|
|
34
|
+
: b;
|
|
35
|
+
callback();
|
|
36
|
+
},
|
|
37
|
+
final(callback) {
|
|
38
|
+
resolve();
|
|
39
|
+
callback();
|
|
40
|
+
},
|
|
41
|
+
}), { end: true });
|
|
42
|
+
});
|
|
43
|
+
const text = buffer.toString(encoding);
|
|
44
|
+
page.body = page.request.body = JSON.parse(text);
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
page.reportError(error);
|
|
48
|
+
page.body = page.request.body = {};
|
|
49
|
+
}
|
|
50
|
+
})();
|
|
51
|
+
};
|
|
52
|
+
const authorize = (page) => {
|
|
53
|
+
if (!page) {
|
|
54
|
+
return (target) => authorize(target);
|
|
55
|
+
}
|
|
56
|
+
if (!(page instanceof Page)) {
|
|
57
|
+
(page[prepareSymbol] ??= []).push(authorize);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
return page.sessionUser.authorize();
|
|
61
|
+
};
|
|
62
|
+
const parseForm = (page) => {
|
|
63
|
+
if (!page) {
|
|
64
|
+
return (target) => parseForm(target);
|
|
65
|
+
}
|
|
66
|
+
if (!(page instanceof Page)) {
|
|
67
|
+
(page[prepareSymbol] ??= []).push(parseForm);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
return (async () => {
|
|
71
|
+
const req = page.request;
|
|
72
|
+
let tempFolder;
|
|
73
|
+
const result = {
|
|
74
|
+
fields: {},
|
|
75
|
+
files: []
|
|
76
|
+
};
|
|
77
|
+
try {
|
|
78
|
+
const bb = busboy({ headers: req.headers, defParamCharset: "utf8" });
|
|
79
|
+
const tasks = [];
|
|
80
|
+
await new Promise((resolve, reject) => {
|
|
81
|
+
bb.on("field", (name, value) => {
|
|
82
|
+
result.fields[name] = value;
|
|
83
|
+
});
|
|
84
|
+
bb.on("file", (name, file, info) => {
|
|
85
|
+
if (!tempFolder) {
|
|
86
|
+
tempFolder = new TempFolder();
|
|
87
|
+
req.disposables.push(tempFolder);
|
|
88
|
+
}
|
|
89
|
+
const tf = tempFolder.get(info.filename, info.mimeType);
|
|
90
|
+
tasks.push(tf.writeAll(file).then(() => {
|
|
91
|
+
result.files.push(tf);
|
|
92
|
+
}));
|
|
93
|
+
});
|
|
94
|
+
bb.on("error", reject);
|
|
95
|
+
bb.on("close", resolve);
|
|
96
|
+
req.pipe(bb);
|
|
97
|
+
});
|
|
98
|
+
await Promise.all(tasks);
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
page.reportError(error);
|
|
102
|
+
}
|
|
103
|
+
page.form = req.form = result;
|
|
104
|
+
})();
|
|
105
|
+
};
|
|
106
|
+
export const Prepare = {
|
|
107
|
+
parseJsonBody,
|
|
108
|
+
authorize,
|
|
109
|
+
parseForm
|
|
110
|
+
};
|
|
111
|
+
//# sourceMappingURL=Prepare.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Prepare.js","sourceRoot":"","sources":["../../src/decorators/Prepare.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,IAAI,MAAM,YAAY,CAAC;AAC9B,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAG/C,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AAQ7C,MAAM,aAAa,GAAG,CAAC,IAAK,EAAO,EAAE;IAEjC,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,CAAC,CAAC,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;QAC1B,CAAE,IAAY,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1D,OAAO;IACX,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,OAAO;IACX,CAAC;IAED,OAAO,CAAC,KAAK,IAAI,EAAE;QAEf,IAAI,CAAC;YACD,IAAI,MAAM,GAAG,IAAc,CAAC;YAC5B,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,OAAO,CAAC;YACnE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YACzD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC/B,OAAO,EAAE,CAAC;YACd,CAAC;YACD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACxC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC;oBAC3B,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ;wBACtB,QAAQ,KAAK,GAAG,CAAC;wBACjB,IAAI,CAAC,GAAG,OAAO,KAAK,KAAK,QAAQ;4BAC7B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;4BACpB,CAAC,CAAC,KAAe,CAAC;wBACtB,MAAM,GAAG,MAAM;4BACX,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;4BAC5B,CAAC,CAAC,CAAC,CAAC;wBACR,QAAQ,EAAE,CAAC;oBACf,CAAC;oBACD,KAAK,CAAC,QAAQ;wBACV,OAAO,EAAE,CAAC;wBACV,QAAQ,EAAE,CAAC;oBACf,CAAC;iBACJ,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAe,CAAC,CAAC;YAC7C,IAAY,CAAC,IAAI,GAAI,IAAI,CAAC,OAAe,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACvB,IAAY,CAAC,IAAI,GAAI,IAAI,CAAC,OAAe,CAAC,IAAI,GAAG,EAAE,CAAC;QACzD,CAAC;IACL,CAAC,CAAC,EAAE,CAAC;AACT,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,IAAK,EAAO,EAAE;IAC7B,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,CAAC,CAAC,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;QAC1B,CAAE,IAAY,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtD,OAAO;IACX,CAAC;IAED,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;AACxC,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,IAAK,EAAO,EAAE;IAC7B,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,CAAC,CAAC,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;QAC1B,CAAE,IAAY,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtD,OAAO;IACX,CAAC;IAED,OAAO,CAAC,KAAK,IAAI,EAAE;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;QAEzB,IAAI,UAAsB,CAAC;QAC3B,MAAM,MAAM,GAAc;YACtB,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,EAAE;SACZ,CAAC;QACF,IAAI,CAAC;YACD,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,CAAC;YACrE,MAAM,KAAK,GAAG,EAAE,CAAC;YACjB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAElC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBAC3B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;gBAChC,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;oBAC/B,IAAI,CAAC,UAAU,EAAE,CAAC;wBACd,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;wBAC9B,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBACrC,CAAC;oBACD,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACxD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;wBACnC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC1B,CAAC,CAAC,CAAC,CAAC;gBACR,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBACvB,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACxB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,CAAC,CAAC,CAAC;YACH,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QACA,IAAY,CAAC,IAAI,GAAI,GAAW,CAAC,IAAI,GAAG,MAAM,CAAC;IACpD,CAAC,CAAC,EAAE,CAAC;AACT,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG;IACnB,aAAa;IACb,SAAS;IACT,SAAS;CACZ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/routes/api/entity/index.tsx"],"names":[],"mappings":"AAKA,OAAO,IAAI,EAAE,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/routes/api/entity/index.tsx"],"names":[],"mappings":"AAKA,OAAO,IAAI,EAAE,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAQrD,MAAM,CAAC,OAAO,MAAO,SAAQ,IAAI;IAE7B,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO;IAKnD,OAAO,CAAC,EAAE,CAAgB;IAEpB,GAAG;YAaK,IAAI;YASJ,YAAY;YAUZ,MAAM;YAWN,UAAU;CAqH3B"}
|