+
-### Web and services application framework
+# @hapi/hapi
-Lead Maintainer: [Eran Hammer](https://github.com/hueniverse)
+#### The Simple, Secure Framework Developers Trust
-**hapi** is a simple to use configuration-centric framework with built-in support for input validation, caching,
-authentication, and other essential facilities for building web and services applications. **hapi** enables
-developers to focus on writing reusable application logic in a highly modular and prescriptive approach.
+Build powerful, scalable applications, with minimal overhead and full out-of-the-box functionality - your code, your way.
-Version 17.x only supports node v8.9.0 and over. For older version of node please use version 16.x.
+### Visit the [hapi.dev](https://hapi.dev) Developer Portal for tutorials, documentation, and support
-Development version: **17.1.x** ([release notes](https://github.com/hapijs/hapi/issues?labels=release+notes&page=1&state=closed))
-[](http://travis-ci.org/hapijs/hapi)
+## Useful resources
-For the latest updates, [change log](http://hapijs.com/updates), and release information visit [hapijs.com](http://hapijs.com) and follow [@hapijs](https://twitter.com/hapijs) on twitter. If you have questions, please open an issue in the
-[discussion forum](https://github.com/hapijs/discuss).
+- [Documentation and API](https://hapi.dev/)
+- [Version status](https://hapi.dev/resources/status/#hapi) (builds, dependencies, node versions, licenses, eol)
+- [Changelog](https://hapi.dev/resources/changelog/)
+- [Project policies](https://hapi.dev/policies/)
+- [Support](https://hapi.dev/support/)
-# Sponsorship
+## Technical Steering Committee (TSC) Members
-Development of the **hapi** core module generously supported by contributions from [individuals and corporations](https://github.com/hapijs/hapi/blob/master/SPONSORS.md).
-If you are benefiting from **hapi** and would like to help keep the project financially sustainable, please visit
-Eran Hammer's [Patreon page](https://www.patreon.com/eranhammer) or contact him [via email](mailto:eran@hammer.io).
-
-## Featured Sponsors
-
-
-
-[**Lob**](http://bit.ly/lobh-rn) enables you to seamlessly print and mail documents, postcards, checks, and more via an API. They have been an early **hapi** adopters and vocal supporters. If you are looking to take your **hapi** and JS skills to the next level, check out their [career page](http://bit.ly/lobc-rn) for exciting opportunities.
-
-#
-
-(type: 'handler', property: P, method: HandlerDecorationMethod, options?: { apply?: boolean | undefined, extend?: never }): void; + + decorate
(type: 'request', property: ExceptName
, method: (existing: ((...args: any[]) => any)) => (request: Request) => DecorationMethod (type: 'request', property: ExceptName , method: (request: Request) => DecorationMethod (type: 'request', property: ExceptName , method: DecorationMethod (type: 'request', property: ExceptName , value: (existing: ((...args: any[]) => any)) => (request: Request) => any, options: {apply: true, extend: true}): void;
+ decorate (type: 'request', property: ExceptName , value: (request: Request) => any, options: {apply: true, extend?: boolean | undefined}): void;
+ decorate (type: 'request', property: ExceptName , value: DecorationValue, options?: never): void;
+
+ decorate (type: 'toolkit', property: ExceptName , method: (existing: ((...args: any[]) => any)) => DecorationMethod (type: 'toolkit', property: ExceptName , method: DecorationMethod (type: 'toolkit', property: ExceptName , value: (existing: ((...args: any[]) => any)) => any, options: {apply?: boolean | undefined, extend: true}): void;
+ decorate (type: 'toolkit', property: ExceptName , value: DecorationValue, options?: never): void;
+
+ decorate (type: 'server', property: ExceptName , method: (existing: ((...args: any[]) => any)) => DecorationMethod (type: 'server', property: ExceptName , method: DecorationMethod (type: 'server', property: ExceptName , value: (existing: ((...args: any[]) => any)) => any, options: {apply?: boolean | undefined, extend: true}): void;
+ decorate (type: 'server', property: ExceptName , value: DecorationValue, options?: never): void;
+
+ /**
+ * Used within a plugin to declare a required dependency on other plugins where:
+ * @param dependencies - plugins which must be registered in order for this plugin to operate. Plugins listed must be registered before the server is
+ * initialized or started.
+ * @param after - (optional) a function that is called after all the specified dependencies have been registered and before the server starts. The function is only called if the server is
+ * initialized or started. The function signature is async function(server) where: server - the server the dependency() method was called on.
+ * @return Return value: none.
+ * The after method is identical to setting a server extension point on 'onPreStart'.
+ * If a circular dependency is detected, an exception is thrown (e.g. two plugins each has an after function to be called after the other).
+ * The method does not provide version dependency which should be implemented using npm peer dependencies.
+ * [See docs](https://github.com/hapijs/hapi/blob/master/API.md#-serverdependencydependencies-after)
+ */
+ dependency(dependencies: Dependencies, after?: ((server: Server) => Promise