@entity-access/server-pages 1.0.43 → 1.1.2
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 +13 -16
- package/dist/core/Wrapped.d.ts.map +1 -1
- package/dist/core/Wrapped.js +151 -235
- 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 +206 -270
- 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,181 @@
|
|
|
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
|
-
location
|
|
174
|
-
});
|
|
175
|
-
return this.asyncEnd();
|
|
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 cv = this.getHeaders()["set-cookie"];
|
|
87
|
+
const cookies = Array.isArray(cv) ? cv : [cv];
|
|
88
|
+
const nk = cookies.filter((x) => !x.startsWith(name + "="));
|
|
89
|
+
nk.push(serialize(name, value, options));
|
|
90
|
+
this.setHeader("set-cookie", nk);
|
|
192
91
|
}
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
92
|
+
async send(data, status = 200) {
|
|
93
|
+
try {
|
|
94
|
+
const wrapped = this;
|
|
95
|
+
wrapped.statusCode = status;
|
|
96
|
+
this.writeHead(wrapped.statusCode, this.getHeaders());
|
|
97
|
+
await new Promise((resolve, reject) => {
|
|
98
|
+
this.write(data, (error) => error ? reject(error) : resolve());
|
|
99
|
+
});
|
|
100
|
+
return this.asyncEnd();
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
console.error(error);
|
|
104
|
+
}
|
|
204
105
|
}
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
"Content-Range": `bytes */${size}`
|
|
106
|
+
async sendRedirect(location, permanent = false) {
|
|
107
|
+
this.statusCode = 301;
|
|
108
|
+
this.writeHead(this.statusCode, {
|
|
109
|
+
location
|
|
210
110
|
});
|
|
211
111
|
return this.asyncEnd();
|
|
212
112
|
}
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
113
|
+
async sendFile(filePath, options) {
|
|
114
|
+
/** Calculate Size of file */
|
|
115
|
+
const { size } = await stat(filePath);
|
|
116
|
+
const range = this.request.headers.range;
|
|
117
|
+
const lf = new LocalFile(filePath);
|
|
118
|
+
/** Check for Range header */
|
|
119
|
+
if (!range) {
|
|
120
|
+
this.writeHead(200, {
|
|
121
|
+
"Content-Length": size,
|
|
122
|
+
"Content-Type": "video/mp4"
|
|
123
|
+
});
|
|
124
|
+
await lf.writeTo(this);
|
|
125
|
+
return this.asyncEnd();
|
|
126
|
+
}
|
|
127
|
+
/** Extracting Start and End value from Range Header */
|
|
128
|
+
let [start, end] = range.replace(/bytes=/, "").split("-");
|
|
129
|
+
start = parseInt(start, 10);
|
|
130
|
+
end = end ? parseInt(end, 10) : size - 1;
|
|
131
|
+
if (!isNaN(start) && isNaN(end)) {
|
|
132
|
+
start = start;
|
|
133
|
+
end = size - 1;
|
|
134
|
+
}
|
|
135
|
+
if (isNaN(start) && !isNaN(end)) {
|
|
136
|
+
start = size - end;
|
|
137
|
+
end = size - 1;
|
|
138
|
+
}
|
|
139
|
+
// Handle unavailable range request
|
|
140
|
+
if (start >= size || end >= size) {
|
|
141
|
+
// Return the 416 Range Not Satisfiable.
|
|
142
|
+
this.writeHead(416, {
|
|
143
|
+
"Content-Range": `bytes */${size}`
|
|
144
|
+
});
|
|
145
|
+
return this.asyncEnd();
|
|
146
|
+
}
|
|
147
|
+
/** Sending Partial Content With HTTP Code 206 */
|
|
148
|
+
this.writeHead(206, {
|
|
149
|
+
"Content-Range": `bytes ${start}-${end}/${size}`,
|
|
150
|
+
"Accept-Ranges": "bytes",
|
|
151
|
+
"Content-Length": end - start + 1,
|
|
152
|
+
"Content-Type": "video/mp4"
|
|
153
|
+
});
|
|
154
|
+
await lf.writeTo(this, start, end);
|
|
155
|
+
}
|
|
221
156
|
};
|
|
222
|
-
}
|
|
157
|
+
}
|
|
158
|
+
return c;
|
|
223
159
|
};
|
|
224
160
|
export const Wrapped = {
|
|
225
161
|
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
|
-
}
|
|
162
|
+
let prototype = Object.getPrototypeOf(req);
|
|
163
|
+
const { constructor } = prototype;
|
|
164
|
+
prototype = extendRequest(constructor);
|
|
165
|
+
Object.setPrototypeOf(req, prototype);
|
|
240
166
|
const wr = req;
|
|
241
167
|
wr.disposables = [];
|
|
242
|
-
return
|
|
168
|
+
return req;
|
|
243
169
|
},
|
|
244
170
|
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
|
-
}
|
|
171
|
+
let prototype = Object.getPrototypeOf(res);
|
|
172
|
+
const { constructor } = prototype;
|
|
173
|
+
prototype = extendResponse(constructor);
|
|
174
|
+
Object.setPrototypeOf(res, prototype);
|
|
259
175
|
const wr = res;
|
|
260
176
|
wr.request = req;
|
|
261
177
|
req.response = wr;
|
|
262
|
-
return
|
|
178
|
+
return res;
|
|
263
179
|
}
|
|
264
180
|
};
|
|
265
181
|
//# 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":"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"}
|
|
@@ -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"}
|
|
@@ -14,15 +14,16 @@ import SchemaRegistry from "@entity-access/entity-access/dist/decorators/SchemaR
|
|
|
14
14
|
import EntityAccessError from "@entity-access/entity-access/dist/common/EntityAccessError.js";
|
|
15
15
|
import Page from "../../../Page.js";
|
|
16
16
|
import GraphService from "../../../services/GraphService.js";
|
|
17
|
+
import { Prepare } from "../../../decorators/Prepare.js";
|
|
17
18
|
const added = Symbol("added");
|
|
18
|
-
|
|
19
|
+
let default_1 = class extends Page {
|
|
19
20
|
static canHandle(pageContext) {
|
|
20
21
|
return /post|patch|delete/i.test(pageContext.method);
|
|
21
22
|
}
|
|
22
23
|
async all() {
|
|
23
24
|
this.db.verifyFilters = true;
|
|
24
25
|
this.db.raiseEvents = true;
|
|
25
|
-
const body =
|
|
26
|
+
const body = this.body;
|
|
26
27
|
if (/delete/i.test(this.method)) {
|
|
27
28
|
return this.delete(body);
|
|
28
29
|
}
|
|
@@ -160,9 +161,14 @@ export default class default_1 extends Page {
|
|
|
160
161
|
}
|
|
161
162
|
return body;
|
|
162
163
|
}
|
|
163
|
-
}
|
|
164
|
+
};
|
|
164
165
|
__decorate([
|
|
165
166
|
Inject,
|
|
166
167
|
__metadata("design:type", EntityContext)
|
|
167
168
|
], default_1.prototype, "db", void 0);
|
|
169
|
+
default_1 = __decorate([
|
|
170
|
+
Prepare.authorize,
|
|
171
|
+
Prepare.parseJsonBody
|
|
172
|
+
], default_1);
|
|
173
|
+
export default default_1;
|
|
168
174
|
//# sourceMappingURL=index.js.map
|