h3 0.5.3 → 0.5.4
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/index.cjs +122 -122
- package/dist/index.mjs +123 -123
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -11,128 +11,6 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
|
11
11
|
|
|
12
12
|
const destr__default = /*#__PURE__*/_interopDefaultLegacy(destr);
|
|
13
13
|
|
|
14
|
-
const defineHandler = (handler) => handler;
|
|
15
|
-
const defineHandle = defineHandler;
|
|
16
|
-
const defineMiddleware = (middleware) => middleware;
|
|
17
|
-
function promisifyHandler(handler) {
|
|
18
|
-
return function(req, res) {
|
|
19
|
-
return callHandler(handler, req, res);
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
const promisifyHandle = promisifyHandler;
|
|
23
|
-
function callHandler(handler, req, res) {
|
|
24
|
-
const isMiddleware = handler.length > 2;
|
|
25
|
-
return new Promise((resolve, reject) => {
|
|
26
|
-
const next = (err) => {
|
|
27
|
-
if (isMiddleware) {
|
|
28
|
-
res.off("close", next);
|
|
29
|
-
res.off("error", next);
|
|
30
|
-
}
|
|
31
|
-
return err ? reject(err) : resolve(void 0);
|
|
32
|
-
};
|
|
33
|
-
try {
|
|
34
|
-
const returned = handler(req, res, next);
|
|
35
|
-
if (isMiddleware && returned === void 0) {
|
|
36
|
-
res.once("close", next);
|
|
37
|
-
res.once("error", next);
|
|
38
|
-
} else {
|
|
39
|
-
resolve(returned);
|
|
40
|
-
}
|
|
41
|
-
} catch (err) {
|
|
42
|
-
next(err);
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
function defineLazyHandler(handler, promisify) {
|
|
47
|
-
let _promise;
|
|
48
|
-
const resolve = () => {
|
|
49
|
-
if (!_promise) {
|
|
50
|
-
_promise = Promise.resolve(handler()).then((r) => promisify ? promisifyHandler(r.default || r) : r.default || r);
|
|
51
|
-
}
|
|
52
|
-
return _promise;
|
|
53
|
-
};
|
|
54
|
-
return function(req, res) {
|
|
55
|
-
return resolve().then((h) => h(req, res));
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
const lazyHandle = defineLazyHandler;
|
|
59
|
-
function useBase(base, handler) {
|
|
60
|
-
base = ufo.withoutTrailingSlash(base);
|
|
61
|
-
if (!base) {
|
|
62
|
-
return handler;
|
|
63
|
-
}
|
|
64
|
-
return function(req, res) {
|
|
65
|
-
req.originalUrl = req.originalUrl || req.url || "/";
|
|
66
|
-
req.url = ufo.withoutBase(req.url || "/", base);
|
|
67
|
-
return handler(req, res);
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
function defineEventHandler(handler) {
|
|
72
|
-
handler.__is_handler__ = true;
|
|
73
|
-
return handler;
|
|
74
|
-
}
|
|
75
|
-
function defineLazyEventHandler(factory) {
|
|
76
|
-
let _promise;
|
|
77
|
-
let _resolved;
|
|
78
|
-
const resolveHandler = () => {
|
|
79
|
-
if (_resolved) {
|
|
80
|
-
return Promise.resolve(_resolved);
|
|
81
|
-
}
|
|
82
|
-
if (!_promise) {
|
|
83
|
-
_promise = Promise.resolve(factory()).then((r) => {
|
|
84
|
-
const handler = r.default || r;
|
|
85
|
-
if (typeof handler !== "function") {
|
|
86
|
-
throw new TypeError("Invalid lazy handler result. It should be a function:", handler);
|
|
87
|
-
}
|
|
88
|
-
_resolved = toEventHandler(r.default || r);
|
|
89
|
-
return _resolved;
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
return _promise;
|
|
93
|
-
};
|
|
94
|
-
return defineEventHandler((event) => {
|
|
95
|
-
if (_resolved) {
|
|
96
|
-
return _resolved(event);
|
|
97
|
-
}
|
|
98
|
-
return resolveHandler().then((handler) => handler(event));
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
function isEventHandler(input) {
|
|
102
|
-
return "__is_handler__" in input;
|
|
103
|
-
}
|
|
104
|
-
function toEventHandler(handler) {
|
|
105
|
-
if (isEventHandler(handler)) {
|
|
106
|
-
return handler;
|
|
107
|
-
}
|
|
108
|
-
if (typeof handler !== "function") {
|
|
109
|
-
throw new TypeError("Invalid handler. It should be a function:", handler);
|
|
110
|
-
}
|
|
111
|
-
return defineEventHandler((event) => {
|
|
112
|
-
return callHandler(handler, event.req, event.res);
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
function createEvent(req, res) {
|
|
116
|
-
const event = {
|
|
117
|
-
__is_event__: true,
|
|
118
|
-
req,
|
|
119
|
-
res
|
|
120
|
-
};
|
|
121
|
-
event.event = event;
|
|
122
|
-
req.event = event;
|
|
123
|
-
req.req = req;
|
|
124
|
-
req.res = res;
|
|
125
|
-
res.event = event;
|
|
126
|
-
res.res = res;
|
|
127
|
-
res.req = res.req || {};
|
|
128
|
-
res.req.res = res;
|
|
129
|
-
res.req.req = req;
|
|
130
|
-
return event;
|
|
131
|
-
}
|
|
132
|
-
function isEvent(input) {
|
|
133
|
-
return "__is_event__" in input;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
14
|
function useQuery(event) {
|
|
137
15
|
return ufo.getQuery(event.req.url || "");
|
|
138
16
|
}
|
|
@@ -315,6 +193,128 @@ function isError(input) {
|
|
|
315
193
|
return input instanceof H3Error;
|
|
316
194
|
}
|
|
317
195
|
|
|
196
|
+
const defineHandler = (handler) => handler;
|
|
197
|
+
const defineHandle = defineHandler;
|
|
198
|
+
const defineMiddleware = (middleware) => middleware;
|
|
199
|
+
function promisifyHandler(handler) {
|
|
200
|
+
return function(req, res) {
|
|
201
|
+
return callHandler(handler, req, res);
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
const promisifyHandle = promisifyHandler;
|
|
205
|
+
function callHandler(handler, req, res) {
|
|
206
|
+
const isMiddleware = handler.length > 2;
|
|
207
|
+
return new Promise((resolve, reject) => {
|
|
208
|
+
const next = (err) => {
|
|
209
|
+
if (isMiddleware) {
|
|
210
|
+
res.off("close", next);
|
|
211
|
+
res.off("error", next);
|
|
212
|
+
}
|
|
213
|
+
return err ? reject(createError(err)) : resolve(void 0);
|
|
214
|
+
};
|
|
215
|
+
try {
|
|
216
|
+
const returned = handler(req, res, next);
|
|
217
|
+
if (isMiddleware && returned === void 0) {
|
|
218
|
+
res.once("close", next);
|
|
219
|
+
res.once("error", next);
|
|
220
|
+
} else {
|
|
221
|
+
resolve(returned);
|
|
222
|
+
}
|
|
223
|
+
} catch (err) {
|
|
224
|
+
next(err);
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
function defineLazyHandler(handler, promisify) {
|
|
229
|
+
let _promise;
|
|
230
|
+
const resolve = () => {
|
|
231
|
+
if (!_promise) {
|
|
232
|
+
_promise = Promise.resolve(handler()).then((r) => promisify ? promisifyHandler(r.default || r) : r.default || r);
|
|
233
|
+
}
|
|
234
|
+
return _promise;
|
|
235
|
+
};
|
|
236
|
+
return function(req, res) {
|
|
237
|
+
return resolve().then((h) => h(req, res));
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
const lazyHandle = defineLazyHandler;
|
|
241
|
+
function useBase(base, handler) {
|
|
242
|
+
base = ufo.withoutTrailingSlash(base);
|
|
243
|
+
if (!base) {
|
|
244
|
+
return handler;
|
|
245
|
+
}
|
|
246
|
+
return function(req, res) {
|
|
247
|
+
req.originalUrl = req.originalUrl || req.url || "/";
|
|
248
|
+
req.url = ufo.withoutBase(req.url || "/", base);
|
|
249
|
+
return handler(req, res);
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
function defineEventHandler(handler) {
|
|
254
|
+
handler.__is_handler__ = true;
|
|
255
|
+
return handler;
|
|
256
|
+
}
|
|
257
|
+
function defineLazyEventHandler(factory) {
|
|
258
|
+
let _promise;
|
|
259
|
+
let _resolved;
|
|
260
|
+
const resolveHandler = () => {
|
|
261
|
+
if (_resolved) {
|
|
262
|
+
return Promise.resolve(_resolved);
|
|
263
|
+
}
|
|
264
|
+
if (!_promise) {
|
|
265
|
+
_promise = Promise.resolve(factory()).then((r) => {
|
|
266
|
+
const handler = r.default || r;
|
|
267
|
+
if (typeof handler !== "function") {
|
|
268
|
+
throw new TypeError("Invalid lazy handler result. It should be a function:", handler);
|
|
269
|
+
}
|
|
270
|
+
_resolved = toEventHandler(r.default || r);
|
|
271
|
+
return _resolved;
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
return _promise;
|
|
275
|
+
};
|
|
276
|
+
return defineEventHandler((event) => {
|
|
277
|
+
if (_resolved) {
|
|
278
|
+
return _resolved(event);
|
|
279
|
+
}
|
|
280
|
+
return resolveHandler().then((handler) => handler(event));
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
function isEventHandler(input) {
|
|
284
|
+
return "__is_handler__" in input;
|
|
285
|
+
}
|
|
286
|
+
function toEventHandler(handler) {
|
|
287
|
+
if (isEventHandler(handler)) {
|
|
288
|
+
return handler;
|
|
289
|
+
}
|
|
290
|
+
if (typeof handler !== "function") {
|
|
291
|
+
throw new TypeError("Invalid handler. It should be a function:", handler);
|
|
292
|
+
}
|
|
293
|
+
return defineEventHandler((event) => {
|
|
294
|
+
return callHandler(handler, event.req, event.res);
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
function createEvent(req, res) {
|
|
298
|
+
const event = {
|
|
299
|
+
__is_event__: true,
|
|
300
|
+
req,
|
|
301
|
+
res
|
|
302
|
+
};
|
|
303
|
+
event.event = event;
|
|
304
|
+
req.event = event;
|
|
305
|
+
req.req = req;
|
|
306
|
+
req.res = res;
|
|
307
|
+
res.event = event;
|
|
308
|
+
res.res = res;
|
|
309
|
+
res.req = res.req || {};
|
|
310
|
+
res.req.res = res;
|
|
311
|
+
res.req.req = req;
|
|
312
|
+
return event;
|
|
313
|
+
}
|
|
314
|
+
function isEvent(input) {
|
|
315
|
+
return "__is_event__" in input;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
318
|
function createApp(options = {}) {
|
|
319
319
|
const stack = [];
|
|
320
320
|
const handler = createAppEventHandler(stack, options);
|
package/dist/index.mjs
CHANGED
|
@@ -1,130 +1,8 @@
|
|
|
1
|
-
import { withoutTrailingSlash, withoutBase
|
|
1
|
+
import { getQuery, withoutTrailingSlash, withoutBase } from 'ufo';
|
|
2
2
|
import { createRouter as createRouter$1 } from 'radix3';
|
|
3
3
|
import destr from 'destr';
|
|
4
4
|
import { parse, serialize } from 'cookie-es';
|
|
5
5
|
|
|
6
|
-
const defineHandler = (handler) => handler;
|
|
7
|
-
const defineHandle = defineHandler;
|
|
8
|
-
const defineMiddleware = (middleware) => middleware;
|
|
9
|
-
function promisifyHandler(handler) {
|
|
10
|
-
return function(req, res) {
|
|
11
|
-
return callHandler(handler, req, res);
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
const promisifyHandle = promisifyHandler;
|
|
15
|
-
function callHandler(handler, req, res) {
|
|
16
|
-
const isMiddleware = handler.length > 2;
|
|
17
|
-
return new Promise((resolve, reject) => {
|
|
18
|
-
const next = (err) => {
|
|
19
|
-
if (isMiddleware) {
|
|
20
|
-
res.off("close", next);
|
|
21
|
-
res.off("error", next);
|
|
22
|
-
}
|
|
23
|
-
return err ? reject(err) : resolve(void 0);
|
|
24
|
-
};
|
|
25
|
-
try {
|
|
26
|
-
const returned = handler(req, res, next);
|
|
27
|
-
if (isMiddleware && returned === void 0) {
|
|
28
|
-
res.once("close", next);
|
|
29
|
-
res.once("error", next);
|
|
30
|
-
} else {
|
|
31
|
-
resolve(returned);
|
|
32
|
-
}
|
|
33
|
-
} catch (err) {
|
|
34
|
-
next(err);
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
function defineLazyHandler(handler, promisify) {
|
|
39
|
-
let _promise;
|
|
40
|
-
const resolve = () => {
|
|
41
|
-
if (!_promise) {
|
|
42
|
-
_promise = Promise.resolve(handler()).then((r) => promisify ? promisifyHandler(r.default || r) : r.default || r);
|
|
43
|
-
}
|
|
44
|
-
return _promise;
|
|
45
|
-
};
|
|
46
|
-
return function(req, res) {
|
|
47
|
-
return resolve().then((h) => h(req, res));
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
const lazyHandle = defineLazyHandler;
|
|
51
|
-
function useBase(base, handler) {
|
|
52
|
-
base = withoutTrailingSlash(base);
|
|
53
|
-
if (!base) {
|
|
54
|
-
return handler;
|
|
55
|
-
}
|
|
56
|
-
return function(req, res) {
|
|
57
|
-
req.originalUrl = req.originalUrl || req.url || "/";
|
|
58
|
-
req.url = withoutBase(req.url || "/", base);
|
|
59
|
-
return handler(req, res);
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
function defineEventHandler(handler) {
|
|
64
|
-
handler.__is_handler__ = true;
|
|
65
|
-
return handler;
|
|
66
|
-
}
|
|
67
|
-
function defineLazyEventHandler(factory) {
|
|
68
|
-
let _promise;
|
|
69
|
-
let _resolved;
|
|
70
|
-
const resolveHandler = () => {
|
|
71
|
-
if (_resolved) {
|
|
72
|
-
return Promise.resolve(_resolved);
|
|
73
|
-
}
|
|
74
|
-
if (!_promise) {
|
|
75
|
-
_promise = Promise.resolve(factory()).then((r) => {
|
|
76
|
-
const handler = r.default || r;
|
|
77
|
-
if (typeof handler !== "function") {
|
|
78
|
-
throw new TypeError("Invalid lazy handler result. It should be a function:", handler);
|
|
79
|
-
}
|
|
80
|
-
_resolved = toEventHandler(r.default || r);
|
|
81
|
-
return _resolved;
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
return _promise;
|
|
85
|
-
};
|
|
86
|
-
return defineEventHandler((event) => {
|
|
87
|
-
if (_resolved) {
|
|
88
|
-
return _resolved(event);
|
|
89
|
-
}
|
|
90
|
-
return resolveHandler().then((handler) => handler(event));
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
function isEventHandler(input) {
|
|
94
|
-
return "__is_handler__" in input;
|
|
95
|
-
}
|
|
96
|
-
function toEventHandler(handler) {
|
|
97
|
-
if (isEventHandler(handler)) {
|
|
98
|
-
return handler;
|
|
99
|
-
}
|
|
100
|
-
if (typeof handler !== "function") {
|
|
101
|
-
throw new TypeError("Invalid handler. It should be a function:", handler);
|
|
102
|
-
}
|
|
103
|
-
return defineEventHandler((event) => {
|
|
104
|
-
return callHandler(handler, event.req, event.res);
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
function createEvent(req, res) {
|
|
108
|
-
const event = {
|
|
109
|
-
__is_event__: true,
|
|
110
|
-
req,
|
|
111
|
-
res
|
|
112
|
-
};
|
|
113
|
-
event.event = event;
|
|
114
|
-
req.event = event;
|
|
115
|
-
req.req = req;
|
|
116
|
-
req.res = res;
|
|
117
|
-
res.event = event;
|
|
118
|
-
res.res = res;
|
|
119
|
-
res.req = res.req || {};
|
|
120
|
-
res.req.res = res;
|
|
121
|
-
res.req.req = req;
|
|
122
|
-
return event;
|
|
123
|
-
}
|
|
124
|
-
function isEvent(input) {
|
|
125
|
-
return "__is_event__" in input;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
6
|
function useQuery(event) {
|
|
129
7
|
return getQuery(event.req.url || "");
|
|
130
8
|
}
|
|
@@ -307,6 +185,128 @@ function isError(input) {
|
|
|
307
185
|
return input instanceof H3Error;
|
|
308
186
|
}
|
|
309
187
|
|
|
188
|
+
const defineHandler = (handler) => handler;
|
|
189
|
+
const defineHandle = defineHandler;
|
|
190
|
+
const defineMiddleware = (middleware) => middleware;
|
|
191
|
+
function promisifyHandler(handler) {
|
|
192
|
+
return function(req, res) {
|
|
193
|
+
return callHandler(handler, req, res);
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
const promisifyHandle = promisifyHandler;
|
|
197
|
+
function callHandler(handler, req, res) {
|
|
198
|
+
const isMiddleware = handler.length > 2;
|
|
199
|
+
return new Promise((resolve, reject) => {
|
|
200
|
+
const next = (err) => {
|
|
201
|
+
if (isMiddleware) {
|
|
202
|
+
res.off("close", next);
|
|
203
|
+
res.off("error", next);
|
|
204
|
+
}
|
|
205
|
+
return err ? reject(createError(err)) : resolve(void 0);
|
|
206
|
+
};
|
|
207
|
+
try {
|
|
208
|
+
const returned = handler(req, res, next);
|
|
209
|
+
if (isMiddleware && returned === void 0) {
|
|
210
|
+
res.once("close", next);
|
|
211
|
+
res.once("error", next);
|
|
212
|
+
} else {
|
|
213
|
+
resolve(returned);
|
|
214
|
+
}
|
|
215
|
+
} catch (err) {
|
|
216
|
+
next(err);
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
function defineLazyHandler(handler, promisify) {
|
|
221
|
+
let _promise;
|
|
222
|
+
const resolve = () => {
|
|
223
|
+
if (!_promise) {
|
|
224
|
+
_promise = Promise.resolve(handler()).then((r) => promisify ? promisifyHandler(r.default || r) : r.default || r);
|
|
225
|
+
}
|
|
226
|
+
return _promise;
|
|
227
|
+
};
|
|
228
|
+
return function(req, res) {
|
|
229
|
+
return resolve().then((h) => h(req, res));
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
const lazyHandle = defineLazyHandler;
|
|
233
|
+
function useBase(base, handler) {
|
|
234
|
+
base = withoutTrailingSlash(base);
|
|
235
|
+
if (!base) {
|
|
236
|
+
return handler;
|
|
237
|
+
}
|
|
238
|
+
return function(req, res) {
|
|
239
|
+
req.originalUrl = req.originalUrl || req.url || "/";
|
|
240
|
+
req.url = withoutBase(req.url || "/", base);
|
|
241
|
+
return handler(req, res);
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
function defineEventHandler(handler) {
|
|
246
|
+
handler.__is_handler__ = true;
|
|
247
|
+
return handler;
|
|
248
|
+
}
|
|
249
|
+
function defineLazyEventHandler(factory) {
|
|
250
|
+
let _promise;
|
|
251
|
+
let _resolved;
|
|
252
|
+
const resolveHandler = () => {
|
|
253
|
+
if (_resolved) {
|
|
254
|
+
return Promise.resolve(_resolved);
|
|
255
|
+
}
|
|
256
|
+
if (!_promise) {
|
|
257
|
+
_promise = Promise.resolve(factory()).then((r) => {
|
|
258
|
+
const handler = r.default || r;
|
|
259
|
+
if (typeof handler !== "function") {
|
|
260
|
+
throw new TypeError("Invalid lazy handler result. It should be a function:", handler);
|
|
261
|
+
}
|
|
262
|
+
_resolved = toEventHandler(r.default || r);
|
|
263
|
+
return _resolved;
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
return _promise;
|
|
267
|
+
};
|
|
268
|
+
return defineEventHandler((event) => {
|
|
269
|
+
if (_resolved) {
|
|
270
|
+
return _resolved(event);
|
|
271
|
+
}
|
|
272
|
+
return resolveHandler().then((handler) => handler(event));
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
function isEventHandler(input) {
|
|
276
|
+
return "__is_handler__" in input;
|
|
277
|
+
}
|
|
278
|
+
function toEventHandler(handler) {
|
|
279
|
+
if (isEventHandler(handler)) {
|
|
280
|
+
return handler;
|
|
281
|
+
}
|
|
282
|
+
if (typeof handler !== "function") {
|
|
283
|
+
throw new TypeError("Invalid handler. It should be a function:", handler);
|
|
284
|
+
}
|
|
285
|
+
return defineEventHandler((event) => {
|
|
286
|
+
return callHandler(handler, event.req, event.res);
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
function createEvent(req, res) {
|
|
290
|
+
const event = {
|
|
291
|
+
__is_event__: true,
|
|
292
|
+
req,
|
|
293
|
+
res
|
|
294
|
+
};
|
|
295
|
+
event.event = event;
|
|
296
|
+
req.event = event;
|
|
297
|
+
req.req = req;
|
|
298
|
+
req.res = res;
|
|
299
|
+
res.event = event;
|
|
300
|
+
res.res = res;
|
|
301
|
+
res.req = res.req || {};
|
|
302
|
+
res.req.res = res;
|
|
303
|
+
res.req.req = req;
|
|
304
|
+
return event;
|
|
305
|
+
}
|
|
306
|
+
function isEvent(input) {
|
|
307
|
+
return "__is_event__" in input;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
310
|
function createApp(options = {}) {
|
|
311
311
|
const stack = [];
|
|
312
312
|
const handler = createAppEventHandler(stack, options);
|