From df8f20f08bf3af50593dde36d23763459d753cab Mon Sep 17 00:00:00 2001 From: Adrien de Peretti Date: Wed, 23 Feb 2022 15:23:34 +0100 Subject: [PATCH] Feat monitoring (#33) * feat: Add monitoring support * feat: Finalise monitoring * docs: Update documentation about monitorin --- README.md | 59 +- docs/README.md | 59 +- docs/classes/Medusa.Medusa-1.md | 29 +- ...tityEvent_decorator.OnMedusaEntityEvent.md | 26 +- ...nt_emmiter.Internals.CustomEventEmmiter.md | 12 +- .../metadata_reader.Internals.CustomMap.md | 2 +- docs/classes/utils.Utils.md | 12 +- .../modules_monitoring.MonitoringOptions.md | 202 +++++ docs/interfaces/types.MedusaMiddleware.md | 4 +- docs/interfaces/types.Type.md | 2 +- docs/modules.md | 1 + docs/modules/constants.md | 6 +- .../decorators_components_decorator.md | 14 +- docs/modules/decorators_module_decorator.md | 2 +- ...ecorators_onMedusaEntityEvent_decorator.md | 10 +- docs/modules/decorators_utils.md | 2 +- docs/modules/event_emmiter.Internals.md | 2 +- docs/modules/event_emmiter.md | 2 +- docs/modules/index.md | 9 +- docs/modules/loaders_api_loader.md | 2 +- docs/modules/loaders_database_loader.md | 2 +- docs/modules/loaders_entities_loader.md | 8 +- docs/modules/loaders_middlewares_loader.md | 4 +- docs/modules/loaders_migrations_loader.md | 2 +- docs/modules/loaders_plugins_loader.md | 2 +- docs/modules/loaders_repository_loader.md | 8 +- docs/modules/loaders_routes_loader.md | 4 +- docs/modules/loaders_services_loader.md | 6 +- docs/modules/loaders_validators_loader.md | 2 +- docs/modules/metadata_reader.md | 4 +- docs/modules/modules_monitoring.md | 34 + docs/modules/types.md | 34 +- package-lock.json | 759 +++++++++++++----- package.json | 9 +- src/Medusa.ts | 19 +- src/index.ts | 2 + src/modules/monitoring.ts | 40 + 37 files changed, 1090 insertions(+), 306 deletions(-) create mode 100644 docs/interfaces/modules_monitoring.MonitoringOptions.md create mode 100644 docs/modules/modules_monitoring.md create mode 100644 src/modules/monitoring.ts diff --git a/README.md b/README.md index 5c3fd291..36dfa4af 100644 --- a/README.md +++ b/README.md @@ -70,6 +70,7 @@ - [Use custom configuration inside service](#use-custom-configuration-inside-service) - [Integration in an existing medusa project](#integration-in-an-existing-medusa-project) - [Decorators API](#decorators-api) +- [Monitoring](#monitoring) # Getting started @@ -133,9 +134,14 @@ npm i medusa-extender > Build a module, export it and share it with the community. +- :chart_with_upwards_trend: Monitor your app + +> Using swagger stats you can access all the stats from the ui in your app or +> use the raw stats to show with grafana, elasticsearch or event kibana. + # Demo: Products scoped per store (Marketplace) -[![Video demo: scoped products per store](https://github.com/adrien2p/medusa-extender/blob/assets/assets/readme/store_scoped_demo_thumbnail.png?raw=true)](https://streamable.com/e/oel4vl) +[![Video demo: scoped products per store](https://raw.githubusercontent.com/adrien2p/medusa-extender/assets/assets/readme/store_scoped_demo_thumbnail.png)](https://streamable.com/e/oel4vl) # Usage @@ -589,7 +595,7 @@ medusa migrations run npm run start ``` -## Decorators API +# Decorators API Here is the list of the provided decorators. @@ -604,6 +610,55 @@ Here is the list of the provided decorators. | `@Migration(/*...*/)` | Decorate a migration | | `@OnMedusaEntityEvent.\*.\*(/*...*/)`| Can be used to send the right event type or register the handler to an event| `(entity: TEntity, { async? boolean; metatype?: Type })` +# Monitoring + +If you want to monitor whats going on on your app, you must specify the config +in your `medusa-config` file. + +Here are the expected config + +```typescript +interface MonitoringOptions { + version?: string; + hostname?: string; + ip?: string; + timelineBucketDuration?: number; + swaggerSpec?: string | OpenAPI.Document; + uriPath: string; + durationBuckets?: number[]; + requestSizeBuckets?: number[]; + responseSizeBuckets?: number[]; + apdexThreshold?: number; + onResponseFinish?: (req: Request, res: Response, next: NextFunction) => void | Promise; + authentication?: boolean; + sessionMaxAge?: number; + elasticsearch?: string; + onAuthenticate?: (req: Request, username: string, password: string) => boolean | Promise; +} +``` + +so your `medusa-config` will looks like + +```typescript +import { MonitoringOptions } from 'medusa-extender'; + +const config = { + /* ... */ + monitoring: { + uriPath: '/monitoring' + } as MonitoringOptions, + /* ... */ +}; +``` + +Now, run your app and go to /monitoring url to get access to your dashboard. + +For more information on the configuration, you can have a look at the [documentation](https://swaggerstats.io/guide/conf.html#options) + +## Demo: Monitoring + +[![Video demo: scoped products per store](https://raw.githubusercontent.com/adrien2p/medusa-extender/assets/assets/readme/monitoring-ss.png)](https://streamable.com/k3ivnk) + # Contribute :ballot_box: Contributions are welcome! You can look at the contribution [guidelines](./CONTRIBUTING.md) diff --git a/docs/README.md b/docs/README.md index 526da273..66194e69 100644 --- a/docs/README.md +++ b/docs/README.md @@ -70,6 +70,7 @@ medusa-extender / [Exports](modules.md) - [Use custom configuration inside service](#use-custom-configuration-inside-service) - [Integration in an existing medusa project](#integration-in-an-existing-medusa-project) - [Decorators API](#decorators-api) +- [Monitoring](#monitoring) # Getting started @@ -133,9 +134,14 @@ npm i medusa-extender > Build a module, export it and share it with the community. +- :chart_with_upwards_trend: Monitor your app + +> Using swagger stats you can access all the stats from the ui in your app or +> use the raw stats to show with grafana, elasticsearch or event kibana. + # Demo: Products scoped per store (Marketplace) -[![Video demo: scoped products per store](https://github.com/adrien2p/medusa-extender/blob/assets/assets/readme/store_scoped_demo_thumbnail.png?raw=true)](https://streamable.com/e/oel4vl) +[![Video demo: scoped products per store](https://raw.githubusercontent.com/adrien2p/medusa-extender/assets/assets/readme/store_scoped_demo_thumbnail.png)](https://streamable.com/e/oel4vl) # Usage @@ -589,7 +595,7 @@ medusa migrations run npm run start ``` -## Decorators API +# Decorators API Here is the list of the provided decorators. @@ -604,6 +610,55 @@ Here is the list of the provided decorators. | `@Migration(/*...*/)` | Decorate a migration | | `@OnMedusaEntityEvent.\*.\*(/*...*/)`| Can be used to send the right event type or register the handler to an event| `(entity: TEntity, { async? boolean; metatype?: Type })` +# Monitoring + +If you want to monitor whats going on on your app, you must specify the config +in your `medusa-config` file. + +Here are the expected config + +```typescript +interface MonitoringOptions { + version?: string; + hostname?: string; + ip?: string; + timelineBucketDuration?: number; + swaggerSpec?: string | OpenAPI.Document; + uriPath: string; + durationBuckets?: number[]; + requestSizeBuckets?: number[]; + responseSizeBuckets?: number[]; + apdexThreshold?: number; + onResponseFinish?: (req: Request, res: Response, next: NextFunction) => void | Promise; + authentication?: boolean; + sessionMaxAge?: number; + elasticsearch?: string; + onAuthenticate?: (req: Request, username: string, password: string) => boolean | Promise; +} +``` + +so your `medusa-config` will looks like + +```typescript +import { MonitoringOptions } from 'medusa-extender'; + +const config = { + /* ... */ + monitoring: { + uriPath: '/monitoring' + } as MonitoringOptions, + /* ... */ +}; +``` + +Now, run your app and go to /monitoring url to get access to your dashboard. + +For more information on the configuration, you can have a look at the [documentation](https://swaggerstats.io/guide/conf.html#options) + +## Demo: Monitoring + +[![Video demo: scoped products per store](https://raw.githubusercontent.com/adrien2p/medusa-extender/assets/assets/readme/monitoring-ss.png)](https://streamable.com/k3ivnk) + # Contribute :ballot_box: Contributions are welcome! You can look at the contribution [guidelines](./CONTRIBUTING.md) diff --git a/docs/classes/Medusa.Medusa-1.md b/docs/classes/Medusa.Medusa-1.md index c448f17e..25fbd9ee 100644 --- a/docs/classes/Medusa.Medusa-1.md +++ b/docs/classes/Medusa.Medusa-1.md @@ -20,6 +20,7 @@ Load medusa and apply all components ### Methods - [load](Medusa.Medusa-1.md#load) +- [loadMonitoringModuleIfNecessary](Medusa.Medusa-1.md#loadmonitoringmoduleifnecessary) ## Constructors @@ -36,7 +37,7 @@ Load medusa and apply all components #### Defined in -[src/Medusa.ts:36](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/Medusa.ts#L36) +[src/Medusa.ts:38](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/Medusa.ts#L38) ## Properties @@ -46,7 +47,7 @@ Load medusa and apply all components #### Defined in -[src/Medusa.ts:29](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/Medusa.ts#L29) +[src/Medusa.ts:31](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/Medusa.ts#L31) ___ @@ -56,7 +57,7 @@ ___ #### Defined in -[src/Medusa.ts:30](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/Medusa.ts#L30) +[src/Medusa.ts:32](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/Medusa.ts#L32) ## Methods @@ -66,9 +67,9 @@ ___ #### Parameters -| Name | Type | -| :------ | :------ | -| `modules` | [`Constructor`](../modules/types.md#constructor)<`unknown`\>[] | +| Name | Type | Description | +| :------ | :------ | :------ | +| `modules` | [`Constructor`](../modules/types.md#constructor)<`unknown`\>[] | The modules to load into medusa | #### Returns @@ -76,4 +77,18 @@ ___ #### Defined in -[src/Medusa.ts:44](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/Medusa.ts#L44) +[src/Medusa.ts:46](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/Medusa.ts#L46) + +___ + +### loadMonitoringModuleIfNecessary + +▸ `Private` **loadMonitoringModuleIfNecessary**(): `Promise`<`void`\> + +#### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/Medusa.ts:76](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/Medusa.ts#L76) diff --git a/docs/classes/decorators_onMedusaEntityEvent_decorator.OnMedusaEntityEvent.md b/docs/classes/decorators_onMedusaEntityEvent_decorator.OnMedusaEntityEvent.md index 7a98679a..0a229bd2 100644 --- a/docs/classes/decorators_onMedusaEntityEvent_decorator.OnMedusaEntityEvent.md +++ b/docs/classes/decorators_onMedusaEntityEvent_decorator.OnMedusaEntityEvent.md @@ -45,7 +45,7 @@ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:42](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/decorators/onMedusaEntityEvent.decorator.ts#L42) +[src/decorators/onMedusaEntityEvent.decorator.ts:42](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/decorators/onMedusaEntityEvent.decorator.ts#L42) ## Properties @@ -55,7 +55,7 @@ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:40](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/decorators/onMedusaEntityEvent.decorator.ts#L40) +[src/decorators/onMedusaEntityEvent.decorator.ts:40](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/decorators/onMedusaEntityEvent.decorator.ts#L40) ___ @@ -65,7 +65,7 @@ ___ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:39](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/decorators/onMedusaEntityEvent.decorator.ts#L39) +[src/decorators/onMedusaEntityEvent.decorator.ts:39](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/decorators/onMedusaEntityEvent.decorator.ts#L39) ## Accessors @@ -79,7 +79,7 @@ ___ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:50](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/decorators/onMedusaEntityEvent.decorator.ts#L50) +[src/decorators/onMedusaEntityEvent.decorator.ts:50](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/decorators/onMedusaEntityEvent.decorator.ts#L50) ___ @@ -93,7 +93,7 @@ ___ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:46](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/decorators/onMedusaEntityEvent.decorator.ts#L46) +[src/decorators/onMedusaEntityEvent.decorator.ts:46](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/decorators/onMedusaEntityEvent.decorator.ts#L46) ## Methods @@ -120,7 +120,7 @@ ___ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:70](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/decorators/onMedusaEntityEvent.decorator.ts#L70) +[src/decorators/onMedusaEntityEvent.decorator.ts:70](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/decorators/onMedusaEntityEvent.decorator.ts#L70) ___ @@ -146,7 +146,7 @@ ___ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:58](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/decorators/onMedusaEntityEvent.decorator.ts#L58) +[src/decorators/onMedusaEntityEvent.decorator.ts:58](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/decorators/onMedusaEntityEvent.decorator.ts#L58) ___ @@ -173,7 +173,7 @@ ___ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:84](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/decorators/onMedusaEntityEvent.decorator.ts#L84) +[src/decorators/onMedusaEntityEvent.decorator.ts:84](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/decorators/onMedusaEntityEvent.decorator.ts#L84) ___ @@ -199,7 +199,7 @@ ___ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:66](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/decorators/onMedusaEntityEvent.decorator.ts#L66) +[src/decorators/onMedusaEntityEvent.decorator.ts:66](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/decorators/onMedusaEntityEvent.decorator.ts#L66) ___ @@ -226,7 +226,7 @@ ___ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:77](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/decorators/onMedusaEntityEvent.decorator.ts#L77) +[src/decorators/onMedusaEntityEvent.decorator.ts:77](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/decorators/onMedusaEntityEvent.decorator.ts#L77) ___ @@ -252,7 +252,7 @@ ___ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:62](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/decorators/onMedusaEntityEvent.decorator.ts#L62) +[src/decorators/onMedusaEntityEvent.decorator.ts:62](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/decorators/onMedusaEntityEvent.decorator.ts#L62) ___ @@ -280,7 +280,7 @@ ___ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:91](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/decorators/onMedusaEntityEvent.decorator.ts#L91) +[src/decorators/onMedusaEntityEvent.decorator.ts:91](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/decorators/onMedusaEntityEvent.decorator.ts#L91) ___ @@ -300,4 +300,4 @@ ___ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:54](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/decorators/onMedusaEntityEvent.decorator.ts#L54) +[src/decorators/onMedusaEntityEvent.decorator.ts:54](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/decorators/onMedusaEntityEvent.decorator.ts#L54) diff --git a/docs/classes/event_emmiter.Internals.CustomEventEmmiter.md b/docs/classes/event_emmiter.Internals.CustomEventEmmiter.md index 7516e2e4..f66ed0f5 100644 --- a/docs/classes/event_emmiter.Internals.CustomEventEmmiter.md +++ b/docs/classes/event_emmiter.Internals.CustomEventEmmiter.md @@ -41,7 +41,7 @@ EventEmitter.constructor #### Defined in -[src/event-emmiter.ts:21](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/event-emmiter.ts#L21) +[src/event-emmiter.ts:21](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/event-emmiter.ts#L21) ## Properties @@ -51,7 +51,7 @@ EventEmitter.constructor #### Defined in -[src/event-emmiter.ts:19](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/event-emmiter.ts#L19) +[src/event-emmiter.ts:19](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/event-emmiter.ts#L19) ## Methods @@ -80,7 +80,7 @@ Emit an asynchrone event entity based and wait for the result. #### Defined in -[src/event-emmiter.ts:80](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/event-emmiter.ts#L80) +[src/event-emmiter.ts:80](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/event-emmiter.ts#L80) ___ @@ -110,7 +110,7 @@ Register a new event handler. #### Defined in -[src/event-emmiter.ts:31](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/event-emmiter.ts#L31) +[src/event-emmiter.ts:31](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/event-emmiter.ts#L31) ___ @@ -132,7 +132,7 @@ Apply all event handlers hold by the `listenerDescriptor`. #### Defined in -[src/event-emmiter.ts:43](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/event-emmiter.ts#L43) +[src/event-emmiter.ts:43](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/event-emmiter.ts#L43) ___ @@ -146,4 +146,4 @@ ___ #### Defined in -[src/event-emmiter.ts:68](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/event-emmiter.ts#L68) +[src/event-emmiter.ts:68](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/event-emmiter.ts#L68) diff --git a/docs/classes/metadata_reader.Internals.CustomMap.md b/docs/classes/metadata_reader.Internals.CustomMap.md index 5d757e8e..f2641eea 100644 --- a/docs/classes/metadata_reader.Internals.CustomMap.md +++ b/docs/classes/metadata_reader.Internals.CustomMap.md @@ -84,4 +84,4 @@ Map.get #### Defined in -[src/metadata-reader.ts:5](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/metadata-reader.ts#L5) +[src/metadata-reader.ts:5](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/metadata-reader.ts#L5) diff --git a/docs/classes/utils.Utils.md b/docs/classes/utils.Utils.md index 8518d682..7a19c2fe 100644 --- a/docs/classes/utils.Utils.md +++ b/docs/classes/utils.Utils.md @@ -56,7 +56,7 @@ Attach a new subscriber to a specific entities. #### Defined in -[src/utils.ts:37](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/utils.ts#L37) +[src/utils.ts:37](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/utils.ts#L37) ___ @@ -80,7 +80,7 @@ Prepare the log to be shown to be consistent everywhere. #### Defined in -[src/utils.ts:68](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/utils.ts#L68) +[src/utils.ts:68](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/utils.ts#L68) ___ @@ -102,7 +102,7 @@ Log all the routes from the express instance. #### Defined in -[src/utils.ts:58](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/utils.ts#L58) +[src/utils.ts:58](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/utils.ts#L58) ___ @@ -123,7 +123,7 @@ ___ #### Defined in -[src/utils.ts:82](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/utils.ts#L82) +[src/utils.ts:82](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/utils.ts#L82) ___ @@ -153,7 +153,7 @@ Since it is not possible to use multiple extend, you can use that utilities to a #### Defined in -[src/utils.ts:17](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/utils.ts#L17) +[src/utils.ts:17](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/utils.ts#L17) ___ @@ -173,4 +173,4 @@ ___ #### Defined in -[src/utils.ts:102](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/utils.ts#L102) +[src/utils.ts:102](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/utils.ts#L102) diff --git a/docs/interfaces/modules_monitoring.MonitoringOptions.md b/docs/interfaces/modules_monitoring.MonitoringOptions.md new file mode 100644 index 00000000..8711ec2c --- /dev/null +++ b/docs/interfaces/modules_monitoring.MonitoringOptions.md @@ -0,0 +1,202 @@ +[medusa-extender](../README.md) / [Exports](../modules.md) / [modules/monitoring](../modules/modules_monitoring.md) / MonitoringOptions + +# Interface: MonitoringOptions + +[modules/monitoring](../modules/modules_monitoring.md).MonitoringOptions + +## Table of contents + +### Properties + +- [apdexThreshold](modules_monitoring.MonitoringOptions.md#apdexthreshold) +- [authentication](modules_monitoring.MonitoringOptions.md#authentication) +- [durationBuckets](modules_monitoring.MonitoringOptions.md#durationbuckets) +- [elasticsearch](modules_monitoring.MonitoringOptions.md#elasticsearch) +- [hostname](modules_monitoring.MonitoringOptions.md#hostname) +- [ip](modules_monitoring.MonitoringOptions.md#ip) +- [requestSizeBuckets](modules_monitoring.MonitoringOptions.md#requestsizebuckets) +- [responseSizeBuckets](modules_monitoring.MonitoringOptions.md#responsesizebuckets) +- [sessionMaxAge](modules_monitoring.MonitoringOptions.md#sessionmaxage) +- [swaggerSpec](modules_monitoring.MonitoringOptions.md#swaggerspec) +- [timelineBucketDuration](modules_monitoring.MonitoringOptions.md#timelinebucketduration) +- [uriPath](modules_monitoring.MonitoringOptions.md#uripath) +- [version](modules_monitoring.MonitoringOptions.md#version) + +### Methods + +- [onAuthenticate](modules_monitoring.MonitoringOptions.md#onauthenticate) +- [onResponseFinish](modules_monitoring.MonitoringOptions.md#onresponsefinish) + +## Properties + +### apdexThreshold + +• `Optional` **apdexThreshold**: `number` + +#### Defined in + +[src/modules/monitoring.ts:15](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/modules/monitoring.ts#L15) + +___ + +### authentication + +• `Optional` **authentication**: `boolean` + +#### Defined in + +[src/modules/monitoring.ts:17](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/modules/monitoring.ts#L17) + +___ + +### durationBuckets + +• `Optional` **durationBuckets**: `number`[] + +#### Defined in + +[src/modules/monitoring.ts:12](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/modules/monitoring.ts#L12) + +___ + +### elasticsearch + +• `Optional` **elasticsearch**: `string` + +#### Defined in + +[src/modules/monitoring.ts:19](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/modules/monitoring.ts#L19) + +___ + +### hostname + +• `Optional` **hostname**: `string` + +#### Defined in + +[src/modules/monitoring.ts:7](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/modules/monitoring.ts#L7) + +___ + +### ip + +• `Optional` **ip**: `string` + +#### Defined in + +[src/modules/monitoring.ts:8](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/modules/monitoring.ts#L8) + +___ + +### requestSizeBuckets + +• `Optional` **requestSizeBuckets**: `number`[] + +#### Defined in + +[src/modules/monitoring.ts:13](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/modules/monitoring.ts#L13) + +___ + +### responseSizeBuckets + +• `Optional` **responseSizeBuckets**: `number`[] + +#### Defined in + +[src/modules/monitoring.ts:14](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/modules/monitoring.ts#L14) + +___ + +### sessionMaxAge + +• `Optional` **sessionMaxAge**: `number` + +#### Defined in + +[src/modules/monitoring.ts:18](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/modules/monitoring.ts#L18) + +___ + +### swaggerSpec + +• `Optional` **swaggerSpec**: `string` \| `Document`<{}\> + +#### Defined in + +[src/modules/monitoring.ts:10](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/modules/monitoring.ts#L10) + +___ + +### timelineBucketDuration + +• `Optional` **timelineBucketDuration**: `number` + +#### Defined in + +[src/modules/monitoring.ts:9](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/modules/monitoring.ts#L9) + +___ + +### uriPath + +• **uriPath**: `string` + +#### Defined in + +[src/modules/monitoring.ts:11](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/modules/monitoring.ts#L11) + +___ + +### version + +• `Optional` **version**: `string` + +#### Defined in + +[src/modules/monitoring.ts:6](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/modules/monitoring.ts#L6) + +## Methods + +### onAuthenticate + +▸ `Optional` **onAuthenticate**(`req`, `username`, `password`): `boolean` \| `Promise`<`boolean`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `req` | `Request`<`ParamsDictionary`, `any`, `any`, `ParsedQs`, `Record`<`string`, `any`\>\> | +| `username` | `string` | +| `password` | `string` | + +#### Returns + +`boolean` \| `Promise`<`boolean`\> + +#### Defined in + +[src/modules/monitoring.ts:20](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/modules/monitoring.ts#L20) + +___ + +### onResponseFinish + +▸ `Optional` **onResponseFinish**(`req`, `res`, `next`): `void` \| `Promise`<`void`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `req` | `Request`<`ParamsDictionary`, `any`, `any`, `ParsedQs`, `Record`<`string`, `any`\>\> | +| `res` | `Response`<`any`, `Record`<`string`, `any`\>\> | +| `next` | `NextFunction` | + +#### Returns + +`void` \| `Promise`<`void`\> + +#### Defined in + +[src/modules/monitoring.ts:16](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/modules/monitoring.ts#L16) diff --git a/docs/interfaces/types.MedusaMiddleware.md b/docs/interfaces/types.MedusaMiddleware.md index fdc44c81..70dd3e1d 100644 --- a/docs/interfaces/types.MedusaMiddleware.md +++ b/docs/interfaces/types.MedusaMiddleware.md @@ -23,7 +23,7 @@ Describe a custom middleware instance. | Name | Type | | :------ | :------ | -| `req` | [`MedusaAuthenticatedRequest`](../modules/types.md#medusaauthenticatedrequest) \| `Request`<`ParamsDictionary`, `any`, `any`, `ParsedQs`, `Record`<`string`, `any`\>\> | +| `req` | `Request`<`ParamsDictionary`, `any`, `any`, `ParsedQs`, `Record`<`string`, `any`\>\> \| [`MedusaAuthenticatedRequest`](../modules/types.md#medusaauthenticatedrequest) | | `res` | `Response`<`any`, `Record`<`string`, `any`\>\> | | `next` | `NextFunction` | @@ -33,4 +33,4 @@ Describe a custom middleware instance. #### Defined in -[src/types.ts:152](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/types.ts#L152) +[src/types.ts:152](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/types.ts#L152) diff --git a/docs/interfaces/types.Type.md b/docs/interfaces/types.Type.md index 26ebc3ff..859ac5d5 100644 --- a/docs/interfaces/types.Type.md +++ b/docs/interfaces/types.Type.md @@ -40,4 +40,4 @@ Function.constructor #### Defined in -[src/types.ts:6](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/types.ts#L6) +[src/types.ts:6](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/types.ts#L6) diff --git a/docs/modules.md b/docs/modules.md index 1be089ef..c7496796 100644 --- a/docs/modules.md +++ b/docs/modules.md @@ -27,5 +27,6 @@ - [loaders/services.loader](modules/loaders_services_loader.md) - [loaders/validators.loader](modules/loaders_validators_loader.md) - [metadata-reader](modules/metadata_reader.md) +- [modules/monitoring](modules/modules_monitoring.md) - [types](modules/types.md) - [utils](modules/utils.md) diff --git a/docs/modules/constants.md b/docs/modules/constants.md index bcf2cd72..c5c3650a 100644 --- a/docs/modules/constants.md +++ b/docs/modules/constants.md @@ -20,7 +20,7 @@ Metadata key to store config from decorated injectables. #### Defined in -[src/constants.ts:9](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/constants.ts#L9) +[src/constants.ts:9](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/constants.ts#L9) ___ @@ -66,7 +66,7 @@ Hold the name of the medusa services registered into the container for later on #### Defined in -[src/constants.ts:14](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/constants.ts#L14) +[src/constants.ts:14](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/constants.ts#L14) ___ @@ -78,4 +78,4 @@ Metadata key to store config from decorated injectables. #### Defined in -[src/constants.ts:4](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/constants.ts#L4) +[src/constants.ts:4](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/constants.ts#L4) diff --git a/docs/modules/decorators_components_decorator.md b/docs/modules/decorators_components_decorator.md index 26667a5d..4f00e740 100644 --- a/docs/modules/decorators_components_decorator.md +++ b/docs/modules/decorators_components_decorator.md @@ -40,7 +40,7 @@ Mark a class as an entity to be used by the loader. #### Defined in -[src/decorators/components.decorator.ts:16](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/decorators/components.decorator.ts#L16) +[src/decorators/components.decorator.ts:16](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/decorators/components.decorator.ts#L16) ___ @@ -62,7 +62,7 @@ Mark a class as a middleware to be used by the loader. #### Defined in -[src/decorators/components.decorator.ts:43](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/decorators/components.decorator.ts#L43) +[src/decorators/components.decorator.ts:43](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/decorators/components.decorator.ts#L43) ___ @@ -78,7 +78,7 @@ Mark a class as a migration to be used by the loader. #### Defined in -[src/decorators/components.decorator.ts:51](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/decorators/components.decorator.ts#L51) +[src/decorators/components.decorator.ts:51](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/decorators/components.decorator.ts#L51) ___ @@ -106,7 +106,7 @@ Mark a class as a repository to be used by the loader. #### Defined in -[src/decorators/components.decorator.ts:34](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/decorators/components.decorator.ts#L34) +[src/decorators/components.decorator.ts:34](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/decorators/components.decorator.ts#L34) ___ @@ -128,7 +128,7 @@ Mark a class as a router to be used by the loader. #### Defined in -[src/decorators/components.decorator.ts:60](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/decorators/components.decorator.ts#L60) +[src/decorators/components.decorator.ts:60](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/decorators/components.decorator.ts#L60) ___ @@ -156,7 +156,7 @@ Mark a class as a service to be used by the loader. #### Defined in -[src/decorators/components.decorator.ts:25](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/decorators/components.decorator.ts#L25) +[src/decorators/components.decorator.ts:25](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/decorators/components.decorator.ts#L25) ___ @@ -178,4 +178,4 @@ Mark a class as a validator to be used by the validator utility. #### Defined in -[src/decorators/components.decorator.ts:69](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/decorators/components.decorator.ts#L69) +[src/decorators/components.decorator.ts:69](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/decorators/components.decorator.ts#L69) diff --git a/docs/modules/decorators_module_decorator.md b/docs/modules/decorators_module_decorator.md index 6c18047b..4b2cf72f 100644 --- a/docs/modules/decorators_module_decorator.md +++ b/docs/modules/decorators_module_decorator.md @@ -29,4 +29,4 @@ Mark a class as aa module and store all injectable on it. #### Defined in -[src/decorators/module.decorator.ts:9](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/decorators/module.decorator.ts#L9) +[src/decorators/module.decorator.ts:9](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/decorators/module.decorator.ts#L9) diff --git a/docs/modules/decorators_onMedusaEntityEvent_decorator.md b/docs/modules/decorators_onMedusaEntityEvent_decorator.md index 14cc5957..63149446 100644 --- a/docs/modules/decorators_onMedusaEntityEvent_decorator.md +++ b/docs/modules/decorators_onMedusaEntityEvent_decorator.md @@ -24,7 +24,7 @@ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:11](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/decorators/onMedusaEntityEvent.decorator.ts#L11) +[src/decorators/onMedusaEntityEvent.decorator.ts:11](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/decorators/onMedusaEntityEvent.decorator.ts#L11) ___ @@ -41,7 +41,7 @@ ___ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:6](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/decorators/onMedusaEntityEvent.decorator.ts#L6) +[src/decorators/onMedusaEntityEvent.decorator.ts:6](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/decorators/onMedusaEntityEvent.decorator.ts#L6) ___ @@ -60,7 +60,7 @@ Event types that can be emitted. #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:16](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/decorators/onMedusaEntityEvent.decorator.ts#L16) +[src/decorators/onMedusaEntityEvent.decorator.ts:16](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/decorators/onMedusaEntityEvent.decorator.ts#L16) ___ @@ -86,7 +86,7 @@ The arguments expected by the [OnMedusaEntityEvent](../classes/decorators_onMedu #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:25](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/decorators/onMedusaEntityEvent.decorator.ts#L25) +[src/decorators/onMedusaEntityEvent.decorator.ts:25](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/decorators/onMedusaEntityEvent.decorator.ts#L25) ___ @@ -112,4 +112,4 @@ The arguments expected by the event handler. #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:33](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/decorators/onMedusaEntityEvent.decorator.ts#L33) +[src/decorators/onMedusaEntityEvent.decorator.ts:33](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/decorators/onMedusaEntityEvent.decorator.ts#L33) diff --git a/docs/modules/decorators_utils.md b/docs/modules/decorators_utils.md index f4d5f99c..dc51a628 100644 --- a/docs/modules/decorators_utils.md +++ b/docs/modules/decorators_utils.md @@ -32,4 +32,4 @@ #### Defined in -[src/decorators/utils.ts:4](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/decorators/utils.ts#L4) +[src/decorators/utils.ts:4](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/decorators/utils.ts#L4) diff --git a/docs/modules/event_emmiter.Internals.md b/docs/modules/event_emmiter.Internals.md index 93729fa5..9d1cb557 100644 --- a/docs/modules/event_emmiter.Internals.md +++ b/docs/modules/event_emmiter.Internals.md @@ -38,4 +38,4 @@ A listener descriptor. #### Defined in -[src/event-emmiter.ts:9](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/event-emmiter.ts#L9) +[src/event-emmiter.ts:9](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/event-emmiter.ts#L9) diff --git a/docs/modules/event_emmiter.md b/docs/modules/event_emmiter.md index 08bd3d2d..143c7dc1 100644 --- a/docs/modules/event_emmiter.md +++ b/docs/modules/event_emmiter.md @@ -23,4 +23,4 @@ Export the instance of the event emmiter. #### Defined in -[src/event-emmiter.ts:102](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/event-emmiter.ts#L102) +[src/event-emmiter.ts:102](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/event-emmiter.ts#L102) diff --git a/docs/modules/index.md b/docs/modules/index.md index f2dd7947..d898c139 100644 --- a/docs/modules/index.md +++ b/docs/modules/index.md @@ -32,6 +32,7 @@ - [Migration](index.md#migration) - [MixinReturnType](index.md#mixinreturntype) - [Module](index.md#module) +- [MonitoringOptions](index.md#monitoringoptions) - [OnMedusaEntityEvent](index.md#onmedusaentityevent) - [Repository](index.md#repository) - [RepositoryInjectableOptions](index.md#repositoryinjectableoptions) @@ -206,6 +207,12 @@ Re-exports [Module](decorators_module_decorator.md#module) ___ +### MonitoringOptions + +Re-exports [MonitoringOptions](../interfaces/modules_monitoring.MonitoringOptions.md) + +___ + ### OnMedusaEntityEvent Re-exports [OnMedusaEntityEvent](../classes/decorators_onMedusaEntityEvent_decorator.OnMedusaEntityEvent.md) @@ -285,4 +292,4 @@ Renames and re-exports [customEventEmitter](event_emmiter.md#customeventemitter) #### Defined in -[src/index.ts:25](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/index.ts#L25) +[src/index.ts:27](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/index.ts#L27) diff --git a/docs/modules/loaders_api_loader.md b/docs/modules/loaders_api_loader.md index fce12539..5d89f615 100644 --- a/docs/modules/loaders_api_loader.md +++ b/docs/modules/loaders_api_loader.md @@ -30,4 +30,4 @@ Decorate the original api loader to apply our custom middleware first. #### Defined in -[src/loaders/api.loader.ts:12](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/loaders/api.loader.ts#L12) +[src/loaders/api.loader.ts:12](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/loaders/api.loader.ts#L12) diff --git a/docs/modules/loaders_database_loader.md b/docs/modules/loaders_database_loader.md index 4c06277a..871c424c 100644 --- a/docs/modules/loaders_database_loader.md +++ b/docs/modules/loaders_database_loader.md @@ -27,4 +27,4 @@ #### Defined in -[src/loaders/database.loader.ts:5](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/loaders/database.loader.ts#L5) +[src/loaders/database.loader.ts:5](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/loaders/database.loader.ts#L5) diff --git a/docs/modules/loaders_entities_loader.md b/docs/modules/loaders_entities_loader.md index 42b3e2a1..a48accb8 100644 --- a/docs/modules/loaders_entities_loader.md +++ b/docs/modules/loaders_entities_loader.md @@ -30,7 +30,7 @@ #### Defined in -[src/loaders/entities.loader.ts:5](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/loaders/entities.loader.ts#L5) +[src/loaders/entities.loader.ts:5](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/loaders/entities.loader.ts#L5) ___ @@ -50,7 +50,7 @@ ___ #### Defined in -[src/loaders/entities.loader.ts:16](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/loaders/entities.loader.ts#L16) +[src/loaders/entities.loader.ts:16](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/loaders/entities.loader.ts#L16) ___ @@ -73,7 +73,7 @@ Load custom entity and override existing ones. #### Defined in -[src/loaders/entities.loader.ts:49](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/loaders/entities.loader.ts#L49) +[src/loaders/entities.loader.ts:49](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/loaders/entities.loader.ts#L49) ___ @@ -97,4 +97,4 @@ Load custom entity into the container. #### Defined in -[src/loaders/entities.loader.ts:30](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/loaders/entities.loader.ts#L30) +[src/loaders/entities.loader.ts:30](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/loaders/entities.loader.ts#L30) diff --git a/docs/modules/loaders_middlewares_loader.md b/docs/modules/loaders_middlewares_loader.md index 13ac699f..0efdbe41 100644 --- a/docs/modules/loaders_middlewares_loader.md +++ b/docs/modules/loaders_middlewares_loader.md @@ -32,7 +32,7 @@ Register custom middlewares into medusa middleware service to be applied at the #### Defined in -[src/loaders/middlewares.loader.ts:13](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/loaders/middlewares.loader.ts#L13) +[src/loaders/middlewares.loader.ts:13](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/loaders/middlewares.loader.ts#L13) ___ @@ -77,4 +77,4 @@ ___ #### Defined in -[src/loaders/middlewares.loader.ts:39](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/loaders/middlewares.loader.ts#L39) +[src/loaders/middlewares.loader.ts:39](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/loaders/middlewares.loader.ts#L39) diff --git a/docs/modules/loaders_migrations_loader.md b/docs/modules/loaders_migrations_loader.md index f2a20664..758ccc6f 100644 --- a/docs/modules/loaders_migrations_loader.md +++ b/docs/modules/loaders_migrations_loader.md @@ -30,4 +30,4 @@ Run custom migrations that are find from the provided directory and stored in a #### Defined in -[src/loaders/migrations.loader.ts:10](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/loaders/migrations.loader.ts#L10) +[src/loaders/migrations.loader.ts:10](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/loaders/migrations.loader.ts#L10) diff --git a/docs/modules/loaders_plugins_loader.md b/docs/modules/loaders_plugins_loader.md index cc50d7fd..a4d7f0e0 100644 --- a/docs/modules/loaders_plugins_loader.md +++ b/docs/modules/loaders_plugins_loader.md @@ -29,4 +29,4 @@ Register all listeners before the plugins are loaded to be sure that the scope m #### Defined in -[src/loaders/plugins.loader.ts:11](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/loaders/plugins.loader.ts#L11) +[src/loaders/plugins.loader.ts:11](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/loaders/plugins.loader.ts#L11) diff --git a/docs/modules/loaders_repository_loader.md b/docs/modules/loaders_repository_loader.md index 5bd7fe82..0afdd485 100644 --- a/docs/modules/loaders_repository_loader.md +++ b/docs/modules/loaders_repository_loader.md @@ -29,7 +29,7 @@ #### Defined in -[src/loaders/repository.loader.ts:16](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/loaders/repository.loader.ts#L16) +[src/loaders/repository.loader.ts:16](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/loaders/repository.loader.ts#L16) ___ @@ -52,7 +52,7 @@ Load custom repositories and override existing ones. #### Defined in -[src/loaders/repository.loader.ts:48](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/loaders/repository.loader.ts#L48) +[src/loaders/repository.loader.ts:48](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/loaders/repository.loader.ts#L48) ___ @@ -76,7 +76,7 @@ Load custom repository into the container. #### Defined in -[src/loaders/repository.loader.ts:30](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/loaders/repository.loader.ts#L30) +[src/loaders/repository.loader.ts:30](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/loaders/repository.loader.ts#L30) ___ @@ -97,4 +97,4 @@ ___ #### Defined in -[src/loaders/repository.loader.ts:5](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/loaders/repository.loader.ts#L5) +[src/loaders/repository.loader.ts:5](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/loaders/repository.loader.ts#L5) diff --git a/docs/modules/loaders_routes_loader.md b/docs/modules/loaders_routes_loader.md index 420a490d..4a4d1b0c 100644 --- a/docs/modules/loaders_routes_loader.md +++ b/docs/modules/loaders_routes_loader.md @@ -28,7 +28,7 @@ #### Defined in -[src/loaders/routes.loader.ts:4](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/loaders/routes.loader.ts#L4) +[src/loaders/routes.loader.ts:4](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/loaders/routes.loader.ts#L4) ___ @@ -49,4 +49,4 @@ ___ #### Defined in -[src/loaders/routes.loader.ts:14](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/loaders/routes.loader.ts#L14) +[src/loaders/routes.loader.ts:14](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/loaders/routes.loader.ts#L14) diff --git a/docs/modules/loaders_services_loader.md b/docs/modules/loaders_services_loader.md index 6a499bcf..df4296aa 100644 --- a/docs/modules/loaders_services_loader.md +++ b/docs/modules/loaders_services_loader.md @@ -33,7 +33,7 @@ Load custom service and override existing ones. #### Defined in -[src/loaders/services.loader.ts:55](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/loaders/services.loader.ts#L55) +[src/loaders/services.loader.ts:55](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/loaders/services.loader.ts#L55) ___ @@ -58,7 +58,7 @@ Load custom service into the container. #### Defined in -[src/loaders/services.loader.ts:31](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/loaders/services.loader.ts#L31) +[src/loaders/services.loader.ts:31](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/loaders/services.loader.ts#L31) ___ @@ -81,4 +81,4 @@ Load custom services from the rootDir. #### Defined in -[src/loaders/services.loader.ts:9](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/loaders/services.loader.ts#L9) +[src/loaders/services.loader.ts:9](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/loaders/services.loader.ts#L9) diff --git a/docs/modules/loaders_validators_loader.md b/docs/modules/loaders_validators_loader.md index 0a1fcddc..ccb4351c 100644 --- a/docs/modules/loaders_validators_loader.md +++ b/docs/modules/loaders_validators_loader.md @@ -26,4 +26,4 @@ #### Defined in -[src/loaders/validators.loader.ts:4](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/loaders/validators.loader.ts#L4) +[src/loaders/validators.loader.ts:4](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/loaders/validators.loader.ts#L4) diff --git a/docs/modules/metadata_reader.md b/docs/modules/metadata_reader.md index bf1d7cb5..e4996b78 100644 --- a/docs/modules/metadata_reader.md +++ b/docs/modules/metadata_reader.md @@ -40,7 +40,7 @@ Return the options from components. #### Defined in -[src/metadata-reader.ts:36](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/metadata-reader.ts#L36) +[src/metadata-reader.ts:36](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/metadata-reader.ts#L36) ___ @@ -62,4 +62,4 @@ Read all metadata from the imported modules and extract components that will be #### Defined in -[src/metadata-reader.ts:14](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/metadata-reader.ts#L14) +[src/metadata-reader.ts:14](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/metadata-reader.ts#L14) diff --git a/docs/modules/modules_monitoring.md b/docs/modules/modules_monitoring.md new file mode 100644 index 00000000..72e5e181 --- /dev/null +++ b/docs/modules/modules_monitoring.md @@ -0,0 +1,34 @@ +[medusa-extender](../README.md) / [Exports](../modules.md) / modules/monitoring + +# Module: modules/monitoring + +## Table of contents + +### Interfaces + +- [MonitoringOptions](../interfaces/modules_monitoring.MonitoringOptions.md) + +### Functions + +- [buildMonitoringMiddleware](modules_monitoring.md#buildmonitoringmiddleware) + +## Functions + +### buildMonitoringMiddleware + +▸ **buildMonitoringMiddleware**(`app`, `options`): `Promise`<`void`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `app` | `Express` | +| `options` | [`MonitoringOptions`](../interfaces/modules_monitoring.MonitoringOptions.md) | + +#### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/modules/monitoring.ts:23](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/modules/monitoring.ts#L23) diff --git a/docs/modules/types.md b/docs/modules/types.md index 54c8d3bf..7a2bfd9f 100644 --- a/docs/modules/types.md +++ b/docs/modules/types.md @@ -53,7 +53,7 @@ #### Defined in -[src/types.ts:9](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/types.ts#L9) +[src/types.ts:9](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/types.ts#L9) ___ @@ -78,7 +78,7 @@ Defines the injection options for entities. #### Defined in -[src/types.ts:26](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/types.ts#L26) +[src/types.ts:26](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/types.ts#L26) ___ @@ -96,7 +96,7 @@ Determine which options type it actually is depending on the component type. #### Defined in -[src/types.ts:94](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/types.ts#L94) +[src/types.ts:94](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/types.ts#L94) ___ @@ -114,7 +114,7 @@ Determine which options type it actually is depending on the component type. #### Defined in -[src/types.ts:117](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/types.ts#L117) +[src/types.ts:117](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/types.ts#L117) ___ @@ -126,7 +126,7 @@ Components that does not required any other options that Type. #### Defined in -[src/types.ts:14](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/types.ts#L14) +[src/types.ts:14](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/types.ts#L14) ___ @@ -144,7 +144,7 @@ Union of all options type possible for injectable. #### Defined in -[src/types.ts:83](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/types.ts#L83) +[src/types.ts:83](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/types.ts#L83) ___ @@ -156,7 +156,7 @@ Describe the expected request from a middleware [MedusaMiddleware](../interfaces #### Defined in -[src/types.ts:130](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/types.ts#L130) +[src/types.ts:130](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/types.ts#L130) ___ @@ -175,7 +175,7 @@ Medusa request extended. #### Defined in -[src/types.ts:123](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/types.ts#L123) +[src/types.ts:123](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/types.ts#L123) ___ @@ -185,7 +185,7 @@ ___ #### Defined in -[src/types.ts:137](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/types.ts#L137) +[src/types.ts:137](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/types.ts#L137) ___ @@ -204,7 +204,7 @@ Describe all the available options for the Route [MedusaMiddleware](../interface #### Defined in -[src/types.ts:142](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/types.ts#L142) +[src/types.ts:142](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/types.ts#L142) ___ @@ -223,7 +223,7 @@ Defines the injection options for middlewares. #### Defined in -[src/types.ts:68](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/types.ts#L68) +[src/types.ts:68](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/types.ts#L68) ___ @@ -242,7 +242,7 @@ Mix the return type of two objects. #### Defined in -[src/types.ts:158](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/types.ts#L158) +[src/types.ts:158](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/types.ts#L158) ___ @@ -267,7 +267,7 @@ Defines the injection options for services, entities, repositories. #### Defined in -[src/types.ts:43](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/types.ts#L43) +[src/types.ts:43](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/types.ts#L43) ___ @@ -285,7 +285,7 @@ Defines the injection options for routes. #### Defined in -[src/types.ts:61](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/types.ts#L61) +[src/types.ts:61](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/types.ts#L61) ___ @@ -306,7 +306,7 @@ Define a router and its configuration. #### Defined in -[src/types.ts:51](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/types.ts#L51) +[src/types.ts:51](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/types.ts#L51) ___ @@ -332,7 +332,7 @@ Defines the injection options for service. #### Defined in -[src/types.ts:34](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/types.ts#L34) +[src/types.ts:34](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/types.ts#L34) ___ @@ -356,4 +356,4 @@ Defines the injection options for routes. #### Defined in -[src/types.ts:76](https://github.com/adrien2p/medusa-extender/blob/56af3a5/src/types.ts#L76) +[src/types.ts:76](https://github.com/adrien2p/medusa-extender/blob/ea4bdcd/src/types.ts#L76) diff --git a/package-lock.json b/package-lock.json index e69bc19f..937fef14 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,55 @@ "@jridgewell/trace-mapping": "^0.3.0" } }, + "@apidevtools/json-schema-ref-parser": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz", + "integrity": "sha512-GBD2Le9w2+lVFoc4vswGI/TjkNIZSVp7+9xPf+X3uidBfWnAeUWmquteSyt0+VCrhNMWj/FTABISQrD3Z/YA+w==", + "requires": { + "@jsdevtools/ono": "^7.1.3", + "@types/json-schema": "^7.0.6", + "call-me-maybe": "^1.0.1", + "js-yaml": "^4.1.0" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + } + } + } + }, + "@apidevtools/openapi-schemas": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@apidevtools/openapi-schemas/-/openapi-schemas-2.1.0.tgz", + "integrity": "sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==" + }, + "@apidevtools/swagger-methods": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@apidevtools/swagger-methods/-/swagger-methods-3.0.2.tgz", + "integrity": "sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==" + }, + "@apidevtools/swagger-parser": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@apidevtools/swagger-parser/-/swagger-parser-10.0.3.tgz", + "integrity": "sha512-sNiLY51vZOmSPFZA5TF35KZ2HbgYklQnTSDnkghamzLb3EkNtcQnrBQEj5AOCxHpTtXpqMCRM1CrmV2rG6nw4g==", + "requires": { + "@apidevtools/json-schema-ref-parser": "^9.0.6", + "@apidevtools/openapi-schemas": "^2.0.4", + "@apidevtools/swagger-methods": "^3.0.2", + "@jsdevtools/ono": "^7.1.3", + "call-me-maybe": "^1.0.1", + "z-schema": "^5.0.1" + } + }, "@babel/code-frame": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", @@ -1917,6 +1966,11 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "@jsdevtools/ono": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", + "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==" + }, "@medusajs/medusa": { "version": "1.1.64", "resolved": "https://registry.npmjs.org/@medusajs/medusa/-/medusa-1.1.64.tgz", @@ -2436,6 +2490,29 @@ "@types/node": "*" } }, + "@types/eslint": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", + "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" + }, "@types/express": { "version": "4.17.13", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", @@ -2505,8 +2582,7 @@ "@types/json-schema": { "version": "7.0.9", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", - "dev": true + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==" }, "@types/lodash": { "version": "4.14.178", @@ -2529,8 +2605,7 @@ "@types/node": { "version": "17.0.15", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.15.tgz", - "integrity": "sha512-zWt4SDDv1S9WRBNxLFxFRHxdD9tvH8f5/kg5/IaLFdnSNXsDY4eL3Q3XXN+VxUnWIhyVFDwcsmAprvwXoM/ClA==", - "dev": true + "integrity": "sha512-zWt4SDDv1S9WRBNxLFxFRHxdD9tvH8f5/kg5/IaLFdnSNXsDY4eL3Q3XXN+VxUnWIhyVFDwcsmAprvwXoM/ClA==" }, "@types/normalize-package-data": { "version": "2.4.1", @@ -2747,6 +2822,147 @@ "eslint-visitor-keys": "^3.0.0" } }, + "@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "requires": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, "JSONStream": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", @@ -2782,8 +2998,7 @@ "acorn": { "version": "8.7.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", - "dev": true + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==" }, "acorn-globals": { "version": "6.0.0", @@ -2803,6 +3018,11 @@ } } }, + "acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==" + }, "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -2834,7 +3054,6 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -2842,6 +3061,11 @@ "uri-js": "^4.2.2" } }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" + }, "ansi-align": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", @@ -3005,8 +3229,6 @@ "version": "0.2.6", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dev": true, - "optional": true, "requires": { "safer-buffer": "~2.1.0" } @@ -3014,9 +3236,7 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, - "optional": true + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" }, "async": { "version": "3.2.3", @@ -3027,8 +3247,7 @@ "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, "awilix": { "version": "6.1.0", @@ -3043,16 +3262,12 @@ "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true, - "optional": true + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" }, "aws4": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "dev": true, - "optional": true + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" }, "axios": { "version": "0.21.4", @@ -3185,7 +3400,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", - "dev": true, "requires": { "safe-buffer": "5.1.2" }, @@ -3193,8 +3407,7 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" } } }, @@ -3202,8 +3415,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "optional": true, "requires": { "tweetnacl": "^0.14.3" } @@ -3214,6 +3425,11 @@ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, + "bintrees": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bintrees/-/bintrees-1.0.1.tgz", + "integrity": "sha1-DmVcm5wkNeqraL9AJyJtK1WjRSQ=" + }, "bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -3333,7 +3549,6 @@ "version": "4.19.1", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", - "dev": true, "requires": { "caniuse-lite": "^1.0.30001286", "electron-to-chromium": "^1.4.17", @@ -3388,8 +3603,7 @@ "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, "buffer-writer": { "version": "2.0.0", @@ -3472,12 +3686,16 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, "requires": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" } }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -3522,8 +3740,7 @@ "caniuse-lite": { "version": "1.0.30001309", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001309.tgz", - "integrity": "sha512-Pl8vfigmBXXq+/yUz1jUwULeq9xhMJznzdc/xwl4WclDAuebcTHVefpz8lE/bMI+UN7TOkSSe7B7RnZd6+dzjA==", - "dev": true + "integrity": "sha512-Pl8vfigmBXXq+/yUz1jUwULeq9xhMJznzdc/xwl4WclDAuebcTHVefpz8lE/bMI+UN7TOkSSe7B7RnZd6+dzjA==" }, "cardinal": { "version": "2.1.1", @@ -3538,9 +3755,7 @@ "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true, - "optional": true + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, "chalk": { "version": "4.1.2", @@ -3602,6 +3817,11 @@ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "dev": true }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" + }, "ci-info": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", @@ -3978,11 +4198,15 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, "requires": { "delayed-stream": "~1.0.0" } }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, "compare-func": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", @@ -4462,6 +4686,22 @@ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", "dev": true }, + "cookies": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", + "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==", + "requires": { + "depd": "~2.0.0", + "keygrip": "~1.1.0" + }, + "dependencies": { + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + } + } + }, "core-js": { "version": "3.21.0", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.21.0.tgz", @@ -4573,8 +4813,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "optional": true, "requires": { "assert-plus": "^1.0.0" } @@ -4628,7 +4866,6 @@ "version": "4.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, "requires": { "ms": "2.1.2" } @@ -4720,8 +4957,7 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, "delegates": { "version": "1.0.0", @@ -4738,14 +4974,12 @@ "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" }, "destroy": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, "detect-indent": { "version": "6.1.0", @@ -4943,8 +5177,6 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, - "optional": true, "requires": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -4962,14 +5194,12 @@ "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "electron-to-chromium": { "version": "1.4.65", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.65.tgz", - "integrity": "sha512-0/d8Skk8sW3FxXP0Dd6MnBlrwx7Qo9cqQec3BlIAlvKnrmS3pHsIbaroEi+nd0kZkGpQ6apMEre7xndzjlEnLw==", - "dev": true + "integrity": "sha512-0/d8Skk8sW3FxXP0Dd6MnBlrwx7Qo9cqQec3BlIAlvKnrmS3pHsIbaroEi+nd0kZkGpQ6apMEre7xndzjlEnLw==" }, "emittery": { "version": "0.8.1", @@ -4992,14 +5222,12 @@ "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, "enhanced-resolve": { "version": "5.8.3", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", - "dev": true, "requires": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -5050,6 +5278,11 @@ "unbox-primitive": "^1.0.1" } }, + "es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" + }, "es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", @@ -5064,14 +5297,12 @@ "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" }, "escape-string-regexp": { "version": "1.0.5", @@ -5302,7 +5533,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, "requires": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -5369,7 +5599,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, "requires": { "estraverse": "^5.2.0" }, @@ -5377,16 +5606,14 @@ "estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" } } }, "estraverse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" }, "esutils": { "version": "2.0.3", @@ -5397,8 +5624,12 @@ "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" }, "execa": { "version": "5.1.1", @@ -5563,9 +5794,7 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true, - "optional": true + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, "external-editor": { "version": "3.1.0", @@ -5587,15 +5816,12 @@ "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true, - "optional": true + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "fast-diff": { "version": "1.2.0", @@ -5619,8 +5845,7 @@ "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "fast-levenshtein": { "version": "2.0.6", @@ -5797,16 +6022,12 @@ "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true, - "optional": true + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" }, "form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "optional": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -5822,8 +6043,7 @@ "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" }, "fs-access": { "version": "1.0.1", @@ -5889,8 +6109,7 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "functional-red-black-tree": { "version": "1.0.1", @@ -5967,7 +6186,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -6104,8 +6322,6 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "optional": true, "requires": { "assert-plus": "^1.0.0" } @@ -6203,6 +6419,11 @@ } } }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, "global": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", @@ -6245,8 +6466,7 @@ "graceful-fs": { "version": "4.2.9", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", - "dev": true + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" }, "handlebars": { "version": "4.7.7", @@ -6272,16 +6492,12 @@ "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true, - "optional": true + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" }, "har-validator": { "version": "5.1.5", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "dev": true, - "optional": true, "requires": { "ajv": "^6.12.3", "har-schema": "^2.0.0" @@ -6297,7 +6513,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -6316,8 +6531,7 @@ "has-symbols": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" }, "has-tostringtag": { "version": "1.0.0", @@ -6368,7 +6582,6 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "dev": true, "requires": { "depd": "~1.1.2", "inherits": "2.0.4", @@ -6392,8 +6605,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "optional": true, "requires": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -6511,8 +6722,7 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { "version": "1.3.8", @@ -6829,8 +7039,7 @@ "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, "is-unicode-supported": { "version": "0.1.0", @@ -6892,9 +7101,7 @@ "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true, - "optional": true + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, "istanbul-lib-coverage": { "version": "3.2.0", @@ -8389,7 +8596,6 @@ "version": "27.5.0", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.0.tgz", "integrity": "sha512-8OEHiPNOPTfaWnJ2SUHM8fmgeGq37uuGsQBvGKQJl1f+6WIy6g7G3fE2ruI5294bUKUI9FaCWt5hDvO8HSwsSg==", - "dev": true, "requires": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -8400,7 +8606,6 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -8462,9 +8667,7 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true, - "optional": true + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" }, "jsdom": { "version": "16.7.0", @@ -8566,8 +8769,7 @@ "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" }, "json-parse-even-better-errors": { "version": "2.3.1", @@ -8578,15 +8780,12 @@ "json-schema": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true, - "optional": true + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -8597,8 +8796,7 @@ "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, "json5": { "version": "2.2.0", @@ -8661,8 +8859,6 @@ "version": "1.4.2", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dev": true, - "optional": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -8697,6 +8893,14 @@ "integrity": "sha512-Vcrt8lcpVl0s8ePx634BxwRqmFo+5DcOhlmNadehxreMTIQi/9hOL/B3hZQQbK5DgMS7Lem3xABXV7/S3jy+7g==", "dev": true }, + "keygrip": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", + "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", + "requires": { + "tsscmp": "1.0.6" + } + }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -8779,6 +8983,11 @@ } } }, + "loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==" + }, "locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -8806,6 +9015,11 @@ "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", "dev": true }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" + }, "lodash.includes": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", @@ -8824,6 +9038,11 @@ "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=", "dev": true }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" + }, "lodash.isinteger": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", @@ -9095,8 +9314,7 @@ "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" }, "merge2": { "version": "1.4.1", @@ -9123,20 +9341,17 @@ "mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" }, "mime-db": { "version": "1.51.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", - "dev": true + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" }, "mime-types": { "version": "2.1.34", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", - "dev": true, "requires": { "mime-db": "1.51.0" } @@ -9233,8 +9448,7 @@ "moment": { "version": "2.29.1", "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", - "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", - "dev": true + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" }, "moment-timezone": { "version": "0.5.34", @@ -9337,8 +9551,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "multer": { "version": "1.4.4", @@ -9416,8 +9629,7 @@ "neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, "netrc-parser": { "version": "3.1.6", @@ -9653,8 +9865,7 @@ "node-releases": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", - "dev": true + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==" }, "nopt": { "version": "3.0.6", @@ -9763,9 +9974,7 @@ "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true, - "optional": true + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" }, "object-assign": { "version": "4.1.1", @@ -9776,8 +9985,7 @@ "object-inspect": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", - "dev": true + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==" }, "object-keys": { "version": "1.1.1", @@ -9818,7 +10026,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, "requires": { "ee-first": "1.1.1" } @@ -9867,6 +10074,11 @@ "is-wsl": "^2.2.0" } }, + "openapi-types": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-10.0.0.tgz", + "integrity": "sha512-Y8xOCT2eiKGYDzMW9R4x5cmfc3vGaaI4EL2pwhDmodWw1HlK18YcZ4uJxc7Rdp7/gGzAygzH9SXr6GKYIXbRcQ==" + }, "opencollective-postinstall": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", @@ -10197,9 +10409,7 @@ "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true, - "optional": true + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, "pg": { "version": "8.7.3", @@ -10287,8 +10497,7 @@ "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "picomatch": { "version": "2.3.1", @@ -10402,6 +10611,14 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, + "prom-client": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-12.0.0.tgz", + "integrity": "sha512-JbzzHnw0VDwCvoqf8y1WDtq4wSBAbthMB1pcVI/0lzdqHGJI3KBJDXle70XK+c7Iv93Gihqo0a5LlOn+g8+DrQ==", + "requires": { + "tdigest": "^0.1.1" + } + }, "promise.prototype.finally": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/promise.prototype.finally/-/promise.prototype.finally-3.1.3.tgz", @@ -10436,14 +10653,12 @@ "psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, "q": { "version": "1.5.1", @@ -10500,11 +10715,18 @@ } } }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" }, "raw-body": { "version": "2.4.2", @@ -10713,8 +10935,6 @@ "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "dev": true, - "optional": true, "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -10741,16 +10961,12 @@ "qs": { "version": "6.5.3", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "dev": true, - "optional": true + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" }, "uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true, - "optional": true + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" } } }, @@ -10868,8 +11084,7 @@ "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, "safe-stable-stringify": { "version": "2.3.1", @@ -10880,8 +11095,7 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "saslprep": { "version": "1.0.3", @@ -10908,6 +11122,16 @@ "xmlchars": "^2.2.0" } }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, "scrypt-kdf": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/scrypt-kdf/-/scrypt-kdf-2.0.1.tgz", @@ -10924,7 +11148,6 @@ "version": "0.17.2", "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", - "dev": true, "requires": { "debug": "2.6.9", "depd": "~1.1.2", @@ -10945,7 +11168,6 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, "requires": { "ms": "2.0.0" }, @@ -10953,19 +11175,25 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, "ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" } } }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "requires": { + "randombytes": "^2.1.0" + } + }, "serve-static": { "version": "1.14.2", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", @@ -10987,8 +11215,7 @@ "setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, "sha.js": { "version": "2.4.11", @@ -11030,7 +11257,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, "requires": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", @@ -11096,7 +11322,6 @@ "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -11105,8 +11330,7 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" } } }, @@ -11188,8 +11412,6 @@ "version": "1.17.0", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "dev": true, - "optional": true, "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -11404,8 +11626,7 @@ "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" }, "streamsearch": { "version": "0.1.2", @@ -11535,6 +11756,45 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true }, + "swagger-parser": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/swagger-parser/-/swagger-parser-10.0.3.tgz", + "integrity": "sha512-nF7oMeL4KypldrQhac8RyHerJeGPD1p2xDh900GPvc+Nk7nWP6jX2FcC7WmkinMoAmoO774+AFXcWsW8gMWEIg==", + "requires": { + "@apidevtools/swagger-parser": "10.0.3" + } + }, + "swagger-stats": { + "version": "0.99.2", + "resolved": "https://registry.npmjs.org/swagger-stats/-/swagger-stats-0.99.2.tgz", + "integrity": "sha512-ssZi59v3d1P2WyTxrujthOjjKR4zDLuUgcCiOr8iXKhpqdz8ffyKSDRaZudHDe+VerbhkONRyxY3Th+Bah8s+Q==", + "requires": { + "basic-auth": "^2.0.1", + "cookies": "^0.8.0", + "debug": "^4.3.1", + "moment": "^2.29.1", + "path-to-regexp": "^6.2.0", + "qs": "^6.10.1", + "request": "^2.88.2", + "send": "^0.17.1", + "uuid": "^8.3.2" + }, + "dependencies": { + "path-to-regexp": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.0.tgz", + "integrity": "sha512-f66KywYG6+43afgE/8j/GoiNyygk/bnoCbps++3ErRKsIYkGGupyv07R2Ok5m9i67Iqc+T2g1eAUGUPzWhYTyg==" + }, + "qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "requires": { + "side-channel": "^1.0.4" + } + } + } + }, "symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -11544,8 +11804,7 @@ "tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" }, "tar": { "version": "2.2.2", @@ -11559,6 +11818,14 @@ "inherits": "2" } }, + "tdigest": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/tdigest/-/tdigest-0.1.1.tgz", + "integrity": "sha1-Ljyyw56kSeVdHmzZEReszKRYgCE=", + "requires": { + "bintrees": "1.0.1" + } + }, "terminal-link": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", @@ -11569,6 +11836,43 @@ "supports-hyperlinks": "^2.0.0" } }, + "terser": { + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.11.0.tgz", + "integrity": "sha512-uCA9DLanzzWSsN1UirKwylhhRz3aKPInlfmpGfw8VN6jHsAtu8HJtIpeeHHK23rxnE/cDc+yvmq5wqkIC6Kn0A==", + "requires": { + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" + } + } + }, + "terser-webpack-plugin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", + "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "requires": { + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.2" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, "test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -11676,15 +11980,12 @@ "toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" }, "tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "optional": true, "requires": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -11923,6 +12224,11 @@ } } }, + "tsscmp": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", + "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==" + }, "tsutils": { "version": "3.21.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", @@ -11944,8 +12250,6 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.0.1" } @@ -11953,9 +12257,7 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true, - "optional": true + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, "tweezer.js": { "version": "1.5.0", @@ -12207,7 +12509,6 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, "requires": { "punycode": "^2.1.0" } @@ -12258,8 +12559,7 @@ "uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" }, "v8-compile-cache": { "version": "2.3.0", @@ -12305,8 +12605,7 @@ "validator": { "version": "13.7.0", "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", - "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", - "dev": true + "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==" }, "vary": { "version": "1.1.2", @@ -12318,8 +12617,6 @@ "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "optional": true, "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -12329,9 +12626,7 @@ "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true, - "optional": true + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" } } }, @@ -12374,6 +12669,15 @@ "makeerror": "1.0.12" } }, + "watchpack": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, "wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", @@ -12389,6 +12693,42 @@ "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", "dev": true }, + "webpack": { + "version": "5.69.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.69.1.tgz", + "integrity": "sha512-+VyvOSJXZMT2V5vLzOnDuMz5GxEqLk7hKWQ56YxPW/PQRUuKimPqmEIJOx8jHYeyo65pKbapbW464mvsKbaj4A==", + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.8.3", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.3" + } + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" + }, "whatwg-encoding": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", @@ -12643,6 +12983,17 @@ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true }, + "z-schema": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-5.0.2.tgz", + "integrity": "sha512-40TH47ukMHq5HrzkeVE40Ad7eIDKaRV2b+Qpi2prLc9X9eFJFzV7tMe5aH12e6avaSS/u5l653EQOv+J9PirPw==", + "requires": { + "commander": "^2.7.1", + "lodash.get": "^4.4.2", + "lodash.isequal": "^4.5.0", + "validator": "^13.7.0" + } + }, "zen-observable": { "version": "0.8.15", "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", diff --git a/package.json b/package.json index 99ac4133..5661ecee 100644 --- a/package.json +++ b/package.json @@ -47,13 +47,19 @@ "release:major": "standard-version --release-as major" }, "dependencies": { - "chalk": "^4.1.2" + "chalk": "^4.1.2", + "openapi-types": "^10.0.0", + "swagger-parser": "^10.0.3", + "swagger-stats": "^0.99.2", + "prom-client": "^12.0.0", + "webpack": "^5.0.0" }, "peerDependencies": { "reflect-metadata": "^0.1.13", "@medusajs/medusa": "^1.1.64", "awilix": "^6.1.0", "express": "^4.17.2", + "medusa-core-utils": "^1.1.31", "medusa-interfaces": "^1.1.34", "typeorm": "^0.2.41" }, @@ -79,6 +85,7 @@ "husky": "^7.0.0", "jest": "^27.5.0", "jest-coverage-badges": "^1.1.2", + "medusa-core-utils": "^1.1.31", "medusa-interfaces": "^1.1.34", "mongoose": "^6.2.1", "prettier": "^2.5.1", diff --git a/src/Medusa.ts b/src/Medusa.ts index f8391ef5..5fd745d8 100644 --- a/src/Medusa.ts +++ b/src/Medusa.ts @@ -1,4 +1,5 @@ import loaders from '@medusajs/medusa/dist/loaders'; +import { getConfigFile } from 'medusa-core-utils/dist'; import { Express } from 'express'; import { AwilixContainer } from 'awilix'; import { Constructor } from './types'; @@ -8,14 +9,15 @@ import { apiLoader, authenticatedRoutesLoader, databaseLoader, - validatorsLoader, migrationsLoader, overrideEntitiesLoader, overrideRepositoriesLoader, pluginsLoadersAndListeners, servicesLoader, unauthenticatedRoutesLoader, + validatorsLoader, } from './loaders'; +import { buildMonitoringMiddleware, MonitoringOptions } from './modules/monitoring'; // Use to fix MiddlewareService typings declare global { @@ -39,11 +41,13 @@ export class Medusa { } /** - * @param modules + * @param modules The modules to load into medusa */ public async load(modules: Constructor[]): Promise { const moduleComponentsOptions = metadataReader(modules); + await this.loadMonitoringModuleIfNecessary(); + await validatorsLoader(moduleComponentsOptions.get('validator') ?? []); await overrideEntitiesLoader(moduleComponentsOptions.get('entity') ?? []); await overrideRepositoriesLoader(moduleComponentsOptions.get('repository') ?? []); @@ -68,4 +72,15 @@ export class Medusa { Utils.logRoutes(app); return container as unknown as AwilixContainer; } + + private async loadMonitoringModuleIfNecessary(): Promise { + const { configModule } = getConfigFile(this.#rootDir, 'medusa-config') as { + configModule: { monitoring: MonitoringOptions }; + }; + if (configModule.monitoring) { + Utils.log('Monitoring module', 'Loading monitoring module with the configuration found in medusa-config'); + await buildMonitoringMiddleware(this.#express, configModule.monitoring); + Utils.log('Monitoring module', 'Monitoring module successfully attached'); + } + } } diff --git a/src/index.ts b/src/index.ts index 53e9f464..3e3e12ca 100644 --- a/src/index.ts +++ b/src/index.ts @@ -22,6 +22,8 @@ export { import { Utils as _Utils } from './utils'; +export { MonitoringOptions } from 'modules/monitoring'; + export const Utils = { attachOrReplaceEntitySubscriber: _Utils.attachOrReplaceEntitySubscriber, repositoryMixin: _Utils.repositoryMixin, diff --git a/src/modules/monitoring.ts b/src/modules/monitoring.ts new file mode 100644 index 00000000..67690089 --- /dev/null +++ b/src/modules/monitoring.ts @@ -0,0 +1,40 @@ +import * as swStats from 'swagger-stats'; +import { OpenAPI } from 'openapi-types'; +import { Express, NextFunction, Request, Response } from 'express'; + +export interface MonitoringOptions { + version?: string; + hostname?: string; + ip?: string; + timelineBucketDuration?: number; + swaggerSpec?: string | OpenAPI.Document; + uriPath: string; + durationBuckets?: number[]; + requestSizeBuckets?: number[]; + responseSizeBuckets?: number[]; + apdexThreshold?: number; + onResponseFinish?: (req: Request, res: Response, next: NextFunction) => void | Promise; + authentication?: boolean; + sessionMaxAge?: number; + elasticsearch?: string; + onAuthenticate?: (req: Request, username: string, password: string) => boolean | Promise; +} + +export async function buildMonitoringMiddleware(app: Express, options: MonitoringOptions) { + options = { + ...options, + name: 'Medusa-extender monitoring Dashboard', + } as MonitoringOptions & { name: string }; + + if (options.swaggerSpec && typeof options.swaggerSpec === 'string') { + const { default: swaggerParser } = await import('swagger-parser'); + const parser = new swaggerParser(); + parser.validate(options.swaggerSpec, (err, api) => { + const swaggerSpec = api; + app.use(swStats.getMiddleware({ ...options, swaggerSpec })); + }); + return; + } + + app.use(swStats.getMiddleware(options)); +}