egg 4.0.0-beta.5 → 4.0.0-beta.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/dist/commonjs/app/extend/context.d.ts +154 -2
  2. package/dist/commonjs/app/extend/context.js +82 -84
  3. package/dist/commonjs/app/extend/context.types.d.ts +16 -0
  4. package/dist/commonjs/app/extend/context.types.js +3 -0
  5. package/dist/commonjs/app/extend/helper.d.ts +37 -0
  6. package/dist/commonjs/app/extend/helper.js +49 -0
  7. package/dist/commonjs/app/extend/request.d.ts +128 -0
  8. package/dist/commonjs/app/extend/request.js +270 -0
  9. package/dist/commonjs/app/extend/response.d.ts +25 -0
  10. package/dist/commonjs/app/extend/response.js +37 -0
  11. package/dist/commonjs/app/middleware/meta.d.ts +2 -3
  12. package/dist/commonjs/app/middleware/meta.js +1 -1
  13. package/dist/commonjs/app/middleware/notfound.d.ts +2 -3
  14. package/dist/commonjs/app/middleware/notfound.js +1 -1
  15. package/dist/commonjs/app/middleware/site_file.d.ts +4 -2
  16. package/dist/commonjs/app/middleware/site_file.js +2 -3
  17. package/dist/commonjs/config/config.default.js +3 -2
  18. package/dist/commonjs/lib/application.d.ts +5 -12
  19. package/dist/commonjs/lib/application.js +9 -20
  20. package/dist/commonjs/lib/core/base_context_class.d.ts +2 -2
  21. package/dist/commonjs/lib/core/context_httpclient.d.ts +3 -3
  22. package/dist/commonjs/lib/core/context_httpclient.js +1 -1
  23. package/dist/commonjs/lib/core/httpclient.d.ts +2 -3
  24. package/dist/commonjs/lib/core/httpclient.js +3 -6
  25. package/dist/commonjs/lib/core/messenger/IMessenger.d.ts +2 -2
  26. package/dist/commonjs/lib/core/messenger/index.js +2 -2
  27. package/dist/commonjs/lib/core/messenger/ipc.d.ts +5 -3
  28. package/dist/commonjs/lib/core/messenger/ipc.js +23 -17
  29. package/dist/commonjs/lib/core/messenger/local.d.ts +2 -2
  30. package/dist/commonjs/lib/core/messenger/local.js +14 -11
  31. package/dist/commonjs/lib/egg.d.ts +20 -15
  32. package/dist/commonjs/lib/egg.js +15 -11
  33. package/dist/commonjs/lib/egg.types.d.ts +6 -0
  34. package/dist/commonjs/lib/egg.types.js +3 -0
  35. package/dist/commonjs/lib/type.d.ts +4 -7
  36. package/dist/commonjs/lib/utils.d.ts +2 -0
  37. package/dist/commonjs/lib/utils.js +21 -0
  38. package/dist/esm/app/extend/context.d.ts +154 -2
  39. package/dist/esm/app/extend/context.js +82 -85
  40. package/dist/esm/app/extend/context.types.d.ts +16 -0
  41. package/dist/esm/app/extend/context.types.js +2 -0
  42. package/dist/esm/app/extend/helper.d.ts +37 -0
  43. package/dist/esm/app/extend/helper.js +43 -0
  44. package/dist/esm/app/extend/request.d.ts +128 -0
  45. package/dist/esm/app/extend/request.js +264 -0
  46. package/dist/esm/app/extend/response.d.ts +25 -0
  47. package/dist/esm/app/extend/response.js +34 -0
  48. package/dist/esm/app/middleware/meta.d.ts +2 -3
  49. package/dist/esm/app/middleware/meta.js +1 -1
  50. package/dist/esm/app/middleware/notfound.d.ts +2 -3
  51. package/dist/esm/app/middleware/notfound.js +1 -1
  52. package/dist/esm/app/middleware/site_file.d.ts +4 -2
  53. package/dist/esm/app/middleware/site_file.js +2 -3
  54. package/dist/esm/config/config.default.js +3 -2
  55. package/dist/esm/lib/application.d.ts +5 -12
  56. package/dist/esm/lib/application.js +9 -20
  57. package/dist/esm/lib/core/base_context_class.d.ts +2 -2
  58. package/dist/esm/lib/core/context_httpclient.d.ts +3 -3
  59. package/dist/esm/lib/core/context_httpclient.js +1 -1
  60. package/dist/esm/lib/core/httpclient.d.ts +2 -3
  61. package/dist/esm/lib/core/httpclient.js +2 -2
  62. package/dist/esm/lib/core/messenger/IMessenger.d.ts +2 -2
  63. package/dist/esm/lib/core/messenger/index.js +2 -2
  64. package/dist/esm/lib/core/messenger/ipc.d.ts +5 -3
  65. package/dist/esm/lib/core/messenger/ipc.js +23 -17
  66. package/dist/esm/lib/core/messenger/local.d.ts +2 -2
  67. package/dist/esm/lib/core/messenger/local.js +14 -11
  68. package/dist/esm/lib/egg.d.ts +20 -15
  69. package/dist/esm/lib/egg.js +13 -12
  70. package/dist/esm/lib/egg.types.d.ts +6 -0
  71. package/dist/esm/lib/egg.types.js +2 -0
  72. package/dist/esm/lib/type.d.ts +4 -7
  73. package/dist/esm/lib/utils.d.ts +2 -0
  74. package/dist/esm/lib/utils.js +14 -0
  75. package/dist/package.json +1 -1
  76. package/package.json +16 -13
  77. package/src/app/extend/context.ts +124 -102
  78. package/src/app/extend/context.types.ts +24 -0
  79. package/src/app/extend/{helper.js → helper.ts} +14 -13
  80. package/src/app/extend/{request.js → request.ts} +81 -79
  81. package/src/app/extend/response.ts +36 -0
  82. package/src/app/middleware/meta.ts +2 -3
  83. package/src/app/middleware/notfound.ts +2 -3
  84. package/src/app/middleware/site_file.ts +4 -6
  85. package/src/config/config.default.ts +2 -1
  86. package/src/lib/application.ts +14 -21
  87. package/src/lib/core/base_context_class.ts +2 -2
  88. package/src/lib/core/context_httpclient.ts +3 -3
  89. package/src/lib/core/httpclient.ts +4 -5
  90. package/src/lib/core/messenger/IMessenger.ts +2 -2
  91. package/src/lib/core/messenger/index.ts +1 -1
  92. package/src/lib/core/messenger/ipc.ts +23 -17
  93. package/src/lib/core/messenger/local.ts +12 -10
  94. package/src/lib/egg.ts +47 -24
  95. package/src/lib/egg.types.ts +6 -0
  96. package/src/lib/type.ts +6 -13
  97. package/src/lib/utils.ts +16 -0
  98. package/src/app/extend/response.js +0 -101
@@ -0,0 +1,264 @@
1
+ import querystring from 'node:querystring';
2
+ import { Request as EggCoreRequest } from '@eggjs/core';
3
+ const QUERY_CACHE = Symbol('request query cache');
4
+ const QUERIES_CACHE = Symbol('request queries cache');
5
+ const PROTOCOL = Symbol('request protocol');
6
+ const HOST = Symbol('request host');
7
+ const IPS = Symbol('request ips');
8
+ const RE_ARRAY_KEY = /[^\[\]]+\[\]$/;
9
+ export default class Request extends EggCoreRequest {
10
+ /**
11
+ * Parse the "Host" header field host
12
+ * and support X-Forwarded-Host when a
13
+ * proxy is enabled.
14
+ * @member {String} Request#host
15
+ * @example
16
+ * ip + port
17
+ * ```js
18
+ * this.request.host
19
+ * => '127.0.0.1:7001'
20
+ * ```
21
+ * or domain
22
+ * ```js
23
+ * this.request.host
24
+ * => 'demo.eggjs.org'
25
+ * ```
26
+ */
27
+ get host() {
28
+ let host = this[HOST];
29
+ if (host) {
30
+ return host;
31
+ }
32
+ if (this.app.config.proxy) {
33
+ host = getFromHeaders(this, this.app.config.hostHeaders);
34
+ }
35
+ host = host || this.get('host') || '';
36
+ this[HOST] = host = host.split(',')[0].trim();
37
+ return host;
38
+ }
39
+ /**
40
+ * @member {String} Request#protocol
41
+ * @example
42
+ * ```js
43
+ * this.request.protocol
44
+ * => 'https'
45
+ * ```
46
+ */
47
+ get protocol() {
48
+ let protocol = this[PROTOCOL];
49
+ if (protocol) {
50
+ return protocol;
51
+ }
52
+ // detect encrypted socket
53
+ if (this.socket?.encrypted) {
54
+ this[PROTOCOL] = protocol = 'https';
55
+ return protocol;
56
+ }
57
+ // get from headers specified in `app.config.protocolHeaders`
58
+ if (this.app.config.proxy) {
59
+ const proto = getFromHeaders(this, this.app.config.protocolHeaders);
60
+ if (proto) {
61
+ this[PROTOCOL] = protocol = proto.split(/\s*,\s*/)[0];
62
+ return protocol;
63
+ }
64
+ }
65
+ // use protocol specified in `app.config.protocol`
66
+ this[PROTOCOL] = protocol = this.app.config.protocol || 'http';
67
+ return protocol;
68
+ }
69
+ /**
70
+ * Get all pass through ip addresses from the request.
71
+ * Enable only on `app.config.proxy = true`
72
+ *
73
+ * @member {Array} Request#ips
74
+ * @example
75
+ * ```js
76
+ * this.request.ips
77
+ * => ['100.23.1.2', '201.10.10.2']
78
+ * ```
79
+ */
80
+ get ips() {
81
+ let ips = this[IPS];
82
+ if (ips) {
83
+ return ips;
84
+ }
85
+ // return empty array when proxy=false
86
+ if (!this.app.config.proxy) {
87
+ this[IPS] = ips = [];
88
+ return ips;
89
+ }
90
+ const val = getFromHeaders(this, this.app.config.ipHeaders);
91
+ this[IPS] = ips = val ? val.split(/\s*,\s*/) : [];
92
+ let maxIpsCount = this.app.config.maxIpsCount;
93
+ // Compatible with maxProxyCount logic (previous logic is wrong, only for compatibility with legacy logic)
94
+ if (!maxIpsCount && this.app.config.maxProxyCount) {
95
+ maxIpsCount = this.app.config.maxProxyCount + 1;
96
+ }
97
+ if (maxIpsCount > 0) {
98
+ // if maxIpsCount present, only keep `maxIpsCount` ips
99
+ // [ illegalIp, clientRealIp, proxyIp1, proxyIp2 ...]
100
+ this[IPS] = ips = ips.slice(-maxIpsCount);
101
+ }
102
+ return ips;
103
+ }
104
+ /**
105
+ * Get the request remote IPv4 address
106
+ * @member {String} Request#ip
107
+ * @return {String} IPv4 address
108
+ * @example
109
+ * ```js
110
+ * this.request.ip
111
+ * => '127.0.0.1'
112
+ * => '111.10.2.1'
113
+ * ```
114
+ */
115
+ get ip() {
116
+ if (this._ip) {
117
+ return this._ip;
118
+ }
119
+ const ip = this.ips[0] ?? this.socket.remoteAddress;
120
+ // will be '::ffff:x.x.x.x', should convert to standard IPv4 format
121
+ // https://zh.wikipedia.org/wiki/IPv6
122
+ this._ip = ip && ip.startsWith('::ffff:') ? ip.substring(7) : ip;
123
+ return this._ip;
124
+ }
125
+ /**
126
+ * Set the request remote IPv4 address
127
+ * @member {String} Request#ip
128
+ * @param {String} ip - IPv4 address
129
+ * @example
130
+ * ```js
131
+ * this.request.ip
132
+ * => '127.0.0.1'
133
+ * => '111.10.2.1'
134
+ * ```
135
+ */
136
+ set ip(ip) {
137
+ this._ip = ip;
138
+ }
139
+ /**
140
+ * detect if response should be json
141
+ * 1. url path ends with `.json`
142
+ * 2. response type is set to json
143
+ * 3. detect by request accept header
144
+ *
145
+ * @member {Boolean} Request#acceptJSON
146
+ * @since 1.0.0
147
+ */
148
+ get acceptJSON() {
149
+ if (this.path.endsWith('.json'))
150
+ return true;
151
+ if (this.response.type && this.response.type.indexOf('json') >= 0)
152
+ return true;
153
+ if (this.accepts('html', 'text', 'json') === 'json')
154
+ return true;
155
+ return false;
156
+ }
157
+ // How to read query safely
158
+ // https://github.com/koajs/qs/issues/5
159
+ _customQuery(cacheName, filter) {
160
+ const str = this.querystring || '';
161
+ let c = this[cacheName];
162
+ if (!c) {
163
+ c = this[cacheName] = {};
164
+ }
165
+ let cacheQuery = c[str];
166
+ if (!cacheQuery) {
167
+ cacheQuery = c[str] = {};
168
+ const isQueries = cacheName === QUERIES_CACHE;
169
+ // `querystring.parse` CANNOT parse something like `a[foo]=1&a[bar]=2`
170
+ const query = str ? querystring.parse(str) : {};
171
+ for (const key in query) {
172
+ if (!key) {
173
+ // key is '', like `a=b&`
174
+ continue;
175
+ }
176
+ const value = filter(query[key]);
177
+ cacheQuery[key] = value;
178
+ if (isQueries && RE_ARRAY_KEY.test(key)) {
179
+ // `this.queries['key'] => this.queries['key[]']` is compatibly supported
180
+ const subKey = key.substring(0, key.length - 2);
181
+ if (!cacheQuery[subKey]) {
182
+ cacheQuery[subKey] = value;
183
+ }
184
+ }
185
+ }
186
+ }
187
+ return cacheQuery;
188
+ }
189
+ /**
190
+ * get params pass by querystring, all values are of string type.
191
+ * @member {Object} Request#query
192
+ * @example
193
+ * ```js
194
+ * GET http://127.0.0.1:7001?name=Foo&age=20&age=21
195
+ * this.query
196
+ * => { 'name': 'Foo', 'age': '20' }
197
+ *
198
+ * GET http://127.0.0.1:7001?a=b&a=c&o[foo]=bar&b[]=1&b[]=2&e=val
199
+ * this.query
200
+ * =>
201
+ * {
202
+ * "a": "b",
203
+ * "o[foo]": "bar",
204
+ * "b[]": "1",
205
+ * "e": "val"
206
+ * }
207
+ * ```
208
+ */
209
+ get query() {
210
+ return this._customQuery(QUERY_CACHE, firstValue);
211
+ }
212
+ /**
213
+ * get params pass by querystring, all value are Array type. {@link Request#query}
214
+ * @member {Array} Request#queries
215
+ * @example
216
+ * ```js
217
+ * GET http://127.0.0.1:7001?a=b&a=c&o[foo]=bar&b[]=1&b[]=2&e=val
218
+ * this.queries
219
+ * =>
220
+ * {
221
+ * "a": ["b", "c"],
222
+ * "o[foo]": ["bar"],
223
+ * "b[]": ["1", "2"],
224
+ * "e": ["val"]
225
+ * }
226
+ * ```
227
+ */
228
+ get queries() {
229
+ return this._customQuery(QUERIES_CACHE, arrayValue);
230
+ }
231
+ /**
232
+ * Set query-string as an object.
233
+ *
234
+ * @function Request#query
235
+ * @param {Object} obj set querystring and query object for request.
236
+ */
237
+ set query(obj) {
238
+ this.querystring = querystring.stringify(obj);
239
+ }
240
+ }
241
+ function firstValue(value) {
242
+ if (Array.isArray(value)) {
243
+ value = value[0];
244
+ }
245
+ return value;
246
+ }
247
+ function arrayValue(value) {
248
+ if (!Array.isArray(value)) {
249
+ value = [value];
250
+ }
251
+ return value;
252
+ }
253
+ function getFromHeaders(request, names) {
254
+ if (!names)
255
+ return '';
256
+ const fields = names.split(/\s*,\s*/);
257
+ for (const name of fields) {
258
+ const value = request.get(name);
259
+ if (value)
260
+ return value;
261
+ }
262
+ return '';
263
+ }
264
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvZXh0ZW5kL3JlcXVlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxXQUFXLE1BQU0sa0JBQWtCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sSUFBSSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFLeEQsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFDbEQsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7QUFDdEQsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFDNUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQ3BDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUNsQyxNQUFNLFlBQVksR0FBRyxlQUFlLENBQUM7QUFFckMsTUFBTSxDQUFDLE9BQU8sT0FBTyxPQUFRLFNBQVEsY0FBYztJQUtqRDs7Ozs7Ozs7Ozs7Ozs7OztPQWdCRztJQUNILElBQUksSUFBSTtRQUNOLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQXVCLENBQUM7UUFDNUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDMUIsSUFBSSxHQUFHLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUNELElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLElBQUksQ0FB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
@@ -0,0 +1,25 @@
1
+ import { Response as KoaResponse } from '@eggjs/core';
2
+ export default class Response extends KoaResponse {
3
+ /**
4
+ * Get or set a real status code.
5
+ *
6
+ * e.g.: Using 302 status redirect to the global error page
7
+ * instead of show current 500 status page.
8
+ * And access log should save 500 not 302,
9
+ * then the `realStatus` can help us find out the real status code.
10
+ * @member {Number} Response#realStatus
11
+ * @return {Number} The status code to be set.
12
+ */
13
+ get realStatus(): number;
14
+ /**
15
+ * Set a real status code.
16
+ *
17
+ * e.g.: Using 302 status redirect to the global error page
18
+ * instead of show current 500 status page.
19
+ * And access log should save 500 not 302,
20
+ * then the `realStatus` can help us find out the real status code.
21
+ * @member {Number} Response#realStatus
22
+ * @param {Number} status The status code to be set.
23
+ */
24
+ set realStatus(status: number);
25
+ }
@@ -0,0 +1,34 @@
1
+ import { Response as KoaResponse } from '@eggjs/core';
2
+ const REAL_STATUS = Symbol('response realStatus');
3
+ export default class Response extends KoaResponse {
4
+ /**
5
+ * Get or set a real status code.
6
+ *
7
+ * e.g.: Using 302 status redirect to the global error page
8
+ * instead of show current 500 status page.
9
+ * And access log should save 500 not 302,
10
+ * then the `realStatus` can help us find out the real status code.
11
+ * @member {Number} Response#realStatus
12
+ * @return {Number} The status code to be set.
13
+ */
14
+ get realStatus() {
15
+ if (this[REAL_STATUS]) {
16
+ return this[REAL_STATUS];
17
+ }
18
+ return this.status;
19
+ }
20
+ /**
21
+ * Set a real status code.
22
+ *
23
+ * e.g.: Using 302 status redirect to the global error page
24
+ * instead of show current 500 status page.
25
+ * And access log should save 500 not 302,
26
+ * then the `realStatus` can help us find out the real status code.
27
+ * @member {Number} Response#realStatus
28
+ * @param {Number} status The status code to be set.
29
+ */
30
+ set realStatus(status) {
31
+ this[REAL_STATUS] = status;
32
+ }
33
+ }
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL2V4dGVuZC9yZXNwb25zZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxJQUFJLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV0RCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUVsRCxNQUFNLENBQUMsT0FBTyxPQUFPLFFBQVMsU0FBUSxXQUFXO0lBQy9DOzs7Ozs7Ozs7T0FTRztJQUNILElBQUksVUFBVTtRQUNaLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDdEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFXLENBQUM7UUFDckMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsSUFBSSxVQUFVLENBQUMsTUFBYztRQUMzQixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzdCLENBQUM7Q0FDRiJ9
@@ -1,11 +1,10 @@
1
1
  /**
2
2
  * meta middleware, should be the first middleware
3
3
  */
4
- import type { EggCoreContext } from '@eggjs/core';
5
- import type { Next } from '../../lib/type.js';
4
+ import type { ContextDelegation, Next } from '../../lib/egg.js';
6
5
  export interface MetaMiddlewareOptions {
7
6
  enable: boolean;
8
7
  logging: boolean;
9
8
  }
10
- declare const _default: (options: MetaMiddlewareOptions) => (ctx: EggCoreContext, next: Next) => Promise<void>;
9
+ declare const _default: (options: MetaMiddlewareOptions) => (ctx: ContextDelegation, next: Next) => Promise<void>;
11
10
  export default _default;
@@ -17,4 +17,4 @@ export default (options) => {
17
17
  }
18
18
  };
19
19
  };
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvbWlkZGxld2FyZS9tZXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBUzlDLGVBQWUsQ0FBQyxPQUE4QixFQUFFLEVBQUU7SUFDaEQsT0FBTyxLQUFLLFVBQVUsSUFBSSxDQUFDLEdBQW1CLEVBQUUsSUFBVTtRQUN4RCxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNwQixHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxrREFBa0QsRUFDcEUsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDeEMsQ0FBQztRQUNELE1BQU0sSUFBSSxFQUFFLENBQUM7UUFDYiw2QkFBNkI7UUFDN0IsSUFBSSxHQUFHLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUM3QixHQUFHLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ2xHLENBQUM7YUFBTSxDQUFDO1lBQ04sR0FBRyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwRCxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIn0=
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvbWlkZGxld2FyZS9tZXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBUTlDLGVBQWUsQ0FBQyxPQUE4QixFQUFFLEVBQUU7SUFDaEQsT0FBTyxLQUFLLFVBQVUsSUFBSSxDQUFDLEdBQXNCLEVBQUUsSUFBVTtRQUMzRCxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNwQixHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxrREFBa0QsRUFDcEUsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDeEMsQ0FBQztRQUNELE1BQU0sSUFBSSxFQUFFLENBQUM7UUFDYiw2QkFBNkI7UUFDN0IsSUFBSSxHQUFHLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUM3QixHQUFHLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ2xHLENBQUM7YUFBTSxDQUFDO1lBQ04sR0FBRyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwRCxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIn0=
@@ -1,8 +1,7 @@
1
- import type { EggCoreContext } from '@eggjs/core';
2
- import type { Next } from '../../lib/type.js';
1
+ import type { Next, ContextDelegation } from '../../lib/egg.js';
3
2
  export interface NotFoundMiddlewareOptions {
4
3
  enable: boolean;
5
4
  pageUrl: string;
6
5
  }
7
- declare const _default: (options: NotFoundMiddlewareOptions) => (ctx: EggCoreContext, next: Next) => Promise<void>;
6
+ declare const _default: (options: NotFoundMiddlewareOptions) => (ctx: ContextDelegation, next: Next) => Promise<void>;
8
7
  export default _default;
@@ -26,4 +26,4 @@ export default (options) => {
26
26
  ctx.body = notFoundHtml;
27
27
  };
28
28
  };
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90Zm91bmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL21pZGRsZXdhcmUvbm90Zm91bmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsZUFBZSxDQUFDLE9BQWtDLEVBQUUsRUFBRTtJQUNwRCxPQUFPLEtBQUssVUFBVSxRQUFRLENBQUMsR0FBbUIsRUFBRSxJQUFVO1FBQzVELE1BQU0sSUFBSSxFQUFFLENBQUM7UUFFYixJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNuQyxPQUFPO1FBQ1QsQ0FBQztRQUVELHNEQUFzRDtRQUN0RCxHQUFHLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUVqQixJQUFJLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNuQixHQUFHLENBQUMsSUFBSSxHQUFHO2dCQUNULE9BQU8sRUFBRSxXQUFXO2FBQ3JCLENBQUM7WUFDRixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sWUFBWSxHQUFHLHdCQUF3QixDQUFDO1FBRTlDLG9DQUFvQztRQUNwQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEQsR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLFlBQVkseUNBQXlDLE9BQU8sQ0FBQyxPQUFPLHFDQUFxQyxDQUFDO1lBQ3hILE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEIsR0FBRyxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUM7WUFDckIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDOUIsT0FBTztRQUNULENBQUM7UUFDRCxHQUFHLENBQUMsSUFBSSxHQUFHLFlBQVksQ0FBQztJQUMxQixDQUFDLENBQUM7QUFDSixDQUFDLENBQUMifQ==
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90Zm91bmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL21pZGRsZXdhcmUvbm90Zm91bmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsZUFBZSxDQUFDLE9BQWtDLEVBQUUsRUFBRTtJQUNwRCxPQUFPLEtBQUssVUFBVSxRQUFRLENBQUMsR0FBc0IsRUFBRSxJQUFVO1FBQy9ELE1BQU0sSUFBSSxFQUFFLENBQUM7UUFFYixJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNuQyxPQUFPO1FBQ1QsQ0FBQztRQUVELHNEQUFzRDtRQUN0RCxHQUFHLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUVqQixJQUFJLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNuQixHQUFHLENBQUMsSUFBSSxHQUFHO2dCQUNULE9BQU8sRUFBRSxXQUFXO2FBQ3JCLENBQUM7WUFDRixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sWUFBWSxHQUFHLHdCQUF3QixDQUFDO1FBRTlDLG9DQUFvQztRQUNwQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEQsR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLFlBQVkseUNBQXlDLE9BQU8sQ0FBQyxPQUFPLHFDQUFxQyxDQUFDO1lBQ3hILE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEIsR0FBRyxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUM7WUFDckIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDOUIsT0FBTztRQUNULENBQUM7UUFDRCxHQUFHLENBQUMsSUFBSSxHQUFHLFlBQVksQ0FBQztJQUMxQixDQUFDLENBQUM7QUFDSixDQUFDLENBQUMifQ==
@@ -1,7 +1,9 @@
1
- import type { EggCoreContext } from '@eggjs/core';
2
- export type SiteFileContentFun = (ctx: EggCoreContext) => Promise<Buffer | string>;
1
+ import type { Next, ContextDelegation } from '../../lib/egg.js';
2
+ export type SiteFileContentFun = (ctx: ContextDelegation) => Promise<Buffer | string>;
3
3
  export interface SiteFileMiddlewareOptions {
4
4
  enable: boolean;
5
5
  cacheControl: string;
6
6
  [key: string]: string | Buffer | boolean | SiteFileContentFun | URL;
7
7
  }
8
+ declare const _default: (options: SiteFileMiddlewareOptions) => (ctx: ContextDelegation, next: Next) => Promise<void>;
9
+ export default _default;
@@ -2,12 +2,11 @@ import path from 'node:path';
2
2
  import { fileURLToPath } from 'node:url';
3
3
  import { readFile } from 'node:fs/promises';
4
4
  const BUFFER_CACHE = Symbol('siteFile URL buffer cache');
5
- module.exports = (options) => {
5
+ export default (options) => {
6
6
  return async function siteFile(ctx, next) {
7
7
  if (ctx.method !== 'HEAD' && ctx.method !== 'GET') {
8
8
  return next();
9
9
  }
10
- /* istanbul ignore if */
11
10
  if (ctx.path[0] !== '/') {
12
11
  return next();
13
12
  }
@@ -51,4 +50,4 @@ module.exports = (options) => {
51
50
  return next();
52
51
  };
53
52
  };
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l0ZV9maWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9taWRkbGV3YXJlL3NpdGVfZmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFDN0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFZNUMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLDJCQUEyQixDQUFDLENBQUM7QUFFekQsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLE9BQWtDLEVBQUUsRUFBRTtJQUN0RCxPQUFPLEtBQUssVUFBVSxRQUFRLENBQUMsR0FBbUIsRUFBRSxJQUFVO1FBQzVELElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxNQUFNLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUNsRCxPQUFPLElBQUksRUFBRSxDQUFDO1FBQ2hCLENBQUM7UUFDRCx3QkFBd0I7UUFDeEIsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDaEIsQ0FBQztRQUVELElBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUNoQixDQUFDO1FBRUQsb0hBQW9IO1FBQ3BILHNCQUFzQjtRQUN0QixJQUFJLE9BQU8sT0FBTyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ2xDLE9BQU8sR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBQ0QsaUJBQWlCO1FBQ2pCLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDaEMsT0FBTyxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFFRCxNQUFNO1FBQ04sSUFBSSxPQUFPLFlBQVksR0FBRyxFQUFFLENBQUM7WUFDM0IsSUFBSSxPQUFPLENBQUMsUUFBUSxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUNqQyxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BDLENBQUM7WUFDRCxtQkFBbUI7WUFDbkIsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFXLENBQUM7WUFDMUQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNaLE1BQU0sR0FBRyxNQUFNLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDaEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzdDLENBQUM7WUFDRCxHQUFHLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDL0MsR0FBRyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7WUFDbkIsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQyxPQUFPO1FBQ1QsQ0FBQztRQUVELDhCQUE4QjtRQUM5QixvQkFBb0I7UUFDcEIsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDN0IsR0FBRyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQy9DLEdBQUcsQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO1lBQ25CLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEMsT0FBTztRQUNULENBQUM7UUFFRCxPQUFPLElBQUksRUFBRSxDQUFDO0lBQ2hCLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyJ9
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l0ZV9maWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9taWRkbGV3YXJlL3NpdGVfZmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFDN0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFXNUMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLDJCQUEyQixDQUFDLENBQUM7QUFFekQsZUFBZSxDQUFDLE9BQWtDLEVBQUUsRUFBRTtJQUNwRCxPQUFPLEtBQUssVUFBVSxRQUFRLENBQUMsR0FBc0IsRUFBRSxJQUFVO1FBQy9ELElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxNQUFNLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUNsRCxPQUFPLElBQUksRUFBRSxDQUFDO1FBQ2hCLENBQUM7UUFDRCxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDeEIsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUNoQixDQUFDO1FBRUQsSUFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixPQUFPLElBQUksRUFBRSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxvSEFBb0g7UUFDcEgsc0JBQXNCO1FBQ3RCLElBQUksT0FBTyxPQUFPLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDbEMsT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFDRCxpQkFBaUI7UUFDakIsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNoQyxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0IsQ0FBQztRQUVELE1BQU07UUFDTixJQUFJLE9BQU8sWUFBWSxHQUFHLEVBQUUsQ0FBQztZQUMzQixJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFLENBQUM7Z0JBQ2pDLE9BQU8sR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEMsQ0FBQztZQUNELG1CQUFtQjtZQUNuQixJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQVcsQ0FBQztZQUMxRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ1osTUFBTSxHQUFHLE1BQU0sUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUNoRCxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDN0MsQ0FBQztZQUNELEdBQUcsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMvQyxHQUFHLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQztZQUNuQixHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xDLE9BQU87UUFDVCxDQUFDO1FBRUQsOEJBQThCO1FBQzlCLG9CQUFvQjtRQUNwQixJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM3QixHQUFHLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDL0MsR0FBRyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7WUFDbkIsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQyxPQUFPO1FBQ1QsQ0FBQztRQUVELE9BQU8sSUFBSSxFQUFFLENBQUM7SUFDaEIsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIn0=
@@ -1,5 +1,6 @@
1
1
  import path from 'node:path';
2
2
  import { pathToFileURL } from 'node:url';
3
+ import { getSourceFile } from '../lib/utils.js';
3
4
  /**
4
5
  * The configuration of egg application, can be access by `app.config`
5
6
  * @class Config
@@ -181,7 +182,7 @@ export default (appInfo) => {
181
182
  */
182
183
  config.siteFile = {
183
184
  enable: true,
184
- '/favicon.ico': pathToFileURL(path.join(__dirname, 'favicon.png')),
185
+ '/favicon.ico': pathToFileURL(getSourceFile('config/favicon.png')),
185
186
  // default cache in 30 days
186
187
  cacheControl: 'public, max-age=2592000',
187
188
  };
@@ -370,4 +371,4 @@ export default (appInfo) => {
370
371
  config.onClientError = undefined;
371
372
  return config;
372
373
  };
373
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmRlZmF1bHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29uZmlnL2NvbmZpZy5kZWZhdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBSXpDOzs7O0dBSUc7QUFDSCxlQUFlLENBQUMsT0FBbUIsRUFBRSxFQUFFO0lBQ3JDLE1BQU0sTUFBTSxHQUEwQjtRQUNwQzs7Ozs7V0FLRztRQUNILEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRztRQUVoQjs7Ozs7V0FLRztRQUNILElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtRQUVsQjs7Ozs7O1dBTUc7UUFDSCxJQUFJLEVBQUUsRUFBRTtRQUVSOzs7Ozs7V0FNRztRQUNILE9BQU8sRUFBRTtRQUNQLDBCQUEwQjtRQUMxQiwrQkFBK0I7U0FDaEM7UUFFRDs7Ozs7O1dBTUc7UUFDSCxLQUFLLEVBQUUsS0FBSztRQUVaOzs7Ozs7OztXQVFHO1FBQ0gsV0FBVyxFQUFFLENBQUM7UUFFZDs7Ozs7O1dBTUc7UUFDSCxhQUFhLEVBQUUsQ0FBQztRQUVoQjs7Ozs7O1dBTUc7UUFDSCxlQUFlLEVBQUUsbUJBQW1CO1FBRXBDOzs7Ozs7V0FNRztRQUNILFNBQVMsRUFBRSxpQkFBaUI7UUFFNUI7Ozs7OztXQU1HO1FBQ0gsV0FBVyxFQUFFLEVBQUU7UUFFZjs7Ozs7V0FLRztRQUNILEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRztRQUVoQjs7Ozs7V0FLRztRQUNILE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztRQUV4Qjs7Ozs7V0FLRztRQUNILElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtRQUVsQjs7Ozs7V0FLRztRQUNILE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDO1FBRXpDOzs7Ozs7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
374
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmRlZmF1bHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29uZmlnL2NvbmZpZy5kZWZhdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBR3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVoRDs7OztHQUlHO0FBQ0gsZUFBZSxDQUFDLE9BQW1CLEVBQUUsRUFBRTtJQUNyQyxNQUFNLE1BQU0sR0FBMEI7UUFDcEM7Ozs7O1dBS0c7UUFDSCxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUc7UUFFaEI7Ozs7O1dBS0c7UUFDSCxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7UUFFbEI7Ozs7OztXQU1HO1FBQ0gsSUFBSSxFQUFFLEVBQUU7UUFFUjs7Ozs7O1dBTUc7UUFDSCxPQUFPLEVBQUU7UUFDUCwwQkFBMEI7UUFDMUIsK0JBQStCO1NBQ2hDO1FBRUQ7Ozs7OztXQU1HO1FBQ0gsS0FBSyxFQUFFLEtBQUs7UUFFWjs7Ozs7Ozs7V0FRRztRQUNILFdBQVcsRUFBRSxDQUFDO1FBRWQ7Ozs7OztXQU1HO1FBQ0gsYUFBYSxFQUFFLENBQUM7UUFFaEI7Ozs7OztXQU1HO1FBQ0gsZUFBZSxFQUFFLG1CQUFtQjtRQUVwQzs7Ozs7O1dBTUc7UUFDSCxTQUFTLEVBQUUsaUJBQWlCO1FBRTVCOzs7Ozs7V0FNRztRQUNILFdBQVcsRUFBRSxFQUFFO1FBRWY7Ozs7O1dBS0c7UUFDSCxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUc7UUFFaEI7Ozs7O1dBS0c7UUFDSCxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87UUFFeEI7Ozs7O1dBS0c7UUFDSCxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7UUFFbEI7Ozs7O1dBS0c7UUFDSCxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQztRQUV6Qzs7Ozs7OztXQU9HO1FBQ0gsSUFBSSxFQUFFO1lBQ0osTUFBTSxFQUFFLElBQUksR0FBRyxDQUFDO2dCQUNkLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxXQUFXO2dCQUM5RSwyQ0FBMkM7Z0JBQzNDLFNBQVM7YUFDVixDQUFDO1lBQ0YsTUFBTSxFQUFFO2dCQUNOLHFGQUFxRjtnQkFDckYseUJBQXlCLEVBQUUsSUFBSTthQUNoQztTQUNGO1FBRUQ7Ozs7Ozs7V0FPRztRQUNILHNCQUFzQixFQUFFO1lBQ3RCLFVBQVUsRUFBRSxZQUFZO1lBQ3hCLFFBQVEsRUFBRSxVQUFVO1lBQ3BCLFFBQVEsRUFBRSxVQUFVO1lBQ3BCLFdBQVcsRUFBRSxZQUFZO1lBQ3pCLFVBQVUsRUFBRSxZQUFZO1NBQ3pCO0tBQ0YsQ0FBQztJQUVGOzs7Ozs7OztPQVFHO0lBQ0gsTUFBTSxDQUFDLFFBQVEsR0FBRztRQUNoQixNQUFNLEVBQUUsSUFBSTtRQUNaLE9BQU8sRUFBRSxFQUFFO0tBQ1osQ0FBQztJQUVGOzs7Ozs7Ozs7Ozs7T0FZRztJQUNILE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsTUFBTSxFQUFFLElBQUk7UUFDWixjQUFjLEVBQUUsYUFBYSxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ2xFLDJCQUEyQjtRQUMzQixZQUFZLEVBQUUseUJBQXlCO0tBQ3hDLENBQUM7SUFFRjs7Ozs7Ozs7Ozs7Ozs7O09BZUc7SUFDSCxNQUFNLENBQUMsVUFBVSxHQUFHO1FBQ2xCLE1BQU0sRUFBRSxJQUFJO1FBQ1osUUFBUSxFQUFFLE1BQU07UUFDaEIsU0FBUyxFQUFFLEtBQUs7UUFDaEIsU0FBUyxFQUFFLEtBQUs7UUFDaEIsU0FBUyxFQUFFLEtBQUs7UUFDaEIsTUFBTSxFQUFFLElBQUk7UUFDWixpRkFBaUY7UUFDakYsV0FBVyxFQUFFO1lBQ1gsVUFBVSxFQUFFLEdBQUc7WUFDZixLQUFLLEVBQUUsQ0FBQztZQUNSLGNBQWMsRUFBRSxJQUFJO1NBQ3JCO1FBQ0QsZ0JBQWdCLEVBQUUsT0FBTztRQUN6QixPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUc7WUFDZCxHQUFHLENBQUMsT0FBTyxHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sMkJBQTJCLENBQUM7WUFDeEQsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUN2Qix3REFBd0Q7Z0JBQ3hELEdBQUcsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO2dCQUNqQixJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNoQixHQUFHLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztnQkFDbkIsQ0FBQztZQUNILENBQUM7WUFDRCxNQUFNLEdBQUcsQ0FBQztRQUNaLENBQUM7S0FDRixDQUFDO0lBRUY7Ozs7Ozs7Ozs7Ozs7Ozs7T0FnQkc7SUFDSCxNQUFNLENBQUMsTUFBTSxHQUFHO1FBQ2QsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQztRQUNsRCxRQUFRLEVBQUUsTUFBTTtRQUNoQixHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUc7UUFDaEIsS0FBSyxFQUFFLE1BQU07UUFDYixZQUFZLEVBQUUsTUFBTTtRQUNwQix3QkFBd0IsRUFBRSxPQUFPLENBQUMsR0FBRyxLQUFLLE9BQU8sSUFBSSxPQUFPLENBQUMsR0FBRyxLQUFLLFVBQVU7UUFDL0UsVUFBVSxFQUFFLEtBQUs7UUFDakIsTUFBTSxFQUFFLElBQUk7UUFDWixVQUFVLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxVQUFVO1FBQ3JDLFdBQVcsRUFBRSxhQUFhO1FBQzFCLFlBQVksRUFBRSxlQUFlO1FBQzdCLFlBQVksRUFBRSxrQkFBa0I7UUFDaEMsVUFBVSxFQUFFLEVBQUU7UUFDZCxnQkFBZ0IsRUFBRSxLQUFLO1FBQ3ZCLHVCQUF1QixFQUFFLElBQUk7S0FDOUIsQ0FBQztJQUVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FrQkc7SUFDSCxNQUFNLENBQUMsVUFBVSxHQUFHO1FBQ2xCLE9BQU8sRUFBRTtZQUNQLE9BQU8sRUFBRSxJQUFJO1NBQ2Q7S0FDRixDQUFDO0lBRUY7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLElBQUksR0FBRztRQUNaLE1BQU0sRUFBRSxJQUFJO1FBQ1osT0FBTyxFQUFFLEtBQUs7S0FDZixDQUFDO0lBRUY7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLGNBQWMsR0FBRztRQUN0QixNQUFNO1FBQ04sVUFBVTtRQUNWLFVBQVU7UUFDVixZQUFZO1FBQ1osZ0JBQWdCO0tBQ2pCLENBQUM7SUFFRjs7O09BR0c7SUFDSCxNQUFNLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFFM0M7Ozs7Ozs7T0FPRztJQUNILE1BQU0sQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBRTVCOzs7Ozs7O09BT0c7SUFDSCxNQUFNLENBQUMsT0FBTyxHQUFHO1FBQ2YsTUFBTSxFQUFFO1lBQ04sSUFBSSxFQUFFLEVBQUU7WUFDUixJQUFJLEVBQUUsSUFBSTtZQUNWLFFBQVEsRUFBRSxFQUFFO1NBQ2I7S0FDRixDQUFDO0lBRUY7O09BRUc7SUFDSCxNQUFNLENBQUMsYUFBYSxHQUFHO1FBQ3JCLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLGVBQWUsRUFBRSxLQUFLO0tBQ3ZCLENBQUM7SUFFRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F1Qkc7SUFDSCxNQUFNLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQztJQUVqQyxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUMifQ==
@@ -1,16 +1,9 @@
1
1
  import http from 'node:http';
2
2
  import { Socket } from 'node:net';
3
- import { EggApplicationCore, EggContext, EggApplicationCoreOptions } from './egg.js';
3
+ import { EggApplicationCore, type EggApplicationCoreOptions, type ContextDelegation } from './egg.js';
4
4
  import { AppWorkerLoader } from './loader/index.js';
5
- import { BaseContextClass } from './core/base_context_class.js';
5
+ import Helper from '../app/extend/helper.js';
6
6
  declare const EGG_LOADER: unique symbol;
7
- /**
8
- * The Helper class which can be used as utility function.
9
- * We support developers to extend Helper through ${baseDir}/app/extend/helper.js ,
10
- * then you can use all method on `ctx.helper` that is a instance of Helper.
11
- */
12
- declare class HelperClass extends BaseContextClass {
13
- }
14
7
  /**
15
8
  * Singleton instance in App Worker, extend {@link EggApplicationCore}
16
9
  * @augments EggApplicationCore
@@ -22,7 +15,7 @@ export declare class Application extends EggApplicationCore {
22
15
  * reference to {@link Helper}
23
16
  * @member {Helper} Application#Helper
24
17
  */
25
- Helper: typeof HelperClass;
18
+ Helper: typeof Helper;
26
19
  /**
27
20
  * @class
28
21
  * @param {Object} options - see {@link EggApplicationCore}
@@ -49,14 +42,14 @@ export declare class Application extends EggApplicationCore {
49
42
  * @see Context#runInBackground
50
43
  * @param {Function} scope - the first args is an anonymous ctx
51
44
  */
52
- runInBackground(scope: (ctx: EggContext) => void): void;
45
+ runInBackground(scope: (ctx: ContextDelegation) => Promise<void>, req?: unknown): void;
53
46
  /**
54
47
  * Run async function in the anonymous context scope
55
48
  * @see Context#runInAnonymousContextScope
56
49
  * @param {Function} scope - the first args is an anonymous ctx, scope should be async function
57
50
  * @param {Request} [req] - if you want to mock request like querystring, you can pass an object to this function.
58
51
  */
59
- runInAnonymousContextScope(scope: (ctx: EggContext) => Promise<void>, req?: unknown): Promise<void>;
52
+ runInAnonymousContextScope(scope: (ctx: ContextDelegation) => Promise<void>, req?: unknown): Promise<void>;
60
53
  /**
61
54
  * secret key for Application
62
55
  * @member {String} Application#keys
@@ -1,14 +1,12 @@
1
1
  import path from 'node:path';
2
2
  import fs from 'node:fs';
3
3
  import http from 'node:http';
4
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
5
- // @ts-ignore
6
- import graceful from 'graceful';
4
+ import { graceful } from 'graceful';
7
5
  import { assign } from 'utility';
8
6
  import { utils as eggUtils } from '@eggjs/core';
9
- import { EggApplicationCore } from './egg.js';
7
+ import { EggApplicationCore, } from './egg.js';
10
8
  import { AppWorkerLoader } from './loader/index.js';
11
- import { BaseContextClass } from './core/base_context_class.js';
9
+ import Helper from '../app/extend/helper.js';
12
10
  const EGG_LOADER = Symbol.for('egg#loader');
13
11
  // client error => 400 Bad Request
14
12
  // Refs: https://nodejs.org/dist/latest-v8.x/docs/api/http.html#http_event_clienterror
@@ -28,13 +26,6 @@ function escapeHeaderValue(value) {
28
26
  // minimize the performance impact in the common case.
29
27
  return /[\r\n]/.test(value) ? value.replace(/[\r\n]+[ \t]*/g, '') : value;
30
28
  }
31
- /**
32
- * The Helper class which can be used as utility function.
33
- * We support developers to extend Helper through ${baseDir}/app/extend/helper.js ,
34
- * then you can use all method on `ctx.helper` that is a instance of Helper.
35
- */
36
- class HelperClass extends BaseContextClass {
37
- }
38
29
  /**
39
30
  * Singleton instance in App Worker, extend {@link EggApplicationCore}
40
31
  * @augments EggApplicationCore
@@ -47,7 +38,7 @@ export class Application extends EggApplicationCore {
47
38
  * reference to {@link Helper}
48
39
  * @member {Helper} Application#Helper
49
40
  */
50
- Helper = HelperClass;
41
+ Helper = Helper;
51
42
  /**
52
43
  * @class
53
44
  * @param {Object} options - see {@link EggApplicationCore}
@@ -67,8 +58,7 @@ export class Application extends EggApplicationCore {
67
58
  return AppWorkerLoader;
68
59
  }
69
60
  #responseRaw(socket, raw) {
70
- /* istanbul ignore next */
71
- if (!socket.writable)
61
+ if (!socket?.writable)
72
62
  return;
73
63
  if (!raw) {
74
64
  return socket.end(DEFAULT_BAD_REQUEST_RESPONSE);
@@ -130,7 +120,6 @@ export class Application extends EggApplicationCore {
130
120
  this.server = server;
131
121
  // set ignore code
132
122
  const serverGracefulIgnoreCode = this.config.serverGracefulIgnoreCode || [];
133
- /* istanbul ignore next */
134
123
  graceful({
135
124
  server: [server],
136
125
  error: (err, throwErrorCount) => {
@@ -200,13 +189,13 @@ export class Application extends EggApplicationCore {
200
189
  * @see Context#runInBackground
201
190
  * @param {Function} scope - the first args is an anonymous ctx
202
191
  */
203
- runInBackground(scope) {
204
- const ctx = this.createAnonymousContext();
192
+ runInBackground(scope, req) {
193
+ const ctx = this.createAnonymousContext(req);
205
194
  if (!scope.name) {
206
195
  Reflect.set(scope, '_name', eggUtils.getCalleeFromStack(true));
207
196
  }
208
197
  this.ctxStorage.run(ctx, () => {
209
- ctx.runInBackground(scope);
198
+ return ctx.runInBackground(scope);
210
199
  });
211
200
  }
212
201
  /**
@@ -271,4 +260,4 @@ export class Application extends EggApplicationCore {
271
260
  });
272
261
  }
273
262
  }
274
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2FwcGxpY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDekIsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBRTdCLDZEQUE2RDtBQUM3RCxhQUFhO0FBQ2IsT0FBTyxRQUFRLE1BQU0sVUFBVSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDakMsT0FBTyxFQUFFLEtBQUssSUFBSSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FBTyxFQUFFLGtCQUFrQixFQUF5QyxNQUFNLFVBQVUsQ0FBQztBQUNyRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFaEUsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUU1QyxrQ0FBa0M7QUFDbEMsc0ZBQXNGO0FBQ3RGLE1BQU0sd0JBQXdCLEdBQUc7Ozs7OztVQU12QixDQUFDO0FBQ1gsTUFBTSwrQkFBK0IsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLHdCQUF3QixDQUFDLENBQUM7QUFDcEYsTUFBTSw0QkFBNEIsR0FDaEMsK0NBQStDLCtCQUErQixFQUFFO0lBQ2hGLFdBQVcsd0JBQXdCLEVBQUUsQ0FBQztBQUV4QyxtRkFBbUY7QUFDbkYsU0FBUyxpQkFBaUIsQ0FBQyxLQUFhO0lBQ3RDLGlFQUFpRTtJQUNqRSxzREFBc0Q7SUFDdEQsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEVB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
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2FwcGxpY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDekIsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBRTdCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNqQyxPQUFPLEVBQUUsS0FBSyxJQUFJLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNoRCxPQUFPLEVBQ0wsa0JBQWtCLEdBR25CLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLE1BQU0sTUFBTSx5QkFBeUIsQ0FBQztBQUU3QyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBRTVDLGtDQUFrQztBQUNsQyxzRkFBc0Y7QUFDdEYsTUFBTSx3QkFBd0IsR0FBRzs7Ozs7O1VBTXZCLENBQUM7QUFDWCxNQUFNLCtCQUErQixHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsd0JBQXdCLENBQUMsQ0FBQztBQUNwRixNQUFNLDRCQUE0QixHQUNoQywrQ0FBK0MsK0JBQStCLEVBQUU7SUFDaEYsV0FBVyx3QkFBd0IsRUFBRSxDQUFDO0FBRXhDLG1GQUFtRjtBQUNuRixTQUFTLGlCQUFpQixDQUFDLEtBQWE7SUFDdEMsaUVBQWlFO0lBQ2pFLHNEQUFzRDtJQUN0RCxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtB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