New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

fastify-decorators

Package Overview
Dependencies
Maintainers
1
Versions
52
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

fastify-decorators - npm Package Compare versions

Comparing version 3.1.1 to 3.2.0

decorators/helpers/class-properties.d.ts

8

CHANGELOG.md

@@ -7,2 +7,10 @@ # Changelog

## 3.2.0
### Added
- `@ErrorHandler` support for request handlers
- `@Hook` support for request handlers
### Changed
- Do not register empty error handlers
## 3.1.1

@@ -9,0 +17,0 @@ ### Fixed

4

decorators/controller.js

@@ -24,3 +24,3 @@ "use strict";

const { route, type } = makeConfig(config);
inject_controller_options_1.injectDefaultControllerOptions(controller);
inject_controller_options_1.injectControllerOptions(controller);
controller[symbols_1.CREATOR].register = (instance, injectablesMap = injectables_1.injectables, cacheResult = true) => {

@@ -34,2 +34,2 @@ controller[symbols_1.INJECTABLES] = injectablesMap;

exports.Controller = Controller;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9kZWNvcmF0b3JzL2NvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBS0gsMENBQTZDO0FBQzdDLHlEQUFzRDtBQUN0RCx3Q0FBa0Q7QUFDbEQsbUZBQXFGO0FBQ3JGLGtFQUF3RTtBQUV4RSxTQUFTLFVBQVUsQ0FBQyxNQUFrQztJQUNsRCxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVE7UUFBRSxNQUFNLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFFM0QsT0FBTyxFQUFFLElBQUksRUFBRSx5QkFBYyxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUM7QUFDckUsQ0FBQztBQVFELFNBQWdCLFVBQVUsQ0FBQyxNQUFrQztJQUN6RCxPQUFPLENBQUMsVUFBMkIsRUFBUSxFQUFFO1FBQ3pDLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTNDLDBEQUE4QixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRVYsVUFBVyxDQUFDLGlCQUFPLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxRQUF5QixFQUFFLGNBQWMsR0FBRyx5QkFBVyxFQUFFLFdBQVcsR0FBRyxJQUFJLEVBQUUsRUFBRTtZQUM3SSxVQUFVLENBQUMscUJBQVcsQ0FBQyxHQUFHLGNBQWMsQ0FBQztZQUN6QyxVQUFVLENBQUMsU0FBUyxDQUFDLHFCQUFXLENBQUMsR0FBRyxjQUFjLENBQUM7WUFDbkQsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBQyxRQUFRLEVBQUMsRUFBRSxDQUFDLDBDQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDckosQ0FBQyxDQUFDO0lBQ04sQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQVpELGdDQVlDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFuZHJleSBDaGFsa2luIDxMMmpMaWdhQGdtYWlsLmNvbT4gKGh0dHBzOi8vZ2l0aHViLmNvbS9MMmpMaWdhKS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTDJqTGlnYS9mYXN0aWZ5LWRlY29yYXRvcnMvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCB7IEZhc3RpZnlJbnN0YW5jZSB9IGZyb20gJ2Zhc3RpZnknO1xuaW1wb3J0IHsgQ29udHJvbGxlckNvbmZpZywgQ29udHJvbGxlckNvbnN0cnVjdG9yIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBJbmplY3RhYmxlQ2xhc3MgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2luamVjdGFibGUtY2xhc3MnO1xuaW1wb3J0IHsgQ29udHJvbGxlclR5cGUgfSBmcm9tICcuLi9yZWdpc3RyeSc7XG5pbXBvcnQgeyBpbmplY3RhYmxlcyB9IGZyb20gJy4uL3JlZ2lzdHJ5L2luamVjdGFibGVzJztcbmltcG9ydCB7IENSRUFUT1IsIElOSkVDVEFCTEVTIH0gZnJvbSAnLi4vc3ltYm9scyc7XG5pbXBvcnQgeyBpbmplY3REZWZhdWx0Q29udHJvbGxlck9wdGlvbnMgfSBmcm9tICcuL2hlbHBlcnMvaW5qZWN0LWNvbnRyb2xsZXItb3B0aW9ucyc7XG5pbXBvcnQgeyBDb250cm9sbGVyVHlwZVN0cmF0ZWdpZXMgfSBmcm9tICcuL3N0cmF0ZWdpZXMvY29udHJvbGxlci10eXBlJztcblxuZnVuY3Rpb24gbWFrZUNvbmZpZyhjb25maWc/OiBzdHJpbmcgfCBDb250cm9sbGVyQ29uZmlnKTogQ29udHJvbGxlckNvbmZpZyAmIHsgdHlwZTogQ29udHJvbGxlclR5cGUgfSB7XG4gICAgaWYgKHR5cGVvZiBjb25maWcgPT09ICdzdHJpbmcnKSBjb25maWcgPSB7IHJvdXRlOiBjb25maWcgfTtcblxuICAgIHJldHVybiB7IHR5cGU6IENvbnRyb2xsZXJUeXBlLlNJTkdMRVRPTiwgcm91dGU6ICcvJywgLi4uY29uZmlnIH07XG59XG5cbi8qKlxuICogQ3JlYXRlcyByZWdpc3RlciBtZXRob2Qgb24gY29udHJvbGxlciB0byBhbGxvdyBib290c3RyYXAgaXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIENvbnRyb2xsZXIoKTogQ2xhc3NEZWNvcmF0b3I7XG5leHBvcnQgZnVuY3Rpb24gQ29udHJvbGxlcihyb3V0ZTogc3RyaW5nKTogQ2xhc3NEZWNvcmF0b3I7XG5leHBvcnQgZnVuY3Rpb24gQ29udHJvbGxlcihjb25maWc6IENvbnRyb2xsZXJDb25maWcpOiBDbGFzc0RlY29yYXRvcjtcbmV4cG9ydCBmdW5jdGlvbiBDb250cm9sbGVyKGNvbmZpZz86IHN0cmluZyB8IENvbnRyb2xsZXJDb25maWcpOiB1bmtub3duIHtcbiAgICByZXR1cm4gKGNvbnRyb2xsZXI6IEluamVjdGFibGVDbGFzcyk6IHZvaWQgPT4ge1xuICAgICAgICBjb25zdCB7IHJvdXRlLCB0eXBlIH0gPSBtYWtlQ29uZmlnKGNvbmZpZyk7XG5cbiAgICAgICAgaW5qZWN0RGVmYXVsdENvbnRyb2xsZXJPcHRpb25zKGNvbnRyb2xsZXIpO1xuXG4gICAgICAgICg8Q29udHJvbGxlckNvbnN0cnVjdG9yPjx1bmtub3duPmNvbnRyb2xsZXIpW0NSRUFUT1JdLnJlZ2lzdGVyID0gKGluc3RhbmNlOiBGYXN0aWZ5SW5zdGFuY2UsIGluamVjdGFibGVzTWFwID0gaW5qZWN0YWJsZXMsIGNhY2hlUmVzdWx0ID0gdHJ1ZSkgPT4ge1xuICAgICAgICAgICAgY29udHJvbGxlcltJTkpFQ1RBQkxFU10gPSBpbmplY3RhYmxlc01hcDtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIucHJvdG90eXBlW0lOSkVDVEFCTEVTXSA9IGluamVjdGFibGVzTWFwO1xuICAgICAgICAgICAgcmV0dXJuIGluc3RhbmNlLnJlZ2lzdGVyKGFzeW5jIGluc3RhbmNlID0+IENvbnRyb2xsZXJUeXBlU3RyYXRlZ2llc1t0eXBlXShpbnN0YW5jZSwgY29udHJvbGxlciwgaW5qZWN0YWJsZXNNYXAsIGNhY2hlUmVzdWx0KSwgeyBwcmVmaXg6IHJvdXRlIH0pO1xuICAgICAgICB9O1xuICAgIH07XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9kZWNvcmF0b3JzL2NvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBS0gsMENBQTZDO0FBQzdDLHlEQUFzRDtBQUN0RCx3Q0FBa0Q7QUFDbEQsbUZBQThFO0FBQzlFLGtFQUF3RTtBQUV4RSxTQUFTLFVBQVUsQ0FBQyxNQUFrQztJQUNsRCxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVE7UUFBRSxNQUFNLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFFM0QsT0FBTyxFQUFFLElBQUksRUFBRSx5QkFBYyxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUM7QUFDckUsQ0FBQztBQVFELFNBQWdCLFVBQVUsQ0FBQyxNQUFrQztJQUN6RCxPQUFPLENBQUMsVUFBMkIsRUFBUSxFQUFFO1FBQ3pDLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTNDLG1EQUF1QixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRUgsVUFBVyxDQUFDLGlCQUFPLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxRQUF5QixFQUFFLGNBQWMsR0FBRyx5QkFBVyxFQUFFLFdBQVcsR0FBRyxJQUFJLEVBQUUsRUFBRTtZQUM3SSxVQUFVLENBQUMscUJBQVcsQ0FBQyxHQUFHLGNBQWMsQ0FBQztZQUN6QyxVQUFVLENBQUMsU0FBUyxDQUFDLHFCQUFXLENBQUMsR0FBRyxjQUFjLENBQUM7WUFDbkQsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBQyxRQUFRLEVBQUMsRUFBRSxDQUFDLDBDQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDckosQ0FBQyxDQUFDO0lBQ04sQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQVpELGdDQVlDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFuZHJleSBDaGFsa2luIDxMMmpMaWdhQGdtYWlsLmNvbT4gKGh0dHBzOi8vZ2l0aHViLmNvbS9MMmpMaWdhKS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTDJqTGlnYS9mYXN0aWZ5LWRlY29yYXRvcnMvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCB7IEZhc3RpZnlJbnN0YW5jZSB9IGZyb20gJ2Zhc3RpZnknO1xuaW1wb3J0IHsgQ29udHJvbGxlckNvbmZpZywgQ29udHJvbGxlckNvbnN0cnVjdG9yIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBJbmplY3RhYmxlQ2xhc3MgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2luamVjdGFibGUtY2xhc3MnO1xuaW1wb3J0IHsgQ29udHJvbGxlclR5cGUgfSBmcm9tICcuLi9yZWdpc3RyeSc7XG5pbXBvcnQgeyBpbmplY3RhYmxlcyB9IGZyb20gJy4uL3JlZ2lzdHJ5L2luamVjdGFibGVzJztcbmltcG9ydCB7IENSRUFUT1IsIElOSkVDVEFCTEVTIH0gZnJvbSAnLi4vc3ltYm9scyc7XG5pbXBvcnQgeyBpbmplY3RDb250cm9sbGVyT3B0aW9ucyB9IGZyb20gJy4vaGVscGVycy9pbmplY3QtY29udHJvbGxlci1vcHRpb25zJztcbmltcG9ydCB7IENvbnRyb2xsZXJUeXBlU3RyYXRlZ2llcyB9IGZyb20gJy4vc3RyYXRlZ2llcy9jb250cm9sbGVyLXR5cGUnO1xuXG5mdW5jdGlvbiBtYWtlQ29uZmlnKGNvbmZpZz86IHN0cmluZyB8IENvbnRyb2xsZXJDb25maWcpOiBDb250cm9sbGVyQ29uZmlnICYgeyB0eXBlOiBDb250cm9sbGVyVHlwZSB9IHtcbiAgICBpZiAodHlwZW9mIGNvbmZpZyA9PT0gJ3N0cmluZycpIGNvbmZpZyA9IHsgcm91dGU6IGNvbmZpZyB9O1xuXG4gICAgcmV0dXJuIHsgdHlwZTogQ29udHJvbGxlclR5cGUuU0lOR0xFVE9OLCByb3V0ZTogJy8nLCAuLi5jb25maWcgfTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHJlZ2lzdGVyIG1ldGhvZCBvbiBjb250cm9sbGVyIHRvIGFsbG93IGJvb3RzdHJhcCBpdFxuICovXG5leHBvcnQgZnVuY3Rpb24gQ29udHJvbGxlcigpOiBDbGFzc0RlY29yYXRvcjtcbmV4cG9ydCBmdW5jdGlvbiBDb250cm9sbGVyKHJvdXRlOiBzdHJpbmcpOiBDbGFzc0RlY29yYXRvcjtcbmV4cG9ydCBmdW5jdGlvbiBDb250cm9sbGVyKGNvbmZpZzogQ29udHJvbGxlckNvbmZpZyk6IENsYXNzRGVjb3JhdG9yO1xuZXhwb3J0IGZ1bmN0aW9uIENvbnRyb2xsZXIoY29uZmlnPzogc3RyaW5nIHwgQ29udHJvbGxlckNvbmZpZyk6IHVua25vd24ge1xuICAgIHJldHVybiAoY29udHJvbGxlcjogSW5qZWN0YWJsZUNsYXNzKTogdm9pZCA9PiB7XG4gICAgICAgIGNvbnN0IHsgcm91dGUsIHR5cGUgfSA9IG1ha2VDb25maWcoY29uZmlnKTtcblxuICAgICAgICBpbmplY3RDb250cm9sbGVyT3B0aW9ucyhjb250cm9sbGVyKTtcblxuICAgICAgICAoPENvbnRyb2xsZXJDb25zdHJ1Y3Rvcj48dW5rbm93bj5jb250cm9sbGVyKVtDUkVBVE9SXS5yZWdpc3RlciA9IChpbnN0YW5jZTogRmFzdGlmeUluc3RhbmNlLCBpbmplY3RhYmxlc01hcCA9IGluamVjdGFibGVzLCBjYWNoZVJlc3VsdCA9IHRydWUpID0+IHtcbiAgICAgICAgICAgIGNvbnRyb2xsZXJbSU5KRUNUQUJMRVNdID0gaW5qZWN0YWJsZXNNYXA7XG4gICAgICAgICAgICBjb250cm9sbGVyLnByb3RvdHlwZVtJTkpFQ1RBQkxFU10gPSBpbmplY3RhYmxlc01hcDtcbiAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZS5yZWdpc3Rlcihhc3luYyBpbnN0YW5jZSA9PiBDb250cm9sbGVyVHlwZVN0cmF0ZWdpZXNbdHlwZV0oaW5zdGFuY2UsIGNvbnRyb2xsZXIsIGluamVjdGFibGVzTWFwLCBjYWNoZVJlc3VsdCksIHsgcHJlZml4OiByb3V0ZSB9KTtcbiAgICAgICAgfTtcbiAgICB9O1xufVxuIl19

@@ -12,15 +12,14 @@ "use strict";

const symbols_1 = require("../symbols");
const inject_controller_options_1 = require("./helpers/inject-controller-options");
const class_properties_1 = require("./helpers/class-properties");
function ErrorHandler(parameter) {
return function ({ constructor }, handlerName) {
inject_controller_options_1.injectDefaultControllerOptions(constructor);
const controllerOpts = constructor[symbols_1.CREATOR];
class_properties_1.ensureErrorHandlers(constructor);
if (parameter == null) {
controllerOpts.errorHandlers.push(handlerFactory(() => true, handlerName));
constructor[symbols_1.ERROR_HANDLERS].push(handlerFactory(() => true, handlerName));
}
else if (typeof parameter === 'string') {
controllerOpts.errorHandlers.push(handlerFactory((error) => (error === null || error === void 0 ? void 0 : error.code) === parameter, handlerName));
constructor[symbols_1.ERROR_HANDLERS].push(handlerFactory((error) => (error === null || error === void 0 ? void 0 : error.code) === parameter, handlerName));
}
else {
controllerOpts.errorHandlers.push(handlerFactory((error) => error instanceof parameter, handlerName));
constructor[symbols_1.ERROR_HANDLERS].push(handlerFactory((error) => error instanceof parameter, handlerName));
}

@@ -33,2 +32,2 @@ };

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9kZWNvcmF0b3JzL2Vycm9yLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBR0gsd0NBQXFDO0FBQ3JDLG1GQUFxRjtBQU9yRixTQUFnQixZQUFZLENBQTZCLFNBQXNCO0lBQzNFLE9BQU8sVUFBVSxFQUFFLFdBQVcsRUFBTyxFQUFFLFdBQTRCO1FBQy9ELDBEQUE4QixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzVDLE1BQU0sY0FBYyxHQUFHLFdBQVcsQ0FBQyxpQkFBTyxDQUFDLENBQUM7UUFFNUMsSUFBSSxTQUFTLElBQUksSUFBSSxFQUFFO1lBQ25CLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztTQUM5RTthQUFNLElBQUksT0FBTyxTQUFTLEtBQUssUUFBUSxFQUFFO1lBQ3RDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEtBQXFCLEVBQUUsRUFBRSxDQUFDLENBQUEsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLElBQUksTUFBSyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztTQUN4SDthQUFNO1lBQ0gsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FBQyxLQUFLLFlBQVksU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7U0FDakg7SUFDTCxDQUFDLENBQUM7QUFDTixDQUFDO0FBYkQsb0NBYUM7QUFNRCxTQUFTLGNBQWMsQ0FBQyxPQUFnRCxFQUFFLFdBQTRCO0lBQ2xHLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLENBQUM7QUFDcEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbmRyZXkgQ2hhbGtpbiA8TDJqTGlnYUBnbWFpbC5jb20+IChodHRwczovL2dpdGh1Yi5jb20vTDJqTGlnYSkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL0wyakxpZ2EvZmFzdGlmeS1kZWNvcmF0b3JzL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgeyBFcnJvckhhbmRsZXIgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IENSRUFUT1IgfSBmcm9tICcuLi9zeW1ib2xzJztcbmltcG9ydCB7IGluamVjdERlZmF1bHRDb250cm9sbGVyT3B0aW9ucyB9IGZyb20gJy4vaGVscGVycy9pbmplY3QtY29udHJvbGxlci1vcHRpb25zJztcbmltcG9ydCB7IENvbnN0cnVjdG9yIH0gZnJvbSAnLi9oZWxwZXJzL2luamVjdC1kZXBlbmRlbmNpZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gRXJyb3JIYW5kbGVyKCk6IE1ldGhvZERlY29yYXRvcjtcbmV4cG9ydCBmdW5jdGlvbiBFcnJvckhhbmRsZXIoY29kZTogc3RyaW5nKTogTWV0aG9kRGVjb3JhdG9yO1xuZXhwb3J0IGZ1bmN0aW9uIEVycm9ySGFuZGxlcjxUIGV4dGVuZHMgRXJyb3I+KGNvbmZpZ3VyYXRpb246IENvbnN0cnVjdG9yPFQ+KTogTWV0aG9kRGVjb3JhdG9yO1xuXG5leHBvcnQgZnVuY3Rpb24gRXJyb3JIYW5kbGVyPFQgZXh0ZW5kcyBFcnJvckNvbnN0cnVjdG9yPihwYXJhbWV0ZXI/OiBUIHwgc3RyaW5nKTogTWV0aG9kRGVjb3JhdG9yIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHsgY29uc3RydWN0b3IgfTogYW55LCBoYW5kbGVyTmFtZTogc3RyaW5nIHwgc3ltYm9sKSB7XG4gICAgICAgIGluamVjdERlZmF1bHRDb250cm9sbGVyT3B0aW9ucyhjb25zdHJ1Y3Rvcik7XG4gICAgICAgIGNvbnN0IGNvbnRyb2xsZXJPcHRzID0gY29uc3RydWN0b3JbQ1JFQVRPUl07XG5cbiAgICAgICAgaWYgKHBhcmFtZXRlciA9PSBudWxsKSB7XG4gICAgICAgICAgICBjb250cm9sbGVyT3B0cy5lcnJvckhhbmRsZXJzLnB1c2goaGFuZGxlckZhY3RvcnkoKCkgPT4gdHJ1ZSwgaGFuZGxlck5hbWUpKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcGFyYW1ldGVyID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29udHJvbGxlck9wdHMuZXJyb3JIYW5kbGVycy5wdXNoKGhhbmRsZXJGYWN0b3J5KChlcnJvcj86IEVycm9yV2l0aENvZGUpID0+IGVycm9yPy5jb2RlID09PSBwYXJhbWV0ZXIsIGhhbmRsZXJOYW1lKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb250cm9sbGVyT3B0cy5lcnJvckhhbmRsZXJzLnB1c2goaGFuZGxlckZhY3RvcnkoKGVycm9yPzogRXJyb3IpID0+IGVycm9yIGluc3RhbmNlb2YgcGFyYW1ldGVyLCBoYW5kbGVyTmFtZSkpO1xuICAgICAgICB9XG4gICAgfTtcbn1cblxuaW50ZXJmYWNlIEVycm9yV2l0aENvZGUgZXh0ZW5kcyBFcnJvciB7XG4gICAgY29kZT86IHN0cmluZztcbn1cblxuZnVuY3Rpb24gaGFuZGxlckZhY3RvcnkoYWNjZXB0czogPFQgZXh0ZW5kcyBFcnJvcj4oZXJyb3I/OiBUKSA9PiBib29sZWFuLCBoYW5kbGVyTmFtZTogc3RyaW5nIHwgc3ltYm9sKTogRXJyb3JIYW5kbGVyIHtcbiAgICByZXR1cm4geyBhY2NlcHRzLCBoYW5kbGVyTmFtZSB9O1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9kZWNvcmF0b3JzL2Vycm9yLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBR0gsd0NBQTRDO0FBQzVDLGlFQUFpRTtBQU9qRSxTQUFnQixZQUFZLENBQTZCLFNBQXNCO0lBQzNFLE9BQU8sVUFBVSxFQUFFLFdBQVcsRUFBTyxFQUFFLFdBQTRCO1FBQy9ELHNDQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRWpDLElBQUksU0FBUyxJQUFJLElBQUksRUFBRTtZQUNuQixXQUFXLENBQUMsd0JBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7U0FDN0U7YUFBTSxJQUFJLE9BQU8sU0FBUyxLQUFLLFFBQVEsRUFBRTtZQUN0QyxXQUFXLENBQUMsd0JBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxLQUFxQixFQUFFLEVBQUUsQ0FBQyxDQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxJQUFJLE1BQUssU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7U0FDdkg7YUFBTTtZQUNILFdBQVcsQ0FBQyx3QkFBYyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQUMsS0FBSyxZQUFZLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO1NBQ2hIO0lBQ0wsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQVpELG9DQVlDO0FBTUQsU0FBUyxjQUFjLENBQUMsT0FBZ0QsRUFBRSxXQUE0QjtJQUNsRyxPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDO0FBQ3BDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQW5kcmV5IENoYWxraW4gPEwyakxpZ2FAZ21haWwuY29tPiAoaHR0cHM6Ly9naXRodWIuY29tL0wyakxpZ2EpLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9MMmpMaWdhL2Zhc3RpZnktZGVjb3JhdG9ycy9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHsgRXJyb3JIYW5kbGVyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBFUlJPUl9IQU5ETEVSUyB9IGZyb20gJy4uL3N5bWJvbHMnO1xuaW1wb3J0IHsgZW5zdXJlRXJyb3JIYW5kbGVycyB9IGZyb20gJy4vaGVscGVycy9jbGFzcy1wcm9wZXJ0aWVzJztcbmltcG9ydCB7IENvbnN0cnVjdG9yIH0gZnJvbSAnLi9oZWxwZXJzL2luamVjdC1kZXBlbmRlbmNpZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gRXJyb3JIYW5kbGVyKCk6IE1ldGhvZERlY29yYXRvcjtcbmV4cG9ydCBmdW5jdGlvbiBFcnJvckhhbmRsZXIoY29kZTogc3RyaW5nKTogTWV0aG9kRGVjb3JhdG9yO1xuZXhwb3J0IGZ1bmN0aW9uIEVycm9ySGFuZGxlcjxUIGV4dGVuZHMgRXJyb3I+KGNvbmZpZ3VyYXRpb246IENvbnN0cnVjdG9yPFQ+KTogTWV0aG9kRGVjb3JhdG9yO1xuXG5leHBvcnQgZnVuY3Rpb24gRXJyb3JIYW5kbGVyPFQgZXh0ZW5kcyBFcnJvckNvbnN0cnVjdG9yPihwYXJhbWV0ZXI/OiBUIHwgc3RyaW5nKTogTWV0aG9kRGVjb3JhdG9yIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHsgY29uc3RydWN0b3IgfTogYW55LCBoYW5kbGVyTmFtZTogc3RyaW5nIHwgc3ltYm9sKSB7XG4gICAgICAgIGVuc3VyZUVycm9ySGFuZGxlcnMoY29uc3RydWN0b3IpO1xuXG4gICAgICAgIGlmIChwYXJhbWV0ZXIgPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc3RydWN0b3JbRVJST1JfSEFORExFUlNdLnB1c2goaGFuZGxlckZhY3RvcnkoKCkgPT4gdHJ1ZSwgaGFuZGxlck5hbWUpKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcGFyYW1ldGVyID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uc3RydWN0b3JbRVJST1JfSEFORExFUlNdLnB1c2goaGFuZGxlckZhY3RvcnkoKGVycm9yPzogRXJyb3JXaXRoQ29kZSkgPT4gZXJyb3I/LmNvZGUgPT09IHBhcmFtZXRlciwgaGFuZGxlck5hbWUpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0cnVjdG9yW0VSUk9SX0hBTkRMRVJTXS5wdXNoKGhhbmRsZXJGYWN0b3J5KChlcnJvcj86IEVycm9yKSA9PiBlcnJvciBpbnN0YW5jZW9mIHBhcmFtZXRlciwgaGFuZGxlck5hbWUpKTtcbiAgICAgICAgfVxuICAgIH07XG59XG5cbmludGVyZmFjZSBFcnJvcldpdGhDb2RlIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvZGU/OiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZXJGYWN0b3J5KGFjY2VwdHM6IDxUIGV4dGVuZHMgRXJyb3I+KGVycm9yPzogVCkgPT4gYm9vbGVhbiwgaGFuZGxlck5hbWU6IHN0cmluZyB8IHN5bWJvbCk6IEVycm9ySGFuZGxlciB7XG4gICAgcmV0dXJuIHsgYWNjZXB0cywgaGFuZGxlck5hbWUgfTtcbn1cbiJdfQ==

@@ -9,2 +9,2 @@ /**

import { ControllerConstructor } from '../../interfaces';
export declare function injectDefaultControllerOptions(controller: unknown): asserts controller is ControllerConstructor;
export declare function injectControllerOptions(controller: unknown): asserts controller is ControllerConstructor;

@@ -10,8 +10,8 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.injectDefaultControllerOptions = void 0;
exports.injectControllerOptions = void 0;
const symbols_1 = require("../../symbols");
function injectDefaultControllerOptions(controller) {
function injectControllerOptions(controller) {
if (controller instanceof Function) {
if (!(symbols_1.CREATOR in controller)) {
Object.defineProperty(controller, symbols_1.CREATOR, { value: getDefaultControllerOptions() });
Object.defineProperty(controller, symbols_1.CREATOR, { value: {} });
}

@@ -22,10 +22,3 @@ return;

}
exports.injectDefaultControllerOptions = injectDefaultControllerOptions;
function getDefaultControllerOptions() {
return {
handlers: [],
errorHandlers: [],
hooks: [],
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0LWNvbnRyb2xsZXItb3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9kZWNvcmF0b3JzL2hlbHBlcnMvaW5qZWN0LWNvbnRyb2xsZXItb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7QUFJSCwyQ0FBd0M7QUFFeEMsU0FBZ0IsOEJBQThCLENBQUMsVUFBbUI7SUFDOUQsSUFBSSxVQUFVLFlBQVksUUFBUSxFQUFFO1FBQ2hDLElBQUksQ0FBQyxDQUFDLGlCQUFPLElBQUksVUFBVSxDQUFDLEVBQUU7WUFDMUIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsaUJBQU8sRUFBRSxFQUFFLEtBQUssRUFBRSwyQkFBMkIsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUN4RjtRQUVELE9BQU87S0FDVjtJQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQztBQUM5RCxDQUFDO0FBVkQsd0VBVUM7QUFFRCxTQUFTLDJCQUEyQjtJQUNoQyxPQUFPO1FBQ0gsUUFBUSxFQUFFLEVBQUU7UUFDWixhQUFhLEVBQUUsRUFBRTtRQUNqQixLQUFLLEVBQUUsRUFBRTtLQUNaLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFuZHJleSBDaGFsa2luIDxMMmpMaWdhQGdtYWlsLmNvbT4gKGh0dHBzOi8vZ2l0aHViLmNvbS9MMmpMaWdhKS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTDJqTGlnYS9mYXN0aWZ5LWRlY29yYXRvcnMvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCB7IEluY29taW5nTWVzc2FnZSwgU2VydmVyLCBTZXJ2ZXJSZXNwb25zZSB9IGZyb20gJ2h0dHAnO1xuaW1wb3J0IHsgQ29udHJvbGxlckNvbnN0cnVjdG9yLCBDb250cm9sbGVySGFuZGxlcnNBbmRIb29rcyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ1JFQVRPUiB9IGZyb20gJy4uLy4uL3N5bWJvbHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0RGVmYXVsdENvbnRyb2xsZXJPcHRpb25zKGNvbnRyb2xsZXI6IHVua25vd24pOiBhc3NlcnRzIGNvbnRyb2xsZXIgaXMgQ29udHJvbGxlckNvbnN0cnVjdG9yIHtcbiAgICBpZiAoY29udHJvbGxlciBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICAgIGlmICghKENSRUFUT1IgaW4gY29udHJvbGxlcikpIHtcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb250cm9sbGVyLCBDUkVBVE9SLCB7IHZhbHVlOiBnZXREZWZhdWx0Q29udHJvbGxlck9wdGlvbnMoKSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdXNhZ2Ugb2YgQENvbnRyb2xsZXIgZGVjb3JhdG9yJyk7XG59XG5cbmZ1bmN0aW9uIGdldERlZmF1bHRDb250cm9sbGVyT3B0aW9ucygpOiBDb250cm9sbGVySGFuZGxlcnNBbmRIb29rczxTZXJ2ZXIsIEluY29taW5nTWVzc2FnZSwgU2VydmVyUmVzcG9uc2U+IHtcbiAgICByZXR1cm4ge1xuICAgICAgICBoYW5kbGVyczogW10sXG4gICAgICAgIGVycm9ySGFuZGxlcnM6IFtdLFxuICAgICAgICBob29rczogW10sXG4gICAgfTtcbn1cbiJdfQ==
exports.injectControllerOptions = injectControllerOptions;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0LWNvbnRyb2xsZXItb3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9kZWNvcmF0b3JzL2hlbHBlcnMvaW5qZWN0LWNvbnRyb2xsZXItb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7QUFHSCwyQ0FBd0M7QUFFeEMsU0FBZ0IsdUJBQXVCLENBQUMsVUFBbUI7SUFDdkQsSUFBSSxVQUFVLFlBQVksUUFBUSxFQUFFO1FBQ2hDLElBQUksQ0FBQyxDQUFDLGlCQUFPLElBQUksVUFBVSxDQUFDLEVBQUU7WUFDMUIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsaUJBQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQzdEO1FBRUQsT0FBTztLQUNWO0lBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO0FBQzlELENBQUM7QUFWRCwwREFVQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbmRyZXkgQ2hhbGtpbiA8TDJqTGlnYUBnbWFpbC5jb20+IChodHRwczovL2dpdGh1Yi5jb20vTDJqTGlnYSkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL0wyakxpZ2EvZmFzdGlmeS1kZWNvcmF0b3JzL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgeyBDb250cm9sbGVyQ29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IENSRUFUT1IgfSBmcm9tICcuLi8uLi9zeW1ib2xzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdENvbnRyb2xsZXJPcHRpb25zKGNvbnRyb2xsZXI6IHVua25vd24pOiBhc3NlcnRzIGNvbnRyb2xsZXIgaXMgQ29udHJvbGxlckNvbnN0cnVjdG9yIHtcbiAgICBpZiAoY29udHJvbGxlciBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICAgIGlmICghKENSRUFUT1IgaW4gY29udHJvbGxlcikpIHtcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb250cm9sbGVyLCBDUkVBVE9SLCB7IHZhbHVlOiB7fSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdXNhZ2Ugb2YgQENvbnRyb2xsZXIgZGVjb3JhdG9yJyk7XG59XG4iXX0=

@@ -12,3 +12,4 @@ "use strict";

const symbols_1 = require("../../symbols");
const inject_controller_options_1 = require("./inject-controller-options");
const class_properties_1 = require("./class-properties");
const create_errors_handler_1 = require("./create-errors-handler");
function parseConfig(config = '/', options = {}) {

@@ -19,2 +20,10 @@ if (typeof config === 'string')

}
const requestHandlersCache = new WeakMap();
function getTarget(Target, request, ...rest) {
if (requestHandlersCache.has(request))
return requestHandlersCache.get(request);
const target = new Target(request, ...rest);
requestHandlersCache.set(request, target);
return target;
}
function requestDecoratorsFactory(method) {

@@ -29,5 +38,23 @@ return function (routeOrConfig, options) {

target[symbols_1.CREATOR] = {
register: (instance) => instance[method](config.url, config.options, function (...args) {
return new target(...args).handle();
}),
register: (instance) => {
if (class_properties_1.hasHooks(target)) {
for (const hook of target[symbols_1.HOOKS]) {
// @ts-expect-error we know that hook.name is name of Fastify hook
config.options[hook.name] = (request, ...rest) => {
return getTarget(target, request, rest)[hook.handlerName](request, ...rest);
};
}
}
if (class_properties_1.hasErrorHandlers(target)) {
config.options.errorHandler = (error, request, ...rest) => {
const errorsHandler = create_errors_handler_1.createErrorsHandler(target[symbols_1.ERROR_HANDLERS], getTarget(target, request, ...rest));
return errorsHandler(error, request, ...rest);
};
}
instance[method](config.url, config.options, function (request, ...rest) {
const handler = getTarget(target, request, ...rest);
requestHandlersCache.set(request, handler);
return handler.handle();
});
},
};

@@ -39,5 +66,4 @@ };

function controllerMethodDecoratorsFactory(method, config, { constructor }, propKey) {
inject_controller_options_1.injectDefaultControllerOptions(constructor);
const controllerOpts = constructor[symbols_1.CREATOR];
controllerOpts.handlers.push({
class_properties_1.ensureHandlers(constructor);
constructor[symbols_1.HANDLERS].push({
url: config.url,

@@ -50,2 +76,2 @@ method,

exports.controllerMethodDecoratorsFactory = controllerMethodDecoratorsFactory;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1kZWNvcmF0b3JzLmZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvZGVjb3JhdG9ycy9oZWxwZXJzL3JlcXVlc3QtZGVjb3JhdG9ycy5mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7OztBQUlILDJDQUF3QztBQUV4QywyRUFBNkU7QUFFN0UsU0FBUyxXQUFXLENBQUMsU0FBK0IsR0FBRyxFQUFFLFVBQWlDLEVBQUU7SUFDeEYsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRO1FBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFFaEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBQ2xDLENBQUM7QUFFRCxTQUFnQix3QkFBd0IsQ0FDcEMsTUFBbUI7SUFFbkIsT0FBTyxVQUFVLGFBQW9DLEVBQUUsT0FBK0I7UUFDbEYsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUVuRCxPQUFPLFVBQVUsTUFBVyxFQUFFLE9BQXlCO1lBQ25ELElBQUksT0FBTyxFQUFFO2dCQUNULGlDQUFpQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUNuRSxPQUFPO2FBQ1Y7WUFFRCxNQUFNLENBQUMsaUJBQU8sQ0FBQyxHQUFHO2dCQUNkLFFBQVEsRUFBRSxDQUFDLFFBQXlCLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsVUFBVSxHQUFHLElBQUk7b0JBQ25HLE9BQXdCLElBQUksTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzFELENBQUMsQ0FBQzthQUNMLENBQUM7UUFDTixDQUFDLENBQUM7SUFDTixDQUFDLENBQUM7QUFDTixDQUFDO0FBbkJELDREQW1CQztBQUVELFNBQWdCLGlDQUFpQyxDQUFDLE1BQW1CLEVBQUUsTUFBbUIsRUFBRSxFQUFFLFdBQVcsRUFBTyxFQUFFLE9BQXdCO0lBQ3RJLDBEQUE4QixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRTVDLE1BQU0sY0FBYyxHQUFHLFdBQVcsQ0FBQyxpQkFBTyxDQUFDLENBQUM7SUFFNUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDekIsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHO1FBQ2YsTUFBTTtRQUNOLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxJQUFJLEVBQUU7UUFDN0IsYUFBYSxFQUFFLE9BQU87S0FDekIsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQVhELDhFQVdDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFuZHJleSBDaGFsa2luIDxMMmpMaWdhQGdtYWlsLmNvbT4gKGh0dHBzOi8vZ2l0aHViLmNvbS9MMmpMaWdhKS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTDJqTGlnYS9mYXN0aWZ5LWRlY29yYXRvcnMvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCB7IEZhc3RpZnlJbnN0YW5jZSwgUm91dGVTaG9ydGhhbmRPcHRpb25zIH0gZnJvbSAnZmFzdGlmeSc7XG5pbXBvcnQgeyBSZXF1ZXN0SGFuZGxlciwgUm91dGVDb25maWcgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IENSRUFUT1IgfSBmcm9tICcuLi8uLi9zeW1ib2xzJztcbmltcG9ydCB7IEh0dHBNZXRob2RzIH0gZnJvbSAnLi9odHRwLW1ldGhvZHMnO1xuaW1wb3J0IHsgaW5qZWN0RGVmYXVsdENvbnRyb2xsZXJPcHRpb25zIH0gZnJvbSAnLi9pbmplY3QtY29udHJvbGxlci1vcHRpb25zJztcblxuZnVuY3Rpb24gcGFyc2VDb25maWcoY29uZmlnOiBzdHJpbmcgfCBSb3V0ZUNvbmZpZyA9ICcvJywgb3B0aW9uczogUm91dGVTaG9ydGhhbmRPcHRpb25zID0ge30pOiBSb3V0ZUNvbmZpZyAmIHsgb3B0aW9uczogUm91dGVTaG9ydGhhbmRPcHRpb25zIH0ge1xuICAgIGlmICh0eXBlb2YgY29uZmlnID09PSAnc3RyaW5nJykgcmV0dXJuIHsgdXJsOiBjb25maWcsIG9wdGlvbnMgfTtcblxuICAgIHJldHVybiB7IG9wdGlvbnMsIC4uLmNvbmZpZyB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVxdWVzdERlY29yYXRvcnNGYWN0b3J5KFxuICAgIG1ldGhvZDogSHR0cE1ldGhvZHNcbik6IChyb3V0ZU9yQ29uZmlnPzogKHN0cmluZyB8IFJvdXRlQ29uZmlnKSwgb3B0aW9ucz86IFJvdXRlU2hvcnRoYW5kT3B0aW9ucykgPT4gKHRhcmdldDogYW55LCBwcm9wS2V5PzogKHN0cmluZyB8IHN5bWJvbCkpID0+IHZvaWQge1xuICAgIHJldHVybiBmdW5jdGlvbiAocm91dGVPckNvbmZpZz86IHN0cmluZyB8IFJvdXRlQ29uZmlnLCBvcHRpb25zPzogUm91dGVTaG9ydGhhbmRPcHRpb25zKTogKHRhcmdldDogYW55LCBwcm9wS2V5Pzogc3RyaW5nIHwgc3ltYm9sKSA9PiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29uZmlnID0gcGFyc2VDb25maWcocm91dGVPckNvbmZpZywgb3B0aW9ucyk7XG5cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IGFueSwgcHJvcEtleT86IHN0cmluZyB8IHN5bWJvbCk6IHZvaWQge1xuICAgICAgICAgICAgaWYgKHByb3BLZXkpIHtcbiAgICAgICAgICAgICAgICBjb250cm9sbGVyTWV0aG9kRGVjb3JhdG9yc0ZhY3RvcnkobWV0aG9kLCBjb25maWcsIHRhcmdldCwgcHJvcEtleSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0YXJnZXRbQ1JFQVRPUl0gPSB7XG4gICAgICAgICAgICAgICAgcmVnaXN0ZXI6IChpbnN0YW5jZTogRmFzdGlmeUluc3RhbmNlKSA9PiBpbnN0YW5jZVttZXRob2RdKGNvbmZpZy51cmwsIGNvbmZpZy5vcHRpb25zLCBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDxSZXF1ZXN0SGFuZGxlcj5uZXcgdGFyZ2V0KC4uLmFyZ3MpKS5oYW5kbGUoKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnRyb2xsZXJNZXRob2REZWNvcmF0b3JzRmFjdG9yeShtZXRob2Q6IEh0dHBNZXRob2RzLCBjb25maWc6IFJvdXRlQ29uZmlnLCB7IGNvbnN0cnVjdG9yIH06IGFueSwgcHJvcEtleTogc3RyaW5nIHwgc3ltYm9sKTogdm9pZCB7XG4gICAgaW5qZWN0RGVmYXVsdENvbnRyb2xsZXJPcHRpb25zKGNvbnN0cnVjdG9yKTtcblxuICAgIGNvbnN0IGNvbnRyb2xsZXJPcHRzID0gY29uc3RydWN0b3JbQ1JFQVRPUl07XG5cbiAgICBjb250cm9sbGVyT3B0cy5oYW5kbGVycy5wdXNoKHtcbiAgICAgICAgdXJsOiBjb25maWcudXJsLFxuICAgICAgICBtZXRob2QsXG4gICAgICAgIG9wdGlvbnM6IGNvbmZpZy5vcHRpb25zIHx8IHt9LFxuICAgICAgICBoYW5kbGVyTWV0aG9kOiBwcm9wS2V5LFxuICAgIH0pO1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1kZWNvcmF0b3JzLmZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvZGVjb3JhdG9ycy9oZWxwZXJzL3JlcXVlc3QtZGVjb3JhdG9ycy5mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7OztBQUlILDJDQUF5RTtBQUN6RSx5REFBZ0Y7QUFDaEYsbUVBQThEO0FBRzlELFNBQVMsV0FBVyxDQUFDLFNBQStCLEdBQUcsRUFBRSxVQUFpQyxFQUFFO0lBQ3hGLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUTtRQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBRWhFLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQztBQUNsQyxDQUFDO0FBRUQsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLE9BQU8sRUFBa0MsQ0FBQTtBQUMxRSxTQUFTLFNBQVMsQ0FBQyxNQUFXLEVBQUUsT0FBdUIsRUFBRSxHQUFHLElBQWU7SUFDdkUsSUFBSSxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDO1FBQUUsT0FBTyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEYsTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDNUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMxQyxPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDO0FBRUQsU0FBZ0Isd0JBQXdCLENBQ3BDLE1BQW1CO0lBRW5CLE9BQU8sVUFBVSxhQUFvQyxFQUFFLE9BQStCO1FBQ2xGLE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFbkQsT0FBTyxVQUFVLE1BQVcsRUFBRSxPQUF5QjtZQUNuRCxJQUFJLE9BQU8sRUFBRTtnQkFDVCxpQ0FBaUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDbkUsT0FBTzthQUNWO1lBRUQsTUFBTSxDQUFDLGlCQUFPLENBQUMsR0FBRztnQkFDZCxRQUFRLEVBQUUsQ0FBQyxRQUF5QixFQUFFLEVBQUU7b0JBQ3BDLElBQUksMkJBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTt3QkFDbEIsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsZUFBSyxDQUFDLEVBQUU7NEJBQzlCLGtFQUFrRTs0QkFDbEUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUF1QixFQUFFLEdBQUcsSUFBZSxFQUFFLEVBQUU7Z0NBQ3hFLE9BQU8sU0FBUyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDOzRCQUNoRixDQUFDLENBQUM7eUJBQ0w7cUJBQ0o7b0JBQ0QsSUFBSSxtQ0FBZ0IsQ0FBQyxNQUFNLENBQUMsRUFBRTt3QkFDMUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUU7NEJBQ3RELE1BQU0sYUFBYSxHQUFHLDJDQUFtQixDQUFDLE1BQU0sQ0FBQyx3QkFBYyxDQUFDLEVBQUUsU0FBUyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDOzRCQUV2RyxPQUFPLGFBQWEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7d0JBQ2xELENBQUMsQ0FBQTtxQkFDSjtvQkFDRCxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsT0FBTyxFQUFFLFVBQVUsT0FBTyxFQUFFLEdBQUcsSUFBSTt3QkFDbkUsTUFBTSxPQUFPLEdBQW9CLFNBQVMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7d0JBQ3JFLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7d0JBRTNDLE9BQU8sT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUM1QixDQUFDLENBQUMsQ0FBQTtnQkFDTixDQUFDO2FBQ0osQ0FBQztRQUNOLENBQUMsQ0FBQztJQUNOLENBQUMsQ0FBQztBQUNOLENBQUM7QUF2Q0QsNERBdUNDO0FBRUQsU0FBZ0IsaUNBQWlDLENBQUMsTUFBbUIsRUFBRSxNQUFtQixFQUFFLEVBQUUsV0FBVyxFQUFPLEVBQUUsT0FBd0I7SUFDdEksaUNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUU1QixXQUFXLENBQUMsa0JBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUN2QixHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUc7UUFDZixNQUFNO1FBQ04sT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLElBQUksRUFBRTtRQUM3QixhQUFhLEVBQUUsT0FBTztLQUN6QixDQUFDLENBQUM7QUFDUCxDQUFDO0FBVEQsOEVBU0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQW5kcmV5IENoYWxraW4gPEwyakxpZ2FAZ21haWwuY29tPiAoaHR0cHM6Ly9naXRodWIuY29tL0wyakxpZ2EpLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9MMmpMaWdhL2Zhc3RpZnktZGVjb3JhdG9ycy9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHsgRmFzdGlmeUluc3RhbmNlLCBGYXN0aWZ5UmVwbHksIEZhc3RpZnlSZXF1ZXN0LCBSb3V0ZVNob3J0aGFuZE9wdGlvbnMgfSBmcm9tICdmYXN0aWZ5JztcbmltcG9ydCB7IEhvb2ssIFJlcXVlc3RIYW5kbGVyLCBSb3V0ZUNvbmZpZyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ1JFQVRPUiwgRVJST1JfSEFORExFUlMsIEhBTkRMRVJTLCBIT09LUyB9IGZyb20gJy4uLy4uL3N5bWJvbHMnO1xuaW1wb3J0IHsgZW5zdXJlSGFuZGxlcnMsIGhhc0Vycm9ySGFuZGxlcnMsIGhhc0hvb2tzIH0gZnJvbSAnLi9jbGFzcy1wcm9wZXJ0aWVzJztcbmltcG9ydCB7IGNyZWF0ZUVycm9yc0hhbmRsZXIgfSBmcm9tICcuL2NyZWF0ZS1lcnJvcnMtaGFuZGxlcic7XG5pbXBvcnQgeyBIdHRwTWV0aG9kcyB9IGZyb20gJy4vaHR0cC1tZXRob2RzJztcblxuZnVuY3Rpb24gcGFyc2VDb25maWcoY29uZmlnOiBzdHJpbmcgfCBSb3V0ZUNvbmZpZyA9ICcvJywgb3B0aW9uczogUm91dGVTaG9ydGhhbmRPcHRpb25zID0ge30pOiBSb3V0ZUNvbmZpZyAmIHsgb3B0aW9uczogUm91dGVTaG9ydGhhbmRPcHRpb25zIH0ge1xuICAgIGlmICh0eXBlb2YgY29uZmlnID09PSAnc3RyaW5nJykgcmV0dXJuIHsgdXJsOiBjb25maWcsIG9wdGlvbnMgfTtcblxuICAgIHJldHVybiB7IG9wdGlvbnMsIC4uLmNvbmZpZyB9O1xufVxuXG5jb25zdCByZXF1ZXN0SGFuZGxlcnNDYWNoZSA9IG5ldyBXZWFrTWFwPEZhc3RpZnlSZXF1ZXN0LCBSZXF1ZXN0SGFuZGxlcj4oKVxuZnVuY3Rpb24gZ2V0VGFyZ2V0KFRhcmdldDogYW55LCByZXF1ZXN0OiBGYXN0aWZ5UmVxdWVzdCwgLi4ucmVzdDogdW5rbm93bltdKSB7XG4gICAgaWYgKHJlcXVlc3RIYW5kbGVyc0NhY2hlLmhhcyhyZXF1ZXN0KSkgcmV0dXJuIHJlcXVlc3RIYW5kbGVyc0NhY2hlLmdldChyZXF1ZXN0KTtcbiAgICBjb25zdCB0YXJnZXQgPSBuZXcgVGFyZ2V0KHJlcXVlc3QsIC4uLnJlc3QpO1xuICAgIHJlcXVlc3RIYW5kbGVyc0NhY2hlLnNldChyZXF1ZXN0LCB0YXJnZXQpO1xuICAgIHJldHVybiB0YXJnZXQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXF1ZXN0RGVjb3JhdG9yc0ZhY3RvcnkoXG4gICAgbWV0aG9kOiBIdHRwTWV0aG9kc1xuKTogKHJvdXRlT3JDb25maWc/OiAoc3RyaW5nIHwgUm91dGVDb25maWcpLCBvcHRpb25zPzogUm91dGVTaG9ydGhhbmRPcHRpb25zKSA9PiAodGFyZ2V0OiBhbnksIHByb3BLZXk/OiAoc3RyaW5nIHwgc3ltYm9sKSkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChyb3V0ZU9yQ29uZmlnPzogc3RyaW5nIHwgUm91dGVDb25maWcsIG9wdGlvbnM/OiBSb3V0ZVNob3J0aGFuZE9wdGlvbnMpOiAodGFyZ2V0OiBhbnksIHByb3BLZXk/OiBzdHJpbmcgfCBzeW1ib2wpID0+IHZvaWQge1xuICAgICAgICBjb25zdCBjb25maWcgPSBwYXJzZUNvbmZpZyhyb3V0ZU9yQ29uZmlnLCBvcHRpb25zKTtcblxuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogYW55LCBwcm9wS2V5Pzogc3RyaW5nIHwgc3ltYm9sKTogdm9pZCB7XG4gICAgICAgICAgICBpZiAocHJvcEtleSkge1xuICAgICAgICAgICAgICAgIGNvbnRyb2xsZXJNZXRob2REZWNvcmF0b3JzRmFjdG9yeShtZXRob2QsIGNvbmZpZywgdGFyZ2V0LCBwcm9wS2V5KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRhcmdldFtDUkVBVE9SXSA9IHtcbiAgICAgICAgICAgICAgICByZWdpc3RlcjogKGluc3RhbmNlOiBGYXN0aWZ5SW5zdGFuY2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0hvb2tzKHRhcmdldCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaG9vayBvZiB0YXJnZXRbSE9PS1NdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciB3ZSBrbm93IHRoYXQgaG9vay5uYW1lIGlzIG5hbWUgb2YgRmFzdGlmeSBob29rXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLm9wdGlvbnNbaG9vay5uYW1lXSA9IChyZXF1ZXN0OiBGYXN0aWZ5UmVxdWVzdCwgLi4ucmVzdDogdW5rbm93bltdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRUYXJnZXQodGFyZ2V0LCByZXF1ZXN0LCByZXN0KVtob29rLmhhbmRsZXJOYW1lXShyZXF1ZXN0LCAuLi5yZXN0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChoYXNFcnJvckhhbmRsZXJzKHRhcmdldCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5vcHRpb25zLmVycm9ySGFuZGxlciA9IChlcnJvciwgcmVxdWVzdCwgLi4ucmVzdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yc0hhbmRsZXIgPSBjcmVhdGVFcnJvcnNIYW5kbGVyKHRhcmdldFtFUlJPUl9IQU5ETEVSU10sIGdldFRhcmdldCh0YXJnZXQsIHJlcXVlc3QsIC4uLnJlc3QpKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcnNIYW5kbGVyKGVycm9yLCByZXF1ZXN0LCAuLi5yZXN0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZVttZXRob2RdKGNvbmZpZy51cmwsIGNvbmZpZy5vcHRpb25zLCBmdW5jdGlvbiAocmVxdWVzdCwgLi4ucmVzdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFuZGxlciA9IDxSZXF1ZXN0SGFuZGxlcj4gZ2V0VGFyZ2V0KHRhcmdldCwgcmVxdWVzdCwgLi4ucmVzdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SGFuZGxlcnNDYWNoZS5zZXQocmVxdWVzdCwgaGFuZGxlcik7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGVyLmhhbmRsZSgpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb250cm9sbGVyTWV0aG9kRGVjb3JhdG9yc0ZhY3RvcnkobWV0aG9kOiBIdHRwTWV0aG9kcywgY29uZmlnOiBSb3V0ZUNvbmZpZywgeyBjb25zdHJ1Y3RvciB9OiBhbnksIHByb3BLZXk6IHN0cmluZyB8IHN5bWJvbCk6IHZvaWQge1xuICAgIGVuc3VyZUhhbmRsZXJzKGNvbnN0cnVjdG9yKTtcblxuICAgIGNvbnN0cnVjdG9yW0hBTkRMRVJTXS5wdXNoKHtcbiAgICAgICAgdXJsOiBjb25maWcudXJsLFxuICAgICAgICBtZXRob2QsXG4gICAgICAgIG9wdGlvbnM6IGNvbmZpZy5vcHRpb25zIHx8IHt9LFxuICAgICAgICBoYW5kbGVyTWV0aG9kOiBwcm9wS2V5LFxuICAgIH0pO1xufVxuIl19

@@ -12,3 +12,3 @@ "use strict";

const symbols_1 = require("../symbols");
const inject_controller_options_1 = require("./helpers/inject-controller-options");
const class_properties_1 = require("./helpers/class-properties");
/**

@@ -19,5 +19,4 @@ * Creates handler which listen various hooks

return ({ constructor }, handlerName) => {
inject_controller_options_1.injectDefaultControllerOptions(constructor);
const controllerOpts = constructor[symbols_1.CREATOR];
controllerOpts.hooks.push({
class_properties_1.ensureHooks(constructor);
constructor[symbols_1.HOOKS].push({
name,

@@ -29,2 +28,2 @@ handlerName

exports.Hook = Hook;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9vay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9kZWNvcmF0b3JzL2hvb2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBRUgsd0NBQXFDO0FBQ3JDLG1GQUFxRjtBQUVyRjs7R0FFRztBQUNILFNBQWdCLElBQUksQ0FBQyxJQUFZO0lBQzdCLE9BQU8sQ0FBQyxFQUFFLFdBQVcsRUFBTyxFQUFFLFdBQTRCLEVBQUUsRUFBRTtRQUMxRCwwREFBOEIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUU1QyxNQUFNLGNBQWMsR0FBRyxXQUFXLENBQUMsaUJBQU8sQ0FBQyxDQUFDO1FBRTVDLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ3RCLElBQUk7WUFDSixXQUFXO1NBQ2QsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQVhELG9CQVdDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFuZHJleSBDaGFsa2luIDxMMmpMaWdhQGdtYWlsLmNvbT4gKGh0dHBzOi8vZ2l0aHViLmNvbS9MMmpMaWdhKS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTDJqTGlnYS9mYXN0aWZ5LWRlY29yYXRvcnMvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCB7IENSRUFUT1IgfSBmcm9tICcuLi9zeW1ib2xzJztcbmltcG9ydCB7IGluamVjdERlZmF1bHRDb250cm9sbGVyT3B0aW9ucyB9IGZyb20gJy4vaGVscGVycy9pbmplY3QtY29udHJvbGxlci1vcHRpb25zJztcblxuLyoqXG4gKiBDcmVhdGVzIGhhbmRsZXIgd2hpY2ggbGlzdGVuIHZhcmlvdXMgaG9va3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEhvb2sobmFtZTogc3RyaW5nKTogTWV0aG9kRGVjb3JhdG9yIHtcbiAgICByZXR1cm4gKHsgY29uc3RydWN0b3IgfTogYW55LCBoYW5kbGVyTmFtZTogc3RyaW5nIHwgc3ltYm9sKSA9PiB7XG4gICAgICAgIGluamVjdERlZmF1bHRDb250cm9sbGVyT3B0aW9ucyhjb25zdHJ1Y3Rvcik7XG5cbiAgICAgICAgY29uc3QgY29udHJvbGxlck9wdHMgPSBjb25zdHJ1Y3RvcltDUkVBVE9SXTtcblxuICAgICAgICBjb250cm9sbGVyT3B0cy5ob29rcy5wdXNoKHtcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICBoYW5kbGVyTmFtZVxuICAgICAgICB9KTtcbiAgICB9O1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9vay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9kZWNvcmF0b3JzL2hvb2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBRUgsd0NBQW1DO0FBQ25DLGlFQUF5RDtBQUV6RDs7R0FFRztBQUNILFNBQWdCLElBQUksQ0FBQyxJQUFZO0lBQzdCLE9BQU8sQ0FBQyxFQUFFLFdBQVcsRUFBTyxFQUFFLFdBQTRCLEVBQUUsRUFBRTtRQUMxRCw4QkFBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXpCLFdBQVcsQ0FBQyxlQUFLLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDcEIsSUFBSTtZQUNKLFdBQVc7U0FDZCxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUM7QUFDTixDQUFDO0FBVEQsb0JBU0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQW5kcmV5IENoYWxraW4gPEwyakxpZ2FAZ21haWwuY29tPiAoaHR0cHM6Ly9naXRodWIuY29tL0wyakxpZ2EpLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9MMmpMaWdhL2Zhc3RpZnktZGVjb3JhdG9ycy9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHsgSE9PS1MgfSBmcm9tICcuLi9zeW1ib2xzJztcbmltcG9ydCB7IGVuc3VyZUhvb2tzIH0gZnJvbSAnLi9oZWxwZXJzL2NsYXNzLXByb3BlcnRpZXMnO1xuXG4vKipcbiAqIENyZWF0ZXMgaGFuZGxlciB3aGljaCBsaXN0ZW4gdmFyaW91cyBob29rc1xuICovXG5leHBvcnQgZnVuY3Rpb24gSG9vayhuYW1lOiBzdHJpbmcpOiBNZXRob2REZWNvcmF0b3Ige1xuICAgIHJldHVybiAoeyBjb25zdHJ1Y3RvciB9OiBhbnksIGhhbmRsZXJOYW1lOiBzdHJpbmcgfCBzeW1ib2wpID0+IHtcbiAgICAgICAgZW5zdXJlSG9va3MoY29uc3RydWN0b3IpO1xuXG4gICAgICAgIGNvbnN0cnVjdG9yW0hPT0tTXS5wdXNoKHtcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICBoYW5kbGVyTmFtZVxuICAgICAgICB9KTtcbiAgICB9O1xufVxuIl19

@@ -13,2 +13,4 @@ "use strict";

const symbols_1 = require("../../symbols");
const class_properties_1 = require("../helpers/class-properties");
const create_errors_handler_1 = require("../helpers/create-errors-handler");
const inject_dependencies_1 = require("../helpers/inject-dependencies");

@@ -29,15 +31,17 @@ /**

const controllerInstance = inject_dependencies_1.createWithInjectedDependencies(constructor, injectablesMap, cacheResult);
const configuration = constructor[symbols_1.CREATOR];
registerHandlers(configuration.handlers, instance, controllerInstance);
registerErrorHandlers(configuration.errorHandlers, instance, controllerInstance);
registerHooks(configuration.hooks, instance, controllerInstance);
if (class_properties_1.hasHandlers(constructor))
registerHandlers(constructor[symbols_1.HANDLERS], instance, controllerInstance);
if (class_properties_1.hasErrorHandlers(constructor))
registerErrorHandlers(constructor[symbols_1.ERROR_HANDLERS], instance, controllerInstance);
if (class_properties_1.hasHooks(constructor))
registerHooks(constructor[symbols_1.HOOKS], instance, controllerInstance);
},
[registry_1.ControllerType.REQUEST](instance, constructor, injectablesMap, cacheResult) {
const configuration = constructor[symbols_1.CREATOR];
configuration.handlers.forEach(handler => {
const { url, method, handlerMethod, options } = handler;
instance[method](url, options, function (...args) {
return inject_dependencies_1.createWithInjectedDependencies(constructor, injectablesMap, cacheResult)[handlerMethod](...args);
if (class_properties_1.hasHandlers(constructor))
constructor[symbols_1.HANDLERS].forEach(handler => {
const { url, method, handlerMethod, options } = handler;
instance[method](url, options, function (...args) {
return inject_dependencies_1.createWithInjectedDependencies(constructor, injectablesMap, cacheResult)[handlerMethod](...args);
});
});
});
},

@@ -47,5 +51,3 @@ };

handlers.forEach(handler => {
instance[handler.method](handler.url, handler.options, function (...args) {
return controllerInstance[handler.handlerMethod](...args);
});
instance[handler.method](handler.url, handler.options, controllerInstance[handler.handlerMethod].bind(controllerInstance));
});

@@ -58,20 +60,5 @@ }

}
function registerErrorHandlers(errorHandlers, instance, controllerInstance) {
instance.setErrorHandler(async (error, request, reply) => {
let err = error;
for (const handler of errorHandlers) {
if (handler.accepts(error)) {
try {
await controllerInstance[handler.handlerName](err, request, reply);
err = null;
return;
}
catch (e) {
err = e;
}
}
}
throw err;
});
function registerErrorHandlers(errorHandlers, instance, classInstance) {
instance.setErrorHandler(create_errors_handler_1.createErrorsHandler(errorHandlers, classInstance));
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlci10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL2RlY29yYXRvcnMvc3RyYXRlZ2llcy9jb250cm9sbGVyLXR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBSUgsNkNBQWdEO0FBQ2hELDJDQUF3QztBQUN4Qyx3RUFBZ0Y7QUFFaEY7Ozs7Ozs7Ozs7R0FVRztBQUNVLFFBQUEsd0JBQXdCLEdBQUc7SUFDcEMsQ0FBQyx5QkFBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQTZDLEVBQUUsV0FBa0MsRUFBRSxjQUE2QixFQUFFLFdBQW9CO1FBQzdKLE1BQU0sa0JBQWtCLEdBQUcsb0RBQThCLENBQUMsV0FBVyxFQUFFLGNBQWMsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNwRyxNQUFNLGFBQWEsR0FBOEMsV0FBVyxDQUFDLGlCQUFPLENBQUMsQ0FBQztRQUV0RixnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3ZFLHFCQUFxQixDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDakYsYUFBYSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELENBQUMseUJBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUE2QyxFQUFFLFdBQWtDLEVBQUUsY0FBNkIsRUFBRSxXQUFvQjtRQUMzSixNQUFNLGFBQWEsR0FBRyxXQUFXLENBQUMsaUJBQU8sQ0FBQyxDQUFDO1FBRTNDLGFBQWEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3JDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUM7WUFFeEQsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsVUFBVSxHQUFHLElBQUk7Z0JBQzVDLE9BQU8sb0RBQThCLENBQUMsV0FBVyxFQUFFLGNBQWMsRUFBRSxXQUFXLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQzVHLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0ssQ0FBQztBQUVYLFNBQVMsZ0JBQWdCLENBQUMsUUFBbUIsRUFBRSxRQUF5QixFQUFFLGtCQUF1QjtJQUM3RixRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ3ZCLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLFVBQVUsR0FBRyxJQUFJO1lBQ3BFLE9BQU8sa0JBQWtCLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDOUQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBQyxLQUFhLEVBQUUsUUFBeUIsRUFBRSxrQkFBdUI7SUFDcEYsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUNqQixRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7SUFDL0YsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQsU0FBUyxxQkFBcUIsQ0FBQyxhQUE2QixFQUFFLFFBQXlCLEVBQUUsa0JBQXVCO0lBQzVHLFFBQVEsQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDckQsSUFBSSxHQUFHLEdBQWlCLEtBQUssQ0FBQztRQUM5QixLQUFLLE1BQU0sT0FBTyxJQUFJLGFBQWEsRUFBRTtZQUNqQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3hCLElBQUk7b0JBQ0EsTUFBTSxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztvQkFDbkUsR0FBRyxHQUFHLElBQUksQ0FBQztvQkFDWCxPQUFPO2lCQUNWO2dCQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNSLEdBQUcsR0FBRyxDQUFDLENBQUM7aUJBQ1g7YUFDSjtTQUNKO1FBRUQsTUFBTSxHQUFHLENBQUM7SUFDZCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQW5kcmV5IENoYWxraW4gPEwyakxpZ2FAZ21haWwuY29tPiAoaHR0cHM6Ly9naXRodWIuY29tL0wyakxpZ2EpLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9MMmpMaWdhL2Zhc3RpZnktZGVjb3JhdG9ycy9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHsgRmFzdGlmeUluc3RhbmNlIH0gZnJvbSAnZmFzdGlmeSc7XG5pbXBvcnQgeyBDb250cm9sbGVyQ29uc3RydWN0b3IsIENvbnRyb2xsZXJIYW5kbGVyc0FuZEhvb2tzLCBFcnJvckhhbmRsZXIsIEhhbmRsZXIsIEhvb2sgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IENvbnRyb2xsZXJUeXBlIH0gZnJvbSAnLi4vLi4vcmVnaXN0cnknO1xuaW1wb3J0IHsgQ1JFQVRPUiB9IGZyb20gJy4uLy4uL3N5bWJvbHMnO1xuaW1wb3J0IHsgY3JlYXRlV2l0aEluamVjdGVkRGVwZW5kZW5jaWVzIH0gZnJvbSAnLi4vaGVscGVycy9pbmplY3QtZGVwZW5kZW5jaWVzJztcblxuLyoqXG4gKiBWYXJpb3VzIHN0cmF0ZWdpZXMgd2hpY2ggY2FuIGJlIGFwcGxpZWQgdG8gY29udHJvbGxlclxuICpcbiAqIEB1c2FnZU5vdGVzXG4gKlxuICogVGhlcmUgYXJlIGZldyBhdmFpbGFibGUgc3RyYXRlZ2llczpcbiAqICAgU0lOR0xFVE9OIHN0cmF0ZWd5IGNyZWF0ZXMgb25lIGluc3RhbmNlIG9mIGNvbnRyb2xsZXIgd2hpY2ggd2lsbCBoYW5kbGUgYWxsIHJlcXVlc3RzXG4gKiAgIFJFUVVFU1Qgc3RyYXRlZ3kgd2lsbCBjcmVhdGUgbmV3IGluc3RhbmNlIGZvciBlYWNoIHJlcXVlc3QvaG9va1xuICpcbiAqIEJ5IGRlZmF1bHQgY29udHJvbGxlcnMgdXNlIFNJTkdMRVRPTiBzdHJhdGVneVxuICovXG5leHBvcnQgY29uc3QgQ29udHJvbGxlclR5cGVTdHJhdGVnaWVzID0ge1xuICAgIFtDb250cm9sbGVyVHlwZS5TSU5HTEVUT05dKGluc3RhbmNlOiBGYXN0aWZ5SW5zdGFuY2U8YW55LCBhbnksIGFueSwgYW55PiwgY29uc3RydWN0b3I6IENvbnRyb2xsZXJDb25zdHJ1Y3RvciwgaW5qZWN0YWJsZXNNYXA6IE1hcDxhbnksIGFueT4sIGNhY2hlUmVzdWx0OiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2xsZXJJbnN0YW5jZSA9IGNyZWF0ZVdpdGhJbmplY3RlZERlcGVuZGVuY2llcyhjb25zdHJ1Y3RvciwgaW5qZWN0YWJsZXNNYXAsIGNhY2hlUmVzdWx0KTtcbiAgICAgICAgY29uc3QgY29uZmlndXJhdGlvbjogQ29udHJvbGxlckhhbmRsZXJzQW5kSG9va3M8YW55LCBhbnksIGFueT4gPSBjb25zdHJ1Y3RvcltDUkVBVE9SXTtcblxuICAgICAgICByZWdpc3RlckhhbmRsZXJzKGNvbmZpZ3VyYXRpb24uaGFuZGxlcnMsIGluc3RhbmNlLCBjb250cm9sbGVySW5zdGFuY2UpO1xuICAgICAgICByZWdpc3RlckVycm9ySGFuZGxlcnMoY29uZmlndXJhdGlvbi5lcnJvckhhbmRsZXJzLCBpbnN0YW5jZSwgY29udHJvbGxlckluc3RhbmNlKTtcbiAgICAgICAgcmVnaXN0ZXJIb29rcyhjb25maWd1cmF0aW9uLmhvb2tzLCBpbnN0YW5jZSwgY29udHJvbGxlckluc3RhbmNlKTtcbiAgICB9LFxuXG4gICAgW0NvbnRyb2xsZXJUeXBlLlJFUVVFU1RdKGluc3RhbmNlOiBGYXN0aWZ5SW5zdGFuY2U8YW55LCBhbnksIGFueSwgYW55PiwgY29uc3RydWN0b3I6IENvbnRyb2xsZXJDb25zdHJ1Y3RvciwgaW5qZWN0YWJsZXNNYXA6IE1hcDxhbnksIGFueT4sIGNhY2hlUmVzdWx0OiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBjb25zdHJ1Y3RvcltDUkVBVE9SXTtcblxuICAgICAgICBjb25maWd1cmF0aW9uLmhhbmRsZXJzLmZvckVhY2goaGFuZGxlciA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHVybCwgbWV0aG9kLCBoYW5kbGVyTWV0aG9kLCBvcHRpb25zIH0gPSBoYW5kbGVyO1xuXG4gICAgICAgICAgICBpbnN0YW5jZVttZXRob2RdKHVybCwgb3B0aW9ucywgZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlV2l0aEluamVjdGVkRGVwZW5kZW5jaWVzKGNvbnN0cnVjdG9yLCBpbmplY3RhYmxlc01hcCwgY2FjaGVSZXN1bHQpW2hhbmRsZXJNZXRob2RdKC4uLmFyZ3MpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0sXG59IGFzIGNvbnN0O1xuXG5mdW5jdGlvbiByZWdpc3RlckhhbmRsZXJzKGhhbmRsZXJzOiBIYW5kbGVyW10sIGluc3RhbmNlOiBGYXN0aWZ5SW5zdGFuY2UsIGNvbnRyb2xsZXJJbnN0YW5jZTogYW55KTogdm9pZCB7XG4gICAgaGFuZGxlcnMuZm9yRWFjaChoYW5kbGVyID0+IHtcbiAgICAgICAgaW5zdGFuY2VbaGFuZGxlci5tZXRob2RdKGhhbmRsZXIudXJsLCBoYW5kbGVyLm9wdGlvbnMsIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgICAgICAgICByZXR1cm4gY29udHJvbGxlckluc3RhbmNlW2hhbmRsZXIuaGFuZGxlck1ldGhvZF0oLi4uYXJncyk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuXG5mdW5jdGlvbiByZWdpc3Rlckhvb2tzKGhvb2tzOiBIb29rW10sIGluc3RhbmNlOiBGYXN0aWZ5SW5zdGFuY2UsIGNvbnRyb2xsZXJJbnN0YW5jZTogYW55KTogdm9pZCB7XG4gICAgaG9va3MuZm9yRWFjaChob29rID0+IHtcbiAgICAgICAgaW5zdGFuY2UuYWRkSG9vayhob29rLm5hbWUsIGNvbnRyb2xsZXJJbnN0YW5jZVtob29rLmhhbmRsZXJOYW1lXS5iaW5kKGNvbnRyb2xsZXJJbnN0YW5jZSkpO1xuICAgIH0pO1xufVxuXG5mdW5jdGlvbiByZWdpc3RlckVycm9ySGFuZGxlcnMoZXJyb3JIYW5kbGVyczogRXJyb3JIYW5kbGVyW10sIGluc3RhbmNlOiBGYXN0aWZ5SW5zdGFuY2UsIGNvbnRyb2xsZXJJbnN0YW5jZTogYW55KSB7XG4gICAgaW5zdGFuY2Uuc2V0RXJyb3JIYW5kbGVyKGFzeW5jIChlcnJvciwgcmVxdWVzdCwgcmVwbHkpID0+IHtcbiAgICAgICAgbGV0IGVycjogRXJyb3IgfCBudWxsID0gZXJyb3I7XG4gICAgICAgIGZvciAoY29uc3QgaGFuZGxlciBvZiBlcnJvckhhbmRsZXJzKSB7XG4gICAgICAgICAgICBpZiAoaGFuZGxlci5hY2NlcHRzKGVycm9yKSkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGNvbnRyb2xsZXJJbnN0YW5jZVtoYW5kbGVyLmhhbmRsZXJOYW1lXShlcnIsIHJlcXVlc3QsIHJlcGx5KTtcbiAgICAgICAgICAgICAgICAgICAgZXJyID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyID0gZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnI7XG4gICAgfSk7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlci10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL2RlY29yYXRvcnMvc3RyYXRlZ2llcy9jb250cm9sbGVyLXR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBSUgsNkNBQWdEO0FBQ2hELDJDQUF5RTtBQUN6RSxrRUFBc0Y7QUFDdEYsNEVBQXVFO0FBQ3ZFLHdFQUFnRjtBQUVoRjs7Ozs7Ozs7OztHQVVHO0FBQ1UsUUFBQSx3QkFBd0IsR0FBRztJQUNwQyxDQUFDLHlCQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBNkMsRUFBRSxXQUFrQyxFQUFFLGNBQTZCLEVBQUUsV0FBb0I7UUFDN0osTUFBTSxrQkFBa0IsR0FBRyxvREFBOEIsQ0FBQyxXQUFXLEVBQUUsY0FBYyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRXBHLElBQUksOEJBQVcsQ0FBQyxXQUFXLENBQUM7WUFDeEIsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLGtCQUFRLENBQUMsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUMxRSxJQUFJLG1DQUFnQixDQUFDLFdBQVcsQ0FBQztZQUM3QixxQkFBcUIsQ0FBQyxXQUFXLENBQUMsd0JBQWMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3JGLElBQUksMkJBQVEsQ0FBQyxXQUFXLENBQUM7WUFDckIsYUFBYSxDQUFDLFdBQVcsQ0FBQyxlQUFLLENBQUMsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsQ0FBQyx5QkFBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQTZDLEVBQUUsV0FBa0MsRUFBRSxjQUE2QixFQUFFLFdBQW9CO1FBQzNKLElBQUksOEJBQVcsQ0FBQyxXQUFXLENBQUM7WUFDeEIsV0FBVyxDQUFDLGtCQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ3BDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUM7Z0JBRXhELFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLFVBQVUsR0FBRyxJQUFJO29CQUM1QyxPQUFPLG9EQUE4QixDQUFDLFdBQVcsRUFBRSxjQUFjLEVBQUUsV0FBVyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztnQkFDNUcsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7Q0FDSyxDQUFDO0FBRVgsU0FBUyxnQkFBZ0IsQ0FBQyxRQUFtQixFQUFFLFFBQXlCLEVBQUUsa0JBQXVCO0lBQzdGLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDdkIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7SUFDL0gsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUMsS0FBYSxFQUFFLFFBQXlCLEVBQUUsa0JBQXVCO0lBQ3BGLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDakIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO0lBQy9GLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVELFNBQVMscUJBQXFCLENBQUMsYUFBNkIsRUFBRSxRQUF5QixFQUFFLGFBQWtCO0lBQ3ZHLFFBQVEsQ0FBQyxlQUFlLENBQUMsMkNBQW1CLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7QUFDaEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbmRyZXkgQ2hhbGtpbiA8TDJqTGlnYUBnbWFpbC5jb20+IChodHRwczovL2dpdGh1Yi5jb20vTDJqTGlnYSkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL0wyakxpZ2EvZmFzdGlmeS1kZWNvcmF0b3JzL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgeyBGYXN0aWZ5SW5zdGFuY2UgfSBmcm9tICdmYXN0aWZ5JztcbmltcG9ydCB7IENvbnRyb2xsZXJDb25zdHJ1Y3RvciwgQ29udHJvbGxlckhhbmRsZXJzQW5kSG9va3MsIEVycm9ySGFuZGxlciwgSGFuZGxlciwgSG9vayB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ29udHJvbGxlclR5cGUgfSBmcm9tICcuLi8uLi9yZWdpc3RyeSc7XG5pbXBvcnQgeyBDUkVBVE9SLCBFUlJPUl9IQU5ETEVSUywgSEFORExFUlMsIEhPT0tTIH0gZnJvbSAnLi4vLi4vc3ltYm9scyc7XG5pbXBvcnQgeyBoYXNFcnJvckhhbmRsZXJzLCBoYXNIYW5kbGVycywgaGFzSG9va3MgfSBmcm9tICcuLi9oZWxwZXJzL2NsYXNzLXByb3BlcnRpZXMnO1xuaW1wb3J0IHsgY3JlYXRlRXJyb3JzSGFuZGxlciB9IGZyb20gJy4uL2hlbHBlcnMvY3JlYXRlLWVycm9ycy1oYW5kbGVyJztcbmltcG9ydCB7IGNyZWF0ZVdpdGhJbmplY3RlZERlcGVuZGVuY2llcyB9IGZyb20gJy4uL2hlbHBlcnMvaW5qZWN0LWRlcGVuZGVuY2llcyc7XG5cbi8qKlxuICogVmFyaW91cyBzdHJhdGVnaWVzIHdoaWNoIGNhbiBiZSBhcHBsaWVkIHRvIGNvbnRyb2xsZXJcbiAqXG4gKiBAdXNhZ2VOb3Rlc1xuICpcbiAqIFRoZXJlIGFyZSBmZXcgYXZhaWxhYmxlIHN0cmF0ZWdpZXM6XG4gKiAgIFNJTkdMRVRPTiBzdHJhdGVneSBjcmVhdGVzIG9uZSBpbnN0YW5jZSBvZiBjb250cm9sbGVyIHdoaWNoIHdpbGwgaGFuZGxlIGFsbCByZXF1ZXN0c1xuICogICBSRVFVRVNUIHN0cmF0ZWd5IHdpbGwgY3JlYXRlIG5ldyBpbnN0YW5jZSBmb3IgZWFjaCByZXF1ZXN0L2hvb2tcbiAqXG4gKiBCeSBkZWZhdWx0IGNvbnRyb2xsZXJzIHVzZSBTSU5HTEVUT04gc3RyYXRlZ3lcbiAqL1xuZXhwb3J0IGNvbnN0IENvbnRyb2xsZXJUeXBlU3RyYXRlZ2llcyA9IHtcbiAgICBbQ29udHJvbGxlclR5cGUuU0lOR0xFVE9OXShpbnN0YW5jZTogRmFzdGlmeUluc3RhbmNlPGFueSwgYW55LCBhbnksIGFueT4sIGNvbnN0cnVjdG9yOiBDb250cm9sbGVyQ29uc3RydWN0b3IsIGluamVjdGFibGVzTWFwOiBNYXA8YW55LCBhbnk+LCBjYWNoZVJlc3VsdDogYm9vbGVhbikge1xuICAgICAgICBjb25zdCBjb250cm9sbGVySW5zdGFuY2UgPSBjcmVhdGVXaXRoSW5qZWN0ZWREZXBlbmRlbmNpZXMoY29uc3RydWN0b3IsIGluamVjdGFibGVzTWFwLCBjYWNoZVJlc3VsdCk7XG5cbiAgICAgICAgaWYgKGhhc0hhbmRsZXJzKGNvbnN0cnVjdG9yKSlcbiAgICAgICAgICAgIHJlZ2lzdGVySGFuZGxlcnMoY29uc3RydWN0b3JbSEFORExFUlNdLCBpbnN0YW5jZSwgY29udHJvbGxlckluc3RhbmNlKTtcbiAgICAgICAgaWYgKGhhc0Vycm9ySGFuZGxlcnMoY29uc3RydWN0b3IpKVxuICAgICAgICAgICAgcmVnaXN0ZXJFcnJvckhhbmRsZXJzKGNvbnN0cnVjdG9yW0VSUk9SX0hBTkRMRVJTXSwgaW5zdGFuY2UsIGNvbnRyb2xsZXJJbnN0YW5jZSk7XG4gICAgICAgIGlmIChoYXNIb29rcyhjb25zdHJ1Y3RvcikpXG4gICAgICAgICAgICByZWdpc3Rlckhvb2tzKGNvbnN0cnVjdG9yW0hPT0tTXSwgaW5zdGFuY2UsIGNvbnRyb2xsZXJJbnN0YW5jZSk7XG4gICAgfSxcblxuICAgIFtDb250cm9sbGVyVHlwZS5SRVFVRVNUXShpbnN0YW5jZTogRmFzdGlmeUluc3RhbmNlPGFueSwgYW55LCBhbnksIGFueT4sIGNvbnN0cnVjdG9yOiBDb250cm9sbGVyQ29uc3RydWN0b3IsIGluamVjdGFibGVzTWFwOiBNYXA8YW55LCBhbnk+LCBjYWNoZVJlc3VsdDogYm9vbGVhbikge1xuICAgICAgICBpZiAoaGFzSGFuZGxlcnMoY29uc3RydWN0b3IpKVxuICAgICAgICAgICAgY29uc3RydWN0b3JbSEFORExFUlNdLmZvckVhY2goaGFuZGxlciA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB1cmwsIG1ldGhvZCwgaGFuZGxlck1ldGhvZCwgb3B0aW9ucyB9ID0gaGFuZGxlcjtcblxuICAgICAgICAgICAgICAgIGluc3RhbmNlW21ldGhvZF0odXJsLCBvcHRpb25zLCBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlV2l0aEluamVjdGVkRGVwZW5kZW5jaWVzKGNvbnN0cnVjdG9yLCBpbmplY3RhYmxlc01hcCwgY2FjaGVSZXN1bHQpW2hhbmRsZXJNZXRob2RdKC4uLmFyZ3MpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgfSxcbn0gYXMgY29uc3Q7XG5cbmZ1bmN0aW9uIHJlZ2lzdGVySGFuZGxlcnMoaGFuZGxlcnM6IEhhbmRsZXJbXSwgaW5zdGFuY2U6IEZhc3RpZnlJbnN0YW5jZSwgY29udHJvbGxlckluc3RhbmNlOiBhbnkpOiB2b2lkIHtcbiAgICBoYW5kbGVycy5mb3JFYWNoKGhhbmRsZXIgPT4ge1xuICAgICAgICBpbnN0YW5jZVtoYW5kbGVyLm1ldGhvZF0oaGFuZGxlci51cmwsIGhhbmRsZXIub3B0aW9ucywgY29udHJvbGxlckluc3RhbmNlW2hhbmRsZXIuaGFuZGxlck1ldGhvZF0uYmluZChjb250cm9sbGVySW5zdGFuY2UpKTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gcmVnaXN0ZXJIb29rcyhob29rczogSG9va1tdLCBpbnN0YW5jZTogRmFzdGlmeUluc3RhbmNlLCBjb250cm9sbGVySW5zdGFuY2U6IGFueSk6IHZvaWQge1xuICAgIGhvb2tzLmZvckVhY2goaG9vayA9PiB7XG4gICAgICAgIGluc3RhbmNlLmFkZEhvb2soaG9vay5uYW1lLCBjb250cm9sbGVySW5zdGFuY2VbaG9vay5oYW5kbGVyTmFtZV0uYmluZChjb250cm9sbGVySW5zdGFuY2UpKTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gcmVnaXN0ZXJFcnJvckhhbmRsZXJzKGVycm9ySGFuZGxlcnM6IEVycm9ySGFuZGxlcltdLCBpbnN0YW5jZTogRmFzdGlmeUluc3RhbmNlLCBjbGFzc0luc3RhbmNlOiBhbnkpIHtcbiAgICBpbnN0YW5jZS5zZXRFcnJvckhhbmRsZXIoY3JlYXRlRXJyb3JzSGFuZGxlcihlcnJvckhhbmRsZXJzLCBjbGFzc0luc3RhbmNlKSk7XG59XG4iXX0=

@@ -237,3 +237,3 @@ <h1 style="text-align: center">Fastify decorators</h1>

@Hook('onSend')
async (request, reply) {
async onSend(request, reply) {
reply.removeHeader('X-Powered-By');

@@ -240,0 +240,0 @@ }

@@ -117,2 +117,44 @@ <h1 style="text-align: center">Fastify decorators</h1>

### Error handling
`fastify-decorators` also provides abilities to handle error with `@ErrorHandler` decorator.
`@ErrorHandler` may accept error code or type to handle or be empty which means will handle all errors. Let's take a look on example:
```typescript
import { FastifyReply, FastifyRequest } from 'fastify';
import { ErrorHandler, GET, RequestHandler } from 'fastify-decorators';
@GET('/handler-with-error')
export default class HandlerWithErrorHandler extends RequestHandler {
public handle(): Promise<never> {
return Promise.reject({ code: 'NOT_IMPLEMENTED' })
}
@ErrorHandler('NOT_IMPLEMENTED')
handleNotImplemented(error: Error, request: FastifyRequest, reply: FastifyReply): void {
reply.status(422).send({ message: 'Not implemented' });
}
}
```
### Hooks
There are also decorator which allows using [Fastify Hooks]:
```typescript
import { GET, Hook } from 'fastify-decorators';
@GET('/')
export default class Handler extends RequestHandler {
public handle(): Promise<never> {
return Promise.reject({ code: 'NOT_IMPLEMENTED' })
}
@Hook('onSend')
async onSend(request, reply) {
reply.removeHeader('X-Powered-By');
}
}
```
## How it works

@@ -119,0 +161,0 @@

@@ -19,8 +19,5 @@ /**

export interface ControllerHandlersAndHooks<RawServer extends RawServerBase, RawRequest extends RawRequestDefaultExpression<RawServer>, RawReply extends RawReplyDefaultExpression<RawServer>> {
handlers: Handler<RawServer, RawRequest, RawReply>[];
hooks: Hook[];
errorHandlers: ErrorHandler[];
register?: (instance: FastifyInstance<RawServer, RawRequest, RawReply>) => void;
}
export interface Handler<RawServer extends RawServerBase = RawServerDefault, RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>, RawReply extends RawReplyDefaultExpression<RawServer> = RawReplyDefaultExpression<RawServer>> {
export interface Handler {
url: string;

@@ -27,0 +24,0 @@ method: HttpMethods;

@@ -11,2 +11,2 @@ "use strict";

const symbols_1 = require("../symbols");
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9pbnRlcmZhY2VzL2NvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7QUFNSCx3Q0FBcUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQW5kcmV5IENoYWxraW4gPEwyakxpZ2FAZ21haWwuY29tPiAoaHR0cHM6Ly9naXRodWIuY29tL0wyakxpZ2EpLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9MMmpMaWdhL2Zhc3RpZnktZGVjb3JhdG9ycy9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHsgRmFzdGlmeUluc3RhbmNlLCBSb3V0ZVNob3J0aGFuZE9wdGlvbnMgfSBmcm9tICdmYXN0aWZ5JztcbmltcG9ydCB7IEZhc3RpZnlMb2dnZXJJbnN0YW5jZSB9IGZyb20gJ2Zhc3RpZnkvdHlwZXMvbG9nZ2VyJztcbmltcG9ydCB7IFJhd1JlcGx5RGVmYXVsdEV4cHJlc3Npb24sIFJhd1JlcXVlc3REZWZhdWx0RXhwcmVzc2lvbiwgUmF3U2VydmVyQmFzZSwgUmF3U2VydmVyRGVmYXVsdCB9IGZyb20gJ2Zhc3RpZnkvdHlwZXMvdXRpbHMnO1xuaW1wb3J0IHsgSHR0cE1ldGhvZHMgfSBmcm9tICcuLi9kZWNvcmF0b3JzL2hlbHBlcnMvaHR0cC1tZXRob2RzJztcbmltcG9ydCB7IENSRUFUT1IgfSBmcm9tICcuLi9zeW1ib2xzJztcblxuZXhwb3J0IGludGVyZmFjZSBDb250cm9sbGVyQ29uc3RydWN0b3I8UmF3U2VydmVyIGV4dGVuZHMgUmF3U2VydmVyQmFzZSA9IFJhd1NlcnZlckRlZmF1bHQsXG4gICAgUmF3UmVxdWVzdCBleHRlbmRzIFJhd1JlcXVlc3REZWZhdWx0RXhwcmVzc2lvbjxSYXdTZXJ2ZXI+ID0gUmF3UmVxdWVzdERlZmF1bHRFeHByZXNzaW9uPFJhd1NlcnZlcj4sXG4gICAgUmF3UmVwbHkgZXh0ZW5kcyBSYXdSZXBseURlZmF1bHRFeHByZXNzaW9uPFJhd1NlcnZlcj4gPSBSYXdSZXBseURlZmF1bHRFeHByZXNzaW9uPFJhd1NlcnZlcj4sXG4gICAgTG9nZ2VyID0gRmFzdGlmeUxvZ2dlckluc3RhbmNlPiB7XG5cbiAgICBuZXcoKTogYW55O1xuXG4gICAgbmV3KC4uLmFyZ3M6IHVua25vd25bXSk6IGFueTtcblxuICAgIFtDUkVBVE9SXTogQ29udHJvbGxlckhhbmRsZXJzQW5kSG9va3M8UmF3U2VydmVyLCBSYXdSZXF1ZXN0LCBSYXdSZXBseT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udHJvbGxlckhhbmRsZXJzQW5kSG9va3M8UmF3U2VydmVyIGV4dGVuZHMgUmF3U2VydmVyQmFzZSxcbiAgICBSYXdSZXF1ZXN0IGV4dGVuZHMgUmF3UmVxdWVzdERlZmF1bHRFeHByZXNzaW9uPFJhd1NlcnZlcj4sXG4gICAgUmF3UmVwbHkgZXh0ZW5kcyBSYXdSZXBseURlZmF1bHRFeHByZXNzaW9uPFJhd1NlcnZlcj4+IHtcblxuICAgIGhhbmRsZXJzOiBIYW5kbGVyPFJhd1NlcnZlciwgUmF3UmVxdWVzdCwgUmF3UmVwbHk+W107XG4gICAgaG9va3M6IEhvb2tbXTtcbiAgICBlcnJvckhhbmRsZXJzOiBFcnJvckhhbmRsZXJbXTtcbiAgICByZWdpc3Rlcj86IChpbnN0YW5jZTogRmFzdGlmeUluc3RhbmNlPFJhd1NlcnZlciwgUmF3UmVxdWVzdCwgUmF3UmVwbHk+KSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEhhbmRsZXI8UmF3U2VydmVyIGV4dGVuZHMgUmF3U2VydmVyQmFzZSA9IFJhd1NlcnZlckRlZmF1bHQsXG4gICAgUmF3UmVxdWVzdCBleHRlbmRzIFJhd1JlcXVlc3REZWZhdWx0RXhwcmVzc2lvbjxSYXdTZXJ2ZXI+ID0gUmF3UmVxdWVzdERlZmF1bHRFeHByZXNzaW9uPFJhd1NlcnZlcj4sXG4gICAgUmF3UmVwbHkgZXh0ZW5kcyBSYXdSZXBseURlZmF1bHRFeHByZXNzaW9uPFJhd1NlcnZlcj4gPSBSYXdSZXBseURlZmF1bHRFeHByZXNzaW9uPFJhd1NlcnZlcj4+IHtcblxuICAgIHVybDogc3RyaW5nO1xuICAgIG1ldGhvZDogSHR0cE1ldGhvZHM7XG4gICAgb3B0aW9uczogUm91dGVTaG9ydGhhbmRPcHRpb25zO1xuICAgIGhhbmRsZXJNZXRob2Q6IHN0cmluZyB8IHN5bWJvbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFcnJvckhhbmRsZXIge1xuICAgIGFjY2VwdHM8VCBleHRlbmRzIEVycm9yPihlcnJvcj86IFQpOiBib29sZWFuO1xuXG4gICAgaGFuZGxlck5hbWU6IHN0cmluZyB8IHN5bWJvbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBIb29rIHtcbiAgICBuYW1lOiBhbnk7XG4gICAgaGFuZGxlck5hbWU6IHN0cmluZyB8IHN5bWJvbDtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9pbnRlcmZhY2VzL2NvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7QUFNSCx3Q0FBcUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQW5kcmV5IENoYWxraW4gPEwyakxpZ2FAZ21haWwuY29tPiAoaHR0cHM6Ly9naXRodWIuY29tL0wyakxpZ2EpLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9MMmpMaWdhL2Zhc3RpZnktZGVjb3JhdG9ycy9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHsgRmFzdGlmeUluc3RhbmNlLCBSb3V0ZVNob3J0aGFuZE9wdGlvbnMgfSBmcm9tICdmYXN0aWZ5JztcbmltcG9ydCB7IEZhc3RpZnlMb2dnZXJJbnN0YW5jZSB9IGZyb20gJ2Zhc3RpZnkvdHlwZXMvbG9nZ2VyJztcbmltcG9ydCB7IFJhd1JlcGx5RGVmYXVsdEV4cHJlc3Npb24sIFJhd1JlcXVlc3REZWZhdWx0RXhwcmVzc2lvbiwgUmF3U2VydmVyQmFzZSwgUmF3U2VydmVyRGVmYXVsdCB9IGZyb20gJ2Zhc3RpZnkvdHlwZXMvdXRpbHMnO1xuaW1wb3J0IHsgSHR0cE1ldGhvZHMgfSBmcm9tICcuLi9kZWNvcmF0b3JzL2hlbHBlcnMvaHR0cC1tZXRob2RzJztcbmltcG9ydCB7IENSRUFUT1IgfSBmcm9tICcuLi9zeW1ib2xzJztcblxuZXhwb3J0IGludGVyZmFjZSBDb250cm9sbGVyQ29uc3RydWN0b3I8UmF3U2VydmVyIGV4dGVuZHMgUmF3U2VydmVyQmFzZSA9IFJhd1NlcnZlckRlZmF1bHQsXG4gICAgUmF3UmVxdWVzdCBleHRlbmRzIFJhd1JlcXVlc3REZWZhdWx0RXhwcmVzc2lvbjxSYXdTZXJ2ZXI+ID0gUmF3UmVxdWVzdERlZmF1bHRFeHByZXNzaW9uPFJhd1NlcnZlcj4sXG4gICAgUmF3UmVwbHkgZXh0ZW5kcyBSYXdSZXBseURlZmF1bHRFeHByZXNzaW9uPFJhd1NlcnZlcj4gPSBSYXdSZXBseURlZmF1bHRFeHByZXNzaW9uPFJhd1NlcnZlcj4sXG4gICAgTG9nZ2VyID0gRmFzdGlmeUxvZ2dlckluc3RhbmNlPiB7XG5cbiAgICBuZXcoKTogYW55O1xuXG4gICAgbmV3KC4uLmFyZ3M6IHVua25vd25bXSk6IGFueTtcblxuICAgIFtDUkVBVE9SXTogQ29udHJvbGxlckhhbmRsZXJzQW5kSG9va3M8UmF3U2VydmVyLCBSYXdSZXF1ZXN0LCBSYXdSZXBseT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udHJvbGxlckhhbmRsZXJzQW5kSG9va3M8UmF3U2VydmVyIGV4dGVuZHMgUmF3U2VydmVyQmFzZSxcbiAgICBSYXdSZXF1ZXN0IGV4dGVuZHMgUmF3UmVxdWVzdERlZmF1bHRFeHByZXNzaW9uPFJhd1NlcnZlcj4sXG4gICAgUmF3UmVwbHkgZXh0ZW5kcyBSYXdSZXBseURlZmF1bHRFeHByZXNzaW9uPFJhd1NlcnZlcj4+IHtcbiAgICByZWdpc3Rlcj86IChpbnN0YW5jZTogRmFzdGlmeUluc3RhbmNlPFJhd1NlcnZlciwgUmF3UmVxdWVzdCwgUmF3UmVwbHk+KSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEhhbmRsZXIge1xuICAgIHVybDogc3RyaW5nO1xuICAgIG1ldGhvZDogSHR0cE1ldGhvZHM7XG4gICAgb3B0aW9uczogUm91dGVTaG9ydGhhbmRPcHRpb25zO1xuICAgIGhhbmRsZXJNZXRob2Q6IHN0cmluZyB8IHN5bWJvbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFcnJvckhhbmRsZXIge1xuICAgIGFjY2VwdHM8VCBleHRlbmRzIEVycm9yPihlcnJvcj86IFQpOiBib29sZWFuO1xuXG4gICAgaGFuZGxlck5hbWU6IHN0cmluZyB8IHN5bWJvbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBIb29rIHtcbiAgICBuYW1lOiBhbnk7XG4gICAgaGFuZGxlck5hbWU6IHN0cmluZyB8IHN5bWJvbDtcbn1cbiJdfQ==
{
"name": "fastify-decorators",
"version": "3.1.1",
"version": "3.2.0",
"description": "Build your Fastify server with controllers, services and hooks",

@@ -5,0 +5,0 @@ "main": "index.js",

@@ -170,7 +170,7 @@ # Fastify decorators

[Getting Started]: https://github.com/L2jLiga/fastify-decorators/blob/v3.1.1/lib/docs/Getting-Started.md
[Request Handler]: https://github.com/L2jLiga/fastify-decorators/blob/v3.1.1/lib/docs/Request-Handlers.md
[Controllers]: https://github.com/L2jLiga/fastify-decorators/blob/v3.1.1/lib/docs/Controllers.md
[Dependency Injection]: https://github.com/L2jLiga/fastify-decorators/blob/v3.1.1/lib/docs/Dependency-Injection.md
[Testing]: https://github.com/L2jLiga/fastify-decorators/blob/v3.1.1/lib/docs/Testing.md
[Migration guide (V3)]: https://github.com/L2jLiga/fastify-decorators/blob/v3.1.1/lib/docs/Migration-to-v3.md
[Getting Started]: https://github.com/L2jLiga/fastify-decorators/blob/v3.2.0/lib/docs/Getting-Started.md
[Request Handler]: https://github.com/L2jLiga/fastify-decorators/blob/v3.2.0/lib/docs/Request-Handlers.md
[Controllers]: https://github.com/L2jLiga/fastify-decorators/blob/v3.2.0/lib/docs/Controllers.md
[Dependency Injection]: https://github.com/L2jLiga/fastify-decorators/blob/v3.2.0/lib/docs/Dependency-Injection.md
[Testing]: https://github.com/L2jLiga/fastify-decorators/blob/v3.2.0/lib/docs/Testing.md
[Migration guide (V3)]: https://github.com/L2jLiga/fastify-decorators/blob/v3.2.0/lib/docs/Migration-to-v3.md

@@ -10,2 +10,5 @@ /**

export declare const INJECTABLES: unique symbol;
export declare const ERROR_HANDLERS: unique symbol;
export declare const HANDLERS: unique symbol;
export declare const HOOKS: unique symbol;
export declare const FastifyInstanceToken: unique symbol;

@@ -10,6 +10,9 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.FastifyInstanceToken = exports.INJECTABLES = exports.CREATOR = void 0;
exports.CREATOR = Symbol('Uses for storing register method of handler or controller');
exports.INJECTABLES = Symbol('Uses for storing injectables map');
exports.FastifyInstanceToken = exports.HOOKS = exports.HANDLERS = exports.ERROR_HANDLERS = exports.INJECTABLES = exports.CREATOR = void 0;
exports.CREATOR = Symbol('fastify-decorators.creator');
exports.INJECTABLES = Symbol('fastify-decorators.injectables');
exports.ERROR_HANDLERS = Symbol('fastify-decorators.error-handlers');
exports.HANDLERS = Symbol('fastify-decorators.handlers');
exports.HOOKS = Symbol('fastify-decorators.handlers');
exports.FastifyInstanceToken = Symbol('Token to inject FastifyInstance');
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvc3ltYm9scy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7QUFFVSxRQUFBLE9BQU8sR0FBRyxNQUFNLENBQUMsMkRBQTJELENBQUMsQ0FBQztBQUM5RSxRQUFBLFdBQVcsR0FBRyxNQUFNLENBQUMsa0NBQWtDLENBQUMsQ0FBQztBQUV6RCxRQUFBLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFuZHJleSBDaGFsa2luIDxMMmpMaWdhQGdtYWlsLmNvbT4gKGh0dHBzOi8vZ2l0aHViLmNvbS9MMmpMaWdhKS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTDJqTGlnYS9mYXN0aWZ5LWRlY29yYXRvcnMvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmV4cG9ydCBjb25zdCBDUkVBVE9SID0gU3ltYm9sKCdVc2VzIGZvciBzdG9yaW5nIHJlZ2lzdGVyIG1ldGhvZCBvZiBoYW5kbGVyIG9yIGNvbnRyb2xsZXInKTtcbmV4cG9ydCBjb25zdCBJTkpFQ1RBQkxFUyA9IFN5bWJvbCgnVXNlcyBmb3Igc3RvcmluZyBpbmplY3RhYmxlcyBtYXAnKTtcblxuZXhwb3J0IGNvbnN0IEZhc3RpZnlJbnN0YW5jZVRva2VuID0gU3ltYm9sKCdUb2tlbiB0byBpbmplY3QgRmFzdGlmeUluc3RhbmNlJyk7XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvc3ltYm9scy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7QUFFVSxRQUFBLE9BQU8sR0FBRyxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQztBQUMvQyxRQUFBLFdBQVcsR0FBRyxNQUFNLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztBQUN2RCxRQUFBLGNBQWMsR0FBRyxNQUFNLENBQUMsbUNBQW1DLENBQUMsQ0FBQztBQUM3RCxRQUFBLFFBQVEsR0FBRyxNQUFNLENBQUMsNkJBQTZCLENBQUMsQ0FBQztBQUNqRCxRQUFBLEtBQUssR0FBRyxNQUFNLENBQUMsNkJBQTZCLENBQUMsQ0FBQztBQUU5QyxRQUFBLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFuZHJleSBDaGFsa2luIDxMMmpMaWdhQGdtYWlsLmNvbT4gKGh0dHBzOi8vZ2l0aHViLmNvbS9MMmpMaWdhKS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTDJqTGlnYS9mYXN0aWZ5LWRlY29yYXRvcnMvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmV4cG9ydCBjb25zdCBDUkVBVE9SID0gU3ltYm9sKCdmYXN0aWZ5LWRlY29yYXRvcnMuY3JlYXRvcicpO1xuZXhwb3J0IGNvbnN0IElOSkVDVEFCTEVTID0gU3ltYm9sKCdmYXN0aWZ5LWRlY29yYXRvcnMuaW5qZWN0YWJsZXMnKTtcbmV4cG9ydCBjb25zdCBFUlJPUl9IQU5ETEVSUyA9IFN5bWJvbCgnZmFzdGlmeS1kZWNvcmF0b3JzLmVycm9yLWhhbmRsZXJzJyk7XG5leHBvcnQgY29uc3QgSEFORExFUlMgPSBTeW1ib2woJ2Zhc3RpZnktZGVjb3JhdG9ycy5oYW5kbGVycycpO1xuZXhwb3J0IGNvbnN0IEhPT0tTID0gU3ltYm9sKCdmYXN0aWZ5LWRlY29yYXRvcnMuaGFuZGxlcnMnKTtcblxuZXhwb3J0IGNvbnN0IEZhc3RpZnlJbnN0YW5jZVRva2VuID0gU3ltYm9sKCdUb2tlbiB0byBpbmplY3QgRmFzdGlmeUluc3RhbmNlJyk7XG4iXX0=
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc