gemi 0.4.13 → 0.4.14
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/app/App.d.ts.map +1 -1
- package/dist/app/createFlatApiRoutes.d.ts.map +1 -1
- package/dist/app/index.js +220 -608
- package/dist/auth/AuthenticationServiceProvider.d.ts +54 -0
- package/dist/auth/AuthenticationServiceProvider.d.ts.map +1 -0
- package/dist/auth/adapters/blank.d.ts +10 -0
- package/dist/auth/adapters/blank.d.ts.map +1 -0
- package/dist/auth/adapters/types.d.ts +77 -0
- package/dist/auth/adapters/types.d.ts.map +1 -0
- package/dist/bin/index.js +13 -0
- package/dist/client/ClientRouter.d.ts.map +1 -1
- package/dist/client/ClientRouterContext.d.ts +2 -0
- package/dist/client/ClientRouterContext.d.ts.map +1 -1
- package/dist/client/Mutation.d.ts +25 -7
- package/dist/client/Mutation.d.ts.map +1 -1
- package/dist/client/QueryManager.d.ts +24 -0
- package/dist/client/QueryManager.d.ts.map +1 -0
- package/dist/client/QueryManagerContext.d.ts +8 -0
- package/dist/client/QueryManagerContext.d.ts.map +1 -0
- package/dist/client/ServerDataProvider.d.ts +1 -0
- package/dist/client/ServerDataProvider.d.ts.map +1 -1
- package/dist/client/{Form.d.ts → _Form.d.ts} +1 -1
- package/dist/client/_Form.d.ts.map +1 -0
- package/dist/client/auth/useForgotPassword.d.ts +17 -0
- package/dist/client/auth/useForgotPassword.d.ts.map +1 -0
- package/dist/client/auth/useResetPassword.d.ts +17 -0
- package/dist/client/auth/useResetPassword.d.ts.map +1 -0
- package/dist/client/auth/useSignIn.d.ts +24 -0
- package/dist/client/auth/useSignIn.d.ts.map +1 -0
- package/dist/client/auth/useSignOut.d.ts +17 -0
- package/dist/client/auth/useSignOut.d.ts.map +1 -0
- package/dist/client/auth/useSignUp.d.ts +21 -0
- package/dist/client/auth/useSignUp.d.ts.map +1 -0
- package/dist/client/auth/useUser.d.ts +2 -0
- package/dist/client/auth/useUser.d.ts.map +1 -0
- package/dist/client/index.d.ts +8 -4
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +392 -278
- package/dist/client/rpc.d.ts +3 -1
- package/dist/client/rpc.d.ts.map +1 -1
- package/dist/client/useMutation.d.ts +12 -3
- package/dist/client/useMutation.d.ts.map +1 -1
- package/dist/client/useQuery.d.ts +16 -6
- package/dist/client/useQuery.d.ts.map +1 -1
- package/dist/email/EmailServiceProvider.d.ts +1 -1
- package/dist/email/EmailServiceProvider.d.ts.map +1 -1
- package/dist/email/index.js +4745 -12
- package/dist/email/providers.d.ts +1 -1
- package/dist/email/providers.d.ts.map +1 -1
- package/dist/facades/Auth.d.ts +5 -0
- package/dist/facades/Auth.d.ts.map +1 -0
- package/dist/facades/Redirect.d.ts +4 -0
- package/dist/facades/Redirect.d.ts.map +1 -0
- package/dist/facades/index.d.ts +3 -0
- package/dist/facades/index.d.ts.map +1 -0
- package/dist/facades/index.js +81 -4
- package/dist/http/ApiRouter.d.ts +321 -15
- package/dist/http/ApiRouter.d.ts.map +1 -1
- package/dist/http/AuthenticationMiddlware.d.ts +6 -0
- package/dist/http/AuthenticationMiddlware.d.ts.map +1 -0
- package/dist/http/Controller.d.ts +10 -1
- package/dist/http/Controller.d.ts.map +1 -1
- package/dist/http/Cookie.d.ts +18 -0
- package/dist/http/Cookie.d.ts.map +1 -0
- package/dist/http/HttpRequest.d.ts +9 -1
- package/dist/http/HttpRequest.d.ts.map +1 -1
- package/dist/http/Middleware.d.ts +1 -1
- package/dist/http/Middleware.d.ts.map +1 -1
- package/dist/http/MiddlewareServiceProvider.d.ts +5 -0
- package/dist/http/MiddlewareServiceProvider.d.ts.map +1 -0
- package/dist/http/ViewRouter.d.ts +11 -11
- package/dist/http/ViewRouter.d.ts.map +1 -1
- package/dist/http/index.d.ts +3 -1
- package/dist/http/index.d.ts.map +1 -1
- package/dist/http/index.js +147 -13
- package/dist/http/requestContext.d.ts +17 -2
- package/dist/http/requestContext.d.ts.map +1 -1
- package/dist/kernel/KernelContext.d.ts +4 -0
- package/dist/kernel/KernelContext.d.ts.map +1 -0
- package/dist/kernel/context.d.ts +9 -0
- package/dist/kernel/context.d.ts.map +1 -0
- package/dist/server/index.js +13 -0
- package/dist/utils/autobind.d.ts +2 -0
- package/dist/utils/autobind.d.ts.map +1 -0
- package/dist/utils/debounce.d.ts +2 -0
- package/dist/utils/debounce.d.ts.map +1 -0
- package/dist/utils/type.d.ts +5 -0
- package/dist/utils/type.d.ts.map +1 -1
- package/package.json +3 -1
- package/dist/client/Form.d.ts.map +0 -1
package/dist/app/index.js
CHANGED
|
@@ -18,477 +18,6 @@ var __toESM = (mod, isNodeMode, target) => {
|
|
|
18
18
|
var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
|
|
19
19
|
var __require = createRequire(import.meta.url);
|
|
20
20
|
|
|
21
|
-
// ../../node_modules/uuid/dist/rng.js
|
|
22
|
-
var require_rng = __commonJS((exports) => {
|
|
23
|
-
var _interopRequireDefault = function(obj) {
|
|
24
|
-
return obj && obj.__esModule ? obj : { default: obj };
|
|
25
|
-
};
|
|
26
|
-
var rng = function() {
|
|
27
|
-
if (poolPtr > rnds8Pool.length - 16) {
|
|
28
|
-
_crypto.default.randomFillSync(rnds8Pool);
|
|
29
|
-
poolPtr = 0;
|
|
30
|
-
}
|
|
31
|
-
return rnds8Pool.slice(poolPtr, poolPtr += 16);
|
|
32
|
-
};
|
|
33
|
-
Object.defineProperty(exports, "__esModule", {
|
|
34
|
-
value: true
|
|
35
|
-
});
|
|
36
|
-
exports.default = rng;
|
|
37
|
-
var _crypto = _interopRequireDefault(__require("crypto"));
|
|
38
|
-
var rnds8Pool = new Uint8Array(256);
|
|
39
|
-
var poolPtr = rnds8Pool.length;
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
// ../../node_modules/uuid/dist/regex.js
|
|
43
|
-
var require_regex = __commonJS((exports) => {
|
|
44
|
-
Object.defineProperty(exports, "__esModule", {
|
|
45
|
-
value: true
|
|
46
|
-
});
|
|
47
|
-
exports.default = undefined;
|
|
48
|
-
var _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;
|
|
49
|
-
exports.default = _default;
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
// ../../node_modules/uuid/dist/validate.js
|
|
53
|
-
var require_validate = __commonJS((exports) => {
|
|
54
|
-
var _interopRequireDefault = function(obj) {
|
|
55
|
-
return obj && obj.__esModule ? obj : { default: obj };
|
|
56
|
-
};
|
|
57
|
-
var validate2 = function(uuid) {
|
|
58
|
-
return typeof uuid === "string" && _regex.default.test(uuid);
|
|
59
|
-
};
|
|
60
|
-
Object.defineProperty(exports, "__esModule", {
|
|
61
|
-
value: true
|
|
62
|
-
});
|
|
63
|
-
exports.default = undefined;
|
|
64
|
-
var _regex = _interopRequireDefault(require_regex());
|
|
65
|
-
var _default = validate2;
|
|
66
|
-
exports.default = _default;
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
// ../../node_modules/uuid/dist/stringify.js
|
|
70
|
-
var require_stringify = __commonJS((exports) => {
|
|
71
|
-
var _interopRequireDefault = function(obj) {
|
|
72
|
-
return obj && obj.__esModule ? obj : { default: obj };
|
|
73
|
-
};
|
|
74
|
-
var unsafeStringify = function(arr, offset = 0) {
|
|
75
|
-
return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];
|
|
76
|
-
};
|
|
77
|
-
var stringify = function(arr, offset = 0) {
|
|
78
|
-
const uuid = unsafeStringify(arr, offset);
|
|
79
|
-
if (!(0, _validate.default)(uuid)) {
|
|
80
|
-
throw TypeError("Stringified UUID is invalid");
|
|
81
|
-
}
|
|
82
|
-
return uuid;
|
|
83
|
-
};
|
|
84
|
-
Object.defineProperty(exports, "__esModule", {
|
|
85
|
-
value: true
|
|
86
|
-
});
|
|
87
|
-
exports.default = undefined;
|
|
88
|
-
exports.unsafeStringify = unsafeStringify;
|
|
89
|
-
var _validate = _interopRequireDefault(require_validate());
|
|
90
|
-
var byteToHex = [];
|
|
91
|
-
for (let i = 0;i < 256; ++i) {
|
|
92
|
-
byteToHex.push((i + 256).toString(16).slice(1));
|
|
93
|
-
}
|
|
94
|
-
var _default = stringify;
|
|
95
|
-
exports.default = _default;
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
// ../../node_modules/uuid/dist/v1.js
|
|
99
|
-
var require_v1 = __commonJS((exports) => {
|
|
100
|
-
var _interopRequireDefault = function(obj) {
|
|
101
|
-
return obj && obj.__esModule ? obj : { default: obj };
|
|
102
|
-
};
|
|
103
|
-
var v1 = function(options, buf, offset) {
|
|
104
|
-
let i = buf && offset || 0;
|
|
105
|
-
const b2 = buf || new Array(16);
|
|
106
|
-
options = options || {};
|
|
107
|
-
let node = options.node || _nodeId;
|
|
108
|
-
let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq;
|
|
109
|
-
if (node == null || clockseq == null) {
|
|
110
|
-
const seedBytes = options.random || (options.rng || _rng.default)();
|
|
111
|
-
if (node == null) {
|
|
112
|
-
node = _nodeId = [seedBytes[0] | 1, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];
|
|
113
|
-
}
|
|
114
|
-
if (clockseq == null) {
|
|
115
|
-
clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 16383;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
let msecs = options.msecs !== undefined ? options.msecs : Date.now();
|
|
119
|
-
let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1;
|
|
120
|
-
const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 1e4;
|
|
121
|
-
if (dt < 0 && options.clockseq === undefined) {
|
|
122
|
-
clockseq = clockseq + 1 & 16383;
|
|
123
|
-
}
|
|
124
|
-
if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {
|
|
125
|
-
nsecs = 0;
|
|
126
|
-
}
|
|
127
|
-
if (nsecs >= 1e4) {
|
|
128
|
-
throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");
|
|
129
|
-
}
|
|
130
|
-
_lastMSecs = msecs;
|
|
131
|
-
_lastNSecs = nsecs;
|
|
132
|
-
_clockseq = clockseq;
|
|
133
|
-
msecs += 12219292800000;
|
|
134
|
-
const tl = ((msecs & 268435455) * 1e4 + nsecs) % 4294967296;
|
|
135
|
-
b2[i++] = tl >>> 24 & 255;
|
|
136
|
-
b2[i++] = tl >>> 16 & 255;
|
|
137
|
-
b2[i++] = tl >>> 8 & 255;
|
|
138
|
-
b2[i++] = tl & 255;
|
|
139
|
-
const tmh = msecs / 4294967296 * 1e4 & 268435455;
|
|
140
|
-
b2[i++] = tmh >>> 8 & 255;
|
|
141
|
-
b2[i++] = tmh & 255;
|
|
142
|
-
b2[i++] = tmh >>> 24 & 15 | 16;
|
|
143
|
-
b2[i++] = tmh >>> 16 & 255;
|
|
144
|
-
b2[i++] = clockseq >>> 8 | 128;
|
|
145
|
-
b2[i++] = clockseq & 255;
|
|
146
|
-
for (let n = 0;n < 6; ++n) {
|
|
147
|
-
b2[i + n] = node[n];
|
|
148
|
-
}
|
|
149
|
-
return buf || (0, _stringify.unsafeStringify)(b2);
|
|
150
|
-
};
|
|
151
|
-
Object.defineProperty(exports, "__esModule", {
|
|
152
|
-
value: true
|
|
153
|
-
});
|
|
154
|
-
exports.default = undefined;
|
|
155
|
-
var _rng = _interopRequireDefault(require_rng());
|
|
156
|
-
var _stringify = require_stringify();
|
|
157
|
-
var _nodeId;
|
|
158
|
-
var _clockseq;
|
|
159
|
-
var _lastMSecs = 0;
|
|
160
|
-
var _lastNSecs = 0;
|
|
161
|
-
var _default = v1;
|
|
162
|
-
exports.default = _default;
|
|
163
|
-
});
|
|
164
|
-
|
|
165
|
-
// ../../node_modules/uuid/dist/parse.js
|
|
166
|
-
var require_parse = __commonJS((exports) => {
|
|
167
|
-
var _interopRequireDefault = function(obj) {
|
|
168
|
-
return obj && obj.__esModule ? obj : { default: obj };
|
|
169
|
-
};
|
|
170
|
-
var parse = function(uuid) {
|
|
171
|
-
if (!(0, _validate.default)(uuid)) {
|
|
172
|
-
throw TypeError("Invalid UUID");
|
|
173
|
-
}
|
|
174
|
-
let v2;
|
|
175
|
-
const arr = new Uint8Array(16);
|
|
176
|
-
arr[0] = (v2 = parseInt(uuid.slice(0, 8), 16)) >>> 24;
|
|
177
|
-
arr[1] = v2 >>> 16 & 255;
|
|
178
|
-
arr[2] = v2 >>> 8 & 255;
|
|
179
|
-
arr[3] = v2 & 255;
|
|
180
|
-
arr[4] = (v2 = parseInt(uuid.slice(9, 13), 16)) >>> 8;
|
|
181
|
-
arr[5] = v2 & 255;
|
|
182
|
-
arr[6] = (v2 = parseInt(uuid.slice(14, 18), 16)) >>> 8;
|
|
183
|
-
arr[7] = v2 & 255;
|
|
184
|
-
arr[8] = (v2 = parseInt(uuid.slice(19, 23), 16)) >>> 8;
|
|
185
|
-
arr[9] = v2 & 255;
|
|
186
|
-
arr[10] = (v2 = parseInt(uuid.slice(24, 36), 16)) / 1099511627776 & 255;
|
|
187
|
-
arr[11] = v2 / 4294967296 & 255;
|
|
188
|
-
arr[12] = v2 >>> 24 & 255;
|
|
189
|
-
arr[13] = v2 >>> 16 & 255;
|
|
190
|
-
arr[14] = v2 >>> 8 & 255;
|
|
191
|
-
arr[15] = v2 & 255;
|
|
192
|
-
return arr;
|
|
193
|
-
};
|
|
194
|
-
Object.defineProperty(exports, "__esModule", {
|
|
195
|
-
value: true
|
|
196
|
-
});
|
|
197
|
-
exports.default = undefined;
|
|
198
|
-
var _validate = _interopRequireDefault(require_validate());
|
|
199
|
-
var _default = parse;
|
|
200
|
-
exports.default = _default;
|
|
201
|
-
});
|
|
202
|
-
|
|
203
|
-
// ../../node_modules/uuid/dist/v35.js
|
|
204
|
-
var require_v35 = __commonJS((exports) => {
|
|
205
|
-
var _interopRequireDefault = function(obj) {
|
|
206
|
-
return obj && obj.__esModule ? obj : { default: obj };
|
|
207
|
-
};
|
|
208
|
-
var stringToBytes = function(str) {
|
|
209
|
-
str = unescape(encodeURIComponent(str));
|
|
210
|
-
const bytes = [];
|
|
211
|
-
for (let i = 0;i < str.length; ++i) {
|
|
212
|
-
bytes.push(str.charCodeAt(i));
|
|
213
|
-
}
|
|
214
|
-
return bytes;
|
|
215
|
-
};
|
|
216
|
-
var v35 = function(name, version, hashfunc) {
|
|
217
|
-
function generateUUID(value, namespace, buf, offset) {
|
|
218
|
-
var _namespace;
|
|
219
|
-
if (typeof value === "string") {
|
|
220
|
-
value = stringToBytes(value);
|
|
221
|
-
}
|
|
222
|
-
if (typeof namespace === "string") {
|
|
223
|
-
namespace = (0, _parse.default)(namespace);
|
|
224
|
-
}
|
|
225
|
-
if (((_namespace = namespace) === null || _namespace === undefined ? undefined : _namespace.length) !== 16) {
|
|
226
|
-
throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");
|
|
227
|
-
}
|
|
228
|
-
let bytes = new Uint8Array(16 + value.length);
|
|
229
|
-
bytes.set(namespace);
|
|
230
|
-
bytes.set(value, namespace.length);
|
|
231
|
-
bytes = hashfunc(bytes);
|
|
232
|
-
bytes[6] = bytes[6] & 15 | version;
|
|
233
|
-
bytes[8] = bytes[8] & 63 | 128;
|
|
234
|
-
if (buf) {
|
|
235
|
-
offset = offset || 0;
|
|
236
|
-
for (let i = 0;i < 16; ++i) {
|
|
237
|
-
buf[offset + i] = bytes[i];
|
|
238
|
-
}
|
|
239
|
-
return buf;
|
|
240
|
-
}
|
|
241
|
-
return (0, _stringify.unsafeStringify)(bytes);
|
|
242
|
-
}
|
|
243
|
-
try {
|
|
244
|
-
generateUUID.name = name;
|
|
245
|
-
} catch (err) {
|
|
246
|
-
}
|
|
247
|
-
generateUUID.DNS = DNS;
|
|
248
|
-
generateUUID.URL = URL2;
|
|
249
|
-
return generateUUID;
|
|
250
|
-
};
|
|
251
|
-
Object.defineProperty(exports, "__esModule", {
|
|
252
|
-
value: true
|
|
253
|
-
});
|
|
254
|
-
exports.URL = exports.DNS = undefined;
|
|
255
|
-
exports.default = v35;
|
|
256
|
-
var _stringify = require_stringify();
|
|
257
|
-
var _parse = _interopRequireDefault(require_parse());
|
|
258
|
-
var DNS = "6ba7b810-9dad-11d1-80b4-00c04fd430c8";
|
|
259
|
-
exports.DNS = DNS;
|
|
260
|
-
var URL2 = "6ba7b811-9dad-11d1-80b4-00c04fd430c8";
|
|
261
|
-
exports.URL = URL2;
|
|
262
|
-
});
|
|
263
|
-
|
|
264
|
-
// ../../node_modules/uuid/dist/md5.js
|
|
265
|
-
var require_md5 = __commonJS((exports) => {
|
|
266
|
-
var _interopRequireDefault = function(obj) {
|
|
267
|
-
return obj && obj.__esModule ? obj : { default: obj };
|
|
268
|
-
};
|
|
269
|
-
var md5 = function(bytes) {
|
|
270
|
-
if (Array.isArray(bytes)) {
|
|
271
|
-
bytes = Buffer.from(bytes);
|
|
272
|
-
} else if (typeof bytes === "string") {
|
|
273
|
-
bytes = Buffer.from(bytes, "utf8");
|
|
274
|
-
}
|
|
275
|
-
return _crypto.default.createHash("md5").update(bytes).digest();
|
|
276
|
-
};
|
|
277
|
-
Object.defineProperty(exports, "__esModule", {
|
|
278
|
-
value: true
|
|
279
|
-
});
|
|
280
|
-
exports.default = undefined;
|
|
281
|
-
var _crypto = _interopRequireDefault(__require("crypto"));
|
|
282
|
-
var _default = md5;
|
|
283
|
-
exports.default = _default;
|
|
284
|
-
});
|
|
285
|
-
|
|
286
|
-
// ../../node_modules/uuid/dist/v3.js
|
|
287
|
-
var require_v3 = __commonJS((exports) => {
|
|
288
|
-
var _interopRequireDefault = function(obj) {
|
|
289
|
-
return obj && obj.__esModule ? obj : { default: obj };
|
|
290
|
-
};
|
|
291
|
-
Object.defineProperty(exports, "__esModule", {
|
|
292
|
-
value: true
|
|
293
|
-
});
|
|
294
|
-
exports.default = undefined;
|
|
295
|
-
var _v = _interopRequireDefault(require_v35());
|
|
296
|
-
var _md = _interopRequireDefault(require_md5());
|
|
297
|
-
var v3 = (0, _v.default)("v3", 48, _md.default);
|
|
298
|
-
var _default = v3;
|
|
299
|
-
exports.default = _default;
|
|
300
|
-
});
|
|
301
|
-
|
|
302
|
-
// ../../node_modules/uuid/dist/native.js
|
|
303
|
-
var require_native = __commonJS((exports) => {
|
|
304
|
-
var _interopRequireDefault = function(obj) {
|
|
305
|
-
return obj && obj.__esModule ? obj : { default: obj };
|
|
306
|
-
};
|
|
307
|
-
Object.defineProperty(exports, "__esModule", {
|
|
308
|
-
value: true
|
|
309
|
-
});
|
|
310
|
-
exports.default = undefined;
|
|
311
|
-
var _crypto = _interopRequireDefault(__require("crypto"));
|
|
312
|
-
var _default = {
|
|
313
|
-
randomUUID: _crypto.default.randomUUID
|
|
314
|
-
};
|
|
315
|
-
exports.default = _default;
|
|
316
|
-
});
|
|
317
|
-
|
|
318
|
-
// ../../node_modules/uuid/dist/v4.js
|
|
319
|
-
var require_v4 = __commonJS((exports) => {
|
|
320
|
-
var _interopRequireDefault = function(obj) {
|
|
321
|
-
return obj && obj.__esModule ? obj : { default: obj };
|
|
322
|
-
};
|
|
323
|
-
var v4 = function(options, buf, offset) {
|
|
324
|
-
if (_native.default.randomUUID && !buf && !options) {
|
|
325
|
-
return _native.default.randomUUID();
|
|
326
|
-
}
|
|
327
|
-
options = options || {};
|
|
328
|
-
const rnds = options.random || (options.rng || _rng.default)();
|
|
329
|
-
rnds[6] = rnds[6] & 15 | 64;
|
|
330
|
-
rnds[8] = rnds[8] & 63 | 128;
|
|
331
|
-
if (buf) {
|
|
332
|
-
offset = offset || 0;
|
|
333
|
-
for (let i = 0;i < 16; ++i) {
|
|
334
|
-
buf[offset + i] = rnds[i];
|
|
335
|
-
}
|
|
336
|
-
return buf;
|
|
337
|
-
}
|
|
338
|
-
return (0, _stringify.unsafeStringify)(rnds);
|
|
339
|
-
};
|
|
340
|
-
Object.defineProperty(exports, "__esModule", {
|
|
341
|
-
value: true
|
|
342
|
-
});
|
|
343
|
-
exports.default = undefined;
|
|
344
|
-
var _native = _interopRequireDefault(require_native());
|
|
345
|
-
var _rng = _interopRequireDefault(require_rng());
|
|
346
|
-
var _stringify = require_stringify();
|
|
347
|
-
var _default = v4;
|
|
348
|
-
exports.default = _default;
|
|
349
|
-
});
|
|
350
|
-
|
|
351
|
-
// ../../node_modules/uuid/dist/sha1.js
|
|
352
|
-
var require_sha1 = __commonJS((exports) => {
|
|
353
|
-
var _interopRequireDefault = function(obj) {
|
|
354
|
-
return obj && obj.__esModule ? obj : { default: obj };
|
|
355
|
-
};
|
|
356
|
-
var sha1 = function(bytes) {
|
|
357
|
-
if (Array.isArray(bytes)) {
|
|
358
|
-
bytes = Buffer.from(bytes);
|
|
359
|
-
} else if (typeof bytes === "string") {
|
|
360
|
-
bytes = Buffer.from(bytes, "utf8");
|
|
361
|
-
}
|
|
362
|
-
return _crypto.default.createHash("sha1").update(bytes).digest();
|
|
363
|
-
};
|
|
364
|
-
Object.defineProperty(exports, "__esModule", {
|
|
365
|
-
value: true
|
|
366
|
-
});
|
|
367
|
-
exports.default = undefined;
|
|
368
|
-
var _crypto = _interopRequireDefault(__require("crypto"));
|
|
369
|
-
var _default = sha1;
|
|
370
|
-
exports.default = _default;
|
|
371
|
-
});
|
|
372
|
-
|
|
373
|
-
// ../../node_modules/uuid/dist/v5.js
|
|
374
|
-
var require_v5 = __commonJS((exports) => {
|
|
375
|
-
var _interopRequireDefault = function(obj) {
|
|
376
|
-
return obj && obj.__esModule ? obj : { default: obj };
|
|
377
|
-
};
|
|
378
|
-
Object.defineProperty(exports, "__esModule", {
|
|
379
|
-
value: true
|
|
380
|
-
});
|
|
381
|
-
exports.default = undefined;
|
|
382
|
-
var _v = _interopRequireDefault(require_v35());
|
|
383
|
-
var _sha = _interopRequireDefault(require_sha1());
|
|
384
|
-
var v5 = (0, _v.default)("v5", 80, _sha.default);
|
|
385
|
-
var _default = v5;
|
|
386
|
-
exports.default = _default;
|
|
387
|
-
});
|
|
388
|
-
|
|
389
|
-
// ../../node_modules/uuid/dist/nil.js
|
|
390
|
-
var require_nil = __commonJS((exports) => {
|
|
391
|
-
Object.defineProperty(exports, "__esModule", {
|
|
392
|
-
value: true
|
|
393
|
-
});
|
|
394
|
-
exports.default = undefined;
|
|
395
|
-
var _default = "00000000-0000-0000-0000-000000000000";
|
|
396
|
-
exports.default = _default;
|
|
397
|
-
});
|
|
398
|
-
|
|
399
|
-
// ../../node_modules/uuid/dist/version.js
|
|
400
|
-
var require_version = __commonJS((exports) => {
|
|
401
|
-
var _interopRequireDefault = function(obj) {
|
|
402
|
-
return obj && obj.__esModule ? obj : { default: obj };
|
|
403
|
-
};
|
|
404
|
-
var version = function(uuid) {
|
|
405
|
-
if (!(0, _validate.default)(uuid)) {
|
|
406
|
-
throw TypeError("Invalid UUID");
|
|
407
|
-
}
|
|
408
|
-
return parseInt(uuid.slice(14, 15), 16);
|
|
409
|
-
};
|
|
410
|
-
Object.defineProperty(exports, "__esModule", {
|
|
411
|
-
value: true
|
|
412
|
-
});
|
|
413
|
-
exports.default = undefined;
|
|
414
|
-
var _validate = _interopRequireDefault(require_validate());
|
|
415
|
-
var _default = version;
|
|
416
|
-
exports.default = _default;
|
|
417
|
-
});
|
|
418
|
-
|
|
419
|
-
// ../../node_modules/uuid/dist/index.js
|
|
420
|
-
var require_dist = __commonJS((exports) => {
|
|
421
|
-
var _interopRequireDefault = function(obj) {
|
|
422
|
-
return obj && obj.__esModule ? obj : { default: obj };
|
|
423
|
-
};
|
|
424
|
-
Object.defineProperty(exports, "__esModule", {
|
|
425
|
-
value: true
|
|
426
|
-
});
|
|
427
|
-
Object.defineProperty(exports, "NIL", {
|
|
428
|
-
enumerable: true,
|
|
429
|
-
get: function() {
|
|
430
|
-
return _nil.default;
|
|
431
|
-
}
|
|
432
|
-
});
|
|
433
|
-
Object.defineProperty(exports, "parse", {
|
|
434
|
-
enumerable: true,
|
|
435
|
-
get: function() {
|
|
436
|
-
return _parse.default;
|
|
437
|
-
}
|
|
438
|
-
});
|
|
439
|
-
Object.defineProperty(exports, "stringify", {
|
|
440
|
-
enumerable: true,
|
|
441
|
-
get: function() {
|
|
442
|
-
return _stringify.default;
|
|
443
|
-
}
|
|
444
|
-
});
|
|
445
|
-
Object.defineProperty(exports, "v1", {
|
|
446
|
-
enumerable: true,
|
|
447
|
-
get: function() {
|
|
448
|
-
return _v.default;
|
|
449
|
-
}
|
|
450
|
-
});
|
|
451
|
-
Object.defineProperty(exports, "v3", {
|
|
452
|
-
enumerable: true,
|
|
453
|
-
get: function() {
|
|
454
|
-
return _v2.default;
|
|
455
|
-
}
|
|
456
|
-
});
|
|
457
|
-
Object.defineProperty(exports, "v4", {
|
|
458
|
-
enumerable: true,
|
|
459
|
-
get: function() {
|
|
460
|
-
return _v3.default;
|
|
461
|
-
}
|
|
462
|
-
});
|
|
463
|
-
Object.defineProperty(exports, "v5", {
|
|
464
|
-
enumerable: true,
|
|
465
|
-
get: function() {
|
|
466
|
-
return _v4.default;
|
|
467
|
-
}
|
|
468
|
-
});
|
|
469
|
-
Object.defineProperty(exports, "validate", {
|
|
470
|
-
enumerable: true,
|
|
471
|
-
get: function() {
|
|
472
|
-
return _validate.default;
|
|
473
|
-
}
|
|
474
|
-
});
|
|
475
|
-
Object.defineProperty(exports, "version", {
|
|
476
|
-
enumerable: true,
|
|
477
|
-
get: function() {
|
|
478
|
-
return _version.default;
|
|
479
|
-
}
|
|
480
|
-
});
|
|
481
|
-
var _v = _interopRequireDefault(require_v1());
|
|
482
|
-
var _v2 = _interopRequireDefault(require_v3());
|
|
483
|
-
var _v3 = _interopRequireDefault(require_v4());
|
|
484
|
-
var _v4 = _interopRequireDefault(require_v5());
|
|
485
|
-
var _nil = _interopRequireDefault(require_nil());
|
|
486
|
-
var _version = _interopRequireDefault(require_version());
|
|
487
|
-
var _validate = _interopRequireDefault(require_validate());
|
|
488
|
-
var _stringify = _interopRequireDefault(require_stringify());
|
|
489
|
-
var _parse = _interopRequireDefault(require_parse());
|
|
490
|
-
});
|
|
491
|
-
|
|
492
21
|
// http/Controller.ts
|
|
493
22
|
class Controller {
|
|
494
23
|
requests = {};
|
|
@@ -496,6 +25,12 @@ class Controller {
|
|
|
496
25
|
constructor() {
|
|
497
26
|
}
|
|
498
27
|
}
|
|
28
|
+
|
|
29
|
+
class ResourceController extends Controller {
|
|
30
|
+
constructor() {
|
|
31
|
+
super(...arguments);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
499
34
|
// internal/isConstructor.ts
|
|
500
35
|
function isConstructor(value) {
|
|
501
36
|
return typeof value === "function" && value.prototype !== undefined;
|
|
@@ -515,6 +50,9 @@ class RouteHandler {
|
|
|
515
50
|
this.method = method;
|
|
516
51
|
this.handler = handler;
|
|
517
52
|
this.methodName = methodName;
|
|
53
|
+
this.handler = handler;
|
|
54
|
+
this.methodName = methodName;
|
|
55
|
+
this.method = method;
|
|
518
56
|
}
|
|
519
57
|
run(req) {
|
|
520
58
|
let httpRequest = req;
|
|
@@ -553,6 +91,26 @@ class ApiRouter {
|
|
|
553
91
|
delete(handler, methodName) {
|
|
554
92
|
return new RouteHandler("DELETE", handler, methodName);
|
|
555
93
|
}
|
|
94
|
+
resource(Controller2) {
|
|
95
|
+
|
|
96
|
+
class ResourceRouter extends ApiRouter {
|
|
97
|
+
constructor() {
|
|
98
|
+
super(...arguments);
|
|
99
|
+
}
|
|
100
|
+
routes = {
|
|
101
|
+
"/": {
|
|
102
|
+
list: this.get(Controller2, "list"),
|
|
103
|
+
create: this.post(Controller2, "create")
|
|
104
|
+
},
|
|
105
|
+
"/:id": {
|
|
106
|
+
show: this.get(Controller2, "show"),
|
|
107
|
+
update: this.put(Controller2, "update"),
|
|
108
|
+
delete: this.delete(Controller2, "delete")
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
return ResourceRouter;
|
|
113
|
+
}
|
|
556
114
|
}
|
|
557
115
|
// http/ViewRouter.ts
|
|
558
116
|
class ViewRouter {
|
|
@@ -567,7 +125,7 @@ class ViewRouter {
|
|
|
567
125
|
_children = handler;
|
|
568
126
|
}
|
|
569
127
|
return {
|
|
570
|
-
exec: async (req
|
|
128
|
+
exec: async (req) => {
|
|
571
129
|
let _handler = () => Promise.resolve({
|
|
572
130
|
data: { [viewPath]: {} },
|
|
573
131
|
headers: {},
|
|
@@ -581,7 +139,7 @@ class ViewRouter {
|
|
|
581
139
|
const instance = new controller(app);
|
|
582
140
|
_handler = instance[methodName].bind(instance);
|
|
583
141
|
}
|
|
584
|
-
const data = await _handler(req
|
|
142
|
+
const data = await _handler(req);
|
|
585
143
|
return { [viewPath]: data };
|
|
586
144
|
},
|
|
587
145
|
children: _children,
|
|
@@ -604,7 +162,7 @@ class ViewRouter {
|
|
|
604
162
|
_children = handler;
|
|
605
163
|
}
|
|
606
164
|
return {
|
|
607
|
-
exec: async (req
|
|
165
|
+
exec: async (req) => {
|
|
608
166
|
let _handler = () => Promise.resolve({
|
|
609
167
|
data: { [viewPath]: {} },
|
|
610
168
|
headers: {},
|
|
@@ -618,7 +176,7 @@ class ViewRouter {
|
|
|
618
176
|
const instance = new controller(app);
|
|
619
177
|
_handler = instance[methodName].bind(instance);
|
|
620
178
|
}
|
|
621
|
-
const data = await _handler(req
|
|
179
|
+
const data = await _handler(req);
|
|
622
180
|
return { [viewPath]: data };
|
|
623
181
|
},
|
|
624
182
|
children: _children,
|
|
@@ -692,13 +250,73 @@ class ValidationError extends RequestBreakerError {
|
|
|
692
250
|
};
|
|
693
251
|
}
|
|
694
252
|
}
|
|
253
|
+
// http/requestContext.ts
|
|
254
|
+
import {AsyncLocalStorage} from "async_hooks";
|
|
255
|
+
|
|
256
|
+
// http/Cookie.ts
|
|
257
|
+
class Cookie {
|
|
258
|
+
name;
|
|
259
|
+
value;
|
|
260
|
+
options;
|
|
261
|
+
constructor(name, value, options = {}) {
|
|
262
|
+
this.name = name;
|
|
263
|
+
this.value = value;
|
|
264
|
+
this.options = options;
|
|
265
|
+
}
|
|
266
|
+
toString() {
|
|
267
|
+
return [
|
|
268
|
+
`${this.name}=${this.value}`,
|
|
269
|
+
this.options.maxAge ? `Max-Age=${this.options.maxAge}` : "",
|
|
270
|
+
this.options.httpOnly ? "HttpOnly" : "",
|
|
271
|
+
this.options.secure ? "Secure" : "",
|
|
272
|
+
this.options.sameSite ? `SameSite=${this.options.sameSite}` : "SameSite=Strict",
|
|
273
|
+
this.options.path ? `Path=${this.options.path}` : "Path=/",
|
|
274
|
+
this.options.domain ? `Domain=${this.options.domain}` : "",
|
|
275
|
+
this.options.expires ? `Expires=${this.options.expires.toUTCString()}` : "",
|
|
276
|
+
this.options.partitioned ? "Partitioned" : ""
|
|
277
|
+
].filter((i) => i !== "").join("; ");
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
// http/requestContext.ts
|
|
282
|
+
var requestContext = new AsyncLocalStorage;
|
|
283
|
+
|
|
284
|
+
class Store {
|
|
285
|
+
cookies = new Set;
|
|
286
|
+
user = null;
|
|
287
|
+
req = null;
|
|
288
|
+
constructor() {
|
|
289
|
+
}
|
|
290
|
+
setCookie(name, value, options = {}) {
|
|
291
|
+
this.cookies.add(new Cookie(name, value, options));
|
|
292
|
+
}
|
|
293
|
+
setUser(user) {
|
|
294
|
+
this.user = user;
|
|
295
|
+
}
|
|
296
|
+
setRequest(req) {
|
|
297
|
+
this.req = req;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
class RequestContext {
|
|
302
|
+
static getStore() {
|
|
303
|
+
return requestContext.getStore();
|
|
304
|
+
}
|
|
305
|
+
static setRequest(req) {
|
|
306
|
+
requestContext.getStore().req = req;
|
|
307
|
+
}
|
|
308
|
+
static async run(fn) {
|
|
309
|
+
return requestContext.run(new Store, fn);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
|
|
695
313
|
// http/HttpRequest.ts
|
|
696
314
|
var validate = function(ruleName) {
|
|
697
315
|
const [rule, param] = ruleName.split(":");
|
|
698
316
|
switch (rule) {
|
|
699
317
|
case "required":
|
|
700
318
|
return (value) => {
|
|
701
|
-
return value !== null && value !== undefined;
|
|
319
|
+
return value !== null && value !== undefined && value?.length > 0;
|
|
702
320
|
};
|
|
703
321
|
case "password":
|
|
704
322
|
return (value) => {
|
|
@@ -713,11 +331,11 @@ var validate = function(ruleName) {
|
|
|
713
331
|
};
|
|
714
332
|
case "min":
|
|
715
333
|
return (value) => {
|
|
716
|
-
return value
|
|
334
|
+
return value?.length >= parseInt(param);
|
|
717
335
|
};
|
|
718
336
|
case "max":
|
|
719
337
|
return (value) => {
|
|
720
|
-
return value
|
|
338
|
+
return value?.length <= parseInt(param);
|
|
721
339
|
};
|
|
722
340
|
case "email":
|
|
723
341
|
return (value) => {
|
|
@@ -752,8 +370,9 @@ class HttpRequest {
|
|
|
752
370
|
rawRequest;
|
|
753
371
|
headers;
|
|
754
372
|
cookies;
|
|
755
|
-
schema;
|
|
373
|
+
schema = {};
|
|
756
374
|
params;
|
|
375
|
+
ctx = RequestContext.getStore();
|
|
757
376
|
constructor(req, params) {
|
|
758
377
|
this.params = params;
|
|
759
378
|
this.rawRequest = req;
|
|
@@ -780,7 +399,6 @@ class HttpRequest {
|
|
|
780
399
|
if (this.rawRequest.headers.get("Content-Type") === "application/x-www-form-urlencoded") {
|
|
781
400
|
const body = await this.rawRequest.formData();
|
|
782
401
|
for (const [key, value] of body) {
|
|
783
|
-
console.log(key, value);
|
|
784
402
|
inputMap.set(key, value);
|
|
785
403
|
}
|
|
786
404
|
}
|
|
@@ -811,7 +429,12 @@ class HttpRequest {
|
|
|
811
429
|
if (!errors[key]) {
|
|
812
430
|
errors[key] = [];
|
|
813
431
|
}
|
|
814
|
-
|
|
432
|
+
if (rule === "required") {
|
|
433
|
+
errors[key] = [String(message)];
|
|
434
|
+
break;
|
|
435
|
+
} else {
|
|
436
|
+
errors[key].push(String(message));
|
|
437
|
+
}
|
|
815
438
|
}
|
|
816
439
|
}
|
|
817
440
|
}
|
|
@@ -845,14 +468,12 @@ class HttpRequest {
|
|
|
845
468
|
}
|
|
846
469
|
}
|
|
847
470
|
async terminate(params) {
|
|
848
|
-
const { message, status, headers, payload } = params;
|
|
849
|
-
const error = new RequestBreakerError(message);
|
|
850
471
|
throw "not implemented";
|
|
851
472
|
}
|
|
852
473
|
}
|
|
853
474
|
// http/Middleware.ts
|
|
854
475
|
class Middleware {
|
|
855
|
-
async run(_req
|
|
476
|
+
async run(_req) {
|
|
856
477
|
return {};
|
|
857
478
|
}
|
|
858
479
|
}
|
|
@@ -870,6 +491,45 @@ function getCookies(req) {
|
|
|
870
491
|
}
|
|
871
492
|
return _cookies;
|
|
872
493
|
}
|
|
494
|
+
// http/MiddlewareServiceProvider.ts
|
|
495
|
+
class MiddlewareServiceProvider {
|
|
496
|
+
aliases = {};
|
|
497
|
+
}
|
|
498
|
+
// kernel/context.ts
|
|
499
|
+
import {AsyncLocalStorage as AsyncLocalStorage2} from "async_hooks";
|
|
500
|
+
var kernelContext = new AsyncLocalStorage2;
|
|
501
|
+
|
|
502
|
+
// kernel/KernelContext.ts
|
|
503
|
+
class KernelContext {
|
|
504
|
+
static getStore = () => kernelContext.getStore();
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
// http/AuthenticationMiddlware.ts
|
|
508
|
+
class AuthenticationMiddleware extends Middleware {
|
|
509
|
+
constructor() {
|
|
510
|
+
super(...arguments);
|
|
511
|
+
}
|
|
512
|
+
async run(req) {
|
|
513
|
+
const requestContextStore = RequestContext.getStore();
|
|
514
|
+
const accessToken = requestContextStore.req.cookies.get("access_token");
|
|
515
|
+
if (!accessToken) {
|
|
516
|
+
throw new AuthenticationError;
|
|
517
|
+
}
|
|
518
|
+
let user = requestContextStore.user;
|
|
519
|
+
if (!user) {
|
|
520
|
+
const session = await KernelContext.getStore().authenticationServiceProvider.adapter.findSession({
|
|
521
|
+
token: accessToken,
|
|
522
|
+
userAgent: requestContextStore.req.headers.get("User-Agent")
|
|
523
|
+
});
|
|
524
|
+
if (!session) {
|
|
525
|
+
throw new AuthenticationError;
|
|
526
|
+
}
|
|
527
|
+
user = session?.user;
|
|
528
|
+
requestContextStore.setUser(user);
|
|
529
|
+
}
|
|
530
|
+
return {};
|
|
531
|
+
}
|
|
532
|
+
}
|
|
873
533
|
// ../../node_modules/urlpattern-polyfill/dist/urlpattern.js
|
|
874
534
|
var Re = function(e, t) {
|
|
875
535
|
return (t ? /^[\x00-\xFF]*$/ : /^[\x00-\x7F]*$/).test(e);
|
|
@@ -1668,22 +1328,6 @@ function generateETag(lastModified) {
|
|
|
1668
1328
|
return hash;
|
|
1669
1329
|
}
|
|
1670
1330
|
|
|
1671
|
-
// ../../node_modules/uuid/wrapper.mjs
|
|
1672
|
-
var dist = __toESM(require_dist(), 1);
|
|
1673
|
-
var v1 = dist.default.v1;
|
|
1674
|
-
var v3 = dist.default.v3;
|
|
1675
|
-
var v4 = dist.default.v4;
|
|
1676
|
-
var v5 = dist.default.v5;
|
|
1677
|
-
var NIL = dist.default.NIL;
|
|
1678
|
-
var version = dist.default.version;
|
|
1679
|
-
var validate2 = dist.default.validate;
|
|
1680
|
-
var stringify = dist.default.stringify;
|
|
1681
|
-
var parse = dist.default.parse;
|
|
1682
|
-
|
|
1683
|
-
// http/requestContext.ts
|
|
1684
|
-
import {AsyncLocalStorage} from "async_hooks";
|
|
1685
|
-
var requestContext = new AsyncLocalStorage;
|
|
1686
|
-
|
|
1687
1331
|
// client/helpers/flattenComponentTree.ts
|
|
1688
1332
|
function flattenComponentTree(componentTree) {
|
|
1689
1333
|
let out = [];
|
|
@@ -1791,6 +1435,9 @@ function createRouteManifest(routes) {
|
|
|
1791
1435
|
}
|
|
1792
1436
|
|
|
1793
1437
|
// app/createFlatApiRoutes.ts
|
|
1438
|
+
var isRouter = function(routeHandlers) {
|
|
1439
|
+
return isConstructor(routeHandlers);
|
|
1440
|
+
};
|
|
1794
1441
|
function createFlatApiRoutes(routes) {
|
|
1795
1442
|
const flatApiRoutes = {};
|
|
1796
1443
|
for (const [rootPath, apiRouteHandlerOrApiRouter] of Object.entries(routes)) {
|
|
@@ -1806,20 +1453,7 @@ function createFlatApiRoutes(routes) {
|
|
|
1806
1453
|
exec,
|
|
1807
1454
|
middleware: [...middleware]
|
|
1808
1455
|
};
|
|
1809
|
-
} else if (
|
|
1810
|
-
for (const routeHandler of apiRouteHandlerOrApiRouter) {
|
|
1811
|
-
if (!flatApiRoutes[rootPath]) {
|
|
1812
|
-
flatApiRoutes[rootPath] = {};
|
|
1813
|
-
}
|
|
1814
|
-
const method = routeHandler.method;
|
|
1815
|
-
const middleware = routeHandler.middlewares;
|
|
1816
|
-
const exec = routeHandler.run;
|
|
1817
|
-
flatApiRoutes[rootPath][method] = {
|
|
1818
|
-
exec,
|
|
1819
|
-
middleware
|
|
1820
|
-
};
|
|
1821
|
-
}
|
|
1822
|
-
} else {
|
|
1456
|
+
} else if (isRouter(apiRouteHandlerOrApiRouter)) {
|
|
1823
1457
|
const router = new apiRouteHandlerOrApiRouter;
|
|
1824
1458
|
const result = createFlatApiRoutes(router.routes);
|
|
1825
1459
|
for (const [path, handlers] of Object.entries(result)) {
|
|
@@ -1840,6 +1474,19 @@ function createFlatApiRoutes(routes) {
|
|
|
1840
1474
|
};
|
|
1841
1475
|
}
|
|
1842
1476
|
}
|
|
1477
|
+
} else {
|
|
1478
|
+
for (const routeHandler of Object.values(apiRouteHandlerOrApiRouter)) {
|
|
1479
|
+
if (!flatApiRoutes[rootPath]) {
|
|
1480
|
+
flatApiRoutes[rootPath] = {};
|
|
1481
|
+
}
|
|
1482
|
+
const method = routeHandler.method;
|
|
1483
|
+
const middleware = routeHandler.middlewares;
|
|
1484
|
+
const exec = routeHandler.run.bind(routeHandler);
|
|
1485
|
+
flatApiRoutes[rootPath][method] = {
|
|
1486
|
+
exec,
|
|
1487
|
+
middleware
|
|
1488
|
+
};
|
|
1489
|
+
}
|
|
1843
1490
|
}
|
|
1844
1491
|
}
|
|
1845
1492
|
return flatApiRoutes;
|
|
@@ -1880,11 +1527,15 @@ class App {
|
|
|
1880
1527
|
prepare() {
|
|
1881
1528
|
const params = this.params;
|
|
1882
1529
|
this.middlewareAliases = params.middlewareAliases ?? {};
|
|
1530
|
+
const kernelServices = this.kernel.getServices.call(this.kernel);
|
|
1531
|
+
const authBasePath = kernelServices.authenticationServiceProvider.basePath;
|
|
1883
1532
|
let viewRouters = {
|
|
1884
|
-
"/": this.viewRouter
|
|
1533
|
+
"/": this.viewRouter,
|
|
1534
|
+
[authBasePath]: kernelServices.authenticationServiceProvider.routers.view
|
|
1885
1535
|
};
|
|
1886
1536
|
let apiRouters = {
|
|
1887
|
-
"/": this.apiRouter
|
|
1537
|
+
"/": this.apiRouter,
|
|
1538
|
+
[authBasePath]: kernelServices.authenticationServiceProvider.routers.api
|
|
1888
1539
|
};
|
|
1889
1540
|
for (const Plugin of params.plugins ?? []) {
|
|
1890
1541
|
const plugin = new Plugin;
|
|
@@ -1912,41 +1563,14 @@ class App {
|
|
|
1912
1563
|
setRenderParams(params) {
|
|
1913
1564
|
this.renderParams = params;
|
|
1914
1565
|
}
|
|
1915
|
-
async resolvePageData(req) {
|
|
1916
|
-
const url = new URL(req.url);
|
|
1917
|
-
let handlers = [];
|
|
1918
|
-
let middlewares = [];
|
|
1919
|
-
let currentPathName = "";
|
|
1920
|
-
let params = {};
|
|
1921
|
-
const sortedEntries = Object.entries(this.flatViewRoutes).sort(([pathA], [pathB]) => pathB.length - pathA.length);
|
|
1922
|
-
for (const [pathname, handler] of sortedEntries) {
|
|
1923
|
-
const pattern = new me({ pathname });
|
|
1924
|
-
if (pattern.test({ pathname: url.pathname })) {
|
|
1925
|
-
currentPathName = pathname;
|
|
1926
|
-
params = pattern.exec({ pathname: url.pathname })?.pathname.groups;
|
|
1927
|
-
handlers = handler.exec;
|
|
1928
|
-
middlewares = handler.middleware;
|
|
1929
|
-
}
|
|
1930
|
-
}
|
|
1931
|
-
const reqWithMiddlewares = this.runMiddleware(middlewares);
|
|
1932
|
-
const reqCtx = new Map;
|
|
1933
|
-
const data = await requestContext.run(reqCtx, async () => {
|
|
1934
|
-
await reqWithMiddlewares(new HttpRequest(req, params), reqCtx);
|
|
1935
|
-
return await Promise.all(handlers.map((fn) => fn(req, params, this)));
|
|
1936
|
-
});
|
|
1937
|
-
return {
|
|
1938
|
-
data,
|
|
1939
|
-
currentPathName,
|
|
1940
|
-
params,
|
|
1941
|
-
user: reqCtx.get("user") ?? null
|
|
1942
|
-
};
|
|
1943
|
-
}
|
|
1944
1566
|
runMiddleware(middleware) {
|
|
1945
1567
|
return middleware.map((aliasOrTest) => {
|
|
1946
1568
|
if (typeof aliasOrTest === "string") {
|
|
1947
1569
|
const alias = aliasOrTest;
|
|
1948
|
-
|
|
1949
|
-
|
|
1570
|
+
const kernelServices = this.kernel.getServices.call(this.kernel);
|
|
1571
|
+
const Middleware3 = kernelServices.middlewareServiceProvider.aliases[alias];
|
|
1572
|
+
if (Middleware3) {
|
|
1573
|
+
const middleware2 = new Middleware3;
|
|
1950
1574
|
return middleware2.run;
|
|
1951
1575
|
}
|
|
1952
1576
|
} else {
|
|
@@ -1978,23 +1602,25 @@ class App {
|
|
|
1978
1602
|
const exec = handler[req.method].exec;
|
|
1979
1603
|
const middlewares = handler[req.method].middleware;
|
|
1980
1604
|
const reqWithMiddlewares = this.runMiddleware(middlewares);
|
|
1981
|
-
|
|
1982
|
-
return await requestContext.run(reqCtx, async () => {
|
|
1605
|
+
return await RequestContext.run(async () => {
|
|
1983
1606
|
const httpRequest = new HttpRequest(req, params);
|
|
1984
|
-
|
|
1607
|
+
const ctx = RequestContext.getStore();
|
|
1608
|
+
ctx.setRequest(httpRequest);
|
|
1609
|
+
let handler2 = exec ? () => exec(httpRequest, params) : () => Promise.resolve({});
|
|
1985
1610
|
try {
|
|
1986
|
-
await reqWithMiddlewares(httpRequest
|
|
1611
|
+
await reqWithMiddlewares(httpRequest);
|
|
1987
1612
|
} catch (err) {
|
|
1988
1613
|
if (err.kind === GEMI_REQUEST_BREAKER_ERROR) {
|
|
1989
|
-
const { status = 400, data: data2, headers } = err.payload.api;
|
|
1614
|
+
const { status = 400, data: data2, headers: headers2 } = err.payload.api;
|
|
1990
1615
|
return new Response(JSON.stringify(data2), {
|
|
1991
1616
|
status,
|
|
1992
1617
|
headers: {
|
|
1993
1618
|
"Content-Type": "application/json",
|
|
1994
|
-
...
|
|
1619
|
+
...headers2
|
|
1995
1620
|
}
|
|
1996
1621
|
});
|
|
1997
1622
|
} else {
|
|
1623
|
+
console.error(err);
|
|
1998
1624
|
throw err;
|
|
1999
1625
|
}
|
|
2000
1626
|
}
|
|
@@ -2003,32 +1629,24 @@ class App {
|
|
|
2003
1629
|
data = await handler2();
|
|
2004
1630
|
} catch (err) {
|
|
2005
1631
|
if (err.kind === GEMI_REQUEST_BREAKER_ERROR) {
|
|
2006
|
-
const { status = 400, data: data2, headers } = err.payload.api;
|
|
1632
|
+
const { status = 400, data: data2, headers: headers2 } = err.payload.api;
|
|
2007
1633
|
return new Response(JSON.stringify(data2), {
|
|
2008
1634
|
status,
|
|
2009
1635
|
headers: {
|
|
2010
1636
|
"Content-Type": "application/json",
|
|
2011
|
-
...
|
|
1637
|
+
...headers2
|
|
2012
1638
|
}
|
|
2013
1639
|
});
|
|
2014
1640
|
} else {
|
|
1641
|
+
console.error(err);
|
|
2015
1642
|
throw err;
|
|
2016
1643
|
}
|
|
2017
1644
|
}
|
|
2018
|
-
const
|
|
2019
|
-
|
|
2020
|
-
|
|
2021
|
-
|
|
2022
|
-
|
|
2023
|
-
return `${name}=${config.value}; HttpOnly; SameSite=Strict; Path=/; Max-Age=${config.maxAge}`;
|
|
2024
|
-
}).join(", ")
|
|
2025
|
-
}
|
|
2026
|
-
};
|
|
2027
|
-
return new Response(JSON.stringify(result.data), {
|
|
2028
|
-
headers: {
|
|
2029
|
-
"Content-Type": "application/json",
|
|
2030
|
-
...result.headers
|
|
2031
|
-
}
|
|
1645
|
+
const headers = new Headers;
|
|
1646
|
+
headers.append("Content-Type", "application/json");
|
|
1647
|
+
ctx.cookies.forEach((cookie) => headers.append("Set-Cookie", cookie.toString()));
|
|
1648
|
+
return new Response(JSON.stringify(data), {
|
|
1649
|
+
headers
|
|
2032
1650
|
});
|
|
2033
1651
|
});
|
|
2034
1652
|
}
|
|
@@ -2056,25 +1674,35 @@ class App {
|
|
|
2056
1674
|
}
|
|
2057
1675
|
}
|
|
2058
1676
|
const reqWithMiddlewares = this.runMiddleware(middlewares);
|
|
2059
|
-
const
|
|
2060
|
-
|
|
2061
|
-
|
|
2062
|
-
|
|
1677
|
+
const { data: data2, cookies: cookies2, user: user2 } = await RequestContext.run(async () => {
|
|
1678
|
+
const httpRequest = new HttpRequest(req, params2);
|
|
1679
|
+
const ctx = RequestContext.getStore();
|
|
1680
|
+
ctx.setRequest(httpRequest);
|
|
1681
|
+
await reqWithMiddlewares(httpRequest);
|
|
1682
|
+
const data3 = await Promise.all(handlers.map((fn) => fn(httpRequest)));
|
|
1683
|
+
return {
|
|
1684
|
+
data: data3,
|
|
1685
|
+
cookies: ctx.cookies,
|
|
1686
|
+
user: ctx.user
|
|
1687
|
+
};
|
|
2063
1688
|
});
|
|
2064
1689
|
pageData = {
|
|
2065
1690
|
data: data2,
|
|
2066
1691
|
currentPathName: currentPathName2,
|
|
1692
|
+
user: user2,
|
|
2067
1693
|
params: params2,
|
|
2068
|
-
|
|
1694
|
+
cookies: cookies2
|
|
2069
1695
|
};
|
|
2070
1696
|
} catch (err) {
|
|
2071
1697
|
if (err.kind === GEMI_REQUEST_BREAKER_ERROR) {
|
|
2072
1698
|
return new Response(null, {
|
|
2073
1699
|
...err.payload.view
|
|
2074
1700
|
});
|
|
1701
|
+
} else {
|
|
1702
|
+
throw err;
|
|
2075
1703
|
}
|
|
2076
1704
|
}
|
|
2077
|
-
const { data, params, currentPathName, user } = pageData;
|
|
1705
|
+
const { data, params, currentPathName, user, cookies } = pageData;
|
|
2078
1706
|
const viewData = data.reduce((acc, data2) => {
|
|
2079
1707
|
return {
|
|
2080
1708
|
...acc,
|
|
@@ -2082,31 +1710,18 @@ class App {
|
|
|
2082
1710
|
};
|
|
2083
1711
|
}, {});
|
|
2084
1712
|
if (url.searchParams.get("json")) {
|
|
2085
|
-
const
|
|
2086
|
-
|
|
1713
|
+
const headers2 = new Headers;
|
|
1714
|
+
headers2.set("Content-Type", "application/json");
|
|
1715
|
+
cookies.forEach((cookie) => headers2.append("Set-Cookie", cookie.toString()));
|
|
1716
|
+
return new Response(JSON.stringify({
|
|
2087
1717
|
data: {
|
|
2088
1718
|
[url.pathname]: viewData
|
|
2089
1719
|
},
|
|
2090
|
-
|
|
2091
|
-
headers: {}
|
|
2092
|
-
};
|
|
2093
|
-
return new Response(JSON.stringify({
|
|
2094
|
-
data: result2.data,
|
|
2095
|
-
head: {}
|
|
1720
|
+
is404: !currentPathName
|
|
2096
1721
|
}), {
|
|
2097
|
-
headers:
|
|
2098
|
-
...result2.headers,
|
|
2099
|
-
"Content-Type": "application/json"
|
|
2100
|
-
}
|
|
1722
|
+
headers: headers2
|
|
2101
1723
|
});
|
|
2102
1724
|
}
|
|
2103
|
-
let cookieHeaders = {};
|
|
2104
|
-
const visitorIdExist = req.headers.get("cookie")?.includes("visitor_id");
|
|
2105
|
-
if (!visitorIdExist) {
|
|
2106
|
-
cookieHeaders = {
|
|
2107
|
-
"Set-Cookie": `visitor_id=${v4()}; HttpOnly; SameSite=Strict; Path=/`
|
|
2108
|
-
};
|
|
2109
|
-
}
|
|
2110
1725
|
const { styles, manifest, serverManifest, bootstrapModules } = this.renderParams;
|
|
2111
1726
|
const viewImportMap = {};
|
|
2112
1727
|
let appDir = null;
|
|
@@ -2134,6 +1749,11 @@ class App {
|
|
|
2134
1749
|
}
|
|
2135
1750
|
}
|
|
2136
1751
|
const loaders = `{${templates.join(",")}}`;
|
|
1752
|
+
const headers = new Headers;
|
|
1753
|
+
headers.set("Content-Type", "text/html");
|
|
1754
|
+
headers.set("Cache-Control", user ? "private, no-cache, no-store, max-age=0, must-revalidate" : "public, max-age=864000, must-revalidate");
|
|
1755
|
+
headers.set("ETag", this.appId);
|
|
1756
|
+
pageData.cookies.forEach((cookie) => headers.append("Set-Cookie", cookie.toString()));
|
|
2137
1757
|
const result = {
|
|
2138
1758
|
kind: "view",
|
|
2139
1759
|
data: {
|
|
@@ -2146,18 +1766,12 @@ class App {
|
|
|
2146
1766
|
pathname: currentPathName,
|
|
2147
1767
|
params,
|
|
2148
1768
|
currentPath: url.pathname,
|
|
1769
|
+
searchParams: url.search,
|
|
2149
1770
|
is404: !currentPathName ? true : false
|
|
2150
1771
|
},
|
|
2151
1772
|
componentTree: [["404", []], ...this.componentTree]
|
|
2152
1773
|
},
|
|
2153
|
-
head: {}
|
|
2154
|
-
headers: {
|
|
2155
|
-
"Content-Type": "text/html",
|
|
2156
|
-
"Cache-Control": user ? "private, no-cache, no-store, max-age=0, must-revalidate" : "public, max-age=864000, must-revalidate",
|
|
2157
|
-
ETag: this.appId,
|
|
2158
|
-
...cookieHeaders
|
|
2159
|
-
},
|
|
2160
|
-
status: !currentPathName ? 404 : 200
|
|
1774
|
+
head: {}
|
|
2161
1775
|
};
|
|
2162
1776
|
const stream = await renderToReadableStream(createElement(Fragment, {
|
|
2163
1777
|
children: [
|
|
@@ -2172,16 +1786,14 @@ class App {
|
|
|
2172
1786
|
bootstrapModules
|
|
2173
1787
|
});
|
|
2174
1788
|
return new Response(stream, {
|
|
2175
|
-
status:
|
|
2176
|
-
headers
|
|
2177
|
-
"Content-Type": "text/html",
|
|
2178
|
-
...result.headers
|
|
2179
|
-
}
|
|
1789
|
+
status: !currentPathName ? 404 : 200,
|
|
1790
|
+
headers
|
|
2180
1791
|
});
|
|
2181
1792
|
}
|
|
2182
1793
|
async fetch(req) {
|
|
2183
1794
|
const url = new URL(req.url);
|
|
2184
|
-
|
|
1795
|
+
const kernelRun = this.kernel.run.bind(this.kernel);
|
|
1796
|
+
return kernelRun(async () => {
|
|
2185
1797
|
if (url.pathname.startsWith("/api")) {
|
|
2186
1798
|
return await this.handleApiRequest(req);
|
|
2187
1799
|
} else {
|